Guten Tag!
Habe mit einem ATmega32 und einem DCF Empfänger die Uhrzeit und das
Datum auf einem LCD ausgegeben. Gibt es irgendeine möglichkeit den
Sekundentakt an einem Pin abzugreifen? Würde damit gerne Schieberegister
füllen für eine große Uhr.
Hier mal mein bisheriger Code:
Hans F. schrieb:> Habe mit einem ATmega32 und einem DCF Empfänger die Uhrzeit und das> Datum auf einem LCD ausgegeben. Gibt es irgendeine möglichkeit den> Sekundentakt an einem Pin abzugreifen?
Direkt am DCF Empfänger gibt es keine Möglichkeit. Das folgt daraus,
dass im DCF Signal der MInutenanfang durch ein fehlendes Sekundensignal
signalisiert wird.
Aber wo liegt das Problem?
Du hast doch in deinem Programm eine Routine, die jede Sekunde
aufgerufen wird. Toggle dir dort einen Pin (oder erzeug dir einen Puls)
und du hast das gewünschte Signal? Oder stimmt der Kommentar hier nicht?
1
' Sectic-Programmteil
2
' wird durch den internen Timer automatisch jede Sekunde einmal aufgerufen
Okay, hab nun mal
Config Pinb.5 = Output
Dim Sekunden As Byte
Sekunden = 0
und
Sectic:
Portb.5 = 1
Waitms 5
Portb.5 = 0
Sekunden = Sekunden + 1
Ich gebe die Sekunden nun mit auf dem LCD aus. Ist es irgendwie möglich
das er nur synchron zu den dcf sekunden bis 60 hochzählt und auch erst
anfängt, wenn ein DCF Signal (Dcf_status.7 = 1) anliegt?
So zählt er ja schon los, wenn ich einschalte.
MfG
Hans F. schrieb:> Ist es irgendwie möglich> das er nur synchron zu den dcf sekunden bis 60 hochzählt
Dazu mußt Du in der Interrupt-Routine eben nur bis 59 zählen und danach
Deine interne Uhr anhalten bis ein neues DCF-Signal kommt.
Hans F. schrieb:> und auch erst> anfängt, wenn ein DCF Signal (Dcf_status.7 = 1) anliegt?
Ähnlich, warte mit der Freischaltung des internen Uhren-Interrupts bis
das DCF-Signal vorhanden ist.
Sooo, habs nun so:
If Dcf_status.7 = 1 Then
If Sekunden >= 59 Then
Sekunden = 0
Else
Sekunden = Sekunden + 1
End If
End If
Leider gehen die Sekunden nach 59 immer auf 255. Warum ist das so?
MfG
Soooo, habs nun einigermaßen zum laufen gebracht. Allerdings habe ich
nun das Problem, das die DCF Minute nicht mehr bei Sekunde 00 umspringt
sonder mittendrin in der Minute. Und das Urzeit/Datum wird nun so 3-4min
angezeigt, danach dreht das LCD voll durch und zeigt nur noch
Sonderzeichen etc. an! Am LCD liegts nicht, habe grad schon ein zweites
getestet.
Hier mal der Code: