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.
:
Bearbeitet durch Moderator
Ein „Cortex M0“ hat als solche keine Timer (außer SysTick). Du solltest also wohl schon dazu schreiben, um welchen Controller es sich handelt.
soundmachine schrieb: > STM32F0 OK, ich habe das Subject im Eingangsposting mal modifiziert. Vielleicht findest du ja so eher Leute, die sich damit auskennen.
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
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.
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.
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.
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.