В HTML      В PDF
микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > AVR

реклама

 
радиационно стойкие ПЗУ Миландр

Продажа силового и бронированного кабеля и провода в Москве




Arduino Uno R3 Atmega328
готовый модуль
Лучшая Цена 335 руб




Стартовый набор с большим набором аксесуаров
Arduino Uno R3 Atmega328
Лучшая Цена 2211 руб



22.7. Установка адреса

Адрес USB устройства устанавливается согласно USB протоколу:

  • адрес USB устройства после включения 0,
  • хост посылает команду SETUP (SET_ADDRESS(addr)),
  • программа записывает этот адрес в UADD, но сохраняет бит ADDEN сброшенным
  • USB устройство посылает IN-команду длиной 0 байт (IN 0 Zero Length Packet),
  • затем программа может активировать адрес USB устройства путем установки ADDEN.

Единственный принимаемый контроллером адрес - это адрес, который хранится в UADD. Не должна проводиться одновременная запись в ADDEN and UADD. В UADD после включения или USB сброса хранится значение по умолчанию 0x00. ADDEN сбрасывается аппаратно в следующих случаях:

  • после включения питания или сброса,
  • после получения USB сброса,
  • при выключении контроллера USB (сброс USBE).

Когда этот бит сброшен, используется адрес устройства по умолчанию 0x00.

22.8. Приостановка, пробуждение и возобновление (resume)

После 3 мс, в течение которых USB линия неактивна, контроллер переходит в режим full speed и возникает прерывание SUSPI (если разрешено). После этого программа может установить бит FRZCLK.

В зависимости от архитектуры программного обеспечения ЦПУ также может перейти в режим "idle" для уменьшения потребляемой мощности.

Существует два способа выхода из режима приостановки:

  • первый: сброс бита FRZCLK. Это возможно, если ЦПУ на находится в режиме "idle" ,
  • второй: разрешение прерывания WAKEUPI (установка WAKEUPE), если ЦПУ в режиме "idle" . Затем, как только контроллер обнаруживает сигнал вывода из режима "idle" , возникает прерывание WAKEUPI . После этого программа должна сбросить бит FRZCLK для возобновления передачи данных.

Нет никакой связи между прерываниями SUSPI и WAKEUPI: прерывание WAKEUPI возникает как только появляется сигнал вывода из режима "idle" на линиях данных. Таким образом, прерывание WAKEUPI может возникнуть даже если контроллер не приостановлен. При возникновении прерывания WAKEUPI, если бит SUSPI уже был установлен, то он сбрасывается аппаратно. При возникновении прерывания SUSPI, если бит WAKEUPI уже был установлен, то он сбрасывается.

22.9. Отсоединение

Значение бита DETACH после сброса установлено в "1". Ренумерация (re-enumeration ) устройства возможна путем установки и сброса бита DETACH.

Установка DETACH отключает подтяжку на линии D+ или D- (в зависимости от выбранного режима full или low speed ). После чего сброс бита DETACH приводит к включении подтяжки на линии D+ или D- .

Отсоединение устройства в режиме Full-speed
Рисунок 22.3. Отсоединение устройства в режиме Full-speed

22.10. Удаленное пробуждение

"Удаленное пробуждение" - это единственная команда, которая может быть послана устройством по своей собственной инициативе. Но для этого изначально необходимо получить запрос DEVICE_REMOTE_WAKEUP от хоста.

  • Сначала USB контроллер должен обнаружить "приостановленное" состояние линий: "удаленное пробуждение" может быть послано только если флаг SUSPI установлен.
  • После чего есть возможность программно установить RMWKUP для посылки "upstream resume" потока. Это будет осуществлено контроллером автоматически после 5мс неактивности на линии USB.
  • Когда контроллер начинает посылать "upstream resume", возникает прерывание UPRSMI (если разрешено). SUSPI сбрасывается аппаратно.
  • RMWKUP сбрасывается аппаратно по окончании "upstream resume".
  • Если контроллер обнаруживает правильный сигнал "End Of Resume" от хоста, то возникает прерывание EORSMI (если разрешено).

22.11. Запрос останова (STALL)

Для каждой конечной точки останов осуществляется с помощью 3 битов:

  • STALLRQ (разрешение ответа stall на запрос )
  • STALLRQC (запрет ответа stall на запрос )
  • STALLEDI (прерывания при посылке stall)

Для посылки подтверждения (handshake) stall при следующем запросе должен быть установлен бит STALLRQ. На все последующие запросы будет посылаться stall, пока не будет установлен бит STALLRQC. Установка бита STALLRQC приводит к автоматическому сбросу бита STALLRQ. Бит STALLRQC аппаратно сбрасывается сразу после программной установки. Таким образом, программа никогда не считает из этого бита 1.

После отправки каждого stall подтверждения аппаратно устанавливается флаг STALLEDI и возникает прерывание EPINTx (если разрешено). Входящие пакеты будут игнорироваться (RXOUT и RWAL не будут устанавливаться).

Когда хост пошлет команду на сброс STALL, от программы требуется лишь установить бит STALLRQC и сбросить конечную точку.

22.11.1. Некоторые особенности управляющих конечных точек

Запрос SETUP всегда принимается (в ответ посылается ACK). Если для управляющей конечной точки установлено отвечать stall на все запросы, а приходит запрос SETUP, то этот запрос должен быть принят (в ответ посылается ACK),флаги STALLRQ и STALLEDI автоматически сбрасываются (RXSETUPI устанавливается, TXIN сбрасывается, STALLED сбрасывается, TXINI сбрасывается...).

Такая обработка упрощает процесс энумерации (enumeration). Если команда не поддерживается или содержит ошибку, программа выставляет флаг запроса STALL и может вернуться к основной задаче, ожидая следующего запроса SETUP. Эта функция соответствует тексту главы 8 спецификации USB 2.0, т.е. возможной посылке дополнительного статуса в ответ на запрос GET_DESCRIPTOR. Программа устанавливает флаг запроса STALL после получения статуса. Все дополнительные статусы будут автоматически игнорироваться до следующего запроса SETUP.

22.11.2. Подтверждение (handshake) STALL и механизм повторной передачи

Механизм повторной перtдачи имеет более высокий приоритет относительно отправки подтверждения STALL. Подтверждение STALL посылается, если бит STALLRQ установлен и если нет запроса повтора передачи.



<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (495) 514 4110. e-mail:info@eust.ru
©1998-2016 ООО Рынок Микроэлектроники