Für eine LED mit 11 Helligkeitsstufen (0%, 10%...100%) reicht meiner Erfahrung nach eine PWM-Auflösung von 100, wobei man die duty-cycles quadratisch verteilt, also 0/100, 1/100, 4/100, ...

Da LEDs praktisch unträge sind und es nicht flimmern sollte (auch nicht, wenn die Anzeige im Blickfeld wandert), solltes es schon allermindestens eine 100Hz-PWM sein.

Wenn wir von einer Timer-IRQ-Rate von 20kHz ausgehen hast du noch Luft. Die Auflösung könntest du zB auf 200 erhöhen (ca. 15 Helligkeiten) oder alternativ die PWM-Frequenz auf 200Hz steigern.

Das Flimmern kann man auch einfach dadurch reduzieren, daß man nicht mit einer PWM ansteuert.

Beispiel: Nehmen wir mal an, wir hätten eine PWM mit einer Auflösung von 5 und wollen 2/5 duty. Eine PWM würde dann liefern
11000110001100011000...
Die selbe Helligkeit und kann man aber auch erreichen mit
10100101001010010100...
Das hat viel kürzere Intervalle gleichen Pegels, was das Flimmern reduziert.

Vom algorithmischen Aufwand ist das genauso einfach wie ne Soft-PWM, formal aber eine Überlagerung von phasenverschobenen PWMs, hier von 2 Stück.