Hi,
der Timer läuft mit Systemtakt, da kann eine Soft-PWM nicht wirklich gut
funktionieren. Auch mit bestem Assembler nicht.
Die Periode ist doch nur 800 Takte lang.
Mit Soft-PWM kann man vielleicht nebenbei eine LED dimmen oder sowas
aber doch keine PWM mit 20kHz.
ton immer wieder in der ISR zu setzen ist jetzt auch nicht sonderlich
effizient aber das macht den Kohl nicht fett.
Überhaupt ginge das etwas besser (ICR1 als Overflow vorher festlegen)
aber das löst Dein Problem nicht, da das auch nur minimal besser wird.
Einzige Chance wäre Timer mit 8Bit, Teiler 8, PWM-Frequenz
dementsprechend runter auf ca. 7,8kHz. Darüber wird das Schalten der
Endstufe auch langsam ein ernsteres Thema.
Damit wird es aber auch noch nicht wirklich gut sondern nur etwas
weniger schlecht.
Spätestens wenn es noch andere Interrupts gibt kannst Du das komplett
vergessen.
Das wird nur mit Hardware PWM was werden.
Gruß,
Norbert