servus nachdem ich mich mit der lib nun im Kriegszustand befinde
hab ich mir das signal auf konvenzionelle weise decodiert und siehe da auch mit dem internen quarz 4mhz des M32 funzt es
ABER warumm will trotz tagelannger versuche und klasklarem Signal mitlerweile kann ich das datum auch schon mit blossem auge auf dem oszie sehen der µC das signal nicht decodieren mit der standart in 1.11.0.9 beispieldatei ausspucken
Code:$regfile = "m32def.dat" $crystal = 4000000 $hwstack = 256 $swstack = 256 $framesize = 256 $baud = 19200 Config Lcd = 16 * 4 'LCD Display Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2 'Config Dcf77 = Pind.2 , Debug = 1 , Inverted = 0 , Check = 2 , Update = 0 , Updatetime = 30 , Switchpower = 0 , Secondticks = 50 , Timer1sec = 1 , Powerlevel = 1 , Timer = 1 Config Timer1 = Timer , Prescale = 256 Config Pind.2 = Input Initlcd Dim Sig(65)as Byte Dim S As Bit Dim Zahl As Word Dim Lauf As Byte Dim Ti As Word Dim Minut As Byte Dim Stund As Byte Dim Tag As Byte Dim Monat As Byte Dim Jahr As Byte Dim Wochentag As Byte Dim Dcf_ok As Bit Dcf_ok = 0 Lauf = 0 S = 0 Zahl = 0 Wait 2 Anfang: Cls Lcd "Sync DCF =" ; Dcf_ok If Dcf_ok = 0 Then Locate 2 , 1 : Lcd "Signal Aufbau" While Pind.2 = 1 Wait 1 Locate 3 , 1 : Lcd Zahl Incr Zahl Wend End If Locate 2 , 1 : Lcd "Suche Sig Anfang" Bitwait Pind.2 , Set An1: Incr Lauf Locate 3 , 1 : Lcd Lauf ; " " S = 0 Timer1 = 0 Bitwait Pind.2 , Reset Start Timer1 Bitwait Pind.2 , Set Stop Timer1 Ti = Timer1 ' pause gefunden wenn ti grösser 25000 If Ti > 25000 Then Goto Dcf_sig_anfang 'Locate 2 , 1 : Lcd Ti Goto An1 Dcf_sig_anfang: Locate 1 , 1 : Lcd "sync gefunden" Locate 2 , 1 : Lcd "lese 59 Bit" Lauf = 1 Bitwait Pind.2 , Reset Sig(lauf) = 0 Dcf_sig_in: Incr Lauf Timer1 = 0 Bitwait Pind.2 , Set Start Timer1 Bitwait Pind.2 , Reset Stop Timer1 Ti = Timer1 'Locate 2 , 1 : Lcd Ti If Ti < 2000 Then S = 0 ' sig 1 If Ti > 2000 Then S = 1 ' sig 0 Sig(lauf) = S Locate 3 , 1 : Lcd Lauf ; " " Locate 4 , 1 If S = 0 Then Lcd "kurz" If S = 1 Then Lcd "lang" If Lauf < 60 Then Goto Dcf_sig_in For Zahl = 1 To 61 Print Sig(zahl); Next Zahl Lauf = 0 Zahl = 0 Print Cls Minut = 0 If Sig(22) = 1 Then Minut = Minut + 1 If Sig(23) = 1 Then Minut = Minut + 2 If Sig(24) = 1 Then Minut = Minut + 4 If Sig(25) = 1 Then Minut = Minut + 8 If Sig(26) = 1 Then Minut = Minut + 10 If Sig(27) = 1 Then Minut = Minut + 20 If Sig(28) = 1 Then Minut = Minut + 40 Print "Minute " ; Minut Stund = 0 If Sig(30) = 1 Then Stund = Stund + 1 If Sig(31) = 1 Then Stund = Stund + 2 If Sig(32) = 1 Then Stund = Stund + 4 If Sig(33) = 1 Then Stund = Stund + 8 If Sig(34) = 1 Then Stund = Stund + 10 If Sig(35) = 1 Then Stund = Stund + 20 Print "Stunde " ; Stund Tag = 0 If Sig(37) = 1 Then Tag = Tag + 1 If Sig(38) = 1 Then Tag = Tag + 2 If Sig(39) = 1 Then Tag = Tag + 4 If Sig(40) = 1 Then Tag = Tag + 8 If Sig(41) = 1 Then Tag = Tag + 10 If Sig(42) = 1 Then Tag = Tag + 20 Monat = 0 If Sig(46) = 1 Then Monat = Monat + 1 If Sig(47) = 1 Then Monat = Monat + 2 If Sig(48) = 1 Then Monat = Monat + 4 If Sig(49) = 1 Then Monat = Monat + 8 If Sig(50) = 1 Then Monat = Monat + 10 Jahr = 0 If Sig(51) = 1 Then Jahr = Jahr + 1 If Sig(52) = 1 Then Jahr = Jahr + 2 If Sig(53) = 1 Then Jahr = Jahr + 4 If Sig(54) = 1 Then Jahr = Jahr + 8 If Sig(55) = 1 Then Jahr = Jahr + 10 If Sig(56) = 1 Then Jahr = Jahr + 20 If Sig(57) = 1 Then Jahr = Jahr + 40 If Sig(58) = 1 Then Jahr = Jahr + 80 Print "Datum " ; Tag ; ":" ; Monat ; ":" ; Jahr Wochentag = 0 If Sig(43) = 1 Then Wochentag = Wochentag + 1 If Sig(44) = 1 Then Wochentag = Wochentag + 2 If Sig(45) = 1 Then Wochentag = Wochentag + 4 Select Case Wochentag Case 1 : Print "Montag" Case 2 : Print "Dienstag" Case 3 : Print "Mittwoch" Case 4 : Print "Donnerstag" Case 5 : Print "Freitag" Case 6 : Print "Samstag" Case 7 : Print "Sonntag" End Select Waitms 200 If Jahr < 9 Then Goto Anfang If Jahr > 11 Then Goto Anfang Cls Select Case Wochentag Case 1 : Lcd "Montag" Case 2 : Lcd "Dienstag" Case 3 : Lcd "Mittwoch" Case 4 : Lcd "Donnerstag" Case 5 : Lcd "Freitag" Case 6 : Lcd "Samstag" Case 7 : Lcd "Sonntag" End Select Locate 2 , 1 : Lcd Tag ; ":" ; Monat ; ":" ; Jahr Locate 3 , 1 : Lcd Stund ; ":" ; Minut ; ":00" Locate 4 , 1 'mez Mesz If Sig(18) = 1 Then Print "MESZ" Lcd "MESZ" End If If Sig(19) = 1 Then Print "MEZ" Lcd "MEZ" End If For Zahl = 0 To 20 Wait 1 Next Zahl Dcf_ok = 1 Goto Anfang End 'end program









Zitieren

Lesezeichen