RTC (DS1307) zählt nicht

OP #3739032
Lesenswert?

Hi Leute.

Also ich habe folgendes Problem:

Habe mir vor kurzem ein RTC Modul zugelegt: [1]

Ich habe jetzt schon mehrere Programme (wie auch dieses von dem link) 
ausprobiert. Die Uhrzeit kann gesetzt und auch ausgelesen werden, somit 
sollte die Kommunikation (i2c) funktionieren.

Das Problem liegt darin, dass die Uhrzeit nicht weitergezählt wird. Wenn 
ich die Uhrzeit 20:32:40 einstelle, dann bleibt die immer gleich.

Ich habe auch schon im Datenblatt gelesen, dass eine 0 auf das 7 Bit von 
Register 0 geschrieben werden muss um den oscillator zu aktivieren.
Hat aber leider nichts geändert.

Gebe es eine Möglichkeit das Modul irgendwie auf Funktionalität zu 
überprüfen? Oder muss ich noch etwas an der Schaltung verändern?

Danke, Fabian

[1] http://l.hh.de/y3VNk
#3739069
Lesenswert?

Programmier den Chip so, das auf dem SQ was herauskommen sollte. Wenn 
Oszi vorhanden, dann kannst Du die 32kHz ausgeben, ohne ist die 1 Hz 
Ausgabe vielleicht geschickter. Dann siehst Du, ob der RTC Oszillator 
auch korrekt arbeitet.

Wenn ich das Datenblatt richtig interpretiere, muss man den Oszillator 
übrigens über das Bit im Sekdunden-Register erst einschalten, aber 
einfach eine korrekte Sekunde (Bereich 0..59) reicht da active low.

Schau auch mal nach der Spannung an BAT.
OP #3739108
Lesenswert?

Gute Idee werde ich heute gleich mal versuchen.

Ja das Bit hab ich auch gesetzt, aber es hat eben auch nichts geändert.

Die Batterie kann es eigentlich nicht sein , da ich das Modul mit 5V des 
Arduino versorge.

Aber ich muss bei dem nicht noch irgendwelche Pull up´s oder so 
anbringen? Die wären ja nur für i2c oder?
#3739727
Lesenswert?

Fabian Ko schrieb im:
25.07. 10:19
> Ich habe auch schon im Datenblatt gelesen, dass eine 0 auf das 7 Bit von
> Register 0 geschrieben werden muss um den oscillator zu aktivieren.
>>CH=0
25.07. 11:19
> Ja das Bit hab ich auch gesetzt, aber es hat eben auch nichts geändert.
>>CH=1

wie hast du denn nun das Bit? 0 oder 1 ?
Damit die Uhr läuft muss das Bit 0 sein, wenn du beim schreiben der 
Sekunde nicht noch irgendwas mit dem Byte anstellst sollte der Zustand 
von CH, wie Jim schon schrieb, korrekt sein.


Sascha
Gast #3740792
Lesenswert?

CheckerChan schrieb:
> ohne Batterie muss Vbat auf GND gelegt werden

 Nee, nix 'muss', 'kann'

 Und das einzige was RTC anhalten kann, ist CH-bit, aber Jim
 schrieb schon, das normale Sec eingabe dieses bit zurucksetzt -
 und das tut sie auch.
 Allerdings: "Illogical time and date entries result in undefined
 operation."
 Was war mit Jim's Vorschlag mit SQW ?
 Ausprobiert ?

 mfg, Bole
OP #3740817
Lesenswert?

hi Leute, sorry das ich erst jetzt wieder schreibe.

Angeschlossen habe ich das Modul, wie auch im link gezeigt.

5V an Vcc, Gnd, Scl, Sda vom Arduino.

Wie gesagt, ich kann die Zeit setzen und auch auslesen, es wird nur 
nicht gezählt.

Habe es nochmal inizialisiert und danach mit I2c 0x68 (Adresse) dann 
0x07 (Register) und 0x10 beschrieben um den SQ Ausgang mit 1Hz zu 
betreiben. Leider liegt am SQ Ausgang immer eine Spannung von 5V an.

Code (von einem Beispiel + von mir erweitert):

// Date and time functions using a DS1307 RTC connected via I2C and Wire 
lib

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

void setup () {

  Wire.begin();

  rtc.begin();

  if (! rtc.isrunning()) {
    // following line sets the RTC to the date & time this sketch was 
compiled
    rtc.adjust(DateTime(F(_DATE_), F(_TIME_)));
    // This line sets the RTC with an explicit date & time, for example 
to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

  Wire.beginTransmission(44);
  Wire.write(0x68);
  Wire.write(0x07);
  Wire.write(0x10);
  Wire.endTransmission();
}

void loop () {

}
Gruß Fabian
OP #3741233
Lesenswert?

@Sascha, hab schon alle Example Programme getestet die ich zu dem Modul 
oder ähnlichen Modulen finden konnte. Wie gesagt, sie funktionieren ja, 
bekomm auch die gesetzte zeit zurück (Serial Monitor) nur bleibt die 
gestzte zeit so.

@Bole aus Serbien, wenn du mit Eimer das Gehäuse darum meinst, dann ja. 
Siehe  [1]

@Matthias, das Modul wurde mit der Batterie geliefert und ich habe sie 
auch noch nicht rausgenommen. Was ich gerade versucht habe:

Modul ohne Batterie, Anschluss 5V auf VDD und GND -> bekomme eine 
Antwort (Serial Monitor)

Modul ohne Batterie, Anschluss 5V auf VBat und GND -> bekomme keine 
Antwort (Serial Monitor)

Modul ohne Batterie, Anschluss 3V auf VDD und GRD -> bekomme eine 
Antwort (Serial Monitor)

Modul mit Batterie, Anschluss 3V/5V auf VDD und GRD -> bekomme eine 
Antwort (Serial Monitor)

Mit bekomme eine Antwort ist gemeint, dass ich die Register auslesen 
kann. Die davor beschriebene Zeit z.B.: 22:07:00 08-04-2011 (immer die 
gleiche)

Gruß Fabian

[1] http://l.hh.de/y3VNk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren