STM32F7 Verhalten des "Timer direction bit" bei Nutzung von "center aligned pwm mode"

OP #6744688
Lesenswert?
• ▲
▼
Der STM32F7 besitzt im TimerControlRegister TIMx_CR1 ein Bit names DIR. 
Dieses Bit zeigt bei Verwendung des "center aligned mode", also beim 
auf- und abwärtszählen die aktuelle Zählrichtung des Timers an. Das 
Update-Interrupt wird bei dieser Variante zwei mal pro Zählzyklus 
aufgerufen, einmal beim Erreichen des Höchstwertes und einmal beim 
Erreichen des Tiefstwertes.
Um nun herauszubekommen, ob ich gerade am oberen oder am unteren Punkt 
des Timers bin, kann ich das Richtungsbit nutzen.

Prinzipiell ist das soweit verständlich. Allerdings geht aus dem 
Diagramm im Datenblatt nicht hervor, wann das Richtungsbit im Vergleich 
zum Interruptflag (UIF) wechselt, da es nicht mit eingezeichnet wurde.
Angenommen der Höchstwert liegt bei 6, wie im Datenblattbeispiel 
angegeben (TIMx_ARR = 6) - siehe Bild:
- Hochgezählt wird von 0 bis 5 -> bei 5 wird das Interruptflag (UIF) 
gesetzt
- Heruntergezählt wird von 6 bis 1 -> bei 1 wird UIF gesetzt
Nun aber die Frage: Welchen Wert hat das Richtungsbit (DIR) in dem 
Moment, wo das UIF gesetzt wird? Betrachtet man den Fall des 
Hochzählens, ist er im Moment des Interrupts mit Hochzählen fertig, 
daher könnte man meinen, dass das DIR-Bit nun gleich mit gekippt wird, 
weil ja nun wieder abwärts gezählt wird. Andererseits steigt der Wert im 
Zählregister erst noch um eins, da das Herunterzählen ja bei 6 beginnt 
und bisher noch nicht heruntergezählt wurde.

Außerdem vergeht zw. Triggern des Interrupts und Auslesen des 
TIMx_CR1-Registers innerhalb der Interruptroutine ja noch "etwas" Zeit. 
Sollte das DIR-Bit also beim bzw. vorm Auslösen des Interrupts nicht 
gleich mit invertiert werden, besteht ja die Gefahr, dass man je nach 
Latenz (z.B. durch höher priorisiertes anstehendes Interrupt) ein 
unterschiedliches Richtungsbit ausließt.

Daher die Frage:
gibt es irgendw0 (Datenblatt, App-Note) eine Info, wie sich das DIR-Bit 
in Bezug auf das UpdateInterruptFlag verhält? Oder habe ich etwas 
übersehen? Oder habe ich vllt. einen Denkfehler?

Vielen Dank für die Hilfe
Angehängte Dateien:

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.