Forum: Mikrocontroller und Digitale Elektronik Pulse skipping mit STM32L432


von Michael H. (overthere)


Lesenswert?

Hallo,

ich benötige für einen digitalen Schaltregler Pulse Skipping. Dies wird 
benötigt um auch bei kleiner Last stabil zu laufen.

Also was ich will: Zahlenwerte nur als Beispiel.

1. PWM mit 10% Duty Cycle, f=10kHz
2. PWM mit 01% Duty Cycle, f=01kHz

Jetzt möchte ich, das die ausgegebene PWM nur High ist (mit Totzeit) 
wenn beide an sind. Im Prinzip ein einfaches und-Gatter zweiter Kanäle.

Bisher verwende ich den MKE14F von NXP, da konnte man das im System 
Register einstellen. Gibt es sowas auch bei den STM32L432ern?


Danke,
-Michael

von Christopher J. (christopher_j23)


Lesenswert?

Michael H. schrieb:
> Im Prinzip ein einfaches und-Gatter zweiter Kanäle

Man kann bei L4/F7 und bei manchen F3 ohne Probleme zwei Kanäle eines 
Timers verknüpfen. Die Funktion heißt "Combined PWM Mode". Dabei ist 
dann aber logischerweise die Frequenz der beiden Kanäle gleich und 
lediglich der Duty-Cycle kann variieren. Falls die Frequenz so niedrig 
ist wie von dir beschrieben, kannst du natürlich auch einfach in einer 
Timer-ISR das jeweilige Capture/Compare Enable Bit setzen bzw. löschen. 
Ansonsten könntest du das auch einfach rein elektrisch machen, also zwei 
Timer mit jeweils einem Ausgang konfiguriert als Open-Drain, die Pins 
miteinander verbinden und noch einen Pull-Up dran, fertig. Kostet halt 
einen Pin. Eine weitere Möglichkeit wäre die Nutzung der 
ocref_clr-Funktion. Das kostet aber nochmal einen zusätzlichen Pin 
(Komparator oder ETR-Input). Einzige Ausnahme wo eine UND-Verknüpfung 
von zwei Timern direkt besteht, ist für die Erzeugung von IR-Signalen 
mittels IRTIM (TIM15 und TIM16).

von Gerd E. (robberknight)


Lesenswert?

Christopher J. schrieb:
> Falls die Frequenz so niedrig
> ist wie von dir beschrieben, kannst du natürlich auch einfach in einer
> Timer-ISR das jeweilige Capture/Compare Enable Bit setzen bzw. löschen.

Wenn Du diesen Weg gehen willst, wäre der Weg über DMA schneller und 
Ressourcenschonender als über Interrupts:

Der eine Timer für das Skipping wird als Trigger für einen DMA-Kanal 
verwendet. Der schreibt dann aus einem Ringpuffer die passenden 
Pulslängen bzw. Enable-Bits in die Register des zweiten Timers.

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
Noch kein Account? Hier anmelden.