Code für RTC DS1307 funktioniert nicht mehr

Hallo zusammen,

ich habe mir vor einem halben Jahr einen Code für eine Wortuhr gebastelt. Hat auch alles so weit funktioniert. Letztens habe ich festgestellt, dass LEDs zufällig fehlerhaft aufblinkten, weshalb ich den Code neu auf mein Arduino Nano laden wollte. Komischerweise funktioniert der Code nun nicht mehr... Hab ein bisschen rumgespielt und festgestellt, dass es sich offenbar um ein Problem mit dem Zeitgeber gibt. Auch wenn ich den Beispielcode für die RTC drauf lade (sh. Anhang), führt er den Befehl clock.begin nicht aus, da er mir nicht meinen gewünschten Text im Monitor anzeigt (Initialize DS3231 wird noch angezeigt). Kann mir jemand weiter helfen?

Gruß

Kai

/*
  DS3231: Real-Time Clock. Simple example
  Read more: www.jarzebski.pl/arduino/komponenty/zegar-czasu-rzeczywistego-rtc-ds3231.html
  GIT: https://github.com/jarzebski/Arduino-DS3231
  Web: http://www.jarzebski.pl
  (c) 2014 by Korneliusz Jarzebski
*/

#include <Wire.h>
#include <DS3231.h>

DS3231 clock;
RTCDateTime dt;

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

  // Initialize DS3231
  Serial.println("Initialize DS3231");
  clock.begin();
 Serial.println("Blub");
  // Set sketch compiling time
  clock.setDateTime(__DATE__, __TIME__);
}

void loop()
{
  dt = clock.getDateTime();

  // For leading zero look to DS3231_dateformat example

  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);
}

Was denn nun DS1307 oder DS3231 ?

Ich vermute du verwendes jetzt eine falsche/andere Library.

Du bist sicher, dass die Lib zur DS3231 auch zur DS1307 passt?
Der Autor hat nichts davon vermerkt.

Gruß Tommy

Hi,

zuvor hat’s zumindest mit der Bib funktioniert. Ist übrigens aus einem elegoo Tutorial, in dem auch eben diese Bibliothek für die ds1307 herangezogen wird. Nun habe ich es mit der DS1307 Bib versucht. Symptom: Das erste mal ging es problemlos. Dann nochmals versucht und seit dem Fehlermeldung. Ich vermute, dass das RTC ein Problem hat. Ich bestelle mal ein neues DS3231.

Ich werde berichten; Gruß

Kai

Das ist auf jeden Fall genauer.

Gruß Tommy

Zumindest eine gute Entscheidung.

Wird wohl nicht als I2C Gerät gefunden. -> I2C Scanner ausprobieren. Liefert 3 Möglichkeiten:

  • Nicht da: falsch angeschlossen/Wackelkontakt. (Mein Verdacht)
  • Falsche Adresse (!= 0x68) Vermutlich ist auf dem Uhrenmodul auch noch ein I2C EPROM-Speicher...
  • Hmm... ( Bis die DS3231 da ist, kannst du ja DS1307 und die Library weiter anschauen. )

Warum der Sketch in DS3231::begin() hängen bleibt, kann eigentlich nicht an den feinen Unterschieden zwischen 1307 und 3231 liegen, denke ich mal.

Die 3231 als auch die 1307 haben rund um die Uhr die selben Adressen. Bis 06 ist das schick, Datenblätter:
https://datasheets.maximintegrated.com/en/ds/DS3231.pdf - Seite 11
https://datasheets.maximintegrated.com/en/ds/DS1307.pdf - Seite 8

Die lib schreibt:

// Zeile 462 DS3231.cpp
    writeRegister8(DS3231_REG_CONTROL, value);
// Zeile 35 in DS3231.h
#define DS3231_REG_CONTROL          (0x0E)

Ende der Vorstellung.

Sodala - nachdem die DS3231 angekommen ist, habe ich die DS1307 entlötet und diese ersetzt. Jetzt scheint die Uhr wieder zu laufen... Die alte DS1307 habe ich jetzt mittels breadboard getestet. Scheint auch weiterhin zu funktionieren (übrigens mit dem gleichen Code). Ich geh einfach mal davon aus, dass im Modul DS1307 ein Wackelkontakt war...

Danke für die Rückmeldung. In Anbetracht der viel besseren Präzision der DS3232 dürfte sich das Upgrade trotz der Tatsache, dass die DS1307 noch funktioniert, gelohnt haben.