Текст заголовка сообщения полностью: вот этот пример по моему правльный: попали, заполнили регистр, если это последнее значение из буфера выключили "следующее" прерывание.
void uart1_udre_isr(void) { UDR1=TXC_BUFF[TXC_RD];//character transferred to shift register so UDR is now empty if(TXC_RD<(TXC_BUFF_SIZE-1)) TXC_RD++; else TXC_RD=0; if(TXC_RD==TXC_WR) UCSR1B&=~(1<<UDRIE1); }