Forum: Mikrocontroller und Digitale Elektronik Problem mit dem Ausweten vom DCF Signal


von Christoph G. (christoph_g79)


Angehängte Dateien:

Lesenswert?

Guten Tag,
weil eine Funkuhr eine sehr beliebtes Anfängerprojekt ist, habe auch ich 
mich dazu entschlossen es zu versuchen. Leider scheitere ich bei der 
Auswertung. Mein erstes Problem ist, dass kein Interrupt  bei einer 
fallenden Flanke ausgelöst wird und der für die steigende nur mit 
starker Verzögerung (knappe 100ms). Anfänglich hatte es sogar noch mit 
dem Interrupts funktioniert, aber ich kann mich nicht dran erinnern, 
dass ich irgendetwas an den Interrupts verändert habe und nun bin ich 
schon seit Stunden am suchen.  Als es noch mit den Interrupts 
funktionierte, kam es aber auch manchmal mit der Auswertung der low 
Phasen zu Problem. 1-2 in der Minute wurden diese nicht richtig 
ausgewertet, obwohl das DCF Signal sauber empfangen wurde. Laut 
Rechnung, bei einem Prescaler von 1024 und 16 MHz, müsste doch der Wert 
der low Phase bei 100ms  1562 betragen und bei 200ms dem entsprechend 
das Doppelt, oder habe ich mich verrechnet?

von (prx) A. K. (prx)


Lesenswert?

cli/sei in einer ISR ist meistens falsch.

Es gibt in C auch Dezimalzahlen.

Wenn das DCF-Modul zu jener Spezies gehört, wie Pollin es verkauft, dann 
ist auch der interne Pullup eines AVR schon zu viel Last.

Ich habe ein DCF-Modul, das keine eindeutig auswertbare Flanke liefert, 
sondern bei einer davon etwas "pumpt", was ähnlich wie ein prellender 
Taster wirken kann. Abfrage per Polling in einem regelmässigen 
Timer-Interrupt ist dann sinnvoller als eine Messung der Abstände von 
Flanken.

von Karl H. (kbuchegg)


Lesenswert?

- wenn du sowieso den Input Capture benutzt, dann setzt man den Timer
  nicht auf 0 zurück, sondern lässt ihn einfach durchlaufen.
  Die Differenz der Messwerte erzählt einem dann das was man wissen
  möchte.

- wozu aktivierst du den INT2?
  Du hast keine ISR dafür. Einen Interrupt für den man keine ISR hat
  aktiviert man nicht! Niemals! Denn wenn der aus irgendeinem Grund
  auftreten sollte, dann führt das zu einem Reset des Prozessors.

- exzessize Leerezeilen im Code führen nicht zu mehr Übersicht, sondern
  ziehen den Code nur unnötig in die Länge. Wodurch wiederrum die
  Übersicht abnnimmt.

von Daniel S. (supernova01)


Lesenswert?

>>bei einer fallenden Flanke ausgelöst wird

falscher Ansatz! Was macht dein Controller wenn du ein 500Khz Flattern 
am DCF Eingang hast!?

>>müsste doch der Wert
>>der low Phase bei 100ms  1562 betragen und bei 200ms dem entsprechend
>>das Doppelt, oder habe ich mich verrechnet?

Dein Ansatz ist falsch. Es geht nicht darum das Signal auszumessen auf 
die ms genau, du musst nur unterscheiden zwischen 100ms und 200ms. Du 
hast viel Spielraum. Das ganze erstmal mit +/- 20ms Fenster belegen. 
Einfach im 10ms Raster abfragen und die Aufrufe mitzählen...wenn also 
zwischen 8 und 12 gezählt wird, ist es ein 100ms Puls und wenn es 
zwischen 18 und 22 liegt ein 200ms Puls. Für das DCF Signal KEINEN 
Interrupt verwenden, das geht immer in die Grütze...

DS

von Christoph G. (christoph_g79)


Lesenswert?

Ok vielen Dank, für eure Hilfe, dann versuche ich es noch einmal erneut 
ohne Interrupt, sondern mit einem Trigger.

von Karl H. (kbuchegg)


Lesenswert?

Probier halt erst mal aus, ob der Pullup den Ausgang des DCF-Moduls 
überlastet.

Einfach in einem Testprogramm den Wert des Eingangs auf die LED 
'spiegeln'. Wenn die LED sauber blinkt, weißt du, dass du den 
DCF-Ausgang nicht überlastest. Dann ist zumindest der Teil der Story 
schon mal geklärt.

von Christoph G. (christoph_g79)


Lesenswert?

Das hab ich schon gemacht, und es lief auch ohne Problem. Weil das ganze 
eine Facharbeit wird, werde ich dann wohl doch die "schönere Variante" 
nehmen, die mit dem Trigger.

von Daniel S. (supernova01)


Lesenswert?

im nächsten Schritt auch die Zeiten zwischen den Pulsen "überwachen" und 
auf den fehlenden Puls Synchronisieren...

Schau dir auch mal den COde von Peter an:

Beitrag "DCF77 Uhr in C mit ATtiny26"

und das:

https://www.mikrocontroller.net/articles/DCF77-Funkwecker_mit_AVR

vielleicht auch das:

https://www.mikrocontroller.net/articles/DCF77_Wetterinformationen

und dann gibt es z.B. hier:

Beitrag "DCF77-Modul von Pollin"

noch viel über die Module, Antennen und die Probleme zu erfahren...

DS

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
Noch kein Account? Hier anmelden.