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

nrf52 timer example, over 5 minutes event handler.

When I test the timer example with nrf52832 DK, it so nice to 4 minutes.

uint32_t time_ms = 240000;

But when I set the time interval over 5 minutes, then the event handler run more rapidly.

So, what should I do for long time period?

Parents
  • Hi JW,

    By default, the timer runs at 16 MHz and the maximum bit width of the timer is 32-bit. This corresponds to a maximum timer value of:

    (2^32)-1 = 4294967295
    

    The reason why you see event handler more rapidly with 5 minutes, is that nrf_drv_timer_ms_to_ticks use the configured frequency and the time_ms parameter to generate the number of ticks, and return this in a 32 bit variable:

    5*60*16000000 = 4800000000
    

    This overflows the 32 bit variable, giving you a tick count of 505032705 = ~31.5 seconds.

    You need to change the frequency of the timer to make it run run slower. This is done by changing the timer configuration:

    timer_cfg.frequency = NRF_TIMER_FREQ_8MHz;
    

    You can set it to any of the frequencies documented here.

    Best regards,

    Jørgen

  • It works!! Thank you so much! But actually 'nrf_timer.h' is referred by every Keil projects. So..isn't there any problem with 16000ULL in other case? In my opinion, it might be okay because the difference between UL and ULL is just size.

Reply Children
No Data
Related