Programmiersprachen sind Geschmackssache, ich mag auch lieber C. ABer jedem das Seine...

So weit ich sehen kann, hat ATmega32 4 PWM-Ausgänge: OC0, OC1A/B und OC2. Software-PWM ist aufwändiger und braucht auch nen Timer für den Takt. Ich mach momentan ne 10-kanälige Soft-PWM bei 20kHz IRQ-Frequenz (Mega. Wobei das indirekt über ein SPI-Protokoll geht!!! Da ist also einiges machbar, wenn man C nimmt und der µC die Ohren anlegt