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

 
 
> 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
Ответов
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



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

 


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


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