Цитата(Tcom @ Mar 4 2010, 15:19)

Тактовая частота должна быть кратна скорости обмена по UART.
Есть в ДШ табличка с ошибками.
U2X = 0 и UBRR=0 должно ровняться скорости 1М
А если включить перемычку TX + RX в USB to UART Bridge с поддержкой USB 2.0 то нормально работает?
Приммер инициализации USART1 для м128 на 1МГц, работает без ошибок, кварц 16МГц
Код
//------------ Инициализация USART1 -----------------------
void MonitorUART :: InitUSART1 (ULONG baudrate, char frame, char stopbits )
{
UCSR1B = (1<<RXEN1)|(1<<TXEN1);
// Количество стоп битов
if ( stopbits == 1) UCSR1C &= ~(1<<USBS1); // 1 bit
else UCSR1C |= (1<<USBS1); //2 bit
//Устанавливаем фрэйм
UCSR1B &= ~(1<<UCSZ12);
char tmp = 0;
switch (frame)
{
case 5: tmp = ~(1<<UCSZ10); tmp &= ~(1<<UCSZ11);
UCSR1C = tmp;
break;
case 6: tmp |= (1<<UCSZ10); tmp &= ~(1<<UCSZ11);
UCSR1C = tmp;
break;
case 7: tmp |= (1<<UCSZ11); tmp &= ~(1<<UCSZ10);
UCSR1C = tmp;
break;
case 8: UCSR1C |= (1<<UCSZ10)|(1<<UCSZ11);
break;
default: UCSR1C |= (1<<UCSZ10)|(1<<UCSZ11);
break;
}
// Скорость обмена
UINT ubrr = CPU_F_Hz/ ( 16UL*baudrate) -1;
UBRR1L = (char) ubrr; UBRR1H = ubrr>>8;
// Разрешаем прерывания
RxcIntEnable ();
TxcIntEnable ();
}