Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
9 years, 2 months ago.
LPC408x Wake up from Deep Sleep
Hi, I'm playing with the deep sleep modes for the Cortex M4 and can get the processor to wake up from 'Sleep' using and external pin. When I try to wake up from 'Deep Sleep' the processor starts running about 1/6 of its normal speed (the LED I have flashing flashes very slowly). Reading through the user manual for the M4 it says you need to re-enter values for the clock dividers and PLLs so the processor will run normally again. Has anyone got any code to do this? All I have at the minute is:
static void powerDown() {
SCB->SCR |= 0x00000004; // Deep Sleep Mode - bit 2 high
//SCB->SCR &= 0xFFFFFFFB; // Sleep Mode
LPC_SC->PCON = 0x00; // Sleep/Deep Sleep mode (defined by SLEEPDEEP bit in M4 System Control Reg)
//LPC_SC->PCON = 0x01; // Power-down mode if SLEEPDEEP bit in the M4 System Control Reg = 1
//LPC_SC->PCON = 0x11; // Deep Power-down mode if SLEEPDEEP bit in the M4 System Control Reg = 1
// wait for interrupt
__WFI();
}
Thanks
* SOLVED * I needed to re-enable PLL0 and set up the clock divider again...
#define PLL0CFG_Val 0x00000009 // Turn on PLL0 LPC_SC->PLL0CFG = PLL0CFG_Val; LPC_SC->PLL0CON = 0x01; /* PLL0 Enable */ LPC_SC->PLL0FEED = 0xAA; LPC_SC->PLL0FEED = 0x55; while (!(LPC_SC->PLL0STAT & (1<<10)));/* Wait for PLOCK0 */ LPC_SC->CCLKSEL = CCLKSEL_Val; /* Setup Clock Divider */