This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Timers interrupt lagging on nRF5340

Hi All!

I have a problem which i can't really understood. I'm using nRF5340-DK evaluation board, and currently i'm trying to get one of timer (TIMER1 in this example) to have a tick every 1s.

I want to have it done via NRF(X) library, not using Zephyr. Here's my code:

Z_ISR_DECLARE( TIMER1_IRQn, 0, nrfx_timer_1_irq_handler, NULL );

void timerEventHandler( nrf_timer_event_t event_type, void *p_context )
{
    printk("Timer called");
}

nrfx_timer_config_t initCfg = {
            .frequency          = NRF_TIMER_FREQ_16MHz,
            .mode               = NRF_TIMER_MODE_TIMER,
            .bit_width          = TIMER_BITMODE_BITMODE_32Bit,
            .interrupt_priority = 1,
            .p_context          = NULL
        };
z_arm_irq_priority_set( TIMER1_IRQn, 1, 0 );
nrfx_timer_init( NRFX_TIMER_INSTANCE( 1 ), &initCfg, timerEventHandler );
uint32_t maxVal = nrfx_timer_us_to_ticks( NRFX_TIMER_INSTANCE( 1 ), 1000000 );
nrfx_timer_extended_compare( NRFX_TIMER_INSTANCE( 1 ), NRF_TIMER_CC_CHANNEL0, maxVal, NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK, true );
nrfx_timer_enable( NRFX_TIMER_INSTANCE( 1 ) );

Now the problem is, that in most situations it is working fine. However, after some time (ex. 20 seconds), i observe the lag on UART console, meaning that timer has been called not a second ago prior to last call, but about 2-3 seconds.

Can't really get what could be reason?

I have also another issue facing timers. If i add infinite while loop like this into main:

while(1)
{
    uart_irq_rx_disable( device);
    checkFlag = !checkFlag;
    uart_irq_rx_enabe( device );
}

Then it appears that uart_irq_rx_disable also disables timer interrupt. When i do frequently rx_disable, then timer interrupt is lagging even more.

Can't really understood why disabling UART interrupt also disables Timer interrupt?

Thank you for any help!

Parents
  • on behalf of we've checked together with him the suggestion and you are correct, the issue is with UART delays rather than Timer callback.
    Thanks for the support !!!! this ticket can be resolved.

  • Hi

    That's great news, I will close this ticket then. 

    The best of luck with your project Slight smile

    Best regards
    Torbjørn

  • Reply Children
    No Data
    Related