Перейти к содержанию
    

LIBUSB32 <-- isochronous EP <-- at90usb162 (4 bytes)

Вобщем стоит задача: Микроконтроллер знает 4 байта, нужно отправить их на комп с наименьшей задержкой (<10ms).

Работающий девайс работает на atmega8 с avrusb софтом (http://www.obdev.at/avrusb/) пример hid-data, пересылаю байты с помощью usb_control_msg. Задержка получается около 50 мс (!!), при том что в секунду успеваю отправить ~250 раз. Где-то эти байты висят в буфере на компе, не понимаю.

Купил at90usb162, спаял плату, научился прошивать его FLIP'ом, скачал софт atmel для этих контроллеров с юсб, вот пытаюсь оформить дескрипторы.. плюс ко всему - хочу чтобы девайс не требовал драйверов, т.е. HID девайс, только вместо interupt EP сделать іsochronous EP. верно? Поправьте, если я что не правильно понимаю

спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

плюс ко всему - хочу чтобы девайс не требовал драйверов, т.е. HID девайс, только вместо interupt EP сделать іsochronous EP. верно? Поправьте, если я что не правильно понимаю

спасибо

Насчёт HID - верно, а насчёт іsochronous EP - нет.

А вообще, ваша задача решается без проблемм даже на LowSpeed через InterruptIn EP. Там вроде 10 мс и есть минимальный период опроса. Хотя с LowSpeed не работал.

А прежде чем паять/программировать - хорошо бы описание USB почитать. На usb.org лучше всего... hid1_11.pdf скачать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитать описание USB - это верно, только вот лень перечитывать все доки, если мне всего то нужно надыбать пример и переделать под себя. Вобщем, смог наладить отправку через interrupt_in endpoint, при значении bInterval 0x01 получаю, почему-то, 500 пересылок в секунду. Где то читал, что минимальный интервал 2 мс, это верно? Тогда все логично. Взял готовый пример hidio от атмел. Долго ковырялся, пока понял, что для того чтобы получать байты на хосте с libusb32 необходимо сначала выполнять usb_set_configuration и usb_claim_interface.

Система у меня такая: Монитор вращается на оси, энкодер меряет угол поворота, контроллер считывает и по usb передает на комп, на котором прога выводит изображение на экран (opengl) таким образом, что как ты не вращаешь монитор, картинка всегда ориентирована горизонтально. Чтобы измерить задержку - я просто быстро вращал монитор и снимал на вебкамеру, получилось при 30 кадрах/сек картинка запаздывает на 2 кадра - т.е. ~50 мс (30<x<60ms). В живую же эту задержку очень хорошо видно, когда начинаешь быстро вращать монитор, картинка отклоняется на 15-30 градусов в сторону движения.

Скоро проверю какая задержка получается с новым девайсом, сообщу.

Изменено пользователем Gogan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

похоже что задержка засела не в передаче контроллер-комп а в программе вывода изображения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем, смог наладить отправку через interrupt_in endpoint, при значении bInterval 0x01 получаю, почему-то, 500 пересылок в секунду. Где то читал, что минимальный интервал 2 мс, это верно?

Неверно, минимальный интервал на Full Speed 1 милисек и есть (при bInterval 0x01). Я так делал - всё соответствует. У вас Interrupt In EP хосту NAK-и шлёт. Один раз NAK, а второй данный. Вы видимо примером пользовались. А примеры они и есть примеры... А хост получив NAK от Interrupt In EP считает что там данных нет и следующий раз через заданный интервал опрашивает (см. описание HID).

Кстати у вас видимо чипсет хороший. Не на всех так. Некоторые наплевали на это дело. На тех, что наплевали - у вас 1000 раз в секунду будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...