Die Belichtungszeit sollte von einem TG Puls zum nächsten sein, also nicht nur wärend des TG Pulses. Wenn man nicht schnell genug ausließt, hat man da ein paar Probleme ganz kurze Belichtungszeiten zu bekommen. Das Problem läßt sich aber lösen.

Das Signal liegt nicht da an wo es vermutet wurde, sondern, während des RB puilses, also etwas später.
Der RB Takt soll weiterlaufen, vermutlich deshalb, weil der Offset am Ausgang davon abhängen kann wie das Taktverhältnis des RB Signals ist. Auf die Zahl der Zyklen sollte es da nicht ankommen. Man solle aber natürlich sehen eine Ganze Zahl von Pulse zu haben. Vermutlich sollte auch das Taktverhältnis in etwa dem Entsprechen, was man später bein Auslesen hat.

Ich habe das Programm komplett in ASM geschrieben, fast alles im Hauptprogramm. Nur der AD-Wandler und die Software-UART sind zusammen im AD Wandler-Interrupt. Das ist eine aus einem anderen Programm übernommene Lösung für die Software-UART und eigentlich keine so gute Lösung.
Die Verzögerungen sind kurze Schleifen, bzw. beim Auslesen durch den AD-Wandler gegeben.
Schon wegen des internen AD Wandlers wird man relativ langsam auslesen müssen, da sollte es auch möglich sein das Ganze in C zu schreiben. Die etwa 60 Zyklen für die ISR könnten für C hinkommen, hängt aber von der ISR ab.