Код
LPC_SYSCON->SYSAHBCLKCTRL |= ( 1 << 15 );
LPC_SYSCON->WDTCLKSEL = 1; // Main OSC as CLK source
LPC_SYSCON->WDTCLKDIV = 48; // CLK devider
LPC_SYSCON->WDTCLKUEN = 1; // Enable WD CLK
LPC_WDT->TC = WDT_PERIOD_SECONDS * 250000;
LPC_WDT->MOD = ( 1 << 0 ) | ( 1 << 1 ); // WDT Enable, WDT reset
LPC_SYSCON->WDTCLKSEL = 1; // Main OSC as CLK source
LPC_SYSCON->WDTCLKDIV = 48; // CLK devider
LPC_SYSCON->WDTCLKUEN = 1; // Enable WD CLK
LPC_WDT->TC = WDT_PERIOD_SECONDS * 250000;
LPC_WDT->MOD = ( 1 << 0 ) | ( 1 << 1 ); // WDT Enable, WDT reset
Работает, когда надо ресетит проц через нужное время.
Проблема в том, что когда проц уходит в sleep то WD продолжает его ресетить но период возрастает в 4 раза.
При этом отключение клока в SYSAHBCLKCTRL, или изменение параметров в WDTCLKSEL/WDTCLKDIV/WDTOSCCTRL никак не влияет на период, через который происходит ресет в слипе. Как будто в слипе он считает совсем от другого источника.
Как сделать так, чтобы WD не срабатывал в слипе и почему он вообще продолжает работать?