Грабли с UART, искажаются передаваемые символы После перехода с 4433 на мега8 аблюдаю странные вещи:
/*********************************************************/
//UART0 initialize
// actual: baud rate:(0,0)
void uart0_init(char P_1,char P_2)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00; //disable while setting baud rate
UCSRC = Bit(URSEL) | 0x24;//2C
/*UBRR*/UBRRL = P_1; //set baud rate lo
/*UBRRHI*/UBRRH = P_2; //set baud rate hi
UCSRA = 0x00; //enable
UCSRB = 0x18; //
}
/********************************************************************************
Вывод байта в UART
********************************************************************************/
void TxByte(char Data)
{
while (!(TestBit(UCSRA,UDRE)));
UDR = Data;
}
/********************************************************************************
Завершающая строка
********************************************************************************/
void _End(void)
{
TxByte(' ');
TxByte(0x0D);
}
/********************************************************************************
Завершающая строка при нормальном заверщении
********************************************************************************/
void _End_OK(void)
{//1-й вариант
TxByte('0');
TxByte(' ');
TxByte(0x0D);
/*
второй
TxByte('0');
_End();*/
}
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Так вот, второй вариант не работает. частенько вместо пробела посылается то p, то Р
то еще чего-то. И такая фишка довольно часто при передаче. С приемом вроде проблем нет. Чего посылаю, на то и отвечает...
Кстати использование встроенных функций удлиняет код, но не изменяет ситуацию...
Чего не так? Может фьюзы какие-то надо выставить?
Кстати тут же...
Из потребности в скорости пользовался СV (компилит правильно, проверял в студии, а не IAR.
Ранее проверял ради любопытства ICC....
Всюду нахваливаемый ICC 6.31 ПРОФЕССИОНАЛ!!! :-)на тот же текст дает как правило до 30 длиннее код и очень тормозной.(до 10 раз) Случаи более оптимальной компиляции единичны.
А СV 124.5 отказался компилить проект под мегу на вин98. На 2000 все нормально.
124.2с работает на 98-м...
-
- Как это? если все задержки по таймеру и уарту совпадают.... Лeшик(183 знак., 31.08.2005 13:54, )
- Не иначе работает от внутреннего генератора? - Гудвин(31.08.2005 11:10, )