ooolexa, я не прошу реализовать, просто хочу понять, работоспособен ли такой алгоритм восстановления тюнером режима работы после пропадания питания
Для работы алгоритма нужно формировать два признака:
"выключение" - при получении команды ВЫКЛ. (в энергонезависимой памяти) и
"включение" - при получении команды ВКЛ. (где есть возможность)
1 алгоритм выключения
- при получении штатной команды "выключение" в энергонезависимую память записать признак перехода в спящий режим "выключение" ="1" (может в уже используемых ячейках памяти есть резервный бит);
- далее выполнить все, что делается и сейчас при выключении
Соответсвенно при выключении снятием питания или просто при пропадании питания бит останется в "0"
2 алгоритм включения из спящего режима
при получении штатной команды "включение"
- запомнить, что команда прошла, т.е присвоить "включение"=1 (работают же мозги процессора хоть немного, если он декодирует команду),
- включиться штатно,
- проверить состояние битов "включение" и "выключение"
1 1 - сбросить биты и продолжить работу
0 0 - продолжить работу
1 0 - сбросить биты и продолжить работу
0 1 - перейти в спящий режим
Первая и третья комбинация штатные, остальные - см. ниже
3 алгоритм включения при подаче питания
- включиться штатно,
- проверить состояние битов "включение" и "выключение"
1 1 - сбросить биты и продолжить работу
0 0 - продолжить работу
1 0 - сбросить биты и продолжить работу
0 1 - перейти в спящий режим
Вторая и четвертая комбинации штатные, остальные - см.выше
Таким образом, если тюнер был включен до пропадания питания, он включится. Если был в спящем режиме - включится, поработает секунд 30 и перейдет в спящий режим.