SYSTEM ON SLEEP : Wake up on gpio interrupt and Timer

I am using nrf52832, and I want to use SYSTEM ON Sleep.
Also , my wake up sourses are timer based, and also GPIO interrupt based. 
But I observed that the device cannot go to sleep for more than approximately 4 minutes.
Code: 

#define WAKEUP_PIN 17 // Pin number for wakeup button
K_TIMER_DEFINE(my_timer, NULL, NULL);
#define  SLEEP_TIME           K_SECONDS(600) // Define sleep time as 10 seconds
#define  SLEEP_TIMER_START    k_timer_start(&my_timer, SLEEP_TIME, SLEEP_TIME)
#define  SLEEP_TIMER_STOP     k_timer_stop(&my_timer)

void  handle_sleep(void)
{
    char woke_from_gpio = 0;
    printk("Going into the sleep...!!\n\n");
   
    nrf_gpio_cfg_sense_input(WAKEUP_PIN, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW);
    SLEEP_TIMER_START;
    pm_state_force(0u,&(struct pm_state_info){PM_STATE_SUSPEND_TO_IDLE, 0, 0}); 
    __WFI();
    if (nrf_gpio_pin_read(WAKEUP_PIN) == 0)
    {
        woke_from_gpio = 1;
    }
    SLEEP_TIMER_STOP;
    if(woke_from_gpio == 1)
    {
        f.g_Panic_sense_F = 1;
        woke_from_gpio=0;
    }  
}

Parents
  • Hi,

     

    the RTC rolls over at 512 seconds (24^2 * 1/32768), but the kernel timer driver wraps around at half of it, to avoid a corner case:

    https://github.com/zephyrproject-rtos/zephyr/blob/main/drivers/timer/nrf_rtc_timer.c#L690-L694

    255 seconds = 4.25 minutes, which is similar to what you're observing.

     

    "WFI" waits for any interrupt and wakes up. In a RTOS, these can be internal to the OS, so I would recommend that you use k_cpu_idle() (https://docs.zephyrproject.org/latest/doxygen/html/group__cpu__idle__apis.html) instead.

     

    Kind regards,

    Håkon

  • Hello Hakon, 
    Thankyou for the response. 

    I tried to use k_cpu_idle() instead of WFI . But the same behaviour is seen.
    After 4.5 minutes the device woke up again just like WFI.

    I tried another configuration as well :
    in prj.conf file:


    CONFIG_TIMEOUT_64BIT=y
    CONFIG_SYS_CLOCK_TICKS_PER_SEC=1024

    Then, I tried to print the values of the ticks using this method, so i can spot the overflow at 4.5 minutes.

    But it seemed to work fine here.

    #define  SLEEP_TIME           K_SECONDS(300) // Define sleep time as 10 seconds
    #define  SLEEP_TIMER_START    k_timer_start(&my_timer, SLEEP_TIME, K_NO_WAIT)

     void handle_sleep(void)
     {
         uint64_t start_ticks = k_uptime_ticks();
         SLEEP_TIMER_START;

         while (1)
         {
             int64_t now = k_uptime_ticks();
             printk("Elapsed ticks = %lld\n", (now - start_ticks));
             printk("k_timer_remaining_get(&my_timer) = %u\r\n =========\r\n",k_timer_remaining_get(&my_timer));
             k_sleep(K_SECONDS(1));
         }
    }



    LOGS : 

    *** Booting Zephyr OS build v3.2.99-ncs2 ***
    ENTER MAIN function
    Elapsed ticks = 0
    k_timer_remaining_get(&my_timer) = 300000
    =========
    Elapsed ticks = 1026
    k_timer_remaining_get(&my_timer) = 298998
    =========
    Elapsed ticks = 2052
    k_timer_remaining_get(&my_timer) = 297996
    =========
    Elapsed ticks = 3078
    k_timer_remaining_get(&my_timer) = 296994
    =========
    Elapsed ticks = 4104
    k_timer_remaining_get(&my_timer) = 295992
    =========
    Elapsed ticks = 5130
    k_timer_remaining_get(&my_timer) = 294990
    =========
    Elapsed ticks = 6156
    k_timer_remaining_get(&my_timer) = 293988
    =========
    Elapsed ticks = 7182
    k_timer_remaining_get(&my_timer) = 292986
    =========
    Elapsed ticks = 8208
    k_timer_remaining_get(&my_timer) = 291984
    =========
    Elapsed ticks = 9234
    k_timer_remaining_get(&my_timer) = 290982
    =========
    Elapsed ticks = 10260
    k_timer_remaining_get(&my_timer) = 289980
    =========
    Elapsed ticks = 11286
    k_timer_remaining_get(&my_timer) = 288978
    =========
    Elapsed ticks = 12312
    k_timer_remaining_get(&my_timer) = 287976
    =========
    Elapsed ticks = 13338
    k_timer_remaining_get(&my_timer) = 286974
    =========
    Elapsed ticks = 14364
    k_timer_remaining_get(&my_timer) = 285972
    =========
    Elapsed ticks = 15390
    k_timer_remaining_get(&my_timer) = 284970
    =========
    Elapsed ticks = 16416
    k_timer_remaining_get(&my_timer) = 283968
    =========
    Elapsed ticks = 17442
    k_timer_remaining_get(&my_timer) = 282966
    =========
    Elapsed ticks = 18468
    k_timer_remaining_get(&my_timer) = 281964
    =========
    Elapsed ticks = 19494
    k_timer_remaining_get(&my_timer) = 280962
    =========
    Elapsed ticks = 20520
    k_timer_remaining_get(&my_timer) = 279960
    =========
    Elapsed ticks = 21546
    k_timer_remaining_get(&my_timer) = 278958
    =========
    Elapsed ticks = 22572
    k_timer_remaining_get(&my_timer) = 277957
    =========
    Elapsed ticks = 23598
    k_timer_remaining_get(&my_timer) = 276955
    =========
    Elapsed ticks = 24624
    k_timer_remaining_get(&my_timer) = 275953
    =========
    Elapsed ticks = 25650
    k_timer_remaining_get(&my_timer) = 274951
    =========
    Elapsed ticks = 26676
    k_timer_remaining_get(&my_timer) = 273949
    =========
    Elapsed ticks = 27702
    k_timer_remaining_get(&my_timer) = 272947
    =========
    Elapsed ticks = 28728
    k_timer_remaining_get(&my_timer) = 271945
    =========
    Elapsed ticks = 29754
    k_timer_remaining_get(&my_timer) = 270943
    =========
    Elapsed ticks = 30780
    k_timer_remaining_get(&my_timer) = 269941
    =========
    Elapsed ticks = 31806
    k_timer_remaining_get(&my_timer) = 268939
    =========
    Elapsed ticks = 32832
    k_timer_remaining_get(&my_timer) = 267937
    =========
    Elapsed ticks = 33858
    k_timer_remaining_get(&my_timer) = 266935
    =========
    Elapsed ticks = 34884
    k_timer_remaining_get(&my_timer) = 265933
    =========
    Elapsed ticks = 35910
    k_timer_remaining_get(&my_timer) = 264931
    =========
    Elapsed ticks = 36936
    k_timer_remaining_get(&my_timer) = 263929
    =========
    Elapsed ticks = 37962
    k_timer_remaining_get(&my_timer) = 262927
    =========
    Elapsed ticks = 38988
    k_timer_remaining_get(&my_timer) = 261925
    =========
    Elapsed ticks = 40014
    k_timer_remaining_get(&my_timer) = 260923
    =========
    Elapsed ticks = 41040
    k_timer_remaining_get(&my_timer) = 259921
    =========
    Elapsed ticks = 42066
    k_timer_remaining_get(&my_timer) = 258919
    =========
    Elapsed ticks = 43092
    k_timer_remaining_get(&my_timer) = 257917
    =========
    Elapsed ticks = 44118
    k_timer_remaining_get(&my_timer) = 256916
    =========
    Elapsed ticks = 45144
    k_timer_remaining_get(&my_timer) = 255914
    =========
    Elapsed ticks = 46170
    k_timer_remaining_get(&my_timer) = 254912
    =========
    Elapsed ticks = 47196
    k_timer_remaining_get(&my_timer) = 253910
    =========
    Elapsed ticks = 48222
    k_timer_remaining_get(&my_timer) = 252908
    =========
    Elapsed ticks = 49248
    k_timer_remaining_get(&my_timer) = 251906
    =========
    Elapsed ticks = 50274
    k_timer_remaining_get(&my_timer) = 250904
    =========
    Elapsed ticks = 51300
    k_timer_remaining_get(&my_timer) = 249902
    =========
    Elapsed ticks = 52326
    k_timer_remaining_get(&my_timer) = 248900
    =========
    Elapsed ticks = 53352
    k_timer_remaining_get(&my_timer) = 247898
    =========
    Elapsed ticks = 54378
    k_timer_remaining_get(&my_timer) = 246896
    =========
    Elapsed ticks = 55404
    k_timer_remaining_get(&my_timer) = 245894
    =========
    Elapsed ticks = 56430
    k_timer_remaining_get(&my_timer) = 244892
    =========
    Elapsed ticks = 57456
    k_timer_remaining_get(&my_timer) = 243890
    =========
    Elapsed ticks = 58482
    k_timer_remaining_get(&my_timer) = 242888
    =========
    Elapsed ticks = 59508
    k_timer_remaining_get(&my_timer) = 241886
    =========
    Elapsed ticks = 60534
    k_timer_remaining_get(&my_timer) = 240884
    =========
    Elapsed ticks = 61560
    k_timer_remaining_get(&my_timer) = 239882
    =========
    Elapsed ticks = 62586
    k_timer_remaining_get(&my_timer) = 238880
    =========
    Elapsed ticks = 63612
    k_timer_remaining_get(&my_timer) = 237878
    =========
    Elapsed ticks = 64638
    k_timer_remaining_get(&my_timer) = 236876
    =========
    Elapsed ticks = 65664
    k_timer_remaining_get(&my_timer) = 235875
    =========
    Elapsed ticks = 66690
    k_timer_remaining_get(&my_timer) = 234873
    =========
    Elapsed ticks = 67716
    k_timer_remaining_get(&my_timer) = 233871
    =========
    Elapsed ticks = 68742
    k_timer_remaining_get(&my_timer) = 232869
    =========
    Elapsed ticks = 69768
    k_timer_remaining_get(&my_timer) = 231867
    =========
    Elapsed ticks = 70794
    k_timer_remaining_get(&my_timer) = 230865
    =========
    Elapsed ticks = 71820
    k_timer_remaining_get(&my_timer) = 229863
    =========
    Elapsed ticks = 72846
    k_timer_remaining_get(&my_timer) = 228861
    =========
    Elapsed ticks = 73872
    k_timer_remaining_get(&my_timer) = 227859
    =========
    Elapsed ticks = 74898
    k_timer_remaining_get(&my_timer) = 226857
    =========
    Elapsed ticks = 75924
    k_timer_remaining_get(&my_timer) = 225855
    =========
    Elapsed ticks = 76950
    k_timer_remaining_get(&my_timer) = 224853
    =========
    Elapsed ticks = 77976
    k_timer_remaining_get(&my_timer) = 223851
    =========
    Elapsed ticks = 79002
    k_timer_remaining_get(&my_timer) = 222849
    =========
    Elapsed ticks = 80028
    k_timer_remaining_get(&my_timer) = 221847
    =========
    Elapsed ticks = 81054
    k_timer_remaining_get(&my_timer) = 220845
    =========
    Elapsed ticks = 82080
    k_timer_remaining_get(&my_timer) = 219843
    =========
    Elapsed ticks = 83106
    k_timer_remaining_get(&my_timer) = 218841
    =========
    Elapsed ticks = 84132
    k_timer_remaining_get(&my_timer) = 217839
    =========
    Elapsed ticks = 85158
    k_timer_remaining_get(&my_timer) = 216837
    =========
    Elapsed ticks = 86184
    k_timer_remaining_get(&my_timer) = 215835
    =========
    Elapsed ticks = 87210
    k_timer_remaining_get(&my_timer) = 214833
    =========
    Elapsed ticks = 88236
    k_timer_remaining_get(&my_timer) = 213832
    =========
    Elapsed ticks = 89262
    k_timer_remaining_get(&my_timer) = 212830
    =========
    Elapsed ticks = 90288
    k_timer_remaining_get(&my_timer) = 211828
    =========
    Elapsed ticks = 91314
    k_timer_remaining_get(&my_timer) = 210826
    =========
    Elapsed ticks = 92340
    k_timer_remaining_get(&my_timer) = 209824
    =========
    Elapsed ticks = 93366
    k_timer_remaining_get(&my_timer) = 208822
    =========
    Elapsed ticks = 94392
    k_timer_remaining_get(&my_timer) = 207820
    =========
    Elapsed ticks = 95418
    k_timer_remaining_get(&my_timer) = 206818
    =========
    Elapsed ticks = 96444
    k_timer_remaining_get(&my_timer) = 205816
    =========
    Elapsed ticks = 97470
    k_timer_remaining_get(&my_timer) = 204814
    =========
    Elapsed ticks = 98496
    k_timer_remaining_get(&my_timer) = 203812
    =========
    Elapsed ticks = 99522
    k_timer_remaining_get(&my_timer) = 202810
    =========
    Elapsed ticks = 100548
    k_timer_remaining_get(&my_timer) = 201808
    =========
    Elapsed ticks = 101574
    k_timer_remaining_get(&my_timer) = 200806
    =========
    Elapsed ticks = 102600
    k_timer_remaining_get(&my_timer) = 199804
    =========
    Elapsed ticks = 103626
    k_timer_remaining_get(&my_timer) = 198802
    =========
    Elapsed ticks = 104652
    k_timer_remaining_get(&my_timer) = 197800
    =========
    Elapsed ticks = 105678
    k_timer_remaining_get(&my_timer) = 196798
    =========
    Elapsed ticks = 106704
    k_timer_remaining_get(&my_timer) = 195796
    =========
    Elapsed ticks = 107730
    k_timer_remaining_get(&my_timer) = 194794
    =========
    Elapsed ticks = 108756
    k_timer_remaining_get(&my_timer) = 193792
    =========
    Elapsed ticks = 109782
    k_timer_remaining_get(&my_timer) = 192791
    =========
    Elapsed ticks = 110808
    k_timer_remaining_get(&my_timer) = 191789
    =========
    Elapsed ticks = 111834
    k_timer_remaining_get(&my_timer) = 190787
    =========
    Elapsed ticks = 112860
    k_timer_remaining_get(&my_timer) = 189785
    =========
    Elapsed ticks = 113886
    k_timer_remaining_get(&my_timer) = 188783
    =========
    Elapsed ticks = 114912
    k_timer_remaining_get(&my_timer) = 187781
    =========
    Elapsed ticks = 115938
    k_timer_remaining_get(&my_timer) = 186779
    =========
    Elapsed ticks = 116964
    k_timer_remaining_get(&my_timer) = 185777
    =========
    Elapsed ticks = 117990
    k_timer_remaining_get(&my_timer) = 184775
    =========
    Elapsed ticks = 119016
    k_timer_remaining_get(&my_timer) = 183773
    =========
    Elapsed ticks = 120042
    k_timer_remaining_get(&my_timer) = 182771
    =========
    Elapsed ticks = 121068
    k_timer_remaining_get(&my_timer) = 181769
    =========
    Elapsed ticks = 122094
    k_timer_remaining_get(&my_timer) = 180767
    =========
    Elapsed ticks = 123120
    k_timer_remaining_get(&my_timer) = 179765
    =========
    Elapsed ticks = 124146
    k_timer_remaining_get(&my_timer) = 178763
    =========
    Elapsed ticks = 125172
    k_timer_remaining_get(&my_timer) = 177761
    =========
    Elapsed ticks = 126198
    k_timer_remaining_get(&my_timer) = 176759
    =========
    Elapsed ticks = 127224
    k_timer_remaining_get(&my_timer) = 175757
    =========
    Elapsed ticks = 128250
    k_timer_remaining_get(&my_timer) = 174755
    =========
    Elapsed ticks = 129276
    k_timer_remaining_get(&my_timer) = 173753
    =========
    Elapsed ticks = 130302
    k_timer_remaining_get(&my_timer) = 172751
    =========
    Elapsed ticks = 131328
    k_timer_remaining_get(&my_timer) = 171750
    =========
    Elapsed ticks = 132354
    k_timer_remaining_get(&my_timer) = 170748
    =========
    Elapsed ticks = 133380
    k_timer_remaining_get(&my_timer) = 169746
    =========
    Elapsed ticks = 134406
    k_timer_remaining_get(&my_timer) = 168744
    =========
    Elapsed ticks = 135432
    k_timer_remaining_get(&my_timer) = 167742
    =========
    Elapsed ticks = 136458
    k_timer_remaining_get(&my_timer) = 166740
    =========
    Elapsed ticks = 137484
    k_timer_remaining_get(&my_timer) = 165738
    =========
    Elapsed ticks = 138510
    k_timer_remaining_get(&my_timer) = 164736
    =========
    Elapsed ticks = 139536
    k_timer_remaining_get(&my_timer) = 163734
    =========
    Elapsed ticks = 140562
    k_timer_remaining_get(&my_timer) = 162732
    =========
    Elapsed ticks = 141588
    k_timer_remaining_get(&my_timer) = 161730
    =========
    Elapsed ticks = 142614
    k_timer_remaining_get(&my_timer) = 160728
    =========
    Elapsed ticks = 143640
    k_timer_remaining_get(&my_timer) = 159726
    =========
    Elapsed ticks = 144666
    k_timer_remaining_get(&my_timer) = 158724
    =========
    Elapsed ticks = 145692
    k_timer_remaining_get(&my_timer) = 157722
    =========
    Elapsed ticks = 146718
    k_timer_remaining_get(&my_timer) = 156720
    =========
    Elapsed ticks = 147744
    k_timer_remaining_get(&my_timer) = 155718
    =========
    Elapsed ticks = 148770
    k_timer_remaining_get(&my_timer) = 154716
    =========
    Elapsed ticks = 149796
    k_timer_remaining_get(&my_timer) = 153714
    =========
    Elapsed ticks = 150822
    k_timer_remaining_get(&my_timer) = 152712
    =========
    Elapsed ticks = 151848
    k_timer_remaining_get(&my_timer) = 151710
    =========
    Elapsed ticks = 152874
    k_timer_remaining_get(&my_timer) = 150708
    =========
    Elapsed ticks = 153900
    k_timer_remaining_get(&my_timer) = 149707
    =========
    Elapsed ticks = 154926
    k_timer_remaining_get(&my_timer) = 148705
    =========
    Elapsed ticks = 155952
    k_timer_remaining_get(&my_timer) = 147703
    =========
    Elapsed ticks = 156978
    k_timer_remaining_get(&my_timer) = 146701
    =========
    Elapsed ticks = 158004
    k_timer_remaining_get(&my_timer) = 145699
    =========
    Elapsed ticks = 159030
    k_timer_remaining_get(&my_timer) = 144697
    =========
    Elapsed ticks = 160056
    k_timer_remaining_get(&my_timer) = 143695
    =========
    Elapsed ticks = 161082
    k_timer_remaining_get(&my_timer) = 142693
    =========
    Elapsed ticks = 162108
    k_timer_remaining_get(&my_timer) = 141691
    =========
    Elapsed ticks = 163134
    k_timer_remaining_get(&my_timer) = 140689
    =========
    Elapsed ticks = 164160
    k_timer_remaining_get(&my_timer) = 139687
    =========
    Elapsed ticks = 165186
    k_timer_remaining_get(&my_timer) = 138685
    =========
    Elapsed ticks = 166212
    k_timer_remaining_get(&my_timer) = 137683
    =========
    Elapsed ticks = 167238
    k_timer_remaining_get(&my_timer) = 136681
    =========
    Elapsed ticks = 168264
    k_timer_remaining_get(&my_timer) = 135679
    =========
    Elapsed ticks = 169290
    k_timer_remaining_get(&my_timer) = 134677
    =========
    Elapsed ticks = 170316
    k_timer_remaining_get(&my_timer) = 133675
    =========
    Elapsed ticks = 171342
    k_timer_remaining_get(&my_timer) = 132673
    =========
    Elapsed ticks = 172368
    k_timer_remaining_get(&my_timer) = 131671
    =========
    Elapsed ticks = 173394
    k_timer_remaining_get(&my_timer) = 130669
    =========
    Elapsed ticks = 174420
    k_timer_remaining_get(&my_timer) = 129667
    =========
    Elapsed ticks = 175446
    k_timer_remaining_get(&my_timer) = 128666
    =========
    Elapsed ticks = 176472
    k_timer_remaining_get(&my_timer) = 127664
    =========
    Elapsed ticks = 177498
    k_timer_remaining_get(&my_timer) = 126662
    =========
    Elapsed ticks = 178524
    k_timer_remaining_get(&my_timer) = 125660
    =========
    Elapsed ticks = 179550
    k_timer_remaining_get(&my_timer) = 124658
    =========
    Elapsed ticks = 180576
    k_timer_remaining_get(&my_timer) = 123656
    =========
    Elapsed ticks = 181602
    k_timer_remaining_get(&my_timer) = 122654
    =========
    Elapsed ticks = 182628
    k_timer_remaining_get(&my_timer) = 121652
    =========
    Elapsed ticks = 183654
    k_timer_remaining_get(&my_timer) = 120650
    =========
    Elapsed ticks = 184680
    k_timer_remaining_get(&my_timer) = 119648
    =========
    Elapsed ticks = 185706
    k_timer_remaining_get(&my_timer) = 118646
    =========
    Elapsed ticks = 186732
    k_timer_remaining_get(&my_timer) = 117644
    =========
    Elapsed ticks = 187758
    k_timer_remaining_get(&my_timer) = 116642
    =========
    Elapsed ticks = 188784
    k_timer_remaining_get(&my_timer) = 115640
    =========
    Elapsed ticks = 189810
    k_timer_remaining_get(&my_timer) = 114638
    =========
    Elapsed ticks = 190836
    k_timer_remaining_get(&my_timer) = 113636
    =========
    Elapsed ticks = 191862
    k_timer_remaining_get(&my_timer) = 112634
    =========
    Elapsed ticks = 192888
    k_timer_remaining_get(&my_timer) = 111632
    =========
    Elapsed ticks = 193914
    k_timer_remaining_get(&my_timer) = 110630
    =========
    Elapsed ticks = 194940
    k_timer_remaining_get(&my_timer) = 109628
    =========
    Elapsed ticks = 195966
    k_timer_remaining_get(&my_timer) = 108626
    =========
    Elapsed ticks = 196992
    k_timer_remaining_get(&my_timer) = 107625
    =========
    Elapsed ticks = 198018
    k_timer_remaining_get(&my_timer) = 106623
    =========
    Elapsed ticks = 199044
    k_timer_remaining_get(&my_timer) = 105621
    =========
    Elapsed ticks = 200070
    k_timer_remaining_get(&my_timer) = 104619
    =========
    Elapsed ticks = 201096
    k_timer_remaining_get(&my_timer) = 103617
    =========
    Elapsed ticks = 202122
    k_timer_remaining_get(&my_timer) = 102615
    =========
    Elapsed ticks = 203148
    k_timer_remaining_get(&my_timer) = 101613
    =========
    Elapsed ticks = 204174
    k_timer_remaining_get(&my_timer) = 100611
    =========
    Elapsed ticks = 205200
    k_timer_remaining_get(&my_timer) = 99609
    =========
    Elapsed ticks = 206226
    k_timer_remaining_get(&my_timer) = 98607
    =========
    Elapsed ticks = 207252
    k_timer_remaining_get(&my_timer) = 97605
    =========
    Elapsed ticks = 208278
    k_timer_remaining_get(&my_timer) = 96603
    =========
    Elapsed ticks = 209304
    k_timer_remaining_get(&my_timer) = 95601
    =========
    Elapsed ticks = 210330
    k_timer_remaining_get(&my_timer) = 94599
    =========
    Elapsed ticks = 211356
    k_timer_remaining_get(&my_timer) = 93597
    =========
    Elapsed ticks = 212382
    k_timer_remaining_get(&my_timer) = 92595
    =========
    Elapsed ticks = 213408
    k_timer_remaining_get(&my_timer) = 91593
    =========
    Elapsed ticks = 214434
    k_timer_remaining_get(&my_timer) = 90591
    =========
    Elapsed ticks = 215460
    k_timer_remaining_get(&my_timer) = 89589
    =========
    Elapsed ticks = 216486
    k_timer_remaining_get(&my_timer) = 88587
    =========
    Elapsed ticks = 217512
    k_timer_remaining_get(&my_timer) = 87585
    =========
    Elapsed ticks = 218538
    k_timer_remaining_get(&my_timer) = 86583
    =========
    Elapsed ticks = 219564
    k_timer_remaining_get(&my_timer) = 85582
    =========
    Elapsed ticks = 220590
    k_timer_remaining_get(&my_timer) = 84580
    =========
    Elapsed ticks = 221616
    k_timer_remaining_get(&my_timer) = 83578
    =========
    Elapsed ticks = 222642
    k_timer_remaining_get(&my_timer) = 82576
    =========
    Elapsed ticks = 223668
    k_timer_remaining_get(&my_timer) = 81574
    =========
    Elapsed ticks = 224694
    k_timer_remaining_get(&my_timer) = 80572
    =========
    Elapsed ticks = 225720
    k_timer_remaining_get(&my_timer) = 79570
    =========
    Elapsed ticks = 226746
    k_timer_remaining_get(&my_timer) = 78568
    =========
    Elapsed ticks = 227772
    k_timer_remaining_get(&my_timer) = 77566
    =========
    Elapsed ticks = 228798
    k_timer_remaining_get(&my_timer) = 76564
    =========
    Elapsed ticks = 229824
    k_timer_remaining_get(&my_timer) = 75562
    =========
    Elapsed ticks = 230850
    k_timer_remaining_get(&my_timer) = 74560
    =========
    Elapsed ticks = 231876
    k_timer_remaining_get(&my_timer) = 73558
    =========
    Elapsed ticks = 232902
    k_timer_remaining_get(&my_timer) = 72556
    =========
    Elapsed ticks = 233928
    k_timer_remaining_get(&my_timer) = 71554
    =========
    Elapsed ticks = 234954
    k_timer_remaining_get(&my_timer) = 70552
    =========
    Elapsed ticks = 235980
    k_timer_remaining_get(&my_timer) = 69550
    =========
    Elapsed ticks = 237006
    k_timer_remaining_get(&my_timer) = 68548
    =========
    Elapsed ticks = 238032
    k_timer_remaining_get(&my_timer) = 67546
    =========
    Elapsed ticks = 239058
    k_timer_remaining_get(&my_timer) = 66544
    =========
    Elapsed ticks = 240084
    k_timer_remaining_get(&my_timer) = 65542
    =========
    Elapsed ticks = 241110
    k_timer_remaining_get(&my_timer) = 64541
    =========
    Elapsed ticks = 242136
    k_timer_remaining_get(&my_timer) = 63539
    =========
    Elapsed ticks = 243162
    k_timer_remaining_get(&my_timer) = 62537
    =========
    Elapsed ticks = 244188
    k_timer_remaining_get(&my_timer) = 61535
    =========
    Elapsed ticks = 245214
    k_timer_remaining_get(&my_timer) = 60533
    =========
    Elapsed ticks = 246240
    k_timer_remaining_get(&my_timer) = 59531
    =========
    Elapsed ticks = 247266
    k_timer_remaining_get(&my_timer) = 58529
    =========
    Elapsed ticks = 248292
    k_timer_remaining_get(&my_timer) = 57527
    =========
    Elapsed ticks = 249318
    k_timer_remaining_get(&my_timer) = 56525
    =========
    Elapsed ticks = 250344
    k_timer_remaining_get(&my_timer) = 55523
    =========
    Elapsed ticks = 251370
    k_timer_remaining_get(&my_timer) = 54521
    =========
    Elapsed ticks = 252396
    k_timer_remaining_get(&my_timer) = 53519
    =========
    Elapsed ticks = 253422
    k_timer_remaining_get(&my_timer) = 52517
    =========
    Elapsed ticks = 254448
    k_timer_remaining_get(&my_timer) = 51515
    =========
    Elapsed ticks = 255474
    k_timer_remaining_get(&my_timer) = 50513
    =========
    Elapsed ticks = 256500
    k_timer_remaining_get(&my_timer) = 49511
    =========
    Elapsed ticks = 257526
    k_timer_remaining_get(&my_timer) = 48509
    =========
    Elapsed ticks = 258552
    k_timer_remaining_get(&my_timer) = 47507
    =========
    Elapsed ticks = 259578
    k_timer_remaining_get(&my_timer) = 46505
    =========
    Elapsed ticks = 260604
    k_timer_remaining_get(&my_timer) = 45503
    =========
    Elapsed ticks = 261630
    k_timer_remaining_get(&my_timer) = 44501
    =========
    Elapsed ticks = 262656
    k_timer_remaining_get(&my_timer) = 43500
    =========
    Elapsed ticks = 263682
    k_timer_remaining_get(&my_timer) = 42498
    =========
    Elapsed ticks = 264708
    k_timer_remaining_get(&my_timer) = 41496
    =========
    Elapsed ticks = 265734
    k_timer_remaining_get(&my_timer) = 40494
    =========
    Elapsed ticks = 266760
    k_timer_remaining_get(&my_timer) = 39492
    =========
    Elapsed ticks = 267786
    k_timer_remaining_get(&my_timer) = 38490
    =========
    Elapsed ticks = 268812
    k_timer_remaining_get(&my_timer) = 37488
    =========
    Elapsed ticks = 269838
    k_timer_remaining_get(&my_timer) = 36486
    =========
    Elapsed ticks = 270864
    k_timer_remaining_get(&my_timer) = 35484
    =========
    Elapsed ticks = 271890
    k_timer_remaining_get(&my_timer) = 34482
    =========
    Elapsed ticks = 272916
    k_timer_remaining_get(&my_timer) = 33480
    =========
    Elapsed ticks = 273942
    k_timer_remaining_get(&my_timer) = 32478
    =========
    Elapsed ticks = 274968
    k_timer_remaining_get(&my_timer) = 31476
    =========
    Elapsed ticks = 275994
    k_timer_remaining_get(&my_timer) = 30474
    =========
    Elapsed ticks = 277020
    k_timer_remaining_get(&my_timer) = 29472
    =========
    Elapsed ticks = 278046
    k_timer_remaining_get(&my_timer) = 28470
    =========
    Elapsed ticks = 279072
    k_timer_remaining_get(&my_timer) = 27468
    =========
    Elapsed ticks = 280098
    k_timer_remaining_get(&my_timer) = 26466
    =========
    Elapsed ticks = 281124
    k_timer_remaining_get(&my_timer) = 25464
    =========
    Elapsed ticks = 282150
    k_timer_remaining_get(&my_timer) = 24462
    =========
    Elapsed ticks = 283176
    k_timer_remaining_get(&my_timer) = 23460
    =========
    Elapsed ticks = 284202
    k_timer_remaining_get(&my_timer) = 22458
    =========
    Elapsed ticks = 285228
    k_timer_remaining_get(&my_timer) = 21457
    =========
    Elapsed ticks = 286254
    k_timer_remaining_get(&my_timer) = 20455
    =========
    Elapsed ticks = 287280
    k_timer_remaining_get(&my_timer) = 19453
    =========
    Elapsed ticks = 288306
    k_timer_remaining_get(&my_timer) = 18451
    =========
    Elapsed ticks = 289332
    k_timer_remaining_get(&my_timer) = 17449
    =========
    Elapsed ticks = 290358
    k_timer_remaining_get(&my_timer) = 16447
    =========
    Elapsed ticks = 291384
    k_timer_remaining_get(&my_timer) = 15445
    =========
    Elapsed ticks = 292410
    k_timer_remaining_get(&my_timer) = 14443
    =========
    Elapsed ticks = 293436
    k_timer_remaining_get(&my_timer) = 13441
    =========
    Elapsed ticks = 294462
    k_timer_remaining_get(&my_timer) = 12439
    =========
    Elapsed ticks = 295488
    k_timer_remaining_get(&my_timer) = 11437
    =========
    Elapsed ticks = 296514
    k_timer_remaining_get(&my_timer) = 10435
    =========
    Elapsed ticks = 297540
    k_timer_remaining_get(&my_timer) = 9433
    =========
    Elapsed ticks = 298566
    k_timer_remaining_get(&my_timer) = 8431
    =========
    Elapsed ticks = 299592
    k_timer_remaining_get(&my_timer) = 7429
    =========
    Elapsed ticks = 300618
    k_timer_remaining_get(&my_timer) = 6427
    =========
    Elapsed ticks = 301644
    k_timer_remaining_get(&my_timer) = 5425
    =========
    Elapsed ticks = 302670
    k_timer_remaining_get(&my_timer) = 4423
    =========
    Elapsed ticks = 303696
    k_timer_remaining_get(&my_timer) = 3421
    =========
    Elapsed ticks = 304722
    k_timer_remaining_get(&my_timer) = 2419
    =========
    Elapsed ticks = 305748
    k_timer_remaining_get(&my_timer) = 1417
    =========
    Elapsed ticks = 306774
    k_timer_remaining_get(&my_timer) = 416
    =========
    Elapsed ticks = 307799
    k_timer_remaining_get(&my_timer) = 0
    =========
    Elapsed ticks = 308825
    k_timer_remaining_get(&my_timer) = 0
    =========



    Also please let me know if there is a way to know what interrupt was received from WFI.

  • Hi,

     

    Dinna said:
    Also please let me know if there is a way to know what interrupt was received from WFI.

    There is no specific register to read. You need to check if your wanted condition (ie. your interrupt) has occurred.

    Dinna said:

    Then, I tried to print the values of the ticks using this method, so i can spot the overflow at 4.5 minutes.

    But it seemed to work fine here.

    The driver handles the overflow, but the nRF will generate a wake up condition.

     

    k_cpu_idle is a wrapper for __WFI(), while k_sleep() is a sleep function with a specific timeout parameter.

     

    Kind regards,

    Håkon

Reply
  • Hi,

     

    Dinna said:
    Also please let me know if there is a way to know what interrupt was received from WFI.

    There is no specific register to read. You need to check if your wanted condition (ie. your interrupt) has occurred.

    Dinna said:

    Then, I tried to print the values of the ticks using this method, so i can spot the overflow at 4.5 minutes.

    But it seemed to work fine here.

    The driver handles the overflow, but the nRF will generate a wake up condition.

     

    k_cpu_idle is a wrapper for __WFI(), while k_sleep() is a sleep function with a specific timeout parameter.

     

    Kind regards,

    Håkon

Children
Related