|
AT90USB1287 - отваливается конечная точка |
|
|
|
Jan 8 2011, 18:47
|
Группа: Новичок
Сообщений: 7
Регистрация: 8-01-11
Пользователь №: 62 089

|
Доброго времени суток. Следующая проблема: Делаю проект на AT90USB1287, драйвер ПК - libusb-win32. В устройстве три контрольные точки (кроме control) - две OUT, одна IN, все bulk.
Все вроде работало - но при тестировании вылез следующий трабл: при длительной работе отваливается одна из точек OUT. Отваливается в моменты обмена,в обмене постоянно участвует точка IN и точка OUT(та что в последствии отваливается). При этом остальные точки продолжают работать нормально, само устройство в целом продолжает нормально функционировать. Зависшая точка не вызывает никаких прерываний, вообще никак не реагирует. Сброс-переконфигурирование точки не помогает. Восстанавливается только после выключения-включения интерфейса.
За основу кода брал аппноуты от атмел. С USB на МК работаю впервые, может кто подскажет куда копать?
|
|
|
|
|
 |
Ответов
|
Jan 9 2011, 12:33
|
Группа: Новичок
Сообщений: 7
Регистрация: 8-01-11
Пользователь №: 62 089

|
Цитата(kovigor @ Jan 9 2011, 12:55)  Насколько я помню, если точка "отваливается", то она должна возвращать STALL при попытке записи в нее. Получив STALL, хост обязан сбросить эту точку запросом "Clear_Feature". Это происходит ? И вообще, что будет, если для "отвалившейся" точки подать этот запрос вручную, воспользовавшись тем же BusHound'ом ? STALL не возвращается. Точка вообще никак не реагирует на запись, не один флаг не изменяется. Ручной запрос "Clear_Feature" проходит, МК запрос обрабатывает, но на состоянии точки это не отражается. Сброс конечной точки тоже не помогает, помогает только usb-сброс.
|
|
|
|
|
Jan 9 2011, 14:10
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(leg @ Jan 9 2011, 18:33)  STALL не возвращается. Точка вообще никак не реагирует на запись, не один флаг не изменяется. Ручной запрос "Clear_Feature" проходит, МК запрос обрабатывает, но на состоянии точки это не отражается. Сброс конечной точки тоже не помогает, помогает только usb-сброс. Я с вашим МК не работал, но те USB-движки, которые мне встречались в разных МК, всегда записывали информацию о статусе конечных точек в соотв. регистры. Т.е., это я к тому, что отключению точки что-то предшествовало. Что ? Data Toggle error ? Прием слишком короткого или длинного пакета ? Или еще что-то ? Попробуйте этот статус при каждом прерывании от этой точки выводить по UART в машину и анализировать, или выводить пользователю для наблюдения каким-то иным способом. Наконец, попробуйте сменить ОС, например, с XP на Win2000. Но начинать надо, думаю, с МК ...
|
|
|
|
Сообщений в этой теме
leg AT90USB1287 - отваливается конечная точка Jan 8 2011, 18:47   leg Цитата(kovigor @ Jan 9 2011, 19:10) Я с в... Jan 9 2011, 16:02    leg В общем проблему победил. Правда всего механизма л... Jan 10 2011, 07:04    kovigor Цитата(leg @ Jan 9 2011, 22:02) Так и дел... Jan 10 2011, 07:16     leg QUOTE (kovigor @ Jan 10 2011, 12:16) Ой, ... Jan 10 2011, 07:58      kovigor Цитата(leg @ Jan 10 2011, 13:58) основной... Jan 10 2011, 08:39       leg Цитата(kovigor @ Jan 10 2011, 13:39) Эх, ... Jan 10 2011, 09:43
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|