Та же песня!
ATMega88 после интервала для срабатывания Watchdog происходит полное зависание контроллера, выводы переходят в z состояние и всё, прога не стартует заново.
Код был портирован из ICCAVR где нормально работал в AtmelStudio с WinAVR, где и начались чудеса.
Симптомы полностью соответствуют указанным ранее, питание в норме, BOD включен, BOOTRST в 1 и.т.д.
Upd
Нашел!
Если инициализация watchdog происходит перед вызовом "_delay_ms(100)" (это из delay.h от winavr),
то watchdog работает корректно, при превышении интервала происходит нормальный сброс контроллера.
Если инициализацию поставить после этой задержки, то сброс по watchdog не происходит, все виснет намертво!
Дальше разбираться не стал, некогда.
Когда код был под ICCAVR задержка там была реализована другим образом и проблем не возникало, инициализировать watchdog можно было в любом месте программы.
Думаю что это компилятор зараза! (Оптимизация стоит на -O2)
Сообщение отредактировал berberber - Apr 1 2015, 11:02