Добрый день.
Такая проблема: неправильно принимаются данные по USART, причем если передаваемые байты лежат в диапазоне 0x00-0x80 - то все окей. если больше 0x80, то принимается какая-то ерунда, чаще всего вида 0xFF. Что такое может быть? Проверено на нескольких платах. Осциллографом - сигнал корректный.
Процедура инициализации
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA,RS485_RX|RS485_TX|RS485_TR,0); AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC,1<<AT91C_ID_US1); AT91C_BASE_US1->US_BRGR =(5<<16)|326; AT91C_BASE_US1->US_RTOR = 65534; AT91C_BASE_US1->US_TTGR = 4; AT91C_BASE_US1->US_IDR = 0xFFFFFFFF; AT91C_BASE_US1->US_MR = AT91C_US_CHRL_8_BITS | AT91C_US_PAR_NONE | AT91C_US_OVER | AT91C_US_USMODE_RS485; AT91C_BASE_US1->US_CR = AT91C_US_RXEN | AT91C_US_TXEN; AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_US1,RS485INTPRIOR,AT91C_AIC_SRCTYP E_INT_LEVEL_SENSITIVE, RS485Irq); AT91C_BASE_US1->US_IER = AT91C_US_ENDRX; AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_US1);
|