Всем привет я что то не понял из даташита что надо сделать чтоб device отвечал пакетом stall или nac, как отправить эти пакеты?
вот из даташита
http://www.gaw.ru/ht...90usb/22_11.htm
Чтобы следующим запросом был отправлен пакет подтверждения STALL, необходимо установить бит STALLRQ. Все последующие запросы будут подтверждаться с помощью STALL до тех пор, пока установлен бит STALLRQC.
Установка STALLRQC приводит к автоматическому обнулению бита STALLRQ. Бит STALLRQC моментально обнуляется аппаратными средствами сразу после его программной установки. Таким образом, при опросе данного бита никогда не возвращается единичное значение.
При каждой отправке подтверждения типа STALL USB-контроллер устанавливает флаг STALLEDI, при этом, генерируется прерывание EPINTx (если оно было разрешено).
Входящие пакеты будут отклонены (RXOUTI и RWAL не будут установлены).
После этого, Host-сторона отправит команду для сброса функции STALL: все, что должна сделать программа в этом случае - это установить бит STALLRQC и сбросить конечную точку.
Запрос SETUP всегда подтверждается пакетом ACK.
Если для конечной точки типа CONTROL задана передача пакета STALL и, при этом, появляется запрос SETUP, этот запрос подтверждается пакетом ACK, а флаги запроса (STALLRQ) и отправки (STALLEDI) автоматически сбрасываются (RXSETUPI=1, TXIN=0, STALLED=0, TXINI=0...).
Такой механизм упрощает управление процессом перечисления. Если команда не поддерживается или содержит ошибку, программа устанавливает флаг запроса STALL и возвращается к основной задаче, ожидая следующего запроса SETUP.
Данная функция совместима с тестом из раздела 8, в котором отправляется дополнительный статус для GET_DESCRIPTOR. Программа устанавливает запрос STALL только после приема статуса. Все дополнительные статусы будут автоматически подтверждаться пакетом STALL вплоть до следующего запроса SETUP.
Механизм повтора (RETRY) имеет более высокий приоритет, чем подтверждение типа STALL. Подтверждение типа STALL отправляется, если установлен бит запроса STALLRQ и если нет необходимости в повторе.
Там вроде если запишешь 1 в STALLRQ , то по описанию на все остальные запросы будет отправка пакета stall, а мне к примеру может потребоваться отправка пакета только на текущий запрос. Вот это вообще перепутан перевод не понятно
Раздел: AVR
вот из даташита
http://www.gaw.ru/ht...90usb/22_11.htm
Цитата
22.11. Передача пакета STALL
Для каждой конечной точки управление функцией STALL осуществляется с использование следующих бит:
- STALLRQ (разрешение запроса STALL)
- STALLRQC (отключение запроса STALL)
- STALLEDI (флаг прерывания по отправке STALL)
Чтобы следующим запросом был отправлен пакет подтверждения STALL, необходимо установить бит STALLRQ. Все последующие запросы будут подтверждаться с помощью STALL до тех пор, пока установлен бит STALLRQC.
Установка STALLRQC приводит к автоматическому обнулению бита STALLRQ. Бит STALLRQC моментально обнуляется аппаратными средствами сразу после его программной установки. Таким образом, при опросе данного бита никогда не возвращается единичное значение.
При каждой отправке подтверждения типа STALL USB-контроллер устанавливает флаг STALLEDI, при этом, генерируется прерывание EPINTx (если оно было разрешено).
Входящие пакеты будут отклонены (RXOUTI и RWAL не будут установлены).
После этого, Host-сторона отправит команду для сброса функции STALL: все, что должна сделать программа в этом случае - это установить бит STALLRQC и сбросить конечную точку.
22.11.1. Особенности работы конечных точек типа CONTROL
Запрос SETUP всегда подтверждается пакетом ACK.
Если для конечной точки типа CONTROL задана передача пакета STALL и, при этом, появляется запрос SETUP, этот запрос подтверждается пакетом ACK, а флаги запроса (STALLRQ) и отправки (STALLEDI) автоматически сбрасываются (RXSETUPI=1, TXIN=0, STALLED=0, TXINI=0...).
Такой механизм упрощает управление процессом перечисления. Если команда не поддерживается или содержит ошибку, программа устанавливает флаг запроса STALL и возвращается к основной задаче, ожидая следующего запроса SETUP.
Данная функция совместима с тестом из раздела 8, в котором отправляется дополнительный статус для GET_DESCRIPTOR. Программа устанавливает запрос STALL только после приема статуса. Все дополнительные статусы будут автоматически подтверждаться пакетом STALL вплоть до следующего запроса SETUP.
<a name="22.11.2" style="font-size: 10pt; color: rgb(14, 80, 203);">22.11.2. Подтверждение типа STALL и механизм подтверждения
Механизм повтора (RETRY) имеет более высокий приоритет, чем подтверждение типа STALL. Подтверждение типа STALL отправляется, если установлен бит запроса STALLRQ и если нет необходимости в повторе.
Там вроде если запишешь 1 в STALLRQ , то по описанию на все остальные запросы будет отправка пакета stall, а мне к примеру может потребоваться отправка пакета только на текущий запрос. Вот это вообще перепутан перевод не понятно
Цитата
Если для конечной точки типа CONTROL задана передача пакета STALL и, при этом, появляется запрос SETUP, этот запрос подтверждается пакетом ACK,
Раздел: AVR