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

 
 
> Хочу понять принцип работы USB устройств, Как сделать простейшее устройство и управлять им через USB
DrMcSheen
сообщение Jul 2 2011, 14:57
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 2-07-11
Пользователь №: 66 025



Здравствуйте все!
Господа, помогите научиться управлять внешним устройством через USB порт.
К примеру, USB кабель, две кнопки и два светодиода.
Как научить комп видеть нажатие кнопок и включать/выключать светодиоды?
Не переделывая готовые устройства, а именно сделать с нуля.
Т.е. спаять контроллер и написать прогу.
В элекронике немного разбираюсь. Программирование знаю (С++, ассемблер).
С чего начать, что почитать?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Jul 2 2011, 18:25
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(DrMcSheen @ Jul 2 2011, 18:57) *
Господа, помогите научиться управлять внешним устройством через USB порт.

Самое простое и быстрое - взять пример CDC-устройства, а по-проcтому USB/COM-конвертера, построенного на выбранном вами МК. Приложения такого рода легко найти на сайте компании-производителя МК, имеющего на борту USB-интерфейс. Обычно в таком приложении бывают реализованы функции передачи и приема байт USB- и UART-интерфейсами. Например:
USB_TX( char B ) - передача байта b по USB.
USB_RX( char B ) - прием байта b по USB, эта функция сама вызывается, при каждом принятом байте.
иногда последняя функция выдает сразу строку принятых байт: USB_RX( char *str, int len), т.к. по USB обычно передают блоками.
Аналогично выглядят и функции приема/передачи по UART:
UART_TX( char B ) - передача байта b по UART.
UART_RX( char B ) - прием байта b по UART, эта функция сама вызывается, при каждом принятом байте.

Фунция конвертора программируется как-то так:
UART_RX( B ) { USB_TX( B ); } - передавливает принятые по UART байты в USB.
USB_RX( B ) { UART_TX( B ); } - передавливает принятые по USB байты в UART.
или
USB_RX( str, len) { for(int i=0;i<len;i++) UART_TX( str[i]); }

Так вот это место разламываешь и пишешь в тело функции USB_RX() свой код, который использует принятые по USB байты по назначению, т.е. рассматривая их, как команды.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 03:17
Рейтинг@Mail.ru


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