Messung eines rechteckigen Signals

Gast #1064767
Lesenswert?

Hallo Leute,

ich hoffe jemand kann mir bei der Lösung meines Problems helfen. Also 
worum es geht:
Ich muss mit einem Interrupt ein rechteckiges Signal messen. D.h. ich 
muss die Zeit von Rising bis Reising messen was ich auch geschaft habe, 
aber wie kann ich mit dem selben Innterrupt die Zeit von Rising bis 
Falling messen, dazu muss ich sagen das rechteckige Signal ändert 
anderauernd die Periodendauer, das Signal wird nicht negativ es wird nur 
1 und 0 und da wo es 1 wird, die Zeit muss ich auch mit dem selben 
Interrupt messen das heißt von Rising bis Falling, die Zeit soll man 
einfach bei der Flanke Falling ablessen und als Past in einem Hyper 
Terminal schreiben werden.

Ich hoffe ich habe mich deutlich ausgedruckt und jemand kann mir helfen, 
und es ist dringend.
Schöne größe an jeden.
Angehängte Dateien:
#1064886
Lesenswert?

Hallo,
Ich denke, Du machst das Ganze mit einem ATMega32?
Wenn ja, sollte es kein Problem sein, da der INT0, sowie der INT1 auf 
Interrupt bei logischem Wechsel des Pins gesetzt werden können. Damit 
kann man sehr hervorragend genaue Ereignisse messen, indem man z.B. bei 
High-Flanke einen Zähler startet (Timer2 wird immer gerne genommen) und 
diesen bei der Low-Flanke ausliest. Sollte der Timer überlaufen, kann 
man dessen Interrupt nutzen, um eine Variable im Speicher hochzuzählen. 
Kommt irgendwann die Low-Flanke doch noch, nimmt man die Variable mal 
Timer-Wert plus Rest des Timers und hat die genaue Zeit. Für die Zeit 
zwischen Low- und High-Flanke gilt dasselbe. Der Interrupt löst bei 
jeder Flanke aus (wenn so eingestellt). Wichtig bei genauen 
Zeitmessungen ist die Addition der Ausführungszeiten des Prozessors 
(Laden des Timers, Berechnung der Gesamtzeit usw.). Diese, auch wenn 
kleinen Zeiten sollte man nicht vernachlässigen.

Da Du das Ganze mit Basic machst, sollte Dein Eingang nicht auf 
Rising-Interrupt, sondern auf "Config Int1 = Falling/ Rising" setzen. 
Habe ich zumindest gelesen. Ich kenne mich mit Bascom nicht aus. Wenn es 
nicht klappt, sollte man diese Einstellung in Assemler einfügen.

Gruß
hhoopi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren