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

 
 
> USB в AVR, Нужна помощь
A_MIKE
сообщение Mar 12 2013, 15:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 8-07-08
Пользователь №: 38 802



Хочу попросить помощи. Нужно разобраться с USB в XMega (в любой AVRке).
Ситуация такая, разработкой на AVR занимаюсь давно. Все устройства сливают данные в ПК. Всегда все решалось через UART > RS232. Потом использовался мост UART > USB. Но это уже не проходит.
Как к проблеме подступиться? Буду ОЧЕНЬ признателен за наставления, советы и любые материалы (особенно на русском языке).
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 24)
kovigor
сообщение Mar 12 2013, 15:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(A_MIKE @ Mar 12 2013, 18:14) *
Хочу попросить помощи. Нужно разобраться с USB в XMega (в любой AVRке).
Ситуация такая, разработкой на AVR занимаюсь давно. Все устройства сливают данные в ПК. Всегда все решалось через UART > RS232. Потом использовался мост UART > USB. Но это уже не проходит.
Как к проблеме подступиться? Буду ОЧЕНЬ признателен за наставления, советы и любые материалы (особенно на русском языке).

На русском - книжка ГукаЖ
http://rutracker.org/forum/viewtopic.php?t=2466185
и книги Jan Axelson (все, которые найдете). На английском - прежде всего спецификация. Ну и еще поищите в сети "USB in a nutshell". А дальше - поиск и анализ готовых примеров для вашего МК ...
Go to the top of the page
 
+Quote Post
bob1
сообщение Mar 12 2013, 17:50
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 17-09-06
Пользователь №: 20 471



В Atmel Studio 6.0 есть готовые примеры.

Сообщение отредактировал bob1 - Mar 12 2013, 17:51
Go to the top of the page
 
+Quote Post
A_MIKE
сообщение Mar 13 2013, 08:15
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 8-07-08
Пользователь №: 38 802



Спасибо большое. Но может кто подскажет какую нибудь "квинтэссенцию". sm.gif
Очень нужно быстро проект сделать. Может даже пока "как обезьяна" не вдаваясь глубоко в детали.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 13 2013, 08:33
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(A_MIKE @ Mar 13 2013, 12:15) *
Спасибо большое. Но может кто подскажет какую нибудь "квинтэссенцию". sm.gif
Очень нужно быстро проект сделать. Может даже пока "как обезьяна" не вдаваясь глубоко в детали.

Ничего не выйдет. Или выйдет, но так, что лучше бы вообще никак не выходило. USB - не UART. Очень быстро можно только купить готовый переходник USB<->COM.
Да. Выбирая USB для связи с машиной, вы должны помнить о надежности такого решения. Для реализации надежного обмена, способного работать без вмешательства человека хоть сколько-нибудь продолжительное время, USB не годится. И для необслуживаемых (или труднодоступных) систем/объектов USB тоже не подойдет...
Go to the top of the page
 
+Quote Post
A_MIKE
сообщение Mar 13 2013, 08:53
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 8-07-08
Пользователь №: 38 802



Цитата(kovigor @ Mar 13 2013, 12:33) *
Ничего не выйдет. Или выйдет, но так, что лучше бы вообще никак не выходило. USB - не UART. Очень быстро можно только купить готовый переходник USB<->COM.
Да. Выбирая USB для связи с машиной, вы должны помнить о надежности такого решения. Для реализации надежного обмена, способного работать без вмешательства человека хоть сколько-нибудь продолжительное время, USB не годится. И для необслуживаемых (или труднодоступных) систем/объектов USB тоже не подойдет...


Это я понимаю. Но нужно только USB. Сейчас все работает через мост (переходник USB<->COM, микросхема встроенная в само устройство). Раньше хватало. А вот сейчас срочно понадобился USB в нормальном виде sad.gif
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 13 2013, 09:07
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(A_MIKE @ Mar 13 2013, 12:53) *
Но нужно только USB

Пусть работает, как есть. Быстро вы не сделаете, забудьте об этом. А заодно разъясните вашему работодателю, что USB и надежность - понятия несовместимые. А если он будет упорствовать, используйте ИС преобразователя вроде FT232BM, пусть он кушает свое USB с маслом и вкушает последствия, так сказать ...
Go to the top of the page
 
+Quote Post
A_MIKE
сообщение Mar 13 2013, 09:59
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 8-07-08
Пользователь №: 38 802



Цитата(kovigor @ Mar 13 2013, 13:07) *
Пусть работает, как есть. Быстро вы не сделаете, забудьте об этом. А заодно разъясните вашему работодателю, что USB и надежность - понятия несовместимые. А если он будет упорствовать, используйте ИС преобразователя вроде FT232BM, пусть он кушает свое USB с маслом и вкушает последствия, так сказать ...


Да сейчас так и происходит. Только микросхема другая sm.gif. Но все дело в том что нужно на нормальном USB сделать. Про надежность речи пока не идет...
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 13 2013, 10:12
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(A_MIKE @ Mar 13 2013, 12:59) *
Да сейчас так и происходит. Только микросхема другая sm.gif. Но все дело в том что нужно на нормальном USB сделать. Про надежность речи пока не идет...

Тогда придется разбираться, а это займет время ...
Go to the top of the page
 
+Quote Post
A_MIKE
сообщение Mar 13 2013, 14:50
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 8-07-08
Пользователь №: 38 802



Цитата(kovigor @ Mar 13 2013, 14:12) *
Тогда придется разбираться, а это займет время ...


В том то и вопрос... Какой нибудь быстрый ликбез на 10 страницах... (может чудеса иногда случаются?)
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 13 2013, 15:04
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(A_MIKE @ Mar 13 2013, 18:50) *
В том то и вопрос... Какой нибудь быстрый ликбез на 10 страницах... (может чудеса иногда случаются?)

Забудьте. Спешка нужна при охоте на блох. Если нужен результат, придется потрудиться основательно, тема сложная. Можно, конечно, надергать отовcюду "либ", "сорцов" (терпеть не могу эти слова), кусков кода, слепить все это в кучу без понимания сути и выдать за работающий проект. Но тогда готовьтесь к тому, что в один прекрасный момент "это" откажется работать, и вы в этой ситуации будете совершенно беспомощны ...
Go to the top of the page
 
+Quote Post
A_MIKE
сообщение Mar 13 2013, 15:42
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 8-07-08
Пользователь №: 38 802



Цитата(kovigor @ Mar 13 2013, 19:04) *
Забудьте. Спешка нужна при охоте на блох. Если нужен результат, придется потрудиться основательно, тема сложная. Можно, конечно, надергать отовлюду "либ", "сорцов" (ненавижу эти слова), кусков кода, слепить все это в кучу без понимания сути и выдать за работающий проект. Но тогда готовьтесь к тому, что в один прекрасный момент "это" откажется работать, и вы в этой ситуации будете совершенно беспомощны ...


Уговорили... Придется напрячься. Спасибо за участие и потраченное время.
Go to the top of the page
 
+Quote Post
Diusha
сообщение Jul 17 2013, 17:19
Сообщение #13


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



О-па! Наткнулся на уже заданный вопрос, который сам хотел задать. Причем ситуация у A_MIKE почти слово-в-слово моя! sm.gif
Похоже, единственное отличие, что я еще FT232 не успел использовать.

Хочется прояснить некоторые вещи.

Цитата(kovigor @ Mar 13 2013, 11:33) *
Выбирая USB для связи с машиной, вы должны помнить о надежности такого решения. Для реализации надежного обмена, способного работать без вмешательства человека хоть сколько-нибудь продолжительное время, USB не годится. И для необслуживаемых (или труднодоступных) систем/объектов USB тоже не подойдет...

Цитата(kovigor @ Mar 13 2013, 12:07) *
USB и надежность - понятия несовместимые. А если он будет упорствовать, используйте ИС преобразователя вроде FT232BM, пусть он кушает свое USB с маслом и вкушает последствия, так сказать ...

Почти каждое слово требует пояснений.
1. USB ненадежен? В чем это выражается?
2. Что значит "вмешательство человека" и что значит "хоть сколько-нибудь продолжительное время"?
3. Что значит "необслуживаемых"? (возможно, этот вопрос можно объединить со 2-м)
4. Какие последствия использования именно FT232 (по сравнению со, скажем, встроенным в AVR)?
Go to the top of the page
 
+Quote Post
maksimp
сообщение Jul 17 2013, 18:00
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(Diusha @ Jul 17 2013, 21:19) *
1. USB ненадежен? В чем это выражается?
2. Что значит "вмешательство человека" и что значит "хоть сколько-нибудь продолжительное время"?

Через некоторое время работы, особенно при коммутации электрических цепей подключённых к устройству (вилку в розетку воткнули, магнитный пускатель щёлкнул), устройство может исчезать из списка устройств в компьютере.
Чтобы возобновить работу, нужно выдернуть USB разъём и вставить обратно.
Цитата(Diusha @ Jul 17 2013, 21:19) *
3. Что значит "необслуживаемых"? (возможно, этот вопрос можно объединить со 2-м)

Расположенных там, куда люди не ходят - обычно не ходят, не должны ходить, для прохода требуется сложная процедура (переодевание во всё белое например), далеко идти, и так далее.
Go to the top of the page
 
+Quote Post
Raven
сообщение Jul 17 2013, 18:40
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Можно попробовать еще решение на родственных FT245 / FT2232. Оба имеют 8-битный FIFO-интерфейс, передача по USB осуществляется BULK транзакциями, и не по 1 байту уж точно sm.gif. А FT2232 еще лучше штуку для вашего случая имеет: среди его MPSSE опций есть MCU Host Bus Emulation Mode, т.е. он может отрабатывать транзакции на 8-битной микропроцессорной шине. В общем, я бы присмотрелся - для переходного варианта и быстрого освоения может оказаться самое то.
Go to the top of the page
 
+Quote Post
ЛеонидК
сообщение Jul 17 2013, 21:05
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 27-01-09
Пользователь №: 44 027



А это не может помочь:
_http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR309.htm
_http://microsin.ru/content/view/605/
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jul 17 2013, 22:09
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Diusha @ Jul 17 2013, 20:19) *
1. USB ненадежен? В чем это выражается?
2. Что значит "вмешательство человека" и что значит "хоть сколько-нибудь продолжительное время"?
3. Что значит "необслуживаемых"? (возможно, этот вопрос можно объединить со 2-м)
4. Какие последствия использования именно FT232 (по сравнению со, скажем, встроенным в AVR)?

Это значит, что в любой (как правило, самый неподходящий) момент обмен по USB может сбойнуть или ваше устройство может исчезнуть из системы. При этом почти все равно, на чем именно оно сделано - на FT232 или на AVR. В офисных условиях это не так важно - вынуть разъем и вставить обратно большого труда не составит. Но если устройство задействовано для управления чем-то серьезным, или размещено в труднодоступном или необслуживаемом месте, то такой сбой сулит массу неприятностей. В то же время хорошая мультипортовка с COM - портами может годами работать вообще без всякого вмешательства человека.
А еще USB для реализации COM порта потрясающе сложен и невероятно избыточен. А чем сложнее система, тем менее она надежна. Если бы эта сложность была оправдана, но в данном случае никаких разумных оправданий я не нахожу. Нет у ноутбука COM - портов ? Ну так не используйте ноутбук для серьезных задач. А для подключения какой-нибудь ерунды в офисе или дома сгодится и переходник COM-USB ...
Go to the top of the page
 
+Quote Post
rudy_b
сообщение Jul 17 2013, 22:34
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



Про ненадежность USB сказано совершенно справедливо. Но есть варианты.
1. Внешнее устройство, не получая некоторое время данные, отключает и снова включает USB. Это эквивалент вынимания/вставки USB устройства.
2. Программа в PC закрывает и снова открывает соединение в аналогичной ситуации.

Даже при этом возможны гадости, поэтому нужно следить за паузами и делать так, чтобы программа в PC обнаруживала отсутствие связи раньше, чем устройство и закрывала канал. Только потом устройство должно отключиться и включится вновь до того, как программа попробует снова открыть канал.

Все равно заморочно, но хоть что-то.
Go to the top of the page
 
+Quote Post
Diusha
сообщение Jul 18 2013, 02:10
Сообщение #19


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Спасибо! В этом смысле ненадежность тогда не так страшна: девайс будет использоваться для воткнуть–переписать–отключить.
Но все же непонятно это:
Цитата(rudy_b @ Jul 18 2013, 01:34) *
делать так, чтобы программа в PC обнаруживала отсутствие связи раньше, чем устройство и закрывала канал. Только потом устройство должно отключиться и включится вновь до того, как программа попробует снова открыть канал.

в виду этого:
Цитата(rudy_b @ Jul 18 2013, 01:34) *
1. Внешнее устройство, не получая некоторое время данные, отключает и снова включает USB. Это эквивалент вынимания/вставки USB устройства.

(мы же вынимаем/вставляем когда захотим)

До кучи еще вопрос (возможно, у меня в голове сейчас полная каша).
Как быть с VID / PID? О том, чтобы зарегистрировать для маленькой фирмочки – нет и речи. Насколько понимаю, для FT232 (и иже ним) есть свой готовый VID. А как поступают при использовании AVR c USB на борту? Придумать свой «от балды»? Какие могут быть проблемы при случайном совпадении (кроме технических)?
Видел, что некоторые маскируются под клавиатуры/мыши/модемы. Этот путь как, совсем через … или нормально?
Go to the top of the page
 
+Quote Post
rudy_b
сообщение Jul 18 2013, 07:09
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



Тут есть проблемы с виндюками. Если канал открыт а устройство вынули - то драйвер подвисает и без вытыкания/втыкания устройства, а иногда и без перезапуска программы не обойтись.

Поэтому сначала программа должна закрыть канал, потом устройство должно выключится/включится и только потом программа должна снова попытаться открыть канал. Например, программа закрывает канал если нет связи 3 сек, устройство отключает USB через 5 сек после потери связи и снова его включает еще через 2 секунды. Программа пробует восстановить связь через 10 сек после закрытия канала.

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

При этом само устройство может снова перезапускаться через большой и некратный интервал времени если после отключения/включения не прошла енумерация и связь не установлена. Но этого лучше избегать.

Да, потеря связи и отключение устройства - это разные вещи. При отключении виндюки выгружают драйвер.

Можно использовать стандартный атмеловский драйвер CDC устройств и их VID/PID. Все это есть в их примерах.
Go to the top of the page
 
+Quote Post
evsx1
сообщение Jul 19 2013, 14:14
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 1-11-10
Пользователь №: 60 586



Цитата(A_MIKE @ Mar 13 2013, 19:42) *
Уговорили... Придется напрячься. Спасибо за участие и потраченное время.

Ну почему у того же атмела, есть ASF (Atmel Software Framework),есть аплеухи и примеры моста UART-USB(CDC), HID, MSD. Есть свободный проект LUFA вроде сейчас портанули и на Xmegu. Однако минимальное понимание работы с USB шиной,все же необходимо. Кроме того все готовые решения будут громоздкими(память) и медленными. Но это не говорит об их негодности и тем более,что из-за программных глюков,что-то рабочее вдруг может отвалиться,если уже запустилось. Сам реализовал простое управление RGB на меге ATmega32U4 с помощью ASF. В последствии прикрутил dmx
Go to the top of the page
 
+Quote Post
Diusha
сообщение Jul 22 2013, 06:40
Сообщение #22


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(rudy_b @ Jul 18 2013, 10:09) *
Например, программа закрывает канал если нет связи 3 сек, устройство отключает USB через 5 сек после потери связи и снова его включает еще через 2 секунды. Программа пробует восстановить связь через 10 сек после закрытия канала.

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

Это стандартный подход, применяемый везде, или "хорошо было бы"?

Цитата(rudy_b @ Jul 18 2013, 10:09) *
Можно использовать стандартный атмеловский драйвер CDC устройств и их VID/PID. Все это есть в их примерах.

Слово "можно" подразумевает НЕединственность решения. А как еще поступают?

Цитата(evsx1 @ Jul 19 2013, 17:14) *
есть ASF ... Есть свободный проект LUFA ...
Однако минимальное понимание работы с USB шиной,все же необходимо. Кроме того все готовые решения будут громоздкими(память) и медленными.

Согласен. Буду потихоньку изучать матчасть

Сообщение отредактировал Diusha - Jul 22 2013, 06:41
Go to the top of the page
 
+Quote Post
dvm11111111
сообщение Aug 4 2013, 07:11
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 25-01-06
Пользователь №: 13 567



А если использовать USB HID то драйвера вообше не нужны никакие. Vid pid можно взять из поэктов, есть выкупленные и в свободный доступ выложенные, работа через репорты не очень сложна. Поищи проэкт в нете usb розетка для ноутбука еазывается, там авольно все разжевано и понятно.
Go to the top of the page
 
+Quote Post
piroman
сообщение Nov 2 2013, 17:54
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 27-09-12
Пользователь №: 73 712



Нужен выкупленный, свободный VID&PID. Где?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 2 2013, 19:04
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(piroman @ Nov 2 2013, 21:54) *
Нужен выкупленный, свободный VID&PID. Где?

Покупать надо. Это если делаете серию и на продажу. А если один, для опытов, то возьмите, например, "1234" и "4321" ...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:38
Рейтинг@Mail.ru


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