22.17. Прерывания
Нижеприведенный рисунок иллюстрирует все источники прерываний.
 Рисунок 22.4. Система прерываний контроллера USB устройства
Существует два вида прерываний: функциональные (т.е. их возникновение - это часть нормального функционирования) и исключения (ошибки).
Функциональные прерывания генерируются при следующих событиях:
- на линии VBUS обнаружено подключение (подключение/удаление))(VBUSTI),
- удаленное пробуждение (UPRSMI),
- окончание возобновления (resume) (EORSMI),
- пробуждение (WAKEUPI),
- окончание сброса (инициализация скорости)(EORSTI),
- начало фрейма (SOFI, если FNCERR=0)
- обнаружение приостановки после 3 мс неактивности (SUSPI).
Исключения возникают при следующих событиях:
- ошибка CRC в номере фрейма в SOF (SOFI, FNCERR=1).
 Рисунок 22.5. Система прерываний конечных точек контроллера USB устройства
Функциональные прерывания генерируются при следующих событиях:
- готов к приему данных на отправку в хост (EPINTx, TXINI=1),
- получены данные от хоста (EPINTx, RXOUTI=1),
- получен SETUP(EPINTx, RXSTPI=1).
Исключения возникают при следующих событиях:
- пакет проигнорирован (stalled) (EPINTx, STALLEDI=1),
- ошибка CRC при приеме данных от хоста в изохронном режиме (EPINTx, STALLEDI=1),
- переполнение в изохронном режиме (EPINTx, OVERFI=1),
- антипереполнение в изохронном режиме (EPINTx, UNDERFI=1),
- послан IN NAK (EPINTx, NAKINI=1),
- послан OUT NAK (EPINTx, NAKOUTI=1).
|