Falsche Werte bei Pulsweite messen

Gast #306040
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
Gast #306041
Lesenswert?
• ▲
▼
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.
Gast #306043
Lesenswert?
• ▲
▼
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.
Gast #306044
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.