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

 
 
> V-USB HID, Disconnect, ATmega32? 16 MHz
Br.Misha
сообщение Mar 20 2011, 12:15
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



Привет!
Я много сделал юсб -девайсов и почти во всех применял V-USB, который при подключении к компу запрашивал драйверы, короче работал через LibUSB-win32. Было все ок, но мне в нем не нравилось то, что ему нужны были драйвера и глючность самой библиотеки (под комп) на некоторых компах(например когда девайс е подключен и т.д.). Но вот в последнее время решил пересесть на HID, тут либа стандартная и дравера не надо, а значит, будет работать на большинстве платформ.
Чтобы не паять девайс для теста, я просто решил переделать тот, который щас разрабатываю. Я Просто изменил дескриптор репорта, отключил опрос по RS485(это одна с ф-ций девайса), и сделал пару изменений в конфиге, переделал прогу под комп и девайс начал кидать байтики на комп. Потом влючл опрос по RS485, но не подключал витую пару - работало тоже нормально. Потом подключил конектор с витой парой и как только остальные девайсы по рс485 начали передавать байты на главные девайс (тот, на котором юсб), программа перестала находить девайсsad.gif. Заглядывал в диспетчер устройств, там девайс нормально определяется, потом решил посмотреть через эверест. Оказывается, что при нормальной работе девайса в эвересте отображаются производитель, продукт, VID/PID, клас, а когда программа не может найти устройство, то только VID/PID. Соответственно, программа не может его найти. Но при этом, даже когда програма не видит устройство, оно работает нормально (опрос по рс485, отображение на дисплее, сканирование клавы). Я потом начал втыкать usbPoll() куда только можно, всеравно не работает. Короче мучался полторы суток и заработало, почему не знаю, но хотелось бы знать.

Конечно пробелма решилась, но не факт, что она опять появится, особенно фигово будет когда оно начнет глючить у заказчика.

Может кто-то сталкивался с подобной пробемой?

Забыл добавить: глюк происходит вне звисимости от частоты опроса (5 сек или 50 мсек)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
hd44780
сообщение Mar 20 2011, 12:27
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



С такой проблемой я не сталкивался, мои девайсы попроще вашего будут sm.gif.

Но я читал одну важную вещь вещь: AVR довольно хиленький процессор для обслуживания USB, поэтому он не может одновременно нормально обслуживать USB канал и выполнять другие сложные задачи. А когда девайс не успевает обслуживать USB канал, то комп его как-то вырубает. У меня такое было из-за помех. НАгрузка включается, проц глючит - девайс отваливается. В диспетчере вроде есть, а прога его не находит.
Я смотрел ихние примеры - они даже один таймер сделали не на прерываниях, а по опросу флага.
Поэтому совет - разнесите ваши задачи по процессорам - пусть USB занимается, например, ATMega8, а всем остальным - ваша Mega32. Между ними какой-нибудь USART.
Мне попадался на глаза проект - ИК глазок для пультов на USB. Там именно так и сделано. И написано прямым текстом - AVR не справляется с обеими задачами - и запросы компа обрабатывать и на глазок реагировать. Отсюда разные глюки - то девайс отвалится, то часть сигналов пульта теряет - как повезет.

Сообщение отредактировал hd44780 - Mar 20 2011, 12:32


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Mar 20 2011, 12:38
Сообщение #3


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



hd44780, спасиб что ответил! я думал что мой вопрос даже до конца не дочитают.
Но проблема не в том. У меня к примеру есть еще один девайс на атмега32, так в нем: юсб, ик-приемник, ик-передатчик, 4 дисплея, 1-wire, ну и еще управление нагрузками, светодиодами и некоторые математические вычисления, по юсб девайс опрашивается каждые 50 мс почти круглосуточно. Работает без глюков, но использует LibUSB-win32. Тут проблема в чем то другом, наверно LibUSB-win32 с меньшей частотой опрашивает девайс чем ХИД. Я поставил USB_CFG_INTR_POLL_INTERVAL = 500 но проблема всеравно не решилась.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 20 2011, 13:11
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Про LibUSB-win32 я не знаю, сорри.
Я в свое время на нее с тоской посмотрел и написал свою dll-ку на VC++ 2005. Основное приложение на NET2.0, C#.
Программа опрашивает девайс где-то раз в секунду. Там чаще и не надо - считываются только значения таймеров, которые тикают раз в секунду.

Сообщение отредактировал hd44780 - Mar 20 2011, 14:04


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Mar 20 2011, 14:51
Сообщение #5


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



Подключил к компу с одноядерным процом заработало нормально. Помню когда то когда делал девайс на том компе, он работал нормально, потом подключил к двухядерном ноуту - начались дисконекты, и вообще, на всех двухядерный компах были дисконекты(тогда проблему решил некоторым изменениеи кода). Я так понял, комп делает очень часто запросы и МК не успевает на них отвичать. Для теста я подключил девайс к ноуту через 4-х портовый хаб (юсб 2,0). Работает уже около часа без ошибок.

Тут я в заблуждении. Я не могу понять, что нужно сделать чобы чтобы комп "более медленно" опрашивал девайсы. Почему в лапках? да потому что не пойму, скорость чего нужно уменьшить. Ведь частота опроса - 1 сек, а это не мало для того, чтобы МК успел ответить.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 20 2011, 15:05
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Могу кинуть свою dll-ку на C.
Раз в секуду - нормально. Проц у меня - 4-ядерный Core2Quad.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Mar 20 2011, 15:36
Сообщение #7


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



скидайsm.gif
Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 20 2011, 15:53
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Лови.
Никаких доп SDK/DDK не нужно, я все в проект включил.
Я компилил в VS.NET 2005. Пойдет ли в других - не знаю.
Прикрепленные файлы
Прикрепленный файл  TMS_hid.zip ( 64.11 килобайт ) Кол-во скачиваний: 36
 


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:55
Рейтинг@Mail.ru


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