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!
Es macht keinen Sinn den Avr als Zeitgeber zu benutzen. Nimm die Zeit immer aus der RTC und gleiche gelegentlich mit dem Funksignal ab.
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?
Clock schrieb: > Soll ich hierfür einen eigenen Timer-Interrupt benutzen, oder das in > der "Hauptschleife" tun? Dafür bietet sich ein HW-Interrupt durch den SQW/OUT der RTC an, wenn du den auf 1Hz konfigurierst.
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?
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.
p.s. Auf S.6 unter "Pin Description" steht es auch nochmal explizit: "The SQW/OUT pin is open drain and requires an external pullup resistor."
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.
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.
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. :-)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.