用意するもの
- AE-ATmega (ATmega168/328マイコンボードキット)
- I2C接続小型LCDモジュールピッチ変換キット
1秒の作り方
マイコン内蔵クロックは精度が悪いため時計には使わないほうが良いでしょう。マイコンボードには20MHzのX'talが搭載されているのでこれを使います。20MHzクロックはマイコン内部で1/8(=2.5MHz)にされ、CPU Coreの動作クロック、およびタイマ/カウンタの動作クロックとして使われます。タイマ/カウンタは20mS周期(=50Hz)でタイマ割り込みを発生させます。プログラムはタイマ割込50回で秒針を1進めるようになっています。
回路図
今回使用したLCDモジュールはマイコンとI2Cバスで接続します。図2に回路図を示します。
I2Cバスのアクセス方法
マイコン内蔵のTWI機能を使ってI2Cバスにアクセスします。TWIの使い方は面倒そうだったのでAVR315付属のサンプルコードを使いました。ただし、avr-libcで使う場合は割り込み関係のソースを少し修正する必要があります。以下に修正ポイントを示します。
リスト1 TWI_Master.cの冒頭 修正ポイント:1~4行目、7行目を追加
リスト2 TWI_Master.cの割込みルーチン 修正ポイント:9~11行目、14行目を追加
完成
こんな感じで動きます。 電源入れたまま10日ほど放っておいたら10秒遅れました。月差に換算すると30秒ぐらいなのでまあまあの精度です。
0 件のコメント:
コメントを投稿