Arduinoを内蔵8MHzクロックで動作させる
Arduinoで工作するにあたって、一旦ちゃんと動くことが分かればUSBやLEDなどは必要なくて、マイコンをボードから取り外して単体で使いたいことがよくある。しかしそのままでは水晶振動子を外付けしないと動作しないので邪魔/めんどくさい。
ArduinoなATmega328pを内蔵8MHzクロック(水晶ではなくRC発振らしい)で動作させる方法は偉大な先人たちによって確立されているけど、どうもとっつきにくく思えて今まで先延ばしにしてきた。
今回は一念発起して頑張ったので、なぜとっつきにくく感じたのか考えて自分なりにまとめ。自分用ともいう。
http://arduino.cc/en/Tutorial/ArduinoToBreadboard
本家を読んで頑張った。環境は、
Arduino UNO R3
まず分かってなかったことは、
1. マイコンを取り外していない、ちゃんと動くArduinoボード
2. 内蔵8MHzクロックでArduinoとして動作させたいATmega328P/ATmega168P
が別々に必要なこと。Arduinoボード上のマイコンの設定を書き換えられるとばかり。。。さらに場合によっては、
3. 内部クロック化したいATmega328pに既にArduinoブートローダが書込み済み(Arduinoボードに挿したら動く)場合は、外付けの水晶発振子と22pFのコンデンサ×2。ブートローダ書込みの通信のため。
そして自分が理解できた範囲の大まかな流れは、
1. ArduinoボードにArduinoISPというスケッチを書き込む。これはボード上のマイコンをAVRライタとして動作させるプログラムである。サンプルスケッチの中にある。
2. 本家ページのMinimal Circuit (Eliminating the External Clock)のところにあるBreadboard.zipを展開して~\Arduino\hardware\Breadboard\boards.txtへ置く。IDEを再起動するとマイコンボードの中に”ATmega328 on a breadboard (8 MHz internal clock)”が現れる。
3. 本家ページの通りにつないで、ブートローダを書き込む。"ツール"メニューのマイコンボードを”ATmega328 on a breadboard (8 MHz internal clock)”、書込装置を”Arduino as ISP”を選択する。ブートローダの入ってない素のチップの場合は水晶/コンデンサは省略。
4. 本家ページ通りに配線をつなぎ替え、ボード上のマイコンを外す。書込装置を”AVR ISP MkII”、マイコンボードを”ATmega328 on a breadboard (8 MHz internal clock)”を選んでblinkか何か書き込んで動作させてみる。digital13pinの場所などは調べる。
(5. ボード上のマイコンを外した跡地に内蔵クロック版を挿しても書き込めるかもしれない。また今度試してみよう)