Jump to content

    

FT245R работает со сбоями

Сейчас просмотрел документацию на драйвера FTDI.

Можно же работать не через COM порт, а через D2XX интерфейс и попробовать воспользоваться функцией FT_ResetPort (FT_ResetDevice,FT_CyclePort) для выхода из ошибочного состояния.

 

Можно попробовать, но я пока рассчитывал только на работу с VCP :)

 

Что значит откуда?

 

Из какого источника? В хелпе я что-то не нашёл кодов ошибок :(

Share this post


Link to post
Share on other sites
Из какого источника? В хелпе я что-то не нашёл кодов ошибок :(

 

Из документации производителя OS http://msdn.microsoft.com/en-us/library/ms681382(VS.85).aspx

 

Можно попробовать, но я пока рассчитывал только на работу с VCP :)

 

Если делаете USB-DMX под серию и выбрали AVR - посмотрите в сторону AT90USB162, получится и надежней и дешевле.

Мы сделали мультипротокольный (DMX тоже поддерживает) USB-RS485 на C8051F326, драйвер свой, проблем с наводками нет.

Лежит у меня на столе, заканчиваю документацию на ПО.

Share this post


Link to post
Share on other sites
Если делаете USB-DMX под серию и выбрали AVR - посмотрите в сторону AT90USB162, получится и надежней и дешевле.

Мы сделали мультипротокольный (DMX тоже поддерживает) USB-RS485 на C8051F326, драйвер свой, проблем с наводками нет.

Лежит у меня на столе, заканчиваю документацию на ПО.

 

Хм...

Как я понял, этот путь существенно более сложный и длительный?

Т. е., драйвер надо писать, знать как с USB работать со стороны МК и ПК...

Это получается наподобие как у Агурова?

Share this post


Link to post
Share on other sites
Хм...

Как я понял, этот путь существенно более сложный и длительный?

Это вам кажется - затраченное время на стартапе с лихвой окупается в дальнейшем.

 

Т. е., драйвер надо писать, знать как с USB работать со стороны МК и ПК...

Драйвер можно не писать, воспользоваться готовым, если устраивают его возможности.

А как без знаний!!!????

 

Это получается наподобие как у Агурова?

По поводу Агурова - ответил в соседней ветке.

Вы же изучаете работу конкретного чипа по его документации (data sheet) от производителя, а не по книжкам.

Edited by Седой

Share this post


Link to post
Share on other sites

Попробуйте использовать драйвер D2XX. Гораздо прощще, там вообще думать не надо. Работаю с ним, проблемм с зависаниями и потерей данных нет вообще. Щас вот 5 метров кабель юзал. Правда у меня все заземлено.

Если он засыпает при помехе, возможно есть сбой в логике управления микрухой. У вас опторазвязка на HCPL-2630?

Share this post


Link to post
Share on other sites

Эти драйвера при помехах виснут так же, это у Вас помех не было серьезных.

Share this post


Link to post
Share on other sites

Решил набросать блок-схему соединений...

Т. е., имеем три блока: персональный компьютер (ПК), USB-DMX конвертор (разделён на две оптически развязанные части) и прожектор.

 

ПК шлёт с помощью VCP пакеты 62 байта в конвертор. Конвертор принимает пакеты и тут же их отсылает обратно.

По прерыванию от таймера реализовано формирование DMX-пакета для прожектора.

Формируются все 512 каналов.

 

Следует отметить.

Экран USB кабеля соединён с общей цепью конвертора.

Сбои в основном происходят при подключении и отключении сетевой вилки прожектора.

 

Это вам кажется - затраченное время на стартапе с лихвой окупается в дальнейшем.

 

Каковы преимущества данного варианта?

 

Драйвер можно не писать, воспользоваться готовым, если устраивают его возможности.

А как без знаний!!!????

 

Из состава ОС или где-то скачать для данного типа микроконтроллеров?

 

Попробуйте использовать драйвер D2XX. Гораздо прощще, там вообще думать не надо. Работаю с ним, проблемм с зависаниями и потерей данных нет вообще. Щас вот 5 метров кабель юзал. Правда у меня все заземлено.

Если он засыпает при помехе, возможно есть сбой в логике управления микрухой. У вас опторазвязка на HCPL-2630?

 

Развязка на ней :)

Т. е., развязка конвертора и объекта управления (смотри схему).

Ну сбоя в логике нет, я думаю...

post-24061-1234467535_thumb.jpg

Edited by n_bogoyavlensky

Share this post


Link to post
Share on other sites
Каковы преимущества данного варианта?

Меньше возможность уткнуться в чужую ошибку.

 

Из состава ОС или где-то скачать для данного типа микроконтроллеров?

 

В вашем случае я бы использовал winusb от Microsoft.

Share this post


Link to post
Share on other sites

Питание VCC1 - это на контроллер и FT245R? Просто немного не понятно. Можно попробовать проверить питание на осцилографе - VCC1 относительно GND1 при передёргивании питания прожектора. Мож там питание на время пропадает, или наоборот импульс питания выходит за пределы входного для TMA0505 (у него входное 5В +/-10%)? Питание приходит по 485 кабелю? Какая длина кабеля? Вообще попробуйте запитать отдельно схемку на УСБ с контроллером. На будущее - если питание идёт по линии 485 лучше применять DC/DC с более широким входным напряжением.

Share this post


Link to post
Share on other sites
А если это у меня не предусмотрено? ;)

В суспенд ФТДИ переходит если пропускается 3 маркера SOF от хоста. Другими словами - нет никаких вестей от хоста в течении 3х милисекунд. Никаких специальных команд перехода в суспенд не существует. В реальности это означает, что хост просто решил, что ваш девайс выдернут из него.

Как я понял, сбои возникают только при подсоединённом кабеле DMX к устройству! Несмотря на развязку!

Т. е., помеха идёт по кабелю в конвертор и как-то проходит через развязку или через DC-DC конвертор, попадая на USB.

Именно так. Сингфазная помеха проходит через все ваши преграды и воспринимается хостом как сигнал отключения устройства. Поэтому и всяческие заземления экрана помогают (а могут и навредить).

Я уже отвечал абсолютно на такой-же вопрос на этом-же форуме в этом-же разделе. Лень писать заново (и смотреть как называется состояние в USB, вызываемое сингфазной помехой). Поищите. Там WESTxxx (xxx - цифры) вопрос задавал.

Но хаять шину USB за это я бы не стал. Тут вопрос скорее к ФТДИ. Вот мои самодельные девайсы в таких условиях самостоятельно восстанавливают связь с хостом.

Share this post


Link to post
Share on other sites
В суспенд ФТДИ переходит если пропускается 3 маркера SOF от хоста. Другими словами - нет никаких вестей от хоста в течении 3х милисекунд. Никаких специальных команд перехода в суспенд не существует. В реальности это означает, что хост просто решил, что ваш девайс выдернут из него.

Это вы где прочитали? Или опытным путем обнаружили?

Share this post


Link to post
Share on other sites
Это вы где прочитали? Или опытным путем обнаружили?

Про это написано в стандарте USB. Кажется 7я глава - usb.org посмотрите. У меня и на русском есть, только перевод не очень. Я уже здесь выкладывал.

 

Ещё хочу заметить, что вывести девайс из суспенда со стороны компьютера с помощью всяческих програмных уловок, как здесь предлагалось, невозможно. Хотя м.б. и возможно, но это нужно хостом управлять, а кто вас туда пустит?

Share this post


Link to post
Share on other sites
Ещё хочу заметить, что вывести девайс из суспенда со стороны компьютера с помощью всяческих програмных уловок, как здесь предлагалось, невозможно. Хотя м.б. и возможно, но это нужно хостом управлять, а кто вас туда пустит?

 

Вот кстати из реального suspend вывести как раз можно, как и ввести. А то что описали вы - это хаб обнаруживает ошибку и просто отключает порт, а не производит selective suspend. Я как раз и указал псевдокоманду запроса перевода в suspend порта хаба - SetPortFeature(PORT_SUSPEND).

 

К хосту, кстати, доступ из UserMode тоже есть - пример из DDK usbview.

Edited by Седой

Share this post


Link to post
Share on other sites
Питание 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 задействованы только информационные линии.

Share this post


Link to post
Share on other sites
Вот кстати из реального suspend вывести как раз можно, как и ввести. А то что описали вы - это хаб обнаруживает ошибку и просто отключает порт, а не производит selective suspend. Я как раз и указал псевдокоманду запроса перевода в suspend порта хаба - SetPortFeature(PORT_SUSPEND).

Согласен. Ошибся в терминах. Это для девайса суспенд получается. А для хоста там не ошибка получается, а просто хост думает, что девайс из порта вытащили. На то, что линии перекошены из-за резистора 1,5 кОм он внимания не обращает - SOF слать перестаёт. И никаких попыток связь восстановить не предпринимает. Я имел ввиду, что програмно заставить его девайс поискать не удастся.

Это примерно тот-же глюк, как если компьютер в слип кнопкой ввести, а потом разбудить. В этом случае все USB девайсы кроме мыши и клавы (для них сделали исключение) пропадут. И поможет только их перетыкание.

К хосту, кстати, доступ из UserMode тоже есть - пример из DDK usbview.

Так там вроде только читать можно. Хотя спорить не буду - давным-давно с этим разбирался.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this