Zitat Zitat von albundy
Wenn ich 1,5 Sekunden dimmen will, in 10ms Schritten, wäre das als "Max" 150?
Das wäre eine Möglichkeit. Es kommt ja auch darauf an, welche Auflösung die PWM haben soll.

Du brauchst zwei Takte:

1) Ein Takt für die PWM, Frequenz f1. Dieser führt die im Artikel codierte Aktion aus. Dies sollte in möglichst äquidistanten Schritten erfolgen, um die PWM-Frequemz sicher zu stellen und den Jitter klein zu halten. Der Code ist nicht aufwändig und fühlt sich in einer ISR nicht unwohl. Für die Frequenz der PWM gilt dann f_PWM = f1 / MAX.

2) Ein Takt, mit dem du DUTY hochlaufen lässt. Dieser ist bei dir 10ms und nach 1.5s bist du bei 100%. Das kann unabhängig (asynchron) zu 1) geschehen.

Falls in einer ISR kein Platz ist oder das zu hohe Last macht wegen der IRQ-Rate, geht evtl. auch eine doppelt geschachtelte Schleife, aber dann wird die Nebenläufigkeit mit deinen anderen Aufgaben behindert.