stm32 Flankenabstand mit zwei channeln für Interrupt

Gast #2381498
Lesenswert?

Hallo, ich möchte gern den Abstand zwischen zwei Flanken messen, das 
Problem ist dass es positive und negative Flanken dind und ich nie weiß 
ob als nächstes eine postive oder negative kommt. Positv heißt hier von 
0 auf 5V, dann wieder absinken auf 0 V und negative heißt von 5 auf 0V 
und dann wieder ein ansteigen. Es sind also zwei verschiedene Leitungen. 
Gleichzeitig gibt es keine Flanken. Kann man das über zwei Channel mit 
einem Timer Interrupt eralisieren oder muss das Signal "gleichgerichtet" 
werden und auf einen Channel gegeben werden? Sprich aus der negativen 
mach eine postive Flanke.

Ich verwende den stm32107VC und wollte Timer 2 als Interruptgestuerten 
Timer nutzen.
Gast #2381580
Lesenswert?

Hallo!

> Positv heißt hier von 0 auf 5V, dann wieder absinken auf 0 V und negative > 
heißt von 5 auf 0V und dann wieder ein ansteigen.
> Es sind also zweiverschiedene Leitungen.

Bedeutet das es das Signal mit der "negativen" Flanke liegt einmal an 
einem Pin an und das mit der "positiven" Flanke an einem anderen?

Es gibt die Möglichkeit mehrere Timer zu kaskadieren. Wobei ein Timer 
ein Master Timer ist und der oder die anderen Timer als Slaves dienen. 
Damit kann man z.B.: eine 32bit Auflösung erzielen.
Sieh dir dazu am besten die STM32F10x Standard Peripherals Firmware 
Library an mit den Beispielen zu dem Kapitel TIM.

MfG
Gast #2381633
Lesenswert?

EXTI Trigger auf 2 Inputs mit den beiden Signalen auf beide Flanken

1. Interrupt startet Timer
2. Interrupt stoppt

Evtl ausserdem noch in der Interruptroutine
den komplementären Flankeninterrupt disabeln
oder ein Ignorier-Flag setzen.

Oder ist das zu einfach gedacht?

Gruss

ASCII-Zeichnung.
Gast #2381650
Lesenswert?

Hallo,

Ohje, das habe ich schon mal aus einem anderen Grund versucht bzw. um 
eben einen 32 bit Timer zu erhalten... Das auslesen des zweiten Timers 
hatte nicht wirklich funktioniert wenn ich mich recht erinnere und man 
riet mir dann zu einer Variablen als Speicher. Sollte es wirklich ein 
Beispiel geben wo ein 32 Bit Timer aufgebaut wurde? Welches ist das?

Seite 353 und 337 des RM0008 sehen mir so aus als könnte man zwei 
Channel verwenden, ich versuchs mal. Vielleicht gehts so irgendwie.


Und ja die Signale kommen im Endeffekt von zwei verschiedenen Leitungen.
Gast #2381671
Lesenswert?

Hallo!

Wie ASCII-Zeichnung schon schrieb ist es mit 2 EXTI-Lines auch möglich. 
Du könntest dir sogar den Timer sparen und den SysTick im Free-running 
Modus betreiben. Mit dem kannst du die Zeit mit einer Genauigkeit von 
1ms erfassen, wenn dir das ausreicht mache es so.

Auf http://www.st.com/internet/mcu/class/1734.jsp findest du unter der 
Kategorie Resources -> Software Resources -> Firmware die zip-Datei
STM32F10x standard peripheral library. Lade dir das bitte runter und 
schau dir dort die Beispiele an. Der direkte Download-Link ist

http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip

Ansonsten findest du dort auch wie man zwei Timer verknüpft um 32bit zu 
erzielen -> How to achieve 32bit timer resolution using the link system.

MfG

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