Forum: Mikrocontroller und Digitale Elektronik Wie lasse ich den PWM-Timer einmalig in der ISR laufen?


von timjk (Gast)


Lesenswert?

Hallo, es geht um ein STM32F407.

ein Timer mit einem als PWM konfigurierten Ausgang soll durch ein 
Interrupt eines anderen Timers ausgelöst werden. Der andere Timer 
befindet sich allerdings im "Encoder-Mode", sodass Master/Slave bei 
CubeMX nicht aktiviert werden kann.

Was muss in der ISR des Timer-Interrupts stehen, damit der Ausgang 
EINMALIG in der des PWM-Timers definierten Zeit angesteuert wird?
Mit "HAL_TIM_PWM_Start" würde er ja permanent ohne Ende durchlaufen, 
habe ich Recht?

von Peter D. (peda)


Lesenswert?

timjk schrieb:
> Was muss in der ISR des Timer-Interrupts stehen, damit der Ausgang
> EINMALIG in der des PWM-Timers definierten Zeit angesteuert wird?

Wenn Du nur einen Puls willst, dann ist PWM falsch.
Nimm den "One-pulse-mode".

von timjk (Gast)


Angehängte Dateien:

Lesenswert?

Peter D. schrieb:
> Wenn Du nur einen Puls willst, dann ist PWM falsch.
> Nimm den "One-pulse-mode".

Der One-pulse-Mode ist hier aber nur als ZUSATZ möglich. PWM wäre für 
mich ja richtig, weil der Ausgang eine definierte Länge auf HIGH stehen 
soll..

Also wenn ich mit diesem Zusatz One Pulse den oben genannten Befehl im 
Interrupt mache, würde er dann richtig ausgeführt werden?

von Peter D. (peda)


Lesenswert?

Mit Code-Wizards habe ich keine Erfahrungen. Ich programmiere 
IO-Register immer nach Datenblatt.

von pegel (Gast)


Lesenswert?

timjk schrieb:
> im "Encoder-Mode", sodass Master/Slave bei
> CubeMX nicht aktiviert werden kann.

Bist du sicher? Kanal 3 auf "Output Compare" geht und den "Trigger 
Output" kannst du dann einstellen. Wenn man die Timer Frequenz auf 
250kHz einstellt ist es vielleicht sogar möglich beim Vergleichswert 
einen Puls auszugeben, dann hast du schon direkt deine 4µs.

von timjk (Gast)


Lesenswert?

Ja, es gibt tatsächlich die Möglichkeit und ich habe jetzt in meiner 
Main-Funktion auch einen MasterOutputTrigger = TIM_TRGO_OC1REF..


Ich habe nur keine Ahnung, wie ich den jetzt in der ISR einsetzen soll, 
die den anderen Timer auszulösen hat.

Brauche Hilfe

von pegel (Gast)


Lesenswert?

Ich fürchte um etwas genaues zu sagen, müsste man dein Gesamtkonzept 
wissen.

Bis jetzt habe ich das so verstanden, dass du einen (entprellten?) 
Encoder hast der nach 500 Schritten einen 4µs Impuls ausgibt. Aber alles 
andere kann man als Aussenstehender nur raten.

von STM Apprentice (Gast)


Lesenswert?

pegel schrieb:
> Ich fürchte um etwas genaues zu sagen, müsste man dein Gesamtkonzept
> wissen.

Typische "Salamitaktik".

Irgendeine Detailfrage wird gestellt in der irrigen Meinung
*genau" das machen zu müssen/wollen.

Später kommt dann raus dass ein ganz anderes Vorhaben dahinter
steckt das auch ganz anders zu lösen sein müsste.

Start der "Salamitaktik" siehe hier:

Beitrag "Welche Möglichkeiten gibt es bem STM 32 F407-Board einen Ausgangspuls definierter Länge auszugeben?"

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.