STM32 Input Capture, 2 Kanäle mit einem Timer

#1613146
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
#1613169
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.
#1613235
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

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