Ich komme in Assembler auf relativ wenige Zyklen (ca.60 bis vielleicht 100) für 10 Software PWM-Kanäle. Damit wird bei einem Aufruf alle 256 Zyklen nicht mal die Hälfte der Rechenzeit verbraucht. Da hier in Assembler mit dem carryflag und Shits gearbeitet wird, kann es gut sein, das die C oder Basic Compliler hier deulich langsamer sind.

Wenn es der Timer zuläßt (CTC, Prescaler oder notfalls per reload im Interrupt) kann man natürlich eine niedrigere Frequenz wählen.