|
|
  |
FT245R работает со сбоями |
|
|
|
Feb 13 2009, 19:04
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(galjoen @ Feb 13 2009, 23:24)  На то, что линии перекошены из-за резистора 1,5 кОм он внимания не обращает - SOF слать перестаёт. И никаких попыток связь восстановить не предпринимает. Я имел ввиду, что програмно заставить его девайс поискать не удастся. А ResetPort пробовали. Цитата(galjoen @ Feb 13 2009, 23:24)  Это примерно тот-же глюк, как если компьютер в слип кнопкой ввести, а потом разбудить. В этом случае все USB девайсы кроме мыши и клавы (для них сделали исключение) пропадут. И поможет только их перетыкание. А может просто драйвера не отрабатывают соответсвующие IO. Цитата(galjoen @ Feb 13 2009, 23:24)  Так там вроде только читать можно. Хотя спорить не буду - давным-давно с этим разбирался. Можно впрямую послать запрос в endpoint0.И в другие тоже, только предварительно открыв. Цитата(n_bogoyavlensky @ Feb 13 2009, 23:38)  Что такое продольный трансформатор и как его ставить? Как подобрать колечко? Да попробуйте любое, главное чтобы устройство определилось. Цитата(n_bogoyavlensky @ Feb 13 2009, 23:38)  http://electronix.ru/forum/index.php?showtopic=42549[i]"Это у вас, скорее всего, такая мощная сингфазная помеха прёт, что и D+ и D- нулями становятся (на короткое время). А это эквивалентно выдёргиванию устройства. А хаб к которому устройство подключено этого не замечает. И о новом подключении сообщения не посылает. А компьютер, раз устройства нет, в этот USB разъём SOF слать перестаёт Хаб не замечает, а компьютер замечает, ну вы даете. Открыть драйвер менеджер и посмотреть есть ли там "замеченное","выдернутое" устройство ...
Сообщение отредактировал Седой - Feb 13 2009, 19:22
|
|
|
|
|
Feb 13 2009, 19:27
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Седой @ Feb 13 2009, 21:55)  А ResetPort пробовали. Нет. Так это вроде к хосту команда. А мы про устройство говорим. Цитата(Седой @ Feb 13 2009, 21:55)  А может просто драйвера не отрабатывают соответсвующие IO. Не похоже. Хиды, принтеры, телефоны, камеры и т.д. что все забыли про это дело? Цитата(Седой @ Feb 13 2009, 21:55)  Можно впрямую послать запрос в endpoint0.И в другие тоже, только предварительно открыв. Так это только на уровне драйвера так можно, а приложение так не может. Это в линуксе так можно (если разрешить). А продольный трансформатор - это трансформатор с двумя (или больше) одинаковыми обмотками, включенными так, что сингфазный сигнал ослабляется, а дифференциальный не изменяется. Но USB и сингфазные сигналы использует. Поэтому только на данные его (больше какого-то размера) ставить нельзя. Такие в некоторых флешках стоят. А вот всем кабелем кольцо обмотать можно - хуже не будет. Нашлёпки на концах кабелей (не только USB) это и есть продольные трансформаторы с одним витком. Но индуктивность квадрату числа витков пропорциональна. 10 витков - в 100 раз больше индуктивность.
|
|
|
|
|
Feb 13 2009, 19:36
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(galjoen @ Feb 14 2009, 00:27)  Нет. Так это вроде к хосту команда. А мы про устройство говорим. ..... Так это только на уровне драйвера так можно, а приложение так не может. Это в линуксе так можно (если разрешить). Ну зачем вы делаете скоропалительные выводы - см. http://msdn.microsoft.com/en-us/library/aa476347.aspx
|
|
|
|
|
Feb 13 2009, 19:56
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Седой @ Feb 13 2009, 22:04)  Открыть драйвер менеджер и посмотреть есть ли там "замеченное","выдернутое" устройство ... Да нет там этого устройства. В диспечере устройств посмотреть - это первое, что на ум приходит. И после слипа тоже-самое. И у топикстартера наверняка так-же. А вот линии данных за счёт резистора перекошены... Цитата(Седой @ Feb 13 2009, 22:36)  Не делаю я выводы. Где не уверен - пишу вроде и т.п. Если так можно делать, то прекрасно. Но когда я разбирался (давно) у меня так не получилось (хотя сильно и не упирался т.к. решил работать через HID). А вы пробовали? У вас получилось? В смысле можете-ли вы отправить устройству пакет SETUP с полями, заполненными по своему усмотрению, работая под win на уровне приложения? Вообще я девайсы не требующие установки к.л. драйверов делаю. Т.е. драйвера для них уже установлены д.б. Фактически это MassStorage, HID и всё.
|
|
|
|
|
Feb 13 2009, 20:01
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(galjoen @ Feb 14 2009, 00:37)  Да нет там этого устройства. В диспечере устройств посмотреть - это первое, что на ум приходит. И после слипа тоже-самое. И Если нет, тогда вы правы. Ну тогда отловить программно такую ситуацию довольно просто - обработкой сообщения WM_DEVICE. Цитата(galjoen @ Feb 14 2009, 00:37)  у топикстартера наверняка так-же. А вот у него и спросим. Цитата(galjoen @ Feb 14 2009, 00:37)  Но когда я разбирался (давно) у меня так не получилось (хотя сильно и не упирался т.к. решил работать через HID). Тогда эта возможность не была документирована.
Сообщение отредактировал Седой - Feb 13 2009, 20:11
|
|
|
|
|
Feb 14 2009, 10:24
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(n_bogoyavlensky @ Feb 14 2009, 15:08)  После возникновения ошибки устройство не пропадает из диспетчера устройств. Тогда давайте продолжим. После ошибки, не выходя из вашей программы, попробуйте в диспетчере задач отключить, а потом задействовать. Посмотрите, отразится ли это на последующую возможность использования устройства.
|
|
|
|
|
Feb 14 2009, 11:08
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Седой @ Feb 14 2009, 05:20)  Пока проверил только IOCTL_USB_HUB_CYCLE_PORT - detach и последующий attach устройства - прекрасно работает из UserMode c драйвером хаба. Работает. Странно. А у меня что-то в своё время не получилось. А точно срабатывает? Что с портом после detach происходит? SOF-то пропадает? Девайс в суспенд переходит? Цитата(n_bogoyavlensky @ Feb 14 2009, 13:08)  После возникновения ошибки устройство не пропадает из диспетчера устройств. Совсем интересно. Видимо это какой-то другой случай... И ошибок никаких в диспетчере не показывается? А SOF продолжает идти? Его осциллографом отлично видно, да и тестер покажет частоту 1 кГц. Только тыкаясь щупами можно случайно девайс разбудить. Тогда эксперимент некорректным будет. Ещё рекомендую на ножку, которая суспенд показывает, светодиод повесить.
|
|
|
|
|
Feb 14 2009, 13:27
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(galjoen @ Feb 14 2009, 16:08)  Работает. Странно. А у меня что-то в своё время не получилось. А точно срабатывает? Что с портом после detach происходит? SOF-то пропадает? Девайс в суспенд переходит? Работает также как и IOCTL_INTERNAL_USB_CYCLE_PORT, вызванный из драйвера. Как написано в комментарии usbioctl.h: " This IOCTL will simulate a plug/unplug on the drivers upstream port. The device will be removed and re-added by PnP. " В драйвер менеджере вижу удаление и появление драйвера. В устройстве вижу полный цикл энумерации. Проверил на MT-Link, USB-COM (один свой на CP2103, второй покупной на Prolific), своих двух платах(одна на С8051F326, вторая PDIUSBD + AVR), на Olimex LPC-P2148 и MLPC2368 от StarterKit. Следует обратить внимание, что документирован этот запрос неверно, делать нужно как написано в usbioctl.h, а именно: 1. Вызывать для драйвера хаба, а не хоста. 2. Передавать в качестве входного параметра указатель на DWORD c номером порта, начинающегося с 1.
Сообщение отредактировал Седой - Feb 14 2009, 13:44
|
|
|
|
|
Feb 14 2009, 15:40
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Седой @ Feb 14 2009, 16:27)  В драйвер менеджере вижу удаление и появление драйвера. В устройстве вижу полный цикл энумерации. Очень интересно! А что если попробовать всё это дело после пропадания устройств, вызванных входом самого компьютера в слип? Для этого нужно чтобы во время засыпания компьютера на USB девайсы продолжало поступать +5 вольт, но SOF пропадал. Т.е. девайсы в суспенд попадали бы. Тогда после пробуждения компьютера USB девайсы пропадут (они останутся в суспенде). Можно-ли с помощью detach/attach к хабу заставить компьютер их найти?
|
|
|
|
|
Feb 14 2009, 18:30
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(galjoen @ Feb 14 2009, 20:40)  Очень интересно! А что если попробовать всё это дело после пропадания устройств, вызванных входом самого компьютера в слип? Для этого нужно чтобы во время засыпания компьютера на USB девайсы продолжало поступать +5 вольт, но SOF пропадал. Т.е. девайсы в суспенд попадали бы. Тогда после пробуждения компьютера USB девайсы пропадут (они останутся в суспенде). Можно-ли с помощью detach/attach к хабу заставить компьютер их найти? Я уже тут писал, что проблема в драйверах этих устройств или настройках драйверов или в самих устройствах, ведь переход в suspend не изменяет device state и после resume реэнумерация не нужна.
Сообщение отредактировал Седой - Feb 14 2009, 18:33
|
|
|
|
|
Feb 15 2009, 13:57
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(Седой @ Feb 14 2009, 13:24)  Тогда давайте продолжим. После ошибки, не выходя из вашей программы, попробуйте в диспетчере задач отключить, а потом задействовать. Посмотрите, отразится ли это на последующую возможность использования устройства. Попробуем. Цитата(galjoen @ Feb 14 2009, 14:08)  Работает. Странно. А у меня что-то в своё время не получилось. А точно срабатывает? Что с портом после detach происходит? SOF-то пропадает? Девайс в суспенд переходит?
Совсем интересно. Видимо это какой-то другой случай... И ошибок никаких в диспетчере не показывается? А SOF продолжает идти? Его осциллографом отлично видно, да и тестер покажет частоту 1 кГц. Только тыкаясь щупами можно случайно девайс разбудить. Тогда эксперимент некорректным будет. Ещё рекомендую на ножку, которая суспенд показывает, светодиод повесить. Ошибок не показывается. Попробуем в понедельник!
--------------------
Благодарю заранее!
|
|
|
|
|
Feb 16 2009, 19:10
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(Седой @ Feb 14 2009, 13:24)  Тогда давайте продолжим. После ошибки, не выходя из вашей программы, попробуйте в диспетчере задач отключить, а потом задействовать. Посмотрите, отразится ли это на последующую возможность использования устройства. Так, а что конкретно отключить, а потом задействовать? Последовательный порт или USB Serial Convertor? После выбора из списка "Отключить" и того и другого винда предлагает перезагрузиться... Может, я не там отключаю? Цитата(galjoen @ Feb 14 2009, 14:08)  Совсем интересно. Видимо это какой-то другой случай... И ошибок никаких в диспетчере не показывается? А SOF продолжает идти? Его осциллографом отлично видно, да и тестер покажет частоту 1 кГц. Только тыкаясь щупами можно случайно девайс разбудить. Тогда эксперимент некорректным будет. Ещё рекомендую на ножку, которая суспенд показывает, светодиод повесить. SOFа нету, пропадает он после сбоя, хорошо это вижу  USBDP - "1", USBDN - "0", PWREN# - "1". Т. е., конвертор спит, и хост ему ничего не шлёт... Докладываю о следующих экспериментах! Ниже перечисленные эксперименты производил без прожектора и его кабеля. К сожалению, прожектор забрали не неопределённое время. А сбои оставили  1. Запитал вторую половину конвертора (смотри структурную схему выше) от внешнего источника питания (трансформатор + линейный стабилизатор). В месте подключения провода от источника к плате установил электролит 100.0 и керамику 0.1. Сбоить не перестало. Тыркаем вилку источника питания - иногда сбоит. Т. е., для возникновения сбоя совсем не обязательно наличие огромного пускового тока 30 А AC-DC моего прожектора... 2. Попробовал включать источник питания через автоматический выключатель - ситуация не изменилась. 3. В настройках микросхемы (EEPROM) установил вместо "USB 2.0" "USB 1.1". Скорость обмена упала раз в пять, сбои не прекратились.
--------------------
Благодарю заранее!
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|