Hi
Wenn Du doch BITs einliest, warum speicherst Du Diese dann in Bytes?
Das könnte Dir schon Mal 7/8tel der 2500 Byte einsparen (auf 312,5 Byte schrumpfen lassen).
Das Problem dürfte sein, sich auf die 850µs einzutakten.
Sonst könntest Du einen Timer 'nach 852 µs' zuschlagen lassen - also etwas später, als das Bit zuende wäre.
Der nächste 'Wachhund' sollte dann aber wieder nur die 850µs danach zubeißen, daß Du nicht aus dem Takt raus läufst, wenn 'jede Menge Nullen' kommen.
Mit jedem empfangenem Wechsel setzt Du Deinen Timer zurück auf Null bzw. beendest den Timer, wenn die Bits Alle gelesen sind.
MfG