Skip to content

Commit

Permalink
Merge pull request #18970 from maribu/cpu/nrf5x_common/periph_timer/f…
Browse files Browse the repository at this point in the history
…ix_spurious_irqs

cpu/nrf5x_common/periph_timer: fix spurious IRQs
  • Loading branch information
kaspar030 authored Nov 25, 2022
2 parents c89c75d + fbd7b77 commit f1a8e1f
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 f1a8e1f

Please sign in to comment.