Überleg mal, was Du da tust.
Der Controller hat gerade mal 32 Taktzyklen, bevor wieder eine neuer Interrupt ausgelöst wird.
Das reicht noch nicht mal zum sichern aller Register!
Ich würd die Telegrammaufbereitung anders machen.
Nimm den Timer 1 mit einem Prescaler von 8.
Somit ist ein Takt 0,5µs lang.
Dann trägst Du in das OCR Register die gewünschte Puls bzw. Pausenlänge + den aktuellen OCR Register Inhalt ein.
Dann musst Du nur noch ein Flag setzen, ob ein Impuls oder ne Pause dran ist und den entsprechenden Port Ein- bzw. Ausschalten.
Dadurch ist ein Impulsauflösung von 0,5µs gegeben, das entspricht etwa 2000 sinnvollen Werten für 1ms, das schafft so gut wie keine Anlage.

Auch für einen kurzen Impuls von 1ms hat dein Controller 2000*8 also 16000 Taktzyklen Zeit, bevor er wieder einen Interrupt abarbeiten muss.

Solche Fehler wie Deinen kann man wunderbar mit dem Simulator vom AVR Studio 4.xx nachvollziehen.
Dann wirst Du merken, das der Controller ständig nur den Interrupt ausführt und auch welche verpasst ( Der Comparematch Interrupt hat nur ein Flag ).