Information
learn
design
share
40 Mai 2016 www.elektormagazine.de
ein gültiger GPS-String empfangen wer-
den. Ist dies geschehen, wird die PIC-
Zeit synchronisiert, die aktuelle Zeit
wird angezeigt. Anschließend läuft die
Uhr gesteuert durch die PIC-Zeit weiter.
Jetzt startet ein zweistufiger Kontroll-Al-
gorithmus, der fortlaufend die Stabilität
des GPS-Empfangs überwacht. Die GPS-
Strings werden analysiert, bei positivem
Ergebnis wird die GPS-Zeit in einem Puf-
fer abgelegt. Der Puffer speichert zehn
Zeiten, wobei jede Zeit aus drei Bytes
besteht. Eine gespeicherte Zeit ist iden-
tisch mit der Anzahl der Sekunden, die
seit Mitternacht vergangen sind. Die
zuletzt empfangene Zeit wird immer an
Position 10 gespeichert, wobei die übri-
gen Zeiten um eine Position aufrücken.
Die älteste Zeit an Position 1 fällt aus
dem Puffer heraus. Solange der GPS-Da-
tenstrom ungestört ist, beträgt die Dif-
ferenz zwischen der neusten und der
ältesten Zeit genau neun Sekunden.
In diesem Fall wird das GPS-Signal mit
hoher Wahrscheinlichkeit korrekt emp-
fangen, die GPS-Zeit kann die PIC-Zeit
synchronisieren.
Die Synchronisation findet mindestens
einmal in der Stunde statt. Wenn die
PIC-Zeit die volle Stunde um 30 Sekun-
den überschritten hat (XX:00:30 Uhr),
leitet die Interruptroutine die Synchroni-
sation ein. Ist die GPS-Zeit stabil, wird die
PIC-Zeit mit der GPS-Zeit überschrieben.
Der Zeitpunkt der Synchronisation ist so
gewählt, dass eine eventuelle Korrektur
nur bei den Sekunden auffallen kann, auf
die Minuten und Stunden wirkt sie sich
nicht aus. In der Praxis betrug die Abwei-
chung niemals mehr als eine Sekunde,
vorausgesetzt das 50-ms-Intervall der
Interruptroutine ist sorgfältig auf seinen
Sollwert abgeglichen.
Die stündliche Synchronisation ist kein
absolutes Allheilmittel gegen Fehlfunkti-
onen aller Art. Insbesondere nach einem
Neustart können fälschlicherweise GPS-
Strings als gültig erkannt werden, die
beschädigt sind. Die GPS-Zeit weicht
dann von der korrekten Zeit eklatant
ab, und die fehlerhafte Zeit wird sehr
lange nicht korrigiert. Im ungünstigsten
Fall kann diese Fehlfunktion eine Stunde
andauern. Ein zweiter Kontroll-Algorith-
mus beseitigt diese Gefahr und eliminiert
gleichzeitig grob ungenaue Interrupt-In-
tervalle. Auch aus der PIC-Zeit wird jede
Sekunde ein Zahlenwert gebildet, der die
Anzahl der Sekunden seit Mitternacht dar-
Bild 4. Dieser „Adapter“ für den Programmer wurde aus kurzen, gegeneinander gelöteten
Kontaktleisten angefertigt.
Programmier-Klippen
Schenkt man Microchip Glauben, wird der PIC18F4420 vom PICkit 2 und PICkit 3
unterstützt. Mit dem PICkit 3 verlief das Programmieren unseres Prototyps klaglos.
Beim PICkit 2 war es unmöglich, den Mikrocontroller aus dem Programmer mit Strom
zu versorgen. Das ist natürlich kein unlösbares Problem, denn die Schaltung kann die
Stromversorgung übernehmen. Bei dieser Konfiguration arbeitet auch der PICkit 2
einwandfrei. Nach dieser Anlaufhürde ist die externe Stromversorgung entbehrlich.
Wir haben den Eindruck, dass sich in der Software des PICkit 2 ein Bug befindet.
Microchip unterstützt diesen Programmer nicht mehr, und wir haben das Web nicht
nach einer Lösung des Problems durchforstet.
Noch ein Tipp am Rand: Der Programmer kann nicht unmittelbar auf den ISP-
Anschluss aufgesteckt werden, der Spannungsregler und der zugehörige Elko sind
hier im Weg. Mit einer sechspoligen Buchsenleiste, angelötet an eine abgewinkelte
Stiftleiste, entsteht ein maßgeschneiderter Adapter. Dass diese Konstruktion eine
perfekte Brücke zwischen ISP-Anschluss und Programmer ist, zeigt das Foto in Bild 4.
Tabelle 1. Zeitzonen-Einstellungen
GMT = 0 GMT-Zeit GMT = 19 GMT-7
GMT = 1 GMT+1 (Default) GMT = 20 GMT-8
GMT = 2 GMT+2 GMT = 21 GMT-9
GMT = 3 GMT+3 GMT = 22 GMT-10
GMT = 4 GMT+4 GMT = 23 GMT-11
GMT = 5 GMT+5 GMT = 24 GMT-12
GMT = 6 GMT+6 GMT = 25 GMT+3.30
GMT = 7 GMT+7 GMT = 26 GMT+4.30
GMT = 8 GMT+8 GMT = 27 GMT+5.30
GMT = 9 GMT+9 GMT = 28 GMT+5.45
GMT = 10 GMT+10 GMT = 29 GMT+6.30
GMT = 11 GMT+11 GMT = 30 GMT+8.45
GMT = 12 GMT+12 GMT = 31 GMT+9.30
GMT = 13 GMT-1 GMT = 32 GMT+10.30
GMT = 14 GMT-2 GMT = 33 GMT+11.30
GMT = 15 GMT-3 GMT = 34 GMT+12.45
GMT = 16 GMT-4 GMT = 35 GMT-3.30
GMT = 17 GMT-5 GMT = 36 GMT-4.30
GMT = 18 GMT-6 GMT = 37 GMT-9.30