-
        

Ergebnis 1 bis 4 von 4

Thema: dcf77 encoding ZUFUSS!

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2007
    Beiträge
    210

    dcf77 encoding ZUFUSS!

    Anzeige

    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
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    29
    Beiträge
    235
    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
    Was willst du jetzt genau wissen? Kann aus dem "Deutsch" keine klare Frage erkennen sry.
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Hallo Magic.
    Ich verstehe Deine Fragen nicht.

    Lies Dir die Sätze vor dem Absenden nochmals durch und setze bitte Punkte am Satzende. Ein Großschreibung würde uns helfen, Deine Beiträge zu lesen.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2007
    Beiträge
    210
    ok Danke an den Marc aus US

    das problem war der interne Pullup!

    nun da nach DCF77 config ich die Pullups deaktiviert habe
    gehts auch mit der lib !

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •