Цитата(Alex03 @ Sep 2 2008, 14:46)

Странно...
у меня вполне работает
Код
case U0IIR_INT_ID_RX_TIMEOUT: // прерывание по отсутствию данных
case U0IIR_INT_ID_RDA: // прерывание по приему
while(U0LSR & U0LSR_RDR)
{
uchar uc = U0RBR;
...
}
break;
Сначала у меня стояла такая же проверка как у Вас. Потом обнаружилось, что иногда бывает включен бит Break interrupt, а RDR - нет. И нужно считать U1RBR, иначе обработчик постоянно вызывается.
Цитата(Alex03 @ Sep 2 2008, 14:46)

А что в начале/конце обработчика прерывания (главный switch как выглядит)?
И не пользуетесь ли отладчиком для просмотра регистров проца в(от) которых сбрасываются флаги по чтению (тот же UхRBR)?
Код
void tn_uart1_int_func(void)
{
volatile char temp;
char data;
int i;
int rc;
temp=rU1IIR;
switch((temp>>1)&0x7) //-- and clear int source
{
....
}
VICVectAddr = 0xFF;
}
В отладчике окно с регистрами закрыто. Обычно такой глюк происходит при отладке при перезапуске программы. Помогает только выключение питания. Код инициализации (со сбросом FIFO). Может, проблема именно в сбросе FIFO при старте? Попробую это отключить
Код
//---- pinout -----
rPINSEL0.....
...
//-- enable access to divisor latch regs
rU1LCR = LCR_ENABLE_LATCH_ACCESS;
//-- set divisor for desired baud
rU1DLM = 0;
rU1DLL = 32; // 32; // (60'000'000)/(16*115200) = 32
//-- disable access to divisor latch regs (enable access to xmit/rcv fifos
//-- and int enable regs)
rU1LCR = LCR_DISABLE_LATCH_ACCESS;
//-- Enable UART1 rx interrupts
rU1IER = 0x0F; //-- Enable int
//-- setup line control reg - disable break transmittion, even parity,
//-- 1 stop bit, 8 bit chars
rU1LCR = 0x03; // нет четности
rU1FCR = (0x03<<6) | 7; //-- Int Trigger - 14 bytes, Enable FIFO,Reset Tx FIFO & Rx FIFO
// DTR не используется
// AutoCTS=1, AutoRTS=1
rU1MCR = (3<<6)|3;