Acvarif (26.10.2011 18:01, просмотров: 258) ответил MegaJohn на дык поделитесь примера кода, результами, наблюдениями, записями, сносками, примечаниями.
Пример кода. void WDT_on(void)
{
/* Write logical one to WDCE and WDE */
WDTCR = (1<<WDCE) | (1<<WDE);
/* Turn on WDT */ (0.9 сек)
WDTCR = (1<<WDE) | (1<<WDP1) | (1<<WDP2);
}
В маин делаю
WDT_on();
У мен связь с прибором по USART (Modbus). Каждые 0.5 (прерывания по Т0) сек даю запоросы на прибор. Принимаю ответы по прерывани USART.
В подпрограмме прерываний ставлю __watchdog_reset(); Надеюсь на то, что когда прибор перестанет отвечать WDT сделает полный перезапуск программы с 000 прибор инициализируется и опять начнет отвечать. Моделирую ситуацию. WDT срабатывает, но... не помогает. Помогает только аппаратный сброс.