2008/08/07

AVR入門 その2

AVR入門 その1の続きです。

前回作成の低速ライターを紹介したページに、AVR910互換ライターというのがあって簡単そうだったのでこれを作る事にしました。

材料:
USBシリアル変換モジュール(前回のを使いまわし)
ICソケット(20pin(AVR用)、24pin(USBシリアル変換モジュール用))
10MHzのセラロック
ピンヘッダ(6pin)
ATTiny2313

1)回路作成
前回同様USBシリアル変換モジュールを使いました。楽なので。

今回も、モジュールは直接ハンダしないでソケットを使います。
CPUであるATTiny2313も、書き込みのためには前回製作のライターに挿す必要があるためソケットを使います。ソケットは向きを間違えないように注意です。
まあ間違えても爆発とかしないけど。触るとめちゃめちゃ熱くなってたりはしますけどね。

2)ファームウェア書き込み
AVR910互換ライターのページ、『ファームウェア』の項目の『改変したファームウェアのソース(avr_prg2.lzh)』をダウンロードし、コンパイルします。
すると、avr_prg.hexが得られます。(←これをメモ帳にコピペしてavr_prg.hexという名前で保存してもOKだと思う)

C:\avreggとか言う感じに作業フォルダを作り、前回ダウンロードしたavrsp_egg_050629.lzhを解凍して保存します。さらに先ほど作ったavr_prg.hexも入れておきます。

コマンドラインを起動して、作業フォルダへ移動します。前回製作のライターにATTiny2313をセットします。
コマンドラインで、書き込みプログラムを起動します。
c:\avregg> avrsp avr_prg.hex -pv3
↑最後の -pv3のところはポート番号なので、デバイスマネージャとか見ながら自分で繋いだのが何番になってるか調べてその番号を入れます。
時間かかるけどひたすら我慢。あー、でも30分もかかって終わらなかったらなんか前回製作のライターが間違ってるとか壊れてるとかしてそうなのでいろいろチェックしてみてください。
すぐエラーでとまる時なんかも、回路どこか作り間違いしてるかと思われます。

次にもう一つこのコマンドを打っておきます。
c:\avregg> avrsp -d40 -fL11011101 -fH11011101 -pv3
これはヒューズビットの書き換えということをやってます。具体的にはここで外部クロックを有効化してます。

3)書き込み済みCPUを回路に組み込む

2でライターファームが焼かれたCPUが出来たので、こいつを1で作った回路に組み込みます。
と言ってもソケットに挿すだけでいいのかな?

ここまでで『AVR910互換ライター』ハードウェアが完成です。


4)使い方
ソフトウェアは avrdude-GUI (yuki-lab.jp Version) ←こちらのページからダウンロードしました。
『avrdude.exe Version 5.5 実行バイナリ』が最低限必要です。これと『avrdude-GUI Version 1.0.4 実行バイナリ』を両方ダウンロードして使ってます。

とりあえず両方ダウンロードして適当なフォルダに展開します。
『AVR910互換ライター』ハードウェアをPCに接続し、ライターには書き込みしたいAVRマイコンを接続します。

avrdude-GUI.exeを起動すると、なにやらそれっぽいアプリが起動します。この『avrdude.exe File』にavrdude.exeへのパス、『Programmer』に『Atmel Low Cost Serial Programmer (avr910)』を設定します。
『Port』には実際の使用ポートを入力し、『Device』にはライターに接続した書き込みしたいCPUの型番を指定します。


動作確認には、『Fuse』のReadボタンを押してみるのがいいと思います。ヒューズビットが読み込めたら成功。
これで完成です。



参考:簡単に焼けるようにこんなのを作りました。
写真左側20pinに揃えて置くとATTiny26、右側に揃えて置くとATTiny2313、下のソケットではATMega88が焼けるようになっています。


プログラムの開発環境はAVR StudioとWinAVR、2つのソフトを解説サイトを見ながらインストールすればOK。両方とも無料で公開されています。

ここまでくれば、“自分で作って遊ぶための下準備”が出来たことになります。1500円ほどでここまで揃えられるのはなかなか素晴らしい。
先日ATTiny26Lで作ったLEDメーターなんかもこのライターで焼いて作ることができます。
こいつでまたなにかいろいろ作っていけたらいいなー。