Цитата(Alex11 @ Aug 10 2006, 15:12)

Есть-то он есть, только дать не могу, продукт коммерческий и закрытый. Вопросы - задавай, чем смогу - помогу.
Я работаю по примеру исходников с сайта Philips. Вообще, проблема такая - устройство через раз проходит процесс нумерации - т.е. иногда получаем set_address, устанавливаем его, передаем дескрипторы и всё нормально. А иногда почему-то после передачи дескрипторов снова возникает Set_Address устанавливаем его и всё, Device Failed Enumeration в USB Monitor.
Есть подозрения на фиговую разводку и то, что корпус разъема USB соединён с общей землёй напрямую (без сопротивления и конденсатора впаралель). Но тогда почему иногда дескрипторы отправляются и принимаются без ошибок?
Второе подозрение, что что-то накасячил с прошивкой. Глядя на филипсовский пример смутил вот такой код
while(!USB_Int_Flag.BITS.EP0TX);
USB_Int_Flag.BITS.EP0TX = 0;
Когда было так, до отправки дескрипторов дело вообще не доходило. Заменил на
while(!USB_Int_Flag.BITS.EP0TX)
{
if(USB_Int_Flag.BITS.SUSP || USB_Int_Flag.BITS.RESET)
return;
}
+ в обработчике прерываний от микросхемы убрал сброс флага прерывания USB_Int_Flag.BITS.RESET.
Заработало.
Думаю, из-за чего ещё устройство не проходит нумерацию....