Я глубоко не вникала в код ТС, потому что он мало читабелен
Скрытый текст
Я бы посоветовала почитать книгу "Чистый код. Создание, анализ и рефакторинг. Библиотека программиста" - Роберт Мартин, Мика Мартин. Много даст изменит взгляд на код...
НО что там ТС мог не дописать?
На старте считываем все значения с EEPROM, в ходе программы по мере необходимости их сохраняем и всё!!!
При пропаже света, внутренние часы идут дальше, потому что есть своя батарейка. В отличие от мех. таймеров, которые будут идти только после включения света.
Появился свет - контроллер проверил нужно ли ему что либо включить или выключить, рассчитывает значение яркости освещение (0-100%) и всё работает как часики
