Перейти к содержанию
    

Делаем AVR USB (software) правильно

Вопрос к АЛЛ

как до HID достучаться с Дэльфи?

 

Как выявили поиски HID RS232 и HID LPT требуют драйвер...

(HID ком порт, без стороннего драйвера НЕ РАБОТАЕТ.)

 

"использование интерфейса USB в качестве виртуального COM-порта."

"Другое важное преимущество заключается в том, что используются стандартные драйвера Windows и

не требуется создание какого-либо своего драйвера."

 

и ниже

 

"После подключения устройства к USB система опознает новое устройство"

"Выбираем установку с указанного места и указываем путь расположения файла mcpusb.inf"

 

типа mcpusb.inf с диска это не сторонний драйвер.

 

Для АВР предлагают использовать связку - usbser.sys и usbser.sys из файла avrcdc_inf.zip

 

Всё забываю ответить на вопрос что будет если произойдёт сбой.

Ответ – зависнет. Или до передёргивания шланга, или до сброса по сторожевому таймеру (если взведён).

 

Откапал ещё одну почитайку по поводу комбиков.

 

http://microchip.com.ru/1010/Support/USB%20apps.html

Практическое использование интерфейса USB в PIC контроллерах.

 

Да это пик, а не АВР, но другого мануала на "Составное USB устройство" я пока не видел.

 

Да и это подробностью не блещет

 

1. Создание дескриптора -> Изменим структуру дескриптора. ->Устройство будет иметь 2 интерфейса,

в каждом по одной конечной точке.

2. В соответствии с измененной структурой нужно изменить дескриптор

3. Определить идентификаторы интерфейсов, используемые конечные точки, размеры report дескрипторов.

4. инициализировать дополнительные конечные точки и изменить функцию обработки HID-запросов.

5. Каждое из устройств, мышка и джойстик, должны передавать данные каждый в свою конечную точку.

Поэтому нам необходимо добавить функции передачи данных в конкретные конечные точки и проверки,

что нужная конечная точка свободна.

 

Для упрощения создания дескриптора устройства можно воспользоваться программой HID Descriptor Tool,

которую можно скачать с сайта www.usb.org

 

Вот и вся дока...

 

Хоть бы объяснили человеку (кто спросил) что это за дескрипторы!

 

 

P.S: Если кому понятней начинать с конца, то картинку можно перевернуть ендпоинтами к верху :)

post-28596-1228321901_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что то тема заглохла...

 

Вопрос к АЛЛ

как до HID достучаться с Дэльфи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто знает, отчего берутся USB-запросы (CDC Class Requests):

SEND_ENCAPSULATED_COMMAND

GET_ENCAPSULATED_RESPONSE

?

Обычно их не обрабатывают, но любопытно, для чего они нужны. Короче говоря, мой вопрос формулируется так: "Какую команду из Windows-API должно подать приложение, чтобы моя AVRка получила один из этих реквайстов?" И в частности, если у меня на USB организован виртуальный COM-порт. Как вызвать все остальные реквайсты я знаю, остались непонятными только эти. В книгах и исходниках эти два реквайста всегда упоминаются, однако ни слова не нашла про то, в связи с каким событием такие запросы посылаются. Драйвер, конечно, может послать любой реквайст, но остается неясным, как побудить драйвер к этому (я использую стандартный драйвер виртуального порта usbser.sys, встроенный в Windows).

Изменено пользователем Xenia

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто знает, отчего берутся USB-запросы (CDC Class Requests):

SEND_ENCAPSULATED_COMMAND

GET_ENCAPSULATED_RESPONSE

?

Обычно их не обрабатывают, но любопытно, для чего они нужны. Короче говоря, мой вопрос формулируется так: "Какую команду из Windows-API должно подать приложение, чтобы моя AVRка получила один из этих реквайстов?" И в частности, если у меня на USB организован виртуальный COM-порт. Как вызвать все остальные реквайсты я знаю, остались непонятными только эти. В книгах и исходниках эти два реквайста всегда упоминаются, однако ни слова не нашла про то, в связи с каким событием такие запросы посылаются. Драйвер, конечно, может послать любой реквайст, но остается неясным, как побудить драйвер к этому (я использую стандартный драйвер виртуального порта usbser.sys, встроенный в Windows).

 

Попробуйте применить TransmitCommChar - может, оно вызовет SEND_ENCAPSULATED_COMMAND ?

 

хотя, почитал первый попавшийся даташит - и показалось, что это - рлддержка для DeviceIoControl

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте применить TransmitCommChar - может, оно вызовет SEND_ENCAPSULATED_COMMAND ?

 

Уже думала про это, но лениво было проверять :).

 

хотя, почитал первый попавшийся даташит - и показалось, что это - поддержка для DeviceIoControl

 

А вот это как раз меня больше всего интересует! К сожалению, константы DeviceIoControl для СОМ-порта не описаны.

Любопытно, что функция

 

BOOL EscapeCommFunction(

HANDLE hFile, // handle to communications device

DWORD dwFunc // extended function to perform

);

 

очень похожа на DeviceIoControl, поскольку значение dwFunc очень похожа по смыслу на констанды DeviceIoControl:

dwFunc value:

CLRDTR Clears the DTR (data-terminal-ready) signal.

CLRRTS Clears the RTS (request-to-send) signal.

SETDTR Sends the DTR (data-terminal-ready) signal.

SETRTS Sends the RTS (request-to-send) signal.

SETXOFF Causes transmission to act as if an XOFF character has been received.

SETXON Causes transmission to act as if an XON character has been received.

SETBREAK Suspends character transmission and places the transmission line in a break state until the ClearCommBreak function is called.

CLRBREAK Restores character transmission and places the transmission line in a nonbreak state.

 

К сожалению, нмчего похожего на SEND_ENCAPSULATED_COMMAND и GET_ENCAPSULATED_RESPONSE тут нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость Br.Misha

Здраствуйте!

Я понимаю что тема уже старая но межет у кого нить есть пример AVR - CDC. Мне нада просто пересылать/принимать байты(как по обычому юарту).

Кстате, нормально ли работает дряйвер от obdev на 16Мгц(при соотвецтвенной настройке конечно?))

ЗЫ: на http://www.recursion.jp меня не слать! тот пример у меня не работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...