Timer Update mit Input Capture an anderem Timer, STM32F4

OP #4264369
Lesenswert?

Hi,

ein Timer (TIM2) misst mir die Frequenz eines externen Signals über 
input capture.

Wenn der input capture Interrupt ausgelöst wird, möchte ich unmittelbar 
zwei weitere timer resetten (TIM1, TIM3). Bisher mache ich das über Code 
in der Interruptroutine. Dies dauert aber einige zyklen, die ich mir 
sparen möchte/muß. Zudem resetten die beiden Timer hier zudem nicht 
gleichzeitig!

Weiß jemand eine Möglichkeit? Über den Slave-Modus scheint das scheinbar 
nicht zu funktionieren...?

Besten Gruß
Christof
#4264468
Lesenswert?

Hallo,

der Slave Mode ist dafür genau der richtige.
Im "Master Timer" (TIM2 bei dir) musst du das entsprechende Event auf 
deinen Trigger Ausgang (TRGO) legen. z.B. ein Update Event 
(TIM2->CR2:MMS=010). Schaue am besten mal im Referenz Manual das 
Blockschaltbild des Timers an. Das hilft.
Deine beiden anderen Timer müssen auf diesen TRGO "verknüpft" werden. 
Wenn du dann z.B. beide Slave Timer mit dem Update Event des TIM2 
rücksetzen möchtest: TIM3->SMCR:TS=001 (ITR1) und TIM3->SMCR:SMS=100 
(Rst Mode). Selbe Einstellung dann auch beim TIM1.

Gruß
OP #4264633
Lesenswert?

Danke Nikolas! Es funktioniert :)
Deine Erläuterung finde ich kurz und detailliert - keine 
Selbstverständlichkeit.

Man kann auch einen "Compare Pulse" als Trigger nutzen. Dieser 
funktioniert zwar nur für den ersten Kanal - aber er funktioniert 
wenigstens überhaupt :)
Das wäre dann (TIM2->CR2:MMS=011)

Grüße
Christof

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