フラッシュメモリが少しだけあまっていたので、ちょっと余計なことをしようかと。
センサーからデータを読むとき以外はスリープして2秒間は休ませる間欠動作をさせよう。
かなり省電力化できるんじゃない?
と思って調べてたら、ブートローダーにウォッチドッグタイマーのバグがあるらしく、Optiboot にするとバグはないらしい。
めんどくさそうだから後回しにしていた Optiboot。
ブートローダーのサイズが小さくなるだけなら特に魅力はなかったんやけど、バグがなくなるなら乗り移らない理由はない。
ということでちょっと調べてみた。
一回やったら忘れそうなので書き留めておく。
----- Arduino IDE 1.02以上 -----
https://code.google.com/p/optiboot/
↑ここからダウンロード
\bootloaders\optibootフォルダを
\arduino-1.0.5\hardware\arduino\bootloaders
にコピー(俺は上書き)
boards.txtの必要なものを
\arduino-1.0.5\hardware\arduino\boards.txt
に追記
----- Arduino IDE 0023以前 -----
https://code.google.com/p/optiboot/source/browse/optiboot/boards.txt?r=b91e3ce9d61bcdeb0ac5e471f25eecfce385835a
↑ここからダウンロード
\bootloaders\optibootフォルダを
\arduino-0023\hardware\arduino\bootloaders
にコピー(俺は足りないものだけコピー)
boards.txtの必要なものを
\arduino-0023\hardware\arduino\boards.txt
に追記
upload.maximum_size の値が変なので
フラッシュメモリが 32KB のモデルは
32768 - 512 = 32256
16KB のモデルは
16384 - 512 = 15372
に変更。(でいいと思う。)
これでマイコンボードの欄に Optiboot が追加される。
ブートローダーの書き込み方は、今までどおりで Optiboot から選ぶだけ。
<2014/04/13 追記>
ブートローダ領域を決めるヒューズビットについて
boards.txt を見ていると同じマイコンなのにヒューズビットの値が違うのはなぜ?
と思って調べてみた。
末尾が「P」と「V」では違うらしい。
ATMega328P モデル:high_fuses=0xde
Duemilanove
Nano
ATMega328V モデル:high_fuses=0xdc
LilyPad
Pro or Pro Mini
ATMega168P モデル:extended_fuses=0x04
Diecimila
Duemilanove
Nano
NG
ATMega168V モデル:extended_fuses=0x02
Japanino
Mini
LilyPad
Pro or Pro Mini