Пока убрал прерывания по FRAME (может по ходу дела появится необходимость в них). Дальше прерывания по DEVSTATE - тут все отлично: воткнули usb-кабель - состояние изменилось (по Get Device Status получаю бит CON = 1), разъединяю кабель - получаю состояние SUSPEND.
Проблема возникла с Endpoint прерываниями. Сами прерывания по конфигурационным Endpoint'ам у меня включены, но они не возникают вообще. Варианта вижу два:
1) неправильно сконфигурированы прерывания (должны быть на EP_SLOW)
2) хост не пытается ничего послать (но насколько я понял, такого быть в принципе не может - если хост видит изменение на шине, то должен спросить, что за устройство на ней появилось)
На всякий случай выкладываю свой код (инициализация USB, обработчик прерывания, функции для работы с SIE):
USB_lpc1768.7z ( 2.65 килобайт )
Кол-во скачиваний: 176
Сообщение отредактировал alvy - Jun 10 2010, 08:32