マイコン工作実験日記

Microcontroller を用いての工作、実験記録

LPC2388 - RTCを使ってみる

2009-04-02 00:20:46 | Weblog
LPC2388での次のお題を何にしようか考えていましたが、ここはやはり「LEDチカチカ」をおさえておこうと思います。しかしながら、雑誌記事のサンプルを動かしてもおもしろくないので、追加実装した32Kクリスタルの動作確認を兼ねてRTCからの割り込みを使ってLEDを点滅させてみました。

RTCの持つCIIR(Counter Increment Interrupt Register)機能を使うと1秒毎の割り込みは簡単に生成できますが、この割り込みでオン/オフすると点滅周期は2秒となってしまい長すぎます。そこで、CISS(Counter Increment Select Mask register)の機能を使って62.5ms間隔で割り込みを発生し、これを8つ数えることで0.5秒を作ることにしました。割り込み処理の中でLEDを直接操作してもいいわけですが、せっかくTOPPERS/JSPを動かしたので、その機能を使って処理することにします。流れは次のとおりです。
  1. RTCの割り込み処理で、62.5ms間隔の割り込み(RTSSF)を8回数えたら、iset_flgを使ってイベント・フラグをセットする。
  2. メインのタスクでは、wai_flgでフラグ待ちをする。
  3. フラグが立ったら、それをリセットするとともに、LEDを反転させる。
Fast GPIOの機能はAT91SAM7とほとんど同じなので、わたしにとってはとってもわかり易いですね。



RTCはカレンダー/クロック機能を持っていますから、どうせならこいつの動作確認もしてみようということで、シリアルポートにコンソール機能を持たせて、dateコマンドを用意してみました。main_taskが上記のようにLEDを反転させるタスクで、console_taskがコンソール機能とそのコマンド処理を実行しています。

AT91SAM7にはこういうRTC機能が無いために いつも秋月で購入したRTCをI2Cでつなげていたので、このRTC機能はとても便利に感じます。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。