Arduino Duemilanoveではブートローダを簡単に新しいAVRマイコンに書き込むことができます。
最初から入っている「Arduino ISP」というスケッチを使えば簡単です。
しかし、Arduino Unoではそう簡単にはいきません。
Optibootという新しいブートローダが入ってるかららしいんですが・・・
今までUnoではできないと思っていたんですが違うスケッチを使えばいけるようです。
スポンサーリンク
用意するものはArduinoとAVRマイコン(ATmega328P)のみ。
そして一番下にあるリンクからOptifix.zipをダウンロードしてください。
次にArduino UnoとATmega328Pを下図のように接続します。
そしてダウンロードしたスケッチをコンパイルしてアップロードします。
次にSerial Monitorを起動して「19200 baud」を選択します。
Arduinoに正しくAVRマイコンが接続されていない、または既にブートローダーが焼きこまれていると
OptiFix Bootstrap programmer. 2011 by Bill Westfield (WestfW) Starting Program Mode [OK] Reading signature: Bad value: 0 (no target attached?) Type 'G' or hit RESET for next chip
このようなエラーメッセージが表示されます。
うまくいっていませんので、回路の確認等をしてみてください。
成功すると以下のような表示になります。
OptiFix Bootstrap programmer. 2011 by Bill Westfield (WestfW) Starting Program Mode [OK] Reading signature:950F Searching for image... Found "optiboot_atmega328.hex" for atmega328 Start address at 7E00 Total bytes read: 508 Setting fuses for programming Lock: 3F FFE000 Low: FF FFA000 High: DE FFA800 Ext: 5 FFA400 Programming bootloader: 512 bytes at 0x3F00 Commit Page: 3F00:3F00 Commit Page: 3F40:3F40 Commit Page: 3F80:3F80 Commit Page: 3FC0:3FC0 Restoring normal fuses Lock: F FFE000 Type 'G' or hit RESET for next chip
スポンサーリンク
これでAVRマイコンにブートローダが書き込まれました。
あとはもともとArduinoにあったATmega328Pをこのブートローダを書き込んだものに入れ替えれば、いつも通りにArduinoの言語で開発ができます。
追記
Arduino 1.0で書き込む場合は optiLoader.h の1行目を次のように変更してください。
変更前
#include <WProgram.h>
変更後
#include <Arduino.h>
スポンサーリンク
Pingback: 空IKE飛行機! Blog» Mega328のTQFPをarduino化&PAK FA解体
大昔ワンボードマイコンをいじくった以外最近のマイコンは全くの初心者です。
ArduinoUNOを使ってブートローダー焼き付けようと頑張っているのですが、焼蹴るのは
手だけです。 漸くこのページに辿り着きダウンロードしたOptifixをコンパイルして初めてErrorなしで通る姿をみました。ですがその先シリアルモニターのメッセージは正しくAVR
に接続されてないと言う6行のメッセージです。何度も接続回路見直しましたが正しい様です。 もう一つのATmega328Pを差し替えてアップロードしてみました。今度はシリアルモニターに成功したメッセージが確認できました。
焼けた328PをUNOに差し替えてみたら正常に動作しました。 ありがとう御座いました。
1つ目の時のエラーメッセージは既にOptfixが焼きこまれている可能性もあります。
一度差し替えて確認してみるといいかもしれません。
回路にコンデンサや水晶は必要ないのですか?
書き込みだけですのでコンデンサはどっちでもいいです。
このままの状態でずっと動かし続けるなら必要だとは思いますが・・・
出荷時の状態であればATmega328Pは内部発振で動いているので水晶振動子は必要ありません。
しかし、ヒューズビットを変更してそのICを外部発振にしているのであれば、必要になってきますよ。