mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-24 05:53:49 +01:00
sam0/rtc_rtt: don't block until set_alarm has been propagated to periph
rtc_set_alarm() / rtt_set_alarm() are heavily used by ztimer during ISR. This will reduce time spent during ISR drastically. We trust that the peripheral is able to propagate the alarm asynchronously.
This commit is contained in:
parent
9c6f07f80a
commit
268bdfec29
@ -612,18 +612,18 @@ int rtc_set_alarm(struct tm *time, rtc_alarm_cb_t cb, void *arg)
|
||||
(time->tm_year > (reference_year + 63))) {
|
||||
return -2;
|
||||
}
|
||||
else {
|
||||
RTC->MODE2.Mode2Alarm[0].ALARM.reg = RTC_MODE2_ALARM_YEAR(time->tm_year - reference_year)
|
||||
| RTC_MODE2_ALARM_MONTH(time->tm_mon + 1)
|
||||
| RTC_MODE2_ALARM_DAY(time->tm_mday)
|
||||
| RTC_MODE2_ALARM_HOUR(time->tm_hour)
|
||||
| RTC_MODE2_ALARM_MINUTE(time->tm_min)
|
||||
| RTC_MODE2_ALARM_SECOND(time->tm_sec);
|
||||
RTC->MODE2.Mode2Alarm[0].MASK.reg = RTC_MODE2_MASK_SEL(6);
|
||||
}
|
||||
|
||||
/* make sure that preceding changes have been applied */
|
||||
_wait_syncbusy();
|
||||
|
||||
RTC->MODE2.Mode2Alarm[0].ALARM.reg = RTC_MODE2_ALARM_YEAR(time->tm_year - reference_year)
|
||||
| RTC_MODE2_ALARM_MONTH(time->tm_mon + 1)
|
||||
| RTC_MODE2_ALARM_DAY(time->tm_mday)
|
||||
| RTC_MODE2_ALARM_HOUR(time->tm_hour)
|
||||
| RTC_MODE2_ALARM_MINUTE(time->tm_min)
|
||||
| RTC_MODE2_ALARM_SECOND(time->tm_sec);
|
||||
RTC->MODE2.Mode2Alarm[0].MASK.reg = RTC_MODE2_MASK_SEL(6);
|
||||
|
||||
/* Enable IRQ */
|
||||
alarm_cb.cb = cb;
|
||||
alarm_cb.arg = arg;
|
||||
@ -738,9 +738,11 @@ void rtt_set_alarm(uint32_t alarm, rtt_cb_t cb, void *arg)
|
||||
alarm_cb.cb = cb;
|
||||
alarm_cb.arg = arg;
|
||||
|
||||
/* make sure that preceding changes have been applied */
|
||||
_wait_syncbusy();
|
||||
|
||||
/* set COMP register */
|
||||
RTC->MODE0.COMP[0].reg = alarm;
|
||||
_wait_syncbusy();
|
||||
|
||||
/* enable compare interrupt and clear flag */
|
||||
RTC->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_CMP0;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user