Извините за глупый и простой вопрос (ибо начинающий), но всё же...
Необходимо реализовать вот что: по прерыванию WDT проверять состояние PIN'а, если он =0 -> sleep_enable();powerdown(); Иначе ->выполнять некоторые действия.
Но при этом не делать Reset МК
CVAVR выдаёт шаблон (wdt: 1024k)
Код: Выделить всё
#include <tiny13.h>
interrupt [WDT] void wdt_timeout_isr(void)
{
WDTCR|=0x40;
// Place your code here
......
}
void main(void)
{
.....
#pragma optsize-
WDTCR=0x39;
WDTCR=0x69;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
#asm("sei")
while (1){};
}
Почитал, что CVAVR выдает в шаблоне WDE=1 и WDIE=1 что приводит к reset'у. Соответственно WDTCR надо бы сделать равным 0b0110001.
Прочитал
. Здесь не понял. То что в две строчки - видно из шаблона, но что и в какую строку...?при смене делителя нужно сбрасывать бит WDCE (бит 4), по сему и инициализация WDTCSR производится в две строки.
И еще. В обработчике прерывания присутствует WDTCR|=0x40;. Для чего и надо ли её править для моей задачи.
И будет ли данная программа в Proteus'е симулироваться?
Заранее благодарю.