エプソントヨコムのリアルタイムクロックRTC4543をPICで制御するプログラムを書いています.備忘録代わりに書いておきたいと思います.
このリアルタイムクロックは独自のインタフェースを持っており,シリアル通信で様々な時間の管理が容易に行えるようになっています.PICのような簡単なマイコンでも十分に制御することができる優れものです.さて,データシートを眺めてプログラムを実装し,なんとなく動かしてみたところあっさり動きました.そのまま別のプログラムを書いていて,いざ実際に長期稼働したところでおかしな動きが2つあることに気が付きました.1: 秒の進み方がときどき急に進む,2: 60秒以上の数字が表示される,ということです.書き込みや読み込みのタイミングが早すぎたり遅すぎるのかと,いろいろと調べてみたのですがその辺には問題はありませんでした.もう一度データシートを眺めていると,少しおかしなことに気が付きました.それは秒は0~59までなのに7ビットも使っているということです.63以下なら6ビットで十分なのでは….さらにそこから1時間くらい悩み,やっと気が付きました.
RTC4543SAはBCD(Binary-Coded Decimal)でした.
これに気が付かず半日くらいつぶしてしまいました.この後,BCDにしたプログラムを作ります.