Давайте будем точны в понятиях. Ошибка -- это именно глухой цикл. Вотчдог -- это способ минимизировать последствия такой ошибки.
Что глухой цикл это ошибка, никто не спорит.
Вот вы выходы упомянули. Для них предусмотрены безопасные дефолтные состояния. Понятно почему -- между ресетом и инициализацией пользовательского кода есть сколько-то времени, в это время лишних действий установка делать не должна.
Retain переменные для чего нам нужны? Чтобы в широком смысле знать, каково состояние установки. Сколько проработала, выключили ее нормально или питание обрубили, и все такое. Разрушение этих данных может быть настолько же фатально, как неконтролируемое состояние входов.
Грубо говоря, если сработал вочдог -- надо прекращать всякую работу и начинать отладку. беда в том, что из-за порчи флагов как раз и невозможно точно сказать -- стартуем мы после нормального включения, или после вочдога.
Поэтому retain не должен портится. Ну или пользователь должен быть предупрежден, чтобы сохранять данные с камим-нибудь CRC.
Если этот ретайн вообще есть... А если ни разу питания не выключалось?
Тролль-наседка, добрый, нежный и ласковый
Заводим флаг "была авария". Сбрасываем его только в процедуре штатного выключения. Если при старте флаг выставлен -- что-то было не так, а если сброшен -- то, значит, выключали как положено. Ну или данные испорчены