резервный аккумулятор для FeatherWing DS3231, RTC

Я работаю над слегка измененным примером кода для платы Adafruit FeatherWing DS3231 RTC (часы реального времени). Сама микросхема DS3231 от Максима. Поскольку элемент описывается как «резервная батарея», буквальная интерпретация предполагает, что вам не нужна резервная батарея для работы платы, если сама плата запитана, и вы не возражаете, что устройство не может запомнить время, когда питание платы потеряно. Возможно, я воспринимаю термин «резервный аккумулятор» слишком буквально, поскольку он, похоже, не работает.

Код Adafruit (Arduino):

> #include <Wire.h>
> #include "RTClib.h" 
> RTC_DS3231 rtc; 
> void loop() 
>{
>     rtc.adjust(DateTime(2018, 1, 1, 0, 0, 0));
>     DateTime now = rtc.now();
>     Serial.print(now.year());
>     Serial.print(" ");
>     Serial.print(now.month());
>     Serial.print(" ");
>     Serial.print(now.day()); 
>}

Выход:

2165 165 165 

В таблице данных Maxim говорится о линии VBAT, которая является линией между чипом DS3231 и отсутствующей резервной батареей:

Вход резервного источника питания. При использовании устройства с входом VBAT В качестве основного источника питания этот вывод следует разъединить с помощью перемычки. Конденсатор с малой утечкой от 0,1 мкФ до 1,0 мкФ. При использовании устройства с входом VBAT в качестве резервного источника питания конденсатор не требуется. Если VBAT не используется, заземлите.

Я подключил его к земле, и это не имеет значения. Я не смогу купить аккумулятор до завтрашнего утра. Может кто-нибудь подтвердить, что резервная батарея действительно необходима. РЕДАКТИРОВАТЬ: я установил батарею, и это не имеет значения.

Кроме того: веская причина по возможности не иметь резервную батарею — иметь меньше деталей, обслуживаемых пользователем.

, 👍0

Обсуждение

Ваш код правильно работает с батареей?, @Gerben

@Gerben, я установил батарею, и это не имеет значения., @H2ONaCl

Рад слышать, что вы разобрались в проблеме. Хорошая работа., @Gerben


3 ответа


Лучший ответ:

1

Проблема заключалась в плохом соединении одной из последовательных линий.

Я нашел решение по этой ссылке.

>

Для этой работы аккумулятор не требуется.

,

0

Ваш код не содержит строк, необходимых для инициализации rtc.

в настройке вам нужно что-то вроде

rtc.begin()

Если вы следовали инструкциям с веб-сайта Adafruit по установке библиотеки RTC:

  • Запустить Arduino IDE
  • Файл->Примеры->RTClib->ds3231

Откроется пример использования RTC.

Иначе перейдите к примеру на странице Github

посмотрите код setup() и посмотрите, как они инициализируют устройство

,

В моей настройке есть вызов rtc.begin. Я показываю только цикл в приведенном выше коде., @H2ONaCl

Используя тот же код, что и в примере Adafruit, который является файлом только для чтения, поэтому я знаю, что он правильный (Файлы>Примеры>RTClib>ds3231), год по-прежнему 2165, месяц 165, день 165., @H2ONaCl


0

Предполагая, что ваш код находится в «цикле» Arduino IDE. Предполагая, что

rtc.adjust(DateTime(2018, 1, 1, 0, 0, 0)); инициализирует RTC.

Ваш код должен постоянно печатать значение rtc.adjust.

Поэтому выведите rtc.djust из «цикла» и обеспечьте некоторую задержку, скажем, 1 секунду, чтобы печатать rtc каждую секунду. Тогда мы сможем посмотреть, почему вы получаете неверные данные.

,

Удаление этой строки не имеет никакого значения. Каждый раз при прохождении цикла получается 2165 год., @H2ONaCl

Возвращает ли rtc.adjust что-нибудь — true/false/error? Ваш RTC не инициализируется/не работает., @Jan Hus

Я думаю, что .adjust — это пустая функция., @H2ONaCl

В примере Adafruit в File>Examples>RTClib>ds3231 также указано, что год — 2165., @H2ONaCl

Хорошо, сейчас время RTC 23:30 (без каламбура, так что я займусь этим завтра., @Jan Hus