Цитата(ecomp42 @ Feb 2 2014, 21:27)

1. Никакие пины не сконфигурированы как функциональные? Перед powerdown их надо переводить обратно в I/O.
Все пины перед входом в спящий режим сконфигурированы как GPIO
Цитата(ecomp42 @ Feb 2 2014, 21:27)

2. Про PLL есть errata 3.9:
Спасибо за наводку! Не поверите, перед тем как открывать эту тему, я пролистал errat'у 3 раза, и не заметил этого вопиющего бага. Видимо, нужно было ещё и читать
К сожалению, не помогло. Код:
Код
__disable_irq();
systick_ctrl_temp = SysTick->CTRL; // Remember the SysTick timer state
SysTick->CTRL = 0; // Turn off the SysTick timer
// В этом месте потребление = 41мА
LPC_SC->PLL0CON &= ~(1<<1); /* Disconnect the main PLL (PLL0) */
LPC_SC->PLL0FEED = 0xAA; /* Feed */
LPC_SC->PLL0FEED = 0x55; /* Feed */
while ((LPC_SC->PLL0STAT & (1<<25)) != 0x00); /* Wait for main PLL (PLL0) to disconnect */
// 8.5мА
LPC_SC->PLL0CON &= ~(1<<0); /* Turn off the main PLL (PLL0) */
LPC_SC->PLL0FEED = 0xAA; /* Feed */
LPC_SC->PLL0FEED = 0x55; /* Feed */
while ((LPC_SC->PLL0STAT & (1<<24)) != 0x00); /* Wait for main PLL (PLL0) to shut down */
// 6.5мА
pconp_temp = LPC_SC->PCONP; // Remember the PCONP state
LPC_SC->PCONP = 0x00;
// 6.25мА
SCB->SCR |= 0x04; // ( 1 << 2 ); // SLEEPDEEP bit = 1
LPC_SC->PCON = (1 << 3) | (1 << 0); // POWER DOWN mode
__WFI(); // 1мА :(
__nop();
__nop();
__nop();
__nop();
SystemInit();
LPC_SC->PCONP = pconp_temp; // Restore the PCONP state
SysTick->CTRL = systick_ctrl_temp; // Restore the SysTick state
__enable_irq();
По потребляемому току видно, что PLL отключается. Окончательно ничего не понимаю. Я искренне верю, что не бывает глючных процессоров, бывают только невыкуренные до конца даташиты и ерраты. Что же я ещё упустил?
Цитата(ecomp42 @ Feb 2 2014, 21:27)

У меня всё устройство на LPC1768 в powerdown потребляет 60 мкА.
Если это не представляет большую коммерческую тайну, не могли бы Вы поделиться участком кода, который отвечает за перевод в спящий режим?