Цитата(aaarrr @ Dec 12 2006, 18:07)

Цитата
А почему не возникает прерывание recive timeout (бит RTIE в UART3Ctrl регистре), если в порт ничего не приходит?
Оно возникает только если FIFO не пуст. Работает нормально.
Выходит если мне надо определить момент когда в течении какого то времени не пришли байты (нет ответа от устройства) то оно мне не поможет. Такую ситуацию не разрулить в одном INT_UART3.
И второй вопрос: не вызывается таймерное прерывание, что не так настроил?
ldr r0, =1000//500ms
ldr r1, =0x80810000 //Timer1Load
str r0, [r1]
ldr r0, =(1<<7/*ENABLE*/)|(1<<6/*MODE*/)|(0<<3/*CLKSRL*/)
ldr r1, =0x80810008 //Timer1Control
str r0, [r1]
...
VIC1IntEnable = (1<<VIC1_AACINTR)|(1<<VIC1_TC1OI); // Enable AC97 interrupt, TC1OI interrupt.
...
VIC1VectCntl1=0x20|VIC1_TC1OI; // Enable vector interrupt.
VIC1VectAddr1=(unsigned long)InterruptHandler;//interrupt handler
...
__ARMLIB_enableIRQ();
void irq_handler(void) __attribute__ ((interrupt ("IRQ")))
{
unsigned long vector1=VIC1VectAddr,vector2=VIC2VectAddr;
if(vector1)
{
(*((void(*)(void))vector1))();// Call vectored interrupt function.
VIC1VectAddr=0; // Clear interrupt in VIC.
}
if(vector2)
{
(*((void(*)(void))vector2))();// Call vectored interrupt function.
VIC2VectAddr=0; // Clear interrupt in VIC.
}
}
void InterruptHandler(void)
{
...
Timer1Clear=0; //???
}
и нужно сбрасывать прерывание (Timer1Clear=0)