STM32F0 - PWM Timer1 und 3 snychronisieren

Gast #4733765
Lesenswert?
• ▲
▼
Hallo Zusammen,

wie der Betreff schon sagt habe ich momentan 7 PWM Kanäle an Ausgängen 
des Cortex M0 am laufen. 4 Kanäle werden durch den Timer 1, weitere 3 
Kanäle durch den Timer 3 realisiert. Im Setup benutze ich die gleiche 
Parametrierung für beide Timer, allerdings musste ich feststellen, dass 
das PWM Signal des Timer 1 um ca. 20% voreilend ist.
Das kann ich aber so garnicht gebrauchen. Hat jemand hier Erfahrung wie 
ich ggf. die beiden Timer/PWM Gruppen synchronisieren kann?

Bin für jede Ernst gemeinte Antwort mehr als dankbar.
Gast #4733868
Lesenswert?
• ▲
▼
Hallo Jörg...
danke vielmals. Bin, was den STM betrifft noch eher ein Anfänger, von 
daher auch die falsche Ausrucksweise. Vielleicht findet sich so ja 
jemand der das Problem schonmal hatte und mir weiter helfen kann.

Nochmals Danke
Gast #4733960
Lesenswert?
• ▲
▼
Hallo, ich habe mitlerweile die Lösung gefunden.

Evtl. ist es ja nützlich für jemand anderes.

Die beiden PWM Timer liefen bei mir deshalb "unsynchron" weil die Timer 
zu unterschiedlichen Zeiten aktiviert wurden.

Die Zeilen
TIM_CtrlPWMOutputs(TIM1, ENABLE);
und
TIM_CtrlPWMOutputs(TIM3, ENABLE);
sind ca. 30 Zeilen auseinander.

Auf gleiches Level gebracht laufen beide PWM Kanäle einwandfrei 
Taktsynchron.
#4734273
Lesenswert?
• ▲
▼
Nico W. schrieb:
> 100%ig werden die so auch nicht synchron laufen. Beim F4 kann man den
> advance Timer so einstellen, dass er als Taktgeber für andere Timer
> fungiert. Dadurch könnte man die synchronsieren.

Meines Wissens nach geht das auch mit dem F0, ich habe es allerdings 
selber noch nicht ausprobiert. Im RefMan des F030/F070 gibt es 
jedenfalls ein Beispiel wo genau das gemacht wird. Genauer gesagt dient 
der eine Timer da nicht als Taktgeber sondern als Trigger um den anderen 
zu starten:
"Using one timer to start another timer" (RM0360 S.334), siehe 
Screenshot.

100% synchron sind sie da zwar auch nicht, weil der eine Timer ja 
startet und es dann ein paar Takte braucht bis der zweite den Trigger 
verarbeitet hat. Eventuell kann man einen dritten Timer (TIM15) nehmen 
und den als Master Trigger verwenden, wobei Timer 1 und Timer 3 dann 
beide als Slave laufen. Dann sollte es theoretisch 100% genau passen, 
aber was sind schon 100% ;)

Wenn es auch in Software klappt ist ja sowieso alles gut.
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.