Например TDA7294

Форум РадиоКот • Просмотр темы - Простейший код HID. Везде только слова, мыши и джойстики...
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн июл 28, 2025 01:54:08

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 209 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Простейший код HID. Везде только слова, мыши и джойстики...
СообщениеДобавлено: Чт апр 16, 2009 12:11:16 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 16
Зарегистрирован: Пн мар 23, 2009 09:25:58
Сообщений: 651
Откуда: Самара
Рейтинг сообщения: 0
Кто нибудь может привести простейший код HID для CodeVision. Перелопатил кучу информации, но реализовать так и не смог. Все статьи по HID делятся на 2 типа:
1. Джойстик, мышь, клавиатура (это классика, перепечатываемая по 100 раз).
2. Термометр и т.д. (без исх. кодов или хрен пойми как реализованные)

Запустить это тоже не получилось. Откомпилировал код http://microsin.ru/Download.cnt/avr/avr-usb-russian.rar (avr-usb-russian\examples\hid-custom-rq\firmware). Прочитал "разработка устройства USB - как начать работу с библиотекой AVR USB" от microsin. Собрал схему (как рекомендуют)

Изображение

Proteus. Через 4 секунды работы - ошибка. Одна. Не показывает какая и останавливается. Примеры из папки Samples Протеуса (работа с USB HID) работают. Устройство определяется. Видно в Диспетчере устройств. И управляется программой (.ехе файл). Светодиоды зажигаются. Но там контроллер уже с USB, впрочем как и в книге Агурова - читал, мне не помогло.

Помогите разобраться пожалуйсто. Только не надо ссылок (я там везде был). Везде одно и то же. Ругани тоже не надо.

Задача проста: Устройство. Подключаем к компьютеру (USB). Оно определилось как HID. Готово к работе. На компьютере программа с 1 кнопкой. (вкл/выкл). Т.е. (как я понимаю), нашли наше устройство по ID и т.д. отправили какой нибудь байт. Если пришел этот байт - включить светодиод, пришел ещё раз выключить. Всё. Вместо диода потом будет подключена схема управления нагрузкой 220 В.

Везде только общие слова. Типа воспользуемся этим и т.д. Может кто то может привести КОД простейшего HID? Или объяснить поподробней. Буду очень признателен.

Код:
PROGMEM char usbHidReportDescriptor[22] = {    /* дескриптор репорта USB */
    0x06, 0x00, 0xff,              // USAGE_PAGE (Generic Desktop)
    0x09, 0x01,                    // USAGE (Vendor Usage 1)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
    0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)
    0x75, 0x08,                    //   REPORT_SIZE (8)
    0x95, 0x80,                    //   REPORT_COUNT (128)
    0x09, 0x00,                    //   USAGE (Undefined)
    0xb2, 0x02, 0x01,              //   FEATURE (Data,Var,Abs,Buf)
    0xc0                           // END_COLLECTION
};
/* Поскольку мы задали только один feature-репорт, мы не используем идентификаторы
 *  report-ID (которые должны быть в первом байте репорта). Весь репорт состоит из 128
 *  opaque байт данных.
 */


0x75, 0x08, // REPORT_SIZE ( 8 )
0x95, 0x80, // REPORT_COUNT (128)

Я так понимаю мне надо:
Размер элемента данных 1
Число элементов 1

0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x01, // REPORT_COUNT (1)

А что такое 0х75 и 0х95 ?

В голове просто каша.

Причем если просто подключаю usbconfig.h и ещё куча всего к CodeVision - не компилируется. Я думаю это из-за того что не настоены порты, не определен контроллер при компиляции. Это же всё в так называемом make файле, а как всё это CodeVision задать не соображу.

P.S. не ругайте строго, просто очень хочется чтобы заработало то что задумал. Пусть даже до конца код не пойму.

_________________
Нельзя всё знать, достаточно понимать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 16, 2009 12:31:42 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
тема оч заинтересовала. к сожалению помочь не могу, сам в этом не силен. будет интересно почитать ответы.
спсибо за тему,mr_smit


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 16, 2009 14:51:23 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Вообще-то, стек USB - штука непростая и от ресурсов м/к она оставит совсем немного... Отсюда вопрос - реализация протокола USB на коленке - это самоцель? Сейчас м/к со встроенными USB-интерфейсами становятся все более доступны - стоит ли упираться рогом в реализацию (кровь из носа) своими силами? Вон, и в упомянутых примерах тоже взяты м/к с аппаратным интерфейсом...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 16, 2009 15:16:03 
Друг Кота

Карма: 13
Рейтинг сообщений: 84
Зарегистрирован: Чт сен 20, 2007 14:08:00
Сообщений: 13796
Рейтинг сообщения: 0
протеус тебе не дает 100% гарантию работы
тем более с таким наслоением, как усб
у меня вон в юарт выводит мусор, а ты хочеш усб

собери реальный девайс

codevision не будет компилировать проект от гцц в виду несовместимости синтаксиса обработчиков прерываний


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 16, 2009 17:46:20 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 16
Зарегистрирован: Пн мар 23, 2009 09:25:58
Сообщений: 651
Откуда: Самара
Рейтинг сообщения: 0
Просто удивительно, неужели мне первому в голову пришла такая идея??? Не верю. Встроенный USB интерфейс это конечно хорошо, но все его возможности не используются на 100% (для HID). Просто смотришь на это http://radiokot.ru/circuit/digital/pcmod/16/ и диву даёшься. Элементарный контроллер. Каким образом автор компилировал проект??? Из его описания и исходников это вообще не ясно. Ну ладно, раз никто не знает.

_________________
Нельзя всё знать, достаточно понимать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 16, 2009 19:51:58 
Открыл глаза

Зарегистрирован: Чт дек 20, 2007 14:47:31
Сообщений: 70
Откуда: Челябинск
Рейтинг сообщения: 0
на CodeVision это дело не скомпилишь никак, т. к. основной код работы с USB на асьме, а как это дело цеплять к CodeVision - x3. Раньше сам пользовал CV, но очень много мороки с переводом исходников avrstudio и IAR. Как компилил? чтото не вкурю а в чем вопрос?[/b]


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 16, 2009 20:19:30 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 16
Зарегистрирован: Пн мар 23, 2009 09:25:58
Сообщений: 651
Откуда: Самара
Рейтинг сообщения: 0
Автор не приводит в исходниках hex файл для контроллера. То что он предлагает скачать - там есть папка cdcmega, в ней cdcmega.hex, но насколько я понимаю из названия это cdc, а не HID, да и размер 12 КВ, извините, но у нас в распоряжении только 4 КВ (ATTiny45). Как то это настораживает.

_________________
Нельзя всё знать, достаточно понимать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 16, 2009 23:26:46 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вт сен 11, 2007 10:27:08
Сообщений: 335
Откуда: Киев
Рейтинг сообщения: 0
Наверное плохо искал:
http://www.obdev.at/products/vusb/projects.html

тут этих клав с джойстиками и термометрами завались.
Пробывал, получалось. Единственное что не понял, как передать данные этому HID устройству (клава, допустим, умеет принимать данные для инициализации и всякого рода засвечивания светодиодов). Там об этом ни слова. Только выход. А жаль.

По протеусу сразу скажу - даже не пытайся. Элемент "USB" заточен только под ПИК и только с аппаратным USB. Проверено.

Правильно подсказывают - собери и будет работать.
Хотя, возьми проект USB программатора на АВР, для тех-же АВР , может легче разбираться будет. :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 16, 2009 23:41:33 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
mr_smit писал(а):
1. Просто удивительно, неужели мне первому в голову пришла такая идея??? Не верю.
Разумеется нет! Попробуй добывать огонь с помощью огнива - врядли кто поддержит, но из этого вовсе не следует, что ты первый догадался до такого способа. :)))
mr_smit писал(а):
Встроенный USB интерфейс это конечно хорошо, но все его возможности не используются на 100%
А контроллеры существуют вовсе не для того, чтобы использовать их на сколько-то процентов, как правило, задачи формулируются совершенно иначе. И, кстати, ограничения на затраченное время занимают в постановке задачи не последнее место. Я потому так и спросил: сотворение протокола на коленке - это самоцель или нет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 16, 2009 23:52:30 
Прорезались зубы

Зарегистрирован: Пт ноя 16, 2007 13:52:44
Сообщений: 231
Откуда: Рига, Латвия
Рейтинг сообщения: 0
Прошу заметить ! Если вы хотите эксперементировать с USB - по тои схеме как у вас: то Proteus в данном случае - враг ! :) Не совсем конечно, но всёже...
Поясняю - сделаная вами схема - ни что иное - как Програмный USB - а этого не предусмотрено. Proteus может работать с USB только через железную симуляцию в контроллере! Т.е. в контроллере железное USB = эмулированное USB устроиство в ПК... С параметрами что вы записываете в регистры контролеера отвечающие за тот самый USB.
Proteus не делает анализа временых диаграм дергания ног контроллера и подстановку их под стандарт USB или хотябы анализ диаграмы, вделения из этого USB пакета и внесения его в виртуальное устр-во. Всего этого НЕТ! И врятли будет :))
Вывод - берём макетку - и всё на неё ! Всё работает как надо ! Если хотите углубится - берём USB sniffer - анализатор / перехватчик пакетов приходящих на USB ПК , помогает для изучения, анализа и поиска ошибок.
С уважением Pe3...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 16:57:36 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 16
Зарегистрирован: Пн мар 23, 2009 09:25:58
Сообщений: 651
Откуда: Самара
Рейтинг сообщения: 0
Цитата:
сотворение протокола на коленке - это самоцель или нет?


Самоцель это сделать устройство. Учитывая что судя по всему это возможно (таким способом). На выходных посижу, постараюсь спаять. Единственное не купил кварц на 16 МГц. Зашел сегодня в ВольтМастер - кварцев вообще нет. Вот думаю поставить на 8 МГц (у меня есть). Надеюсь заработает.

_________________
Нельзя всё знать, достаточно понимать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 17:29:12 
Открыл глаза

Зарегистрирован: Чт дек 20, 2007 14:47:31
Сообщений: 70
Откуда: Челябинск
Рейтинг сообщения: 0
mr_smit писал(а):
Автор не приводит в исходниках hex файл для контроллера. То что он предлагает скачать - там есть папка cdcmega, в ней cdcmega.hex, но насколько я понимаю из названия это cdc, а не HID

Вы ошибаетесь! название cdcmega.hex осталось от тестов и отладки на меге, т.к. за основу я взял проект cdc и примеры avrusb. Сами посудите, если все работает, зачем что-то менять? (это насчет названий файлов)

Цитата:
да и размер 12 КВ, извините, но у нас в распоряжении только 4 КВ (ATTiny45). Как то это настораживает.

Размер hex файла и размер памяти - разные вещи! Эта прошива нормально влезает в tiny45, у меня же поместилась!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 20:15:45 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
mr_smit писал(а):
Самоцель это сделать устройство.
Я так и думал - в большинстве случаев всё же именно так и есть. :)
Тогда позволю себе предложить такие рассуждения:
1. USB шина - не резиновая, 128 устройств всего, а на "морде лица" компа (ну, не только на морде 8)) количество разъемов и того меньше. Поэтому врядли имеет смысл к каждому выключателю (ведь именно о нем шла речь?) цеплять свой интерфейс к USB-гнезду компа, на мой взгляд, разумнее прицепить к компу м/к'шный контроллер (вот он - по USB!) а уж от него разводить управление к тинькам, которые "обжигают горшки" - включают/выключают нагрузку, что-то измеряют, куда-то сообщают и так далее. И если так, то контроллер можно коннектить с ПК с помощью моста USB/UART (FTDI, CP) - это и быстрее (ничего не нужно программировать в м/к), и ресурсы м/к не затрагивает, и наконец (в случае legacy устройств) - позволяет не менять софт, если таковой к ним существовал в COM-инкарнации. Скажем, так делали USB-редакции программаторов - в ПК'шной софтине просто выбирали виртуальный COM-порт, а дальше все работало также, как и до перехода с COM на USB.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 21:05:30 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 16
Зарегистрирован: Пн мар 23, 2009 09:25:58
Сообщений: 651
Откуда: Самара
Рейтинг сообщения: 0
Я и не собирался на один USB сажать 1 выключатель. Лучше уж подключать всё к контроллеру, а уже контроллер к ПК через USB.

Что бы это могло означать:

Изображение

_________________
Нельзя всё знать, достаточно понимать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 21:42:08 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
mr_smit писал(а):
Я и не собирался на один USB сажать 1 выключатель.
Ну, как ты написал, так я и понял :):
mr_smit писал(а):
Устройство. Подключаем к компьютеру (USB). Оно определилось как HID. ... потом будет подключена схема управления нагрузкой 220 В.

mr_smit писал(а):
... подключать всё к контроллеру, а уже контроллер к ПК через USB.
Да, только я бы предпочел возложить задачу отработки протокола на мост USB/UART по причинам уже изложенным выше.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 21:56:56 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 16
Зарегистрирован: Пн мар 23, 2009 09:25:58
Сообщений: 651
Откуда: Самара
Рейтинг сообщения: 0
Собрал простой программатор:

Изображение

И проект, чтобы его протестировать:

Изображение

WinAVR не хочет прошивать, CodeVision тоже. Что не так?

Изображение

Убрал галочку Check Signature, нажал Yes

Изображение

Не работает. :cry:

_________________
Нельзя всё знать, достаточно понимать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 22:04:04 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 16
Зарегистрирован: Пн мар 23, 2009 09:25:58
Сообщений: 651
Откуда: Самара
Рейтинг сообщения: 0
И WinAVR и CodeVision пишут что то про сигнатуру. Это что такое?

_________________
Нельзя всё знать, достаточно понимать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 22:34:37 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 16
Зарегистрирован: Пн мар 23, 2009 09:25:58
Сообщений: 651
Откуда: Самара
Рейтинг сообщения: 0
UniProF

Изображение

Главное при запуске не ругается и распознает контроллер. (если отключить от LPT, то ругается)
Изображение

А при прошивке питание нужно подавать на контроллер? Я делаю так: подключаю к LPT -> пытаюсь прошить. Отключаю. Подключаю питание (5 В взял с USB)

_________________
Нельзя всё знать, достаточно понимать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 23:04:41 
Потрогал лапой паяльник
Аватар пользователя

Карма: -1
Рейтинг сообщений: 4
Зарегистрирован: Пт апр 17, 2009 22:45:42
Сообщений: 316
Откуда: Minsk
Рейтинг сообщения: 0
Yellow Tiger писал(а):
И если так, то контроллер можно коннектить с ПК с помощью моста USB/UART (FTDI, CP) - это и быстрее (ничего не нужно программировать в м/к), и ресурсы м/к не затрагивает, и наконец (в случае legacy устройств) - позволяет не менять софт, если таковой к ним существовал в COM-инкарнации. Скажем, так делали USB-редакции программаторов - в ПК'шной софтине просто выбирали виртуальный COM-порт, а дальше все работало также, как и до перехода с COM на USB.

Оно так, но в масштабах рынка - кому нужны эти программаторы?
И CP и FTDI требуют установки драйверов. Если нужно взять от USB 300-400мА тока а коммуникация вторична, то альтернативе HID не видно. Софт, если он нужен (для обновления прошивки, например) написать иногда проще с нуля для HID и забить на любое legacy, учитывая удешевление hardware и, главное, отсутствие драйверов для конечного юзера.
Аппаратных удобных мостов для HID я не знаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 17, 2009 23:30:27 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вт сен 25, 2007 19:40:26
Сообщений: 438
Откуда: Челябинск
Рейтинг сообщения: 0
При программировании однозначно нужно подавать питание на МК, иначе как работать то должен? Святым духом он питаться не может.
Судя по тем ошибкам, что приведены на скринах - очень вероятно что кабель от LPT до МК длиннее нужного. Тем более без буферной ИМС это очень критично.

Советую взять удлинитель LPT и уже от него 10-15см шнурок до МК.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 209 ]  1, , , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y