Конфигурация ATtiny817 Xplained Mini RTC - PullRequest
0 голосов
/ 10 октября 2019

Я использую ATtiny817 xplained Mini, я хочу переключать светодиод, используя прерывание по переполнению каждые 10 секунд из RTC, но я не могу создать прерывание. Корректна ли конфигурация?

Я настроил основной тактовый источник 32 кГц (генератор малой мощности), используя 1 кГц от него для синхронизации RTC без прескалера.

#define RTC_SAMPLE_PERIOD (1024 * 10)

void RTC_init(void)
{
    /* Configuring the Clock Source */
    _PROTECTED_WRITE(CLKCTRL.OSC32KCTRLA, CLKCTRL_RUNSTDBY_bm);
    _PROTECTED_WRITE(CLKCTRL.MCLKCTRLB, !CLKCTRL_PEN_bm);
    _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, !CLKCTRL_CLKOUT_bm | CLKCTRL_CLKSEL_OSCULP32K_gc);
    while (!(CLKCTRL.MCLKSTATUS & CLKCTRL_OSC32KS_bm));

    /*  Initialize RTC */
    while (RTC.STATUS > 0)
    ; //Wait for All registers to be Synchronized

    /* Set Period */
    RTC.PER = RTC_SAMPLE_PERIOD;

    /* Configuring RTC CLOCK */
    RTC.CLKSEL = RTC_CLKSEL_INT1K_gc; //Selecting 1kHz from 32KHz Low Power Oscillator (OSCULP32K)

    /* Run in debug: enabled */
    RTC.DBGCTRL |= RTC_DBGRUN_bm;

    RTC.CTRLA = RTC_RTCEN_bm /* Enable: enabled */
    | RTC_RUNSTDBY_bm; /* Run In Standby: enabled */

    /* Enable Overflow Interrupt */
    RTC.INTCTRL |= RTC_OVF_bm;
}

ISR(RTC_CNT_vect)
{
    LEDupdateFlg = 1;
    RTC.INTFLAGS |= RTC_OVF_bm;
}
...