|
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 запустить своё приложение? Спасибо заранее!
--------------------
Благодарю заранее!
|
|
|
|
|
 |
Ответов
(30 - 44)
|
Feb 10 2009, 20:03
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(Седой @ Feb 10 2009, 20:08)  Сейчас просмотрел документацию на драйвера FTDI. Можно же работать не через COM порт, а через D2XX интерфейс и попробовать воспользоваться функцией FT_ResetPort (FT_ResetDevice,FT_CyclePort) для выхода из ошибочного состояния. Можно попробовать, но я пока рассчитывал только на работу с VCP  Цитата(Седой @ Feb 10 2009, 17:08)  Что значит откуда? Из какого источника? В хелпе я что-то не нашёл кодов ошибок
--------------------
Благодарю заранее!
|
|
|
|
|
Feb 11 2009, 13:25
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(n_bogoyavlensky @ Feb 11 2009, 01:03)  Из какого источника? В хелпе я что-то не нашёл кодов ошибок  Из документации производителя OS http://msdn.microsoft.com/en-us/library/ms681382(VS.85).aspxЦитата(n_bogoyavlensky @ Feb 11 2009, 01:03)  Можно попробовать, но я пока рассчитывал только на работу с VCP  Если делаете USB-DMX под серию и выбрали AVR - посмотрите в сторону AT90USB162, получится и надежней и дешевле. Мы сделали мультипротокольный (DMX тоже поддерживает) USB-RS485 на C8051F326, драйвер свой, проблем с наводками нет. Лежит у меня на столе, заканчиваю документацию на ПО.
|
|
|
|
|
Feb 11 2009, 14:30
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата Если делаете USB-DMX под серию и выбрали AVR - посмотрите в сторону AT90USB162, получится и надежней и дешевле. Мы сделали мультипротокольный (DMX тоже поддерживает) USB-RS485 на C8051F326, драйвер свой, проблем с наводками нет. Лежит у меня на столе, заканчиваю документацию на ПО. Хм... Как я понял, этот путь существенно более сложный и длительный? Т. е., драйвер надо писать, знать как с USB работать со стороны МК и ПК... Это получается наподобие как у Агурова?
--------------------
Благодарю заранее!
|
|
|
|
|
Feb 11 2009, 15:06
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(n_bogoyavlensky @ Feb 11 2009, 19:30)  Хм... Как я понял, этот путь существенно более сложный и длительный? Это вам кажется - затраченное время на стартапе с лихвой окупается в дальнейшем. Цитата(n_bogoyavlensky @ Feb 11 2009, 19:30)  Т. е., драйвер надо писать, знать как с USB работать со стороны МК и ПК... Драйвер можно не писать, воспользоваться готовым, если устраивают его возможности. А как без знаний!!!???? Цитата(n_bogoyavlensky @ Feb 11 2009, 19:30)  Это получается наподобие как у Агурова? По поводу Агурова - ответил в соседней ветке. Вы же изучаете работу конкретного чипа по его документации (data sheet) от производителя, а не по книжкам.
Сообщение отредактировал Седой - Feb 11 2009, 15:10
|
|
|
|
|
Feb 12 2009, 19:51
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Решил набросать блок-схему соединений... Т. е., имеем три блока: персональный компьютер (ПК), USB-DMX конвертор (разделён на две оптически развязанные части) и прожектор. ПК шлёт с помощью VCP пакеты 62 байта в конвертор. Конвертор принимает пакеты и тут же их отсылает обратно. По прерыванию от таймера реализовано формирование DMX-пакета для прожектора. Формируются все 512 каналов. Следует отметить. Экран USB кабеля соединён с общей цепью конвертора. Сбои в основном происходят при подключении и отключении сетевой вилки прожектора. Цитата Это вам кажется - затраченное время на стартапе с лихвой окупается в дальнейшем. Каковы преимущества данного варианта? Цитата Драйвер можно не писать, воспользоваться готовым, если устраивают его возможности. А как без знаний!!!???? Из состава ОС или где-то скачать для данного типа микроконтроллеров? Цитата(stoker @ Feb 11 2009, 21:36)  Попробуйте использовать драйвер D2XX. Гораздо прощще, там вообще думать не надо. Работаю с ним, проблемм с зависаниями и потерей данных нет вообще. Щас вот 5 метров кабель юзал. Правда у меня все заземлено. Если он засыпает при помехе, возможно есть сбой в логике управления микрухой. У вас опторазвязка на HCPL-2630? Развязка на ней  Т. е., развязка конвертора и объекта управления (смотри схему). Ну сбоя в логике нет, я думаю...
Сообщение отредактировал n_bogoyavlensky - Feb 12 2009, 19:46
Эскизы прикрепленных изображений
--------------------
Благодарю заранее!
|
|
|
|
|
Feb 12 2009, 20:08
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(n_bogoyavlensky @ Feb 13 2009, 00:51)  Каковы преимущества данного варианта? Меньше возможность уткнуться в чужую ошибку. Цитата(n_bogoyavlensky @ Feb 13 2009, 00:51)  Из состава ОС или где-то скачать для данного типа микроконтроллеров? В вашем случае я бы использовал winusb от Microsoft.
|
|
|
|
|
Feb 13 2009, 15:09
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(n_bogoyavlensky @ Feb 10 2009, 16:59)  А если это у меня не предусмотрено?  В суспенд ФТДИ переходит если пропускается 3 маркера SOF от хоста. Другими словами - нет никаких вестей от хоста в течении 3х милисекунд. Никаких специальных команд перехода в суспенд не существует. В реальности это означает, что хост просто решил, что ваш девайс выдернут из него. Цитата(n_bogoyavlensky @ Feb 10 2009, 16:59)  Как я понял, сбои возникают только при подсоединённом кабеле DMX к устройству! Несмотря на развязку! Т. е., помеха идёт по кабелю в конвертор и как-то проходит через развязку или через DC-DC конвертор, попадая на USB. Именно так. Сингфазная помеха проходит через все ваши преграды и воспринимается хостом как сигнал отключения устройства. Поэтому и всяческие заземления экрана помогают (а могут и навредить). Я уже отвечал абсолютно на такой-же вопрос на этом-же форуме в этом-же разделе. Лень писать заново (и смотреть как называется состояние в USB, вызываемое сингфазной помехой). Поищите. Там WESTxxx (xxx - цифры) вопрос задавал. Но хаять шину USB за это я бы не стал. Тут вопрос скорее к ФТДИ. Вот мои самодельные девайсы в таких условиях самостоятельно восстанавливают связь с хостом.
|
|
|
|
|
Feb 13 2009, 16:17
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(stoker @ Feb 13 2009, 18:58)  Это вы где прочитали? Или опытным путем обнаружили? Про это написано в стандарте USB. Кажется 7я глава - usb.org посмотрите. У меня и на русском есть, только перевод не очень. Я уже здесь выкладывал. Ещё хочу заметить, что вывести девайс из суспенда со стороны компьютера с помощью всяческих програмных уловок, как здесь предлагалось, невозможно. Хотя м.б. и возможно, но это нужно хостом управлять, а кто вас туда пустит?
|
|
|
|
|
Feb 13 2009, 17:39
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(galjoen @ Feb 13 2009, 21:17)  Ещё хочу заметить, что вывести девайс из суспенда со стороны компьютера с помощью всяческих програмных уловок, как здесь предлагалось, невозможно. Хотя м.б. и возможно, но это нужно хостом управлять, а кто вас туда пустит? Вот кстати из реального suspend вывести как раз можно, как и ввести. А то что описали вы - это хаб обнаруживает ошибку и просто отключает порт, а не производит selective suspend. Я как раз и указал псевдокоманду запроса перевода в suspend порта хаба - SetPortFeature(PORT_SUSPEND). К хосту, кстати, доступ из UserMode тоже есть - пример из DDK usbview.
Сообщение отредактировал Седой - Feb 13 2009, 17:52
|
|
|
|
|
Feb 13 2009, 18:11
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(stoker @ Feb 13 2009, 13:12)  Питание VCC1 - это на контроллер и FT245R? Просто немного не понятно. Старался сделать как можно понятнее  Да, VCC1, GND1 - цепи питания FT245, ATmega88, HCPL2630 (наполовину) и TMA0505S (входное напряжение). Экран USB-кабеля соединён с GND1. Цитата Можно попробовать проверить питание на осцилографе - VCC1 относительно GND1 при передёргивании питания прожектора. Мож там питание на время пропадает, или наоборот импульс питания выходит за пределы входного для TMA0505 (у него входное 5В +/-10%)? Проверим. Но что может быть с питанием при передёргивании сетевой вилки? Цитата Питание приходит по 485 кабелю? Питание чего? Левая часть конвертора питается от USB, правая тоже от USB, только через DC-DC TMA0505S - цепи питания VCC2, GND2. Цитата Какая длина кабеля? Вообще попробуйте запитать отдельно схемку на УСБ с контроллером. Т. е., запитать всю левую часть от отдельного источника питания, а не от USB, т. е. "self power" для FT? Цитата На будущее - если питание идёт по линии 485 лучше применять DC/DC с более широким входным напряжением. Спасибо за совет. Но в кабеле RS-485 задействованы только информационные линии.
--------------------
Благодарю заранее!
|
|
|
|
|
Feb 13 2009, 18:24
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Седой @ Feb 13 2009, 20:39)  Вот кстати из реального suspend вывести как раз можно, как и ввести. А то что описали вы - это хаб обнаруживает ошибку и просто отключает порт, а не производит selective suspend. Я как раз и указал псевдокоманду запроса перевода в suspend порта хаба - SetPortFeature(PORT_SUSPEND). Согласен. Ошибся в терминах. Это для девайса суспенд получается. А для хоста там не ошибка получается, а просто хост думает, что девайс из порта вытащили. На то, что линии перекошены из-за резистора 1,5 кОм он внимания не обращает - SOF слать перестаёт. И никаких попыток связь восстановить не предпринимает. Я имел ввиду, что програмно заставить его девайс поискать не удастся. Это примерно тот-же глюк, как если компьютер в слип кнопкой ввести, а потом разбудить. В этом случае все USB девайсы кроме мыши и клавы (для них сделали исключение) пропадут. И поможет только их перетыкание. Цитата(Седой @ Feb 13 2009, 20:39)  К хосту, кстати, доступ из UserMode тоже есть - пример из DDK usbview. Так там вроде только читать можно. Хотя спорить не буду - давным-давно с этим разбирался.
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|