Forum: Mikrocontroller und Digitale Elektronik STM32 Hardware PWM Pulse zählen


von Rudii (Gast)


Lesenswert?

Guten Morgen,
ich habe hier einen STM32F411RE-Nucleo und habe dessen Hardware-PWM am 
laufen. Sieht auf dem Oszi. auch ganz gut aus.

Nur muss ich jetzt diese Pulse zählen und beim 4096(en) ein Ereignis 
auslösen.

Nur finde ich dafür keinen passenden Interrupt oder ein Callback?

Wollte HAL_TIM_PWM_PulseFinishedCallback nutzen. Dachte dieser wird nach 
jedem Puls aufgerufen, aber dem ist nicht so (?)

Hab mir mal die Implementierung von diesem Callback angeschaut und das 
wird im IRQHandler aufgerufen wenn irgendetwas mit Capture/Compare 
passiert.

Naja ich hoffe mir kann jemand sagen wie ich diese Pulse zählen kann. 
Oder geht das nur wenn ich das PWM mit Software realisiere.

MfG.

von Frank (Gast)


Lesenswert?


von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Rudii schrieb:
> Nur finde ich dafür keinen passenden Interrupt oder ein Callback?

Der Timer OVF sollte bei jedem PWM Puls einmal stattfinden.

von Frank B. (f-baer)


Lesenswert?

Matthias S. schrieb:
> Rudii schrieb:
>> Nur finde ich dafür keinen passenden Interrupt oder ein Callback?
>
> Der Timer OVF sollte bei jedem PWM Puls einmal stattfinden.

Ich habe mit dem STM32 auch schon PulseTrain-Ausgänge realisiert. Ich 
zähle dazu die Pulse in einem Interrupt runter. Nach dem letzten Impuls 
deaktiviere ich den Timer und setze das CNT-Register so, dass der Pegel 
des Ausgangs die Ruhestellung behält.

von dasrotemopped (Gast)


Lesenswert?

>Nur finde ich dafür keinen passenden

Je nach PWM Frequenz gibt es 2 Lösungen.

1. PWM langsam (<1kHz)
den PWM Ausgang auf einen beliebigen Eingang legen und einen Interrupt 
auf steigende oder fallende Flanke auslösen lassen. In der ISR die IRQs 
zählen
Lösung quick and dirty

2. PWM schnell (>10kHz)
den PWM Ausgang auf einen Takteingang eines anderen Timers legen, ggf. 
Vorteiler passend wählen und bei bestimmten Zählerstand IRQ auslösen 
lassen
Funktioniert auch gut bei hohen Frequenzen

alle Frequenzen dazwischen kommen auf die Auslastung des uC an.

Gruß,

dasrotemopped.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hast Du das Kapitel 61.3.2 "How to use this driver" gelesen?

Was genau, was dort beschrieben ist, funktioniert denn nicht?

* Initialize the TIM low level resources
* The external Clock can be configured, if needed
* Configure the TIM in the desired functioning mode
* …

http://www.st.com/st-web-ui/static/active/jp/resource/technical/document/user_manual/DM00105879.pdf

Hast Du den Interrupt mit STM32CubeF4 eingeschaltet?

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.