Текст заголовка сообщения полностью:
Бит WDE показывает: WD-таймер работает или нет. Он стоит всегда пока WD-таймер работает. Бит WDCE ставим сами, чтобы иметь доступ к изменению бита WDE (вообще-то WDCE нужен только для остановки WD-таймера, но я, например, ставлю и при запуске, короче всегда при изменении бита WDE). Cбрасываем WDCE тоже сами (или он аппаратно сбрасывается через 4 цикла CLK).Вызов макроса из программы: _WDT_ON_MAX_PERIOD;
#define SAVE_IRQ_AND_DISABLE unsigned char sw_ucI = SREG; _CLI()
#define RESTORE_IRQ SREG = sw_ucI
// Включение WDT и задание ему макс. периода
#define _WDT_ON_MAX_PERIOD { register unsigned char uc_ttt; \
SAVE_IRQ_AND_DISABLE; \
__watchdog_reset(); \
uc_ttt=WDTCR; \
uc_ttt|=( (1 << WDCE)|(1 << WDE) ); \
WDTCR=uc_ttt; \
WDTCR=((1<<WDE)|(1<<WDP2)|(1<< WDP1)|(1 << WDP0) );\
__watchdog_reset(); \
RESTORE_IRQ; }