DS 1307 + батарейка - не стартуют часы
DS 1307 + батарейка - не стартуют часы
Добрый день всем!
Подскажите новичку:
собираю таймер на Atmega8 + DS1307 программа своя(учусь) использую TWI, проблема - при выключении питания часы впадают в ступор, т.е. возвращаю питание - на индикаторе тоже время что и после выключения + часы стоят.
Если в программе при старте обнулять нулевой байт регистра DS1307 то все хорошо, время помнят, часы тикают...
Получается, у меня DS1307 при выключении не запоминает состояние бита СН? А ведь вроде по даташиту должна? Батарейка присутствует, напряжение на ноге №3 по моему тестеру 3,3 вольта.
Подскажите новичку:
собираю таймер на Atmega8 + DS1307 программа своя(учусь) использую TWI, проблема - при выключении питания часы впадают в ступор, т.е. возвращаю питание - на индикаторе тоже время что и после выключения + часы стоят.
Если в программе при старте обнулять нулевой байт регистра DS1307 то все хорошо, время помнят, часы тикают...
Получается, у меня DS1307 при выключении не запоминает состояние бита СН? А ведь вроде по даташиту должна? Батарейка присутствует, напряжение на ноге №3 по моему тестеру 3,3 вольта.
Re: DS 1307 + батарейка - не стартуют часы
Может чип дубовый,у меня сейчас на столе подобный часы идут,проблем нет с включение/выключением.
- Goodefine
- Держит паяльник хвостом
- Сообщения: 906
- Зарегистрирован: Ср апр 16, 2008 13:22:54
- Откуда: Приднестровье, Тирасполь
Re: DS 1307 + батарейка - не стартуют часы
Схему и программу было бы неплохо увидеть...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Re: DS 1307 + батарейка - не стартуют часы
Во вложении программа и схема, на схеме нет резисторов на линиях индикатора и диодов которые есть в реальности.
Прошу не бить по поводу программы она у меня первая и еще в процессе...
UPD.
При первом запуске с раскомментированной строкой rcall settime
Если раскомментировать ;rcall timeinit то часы идут и время помнят но при этом обнуляются секунды
Прошу не бить по поводу программы она у меня первая и еще в процессе...
UPD.
При первом запуске с раскомментированной строкой rcall settime
Если раскомментировать ;rcall timeinit то часы идут и время помнят но при этом обнуляются секунды
- Вложения
-
- ds1307.jpg
- (79.57 КБ) 810 скачиваний
-
- TWIclock1.asm
- (10 КБ) 331 скачивание
- Goodefine
- Держит паяльник хвостом
- Сообщения: 906
- Зарегистрирован: Ср апр 16, 2008 13:22:54
- Откуда: Приднестровье, Тирасполь
Re: DS 1307 + батарейка - не стартуют часы
Нет времени разбираться в асме. Попробуйте по логике сделать как то так:
Это для ds1302, но думаю должно быть что то похожее...
Код: Выделить всё
void rtc_init(void)
{ uchar8 data;
RTC_RESET_LOW();
RTC_DATA_LINE_IS_INPUT();
NOP();
RTC_CLK_LOW();
NOP();
write_ds1302(CONTROL_REGISTER,UNPROTECT);
data = read_ds1302(0x81);
if (CHECK_BIT(data,7))
write_ds1302(0x80,0x00); // if bit 7 is high, Clock is stopped
write_ds1302(0x90,0xa5);
write_ds1302(CONTROL_REGISTER,PROTECT);
}
Это для ds1302, но думаю должно быть что то похожее...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: DS 1307 + батарейка - не стартуют часы
если потерпишь пару дней, посмотрю код, ща немного занят.
как говорится - ASM forever
своих не бросаем!
как говорится - ASM forever
своих не бросаем!Re: DS 1307 + батарейка - не стартуют часы
Vov123 писал(а):Может чип дубовый,у меня сейчас на столе подобный часы идут,проблем нет с включение/выключением.
Скорее я дубовый
Goodefine писал(а):Нет времени разбираться в асме. Попробуйте по логике сделать как то так:
спасибо, попробую
GP1 писал(а):если потерпишь пару дней, посмотрю код, ща немного занят.
как говорится - ASM forever![]()
![]()
своих не бросаем!
потерплю сколько надо
Да асм мне както роднее
- Alex Medvedev
- Встал на лапы
- Сообщения: 95
- Зарегистрирован: Сб мар 01, 2008 12:27:44
- Контактная информация:
Re: DS 1307 + батарейка - не стартуют часы
Похоже что на самом деле чип дубовый =)
Я кстати тоже эти часы не очень давно раскуривал, таких глюканов небыло . тоже всё на асме писал. Если интересно посмотри у меня на сайте http://avrdevices.ru/chasi-realynogo-vremeni-ds1307/.
Я кстати тоже эти часы не очень давно раскуривал, таких глюканов небыло . тоже всё на асме писал. Если интересно посмотри у меня на сайте http://avrdevices.ru/chasi-realynogo-vremeni-ds1307/.
Re: DS 1307 + батарейка - не стартуют часы
Alex Medvedev писал(а):Похоже что на самом деле чип дубовый =)
Купил другой чип, проблема осталась
"Будем искать"...
Re: DS 1307 + батарейка - не стартуют часы
Набросайте простенькую программку на C.От чужого asm-ма у многих голова начинает болеть.
Re: DS 1307 + батарейка - не стартуют часы
Vov123 писал(а):Набросайте простенькую программку на C.
Не... я еще с асмом не разобрался
Это я уже понял...От чужого asm-ма у многих голова начинает болеть.
Re: DS 1307 + батарейка - не стартуют часы
А так и должно быть. По умолчанию 7-ой бит в регистре секунд установлен и часы стоят. Какой смысл считать непонятно какое время? При записи же правильного времени, а 59 в BCD формате это 0b01011001 7-ой бит в регистре секунд автоматом сбросится и часы запустятся.
Вам надо ввести в программу функцию установки часов, все равно без этого нормально пользоваться Вашим девайсом не получится. При старте программы считывайте время, контроллируйте 7-ой бит в регистре секунд и если он установлен выводите прочерки типа --:--. Если сброшен - выводите время. Ну или если индикатора вообще нет, то все равно нужно как то часы установить, тут Вам виднее что из интерфейсов есть, а чего нет.
Вам надо ввести в программу функцию установки часов, все равно без этого нормально пользоваться Вашим девайсом не получится. При старте программы считывайте время, контроллируйте 7-ой бит в регистре секунд и если он установлен выводите прочерки типа --:--. Если сброшен - выводите время. Ну или если индикатора вообще нет, то все равно нужно как то часы установить, тут Вам виднее что из интерфейсов есть, а чего нет.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: DS 1307 + батарейка - не стартуют часы
-=Den=- писал(а):Если раскомментировать ;rcall timeinit то часы идут и время помнят но при этом обнуляются секунды
Код: Выделить всё
timeinit:
...
; Передача байта данных (Пишем в регистр)
ldi r16, 0b00000000
out TWDR, r16
ты же сам сбрасываешь секунды в 00 и запускаешь часы.
если часы уже тикают, то чтобы секунды не сбрасывались надо прочитать Reg00, посмотреть состояние бита 7, и если он сброшен пропустить инициализацию (включение часов)
При первом запуске с раскомментированной строкой rcall settime
вот тут не совсем понял саму фразу

ps ты бы проектик прицепил.
Re: DS 1307 + батарейка - не стартуют часы
Вот схемотехника старых телевизоров - timer сoхраняет работоспособность до bat=0.72
- Вложения
-
- cx_timer.jpg
- (18.08 КБ) 708 скачиваний
Re: DS 1307 + батарейка - не стартуют часы
Qwertty писал(а):Вам надо ввести в программу функцию установки часов, все равно без этого нормально пользоваться Вашим девайсом не получится.
Конечно надо, но к этому шагу я еще не дошел, пока устанавливаю программно.
Qwertty писал(а): При старте программы считывайте время, контроллируйте 7-ой бит в регистре секунд и если он установлен выводите прочерки типа --:--. Если сброшен - выводите время.
Почти так и сделал, считываю нулевой регистр, сбрасываю 7-ой бит при этом не трогая остальные биты потом записываю полученный байт обратно. В таком варианте часы нормально работают.
GP1 писал(а):ты же сам сбрасываешь секунды в 00 и запускаешь часы.
если часы уже тикают, то чтобы секунды не сбрасывались надо прочитать Reg00, посмотреть состояние бита 7, и если он сброшен пропустить инициализацию (включение часов)
У меня получается, что бит 7 всегда при включении питания установлен ...
GP1 писал(а):При первом запуске с раскомментированной строкой rcall settime
вот тут не совсем понял саму фразу
ну это моя программная установка времени, это временно, пока кнопки не припаял.
-
diehard
- Встал на лапы
- Сообщения: 101
- Зарегистрирован: Вт дек 05, 2006 23:17:02
- Откуда: Краснодарский край
Re: DS 1307 + батарейка - не стартуют часы
IMHO перепутано питание VСС и BATT. Проверь внимательно.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: DS 1307 + батарейка - не стартуют часы
-=Den=- писал(а):У меня получается, что бит 7 всегда при включении питания установлен ...
тогда проверь работу DS-ки в автономке, задай генерацию импульсов на выходе SQW/OUT, и посмотри тикают они в автономе или нет
Re: DS 1307 + батарейка - не стартуют часы
diehard писал(а):IMHO перепутано питание VСС и BATT. Проверь внимательно.
С питанием все правильно.
GP1 писал(а):тогда проверь работу DS-ки в автономке, задай генерацию импульсов на выходе SQW/OUT, и посмотри тикают они в автономе или нет
После того, как стал считывать при старте нулевой регистр, сбрасывать 7-ой бит при этом не трогая остальные биты потом записывать полученный байт обратно - часы идут так как положено и работают в автономке нормально.
Может, все таки, этот 7 бит и должен при каждом включении вручную сбрасываться?
В общем пока оставлю для себя этот вопрос открытым, может когда-нибудь дойдет что я не так делаю.
Всем спасибо кто пытался мне помочь

- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: DS 1307 + батарейка - не стартуют часы
Толи лыжи не едут...
ты же сам пишешь:
если ты хотя бы раз, после подключения батарейки, сбросишь в 0 7-й бит R00 часы будут идти как положено
ты же сам пишешь:
-=Den=- писал(а):После того, как стал считывать при старте нулевой регистр, сбрасывать 7-ой бит при этом не трогая остальные биты потом записывать полученный байт обратно - часы идут так как положено и работают в автономке нормально.
если ты хотя бы раз, после подключения батарейки, сбросишь в 0 7-й бит R00 часы будут идти как положено
