Forum: Mikrocontroller und Digitale Elektronik AVR DCF-77 Codereview


von Thomas B. (Gast)


Angehängte Dateien:

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

von Pete K. (pete77)


Lesenswert?

Zur Vollständigkeit wäre ein Schaltplan nett und als Kür ein 
Hauptprogramm zum schnellen Testen ...

von Thomas B. (Gast)


Angehängte Dateien:

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

von Sven P. (Gast)


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.

von Pete K. (pete77)


Lesenswert?

Das Pollin Modul möchte lt. Datenblatt an PON ein Flankenwechsel zum 
Start haben. Wie bekommst Du das hin, wenn PON direkt auf GND gelegt ist 
?

von Thomas B. (Gast)


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

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
Noch kein Account? Hier anmelden.