ロボットとはあんまり関係ないのですが・・・AVRマイコンとリアルタイムクロック(RTC-8564NB)を接続してみました。
このRTCモジュールですが・・・かってI2Cの勉強をしているときに、よし!やるぞ・・・と思って買ってきてあったのですが、ずっと使わずに(使えずに)しまってありました。
やっと、役に立つ時がきました。
ATMEGA88をマスターとしてI2C接続で4本のケーブルで結びます。
時分秒を読み出して、LCDに表示させることができました。
ところが、1秒毎に秒が進むのですが、表示がなんか変です。
突然数字が飛びます。(ぽよ~ん)
う~んこれまた何で? (なんで、いつも素直に動かないの?)
と、よくデータシートを見たら(最初からちゃんと見てろよ)BCD形式だということが分かりました。 そうすると、上位4ビットと下位4ビットに分けて表示しなければならないので・・・良く考えたら
printf( "%02d:%02d:%02d",hour,min,sec );
というのを
printf( "%02x:%02x:%02x",hour,min,sec );
にしたら、ちゃんと表示できました。
今度は、どうやって時刻を合わせるかが問題なのですが・・・あれっ、時計を作ってもしょうがないや。 あくまでも、I2CとLCDの勉強用ですので・・・。