Guten Tag, Vorweg die DACs des Kontrollers sind bereits verbaut im Gesamtprojekt. Ich habe zum Testen des System einen extra Code geschrieben bzw. abgeschrieben. Quelle: https://deepbluembedded.com/stm32-change-pwm-duty-cycle-with-dma-for-sine-wave-generation/ Ich möchte einen Sinus generieren und dessen Frequenz über TIM4 ändern. Dabei ging ich davon aus das TIM4->CCR1=neueFrequenz dies übernimmt. Allerdings kann ich am Ozi keine Änderung feststellen! Mit TIM4->ARR=neuerTeiler; funktioniert. Programmablauf: Über den USERBUTTON1 wird ein Interrupt ausgelöst welcher die Periode erhöhen soll. Ansonsten wird der SINUS über DMA der von TIMER4 gesteuert wird und TIMER2 der das PWM Signal generiert erzeugt. Code im Anhang.
Machst du für jeden Timer einen eigenen Thread auf oder in wie fern unterscheidet sich das Problem von Beitrag "STM32F746G PWM Timer Periode lässt sich nicht ändern TIM4->CCR1=100;"
Die User waren zurecht unzufrieden mit meiner Formatierung etc. daher habe ich den Thread neu aufgesetzt und versuche den anderen zu löschen was irgendwie nicht funktioniert.
Hast du wenigstens die Erklärung zu deiner Frage zur Kenntnis genommen :D
Ja und nein ich schaue gerade nach dem CC. Sehe ich das richtig das ARR ist der Periode und nicht das CCR?
Das CC Register stellt das Tastverhältnis, während man über das ARR und den PSC die Frequenz einstellen kann.
Ich danke mal für den Tipp habe mich nochmal bissel eingelesen in das Thema: Also der Fehler ist TIM4->CCR ändern nicht was ich wollte. ES ist TIM4->ARR Aber Jetzt: Die Frequenz des Sinus wird in eine Drehzahl gewandelt. Folgendes Problem: Wenn ich beim Initialisieren des Timer TIM4 htim4.Init.Period = 999; Einstelle und es Laufen lasse bekomme ich genau mein Berechnendes Ergebnis. Stelle ich nun irgendwo im Code mit TIM4->ARR=999; die Frequenz um stimmt das Ergebnis nicht mehr.
Weil ARR und Timerfrequenz zusammen die Frequenz des PWM ergeben, und CCR/ARR das Tastverhältnis ergibt. Wenn du die PWM-Frequenz mit ARR verstellst, änderst du auch das Tastverhältnis gleichzeitig. Also entweder die Frequenz über die Timer-Frequenz ändern, oder (falls über ARR) dann auch CDR anpassen.
Klaus W. schrieb: > Weil ARR und Timerfrequenz zusammen die Frequenz des PWM ergeben, und > CCR/ARR das Tastverhältnis ergibt. Ist hier aber irrelevant, er braucht keinen Timer mit PWM oder OC. Henrik G. schrieb: > Stelle ich nun irgendwo im Code mit > TIM4->ARR=999; Das sollte keinen Unterschied machen, hast du das richtige Trigger Event gewählt? Das sollte Update sein.
Kevin M. schrieb: > Klaus W. schrieb: >> Weil ARR und Timerfrequenz zusammen die Frequenz des PWM ergeben, und >> CCR/ARR das Tastverhältnis ergibt. > > Ist hier aber irrelevant, er braucht keinen Timer mit PWM oder OC. > > Henrik G. schrieb: >> Stelle ich nun irgendwo im Code mit >> TIM4->ARR=999; > > Das sollte keinen Unterschied machen, hast du das richtige Trigger Event > gewählt? Das sollte Update sein. Hat geklappt! Vielen dank!
Ich habe die Lösung gefunden vielen lieben Danke an alle! Und danke für die Geduld mit mir! Grüße Kühlesblondes
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.