AVRwriter05_01

 前回、シリアル接続ライタを使って、USBASPに載せるAVR(ATMega8-16)を焼くことができました。
 あとはlibusb-win32(デバイスドライバ)を入れ、avrdude(プログラマソフト)を使えば書きこめるはず。

 と、ここで大問題が発生しました。ライタ回路をWindowsVista入りのLet's noteR6で動かす事を目標にしていたのですが、libusbがVistaに対応していないとのこと。しかも無理にインストールしようとするとUSBデバイスを始めとした各種デバイスのドライバに悪さをしてしまいます。キーボードやマウスがダメになってOS再インストール、という例も見受けられました(私も一歩手前まで行きました)。手探りって怖い。
 うーん、仕方ないということで、USBaspはいったん放置。Vistaで動かせるライタ回路を別に作ることにしました。

--

 発見したのがHIDasp。USBデバイスのクラスのひとつ、HID(ヒューマンインタフェースデバイス)クラスとして動くAVRライタ回路で、libusbなどのドライバを追加で入れる必要がないとのことです。しかもATTiny2313という、秋月電子で100円で売られている安い石を使えば作れるすぐれもの。
 また有難いことに、PCソフト側をVistaで動くように電通大の工学研究部の方が改造を加えてくれているので、書かれた通りに作りました。作ったのはVer. 0.3。

[ライタ回路作成手順]
・ライタ回路を作る
・ライタ回路に乗るAVRに、ブレッドボード上でシリアル接続ライタを使ってファームウェアを書き込む
・AVRのヒューズビットを書きかえる(※1)
・AVRをライタ回路に乗せる
・ターゲットデバイスを接続してから、回路とPCの間をUSB接続

※1
 これはどこのサイトでも基本事項のように扱っているので逆に書かれている例が少なく思ったのですが、ヒューズビットの設定の中にAVRを動かすクロックの発生源の設定があります。
 出荷時は内部の発振器を使っているのでそのまま読み書きできるのですが、この設定を変えて外部に水晶を使うなどにした次の瞬間から、その設定したものを使わないと読み書きできなくなります。HIDaspは12MHzの水晶を使っていて、最初ここで急に読み書きができなくなったのでびっくりしました。対処法としては、各種水晶やセラミック発振子を手元に持っておく、といった感じでしょうか。
 ちなみに書き込むヒューズビットは工学研究部さんの所に書かれています。
>avrspx.exe -fl11101111 (Lower byte。ここでクロックの設定が変わる)
>avrspx.exe -fh11011011 (Higher byte)


[PC側ソフトと接続手順]
・PCにHIDasp対応済みでVista対応済みのavrspx(プログラマソフト。工学研究部版)をインストール
・試しに転がっているAVRをライタ回路につないで、AVRに電源を供給し(※2)、「avrspx -ph -r」

D:\tool\avr\avrspx_hid\release>avrspx.exe -ph -r
HIDASP Connection check!
OK.
hidasp_program_enable()
Detected device is ATtiny2313.
Device Signature = 1E-91-0A
Flash Memory Size = 2048 bytes
Flash Memory Page = 32 bytes x 64 pages
EEPROM Size = 128 bytes


 よし、動いた。
 「avrspx」と打てばヘルプ画面っぽい表示が出てくるのですが、HIDasp対応済み版では「-ph」でHIDaspを使えることが分かります。これをつければ後はシリアル接続用のものと変わりありませんでした。

※2
 他のライタ回路にも言えることですが、USBからターゲットデバイスへの給電を行うか、別途ターゲットデバイス用の電源を用意するかを設定するジャンパ、もしくはスイッチなどが回路についていると思います。
 USB給電を行う設定にしておいたのに別途の電源をONにしての発煙や発火に注意。そこまで行かなくても何か壊れると思います。


 ひとまずこれでVista搭載Let's noteでAVRを読み書きできるようになったので、LEDチカチカなどやっていこうと思います。

--

参考文献
"libusb vista"でgoogle
びんずめ堂さん / 書庫 / HIDなAVRライタ - HIDaspおおもとの記事
電気通信大学 工学研究部 wiki > AVR > HIDasp - 実際の回路はここから
「Fight with life」内「HIDaspを作ってみた」 - RAINさん