Hallo
Arbeite auf einem STM32G474, Timer20 auf PB2
Ich habe einen Timer, den ich als CaptureCompare mit toggle on match
einsetzen möchte. Das Problem ist, dass nach jedem Stop und
anschlissenden Start die alte Frequenz für eine Periode ausgeführt wird,
sowohl wenn ich den Timer als PWM oder Capture Compare einsetze. Jemand
eine Idee?
Der Code ist nur zu Testzwecken, darum ist er nicht sauber formatiert
usw...
Ich glaube es sieht danach aus, dass der Timer erst beim Erreichen des
ursprünglichen Wertes auf den neu gesetzen Wert schaut und darauf
reagiert. Muss der wirklich neu initialisiert werden dafür?
Im Anhnag der KO Plot der dieses Verhalten aufzeigt.
It's running now like expected, but I had to set the TIM_EGR_UG before
starting. The problem now I face is when I turn off the timer with
HAL_TIM_OC_Stop_IT(&htim20, TIM_CHANNEL_1);then the output Pin goes to
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; and when in this moment
the Ouput was high, it goes to the low state which I don't like, it
should stay on the actual level on Stop.
I tried to reconfig the Timer in the IRQ but this is not working. Is
this possible to do with the OutputCompare?
Der Comparewert wird mit voller Absicht gelatcht. Würde man das nicht
machen und einen kleineren Wert laden, müßte der Timer die ganz große
Runde drehen, ehe er wieder durch 0 geht, d.h. es passiert erstmal
gaaanz lange Zeit nichts.
Ok, danke. Funktioniert jetzt auch, aber ich habe jetzt das Problem,
dass bei HAL_TIM_OC_Stop_IT der Pin auf TriState wechselt und nicht
aktiv Low oder High entsprechend dem Init vom Timer bleibt. Ich habe
versucht den Timer mit HAL_TIM_Base_Stop zu stoppen und den
OutputCompare aktiv zu lassen, was aber auch nicht funktioniert. Geht
dies überhaupt mit OutputCompare (aktiver Level bei Stop des Timers) und
wenn ja, mit welcher HAL Funktion?
Schmeiß die HAL weg, das spart nicht nur eine Menge Speicher, sondern
führt auch dazu, dass man sich damit auseinander setzt, wie die Teile
wirklich funktionieren.
Die verschiedenen Timer haben teilweise recht unterscheidliche
EIgenschaften, sind aber aufwärtskompatibel. Es gibt abhängig von der
Timertype verschiedene Preload-Optionen, inklusive solcher für den
Pinstatus.
Also HAL löschen, Reference Manual aufschlagen.