DS 1307 + батарейка - не стартуют часы

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
-=Den=-
Родился
Сообщения: 16
Зарегистрирован: Ср янв 28, 2009 17:10:21
Откуда: Украина, Винница

DS 1307 + батарейка - не стартуют часы

Сообщение -=Den=- »

Добрый день всем!
Подскажите новичку:
собираю таймер на Atmega8 + DS1307 программа своя(учусь) использую TWI, проблема - при выключении питания часы впадают в ступор, т.е. возвращаю питание - на индикаторе тоже время что и после выключения + часы стоят.

Если в программе при старте обнулять нулевой байт регистра DS1307 то все хорошо, время помнят, часы тикают...
Получается, у меня DS1307 при выключении не запоминает состояние бита СН? А ведь вроде по даташиту должна? Батарейка присутствует, напряжение на ноге №3 по моему тестеру 3,3 вольта.
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: DS 1307 + батарейка - не стартуют часы

Сообщение Vov123 »

Может чип дубовый,у меня сейчас на столе подобный часы идут,проблем нет с включение/выключением.
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: DS 1307 + батарейка - не стартуют часы

Сообщение Goodefine »

Схему и программу было бы неплохо увидеть...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Аватара пользователя
-=Den=-
Родился
Сообщения: 16
Зарегистрирован: Ср янв 28, 2009 17:10:21
Откуда: Украина, Винница

Re: DS 1307 + батарейка - не стартуют часы

Сообщение -=Den=- »

Во вложении программа и схема, на схеме нет резисторов на линиях индикатора и диодов которые есть в реальности.
Прошу не бить по поводу программы она у меня первая и еще в процессе... :oops:


UPD.
При первом запуске с раскомментированной строкой rcall settime
Если раскомментировать ;rcall timeinit то часы идут и время помнят но при этом обнуляются секунды :(
Вложения
ds1307.jpg
(79.57 КБ) 810 скачиваний
TWIclock1.asm
(10 КБ) 331 скачивание
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: DS 1307 + батарейка - не стартуют часы

Сообщение Goodefine »

Нет времени разбираться в асме. Попробуйте по логике сделать как то так:

Код: Выделить всё

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 + батарейка - не стартуют часы

Сообщение GP1 »

если потерпишь пару дней, посмотрю код, ща немного занят.
как говорится - ASM forever :kill: :kill: :kill: своих не бросаем!
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
-=Den=-
Родился
Сообщения: 16
Зарегистрирован: Ср янв 28, 2009 17:10:21
Откуда: Украина, Винница

Re: DS 1307 + батарейка - не стартуют часы

Сообщение -=Den=- »

Vov123 писал(а):Может чип дубовый,у меня сейчас на столе подобный часы идут,проблем нет с включение/выключением.

Скорее я дубовый :))) но может и чип...

Goodefine писал(а):Нет времени разбираться в асме. Попробуйте по логике сделать как то так:

спасибо, попробую

GP1 писал(а):если потерпишь пару дней, посмотрю код, ща немного занят.
как говорится - ASM forever :kill: :kill: :kill: своих не бросаем!

потерплю сколько надо :))
Да асм мне както роднее
Аватара пользователя
Alex Medvedev
Встал на лапы
Сообщения: 95
Зарегистрирован: Сб мар 01, 2008 12:27:44
Контактная информация:

Re: DS 1307 + батарейка - не стартуют часы

Сообщение Alex Medvedev »

Похоже что на самом деле чип дубовый =)
Я кстати тоже эти часы не очень давно раскуривал, таких глюканов небыло . тоже всё на асме писал. Если интересно посмотри у меня на сайте http://avrdevices.ru/chasi-realynogo-vremeni-ds1307/.
Аватара пользователя
-=Den=-
Родился
Сообщения: 16
Зарегистрирован: Ср янв 28, 2009 17:10:21
Откуда: Украина, Винница

Re: DS 1307 + батарейка - не стартуют часы

Сообщение -=Den=- »

Alex Medvedev писал(а):Похоже что на самом деле чип дубовый =)

Купил другой чип, проблема осталась :(
"Будем искать"...
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: DS 1307 + батарейка - не стартуют часы

Сообщение Vov123 »

Набросайте простенькую программку на C.От чужого asm-ма у многих голова начинает болеть.
Аватара пользователя
-=Den=-
Родился
Сообщения: 16
Зарегистрирован: Ср янв 28, 2009 17:10:21
Откуда: Украина, Винница

Re: DS 1307 + батарейка - не стартуют часы

Сообщение -=Den=- »

Vov123 писал(а):Набросайте простенькую программку на C.

Не... я еще с асмом не разобрался :)
От чужого asm-ма у многих голова начинает болеть.
Это я уже понял...
Qwertty
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Сб окт 31, 2009 12:34:44

Re: DS 1307 + батарейка - не стартуют часы

Сообщение Qwertty »

А так и должно быть. По умолчанию 7-ой бит в регистре секунд установлен и часы стоят. Какой смысл считать непонятно какое время? При записи же правильного времени, а 59 в BCD формате это 0b01011001 7-ой бит в регистре секунд автоматом сбросится и часы запустятся.
Вам надо ввести в программу функцию установки часов, все равно без этого нормально пользоваться Вашим девайсом не получится. При старте программы считывайте время, контроллируйте 7-ой бит в регистре секунд и если он установлен выводите прочерки типа --:--. Если сброшен - выводите время. Ну или если индикатора вообще нет, то все равно нужно как то часы установить, тут Вам виднее что из интерфейсов есть, а чего нет.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: DS 1307 + батарейка - не стартуют часы

Сообщение GP1 »

-=Den=- писал(а):Если раскомментировать ;rcall timeinit то часы идут и время помнят но при этом обнуляются секунды :(

Код: Выделить всё

timeinit:
...
; Передача байта данных (Пишем в регистр)
          ldi r16, 0b00000000
          out TWDR, r16

ты же сам сбрасываешь секунды в 00 и запускаешь часы.
если часы уже тикают, то чтобы секунды не сбрасывались надо прочитать Reg00, посмотреть состояние бита 7, и если он сброшен пропустить инициализацию (включение часов)

При первом запуске с раскомментированной строкой rcall settime

вот тут не совсем понял саму фразу :dont_know:

ps ты бы проектик прицепил.
Чем дальше, тем больше становлюсь занудой...
Изображение
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: DS 1307 + батарейка - не стартуют часы

Сообщение FUZZY_ »

Вот схемотехника старых телевизоров - timer сoхраняет работоспособность до bat=0.72
Вложения
cx_timer.jpg
(18.08 КБ) 708 скачиваний
Аватара пользователя
-=Den=-
Родился
Сообщения: 16
Зарегистрирован: Ср янв 28, 2009 17:10:21
Откуда: Украина, Винница

Re: DS 1307 + батарейка - не стартуют часы

Сообщение -=Den=- »

Qwertty писал(а):Вам надо ввести в программу функцию установки часов, все равно без этого нормально пользоваться Вашим девайсом не получится.

Конечно надо, но к этому шагу я еще не дошел, пока устанавливаю программно.

Qwertty писал(а): При старте программы считывайте время, контроллируйте 7-ой бит в регистре секунд и если он установлен выводите прочерки типа --:--. Если сброшен - выводите время.

Почти так и сделал, считываю нулевой регистр, сбрасываю 7-ой бит при этом не трогая остальные биты потом записываю полученный байт обратно. В таком варианте часы нормально работают.

GP1 писал(а):ты же сам сбрасываешь секунды в 00 и запускаешь часы.
если часы уже тикают, то чтобы секунды не сбрасывались надо прочитать Reg00, посмотреть состояние бита 7, и если он сброшен пропустить инициализацию (включение часов)

У меня получается, что бит 7 всегда при включении питания установлен ...


GP1 писал(а):При первом запуске с раскомментированной строкой rcall settime
вот тут не совсем понял саму фразу :dont_know:

ну это моя программная установка времени, это временно, пока кнопки не припаял.
diehard
Встал на лапы
Сообщения: 101
Зарегистрирован: Вт дек 05, 2006 23:17:02
Откуда: Краснодарский край

Re: DS 1307 + батарейка - не стартуют часы

Сообщение diehard »

IMHO перепутано питание VСС и BATT. Проверь внимательно.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: DS 1307 + батарейка - не стартуют часы

Сообщение GP1 »

-=Den=- писал(а):У меня получается, что бит 7 всегда при включении питания установлен ...

тогда проверь работу DS-ки в автономке, задай генерацию импульсов на выходе SQW/OUT, и посмотри тикают они в автономе или нет
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
-=Den=-
Родился
Сообщения: 16
Зарегистрирован: Ср янв 28, 2009 17:10:21
Откуда: Украина, Винница

Re: DS 1307 + батарейка - не стартуют часы

Сообщение -=Den=- »

diehard писал(а):IMHO перепутано питание VСС и BATT. Проверь внимательно.

С питанием все правильно.

GP1 писал(а):тогда проверь работу DS-ки в автономке, задай генерацию импульсов на выходе SQW/OUT, и посмотри тикают они в автономе или нет

После того, как стал считывать при старте нулевой регистр, сбрасывать 7-ой бит при этом не трогая остальные биты потом записывать полученный байт обратно - часы идут так как положено и работают в автономке нормально.

Может, все таки, этот 7 бит и должен при каждом включении вручную сбрасываться?
В общем пока оставлю для себя этот вопрос открытым, может когда-нибудь дойдет что я не так делаю.
Всем спасибо кто пытался мне помочь :beer:
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: DS 1307 + батарейка - не стартуют часы

Сообщение Vov123 »

Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: DS 1307 + батарейка - не стартуют часы

Сообщение GP1 »

Толи лыжи не едут... :dont_know:
ты же сам пишешь:
-=Den=- писал(а):После того, как стал считывать при старте нулевой регистр, сбрасывать 7-ой бит при этом не трогая остальные биты потом записывать полученный байт обратно - часы идут так как положено и работают в автономке нормально.

если ты хотя бы раз, после подключения батарейки, сбросишь в 0 7-й бит R00 часы будут идти как положено
Чем дальше, тем больше становлюсь занудой...
Изображение
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»