半田付け無しでJapanino同士ヒューズビットを再設定する

arms22さんが紹介されているArduinoで遊ぼう-AVRライタを使わないBootloaderの書き込みArduino Boot-Clonerを使ってJapanino同士のヒューズビット設定を試してみました。
Arduino Boot-Clonerを使ったヒューズビット書き換えの実例が中々出てこないのは、

  • スケッチ自体が長い間メンテナンスされていない(らしい)ため、Arduino-0018で動くか不明
  • CR発振のJapaninoでヒューズビット書き換えに必要な精度が出せるか不明

といったところがあるかと思います。
しかしながら、用意するものがJapaninoを持った友達を探すだけ、という本手法もそれなりの利点があるように感じます。

(注意)今回うまくいっていますが、ヒューズビット書き換えのためだけにJapaninoを複数買うメリットは全くありません。ほぼ同コストの純正Arduinoを使ったFTDI Bitbangや、安いAVRライタを利用した方が安全だと思います。

ここでは書き込み側Japaninoをライタ、ヒューズビットを書き込まれる方をターゲットと呼びます。
私はJapaninoを複数台持っていないため、Atmega168を搭載したeJackinoをターゲットとしました。ターゲット側はJapaninoの環境と近くなるよう、予めヒューズビットをCR発振するよう設定しました。

忘れてはいけません。実験のため、ライタとなるJapaninoのヒューズビットも初期(CR発振)に戻しておきます。

必要な電子部品
Japanino2つ
ジャンパワイヤ6本

スケッチはこちら
http://www.arduino.cc/playground/uploads/Code/programmer2.txt

IDEにコピー&ペーストした後、スケッチの修正が必要です。
void Fuse_Arduino_Style()中の
1014行:
CMD_Write_Fuse_High( 0xdf);

CMD_Write_Fuse_High( 0xdd);
1016行:
CMD_Write_Fuse_Low( 0xef);

CMD_Write_Fuse_Low( 0xc6);
にします。
# 1000行付近にMega8用ヒューズビット書き換え処理があります。それと間違えないようにお気をつけください。
# せっかくdefineしているのに、それが活かされていないのはなんでだろう?

ライタ側のD10をターゲットのResetに配線し、後は
D11
D12
D13
+5V
GND
同士を配線します。
写真いつものようにピンボケです。すみません。

スケッチをコンパイルしてライタに書き込んでください。
シリアルモニタを起動し、19200bpsに設定した後、
*s
*A (必ず大文字のAにしてください)
で書き込み完了です。

さて、書き込んだヒューズビットを見てみましょう。

とりあえず3回書き込みをしてみましたが、問題なく設定できているようです。

6月15日追記 Arduino Boot-ClonerはSignature Byteでマイコンを判別しており、対応するSignature Byteが無い場合、エラーとなってしまいます。今回、MEGA168とMEGA168VはSignature Byteが同じなので、ライタJapanino(MEGA168V)、ターゲットeJackino(MEGA168)で成功すればJapanino相互の書き込みはOKとしましたが、念のためターゲットをJapaninoにしてヒューズビットの書き換えを行い、無事成功を確認しました。