Forum: Mikrocontroller und Digitale Elektronik stm32 Werte von zwei Timern aufnehmen durch einen externen Interrupt


von Marc (Gast)


Lesenswert?

Hallo, ich möchte gern zwei 16 Bit Timer (Timer2  Timer3) zu einem 32 
Bit Timer verbinden. Timer2 ist dabei mein LSB Timer und Timer 3 mein 
MSB Timer. Ich denke das ganze läuft auch schon, ich muss aber die Werte 
noch irgendwie auslesen wenn ich eine Steigende Flanke am Timer2 
Channel2 Eingang anlege. Timer 2 Werte bekomme ich ja in dem ich einfach 
folgende Zeilen schreibe:

  TIM_ICInitStructure.TIM_Channel     = TIM_Channel_2;
  TIM_ICInitStructure.TIM_ICPolarity  = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter    = 0x0;
      TIM_ICInit(TIM2, &TIM_ICInitStructure);


  TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE);


(Plus Aktiverung ect.)


Und dann im Interrupt das den Capture Werte Auslese. Wie Capture ich den 
Wert von Timer 3 aber zu diesem Zeitpunkt, ohne jetzt auch auf den 
Eingang die Flanke zu führen?

Gruß
Marc

von (prx) A. K. (prx)


Lesenswert?

Marc schrieb:

> Und dann im Interrupt das den Capture Werte Auslese. Wie Capture ich den
> Wert von Timer 3 aber zu diesem Zeitpunkt, ohne jetzt auch auf den
> Eingang die Flanke zu führen?

Ich habe grad nicht parat ob es hier geht, aber die STM32 haben eine 
programmierbare Eventverknüpfung zwischen den Timern, d.h. ein Event 
eines Timers löst beim anderen Timer was aus.

von Peter D. (peda)


Lesenswert?

Timer kaskadieren ist Quatsch. Es bringt rein garnichts, aber Du 
verlierst einen Timer.

Die Zählbreite eines Timers erhöht man per Interrupt.
Das Prinzip ist hier beschrieben:

Beitrag "AVR Timer mit 32 Bit"


Peter

von Marc (Gast)


Lesenswert?

Meine erste Variante hatte eine Variable hochgezählt bei jedem Überlauf, 
ich dachte mir aber dass es bei dem Controller besser wäre die beiden 
Timer in Kaskade nebenher laufen zu lassen. Danke für den Link, ich 
werde das jetzt auch so übernehmen bevor ich hier noch unendlich viel 
Zeit verliere.

Und zu A.K. ja, auf dieser Verknüpfung basiert ja die Kaskade, ich habe 
nur keine Verknüpfung gefunden die mir das geleichzeitige Auslesen 
ermöglicht, obwohl ich denke dass es gehen sollte, da sich einiges in 
der Anleitung findet. Leider finde ich mich dort nicht wirklich zurecht.

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.