Gibt es bei Timern der STM32 (ich stelle diese Frage ganz allgemein) die Möglichkeit, dass dieser nach einer Anzahl x Überläufen sich beendet? Manche Timer haben ein RCR Register, in diesem wird jedoch die Anzahl der Takte eingegeben, die kein DMA/Interrupt und somit auch kein Update Event erzeugen sollen. Ich hingegen suche die Möglichkeit, die Anzahl der Update Events zu begrenzen, habe aber noch nichts auf Hardwareeben entdeckt.
Keine A. schrieb: > Gibt es bei Timern der STM32 (ich stelle diese Frage ganz allgemein) die > Möglichkeit, dass dieser nach einer Anzahl x Überläufen sich beendet? Ich würde sagen du koppelst zwei Timer, der eine läuft planmässig über und der zweite zählt die Anzahl der Überläufe. Wenn die Hardware nicht das Stoppen des ersten Zählers via zweiten ermöglicht dann notfalls per Interrupt Steuerung.
Keine A. schrieb: > Gibt es bei Timern der STM32 (ich stelle diese Frage ganz allgemein) die > Möglichkeit, dass dieser nach einer Anzahl x Überläufen sich beendet? Also ich würde das in einer ISR machen... ciao Marci
Den Repeat Counter benutzen aber nicht den Überlauf sondern einen Compare Event als Interrupt verwenden.
:
Bearbeitet durch User
Wenn eine ISR aufgerufen wird, mach es dort. Wenn nicht, ist der Zeitaufwand 0 oder so klein, dass so eine Funktionalität entweder nicht gebraucht oder schwierig generisch zu designen ist. Am ehesten noch (wie wastl schrieb) mit einem zweiten Timer, der Zeit oder Events zählt und Tor/enable des ersten steuert, notfalls ein externes Gatter
Lieber Karl May ;) vermutlich willst du eine definierte Anzahl Pulse auf einen Pin ausgeben. Hast du schon mal überlegt, dafür einen MOSI zu missbrauchen? Der ist zwar wesentlich eingeschränkter als ein richtiger Timer, könnte deine Aufgabe aber ggf. erfüllen. Andere (wilde) Idee: der Timerüberlauf triggert jedesmal die DMA. Die DMA-Source zählt ihre Adresse hoch, während die Zieladresse auf CR1 zeigt. Als letzten Wert schreibt die DMA dann etwas in CR1, was EN auf 0 setzt. Und jetzt reitet Hadschi Halef Omar los, um sich bezüglich Master/Slave-Timern kundig zu machen. Grüße, Max
Max G. schrieb: > Andere (wilde) Idee: der Timerüberlauf triggert jedesmal die DMA. Die > DMA-Source zählt ihre Adresse hoch, während die Zieladresse auf CR1 > zeigt. Als letzten Wert schreibt die DMA dann etwas in CR1, was EN auf 0 > setzt. Inzwischen mache ich das so tatsächlich. Ich schreibe aber den Prescaler, kann somit auch noch die Frequenz ändern bei jedem Übrlauf.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.