Sleep mode ADUCM3029

Hi EZ,

I am currently working on an embedded project which use a ADUCM3029 microprocessor, and I need to save as much current as possible, that is why I am using the function provide by ADI : adi_pwr_EnterLowPowerMode().

 

It exist 4 sleep mode according to the datasheet : 

 ADI_PWR_MODE_ACTIVE = 0 << BITP_PMG_PWRMOD_MODE,
 /*! Core Sleep power-down mode */
 ADI_PWR_MODE_FLEXI = 1 << BITP_PMG_PWRMOD_MODE,
 /*! Full Hybernate power-down mode */
 ADI_PWR_MODE_HIBERNATE = 2 << BITP_PMG_PWRMOD_MODE,
 /*! System Sleep power-down mode */
 ADI_PWR_MODE_SHUTDOWN = 3 << BITP_PMG_PWRMOD_MODE

I am currently using the ADI_PWR_MODE_HIBERNATE, to put the microcontroler in a sleep state, and when there is an interupt which came from the GPIO, it wake up the cheap, with the function : adi_pwr_ExitLowPowerMode().

This solution works, and thought that I am able to save current, but it is not constant, and sometimes for no specific reason the microprocessor is stuck in the Low_power mode, instead of the fact that the interupt on the GPIO is still send.

I tried to use the FLEXI_MODE but it don't save enough current at all.

Any idea let me know,

Best regards,

Florent 

Top Replies

  • 0
    •  Analog Employees 
    on Oct 3, 2017 10:33 AM

    Hi ,

    Thank you for your query. Which GPIO do you use for providing wake-up interrupt to the MCU? The following GPIO(s) can be used to provide external wake-up interrupt for waking up the MCU from Hibernate mode:

    1. P0_15 (XINT0_WAKE0/GPIO15)
    2. P1_00 (XINT0_WAKE1/GPIO16)
    3. P0_13 (XINT0_WAKE2/GPIO13)
    4. P2_01 (XINT0_WAKE3/TMR2_OUT/GPIO33)

    The first three GPIO above (corresponding to XINT0_WAKE0, XINT0_WAKE1 and XINT0_WAKE2) can also be used for providing external wake-up interrupt for waking up the MCU from Shutdown mode.

    Best Regards,

    Narsimh

  • 0
    •  Analog Employees 
    on Oct 3, 2017 8:18 PM

    Hi Narsimh,

    I  use P1_00 as an external wake up on a rising edge for the MCU, so it should be good. The real problem is that the behavior of this system is not reliable. I mean sometimes it works, and sometimes I am not able to exit the sleep mode, even if I can see the interput' coming from my accelerometer cheap ( when I shake it create an interupt). 

    I am also wondering if I can use the adi_pwr_ExitLowPowerMode() function to exit the hibernate mode.

    Thanks for your help,

    Best regards,

    Florent 

  • 0
    •  Analog Employees 
    on Oct 5, 2017 8:23 AM

    Hi ,

    This previous thread on EZ might be useful to you as reference: RTC setup to wake up from Hibernate Mode each 1µs. FormerMember has a post in this thread with source code for wake up from Hibernate using an external interrupt.

    Specific to your issue, can you describe your hardware set up and share your source code as well? 

    Best Regards,

    Narsimh

  • 0
    •  Analog Employees 
    on Nov 7, 2017 6:39 PM

    Hi Narsimh,

    After many attempts I figure out that the problem came from the board that I used.  So indeed use P1_00 as an external wake up on a rising edge for the MCU is working well.

    And for my setup, the function  adi_pwr_ExitLowPowerMode() allows me to go out from the extended sleep mode.

    Thanks a lot for your help,

    Cheers.

  • 0
    •  Analog Employees 
    on Aug 2, 2018 3:57 PM
    This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

    Thank you,
    EZ Admin