Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пример ISP1581
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Why
А нет ли у кого-нибудь реально рабочего примера ISP1581, который бы 100% где-то работал?
Alex11
Есть-то он есть, только дать не могу, продукт коммерческий и закрытый. Вопросы - задавай, чем смогу - помогу.
Why
Цитата(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.

Заработало.

Думаю, из-за чего ещё устройство не проходит нумерацию....
Alex11
Мы никогда не запускали напрямую филипсовский код, только посматривали на него. Разводка, действительно, должна быть аккуратной. Как там присоединен корпус разъема - все равно, у меня тоже на земле напрямую, все работает. Там есть отладочный битик, который ставит чип принудительно в full-speed. Можно его взвести, если все заработает стабильно - то с большой вероятностью - разводка. У меня еще была по-началу интресная засада - перепутаны D+ и D-, что удивительно - какие-то пакеты при этом проходили иногда.
Why
Цитата(Alex11 @ Aug 11 2006, 20:26) *
Мы никогда не запускали напрямую филипсовский код, только посматривали на него. Разводка, действительно, должна быть аккуратной. Как там присоединен корпус разъема - все равно, у меня тоже на земле напрямую, все работает. Там есть отладочный битик, который ставит чип принудительно в full-speed. Можно его взвести, если все заработает стабильно - то с большой вероятностью - разводка. У меня еще была по-началу интресная засада - перепутаны D+ и D-, что удивительно - какие-то пакеты при этом проходили иногда.


Битик выставил, самое смешное, что с ним процент удачных запуско меньше smile.gif Далее D+, D-, вроде проверил - нормально. Да и дескрипторы перидаются намана. Корпус разъёма завёл через сопротивление в паралаль с конденсатором - ничего не изменилось
Why
Да, ещё прикол. Вот с этим отладочным битиком устройство не находится практически никогла! А если его убрать, то находится гораздо чаще. Ничего не понимаю...
_David
Какой MCU и на какой частоте ?
Abo
То же самое но с ISP1582. Глюки при енумерации - иногда приходят битые сетап пакеты - длина сетап пакета не равна 8. Соответственно процесс енумерации нет возможности проводить. Но я опытным путем определил, что на это влияет тип кабеля USB. Если использовать кабель с маркировкой 2824 - битые сетап пакеты приходят если втыкать его в разъемы на передней стенке системного блока. Если же воткнуть в разъемы на задней стенке - все нормально работает. Если использовать кабель 2725 то все работает в любом случае. Но факт появления битых сетап пакетов настораживает - ведь их либо вообще не должно быть, либо должны быть хорошие.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.