「AVRマイコンでキャラクタLCDに時間を表示する(その1)」の、クロックの精度を上げたいと思います。
内蔵クロックから外部クロックに変更しますが、使うのは4MHzのセラロックにします。
FUSEビットを書き換えますが、外部クロックの設定にしてしまうと、内蔵クロックでは動作しなくなります。外部クロックをつけていないとFlashの書き換えもできなくなりますので注意が必要です。
まずは、時計プログラムを落としてきます。
# git clone https://github.com/takkete/bread.git # cd bread/mcu/avr/attiny2313/device/clock
外部クロック4MHzを使うので、ビルドオプション-DF_CPU=1000000ULを4000000に変更して、ビルドします。
# sed 's/CPU=1/CPU=4/' -i makefile # make
焼きます。
# make write
最後にFUSEビットの変更をします。
4MHzなので、
avrdude -p t2313 -c linuxgpio -U lfuse:w:0xEC:m
を実行します。
~# avrdude -p t2313 -c linuxgpio -U lfuse:w:0xEC:m avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e910a avrdude: reading input file "0xEC" avrdude: writing lfuse (1 bytes): Writing | ################################################## | 100% 0.01s avrdude: 1 bytes of lfuse written avrdude: verifying lfuse memory against 0xEC: avrdude: load data lfuse data from input file 0xEC: avrdude: input file 0xEC contains 1 bytes avrdude: reading on-chip lfuse data: Reading | ################################################## | 100% 0.00s avrdude: verifying ... avrdude: 1 bytes of lfuse verified avrdude: safemode: Fuses OK (E:FF, H:DF, L:EC) avrdude done. Thank you. #
動かしてストップウォッチと比べてみます。
ストップウォッチは、25:49、自作時計は、25:41。8秒もずれています。また、調べることが増えてしまいました。
コメント
[…] ← AVRマイコンでキャラクタLCDに時間を表示する(その2) […]