Forum: Mikrocontroller und Digitale Elektronik Input capture


von Thorsten Senger (Gast)


Lesenswert?

Moinsen habe da ein kleines (für mich großes) Problem möchte mit einem
µC die Zeitdifferenz von vier aufeinander folgenden unterschiedlichen
Signalen(Rechteck) messen.
Die Zeit bis das letzte Signal durch ist beträg max. 20ms.
Signal 1 soll dei ganze Messung starten.
Schön währe noch wenn rauschen erkannt werden könnte.
Hat jemand damit schon Erfahrungen gemacht, kann Tipps geben usw.
Auch ja ich möchte den Code in C umsetzen.
Auch bei dem zu verwendenden µC habe ich mich noch nicht festgelegt bin
aber natürlich für Vorschläge offen.
Möchte mich an dieser Stelle für alle Bemühungen eurerseits bedanken.
MfG Thorsten

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Hat jemand damit schon Erfahrungen gemacht, kann Tipps geben usw.
ja.

>vier aufeinander folgenden unterschiedlichen Signalen(Rechteck)
Grundsätzlich kannst du nur die Zeit zwischen 2 Flanken messen.
Atmel hat auch eine Application Note dazu.

>Auch ja ich möchte den Code in C umsetzen.
Klingt, als suchtest du nach einer fertigen Lösung. Sowas findet man
dann aber eher in der Codesammlung.

Grundsätzlich gilt:
Timer initialisieren und laufen lassen.
ICP-Flanke einstellen (steigend oder fallend).
in der ICP-ISR die Den Timerwert aus dem ICP-Register auslesen und
zwischenspeichern
Bei Bedarf die ICP-Flanke ändern.
Beim nächsten ICP-Interrupt wieder den Timewert aus dem ICP-Register
auslegen auslesen und den anderen davon subtrahieren. Damit hätte man
schon mal die eine Länge (Pulslänge).
Wieder die ICP-Flanke ändern.
Bei nächsten ICP-Interrupt hat man die Gesamtdauer,
Wenn man die erste Zeit von der aktuellen subtrahiert.
Man sollte dann auch die letzte "Startzeit" durch die aktuelle
ersetzen.
Zur Berechnung: Man arbeitet hier mit einem begrenzten Zahlenraum, was
soviel heisst, dass es eigentlich nicht interessiert, ob der neue Wert
aufgrund eines Überlaufs kleiner als der alte Wert ist. Es kommt bei
einer additiven Berechnung schon das richtige heraus.

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.