2017年7月29日土曜日

Arduino UnoをBootloader書込機にする

Arduino Unoが到着しました。
小さな袋です。
いつの間にかポストに入っていました。
初めて手にするArduino Unoです。
マイコンは、Atmel MEGA328P-AU
USBは、CH340Gが載っています。
CNC2418のWoodpeckerと同じです。
そうです、今頃気づいたのです(笑)
親しみが湧くとともに
CH340G通信エラーのトラウマで若干の不安も...
Arduino UnoにBootloader書込用のスケッチを入れて
Bootloader書込機にするのです。
CNC2418のWoodpeckerの生チップにBootloaderを書き込むためです
ここを参考にさせていただきました。
非常に丁寧に説明されているので助かりました。

購入したArduino Unoはこれです。
では、Arduino UnoをUSBで接続。
Arduino IDE 1.8.3を起動します。
[ファイル]-[スケッチの例]-[11.ArduinoISP]から
ArduinoISPを開きます。
これが、Bootloader書込機にするスケッチです。
このようなウインドウがもう一つ出てきます
[ツール]-[ボード]で
[Arduino/Genuino Uno]を選択します。
[ツール]-[シリアルポート]で確認します。
私の場合、既にCNC2418を接続していて
Arduino Unoは、同じUSBチップCH340Gなので
COM3が自動的に選択されています。
[書込装置]は"AVRISP mkII"のままでいいようです。
このボタンで書き込みを開始します。
[スケッチ]-[マイコンボードに書き込む]と同じことです。
まず、コンパイルが始まります。
続いて書き込みが始まります。
Overriding Baud Rate:115200 です。
Writingです。
###がさっと走っていきます。
続いてReadingで
###がさっと走っていきます。
Writeの後のReadということはVerifyを行っているようです。
無事終わりました!
心臓に悪いです。
Arduino Unoが不良ではないか?
またエラーが出るのではないか?
トラウマでドキドキです。
これで
Arduino UnoがBootloader書込機になりました。

公式サイトの最初に妙な記述があります
「Note for Arduino 1.0: you need to make one small change to the ArduinoISP code. Find the line in the heartbeat() function that says "delay(40);" and change it to "delay(20);".」
インストールしたのはArduino 1.8.3です。
確認すると
heartbeat()の行に
"delay(40);"
というのは、無いので
なにもしなくて大丈夫そうです。

そうそう
参考したサイトに書かれていますが
Arduino UnoをBootloader書込機にする場合は
RESET~GND間に10μFのコンデンサを追加しておく
必要があるということです。
忘れない内に付けておきます。
RESET:コンデンサの+側
GND:コンデンサの-側 です。
手持ちで最初に見つかったタンタルを付けていますが
電解コンデンサで大丈夫です。
※ Arduino Unoを書込機をして使う時だけです。
最初に参考にさせて頂いたここには、
「新品の328Pには一度だけ水晶発振子回路無しでBootloaderを書き込めるが
一度Bootloaderを書き込むと水晶発振子回路無しでは
Bootloaderを上書きすることはできない」
ということですので
Bootloaderを書き込むターゲットの条件に注意しないといけません。
というか
単体で書き込む時には、
常に水晶発振回路は付けていた方が安心ですね。
となると
パッケージ TQFP 32pinに書き込むには
一工夫いりそうです。(´-﹏-`;)

0 件のコメント: