Previous: 8.2.2.2. 割込みハンドラの作成 |
Up: 8.2.2. RTCの利用手順 |
Next: 8.3. RTCフラグの取得 |
このプログラムでは1日ごとにカウンタをリセットすることにしましたので、1日分カウントされたかどうかを確認する必要があります。カウンタ値の確認に使用するのがRTC_GetCounter関数(ライブラリ 14?13)です。
ライブラリ 14?13 RTC_GetCounter関数
関数プロトタイプ |
uint32_t RTC_GetCounter(void ) |
動作 |
RTCのカウンタ値を取得します。 |
引数 |
無し |
戻り値 |
カウンタ値 |
割り込みハンドラ中では、以下のように、カウンタ値が1日が満了したことを判定するためにRTC_GetCounter関数を使用しています。
if (RTC_GetCounter() == 0x0001517F) ? { ??? RTC_SetCounter(0x0); ??? /* Wait until last write operation on RTC registers has finished */ ??? RTC_WaitForLastTask(); ? } |
また時刻表示ルーチンでは以下のようにRTC_GetCounter関数を使用して現在のカウンタ値を取得し、現在時刻として表示させています。
/* Display current time */ cprintf(“Time now is “); Time_Display(RTC_GetCounter()); cprintf(“? RTC counter is “); Print_Decimal(RTC_GetCounter()); cprintf(“\r\n”); |
ここまでのところで、RTCを使用したプログラムの作成に必要な機能一式がそろいました。VDDの供給を停止してVBATのみでRTCを動作させているときの電流値を計測したところ、1.67uAでした。これならボタン電池だけで何年も時刻を刻めそうです。
Previous: 8.2.2.2. 割込みハンドラの作成 |
Up: 8.2.2. RTCの利用手順 |
Next: 8.3. RTCフラグの取得 |