Gast
#4676062
Hallo, ich versuche gerade mir einen Einstieg in die STM32 Welt zu verschaffen. Dafür möchte ich gerne eine LED via PWM ansteuern und dimmen. Aktuell habe ich leider keine HW auf der ich testen kann. Im Anhang ist ein Codestück aus diesem Thread Beitrag "STM32 Servoansteuerung PWM" Ich würde gerne wissen ob ich alles richtig verstanden habe --- Die Timer Peripherie läuft standardgemäß auf SystemClock/2. Diese Frequenz kann durch TIM_PRESCALER weiter nach unten geteilt werden. Im Beispiel wird der Takt um 1Meg geteilt. Das hat zur Folge dass der Timer jede us einen Wert zum Zählregister addiert. Mit TIM_PERIOD wird dann die Periodendauer festgesetzt. In diesem Falle 20.000 * 1us = 20ms. Das bedeutet wir bekommen schon einmal eine Frequenz unseres Rechtecksignals von 50Hz heraus. TIM_PULSE ergibt die Anzahl der Punkte in denen das Signal "high" sein soll. Der Timer gibt also die ersten 1500 Punkte ein High Signal aus (1.5ms) und die restlichen 18500 Punkte ein Low (18.5ms). Dann fängt das ganze wieder von vorne an. Ist das so richtig verstanden ? --- Noch eine Frage: Man sollte doch versuchen seine Periode so nah wie möglich an 16Bit (65535) zu legen damit man möglichst viel Auflösung gewinnt. Wäre es nicht sinnvoller den Prescaler mit 2.5Meg zu teilen ? Der Timer addiert dann jede 0,4us einen Wert. TIM_PERIOD = 50.000 würde ebenfalls eine Frequenz von 20ms ergeben TIM_PULSE = 3.750 würde ebenfalls eine Impulsdauer von 1.5ms ergeben --- Für das LED Fading habe ich folgende Seite gefunden http://www.mikrocontroller.net/articles/LED-Fading Nun brauche ich doch nur meine PWM mit einer Verweilzeit step_time mit allen Werten aus z.B. pwmtable_16 zu füttern und es sollte funktionieren. Wie dimensioniert man die Verweilzeit step_time ?
