Beschreibung
============
Diese Bastelei besteht zur vollen Zufriedenheit seit 2010.
2024 habe ich Änderungen vorgenommen 
mit einem PIN-Kompatiblen neuen PIC-Controller.
Ausserdem wird hier auch noch zwischen der EIN- und AUS-Schaltzeit geschaltet,
wenn es einen Stromausfall gegeben hat.
Es schaltet also nicht nur zu der entsprechenden sec,
sondern auch, wenn man sich innerhalb eines Schalt-Zykluses befindet.

Hier wird eine Bastelei vorgestellt, mit der man mit sehr genauen Zeiten 
auf der Basis von DCF77-Funkuhren-Signalen beliebiges schalten kann.
Ich wollte für mich eine Radio-Schaltuhr realisieren mit der ich jeden Morgen geweckt werde und
in der Nacht soll man die Zeit durch eine beleuchtete LCD-Anzeige ablesen können.

Der Aufbau besteht aus zwei Gehäusen, dem DCF77-Empfänger-Modul und
der eigentlichen Uhr.

Der interne Trafo der Uhr erzeugt einen Störpegel und ein Empfang mit dem 
DCF-Empfänger im gleichen Gehäuse wäre nicht möglich. 
Die Uhr und der Empfänger müssen also mit etwas Abstand betrieben werden.
Deshalb existieren hier 2 Gehäuse.

Es dürfen also keine Störquelle in der Nähe des Empfängers vorhanden sein.


Funktionsprinzip:
-----------------
Man schaltet ein. 
Man befindet sich jetzt in einer Warteschleife.
Es erscheint die Ausschrift: "Geht Los" in dem Zeitanzeige-LCD-Modul.
Der DCF77-Empfänger muss erst einschwingen bis die ersten Impulse kommen.

Danach beginnt die Interrupt-Quarzuhr mit 00:00.00 im Sekundentakt zu zählen.
Der Doppelpunkt beginnt zu blinken, wenn in der 59-zigsten Sekunde einer Minute die DCF77-
Zeit-Syncronisierungs-Lücke erkannt wurde. 
Es leuchtet der Doppelpunkt andauernd, wenn kein DCF-Signal anliegt.

Wenn der Doppelpunkt zu blinken beginnt braucht es noch 1-2 Minute bis die exakte Zeit
der Uhr eingestellt wird. 
Dabei dürfen natürlich keine Decodier-Empfangs-Fehler aufgetreten sein.

Tritt ein Decodierfehler auf (vielleicht durch Störungen / Fehlimpulse)
wird der Dezimalpunkt zu einem Komma bis die neue Minute beginnt.
Dann erscheint wieder der Dezimalpunkt.
Es ist ja die komplette "eine laufende Minuten-Decodierung" "versaut".

Ist kein Decodierfehler in der laufenden Minute aufgetreten blitzt
der Dezimalpunkt zu einem Komma nur mal kurz in der Null-ten Sekunde für 0,5sec auf.
Man erkennt so, dass die Uhr exakt zur vollen Minute gestellt WURDE.

Sind also keine Decodier-Fehler aufgetreten wird die intern laufende Quarz-genaue-Interrupt-Uhr 
zu jeder vollen Minute auf genaue DCF-Zeit gestellt.


Zur Software:
-------------
Es kann auf die Sekunde genau ein- und ausgeschaltet werden, z.B. mit:
07:59.59 einschalten und 08:05.01 ausschalten. 
Dann wird man mit den Nachrichten im Radio geweckt.
Man kann auch weitere Schaltzeiten mit EIN und AUS "einstellen".
Der kürzeste Schaltzyklus wäre eine Sekunde mit z.B.:
EIN 12:23.00  AUS 12:23.01 .

Damit auch genau bei dieser Zeit geschaltet werden soll, muss das ASM-Programm auch so programmiert sein.

Am Ende des asm-Programm's stehen 6 "Tabellen": h-ein, min-ein, h-ein und h-aus, min-aus, sec-aus

In diesen Tabellen werden die Schaltzeiten eingetragen, wobei immer in der 1-ten Zeile die erste Zeit
steht. In der 2-ten Zeile steht die 2-te Schaltzeit....

Am Besten man sieht sich das ASM-File an.
Hier steht eine Erklärung am Ende des Files bei den Tabellen drin.

Hat man alle Zeiten exakt im ASM-File reingeschrieben (geändert), muss assemliert werden:
Das "Assembler-Programm" liegt hier bei.

73 de DL3UKH (Hans) aus Bad Liebenwerda zwischen Dresden/Berlin



























