Работаю с Mega16, запускаю у неё UART на любой скорости, посылаю с неё всего один байт 0x0D, а в терминалке получаю два байта 0x0D и 0x0A. Причем это наблюдается токо когда отсылаю именно 0x0D и всегда после него принимается 0x0A. Если слать скопом толпу байтов где нет байтов равных 0x0D то все Ок, сколько послал столько и принял и пакет правильный. А если с 0x0D то получаю пакет длиннее на столько байтов сколько раз встретился 0x0D в пакете. Что может быть за мистика?

Мега работает с кварцем 16МГц и скорость UART никак не влияет на данный странный баг.
Инициализация выполнена так:
Код
UCSRA=0x02;
UCSRB=0x18;
UCSRC=0x8E;
UBRRH=0x00;
UBRRL=0x22;
UCSRB=0x18;
UCSRC=0x8E;
UBRRH=0x00;
UBRRL=0x22;
отправка так:
Код
void uart_send_char(unsigned char data){
while ( !( UCSRA & (1<<5)) );
UDR = data;
}
while ( !( UCSRA & (1<<5)) );
UDR = data;
}
