Прошу помощи у Клуба!
Проблема в неправильной работе Watch Dog Timer'a на ATmega640-16AU.
Суть в следующем: после запуска Watch Dog Timer'a в режиме "System Reset Mode" через запрограммированое (2 сек) время камень не перезапускается (System Reset), а тупо виснет.
Проверку осуществляю при помощи вставленных циклов ожидания функции __delay_cycles().
Компилятор IAR EWB v.6.21.1.
Прошивка в железо - AVReal.
Инициализация в основной программе (main):
// Инициализация Watchdog-таймера
_WDR(); // Сброс Watchdog
WDTCSR |= (1<<WDCE)|(1<<WDE);
WDTCSR = (1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0); // Установка времени срабатывания ~2 с
_SEI(); // Глобальное разрешение прерывания
Фьюз WDTON=1.
Сама программа без WDT или с включённым WDT, но без принудительной сверхзадержки работает без проблем.
Аналогичные варианты других программ, но на камнях ATmega64 с идентичными параметрами (инициализация, фьюзы, способы проверки срабатывания WDT) работают тоже без проблем.