STM32: variable PWM - prescaler und counter

OP #6761021
Lesenswert?

Hat jemand eine Referenz (Dokumentation/Diskussion) für eine PWM, die 
sich über die Zeit ändert (d.h. nachgeführt wird)?

Wenn der counter-Bereich ausgereizt ist oder zu klein wird, als dass man 
die on/off Phasen ausreichend genau einstellen kann, dann muss man den 
prescaler ändern. Aber das wiederum bedeutet, dass man auch den counter 
anpassen muss. Damit wiederum müssen zwei Register geändert werden, 
aber ohne, das es dabei zu Sprüngen kommt. Und generell gibt's eine 
Überlappung der Einstell-Möglichkeiten für die Frequenz über prescaler 
und counter. Da ist die Frage, ab wann man den prescaler heranziehen 
sollte.

Das muss ja ein Standard-Problem sein, das irgendwo schon ausführlich 
diskutiert wurde. Kann da jemand auf Literatur oder eine passende 
Internet-Seite verweisen? (vielleicht gibt's da sogar hier lokal etwas 
weiterführendes?)

- Danke!
Gast #6761062
Lesenswert?

Die großen stms hab doch 32 counter. Reicht das nicht (in dem Fall 
einfach keinen prescaler nehmen und die clock auf 100 MHz stellen) ?

Wenn du die frequenz so stark ändern willst dann musst du den prescaler 
ändern hilft nix.
OP #6761117
Lesenswert?

> Die großen stms hab doch 32 counter.
> Reicht das nicht (in dem Fall einfach keinen prescaler nehmen
> und die clock auf 100 MHz stellen) ?

Der Wald und die Bäume. Ja, in meinem konkreten Fall kann ich das 
machen.

> Wenn du die frequenz so stark ändern willst
> dann musst du den prescaler ändern hilft nix.

Ich habe gerade reingesehen in 
https://www.st.com/resource/en/reference_manual/dm00224583-stm32f76xxx-and-stm32f77xxx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf, 
25.4.1 TIM1/TIM8 control register 1 (TIMx_CR1).

Falls ich doch mal auf einen 16 Bit counter zurückgreifen müsste: 
ermöglicht TIMx_CR1:UDIS (erst #1, dann #0) die simultane Übernahme von 
SC und ARR - wenn man beide updaten muss?

> 
https://www.st.com/resource/en/application_note/dm00121475-hrtim-cookbook-stmicroelectronics.pdf

Danke! - das sehe ich mir an.
(Firma: egal) #6761168
Lesenswert?

Frank B. schrieb:
> Falls ich doch mal auf einen 16 Bit counter zurückgreifen müsste:
> ermöglicht TIMx_CR1:UDIS (erst #1, dann #0) die simultane Übernahme von
> SC und ARR - wenn man beide updaten muss?

25.4.11     TIM1/TIM8     prescaler     (TIMx_PSC)
The counter clock frequency (CK_CNT) is equal to fCK_PSC / (PSC[15:0] + 
1).PSC contains the value to be loaded in the active prescaler register 
at each update event...

Die Übernahme der neuen Werte erfolgt doch sowieso erst wenn das nächste 
Update ansteht und nicht sofort. Wenn du zu den Zeitpunkt erst einen 
Teil der Reg. verändert hast, hast du halt verloren. Timing ist alles:-)
#6763171
Lesenswert?

Irgend W. schrieb:
> Die Übernahme der neuen Werte erfolgt doch sowieso erst wenn das nächste
> Update ansteht und nicht sofort. Wenn du zu den Zeitpunkt erst einen
> Teil der Reg. verändert hast, hast du halt verloren. Timing ist alles:-)

Danke. Die Möglichkeit, das beim Update übernehmen zu lassen wollt ich 
auch schon vorschlagen. Hab vor gefühlt 8 Jahren das mal für ein Projekt 
gebraucht ("Sendersuchlauf" über PWM um die 600 kHz)

Man könnte auch einen hochpriorisierten Interrupt nehmen der beim 
Update-Event kommt und dann für das nächste Update die Werte richtig 
setzt. Den Interrupt lässt man natürlich nicht dauerhaft an sondern 
benutzt ihn als "one-shot" falls man die Werte aktualisieren muss.

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