STM32F746G PWM Timer Periode lässt sich nicht ändern TIM2->CCR1=100;

OP (Firma: Student) #6949451
Lesenswert?
• ▲
▼
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.
Angehängte Dateien:
OP (Firma: Student) #6949532
Lesenswert?
• ▲
▼
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.
#6949542
Lesenswert?
• ▲
▼
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.
#6949545
Lesenswert?
• ▲
▼
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.
OP (Firma: Student) #6950477
Lesenswert?
• ▲
▼
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!

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.