Forum: Mikrocontroller und Digitale Elektronik Timer Update mit Input Capture an anderem Timer, STM32F4


von Christof K. (ckris)


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

von Nikolas K. (vanrasta)


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ß

von Christof K. (ckris)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.