Использую:
MK - AT91R40008
OS - NutOS
ПО - Eclipse + JLink + Yagarto
Проблема: программа не попадает в прерывания от USARTа. Обработчик прерывания привязывал, как с помомощью API NutOsа, так и ручками через регистры (текущий вариант). USART работает, т.е. байты передаёт/принимает, флаги выставляет, но прерывания не срабатывает.
Посоветуйте что нить

.
CODE
void USART0Interrupt(void *arg)
{
IRQ_ENTRY();
count++;
while ((inr(US0_CSR) & US_TXRDY) == 0);
outr(US0_THR, 0xAA);
IRQ_EXIT();
return;
}
int main(void)
{
...
//----------USART-------------
//! Disable GPIO on UART tx/rx pins.
outr(PIO_PDR, _BV(UART0_TXD_BIT) | _BV(UART0_RXD_BIT));
//! Enable USART clock.
outr(PS_PCER, _BV(US0_ID));
//! Disable all UART interrupts.
outr(US0_IDR, 0xFFFFFFFF);
//! Reset receiver and transmitter
outr(US0_CR, US_RSTRX | US_RSTTX | US_RXDIS | US_TXDIS);
//! Define the baud rate divisor register
outr(US0_BRGR, 33);
//! Write the Timeguard Register
outr(US0_TTGR, 0);
//! Set UART mode to 8 data bits, no parity and 1 stop bit
outr(US0_MR, US_CHMODE_NORMAL | US_CHRL_8 | US_PAR_NO | US_NBSTOP_1);
//outr(US0_MR, US_CHMODE_LOCAL_LOOPBACK | US_CHRL_8 | US_PAR_NO | US_NBSTOP_1);
// Enable USART receiver and transmitter
outr(US0_CR, US_RXEN | US_TXEN);
//! Enable all UART interrupts.
outr(US0_IER, 0xFFFFFFFF);
//outr(US0_IER, US_RXRDY | US_TXRDY | US_RXBRK | US_OVRE | US_FRAME | US_PARE);
//----------AIC-------------
//! Disable the interrupt on the interrupt controller
outr(AIC_IDCR, _BV(US0_ID));
//! Set the vector.
outr(AIC_SVR(US0_ID), (unsigned int)USART0Interrupt);
//! Initialize to edge triggered with defined priority.
outr(AIC_SMR(US0_ID), AIC_SRCTYPE_INT_LEVEL_SENSITIVE | 4);
//! Clear the interrupt on the interrupt controller
outr(AIC_ICCR, _BV(US0_ID));
//! Enable the interrupt on the interrupt controller
outr(AIC_IECR, _BV(US0_ID));
while ((inr(US0_CSR) & US_TXRDY) == 0);
outr(US0_THR, 0xAA);
...
return 0;
}
З.Ы: в теме уровень новичка, если что написал не правильно не пинать.
Сообщение отредактировал IgorKossak - Jul 22 2011, 06:50
Причина редактирования: [codebox]