Часики на AVR из модулей

8-битные микроконтроллеры AVR (AT90, ATtiny, ATmega) от Atmel (в настоящий момент принадлежит Microchip)

Moderator: Shaos

kuber
Fanat
Posts: 85
Joined: 20 Sep 2015 02:50

Часики на AVR из модулей

Post by kuber »

Доброго времени суток.
Очередные часики на Мега32 из модулей.
По наделал для своих поделок разных модули, получилось удобно.
Можно экспериментировать с разными микроконтроллерами.
"Пробой пера" банально написал программу "часов" под данный конструктив.
Получились часики с календарём, 8 будильников (только на день), термометр.
В вёл коррекцию секунд (ежедневно если необходимо), максимум +-30сек.
Да, часы программные.
Часы могут сигнализировать (писк) каждый час, 30мин, 15мин, 1 мин.
Нужно было мне для моих нужд такие интервалы.
Под управление и коррекцию задействованы все 6 кнопок дисплейного модуля.
You do not have the required permissions to view the files attached to this post.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Часики на AVR из модулей

Post by Tronix »

Дисплей классный. А большой шрифт слишком квадратный, где часы собственно. Можно было бы для больших цифр раскошелится на бОльшую размерность, типа 16x32 или 32x64. Имхо.
А в целом, хорошо. Просто и со вкусом.
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Часики на AVR из модулей

Post by angry_troll »

Сам счёт времени идёт от кварца 32768 гц или от быстрого? Как делается коррекция?
Есть ли батарейка (на фотках не вижу) чтоб переживало отключения?
привет засранцу лавру :)
kuber
Fanat
Posts: 85
Joined: 20 Sep 2015 02:50

Re: Часики на AVR из модулей

Post by kuber »

Так как модули универсальные, на плате микроконтроллера стоят кварц 16мГц и 32768Гц, а на модуле с дисплее стоит микруха часов PCF8563 с кварцем 32768, но не используется в данной версии.
Внутренние часы за тактованы от часового кварца Меги32.
Планировал питать от батарей но у меня Мега32 без буквы А, да и подсветка дисплея тоже не мало потребляет.
На часовую микросхему я не развёл под батарейку в данном модуле дисплея. Забыл. А новую плату развести лень и так работает.
Коррекция если требуется происходит каждый день в 0:30.
angry_troll
Doomed
Posts: 449
Joined: 08 Apr 2013 04:04
Location: 213.247.249.139

Re: Часики на AVR из модулей

Post by angry_troll »

kuber wrote:Так как модули универсальные, на плате микроконтроллера стоят кварц 16мГц и 32768Гц, а на модуле с дисплее стоит микруха часов PCF8563 с кварцем 32768, но не используется в данной версии.
Внутренние часы за тактованы от часового кварца Меги32.
Планировал питать от батарей но у меня Мега32 без буквы А, да и подсветка дисплея тоже не мало потребляет.
На часовую микросхему я не развёл под батарейку в данном модуле дисплея. Забыл. А новую плату развести лень и так работает.
Коррекция если требуется происходит каждый день в 0:30.
Ясно.
Я как-то придумал следующую вещь, которая позволяет от любого кварца точно считать время да ещё и с непрерывной коррекцией.
Например кварц 8 мгц, от него работает 16-битный таймер и даёт прерывание каждые 65536 тактов.
В обработчике, используя 24-битную (или 32-битную) арифметику прибавляем к сумматору число 65536. Как только сумматор станет больше 8000000 (частота кварца), вычитаем из него это (8000000), остаток оставляем до следующего суммирования и дёргаем флаг что надо прибавить 1 к секундам.

Коррекция состоит в том, что вместо 8000000 используем например величину 8000001 или 7999999 или c большим отличием.
Недостаток -- джиттер, равный времени между срабатываниями таймера, преимущество -- фактическая независимость от конкретного значения кварца.

Для 32768 Гц можно использовать дробные значения частоты (нарпимер 32768.0625, в хексе это 0x800010), расчёты ведутся в "fixed point"
привет засранцу лавру :)