<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FreeRTOS time inaccuracy. Drift when compared to RTC</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/83934/freertos-time-inaccuracy-drift-when-compared-to-rtc</link><description>Hi, I am using FreeRTOS on the RTC and my FreeRTOS timers are called after the correct number of ticks, but the time between the ticks doesn&amp;#39;t seem to correspond to reality. 
 For debugging purposes I am comparing the RTC2 to count the seconds, which</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 25 Jan 2022 09:13:19 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/83934/freertos-time-inaccuracy-drift-when-compared-to-rtc" /><item><title>RE: FreeRTOS time inaccuracy. Drift when compared to RTC</title><link>https://devzone.nordicsemi.com/thread/349460?ContentTypeID=1</link><pubDate>Tue, 25 Jan 2022 09:13:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:14b1b973-e7ae-4c1c-9b7b-7be431c8dd22</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The problem lies here&lt;/p&gt;
&lt;p&gt;#define configTICK_RATE_HZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1000&lt;/p&gt;
&lt;p&gt;This tick rate is impossible to realize with the RTC which is working on a 32768 Hz clock. There is no correct prescalar in the RTC registers which you can set to get exactly 1000 ticks per seconds. You should set this to 1024 as below so that&lt;/p&gt;
&lt;p&gt;&lt;span&gt;#define configTICK_RATE_HZ&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1024&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;And you cannot get exactly 1ms tick with RTC, you get 0.976ms instead.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If you want better accuracy then you need to use system clock which is more accurate but uses higher power consumption.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: FreeRTOS time inaccuracy. Drift when compared to RTC</title><link>https://devzone.nordicsemi.com/thread/349348?ContentTypeID=1</link><pubDate>Mon, 24 Jan 2022 16:22:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ba9662ba-ac1e-470b-8b86-8e2615b330bf</guid><dc:creator>xgroleau</dc:creator><description>&lt;p&gt;Hi Jonathan,&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve updated the timer callback a bit to get more information.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;The RTC1 is the one used by FreeRTOS and the RTC2 is the one I&amp;#39;ve created manually. The RTC2 is on time even after an hour of runtime, while the RTC1, and thus FreeRTOS, is lagging a little bit behind.&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;extern uint64_t gs_time_counter;
void test_timer(){
    LOG_INFO(&amp;quot;RTOS: %d, RTC1: %d, RTC2: %d&amp;quot;, xTaskGetTickCount(), NRF_RTC1-&amp;gt;COUNTER, NRF_RTC2-&amp;gt;COUNTER);
}
void timers_init(void)
{
      TimerHandle_t m_timer = xTimerCreate(&amp;quot;test&amp;quot;,
                                     HEART_RATE_MEAS_INTERVAL,
                                     pdTRUE,
                                     NULL,
                                     test_timer);
    xTimerStart(m_timer, OSTIMER_WAIT_FOR_QUEUE);
    // Rest of code
    
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Here is the output&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;info&amp;gt; app: RTOS: 11000, RTC1: 11000, RTC2: 110
&amp;lt;info&amp;gt; app: RTOS: 12000, RTC1: 12000, RTC2: 120
&amp;lt;info&amp;gt; app: RTOS: 13000, RTC1: 13000, RTC2: 130
&amp;lt;info&amp;gt; app: RTOS: 14000, RTC1: 14000, RTC2: 141
&amp;lt;info&amp;gt; app: RTOS: 15000, RTC1: 15000, RTC2: 151
&amp;lt;info&amp;gt; app: RTOS: 16000, RTC1: 16000, RTC2: 161
&amp;lt;info&amp;gt; app: RTOS: 17000, RTC1: 17000, RTC2: 171
&amp;lt;info&amp;gt; app: RTOS: 18000, RTC1: 18000, RTC2: 181
&amp;lt;info&amp;gt; app: RTOS: 19000, RTC1: 19000, RTC2: 191
&amp;lt;info&amp;gt; app: RTOS: 20000, RTC1: 20000, RTC2: 201
&amp;lt;info&amp;gt; app: RTOS: 21000, RTC1: 21000, RTC2: 211
&amp;lt;info&amp;gt; app: RTOS: 22000, RTC1: 22000, RTC2: 221
&amp;lt;info&amp;gt; app: RTOS: 23000, RTC1: 23000, RTC2: 231
&amp;lt;info&amp;gt; app: RTOS: 24000, RTC1: 24000, RTC2: 241
&amp;lt;info&amp;gt; app: RTOS: 25001, RTC1: 25001, RTC2: 251
&amp;lt;info&amp;gt; app: RTOS: 26000, RTC1: 26000, RTC2: 261
&amp;lt;info&amp;gt; app: RTOS: 27000, RTC1: 27000, RTC2: 271
&amp;lt;info&amp;gt; app: RTOS: 28000, RTC1: 28000, RTC2: 281
&amp;lt;info&amp;gt; app: RTOS: 29000, RTC1: 29000, RTC2: 292
&amp;lt;info&amp;gt; app: RTOS: 30000, RTC1: 30000, RTC2: 302
&amp;lt;info&amp;gt; app: RTOS: 31000, RTC1: 31000, RTC2: 312
&amp;lt;info&amp;gt; app: RTOS: 32000, RTC1: 32000, RTC2: 322
&amp;lt;info&amp;gt; app: RTOS: 33000, RTC1: 33000, RTC2: 332
&amp;lt;info&amp;gt; app: RTOS: 34000, RTC1: 34000, RTC2: 342
&amp;lt;info&amp;gt; app: RTOS: 35000, RTC1: 35000, RTC2: 352
&amp;lt;info&amp;gt; app: RTOS: 36000, RTC1: 36000, RTC2: 362
&amp;lt;info&amp;gt; app: RTOS: 37000, RTC1: 37000, RTC2: 372
&amp;lt;info&amp;gt; app: RTOS: 38000, RTC1: 38000, RTC2: 382
&amp;lt;info&amp;gt; app: RTOS: 39000, RTC1: 39000, RTC2: 392
&amp;lt;info&amp;gt; app: RTOS: 40001, RTC1: 40001, RTC2: 402
&amp;lt;info&amp;gt; app: RTOS: 41001, RTC1: 41001, RTC2: 412
&amp;lt;info&amp;gt; app: RTOS: 42000, RTC1: 42000, RTC2: 422
&amp;lt;info&amp;gt; app: RTOS: 43001, RTC1: 43001, RTC2: 433
&amp;lt;info&amp;gt; app: RTOS: 44000, RTC1: 44000, RTC2: 443
&amp;lt;info&amp;gt; app: RTOS: 45000, RTC1: 45000, RTC2: 453
&amp;lt;info&amp;gt; app: RTOS: 46000, RTC1: 46000, RTC2: 463
&amp;lt;info&amp;gt; app: RTOS: 47000, RTC1: 47000, RTC2: 473
&amp;lt;info&amp;gt; app: RTOS: 48000, RTC1: 48000, RTC2: 483
&amp;lt;info&amp;gt; app: RTOS: 49000, RTC1: 49000, RTC2: 493
&amp;lt;info&amp;gt; app: RTOS: 50000, RTC1: 50000, RTC2: 503
&amp;lt;info&amp;gt; app: RTOS: 51000, RTC1: 51000, RTC2: 513
&amp;lt;info&amp;gt; app: RTOS: 52000, RTC1: 52000, RTC2: 523
&amp;lt;info&amp;gt; app: RTOS: 53000, RTC1: 53000, RTC2: 533
&amp;lt;info&amp;gt; app: RTOS: 54000, RTC1: 54000, RTC2: 543
&amp;lt;info&amp;gt; app: RTOS: 55001, RTC1: 55001, RTC2: 553
&amp;lt;info&amp;gt; app: RTOS: 56000, RTC1: 56000, RTC2: 563
&amp;lt;info&amp;gt; app: RTOS: 57000, RTC1: 57000, RTC2: 574
&amp;lt;info&amp;gt; app: RTOS: 58000, RTC1: 58000, RTC2: 584
&amp;lt;info&amp;gt; app: RTOS: 59000, RTC1: 59000, RTC2: 594
&amp;lt;info&amp;gt; app: RTOS: 60000, RTC1: 60000, RTC2: 604
&amp;lt;info&amp;gt; app: RTOS: 61000, RTC1: 61000, RTC2: 614
&amp;lt;info&amp;gt; app: RTOS: 62000, RTC1: 62000, RTC2: 624
&amp;lt;info&amp;gt; app: RTOS: 63000, RTC1: 63000, RTC2: 634
&amp;lt;info&amp;gt; app: RTOS: 64000, RTC1: 64000, RTC2: 644
&amp;lt;info&amp;gt; app: RTOS: 65000, RTC1: 65000, RTC2: 654
&amp;lt;info&amp;gt; app: RTOS: 66000, RTC1: 66000, RTC2: 664
&amp;lt;info&amp;gt; app: RTOS: 67000, RTC1: 67000, RTC2: 674
&amp;lt;info&amp;gt; app: RTOS: 68000, RTC1: 68000, RTC2: 684
&amp;lt;info&amp;gt; app: RTOS: 69000, RTC1: 69000, RTC2: 694
&amp;lt;info&amp;gt; app: RTOS: 70000, RTC1: 70000, RTC2: 704
&amp;lt;info&amp;gt; app: RTOS: 71000, RTC1: 71000, RTC2: 715
&amp;lt;info&amp;gt; app: RTOS: 72000, RTC1: 72000, RTC2: 725
&amp;lt;info&amp;gt; app: RTOS: 73000, RTC1: 73000, RTC2: 735
&amp;lt;info&amp;gt; app: RTOS: 74000, RTC1: 74000, RTC2: 745
&amp;lt;info&amp;gt; app: RTOS: 75000, RTC1: 75000, RTC2: 755
&amp;lt;info&amp;gt; app: RTOS: 76000, RTC1: 76000, RTC2: 765
&amp;lt;info&amp;gt; app: RTOS: 77000, RTC1: 77000, RTC2: 775
&amp;lt;info&amp;gt; app: RTOS: 78000, RTC1: 78000, RTC2: 785
&amp;lt;info&amp;gt; app: RTOS: 79000, RTC1: 79000, RTC2: 795
&amp;lt;info&amp;gt; app: RTOS: 80000, RTC1: 80000, RTC2: 805
&amp;lt;info&amp;gt; app: RTOS: 81000, RTC1: 81000, RTC2: 815
&amp;lt;info&amp;gt; app: RTOS: 82000, RTC1: 82000, RTC2: 825
&amp;lt;info&amp;gt; app: RTOS: 83000, RTC1: 83000, RTC2: 835
&amp;lt;info&amp;gt; app: RTOS: 84000, RTC1: 84000, RTC2: 845
&amp;lt;info&amp;gt; app: RTOS: 85000, RTC1: 85000, RTC2: 855
&amp;lt;info&amp;gt; app: RTOS: 86000, RTC1: 86000, RTC2: 866
&amp;lt;info&amp;gt; app: RTOS: 87000, RTC1: 87000, RTC2: 876
&amp;lt;info&amp;gt; app: RTOS: 88000, RTC1: 88000, RTC2: 886
&amp;lt;info&amp;gt; app: RTOS: 89000, RTC1: 89000, RTC2: 896
&amp;lt;info&amp;gt; app: RTOS: 90000, RTC1: 90000, RTC2: 906
&amp;lt;info&amp;gt; app: RTOS: 91000, RTC1: 91000, RTC2: 916
&amp;lt;info&amp;gt; app: RTOS: 92000, RTC1: 92000, RTC2: 926
&amp;lt;info&amp;gt; app: RTOS: 93000, RTC1: 93000, RTC2: 936
&amp;lt;info&amp;gt; app: RTOS: 94000, RTC1: 94000, RTC2: 946
&amp;lt;info&amp;gt; app: RTOS: 95000, RTC1: 95000, RTC2: 956
&amp;lt;info&amp;gt; app: RTOS: 96000, RTC1: 96000, RTC2: 966
&amp;lt;info&amp;gt; app: RTOS: 97001, RTC1: 97001, RTC2: 976
&amp;lt;info&amp;gt; app: RTOS: 98000, RTC1: 98000, RTC2: 986
&amp;lt;info&amp;gt; app: RTOS: 99000, RTC1: 99000, RTC2: 996
&amp;lt;info&amp;gt; app: RTOS: 100000, RTC1: 100000, RTC2: 1007
&amp;lt;info&amp;gt; app: RTOS: 101000, RTC1: 101000, RTC2: 1017
&amp;lt;info&amp;gt; app: RTOS: 102000, RTC1: 102000, RTC2: 1027
&amp;lt;info&amp;gt; app: RTOS: 103000, RTC1: 103000, RTC2: 1037
&amp;lt;info&amp;gt; app: RTOS: 104000, RTC1: 104000, RTC2: 1047
&amp;lt;info&amp;gt; app: RTOS: 105000, RTC1: 105000, RTC2: 1057
&amp;lt;info&amp;gt; app: RTOS: 106000, RTC1: 106000, RTC2: 1067
&amp;lt;info&amp;gt; app: RTOS: 107000, RTC1: 107000, RTC2: 1077
&amp;lt;info&amp;gt; app: RTOS: 108000, RTC1: 108000, RTC2: 1087
&amp;lt;info&amp;gt; app: RTOS: 109000, RTC1: 109000, RTC2: 1097
&amp;lt;info&amp;gt; app: RTOS: 110000, RTC1: 110000, RTC2: 1107
&amp;lt;info&amp;gt; app: RTOS: 111000, RTC1: 111000, RTC2: 1117
&amp;lt;info&amp;gt; app: RTOS: 112000, RTC1: 112000, RTC2: 1127
&amp;lt;info&amp;gt; app: RTOS: 113000, RTC1: 113000, RTC2: 1137
&amp;lt;info&amp;gt; app: RTOS: 114000, RTC1: 114000, RTC2: 1148
&amp;lt;info&amp;gt; app: RTOS: 115001, RTC1: 115001, RTC2: 1158
&amp;lt;info&amp;gt; app: RTOS: 116000, RTC1: 116000, RTC2: 1168
&amp;lt;info&amp;gt; app: RTOS: 117000, RTC1: 117000, RTC2: 1178
&amp;lt;info&amp;gt; app: RTOS: 118000, RTC1: 118000, RTC2: 1188
&amp;lt;info&amp;gt; app: RTOS: 119000, RTC1: 119000, RTC2: 1198
&amp;lt;info&amp;gt; app: RTOS: 120000, RTC1: 120000, RTC2: 1208
&amp;lt;info&amp;gt; app: RTOS: 121001, RTC1: 121001, RTC2: 1218
&amp;lt;info&amp;gt; app: RTOS: 122001, RTC1: 122001, RTC2: 1228
&amp;lt;info&amp;gt; app: RTOS: 123000, RTC1: 123000, RTC2: 1238
&amp;lt;info&amp;gt; app: RTOS: 124000, RTC1: 124000, RTC2: 1248
&amp;lt;info&amp;gt; app: RTOS: 125000, RTC1: 125000, RTC2: 1258
&amp;lt;info&amp;gt; app: RTOS: 126000, RTC1: 126000, RTC2: 1268
&amp;lt;info&amp;gt; app: RTOS: 127000, RTC1: 127000, RTC2: 1278
&amp;lt;info&amp;gt; app: RTOS: 128000, RTC1: 128000, RTC2: 1289
&amp;lt;info&amp;gt; app: RTOS: 129002, RTC1: 129002, RTC2: 1299
&amp;lt;info&amp;gt; app: RTOS: 130000, RTC1: 130000, RTC2: 1309
&amp;lt;info&amp;gt; app: RTOS: 131000, RTC1: 131000, RTC2: 1319
&amp;lt;info&amp;gt; app: RTOS: 132000, RTC1: 132000, RTC2: 1329
&amp;lt;info&amp;gt; app: RTOS: 133000, RTC1: 133000, RTC2: 1339
&amp;lt;info&amp;gt; app: RTOS: 134000, RTC1: 134000, RTC2: 1349
&amp;lt;info&amp;gt; app: RTOS: 135000, RTC1: 135000, RTC2: 1359
&amp;lt;info&amp;gt; app: RTOS: 136000, RTC1: 136000, RTC2: 1369
&amp;lt;info&amp;gt; app: RTOS: 137001, RTC1: 137001, RTC2: 1379
&amp;lt;info&amp;gt; app: RTOS: 138000, RTC1: 138000, RTC2: 1389
&amp;lt;info&amp;gt; app: RTOS: 139000, RTC1: 139000, RTC2: 1399
&amp;lt;info&amp;gt; app: RTOS: 140000, RTC1: 140000, RTC2: 1409
&amp;lt;info&amp;gt; app: RTOS: 141000, RTC1: 141000, RTC2: 1419
&amp;lt;info&amp;gt; app: RTOS: 142000, RTC1: 142000, RTC2: 1429
&amp;lt;info&amp;gt; app: RTOS: 143000, RTC1: 143000, RTC2: 1440
&amp;lt;info&amp;gt; app: RTOS: 144000, RTC1: 144000, RTC2: 1450
&amp;lt;info&amp;gt; app: RTOS: 145000, RTC1: 145000, RTC2: 1460
&amp;lt;info&amp;gt; app: RTOS: 146000, RTC1: 146000, RTC2: 1470
&amp;lt;info&amp;gt; app: RTOS: 147000, RTC1: 147000, RTC2: 1480
&amp;lt;info&amp;gt; app: RTOS: 148000, RTC1: 148000, RTC2: 1490
&amp;lt;info&amp;gt; app: RTOS: 149000, RTC1: 149000, RTC2: 1500
&amp;lt;info&amp;gt; app: RTOS: 150000, RTC1: 150000, RTC2: 1510
&amp;lt;info&amp;gt; app: RTOS: 151000, RTC1: 151000, RTC2: 1520&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;We can see that the RTC1 and FreeRTOS have the same tick, which means it&amp;#39;s the RTC1 is wrongly configured.&lt;br /&gt;The delay adds up and when the RTC2 is at second 152, the RTC1 is at 151.&lt;br /&gt;&lt;br /&gt;I hope this information is useful.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Xavier&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: FreeRTOS time inaccuracy. Drift when compared to RTC</title><link>https://devzone.nordicsemi.com/thread/349340?ContentTypeID=1</link><pubDate>Mon, 24 Jan 2022 15:43:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bda75822-f2d9-4074-916c-a526def53f28</guid><dc:creator>JONATHAN LL</dc:creator><description>&lt;p&gt;Hi Xavier,&lt;br /&gt;&lt;br /&gt;I will come back to you with some more details, but for now here is some links that might be related:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/16705/losing-systicks-in-nrf52-w-freertos-using-sd_app_evt_wait"&gt;Losing systicks in nRf52 w/ FreeRtos using sd_app_evt_wait() - Nordic Q&amp;amp;A - Nordic DevZone - Nordic DevZone (nordicsemi.com)&lt;/a&gt;&lt;br /&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/17142/why-is-the-freertos-function-xtimerresetfromisr-not-working-in-tickless-mode"&gt;Why is the FreeRTOS function xTimerResetFromISR not working in tickless mode? - Nordic Q&amp;amp;A - Nordic DevZone - Nordic DevZone (nordicsemi.com)&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/18209/freertos-changes-for-better-rtos-timer-accuracy"&gt;FreeRTOS changes for better RTOS timer accuracy - Nordic Q&amp;amp;A - Nordic DevZone - Nordic DevZone (nordicsemi.com)&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/29785/freertos-rtc-issue-in-port_cmsis_systick-c"&gt;freertos RTC issue in port_cmsis_systick.c - Nordic Q&amp;amp;A - Nordic DevZone - Nordic DevZone (nordicsemi.com)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Jonathan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>