Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с проектом под Delphi дл работы с HID USB, поиск простенького проекта 
:(
    Опции темы
AlexART
Дата 2.11.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



Цитата(svetodiod @ 25.12.2009,  14:56)
Прошу прощения за дурацкий вопрос, откуда девайс знает, что он 
Цитата

ProductName_  = 'LED USB Device';
VendorID_     =  $16c0;
ProductID_    =  $05df;

где это задается (если задается) в прошивке микроконтроллера?

Фрагмент файла USBConfig.h:
Код


/* ------------------------- Дескриптор устройства ------------------------- */

#define  USB_CFG_VENDOR_ID       0xc0, 0x16  /* 5824 in dec, типовое для VOTI */
/* USB вендор ID для устройства, младший байт идет первым. Если Вы зарегистрировали свой 
 * собственный Vendor ID, укажите его здесь. В противном случае используйте один из 
 * свободно предоставляемых пар VID/PID obdev. Прочитайте правила USBID-License.txt!
 */
#define  USB_CFG_DEVICE_ID       0xdf, 0x05 /* 1503 in dec, предоставленный в общее пользование obdev PID для устройств HIDs */
/* Это ID продукта, младший байт идет первым. Он интерпретируется в контексте 
 * vendor ID. Если Вы зарегистрировали свой собственный VID на usb.org,
 * или если пользуетесь лицензией на PID от кого-нибудь еще, укажите его здесь. 
 * Иначе используйте предоставленную obdev свободно распространяемую пару VID/PID.
 * Прочитайте правила USBID-License.txt!
 */
#define USB_CFG_DEVICE_VERSION  0x00, 0x01
/* Номер версии устройства: сначала младший номер, затем старший номер.
 */
#define USB_CFG_VENDOR_NAME     'p', 'v', 'a', 'b', 'o', 'x', '@', 'm', 'a', 'i', 'l', '.', 'r', 'u'
#define USB_CFG_VENDOR_NAME_LEN 14
/* Эти две величины задают имя вендора (vendor name), возвращаемое устройством. 
 * Имя должно предоставляться как список символов в одиночных кавычках. 
 * Символы интерпретируются как Unicode (UTF-16). Если Вам не нужно имя вендора,
 * закомментируйте этот макрос. ВСЕГДА указывайте имя вендора, содержащее Ваше 
 * доменное имя Internet, если Вы используете свободно распространяемую пару 
 * obdev VID/PID. За деталями обращайтесь к файлу USBID-License.txt.
 */
#define USB_CFG_DEVICE_NAME     'L', 'E', 'D', ' ', 'U', 'S', 'B', ' ', 'D', 'e', 'v', 'i', 'c', 'e'
#define USB_CFG_DEVICE_NAME_LEN 14
/* Здесь указывается имя устройства (device name) таким же способом, как и в предыдущем 
 * параметре указывается имя вендора. Если Вам не нужно имя устройства, закомментируйте
 * этот макрос. См. файл USBID-License.txt перед назначением имени, если Вы используете 
 * свободно распространяемую пару obdev VID/PID.
 */
#define USB_CFG_SERIAL_NUMBER   '0', '0', '0', '1'
#define USB_CFG_SERIAL_NUMBER_LEN   4
/* Серийный номер (serial number). Если серийный номер Вам не нужен, закомментируйте макрос.
 * Может оказаться полезным предоставить serial number по другим соображениям, отличающимся 
 * от времени компиляции. См. секцию, описывающую свойства дескриптора далее, где указано 
 * как сделать точное управление дескрипторами USB (USB descriptors), такими как строковый
 * описатель для серийного номера.
 */
#define USB_CFG_DEVICE_CLASS        0xff    /* Задайте 0, если отложено для интерфейса */
#define USB_CFG_DEVICE_SUBCLASS     0
/* См. спецификацию USB, если Вы хотите приспособить устройство к существующему классу устройств 
 * (device class). Класс 0xff является "специфическим для вендора" ("vendor specific").
 */
#define USB_CFG_INTERFACE_CLASS     3
#define USB_CFG_INTERFACE_SUBCLASS  0
#define USB_CFG_INTERFACE_PROTOCOL  0
/* См. спецификацию USB, если Вы хотите, чтобы устройство отвечало требованиям
 * существующего класса или протокола. Следующие классы должны быть установлены
 * на уровне интерфейса:
 * HID class 3, нетребуется подклассов и протоколов (может оказаться удобным!)
 * CDC class 2, используйте подкласс 2 и протокол 1 для ACM
 */



Добавлено через 2 минуты и 55 секунд
И сразу вопрос: Подскажите, пожалуйста, как передавать БОЛЬШЕ одного бита? Просто менять состояние PORTB.0?
PM MAIL   Вверх
mr_smit
Дата 3.11.2010, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Может байта? Шли друг за другом байты и всё. А если нужна скорость, то лучше не заморачиваться с HID и использовать USB <-> RS232 переходник.
PM MAIL   Вверх
pvabox
Дата 4.11.2010, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.8.2009

Репутация: нет
Всего: нет



Цитата(mr_smit @  1.11.2010,  09:06 Найти цитируемый пост)
Да и ещё, объясните эту конструкцию, я чего то не понимаю:

Код

  LEDs:= 0;
  If CheckBox0.Checked then LEDs:= LEDs+1;
  If CheckBox1.Checked then LEDs:= LEDs+2;
  If CheckBox2.Checked then LEDs:= LEDs+4;
  If CheckBox3.Checked then LEDs:= LEDs+8;
  If CheckBox4.Checked then LEDs:= LEDs+16;
  If CheckBox5.Checked then LEDs:= LEDs+32;
  If CheckBox6.Checked then LEDs:= LEDs+64;
  If CheckBox7.Checked then LEDs:= LEDs+128;


Понятно что LEDs это байт, т.е. 8 бит. Причем тут 1,2,4,8,16,32,64,128. С "делфи битами" не приходилось работать.



Цитата(xvr @  1.11.2010,  11:35 Найти цитируемый пост)
Это степени двойки. В бинарном виде это будет
00000001
00000010
00000100
00001000
00010000
00100000
01000000
Если эти значения сложить, то в соответствующей позиции суммы появятся единички


xvr правильно ответил.

Чтобы не заморачиваться и уменьшить количество машинного кода и вычислений, я работаю и передаю в микроконтроллер десятичное число. При записи этого числа в порт PORTB микроконтроллер сам устанавливает соответствующие биты на выходе. 0 - соответствует состоянию 00000000, а 255 - соответственно 11111111. Для включения n-го светодиода, я увеличиваю переменную LEDs на 2 в степени n (n=0..7).

Цитата(AlexART @  2.11.2010,  15:10 Найти цитируемый пост)
И сразу вопрос: Подскажите, пожалуйста, как передавать БОЛЬШЕ одного бита? Просто менять состояние PORTB.0?


Не понятен вопрос, мы вроде передаем уже 8 бит (1 байт), может имелось ввиду как передавать БОЛЬШЕ одного байта?

Цитата(mr_smit @  3.11.2010,  10:40 Найти цитируемый пост)
А если нужна скорость, то лучше не заморачиваться с HID и использовать USB <-> RS232 переходник.


Ну да, смотря для чего использовать. Для цветомузыки, например, скорость переключения в 10 мс это весьма большая скорость. Я в своем плагине для Winamp-а использовал эффект стробирования, работает на ура, с яркими светодиодами по глазам бьет конкретно. Можно даже увеличить длину репорта и передавать информацию о яркости свечения светодиода (через ШИМ), тогда время переключения увеличится до 100 мс и для плавных переключений это будет совершенно незаметно.

Это сообщение отредактировал(а) pvabox - 4.11.2010, 23:15
PM MAIL   Вверх
pvabox
Дата 5.11.2010, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.8.2009

Репутация: нет
Всего: нет



Цитата(mr_smit @  1.11.2010,  08:48 Найти цитируемый пост)
pvabox, давно мечтаю сделать что то подобное. Насмотрелся на ютубе на кубы из светодиодов.... класс...Выложи хотя бы фото своего устройства...!!!!! Жутко интересно посмотреть!!! Очень заинтересовало.


Пожалста

user posted image

PM MAIL   Вверх
AlexART
Дата 8.11.2010, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



Извиняюсь, больше одного байта. Всё, уже понял, спасибо.
PM MAIL   Вверх
mr_smit
Дата 9.11.2010, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Цитата(pvabox @ 5.11.2010,  00:10)
Цитата(mr_smit @  1.11.2010,  08:48 Найти цитируемый пост)
pvabox, давно мечтаю сделать что то подобное. Насмотрелся на ютубе на кубы из светодиодов.... класс...Выложи хотя бы фото своего устройства...!!!!! Жутко интересно посмотреть!!! Очень заинтересовало.


Пожалста


А в работе? Видео хотелось бы. Хоть на телефон сними.
PM MAIL   Вверх
pvabox
Дата 11.11.2010, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 23.8.2009

Репутация: нет
Всего: нет



Хорошо, чуть позже выложу. Но световые эффекты сильно зависят от программы управления и внешнего оформления. У меня девайс работает как прожектор, а в кубе смотрелось бы иначе. В плагине под Winamp у меня реализовано несколько режимов работы светодиодов: зеркальный, частотный, амплитудный, одиночный, а так же добавлены эффекты: инверсия и стробирование. К сожалению, все светодиоды работают в режиме "горит - не горит". Если будет время, думаю ввести режим управления яркостью светодиода, в зависимости от музыкального сопровождения. Хотя, можно немного доработать программу МК и реализовать режим плавного погасания светодиода. Причем скорость погасания будет зависеть от времени свечения. При быстрой музыке этот эффект не будет заметно проявляться, а при медленной получится необычайная световая картина.
PM MAIL   Вверх
darksilence
Дата 21.12.2010, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 26.11.2010

Репутация: нет
Всего: нет



У меня проблема следующего рода:
На контроллере висит кнопка, по нажатию этой кнопки КОНТРОЛЛЕР должен передать какие то данные в ХОСТ. Как сделать это. че в Делфе где прописано должно быть. прерывание слушать. 
Как вариант конечно можно постоянно хостом опрашивать девайс. но это плохой вариант. Как быть? =) 
PM MAIL   Вверх
mr_smit
  Дата 22.12.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Цитата(darksilence @ 21.12.2010,  21:09)

Как вариант конечно можно постоянно хостом опрашивать девайс. но это плохой вариант. 

Ну во-первых кто тебе сказал что это плохой вариант??? Я с кнопкой так и делал.

А во-вторых вот: http://www.radiokot.ru/circuit/digital/pcmod/16/ Там и исходники есть.
PM MAIL   Вверх
darksilence
Дата 22.12.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 26.11.2010

Репутация: нет
Всего: нет



Это не то. там программа хоста постоянно опрашивает, а не контроллер сам инициализирует передачу данных хосту. Я нашел получше пример, но он у меня не запускается. щас буду его мучать
http://radioelectronika.ru/?mod=full_cxema&cxemi_id=465

Благо он разобран детально. и мне придется самому строить HID дескриптор.
PM MAIL   Вверх
AlexART
Дата 23.12.2010, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 1.11.2010

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
KoTeKoT
  Дата 25.12.2010, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.12.2010

Репутация: нет
Всего: нет



Приветствую всех!
Возможно не туда (если что перенаправьте) , но я уже просто не знаю что делать и в чем искать причину!
Уже несколько месяцев пользую проект "hid-data" подкоректировав его под свои нужды в связке с Delphi. И все шло норм, Но после очередной поездки на работу с платой этой - врубаю а ЮСБ пишет "Устройство не опознано" Как так? ПереПрозвонил по 20 раз уже все. Обрывов нет, коротких тоже... Ради интереса позаливал разные варианты прошивок и из "hid-custom-rq" и разные модификации "hid-data" - Все равно не опознано! Но прошивается без ошибок (тоесть с кварцом и кондерами я так понял все в норме) и если прописать  "DDRB  = 0xFF;" между "DBG1(0x00, 0, 0);" и  "odDebugInit();" то светятся диоды как и положено. НО ЮСБ "не опознано". Подтолкните плз в какую сторону рыть... уже 3-й день над девайсом этим сижу...
PM MAIL   Вверх
darksilence
Дата 25.12.2010, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 26.11.2010

Репутация: нет
Всего: нет



В другой комп пробовал ставить девайс?  Как вариант сгорел стабилитрон, если ты на нем схему делал, т.е. по шинам данных идет 5В вместо 3-х. 
PM MAIL   Вверх
KoTeKoT
  Дата 25.12.2010, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.12.2010

Репутация: нет
Всего: нет



Пробовал с 3-мя компами (2 ХР и 1 Win7) одно и тоже... Делал на диодах (прозвонил - не пробитые): user posted image  
И кстати замерял напругу - такое впечатление что ни R1 ни R2 нет... (тоесть между выводом USB1 и PD2 = USB1 и USB3 = 4,93 В) а (между выводом USB4 и PD4 = USB4 и USB2 = 2,97 В) Но при этом резюки исправно показывают 68 Ом. А между PD2 и PD4 так же как и между USB2 и USB3  = 2,95 В.

Это сообщение отредактировал(а) KoTeKoT - 25.12.2010, 20:51
PM MAIL   Вверх
darksilence
Дата 25.12.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 26.11.2010

Репутация: нет
Всего: нет



впринципе R2 и R1 особо на схему и не влияют. Но как факт, что МК должен питаться от 3,6В не больше. и выдавать на ножки PD2,PD4 должен такое же напряжение. 
Я толком не понял вашу запись 
Цитата

тоесть между выводом USB1 и PD2 = USB1 и USB3 = 4,93 В) а (между выводом USB4 и PD4 = USB4 и USB2 = 2,97 В) 

Напряжение нужно мерить относительно общего провода. А то что вы написали USB1 и PD2 = USB1 и USB3 = 4,93 В.

напряжение относительно земли:
USB1 = 5V
USB2=USB3=3.3V~3.6V
USB4 = 0V

VCC = ~3.7 V  - вот это важно

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

Это сообщение отредактировал(а) darksilence - 25.12.2010, 22:54
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1636 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.