Проблемы с часами реального времени RTC

Александр903
Offline
Зарегистрирован: 18.03.2016

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

приметр  

в 9 00  залил скетч  часы показаывают  9 00

в 10 00                     часы показаывают  10 00

в 11 00                      часы показаывают  11 00

в 11 01 отключил питание ардуино  

в 12 00 включил питание ардуино  часы показаывают  9 00

в 13 00                       часы показаывают  10 00

в 13 45  перезалил сектч           часы показаывают  13 45

подскажите пожалуйста  , кто сталкивался с подобными случаями 

может у кого  есть рабочая  проверенная рабочая библиотека   или это проблема самой платы  RTC?

fogary
Offline
Зарегистрирован: 05.03.2016

У Вас в блоке setup, стоит командат установки времени часов. Установите правильное время на часах один раз, потом закоментируйте эту строчку и перзалейте скэтч - часы будут работать правильно.

Alexey_A
Offline
Зарегистрирован: 01.05.2015

Это проблема скетча, обычно в скече есть установка времени часов, автоматом на время компиляции, она нужна только для первого запуска, потом ее надо отклюяить. Иначе при кажном включении плата ардуино будет устанавливать в часах то время, когда  скомпилирован скетч.

Уже успеели ответить быстрее меня.

Александр903
Offline
Зарегистрирован: 18.03.2016

спасибо большое   все  заработало

axill
Offline
Зарегистрирован: 05.09.2011

если есть ethernet модуль или wifi то можно прикрутитить синхронизацию времени через Интернет

Qwer791
Offline
Зарегистрирован: 19.03.2016

У меня возникла следующая проблемка с RTC:

При обращении к часам на каждом скане, иногда выпадает секунда. Счет идет типа 1,2,3, 5,6 и.т.д

Там где цифра пропущена пауза, и между 3 и 5 реально 2 секунды. Четкой переодичности нет.

#include <Wire.h> //1012 kb
#include <Time.h> 

#include <DS1307RTC.h>

volatile unsigned char SecondTime = 0; //Текущая секунда по часам

void setup() {  // предустановки
    Serial.begin(9600); 
}
void loop() {

      if (SecondTime != second()) {Serial.println(SecondTime);}
      SecondTime = second();
}

В чем может быть проблема? Слишком много запросов на RTC и не успевает отрабатывать? (За секунду проходит около 11000 сканов.)