2012年1月27日金曜日

USBasp のファームウェアアップデート


以前に紹介した aitendo AVR-USBasp-B はファームウェアが古いようです。
Arduino IDE 1.0 と組み合わせて使用すると、次のようなメッセージが出ます。


avrdude: Warning: Found USB device "USBasp" with old VID/PID! Please update firmware of USBasp!
avrdude: warning: cannot set sck period. please check for usbasp firmware update.


エラーではないのですが、できればなんとかしたいです。


ショップのページをみると、「JP3 とJP4 を同時にON にしてファームウェア書き換えモード」とありますが、より正確には「外部のISP プログラマーを使ってファームウェアを書き換えるモード」です。これ単体でアップデートはできません。

仕方ないので、このArduino as ISP を使ってみます。
どうも私の環境では安定しないので、(そもそも、安定していれば USBasp 不要ですし、、、)ちょっと不安です。

よくわからないエラーと格闘しつつ、なんとか書き込むことができました。
(イレースだけされて書き込めない時もあり、焦りました。リセットを手動で押したり、何回も試しました。)

書き込みに使ったツールは avrdude です。
Mac への導入方法は今回、割愛します。Arduino IDE の中にも含まれています。

書き込むファームウェアはこちらの 2011-05-28版をダウンロード。
aitendo-AVR-USBasp-B はAtmega8 なので、
bin > firmware の中の
usbasp.atmega8.2011-05-28.hex を書き込みます。
Makefile も用意されていますが、もう一つUSBasp がないと使えません。

いろいろ試して、書き込めたコマンドはこのような感じでした。
$ avrdude -P/dev/tty.usbserial-A700eY3o -b19200 -c arduino -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex:i

-P /dev/tty.usbserial-A700eY3o
 シリアルポート指定 これは各自の環境でことなります。
 指定するシリアルポートの名前を調べるコマンドは  $ ls /dev/tty.*usb*

-b 19200
 ボーレート指定 Arduino ISP の場合19200です。
-c arduino
 プログラマタイプの指定、Arduino as ISP はおそらくこれです。(avrisp でも良い?)
-p m8
 書き込む対象のマイコン atmega8を指定(実物を確認して下さい)
-U flash:w:usbasp.atmega8.2011-05-28.hex:i
 カレントディレクトリにある usbasp.atmega8.2011-05-28.hex というファイルを書き込み

もうひとつ、hfuse ビットが変わっていたので、こちらも書き換え

$ avrdude -P/dev/tty.usbserial-A700eY3o -b19200 -c arduino -p m8 -U hfuse:w:0xC9:m



これで Arduino IDE から使っても Warning がでなくなりました。

作るより買った方が簡単だと思ったのですが、結局手間がかかってしまいました。


0 件のコメント:

コメントを投稿