Herzlich Willkommen auf der Homepage von Sven Jordan! | Sonntag, 06. Oktober 2024, 04:05 |
FunkuhrDas hier vorgestellte Programm-Modul beinhaltet das Dekodieren des DCF77-Funkuhr-Signals, inklusive Plausibilitätsprüfung der empfangenen Daten. Es wurde auf das DCF77-Empfänger-Modul, Bestellnummer "DCF77 MODUL" von Reichelt Elektronik zugeschnitten, das direkt an 5 Volt betrieben wird und die empfangenen DCF77-Impulse als TTL-Pegel ausgibt. Der Ausgang des Empfängers kann an einen beliebigen digitalen I/O-Pin des ATmega32 angeschlossen werden.DownloadDownload: funkuhr.h (C-Header-Datei) Versions-VerlaufVersion 1.0: Initiale VersionFunktionenVoraussetzungenDieses Programm-Modul beinhaltet auch eine Funktion zum Anzeigen von Datum und Uhrzeit. Deshalb ist wird zusätzlich das Modul zur Display-Ansteuerung benötigt.Datenstruktur der ZeitinformationenDie Funktionen zum Empfangen und zum Anzeigen der Funk-Uhrzeit verwenden eine Struktur (vom Typ "zeit"), die global deklariert wird. Diese Struktur enthält sämtliche relevanten Informationen. Sie enthält folgende Elemente:
Funkuhr-FunktionDatentyp der Funktion: struct zeit funkuhr(unsigned char eingangsport, unsigned char eingangsbit)Diese Funktion erwartet als Argumente die Information, wo der DCF77-Empfänger angeschlossen ist. Das erste Argument bestimmt den verwendeten Port ('A', 'B', 'C' oder 'D'). Das zweite Argument bestimmt das Bit des entsprechenden Ports (0 ... 7). Die Funktion muss zyklisch alle 10 Millisekunden aufgerufen werden. Dabei wird eine vom DCF77-Signal unabhängige Uhr inkrementiert. Weiterhin wird der Eingang, an dem der DCF77-Empfänger angeschlossen ist, abgetastet. Die empfangenen Zeitinformationen werden in den Zeitpuffer übernommen, wenn zwei aufeinander folgende Telegramme sich nur in einer Minute unterscheiden, oder wenn das letzte empfangene Telegramm nur um eine Minute vom Zeitpuffer abweicht. Nach dem Starten des Empfangs dauert es also mindestens 2 Minuten und bei gutem Empfang höchstens 3 Minuten, bis erstmals eine (auf Plausibilität geprüfte) Zeit zur Verfügung steht. Als Rückgabewert liefert die Funktion die oben beschriebene Datenstruktur mit den empfangenen Zeitinformationen bzw. dem internen Zeitpuffer. AnzeigefunktionDatentyp der Funktion: void print_time(struct zeit uhrzeit)Diese Funktion erwartet die anzuzeigenden Zeitinformationen, die in einer wie oben beschriebenen Struktur verpackt sein müssen. Die Ausgabe erscheint auf dem LC-Display in einer Zeile mit 20 Zeichen mit folgender Formatierung: "DD TT.MM.JJ HH:MM:SS". (DD = Wochentag, TT = Tag des Monats, MM = Monat, JJ = Jahr, HH = Stunde, MM = Minute, SS = Sekunde). |
© Sven Jordan Letzte Änderung: 01.10.2019, 08:16 1 Aufruf heute | Druckansicht beenden |