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

 
 
> USB в LPC17**, разбираюсь с нуля
alvy
сообщение Jun 9 2010, 03:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 8-05-09
Из: Томск
Пользователь №: 48 809



Всем доброго времени суток.

Появилось время изучить как следует интерфейс USB на подопытной плате SK-MLPC1768. Задача - реализация HID устройства. В данный момент написал код инициализации USB (все по шагам - в строгом соответствии с даташитом). USB блок заработал, прерывания есть.
Дальше - обработчик прерывания. И тут основные вопросы:

1) читаю даташит (для режима Slave): "Enable device interrupts using USBDevIntEn (normally DEV_STAT, EP_SLOW, and possibly EP_FAST).". Замечательно, но для чего тогда в примере RDB1768_usbstack включено еще и прерывание по FRAME (которые шпарят раз в мс)? Как правильно должен выглядеть обработчик прерывания?

2) Если прерывания по FRAME имеют такую строгую периодичность и их все таки необходимо использовать, то можно ли туда добавить функцию тика ОС? (понимаю, что решение скорее всего бредовое, но вот грамотно обосновать не могу).

3) Для мониторинга шины USB скачал SniffUSB - насколько удобно ей пользоваться? Есть ли более функциональные (но бесплатные) аналоги?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
uriy
сообщение Jun 9 2010, 04:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Есть еще в кейле пример HID устройства. Может там будет что-то полезное. Keil\ARM\Boards\Keil\MCB1700\USBHID
Go to the top of the page
 
+Quote Post
alvy
сообщение Jun 9 2010, 05:08
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 8-05-09
Из: Томск
Пользователь №: 48 809



Цитата(uriy @ Jun 9 2010, 11:46) *
Есть еще в кейле пример HID устройства. Может там будет что-то полезное. Keil\ARM\Boards\Keil\MCB1700\USBHID

Смотрел этот пример там все еще более запутано (по крайней мере для меня):
кусок обработчика прерывания:
Код
#if USB_SOF_EVENT
  /* Start of Frame Interrupt */
  if (disr & FRAME_INT) {
    USB_SOF_Event();
  }
#endif

функция USB_SOF_Event():
Код
/*
*  USB Start of Frame Event Callback
*   Called automatically on USB Start of Frame Event
*/

#if USB_SOF_EVENT
void USB_SOF_Event (void) {
}
#endif

Что именно необходимо делать в этом прерывании остается загадкой...

Цитата(dimka76 @ Jun 9 2010, 12:01) *
Это когда устройство (ваше) подключено к хосту( компьютеру) тогда и будут прерывания с интервалом 1 мсек. А когда вы свое устройство от хоста отключите и пустите в свободное плавание, что станется с вашей ОС ?
у меня в данный момент USB кабель отключен от макетной платы, а прерывания по FRAME возникают (правда пока нечем измерить периодичность, но за секунду несколько сотен набирается). Да и в даташите: "For isochronous endpoints, the FRAME bit in USBDevIntSt is set every 1 ms." - насколько я понял он взводится автоматически, а не хостом. Поправьте меня, если я неправильно понял этот момент.

Сообщение отредактировал alvy - Jun 9 2010, 05:13
Go to the top of the page
 
+Quote Post
dimka76
сообщение Jun 9 2010, 07:46
Сообщение #4


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(alvy @ Jun 9 2010, 09:08) *
у меня в данный момент USB кабель отключен от макетной платы, а прерывания по FRAME возникают (правда пока нечем измерить периодичность, но за секунду несколько сотен набирается). Да и в даташите: "For isochronous endpoints, the FRAME bit in USBDevIntSt is set every 1 ms." - насколько я понял он взводится автоматически, а не хостом. Поправьте меня, если я неправильно понял этот момент.


Не знал. Я высказал свое предположение из общих соображений.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post



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

 


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


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