Hallo, ich habe versucht mit der Library von ulrichradig.de einen DCF77 an einem Atmega 32 ans laufen zu bekommen. Leider läuft das nicht. Die Empfängerplatine habe ich von Conrad. Wie folgt habe ich die Empfängerplatine angeschlossen: PIN1 --> Ground PIN2 --> VCC(5V) PIN3 --> nichts PIN4 --> an den INT0 des Atmega32 und Parallel einen 10k Pullup In der clock.h habe ich den Eintrag SIG_INTERRUPT0 zu INT0_vect geändert, da mein Compiler SIG_INTERRUPT0 nicht mehr kennt... Wenn ich das ganze jetzt Teste bekomme ich in Putty aber nur: 0-0-0 Time: 0:1:27 Sync: 0 Rx: 1 bzw. 0-0-0 Time: 0:1:27 Sync: 0 Rx: 0 zusehen und die Zeit wird einfach nur hochgezählt. Kann mir jemand bei dem Problem helfen? Danke schon mal! Tobias
Tobias schrieb: > zusehen und die Zeit wird einfach nur hochgezählt. Kann mir jemand bei > dem Problem helfen? Da würde ich als erstes mal das Pferd ganz vorne aufzäumen und kontrollieren, ob da überhaupt Pulse aus dem Empfänger rauskommen, ob die beim Mega ankommen und ob die reichen um damit einen Eingangspin zu treiben. DCF Empfänger sind oftmals nicht die stromstärksten. Und ach ja. Wenn da Pulse rauskommen, ob die dann auch so sind, dass sie mit der Annahme des Codes übereinstimmen. Hast du * Ruhepegel ist 0, der Puls ist 1 * Ruhepegel ist 1, der Puls ist eine Absenkung nach 0 Welches liegt hardwarebedingt vor, wovon geht die Software aus?
:
Bearbeitet durch User
Bist du sicher, dass die Polarität des DCF Ausgangs stimmt? Aus dem "Datenblatt" bei C geht das leider nicht hervor. Versuch einfach mal Pin3 statt Pin4
> 0:1:27
Ist das 1 Minute 27 Sekunden nach dem Einschalten?
Das ist zu kurz.
Meistens dauert es so um die 3 Minuten, bis übliche DCF-Empfangscodes
eine gültige Zeit rausrücken.
Um ein Zeittelegramm zu empfangen, benötigt man 1 komplette Minute.
Jetzt weiß man aber nicht, an welcher Stelle des gerade laufenden
Telegrams man sich nach dem Einschalten befindet, d.h. da muss erst mal
abgewartet werden, bis im Telegramm erkenbar ist, dass ein neues
beginnt. Das kann schlimmsten Falls schon mal 58 Sekunden dauern. D.h.
im Worst Case hat man erst nach 2 Minuten das erste mal ein komplettes
DCF-Telegram zur Auswertung vorliegen. Und meistens warten die Codes
dann auch noch, bis ein 2-tes Telegramm vorliegt, um aus dem Vergleich
der beiden eine Plausibilitäts-Entscheidung treffen zu können.
Ausgenommen der Umschaltung auf Sommerzeit kann sich ja die Zeit
zwischen 2 Telegrammen um nicht mehr als 1 Munte unterscheiden. Hat man
größere Differenzen, dann stimmt was nicht.
:
Bearbeitet durch User
Allerdings: Du hast den Code ja vor dir. Und putty arbeitet auch. Was hindert dich daran, da noch in den AVR-Code ein paar Ausgaben einzubauen, so dass du am putty siehst, was im Programm vor sich geht?
:
Bearbeitet durch User
Georg G. schrieb: > Versuch einfach mal Pin3 statt Pin4 Habe ich beide schon getestet, leider hat das nichts gebracht... Karl Heinz Buchegger schrieb: > Ist das 1 Minute 27 Sekunden nach dem Einschalten? Ja das stimmt, aber ich habe auch schon habe ca. 15 min gewartet und es hat nicht gebracht... Ich hab die Vermutung, dass das DCF Modul kapput ist...
>Ich hab die Vermutung, dass das DCF Modul kapput ist... Oder es empfängt nichts. Das kann so Ursachen wie Monitore, LED Stripes mit PWM oder Multiplexanzeigen haben. Auf eine Eisenplatte sollte man die Module auch nicht legen.
Tobias schrieb: > Ja das stimmt, aber ich habe auch schon habe ca. 15 min gewartet und es > hat nicht gebracht... > > > Ich hab die Vermutung, dass das DCF Modul kapput ist... Muss janicht gleich kaputt sein. Genau deswegen hab ich ganz am Anfang gesagt, ich würde mir halt mal ansehen, ob da überhaupt Pulse rauskommen. Aber das scheint irgendwie zu einfach zu sein. Stochern im Nebel ist ja viel interessanter.
holger schrieb: > Oder es empfängt nichts. Das kann so Ursachen wie Monitore Die Dinger sind besser als manch einer glaubt. Ich betreibe das Ding im Keller, 2m neben zwei Monitoren, 300km von Frankfurt entfernt. Man sollte es nur richtig ausrichten, quer nach Frankfurt.
>2m neben zwei Monitoren, 300km von Frankfurt entfernt. 2m ist ja ok. Ich habe im Moment eins 50cm neben meinem Laptop liegen. Direkt daneben empfängt es nichts mehr. Auch direkt neben meinem Oscilloscope nicht. Also immer schön Abstand halten. >Man sollte es nur richtig ausrichten, quer nach Frankfurt. Genau. Das bringt ne Menge.
Karl Heinz Buchegger schrieb: > Genau deswegen hab ich ganz am Anfang gesagt, ich würde mir halt mal > ansehen, ob da überhaupt Pulse rauskommen. Oszilloskop oder Logic Analyser habe ich leider nicht. Ich habe aber jetzt einmal eine LED an den Ausgang vom DFC gehängt. Die LED blinkt relativ gleichmäßig. Also habe ich wohl einen Puls? holger schrieb: > Also immer schön Abstand halten. Habs jetzt mal mit ein ca. 30cm Kabel ans Fenster gelegt, immer noch nichts... Ich hab jetzt auch mal so eine fertige Funkuhr daneben gestellt, die braucht ca. 3 min um ein Signal zubekommen. Ich bin echt am verzweifeln und mit meinem Latein am Ende...
Schau doch erstmal ob dein Empfänger überhaupt was tut. : Einfach den Pinstatus an einen anderen Pin kopieren, daran eine LED ran damit du das blinken siehst.
>Ich habe aber >jetzt einmal eine LED an den Ausgang vom DFC gehängt. Die LED blinkt >relativ gleichmäßig. Also habe ich wohl einen Puls? Ja, dein Modul ist völlig in Ordnung. Ulrichs Code steigt aber bei der kleinsten Störung aus. Hab ich selbst mal probiert. Achte mal drauf ob bei dem regelmäßigen Blinken evtl kurze Doppelblinker bzw. Aussetzer dabei sind.
>Ulrichs Code steigt aber bei der kleinsten Störung aus.
Was nicht bedeutet das er abstürzt! Der kleine Unterschied.
Wollte ich nur mal anmerken. Sorry Ulrich;) Er funktioniert
schon ganz gut wenn auch guter Empfang gegeben ist.
Also mein Selbstbau DFC77 Empfängter (Al*i Ausschlacht-Uhr und FPGA) zeigt seit ca 40 Minuten auch kein störungsfreies Signal mehr an. Und auch Funkwecker am Fenster hat zu Zeit auch nur sporadisch Signal (hier in München). Der hier aber hat scheints ein brauchbares Signal (siehe Log von heute) http://www.dcf77logs.de/logfiles.aspx Sch...wetter?
Tobias schrieb: > Oszilloskop oder Logic Analyser habe ich leider nicht. Ich habe aber > jetzt einmal eine LED an den Ausgang vom DFC gehängt. Die LED blinkt > relativ gleichmäßig. Also habe ich wohl einen Puls? Sieht wohl so aus. Das DCF Signal sind Pulse die im 1 Sekunden Abstand kommen. Der Puls ist entweder 0.1 Sekunden lang oder 0.2 Sekunden. Je nachdem ob eine 0 oder eine 1 übertragen werden soll. Mit ein wenig Übung kann man die unterscheiden. Der jeweils 59.te Puls muss fehlen. Das ist das Signal, dass mit dem nächsten Puls die nächste Minute anfängt. Wenn du das so beobachten kannst, dann wird wohl das Signal in Ordnung sein. > Ich bin echt am verzweifeln und mit meinem Latein am Ende... ok. VOn der Kette
1 | Input -> Verarbeitung -> Ausgabe |
dürfte somit der Teil 'Input' abgehakt sein. Das DCF-Signal sieht ok aus. Dann gehts eben weiter mit der nächsten Komponente. Verarbeitung. Die Pulse werden per Interrupt eingelesen. Also ist dort dein nächster Ansatzpunkt. Die Interrupt Routine hergeholt und dort mal ein paar Tests eingebaut. Wenn du jetzt eine LED an einem Pin deines Megas hängen hast, dann ist genau jetzt der Zeitpunkt gekommen, die auch zu benutzen. Wenn der Code den Anfang des Pulses festgestellt hat schaltest du die LED ein, wenn der Code das Ende des Pulses festgestellt hat, schaltest du sie aus. Und dann schaun wir mal, ob die Pulse am Eingang des Mega immer noch da sind und vom Programm auch verstanden werden. Wenn die Pulse dort auch noch da sind, dann sehen wir uns an, ob die Pulslängen-Erkennung funktioniert. Der Code muss ja letzten Endes feststellen, ob der Puls jetzt 100 oder 200ms lang war. Und auch das kann man sich ja wieder in irgend einer Form ausgeben lassen. Du hast den Code vor dir. Du hast einen Editor. Du hast Möglichkeiten, wie du dir aus dem Programm heraus Dinge ausgeben lassen kannst, sei es mit einer LED oder sei es in dem du über die UART einzelne Buchstaben oder Zeichen schickst (damit die UART Übertragung schnell geht). Ran ans Gerät, du hast alles was du brauchst um dem Problem auf die Spur zu kommen.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.