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,