SSブログ

202duino で Real-Time Counter (RTC) の練習 [Arduino]

ATtiny202でのRTCを調べてみた。

Getting Started with RTC
https://ww1.microchip.com/downloads/en/Appnotes/TB3213-Getting-Started-with-RTC-DS90003213B.pdf

ここにサンプルがあったので、megaTinyCore の ATtiny202 用に、さらにシンプルにしてみた。

RTC Overflow Interrupt Code Example
(0.5秒毎にLEDを点滅させる)
// RTC Overflow Interrupt Code Example

void setup() {
  PORTA.DIRSET = PIN6_bm;
  PORTA.OUTSET = PIN6_bm;
  while (RTC.STATUS > 0);               // Wait for all register to be synchronized
  RTC.PER = 511;                        // Set period
  RTC.CLKSEL   = RTC_CLKSEL_INT32K_gc;  // 32.768kHz Internal Crystal Oscillator
  RTC.DBGCTRL |= RTC_DBGRUN_bm;         // Run in debug: enabled
  RTC.CTRLA    = RTC_PRESCALER_DIV32_gc // 32
               | RTC_RTCEN_bm           // Enable: enabled
               | RTC_RUNSTDBY_bm;       // Run In Standby: enabled
  RTC.INTCTRL |= RTC_OVF_bm;            // Enable Overflow Interrupt
}

void loop() {
}

ISR(RTC_CNT_vect)
{
  RTC.INTFLAGS = RTC_OVF_bm;            // Clear flag by writing '1':  LED0_toggle();
  PORTA.OUTTGL = PIN6_bm;               // LED toggle
}


RTC Periodic Interrupt Code Example
(1秒毎にLEDを点滅させる)
// RTC Periodic Interrupt Code Example

void setup() {
  PORTA.DIRSET = PIN6_bm;
  PORTA.OUTSET = PIN6_bm;
  while (RTC.STATUS > 0);               // Wait for all register to be synchronized
  RTC.CLKSEL   = RTC_CLKSEL_INT32K_gc;  // 32.768kHz Internal Crystal Oscillator
  RTC.DBGCTRL |= RTC_DBGRUN_bm;         // Run in debug: enabled
  RTC.PITINTCTRL = RTC_PI_bm;           // Periodic Interrupt: enabled
  RTC.PITCTRLA = RTC_PERIOD_CYC32768_gc // RTC Clock Cycles 32768
               | RTC_PITEN_bm;          // Enable: enabled
  pinMode( LED_BUILTIN, OUTPUT);
}

void loop() {
}

ISR(RTC_PIT_vect)
{
  RTC.PITINTFLAGS = RTC_PI_bm;          // Clear flag by writing '1':
  PORTA.OUTTGL    = PIN6_bm;            // LED toggle
}

202_rtc_blink.jpg

スリープ関連のサンプルもあったけど、202duinoは、常にtype-Cから電源をとること、CH340E常時ONということもあり、まあいっか、、ということで。
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。