Часы реального времени криво работают

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем HackerOK, 8 апр 2019.

Метки:
  1. HackerOK

    HackerOK Нуб

    В наличии имеется КЕС Troyka модуль. Пытаюсь подключить к ардуине На-На
    V-> +5
    G-> Gnd
    D-> A4(sda)
    S-> A5(scl)
    Все как в инструкции, Загрузил библиотеку с сайта амперки, установил, открыл пример скеча, загрузил. Непонятно как, но первая строка показывает правильное время(ну в скетче и указано), однако время почему то сбрасывается после того, как функция stup() отработала. Дальше начинается магия. Скетч пропускает минуты, секунды итд. Скрины ниже/ Время показывает через 5 секунд, хотя в скетче прописано 1.
    За какие-то жалкие 5-7 минут пока я создавал тему, модуль отсчитал 60 минут, всместо того, чтобы просто добавить час, спросил счетчик минут.

    Может быть я что-то пропустил? Где почитать что не так

    Помимо того, в комментариях присутствуют ошибки, выделил капсом


    Код (C++):
    #include <Wire.h>
    // библиотека для работы с часами реального времени
    #include "TroykaRTC.h"
    // размер массива для времени
    #define LEN_TIME 12
    // размер массива для даты
    #define LEN_DATE 12
    // размер массива для дня недели
    #define LEN_DOW 12
    // создаём объект для работы с часами реального времени
    RTC clock;
    // массив для хранения текущего времени
    char time[LEN_TIME];
    // массив для хранения текущей даты
    char date[LEN_DATE];
    // массив для хранения текущего дня недели
    char weekDay[LEN_DOW];
    void setup()
    {
      // открываем последовательный порт
      Serial.begin(9600);
      // инициализация часов
      clock.begin();
      // метод установки времени и даты в модуль вручную
      //clock.set(21,30,00,8,04,2019,THURSDAY);  
      // метод установки времени и даты автоматически при компиляции
      clock.set(__TIMESTAMP__);
      // ЧТОБЫ время менялось при прошивки или сбросе питания
      // ЗАКОММЕНТИРУЙТЕ оба метода clock.set();
    }
    void loop()
    {
      // запрашиваем данные с часов
      clock.read();
      // сохраняем текущее время, дату и день недели в переменные
      clock.getTimeStamp(time, date, weekDay);
      // выводим в serial порт текущее время, дату и день недели
      Serial.print(time);
      Serial.print("\t");
      Serial.print(date);
      Serial.print("\t");
      Serial.println(weekDay);
      // ждём одну секунду
      delay(1000);
    }
    upload_2019-4-8_21-48-12.png
    upload_2019-4-8_21-38-35.png upload_2019-4-8_21-44-16.png
     
  2. a1000

    a1000 Гик

    Как-то у вас всё грустненько. Похоже на сбой по питанию. Батарейка нормальная?
     
  3. HackerOK

    HackerOK Нуб

    Да, новая, 3.2-3.4 вольта, мультиметром проверял
     
  4. Asper Daffy

    Asper Daffy Гуру

    Мож не в часах дело? Мож время палёное попалось?
     
    ИгорьК и DetSimen нравится это.
  5. Belkin

    Belkin Гик

    На модуле есть точка WP1 - это вывод SQW/OUT от микросхемы.
    Если его подключить (с подтяжкой к Vcc) на прерывание, то читать время будет проще, и эту строку можно будет убрать.
    А по поводу хода, то велика вероятность, что м/сх на модуле - подделка.
    От таких можно всего ожидать... ;)
     
  6. HackerOK

    HackerOK Нуб

    Да вот только стоит он в разы дороже китайских аналогов))) (были за 40 рублей, работали почти идеально)
     
  7. HackerOK

    HackerOK Нуб

    В каком смысле время паленое, иль это я уже шуток не понимаю?
     
  8. Belkin

    Belkin Гик

    Я не заставляю искать оригинал, я говорю, что "копии" могут (!) вести себя непредсказуемо. ;)
     
  9. HackerOK

    HackerOK Нуб

    Так а я о чем. У меня тройка модуль из магазина амперки, напрямую, или тут подделки самих себя продают?
     
  10. Belkin

    Belkin Гик

    Амперка (Тройка) эти микросхемы (DS1307) не производит.
    Где (у кого) они их берут - никто правду не скажет.
    Но цена модуля - в разы меньше цены оригинальной DS1307... ;)
    Так что тут - "кот в мешке"...
    У меня из двух модулей (не Тройка) один только читается, второй принимает коррекцию времени/даты только если питание рубануть на короткое время... ;)
     
  11. a1000

    a1000 Гик

    И вообще - DS1307 отстой. Берите DS3231 - они не на много дороже, а точность хода в разы выше.
     
  12. parovoZZ

    parovoZZ Гуру

    Знаю место, где DS3231M+TRL стоит всего 2.15$ и это не подделка.
     
  13. Недавно столкнулся с интересным и для меня до сих пор не понятным явлением.
    Есть RTC1302 и в нем стояла старенькая батарейка, около 2,5В в ней. И вот решил я поставить новую, купил(CR2032, как и старая), поставил и сюрприз: после установки времени, время шло, но показывало как у ТС, там где 2000 год.
    Промучавшись с этим глюком, поставил старую батарейку и всё заработало! На новой батарейке 3,2В.
    Неужели из-за напряжения часы не работали?