atmega8の内臓クロック補正

 atmega8 MPU で、赤外線リモコン装置を作ってみました。
詳細は、またの機会に掲載するとして、問題が発生し、原因と対策が分かったので、メモを残しておくことにします。

発生した問題は、
*5Vでは動作するが、3Vにすると動作しない。
という問題です。

赤外線LED駆動回路が悪いのかと思い、いろいろ調べましたが、関係なしです。

やっと気づいたのは、電圧でatmega8の内臓クロックの周波数がかなり変化するということでした。

5Vで、38KHzに調整した赤外線LEDの発光は、3Vでは35KHzになってしまっていました。

再度、内臓クロックについて調査すると、やはり、内臓クロックのキャリブレーションに関するアプリケーションノートが見つかりました。

これを参考に、OSCCALを変更するとよいということがわかりました。

そこで、SETUP時に調整することとしました。 調整値は、IC毎に違う可能性がありますが、とりあえず、手元のチップで調整した値にしておくことにします。(下図の通り)

時間管理を正確にする必要がある場合は、このキャリブレーションをきっちりしなくてはいけないですね。 電圧と温度でも変化するそうです。