Forum: Mikrocontroller und Digitale Elektronik RTC (DS1307) zählt nicht


von Fabian K. (bioxar)


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

: Bearbeitet durch User
von Jim M. (turboj)


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.

von Fabian K. (bioxar)


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?

von spess53 (Gast)


Lesenswert?

Hi

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

Es gibt einen Schaltplan für das Modul.

MfG Spess

von Sascha W. (sascha-w)


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

von CheckerChan (Gast)


Lesenswert?

Fabian Ko schrieb:
> Die Batterie kann es eigentlich nicht sein , da ich das Modul mit 5V des
> Arduino versorge.

ohne Batterie muss Vbat auf GND gelegt werden

von Bole aus Serbien (Gast)


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

von Alex W. (a20q90)


Lesenswert?

Welche Spannung legst du auf den DS1307? 3,3V?

von Fabian K. (bioxar)


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

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

hast du es schon mal mit der Lib die es zu dem Modul gibt versucht?
Dein Code hat mit dem auf der Website ja nicht viel gemeinsam.

Sascha

von Bole aus Serbien (Gast)


Lesenswert?

Fabian Ko schrieb:
> betreiben. Leider liegt am SQ Ausgang immer eine Spannung von 5V an.

Quartz im Eimer ?

von Matthias R. (baldo_der_baer)


Lesenswert?

Wennn der DS1307 mit 5V betrieben wird darf die Batteriespannung
nicht über 4V gehen da der DS1307 dann nicht mehr  funktioniert
Hatte ich selber als ich den VDD mit einem Goldcaps Puffern wollte und 
die
Ladespannung diese 4 V überschritten hatte
also wenn keine Batterie vorhanden ist
VBat mit GND verbinden
wie CheckerChan schon geschrieben hatte

von Fabian K. (bioxar)


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

von Sascha W. (sascha-w)


Lesenswert?

Ohne Batterie müsstest du Vbat an GND legen. Ansonsten bleibt wohl nur 
noch ein Defekt - warscheinlich der Quarz.

Sascha

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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

 Nein, gemeint ist, dass der Quartz kaputt ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.