Tiny2313とAVR USBでAVRライタを作ってみました. まだ実験目的で作っているだけなので,仕様はころころ変わると思います. 似たような名前ですが,USBaspとは全く別物です.
下の説明のように回路を製作したのち,ファームウェアを書き込んでください.
AVRを使うので,AVRライタをすでに持っていないと作れません.
AVRの動作電圧を下げる代わりに,USBの信号線に3.6Vのツェナーダイオードを入れました.
今まで,USBaspにあわせていましたが,HIDsph互換に変更しました.
ライタ側のTiny2313がSPIのマスターになるので,MOSI,MISOの順序は気をつけてください.
ヒューズの設定は手元では以下のようにしてます.
USBの線の色は以下のようになっているものが殆どです. 100均とかで買ったUSBケーブルを切って使う場合は参考にしてください.
| 黒 | GND |
| 赤 | 5V |
| 緑 | D+ |
| 白 | D- |
ここにあるものよりも,千秋ゼミのHIDaspのページにあるhidspxの方が 完成度も高くお勧めです.
Macの人は,hidspx-1012b_osx.tar.gz(hidspx for MacOS X)を 作ってみたので使ってください. (HIDaspx用です.HIDaspファームウェアでは使えません…汗) MacPorts等でlibusbをインストールしてからmakeしてください. Linux等でも動くかもしれませんが,BSDだとダメなのを確認….
HIDaspxを使ってターゲットAVRと通信するサンプル(hidaspxterm.zip)も 作ってみました. ちょっとした工夫でAVRでもprintfデバッグ可能です.
ファームウェアのライセンスは,AVR USBに準じます. avrspxも元のavrspxとavrspに従ってください.
avrspxに「-ph」をつけると,HIDaspを使います.
avrspx -ph test.hex
-dでディレイを指定できます.数値は時間に比例します.
もう少ししたら固めます.
2313側では単純なことしかしていませんが, 2KBのプログラムと128Bのメモリに収めるのにかなり苦労しました. もっとプロトコルを工夫すればスピードアップも可能かと思いますが, プログラムサイズを削るのが大変です.
どうしてもサイズがオーバーしてしまうので,AVR USBのusbdrv.cも多少変更しました.
AVR-USBの最新版は小さくなったようで大丈夫でした.
少し余裕が出来たので色々出来そうです.
とりあえず動いたという状態で放置していたわけですが, irukaさんと senshuさんの御二方の改良によって,快適に使えるAVRライタになりました. 感謝.
このサイトより分かりやすい説明を書いてくれている方がいるので そっちも参照するといいかも.