Uhr mit RTC und DCF

Gast #2871990
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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 #2872038
Lesenswert?

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
Lesenswert?

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.

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