Hallo Forumgemeinde, ich möchte die Pulsweite eines DCF77 Signals messen, die Werte die der Controller ermittelt pendeln zwischen 60 und 68, macht bei Prescale 1024/1000000Mhz = 0,001024s * 68 ca. 69ms. Das Oszilloscope zeigt jedoch Weiten von weit über 100ms an. Wo hat sich der Wurm versteckt ? Danke. Gruß Reinhard
Vielleicht musst Du den Wert verdoppeln, was ist die Grundfrequenz des Timers (Quarzfrequenz / 2? )? Ist das ein 8 oder 16-bit-Zähler? Lege mal ein 1-10 Sekunden langes Signal an und lese den Zähler ab.
es ist timer0 = 8 bit, die werte liegen innerhalb einer minute immer bei ca. 60 bis 68. die grundfrequenz des timers : prescale 1024/1000000mhz = 0,001024s * 68 = ca. 69ms.
Zwei Effekte könnten es sein: Zählt der Zähler rauf oder runter? Misst Du die high-Zeit oder die Low-Zeit? Bzw. was ist high? Pause oder Impuls? Wenn Du die Pause-Zeit mit einem 8-bit zählst, gibt es Überlaufe: 1000ms -163 ms = 837ms ; 837 modulo 256 = 69 Beide Effekte können auch kombiniert sein, ich tippe eher mal Fall 2. Möglichkeiten: Erzeuge mit einem andern Controller / Generator ein Signal mit verschiedenen High- und Low-Zeiten und beobachte das Display.
Ich messe den Low Pegel, der kann bis max 230 ms dauern. Mit der Einstellung von Timer0 1024/1000000*255 = max 261ms. Außerdem gibt es noch eine Timer Overflow Routine. Do 'Hauptfunktion,Werte von Fuktion Lopulse an Value übergeben Cls Value = Lopulse() Locate 1 , 1 : Lcd "Pulsweite = " ; Value Loop End Function Lopulse() As Word 'Funktion Pulsweite messen While Pind.6 <> 1 : Wend 'Wenn Pegel an Pind.6 Low Tcnt0 = 0 'dann Timerwert auf 0 setzen Start Timer0 'Timer0 starten While Pind.6 = 1 : Wend 'wenn Pegel pind.6 High Stop Timer0 'dann Timer0 stoppen Lopulse = Tcnt0 'Timerwerte an Variable Lopulse übergeben End Function Lopulse() Overflow_isr: !push R24 Stop Timer0 Tcnt0 = 0 !pop R24 Return
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.