内部クロックでの書き込み速度
code:bash
avr-gcc -g -Wall -Os -fno-split-wide-types -mrelax -mmcu=atmega328p -DF_CPU=8000000L -DBAUD_RATE=115200 -DLED_START_FLASHES=3 -DOSCCAL_VALUE=145 -c -o optiboot.o optiboot.c
optiboot.c:349:6: warning: #warning BAUD_RATE off by greater than -2% -Wcpp #warning BAUD_RATE off by greater than -2% どうもArduino標準の115200だと誤差が2%を超えてよくないらしい
ダメな個体ではOSCCALをかなりうまく設定しないとレートが合わない?
Serial.printfが動くOSCCAL値でも失敗するように見える。もう少し厳密に合わせる必要がある。
19200なら問題ないが、やや書き込みが遅い
ダメな個体でもOSCCALの設定で書き込みができることを確認
次やること
PWMの周期でもう少し厳密にOSCCALを設定して115200に再挑戦
それはそれとして歩留まりが下がりそうなので115200はやめたほうが良い気がする
うまく調整できない テスタの周波数カウンタで調整してもダメ
115200が早すぎると結論付けることにする。
PRしてみる
Arduino Pro Miniとして書き込むためには
57600にすればOKそう fusebitが微妙に違う気がするが大丈夫だろう
誤差が大きくて断念
dockerでやるときのワンライナー
code: bash
$ docker run -v /pwd:/src -w //src rubberduck/avr make BAUD_RATE=19200 OSCCAL_VALUE=145 atmega328_pro8