roboforum.ru

Технический форум по робототехнике.

Часы ds1307

Учиться можно на своих ошибках, но учиться на чужих — быстрее и дешевле ;)

Часы ds1307

Сообщение galex1981 » 27 фев 2010, 11:00

Столкнулся с проблемой: Сделал платку на которой установил RTC ds1307, включил, установил правильное время, а часы то и не ходят. Выключил- обратно включил - так и не ходят. Оказывается при установке времени следует обратить внимание на 7й бит по адресу 0x0h (установка секунд). Это бит разрешения/запрета осцилляции CH. По-умолчанию он установлен в 1 - запрет осцилляции. Так как в моем проекте секунды я не учитывал потому и не обратил внимания на установку этого бита в 0.
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Часы ds1307

Сообщение marsden » 13 апр 2010, 20:51

вообще-то это в даташите жирным шрифтом выделено, что при включении состояние регистров неопределено и запускать надо ручками. Немного недопонимаю логику разработчиков, ну да ладно...
А вот как справиться с другими граблями? У меня на двух разных чипах одна и та же проблема - никак не хотят записываться 3,4,5 регистры, то есть день, число и месяц. Время записывается, год тоже - а эта троица всегда единица. И при этом еще не происходит переход на следующий день. То есть ставлю 23:59, жду минуту и вижу, что время обнулилось, а дата так и осталась 01/01/10
marsden
 
Сообщения: 6
Зарегистрирован: 13 апр 2010, 20:47

Re: Часы ds1307

Сообщение AndreiSk » 14 апр 2010, 22:41

походу надо в 4,5,6 писать, а не в 3,4,5

#define DS1307_DATE_REG 4
#define DS1307_MONTH_REG 5
#define DS1307_YEAR_REG 6

3 должен быть вычисляемый (день недели) :roll:
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Часы ds1307

Сообщение marsden » 15 апр 2010, 05:49

Ну да, так и есть, 3 - день недели, 4 - число, 5 - месяц, 6 - год. Я почему и мучаюсь с этими часами - не хочет устанавливать именно день недели, число и месяц. Год и время устанавливается, а эти три - никак. Четыре чипа (три из одной партии) - на всех одна и та же беда. И не переходит в полночь на следующий день.
А по поводу дня недели - его задаешь и он сам должен циклично его перещелкивать в полночь, так что с ним заморочек нет особых. Если бы он еще задавался....
marsden
 
Сообщения: 6
Зарегистрирован: 13 апр 2010, 20:47

Re: Часы ds1307

Сообщение galex1981 » 15 апр 2010, 09:46

Приведи свою схему подключения часов (я понимаю что она типа стандартная - все равно приведи)
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Часы ds1307

Сообщение AndreiSk » 15 апр 2010, 10:42

эт наверное не ко мне вопрос,
но все же.. я с спаркфана брал, там и схема есть
http://www.sparkfun.com/commerce/produc ... ucts_id=99
у меня все работало. Может ему батарея нужна постоянно?
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Часы ds1307

Сообщение galex1981 » 15 апр 2010, 10:52

Да, конечно вопрос к marsden. А вообще батарея действительно нужна часам постоянно - без нее у меня тоже что то не работало
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Часы ds1307

Сообщение marsden » 19 апр 2010, 21:09

galex1981 вот схема - стандартнее некуда http://s57.radikal.ru/i156/1004/3d/a57affcf65ee.bmp
на номиналы конденсаторов внимания не обращайте - накидал в протеусе, чтобы разводку платы сделать
Сегодня добил плату, до этого все на макетке делал, думал, может приколы из-за макетки, но увы... На нормальной плате то же самое.
marsden
 
Сообщения: 6
Зарегистрирован: 13 апр 2010, 20:47

Re: Часы ds1307

Сообщение Scorpio » 19 апр 2010, 23:35

Может ставить CH=1 перед записью в регистры, а потом запускать часы CH=0? Делал RTC на PCF8583, так там это рекомендовалось в ДШ. А если не остановишь перед записью, то записывалась какая-то хрень.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Часы ds1307

Сообщение marsden » 20 апр 2010, 08:43

сделал так, при записи секунд в нулевой регистр ставлю бит 7, записываю все данные, опять записываю в секундный регистр уже со сброшенным битом - результат тот же - часы идут, год правильный, число/месяц - 01/01 :(((
marsden
 
Сообщения: 6
Зарегистрирован: 13 апр 2010, 20:47

Re: Часы ds1307

Сообщение marsden » 11 май 2010, 13:12

После довольно долгого периода мытарств нашел косяк. Косяк где-то в программе (писано на ассемблере) в работе с ОЗУ - данные считывались в оперативку, потом выдавались в СОМ-порт. Вот тут где-то и случилось обнуление месяца и числа. Если напрямую считываю с часов и выдаю в порт - все нормально, так что часики не виноваты и они мне нравятся больше, чем pcf8583
marsden
 
Сообщения: 6
Зарегистрирован: 13 апр 2010, 20:47

Re: Часы ds1307

Сообщение galex1981 » 11 май 2010, 13:28

Ну вот, говорил же - где то глюк есть. Или железо или программа ;)
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович


Вернуться в Осторожно — грабли ;)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8