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

 
 
> Прерывания ENDBUSRES и RXRSM
junkl
сообщение May 10 2007, 11:45
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Подскажите, пожалуйста, как решить следующую проблему с прерываниями UDP ENDBUSRES и RXRSM.

Пока устройство не подключено к компьютеру, постоянно идут прерывания ENDBUSRES и RXRSM (поочередно).
После подключения устройства к хосту, эти прерывания перестают генерироваться до включения Pull-up.
Прерывание ENDBUSRES мешает мне передать дескриптор устройства на хост:
подключаю устройство (на AT91RM9200) к компьютеру, включаю PullUp,
возникает прер-ие ENDBUSRES,
затем прер-ие EPOINT0 - получаю пакет SETUP (запрос дескриптора устройства),
передаю первые 8 из 18 байт,
снова прерывание по EPOINT0 - по флагу TX_COMP,
передаю следующие 8 байт дескриптора,
а вот здесь снова возникает прерывание по ENDBUSRES
и я уже никогда не передаю последние 2 байта дескриптора устройства.

Из-за чего это случается? Когда должно происходить прер-ие ENDBUSRES? Только после подключения устройства к хосту и только 1 раз?
И как отключить RXRSM?

AT91F_UDP_DisableIt(AT91C_BASE_UPD, AT91C_UPD_RXRSM) в обработчике прерывания по ENDBUSRES не помогает.

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ignatyy
сообщение May 18 2007, 18:36
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 18-05-07
Пользователь №: 27 820



По моему опыту запретить прерывание ENDBUSRES просто не возможно. Нет даже в Datashit
в регистре _IDR такого бита.В момент сброса линии стирается _IMR ( становится =0x13 что равно
прерываниям ENDBUSRES + RXRSM +RXSUSP). а также разрешаются все прерывания.
В обработчике надо просто игнорировать эти прерывания, но в AIC посадить срабатывание по фронтам.
Сложнее другое, в работе могут разрешенные ранее прерывания по точке просто само отменяться(скорее всего глюк атмела). Для исправления можно включить таймер и по его прерыванию иногда восстанавливать _IER . Особенно обратите внимание на разницу в стандартах 1.1 и 2.0 по нулевым ответам на запросы от хоста. Так в 2.0 при передачи пакетов с длиной кратной объему точки нужно послать в конце и пакет нулевой длины ( исключение - если хост послал в 0 точку запрос на 8,16,24...
байт и столько же содержится в дескрипторе нг передачу).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 05:57
Рейтинг@Mail.ru


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