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

 

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

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

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

Регистр содержит следующие биты:
? [7:6] зарезервированы — всегда считываются как 0. Не пытайтесь установить эти биты;
? [5] Ewupcpu — бит разрешения прерывания при пробуждении ЦП. Установка этого бита разрешает прерывание при пробуждении ЦП. Сброс бита запрещает прерывание при пробуждении ЦП;
? [4] EEORiNT — бит разрешения прерывания по окончании сброса. Установка этого бита разрешает прерывание по окончании сброса. Сброс этого бита запрещает прерывание по окончании сброса;
? [3] ESOFiNT — бит разрешения прерывания при обнаружении начала кадра. Установка этого бита разрешает прерывание при обнаружении начала кадра. Сброс этого бита запрещает прерывание при обнаружении начала кадра;
? [2:1] зарезервированы — всегда считываются как 0. Не пытайтесь установить эти биты;
Глава 13. HlD-устройство на основе Atmel АТ89С5131
329
? [0] ESPiNT — бит разрешения прерывания при обнаружении приостановки. Установка этого бита разрешает прерывание при обнаружении приостановки. Сброс этого бита запрещает прерывание при обнаружении приостановки.
Листинг 13.4 показывает описания и макросы для работы с регистром
USBIEN.
Il Описание регистра Sfг USBIEN = OxBE;
// Описание констант для доступа к битам регистра !define MSK_ESPINT 0x01 #define MSK_ESOFINT 0x08 #define MSK_EEORINT 0x10 #define MSK_EWUPCPU 0x20 Il Макросы для доступа к битам регистра #define Usb_enable_reset_int() #define Usb_enable_resume_int() #define Usb_enable_sof_int() #define Usb_enable_suspend_int() #define Usb_disable_reset_int() #define Usb_disable_resume_int() #define Usb_disable_sof_int() !define Usb disable_suspend int()
(USBIEN 1= MSK_EEORINT)
(USBIEN I= MSK_EWUPCPU)
(USBIEN I= MSK_ESOFINT)
(USBIEN I= MSK_ESPINT)
(USBIEN 5= ~MSK_EEORINT)
(USBIEN S= ~MSK_EWUPCPU)
(USBIEN &= ~MSK_ESOFINT)
(USBIEN S= ~MSK ESPINT)
13.2.5. Регистр UEPNUM
Регистр UEPNUM (байт, адрес 0хС7) — регистр номера USB конечной точки. После сброса регистр принимает значение 00000000b.
Регистр содержит следующие биты:
? [7:2] зарезервированы — всегда считываются как 0. Не пытайтесь установить эти биты;
? [1:0] EPNUMi: EPNUMO — биты номера конечной точки. Задают номер конечной точки, к которой будет происходить обращение при считывании
И ЗаПИСИ реГИСТрОВ UEPSTAX, UEPDATX, UBYCTLX ИЛИ UEPCONX.
Листинг 13.5 показывает описания и макросы для работы с регистром
UEPNUM.
330
Часть IV. Создание USB-устройств
нг 13.5. Регистр UEPNOM "!
IJ Описание регистра sfг UEPNUM = 0хС7;
// Макрос выбора номера конечной точки !define Usb_select_ep(е)
(uepnum = е)
13.2.6. Регистр UEPCONX
Регистр uepconx (байт, адрес 0xD4) — управляющий регистр конечной USB-точки, номер которой задан в регистре uepnum. После сброса регистр принимает значение ООООООООЬ.
Регистр содержит следующие биты:
? [7] Epen — бит активизации конечной точки. Установка бита включает конечную точку в соответствии с конфигурацией прибора. Нулевая конечная точка всегда активизируется после аппаратного сброса или сброса шины USB и участвует в конфигурации прибора. Сброс бита отключает конечную точку в соответствии с конфигурацией прибора;
? [6:4] зарезервированы — всегда считываются как 0. Не пытайтесь установить эти биты;
? [3] DTGL — бит изменения статуса данных (только чтение). Устанавливается аппаратно при приеме пакета DATAl. Сбрасывается аппаратно при приеме пакета DATAO;
? [2] EPDiR — бит установки направленности конечных точек. Установка бита устанавливает пакетные, прерывающие и изохронные конечные точки в режим приема. Сброс бита устанавливает пакетные, прерывающие и изохронные конечные точки в режим передачи. Бит не влияет на управляющие конечные точки;
? [1:0] EPTYPEi .•EPTYPEO — биты установки типа конечных точек (для нулевой конечной точки всегда должен быть установлен "управляющий" тип):
• 00 — управляющая конечная точка;
• 01 — изохронная конечная точка;
• 10 — пакетная конечная точка;
• 11 — прерывающая конечная точка.
Заметим, что если новый пакет данных принимается до изменения состояния бита DTGL с 0 на 1 или с 1 на 0, то возможна потеря пакета. Когда это происходит у пакетной конечной точки, встроенное программное обеспече-
Глава 13. HID-устройство на основе Atmel АТ89С5131
331
ние прибора должно предположить, что ведущее устройство повторило передачу правильно принятого пакета, т. к. ведущее устройство не приняло правильного подтверждения (АСК), после этого программа должна отказаться от передачи нового пакета (конечная точка сбрасывается к DATAO только при конфигурировании). У конечных точек, являющихся источником прерывания, переключение данных управляется так же, как и при использовании пакетных конечных точек. В управляющих конечных точках каждая транзакция SETUP начинается с DATA0, и переключение данных, в этом случае, используется, как и у пакетных конечных точек, до тех пор, пока не закончится стадия DATA (при контроле записи посылки); стадия STATUS завершает передачу DATAl (при контроле считывания посылки). Для изохронных конечных точек встроенное программное обеспечение прибора будет восстанавливать каждый новый пакет данных и может игнорировать этот бит.
Предыдущая << 1 .. 101 102 103 104 105 106 < 107 > 108 109 110 111 112 113 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100