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

 
 
> USB + новичек., обьясните HID или СID
av-master
сообщение Oct 14 2009, 19:13
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 857
Регистрация: 14-05-05
Из: Украина
Пользователь №: 4 998



Доброго времени суток товарищи.

Вопрос такого плана. как работать с USB/
т.е где почитать просам принцип.

воткнули разьем. что должно происходить?

т.е. что меня спросит хост? или что мне ему сказать?

в какой момент времени...?

нужно ли постоянно просматривать буфер или по прерыванию работает?

вообщем азы.

вот с как с ком портом например: воткнул передал. забыл ))
Если кому не трудно. опишите процесс. заранее благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Oct 15 2009, 18:31
Сообщение #2


Гуру
******

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



Хуже, чем описание работы USB, ничего на свете нету smile.gif. Купила обе книги Агурова - "Интерфейс USB" и "Практика программирования USB", пыталась это читать. Но разве это читать можно? smile.gif Жуть сплошная. Чем дальше читаешь, тем непонятнее становиться smile.gif. А когда дошла до описания протоколов и форматов структур, мне и вовсе поплохело smile.gif.

Поэтому я пошла другим путем, близким к тому, что рекомендовал здесь aaarrr - взяла документацию на свой "родной" AT90USB647 (это МК архитектуры AVR со встроенным USB) и принялась разбираться в демонстрационной программе USB-COM конвертора, попутно разбираясь в назначениях USB-регистров по даташиту. Через некоторое время я сократила эту программу от всего того, что мне не было нужно (например от HOST-режима, обслуживания других задач и пр.), оставив три функции: 1) инициализацию USB, т.е. те действия, которые необходимо провести всего однажды, чтобы USB заработало. 2) функцию отправления байта по USB (тут на самом деле они сначала кладутся в буфер, а отправляются группой) и 3) функцию, которая вызывается по прерыванию, когда по USB приходит передача. Вообще-то ничего кроме этого мне не было нужно. Помимо этих необходимых мне функций пришлось оставить механизм обработки USB-прерываний, в котором приходится отвечать на всякие каверзные запросы хоста, т.к. без этого с моим USB-устройством никто бы не захотел разговаривать.

В процессе такого разбирательства мне неоднократно приходилось обращаться к книге Агурова "Практика программирования USB", но лишь затем, чтобы выяснить назначения тех или иных констант, записанных в структурах, которые передаются в ответ на запросы. Т.е. тут я уже дошла до того, что некоторые поля подправила под себя - увеличила длину буфера на передачу, убрала "лишнюю" endpoint, запросила больше тока питания, придумала своему устройству красивое имя и т.п.

После всего этого сотворила двойную (или уже тройную?) буферизацию, организовав кольцевой буфер размером 256 байт в памяти, откуда данные отсылаются по USB-прерываниям. Тут дело в том, что USB мне нужно, чтобы отсылать данные от "говорливых" АЦП. И здесь у меня нет времени, чтобы ждать, когда USB отправит данные. А я просто кидаю байты в свой буфер, не заботясь об их отправке, а "голодные" прерывания от USB сами черпают из буфера, если там еще что-то неотправленное осталось. После этого моя программа перестала быть понятной другим smile.gif, зато оставалась понятна мне.

И вот, странное дело! - Открываю я снова книги Агурова, читаю и вдруг обнаруживаю, что всё (или почти всё) мне в ней стало понятно smile.gif. Такова участь большинства инструкций, которые обладают хитрой особенностью сохранять непонятность тогда, когда мы остро нуждаемся в понимании, и быть абсолютно ясными, когда понимание уже за плечами.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 12:37
Рейтинг@Mail.ru


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