Проблемы с прерыванием "Receiver timeout'. Срабатывает после приёма одного или двух байт.
Специально выставил таймаут на максимум, при скорости 115200 должно получится немного больше 0.5сек и всё равно больше двух байт не принимает.

Инициализация
Код
// Usart Configure
AT91F_US_Configure (uart->usart, configCPU_CLOCK_HZ, mode, 115200, 0);
uart->usart->US_RTOR = USART_BITS_TIMEOUT;
// Enable usart
uart->usart->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
// open Usart interrupt
AT91F_AIC_ConfigureIt (
AT91C_BASE_AIC,
d_id,
interrupt_level,
AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
USART0_ISR);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, d_id);
AT91PS_PDC pPDC = ((AT91PS_PDC) &(uart->usart->US_RPR));
AT91F_PDC_DisableRx(pPDC);
AT91F_PDC_SetNextRx(pPDC, (char *) 0, 0);
AT91F_PDC_SetRx(pPDC, (char *) 0, 0);
AT91F_PDC_SetNextRx(pPDC, (char*)0, 0);
AT91F_PDC_SetRx(pPDC, (char*)uart->rxbuf, PACKET_MAX_SIZE);
AT91F_PDC_EnableRx(pPDC);
// перезапускаем таймер таймаута
uart->usart->US_CR = AT91C_US_STTTO;
// разрешаем прерывания по приёму
uart->usart->US_IER = AT91C_US_ENDRX +
AT91C_US_OVRE +
AT91C_US_FRAME +
AT91C_US_TIMEOUT;
AT91F_US_Configure (uart->usart, configCPU_CLOCK_HZ, mode, 115200, 0);
uart->usart->US_RTOR = USART_BITS_TIMEOUT;
// Enable usart
uart->usart->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
// open Usart interrupt
AT91F_AIC_ConfigureIt (
AT91C_BASE_AIC,
d_id,
interrupt_level,
AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
USART0_ISR);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, d_id);
AT91PS_PDC pPDC = ((AT91PS_PDC) &(uart->usart->US_RPR));
AT91F_PDC_DisableRx(pPDC);
AT91F_PDC_SetNextRx(pPDC, (char *) 0, 0);
AT91F_PDC_SetRx(pPDC, (char *) 0, 0);
AT91F_PDC_SetNextRx(pPDC, (char*)0, 0);
AT91F_PDC_SetRx(pPDC, (char*)uart->rxbuf, PACKET_MAX_SIZE);
AT91F_PDC_EnableRx(pPDC);
// перезапускаем таймер таймаута
uart->usart->US_CR = AT91C_US_STTTO;
// разрешаем прерывания по приёму
uart->usart->US_IER = AT91C_US_ENDRX +
AT91C_US_OVRE +
AT91C_US_FRAME +
AT91C_US_TIMEOUT;