Hallo, ich habe das DCF 77 Modul von reichelt an meinem AVR angeschlossen. Ich habe noch keine Logik zum dekodieren der Uhrzeit programmiert. Vorerst habe nur mal einen Counter gemacht, der jedes mal + 1 rechnet, wenn an INT1 ein Interrupt mit positiver Taktflanke ankommt. Ich habe nicht das Problem, dass kein Signal kommt, sondern das zu viele Signale kommen. Und zwar sind es genau doppelt so viele positive Taktflanken wie es sein sollten. Es sollten ja in 10 Sekunden 10 postive Flanken sein, bei mir sind es 20! Hier der Code zum Aktivieren von INT1: ldi r16,0b00001100 ;pos edge -> interupt out MCUCR,r16 ldi r16,0b10000000 ;INT1 akivieren out GICR,r16 Wenn ich den Interrupt auf beide Flanken einstelle bekomme ich dementsprechend 40 Interrupts in 10 Sekunden. Ich weiß Vorne und Hinten nicht weiter! Bitte helft mir! mfg bruegae
Wenn dein DCF77-Modul in der Nähe eines Monitors ist, kannst du vergessen, die Signale auszuwerten...
Ich hab die Platine auch schon 2 Meter von meinem TFT weggestellt und darauf geachtet das kein Elektronisches Gerät in der Nähe ist. Da macht die Platine den selben Mist. Mal ganz nebenbei kriegt meine gekaufte Funkuhr direkt neben dem TFT wunderbar ihr Signal.
Warum du alles doppelt siehst? ;-) Weiß ich leider auch nicht. Hast Du ein Scope? Dann sieh dir das Signal von Empfänger mal an. Der scheint wirklich gestört zu sein, so daß er mehr als einen Impuls/s liefert. Versorge den Empfänger mal mit einer Batterie um Störungen durch die Stromversorgung schon mal auszuschließen. Aber ich möchte trotzdem einen Tip loswerden: Das mit Interrupts zu machen ist eh nicht so gut. Wenn der Empfänger arg gestört ist oder ein zu schlechtes Signal bekommt (je nachdem wo du wohnst), dann zaubert er die irre viele Impulse und Dein armer AVR bearbeitet nur noch die Interrupts für nichts. Mach es mit Polling alle 10ms und messe damit die Impulsbreite. Keine Frage, auch mit IRQs funktioniert es aber es ist eben ungünstig.
Wie sieht mit der Stromversorgung aus? Wenn man Ladungspumpen benutzt kannst du auch vergessen die Signale auszuwerten...
Oder versuch mal das DCF77-Modul von der Platine zu entfernen. 3 sehr lange Drähte benutzen...
Wer ein DCF-Signal über einen externen Interrupt einliest, hat es nicht anders verdient.
Man detektiert bei DCF Pulsen keine Flanken, sondern die Dauer von Pulsen, also statischen Zuständen eines Datenpins. Bei entprechend andauernden 1 oder 0 Zuständen sortiert man diese in zwei Fenster mit bestimmter Toleranz ein und dann hat man seine Bits. Dabei spielt es dann nichtmal eine Rolle, ob das Modul diese Pulse invertiert ausgibt oder nicht.
Ich kenne mich jetzt mit AVR-Interrupts nicht aus - aber: reagiert der möglicherweise auf beide Flanken?
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.