[an error occurred while processing this directive]
Ответ: Про setup...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено DmitruB 17 февраля 2006 г. 18:21
В ответ на: Про setup... отправлено <font color=gray>делавший</font> 16 февраля 2006 г. 16:43

Спасибо, но похоже, дело не в этом.

Всего пытаюсь отправить в ответ 8 байт из 26-байтного дескриптора. 8 это максимальный размер пакета для EP0. По описанию, прерывание на команду обрабатывается так.

• Host sends a SETUP packet.

• Host sends a DATA packet (80 06 00 01 00 001200).
(В моем случае получено 80 06 0100 0000 0040, т.е. ждут максимум 0x40 байт ответа)

• Device sends an ACK packet.

• An EP0 interrupt is triggered and the USB EP0 handler is called:
– No transfer is in progress; SETUP_END and SENT_STALL are both 0 while OUT_PKT_RDY is 1.
(Именно так)

• Handler reads the EP0 FIFO and decodes command (GET_DESCRIPTOR_DEVICE).
(Да, она самая 06 01 00 - GET_DESCRIPTOR(DESCR_DEVICE,0))

• Handler calls function to handle GET_DESCRIPTOR command.

• Function programs INDEX to 0. (Выбор банка регистров EP0)
• Function programs CLR_OUT.

• Function loads the first packet into the EP0 FIFO, keeping track of the next packet to be loaded.
(загрузил первые 8 байт из 26 байтного дескриптора устройства, в первых 8-ми есть размер и тип структуры)

• Function sets IN_PKT_RDY and returns.

• Handler exits.

Все флаги выставил в нужной последовательности.
По сбросу IN_PKT_RDY должно произойти очередное прерывание, что 8 байт ушли и пора загрузить следующую порцию. Но вот не приходит, а идет ресет.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru