This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

TIMER0 interrupt not working in a timeslot

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.

Related