Есть переходные процессы (смена состояния), которые физически могут занимать 5-10 сек. И вот надо бы отслеживать если процесс почему-то прервется (питание пропало и т.д.).
Какая пока мысль - перед сменой состояния пишем новую структуру в EEPROM со следующим ID последовательности, но без CRC. Как только смена состояния успешно прошла - дописываем CRC этого блока. Следовательно когда мы загружаем последний блок при старте - если CRC не совпадает, считаем что прошлый смена состояния не завершена, а из прошлого блока читаем соб-но прошлое состояние. И доделываем переход, и дописываем корректный CRC.
Почему CRC - ну чтобы отдельный байт под "успешно" не тратить. О чем нам еще может говорить битое CRC? Либо мы не успели записать нормально, либо произошел сбой EEPROM. Но в этом случае и в прошлом блоке с большой вероятностью будет битое CRC - тогда уходим в режим "авария, требуется ручное вмешательство".
Это в общем-то наверное будет работать. Но пока не реализовал, может у кого лучше идеи или критика будет.


