|
FT245R работает со сбоями |
|
|
|
Feb 6 2009, 18:43
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Здравствуйте! Наконец-то дело дошло и у меня до практики и сразу столкнулся с трудностями  Собрал устройство с FT245 включенной по самой простой схеме с питанием от шины. Использую VCP (скачал с сайта CDM 2.04.14.zip). Обмен данными с портом программирую на API (Delphi 7) под WinXP. На кабеле написано следующее: "28 AWG/IP 28AWG/2C HIGH SPEED USB REVISION 2.0 MD". 4 жилы в фольге + провод экрана. Длина 1.8 м. "Бусинки" ферритовой на цепь +5 В не нашлось  Сбои следующего рода. Работает, работает, потом начинаются сбои при записи в порт со стороны ПК... возникает исключение. Далее с портом работать не получается до тех пор, пока не передёрнешь шнур USB... Как я понял, подвисает FT245R. Сбои возникают спонтанно... Читал конференцию. Сделал, как советовали: 1. Со стороны устройства экран кабеля повесил на общую цепь через RC-цепочку 1 МОм, 0.1 мкФ. 2. На линии данных USB - конденсаторы 33 пФ на общую цепь (47 пФ не нашлось). Ситуация не изменилась... Почему возникают сбои? Как их можно устранить? Попутно несколько вопросов. 1. FT245R гарантирует безошибочную доставку данных? Т. е., в пакетах абсолютно точно не будет испорченных, пропущенных и лишних байтов? Читал, что режим BULK USB гарантирует безошибочную доставку данных, а ISOHRONOUS - не гарантирует. Только вот в каком режиме работает данная микросхема? 2. Как при подсоединении к ПК устройства с FT245 запустить своё приложение? Спасибо заранее!
--------------------
Благодарю заранее!
|
|
|
|
|
 |
Ответов
|
Feb 8 2009, 08:30
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата Я очень давно использовал FT245. Действительно, в условиях помех связь отъезжает с примерно указанными выше симптомами. Программа при этом была на MS VC. Из рекомендаций - посадите оплетку кабеля на землю устройства толстым проводом. Компьютер не заземлён. Это не ухудшит ситуацию? Сейчас, как я писал, оплётка у меня через RC-цепь к земле устройства подключена. Цитата Будет существенно лучше. В моем случае, т.к. помех было очень много и мощных окончательно помог только watchdog, от которого срабатывал полевик, отключающий подтяжку D+ к 3.3В. Устройство отваливалось, после чего его можно было переоткрыть и восстановить работоспособность не выдергивая кабель руками. А почему не RESET использовать? Ведь будет тоже самое или нет? Цитата(Седой @ Feb 8 2009, 00:16)  Давайте все-таки код посмотрим, а то может быть глюк и в драйвере. USBThread.pas - модуль потока работы с FT245. COMPort.pas - модуль класса COM-порта.
Прикрепленные файлы
Soft.rar ( 3.08 килобайт )
Кол-во скачиваний: 52
--------------------
Благодарю заранее!
|
|
|
|
|
Feb 8 2009, 10:40
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(n_bogoyavlensky @ Feb 8 2009, 13:30)  USBThread.pas - модуль потока работы с FT245. COMPort.pas - модуль класса COM-порта. На первый взгляд все нормально. Давайте попробуем отловить ошибку, для этого переделайте немного вызов генераторов исключений Вместо XXX_ComPort_Error.Create("Сообщение об ошибке") Вызывать XXX_ComPort_Error.CreateFmt("Сообщение об ошибке %x",[GetLastError]) И сообщите значение GetLastError.
|
|
|
|
|
Feb 9 2009, 11:15
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(galjoen @ Feb 8 2009, 14:20)  Попробуйте проверить, а не переходит-ли FT в суспенд? Там есть специальная нога, которая сообщает об этом. На ней уровень появляется, какой не помню. Если так, то програмными способами вы ничего не добьётесь. Дело в железе+кабель. Сингфазная помеха прёт. Проверил. Состояние выводов следующее. RXF#, TXE#, RD# - 1. WR - 0. PWREN# - 1, что говорит о том, что мы спим  Цитата(Седой @ Feb 9 2009, 11:43)  Забыл вам сказать, что функцию GetLastError нужно вызывать в контексте того потока, значение ошибки которого вы хотите получить. Уже прочитал  Вызывается из модуля COMPort. Из потока USBThread - там все операции с портом. Ферриты купить не смог. Купил только конденсаторы (потом перепаяю). У меня какая-то странная ситуация сейчас... несмотря на обработку исключений приложение виснет при ошибке до передёргивания устройства... Хотя если устройство выдернуть, то ошибка отрабатывается нормально (GetLastError возвращает 1F)... а при ошибке дело до GetLastError не доходит. Такое ощущение, что виснет где-то в WfiteFile...
--------------------
Благодарю заранее!
|
|
|
|
|
Feb 10 2009, 06:08
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(n_bogoyavlensky @ Feb 9 2009, 16:15)  Проверил. GetLastError не доходит. Такое ощущение, что виснет где-то в WfiteFile... Скорее всего не виснет, а ждет завершения передачи, т.е. Port.WriteData(TX_Buf) не возвращается? Да и установите timeouts для записи.
Сообщение отредактировал Седой - Feb 10 2009, 06:24
|
|
|
|
|
Feb 10 2009, 06:56
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(Седой @ Feb 10 2009, 09:08)  Скорее всего не виснет, а ждет завершения передачи, т.е. Port.WriteData(TX_Buf) не возвращается?
Да и установите timeouts для записи. Я тоже об этом подумал. Но потом локализовал место "зависания" с помощью записи в лог-файл (через каждую интересующую строчку кода). Понял, что "зависание" происходит в момент попытки закрытия порта (CloseHandle) после возникновения ошибки, появившейся при записи WriteFile. Приложение крепко "подвисает". Но если отсоединить USB-устройство, то оживает! Цитата(Alex11 @ Feb 8 2009, 00:26)  Я очень давно использовал FT245. Действительно, в условиях помех связь отъезжает с примерно указанными выше симптомами. Программа при этом была на MS VC. Из рекомендаций - посадите оплетку кабеля на землю устройства толстым проводом. Будет существенно лучше. В моем случае, т.к. помех было очень много и мощных окончательно помог только watchdog, от которого срабатывал полевик, отключающий подтяжку D+ к 3.3В. Устройство отваливалось, после чего его можно было переоткрыть и восстановить работоспособность не выдергивая кабель руками. Вчера повесил экран кабеля напрямую на общую цепь устройства. За весь вечер - одна ошибка и то при коммутации/декоммутации приличной нагрузки! Налицо - улучшение!  Сегодня продолжим тестирование. После WriteFile при ошибке GetLastError возвращает 1F.
Сообщение отредактировал n_bogoyavlensky - Feb 10 2009, 06:58
--------------------
Благодарю заранее!
|
|
|
|
|
Feb 10 2009, 10:23
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(n_bogoyavlensky @ Feb 10 2009, 11:56)  После WriteFile при ошибке GetLastError возвращает 1F. Эта ошибка ERROR_GEN_FAILURE - A device attached to the system is not functioning. Вот теперь понятно, что чип коряво отрабатывает такую ситуацию. Но передергивать устройство тоже не дело. Попробуйте после такой ошибки вызвать CancelIO или CancelIOEx, а потом уже CloseHandle - проверим корявость драйвера. Цитата(n_bogoyavlensky @ Feb 10 2009, 14:34)  Мы знаем, что FT при возникновении сбоя "засыпает". Он должен также вполне законно "заснуть" при получение команды Suspend от хоста.
|
|
|
|
|
Feb 10 2009, 12:05
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(Седой @ Feb 10 2009, 13:23)  Эта ошибка ERROR_GEN_FAILURE - A device attached to the system is not functioning.
Вот теперь понятно, что чип коряво отрабатывает такую ситуацию. А чип не при делах, ведь в usb шиной рулит хост - это в хосте неадекватно реализована отработка сбоев. Цитата Но передергивать устройство тоже не дело. А других вариантов продолжить работу после сбоя просто нет. Цитата Попробуйте после такой ошибки вызвать CancelIO или CancelIOEx, а потом уже CloseHandle - проверим корявость драйвера. В HID устройствах имеется один в один такая же проблема. Cancel IO порт не развешивает. Вообще я просто угораю от работы усб, даже в настольных условиях. Переходник на ft232bm идет обмен. На противоположном конце стола примерно в метре стоит паяльная станция 40-50Вт, включена в другую розетку. Двукратное включение-выключение станции штатным выключателем гарантированно завешивает усб. Причем зависшее приложение (modtab.exe) не убивается даже таск-менеджером пока не передернешь усб. Я не заю можно ли спроектировать более глючное устройство. Как это будет жить на объекте даже страшно представить.
Сообщение отредактировал _3m - Feb 10 2009, 12:06
|
|
|
|
|
Feb 10 2009, 12:52
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(_3m @ Feb 10 2009, 17:05)  А чип не при делах, ведь в usb шиной рулит хост - это в хосте неадекватно реализована отработка сбоев.
А других вариантов продолжить работу после сбоя просто нет. Хост кстати ответил правильно - ошибкой транзакции и драйвер FTDI должен адекватно отреагировать на эту ситуацию, мог бы сделать ResetPort или по крайней мере установить флаг, чтобы при вызове CloseHandle не входить в ступор. PS.Нужно посмотреть по спецификации USB правила работы хоста и устройства в таких ситуациях.
|
|
|
|
Сообщений в этой теме
n_bogoyavlensky FT245R работает со сбоями Feb 6 2009, 18:43 stoker Цитата(n_bogoyavlensky @ Feb 6 2009, 21:4... Feb 6 2009, 19:12 n_bogoyavlensky Цитата(stoker @ Feb 6 2009, 22:12) Кабель... Feb 6 2009, 19:42  stoker Цитата(n_bogoyavlensky @ Feb 6 2009, 22:4... Feb 6 2009, 20:17   n_bogoyavlensky ЦитатаВ таком случае советую проверить в каком сос... Feb 6 2009, 20:27 Седой Цитата(n_bogoyavlensky @ Feb 6 2009, 23:4... Feb 7 2009, 16:17 n_bogoyavlensky Цитата(Седой @ Feb 7 2009, 19:17) Что за ... Feb 7 2009, 17:04  Седой Цитата(n_bogoyavlensky @ Feb 7 2009, 22:0... Feb 7 2009, 18:50   bill_vs Цитата(Седой @ Feb 7 2009, 21:50) Симптом... Feb 7 2009, 20:03    Седой Цитата(bill_vs @ Feb 8 2009, 01:03) Не мо... Feb 7 2009, 20:55   n_bogoyavlensky Цитата(Седой @ Feb 7 2009, 21:50) Симптом... Feb 7 2009, 21:16    Седой Цитата(n_bogoyavlensky @ Feb 8 2009, 02:0... Feb 7 2009, 21:16        n_bogoyavlensky ЦитатаЭта ошибка ERROR_GEN_FAILURE - A device atta... Feb 10 2009, 13:59         Седой Цитата(n_bogoyavlensky @ Feb 10 2009, 18... Feb 10 2009, 14:08         galjoen Цитата(n_bogoyavlensky @ Feb 10 2009, 16... Feb 13 2009, 15:09          stoker Цитата(galjoen @ Feb 13 2009, 18:09) В су... Feb 13 2009, 15:58           galjoen Цитата(stoker @ Feb 13 2009, 18:58) Это в... Feb 13 2009, 16:17            Седой Цитата(galjoen @ Feb 13 2009, 21:17) Ещё ... Feb 13 2009, 17:39             galjoen Цитата(Седой @ Feb 13 2009, 20:39) Вот кс... Feb 13 2009, 18:24              Седой Цитата(galjoen @ Feb 13 2009, 23:24) На т... Feb 13 2009, 19:04               galjoen Цитата(Седой @ Feb 13 2009, 21:55) А Rese... Feb 13 2009, 19:27                Седой Цитата(galjoen @ Feb 14 2009, 00:27) Нет.... Feb 13 2009, 19:36               galjoen Цитата(Седой @ Feb 13 2009, 22:04) Открыт... Feb 13 2009, 19:56                Седой Цитата(galjoen @ Feb 14 2009, 00:37) Да н... Feb 13 2009, 20:01                n_bogoyavlensky Цитата(galjoen @ Feb 13 2009, 22:56) Да н... Feb 14 2009, 10:08                 Седой Цитата(n_bogoyavlensky @ Feb 14 2009, 15... Feb 14 2009, 10:24                  n_bogoyavlensky Цитата(Седой @ Feb 14 2009, 13:24) Тогда ... Feb 15 2009, 13:57                  n_bogoyavlensky Цитата(Седой @ Feb 14 2009, 13:24) Тогда ... Feb 16 2009, 19:10                   galjoen Цитата(n_bogoyavlensky @ Feb 16 2009, 22... Feb 16 2009, 19:41                    n_bogoyavlensky Цитата(galjoen @ Feb 16 2009, 22:41) Судя... Feb 17 2009, 12:41                     Седой Цитата(n_bogoyavlensky @ Feb 17 2009, 17... Feb 17 2009, 14:59                      n_bogoyavlensky Цитата(Седой @ Feb 17 2009, 17:59) Попроб... Feb 18 2009, 18:51                       AndreyS Цитата(n_bogoyavlensky @ Feb 18 2009, 21... Feb 19 2009, 14:27                   Седой Цитата(n_bogoyavlensky @ Feb 17 2009, 00... Feb 17 2009, 09:08                    galjoen Цитата(Седой @ Feb 17 2009, 12:08) По ваш... Feb 17 2009, 14:37                     Седой Цитата(galjoen @ Feb 17 2009, 19:37) Мне ... Feb 17 2009, 15:14                      galjoen Цитата(Седой @ Feb 17 2009, 18:14) При че... Feb 17 2009, 18:15                       Седой Цитата(galjoen @ Feb 17 2009, 23:15) ...И... Feb 17 2009, 21:03                        galjoen Цитата(Седой @ Feb 18 2009, 00:03) Кроме ... Feb 17 2009, 21:42                         Седой Цитата(galjoen @ Feb 18 2009, 02:42) Где ... Feb 17 2009, 21:52                          galjoen Цитата(Седой @ Feb 18 2009, 00:52) USB 2.... Feb 17 2009, 22:51                     _3m Цитата(galjoen @ Feb 17 2009, 17:37) По м... Feb 17 2009, 17:12                      galjoen Цитата(_3m @ Feb 17 2009, 20:12) снял сни... Feb 17 2009, 19:39                       _3m Цитата(galjoen @ Feb 17 2009, 22:39) Инте... Feb 17 2009, 22:08                 galjoen Цитата(Седой @ Feb 14 2009, 05:20) Пока п... Feb 14 2009, 11:08                  Седой Цитата(galjoen @ Feb 14 2009, 16:08) Рабо... Feb 14 2009, 13:27                   galjoen Цитата(Седой @ Feb 14 2009, 16:27) В драй... Feb 14 2009, 15:40                    Седой Цитата(galjoen @ Feb 14 2009, 20:40) Очен... Feb 14 2009, 18:30          n_bogoyavlensky Цитата(galjoen @ Feb 13 2009, 18:09) Имен... Feb 13 2009, 18:38   n_bogoyavlensky Цитата(Седой @ Feb 8 2009, 13:40) На перв... Feb 8 2009, 15:14    Седой Цитата(n_bogoyavlensky @ Feb 8 2009, 20:1... Feb 9 2009, 08:43 vetal ЦитатаНалицо - улучшение!
Теперь расскажите на... Feb 10 2009, 07:36 n_bogoyavlensky ЦитатаТеперь расскажите нам как вы заземляетесь,
... Feb 10 2009, 08:18 n_bogoyavlensky Вот что придумал. А что, если сделать следующим об... Feb 10 2009, 09:34 Седой Сейчас просмотрел документацию на драйвера FTDI.
... Feb 10 2009, 17:08 n_bogoyavlensky Цитата(Седой @ Feb 10 2009, 20:08) Сейчас... Feb 10 2009, 20:03  Седой Цитата(n_bogoyavlensky @ Feb 11 2009, 01... Feb 11 2009, 13:25   n_bogoyavlensky ЦитатаЕсли делаете USB-DMX под серию и выбрали AVR... Feb 11 2009, 14:30    Седой Цитата(n_bogoyavlensky @ Feb 11 2009, 19... Feb 11 2009, 15:06 stoker Попробуйте использовать драйвер D2XX. Гораздо прощ... Feb 11 2009, 18:36 Alex11 Эти драйвера при помехах виснут так же, это у Вас ... Feb 11 2009, 21:15 n_bogoyavlensky Решил набросать блок-схему соединений...
Т. е., им... Feb 12 2009, 19:51 Седой Цитата(n_bogoyavlensky @ Feb 13 2009, 00... Feb 12 2009, 20:08  stoker Питание VCC1 - это на контроллер и FT245R? Просто ... Feb 13 2009, 10:12   n_bogoyavlensky Цитата(stoker @ Feb 13 2009, 13:12) Питан... Feb 13 2009, 18:11 Седой Пока проверил только IOCTL_USB_HUB_CYCLE_PORT - de... Feb 14 2009, 02:20 stoker У вас все устройство питается от УСБ? Сколько хава... Feb 17 2009, 15:06 stoker Народ, вы что то грузитесь. По-моему проблемму не ... Feb 17 2009, 23:24 AndreyS Цитата(stoker @ Feb 18 2009, 02:24) Народ... Feb 18 2009, 09:23  stoker Цитата(AndreyS @ Feb 18 2009, 12:23) Вы н... Feb 18 2009, 11:21   _3m Цитата(stoker @ Feb 18 2009, 14:21) Можно... Feb 18 2009, 13:52    galjoen Цитата(_3m @ Feb 18 2009, 16:52) ...
* ав... Feb 18 2009, 14:37     _3m Цитата(galjoen @ Feb 18 2009, 17:37) 1. П... Feb 18 2009, 15:25      galjoen Цитата(_3m @ Feb 18 2009, 18:25) Наблюдае... Feb 18 2009, 16:47     AndreyS Цитата(galjoen @ Feb 18 2009, 17:37) А ме... Feb 18 2009, 16:05     Седой Озвучу свое видение проблемы по итогам обсуждения... Feb 18 2009, 17:48      galjoen Цитата(Седой @ Feb 18 2009, 20:48) Драйве... Feb 18 2009, 19:32      _3m Цитата(Седой @ Feb 18 2009, 20:48) 1. Од... Feb 18 2009, 19:32       galjoen Цитата(_3m @ Feb 18 2009, 22:32) От драйв... Feb 18 2009, 20:31        _3m Цитата(galjoen @ Feb 18 2009, 23:31) А чт... Feb 18 2009, 21:14         galjoen Цитата(_3m @ Feb 19 2009, 00:14)
Получае... Feb 18 2009, 21:50       Седой Цитата(_3m @ Feb 19 2009, 00:32) От драйв... Feb 18 2009, 20:36        galjoen Цитата(Седой @ Feb 18 2009, 23:36) Драйве... Feb 18 2009, 20:47         Седой Цитата(galjoen @ Feb 19 2009, 01:47) М.б.... Feb 18 2009, 21:01    AndreyS Цитата(_3m @ Feb 18 2009, 16:52) Интерфей... Feb 18 2009, 14:58 TriD AndreyS +1
Скорее всего это именно разводка прово... Feb 18 2009, 12:47 stoker Сразу что мне не понравилось в разводке - толщина ... Feb 18 2009, 19:36 n_bogoyavlensky Цитата(stoker @ Feb 18 2009, 22:36) Сразу... Feb 18 2009, 21:02 stoker Цитата(n_bogoyavlensky @ Feb 19 2009, 00... Feb 18 2009, 21:09 n_bogoyavlensky Следующий доклад
1. Порт закрыт. Обмена нет. Тыр... Feb 19 2009, 15:20
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|