Цитата(Nicholas @ Jun 14 2006, 14:35)

Если на том же драйвере с той же линией всё работает, то смотрите скорости. И ещё RTS должен дёргаться на всю посылку. Нет ли переполнения буфера? Очень похоже на левые скорости или отсутствие терминаторов на линии. Ну и код инициализации в студию.
RTS действительно деркается вроде как надо бы...
терминаторов действиельно нет
их установка ни чего не меняет
вот моя процедура переинициализации
void init_ComPort1_reinit(unsigned long value){ // Init USART (COM_1) RE_INIT
AT91PS_USART usart1 = AT91C_BASE_US1;
AT91PS_PIO usart1_pio = AT91C_BASE_PIOA;
AT91PS_PMC pmc = AT91C_BASE_PMC;
AT91PS_PDC pdc = AT91C_BASE_PDC_US1;
//Disable usart
usart1->US_CR = 0x00;
//enable the clock of USART
pmc->PMC_PCER = 1<<AT91C_ID_US1;
//set baud rate divisor register
/*
скорость=Fкварца/(CD*16)
CD=Fкварца/(скорость*16)
CD скорость Fкварца
960 1200 18432000
480 2400 18432000
120 9600 18432000
80 14400 18432000
30 38400 18432000
20 57600 18432000
10 115200 18432000 */
// usart1->US_BRGR = 0xA; //((18432000)/115200x16)
usart1->US_BRGR = value;
//write the Timeguard Register
usart1->US_TTGR = 0;
//Set the USART mode
// usart1->US_MR = 0x08c0; // rs232
usart1->US_MR = 0x08c1; // rs485
//Enable the RX and TX PDC transfer requests
pdc->PDC_PTCR = AT91C_PDC_TXTEN | AT91C_PDC_RXTEN;
//Enable usart
usart1->US_CR = 0x50;
// Init IO
// Disable PIO on DBGU pins
usart1_pio->PIO_PDR |= (AT91C_PIO_PA21 | AT91C_PIO_PA22 | AT91C_PIO_PA24);
usart1_pio->PIO_PER &= ~(AT91C_PIO_PA21 | AT91C_PIO_PA22 | AT91C_PIO_PA24);
// Enable peripheral A on DBGU pins
usart1_pio->PIO_ASR |= (AT91C_PIO_PA21 | AT91C_PIO_PA22 | AT91C_PIO_PA24);
usart1_pio->PIO_BSR &= ~(AT91C_PIO_PA21 | AT91C_PIO_PA22 | AT91C_PIO_PA24);
// enableRxInterrupt
usart1->US_IER |= AT91C_US_RXRDY;
usart1->US_IDR &= ~AT91C_US_RXRDY;
}