optibootの落とし穴

聞いてください、この3日間の戦いを。

事の始まりはと言うと、涵養塾オリジナルのちっちゃなatmega8のMPUボード「Syebano-R2」をこさえてみたのです。
MPUは、Atmega8A-AUを載せ、内臓RC発振器で8MHz動作とします。 これまで、「なのぼーど」等で何度も使っている設定です。
すぐに、確認ができたので、ミニミニセンサーカーを作って、Ardublockで動かしてみました。
なんと、すぐに順調に動作しました。


ここからです、私の3日間の戦いが始まったのは。
上手いこと言ったので、今度は女の子向けに、「LEDぴかぴかカチューシャ」を作ってみようと思い、もう2台の「Syebano-R2」を作って同じoptiboot loaderを書き込みました。
ところが、ArduinoIDEからのアップロードでエラーになってしまうのです。
はんだ不良、ボードの不良、チップの不良、配線の接触不良、USB-Serialモジュールの不良・・・・・・いろんなことを疑い、いろんな組み合わせで確認し、ネットで調べまくり、データシートを懸命に読み、ついに、今朝がた動いている物と、動かないものの違いに気が付きました。
またしても、内部発振器のCakibrationです。動くものと、動かないものの値が違うのです。
そこで、考えました。この違いが影響するのは??? 槽です。シリアル通信のボーレートです。
これまで使っているoptibootでは 115200bps に設定されています。 でもこれは、8MHzのクロックでは誤差が大きいのです。「データシートのExamples of Baud Rate Settingを参照」 
そこで、まずは、ボーレートを 9600bpsにしてみました。
動くではないですか。! ヤッター!!
そこで、もう一度データ使途をよく見ると、クロック8MHzでは38400bpsが最も誤差率が低くて速いようなので、、この値に設定することにしました。

こうして、私の3日間にわたる激闘は終わったのでした。   

お  つ  か  れ  。