- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 25

Thema: DCF-77 läßt sich nicht auswerten

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #20
    Benutzer Stammmitglied
    Registriert seit
    27.05.2007
    Beiträge
    67
    Zitat Zitat von albundy
    Hallo Martin,

    Ein teil funktioniert! Im Debuggermodus werden Zeiten angezeigt.
    '---> Die Impulslänge sollte zwischen 2 und 8 liegen
    '---> Die Pausenlänge sollte zwischen 70 und 90 liegen
    '---> Der Impulszähler sollte gleichmässig im Sekundentakt bis 59 hochzählen
    '---> Die Parität sollte ab dem 36.Impuls auf "1" gehen

    was genau stimmt davon, und was nicht ?
    Hallo AlBundy

    Ich habe ein Modul von Reichelt. Mit deiner Lib komme ich gut klar. Die Zeit wird aber nicht synchr.
    Folgende Debug Ausgaben:

    Impulslänge: immer 1
    Pausenlänge zwishcen 72 und 74
    Impulszähler: zählt schön bis 59 und setzt sich bei Minutendurchgang auf Null
    Pari: geht nie auf 1
    Imp_OK: geht nie auf 1

    Was kann ich noch tun?
    Die Soft Uhr läuft schön hoch. War schon bei ein paar Stunden.

    In der Anlage das Datenblatt und das Listing. Der Empfänger hat schon mit dem Programm von Wastl (decodiert nicht mit Timer, sondern auf Anforderung mit Taster in einem Sub) funktioniert. Nur leider ist der MC dann für mind. 1 Minute blockiert.

    Code:
    '*******************************************************************************
    '*                            DEMO für DCF77 Library                           *
    '*                                                                             *
    '*                     Funktion der Library im "Readme.txt"                    *
    '*******************************************************************************
    
    $regfile = "m32def.dat"                                     ' specify the used micro
    $crystal = 8000000                                          ' used crystal frequency
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 10                                               ' default use 10 for the SW stack
    $framesize = 40                                             ' default use 40 for the frame space
    $baud = 19200
    
    '-------------------------------------------------------------------------------
    Config Pind.6 = Output
    
    '----- GLCD --------------------------------------------------------------------
    'Config GLCD Backlight
    Config Pind.5 = Output                                      'Pin for PWM Signal
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
    Dim Dimmen As Byte
    
    'Config GLCD KS0108
    'First we define that we use a graphic GLCD
    'The dataport is the portname that is connected to the data lines of the LCD
    'The controlport is the portname which pins are used to control the lcd
    'CE =CS1  Chip select first  chip
    'CE2=CS2  Chip select second chip
    'CD=Data/instruction
    'RD=Read
    'RESET = reset
    'ENABLE= Chip Enable
    $lib "glcdKS108.lib"
    Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Porta , Ce = 1 , Ce2 = 0 , Cd = 5 , Rd = 4 , Reset = 2 , Enable = 3
    
    '-------------------------------------------------------------------------------
    'GLCD Initialisieren und Licht an
    Dimmen = 128                                                ' Wert für die Helligkeit der LED Beleuchtung
    'Compare1a = Dimmen                                          'PWM Signal
    Setfont Font6x8                                             'Schrifgröße setzen
    Cls                                                         'LCD löschen
    
    '-------------------------------------------------------------------------------
    $lib "dcf77.lib"
    $external Dcf77
    Declare Sub Dcf77
    
    Config Timer0 = Timer , Prescale = 1024                     'Timer für 40Hz (25ms)
    Const Startwert = 56
    Timer0 = Startwert
    On Timer0 Tim0_isr                                          'Überlauf alle 25ms
    Enable Interrupts
    Enable Timer0
    
    
    '------------------------ Pin für DCF Eingang definieren -----------------------
    ' jeder Portpin kann benutzt werden.
    ' Auch in der "Dcf77.lib" entsprechend anpassen !!!
    
    Config Pind.3 = Input                                       'DCF 77 Eingang
    'Set Porta.7                                                 'Pullup einschalten
    
    '--------------------- Variablen für DCF Routine -------------------------------
    
    Dim Status As Byte , Zaehler As Byte , Buffer As Byte , Impuls As Byte
    Dim H_sek As Byte , Sekunde As Byte , T_min As Byte , T_std As Byte
    Dim Minute As Byte , Stunde As Byte , Wotag As Byte , Tag As Byte
    Dim Monat As Byte , Jahr As Byte , Pari As Byte , Pau As Byte , Imp As Byte
    
    '-------------------------------------------------------------------------------
    
    '------------ Wichtig bei internem RC Oszillator !!! ---------------------------
    'Osccal = 184                                      'int. Oszillator kallibrieren
    '-------------------------------------------------------------------------------
    
    
    '******************** HAUPTPROGRAMM ********************************************
    
    Do
    
    If Stunde < 10 Then Lcdat 1 , 1 , "0" ; Stunde ; ":" Else Lcdat 1 , 1 , ; Stunde ; ":"
    If Minute < 10 Then Lcdat 1 , 19 , "0" ; Minute ; ":" Else Lcdat 1 , 19 , ; Minute ; ":"
    If Sekunde < 10 Then Lcdat 1 , 37 , "0" ; Sekunde ; Else Lcdat 1 , 37 , ; Sekunde
    
    'If H_sek > 20 Then                                          'Doppelpunkt blinken lassen
    '   Locate 1 , 12
    '   Lcd " "
    'End If
    
    If Status.3 = 1 And Status.4 = 1 Then
    '   Lcdat 2 , 1 , ; Lookupstr(wotag , Wochentag) ; ", "
       If Tag < 10 Then Lcdat 2 , 19 , " " ; Tag ; "." Else Lcdat 2 , 19 , ; Tag ; "."
       If Monat < 10 Then Lcdat 2 , 37 , " " ; Monat ; "." Else Lcdat 2 , 37 , ; Monat ; "."
       Lcdat 2 , 55 , "20"
       If Jahr < 10 Then Lcdat 2 , 67 , "0" ; Jahr Else Lcdat 2 , 67 , ; Jahr
    End If
    
    'Loop
    
    '---------------------- nur für DEBUG nötig ------------------------------------
    
    'Cls
    
    'Do
    'Debounce Pinb.1 , 0 , Uhrzeit , Sub
    
    If Imp > 0 Then
       Lcdat 4 , 1 , "Impulslaenge: " ; Imp
       If Imp < 6 Then Lcdat 4 , 85 , " = 0" Else Lcdat 4 , 85 , " = 1"
    End If
    
       Lcdat 5 , 1 , "Pausenlaenge: "
       If Pau < 10 Then Lcdat 5 , 85 , "0" ; Pau ; Else Lcdat 5 , 85 , ; Pau
    
       Lcdat 6 , 1 , "Impulszaehler: "
       If Impuls < 10 Then Lcdat 6 , 91 , "0" ; Impuls Else Lcdat 6 , 91 , ; Impuls
    
       Lcdat 7 , 1 , "Pari=" ; Status.4 ; " Imp_OK=" ; Status.3
    Loop
    
    '---> Die Impulslänge sollte zwischen 2 und 8 liegen
    '---> Die Pausenlänge sollte zwischen 70 und 90 liegen
    '---> Der Impulszähler sollte gleichmässig im Sekundentakt bis 59 hochzählen
    '---> Die Parität sollte ab dem 36.Impuls auf "1" gehen
    
    
    End
    '*************** ENDE HAUPTPROGRAMM ********************************************
    
    '------------------------ Interrupt Routine ------------------------------------
    
    Tim0_isr:
    Timer0 = Startwert
    If Pind.3 = 0 Then
             Reset Portd.6
             Else
             Set Portd.6
             End If
    Call Dcf77
    Return
    
    '------------------------ Daten für Wochentag ----------------------------------
    Wochentag:
    Data "  " , "Mo" , "Di" , "Mi" , "Do" , "Fr" , "Sa" , "So"
    
    $include "font6x8.font"
    Bei der lib ist nur der Port angepasst.

    Grüße Eisbaeeer
    Angehängte Dateien Angehängte Dateien

Berechtigungen

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

Solar Speicher und Akkus Tests