www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR DCF-77 Codereview


Autor: Thomas B. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Pete K. (pete77)
Datum:

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

Autor: Thomas B. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht 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 
?

Autor: Thomas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.