Hallo,
ersmal hier das Programm:
Code:
'##############################################################
'DCF_Decoder3.bas
'
'Das Programm liest die Uhrzeit aus dem digetalen DCF-Decoder aus
'und gibt die Zeit über RS232 aus
'Den digitalen DCF Decoder gibt es nur bei Robotikhardware.de
'Es muss lediglich PIN PD7 mit dem DOUT Pin des Chips DCF-RS1 verbunden werden
'Natürlich auch GND und VCC
'
'Wenn ein USB Modul an RN-AVR UNIVERSAL angesteckt oder eingelötet wurde
'dann wird das Ergebnis über USB zu einem virtuellen COM Port übertragen
'und kann auch mit allen Programmen oder Terminalprogramm empfangen werden
'
' (c) Frank roboternetz.de
'Bezug: www.robotikhardware.de
'Weitere Beispiele auf DVD oder im www.Roboternetz.de und rn-wissen.de
'######################################################################
Declare Sub DCF_UhrzeitLesen()
'$programmer = 12 'MCS USB (Zeile weglassen wenn anderer Programmer)
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64
$crystal = 8000000 'Quarzfrequenz
$baud = 9600 'Baudrate (Übertragungsgeschwindigkeit)
'Baud = 9600
Config Pind.6 = Output 'LED
Led1 Alias Portd.6
'Diese Variablen enthalten nach dem Abruf die Uhrzeit und Datum Informationen
Dim uhr_sek As byte
Dim uhr_min As byte
Dim uhr_std As byte
Dim uhr_tag As byte
Dim uhr_monat As byte
Dim uhr_jahr As byte
Dim uhr_wochentag As byte
Dim uhr_sommerzeit As byte
Dim uhr_zeitumschaltung As byte
Dim uhr_sync As byte
dim bstart as byte 'Enthaelt Byte Zeilenanfang immer 126
dim bende as byte 'Enthaelt Byte Zeilenanfang immer 127
dim zeitgueltig as byte
zeitgueltig=0
wait 1
Do
DCF_UhrzeitLesen
if zeitgueltig=1 then
Print "Heute haben wir den: "; uhr_tag;".";uhr_monat;".";uhr_jahr;" ";uhr_std;":";
uhr_min;":";uhr_sek;" Wochentag:";uhr_wochentag
if uhr_sommerzeit=1 then print "Es gilt Sommerzeit!"
print "Die Uhr wurde von "; uhr_sync; " Minuten per Funk verglichen"
print
endif
Wait 3
toggle led1
Loop
'Hilfsfunktion
'Diese Funktion ruft der Zeit im binären Modus ab
'und uerbergibt diese den globalen Uhr Variablen
Sub DCF_UhrzeitLesen()
Config Pind.5 = Input
if Pind.5 =1 then 'DCF Uhrzeit bereits vorhanden?
'Kurz auf GND setzen um DCF Decoderzeit ausgeben zu lassen
Config PORTD.5 = output
PORTD.5=0
waitus 1
Config Pind.5 = Input
Open "comd.5:2400,8,n,1" For input As #1
Inputbin #1,bstart,uhr_tag,uhr_monat,uhr_jahr,uhr_std,
uhr_min,uhr_sek,uhr_wochentag,uhr_sommerzeit,uhr_zeitumschaltung,uhr_sync,bende
Close #1
Config Pind.5 = Input
uhr_tag=uhr_tag-65
uhr_monat =uhr_monat-65
uhr_jahr =uhr_jahr-65
uhr_std=uhr_std-65
uhr_min =uhr_min-65
uhr_sek =uhr_sek-65
uhr_wochentag = uhr_wochentag-65
uhr_sommerzeit=uhr_sommerzeit-65
uhr_zeitumschaltung=uhr_zeitumschaltung-65
uhr_sync=uhr_sync-65
zeitgueltig=1
else
Print "Zeit noch nicht verifiziert!"
zeitgueltig=0
endif
end sub
-Die Daten sende ich per RN-Controll auf das Terminal in Bascom AVR auf meinem PC. Dort ändert sich auch im Bereich der Sekunden garnichts. Es kommen immer die selben Werte.
- Einen Mode am IC habe ich nicht gewählt - Also Pin 1 nicht beschaltet = als Text ausgeben, wobei ich die Anleitung so verstanden habe das der Mode Pin nur für Pin 5 ist, der 1mal die Minute die Daten per RS232 aussendet.
Ich habe jedoch Pin 7 "DOUT" Mit der RN Controll verbunden um die Daten geziehlt im Birärcode abzugragen.
- GND ist mit dem Empfäger und dem IC verbunden. Ich nutze für beides die 5V DC die an der RNControll zur verfügung stehen.
- "uhr_z eitumstellung" ist richtig geschrieben
- In Bascom kommen werden keine Fehler angezeigt. Sobald ich einen falschen Befehl zum testen in den Code reinschreibe, wird ein Fehler angzeigt = Fehlerausgabe in Bascomeinstellungen aktiviert?!
Ich hoffe wirklich das ihr mir weiterhelfen könnt. Ich kann einfach nicht verstehen, woran der Fehler noch liegen könnte
Viele Grüße
Dominik
Lesezeichen