Обсуждаем цифровые устройства...
Ответить

DS1307: проблемы и решения

Вт июл 19, 2022 07:53:26

что-то не могу добиться наличия импульсов на выходе SQW этого чипа... раньше все тестировал в протеусе (там и с этим проектом все хорошо), и с чипом в DIP8, а в текущем проекте применил SO8, и на выходе четкий 0 всегда. сами часы идут.
КЗ дорожки на землю, вроде, нет, тестер не пищит при прозвонке. пин МК настроен на вход с подтяжкой. инициализация тоже по даташиту...
чего ему не хватает?!

Re: DS1307: проблемы и решения

Вт июл 19, 2022 09:17:12

DS1307: проблемы и решения
На сегодняшний день, по мне, совершенно не нужна. Обслуживание IIC занимает столько же, сколько программная реализация всех возможностей оной. :)

Re: DS1307: проблемы и решения

Вт июл 19, 2022 10:06:33

Бит SQWE установлен? Внешний резистор присутствует?

Re: DS1307: проблемы и решения

Вт июл 19, 2022 10:59:53

Попробовать другой образец кристалла...
Я с DS3231 недавно "некорректность" имел - УВЫ... бывают таки "недоубитые" кристаллы.
:(

Re: DS1307: проблемы и решения

Вт июл 19, 2022 11:13:54

BOB51 писал(а):с DS3231 недавно "некорректность" имел
я тоже имел, но выяснилось, что это была моя некорректность, т.к. данный чип отличается от классической DS1307, и там другой адрес ячейки с настройками :)

Re: DS1307: проблемы и решения

Вт июл 19, 2022 12:03:56

что-то не могу добиться наличия импульсов на выходе SQW этого чипа...

Если часы идут, то бит SQWE (в регистре 07Н) установлен… но ещё дополнительно необходимо установить бит OUT в том же регистре в 1… тогда на выходе пин SQW/OUT, который подтянут через резистор к плюсу питания, появятся прямоугольные импульсы с частотой согласно битам RS1 и RS0… если всё вышеописанное проделано, а импульсы отсутствуют, то проблема в самом чипе – видимо попался брак… :dont_know:

Re: DS1307: проблемы и решения

Вт июл 19, 2022 15:03:36

VNS писал(а):Если часы идут, то бит SQWE (в регистре 07Н) установлен…
Я могу ошибаться, но часам без разницы значение это бита. За старт-стоп часов отвечает старший бит в ячейке с нулевым адресом - CH
А бит OUT отвечает за значение выходного пина при запрещении генерации импульсов на выходе.

Re: DS1307: проблемы и решения

Вт июл 19, 2022 22:20:54

Я могу ошибаться

Нет, это я ошибся… малёха забыл... :) всё верно, бит OUT отвечает лишь какой будет логический уровень присутствовать на выходе SQW/OUT когда бит SQWE равен 0… то есть если бит OUT равен 1, то на выходе SQW/OUT лог 1, а если бит OUT равен 0, то на выходе SQW/OUT лог 0. Для генерации прямоугольных импульсов необходимо устанавливать только бит SQWE в 1.

Re: DS1307: проблемы и решения

Ср июл 20, 2022 07:00:17

...Обслуживание IIC занимает столько же, сколько программная реализация всех возможностей оной.
Чтобы не быть голословным, вариант часов с календарём для tiny2313. Жалкие 114 байт и DS1307 не нужна. :)
CLOCK_CALENDAR.zip
(1.22 KiB) Скачиваний: 93

Re: DS1307: проблемы и решения

Ср июл 20, 2022 08:21:28

Чаще нужен независимый высокостабильный "генератор секунды" с возможностью корректировки точности хода
и сверхмалым энергопотреблением.
Остальное в современных МК уже имеется.
8)

Re: DS1307: проблемы и решения

Ср июл 20, 2022 09:17:17

Bit 7 of Register 0 is the clock halt (CH) bit. When this bit is set to 1, the oscillator is disabled. When cleared to 0, the oscillator is enabled. On first application of power to the device the time and date registers are typically reset to 01/01/00 01 00:00:00
(MM/DD/YY DOW HH:MM:SS). The CH bit in the seconds register will be set to a 1.
Пока бит CH не сброшен, а это делается через интерфейс, генератор DS1307 будет остановлен.
В итоге
-независимости от интерфейса нет
-как только подключается I²C сверхмалое потребление DS1307 улетучивается
-корректировки точности хода отродясь не бывало...

Re: DS1307: проблемы и решения

Ср июл 20, 2022 11:03:23

Так ни один RTC без внешнего интерфейса не запускается.
Всегда при подключении "чистой новорожденной" к самоделке требуется однократная первичная загрузка параметов.
Это, к примеру, удержание одной из кноп при подаче питания (или перед нажатием аппаратной кнопы reset).
8)
Насчет точности хода 1307 вполне себе удовлетворительная, ежли иметь возможность подстройки показаний раз в недельку.
Да и работают на обмен данными RTC только при основном питании - там особо с экономией не заморачиваемся.
:roll:

Re: DS1307: проблемы и решения

Ср июл 20, 2022 13:20:19

ARV, хоть бы муркнул, решена задача или нет… и если решена, то в чём была причина… а то задал вопрос и потерялся…

Re: DS1307: проблемы и решения

Ср июл 20, 2022 13:24:16

да я с телефона слежу за темой, отвечать неудобно...

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

проблема, конечно, не великая, но неприятно от непонятности

Re: DS1307: проблемы и решения

Ср июл 20, 2022 13:54:02

Значит бракованная попалась… или стоит внимательнее прозвонить дорожки (не на прозвонке)… :dont_know:

Re: DS1307: проблемы и решения

Ср июл 20, 2022 15:53:07

Единственное что есть хорошего в ДС1307 , это 56 байт энергонезависимого ОЗУ для хранения данных. А как часы , без аппаратной коррекции хода - полное говно. Тоже сначала сделал часы на ней, но переустановка раз в две недели не устроила. Нашёл в ништяках M41T81, и теперь год не думаю ни о чём !

Re: DS1307: проблемы и решения

Чт июл 21, 2022 05:07:23

...56 байт энергонезависимого ОЗУ для хранения данных...

Уточню. Энергонезависимость озу обеспечивается батарейкой.
Battery-Backed

Посмотрел цены в магазине шаговой доступности
M41MT81 320р
DS3231SN 320р
DS1307 40р
ATmega48a 150р
Подключил плату вторичных часов на mega48a с кварцем 32'769,06Гц и ...
Двухминутный интервал
120'000'011us
120'000'004us
199'999'993us
120'000'007us
...
В бытовых условиях сложно оправдать применение RTC

Re: DS1307: проблемы и решения

Пт июл 22, 2022 11:37:20

Это уж по возможным ресурсам.
Ежли не иметь RTC все равно точность кварца может иметь отклонения.
Придется в любом случае корректировку точности хода делать - а это как минимум 16-разрядный счетчик с автоперезагрузкой.
У АВРки С/Т1, у 51й С/Т2...
Ежли задача позволяет без них обходиться - вполне себе применимо.
В то же время "генератор секунды" с заложенной коррекцией хода в энергонезависимом режиме да еще и с питанием от 3 вольт...
И нет возможности (или интереса) аппаратную начинку "докапывать"
Таки придется на DS3231 раскошеливаться...
:roll:

Re: DS1307: проблемы и решения

Пт июл 22, 2022 22:26:24

...Обслуживание IIC занимает столько же, сколько программная реализация всех возможностей оной.
Чтобы не быть голословным, вариант часов с календарём для tiny2313. Жалкие 114 байт и DS1307 не нужна. :)
CLOCK_CALENDAR.zip


Спасибо за приведенный вариант, кое чего могу сказать и с моей стороны, тоже сделал часики с применением DS1307, там я до предела многие вещи скинул на железо, но про программную коррекцию слегка поизвращался. При подаче питания или общем сбросе содержимое ячеек часов (секунды, минуты, часы и т.д. до месяца и года) перекачивается в служебные ячейки памяти микроконтроллера и вывод SQW программируется на формирование импульсов 1 сек, этот сигнал в свою очередь заводится на один из входов прерывания микроконтроллера (сам тип контроллера особой роли не играет, здесь я провожу саму концепцию и алгоритм). Далее при каждом прерывании контроллер программно ведет учет времени и календарь. В саму программу вводится коррекция до +/- 14 секунд один раз в сутки, один раз в неделю и один раз в месяц. Величину коррекции придется определить опытным путем, вычисляется разница с эталоном и выставляется соответсвующая коррекция (для суток, недели и месяца, всего 3 константы для коррекции). При 2-х годичном прогоне данная тактика коррекции обеспечила погрешность +/- 2 сек. в любой момент года для полностью автономного режима. Упомянутые часы были предусмотрены для звонков по расписанию для ВУЗов, там учитываетса четная и нечетная неделя, автоматический переход на летнее/зимнее время и установка параметров от телевизионного пульта управления на ИК лучах.

P.S. Подобная тактика учета времени и календаря применена в компьютерах, включая и нынешние на 10-й винде...

Re: DS1307: проблемы и решения

Пт июл 22, 2022 22:34:49

ST_A писал(а):вывод SQW программируется на формирование импульсов 1 сек, этот сигнал в свою очередь заводится на один из входов прерывания микроконтроллера
вот и я так всегда делал... до этого раза.

пришлось заменить прерывание от SQW на прерывание от таймера.

следующим этапом извращения пришлось отказаться от вычитывания времени из DS1307, оставив его только в качестве резервных часов на случай пропадания питания. раз в сутки в чип записываю дату и время, а считываю только при старте...

ST_A писал(а):В саму программу вводится коррекция до +/- 14 секунд один раз в сутки, один раз в неделю и один раз в месяц.
пока решил для коррекции задавать количество секунд "подводки" в сутки (от 0 до плюс-минус 125) и растягиваю эту коррекцию равномерно по суткам, считаю не секунды, а 10мс-ые интервалы и по одному в нужные моменты добавляю или вычитаю. протестировать длительно еще не успел, но алгоритм представляется рабочим...

короче, из-за этого бракованного DS1307 такого наворотил... :facepalm: но работает!
Ответить