Цитата(_Pasha @ Jan 20 2009, 13:02)

На основании чего Вы делаете такой вывод? У Вас прием в прерывании? Приведите листинг, мож там бага

То что на железке при отправке данных они возвращаются отправителю.
Да, прием в прерывании.
Код
ISR(USART0_RX_vect)
{
uint8_t status;
uint8_t data;
status = UCSR0A;
data = UDR0;
if ( ( status & ( FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN ) ) == 0 )
{
UDR1 = data;
};
}
тут все просто -- принять и переслать.
Цитата
P.S. Не дожидаясь окончания передачи Вы запретили передатчик (но, передача не закончилась и запрет отложен), и разрешили приёмник...
Код
void byte_to(uint8_t byte)
{
rx_disable();
Приемник отключается. Правильно ?
Код
tx_enable();
Передатчик включается. Да ?
Код
UDR0 = byte;
Данные уходят в регистр передатчика. ?
Код
while (!(UCSR0A&(1 << TXC0)))
;
Ожидаем полного выплевывания данных из сдвигового регистра. Верно ?
Код
tx_disable();
Отключаем передатчик. Наверно отключаем.
Код
rx_enable();
}
Включаем приемник.
НО. Переданные данные возвращаются пользователю.
Добейте меня !