Перезапуск контролера предпочитаю делать по сбросу WDТ таймера (всегда его использую) в реальных проектах это наиболее надежный способ. В конце памяти обычно размещаю следующий код: ERROR_SYSTEM: ldi tmp,18 out WDTCR,tmp ldi tmp,8 out WDTCR,tmp ERROR_WAIT: nop jmp ERROR_WAIT
Все неиспользуемые прерывания имеют инструкцию: jmp ERROR_SYSTEM
Также если функция в программе возвращает несколько раз критическую ошибку или в основном цикле программы теоретически получаю не те данные, которые я ожидаю также использую переход на ERROR_SYSTEM Надежность программ с этим кодом и без него проверял, специально мучая плату, разница видна была очень наглядно. Дополнительно: при запуске программы проверяю по какому случаю произошел RESET ]
--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
|