0 Replies Latest reply on Feb 27, 2012 6:09 PM by larry.nadeau

    PSOC3 will not stay in hibernate

    larry.nadeau

      Hi, I am attempting to use a soft power switch configuration with our PSOC3 driven product and having an issue with hibernate mode, in that the cpu seems to come out ofCyPmHibernate() right after going into it  - without the power switch being turned on.

         

      Prior to the hibernate call I am sleeping /stopping all components, clearing interrupts, etc. and re-configuring clocks per the System Reference guide. There are ample delays for some servo motor commands prior to powering down, so I'm not worried about debounce of the switch. Below is a code snip from the power down routine.

         

      I have had to put in a loop that waits for the power switch to be turned on, so the unit is sitting in this loop using about 7ma - not good, but I am having to ship product like this until I have a solution.

         

      As I understand it the PICU is the only way to wake up from hibernate. I assume that I'm overlooking something that is waking things up, any suggestions/ideas on where to look next?

         

      ...

         

      PWR_SW_ClearInterrupt();

         

      CyPmSaveClocks();     //Save Clock configuration before entering Hibernate
         
          CyPLL_OUT_Stop();                    // change clock configuration for hibernate
          CyIMO_SetSource(CY_IMO_SOURCE_IMO);
          CyMasterClk_SetSource(CY_MASTER_SOURCE_IMO);
          CyPLL_OUT_Stop();
          CyXTAL_Stop();
          CyXTAL_32KHZ_Stop();
         
          PWR_SW_ClearInterrupt(); // again

          CyPmHibernate();      // put the device into hibernate mode
           
      //***** CPU is supposed to stay ^ Here until power switch turned on *****//
            
          while (powerSwState = PWR_SW_Read());  // DEBUG - wait here till power sw is low (on)       
         
          PWR_SW_ClearInterrupt();
             
          CyPmRestoreClocks();

         

      ...