Выкладываю.
Версия 0.9.1
Отличия от 0.8:
1. Хранение даннхых в eeprom по методу
мажоритарного резервирования1.1 При перепрошивке
с версии 0.8 - все настройки сбросятся.
2. Для обработки событий от кнопок и выключателей применен алгоритм из проекта "Термостат 0.1" - там к работе кнопок отродясь не было замечаний.
2.1 Реакция на нажатие кнопки может наступать с заметной задержкой, 0.2 секунды человек способен различать. Но принципы работы "вежливой подсветки" таковы, что скорее всего никто этой задержки не увидит.
3. Весь алгоритм программирования остался прежним. Есть работающая версия с настройкой через вход "опционально", но я ее пока мало тестил. В коде она уже есть, но выключена. Кто хочет сам полазить по коду - тот найдет, кто хочет готовую прошивку - тот дождется.
4. Степень тестирования - средняя, держите старую прошивку под рукой. Да, и если у вас что-то не работает, описывайте подробнее, что и как. И что продолжает работать - тоже описывайте.
Фьюзы:
Ребята, никакие алгоритмы хранения не спасут при понижении напряжения ниже определенного уровня, когда МК всё еще продолжает работать, но чем он там занимается - уже никто не знает. Я сегодня пару раз проверял на меге8 - троекратное резервирование при записи в eeprom не спасает, в eeprom лезет даже не один байт, не два байта, там куча мусора оказывается (при падении напряжения).
Я считаю, это основная причина отваливания настроек.
Бороться с падением напряжения можно начать с фьюз-битов BODLEVEL, я предлагаю их настроить на максимально жесткий режим - резет уже при 4.3В на входе питания МК.
Оборотная сторона медали - на морозе этот встроенный BOD начинает чудить, есть вариант, что просто не даст МК запуститься.
Короче, я настоятельно рекомендую прошивать с фьюзами, как на картинке в архиве (для дудки -U lfuse:w:0xe2:m -U hfuse:w:0xdc:m -U efuse:w:0xff:).
Если у кого не будет работать - используйте фьюзы от версии 0.8 (-U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m )
PS версия 0.9.1 выпущена при содействии sergioflash, за что ему отдельное спасибо!