Jaein,

wenn man die PWM "händisch" erzeugt kann man viele Kanäle unterschiedlich dimmbar machen. Da der ATMega aber nur 3 Timer hat, gehen so maximal 3 Kanäle...

In dem Code erzeugt der Timer nur Interrupts. Diese werden mit Tick gezählt. Solange der Wert von Tick kleiner ist wie der gewünschte Wert des DMX-Kanals buffer(adresse) liegt Kanal1 auf high.
Ist Tick größer als buffer(adresse), liegt Kanal1 auf low. Wird Range erreicht, startet Tick von vorne.

Sollten mehrere Kanäle gedimmt werden:

If Tick < Buffer(adresse1) Then
Kanal1 = 1
Else
Kanal1 = 0
End If
If Tick < Buffer(adresse2) Then
Kanal2 = 1
Else
Kanal2 = 0
End If

usw.

Günter