Hey, I'm trying to set up a simple timer that fires an interrupt every so often (100-200ms), but I'm having trouble. My interrupt keeps firing continuously, but I think I'm clearing the compare event.
Here is my code:
int main()
{
nrf_timer_mode_set(NRF_TIMER4, NRF_TIMER_MODE_TIMER);
nrf_timer_bit_width_set(NRF_TIMER4, NRF_TIMER_BIT_WIDTH_32);
nrf_timer_frequency_set(NRF_TIMER4, NRF_TIMER_FREQ_1MHz);
nrf_timer_cc_write(NRF_TIMER4, NRF_TIMER_CC_CHANNEL1,
1000000);
nrf_timer_int_enable(NRF_TIMER4, NRF_TIMER_INT_COMPARE1_MASK);
nrf_timer_task_trigger(NRF_TIMER4, NRF_TIMER_TASK_START);
// Enable timer IRQ
NVIC_SetPriority(NRF_TIMER4_IRQn, 7);
NVIC_EnableIRQ(NRF_TIMER4_IRQn);
}
void TIMER4_IRQHandler(void)
{
if (nrf_timer_event_check(NRF_TIMER4, NRF_TIMER_EVENT_COMPARE1)) {
nrf_timer_event_clear(NRF_TIMER4, NRF_TIMER_EVENT_COMPARE1);
leds_invert(2);
}
}