ARV, 1ая фраза давно была. После неё я несколько раз вам писал, что сначала пишем:
Поэтому и мысль ДО начала переходного процесса записываем следующее состояние в EEPROM - успешно записались и только тогда начинаем сам процесс перехода.
Перед переходным процессом сначала зачищаем (т.е. перезаписываем в 0xFF) в EEPROM данные по позиции CRC8 и PADDING'а, если буду его использовать (ну просто чтобы кратное объему EEPROM было). Потом пишу всю первую часть
CRC1 пишется ДО начала любого перехода.
Перечитайте вот этот пост:
https://radiokot.ru/forum/viewtopic.php ... 4#p3805844 я же там процесс расписал.
1. Неактуально. Я не начинаю переход пока не запишу успешно CRC1.
2. Я просто начну переход после восстановления питания. Мне не важно начинать его сначала или с середины.
3. Я черным по-белому написал, что это мне некритично:
Единственный возможный момент ту мне видится только если переход сам произошел успешно, но при этом питание "закончилось" в момент записи CRC2 и мы не успели записать успешность физического процесса перехода. Мне это некритично.
Я знаю как обработать эту ситуацию.
Добавлено after 4 minutes 9 seconds:
Еще несколько условий, чтобы было понятнее. Почему-то за них зацепились, хотя вопрос не в них был.
1. Переход начинается по какому либо из событий.
2. После события сначала пишется запись о следующем состоянии + CRC1.
3. Запускается физический процесс.
4. По завершению пишется CRC2.
Если между этапами 1 и 2 прозошел сбой - событие можно отбросить. Даже если оно было, пока сам физический процесс не начался - не страшно "забыть" событие и вернуться к прошлому состоянию до сбоя.
Если между этапми 3 и 4 произошел сбой - не важно, я знаю как это обработать. Обработка будет одинаковая как если физ. процесс незавершился, так и если он завершился, но мы об этом не записали CRC.