Столкнулся с проблемой: Сделал платку на которой установил RTC ds1307, включил, установил правильное время, а часы то и не ходят. Выключил- обратно включил - так и не ходят. Оказывается при установке времени следует обратить внимание на 7й бит по адресу 0x0h (установка секунд). Это бит разрешения/запрета осцилляции CH. По-умолчанию он установлен в 1 - запрет осцилляции. Так как в моем проекте секунды я не учитывал потому и не обратил внимания на установку этого бита в 0.
вообще-то это в даташите жирным шрифтом выделено, что при включении состояние регистров неопределено и запускать надо ручками. Немного недопонимаю логику разработчиков, ну да ладно... А вот как справиться с другими граблями? У меня на двух разных чипах одна и та же проблема - никак не хотят записываться 3,4,5 регистры, то есть день, число и месяц. Время записывается, год тоже - а эта троица всегда единица. И при этом еще не происходит переход на следующий день. То есть ставлю 23:59, жду минуту и вижу, что время обнулилось, а дата так и осталась 01/01/10
Ну да, так и есть, 3 - день недели, 4 - число, 5 - месяц, 6 - год. Я почему и мучаюсь с этими часами - не хочет устанавливать именно день недели, число и месяц. Год и время устанавливается, а эти три - никак. Четыре чипа (три из одной партии) - на всех одна и та же беда. И не переходит в полночь на следующий день. А по поводу дня недели - его задаешь и он сам должен циклично его перещелкивать в полночь, так что с ним заморочек нет особых. Если бы он еще задавался....
galex1981 вот схема - стандартнее некуда http://s57.radikal.ru/i156/1004/3d/a57affcf65ee.bmp на номиналы конденсаторов внимания не обращайте - накидал в протеусе, чтобы разводку платы сделать Сегодня добил плату, до этого все на макетке делал, думал, может приколы из-за макетки, но увы... На нормальной плате то же самое.
Может ставить CH=1 перед записью в регистры, а потом запускать часы CH=0? Делал RTC на PCF8583, так там это рекомендовалось в ДШ. А если не остановишь перед записью, то записывалась какая-то хрень.
сделал так, при записи секунд в нулевой регистр ставлю бит 7, записываю все данные, опять записываю в секундный регистр уже со сброшенным битом - результат тот же - часы идут, год правильный, число/месяц - 01/01 ((
После довольно долгого периода мытарств нашел косяк. Косяк где-то в программе (писано на ассемблере) в работе с ОЗУ - данные считывались в оперативку, потом выдавались в СОМ-порт. Вот тут где-то и случилось обнуление месяца и числа. Если напрямую считываю с часов и выдаю в порт - все нормально, так что часики не виноваты и они мне нравятся больше, чем pcf8583