Hi!
Ja, aber ich hatte gehofft, dass sie jetzt geringer sind. Das wäre zu prüfen.
Für solche Abweichungen kann es viele Möglichkeiten geben: IRQs werden übergangen, weil die ISR zu lange dauert, Timer werden nicht sofort initialisiert (auf gewünschten Wert gesetzt), Resets werden ständig ausgelöst, Quarz ist falsch gewählt oder fehlerhaft.
Für lange ISR sind natürlich der eigene Code verantwortlich aber es hängt auch am Compiler, wieviel Code dieser daraus macht. Daher fragte ich ja auch, ob Du die Optimierung eingeschaltet hast. Der GCC hat davon verschiedene. Probier doch einfach mal den.
Ansonsten ist Deine Lösung leider wirklich nicht zu empfehlen.
Wenn man eine PWM per Hardware hinbekommt, dann sind die anderen nur noch Makulatur, weil sie identisch sind. Gut, es gibt Unterschiede zwischen 8 und 16Bit Countern.
Gruß