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

 
 
> USB на SAM7 зацикливается в прерывнаии при получении пакета, Больно пните если вопрос глуп
InsolentS
сообщение Apr 10 2008, 22:40
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Здравствуйте! С USB устройствами я знаком не очень глубоко, а тут задача встала сделать простенькое, в режиме Bulk. Bulk стек выдрал из кеиловского MSD примера, получилось примерно так:
Код
void USB_EndPoint4 (DWORD event) {
  BYTE buff[64];
  USB_ReadEP(USB_ENDPOINT_OUT(4), buff);    
}

void USB_EndPoint5 (DWORD event) {
  BYTE buff[64]={'H','e','l','l','o',' ','W','o','r','l','d','!',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0};
  USB_WriteEP(USB_ENDPOINT_IN(5), buff, 64);
}

Но: прерывание по 5ому ендпоинту вообще никогда не вызывается, а по 4му:
когда шлю от компа первый пакет данных - он принимается на "ура", всё ок.
Когда шлю второй пакет - устройство зацикливается в прерывании от ендпоинта, причём в buff приходит всякая чушь.
Родной кеиловский MSD работает отлично. Подскажите пожалуйста, где я ступил, такое чувство, что лишнее отрезал, как будто флаг прерывания не сбрасываю, что ли..


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
InsolentS
сообщение Apr 11 2008, 02:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Всё, разобрался.
Причина оказалась в том, что кеиловский стек юзает константу
Код
const BYTE  DualBankEP = 0x06;

т.е. считает что только 1ый и 2ой ендпоинты Dual-Banked.
На самом же деле 4ый и 5ый тоже такими являются. Из-за этого весь сыр-бор и происходил.
Если у кого-то будет похожая проблема, нужно в файле usbcfg.h заменить
Код
const BYTE  DualBankEP = 0x06;
на
const BYTE  DualBankEP = 0x36;


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 21:38
Рейтинг@Mail.ru


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