Hallo Arne,
die Generierung von zeitkorrekten Signalen per Timergesteuerten Interrupts ist schon gut, jedoch nicht ideal. Zum einen sorgt die unterschiedliche Ausführungszeit bis zum Setzen der Outputs für Ungenauigkeiten. Schlimmer wirds, wenn ein zweiter Interrupt die gesamte Ausführung verspätet.
Besser wäre es, die Hardware-PWM-Einheit zu verwenden. Hier kannst du auch per Interrupt, der auf den Timer compare match ausgeführt wird, die nächste Flanke vorprogrammieren, die dann vom Programm unabhängig timergesteuert gesetzt wird. Jenes Timerevent kann dann wieder den Interrupt auslösen. Schau dir mal das (etwa 400 Seiten lange) Datenblatt des auf dem Arduino verwendeten Atmel AVR Prozessors an. Unter 16-bit Timer/Counter ist alles sehr gut dokumentiert. Wenn du Fragen hast, frag ruhig nochmal nach.
Viele Grüße,
Stefan