В основном цикле тупо мигаю 1-м светодиодом, в обработчике прерывания USART0 делаю вспышку 2-м.
Так вот что не пойму (бьюсь третий день): при отправке символа с компа в обработчик захожу (2-й светодиод вспыхивает 1 раз, как и положено). Но вот в основную программу не выхожу (вернее из обработчика вроде выхожу, но вот куда, неясно) - "висит", 1-й светодиод не мигает.
инициализирую USART вроде верно:
Код
void init_serial (void)
{
AT91C_BASE_PIOA->PIO_PDR=(1<<0)|(1<<1);
AT91C_BASE_PIOA->PIO_ASR=(1<<0)|(1<<1);
AT91C_BASE_PIOA->PIO_BSR=0;
AT91C_BASE_PMC->PMC_PCER=1<<AT91C_ID_US0;
AT91C_BASE_US0->US_MR=AT91C_US_USMODE_NORMAL|AT91C_US_CLKS_CLOCK|AT91C_US_CHRL_8_BITS|
AT91C_US_NBSTOP_1_BIT;
AT91C_BASE_US0->US_BRGR=MCK/(16*115200);
AT91C_BASE_US0->US_TTGR=0;
AT91C_BASE_US0->US_CR=AT91C_US_RXEN|AT91C_US_TXEN;
AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_US0, 1,
AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, Usart_c_irq_handler);
AT91C_BASE_US0->US_IER=(1<<0);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US0);
}
{
AT91C_BASE_PIOA->PIO_PDR=(1<<0)|(1<<1);
AT91C_BASE_PIOA->PIO_ASR=(1<<0)|(1<<1);
AT91C_BASE_PIOA->PIO_BSR=0;
AT91C_BASE_PMC->PMC_PCER=1<<AT91C_ID_US0;
AT91C_BASE_US0->US_MR=AT91C_US_USMODE_NORMAL|AT91C_US_CLKS_CLOCK|AT91C_US_CHRL_8_BITS|
AT91C_US_NBSTOP_1_BIT;
AT91C_BASE_US0->US_BRGR=MCK/(16*115200);
AT91C_BASE_US0->US_TTGR=0;
AT91C_BASE_US0->US_CR=AT91C_US_RXEN|AT91C_US_TXEN;
AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_US0, 1,
AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, Usart_c_irq_handler);
AT91C_BASE_US0->US_IER=(1<<0);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US0);
}
такое ощущение, что микроконтроллер "не знает", по какому адресу идти, выходя из обработчика. помогает только ресет.
Спасибо заранее всем.