Skip to content

Commit

Permalink
cpu/nrf5x_common/periph_timer: fix spurious IRQs
Browse files Browse the repository at this point in the history
(cherry picked from commit fbd7b77)
  • Loading branch information
maribu committed Nov 25, 2022
1 parent 6508a72 commit e81926e
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions cpu/nrf5x_common/periph/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,12 @@ int timer_set_absolute(tim_t tim, int chan, unsigned int value)

ctx[tim].flags |= (1 << chan);
dev(tim)->CC[chan] = value;

/* clear spurious IRQs */
dev(tim)->EVENTS_COMPARE[chan] = 0;
(void)dev(tim)->EVENTS_COMPARE[chan];

/* enable IRQ */
dev(tim)->INTENSET = (TIMER_INTENSET_COMPARE0_Msk << chan);

return 0;
Expand All @@ -126,6 +132,12 @@ int timer_set_periodic(tim_t tim, int chan, unsigned int value, uint8_t flags)
if (flags & TIM_FLAG_RESET_ON_SET) {
dev(tim)->TASKS_CLEAR = 1;
}

/* clear spurious IRQs */
dev(tim)->EVENTS_COMPARE[chan] = 0;
(void)dev(tim)->EVENTS_COMPARE[chan];

/* enable IRQ */
dev(tim)->INTENSET = (TIMER_INTENSET_COMPARE0_Msk << chan);

/* re-start timer */
Expand Down

0 comments on commit e81926e

Please sign in to comment.