mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 Input Capture, 2 Kanäle mit einem Timer


Autor: Mathias M. (aragorn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ist es irgendwie möglich mit einem Timer (Bsp. Timer 3) die Frequenz von 
zwei Eingangsignalen per Input Capture zu messen.

In meinem Beispiel habe ich dafür Channel 1 und Channel 3 verwendet. Die 
Messung des Signals an Channel 1 stellt kein Problem dar und 
funktioniert auch soweit. Die Messung vom Signal an Channel 3 wird durch 
die Messung an Channel 1 beeinflusst!

So wie ich das sehe ist das Problem, dass er nach jedem Capture Compare 
IR vom Channel 1 das Counter Register resetet. Und bei einem Capture 
Event wird ja schließlich nur der Counter Wert übernommen...

Eine Möglichkeit dies zu umgehen fällt mir spontan ein:

Der Counter resetet sich beim Capture Event nicht mehr und läuft durch.

Bei jedem Capture wird die Differenz zwischen vorigem Counter Wert und 
jetzigem Counter Wert berechnet.

Würde das so funktionieren oder gibt es auch eine einfachere Möglichkeit 
dies in Hardware zu realisieren?

lg
Mathias

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mathias M. schrieb:

> Bei jedem Capture wird die Differenz zwischen vorigem Counter Wert und
> jetzigem Counter Wert berechnet.

Das funktioniert und es scheint mir der übliche Weg zu sein. Nachteilig 
ist, dass es bei Zeitintervallen oberhalb der Timerperiode etwas 
umständlich wird.

Autor: Mathias M. (aragorn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo A.K.

Habe es jetzt so implementiert und es funktioniert ohne Probleme!

Bis auf die Division und die Berücksichtigung des Überlaufs ist es auch 
nicht weiter umständlich...

Danke!

lg, Mathias

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Capture und Überlauf können ganz oder fast gleichzeitig auftreten. Wenn 
Zeiten >= Periode keine Rolle spielen, dann ist es trivial weil man den 
Überlauf komplett ignorieren kann.

Andernfalls muss man ein bischen aufpassen, denn die Abarbeitung im 
Interrupt-Handler erfolgt dabei nicht unbedingt in der Reihenfolge des 
urprünglichen Auftretens der auslösenden Ereignisse.

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.