Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC24FJ64GA002 + Generic FatFs + RTCC Alarm Interrupt

一定の間隔でAD変換を実行してSDカードにそのデータを記録していくわけだが、そのあたりのタイミングをどうやって取ろうか考え中だ。
普通にタイマーの割り込みでもいいが、RTCCにはAlarmの機能がついている。
時計だからアラームは付き物なわけで、これが割り込みを発生させることも出来そうなので、ちょっと試してみた。

RTCCの基本の時刻を刻む機能は普通に動いていて、その前提でAlarmを追加するとした場合、以下のような設定を書き加えることになる。

まずは、ちゃんと割り込みが機能しているかをLEDの点滅でチェックするための割り込み処理の部分。

8ビットのPICでの書き方から比べるとちょっと見慣れない感じがするが、基本的にはこの「_RTCCInterrupt」の部分を割り込みの種類によって変更するだけだ。

Alarm関連の部分は以下のようになる。
いろいろ悩みながら試したので、その過程もコメント・アウトするだけで消さずに残してある。

とりあえず、これで、1秒間隔(ALCFGRPTbits.AMASK = 0b0001;)で255回(ALCFGRPTbits.ARPT = 0b11111111;)の点滅を繰り返すという動作ができる。
pic24fj64gb002_rtcc_alarm_interrupt_2
半端な時間間隔にしたければ一工夫必要そうだが、まあ、当面はこれだけで十分間に合うだろう。
RTCIEとRTCIFは存在は分かっているのに名前を確認するのに手間取った。
RTCIPは、そもそも16ビットのPICではプライオリティが設定できること自体を聞きかじった程度だったので、初めは設定するのを忘れていた。
いずれにしても、データシートのRTCCの部分だけでなくInterrupt Controllerの部分も一通り目を通した方がいい。
pic24fj64gb002_rtcc_alarm_interrupt_1

このエントリーをはてなブックマークに追加

Posted under: PIC24FJ64GA002, SD Card


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.