Guten Morgen,
ich nutze in meiner Homesteuerung ebenfalls einen DCF77 Empfänger in Verbindung mit einem DS1307.
die Initialisierung sieht so aus:
Code:
Config Dcf77 = Pinb.6 , Timer = 1 , Inverted = 0 , Timer1sec = 1 , Update = 0 , Updatetime = 0 , Check = 1 , Debug = 0 , Gosub = Sectic 'Switchpower = 1 , Powerlevel = 1 , Powerpin = Pina.2
Config Date = Dmy , Separator = . 'deutsches Datumsformat
Dim Dcf_buff(7) As Byte
Dim Zeit_flag_set As Bit , Zeit_flag_get As Bit , Dcf77_set As Bit , Dcf_sig As Bit 'Variablen zum stellen der DS1307 Uhr und Systemuhr
Dcf_sig = 0
Dim Ds1307_w_d(5) As Byte 'Schreibadresse &B11010000 Ds1307w = &HD0
Dim Ds1307_w_t(4) As Byte 'Schreibadresse &B11010001 Ds1307w = &HD1
Dim _day1 As Byte , _month1 As Byte , _year1 As Byte , _sec1 As Byte , _min1 As Byte , _hour1 As Byte 'Zeit-Variablen für die DS1307 Uhr
nun Du brauchst nicht jede Stunde den DS1307 neu zu stellen, da dieser sehr genau läuft, vorausgesetzt ist natürlich ein guter 32kHz Quarz am DS. Ich nutze dafür den DS32KHZ, diesen habe ich mir als Sample von Maxim schicken lassen, da ich ihn nicht in einem gängigen Shop gefunden habe.
Ich stelle die interne Uhr vom DS einmal am Tag nach DCF. Dazu wähle ich mir eine Uhrzeit aus und filtere mir über das "Dcf_status.2 = 1" Bit, ob das empfangene Datenpaket in Ordnung ist und stelle dann die Uhr. (siehe Bascom-Hife)
Du kannst auch ,wie schon von Dir erkannt, die Setic Unterroutine benutzen. diese wird mit:
Code:
Sectic:
Incr Timecount1
Incr Displaytime
Incr Tag_byte
Return
aufgerufen. Dort kannst Du eine Variable hochsetzen lassen, die dann im Hauptprogramm abgefragt werden kann.
Grüße Matthias
Lesezeichen