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

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

Сообщение hax »

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

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

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

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

Сообщение blackx »

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

Сообщение hax »

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

Сообщение romazan »

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

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

Сообщение misyachniy »

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

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

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

Сообщение Alexeyslav »

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

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

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