Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Странное (?) поведение часиков DS1307. Нужен совет... (+)
Отправлено
EagleB3 29 сентября 2009, г. 10:55
Делаю дивайс (ни разу не коммерческий...) на ATMEGA8535, среда - CVAVR.
По замыслу, основной рабочий цикл запускается по внешнему прерыванию от часиков DS1307 - один раз в секунду. Соответственно при старте дивайса часики инитятся (стандартной CVAVR'овской функцией) так, чтобы они стали выдавать 1Гц.
Дошел до железа. Дважды столкнулся с такой бедой: несмотря на мой инит, 1Гц я не получаю. Пока не впишу в часы какую-нибудь дату. Или не прочитаю какую-нибудь дату (или время? до конца не разобрался. Но одного инита не хватает). Оба раза проблема была при первом включении дивайса после длительного хранения без бекапной батарейки на часах (первый раз - сразу после сборки и второй раз - после недельного перерыва в экспериментах).
Не прояснит ли кто-нибудь такое поведение часиков?
В дивайсе будет бекапная батарейка для DS1307. Но коли такое поведение наблюлось, то, видимо, надо бы сделать антиграбли.
Мыслю так: при запуске буду считать часики не генерирующими (остановленными). Буду пытаться что-то от них прочитать прямо в ините. Далее буду дергать основной рабочий цикл от таймера один раз в секунду. В начале или в конце цикла буду пытаться договориться с часиками (что-то из них прочитать или что-то в них записать). Как только возникнет первое внешнее прерывание от часиков, буду считать часики запущенными и таймер остановлю - рабочий цикл будет дергаться в прерывании от часов. Ватчдог будет сбрасываться в прерывании от часиков и в прерывании от таймера; а ежели пррывание от ватчдога возникнет - то опять штатный инит: часики считаются остановленными, раз-в-секундный таймер будет запущен. Что скажете? Так хорошо? Или так плохо? Или так вообще не надо?
Составить ответ | Вернуться на конференцию.
Ответы
- бит CH в регистре 00: clock halt - MIKE (29.09.2009, 12:52:57 83.243.67.215, пустое)
- Спасибо всем!!! Думаю, что правильное включение Vbat и чтение после инициализации помогут делу. - EagleB3 (29.09.2009, 12:52:20 188.162.235.166, пустое)
- дык вроде они и в правду начинают идти от первого чтения - это чтоб на складах лежало и не кушало элемент питания, и это вроде у DS раньше для других ходиков описывалось... Но я б так (по прерыванию от ходиков) делать не стал - МК много надежней их, зачем ставить его в зависимость от них... Поспал - проснулся-почесался-залез в часы -снова поспал обычно делаю.... - basilmak (29.09.2009, 12:05:44 82.142.173.231, пустое)
- Что значит "инитится"? (+): - argus98 (29.09.2009, 11:51:35 81.22.205.230, 281 байт)
- Для начала проверь, чтоб напряжение на выводе бакапа не было больше, чем от нормальной батарейки - Неспящие_ (29.09.2009, 11:00:37 192.168.24.76,89.184.24.74, 86 байт)