STM32 Timer Anzahl Update Events begrenzen

OP #7384950
Lesenswert?
• ▲
▼

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.

#7384995
Lesenswert?
• ▲
▼

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.

#7388501
Lesenswert?
• ▲
▼

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

Persönliche Seite #7388546
Lesenswert?
• ▲
▼

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

OP #7388561
Lesenswert?
• ▲
▼

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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.