Ein Timer genügt. Der wird abwechselnd auf den Startwert für High-Zeit oder Low-Zeit gesetzt. Das Überlaufflag kann doch vermutlich einen Interrupt auslösen, das erspart Polling auf dieses Flag. Je nach Arbeitstakt (High / Low) wird dann beim Überlauf der PWM-Ausgang umgeschaltet. Die Verknüpfung macht der L298 in Hardware via /INHn. Wenn du Ports sparen willst, geht die VerUNDung natürlich auch in Software.

Dein Controller hat aber ein PWM-Modul auf dem Chip. Bist du an Software-PWM gebunden durch vorhandene Elektronik?