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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren