DCF77 + Bascom

Gast #118513
Lesenswert?

Hallo Zusammen,
wer hat schon mal erfolgreich das dcf77-Signal eingefangen und
decodiert?
ich versuche - bislang ohne Erfolg -:
hardwaremässig: Conrad dcf77-modul 641128, AVR=2313 und LCD-Display
2x16.
Frage hierzu: muss der invertierte oder nicht-invertierte Ausgang
benutzt werden?
Ist der Pull-up-Widerstand erforderlich?
Am Oszillographen kan ich das DCF-Signal sehen, ist also vorhanden.
Softwaremässig: möchte ich es mittels BASCOM "einfangen" und dann
weiter bearbeiten. Aber es scheitert hier schon am "Einfangen".
Kann mir hier jemand "auf die Sprünge" helfen?
Wäre für jede Info dankbar!! Marcus.
Gast #118515
Lesenswert?

Hallo Marcus,

ich habe so etwas 'quick and dirty' schon mal versucht (siehe
Anhang). Funktioniert auch bei gutem DCF-Empfang problemlos. Leider
passt das Programm nicht in den 2313, ist aber vielleicht als Anregung
geeignet.

Gruß

Christoph
Angehängte Dateien:
Gast #118519
Lesenswert?

Hallo zusammen,

habe den e-mail Anhang eigentlich nur deshalb geschrieben weil ich mit
der App-Note von MCS nicht weiter gekommen bin. Da das Programm sicher
nicht besonders ist wäre ich für Verbesserungsvorschläge dankbar.

Meldet euch wenn Ihr enstsprechende Vorschläge habt.

Gruß

Christoph
Gast #118520
Lesenswert?

Hallo Leute,

ich habe das DCF-77 Modul von ELV, allerdings funktioniert das gar
nicht! Ich habe es mit einem Pullup-Widerstand an einen Portpin
angeschlossen und gemessen, allerdings kommt dort nicht die Bohne an
Daten an. Ist der Empfang von den Dingern so schlecht oder ist mein
Modul evtl. kaputt?
Gast #118522
Lesenswert?

Hallo Christoph,

hast du es schon mal mit einem freilaufenden Timer probiert
 config timer0 = timer, prescale =1024
der permanent läuft und eine interruptroutine auslöst
 on timer0 timer0_isr
Jetzt lädst du ihn noch mit einem Outputcompare
(bei 4mHz und prescale 1024)
ergibt das ein wert von ca 39 für 10ms
 const reload =39
Nachdem der Timer gestartet ist
 enable timer0
Löst der Timer immer wieder alle 10ms einen Interrupt aus
 timero_isr:
hier setzt du deinen compare neu
 load Timer0, reload
 fragst den Pinzustand an Portx ab
Gast #118523
Lesenswert?

Hallo Christoph geht noch weiter,

abfrage pin y an port x
 dcfin = pinx,y
und setzt ein flag das dein Timer ausgelöst hat
 flag_10ms = 1
Ende der Interruptroutine
 Return

Jetzt hast Du 10ms Zeit in deinem Hauptprogramm
diese Flag zu verarbeiten
und suchst dir die Übergänge von 0 nach 1
und 1 nach 0 als trigger heraus bei dcf77 je nach Signallage
Pulsbreite (0/1) 80ms-120ms =0
Pulsbreite (0/1) 150ms-220ms =1
Pause ca. 800ms normal
Pause 1800ms 59te minute
viel spaß beim proggen.

Gruß A.L.F.
Gast #1988347
Lesenswert?

Hi...
ich habe es so in C gelöst. funkt. bei mir ohne Problem auch bei 
Störstellen in der näheren Umgebung.

Ich werte die Zeit zwischen den Impulsen aus und nicht wie üblich die 
Impulslänge. Damit erspare ich mir das Toggeln.

Viel spass damit
Bye Stefan
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren