前の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分で出来そうだ。
お見せするようなものでもないが、配線はこんな感じである。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(In-System Programming)機能を持っている。開発中の「AVRマイコン」を目的物の基板上に置いたままでプログラムの書き換えができる。
ISPに必要な信号線はGnd(回路のアース)を含めて5本である。オプションとしてVdd+5Vの電源があるので一般に6ピンコネクタが使われている。(以前は10pinタイプも多かったようだ。JTAGの標準だった模様)趣味の製作なら任意のコネクタと任意のピン配置で構わないが、少なくとも自分の製作では合わせておかないと不便だ。
左の1列のタイプでは7ピンを使っている。そのうち2番ピンの所を塞いでおき、ケーブルが逆に挿入されるのを防いでいる。 逆接続するとプログラム書込器あるいは、目的のマイコン回路を壊す危険がある。このように逆には装着できないようにしておくと安心だ。
備忘用に各々ピン配置を記入しておいた。この6ピンコネクタの配列は一般市販のライタにも見られる「標準仕様」のようだ。
改めて書くが『hidspx』と言うのは、上記のプログラム・ライタ基板【HIDaspx】とセットで使うパソコン側のソフトウエアのことである。
左図は、パソコンのDOS窓(コマンド・プロンプト)から『hidspx』を起動し動作確認している様子だ。 『hidspx』は、GUIではなく「CUI」インターフェースなのでキーボードからコマンドをキーインして使う。 定型作業は「バッチ・ファイル」を作って簡略化もできる。 あるいはTEXTファイルから文字列をコピペすれば間違いも少ない。赤のアンダーラインの部分をキーインすると、画面のように応答がある。(注:事前に【HIDaspx】ライタとその先にAVRマイコン基板を接続し動作させておく)
この種のプログラム・ライタとして、以前はUSBasp(書込器)とavrspx(書込み用プログラム)のセットを使っていた。 avrspxも、同じようにコマンドプロンプトから使うが、主な用途はヒューズビットの書き換えである。 BASCOM-AVRからプログラムを書込むときにはコマンドプロンプトを意識する必要はなかった。 これはavrspxから発展して出来た『hidspx』も同様である。主要チップについて良く使うヒューズビットのパターンをTEXTファイルに書いておけば便利だろう。
大昔にC/P-MやMS-DOSを使った世代には、コマンドプロンプトから「CUI」で使うのも苦痛ではないかもしれない。自身、何となく懐かしく思えて特に苦痛は感じなかった。 しかし、Mac-OSやWindowsの世代は「GUI」による操作環境が欲しいだろう。
『hidspx』には使い易い「GUI」環境も用意されている。 図の様にコマンドプロンプトを感じさせるGUIであるが、わかり易い操作になっている。取りあえず説明書を読まずに操作できるのは流石に「GUI」だ。古い世代にもGUIはやはり便利で楽だと思う。(笑)
良く出来たGUIが備われば、もはやコマンドプロンプトから使うことなどなさそうだ。 ・・・なので、さっそくショートカットを作ってデスクトップに常駐させることにした。
ますますコマンドプロンプトからの操作を忘れてしまいそうだ。しかし、これも時代なのである。(GUIを作った人に感謝)
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バイトの転送とベリファイは数秒のことだから特にストレスも感じなかった。
いつのまにか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は心配ならファームウエアの書込みをサポートするので気軽に相談を。
(おわり)