STM32 Timer Frequenzgenerator

Gast #6678960
Lesenswert?

Hallo
Normalerweise wird ein frequenzgenerator im PWM modus mit 50% duty 
generiert. Das problem welches ich dabei habe: Bei einer 
frequenzänderung müssen sowohl das comperatorregister sowie der preload 
wert angepasst werden. Da ich fix 50% duty benötige daher die frage wie 
ich dies effizienter machen könnte. Meine Idee war Up/Down count modus 
wobei beispielsweise während upcount Output 1 ansonsten 0. Leider sehe 
ich nicht wie ich dieses signal vom counter generieren lassen kann...
Gast #6678969
Lesenswert?

Diode schrieb:
> Hallo
> Normalerweise wird ein frequenzgenerator im PWM modus mit 50% duty
> generiert. Das problem welches ich dabei habe: Bei einer
> frequenzänderung müssen sowohl das comperatorregister sowie der preload
> wert angepasst werden. Da ich fix 50% duty benötige daher die frage wie
> ich dies effizienter machen könnte. Meine Idee war Up/Down count modus
> wobei beispielsweise während upcount Output 1 ansonsten 0. Leider sehe
> ich nicht wie ich dieses signal vom counter generieren lassen kann...

kannst du deine Problematik genauer schildern?
Mit so wenig Informationen bekommst du hier nichts!
Gast #6678977
Lesenswert?

Diode schrieb:
> Das problem welches ich dabei habe: Bei einer
> frequenzänderung müssen sowohl das comperatorregister sowie der preload
> wert angepasst werden.

Und wo ist da das Problem? Sowohl der Compare Reload als auch der ARR 
Reload erzeugen Interrupts und die Berechnung des neuen Compare ist eine 
einzige /2 Teiler Operation.

Wenn der Int fired lädst du die Preloads neu und beim nächsten Durchlauf 
spielen die ihre Werte ein bis sie wieder geändert werden.

Sehe da kein Problem....
Gast #6679076
Lesenswert?

Nun die Idee ist, dass ich direkt per DMA die Frequenz update (also DMA 
direkt ins register).
Duty soll immer 50% sein. Wenn ich nun 2 Register, (wobei das eine mit 
dem Wert und das andere mit dem Wert/2), sehe ich nicht wie dies durch 
DMA gehen soll.
#6679083
Lesenswert?

Servus,

treibe mit einem STM32 eine Induktionsheizung an. Steuerung rein über 
die Frequenz. Da ich ein symmetrisches PWM Signal (Timer1 CH1 + CH1N) 
benötige, brauche ich auch immer 50 % Dutycycle. ARR kann ich variabel 
mit einem Encoder einstellen.

Ich teile im Programm einfach ARR/2, das ist dann der Wert für das CCR 
Register.

Ganz einfach eigentlich...

Gruß
Gast #6679088
Lesenswert?

Einstein schrieb:
> kannst du deine Problematik genauer schildern?

Klar, Gegeben:
Variable im Ram an der Adresse A

Gesucht:
Ständig updatende Frequenz am pin des STM mit 50% Duty welche 
countclk/(2*variablenwert an der Adresse A) entspricht.

Weitere einschränkungen:
Dies soll möglichst ohne aktive beteiligung der CPU erfolgen (abgesehen 
von setup).
Gast #6679126
Lesenswert?

Diode schrieb:
> Nun die Idee ist, dass ich direkt per DMA die Frequenz update (also DMA
> direkt ins register).

Ich bin dann mal raus... ein Timer Steuerregister per DMA zu füllen ist 
mir noch nie untergekommen, zudem da der Sinn zu hinterfragen ist, ob 
die DMA nicht schneller nachfüllt als der Timer seinen Überlauf hat. Es 
sei denn er löst dann einen Request aus. Und da drin kann man ja ARR/2 
unterbringen.

Und das ist auch alles.
Gast #6679164
Lesenswert?

Christian J. schrieb:
> zudem da der Sinn zu hinterfragen ist, ob die DMA nicht schneller
> nachfüllt als der Timer seinen Überlauf hat.

Genau dass soll der Sinn der Sache sein, also Periode ständig anpassen 
(auch innerhalb der periode). Voraussetzung ist, dass die comperatoren 
auf >= oder <= achten und nicht nur auf =. sonnst fliegt mir das 
ordentlich um die Ohren. Nun dass bei einer frequenzänderung während der 
Periode der Duty von 50% abweicht ist eine logische folge und ok.
Was mir etwas sorgen macht ist wenn ein update dazu führen könnte dass 2 
pulse während einer Periode generiert würden.
Gast #6679204
Lesenswert?

Diode schrieb:

> Genau dass soll der Sinn der Sache sein, also Periode ständig anpassen
> (auch innerhalb der periode). Voraussetzung ist, dass die comperatoren
> auf >= oder <= achten und nicht nur auf =. sonnst fliegt mir das
> ordentlich um die Ohren.

Ich glaube hier will einfach jemand veralbern oder reden um zu reden.
Bin raus, dem Rest weiterhin viel Spass.
Gast #6679205
Lesenswert?

Diode schrieb:
> Was mir etwas sorgen macht ist wenn ein update dazu führen könnte dass 2
> pulse während einer Periode generiert würden.

Kein Problem. Dafür gibt es den Turbo-Modus, der bis zu 256 
Impulse/Periode liefert. Man braucht nur den passenden Timer dazu.

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