PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Pulsweite messen ( DCF-77 Signal )



ASIC
18.02.2006, 20:04
Hallo Forum,

zu erwarten sind beim Auswerten des DCF-77 Signals Low Pulse von
80-130 ms ( Low Bit ) & 170-230 ms ( High Bit ).
Das Programm habe ich zum Teil aus dem Buch Bascom-AVR von Claus
Kühnel übernommen.

Frage 1 : Lopulse liefert einen Wert zurück, auf dem Display erscheint eine 3 stellige Zahl die von "020" bis "815" gehen kann. Was ist das für ein Wert ? Millisekunden ?

Bemerkung 1 : Auf dem Oszi wird das DCF Signal korrekt dargestellt.

Bemerkung 2 : Nach ca. einer Minute fängt irgendetwas an zu spinnen,
das Oszi zeigt dann kleiner werdende Pulsweiten von ca. 10 ms an, resete ich den µC, dann sind die Pulsweiten i.O..

Ich gehe direkt mit dem DCF Signal Pin an Pind.6, an diesem als Eingang geschaltet liegt dann über einen Pull Up 5 Volt, kommt nun ein Impuls, wird dieser Eingang auf low gezogen.

Wo seht ihr die Probleme ?

Gruß
Asic

linux_80
18.02.2006, 21:59
Hallo,

als erstes würde ich beim lesen/schreiben des Timerregister immer beide Register ansprechen also TCNT1H und TCNT1L, und nicht nur mit TCNT1L, denn da kann es auch zu unvorhergesehen ergebnissen kommen, wenn man nur den halben Wert bearbeitet. Timer 1 hat 16Bit Register !
Am besten noch die Vorgabe von Basscom verwenden:

Timer1 = 0 bzw. auslesen mit Lopulse = Timer1

Die Werte die zurückgegeben werden sind die Timerwerte, es wird begonnen zu zählen wenn der Eingang auf 1 ist, und gestoppt wenn er 0 wird, danach wird das Timerregister ausgelesen.
Um die Zeit zu erhalten kann man sich aus der CPU-Frequenz und dem Prescaler des Timers dessen Takt ausrechnen, und mit dem Ergbnis des Timers multiplizieren.

CPU 8MHZ, Prescaler = 64, dH. der Timer läuft mit 125kHz.