Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 108

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 102 103 104 105 106 107 < 108 > 109 110 111 112 113 114 .. 166 >> Следующая

Листинг 13.6 показывает описания и макросы для работы с регистром
UEPCONX.
// Описание регистра sfг UEPCONX = 0xD4;
// типы конечных точек
#defme CONTROL
0x00
#defme ISOCHRONOUS OUT
0x01
tdefine BULK OUT
0x02
tdefine INTERRUPT OUT
0x03
tdefine ISOCHRONOUS IN
0x05
tdefine bulk IN
0x06
tdefine INTERRUPT IN
0x07
Il Описание констант для доступа к битам регистра tdefine MSK_EPEN 0x80 /* включение конечной точки */
// Конфигурирование типа конечной точки tdefine Usb_configure_ep_type(x) (UEPCONX = х)
13.2.7. Регистр UEPSTAX
Регистр uepstax (байт, адрес OxCE) — регистр управления и статуса конечной USB-точки, номер которой задан в регистре uepnum. После сброса регистр принимает значение ООООООООЬ.
332
Часть IV. Создание USB-устройств
Регистр содержит следующие биты:
? [7] dir — бит управления направлением конечной точки. Этот бит учитывается только тогда, когда конечной точке присвоен тип контрольной. Должен быть установлен для стадии данных. Для остальных случаев должен быть сброшен. Этот бит должен быть установлен при RXSETUP-прерывании до изменения состояния любого другого бита. Также он определяет фазу статуса (IN для проверки записи и OUT для контроля чтения). Этот бит должен быть сброшен для стадии статуса контрольной исходящей транзакции;
? [6] зарезервирован — всегда считывается как 0. Не пытайтесь установить этот бит;
? [5] stallrq — бит запроса остановки установления связи. Установка бита приведет к посылке ответа STALL (остановки) ведущему устройству для следующей установки связи. В противном случае этот бит должен быть сброшен;
? [4] TXRDY — управляющий бит готовности передачи пакета. Бит должен быть установлен после записи пакета в FIFO-буфер конечной точки для передачи IN-данных. Данные должны записываться в FIFO-буфер конечной точки только после сброса этого бита. Установка этого бита без записи данных в FIFO-буфер приведет к посылке пакета нулевой длины, который рекомендуется в общем случае и может потребоваться для обозначения передачи в тех случаях, когда длина последнего пакета данных равна максимальной (например, для контрольного считывания передачи). Сбрасывается аппаратно сразу после посылки пакета изохронной конечной точкой или после получения контрольной, пакетной или прерывающей конечной точкой подтверждения от ведущего устройства;
? [3] stlcrc — флаг прерывания при приостановке посылки и флаг прерывания при обнаружении CRC-ошибки:
• для контрольных, пакетных и прерывающих конечных точек он устанавливается аппаратно после посылки при помощи STALLRQ-запроса приостановки установления связи (после этого произойдет прерывание конечной точки, если оно разрешено в регистре uepien) и сбрасывается аппаратно после приема пакета SETUP;
• для изохронных конечных точек этот бит устанавливается аппаратно при обнаружении ошибки в принятых данных (CRC-ошибка в принятых данных), после этого произойдет прерывание конечной точки, если оно разрешено в регистре uepien, и сбрасывается аппаратно после приема неповрежденных данных;
? [2] rxsetup — флаг прерывания при получении пакета SETUP. Устанавливается аппаратно после получения допустимого пакета SETUP от ведущего устройства. После этого произойдет прерывание, если оно разре-
Глава 13. HID-устройство на основе Atmel АТ89С5131
333
шено в регистре uepien. Сбрасывается программно после считывания SETUP-данных из FIFO-буфера конечной точки;
? [1] RxouT — флаг прерывания при принятии исходящих данных. Устанавливается аппаратно после принятия исходящего пакета. После этого произойдет прерывание, если оно разрешено в регистре uepien и все текущие исходящие пакеты отклонены до сброса этого бита. Однако в управляющих конечных точках ранее принятая SETUP-транзакция может переписать содержимое FIFO-буфера конечной точки, даже если был принят пакет данных при установленном этом флаге. Сбрасывается программно после считывания исходящих данных из FIFO-буфера конечной точки;
? [0] тхсмр — флаг прерывания по окончании передачи входящих данных. Устанавливается аппаратно после передачи входящего пакета изохронной точкой или после получения подтверждения приема (ACK) от ведущего устройства контрольной, пакетной или прерывающей конечной точкой. После этого произойдет прерывание, если оно разрешено в регистре uepien. Сбрасывается программно перед следующей установкой бита
txrdy.
Листинг 13.7 показывает описания и макросы для работы с регистром
uepstax.
¦'ya.fJ'""-'К' "VK*"-" * ¦¦•,>•¦¦ .... « ¦¦;•/•!
// Описание регистра sfг uepstax = OxCE;
// Описание констант для доступа к битам регистра
// Флаг прерывания по окончании передачи входящих данных #define mskjtxcmpl 0x01
Il Флаг прерывания при принятии исходящих данных #define msk_rxout 0x02
tdefine msk_RXOUTB0 0x02
II Флаг прерывания при получении пакета setup tdefine msk_rxsetup 0x04
Il Флаг прерывания при приостановке посылки
// Флаг прерывания при обнаружении crc ошибки tdefine msk_stalled 0x08
// Управляющий бит готовности передачи пакета tdefine mskjtxrdy 0x10
Предыдущая << 1 .. 102 103 104 105 106 107 < 108 > 109 110 111 112 113 114 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100