[ TOP | Recently ]

2009-08-21 STR8132その7 - RTC


一日1デバイス。今日はRTC。
STR8100/9100 の RTC は電池も付けられないダメダメ超シンプルなRTCで、そのシンプルさは 電源ONになるとひたすら秒分時日の各レジスタがカウントアップし続ける機能しかない。(普通にALARMによる割り込み機能とかはあるけど)
年や月レジスタは存在しない。日レジスタが16bit分あるので65536日=180年分カウントできるので困らない。
何のために存在するかというと、おそらくSuspend/Resumeのためなんだろう。unix的にはどうでもいいデバイス度90%くらい。 でもまぁSoCだし、こんなものかと思ってチンタラとデバドラを書いてたのだが、

「秒分時日の設定もできない」

ことがわかった。おいおい。

で、どうするかというと、32bitのスクラッチ的なレジスタ(RTC_RECORDレジスタ)があって、ここに好きな値を書き込んでおくことができる。
好きな値とは、現在の実時刻とRTCの示す時刻との差分である。

読み出す時は、RTCの「秒+分*60+時*3600+日*86400」に、上で書き込んだ値を差分として(プログラムで)足して解釈する。
設定する時は、RTCの「秒+分*60+時*3600+日*86400」と現在時刻との差分をRTC_RECORDレジスタに保存しておくのだ。

なんという
なんという
なんという…


EOF