Top Page Index About Link Mail Form |
わたしは普段から Linuxを使っています。そのため Windowsでなくても書ける AVRが欲しかったので TAP-AVRを参考にライタを作ることにしました。まず、LPTポート制御ISPアダプタを製作します。D-Sub 25ピンのコネクタと抵抗4本だけのシロモノですから、製作といえるかどうか。
RS-232Cのレベル変換に MAX232Aを使っている他は、基本的にこちらのマルチプラットフォームライタそのままです。ライタ自体に AVRが使われている為、0号機のようなもので最初の AVRを焼く必要があったわけです。
ただし、この1号機には書き込み中を示す LEDを追加してあります。この為にプログラムを少し修正しました。ところが、これによりコードサイズが増えた(たった数ワードなのに…)ので AT90S1200のプログラムエリアサイズをオーバーしてしまいました。しかたがないので AT90S2313を使っています。当然、リセット後にスタックポインタを設定する必要がでてきますので、それも忘れずに。
1号機の MAX232Aの代わりに FT8U232BMを使って USB対応版としました。また、この画像を撮影後に追加したので写ってはいませんが、現在は 74LCV245Aを追加して 3.3/5Vの両電源対応としてあります。回路図はこちら。なお、74LCV245Aのゲート処理を行う為にまたプログラム追加が必要となりました。at90isp23.asmに当てるパッチはこちらです。
2003.3.30
上記ライタは ATmega8には対応していません。そこで、TEMPLEさんのページから ATmega対応した AVR910互換ファームウェアをダウンロードします。うちの場合は出力に 74LVC245Aを追加していますから、そのゲート処理部分を追加してコンパイルしたファームウェアを AT90S2313に焼いて交換しました。
次に Linuxホスト側ソフトの対応ですが、こちらは AVR In-System Programmer - Summaryから最新版 uispをダウンロードしてコンパイルします。普通に ./configure; make; make install すればいいでしょう。uispを使う時は -dprog=avr910 のオプションスイッチが必要です。なお、以前は -datmel と指定していました。以下は書き込みスクリプトの例です。
#!/bin/sh $COM=/dev/ttyUSB0 $SPEED=19200 uisp -dprog=avr910 -dserial=$COM -dspeed=$SPEED -dpart=auto --erase uisp -dprog=avr910 -dserial=$COM -dspeed=$SPEED -dpart=auto --upload if=$1 uisp -dprog=avr910 -dserial=$COM -dspeed=$SPEED -dpart=auto --verify if=$1
2005.10.6 追記。
申し訳ありません。ATmega8のクロック変更は上記のシリアルライタで可能です。例えば、内蔵CR発振 8MHzに変更するには、ヒューズビット下位を 0xE4にするので
uisp -dprog=avr910 -dserial=$COM -dspeed=$SPEED -dpart=auto --wr_fuse_l=0xe4
で可能です。なお、クロックを外部発振/外部入力設定にする場合はあらかじめその回路が組まれた状態で実行しないとダメかもしれません。
更に、ATmega8は工場出荷時はクロックが 1MHzの内蔵発振器で動くようにヒューズ設定されています。これを外部クロックを使うようにするにはパラレルプログラマが必要になります。そんなわけで急遽作ったパラレルライタはこちら。
→回路図
→ファームウェアソース (2003.9.15 Update)
2003.5.21