drivers: timer: nrf_rtc_timer: Fix set_comparator corner case

Update the logic in a corner case, when the target comparator value is
one cycle ahead of the counter value.

Experiments have shown, that `set_comparator(cyc + 1);` might be not
enough in that case, and we still may (rarely) miss the interrupt.
This could happen when the counter incremented its value after the `dt`
variable was set. As we should set the comparator value two cycles
ahead to be on the safe side, increment the target comparator value
by 2 instead of 1.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
This commit is contained in:
Robert Lubos 2019-07-29 14:06:52 +02:00 committed by Carles Cufí
commit 9f34d17cc1

View file

@ -166,7 +166,7 @@ void z_clock_set_timeout(s32_t ticks, bool idle)
} }
} else if (dt == 1) { } else if (dt == 1) {
/* Too soon, interrupt won't arrive. */ /* Too soon, interrupt won't arrive. */
set_comparator(cyc + 1); set_comparator(cyc + 2);
} }
/* Otherwise it was two cycles out, we're fine */ /* Otherwise it was two cycles out, we're fine */
} }