Все-таки непонятна работа USB девайса
Я запрещаю все прерывания
Код
AT91C_BASE_UDP -> UDP_IDR = AT91C_UDP_ALL_INT;//Запрещаем все прерывания
Сбрасываю все прерывания, которые можно сбросить
Код
AT91C_BASE_UDP -> UDP_ICR = AT91C_UDP_CLEAR_INT;//Сброс прерываний
разрешаю прерывания только для 0 конечной точки
Код
AT91C_BASE_UDP -> UDP_IER = AT91C_UDP_EPINT0;//Разрешить прерывание от 0 конечной точки
в обработчике прерываний если поступил сброс шины сбрасываю прерывание
Код
if ((AT91C_BASE_UDP -> UDP_ISR) & AT91C_UDP_ENDBUSRES)
{
while (!((AT91C_BASE_US0 -> US_CSR) & AT91C_US_TXRDY));
AT91C_BASE_US0 -> US_THR = 0xF4;//это для отладки шлю в ком порт инфу что именно это прерывание обработанно
AT91C_BASE_UDP -> UDP_ICR |= AT91C_UDP_ENDBUSRES;
}
и все равно ядро постоянно обрабатывает прерывание!!
фактически постоянно в нем висит...
?????
Сообщение отредактировал shrek - Feb 19 2009, 08:26