3 void xmega_rtc_rcosc_enable(
void)
6 #warning RTC32 not supported
9 OSC.CTRL |= OSC_RC32KEN_bm;
12 while((OSC.STATUS & OSC_RC32KRDY_bm) == 0);
15 CLK.RTCCTRL = CLK_RTCSRC_RCOSC32_gc | CLK_RTCEN_bm;
23 void xmega_rtc_wait_sync_busy(
void)
26 while (RTC32.SYNCCTRL & RTC32_SYNCBUSY_bm);
28 while((RTC.STATUS & RTC_SYNCBUSY_bm));
36 void xmega_rtc_wait_sync_cnt(
void)
39 while (RTC32.SYNCCTRL & RTC32_SYNCCNT_bm);
41 xmega_rtc_wait_sync_busy();
45 void xmega_rtc_set_cnt(uint16_t cnt)
50 RTC32.SYNCCTRL |= RTC32_SYNCCNT_bm;
52 xmega_rtc_wait_sync_cnt();
65 void xmega_rtc_set_per(uint16_t per)
74 void xmega_rtc_set_comp(uint16_t cnt)
83 void xmega_rtc_set_interrupt_levels(uint8_t irq_ovf, uint8_t irq_comp)
87 RTC32.INTCTRL = (RTC32.INTCTRL & ~(RTC32_COMPINTLVL_gm | RTC32_OVFINTLVL_gm)) | irq_ovf | irq_comp;
89 RTC.INTCTRL = (RTC.INTCTRL & ~(RTC_COMPINTLVL_gm | RTC_OVFINTLVL_gm)) | irq_ovf | irq_comp;
93 void xmega_rtc_enable(
void)
96 RTC32.CTRL |= RTC32_ENABLE_bm;
100 void xmega_rtc_set_prescaler(uint8_t prescaler)
103 RTC.CTRL = (RTC.CTRL & ~RTC_PRESCALER_gm) | (prescaler & RTC_PRESCALER_gm);