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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Непонятки с UDP у SAM7S64
Serg_Sm
сообщение Apr 15 2016, 10:29
Сообщение #31


Частый гость
**

Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167



Так все-таки, подскажите - запрос GetDeviceDescriptor после сброса, есть система запрашивающая 18 байт и честно получающая все 18 байт, эта же система может запросить 8 байт и ждет 8 байт. Тут всё нормально. Но есть система запрашивающая 18 байт, которая после получения 8 байт разрывает обмен и тут же посылает следующий SETUP пакет. Вот здесь и начинается самое интересное - если до разрыва контроллер успел забить очередь следующими 8 байтами, то при получении SETUP получаем тотальный сбой с невозможностью что либо принять/передать по USB, если же очередь заполнить не успели, то всё проходит нормально.
Как на такое реагировать?
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Apr 15 2016, 15:38
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(Serg_Sm @ Apr 15 2016, 13:29) *
Так все-таки, подскажите - запрос GetDeviceDescriptor после сброса, есть система запрашивающая 18 байт и честно получающая все 18 байт, эта же система может запросить 8 байт и ждет 8 байт. Тут всё нормально. Но есть система запрашивающая 18 байт, которая после получения 8 байт разрывает обмен и тут же посылает следующий SETUP пакет. Вот здесь и начинается самое интересное - если до разрыва контроллер успел забить очередь следующими 8 байтами, то при получении SETUP получаем тотальный сбой с невозможностью что либо принять/передать по USB, если же очередь заполнить не успели, то всё проходит нормально.
Как на такое реагировать?


Получили RESET - очищайте все передачи.
И ждите SETUP.
Go to the top of the page
 
+Quote Post
Serg_Sm
сообщение Apr 15 2016, 19:43
Сообщение #33


Частый гость
**

Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167



Цитата(misyachniy @ Apr 15 2016, 19:38) *
Получили RESET - очищайте все передачи.
И ждите SETUP.

RESET получен, SETUP с запросом GetDeviceDescriptor 18 байт length. После 8 байт передачи идет следующий SETUP без RESET и всё. В старых системах (на XP) после такого шел RESET, а на 8-ке SETUP. RESET убрали для повышения скорости.
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Apr 16 2016, 12:29
Сообщение #34


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(Serg_Sm @ Apr 15 2016, 22:43) *
RESET получен, SETUP с запросом GetDeviceDescriptor 18 байт length. После 8 байт передачи идет следующий SETUP без RESET и всё. В старых системах (на XP) после такого шел RESET, а на 8-ке SETUP. RESET убрали для повышения скорости.


В чем вопрос?
Получили RESET - все конечные точки в режим STALL.
Не получили - продолжаете передачу.
Я с SAM7S64 уже лет 5 не работаю.
Но точно помню, что вопросов не возникало.
Go to the top of the page
 
+Quote Post
Serg_Sm
сообщение Apr 18 2016, 06:22
Сообщение #35


Частый гость
**

Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167



Цитата(misyachniy @ Apr 16 2016, 16:29) *
В чем вопрос?
Получили RESET - все конечные точки в режим STALL.
Не получили - продолжаете передачу.
Я с SAM7S64 уже лет 5 не работаю.
Но точно помню, что вопросов не возникало.


RESET уже прошел - обработали и забыли. Далее идет обмен, вот картинка для наглядности:

Прикрепленное изображение

8 байт отослали хосту, затем он рвет связь (что не удается отследить). В это время в очередь загружается последующие 8 байт и с приходом следующего SETUP получаем невосстанавливаемый сбой.
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Apr 18 2016, 17:20
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(Serg_Sm @ Apr 18 2016, 09:22) *
RESET уже прошел - обработали и забыли. Далее идет обмен, вот картинка для наглядности:

Прикрепленное изображение

8 байт отослали хосту, затем он рвет связь (что не удается отследить). В это время в очередь загружается последующие 8 байт и с приходом следующего SETUP получаем невосстанавливаемый сбой.


Не могу понять по картинке, где ошибка?
Ищите у себя в программе.

Вот моих два старых проекта на SAM7S

http://njnmnp.narod.ru/proj/usb_bulk_sam7/usb_bulk_sam7.html
http://njnmnp.narod.ru/proj/prog16/prog16.html
Go to the top of the page
 
+Quote Post
Serg_Sm
сообщение Apr 19 2016, 06:54
Сообщение #37


Частый гость
**

Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167



Цитата(misyachniy @ Apr 18 2016, 20:20) *
Не могу понять по картинке, где ошибка?
Ищите у себя в программе.

Вот моих два старых проекта на SAM7S

http://njnmnp.narod.ru/proj/usb_bulk_sam7/usb_bulk_sam7.html
http://njnmnp.narod.ru/proj/prog16/prog16.html

Ошибка в том, что запрос SetAddress не проходит - SETUP пакет не принимается корректно.
Что касается двух ссылок с проектами, то оба проекта не работают под искомой системой (в Windows XP на другой машине работают).
Отличие только в том, что возвращается STALL на запрос SetAddress (в моем случае идет безответный сбой). Естественно после этого устройство не работоспособно.

PS: Может у кого есть точно рабочий проект с USB на SAM7S64? Проверенный на 8-ке и без больших тормозящих навесок (с задержками более 1мс между обработкой прерываний скорее всего заработает), нужен только процесс энумерации. Хоть бинарник киньте - попробую проверить.
Go to the top of the page
 
+Quote Post
Serg_Sm
сообщение Apr 21 2016, 14:20
Сообщение #38


Частый гость
**

Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167



Всё, вроде разобрался)) Теперь работает везде где проверял с тестами и так (XP, 8.1 и 10).
Причина была во флаге TXCOMP. У меня использовался переделанный пример из под FREERTOS, и есть там такая фича - сброс сразу кучи прерываний в обработчике (осталась у меня в проекте). А TXCOMP был задефайнен в эту кучу. Т.е. TXCOMP сбрасывался еще до обработки прерывания на него. Соответственно сделал сброс TXCOMP только в одном месте после полной обработки соответствующего прерывания - проблема ушла.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 3rd September 2025 - 13:27
Рейтинг@Mail.ru


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