Arduino Polska Forum
Dziwne zachowanie DS1307, SetTime - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino)
+--- Wątek: Dziwne zachowanie DS1307, SetTime (/watek-dziwne-zachowanie-ds1307-settime)



Dziwne zachowanie DS1307, SetTime - toja100 - 19-08-2020

Witam

Czy ktoś wie jak rozwiązać, poradzić coś na dziwne zachowanie Arduino Mega.
Już tłumaczę o co chodzi.
Docelowo układ będzie pobierań czas z GPSa, ustawiał DS1307 , później co jakiś czas odczytywał ten czas i wykonywał różne operacje, w tym przesunięcie czasu systemowego do UTC.

Chciałem przetestować układ DS1307 z następującym kodem
Kod:
#include <Wire.h>
#include <DS1307.h>
#include <TimeLib.h> 

DS1307 clock;
RTCDateTime dt;

void setup()
{
  Serial.begin(9600);

  // Inicjalizacja DS1307
  Serial.println("Inicjalizacja DS1307");;
  clock.begin();

  // Jeśli nie ustawiono daty, ustawiamy
  if (!clock.isReady())
  {
    // Data i czas z momentu kompilacji
    clock.setDateTime(__DATE__, __TIME__);
  }
}

void loop()
{
  dt = clock.getDateTime();
  //String d3;

  setTime(dt.hour, dt.minute, dt.second, dt.day, dt.month, dt.year);
          // add the offset to get local time
          //adjustTime(-7200);


  Serial.print("system data: ");Serial.print(dt.year);   Serial.print("-");
  Serial.print(month());  Serial.print("-");
  Serial.print(day());    Serial.print(" ");
  Serial.print(hour());   Serial.print(":");
  Serial.print(minute()); Serial.print(":");
  Serial.print(second()); Serial.println("");

         
  Serial.print("Raw data: ");
  Serial.print(dt.year);   Serial.print("-");
  Serial.print(dt.month);  Serial.print("-");
  Serial.print(dt.day);    Serial.print(" ");
  Serial.print(dt.hour);   Serial.print(":");
  Serial.print(dt.minute); Serial.print(":");
  Serial.print(dt.second); Serial.println("");

  delay(1000);
}

Przy odczycie na monitorze portu szeregowego otrzymuję dziwne dane:
Kod:
system data: 2020-4-64 21:55:31
Raw data: 2020-8-19 21:55:31
Dane z DSa są poprawne.
Co jeszcze ciekawsze, jeżeli usunę komentarz przy:

Kod:
//String d3;
to odczytane daty na monitorze pokrywają się.

Użyte Arduino to klon Mega2560.

Jest w tym kodzie również inne ciekawe zjawisko.
Po usunięciu komentarzy przy:
Kod:
//String d3;

i pozostawieniu w sekcji setup:
Kod:
void setup()
{
  Serial.begin(9600);

  clock.begin();

  // Jeśli nie ustawiono daty, ustawiamy
  if (!clock.isReady())
  {
    // Data i czas z momentu kompilacji
    clock.setDateTime(__DATE__, __TIME__);
  }
}
na monitorze są również błędne odczyty, ale inne:
Kod:
system data: 2020-13-19 22:5:3
Raw data: 2020-8-19 22:5:3
Czy ktoś wie czym takie zachowanie jest spowodowane i jak się go pozbyć ?


RE: Dziwne zachowanie DS1307, SetTime - Jarewa0606 - 20-08-2020

Wstaw bibliotekę tego rtc co używasz <DS1307.h> i <TimeLib.h>


RE: Dziwne zachowanie DS1307, SetTime - toja100 - 20-08-2020

Dzięki za zainteresowanie.
W załączniku spakowane w jednym katalogu