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 件のコメント:
コメントを投稿