[uquote="codenamehawk",url="/forum/viewtopic.php?p=4614994#p4614994"]Есть два режима работы собаки Interrupt Mode или Interrupt and System Reset
Mode
В коде используется второй режим.
Вложение Untitled.png больше недоступно
"Это полезно для обеспечения безопасности сторожевого таймера при использовании прерывания. Чтобы остаться в Интер-
rupt и System Reset Mode,
WDTIE необходимо устанавливать после каждого прерывания. Однако это не должно
выполняться внутри самой процедуры обслуживания прерываний, так как это может поставить под угрозу функцию безопасности
режим сброса системы Watchdog. Если прерывание не будет выполнено до истечения следующего тайм-аута,
Будет применен сброс системы."
Как заставить работать в режиме Interrupt Mode я знаю, а вот как в Interrupt and System Reset пока не нашел.
Возможно протеус не совсем корректно симулирует, так в коде есть
Код: Выделить всё
// //для тестов в протеусе
// void wdt_on(void){
// WDTCR |= (1<<WDCE) | (1<<WDE);
// WDTCR = (1<<WDTIE) | (1<<WDP2) | (1<<WDP1); // заводим вачдог на 1 секунд
// }
Я бы добавил конденсатор на 0.1 мкф параллельно кнопке, вполне возможно, что прав
Mursik писал(а):ИМХО, опять фузы не туда..
ТС считайте Fuses с проца и покажите. Возможно не правильно выставлен WDTON.[/uquote]
Фюзы заводские, как и отметил автор программы.
Дебагинг еще делать не умею. Но есть ли в нем необходимость, если протеус алгоритм отрабатывает?
Да, кстати забыл спросить про загрузку в EEPROM. AVRDUDE сообщает о 0 байтах, хотя в файл не пустой.