Максимально сохранена преемственность с предыдущей версией. Для перехода на новую версию достаточно заменить контроллер на Mega168. Для возможности дистанционного управления необходимо установить приемник IR. Его можно разместить на отдельной плате, соединив всего тремя проводами. При повторении устройства, все же рекомендуется использовать RTC M41T56 вместо DS1307.
Схема:
(Для увеличения, «кликните» мышкой на изображении)
Внешний вид:
Существенно проработан вывод на дисплей информации. Обновление информации происходит по мере необходимости, что, в свою очередь, позволило избежать мерцания дисплея. Это особо важно для инверсных LCD и, мы надеемся, для люминесцентных индикаторов.
Скины теперь хранятся в eep.
Поддерживаются три языка: русский, украинский, английский. При прошивке для каждого языка должно быть соответствия языковых hex и eep файлов.
Применение парных скинов позволяет выводить больше информации на дисплей.
Создано четыре парных скина для трех языков.
Предусмотрена быстрая смена скинов. При нажатии и удержании кнопки «Подсветка» и нажатии кнопки «Вверх» или «Вниз» происходит смена скина на номер вперед или назад соответственно.
В меню часов отображается версия hex и eep.
Для редактирования, создания «индивидуальных» скинов разработана отдельная программа SkinEdit, которая создает bin файл для проверки в Proteus и eep файл для прошивки в Mega168.
Будильники:
Подсчет и отображение на дисплее количества установленных на текущий день будильников.
Добавлен будильник «мигание подсветкой».
При установке будильников можно выбрать, как сработает будильник:
— пищалка;
— «музыкальная открытка»;
— мигание подсветкой;
— установка «высокого» уровня на порту «управление нагрузкой»;
— установка «низкого» уровня на порту «управление нагрузкой».
Оперативный просмотр установленных будильников на сегодня – кнопка «вниз»
или на завтра – кнопка «вверх»
Выход из просмотра установленных будильников кнопкой «Esc» или по истечении 1 минуты.
Коррекция хода часов:
Корректировка точности хода, в текущей версии, составляет от -5.5 до +5.5 секунды/сутки. Реализовано автоопределение типа микросхемы RTC. В зависимости от микросхемы RTC, используются разные способы корректировки точности хода часов:
— Если установлена микросхема RTC DS1307, то корректировка происходит в два этапа:
1). Один раз в сутки, в 23:57 (о чем выводится соответствующая надпись на дисплее) происходит корректировка на ближайшее, от установленного значения, целое количество секунд.
2). Один раз в десять суток в 23:57 осуществляется дополнительная корректировка обеспечивающая точность хода до 0.1 секунды/сутки в среднем за 10 дней. Десятидневный счетчик обнуляется каждый раз, как только пользователь изменит значение корректировки.
Примечание: 1). Во время проведения коррекции, часы не реагируют на внешние раздражители. 2). На промежуток времени с 23:56 до 23:59 установлен запрет на установку будильников.
— Если установлена микросхема RTC M41T56, то корректировка осуществляется с использованием встроенных возможностей самой микросхемы. Корректировка распределена на протяжении суток, а так же работает при отсутствии питания, т.е. при питании от резервной батареи.
Система инфракрасного контроля «sIRCo»
Поддерживается дистанционное управление от пульта по протоколу RC5 (поддержка других протоколов в разработке).
Для управления и синхронизации часов с компьютером разработана система инфракрасного контроля «sIRCo». Аппаратная часть основана на USB устройстве, которое управляется контроллером ATTiny45. Программная часть позволяет управлять часами так же, как с пульта дистанционного управления или кнопками часов, а также осуществить синхронизацию времени и даты в часах со временем и датой компьютера.
Примечания:
1. Jmp1. Jmp4 предназначены для программирования ATTINY в готовом устройстве,
2. При программировании контроллера:
— перемычки Jmp1, Jmp2 и Jmp3 снять;
— перемычку Jmp4 установить, или программировать до установки VD5, IR.
Прошивку, варианты схем, разводку печатных плат, драйвер устройства, программу «sIRCo» можно скачать здесь.
Ряд других, не видимых, оптимизаций, усовершенствований, которые, мы надеемся, обеспечат приятную и комфортную работу Вашего устройства…
Fuse для прошивки микроконтроллеров, применяемых в часах.
Fuse микроконтроллера ATMega168 для некоторых программаторов и программ:
Fuse микроконтроллера ATTiny45 для некоторых программаторов и программ:
Внешний вид часов:
Скачать:
HEX файл: Русский (
13kB), Украинский (
13kB), Английский (
Вся документация проекта, включая большинство datasheet используемых компонентов, здесь (
С уважением: Автор проекта — Даниил Перваков (Danko)
Автор статьи — Николай Ланчак (NickNI)
Краткое описание
Я не буду останавливаться на работе шины IIC, отмечу только что обе микросхемы имеет адрес 0xd0. Для работы с временем микросхемы содержат семь регистров счета и регистр управления. Регистры счета содержат числа в двоично-десятичном формате, однако некоторые биты имеют особое значение.
Регистры
xxx — значение бита не определено.
функция | индекс | биты | возможные значения | |||||||
---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
секунды | 0x00 | ST | десятки секунд | единицы секунд | 0 — 59 | |||||
минуты | 0x01 | xxx | десятки минут | единицы минут | 0 — 59 | |||||
часы | 0x02 | SEB | SB | десятки часов | единицы часов | 0 — 23 | ||||
день | 0x03 | xxx | xxx | xxx | xxx | xxx | день недели | 1 — 7 | ||
день месяца | 0x04 | xxx | xxx | десятки дня | единицы дня | 1 — (28|29|30|31) | ||||
месяц | 0x05 | xxx | xxx | xxx | дес | единицы месяца | 1 — 12 | |||
год | 0x06 | десятки года | единицы года | 0 — 99 | ||||||
регистр управления | 0x07 | OUT | FT | S | величина коррекции | — |
бит | после сброса | описание |
---|---|---|
ST | x | При записи 1 в этот бит генератор останавливается |
CEB | x | Когда бит CEB (Century Enable Bit) установлен, то при достижении нового века бит CB (Century Bit) поменяет значение на противоположное. |
CB | x | |
OUT | 1 | Когда биты OUT (OUTput level) и FT (Frequency Test) равны нулю, вывод FT/OUT прижимается к земле. При FT=1 на выводе FT/OUT 512 Гц и бит OUT не имеет значения. |
FT | 0 | |
S | x | Знак калибровки хода RTC. |
Различия начинаются в назначении битов 7, 6 и 5 регистра часов. В M41T56 биты 7 и 6 используются для индикации перехода в новое столетие, а биты 5 и 4 используются для счета десятков часов. Причем счет часов возможен только в режиме 24, режим AM/PM недоступен. В DS1307 бит 7 не используется, ноль в бите 6 указывает, что используется режим счета 24 и этом случае биты 5 и 4 содержат десятки часов. Если в бите 6 единица, то бит 5 становится флагом AM/PM, а бит 4 содержит десятки часов.
Существенные отличия есть в регистре управления, которой содержит слово коррекции хода.
Коррекция хода
M41T56 позволяет компенсировать погрешность кварцевого резонатора в диапазоне от -62 до +124 ppm, что дает отклонение не более чем ±5 секунд за месяц. За компенсацию отвечают шесть младших битов управляющего регистра. Биты 4-0 содержат целое число без знака величины коррекции, а бит 5 задает направление коррекции. Если бит 5 содержит ноль, то ход замедляется с шагом 2.034 ppm, в противном случае RTC ускоряется с шагом 4.068 ppm. Это неудобно, поэтому я набросал пару простых функций для преобразования из ppm в слово коррекции и обратно.
Детектирование сбоев
Ни DS1307, но M41T56 не умеют детектировать сбои генерации, но гарантируют, что при включении питания некоторые биты будут в определенном состоянии. M41T56 при включении в управляющем регистре будет 10xxxxxx. Для отслеживания сбоев в программе можно придерживаться следующего алгоритма. Если при включении микроконтроллера регистр управления RTC содержит 10xxxxxx, значит был сбой питания и в регистр нужно записать значение, старшие биты которого не равны 10. Самое простое — записать слово коррекции с битами 7 и 6 равными нулю.
Классика для часов реального времени.
Назначение выводов:
Функциональная схема:
Назначение регистров:
Функция чтения данных времени из M41T56
Функция сохранения данных
Функции чтения и сохранения данных калибровочной константы
Функции преобразования двоично-десятичных чисел в двоичные и обратно