[an error occurred while processing this directive]
|
Из примера CDC
Сделал обработку USB запросов по прерываниям.
Основная программа пока "моргает" светодиодом а обработка запросов по прерываниям.
Устройство успешно конфигурируется и драйвера ставятся но не "моргает" :-(
Я предположил, что какое-то не обрабатываемое прерывание от USB мешает
поставил проверку и сброс по одиночке и выловил влияние флага AT91C_UDP_RXRSM:
if (ulIrqStatus & AT91C_UDP_RXSUSP ) AT91C_BASE_UDP->UDP_ICR =AT91C_UDP_RXSUSP;
if (ulIrqStatus & AT91C_UDP_SOFINT) AT91C_BASE_UDP->UDP_ICR =AT91C_UDP_SOFINT;
if (ulIrqStatus & AT91C_UDP_WAKEUP) AT91C_BASE_UDP->UDP_ICR =AT91C_UDP_WAKEUP;
if (ulIrqStatus & AT91C_UDP_EXTRSM) AT91C_BASE_UDP->UDP_ICR =AT91C_UDP_EXTRSM;
// if (ulIrqStatus & AT91C_UDP_RXRSM ) AT91C_BASE_UDP->UDP_ICR =AT91C_UDP_RXRSM ;
Если убрать комментарий то светодиод "моргает", но вызывается только прерывание USB RESET.
Сброс флага AT91C_UDP_RXRSM при старте программы не завешивает процессор.
Errata я не нашел.
Где копать?
Спасибо.
E-mail: info@telesys.ru