Top Page Index About Link Mail Form

AVRライタの製作


AVRライター0号

AVRライタ0号機  わたしは普段から Linuxを使っています。そのため Windowsでなくても書ける AVRが欲しかったので TAP-AVRを参考にライタを作ることにしました。まず、LPTポート制御ISPアダプタを製作します。D-Sub 25ピンのコネクタと抵抗4本だけのシロモノですから、製作といえるかどうか。

AVRライター1号

AVRライタ1号機  RS-232Cのレベル変換に MAX232Aを使っている他は、基本的にこちらのマルチプラットフォームライタそのままです。ライタ自体に AVRが使われている為、0号機のようなもので最初の AVRを焼く必要があったわけです。

 ただし、この1号機には書き込み中を示す LEDを追加してあります。この為にプログラムを少し修正しました。ところが、これによりコードサイズが増えた(たった数ワードなのに…)ので AT90S1200のプログラムエリアサイズをオーバーしてしまいました。しかたがないので AT90S2313を使っています。当然、リセット後にスタックポインタを設定する必要がでてきますので、それも忘れずに。

AVRライター2号

AVRライタ2号機  1号機の MAX232Aの代わりに FT8U232BMを使って USB対応版としました。また、この画像を撮影後に追加したので写ってはいませんが、現在は 74LCV245Aを追加して 3.3/5Vの両電源対応としてあります。回路図はこちら。なお、74LCV245Aのゲート処理を行う為にまたプログラム追加が必要となりました。at90isp23.asmに当てるパッチはこちらです。

2003.3.30


ATmega8対応化

 上記ライタは 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