Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR + часы + календарь
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
impuls-v
есть такой вопрос. Собираю устройство на ATmega8535 подключенно к RS232, требуется чтобы устройство имело свои независимые от ПК часы с календарем, и необходимо иметь возможность установки часов с ПК.
Подскажите как реализовать данную функцию.
ROC
Цитата(impuls-v @ May 5 2006, 01:16) *
есть такой вопрос. Собираю устройство на ATmega8535 подключенно к RS232, требуется чтобы устройство имело свои независимые от ПК часы с календарем, и необходимо иметь возможность установки часов с ПК.
Подскажите как реализовать данную функцию.

Взять RTC и реализовать. Например, что-нибудь типа DS1302
smile.gif
Конкретнее, что надо, что за девайс, что по RS232 и в какую сторону идет.
гадалка в отпуске biggrin.gif
sseett
Часы - календарь DS1307 от Даллас.
Дешево и сердито. Управление по I2C.
Пример применения (на русском) по ссылке http://www.platan.ru/shem/pdf/art_2.pdf
Удачи!
haker_fox
Цитата(impuls-v @ May 5 2006, 06:16) *
есть такой вопрос. Собираю устройство на ATmega8535 подключенно к RS232, требуется чтобы устройство имело свои независимые от ПК часы с календарем, и необходимо иметь возможность установки часов с ПК.
Подскажите как реализовать данную функцию.


Как уже и говорили выше, можно использовать микросхему часы-календарь DS1307. В моем девайсе именно она стоит, под управлением ATmega16. Плюсы данного решения: наличие батарейки (автономность), распространенность данного решения (могут помочь программами, советами) и др. Минусы: пока не ощущал.
Igor26
Цитата(haker_fox @ May 5 2006, 08:44) *
Цитата(impuls-v @ May 5 2006, 06:16) *

есть такой вопрос. Собираю устройство на ATmega8535 подключенно к RS232, требуется чтобы устройство имело свои независимые от ПК часы с календарем, и необходимо иметь возможность установки часов с ПК.
Подскажите как реализовать данную функцию.


Как уже и говорили выше, можно использовать микросхему часы-календарь DS1307. В моем девайсе именно она стоит, под управлением ATmega16. Плюсы данного решения: наличие батарейки (автономность), распространенность данного решения (могут помочь программами, советами) и др. Минусы: пока не ощущал.

Один из минусов - это уход времени, если применять обычный часовой кварц. Гораздо лучше генератор, или SMD-кварц. А программных минусов нет, это точно.
add
Можно программно реализовать. Часы и календарь занимают немного памяти. Плюсы DS1307: 1.Низкое энергопотребление 2. независимый источник питания. Минусы: 1.Внешний интерфейс (и собственно работа с ним..). 2. Дополнительные затраты на дополнительные компоненты. Так что думаю если контроллер подключен к компу, те постоянно, стационарно установлен...то вопрос с энергопотреблением вроде отпадает. Пишите часы с календарем программно (думаю прибавлять секунды, и вовремя переводить часы нет больших затруднений. А календарь прописать таблицей). Удачи.
otrog
Цитата
Один из минусов - это уход времени, если применять обычный часовой кварц. Гораздо лучше генератор, или SMD-кварц. А программных минусов нет, это точно.

Обратите внимание на http://kazus.ru/lenta/view/0_6054_0.html ohmy.gif
Обещают +-2 минуты в год w00t.gif Без внешнего кварца w00t.gif В широком диапазоне температур w00t.gif
Правда пока дороговато http://www.efind.ru/icsearch/?search=DS3231&update=1 huh.gif
haker_fox
Цитата(add @ May 5 2006, 14:20) *
Можно программно реализовать. Часы и календарь занимают немного памяти. Плюсы DS1307: 1.Низкое энергопотребление 2. независимый источник питания. Минусы: 1.Внешний интерфейс (и собственно работа с ним..). 2. Дополнительные затраты на дополнительные компоненты. Так что думаю если контроллер подключен к компу, те постоянно, стационарно установлен...то вопрос с энергопотреблением вроде отпадает. Пишите часы с календарем программно (думаю прибавлять секунды, и вовремя переводить часы нет больших затруднений. А календарь прописать таблицей). Удачи.


Да, часы и календарь занимают немного памяти. Работал и с ним, но у меня почему-то программные часы "уходили" в одну из сторон (+ или -) гораздо больше, чем с DS1307, при использовании того же самого кварца, но это наверно от кривости моих рук. Правда в этом случае и автономность питания гораздо больше заморочек создает. Если девайс постоянно подключен к компу, это еще наверно не гарантирует, что комп будет постоянно включе smile.gif Так, что я рекомендовал бы все-таки специализированную часовую МС. Работа с протоколом I2C не очень сложна, библиотеки для работы есть в прикрепленной теме.

Отдельное спасибо Igor26 я совсем забыл про уход времени, при применении "обычного" кварца. В моем случае личилось подвешиванием построечного кондера с земли на одну из ного кварца. Какой точно сти добился, сказать не могу.
ivstech
Пользовался PCF от филипса, в магазине 90 руб (стоит как контроллер), потом решил сэкономить, поставил часовой кварц на Timer2 Atmega8, которая при отключении питания переходит в спящий режим с питанием от батарейки, просыпается раз в 8 секунд, потребляет не больше, чем PCF. Это не значит, что точность составляет +-8 секунд, есть еще промежуточные значения TCNT. Плюсы такого решения: освобождаются ноги, i2c не нужен, контроллер питается от батарейки - содержимое RAM не нарушается. Еще: работая от внутреннего RC, калибрую его постоянно, сверяясь с часовым кварцем. P.S. Конденсаторы не нужны, достаточно включить CKOPT...
add
Цитата
Правда в этом случае и автономность питания гораздо больше заморочек создает. Если девайс постоянно подключен к компу, это еще наверно не гарантирует, что комп будет постоянно включен

Ну комп то тут непричем! Вы можете хоть от батареек питать контроллер. Мне приходилось реализовывать часы программно. Уход за 2 месяца был примерно 30сек. Да много.Решается колибровкой и т.д. Если сделать програмную корекцию (а внашем случае это должно быть доступно(Контроллер подключен(иногда) к компу) то все должно работать.

Цитата
Работа с протоколом I2C не очень сложна

Согласен, но НЕТ входных данных :-) а именно :Есть ли ценовое ограничение? Прямые ли руки у вопрошаемого? А может ли Он купить DS1307? Сколько времени на разработку? и т.д.
haker_fox
Цитата(add @ May 5 2006, 15:19) *
Цитата
Правда в этом случае и автономность питания гораздо больше заморочек создает. Если девайс постоянно подключен к компу, это еще наверно не гарантирует, что комп будет постоянно включен

Ну комп то тут непричем! Вы можете хоть от батареек питать контроллер. Мне приходилось реализовывать часы программно. Уход за 2 месяца был примерно 30сек. Да много.Решается колибровкой и т.д. Если сделать програмную корекцию (а внашем случае это должно быть доступно(Контроллер подключен(иногда) к компу) то все должно работать.

Цитата
Работа с протоколом I2C не очень сложна

Согласен, но НЕТ входных данных :-) а именно :Есть ли ценовое ограничение? Прямые ли руки у вопрошаемого? А может ли Он купить DS1307? Сколько времени на разработку? и т.д.


1. Ок.

2.1. Ценовое ограничение... не совсем понимаю о чем речь. Цены на ту же DS1307 я видел от 42 до 75 руб.
2.2. Если руки кривые (это не относится не кому, просьба не обижаться) то нужно либо от них избавляться (повышать уровень знаний), либо вообще не заниматься программированием.
3.3. Сколько времени на разработку? А сколько времени нужно для реализации программных часов? От силы 2 - 4 часа (для меня, пока разобрался, пока протестировал на високосный год и тп). В случае с МС часов: нужно прочесь даташит и заюзать МС. У меня ушло в общей сложности на все это 2 часа.
add
OFF TOP:
Цитата
Ценовое ограничение... не совсем понимаю о чем речь. Цены на ту же DS1307 я видел от 42 до 75 руб.

Ну тут как посмотреть:-).. :если у вас партия 1000 штук, то "небольшая" разница 33т. руб. ..да?! Даже 10 штук это уже 500р.
Цитата
2.2. Если руки..

:-)
Цитата
3.3. Сколько времени на разработку? А сколько времени нужно для реализации программных часов? От силы 2 - 4 часа

Если бы человек мог за 2 часа (как Вы :-)) реализовать устройство, он не задавал бы вопросов в форум.
defunct
В mega8 есть RTC,
к XTAL подключить часовой кварц, а контроллер тактировать от внутреннего RC.
Таймер 2 настроить на работу в режиме RTC, но и часы и календарь конечно же придется реализовывать программно, но это imho не сильно сложная задача (во всяком случае не сложнее чем разобраться с протоколом DS1307).
Минусом такого подхода будут - затраты времени на проектирование схемы автономного питания и написание программы для работы в энергосберегающем режиме.

Если нужно низкое энергопотребление и относительно небольшая цена, то можно вообще отказаться от AVR, а взять например MSP430 со сверхнизким энергопотреблением каждый из которых умеет тактироваться от часового кварца, низшие чипы MSP430 - 11x1 будут стоит как раз в районе одной DS1307.

Все зависит от целевой задачи автора вопроса.
impuls-v
Цитата
есть такой вопрос. Собираю устройство на ATmega8535 подключенно к RS232, требуется чтобы устройство имело свои независимые от ПК часы с календарем, и необходимо иметь возможность установки часов с ПК.
Подскажите как реализовать данную функцию.


Нужно реализовать именно программно на ATmega8535 без внешних микросхем часов.
Кто делал подобное дайти примерчик.
defunct
Цитата(impuls-v @ May 6 2006, 00:07) *
Нужно реализовать именно программно на ATmega8535 без внешних микросхем часов.
Кто делал подобное дайти примерчик.

Примерчик чего? Кода или схемы? ;>
Посмотрел даташит на 8535 в нем тоже Timer 2 поддерживает внешнее тактирование от часового кварца.
Смотрите раздел даташита "Asynchronous Operation of the Timer/Counter" cтр. 130-133.

вас должен заинтересовать режим тактирования таймера от внешнего кварца:

• Bit 3 – AS2: Asynchronous Timer/Counter2
When AS2 is written to zero, Timer/Counter2 is clocked from the I/O clock, clkI/O. When
AS2 is written to one, Timer/Counter2 is clocked from a crystal Oscillator connected to
the Timer Oscillator1 (TOSC1) pin
.
haker_fox
Цитата(impuls-v @ May 6 2006, 06:07) *
Цитата
есть такой вопрос. Собираю устройство на ATmega8535 подключенно к RS232, требуется чтобы устройство имело свои независимые от ПК часы с календарем, и необходимо иметь возможность установки часов с ПК.
Подскажите как реализовать данную функцию.


Нужно реализовать именно программно на ATmega8535 без внешних микросхем часов.
Кто делал подобное дайти примерчик.


Программный "примерчик" можно найти в прикрепленной теме... есть там библиотека AVRLib http://hubbard.engr.scu.edu/embedded/avr/avrlib/ ну а в ней, есть пример, называется rtc.c.
Old1
Цитата(impuls-v @ May 6 2006, 00:07) *
...Нужно реализовать именно программно на ATmega8535 без внешних микросхем часов.
Кто делал подобное дайти примерчик.

Посмотрите апнот AVR134 там же рядом и пример на С.
AndreyMS
Ramtron Processor Companion, Энергонезависимая оперативка + RTC + таймер - счетчик + мониторинг питания. Есть хотя бы здесь
CDT
Цитата(impuls-v @ May 5 2006, 00:16) *
есть такой вопрос. Собираю устройство на ATmega8535 подключенно к RS232, требуется чтобы устройство имело свои независимые от ПК часы с календарем, и необходимо иметь возможность установки часов с ПК.
Подскажите как реализовать данную функцию.


А в чем проблема?

Делаешь в программе место, в которое заходишь с определенной регулярностью (идеально расчитанный цикл программы, а лучше прерывание от таймера).

В этом месте делаешь счетчик, который доводит эту регулярность до одной секунды и, при достижении этого события, ставит флаг.

В любом месте, но с регулярностью менее 1 секунды проверяешь флаг и, если он стоит - сбрасываешь его и прибавляешь к насчитанному времени 1 сек в двоичном, двоичном побайтном, BCD или любом другом любимом формате. В процессе прибавления проверяешь число дней в месяце, високосный год и прочие необходимости.

Чтобы точность была хорошая кварц надо брать не менее 30ppm, а один из конденсаторов поставить подстроечным. позаботиться о хорошем ТКЕ обоих конденсаторов. Потом частоту кварца подстроить с максимальной точностью, измеряя ее не на выводах кварца, а на выходе порта процессора, где сгенерировать любым доступным способом импульсы, частота которых зависит только от частоты генератора процессора. Подстроечником частота должна менять в обе стороны от желаемого значения. Если это не удается - надо сменить тип или производителя кварца.

При установке (коррекции) не забывайте поправлять и секундный делитель.

Как прибавлять 1 к чему-нибудь найдете в букварях.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.