Hallo zusammen,
was wird benutzt:
Nucleo Board vom STM32G0B1RE;
Interner Sourceclock von 32MHz
Was ist das Ziel:
ein 800kHz PWM-Signal per DMA ausgeben um die WS2812b ansteuern zu
können.
Was ist eingestellt (siehe Bild "TIM15_Einstellungen.png"):
TIM15 mit PWM Ausgabe am Channel 1 durch DMA;
Prescaler auf 1 -> 32MHz / 2 = 16MHz;
ARR auf 19 -> 16MHz / 20 = 800kHz;
(So zumindest meine Rechnung)
Was bekomme ich:
Eine Pulsdauer die einem 800kHz Signal entspricht mit einer Periode, die
zu einem 400kHz Signal gehört.
Getestet mit einer Pulsdauer von 50%. (siehe Bild "Signal_Oszi.png")
Ansteuerung (richtige Pulsdauer, falsche Periodenlänge):
Die Variable mit der Pulsdauer darf keine 32 Bit Variable sein, sondern
muss eine 16 Bit breite Variable sein, auch wenn die HAL-Funktion eine
32Bit Variable erwartet.
Wenn ich die 16 Bit Variable auf 32 Bit caste funktioniert es, aber da
stellt sich mir jetzt die Frage wieso?
Wieso funktioniert es erst, wenn die übergebene Variable eine gecastete
32 Bit Variable ist ?