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

 

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

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

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

Листинг 13.1 показывает описания и макросы для работы с регистром
usbcon.
ЦПиСТИНГ 13.1. Регистр USBCON
// Описание регистра Sfг USBCON = OxBC; // Описание констант для доступа к битам регистра
#define MSK_ JJSBE 0x80 // Бит включения модуля USB
#define MSK_ SUSPCLK 0x40 // Бит приостановки синхронизации USB
#define MSK_ JSDRMWUP 0x20 // Бит передачи удаленного пробуждения
tdefine MSK_ J)ETACH 0x10 // Отключение от линии
#define MSK_ UPRSM 0x08 // Бит резюме исходящего потока (г/о)
#define MSK_ RMWUPE 0x04 // Бит разрешения удаленного пробуждения
tdefine MSK _CONFG 0x02 // Конфигурационный бит
tdefine MSK FADDEN 0x01 // Бит разрешения функции адресации
326
Часть IV. Создание USB-устройств
Il Включение/выключение модуля USB
#define Usb_enable() (USBCON I= MSKJJSBE)
#define Usb_disable() (USBCON S= ~MSK_USBE) Il Подключение/отключение от линии
!define Usb_detach() (USBCON I= MSK_DETACH)
#define Usb_attach() (USBCON S= ~MSK_DETACH) Il Конфигурационный бит
#define Usb_set_CONFG() (USBCON |= MSK_C0NFG)
#define Usb_clear_CONFG() (USBCON S= ~MSK_C0NFG) Il Бит разрешения функции адресации
#define Usb_set_FADDEN() (USBCON |= MSK_FADDEN)
#define Usb_clear_FADDEN() (USBCON S= ~MSK_FADDEN) Il Бит приостановки синхронизации USB
!define Usb_set_suspend_clock() (USBCON I= MSK-SUSPCLK)
#define Usb clear_suspend_clock() (USBCON S= ~MSK SUSPCLK)
13.2.2. Регистр USBADDR
Регистр usBADDR (байт, адрес ОхСб) — регистр USB-адреса. После сброса регистр принимает значение ООООООООЬ.
Регистр содержит следующие биты:
[7] fen — бит активизации функции. Устанавливается для активизации функции. Программное обеспечение прибора установит этот бит после приема сброса USB и примет участие в текущем конфигурационном процессе с установленным по умолчанию адресом (fen сбросится в 0);
[6:0] UADD6: uaddo — биты USB-адреса. Эти биты содержат заданный по умолчанию адрес после включения питания или сброса USB-шины. Запись их состояния произойдет после принятия программным обеспечением прибора запроса set_address.
Листинг 13.2 показывает описания и макросы для работы с регистром
USBADR.
// Описание регистра Sfr USBADDR = ОхСб;
Il Описание констант для доступа к битам регистра #define msk fen 0x80
Глава 13. HID-устройство на основе Atmel АТ89С5131
327
Il Конфигурирование USB-адреса #define Usb_configure_address(x) (define Usb_address()
(USBADDR = (0x80 I x)) (USBADDR & 0x7F)
13.2.3. Регистр USBINT
Регистр usbint (байт, адрес OxBD) — регистр флагов основных USB-прерываний. После сброса регистр принимает значение 00000000b.
Регистр содержит следующие биты:
? [7:6] зарезервированы — всегда считываются как 0. Не пытайтесь установить эти биты;
? [5] wupcpu — флаг прерывания пробуждения ЦП. Устанавливается аппа-ратно, когда находящийся в режиме SUSPEND USB-контроллер перезапускается сигналом активности USB-шины (но не резюме исходящего потока). Установка этого бита вызывает USB-прерывание, когда установлен бит EWUPCPu в регистре USBiEN. Сбрасывается программно после переключения всех USB-синхроимпульсов;
? [4] EORiNT — флаг прерывания окончания сброса. Устанавливается аппа-ратно при обнаружении USB-контроллером окончания сброса. Установка этого бита вызывает USB-прерывание, когда установлен бит eeorint в регистре usBiEN. Сбрасывается программно;
? [3] SOFiNT — флаг прерывания при обнаружении начала кадра. Устанавливается аппаратно после приема пакета начала кадра sof. Установка этого бита вызывает USB-прерывание, когда установлен бит esofint в регистре usBiEN. Сбрасывается программно;
? [2:1] зарезервированы. Всегда считываются как 0. Не пытайтесь установить эти биты;
? [0] SPiNT — флаг прерывания по приостановке. Устанавливается аппаратно при обнаружении USB-приостановки (шина не занята в течение трех кадровых периодов, т. е. состояние J в течение 3 мс). Установка этого бита вызывает USB-прерывание, когда установлен бит espint в регистре usBiEN. Сбрасывается программно.
Листинг 13.3 показывает описания и макросы для работы с регистром
USBINT.
// Описание регистра sfr USBINT = OxBD;
328
Часть IV. Создание USB-устройств
Il Описание констант для доступа к битам регистра
!define MSK_SPINT OxOl II Флаг прерывания при приостановке
#define MSK_SOFINT 0x08 Il Флаг прер-я при обнаружении начала кадра
#define MSKJSORINT 0x10 // Флаг прерывания окончания сброса
#define MSK_WUPCPU 0x20 // Флаг прерывания пробуждения ЦП
// Флаг прерывания окончания сброса
tdefine Usb_clear_reset() tdefine Usb_reset() // Флаг прерывания пробуждения ЦП tdefine Usb_clear_resume() tdefine Usb resume ()
(USBINT S= ~MSK_EORINT)
(USBINT S MSK_EORINT)
(USBINT S= ~MSK_WUPCPU)
(USBINT S MSK WUPCPU)
Il Флаг прерывания при обнаружении начала кадра
tdefine Usb_clear_sof() tdefine Usb_sof()
// Флаг прерывания при приостановке tdefine Usb_clear_suspend() tdefine Usb_suspend()
(USBINT &= ~MSK_SOFINT)
(USBINT S MSK_SOFINT)
(USBINT S= ~MSK_SPINT)
(USBINT S MSK SPINT)
13.2.4. Регистр USBIEN
Регистр USBiEN (байт, адрес OxBE) — регистр разрешений основных USB-прерываний. После сброса регистр принимает значение ООООООООЬ.
Предыдущая << 1 .. 100 101 102 103 104 105 < 106 > 107 108 109 110 111 112 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100