Pages: 1 [2] 3 4   Go Down
Author Topic: I2C RTC DS1307 verliert wieder die Zeit/Datum  (Read 5809 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Guten Morgen,

habe jetzt mal ein anderes Mega-Board genommen und nur das RTC Modul angeschlossen und wieder Deinen Sketch geflasht. Gleiches Spiel  smiley-eek:

Code:
RTC Demo Sketch by jurs for German Arduino Forum
Dieser Sketch zeigt die aktuelle Zeit alle 10 Sekunden im 'Serial Monitor'.
Du kannst die Zeit mit einem 'set' Befehl im 'Serial Monitor' neu setzen.

Beispiel:
set 28.08.2013 10:54

165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
29.08.2013 09:37:37 Uhr
29.08.2013 09:37:47 Uhr
29.08.2013 09:37:57 Uhr
29.08.2013 09:38:07 Uhr

Mal dauert es 1 Min, mal auch 3 MIn, dann kommt wieder die richtige Zeit. Wenn ich z.B. die Stromversorgung trenne und wieder verbinde (USB) und eine Weile warte 5 oder mehr Min und dann den SerialMonitor aufrufe, wird gleich die richtige Zeit/Datum angezeigt. Es scheint so, als ob das Modul erst "warm" werden muss. Zumindest ist die Batteie und ein falschen Stopbit nicht schuld, die Zeit läuft ja weiter. Gibt es eine Art "Reset", oder was in der Art?! Quasi auf Werkseinstellungen?!

Vielen Dank
Mega
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 143
Posts: 3009
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gibt es eine Art "Reset", oder was in der Art?! Quasi auf Werkseinstellungen?!

Die Uhr macht einen Reset auf Werkseinstellungen, wenn Du die Pufferbatterie mal für eine Minute rausnimmst und dann wieder einsetzt.

Irgendwas scheint mit der Initialisierung auf dem I2C-Bus nicht zu funktionieren.

Verwendest Du die zur Arduino-Software standardmäßig mitgelieferte  Wire-Library?
Oder hast Du nachträglich eine andere, alternative Wire-Library nachinstalliert?

Ergibt sich mit meinem Sketch eine Änderung, wenn der Wire-Bus im Setup nach der seriellen Schnittstelle initialisiert wird, also:

void setup()
{
  Serial.begin(9600); // Serielle Kommunikation starten
  while (!Serial);    // wait for serial port to connect. Needed for Leonardo only
  Wire.begin();       // initialisiert die Wire-Library
...
Ergibt sich dann ein Unterschied?

Die merkwürdigen Zahlen beim "Warmlaufen" Deines Uhrenmoduls deuten auf eine fehlerhafte oder nicht erfolgte Initialisierung des I2C-Bus hin.

Jedenfalls zeigt sich: Die Uhr läuft offenbar im Hintergrund einwandfrei weiter. Sie kann nur aus irgendwelchen Gründen anfangs nicht ausgelesen werden, nachdem sie auf Batteriepufferung lief.
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3005
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das überzeugt mich auch: wenn von allein irgendwann die richtige Zeit von der RTC kommt, ohne dass sie direkt vorher gesetzt wurde, ist die Batteriepufferung in Ordnung, und der Fehler liegt eher irgendwo in der I²C Kommunikation.

Bis du einen anderen Uhrenmodul hast (Die chinesischen für 1,50 Euro(incl. Versand) hängen halt schon mal 6 Wochen im Zoll, bis sie befreit werden) ,
kannst du ja mal in jurs' Demo im 10 -Sekundenzyklus das Folgende einfügen:

Code:
 Wire.beginTransmission(RTC_I2C_ADDRESS);
  boolean test = Wire.write(0);
  Wire.endTransmission();
  if (test == false) Serial.println(" I2C Problem mit RTC");

Die normale Library prüft den Erfolg nicht. Wozu auch, bei den begrenzten Möglichkeiten zur Fehler-Reaktion und -Behebung ...
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3005
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Noch was Generelles:

Hat dein Modul Pullup-Widerstände drauf ?
I²C braucht sowas: Je ein Widerstand zwischen Vcc und SCL / SDA, Wert ca. einige kOhm.

Nachtrag:
Ooops, hast ja im ersten Post schon einen Link mitgeschickt, sollte eigentlich ...

Was sagt denn der I2CScanner Sketch ?
Findet der DS1307 RTC ( 0x68 )  und 24C32 EEPROM ( ??? ) ?
Oder erst nachdem x Minuten nach Vcc high alles ok ist ? 
« Last Edit: August 29, 2013, 07:30:31 am by michael_x » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nach dem ich die Batterie eine Weile draußen hatte:

Code:
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
...
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
01.01.2000 00:00:00 Uhr
01.01.2000 00:00:00 Uhr
01.01.2000 00:00:00 Uhr
01.01.2000 00:00:00 Uhr
...

nach dem set von Datum/Zeit:

Code:
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
...
165.165.2165 45:165:85 Uhr
165.165.2165 45:165:85 Uhr
29.08.2013 14:18:01 Uhr
29.08.2013 14:18:11 Uhr
29.08.2013 14:18:21 Uhr
29.08.2013 14:18:31 Uhr
29.08.2013 14:18:41 Uhr

Habe mir ein neues Modul in England bestellt, ca. 4 Euro, geht schneller und man hat keine Probleme mit dem Zoll.

Quote
Hat dein Modul Pullup-Widerstände drauf ?
I²C braucht sowas: Je ein Widerstand zwischen Vcc und SCL / SDA, Wert ca. einige kOhm.

Bis auf R7 sind alle Widerstände bestückt. Meintest Du diese?! Liegen allerdings alle auf der anderen Anschlussseite, aber das hat vermutlich nichts zu sagen. Weil es ja hieß, es ist egal welche SDA/SCL Anschlüsse man verwendet.

Code:
Wire.beginTransmission(RTC_I2C_ADDRESS);
  boolean test = Wire.write(0);
  Wire.endTransmission();
  if (test == false) Serial.println(" I2C Problem mit RTC");

Habe ich auch ausprobiert, ändert sich nichts, ist wie oben. Es kommt keine Fehlerausschrift.

Gibt es noch eine andere Resetmöglichkeit?! Alles mit zero überschreiben, oder was in der Art?!

Vielen Dank
Mega
« Last Edit: August 29, 2013, 07:29:42 am by GoMega » Logged

Germany
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3005
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


http://playground.arduino.cc/Main/I2cScanner

Quote
This very simple sketch scans the I2C-bus for devices. If a device is found it reports that to the Arduino serial monitor.
This sketch is the first step to get the I2C communication working.


Sollte dir die RTC und den EEPROM melden ... und hat nichts mit der Batterie-Pufferung zu tun
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Sollte dir die RTC und den EEPROM melden ...

liefert es auch:

Code:
I2C Scanner
Scanning...
I2C device found at address 0x50  !
I2C device found at address 0x68  !
done

Gruß
Mega
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3005
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Auch während
165.165.2165 45:165:85 Uhr
kommt/käme  ?

( Der Scanner wiederholt  alle 5 Sek. einen Durchlauf  )

 
Dann wird es allmählich wirklich merkwürdig ...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Auch während
165.165.2165 45:165:85 Uhr
kommt/käme  ?

Kommt keine Fehlermeldung, brav immer nur "165.165.2165 45:165:85 Uhr ", nach einer Weile dann die richtigen Datumsdaten.

Quote
( Der Scanner wiederholt  alle 5 Sek. einen Durchlauf  )

Wollte jetzt nicht soviel kopieren, aber alle 5 sek das gleiche. smiley-mad
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 143
Posts: 3009
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kommt keine Fehlermeldung, brav immer nur "165.165.2165 45:165:85 Uhr ", nach einer Weile dann die richtigen Datumsdaten.

Und das, wenn nur das RTC-Uhrenmodul am I2C-Bus angeschlossen ist?

Oder sind weitere I2C-Geräte am Bus angeschlossen?
Wenn ja: Wie sieht der Anschlußplan der I2C-Geräte aus? Bus-Topologie? Leitungslängen?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Klein Korrektur meinerseits, hatte in der Hektik das Programm gleich laufen lassen:
Quote
( Der Scanner wiederholt  alle 5 Sek. einen Durchlauf  )

Wollte jetzt nicht soviel kopieren, aber alle 5 sek das gleiche. smiley-mad
[/quote]

Wenn ich den Strom wegnehme und wieder den SerialMonitor aufrufe kommt dies:

Code:
I2C Scanner
Scanning...
I2C device found at address 0x50  !
done

Scanning...
I2C device found at address 0x50  !
done

Scanning...
I2C device found at address 0x50  !
done

nach einer Weile:

Code:
Scanning...
I2C device found at address 0x50  !
done

Scanning...
I2C device found at address 0x50  !
I2C device found at address 0x68  !
done

Scanning...
I2C device found at address 0x50  !
I2C device found at address 0x68  !
done

Scheint so zu sein, als ob die ersten 1-3 Min. der RTC nicht Antwortet. Ich habe jetzt nicht so die Ahnung vom I2C-Bus, aber wenn es tatsächlich so ist, das die ersten Minuten kein Device an 0x68 gefunden wird, dann verstehe ich nicht, wieso mir die wire.h Bibliothek immer 165.165.2165 45:165:85 ausspuckt? Ist das ein Fehlercode? Ich meine es kann ja in dieser Zeit nicht wirklich was sinnvolles an der Adresse gesendet werden?

Da ich es jetzt an 2 Mega Boards (R2 und R3) probiert habe (nur jeweils das Board und RTC, ohne was anderes, somit auch kein anderer Teilnehmer am I2C-Bux) tippe ich mal auf eine Fehlfunktion des RTC-Moduls.

Gruß
Mega
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Oder sind weitere I2C-Geräte am Bus angeschlossen?
Wenn ja: Wie sieht der Anschlußplan der I2C-Geräte aus? Bus-Topologie? Leitungslängen?


Wie gesagt nur das MegaBoard und RTC, keine weiteren Module. Leitungslänge ca. 20cm, die üblichen Ebay-Steckbrücken.

Gruß
Mega
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 143
Posts: 3009
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie gesagt nur das MegaBoard und RTC, keine weiteren Module. Leitungslänge ca. 20cm, die üblichen Ebay-Steckbrücken.

Da fällt mir nicht mehr viel zu ein.
Die RTC-Platine mit VCC an 5V vom Arduino?

Da würde mir jetzt nur noch einfallen, das Board mal mit einem anderen RTC-Modul sowie das RTC-Modul mit einem anderen Arduino-Board zu testen.

Wenn dasselbe RTC-Modul an einem anderen Board vollständig funktioniert, dann hat wohl das Board eine Macke.

Und wenn ein anderes RTC-Modul am selben Board vollständig funktioniert, dann hat wohl das RTC-Modul eine Macke.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Da würde mir jetzt nur noch einfallen, das Board mal mit einem anderen RTC-Modul sowie das RTC-Modul mit einem anderen Arduino-Board zu testen.


Mit einem andern Mega Board habe ich ja schon getestet. Nächste Woche weiß ich mehr, dann sollte das andere RTC-Board da sein.

Was ich allerdings nicht verstehe, habe das RTC-Modul jetzt wieder mit meiner ursprünglichen Schaltung, Temp.Sensoren, 1Wire Temp Sensoren, LCD-Keypad, EthernetModul und der Time-Biblo. in Betrieb. Da steht die Zeit zum Anfang auf u.a. Jahr 2045 und wird aber von Anfang an weiter gezählt Zwar ein falscher Wert, aber ein theoretisch möglicher Wert. Nicht so wie dieses 165.165....

Vielen Dank für die Unterstützung!

Gruß
Mega
« Last Edit: August 29, 2013, 01:17:05 pm by GoMega » Logged

Germany
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3005
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die 165 sind erklärlich:

Die eigentliche Übertragung liefert 0xFF Schrott, das wird bei DS1307 als zwei BCD - Ziffern interprtiert und ergibt also 15*10+15.

Da das EEPROM gleich zu gehen scheint, tippe ich fast auch auf den RTC-Chip.
Nur dass er ein paar Minuten nach Spannungswiederkehr geht, ist merkwürdig ...  so lange Zeiten kriegt man nicht mit "normalen" RC Kombinationen hin.  Aber was könnte noch an deiner Batterie / Vcc faul sein, dass zwar die Speicherung der Uhrzeit geht, aber eine Kommunikation mit dem I2C Master nicht gemacht wird.

Das Datenblatt von Maxim schreibt bei VBAT:
Quote
The nominal power-fail trip point (VPF) voltage at which access to the RTC and user RAM is denied is set by the internal
circuitry as 1.25 x VBAT nominal.
Und bei Vcc
Quote
When voltage is applied within normal limits, the device is fully accessible and data can be written and read. When a backup supply is connected to the device and VCC is below VTP, read and writes are inhibited. However, the timekeeping function continues unaffected by the lower input voltage.

Ist denn dein Vcc <= 3.75V, bis deine LIR-Batterie nach ein paar Minuten nicht mehr nachgeladen wird und Vcc im normalen Arbeitbereich  > 4.5V ist ???
Logged

Pages: 1 [2] 3 4   Go Up
Jump to: