Цитата(ZZZRF413 @ May 5 2012, 08:11)

Я это процедуру брал с примеров.
Т.е. это
Код
void USART0_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !(UCSR0A & (1<<UDRE0)) )
{
};
/* Start transmittion */
UDR0 = data;
}
так должно быть?
Да, так сойдёт.
Код
while ( !(UCSR0A & (1<<UDRE0)) )
/* Start transmittion */
UDR0 = data;
Ошибка в том, что ваш вариант делает следующее: пока бит UDRE0 равен 0 - пишет новые данные в UDR0. Точки с запятой не хватает после while.
Цитата(Navovvol @ May 5 2012, 11:11)

Всё неправильно. Как так ? ждать медленный USART в обычной цикле, при этом включен сторожевой пёс.
И вообще где само тело программы ? где вызов всех этих функций?
На начальном этапе WDT выключить.
Тоже верно.