Jump to content

    
Sign in to follow this  
osnwt

Вышла очередная версия AVR-USB драйвера от Objective Development

Recommended Posts

Кстати, по поводу дескрипторов и драйверов, раз уж встретились :)

Хотелось бы узнать про вот такую строчку в драйвере, при использовании устройства как USB CDC ACM class

Если вопрос ко мне, то увы, не подскажу. Я не игрался (пока?) с CDC. Потому вопросов, с этим связанных, не изучал. Может, кто-то другой подскажет чего.

Share this post


Link to post
Share on other sites

Кстати, по поводу дескрипторов и драйверов, раз уж встретились :)

Хотелось бы узнать про вот такую строчку в драйвере, при использовании устройства как USB CDC ACM class

Если вопрос ко мне, то увы, не подскажу. Я не игрался (пока?) с CDC. Потому вопросов, с этим связанных, не изучал. Может, кто-то другой подскажет чего.

Да не лично к Вам, конечно, НО, раз уж вы лично переписываетесь с автором такого замечательного драйвера, то могли бы ему сказать о данном вопросе. Я, честно говоря, не придавал значения этим строчкам, пока не стал отлаживать более "серъезный" USB девайс, тоже прикидывающий ся CDC ACM. SET_CONTROL_LINE_STATE не требует ответа...

 

Это описанно в файле usbcdc11.pdf стр.69. 6.2.14.SetControlLineState

Share this post


Link to post
Share on other sites
Да не лично к Вам, конечно, НО, раз уж вы лично переписываетесь с автором такого замечательного драйвера, то могли бы ему сказать о данном вопросе.

Я переписываюсь тогда, когда есть предмет разговора. Предмет разговора, с моей точки зрения, может быть тогда, когда я "въехал" в тему и не вижу решения. Вникать в этот предмет у меня сейчас не получится, а быть испорченным телефоном не очень хочется.

 

Автор без проблем общается со всеми. Кроме того, с недавних пор на его сайте запущена phpBB, где есть форум по AVR USB драйверу и проектам на его основе. Автор там регулярно отвечает на вопросы. Я полагаю, что самое оптимальное - это задать вопрос там.

Share this post


Link to post
Share on other sites

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

Я переписываюсь тогда, когда есть предмет разговора. Предмет разговора, с моей точки зрения, может быть тогда, когда я "въехал" в тему и не вижу решения. Вникать в этот предмет у меня сейчас не получится, а быть испорченным телефоном не очень хочется.

 

Автор без проблем общается со всеми. Кроме того, с недавних пор на его сайте запущена phpBB, где есть форум по AVR USB драйверу и проектам на его основе. Автор там регулярно отвечает на вопросы. Я полагаю, что самое оптимальное - это задать вопрос там.

Хорошо :)

Share this post


Link to post
Share on other sites
На базе драйвера разработал USB вольтметр (USB драйвер и сама программа свои, включено автоопределение подключения-отключения устройства), все прекрасно работает на компах с USB 1.1, но не работает на компах с USB2, устройство вообще не определяется компом? В чем могут быть грабли?
В смысле не определяет? вообще не видит, или говорит Unknown device? У меня прекрасно видится на любых версиях портов - пробовал на разных платах. ОСи пробовал 98/МЕ/2000/ХР

Говорит Unknown device.

 

Ребят а не поможете создать джойстик? Я вот сижу и пытаюсь разобраться с HID. И не могу прикинуть как же всётаки объяснить сколько скнопок и прочего на джойстике.

В инете был прекрасный проект джойстика на Мега8 с HID устройством MJoy. Я по нему в свое время разбирался с хидами, он на асме, но комментировано достаточно хорошо было, понять все можно. Я хиды бросил, достаточно один раз написать драйвер USB, потом уже по аналогии за 5 минут драйвер пишется. А возможностей гораздо больше, чем с обезличенным ХИД устройством.

Share this post


Link to post
Share on other sites

На базе драйвера разработал USB вольтметр (USB драйвер и сама программа свои, включено автоопределение подключения-отключения устройства), все прекрасно работает на компах с USB 1.1, но не работает на компах с USB2, устройство вообще не определяется компом? В чем могут быть грабли?
В смысле не определяет? вообще не видит, или говорит Unknown device? У меня прекрасно видится на любых версиях портов - пробовал на разных платах. ОСи пробовал 98/МЕ/2000/ХР

Говорит Unknown device.

Скорее всего, что то "не совсем правильно" с дескрипторами. Я бы попробовал отследить протокол общения с помощью вот этой программульки. Только не спрашивайте, как с ней работать :) , раз с драйвером AVR разобрались, с ней и подавно. После каждой транзакции слева показывает код ошибки - если отличен от нуля - устройство сушит весла

SnoopyPro_0.22.zip

Share this post


Link to post
Share on other sites
Скорее всего, что то "не совсем правильно" с дескрипторами. Я бы попробовал отследить протокол общения с помощью вот этой программульки. Только не спрашивайте, как с ней работать :) , раз с драйвером AVR разобрались, с ней и подавно. После каждой транзакции слева показывает код ошибки - если отличен от нуля - устройство сушит весла

С дескрипторами вряд ли, ассемблерный вариант с этими дескрипторами работает на всех машинах.

За программульку спасибо, вечерком попробую.

Share this post


Link to post
Share on other sites

Попробовал программульку на работе, удобная штучка, разбираться там особо не с чем, это обычный драйвер-фильтр, врезаемый в стэк драйверов. Тут только два вопроса - где взять расшифровку кодов ошибок и самое главное, программа снифит уже установленные устройства. А если мое устройство не определяется, то соответственно не загрузится и драйвер. Что же будет снифиться в этом случае?

Share this post


Link to post
Share on other sites
Попробовал программульку на работе, удобная штучка, разбираться там особо не с чем, это обычный драйвер-фильтр, врезаемый в стэк драйверов. Тут только два вопроса - где взять расшифровку кодов ошибок и самое главное, программа снифит уже установленные устройства. А если мое устройство не определяется, то соответственно не загрузится и драйвер. Что же будет снифиться в этом случае?
Про расшифровку кодов я не знаю, может Билли Гей тс знает :) , bus драйвер егошний))), а по поводу что же будет сниффить - то и будет, что появится... VID и PID вам же известен? В списке устройств (в программе, которую я положил выше) Ваш девайс же есть? так на него и тыкайте

Share this post


Link to post
Share on other sites

Насколько я помню, вид и пид с устройства не брались вообще, т.е. до считывания дескрипторов дело не доходило в принципе.

Если драйвер дяди Билла, то скорей всего коды ошибок стандартные виндусовские, надо будет сравнить.

Edited by Георгий

Share this post


Link to post
Share on other sites
Насколько я помню, вид и пид с устройства не брались вообще, т.е. до считывания дескрипторов дело не доходило в принципе.

Если драйвер дяди Билла, то скорей всего коды ошибок стандартные виндусовские, надо будет сравнить.

Как так? В любом случае, как только устройство определилось на шине, начинается считывание дескриптора устройства, привожу последовательность, стандартную для ОС Windows 98/ME/2000/XP etc:

 

A common Windows enumeration involves the following steps,

1. The host or hub detects the connection of a new device via the device's pull up resistors on the

data pair. The host waits for at least 100ms allowing for the plug to be inserted fully and for power

to stabilise on the device.

2. Host issues a reset placing the device is the default state. The device may now respond to the

default address zero.

3. The MS Windows host asks for the first 64 bytes of the Device Descriptor.

4. After receiving the first 8 bytes of the Device Descriptor, it immediately issues another bus reset.

5. The host now issues a Set Address command, placing the device in the addressed state.

6. The host asks for the entire 18 bytes of the Device Descriptor.

7. It then asks for 9 bytes of the Configuration Descriptor to determine the overall size.

8. The host asks for 255 bytes of the Configuration Descriptor.

9. Host asks for any String Descriptors if they were specified.

Это из usb-in-nutshell

Share this post


Link to post
Share on other sites

Если просто прицепить резистор 1,5 ком между D- b питанием получим тот же эффект. Вся сложность в том и состоит, что до получения конфигурации дело не доходит.

Мне больше грешится на несоблюдение времени первоначального сброса, возможно у USB1.1 оно менее критично, чем у USB2.0.

Share this post


Link to post
Share on other sites
Если просто прицепить резистор 1,5 ком между D- b питанием получим тот же эффект. Вся сложность в том и состоит, что до получения конфигурации дело не доходит.

Мне больше грешится на несоблюдение времени первоначального сброса, возможно у USB1.1 оно менее критично, чем у USB2.0.

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

Share this post


Link to post
Share on other sites

Так меня и интересует, в каком месте он может грешить при USB2.0 и быть невинным при USB1.1. Проверял на 4 компах. На асмовском варианте (типа Igor Cesko) такого не было.

Share this post


Link to post
Share on other sites
Так меня и интересует, в каком месте он может грешить при USB2.0 и быть невинным при USB1.1. Проверял на 4 компах. На асмовском варианте (типа Igor Cesko) такого не было.
Кстати, а можно увидеть входные цепи USB? Я имею ввиду схему подключения МК к хосту...

 

И еще, я бы рекомендовал пользоваться отладочными сообщениями через USART - хотя бы было бы видно чего хост шлет девайсу. Даже если просто прицепить резистор к хосту, хост обязан послать запрос дескриптора девайса устройству

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this