How many system ticks mean 1ms?

Hi,

     I need to use system tick to do some math calculate. So I create a new function to get systick like as below. then I can get some number.

uint32_t nrf_drv_systick_get_for_cadence()
{
    return nrf_systick_val_get();
}

And I create a 200ms timer to get systick every 200ms. like as below

static void data_process_handler(void * p_context)
{ 
    uint32_t time_diff;
    
    time_diff = nrf_drv_systick_get_for_cadence();
    printf("%d\r\n",time_diff);
}

In my understanding, 52832 cpu frequency is fixed on 64MHz. So I refer to below function. I guess 64000 systick is mean "1ms"

So if I printf systick result every 200ms, I think that the result is always increase 64000 * 200 = 12800000

static inline uint32_t nrf_drv_systick_ms_tick(uint32_t ms)
{
    return ms * ((SystemCoreClock) / NRF_DRV_SYSTICK_MS);
}
 

But the result is not my imagination.

31298
4007830
7984375
11960898
15937430
3136746
7113278
11089819
15066342
2265658
6242190
10218722
14195271
1394570
5371102
9347634
13324166
523499
4500014
8476546
12453078

So My question is how many system ticks mean "1ms"? Is there anything I misunderstood?

Thank you.

John.

Parents
  • Hi,

    You are right that the SysTick frequency is 64 MHz. I see in your update you commented out nrf_pwr_mgmt_run(), and in that case you will get predictable values. In most real prodcuts the SysTick implementation is not practical though, as it pauses when the CPU pauses.

    I did not understand the use case, but in most practical applications where you want to call a function repeatedly at a specific interval you would want to use the RTC instead, as it runs always and is low power. If that is what you are after, then the app_timer library is probably what you want.

  • Hi,

         In fact, I want to have a number so that I can continue to get it. And the resolution of the number has to be very high.

    Because I want to develop cycling cadence algorithm and I want to get systick number. I use last systick number and presen t systick number to get a difference time to calculate.

    cadence_time_end = nrf_drv_systick_get_for_cadence();
    cadence_time_diff = (0xFFFFFF & (cadence_time_start - cadence_time_end));
    cadence_time_start = cadence_time_end;
            
    gear_ratio_temp = CalGearRatio(cadence_time_diff);
    if(gear_ratio_temp != -1.0)
        v_gear_ratio = gear_ratio_temp;

    Or do you have any better suggestions?

  • Will this cycle computer be battery operated? If so, will this algorithm run continuously? If so this is very likely not a sensibel approach, simply from an energy perspective. As mentioned systick does not work while the CPU is sleeping, so you cannot be low power.

    Can you quantify how high resolution you need? If a 32.768 kHz clock is enough, then you can get very low power using an RTC (often via app_timer so you don't need a dedicated RTC instance). If you need higher resolution but with more flexibility, then a TIMER peripheral is what you want.

  • Hi,

         This device can be plugged into a power outlet. So don't worry about power consumption issue.

    I need a maximum resolution. The bigger the better. That’s why I want to use this method. This is the method with the largest timer resolution I can think about.

    Thank you.

    John.

        

  • Hi John,

    I see. Then this is a special case (one of very few) where the SysTick timer can be a good choice. There are no other timers that give you the same resolution (the next in line would be a TIMER, which on the nRF52832 can be up to 16 MHz).

  • Hi,

       Yes. I see. But I worry about systick number. According to my current test. 19885 is mean 1ms. Is this correct? Is there any situation where this value will change?

    Thank you.

    John.

Reply Children
  • Hi John,

    JohnCC said:
    Yes. I see. But I worry about systick number. According to my current test. 19885 is mean 1ms. Is this correct?

    No. 1 ms is 64000 as you wrote before, as this is a 64 MHz clock. I made a small demo to show this:

    #include <stdbool.h>
    #include <stdint.h>
    #include "boards.h"
    #include "app_timer.h"
    #include "nordic_common.h"
    #include "nrf_error.h"
    #include "nrf_drv_systick.h"
    
    #include "nrf_log.h"
    #include "nrf_log_ctrl.h"
    #include "nrf_log_default_backends.h"
    
    static nrfx_systick_state_t m_systick_state;
    
    
    static uint32_t ticks_diff_get(nrfx_systick_state_t * p_now, nrfx_systick_state_t * p_old)
    {
        return ((p_now->time - p_old->time) & NRF_SYSTICK_VAL_MASK);
    }
    
    
    void clock_initialization()
    {
        NRF_CLOCK->LFCLKSRC            = (CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos);
        NRF_CLOCK->EVENTS_LFCLKSTARTED = 0;
        NRF_CLOCK->TASKS_LFCLKSTART    = 1;
    
        while (NRF_CLOCK->EVENTS_LFCLKSTARTED == 0)
        {
            // Do nothing.
        }
    }
    
    
    
    APP_TIMER_DEF(m_systick_get_timer_id);
    
    static void systick_get_timer_handler(void * p_context)
    {
        nrfx_systick_state_t old_systick_state = m_systick_state;
        nrf_drv_systick_get(&m_systick_state);
        NRF_LOG_INFO("SysTick state: %u (elapsed: %u)",
                     m_systick_state.time,
                     ticks_diff_get(&old_systick_state, &m_systick_state));
    }
    
    
    
    static void systick_get_timer_init_and_start()
    {
        ret_code_t err_code;
    
        err_code = app_timer_init();
        APP_ERROR_CHECK(err_code);
    
    
        err_code = app_timer_create(&m_systick_get_timer_id,
                                    APP_TIMER_MODE_REPEATED,
                                    systick_get_timer_handler);
        APP_ERROR_CHECK(err_code);
    
        err_code = app_timer_start(m_systick_get_timer_id, APP_TIMER_TICKS(1), NULL);
        APP_ERROR_CHECK(err_code);
    }
    
    
    int main(void)
    {
        clock_initialization();
        systick_get_timer_init_and_start();
        nrf_drv_systick_init();
    
        APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
        NRF_LOG_DEFAULT_BACKENDS_INIT();
    
        NRF_LOG_INFO("SysTick demo started.");
    
        while (true)
        {
            NRF_LOG_FLUSH();
            __SEV();
            __WFE();
            __WFE();
        }
    }
    

    Output:

    <info> app_timer: RTC: initialized.
    <info> app: SysTick demo started.
    <info> app: SysTick state: 16712500 (elapsed: 64716)
    <info> app: SysTick state: 16649220 (elapsed: 63280)
    <info> app: SysTick state: 16585940 (elapsed: 63280)
    <info> app: SysTick state: 16522664 (elapsed: 63276)
    <info> app: SysTick state: 16459380 (elapsed: 63284)
    <info> app: SysTick state: 16396092 (elapsed: 63288)
    <info> app: SysTick state: 16332808 (elapsed: 63284)
    <info> app: SysTick state: 16269504 (elapsed: 63304)
    <info> app: SysTick state: 16079648 (elapsed: 63284)
    <info> app: SysTick state: 16016344 (elapsed: 63304)
    <info> app: SysTick state: 15953056 (elapsed: 63288)
    <info> app: SysTick state: 15889772 (elapsed: 63284)
    <info> app: SysTick state: 15826480 (elapsed: 63292)
    <info> app: SysTick state: 15763184 (elapsed: 63296)
    <info> app: SysTick state: 15699888 (elapsed: 63296)
    <info> app: SysTick state: 15636584 (elapsed: 63304)
    <info> app: SysTick state: 15573288 (elapsed: 63296)
    <info> app: SysTick state: 15509972 (elapsed: 63316)
    <info> app: SysTick state: 15446648 (elapsed: 63324)
    <info> app: SysTick state: 15383324 (elapsed: 63324)
    <info> app: SysTick state: 15320020 (elapsed: 63304)
    <info> app: SysTick state: 15256728 (elapsed: 63292)
    <info> app: SysTick state: 15193444 (elapsed: 63284)
    <info> app: SysTick state: 15130160 (elapsed: 63284)
    <info> app: SysTick state: 15066872 (elapsed: 63288)
    <info> app: SysTick state: 15003580 (elapsed: 63292)
    <info> app: SysTick state: 14877032 (elapsed: 63268)
    <info> app: SysTick state: 14813744 (elapsed: 63288)
    <info> app: SysTick state: 14750456 (elapsed: 63288)
    <info> app: SysTick state: 14687188 (elapsed: 63268)
    <info> app: SysTick state: 14623904 (elapsed: 63284)
    <info> app: SysTick state: 14560612 (elapsed: 63292)
    <info> app: SysTick state: 14497336 (elapsed: 63276)
    <info> app: SysTick state: 14434036 (elapsed: 63300)
    <info> app: SysTick state: 14370752 (elapsed: 63284)
    <info> app: SysTick state: 14244168 (elapsed: 63296)
    <info> app: SysTick state: 14180868 (elapsed: 63300)
    <info> app: SysTick state: 14117564 (elapsed: 63304)
    <info> app: SysTick state: 14054256 (elapsed: 63308)
    <info> app: SysTick state: 13990948 (elapsed: 63308)
    <info> app: SysTick state: 13927620 (elapsed: 63328)
    <info> app: SysTick state: 13864296 (elapsed: 63324)
    <info> app: SysTick state: 13800984 (elapsed: 63312)
    <info> app: SysTick state: 13737656 (elapsed: 63328)
    <info> app: SysTick state: 13674336 (elapsed: 63320)
    <info> app: SysTick state: 13611036 (elapsed: 63300)
    <info> app: SysTick state: 13547740 (elapsed: 63296)
    <info> app: SysTick state: 13484412 (elapsed: 63328)
    <info> app: SysTick state: 13357772 (elapsed: 63316)
    <info> app: SysTick state: 13294452 (elapsed: 63320)
    <info> app: SysTick state: 13231108 (elapsed: 63344)
    <info> app: SysTick state: 13167784 (elapsed: 63324)
    <info> app: SysTick state: 13104480 (elapsed: 63304)
    <info> app: SysTick state: 13041176 (elapsed: 63304)
    <info> app: SysTick state: 12977868 (elapsed: 63308)
    <info> app: SysTick state: 12914552 (elapsed: 63316)
    <info> app: SysTick state: 12851224 (elapsed: 63328)
    <info> app: SysTick state: 12724600 (elapsed: 63316)
    <info> app: SysTick state: 12661300 (elapsed: 63300)
    <info> app: SysTick state: 12598004 (elapsed: 63296)
    <info> app: SysTick state: 12534688 (elapsed: 63316)
    <info> app: SysTick state: 12471384 (elapsed: 63304)
    <info> app: SysTick state: 12408072 (elapsed: 63312)
    <info> app: SysTick state: 12344744 (elapsed: 63328)
    <info> app: SysTick state: 12281424 (elapsed: 63320)
    <info> app: SysTick state: 12218108 (elapsed: 63316)
    <info> app: SysTick state: 12154788 (elapsed: 63320)
    <info> app: SysTick state: 12091460 (elapsed: 63328)
    <info> app: SysTick state: 12028124 (elapsed: 63336)
    <info> app: SysTick state: 11964820 (elapsed: 63304)
    <info> app: SysTick state: 11838180 (elapsed: 63320)
    <info> app: SysTick state: 11774868 (elapsed: 63312)
    <info> app: SysTick state: 11711540 (elapsed: 63328)
    <info> app: SysTick state: 11648228 (elapsed: 63312)
    <info> app: SysTick state: 11584916 (elapsed: 63312)
    <info> app: SysTick state: 11521604 (elapsed: 63312)
    <info> app: SysTick state: 11458288 (elapsed: 63316)
    <info> app: SysTick state: 11394968 (elapsed: 63320)
    <info> app: SysTick state: 11331664 (elapsed: 63304)
    <info> app: SysTick state: 11078412 (elapsed: 63304)
    <info> app: SysTick state: 11015104 (elapsed: 63308)
    <info> app: SysTick state: 10951800 (elapsed: 63304)
    <info> app: SysTick state: 10888496 (elapsed: 63304)
    <info> app: SysTick state: 10825196 (elapsed: 63300)
    <info> app: SysTick state: 10761904 (elapsed: 63292)
    <info> app: SysTick state: 10698588 (elapsed: 63316)
    <info> app: SysTick state: 10635256 (elapsed: 63332)
    <info> app: SysTick state: 10571940 (elapsed: 63316)
    <info> app: SysTick state: 10508624 (elapsed: 63316)
    <info> app: SysTick state: 10445324 (elapsed: 63300)
    <info> app: SysTick state: 10382012 (elapsed: 63312)
    <info> app: SysTick state: 10318720 (elapsed: 63292)
    <info> app: SysTick state: 10255420 (elapsed: 63300)
    <info> app: SysTick state: 10192112 (elapsed: 63308)
    <info> app: SysTick state: 10128780 (elapsed: 63332)
    <info> app: SysTick state: 10065480 (elapsed: 63300)
    <info> app: SysTick state: 10002184 (elapsed: 63296)
    <info> app: SysTick state: 9938888 (elapsed: 63296)
    <info> app: SysTick state: 9875584 (elapsed: 63304)
    <info> app: SysTick state: 9812260 (elapsed: 63324)
    <info> app: SysTick state: 9748920 (elapsed: 63340)
    <info> app: SysTick state: 9685600 (elapsed: 63320)
    <info> app: SysTick state: 9622284 (elapsed: 63316)
    <info> app: SysTick state: 9558972 (elapsed: 63312)
    <info> app: SysTick state: 9495684 (elapsed: 63288)
    <info> app: SysTick state: 9432380 (elapsed: 63304)
    <info> app: SysTick state: 9369072 (elapsed: 63308)
    <info> app: SysTick state: 9305756 (elapsed: 63316)
    <info> app: SysTick state: 9242424 (elapsed: 63332)
    <info> app: SysTick state: 9179100 (elapsed: 63324)
    <info> app: SysTick state: 9115760 (elapsed: 63340)
    <info> app: SysTick state: 9052440 (elapsed: 63320)
    <info> app: SysTick state: 8989112 (elapsed: 63328)
    <info> app: SysTick state: 8925796 (elapsed: 63316)
    <info> app: SysTick state: 8609232 (elapsed: 63288)
    <info> app: SysTick state: 8545924 (elapsed: 63308)
    <info> app: SysTick state: 8482612 (elapsed: 63312)
    <info> app: SysTick state: 8419292 (elapsed: 63320)
    <info> app: SysTick state: 8355956 (elapsed: 63336)
    <info> app: SysTick state: 8292620 (elapsed: 63336)
    <info> app: SysTick state: 8229308 (elapsed: 63312)
    <info> app: SysTick state: 8165984 (elapsed: 63324)
    <info> app: SysTick state: 8102680 (elapsed: 63304)
    <info> app: SysTick state: 8039372 (elapsed: 63308)
    <info> app: SysTick state: 7976092 (elapsed: 63280)
    <info> app: SysTick state: 7912804 (elapsed: 63288)
    <info> app: SysTick state: 7849492 (elapsed: 63312)
    <info> app: SysTick state: 7786196 (elapsed: 63296)
    <info> app: SysTick state: 7722888 (elapsed: 63308)
    <info> app: SysTick state: 7659588 (elapsed: 63300)
    <info> app: SysTick state: 7596296 (elapsed: 63292)
    <info> app: SysTick state: 7533008 (elapsed: 63288)
    <info> app: SysTick state: 7469704 (elapsed: 63304)
    <info> app: SysTick state: 7406372 (elapsed: 63332)
    <info> app: SysTick state: 7343052 (elapsed: 63320)
    <info> app: SysTick state: 7279728 (elapsed: 63324)
    <info> app: SysTick state: 7216404 (elapsed: 63324)
    <info> app: SysTick state: 7153092 (elapsed: 63312)
    <info> app: SysTick state: 7089764 (elapsed: 63328)
    <info> app: SysTick state: 7026440 (elapsed: 63324)
    <info> app: SysTick state: 6963140 (elapsed: 63300)
    <info> app: SysTick state: 6899840 (elapsed: 63300)
    <info> app: SysTick state: 6836516 (elapsed: 63324)
    <info> app: SysTick state: 6773208 (elapsed: 63308)
    <info> app: SysTick state: 6709892 (elapsed: 63316)
    <info> app: SysTick state: 6583288 (elapsed: 63300)
    <info> app: SysTick state: 6519984 (elapsed: 63304)
    <info> app: SysTick state: 6456684 (elapsed: 63300)
    <info> app: SysTick state: 6393384 (elapsed: 63300)
    <info> app: SysTick state: 6330092 (elapsed: 63292)
    <info> app: SysTick state: 6266792 (elapsed: 63300)
    <info> app: SysTick state: 6203500 (elapsed: 63292)
    <info> app: SysTick state: 6140188 (elapsed: 63312)
    <info> app: SysTick state: 6076880 (elapsed: 63308)
    <info> app: SysTick state: 6013596 (elapsed: 63284)
    <info> app: SysTick state: 5697096 (elapsed: 63316)
    <info> app: SysTick state: 5633800 (elapsed: 63296)
    <info> app: SysTick state: 5570484 (elapsed: 63316)
    <info> app: SysTick state: 5507172 (elapsed: 63312)
    <info> app: SysTick state: 5443892 (elapsed: 63280)
    <info> app: SysTick state: 5380628 (elapsed: 63264)
    <info> app: SysTick state: 5317348 (elapsed: 63280)
    <info> app: SysTick state: 5254056 (elapsed: 63292)
    <info> app: SysTick state: 5190752 (elapsed: 63304)
    <info> app: SysTick state: 5127452 (elapsed: 63300)
    <info> app: SysTick state: 5064168 (elapsed: 63284)
    <info> app: SysTick state: 5000880 (elapsed: 63288)
    <info> app: SysTick state: 4937596 (elapsed: 63284)
    <info> app: SysTick state: 4874304 (elapsed: 63292)
    <info> app: SysTick state: 4811000 (elapsed: 63304)
    <info> app: SysTick state: 4747704 (elapsed: 63296)
    <info> app: SysTick state: 4684428 (elapsed: 63276)
    <info> app: SysTick state: 4621152 (elapsed: 63276)
    <info> app: SysTick state: 4557852 (elapsed: 63300)
    <info> app: SysTick state: 4494572 (elapsed: 63280)
    <info> app: SysTick state: 4431296 (elapsed: 63276)
    <info> app: SysTick state: 4367996 (elapsed: 63300)
    <info> app: SysTick state: 4304684 (elapsed: 63312)
    <info> app: SysTick state: 4241380 (elapsed: 63304)
    <info> app: SysTick state: 4178096 (elapsed: 63284)
    <info> app: SysTick state: 4114808 (elapsed: 63288)
    <info> app: SysTick state: 4051504 (elapsed: 63304)
    <info> app: SysTick state: 3988220 (elapsed: 63284)
    <info> app: SysTick state: 3924920 (elapsed: 63300)
    <info> app: SysTick state: 3861648 (elapsed: 63272)
    <info> app: SysTick state: 3671812 (elapsed: 63284)
    <info> app: SysTick state: 3608520 (elapsed: 63292)
    <info> app: SysTick state: 3545224 (elapsed: 63296)
    <info> app: SysTick state: 3481932 (elapsed: 63292)
    <info> app: SysTick state: 3418652 (elapsed: 63280)
    <info> app: SysTick state: 3355340 (elapsed: 63312)
    <info> app: SysTick state: 3292064 (elapsed: 63276)
    <info> app: SysTick state: 3228776 (elapsed: 63288)
    <info> app: SysTick state: 3165492 (elapsed: 63284)
    <info> app: SysTick state: 3102188 (elapsed: 63304)
    <info> app: SysTick state: 3038892 (elapsed: 63296)
    <info> app: SysTick state: 2975620 (elapsed: 63272)
    <info> app: SysTick state: 2912340 (elapsed: 63280)
    <info> app: SysTick state: 2849056 (elapsed: 63284)
    <info> app: SysTick state: 2785752 (elapsed: 63304)
    <info> app: SysTick state: 2722472 (elapsed: 63280)
    <info> app: SysTick state: 2659180 (elapsed: 63292)
    <info> app: SysTick state: 2595896 (elapsed: 63284)
    <info> app: SysTick state: 2532612 (elapsed: 63284)
    <info> app: SysTick state: 2469316 (elapsed: 63296)
    <info> app: SysTick state: 2406004 (elapsed: 63312)
    <info> app: SysTick state: 2152796 (elapsed: 63308)
    <info> app: SysTick state: 2089492 (elapsed: 63304)
    <info> app: SysTick state: 2026176 (elapsed: 63316)
    <info> app: SysTick state: 1962844 (elapsed: 63332)
    <info> app: SysTick state: 1899496 (elapsed: 63348)
    <info> app: SysTick state: 1836164 (elapsed: 63332)
    <info> app: SysTick state: 1772836 (elapsed: 63328)
    <info> app: SysTick state: 1709520 (elapsed: 63316)
    <info> app: SysTick state: 1646184 (elapsed: 63336)
    <info> app: SysTick state: 1582880 (elapsed: 63304)
    <info> app: SysTick state: 1519548 (elapsed: 63332)
    <info> app: SysTick state: 1456216 (elapsed: 63332)
    <info> app: SysTick state: 1392896 (elapsed: 63320)
    <info> app: SysTick state: 1329600 (elapsed: 63296)
    <info> app: SysTick state: 1266280 (elapsed: 63320)
    <info> app: SysTick state: 1202976 (elapsed: 63304)
    <info> app: SysTick state: 1139668 (elapsed: 63308)
    <info> app: SysTick state: 1076352 (elapsed: 63316)
    <info> app: SysTick state: 1013040 (elapsed: 63312)
    <info> app: SysTick state: 949732 (elapsed: 63308)
    <info> app: SysTick state: 886400 (elapsed: 63332)
    <info> app: SysTick state: 759788 (elapsed: 63300)
    <info> app: SysTick state: 696496 (elapsed: 63292)
    <info> app: SysTick state: 633220 (elapsed: 63276)
    <info> app: SysTick state: 569920 (elapsed: 63300)
    <info> app: SysTick state: 506616 (elapsed: 63304)
    <info> app: SysTick state: 443304 (elapsed: 63312)
    <info> app: SysTick state: 380016 (elapsed: 63288)
    <info> app: SysTick state: 316712 (elapsed: 63304)
    <info> app: SysTick state: 253444 (elapsed: 63268)
    <info> app: SysTick state: 190176 (elapsed: 63268)
    <info> app: SysTick state: 126888 (elapsed: 63288)
    <info> app: SysTick state: 63580 (elapsed: 63308)
    <info> app: SysTick state: 284 (elapsed: 63296)
    <info> app: SysTick state: 16714188 (elapsed: 63312)
    <info> app: SysTick state: 16650884 (elapsed: 63304)
    <info> app: SysTick state: 16587596 (elapsed: 63288)
    <info> app: SysTick state: 16461000 (elapsed: 63292)
    <info> app: SysTick state: 16397700 (elapsed: 63300)
    <info> app: SysTick state: 16334392 (elapsed: 63308)
    <info> app: SysTick state: 16271100 (elapsed: 63292)
    <info> app: SysTick state: 16207788 (elapsed: 63312)
    <info> app: SysTick state: 16144496 (elapsed: 63292)
    <info> app: SysTick state: 16017916 (elapsed: 63276)
    <info> app: SysTick state: 15954636 (elapsed: 63280)
    <info> app: SysTick state: 15891356 (elapsed: 63280)
    <info> app: SysTick state: 15828064 (elapsed: 63292)
    <info> app: SysTick state: 15764796 (elapsed: 63268)
    <info> app: SysTick state: 15701504 (elapsed: 63292)
    <info> app: SysTick state: 15638216 (elapsed: 63288)
    <info> app: SysTick state: 15574920 (elapsed: 63296)
    <info> app: SysTick state: 15511616 (elapsed: 63304)
    <info> app: SysTick state: 15448328 (elapsed: 63288)
    <info> app: SysTick state: 15385028 (elapsed: 63300)
    <info> app: SysTick state: 15321740 (elapsed: 63288)
    <info> app: SysTick state: 15258460 (elapsed: 63280)
    <info> app: SysTick state: 15195184 (elapsed: 63276)
    <info> app: SysTick state: 15131892 (elapsed: 63292)
    <info> app: SysTick state: 15068604 (elapsed: 63288)
    <info> app: SysTick state: 14941988 (elapsed: 63308)
    <info> app: SysTick state: 14878700 (elapsed: 63288)
    <info> app: SysTick state: 14815416 (elapsed: 63284)
    <info> app: SysTick state: 14752136 (elapsed: 63280)
    <info> app: SysTick state: 14688852 (elapsed: 63284)
    <info> app: SysTick state: 14625568 (elapsed: 63284)
    <info> app: SysTick state: 14498972 (elapsed: 63300)
    <info> app: SysTick state: 14435664 (elapsed: 63308)
    <info> app: SysTick state: 14372372 (elapsed: 63292)
    <info> app: SysTick state: 14309076 (elapsed: 63296)
    <info> app: SysTick state: 14245760 (elapsed: 63316)
    <info> app: SysTick state: 14182456 (elapsed: 63304)
    <info> app: SysTick state: 14119160 (elapsed: 63296)
    <info> app: SysTick state: 14055856 (elapsed: 63304)
    <info> app: SysTick state: 13992540 (elapsed: 63316)
    <info> app: SysTick state: 13929232 (elapsed: 63308)
    <info> app: SysTick state: 13865940 (elapsed: 63292)
    <info> app: SysTick state: 13802648 (elapsed: 63292)
    <info> app: SysTick state: 13739348 (elapsed: 63300)
    <info> app: SysTick state: 13676060 (elapsed: 63288)
    <info> app: SysTick state: 13612748 (elapsed: 63312)
    <info> app: SysTick state: 13549444 (elapsed: 63304)
    <info> app: SysTick state: 13422864 (elapsed: 63284)
    <info> app: SysTick state: 13359588 (elapsed: 63276)
    <info> app: SysTick state: 13296316 (elapsed: 63272)
    <info> app: SysTick state: 13233028 (elapsed: 63288)
    <info> app: SysTick state: 13169724 (elapsed: 63304)
    <info> app: SysTick state: 13106432 (elapsed: 63292)
    <info> app: SysTick state: 13043124 (elapsed: 63308)
    <info> app: SysTick state: 12979804 (elapsed: 63320)
    <info> app: SysTick state: 12916508 (elapsed: 63296)
    <info> app: SysTick state: 12853192 (elapsed: 63316)
    <info> app: SysTick state: 12789884 (elapsed: 63308)
    <info> app: SysTick state: 12726588 (elapsed: 63296)
    <info> app: SysTick state: 12663276 (elapsed: 63312)
    <info> app: SysTick state: 12599968 (elapsed: 63308)
    <info> app: SysTick state: 12536660 (elapsed: 63308)
    <info> app: SysTick state: 12473352 (elapsed: 63308)
    <info> app: SysTick state: 12410036 (elapsed: 63316)
    <info> app: SysTick state: 12346704 (elapsed: 63332)
    <info> app: SysTick state: 12283388 (elapsed: 63316)
    <info> app: SysTick state: 12220064 (elapsed: 63324)
    <info> app: SysTick state: 12156744 (elapsed: 63320)
    <info> app: SysTick state: 12093420 (elapsed: 63324)
    <info> app: SysTick state: 12030112 (elapsed: 63308)
    <info> app: SysTick state: 11966800 (elapsed: 63312)
    <info> app: SysTick state: 11840192 (elapsed: 63320)
    <info> app: SysTick state: 11776876 (elapsed: 63316)
    <info> app: SysTick state: 11713544 (elapsed: 63332)
    <info> app: SysTick state: 11650220 (elapsed: 63324)
    <info> app: SysTick state: 11586912 (elapsed: 63308)
    <info> app: SysTick state: 11523612 (elapsed: 63300)
    <info> app: SysTick state: 11460320 (elapsed: 63292)
    <info> app: SysTick state: 11397040 (elapsed: 63280)
    <info> app: SysTick state: 11333748 (elapsed: 63292)
    <info> app: SysTick state: 11270440 (elapsed: 63308)
    <info> app: SysTick state: 11207128 (elapsed: 63312)
    <info> app: SysTick state: 11143820 (elapsed: 63308)
    <info> app: SysTick state: 11080500 (elapsed: 63320)
    <info> app: SysTick state: 11017180 (elapsed: 63320)
    <info> app: SysTick state: 10953872 (elapsed: 63308)
    <info> app: SysTick state: 10890536 (elapsed: 63336)
    <info> app: SysTick state: 10827224 (elapsed: 63312)
    <info> app: SysTick state: 10763916 (elapsed: 63308)
    <info> app: SysTick state: 10700588 (elapsed: 63328)
    <info> app: SysTick state: 10637256 (elapsed: 63332)
    <info> app: SysTick state: 10573940 (elapsed: 63316)
    <info> app: SysTick state: 10510640 (elapsed: 63300)
    <info> app: SysTick state: 10447332 (elapsed: 63308)
    <info> app: SysTick state: 10384036 (elapsed: 63296)
    <info> app: SysTick state: 10257448 (elapsed: 63292)
    <info> app: SysTick state: 10194132 (elapsed: 63316)
    <info> app: SysTick state: 10130824 (elapsed: 63308)
    <info> app: SysTick state: 10067528 (elapsed: 63296)
    <info> app: SysTick state: 10004220 (elapsed: 63308)
    <info> app: SysTick state: 9940916 (elapsed: 63304)
    <info> app: SysTick state: 9877596 (elapsed: 63320)
    <info> app: SysTick state: 9814284 (elapsed: 63312)
    <info> app: SysTick state: 9750996 (elapsed: 63288)
    <info> app: SysTick state: 9687704 (elapsed: 63292)
    <info> app: SysTick state: 9624412 (elapsed: 63292)
    <info> app: SysTick state: 9561112 (elapsed: 63300)
    <info> app: SysTick state: 9497808 (elapsed: 63304)
    <info> app: SysTick state: 9434500 (elapsed: 63308)
    <info> app: SysTick state: 9371204 (elapsed: 63296)
    <info> app: SysTick state: 9307920 (elapsed: 63284)
    <info> app: SysTick state: 9244616 (elapsed: 63304)
    <info> app: SysTick state: 9181312 (elapsed: 63304)
    <info> app: SysTick state: 9118004 (elapsed: 63308)
    <info> app: SysTick state: 9054704 (elapsed: 63300)
    <info> app: SysTick state: 8991400 (elapsed: 63304)
    <info> app: SysTick state: 8928084 (elapsed: 63316)
    <info> app: SysTick state: 8864784 (elapsed: 63300)
    <info> app: SysTick state: 8801460 (elapsed: 63324)
    <info> app: SysTick state: 8674836 (elapsed: 63328)
    <info> app: SysTick state: 8611532 (elapsed: 63304)
    <info> app: SysTick state: 8548232 (elapsed: 63300)
    <info> app: SysTick state: 8484920 (elapsed: 63312)
    <info> app: SysTick state: 8421592 (elapsed: 63328)
    <info> app: SysTick state: 8358276 (elapsed: 63316)
    <info> app: SysTick state: 8294936 (elapsed: 63340)
    <info> app: SysTick state: 8231620 (elapsed: 63316)
    <info> app: SysTick state: 8168308 (elapsed: 63312)
    <info> app: SysTick state: 8105000 (elapsed: 63308)
    <info> app: SysTick state: 8041692 (elapsed: 63308)
    <info> app: SysTick state: 7978376 (elapsed: 63316)
    <info> app: SysTick state: 7915068 (elapsed: 63308)
    <info> app: SysTick state: 7851756 (elapsed: 63312)
    <info> app: SysTick state: 7788460 (elapsed: 63296)
    <info> app: SysTick state: 7725164 (elapsed: 63296)
    <info> app: SysTick state: 7661876 (elapsed: 63288)
    <info> app: SysTick state: 7598584 (elapsed: 63292)
    <info> app: SysTick state: 7535276 (elapsed: 63308)
    <info> app: SysTick state: 7471996 (elapsed: 63280)
    <info> app: SysTick state: 7408724 (elapsed: 63272)
    <info> app: SysTick state: 7345440 (elapsed: 63284)
    <info> app: SysTick state: 7282156 (elapsed: 63284)
    <info> app: SysTick state: 7218876 (elapsed: 63280)
    <info> app: SysTick state: 7155620 (elapsed: 63256)
    <info> app: SysTick state: 7029084 (elapsed: 63268)
    <info> app: SysTick state: 6965828 (elapsed: 63256)

    JohnCC said:
    Is there any situation where this value will change?

    Well, a problem here is that use use another timer to read this value every x time, and that timer will have same variation, depending on its reference clock etc. As you do this in SW, you are also affected by other same or higher priority interrupts etc in a real application, and any critical sections etc (which disabled interrupt for a short time).

    Also, this depends on the accuracy of the HFCLK. In my example above I do not start the HFXO, so the accuracy comes from tine HFINT, which has several percent variation.

    (Note that if you need to match this time with som external signal from GPIOTE, a timer peripheral would be much more sensible as then you could do this in HW via PPI, so that SW does not introduce any unpredictable delays.)

    Edit: I should perhaps mention that the sample I did like this to make it close to what I though you did. If you just want to wait for a duration and get a interrupt at a specific time using SysTick you should refer to the Blinky SysTick Example.

Related