[Bascom/AVR] Uhr und DCF

OP #3909244
Lesenswert?
• ▲
▼
Hallo,

anbei einige Codeschnipsel in Bascom für eine Uhr mit  Einstellung per 
DCF-Signal. Es 3 zusammengebaute Schnipsel: CTC-Timer, Uhr und DCF.

Der Quarz kann in weiten Bereichen frei gewählt werden, der Compiler 
berechnet daraus die 20msec-Einstellung für den CTC-Timer. Die nächste 
Stufe generiert daraus 1sec-Schritte.

Da ein Quarz am AVR, bezogen auf Uhrengenauigkeit, unzureichend ist, 
lässt sich das DCF-Programm auf dauernd  "Dcf_mode = _uhr_nachstellen" 
konfigurieren.

Wenn die Uhr  an einem TCXO  läuft, genügt einmal einstellen "Dcf_mode = 
_dcf_abschalten".
Die Sommer und Winterzeit-Umstellung wird  auch ohne DCF berücksichtigt.

Ist der Schalter "Testumschaltung" geschlossen, wird anstelle des Datums 
die Lange der DCF-Pulse  bezogen auf den Schwellwert angezeigt. Eine 
Pause wird mit einem "P" signalisiert. Die 0/1-Anzeige liegt optimal 
symmetrisch zu"<>". Mit "Dcf_bit_schwelle " lässt sich das verändern.
Zwei Empfänger habe ich getestet, einen uralten Conrad-Empfänger 
(Dcf_bit_schwelle = 42) und einen Pollin-Empfänger  (Dcf_bit_schwelle = 
43).

Pro Sekunde werden alle Teilstrings für eine LCD-Anzeige neu berechnet. 
Mit diesen lassen sich verschiedene Anzeigenformate nach Wunsch 
zusammensetzen. Die Bereitstellung alle Strings dauert bei 7,3728 Mhz 
nur 33µsec.

Uhr und DCF-Empfang verbrauchen im Schnitt weniger als 5msec pro 
Sekunde. Da bleibt noch jede Menge Zeit für das LCD und sonstiges.

Das "Hauptprogramm" ist nur zum Testen gedacht und grob gestrickt.

Gruss  Alex
Angehängte Dateien:
#3909684
Lesenswert?
• ▲
▼
Alex D. schrieb:
> Da ein Quarz am AVR, bezogen auf Uhrengenauigkeit, unzureichend ist...

Hm, ich habe 2 Uhren mit jeweils 4MHz-Quarzen und Atmega8 bzw. 
Attiny2313.
Die sind so genau, daß ich nur Sommer/Winterzeit umstellen muß.

Vielleicht liegt die Ungenauigkeit in der Methode des Berechnens:
Const _irq_teiler_max = Int((_xtal * _irq_abstand /(1000000000)) + 0.5)

Hier kommt doch durch das 0.5 am Ende immer irgendetwas "Wackeliges"
heraus, oder täusche ich mich?

MfG Paul
OP #3909714
Lesenswert?
• ▲
▼
Paul Baumann schrieb:
> Hier kommt doch durch das 0.5 am Ende immer irgendetwas "Wackeliges"
> heraus, oder täusche ich mich?

Nein und ja, nicht jede Quarzferquenz ergibt ganzzahlige Teiler. Die 
+0,5 dient in Verbindung mit dem INT() dient zur Annäherung an den 
gewünschten Wert. Bei ständigem DCF-Berieb sollte das nicht stören.

Ich verwende einen 12,8MHz TCXO (ergibt einen ganzzahligen Wert) mit 
einmaliger Einstellung beim Einschalten.

Paul Baumann schrieb:
> Hm, ich habe 2 Uhren mit jeweils 4MHz-Quarzen

Hast Du die Quarze auf die richtige Frequenz nachgezogen oder ging das 
ohne? Bei mir war das nicht der Fall, ohne nachziehen ging die Uhr 
mehrere Sekunden am Tag falsch.

Gruss  Alex
#3909866
Lesenswert?
• ▲
▼
Alex D. schrieb:
> Hast Du die Quarze auf die richtige Frequenz nachgezogen oder ging das
> ohne?

Ich habe mir die heruntergeteilte Frequenz zum Messen mit einem 
Frequenzmesser auf einen Portpin ausgegeben und mit dem Wert für den
CTC-Modus bzw. dem Vorladewert für den Timer "gespielt", bis es
exakt stimmte.

Die eine Uhr habe ich nicht hier, m.E. ist da noch ein At90S2313 drin,
da ging glaube ich der CTC-Modus noch nicht zu nutzen und ich mußte
den Timer vorladen.

MfG Paul

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.