Uhr mit RTC und DCF

Gast #2871990
Hi,

ich habe hier einen ATmega88, ein RTC (DS1307), ein Conrad DCF Modul 
sowie ein HD44780 2x16 Zeilen Display. Nun würde ich die Komponenten 
gerne zu einer Uhr mit automatischer Zeitsynchronisation "zusammenbauen" 
und das Ganze als Einstieg in die Welt der Mikrocontroller nehmen.

Allerdings stellt sich mir die Frage was hier der richtige Ansatz wäre. 
Sollte ich im Mikrocontroller die Zeit "mitlaufen" lassen und nur zu 
bestimmten Zeiten mit dem RTC bzw. dem DCF Modul synchronisieren, oder 
sollte ich mein Zeitsignal komplett aus dem RTC beziehen?

Mein bisheriger Ansatz sieht so aus: Ich lasse im Mikrocontroller über 
einen Timer im CTC Modus eine Uhr mitlaufen. Sofern ich ein gültiges DCF 
Signal empfange, stelle ich die Uhr danach und schiebe das Ganze in die 
RTC. Sofern ich über eine Minute kein gültiges DCF Signal empfange, 
synchronisiere ich die Zeit jede Minute mit dem RTC.

Was haltet ihr davon? Das Problem mit der "internen" Uhr ist einfach, 
dass der interne RC Oszillator, welchen ich verwenden möchte, recht 
ungenau ist. Im Datenblatt wird hier eine Abweichung von bis zu 10% 
angegeben.

Im Datenblatt des DS1307 wird auch darauf verwiesen, dass es ein SQW/OUT 
Pin gibt, den man "programmieren" kann und der ein Signal mit halbwegs 
akkurater Frequenz ausgibt. Macht es Sinn diesen zu verwenden?

Wie handhabt ihr das?

Vielen Dank!
Gast #2872000
Eumel schrieb:
> Es macht keinen Sinn den Avr als Zeitgeber zu benutzen. Nimm die Zeit
> immer aus der RTC und gleiche gelegentlich mit dem Funksignal ab.
Was heißt hier "immer"? Ich muss ja die RTC per I2C abfragen. Wie oft 
(pro Sekunde) sollte ich das idealerweise tun? Soll ich hierfür einen 
eigenen Timer-Interrupt benutzen, oder das in der "Hauptschleife" tun?
Gast #2872010
Eumel schrieb:
> Was soll deine Uhr denn maximal Anzeigen?
Sekunden sind ausreichend.

Michael schrieb:
> Dafür bietet sich ein HW-Interrupt durch den SQW/OUT der RTC an, wenn du
> den auf 1Hz konfigurierst.

Braucht man bei solchen HW-Interrupts irgendeine besondere Beschaltung 
(Pull-Ups, oder ähnliches) oder kann das Signal als "stabil" genug 
angesehen werden?
Gast #2872015
Clock schrieb:
> Braucht man bei solchen HW-Interrupts irgendeine besondere Beschaltung
> (Pull-Ups, oder ähnliches)
Im Datenblatt des DS1307 Fig.1 siehst du, dass der SQW/OUT ein 
Open-Drain-Ausgang ist. Ohne Pull-Up kann dort also kein High-Pegel 
entstehen.
Gast #2872038
Clock schrieb:
> Was haltet ihr davon? Das Problem mit der "internen" Uhr ist einfach,
> dass der interne RC Oszillator, welchen ich verwenden möchte, recht
> ungenau ist. Im Datenblatt wird hier eine Abweichung von bis zu 10%
> angegeben.

Beim mega88 kannst du auch einen Uhrenquarz für den Timer2 anschließen. 
Damit wird der Timer 2 in etwa so genau wie eine externe RTC, kann sogar 
weiterlaufen im Sleepmode.
Ich persönlich würde auf die externe RTC verzichten und die interne Uhr 
des mega88 mit der DCF abgleichen.Spart ne Menge Aufwand.
Gast #2872041
Floh schrieb:
> Beim mega88 kannst du auch einen Uhrenquarz für den Timer2 anschließen.
> Damit wird der Timer 2 in etwa so genau wie eine externe RTC, kann sogar
> weiterlaufen im Sleepmode.
> Ich persönlich würde auf die externe RTC verzichten und die interne Uhr
> des mega88 mit der DCF abgleichen.Spart ne Menge Aufwand.

Ja, dafür anfällig gegen Ausfall bei Problemen mit der Stromversorgung. 
Meine RTC läuft dann mit der Batterie jahrelang weiter. Außerdem 
verbraucht der ATmega88 auch im Sleepmodus mehr als meine RTC.
Gast #2872045
Clock schrieb:
> Ja, dafür anfällig gegen Ausfall bei Problemen mit der Stromversorgung.

Und?
Die Anzeige wird erst wieder funktionieren, wenn Strom vorhanden ist. 
Und ab da läuft auch die DCF wieder für die Uhrzeit. :-)
Gast #2872079
Floh schrieb:
> Und ab da läuft auch die DCF wieder für die Uhrzeit.

Das kommt auf den Standort des Empfängers an. Wenn die Feldstärke 7/24 
sicher ausreicht - ok. Sobald man auf den Tagesrhythmus der 
Funkwellenausbreitung angewiesen ist, geht das nicht mehr.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.