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

 
 
> USB device в LPC, глюк работы или баг в документации?
Alechek
сообщение Jun 29 2009, 08:28
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



В общем дело так, заметил я некую странность еще со времен 2148 - если запретить прерывание по используемой IN ep (необработке его до следующего кадра?), то больше оно не возникает. Прерывание сбрасывается только путем установки бита USBEPINTCLR. Пришлось обрабатывать всегда, даже если нет данных в направлении хоста.

Теперь существующие наработки пытаюсь перенести в 2388 и сделать все под OS: при открытии полученного виртуального COM порта пропадает прерывание IN ep!
Если в обработчике сбрасывать прерывание путем команды "Select Endpoint/Clear Interrupt ", то прерывание почему-то не сбрасывается, обработчик зацикливается.
Если же сброс прерывания осуществлять и путем выполнения команды, и установкой бита в USBEPINTCLR - то все работает замечательно.

Как то реальность расходится с опсанием процесса:
Цитата("LPC23XX User manual")
12.11 Select Endpoint/Clear Interrupt (Command: 0x40 - 0x5F, Data: read 1
byte)
.....
Remark: This command may be invoked by using the USBCmdCode and USBCmdData
registers, or by setting the corresponding bit in USBEpIntClr. For ease of use, using the
USBEpIntClr register is recommended.

Выходит, эти 2 действия не равнозначны?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Axel
сообщение Jun 29 2009, 10:15
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(Alechek @ Jun 29 2009, 11:28) *
В общем дело так, заметил я некую странность еще со времен 2148 - если запретить прерывание по используемой IN ep (необработке его до следующего кадра?), то больше оно не возникает. Прерывание сбрасывается только путем установки бита USBEPINTCLR. Пришлось обрабатывать всегда, даже если нет данных в направлении хоста.

А зачем его запрещать? Оно вроде как и не возникает без повода (при отсутствии передачи в хост)...
ЗЫ: Я тоже использую оба действия: в начале обработчика - команду, в конце - сбрасываю бит. Почему? Так получилось...
Go to the top of the page
 
+Quote Post
Alechek
сообщение Jun 29 2009, 11:13
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(Axel @ Jun 29 2009, 16:15) *
А зачем его запрещать? Оно вроде как и не возникает без повода (при отсутствии передачи в хост)...

Возникает.
Цитата
10.4.1 USB Endpoint Interrupt Status register
All non-isochronous IN endpoints
generate an interrupt when a packet is successfully transmitted, or when a NAK
handshake is sent on the bus and the interrupt on NAK feature is enabled (see Section
13–12.3 “Set Mode (Command: 0xF3, Data: write 1 byte)” on page 352).

Возможно можно обойтись и без прервания по NAK, но я то переделывал IARовский HID когда только-только начинал разбираться с USB. И передача организовал так, что данные отправляются из кольцевого буфера в прерывании по IN ep.
Хотел запрещать прерывания если нет данных и вновь разрешать при отправке данных. Не получилось
Go to the top of the page
 
+Quote Post
Axel
сообщение Jun 29 2009, 11:46
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(Alechek @ Jun 29 2009, 14:13) *
...Возможно можно обойтись и без прервания по NAK...


Так они же возникают редко, только в случае неприятностей, при неприеме хостом пакета и предполагают обработку дисконнекта т.е. не надо без них.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alechek   USB device в LPC   Jun 29 2009, 08:28
|- - VslavX   Цитата(Axel @ Jun 29 2009, 14:46) Так они...   Jun 29 2009, 12:19
|- - Alechek   Цитата(VslavX @ Jun 29 2009, 18:19) Друго...   Jun 30 2009, 08:55
|- - Axel   Цитата(Alechek @ Jun 30 2009, 11:55) Ну ч...   Jun 30 2009, 12:08
|- - VslavX   Цитата(Alechek @ Jun 30 2009, 11:55) Ну ч...   Jun 30 2009, 13:15
|- - Alechek   Цитата(VslavX @ Jun 30 2009, 19:15) Это е...   Jul 1 2009, 06:02
|- - VslavX   Цитата(Alechek @ Jul 1 2009, 09:02) Если ...   Jul 1 2009, 08:14
|- - Alechek   Цитата(VslavX @ Jul 1 2009, 14:14) А я се...   Jul 1 2009, 11:17
|- - sonycman   Хм, если таким образом NAK многократно в течении ф...   Jul 1 2009, 12:36
||- - Alechek   Цитата(sonycman @ Jul 1 2009, 18:36) Хм, ...   Jul 1 2009, 12:50
|- - VslavX   Цитата(Alechek @ Jul 1 2009, 14:17) Так в...   Jul 1 2009, 14:08
|- - sonycman   Цитата(VslavX @ Jul 1 2009, 18:08) А пере...   Jul 1 2009, 17:39
|- - VslavX   Цитата(sonycman @ Jul 1 2009, 20:39) Хост...   Jul 2 2009, 05:31
|- - sonycman   Цитата(VslavX @ Jul 2 2009, 10:31) Думаю,...   Jul 4 2009, 13:36
- - shahr   Цитата(Alechek @ Jun 29 2009, 12:28) Выхо...   Jul 1 2009, 06:47
- - Alechek   Цитата(shahr @ Jul 1 2009, 12:47) То есть...   Jul 1 2009, 08:14


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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 10:38
Рейтинг@Mail.ru


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