Trying to get a coldfire+ into VLLS3 mode but when I measure the current it is not dropping (3uA according to datasheet. I am at several mA.)
Any Ideas? I call the Sleep function to put into low power mode
void deepsleep (void)
{
/* Set the SLEEPDEEP bit to enable deep sleep mode (STOP) */
asm ( stop #0x2000; );
}
void Sleep(void){
u8 dummyread;
SetAlarm(10); // wake up in 10 seconds
SetLLWU(); // setup wakeup events
SMC_PMPROT = SMC_PMPROT_AVLLS_MASK;
SMC_PMCTRL &= ~SMC_PMCTRL_STOPM_MASK ;
SMC_PMCTRL |= SMC_PMCTRL_STOPM(0x4) ;
dummyread = SMC_PMCTRL_STOPM(0x4);
SMC_VLLSCTRL = BIT2;
/*wait for write to complete to SMC before stopping core */
dummyread = SMC_VLLSCTRL;
dummyread = SMC_PMCTRL;
deepsleep();
}
已解决! 转到解答。
Found the problem, it was a register to enable stop mode had not been set right. Used Processor expert to setup and that solved it. Got 3uA draw and wake on timer or one of my 3 buttons, very nice.
Tried lots of port configeration settings including disabling all ports etc. Got the current down to 360uA about 100x what I should be getting from the datasheet. Not too easy to solve, I will request support from Freescale through distributor.
Found the problem, it was a register to enable stop mode had not been set right. Used Processor expert to setup and that solved it. Got 3uA draw and wake on timer or one of my 3 buttons, very nice.