« [PowerShot G11] オートブラケット撮影 | トップページ | [Japanino] クロック精度 »

2010年6月16日 (水)

[Japanino] 外部水晶発振子を使う

先月買った大人の科学マガジン Vol.27 テクノ工作セットは相変わらず付録にも手をつけず放ったらかしにしてあった。少しはいじってみようかとネットをうろついていたら「水晶が付いているのに、実際は使われていない」なんて話を見つけた。クロック精度がどうとかはともかく、せっかくついているものがただ基板に乗っているだけなんて勿体無い。

外部の水晶を使うにはヒューズビットというものを書き換えればいいらしい。正攻法ではAVRライタとかAVRプログラマを手に入れる必要があるが、代わりにArduinoを使う方法もある。幸いというか間抜けというかここに書いた通りArduinoが手元にあるので、こいつを使ってやってみる。「というもの」とか「らしい」とか無知丸出しだが、それでもやってしまう。

「半田付け無しでJapanino同士ヒューズビットを再設定する」を参考にほぼその通りやってみた。

Arduino playground - Programmer2からスケッチ(http://www.arduino.cc/playground/uploads/Code/programmer2.txt)をもらってくる。

1014行目と1016行目を書き換える。

1010  case atmega168:
1011    serialprintflash(PSTR("Writing mega48/88/168 fuses: "));
1012    CMD_Write_Fuse_Extended( 0xf8);
1013    delay(10);
1014    CMD_Write_Fuse_High( 0xdf);	// 0xdf を 0xdd に
1015    delay(10);
1016    CMD_Write_Fuse_Low( 0xef);	// 0xef を 0xc6 に
1017    delay(10);

ArduinoとJapaninoを結線する。

Arduino Japanino
  +5V --- +5V
  GND --- GND
  D10 --- Reset
  D11 --- D11
  D12 --- D12
  D13 --- D13

参考にしたページではヒューズビットの読み出しに別のツールを使っているが、上で取ってきたスケッチに読み出しのコマンドがあるのでここではそれを使っている。

ArduinoとJapaninoを説明通りにつなぎ、スケッチをArduinoにロードする。
Arduino IDEのシリアルモニタを19200baudに設定。
"*s"を送ってシグネチャを確かめる。
"SIGNATURES1e,94,06,ff,"が帰ってくる。通信成功。
"*u"を送ってFuseビットを読み出す。
Monitor

各値を16進表記で確認すると、参考にしたページと同じだ。

Lock Bits: 11111111 => FF
Fuse Low:  11010010 => D2
Fuse High: 11011110 => DE
Fuse Extn: 11111000 => F8

"*A"でFuseビットを書き換える。Aは必ず大文字で。小文字だとブートローダの書き換えになってしまう。不安ならスケッチで"*a"を無効にしておけばいい、というかそうした(488行目から4行をコメントアウト)。
書き換わっているかもう一度"*u"を送って確認。
Monitor2

Lock Bits: 11111111 => FF
Fuse Low:  11000110 => C6
Fuse High: 11011101 => DD
Fuse Extn: 11111000 => F8

うまく行ったらしい。
動作確認は気が向いたらいつか。

« [PowerShot G11] オートブラケット撮影 | トップページ | [Japanino] クロック精度 »

Arduino」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [Japanino] 外部水晶発振子を使う:

« [PowerShot G11] オートブラケット撮影 | トップページ | [Japanino] クロック精度 »