2 Replies Latest reply on Jun 12, 2015 5:33 AM by user_14586677

    Issue with low power Deep Sleep

    user_343349849

      I have a project running on PSCO 4200 that goes into deep sleep and is woken by change in GPIO pin.

         

      When I run the code , it appears to sleep for a while and then wakes up (but not by GPIO pin change).

         

      The code starts a timer, and then stops the time when done and puts the device back in deep sleep mode.

         

      However, once the device is woken it appears the timer never stops and it keeps getting continuously woken by the time (I put a break point at the ISR and it is going directly to it).

         

      I have a Global Signal - System Power Interrupt placed in the design but do not use the watchdog.

         

      Firstly, is there a register that indicates what caused the wake from deep sleep ?(I am sure I saw this in a document for hibernate but not sure about deep sleep).

         

      What would cause the timer interrupt to not be cleared.

         

      CY_ISR(TimerINT){

         

          Timer_ReadStatusRegister();

         

          Timer_Flag = 1;

         

      }

         

      void StartTimer(uint32 tdelay){  //used in "processLF()" routine when woken

         

          uint32 period = tdelay;

         

          Timer_WritePeriod(period);

         

          Timer_WriteCounter(period);

         

          Timer_Enable(); 

         

      }

         

      void StopTimer(void){  //called just before deep sleep when leaving "processLF()"

         

         Timer_Stop();

         

         Timer_Flag = 0;   

         

      }

         

       

         

      main loop

         

      for(;;){

         

                CySysPmDeepSleep();

         

                processLF();

         

          }