Одну штуку, которая труднодоступна после подачи питания, я вообще сделал с main-циклом, запускающимся по watchdog-reset. То есть, МК постоянно перезагружается watchdog-таймером. Проверяет состояния выводов, состояние RAM и, в соответствии выставляет выходы в нужное состояние и стоит до следующего сброса. Процедура инициализации после сброса занимает достаточно малое время, чтобы управляемое устройство "не замечало" перевода выходов в третье состояние между сбросом и инициализацией портов.