Test code that turns off parts of the mbed in succession from peripherals, Ethernet, magic chip and finally goes into deep power down.

Dependencies:   mbed

main.cpp

Committer:
zainulcharbiwala
Date:
2011-02-18
Revision:
0:fad41ad347c2

File content as of revision 0:fad41ad347c2:

#include "mbed.h"
#include "PowerControl/PowerControl.h"
#include "PowerControl/EthernetPowerControl.h"

#define USR_POWERDOWN    (0x104)

int semihost_powerdown() {
    uint32_t arg;
    return __semihost(USR_POWERDOWN, &arg); 
}

DigitalOut myled(LED1);
DigitalOut result(LED2);

int main() {
     wait(2);
     // Turn off all peripherals
     Peripheral_PowerDown(LPC1768_PCONP_PCTIM0);
     Peripheral_PowerDown(LPC1768_PCONP_PCTIM1);
     Peripheral_PowerDown(LPC1768_PCONP_PCUART0);
     Peripheral_PowerDown(LPC1768_PCONP_PCUART1);
     Peripheral_PowerDown(LPC1768_PCONP_PCPWM1);
     Peripheral_PowerDown(LPC1768_PCONP_PCI2C0);
     Peripheral_PowerDown(LPC1768_PCONP_PCSPI);
     Peripheral_PowerDown(LPC1768_PCONP_PCRTC);
     Peripheral_PowerDown(LPC1768_PCONP_PCSSP1);
     Peripheral_PowerDown(LPC1768_PCONP_PCADC);
     Peripheral_PowerDown(LPC1768_PCONP_PCGPIO);
     Peripheral_PowerDown(LPC1768_PCONP_PCRIT);
     Peripheral_PowerDown(LPC1768_PCONP_PCMCPWM);
     Peripheral_PowerDown(LPC1768_PCONP_PCQEI);
     Peripheral_PowerDown(LPC1768_PCONP_PCI2C1);
     Peripheral_PowerDown(LPC1768_PCONP_PCSSP0);
     Peripheral_PowerDown(LPC1768_PCONP_PCTIM2);
     // TIMER 3 not turned off
     //Peripheral_PowerDown(LPC1768_PCONP_PCQTIM3);
     Peripheral_PowerDown(LPC1768_PCONP_PCUART2);
     Peripheral_PowerDown(LPC1768_PCONP_PCUART3);
     Peripheral_PowerDown(LPC1768_PCONP_PCI2C2);
     Peripheral_PowerDown(LPC1768_PCONP_PCI2S);
     Peripheral_PowerDown(LPC1768_PCONP_PCGPDMA);
     Peripheral_PowerDown(LPC1768_PCONP_PCENET);
     Peripheral_PowerDown(LPC1768_PCONP_PCUSB);     
     wait(2);
     // Turn off PHY
     PHY_PowerDown();
     wait(2);
     // Turn off IF
     result = semihost_powerdown();   
     wait(2);
     // Go to Sleep
     DeepPowerDown();
}