RX63Nには、腕時計にも使われている水晶発信子(32.768KHz)が接続されており、この発振パスルをカウントして正確な時刻を作ります。年・月・曜日とかの計算もハードウェアで行いますので、初期値をセットすれば、日付・時間を簡単に読み出すことができます。
下記に、GR-SAKURAボードとWebコンパイラ用のサンプルプログラムを添付します。
//GR-SAKURA用 プロジェクトテンプレート(Ver V2.02) /* GR-SAKURA Sketch Template V2.02 */ /* RX63N RTC Test Program */ #include <Arduino.h> #include <RTC.h> //GR-SAKURAボードのRTCを使用する #define INTERVAL 100 // myRTCに日付・時刻の初期値をセットする。詳細は gr_common\core\RTC.h RTC_TIMETYPE myRTC = {15, 12, 31, 2, 23, 59, 30}; const char *WeekDay[7] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; void setup() { Serial.begin( 115200 ); // シリアルモニタの通信速度 pinMode(PIN_LED0,OUTPUT); pinMode(PIN_LED1,OUTPUT); pinMode(PIN_LED2,OUTPUT); pinMode(PIN_LED3,OUTPUT); rtc_set_time(&myRTC); // RTCに初期値をセットしてRTCをスタート } void loop() { digitalWrite(PIN_LED0, 1); delay(INTERVAL); digitalWrite(PIN_LED1, 1); delay(INTERVAL); digitalWrite(PIN_LED2, 1); delay(INTERVAL); digitalWrite(PIN_LED3, 1); delay(INTERVAL); digitalWrite(PIN_LED0, 0); delay(INTERVAL); digitalWrite(PIN_LED1, 0); delay(INTERVAL); digitalWrite(PIN_LED2, 0); delay(INTERVAL); digitalWrite(PIN_LED3, 0); delay(INTERVAL); rtc_get_time(&myRTC); // RTCレジスタ内容をmyRTCに読み出す Serial.print(myRTC.year); Serial.print("/"); Serial.print(myRTC.mon); Serial.print("/"); Serial.print(myRTC.day); Serial.print(" ("); Serial.print(WeekDay[myRTC.weekday]); Serial.print(") "); Serial.print(myRTC.hour); Serial.print(":"); Serial.print(myRTC.min); Serial.print(":"); Serial.println(myRTC.second); }
0 件のコメント:
コメントを投稿