Сбрасывается время на DS3231
- Войдите на сайт для отправки комментариев
Пнд, 28/11/2016 - 21:02
Купил DS3231,установил время,идет отлично,но как отключаю Arduino от питания - сбрасывается время. Батарейку проверял,рабочая,код прилагаю.
#include "RTClib.h" #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F , 20, 4); RTC_DS3231 RTC; void setup() { RTC.begin(); lcd.begin(); Serial.begin(9600); lcd.backlight(); } void loop() { lcd.clear(); DateTime now = RTC.now(); Serial.print(now.second(), DEC); lcd.print(now.second(), DEC); delay(900); }
Чудес не бывает !
Либо батарея дохлая, либо нет контакта батареи с ногами DS3231, ищите где.
Чудес не бывает !
Либо батарея дохлая, либо нет контакта батареи с ногами DS3231, ищите где.
Поддерживаю усеми конечностями.
Там бывает какая-то хитрость, если плата рассчитана на установку аккумулятора (с цепями заряда), а вставлена обычная батарейка. В этом случае помогает, насколько я помню, выпаивание пары деталей и закорачивание одной. Т.е. по сути ликвидация цепи заряда аккумулятора.
Ну тогда давайте все дружно спросим, какая плата, чтобы не гадать.
А то, может ТС голую микруху купил.
Нет.Вот так выглядит плата(нашел в Гугле).
Нет.Вот так выглядит плата(нашел в Гугле).
Нормально так )))
Отфотографируйте свою! Есть косяк с самим контейнером под батарейку, уж сколько я их перековырял, а такой, как прислали встретил впервые, батарейку нельзя защёлкивать обычним спосом, только через извращение, подламывается верхний контакт и - нет контакта
При отключенной Arduino, на ногах 13 и 14 DS3231 должно быть 3,3 вольта.
13 и 14?Это на самой Arduino или на RTC?
RTC
Замерил,0 вольт...
Что может быть причиной?
Причину я Вам в первом посте своем озвучил.
Батарейка точно не дохлая ???
Ну сфоткайте Вы свою DS3231 ...
Да,дает стабильно 3,3 вольта. И новую покупал,пробовал. Я думаю,что дело в контакте.Спасибо за помощь!
Прозвонить, не, зачем, проще на форум написать, пусть люди погадают....
Подниму тему, чтобы не плодить. Столкнулся со странным глюком - часы DS3231 (модуль от RobotDyn с CR1220 на борту) без внешнего питания перестали идти. Но и время не забывают. Просто останавливаются на том месте, где я обрубаю питание. При возвращении - идут с той же точки.
Единственное, до чего могу докопаться - батарейка под нагрузкой от часов быстро падает в район вольта. При вытаскивании - постепенно возвращается к трем. Т.е. явно уставшая.
Это нормальное поведение для такой ситуации? Я думал, если батарейка сядет, они на ноль сбрасываться будут, это хоть отловить программно можно и юзверю тревогу забить. А тут такая подстава. :(
https://datasheets.maximintegrated.com/en/ds/DS3231.pdf
Bit 7: Enable Oscillator (EOSC). When set to logic 0, the oscillator is started. When set to logic 1, the oscillator is stopped when the DS3231 switches to VBAT.
Ой, неохота смотреть даташит, но идея должна быть понятна. Генератор перестаёт работать при пониженном напряжении батареи, тогда как всё остальное сохраняется. Там есть узел power control который этим всем рулит. Резюме - батарейка должна быть в норме.
(задумчиво) Ну, я когда-нить научусь сначала смотреть в даташит, а потом задавать вопросы...наверное. :) Спасибо. !
Надо подумать, как тогда реализовать механизм контроля даты малой кровью. Ибо я рассчитывал ловить заведомо невозможную дату (каковой она является после сброса), и в этом случае намекать пользователю на проверку даты и замену батарейки. А так - оно не прокатит. Разве что при выключении сохранять дату в eeprom, и если при повторном включении ничего +- не изменилось, то паниковать. Но тоже вопрос, что именно считать "+-не изменилось"... Пойду дальше даташит читать, может все за меня уже придумали.
А что такое "Невозможная дата"? МК не подвластен проедрассудкам - ему все даты ОК, даже дефолтовая.
Самый простой способ контроля:
Bit 7: Oscillator Stop Flag (OSF). A logic 1 in this bit indicates that the oscillator either is stopped or was stopped for some period and may be used to judge the validity of the timekeeping data. This bit is set to logic 1 any time that the oscillator stops. The following are examples of conditions that can cause the OSF bit to be set: 1) The first time power is applied. 2) The voltages present on both VCC and VBAT are insufficient to support oscillation. 3) The EOSC bit is turned off in battery-backed mode. 4) External influences on the crystal (i.e., noise, leakage, etc.). This bit remains at logic 1 until written to logic 0
А что такое "Невозможная дата"? МК не подвластен проедрассудкам - ему все даты ОК, даже дефолтовая.
Самый простой способ контроля:
Bit 7: Oscillator Stop Flag (OSF). [cut] logic 1 until written to logic 0
Невозможная дата - это нулевой или первый год, например. :) Или просто тупо любая дата старше 2018 года. Потому как в моем случае задача RTC - текущее время для логов. И пока машину времени не изобрели, я смело могу считать любую дату ранее фактической реализации устройства невозможной. :) И требовать ввести дату или проверить баратейку. А тут - облом.
Я не вижу в вашей цитате никакого способа контроля, это просто перечисление факторов, при которых чип останавливает осциллятор.
Но - как только вернется нормальное питание, он его опять запустит.
Сейчас часы автоматом переходят на батарею при обесточивании устройства целиком, включая МК. Чип часов умеет орать о падении основного напряжения (Vcc) ниже power fail, судя по даташиту, но мне-то нужно контролировать Vbat.
А на Vbat он штатно переходит тогда, когда обрезана подача основного питания. Т.е. МК уже отключился. Получается, что надо городить аппаратное решение, которое будет проверять напряжение на батарейке, и если что - орать что ее пора заменить. Иначе никак. Либо требовать от пользователя регулярно проверять дату, потому как в моем случае - она на экран выводится только в настроечном меню, ибо не является важным параметром, кроме как для записи логов.
А чем 2018-й год хуже другого? Включат устройство в 2020-м и окажется, что год невалиден?
По моим экспериментам - проверка OSF на включении вполне себе нормально сигналит о том, что батареи нет или есть иные проблемы.
А чем 2018-й год хуже другого? Включат устройство в 2020-м и окажется, что год невалиден?
По моим экспериментам - проверка OSF на включении вполне себе нормально сигналит о том, что батареи нет или есть иные проблемы.
Тем, что логи пишутся в реальном времени, а до 2018 года этого устройства в природе не существовало. И любой год старше 2018 (2020 младше) будет невалидным. Я это приводил как пример определения сброса времени. При сбросе там первый или нулевой год получается,он априори старше 2018. :)
По проверке OSF при включении - да, надо будет проверить, спасибо за идею.