Планирую устройство на at90usb162, программно будет выглядеть как com port.
Необходимо общаться с внешним устройством по специальному однопроводному протоколу, для этого нужно запрещать прерывания на 1mS.
Вопрос: не "отвалится" ли при этом USB устройство? Насколько часто вызываются USB прерывания в AT90USB162?
Уточняю: если бы устройство было UART: UART в AVR не буферизирован, прерывание вызывается после приёма каждого байта, если baudrate 115200, тогда частота прерываний ~11KHz. Если запрещать прерывания дольше чем на 1/11000 сек, данные будут теряться....
Как обстоит дело с USB? там ведь есть буфер приёма?
Как долго можно запрещать прерывания на AT90USB162
- Реклама
- blackx
- Говорящий с текстолитом
- Сообщения: 1518
- Зарегистрирован: Пт дек 28, 2012 21:56:46
- Откуда: St. Petersburg
Re: Как долго можно запрещать прерывания на AT90USB162
Если там полностью аппаратный USB, с чего соединение должно отваливаться?
То, что вы пропускаете свои данные при приеме запретом прерываний это уже другое дело.
То, что вы пропускаете свои данные при приеме запретом прерываний это уже другое дело.
only pure true norwegian blackx 
- hax
- Нашел транзистор. Понюхал.
- Сообщения: 160
- Зарегистрирован: Вт окт 25, 2011 17:39:42
- Откуда: Киев
- Контактная информация:
Re: Как долго можно запрещать прерывания на AT90USB162
Я, конечно, во внутренней реализации USB подробно ещё не разбирался (и многие не разбирались, потому что использовали готовые библиотеки
, но предполагаю возможные проблемы
из-за того, что устройство не обработало пришедший пакет вовремя.
Ведь прерывания от USB зачем-то есть?
из-за того, что устройство не обработало пришедший пакет вовремя.
Ведь прерывания от USB зачем-то есть?
- romazan
- Потрогал лапой паяльник
- Сообщения: 335
- Зарегистрирован: Чт май 21, 2009 13:54:07
- Откуда: Москва
- Контактная информация:
Re: Как долго можно запрещать прерывания на AT90USB162
Не помню точно, но таким видам устройств хост дает определенный отрезок времени на ответ, порог которого по-моему намного выше 1 мс. Я думаю ничего отваливаться не будет. Допустим, во время запрета прерываний приходит пакет, он будет лежать и ждать обработчика в FIFO буфере, а как разрешение на прерывание будет получено - отработает обработка принятого пакета.
вот ряд статей хороший по usb
http://microsin.ru/content/view/1107/44/
вот ряд статей хороший по usb
http://microsin.ru/content/view/1107/44/
-
misyachniy
- Прорезались зубы
- Сообщения: 219
- Зарегистрирован: Вт июл 02, 2013 09:17:49
Re: Как долго можно запрещать прерывания на AT90USB162
В USB FS период планирования обмена для всех устройств как раз 1 мс.Не помню точно, но таким видам устройств хост дает определенный отрезок времени на ответ, порог которого по-моему намного выше 1 мс.
Для HS еще короче, по моему 0,2мс.
То есть драйвер на ПК заготавливает пакеты для отсылки и запросы на прием на 1мс. тайм ауты еще меньше.
После не ответа устройства драйвер производит перезапрос. Пауза между запросами и их количество зависит от ОС.
Нужно попробовать как хотите.
Если не получится можно попробовать сделать устройство HID.
В таком классе периодичность опроса выдается в настройках.
Можно установить период опроса 5 или 10 мс и синхронизироваться по опросу ПК.
- Реклама
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Как долго можно запрещать прерывания на AT90USB162
Если протокол опроса внешнего датчика требует все ресурсы МК - стоит подумать над альтернативным решением опроса входного сигнала, например отдельный чип который только этим и будет заниматься а затем по запросу хоста слать по SPI результат когда это будет удобно хосту а не датчику.
Либо работать по прерываниям - например опрашивать DS18B20 можно использовав таймер в режиме аппаратного захвата - прерывание нужно будет запретить только на время переключения шины датчика и команду старта модуля захвата таймера. Результат можно будет прочитать через любое время - он никуда не денется. При этом реально ресурсов на опрос датчика тратится довольно мало и не требует длительного запрета прерываний.
Либо работать по прерываниям - например опрашивать DS18B20 можно использовав таймер в режиме аппаратного захвата - прерывание нужно будет запретить только на время переключения шины датчика и команду старта модуля захвата таймера. Результат можно будет прочитать через любое время - он никуда не денется. При этом реально ресурсов на опрос датчика тратится довольно мало и не требует длительного запрета прерываний.


