drivers: timer: nrf_rtc_timer: Add clearing of previous CC event

Added clearing of CC event which may occure due to previous
CC value which was closed to current counter value.

Fixed int_mask initialization.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
This commit is contained in:
Krzysztof Chruscinski 2020-12-07 11:57:43 +01:00 committed by Anas Nashif
commit b417f68609

View file

@ -160,12 +160,11 @@ static void set_absolute_alarm(uint32_t chan, uint32_t abs_val)
uint32_t cc_val = abs_val & COUNTER_MAX;
uint32_t prev_cc = get_comparator(chan);
do {
now = counter();
/* Handle case when previous event may generate an event.
* It is handled by setting CC to now (that's furtherst future),
* It is handled by setting CC to now (far in the future),
* in case previous event was set for next tick wait for half
* LF tick and clear event that may have been generated.
*/
@ -174,6 +173,7 @@ static void set_absolute_alarm(uint32_t chan, uint32_t abs_val)
k_busy_wait(15);
}
/* If requested cc_val is in the past or next tick, set to 2
* ticks from now. RTC may not generate event if CC is set for
* 1 tick from now.
@ -182,6 +182,7 @@ static void set_absolute_alarm(uint32_t chan, uint32_t abs_val)
cc_val = now + 2;
}
event_clear(chan);
event_enable(chan);
set_comparator(chan, cc_val);
now2 = counter();