Как долго можно запрещать прерывания на AT90USB162

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
hax
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Вт окт 25, 2011 17:39:42
Откуда: Киев
Контактная информация:

Как долго можно запрещать прерывания на AT90USB162

Сообщение hax »

Планирую устройство на at90usb162, программно будет выглядеть как com port.
Необходимо общаться с внешним устройством по специальному однопроводному протоколу, для этого нужно запрещать прерывания на 1mS.

Вопрос: не "отвалится" ли при этом USB устройство? Насколько часто вызываются USB прерывания в AT90USB162?

Уточняю: если бы устройство было UART: UART в AVR не буферизирован, прерывание вызывается после приёма каждого байта, если baudrate 115200, тогда частота прерываний ~11KHz. Если запрещать прерывания дольше чем на 1/11000 сек, данные будут теряться....

Как обстоит дело с USB? там ведь есть буфер приёма?
Реклама
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Как долго можно запрещать прерывания на AT90USB162

Сообщение blackx »

Если там полностью аппаратный USB, с чего соединение должно отваливаться?
То, что вы пропускаете свои данные при приеме запретом прерываний это уже другое дело.
Изображение only pure true norwegian blackx Изображение
Реклама
Аватара пользователя
hax
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Вт окт 25, 2011 17:39:42
Откуда: Киев
Контактная информация:

Re: Как долго можно запрещать прерывания на AT90USB162

Сообщение hax »

Я, конечно, во внутренней реализации USB подробно ещё не разбирался (и многие не разбирались, потому что использовали готовые библиотеки :), но предполагаю возможные проблемы
из-за того, что устройство не обработало пришедший пакет вовремя.
Ведь прерывания от USB зачем-то есть?
Аватара пользователя
romazan
Потрогал лапой паяльник
Сообщения: 335
Зарегистрирован: Чт май 21, 2009 13:54:07
Откуда: Москва
Контактная информация:

Re: Как долго можно запрещать прерывания на AT90USB162

Сообщение romazan »

Не помню точно, но таким видам устройств хост дает определенный отрезок времени на ответ, порог которого по-моему намного выше 1 мс. Я думаю ничего отваливаться не будет. Допустим, во время запрета прерываний приходит пакет, он будет лежать и ждать обработчика в FIFO буфере, а как разрешение на прерывание будет получено - отработает обработка принятого пакета.

вот ряд статей хороший по usb
http://microsin.ru/content/view/1107/44/
Реклама
Эиком - электронные компоненты и радиодетали
misyachniy
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт июл 02, 2013 09:17:49

Re: Как долго можно запрещать прерывания на AT90USB162

Сообщение misyachniy »

Не помню точно, но таким видам устройств хост дает определенный отрезок времени на ответ, порог которого по-моему намного выше 1 мс.
В USB FS период планирования обмена для всех устройств как раз 1 мс.
Для HS еще короче, по моему 0,2мс.

То есть драйвер на ПК заготавливает пакеты для отсылки и запросы на прием на 1мс. тайм ауты еще меньше.
После не ответа устройства драйвер производит перезапрос. Пауза между запросами и их количество зависит от ОС.

Нужно попробовать как хотите.
Если не получится можно попробовать сделать устройство HID.
В таком классе периодичность опроса выдается в настройках.
Можно установить период опроса 5 или 10 мс и синхронизироваться по опросу ПК.
Реклама
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Как долго можно запрещать прерывания на AT90USB162

Сообщение Alexeyslav »

Если протокол опроса внешнего датчика требует все ресурсы МК - стоит подумать над альтернативным решением опроса входного сигнала, например отдельный чип который только этим и будет заниматься а затем по запросу хоста слать по SPI результат когда это будет удобно хосту а не датчику.

Либо работать по прерываниям - например опрашивать DS18B20 можно использовав таймер в режиме аппаратного захвата - прерывание нужно будет запретить только на время переключения шины датчика и команду старта модуля захвата таймера. Результат можно будет прочитать через любое время - он никуда не денется. При этом реально ресурсов на опрос датчика тратится довольно мало и не требует длительного запрета прерываний.
Реклама
Ответить

Вернуться в «AVR»