> void FSK_Put(char State, int BitCount)
Sicher, dass du hier einen int brauchst?
Muss es wirklich sein, dass du dein AVR in 16 Bit Arithmetik
reintreibst, wo es 8 Bit auch tun? Kannst du nicht beim Aufrufer
sicherstellen, dass der BitCount nie größer als 255 werden kann?
Gegebenenfalls muss der dann zb nach 255 empfangenen gleichen Bits
zwischendurch einfach mal den State ins Array schreiben lassen und mit
der Zählung dann wieder bei 0 beginnen. In Summe dürfte das mehr
bringen, als wie wenn du in dieser Funktion jedesmal unnötigerweise 16
Bit Arithmetik durchkaust.