Часы реального времени (Troyka-модуль) останавливает счёт при выключении питания

Тема в разделе "Arduino & Shields", создана пользователем РусНекромант, 20 фев 2019.

  1. Собственно купил модуль подключил, батарейку поставил и всё работает. Но недавно начались перебои с электричеством и понял что часы стоят когда нет питания. Проверил батарейку, там 3 вольта как и должно. Ну по большому счёту работать они бы не смогли если бы не было питания. Это очень важный узел в проекте и хотелось бы знать что пошло не так. Кусок кода приложу что бы понятно было как работаю с ним


    Код (C++):
    // библиотека для работы с часами реального времени
    #include <TroykaRTC.h>

    // создаём объект для работы с часами реального времени
    RTC clock;

    void setup() {
      //Подключим порт для отладки
      Serial.begin(9600);
      // инициализация часов
      clock.begin();
      // метод установки времени и даты в модуль вручную
      // clock.set(10,25,45,27,07,2005,THURSDAY);
      // метод установки времени и даты автоматически при компиляции
      clock.set(__TIMESTAMP__);
    }

    void loop() {
        //Serial.println("Командная строка = " + command);
       
        // запрашиваем данные с часов
        clock.read();
     
        // сохраняем текущее время в массив time
        //clock.getTimeStr(time, LEN_TIME);
        // сохраняем текущую дату в массив date
        //clock.getDateStr(date, LEN_DATE);
        // сохраняем текущий день недели в массив dow
        //clock.getDOWStr(dow, LEN_DOW);

    }
    код рабочий я повырезал 90% но что бы вы понимали что и как я делаю. Просто не вижу смысла пихать его весь без объяснения что у меня и зачем.

    У меня есть предположение что всё дело в инициализации. Что я каждый раз при перезагрузке ардуино перезаписываю память каким то значением... я примерно представляю как это решить. Например прошиваю с таймштампом, потом коментирую в прошивке проставление точки отсчёта и перепрошиваю заново. Но это же чрезвычайно неудобно. Можно конечно и через serialport наверное пропихнуть доводку значения RTC но опять же неужели всё так как я думаю?
     
  2. DetSimen

    DetSimen Guest

    Вот здесь и переписываешь, временем последней компиляции скечча
     
    arkadyf нравится это.
  3. В общем сделал так. Логично но немного эмммм в общем я не сразу догадался :) Спасибо за ответ.

    P.S. нужно сделать флаг в модуле ToykaRTС что бы при первой установке времени он ставился а потом только спец командой обновлялся. Это добавит юзабельности. Но в принципе и так пойдёт так как сброс только при смене батарейки, а это не часто. Ну или если будут убегать часы.