I'm trying to set up TIMER0 to interrupt the timeslot 500us before its end. It doesn't seem like the NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0 signal is happening, I've put a breakpoint inside and it's not being triggered at all.
nrf_radio_signal_callback_return_param_t *timeslotHandler(uint8_t signalType)
{
static nrf_radio_signal_callback_return_param_t returnParams;
returnParams.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE;
switch(signalType)
{
case NRF_RADIO_CALLBACK_SIGNAL_TYPE_START:
NRF_TIMER0->TASKS_CLEAR = 1;
NRF_TIMER0->PRESCALER = 4;
NRF_TIMER0->EVENTS_COMPARE[0] = 0;
NRF_TIMER0->INTENSET = 1 << TIMER_INTENSET_COMPARE0_Pos;
NRF_TIMER0->CC[0] = tsReqParams.params.earliest.length_us - 500;
NRF_TIMER0->TASKS_START = 1;
NVIC_EnableIRQ(TIMER0_IRQn);
returnParams.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_END;
app_sched_event_put(NULL, 0, timeslotProc);
break;
case NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0:
if(NRF_TIMER0->EVENTS_COMPARE[0])
{
debugOut("*");
NRF_TIMER0->EVENTS_COMPARE[0] = 0;
NRF_TIMER0->INTENCLR = TIMER_INTENCLR_COMPARE0_Msk;
NVIC_DisableIRQ(TIMER0_IRQn);
}
break;
}
return &returnParams;
}
Any assistance, would be highly appreciated. Thank you.