1 Reply Latest reply on Jun 1, 2020 1:51 AM by GaneshD_41

    Deepsleep causes SysTick milliseconds to lag?

    Neeraj Dhekale

      My milliseconds doesn't match with the actual clock. What setting I should make in Clock in "Design Wide Resource"?Untitled.png

      Untitled.png

      I noticed that due to the below function clock doesn't stay synch with the actual clock.

       

       

      void LowPower(void)

       

      {

       

          CYBLE_LP_MODE_T pwrState;

       

          CYBLE_BLESS_STATE_T blessState;

       

          uint8 intStatus = 0;

       

          if((CyBle_GetState() == CYBLE_STATE_ADVERTISING) ||

       

             (CyBle_GetState() == CYBLE_STATE_CONNECTED))

       

          {

       

              pwrState  = CyBle_EnterLPM(CYBLE_BLESS_DEEPSLEEP); /* Configure BLESS in Deep-Sleep mode */

       

              intStatus = CyEnterCriticalSection(); /* No interrupts allowed while entering system low power modes */

       

                  blessState = CyBle_GetBleSsState();

       

                  if(pwrState == CYBLE_BLESS_DEEPSLEEP) /* Make sure BLESS is in Deep-Sleep before configuring system in Deep-Sleep */

       

                  {

       

                      if(blessState == CYBLE_BLESS_STATE_ECO_ON || blessState == CYBLE_BLESS_STATE_DEEPSLEEP)

       

                      {

       

                          CySysPmDeepSleep(); /* System Deep-Sleep. 1.3uA mode */

       

                      }

       

                  }

       

                  else if (blessState != CYBLE_BLESS_STATE_EVENT_CLOSE)

       

                  {

       

                       /* Change HF clock source from IMO to ECO, as IMO can be stopped to save power */

       

                      CySysClkWriteHfclkDirect(CY_SYS_CLK_HFCLK_ECO);

       

                      /* Stop IMO for reducing power consumption */

       

                      CySysClkImoStop();

       

                      /* Put the CPU to Sleep. 1.1mA mode */

       

                      CySysPmSleep();

       

                      /* Starts execution after waking up, start IMO */

       

                      CySysClkImoStart();

       

                      /* Change HF clock source back to IMO */

       

                      CySysClkWriteHfclkDirect(CY_SYS_CLK_HFCLK_IMO);

       

                  }

       

              CyExitCriticalSection(intStatus);

       

          }

       

      }

      13:05:51.526 ->Val : 1182

      13:05:51.526 ->Val : 1196

      13:05:51.526 ->Val : 1210

      13:05:51.561 ->Val : 1223

      13:05:51.561 ->Val : 1237

      13:05:51.596 ->Val : 1251

      13:05:51.596 ->Val : 1264

      13:05:51.596 ->Val : 1278

      13:05:51.630 ->Val : 1292

      13:05:51.630 ->Val : 1305

      13:05:51.664 ->Val : 1319

      13:05:51.664 ->Val : 1333

      13:05:51.664 ->Val : 1346

      13:05:51.698 ->Val : 1360

      13:05:51.698 ->Val : 1374

      13:05:51.733 ->Val : 1387

      13:05:51.733 ->Val : 1401

      13:05:51.733 ->Val : 1415

      13:05:51.767 ->Val : 1428

      13:05:51.767 ->Val : 1442

      13:05:51.801 ->Val : 1455

      13:05:51.801 ->Val : 1469

      13:05:51.801 ->Val : 1483

      13:05:51.835 ->Val : 1496

      13:05:51.835 ->Val : 1510

      13:05:51.870 ->Val : 1524

      13:05:51.870 ->Val : 1537

      13:05:51.870 ->Val : 1551

      13:05:51.905 ->Val : 1565

      13:05:51.905 ->Val : 1578

      13:05:51.939 ->Val : 1592

      13:05:51.939 ->Val : 1606

      13:05:51.939 ->Val : 1619

      13:05:51.973 ->Val : 1633

      13:05:51.973 ->Val : 1647

      13:05:52.008 ->Val : 1660

      13:05:52.008 ->Val : 1674

      13:05:52.008 ->Val : 1688

      13:05:52.041 ->Val : 1701

      13:05:52.041 ->Val : 1715

      13:05:52.075 ->Val : 1729

      13:05:52.075 ->Val : 1742

      13:05:52.075 ->Val : 1756

      13:05:52.109 ->Val : 1770

      13:05:52.109 ->Val : 1783

      13:05:52.143 ->Val : 1797

      13:05:52.143 ->Val : 1810

      13:05:52.143 ->Val : 1824

      13:05:52.177 ->Val : 1838

      13:05:52.177 ->Val : 1851

      13:05:52.212 ->Val : 1865

      13:05:52.212 ->Val : 1879

      13:05:52.212 ->Val : 1892

      13:05:52.247 ->Val : 1906

      13:05:52.247 ->Val : 1920

      13:05:52.281 ->Val : 1933

      13:05:52.281 ->Val : 1947

      13:05:52.281 ->Val : 1961

      13:05:52.314 ->Val : 1974

      13:05:52.314 ->Val : 1988

      13:05:52.349 ->Val : 2002

      13:05:52.349 ->Val : 2015

      13:05:52.349 ->Val : 2029

      13:05:52.382 ->Val : 2043

      13:05:52.382 ->Val : 2056

      13:05:52.417 ->Val : 2070

      13:05:52.417 ->Val : 2084

      13:05:52.417 ->Val : 2097

      13:05:52.450 ->Val : 2111

      13:05:52.450 ->Val : 2125

      13:05:52.483 ->Val : 2138

      13:05:52.483 ->Val : 2152

      13:05:52.483 ->Val : 2166

      13:05:52.518 ->Val : 2179

      13:05:52.518 ->Val : 2193

      13:05:52.552 ->Val : 2206

      13:05:52.552 ->Val : 2220

      13:05:52.552 ->Val : 2234

      13:05:52.586 ->Val : 2247

      13:05:52.586 ->Val : 2261

      13:05:52.621 ->Val : 2275

      13:05:52.621 ->Val : 2288

      13:05:52.621 ->Val : 2302

      13:05:52.655 ->Val : 2316

      13:05:52.655 ->Val : 2329

      13:05:52.690 ->Val : 2343

      13:05:52.690 ->Val : 2357

      13:05:52.690 ->Val : 2370

      13:05:52.725 ->Val : 2384

      13:05:52.725 ->Val : 2398

      13:05:52.759 ->Val : 2411

      13:05:52.759 ->Val : 2425

      13:05:52.759 ->Val : 2439

      13:05:52.794 ->Val : 2452

      13:05:52.794 ->Val : 2466

      13:05:52.828 ->Val : 2480

      13:05:52.828 ->Val : 2493

      13:05:52.828 ->Val : 2507

      13:05:52.861 ->Val : 2521

      13:05:52.861 ->Val : 2534

      13:05:52.896 ->Val : 2548

      13:05:52.896 ->Val : 2562

      13:05:52.896 ->Val : 2575

      13:05:52.930 ->Val : 2589

      13:05:52.930 ->Val : 2602

      13:05:52.964 ->Val : 2616

      13:05:52.964 ->Val : 2630

      13:05:52.964 ->Val : 2643

      13:05:52.998 ->Val : 2657

      13:05:52.998 ->Val : 2671

      13:05:53.031 ->Val : 2684

      13:05:53.031 ->Val : 2698

      13:05:53.031 ->Val : 2712

      13:05:53.066 ->Val : 2725

      13:05:53.066 ->Val : 2739

      13:05:53.099 ->Val : 2753

      13:05:53.099 ->Val : 2766

      13:05:53.099 ->Val : 2780

      13:05:53.134 ->Val : 2794

      13:05:53.134 ->Val : 2807

      13:05:53.168 ->Val : 2821

      13:05:53.168 ->Val : 2835

      13:05:53.168 ->Val : 2848

      13:05:53.202 ->Val : 2862

      13:05:53.202 ->Val : 2876

      13:05:53.236 ->Val : 2889

      13:05:53.236 ->Val : 2903

      13:05:53.236 ->Val : 2917

      13:05:53.270 ->Val : 2930

      13:05:53.270 ->Val : 2944

      13:05:53.305 ->Val : 2958

      13:05:53.305 ->Val : 2971

      13:05:53.305 ->Val : 2985

      13:05:53.338 ->Val : 2999

      13:05:53.338 ->Val : 3012

      13:05:53.373 ->Val : 3026

      13:05:53.373 ->Val : 3041

      13:05:53.406 ->Val : 3055

      13:05:53.406 ->Val : 3069

      13:05:53.440 ->Val : 3083

      13:05:53.474 ->Val : 3097

      13:05:53.508 ->Val : 3111

      13:05:53.543 ->Val : 3125

      13:05:53.576 ->Val : 3139

      13:05:53.610 ->Val : 3153

      13:05:53.643 ->Val : 3167

      13:05:53.677 ->Val : 3181

      13:05:53.677 ->Val : 3194

      13:05:53.711 ->Val : 3208

      13:05:53.745 ->Val : 3222

      13:05:53.778 ->Val : 3236

      13:05:53.813 ->Val : 3250

      13:05:53.847 ->Val : 3264

      13:05:53.882 ->Val : 3278

      13:05:53.915 ->Val : 3292

      13:05:53.949 ->Val : 3306

      13:05:53.982 ->Val : 3320

      13:05:54.017 ->Val : 3334

      13:05:54.017 ->Val : 3348

      13:05:54.051 ->Val : 3362

      13:05:54.085 ->Val : 3376

      13:05:54.120 ->Val : 3390

      13:05:54.154 ->Val : 3404

      13:05:54.188 ->Val : 3418

      13:05:54.221 ->Val : 3432

      13:05:54.221 ->Val : 3445

      13:05:54.255 ->Val : 3459

      13:05:54.289 ->Val : 3473

      13:05:54.323 ->Val : 3487

      13:05:54.356 ->Val : 3501

      13:05:54.390 ->Val : 3515

      13:05:54.425 ->Val : 3529

      13:05:54.459 ->Val : 3543

      13:05:54.493 ->Val : 3557

      13:05:54.527 ->Val : 3571

      13:05:54.527 ->Val : 3585

      13:05:54.562 ->Val : 3599

      13:05:54.596 ->Val : 3613

      13:05:54.630 ->Val : 3627

      13:05:54.664 ->Val : 3641

      13:05:54.699 ->Val : 3655

      13:05:54.733 ->Val : 3669

      13:05:54.768 ->Val : 3682

      13:05:54.768 ->Val : 3696

      13:05:54.802 ->Val : 3710

      13:05:54.837 ->Val : 3724

      13:05:54.872 ->Val : 3738

      13:05:54.905 ->Val : 3752

      13:05:54.940 ->Val : 3766

      13:05:54.975 ->Val : 3780

      13:05:55.009 ->Val : 3794

      13:05:55.009 ->Val : 3808

      13:05:55.042 ->Val : 3822

      13:05:55.076 ->Val : 3836

      13:05:55.111 ->Val : 3850

      13:05:55.146 ->Val : 3864

      13:05:55.180 ->Val : 3878

      13:05:55.215 ->Val : 3892

      13:05:55.249 ->Val : 3906

      13:05:55.284 ->Val : 3920

      13:05:55.318 ->Val : 3933

      13:05:55.353 ->Val : 3947

      13:05:55.353 ->Val : 3961

      13:05:55.386 ->Val : 3975

      13:05:55.421 ->Val : 3989

      13:05:55.455 ->Val : 4003

      13:05:55.489 ->Val : 4017

      13:05:55.489 ->Val : 4031

      13:05:55.523 ->Val : 4045

      13:05:55.557 ->Val : 4059

      13:05:55.592 ->Val : 4073

      13:05:55.625 ->Val : 4087

      13:05:55.660 ->Val : 4101

      13:05:55.694 ->Val : 4115

      13:05:55.728 ->Val : 4129

      13:05:55.762 ->Val : 4143

      13:05:55.795 ->Val : 4157

      13:05:55.829 ->Val : 4171

      13:05:55.864 ->Val : 4184

      13:05:55.864 ->Val : 4198

      13:05:55.898 ->Val : 4212

      13:05:55.932 ->Val : 4226

      13:05:55.966 ->Val : 4240

      13:05:56.000 ->Val : 4254

      13:05:56.033 ->Val : 4268

      13:05:56.067 ->Val : 4282

      13:05:56.067 ->Val : 4296

      13:05:56.101 ->Val : 4310

      13:05:56.135 ->Val : 4324

      13:05:56.170 ->Val : 4338

      13:05:56.205 ->Val : 4352

      13:05:56.238 ->Val : 4366

      13:05:56.273 ->Val : 4380

      13:05:56.307 ->Val : 4394

      13:05:56.342 ->Val : 4408

      13:05:56.342 ->Val : 4422

      13:05:56.375 ->Val : 4435

      13:05:56.409 ->Val : 4449

      13:05:56.442 ->Val : 4463

      13:05:56.477 ->Val : 4477

      13:05:56.512 ->Val : 4491

      13:05:56.546 ->Val : 4505

      13:05:56.580 ->Val : 4519

      13:05:56.615 ->Val : 4533

      13:05:56.650 ->Val : 4547

      13:05:56.650 ->Val : 4561

      13:05:56.685 ->Val : 4575

      13:05:56.719 ->Val : 4589

      13:05:56.753 ->Val : 4603

      13:05:56.787 ->Val : 4617

      13:05:56.821 ->Val : 4631

      13:05:56.856 ->Val : 4645

      13:05:56.856 ->Val : 4659

      13:05:56.890 ->Val : 4673

      13:05:56.924 ->Val : 4687

      13:05:56.959 ->Val : 4701

      13:05:56.992 ->Val : 4714

      13:05:57.026 ->Val : 4728

      13:05:57.060 ->Val : 4742

      13:05:57.094 ->Val : 4756

      13:05:57.129 ->Val : 4770

      13:05:57.163 ->Val : 4784

      13:05:57.198 ->Val : 4798

      13:05:57.198 ->Val : 4812

      13:05:57.233 ->Val : 4826

      13:05:57.267 ->Val : 4840

      13:05:57.301 ->Val : 4854

      13:05:57.335 ->Val : 4868

      13:05:57.335 ->Val : 4882

      13:05:57.370 ->Val : 4896

      13:05:57.405 ->Val : 4910

      13:05:57.439 ->Val : 4924

      13:05:57.474 ->Val : 4938

      13:05:57.509 ->Val : 4952

      13:05:57.544 ->Val : 4966

      13:05:57.577 ->Val : 4980

      13:05:57.610 ->Val : 4994

      13:05:57.644 ->Val : 5008

      13:05:57.678 ->Val : 5022

      13:05:57.678 ->Val : 5035

      13:05:57.712 ->Val : 5049

      13:05:57.747 ->Val : 5063

      13:05:57.781 ->Val : 5077

      13:05:57.814 ->Val : 5091

      13:05:57.848 ->Val : 5105

      13:05:57.883 ->Val : 5119

      13:05:57.883 ->Val : 5133

      13:05:57.917 ->Val : 5147

      13:05:57.952 ->Val : 5161

      13:05:57.986 ->Val : 5175

      13:05:58.021 ->Val : 5189

      13:05:58.055 ->Val : 5203

      13:05:58.090 ->Val : 5217

      13:05:58.124 ->Val : 5231

      13:05:58.157 ->Val : 5245

      13:05:58.157 ->Val : 5259

      13:05:58.192 ->Val : 5273

      13:05:58.226 ->Val : 5287

      13:05:58.260 ->Val : 5300

      13:05:58.294 ->Val : 5314

      13:05:58.329 ->Val : 5328

      13:05:58.363 ->Val : 5342

      13:05:58.397 ->Val : 5356

      13:05:58.431 ->Val : 5370

      13:05:58.466 ->Val : 5385

      13:05:58.466 ->Val : 5399

      13:05:58.500 ->Val : 5413

      13:05:58.534 ->Val : 5427

      13:05:58.568 ->Val : 5441

      13:05:58.568 ->Val : 5455

      13:05:58.602 ->Val : 5469

      13:05:58.636 ->Val : 5483

      13:05:58.670 ->Val : 5497

      13:05:58.704 ->Val : 5511

      13:05:58.738 ->Val : 5525

      13:05:58.771 ->Val : 5539

      13:05:58.771 ->Val : 5553

      13:05:58.805 ->Val : 5567

      13:05:58.839 ->Val : 5581

      13:05:58.873 ->Val : 5595

      13:05:58.908 ->Val : 5609

      13:05:58.943 ->Val : 5623

      13:05:58.977 ->Val : 5636

      13:05:59.011 ->Val : 5650

      13:05:59.046 ->Val : 5664

      13:05:59.046 ->Val : 5678

      13:05:59.080 ->Val : 5692

      13:05:59.115 ->Val : 5706

      13:05:59.150 ->Val : 5720

      13:05:59.185 ->Val : 5734

      13:05:59.218 ->Val : 5748

      13:05:59.251 ->Val : 5762

      13:05:59.285 ->Val : 5776

      13:05:59.319 ->Val : 5790

      13:05:59.353 ->Val : 5804

      13:05:59.388 ->Val : 5818

      13:05:59.423 ->Val : 5832

      13:05:59.423 ->Val : 5846

      13:05:59.457 ->Val : 5860

      13:05:59.492 ->Val : 5874

      13:05:59.526 ->Val : 5888

      13:05:59.560 ->Val : 5901

      13:05:59.560 ->Val : 5915

      13:05:59.594 ->Val : 5929

      13:05:59.628 ->Val : 5943

      13:05:59.663 ->Val : 5957

      13:05:59.697 ->Val : 5971

      13:05:59.731 ->Val : 5985

      13:05:59.765 ->Val : 5999

      13:05:59.798 ->Val : 6013

      13:05:59.833 ->Val : 6027

      13:05:59.867 ->Val : 6041

      13:05:59.902 ->Val : 6055

      13:05:59.902 ->Val : 6069

      13:05:59.936 ->Val : 6083

      13:05:59.971 ->Val : 6097

      13:06:00.005 ->Val : 6111

      13:06:00.040 ->Val : 6125

      13:06:00.074 ->Val : 6139

      13:06:00.074 ->Val : 6153

      13:06:00.109 ->Val : 6167

      13:06:00.144 ->Val : 6181

      13:06:00.179 ->Val : 6194

      13:06:00.179 ->Val : 6208

      13:06:00.213 ->Val : 6222

      13:06:00.247 ->Val : 6236

      13:06:00.282 ->Val : 6250

      13:06:00.315 ->Val : 6264

      13:06:00.350 ->Val : 6278

      13:06:00.383 ->Val : 6292

      13:06:00.383 ->Val : 6306

      13:06:00.417 ->Val : 6320

      13:06:00.451 ->Val : 6334

      13:06:00.485 ->Val : 6348

        • 1. Re: Deepsleep causes SysTick milliseconds to lag?
          GaneshD_41

          Hi,

           

          Please note that the SysTick Timer will not work in Deep Sleep. This is because all the High frequency clocks are not active in Deep Sleep.

           

          For your application, you can use WatchDog Timer clocked with external low frequency crystal. This is because the internal low frequency clock is not accurate in terms of frequency.

           

          There is also an option to trim the ILO using IMO but the accuracy of the clock guaranteed can be +/-2.2 %. If this level of accuracy is sufficient for you, please look at PSoC 4 Watch Dog Timer code example in PSoC Creator. There is no need to use external crystal for this method.

           

          1. Configure the WDT to trigger interrupt at every 1 milli second.

          2. In the interrupt ISR, you can increment the value (Val).

          3. If you still see the performance is not good, you can make the priority of Watch Dog Timer interrupt higher than BLE and check once.

          4. If still you see the issues, you can reduce the WatchDog Timer interrupt frequency and check once.

           

          Thanks and regards

          Ganesh