AVR DCF-77 Codereview

Gast #1140329
Lesenswert?

Hallo zusammen,

ich habe im Anhang einen DCF_77 Code angefügt.

Funktionen:
- Synchronisation in einstellbaren Zeitabständen
- automatischer Abgleich der berechneten Uhrzeit nach jeder 
Synchronisierung (Anpassung des Timer-Compare-Registers)
- Automatische Datumsberechnung incl. Schaltjahr
- Ausgabe auf Anzeige (4 Zeilen, 20 Zeichen)

Bei mir funktioniert alles einwandfrei. Ich hoffe auf 
Verbesserungsmöglichkeiten und konstruktive Kritik.

Danke & Grüße

Thomas


PS.: Verwendete Hardware:
-Anzeige: EA DIP204-4
-ATMega16 @ 8Mhz
-Pollin DCF-Modul
Angehängte Dateien:
Gast #1177030
Lesenswert?

Hallo,

danke für die Antwort. Ich habe im Anhang das Hauptprogramm hinzugefügt.
Einen Schaltplan habe ich auf die Schnelle keinen zur Hand. Ich liste im 
Folgenden aber kurz ein paar Pinbelegungen auf:

LCD (EA DIP204-4) - Das LCD wird im 4-Bit-Modus mit folgender 
Pinbelegung am uC betrieben:
D4 --> PC0
D5 --> PC1
D6 --> PC2
D7 --> PC3
RS --> PC4
RW --> PC5
EN --> PC6

DCF-Modul (Pollin):
VDD  --> Betriebsspannung
GND  --> Masse
DATA --> PD2 (Int0)
PON  --> Masse (GND -> Empfangsteil ist eingeschaltet)

Hoffe ich konnte dir hiermit schonmal ein bisschen helfen.

Grüße
Angehängte Dateien:
Gast #1177050
Lesenswert?

Das was du da gebaut hast, habe ich auch mal gebaut -- kannst du getrost 
komplett neuschreiben...

DCF77 ist ein derart schnarchlangsames Protokoll, dafür nimmt man keinen 
Interrupt, sondern pollt das einfach alle 10ms. Dadurch wird die Sache 
erheblich störunempfindlicher.

cli und sei in einer Interruptroutine sind übrigens auch überflüssig :-) 
Ansonsten macht es noch Sinn, zuerst cli zu machen, dann die Register zu 
initialisieren und erst dann wieder mit sei freizugeben.
Gast #1178541
Lesenswert?

Hallo,

danke für euere Antworten.

@ Sven
Das mit dem cli & sei in der Interruptschleife habe ich hier vor kurzem 
auch schon mal gelesen, ich ändere das noch ab. Danke für den Hinweis.
Das mit dem Pollen werd ich auch nochmal durchdenken.

@ Pete K
Das ist ein berechtigter Einwand. Die Klausel habe ich im Datenblatt 
überlesen. :o) Allerdings funktioniert es auch ohne aktiven 
Flankenwechsel.
Ich werde das jedoch noch anpassen.

Ich werde mein Programm abändern bzw. anpassen und das Ergebnis hier 
nochmal einstellen.

Weitere Anregungen sind jederzeit willkommen! :)

Grüße

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