реклама на сайте
подробности

 
 
8 страниц V  « < 4 5 6 7 8 >  
Reply to this topicStart new topic
> FT245R работает со сбоями
stoker
сообщение Feb 17 2009, 23:24
Сообщение #76


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Народ, вы что то грузитесь. По-моему проблемму не там ищите. У меня 5 устройств лежит на FT есть с высоковольткой и ШИМом, все работают без нареканий. Автор темы даже пропал, наверное все почнил. smile.gif Я все же думаю все из-за питания через усб.
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Feb 18 2009, 09:23
Сообщение #77


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(stoker @ Feb 18 2009, 02:24) *
Народ, вы что то грузитесь. По-моему проблемму не там ищите. У меня 5 устройств лежит на FT есть с высоковольткой и ШИМом, все работают без нареканий. Автор темы даже пропал, наверное все почнил. smile.gif Я все же думаю все из-за питания через усб.


Вы не правы.
Само собой виновата разводка и качество исполнения платы. Но уметь на программном уровне данную проблемум обойти тоже хорошо бы знать.
Мне лично интересно чем закончится данная ветка по теме.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
stoker
сообщение Feb 18 2009, 11:21
Сообщение #78


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Цитата(AndreyS @ Feb 18 2009, 12:23) *
Вы не правы.
Само собой виновата разводка и качество исполнения платы. Но уметь на программном уровне данную проблемум обойти тоже хорошо бы знать.
Мне лично интересно чем закончится данная ветка по теме.

Можно конечно и обойти программно, но "болезнь нужно лечить, а не убивать симптомы..."
Go to the top of the page
 
+Quote Post
TriD
сообщение Feb 18 2009, 12:47
Сообщение #79


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 29-12-04
Пользователь №: 1 728



AndreyS +1
Скорее всего это именно разводка проводников от разъема USB до микросхемы, сам наступал на эти грабли
Go to the top of the page
 
+Quote Post
_3m
сообщение Feb 18 2009, 13:52
Сообщение #80


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(stoker @ Feb 18 2009, 14:21) *
Можно конечно и обойти программно, но "болезнь нужно лечить, а не убивать симптомы..."

Вы неправы, впрочем как и многие дугие заявляющие "поменяй шнурок на менее китайский и не парься" или "у меня ничего не виснет, поэтому проблемы не существует".
Бороться защитами и разводкой с помехой дело безнадежное. Всегда найдется помеха, которая пролезет через самую навороченную защиту и завесит вашу систему в самое неподходящее время.
Интерфейс для индустриальных применений должен обеспечивать:
* защиту от помех (фильтрация, развязка, разводка)
* автоматическое восстановление работы после воздействия мощной помехи (или софтверного сбоя) при условии что оборудование не вышло из строя. Вот с этим у usb боо-льшие проблемы!

Можно проводить примитивный тест: замкнуть пинцетом D+ и D- во время обмена с устройством, это совершенно безопасно для оборудования, но сразу выводит софт на чистую воду. Хочется добиться чтобы устройство продолжило работу после такого издевательства. Если зависнет - ему в индустрианых делах не место.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 18 2009, 14:37
Сообщение #81


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(_3m @ Feb 18 2009, 16:52) *
...
* автоматическое восстановление работы после воздействия мощной помехи (или софтверного сбоя) при условии что оборудование не вышло из строя. Вот с этим у usb боо-льшие проблемы!
...
Если зависнет - ему в индустрианых делах не место.

+1 (и это только класс B будет!)
Мне приходится по 2 девайса (самодельные переходники USB-CAN) на одну линию CANа в разные её концы вешать чтобы:
1. Если ОДНО зависнет - всё работать продолжало.
2. Если линию (USB или CAN безразлично) в ОДНОМ месте рубануть - всё работать продолжало.

Насчёт SnoopyPro. У меня он хабы без проблем смотрит. Он что-то там в реестре оставляет если некорректно выйти. Питание вырубить или вроде даже просто uninstal и uninstal service перед выходом не сделать. Сам сталкивался с тем, что комп виснуть начинал после этого. Очень интересная ситуация происходила - втыкаешь девайс с определёнными VID PID - полный вис. В свай девайс такие VID PID прописал - тоже виснет.

А меня тут 2 крамольные мысли посетили:
1. Про FTDI (Надеюсь любителей этого девайса здесь нет).
А м.б. это такое исключительное гуано, что под воздействием помехи у него ВНУТРЕ что-то сбивается и SOP оно шлёт? С другими девайсами (процессоры с USB функциями и просто внешние USB интерфейсы) такой картины ведь не наблюдается.
2. Про ложные EOP.
А м.б. стоит самому ложные EOP формировать? В конце кадра когда все посылки завершены. Ничему ведь тут вроде не повредишь? А если в пределах кадра ложный SOP случился, то ложный EOP его скомпенсирует и всё работать продолжит. В смысле никакого babble и LOA не случится! Минус на минус дают плюс! Сейчас у меня девайса, на котором такое попробовать можно под руками нет, но как будет - попробую.
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Feb 18 2009, 14:58
Сообщение #82


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(_3m @ Feb 18 2009, 16:52) *
Интерфейс для индустриальных применений должен обеспечивать:
* защиту от помех (фильтрация, развязка, разводка)
* автоматическое восстановление работы после воздействия мощной помехи (или софтверного сбоя) при условии что оборудование не вышло из строя. Вот с этим у usb боо-льшие проблемы!


Добрый день.

Я с вами полностью согласен.

Хотелось бы теперь вернуть всех к теме разговора smile.gif

Как вы можете прокомментировать ответ galjoen?

Для galjoen: И какие мысли появились у самого galjoen?
Долго я письмо писал. smile.gif Уже ответили.

Цитата(galjoen @ Feb 18 2009, 17:37) *
А меня тут 2 крамольные мысли посетили:
1. Про FTDI (Надеюсь любителей этого девайса здесь нет).
А м.б. это такое исключительное гуано, что под воздействием помехи у него ВНУТРЕ что-то сбивается и SOP оно шлёт? С другими девайсами (процессоры с USB функциями и просто внешние USB интерфейсы) такой картины ведь не наблюдается.


Неа. Это относится как минимум еще к CY7C68013.
У меня подобное наблюдается когда рядом (за стенкой) кто-то начинает баловаться пуском двигателей (короче когда начинают работать станки и силовые установки). Причем это происходит судя по всему не по питанию (фазы физически разные).
Устройство лежит в железном, заземленном ящике. Вот только USB хвост торчит. Пробовали мы различные способы заземления экрана USB, но пока в данном случае наилучший результат дала короткая связь от разъема USB к заземляющему концу (без резистора и конденсатора) самого прибора. Защитные диоды по сигнальным проводам не спасают от этого. Применяли мы и специальные USB 2.0 шнуры с ферритовыми кольцами.
Такое (зависание USB устройства, засыпание его) происходит редко, но метко (пользователям надоедает именно процесс выдергивания шнурка).
Устройство имеет собственное питание и для отвиса приложения достаточно выдернуть воткнуть шнур. Попытка остановить устройство и пустить его снова приводит к сообщению винды о презапуске (короче на лету не отсоединяет драйвер при таком состоянии устройства). Но такое происходит исключительно на скорости High-Speed при отключении хаба с USB2.0 и соответствующем перевешивании устройства системой на Full-speed такой зависимости не наблюдается. А у народа ведь есть USB флешки wink.gif Вот они USB2.0 обратно и включают.

Сообщение отредактировал AndreyS - Feb 18 2009, 15:51


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
_3m
сообщение Feb 18 2009, 15:25
Сообщение #83


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(galjoen @ Feb 18 2009, 17:37) *
1. Про FTDI (Надеюсь любителей этого девайса здесь нет).
А м.б. это такое исключительное гуано, что под воздействием помехи у него ВНУТРЕ что-то сбивается и SOP оно шлёт? С другими девайсами (процессоры с USB функциями и просто внешние USB интерфейсы) такой картины ведь не наблюдается.

Наблюдается.
У меня с разной степенью вероятности виснут все устройства, нужно только внимательно за ними наблюдать. Устройства с внешними подключениями в целом виснут чаще чем usb свистки, устройства обмен с которыми осуществяется изредка виснут намного реже устройств которые обмениваются информацией непрерывно. Low speed устройства виснут очень редко. Симптомы зависания во многом схожи с тем что обсуждается в этой ветке.
Впрочем если предположить что помеха воздействует на хаб так и должно быть.

Сообщение отредактировал _3m - Feb 18 2009, 15:26
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Feb 18 2009, 16:05
Сообщение #84


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(galjoen @ Feb 18 2009, 17:37) *
А меня тут 2 крамольные мысли посетили:
1. Про FTDI (Надеюсь любителей этого девайса здесь нет).
А м.б. это такое исключительное гуано, что под воздействием помехи у него ВНУТРЕ что-то сбивается и SOP оно шлёт? С другими девайсами (процессоры с USB функциями и просто внешние USB интерфейсы) такой картины ведь не наблюдается.


В догонку. Не успел по времени дописать.

Причем (как нам показалось, а может это так и есть) такое наблюдается практически всегда на машинах с Intel ICH5 (чипсет 865) и чипсетом 945 (какой там мост я уже не помню) и никогда на машинах с Intel ICH4 и VIA (именно по этому мы это засекли только на клиентских машинах, у нас то VIA. Мы их по всякому били, но стабильно все работало).


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 18 2009, 16:47
Сообщение #85


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(_3m @ Feb 18 2009, 18:25) *
Наблюдается.

Да отошёл я как-то в сторону от таких USB проблем. Как стал свой девайсы лепить, которые в такой ситуации сами о себе заботятся, так и интерес ко всему этому потерял т.к. думал, что хабом управлять невозможно. А зря. Если, как пишет "Седой", из юзермоды можно хабу SetupPacket отправлять, то вроде всё это просто решается.
По моему мнению нужно хабу такой SetupPacket отправить:
a3 01 04 0n 00 00 00 00 (n - N порта)
Т.е. SET_FEATURE + PORT_RESET к тому порту того хаба, в который наш девайс подключен.

Кстати что там у вас с "Clear Port Feature - C_PORT_ENABLE (23 01 00 11 00 01 00 04)". Там ведь точно что-то напутано.


Цитата(AndreyS @ Feb 18 2009, 19:05) *
В догонку. Не успел по времени дописать.

Причем (как нам показалось, а может это так и есть) такое наблюдается практически всегда на машинах с Intel ICH5 (чипсет 865) и чипсетом 945 (какой там мост я уже не помню) и никогда на машинах с Intel ICH4 и VIA (именно по этому мы это засекли только на клиентских машинах, у нас то VIA. Мы их по всякому били, но стабильно все работало).

Из моего опыта - имеются два типа хостов. Один который соглашениям о HID удовлетворяет, а другой нет. Основное различие в том, что если при работе HID через контрольный канал NAK хосту вернуть, то одни (соответствующие) следующую транзакцию только в следующем кадре начнут (через милисекунду), а другие (несоответствующие) сразу-же. Вначале были только соответствующие хосты, и когда появились несоответствующие у меня с ними все работать перестало (ну очень плохо работало). В основном несоответствующие с AMD процессором шли. Мне даже пришлось один такой купить чтобы разобраться в чём дело. Он PCI, у него NEC на чипе написано. И VIA вроде к несоответствующим тоже относились (за давностью забыл). М.б. эти китайцы не только на один (HID) стандарт наплевали, но и на другой? Или наоборот?
Go to the top of the page
 
+Quote Post
Седой
сообщение Feb 18 2009, 17:48
Сообщение #86


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Озвучу свое видение проблемы по итогам обсуждения и собственного опыта:

1. Одной из причин "непонятного поведения" программ, работающих с USB устройствами (не только на основе FTDI) является перевод порта хаба, к которому подключено устройство в disable state, при этом устройство остается подключенным.
2. Алгоритм работы стека используемых USB драйверов не производит выхода из такой ситуации, что приводит к "зависанию" программы.
3. Возможно алгоритм так и должен работать, так как предполагает, что такая ситуация является ненормальной и следует избавляться от причин, ee вызвавших.
4. Вероятность появления ненормальной ситуации не равна 0.

Как можно видоизменить работу алгоритма:

Драйвер устройства:
1. Драйвер устройства должен читать статус порта (IOCTL_INTERNAL_USB_GET_PORT_STATUS)
2. При появлении ситуации disable port направить запрос IOCTL_INTERNAL_USB_ENABLE_PORT
3. Если IOCTL_INTERNAL_USB_ENABLE_PORT вернет ошибку, то произвести
IOCTL_INTERNAL_USB_RESET_PORT.

Firmware устройства:
Должно уметь различать USB_RESET, полученные в состояниях Configured и Powered, и правильно их обрабатывать.

PS. Судя по документации WDK и тексту заголовочных файлов действия, производимые драйвером, можно сделать и из UserMode, обращаясь к драйверу хаба и/или хоста. Но это нужно проверять.
PS2. Да, кстати, забыл дать ссылку на предлагаемый алгоритм
http://download.microsoft.com/download/5/b...SBdrv-tips2.ppt
обратите внимание на Recommended URB error recovery steps

Сообщение отредактировал Седой - Feb 18 2009, 18:29
Go to the top of the page
 
+Quote Post
koluna
сообщение Feb 18 2009, 18:51
Сообщение #87


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(Седой @ Feb 17 2009, 17:59) *
Попробуйте.


Попробуем.

Цитата
PS to n_bogoyavlensky. Отредактируйте своё сообщение - в качестве цитаты привели не моё высказывание.


Извиняюсь. Только я не пойму, как его отредактировать?

Цитата(galjoen @ Feb 17 2009, 17:37) *
Кстати всё это легко проверить. Если просто девайс подключить и никакого обмена с ним не вести, а вот выключателем-то пощёлкать. И в таких условиях отключение с переходом в слип проверить. Если обмена с девайсом никакого не будет, а девайс всё равно отключится, то версия об ошибках сама-собой отпадёт.


Проверим.

Цитата(stoker @ Feb 17 2009, 18:06) *
У вас все устройство питается от УСБ? Сколько хавает? Мож попробовать внешний источник?


Схему привёл.
Левая часть устройства питается от USB.
Потребление не должно быть большим... проверим.

Цитата(galjoen @ Feb 17 2009, 21:15) *
Хорошо бы если бы топикстартер у себя сниффером посмотрел.


Я не знаю что такое "сниффер" и с интерфейсом USB пока знаком очень поверхностно sad.gif

Цитата(stoker @ Feb 18 2009, 02:24) *
Народ, вы что то грузитесь. По-моему проблемму не там ищите. У меня 5 устройств лежит на FT есть с высоковольткой и ШИМом, все работают без нареканий. Автор темы даже пропал, наверное все почнил. smile.gif Я все же думаю все из-за питания через усб.


Автор не пропал, он здесь smile.gif
Попробуем запитаем не от USB ещё и левую часть...

Цитата(AndreyS @ Feb 18 2009, 12:23) *
Вы не правы.
Само собой виновата разводка и качество исполнения платы. Но уметь на программном уровне данную проблемум обойти тоже хорошо бы знать.
Мне лично интересно чем закончится данная ветка по теме.


Хм... я не думаю, что сделал плату плохо...
Вот, вид сверху (фотография) и картинка из OrCAD'а - верх и низ платы.

Жду замечаний по качеству разводки smile.gif

Да. Вот ещё что.
Экран USB-кабеля соединён с общей цепью устройства (левая часть на приведённой мною схеме).
На нижней стороне ПП распаяны на общую цепь конденсаторы 47 пФ (в сантиметре от разъёма) и электролит по питанию +5 В (100.0).

Цитата(TriD @ Feb 18 2009, 15:47) *
AndreyS +1
Скорее всего это именно разводка проводников от разъема USB до микросхемы, сам наступал на эти грабли


Вот здесь вот поподробнее, пожалуйста smile.gif

Даю верхний и нижний слои ПП отдельно, чтобы было лучше видно...
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение

 


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 18 2009, 19:32
Сообщение #88


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Седой @ Feb 18 2009, 20:48) *
Драйвер устройства:
1. Драйвер устройства должен читать статус порта (IOCTL_INTERNAL_USB_GET_PORT_STATUS)
2. При появлении ситуации disable port направить запрос IOCTL_INTERNAL_USB_ENABLE_PORT
3. Если IOCTL_INTERNAL_USB_ENABLE_PORT вернет ошибку, то произвести
IOCTL_INTERNAL_USB_RESET_PORT.

В принципе согласен, но хочу заметить, что можно улучшить данный алгоритм (хотя и этот м.б. будет работать). Если посмотреть таблицу 11-1, то там видно, что нужно делать в каждом состоянии порта. Т.к. состояние порта нам доступно через IOCTL_INTERNAL_USB_GET_PORT_STATUS, то можно не делать лишних попыток, а сразу предпринимать нужные действия. И ещё я думаю, что IOCTL_INTERNAL_USB_ENABLE_PORT ни при каких условиях не будет возвращать ошибку. Откуда там может появиться ошибка? Только в одном случае - хаб на Setup вернёт STALL, а больше ни при каких условиях. Но хаб никогда не будет STALL возвращать. Просто порт останется в состоянии disable и всё. Нужно просто после подачи команд хабу проверять его состояние - опять же IOCTL_INTERNAL_USB_GET_PORT_STATUS.
На мой взгляд наибольшие сложности доставит поиск хаба и порта в который воткнут наш девайс. И ещё нужно как-то разделить ситуацию когда девайс действительно выдернули, и когда ошибка. Кол-во попыток восстановления ограничить что-ли?
Цитата(Седой @ Feb 18 2009, 20:48) *
Firmware устройства:
Должно уметь различать USB_RESET, полученные в состояниях Configured и Powered, и правильно их обрабатывать.

Я так думаю, что при IOCTL_INTERNAL_USB_ENABLE_PORT USB_RESET не происходит. Просто девайс выйдет из Syspended и всё. А при IOCTL_INTERNAL_USB_RESET_PORT резет произойдёт. Кстати его вроде нужно подавать только если порт в состоянии Disconnected (хаб думает что девайс выдернут из порта). Но вот восстановить настройки в девайсе, а именно это, я думаю, имелось ввиду под правильной обработкой, может и программа на компьютере. Особенно это актуально для девайсов на базе FTDI и т.п. В них ведь невозможно ничего изменить внутре.
Цитата(Седой @ Feb 18 2009, 20:48) *
PS. Судя по документации WDK и тексту заголовочных файлов действия, производимые драйвером, можно сделать и из UserMode, обращаясь к драйверу хаба и/или хоста. Но это нужно проверять.

У меня в своё время не получилось, но видимо это из-за той ошибки в документации, на которую вы указали. Но вообще, если этой возможности нет, то все наши рассуждения - это пустопорожняя болтовня. Тогда нужно девайсы делать антизависающие - я в своё время по этому пути пошёл.
Go to the top of the page
 
+Quote Post
_3m
сообщение Feb 18 2009, 19:32
Сообщение #89


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(Седой @ Feb 18 2009, 20:48) *
1. Одной из причин "непонятного поведения" программ, работающих с USB устройствами (не только на основе FTDI) является перевод порта хаба, к которому подключено устройство в disable state, при этом устройство остается подключенным.
2. Алгоритм работы стека используемых USB драйверов не производит выхода из такой ситуации, что приводит к "зависанию" программы.

От драйвера зависит.
Я снял лог при замыкании D+ и D- на HID устройстве на базе pic18f2550.
[attachment=29876:hid_tst.html]
Оно таки само развесилось, в логе видно что реакция на сбой сильно отличается от ftdi и действия гораздо более осмысленные. Впрочем замыкания более 2-3 секунд HID тоже не переносит - виснет без каких либо сообщений об ошибках также как и ftdi.

Цитата
3. Возможно алгоритм так и должен работать, так как предполагает, что такая ситуация является ненормальной и следует избавляться от причин, ee вызвавших.

Может с точки зрения usb.org и должен, но нас такое поведение категорически не устраивает.

Цитата
PS. Судя по документации WDK и тексту заголовочных файлов действия, производимые драйвером, можно сделать и из UserMode, обращаясь к драйверу хаба и/или хоста. Но это нужно проверять.

насчет действий из UserMode - это отдельная интересная тема.
Я перезапуск силами PC делал как в исходнике devcon.

Сообщение отредактировал _3m - Feb 18 2009, 19:37
Go to the top of the page
 
+Quote Post
stoker
сообщение Feb 18 2009, 19:36
Сообщение #90


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



Сразу что мне не понравилось в разводке - толщина цепи питания. Там на месте кабеля я так понимаю дожен быть разъём? А где кондер на 4-й ноге? Тантал бы ещё по питанию и катушку на 5 В. хорошо бы поставить после УСБ разъёма.
Оффтоп: Похоже свою ФТ я убил замыканиями пинцетом ног D+, D-. Видимо случайно не то замкнул. Теперь она все время висит в суспенде. А винда ругается что устр-во не опознано.
Go to the top of the page
 
+Quote Post

8 страниц V  « < 4 5 6 7 8 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 02:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01509 секунд с 7
ELECTRONIX ©2004-2016