|
|
  |
USB и статический разряд, USB и статический разряд на LM3S5R31 |
|
|
|
Sep 18 2013, 10:23
|
Группа: Новичок
Сообщений: 2
Регистрация: 18-09-13
Пользователь №: 78 374

|
Проводя тесты со статическим электричеством столкнулись с проблемой, что USB на контроллере вылетает и не восстанавливается, помогает только RESET контроллера. После удара статикой стабильной приходит SUSPEND и мы пытались зацепиться за него, чтобы перезагружать USB, таким образом соединение восстанавливается только через 5-15 с. Возникает вопрос есть ли какие-нибудь еще способы вылечить контроллер? Используем стандартную библиотеку USB от StellarisWare с перехватом прерываний. Работаем в режиме USB -> serial.
|
|
|
|
|
Sep 18 2013, 14:28
|
self made
   
Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795

|
Цитата(ocv997 @ Sep 18 2013, 05:23)  Проводя тесты со статическим электричеством столкнулись с проблемой, что USB на контроллере вылетает и не восстанавливается, помогает только RESET контроллера. После удара статикой стабильной приходит SUSPEND и мы пытались зацепиться за него, чтобы перезагружать USB, таким образом соединение восстанавливается только через 5-15 с. Возникает вопрос есть ли какие-нибудь еще способы вылечить контроллер? Используем стандартную библиотеку USB от StellarisWare с перехватом прерываний. Работаем в режиме USB -> serial. Вы делаете девайс, я так понимаю? Вам пришел suspend от хоста? От компьютера? Это было бы странно. Скорее всего вам пришло только прерывание, потому что ваш контроллер заглючил. Я бы настоятельно порекомендовал посмотреть логическим анализатором что происходит на шине непосредственно после разряда. 5 секунд на восстановление представляется нормальным при условии полного нарушения связи. 15 никуда не годится. Если вы перегружаете свой девайс и отключаетесь от шины, делайте задержку минимум пару секунд, иначе комп может не заметить, что девайс был отключен и будет считать, что он продолжает быть подключен, девайс же при этом ждет, когда хост начнет энумерацию.
|
|
|
|
|
Sep 18 2013, 15:28
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(ar__systems @ Sep 18 2013, 18:28)  Вы делаете девайс, я так понимаю? Вам пришел suspend от хоста? От компьютера? Это было бы странно. У меня именно так и проявлялось. Контроллер - LPC176x, хост - WinXP, Win7. Как сделать remote wakeup, не разобрался, при попытках сделать от хоста тут же приходил повторный suspend. Цитата(ar__systems @ Sep 18 2013, 18:28)  Если вы перегружаете свой девайс и отключаетесь от шины, делайте задержку минимум пару секунд, иначе комп может не заметить, что девайс был отключен Собственно, так и лечил. Перезагружать ничего не надо было, только коннект - дисконнект. Только вполне хватало задержки в долю секунды.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Sep 18 2013, 17:37
|
self made
   
Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795

|
Цитата(esaulenka @ Sep 18 2013, 10:28)  У меня именно так и проявлялось. Контроллер - LPC176x, хост - WinXP, Win7. Как сделать remote wakeup, не разобрался, при попытках сделать от хоста тут же приходил повторный suspend. А что на шине происходило? Настоящий саспенд? Скорее всего никакого саспенда там не было, прерывание было левое и вызвано разрядом. Вообще мне думается вы самостоятельно не можете на компе активировать wakeup. эти режимы операционка контролирует. Цитата(esaulenka @ Sep 18 2013, 10:28)  Собственно, так и лечил. Перезагружать ничего не надо было, только коннект - дисконнект. Только вполне хватало задержки в долю секунды. Возможно, я уже не помню точную величину, просто запомнил что при быстром отключении-включении хост этого не замечал.
|
|
|
|
|
Sep 28 2013, 07:38
|
Группа: Новичок
Сообщений: 2
Регистрация: 18-09-13
Пользователь №: 78 374

|
В итоге остановились на описанном выше методе, но "полезными" считаются только прерывания от endpoint-тов. А время между перезагрузками в случае не удачной перезагрузки(usb так и не получил прерываний) экспоненциально растет, начиная от 400мс. В итоге usb стабильно перезапускается через 1- 10 секунд
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|