5ms sind 1,5 bitlängen um das startbit zu überspringen
Du musst ja aber nur ein halbes Bit überbrücken, denn mit dem Timer überbrückst du ja dann ein komplettes weiteres Bit. Aber wie gesagt, mit _delay_ms ist das sowieso Murks. Lass einfach den ersten Timer-Interrupt nach 1,5 Bits kommen.
Code:
udr |= (1<<bitCnt++);
}
if(bitCnt == 7)
Beim Einlesen von Bit 6 wird bitCnt auf 7 erhöht, und dann greift sofort das "bitCnt == 7", also ließt du nur 0-6.
Ein Timer-Mode, bei dem du nicht manuell den Timer vorladen musst, und damit sehr viel genauere Abstände zwischen den Interrupts hast.
Lesezeichen