В первые запуски часы безбожно глючили, перезагружались и зависали.
Основные ошибки найдены и теперь часы отработали несколько суток без проблем. Итак в чем была проблема:
1. Понижение частоты генератора
Это реально спасло, понизив частоту с 16 до 8 МГц, часы перестали реагировать на внешние магнитные поля. Я наблюдал перезагрузку часов раньше даже если их близко поднести к энергосберегающей лампе.
Если взять даташит на Atmega328P, то там написано что при напряжении то 2.7 вольт и выше, можно использовать кварц на 8МГц, а для 16МГц необходимо напряжение более 4 вольт. Поскольку я использую питание от Li-ion аккумулятор напрямую (3.2 - 4.2 В), 16 МГц кварцевый резонатор будет работать в основном нестабильно.
Отсюда есть и свои минусы - микроконтроллер будет работать в 2 раза медленнее. Заметно будет на анимации. Но редко когда анимация будет просаживаться меньше 25 кадров в секунду. Последующий переход на ARM процессоры исправит и это
2. Перезагрузка во время подключения питания
Зависание часов замечено во время подключения зарядки при низком заряде аккумуляторе. Зарядный модуль выдает на аккумулятор около 500 мА, что очень много для 80мAh аккумулятора. Скачок напряжения приводит к перезагрузке.
Что делать в этом случае? Думаю что пока ничего не буду делать, так как часы рассчитывались на аккумулятор в 500mAh при включении зарядки напряжение будет немного сглаживаться. Либо на модуле зарядки надо будет перепаять резистор, отвечающий за максимальный ток заряда.
К слову - перезагрузка при подключении питания происходит только при глубоком разряде аккумулятора (3 вольта и ниже), такой разряд допускать нельзя.