www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Input capture


Autor: Thorsten Senger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.