2010年3月28日日曜日

【AVR】HIDaspx_Writer(2)

【HIDaspx Writer】
 前のBlogの続きである。Egg-Writerを使ってファームウエアを書込んだATtiny2313を使い【HIDaspx】と言う名前のプログラム・ライタを作った。 なお、回路図と部品レイアウトはEgg-Writerを作る際にダウンロードした説明書:HIDaspx.pdfに詳しく書いてある。そちらを参照のこと。(参考:HIDaspx情報へのリンク→こちらから)

 混乱しやすいので、おさらいしておこう。 AVRマイコンのプログラムはパソコン(PC)を使って開発する。 開発したプログラムは目的のAVRマイコンのメモリに書き込む(転送する)必要がある。そのための書込器がこの写真の【HIDaspx】である。
 また、書込む際にパソコンには「書込用ソフトウエア」が必要で、そのソフトウエアには『hidspx』と言うのを使う。 BASCOM-AVRで自作したマイコン用のプログラムは:BASCOM→『hidspx』→【HIDaspx】→AVRマイコン・・・と言う経路で送られ、AVRマイコン内部にあるプログラム・メモリ(Flashメモリ)に書き込まれる。

 ここで作った【HIDaspx】は、パソコンPCとAVRマイコン基板の間をUSBインターフェース経由でプログラム転送の仲立ちをするためのハードウエア(装置・基板)である。 そのハードウエアのことをプログラム書込器(プログラム・ライタ)と呼んでいる。
 このプログラム書込器はマイコンを使って製作している。その書込器を作るためのマイコンにも当然プログラムが必要だ。 そのプログラムは「ファームウエア」と言い、前回のBlogで「Egg-Writer」なる「簡易書込器」を作って書込んだ。

 そのファームウエア書込済み済みのマイコンを使い、写真の様な【HIDaspx】ライタを製作したわけだ。 部品揃えから始めて配線終了までに要した時間はおおよそ4時間ほどであった。 途中で手持ち既存のライタとの互換性確認や休憩など挟んだので、正味の製作時間は2時間くらいだろう。専用基板も売っているそうなのでそれを使えば30分で出来そうだ。

【HIDaspx Writer:裏面】
 お見せするようなものでもないが、配線はこんな感じである。ISPコネクタの回りが厄介だったが、これは従来型の2列6ピン・ISPコネクタと、最近採用している1列7ピン・ISPコネクタの両方を実装したからだ。
 どちらか一方にすればスッキリするが、拙宅の開発環境に於ける互換性維持のために面倒だが2種類のコネクタを実装しておいた。
 USBコネクタからは5V/350mAが取り出せる。ライタ自身の動作だけでなく開発しているマイコン基板へも供給できる。 プログラム書込み用のISPコネクタから供給するが、マイコン側で既に電源が用意されていると衝突してしまう。 電源Vdd+5VはON/OFFできるようにスイッチを付けてある。

:USBインターフェースのデータライン:D+及びD-とGnd間の3.6Vの定電圧ダイオード(Zenner Diode)は実装しなかった。使用するパソコンによっては不可欠なので実装しておくと良い。

【ISPコネクタ】
 既知と思うが、昨今のマイコンはISP(In-System Programming)機能を持っている。開発中の「AVRマイコン」を目的物の基板上に置いたままでプログラムの書き換えができる。
 ISPに必要な信号線はGnd(回路のアース)を含めて5本である。オプションとしてVdd+5Vの電源があるので一般に6ピンコネクタが使われている。(以前は10pinタイプも多かったようだ。JTAGの標準だった模様)趣味の製作なら任意のコネクタと任意のピン配置で構わないが、少なくとも自分の製作では合わせておかないと不便だ。
 左の1列のタイプでは7ピンを使っている。そのうち2番ピンの所を塞いでおき、ケーブルが逆に挿入されるのを防いでいる。 逆接続するとプログラム書込器あるいは、目的のマイコン回路を壊す危険がある。このように逆には装着できないようにしておくと安心だ。

 備忘用に各々ピン配置を記入しておいた。この6ピンコネクタの配列は一般市販のライタにも見られる「標準仕様」のようだ。

『hidspxでテスト』
 改めて書くが『hidspx』と言うのは、上記のプログラム・ライタ基板【HIDaspx】とセットで使うパソコン側のソフトウエアのことである。

 左図は、パソコンのDOS窓(コマンド・プロンプト)から『hidspx』を起動し動作確認している様子だ。 『hidspx』は、GUIではなく「CUI」インターフェースなのでキーボードからコマンドをキーインして使う。 定型作業は「バッチ・ファイル」を作って簡略化もできる。 あるいはTEXTファイルから文字列をコピペすれば間違いも少ない。赤のアンダーラインの部分をキーインすると、画面のように応答がある。(:事前に【HIDaspx】ライタとその先にAVRマイコン基板を接続し動作させておく)

 この種のプログラム・ライタとして、以前はUSBasp(書込器)とavrspx(書込み用プログラム)のセットを使っていた。 avrspxも、同じようにコマンドプロンプトから使うが、主な用途はヒューズビットの書き換えである。 BASCOM-AVRからプログラムを書込むときにはコマンドプロンプトを意識する必要はなかった。 これはavrspxから発展して出来た『hidspx』も同様である。主要チップについて良く使うヒューズビットのパターンをTEXTファイルに書いておけば便利だろう。

【hidspx-GUIの登場】
 大昔にC/P-MやMS-DOSを使った世代には、コマンドプロンプトから「CUI」で使うのも苦痛ではないかもしれない。自身、何となく懐かしく思えて特に苦痛は感じなかった。 しかし、Mac-OSやWindowsの世代は「GUI」による操作環境が欲しいだろう。

 『hidspx』には使い易い「GUI」環境も用意されている。 図の様にコマンドプロンプトを感じさせるGUIであるが、わかり易い操作になっている。取りあえず説明書を読まずに操作できるのは流石に「GUI」だ。古い世代にもGUIはやはり便利で楽だと思う。(笑)


【hidspx-GUIのショートカット】
 良く出来たGUIが備われば、もはやコマンドプロンプトから使うことなどなさそうだ。 ・・・なので、さっそくショートカットを作ってデスクトップに常駐させることにした。

 ますますコマンドプロンプトからの操作を忘れてしまいそうだ。しかし、これも時代なのである。(GUIを作った人に感謝)



【BASCOM-AVRのセッティング】
 BASCOMで作成したプログラムを『hidspx』に渡し【HIDaspx】に送るには BASCOM-AVRのセッティングが必要である。

 BASCOM-AVRの「Option→Programmer」メニューから、図の画面を呼び出す。
(1)External Programmer(外部プログラマ)を選ぶ。【HIDaspx】はATMEL純正のライタではないので外部プログラマの扱いになる。
(2)【HIDaspx】とセットで使う書込用プログラム『hidspx』のある場所をフルパスで記述する。(左図の丸写しではなく、自分のパソコンのパスに合わせること)
(3)書込みパラメータは「ファイル」からなので。{file}と書いておく。なお、デフォルトではHEX fileがチェックされていると思うが、もしチェックがなければ付けておく。
(4)書込後にベリファイ(読み出し確認)をするならAutoVerifyにチェックを付けておく。
◎上記が済んだら画面の下の方にある「OK」ボタンをクリックして終了する。

注意:外部プログラマを使う場合、BASCOM-AVRからヒューズビットの操作はできない。従って、ヒューズビット(ロックビットも)を書き換えるには、コマンドプロンプトから『hidspx』、あるいは『hidspx-GUI』を起動することになる。 この点は少々不便だがGUI環境が備わったことで以前ほど面倒でもなくなった。 これを完全に解決するにはBASCOMが認知している純正プログラムライタ・・・たとえばATMELの「AVRISP-mkII」や「STK-200/300/500ライタ」を使うしかないだろう。

追記;同じUSBライタのUSBaspをBASCOM-AVRが正式にサポートするようになった。BASCOM-AVRからヒューズビットやロックビットを直接操作できるようになった。これは自作USBライタに於いては画期的な出来事だ。詳しくは以下のBlogで。==>ここ

【使ってみる】
 写真は既存のAVRマイコン基板に接続しテストしている様子だ。 ISPコネクタは互換性があるようにしておいたので、すぐ確かめられる。
 コマンドプロンプトからは以前のUSBasp+avrspxのセットと同じように使えた。操作は同じなので違和感がないのは有利だ。 また『hidspx-GUI』も試したが使い勝手は良好だった。
 BASCOM-AVRからもUSBaspのときと同じようにスムースに使えた。 書込みの時間はUSBaspよりやや掛かる感じもするが、数kバイトの転送とベリファイは数秒のことだから特にストレスも感じなかった。

 これまで、USBasp+avrspxをメインに使ってきたが、【HIDaspx】+『hidspx』のセットで置き換えられそうだ。 使いながらしばらく様子を見たいと思う。

【USBライタ勢揃い】
 いつのまにかUSBライタが4種類になってしまった。 現在のところ決定版はやはり左から3番目の【HIDaspx】であろう。 USBライタを作るなら【HIDaspx】をお薦めしたいと思う。==>状況が変わって、BASCOM-AVRユーザならUSBaspライタが断然お薦めだ。(2010.10.10)

 写真は左からmini EZ-USBライタ、USBaspライタ、【HIDaspx】ライタ、デジット製USBライタである。
オプティマイズ社のmini_EZ-USBライタはCypress社製のEZ-USB(AN2131SC)と言うUSBマイコンを使ったユニークなキットである。「鶏と卵」の関係が発生しない賢い仕組みなのだが肝心のEZ-USBマイコンがディスコン(製造中止)になったのは残念だ。書込み用ソフトが最新AVRマイコンには対応していないのも痛いところ。
 USBaspはこれまで常用していたなかなか良いライタである。初めて使う際はパソコン側の初期設定があって少し面倒だ。パソコンにUSB機器として認識させるためのドライバをインストールする必要があるのだ。また、セットで使うavrspxはあまり新しいチップに対応していないようだ。但しUSBasp+『hidspx』で使うこともできる。写真のUSBaspはATmega48を使っており、ファームウエアはEgg Writer式で書込んだ。==>USBasp関連のページはこちら
 一番右のデジット製USBライタは完成品として売っている。ATtiny2313を使い内部クロックによる動作なので安価にできている。GUIの専用書込みソフトが付属する。BACOM-AVRからは外部プログラマとして使うことができる。デジットのサイトから書込みソフトの最新版がダウンロードできるが、対応していないチップ・・・例えばATmega328Pなど・・・があるので注意が必要だ。

【HIDaspx】は新しいAVRマイコンチップ:例えばATmega328PにUSB経由で書込むライタが欲しくなって製作した。期待通りのFBなものだった。 【HIDaspx】ライタの良さとして強調すべきは、特別なUSBドライバのインストールなしで使えることだと思う。これは任意の(Windows)パソコンですぐに使えるわけで、自作のUSB機器としては画期的なことだと思う。 多くの人たちによって改良が重ねられてきたライタだけあって機能も便利で動作も安定しており信頼できそうだ。暫くは有志によるサポートも期待できるだろう。

HIDaspxやhidspxの記事が JN3XBY岩永さんのBlogにも有り→こちらから。

# ライタの製作も楽しいがBASCOM-AVRにはATMEL純正のAVRISP-mkIIが一番なのかもしれない。(:BASCOM-AVRにはUSBaspと言う選択肢もできた。2010.7.28)これから始めるなら初期のトラブル回避にもそうした方が良い。結局このBlogは自身の備忘録なのである。(笑)

Egg Writerは心配ならファームウエアの書込みをサポートするので気軽に相談を。
(おわり)

4 件のコメント:

JG6DFK さんのコメント...

おはようございます。

パソコンやインターネットの発展でこういう情報が広く出回るようになり、その点ではいい時代になったと思います。私は秋月でAVRの販売が開始されて間もない頃、ライタがないという理由で傍観していたクチです。

私は秋月のライタしか持っていませんが、全然手を付けていません。実は2つもあるのですが、前に買ったものが日の目を見る前に陳腐化し、最近になって買い直したというオチです。マイコンチップの進化は早いので、これも近々使えなくなるかも。Hi.

アマチュアには旧型チップでも十分なケースがたくさんあるはずなのですが、チップメーカはアマチュア相手に商売をしているわけではないでしょうから、それも仕方のないことでしょう。いずれにせよ、技術革新のペースがアナログ全盛時代とは大違いです。

CUIは懐かしいですね。というより、私が現役のソフト開発者だった頃はそれが当たり前でした。CP/Mもいじりましたが、MS-DOSは3.1の時代にアセンブリ言語で使い倒しました。Windows時代になってもC++でツールを作ったりはしましたが、その割に仕掛けがよく理解できていません。Hi.

今ではすっかり頭が固くなってしまっているので、ソフトウェアの分野は若い人に任せるのがよさそうです。Hi Hi.

TTT/hiro さんのコメント...

JG6DFK/1 児玉さん、おはようございます。

さっそくのコメント有難うございます。
> ライタがないという理由で傍観していた・・・
巷には優れたマイコンがたくさんありますが、ライタを含めてアマチュア向きの開発環境そろった物は殆どありませんね。その点、PICマイコンは有利でした。 AVRマイコンもやっとそれに近づいてきたようです。

> 技術革新のペースがアナログ全盛時代とは大違い・・
安価で高性能なチップが次々に登場していますね。秋月でも以前仕入れた低機能な旧チップの方が高価なくらいです。お店も困るのでしょうね。(笑)

> CUIは懐かしいですね。
昔使った人は「懐かしい」で済むようですが、新人類は戸惑うようですよ。過去の遺物に感じるようです。

> ソフトウェアの分野は若い人に任せる・・・
そうなのですが、簡単な物くらい自分でできると自作の幅も広がりますね。(大規模で難しいソフトはムリです・笑)

T.Takahashi JE6LVE/JP3AEL さんのコメント...

こんばんは

ここ数日寒いですね~^^

私もHIDaspx+hidspxの組み合わせを使っていますが、
BASCOMで開発しているときは今でもパラレルのシンプルライターを使うことも多いです。
FuseBitも書き換えられ書き込みもボタン一発なのでパラレルポートを持っているPCで使うにはやはりこれが一番かもしれませんhi

CUIも慣れれば便利な面も多々あるのですが、FuseBitの書き換えなど失敗しやすくAVRをパーにする可能性もありますからやはりGUIが楽ですよね。

加藤さんも最後に書かれていますが、秋月で完成品が4000円で入手でき、BASCOMもサポートしているAVRISP-mkIIをこれから始める方には勧めるべきでしょうね。
ライターはツールですからそれの作成に時間と手間をかけるのはナンセンスでしょう。
ちゃんとしたライターがある上で作るのはそれはそれで楽しいのですが。hi

TTT/hiro さんのコメント...

JE6LVE/3 高橋さん、こんばんは。

ホントに寒いですねえ。おまけに雨まで降っています。
風邪などひかれませんように。

コメント有難うございます。
> 私もHIDaspx+hidspxの組み合わせを・・・
そう言えば、暫く前に製作されていましたね。mega328Pをサポートするライタが欲しくなり、今頃になって作りました。ずいぶん遅れちゃいましたねえ。(笑)

> パラレルのシンプルライターを使うことも多いです。
先日はLPTポートに付けるSTK-200/300ライタでやりましたがBASCOMがサポートしているライタは使い易いですね。ヒューズビットもビジュアルで一発ですし。

> AVRISP-mkIIをこれから始める方には・・・
BASCOMで始める人には、純正のライタか互換品がベストだと思います。

> ライターはツールですから・・
そう思います。 確実な道具があってこそ安心して自作回路の方に専念できますね。 少なくとも一つは確実ライタがないとライタの自作はお薦めできないように感じます。(完成度の高い基板付きキットなら良いかもしれませんが)

結論としてはBASCOMで遊ぶには、BASCOMがサポートしている市販品のライタが一番確かと言うことのようです。