以前、素のATmega328PにUNOのブートローダを書き込んだ。
「某海外通販で購入したArduino UNO R3 互換機で遊ぶ -その06 ブートローダを書き込む-」
同じことなので、特に目新しいものは無い。
2つを接続する。
書き込まれる側のNanoのICSP用のランド(下の写真の6つの穴)に、書き込みに使う側のNanoのD10~D13と5VとGNDをつなぐ。
ピン・アサインは下のようになっていて、
それぞれを下の一覧のようにつなぐ。
MISO(1) — D12
+Vcc(2) — 5V
SCK(3) — D13
MOSI(4) — D11
Reset(5) — D10
GND(6) — GND
「Arduino Nano用ICSPクリップをPogo Pinで作った。」
次に、書き込みに使う方のNanoにArduinoISPというスケッチを書き込む。
下のように、ツール>書き込み装置をArduino as ISPとする。
書き込みに使うArduinoと書き込まれるArduinoが違う種類のボードなら、忘れずにボードの選択を変更するところだ。
ここではどっちもNanoなのでボードを変更する必要は無い。
そんまま ツール>ブートローダを書き込む をクリックする。
今日やったら、このとき書き込みに使う方のNanoのRSTとGNDの間にコンデンサ(0.1~10μF)が必要だった(※)。
しばらく待って、2つのNanoのLEDが同期して点滅を繰り返せば書き込み完了だ。
(※)
以下 2019/01/18 追記
以前も必要だったのに書くのを忘れてたのか、今日使ったボードとの違いなのかは不明。
コンデンサの値は、たまたま転がってたので使った10μFと0.1μFでは問題なかった。
逆に、スケッチを書き込むときにはコンデンサを外さないと書き込めなかった。
追記(2019/09/20)
だいぶ前から重量計として使っているNanoがある。
このスケッチを書き替えようとしたら、以下のようなエラーが出た。
1 2 3 4 5 6 7 8 9 10 11 |
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xfc avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xfc avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0 avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xfc avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x1c avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0 avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x1c avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0 avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe0 avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x1c An error occurred while uploading the sketch |
古い版のブートローダだったかと思い、ボードの指定を変えてみたが同じだった。
結局、上の手順でブートローダを書き込んだら復活した。
ちなみに、上にある、
しばらく待って、2つのNanoのLEDが同期して点滅を繰り返せば書き込み完了だ。
というような点滅にはならなかった。
コンデンサも必要なかった。