SO!

Das Problem ist gelöst und war folgendes:

Der Timer0 hatte einen Prescaler von 1. Der Timerstartwert ist 122. Das laufende Programm wird also alle 122 Takte vom Timer unterbrochen. Am Anfang des Timer Interrupts wird der Timer wieder auf den Startwert gesetzt. Die Interrupt-Routine ist aber so lang, dass sie mit Sicherheit 100 Takte hat, höchstwahrscheinlich mehr. Deshalb lief ausser den PWMS NICHTS, weil sobald die Timer-Routine vorbei war (oder sogar davor) wurde sie erneut aufgerufen. Mit einem Prescaler von 8 flimmerts zwar merklich, aber es funktioniert.