Ok, mit der "inverted PWM" sollte es auch in Hardware gehen, aber einfacher ist das in meinen Augen nicht. Für die nötige Totzeit bei den Pegelwechseln brauchst du einen definierten Versatz. Die normale PWM (also PWMH) muss um diesen Versatz später gestartet werden, dafür bekommt dann die invertierte PWM (also PWML) immer einen um den doppelten Versatz größeren PWM-Wert. Und beim Ändern der beiden PWM-Werte musst du dir dann noch Gedanken über die jeweilige Reihenfolge machen, damit kein Kurzschluss entstehen kann.

Ich finde die Software-Lösung einfacher und deutlich übersichtlicher. Und sie hat nur einen kleinen Nachteil: da die Zeit zwischen Interrupt-Ereignis und Ausführen des Interrupt-Codes um ein paar Takte variieren kann, hat man ein wenig Jitter auf dem Signal. Bei (angenommenen) 16 MHz und 100 µs Periodendauer, hat eine Periode 1600 Takte. Ein Jitter von 4 Takten (sagen wir mal, den genauen Wert habe ich nicht im Kopf) würde dann bedeuten, dass man die PWM "nur" auf 0,25 % genau einstellen kann. Das sollte ja wohl kein Problem darstellen.