ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
38158
Лeшик (31.08.2005 09:33, просмотров: 988)
Грабли с 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-м...