|
|
|
|
|
|
|
|
// release I/O pins hold, if we woke up from VLLS mode |
|
|
// release I/O pins hold, if we woke up from VLLS mode |
|
|
if (PMC_REGSC & PMC_REGSC_ACKISO) PMC_REGSC |= PMC_REGSC_ACKISO; |
|
|
if (PMC_REGSC & PMC_REGSC_ACKISO) PMC_REGSC |= PMC_REGSC_ACKISO; |
|
|
|
|
|
|
|
|
|
|
|
// since this is a write once register, make it visible to all F_CPU's |
|
|
|
|
|
// so we can into other sleep modes in the future at any speed |
|
|
|
|
|
SMC_PMPROT = SMC_PMPROT_AVLP | SMC_PMPROT_ALLS | SMC_PMPROT_AVLLS; |
|
|
|
|
|
|
|
|
// TODO: do this while the PLL is waiting to lock.... |
|
|
// TODO: do this while the PLL is waiting to lock.... |
|
|
while (dest < &_edata) *dest++ = *src++; |
|
|
while (dest < &_edata) *dest++ = *src++; |
|
|
dest = &_sbss; |
|
|
dest = &_sbss; |
|
|
|
|
|
|
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#if F_CPU <= 2000000 |
|
|
#if F_CPU <= 2000000 |
|
|
// switch to VLPR mode.... |
|
|
|
|
|
SMC_PMPROT = SMC_PMPROT_AVLP | SMC_PMPROT_ALLS | SMC_PMPROT_AVLLS; |
|
|
|
|
|
SMC_PMCTRL = SMC_PMCTRL_RUNM(2) | SMC_PMCTRL_STOPM(2); // VLPR mode :-) |
|
|
|
|
|
|
|
|
// since we are not going into "stop mode" i removed it |
|
|
|
|
|
SMC_PMCTRL = SMC_PMCTRL_RUNM(2); // VLPR mode :-) |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
// initialize the SysTick counter |
|
|
// initialize the SysTick counter |