2015年9月2日水曜日

GR-SAKURAのRTCを使う

GR-SAKURAボード上のRX63Nマイコンには、RTC(リアル・タイム・クロック)が搭載されています。
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 件のコメント:

コメントを投稿