Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-апр-25 19:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-ноя-23 14:34 
Не в сети

Зарегистрирован: 2015-ноя-23 14:04
Сообщения: 12
Здравствуйте, у меня вопрос касательно USB модуля микропроцессора 1886ВЕ4У. Раньше никогда не сталкивался с программированием микроконтроллеров. Пытаюсь сделать устройство чтения информации(на основе микроконтроллера 1886ве4у) и передачи ее по USB на компьютер. Считанную информацию храню в памяти данных МК (банки с 0 по 2-й включительно). Вопросы такие:
1) Как организована FIFO очередь оконечных точек блока USB, т.е. поделена ли на банки, какие диапазоны адресов?или она заполняется автоматически в цикле через регистр данных конечной точки,с проверкой условия на заполнение FIFO-очереди?
2) В дескрипторе конечной точки, используемой для передачи с МК на компьютер, какой тип точки указывать?Потому что передача типа IN-с МК на хост,но при этом сама точка должна быть типа OUT?
3) В дескрипторе устройства есть 2 байта под версию USB в BCD формате,какой из них старший,а какой младший? (имеется ввиду,что версию 1.1 надо записывать в формате 0110h, то есть по сути в один байт записываем число 01,а в другой 10,просто по порядку это делать?)
4) Опять же касательно дескриптора устройства.Его размер 18 байт, при этом в спецификации в поле размера указано 18h, но в десятичной это уже 24 байта!или под записью 18h и имеется ввиду 18 байт?
5) Поля дескриптора с пометкой "назначается usb" необходимо прописывать вручную?

P.S. Все пишу на ассемблере, может у кого есть примеры проектов с прошивкой МК 1886 в части USB


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-ноя-24 19:36 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
RomaElektrik писал(а):
Здравствуйте, у меня вопрос касательно USB модуля микропроцессора 1886ВЕ4У. Раньше никогда не сталкивался с программированием микроконтроллеров. Пытаюсь сделать устройство чтения информации(на основе микроконтроллера 1886ве4у) и передачи ее по USB на компьютер. Считанную информацию храню в памяти данных МК (банки с 0 по 2-й включительно). Вопросы такие:
1) Как организована FIFO очередь оконечных точек блока USB, т.е. поделена ли на банки, какие диапазоны адресов?или она заполняется автоматически в цикле через регистр данных конечной точки,с проверкой условия на заполнение FIFO-очереди?
2) В дескрипторе конечной точки, используемой для передачи с МК на компьютер, какой тип точки указывать?Потому что передача типа IN-с МК на хост,но при этом сама точка должна быть типа OUT?
3) В дескрипторе устройства есть 2 байта под версию USB в BCD формате,какой из них старший,а какой младший? (имеется ввиду,что версию 1.1 надо записывать в формате 0110h, то есть по сути в один байт записываем число 01,а в другой 10,просто по порядку это делать?)
4) Опять же касательно дескриптора устройства.Его размер 18 байт, при этом в спецификации в поле размера указано 18h, но в десятичной это уже 24 байта!или под записью 18h и имеется ввиду 18 байт?
5) Поля дескриптора с пометкой "назначается usb" необходимо прописывать вручную?

P.S. Все пишу на ассемблере, может у кого есть примеры проектов с прошивкой МК 1886 в части USB

1. Для каждой оконечной точки есть свой FIFO буфер с максимальным объемом 64 байта. Доступ, чтение или запись, осуществляется последовательно через регистр данных данной точки.

2. Цитата (спецификация, страница 92): "Пользовательские оконечные точки могут быть сконфигурированы в режимы IN или OUT. В режиме IN оконечная точка обеспечивает передачу данных от микроконтроллера к хост-контроллеру. В режиме OUT оконечная точка обеспечивает прием данных от хост-контроллера к микроконтроллеру."

3. Смотрите в фрагменте дескриптора ниже (для USB 1.1).

4. Если Вы про "Standard Device Descriptor", то h18 это ошибка "оформителей", вот пример правильного начала дескриптора:
RETLW 12h ; DEVICE descriptor
RETLW 01h
RETLW 10h
RETLW 01h

5. Вы про bInterfaceClass и т.д. Значение, записываемое в эти поля, зависит от того какой класс USB устройства Вы хотите реализовать.

Вообще-то содержимое дескриптора не имеет отношения к данному контроллеру, а должно браться из спецификаций на USB и реализуемый Вами класс USB устройств. Примечание: к сожалению из-за ограничения длины дескриптора в данном микроконтроллере не все типы USB устройств у Вас получится реализовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-ноя-25 22:22 
Не в сети

Зарегистрирован: 2015-ноя-23 14:04
Сообщения: 12
Спасибо за информацию.А можно более подробно по пункту 1 ответа?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-ноя-26 11:30 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
RomaElektrik писал(а):
Спасибо за информацию.А можно более подробно по пункту 1 ответа?

Для каждой оконечной точки есть свой буфер, его объем (максимум 64 байта) задается в регистре EPx_CFG1. Конфигурация точки задается в регистре EPx_CFG2. Состояние буфера оконечной точки (пустой/заполненный) определяется из регистра EPx_STAT. Последовательные запись в буфер или чтение из буфера производится соответственно записью/чтением регистра EPx_REG.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-ноя-30 11:46 
Не в сети

Зарегистрирован: 2015-ноя-23 14:04
Сообщения: 12
Под последовательной записью в буфер имеется ввиду записывать в него данные в цикле через регистр EPx_REG по 8 бит за раз,и каждый раз после записи этого 1 байта проверять регистр EPx_STAT на предмет,заполнена ли FIFO очередь, и если не заполнена,то продолжать выполнение цикла?И еще вопрос,после заполнения FIFO нужно вызывать прерывание, чтобы успел сформироваться пакет по USB и очистился буфер после отправки?Можно поподробнее об этом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-ноя-30 14:03 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
RomaElektrik писал(а):
Под последовательной записью в буфер имеется ввиду записывать в него данные в цикле через регистр EPx_REG по 8 бит за раз,и каждый раз после записи этого 1 байта проверять регистр EPx_STAT на предмет,заполнена ли FIFO очередь, и если не заполнена,то продолжать выполнение цикла?И еще вопрос,после заполнения FIFO нужно вызывать прерывание, чтобы успел сформироваться пакет по USB и очистился буфер после отправки?Можно поподробнее об этом?

Можно проверять буфер на заполненность и записывать по одному байту, а можно проверять на пустоту и записывать целиком буфер.
Про прерывания я не понял вопрос. Буфер "сам отправится" и после отправления "сам очистится".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-ноя-30 15:13 
Не в сети

Зарегистрирован: 2015-ноя-23 14:04
Сообщения: 12
Про прерывания я имел ввиду, нужно ли останавливать выполнение программы на время,когда буфер уже заполнен,чтобы осуществить передачу данных,которые в буфере, по usb? И что имеется ввиду под фразой "буфер сам отправится"?И еще вопрос,если я покажу примерный код программы, где описаны все дескрипторы, и заполнение буфера FIFO, сможете ли проверить на правильность?или указать замечания


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-ноя-30 15:26 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
RomaElektrik писал(а):
Про прерывания я имел ввиду, нужно ли останавливать выполнение программы на время,когда буфер уже заполнен,чтобы осуществить передачу данных,которые в буфере, по usb? И что имеется ввиду под фразой "буфер сам отправится"?И еще вопрос,если я покажу примерный код программы, где описаны все дескрипторы, и заполнение буфера FIFO, сможете ли проверить на правильность?или указать замечания

Останавливать выполнение программы не требуется. USB контроллер, обнаружив данные в буфере, начнет их отправлять, а после окончания передачи освободит буфер.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-ноя-30 22:21 
Не в сети

Зарегистрирован: 2015-ноя-23 14:04
Сообщения: 12
Код ниже содержит все дескрипторы, используется только одна конечная точка EP1, а также в соответствии со спецификацией разрешена работа USB контроллера. Правильно ли задаватть дескрипторы так?

Открыть
Код:

EP1_STAT equ 10h; Регистры статуса оконечных точек EPx_STAT
EP2_STAT equ 11h; (банк 3)
EP3_STAT equ 12h;
EP4_STAT equ 13h;

EP1_CNT equ 14h; Регистры количества слов в очередях оконечных точек EPx_CNT
EP2_CNT equ 15h; (банк 3)
EP3_CNT equ 16h;
EP4_CNT equ 17h;

EP1_CFG1 equ 10h; Регистры максимального размера пакета оконечных точек EPx_CFG1
EP2_CFG1 equ 12h; (банк 0)
EP3_CFG1 equ 14h;
EP4_CFG1 equ 16h;

EP1_CFG2 equ 11h; Регистры конфигурации оконечных точек EPx_CFG2:
EP2_CFG2 equ 13h; (банк 0)
EP3_CFG2 equ 15h;
EP4_CFG2 equ 17h;

EP1_REG equ 10h; Регистры данных оконечных точек EPx_REG
EP2_REG equ 11h; (банк 2)
EP3_REG equ 12h;
EP4_REG equ 13h;

DESC_ADR equ 10h;    Регистр адреса поля дескриптора DESC_ADR (адрес: 10h, банк 1)
DESC_DATA equ11h;    Регистр данных поля дескриптора DESC_DATA (адрес: 11h, банк 1)

USB_ADR equ 10h;       Регистр функционального адреса USB_ADR (адрес: 10h, банк 4)

USB_ERROR  equ 11h; Регистр статуса ошибок USB_ERROR (адрес: 11h, банк 4)

USB_STAT equ 12h;      Регистр статуса блока USB_STAT (адрес: 12h, банк 4)

USB_CTRL  equ 13h;    Регистр управления блока USB_CTRL (адрес: 13h, банк 4)

USB_IE1 equ 14h;         Регистр разрешения прерываний от USB блока USB_IE1 (адрес: 14h, банк 4)
USB_IE2 equ 15h;         Регистр разрешения прерываний от USB блока USB_IE2 (адрес: 15h, банк 4)
USB_IE3 equ 16h;         Регистр разрешения прерываний от USB блока USB_IE3 (адрес: 16h, банк 4)
USB_IE4 equ 17h;         Регистр разрешения прерываний от USB блока USB_IE4 (адрес: 17h, банк 4)



    org 0
                   goto START

START

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---------Обнуление регистров---------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

movlb 00h;
   clrf EP1_CFG1, 1;
   clrf EP1_CFG2, 1;
   clrf EP2_CFG1, 1;
   clrf EP2_CFG2, 1;
   clrf EP3_CFG1, 1;
   clrf EP3_CFG2, 1;
   clrf EP4_CFG1, 1;
   clrf EP4_CFG2, 1;

movlb 01h;
   clrf DESC_ADR, 1;
   clrf DESC_DATA, 1;

movlb 02h;
   clrf EP1_REG, 1;
   clrf EP2_REG, 1;
   clrf EP3_REG, 1;
   clrf EP4_REG, 1;
   
movlb 03h;
   clrf EP1_STAT, 1;
   clrf EP2_STAT, 1;
   clrf EP3_STAT, 1;
   clrf EP4_STAT, 1;
   clrf EP1_CNT, 1;
   clrf EP2_CNT, 1;
   clrf EP3_CNT, 1;
   clrf EP4_CNT, 1;

movlb 04h;
   clrf USB_ADR, 1;
   clrf USB_ERROR, 1;
   clrf USB_STAT, 1;
   clrf USB_CTRL, 1;
   clrf USB_IE1, 1;
   clrf USB_IE2, 1;
   clrf USB_IE3, 1;
   clrf USB_IE4, 1;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;--------Конфигурация оконечных точек----------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

movlb 00h

;Максимальный размер пакета    оконечных точек = 64 байта
   clrf wreg, 1;
   movlw 40h;
   movwf EP1_CFG1;

   clrf wreg, 1;
   movlw 40h;
   movwf EP2_CFG1;

   clrf wreg, 1;
   movlw 40h;
   movwf EP3_CFG1;

   clrf wreg, 1;
   movlw 40h;
   movwf EP4_CFG1;

;Конфигурация
   ;EP1
   bsf EP1_CFG2, 1; Режим работы  - IN
   bcf EP1_CFG2, 2
   bcf EP1_CFG2, 3
   bcf EP1_CFG2, 4
   bsf EP1_CFG2, 5; Тип обмена - Bulk Transfer
   bcf EP1_CFG2, 6

   ;EP2 - заблокирована
   bcf EP1_CFG2, 1;
   bcf EP1_CFG2, 2
   bcf EP1_CFG2, 3
   bcf EP1_CFG2, 4
   bcf EP1_CFG2, 5;
   bsf EP1_CFG2, 6
   
   ;EP3 - заблокирована
   bcf EP1_CFG2, 1;
   bcf EP1_CFG2, 2
   bcf EP1_CFG2, 3
   bcf EP1_CFG2, 4
   bcf EP1_CFG2, 5;
   bsf EP1_CFG2, 6

   ;EP4 - заблокирована
   bcf EP1_CFG2, 1;
   bcf EP1_CFG2, 2
   bcf EP1_CFG2, 3
   bcf EP1_CFG2, 4
   bcf EP1_CFG2, 5;
   bsf EP1_CFG2, 6

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---------Дескриптор устройства----------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

movlb 01h   
   clrf wreg, 1;         Размер дескриптора = 18 байт
   movlw 00h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 12h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Тип дескриптора – DEVICE
   movlw 01h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 01h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;   
   clrf wreg, 1;   Номер версии USB спецификации в BCD формате
   movlw 02h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 01h;
   movwf DESC_DATA;
   
   clrf wreg, 1;   
   movlw 03h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 10h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;                  Код класса    
   movlw 04h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw FFh;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;                 Код подкласса   
   movlw 05h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Код протокола
   movlw 06h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Максимальный размер пакета для нулевой оконечной точки = 8 байт
   movlw 07h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 08h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Vendor ID (назначенный USB)
   movlw 08h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 34h;
   movwf DESC_DATA;

   clrf wreg, 1;   
   movlw 09h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 12h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Product ID (назначенный производителем)
   movlw 0Ah;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 78h;
   movwf DESC_DATA;

   clrf wreg, 1;
   movlw 0Bh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 56h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;                   Номер версии устройства в BCD формате
   movlw 0Ch;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;
   movwf DESC_DATA;

   clrf wreg, 1;
   movlw 0Dh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 10h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;                   Указатель строки дескриптора определяющего производителя
   movlw 0Eh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 01h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;                   Указатель строки дескриптора определяющего продукт
   movlw 0Fh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 02h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;                   Указатель строки дескриптора определяющего серийный номер устройства
   movlw 10h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 03h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Количество возможных конфигураций
   movlw 11h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 01h;
   movwf DESC_DATA;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---------Дескриптор конфигурации----------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   clrf wreg, 1;                 Размер дескриптора = 9 байт
   movlw 12h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 09h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Тип дескриптора – CONFIGURATION
   movlw 13h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 02h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Общая длина данных возвращаемых данной конфигурацией
   movlw 14h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 20h;
   movwf DESC_DATA;

   clrf wreg, 1;   
   movlw 15h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Количество интерфейсов, поддерживаемых данной конфигурацией.
   movlw 16h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 01h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Значение, используемое как аргумент для SetConfiguration
   movlw 17h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 01h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Указатель на строку дескриптора, описывающую эту конфигурацию.
   movlw 18h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Характеристики конфигурации:
   movlw 19h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 0C0h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Максимальная мощность, потребляемая устройством   
   movlw 01Ah;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 0A0h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---------Дескриптор интерфейса----------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
   clrf wreg, 1;                Размер дескриптора = 9 байт
   movlw 1Bh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 09h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Тип дескриптора – INTERFACE
   movlw 1Ch;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 04h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Номер интерфейса
   movlw 1Dh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;     
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Значение, используемое для выбора альтернативного интерфейса
   movlw 1Eh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Количество оконечных точек, используемых данным интерфейсом
   movlw 1Fh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 04h;
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Код класса
   movlw 20h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw FFh;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Код подкласса
   movlw 21h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Код протокола
   movlw 22h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Указатель на строку дескриптора, описывающую этот интерфейс.
   movlw 23h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---------Дескриптор конечной точки 1---------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   clrf wreg, 1;   Размер дескриптора = 7 байт
   movlw 24h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 07h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Тип дескриптора – ENDPOINT   
   movlw 25h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 05h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Адрес оконечной точки
   movlw 26h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 81h;    IN    
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Атрибуты оконечной точки
   movlw 27h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 02h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Максимальный размер пакета
   movlw 28h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 40h;      
   movwf DESC_DATA;

   clrf wreg, 1;   
   movlw 29h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Интервал опроса оконечной точки для передачи данных
   movlw 2Ah;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---------Дескриптор конечной точки 2---------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   clrf wreg, 1;   Размер дескриптора = 7 байт
   movlw 2Bh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 07h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Тип дескриптора – ENDPOINT   
   movlw 2Ch;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 05h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Адрес оконечной точки
   movlw 2Dh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 81h;    IN
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Атрибуты оконечной точки
   movlw 2Eh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 02h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Максимальный размер пакета
   movlw 2Fh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 40h;      
   movwf DESC_DATA;

   clrf wreg, 1;   
   movlw 30h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Интервал опроса оконечной точки для передачи данных
   movlw 31h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---------Дескриптор конечной точки 3---------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   clrf wreg, 1;   Размер дескриптора = 7 байт
   movlw 32h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 07h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Тип дескриптора – ENDPOINT   
   movlw 33h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 05h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Адрес оконечной точки
   movlw 34h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 81h;    IN
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Атрибуты оконечной точки
   movlw 35h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 02h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Максимальный размер пакета
   movlw 36h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 40h;      
   movwf DESC_DATA;

   clrf wreg, 1;   
   movlw 37h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Интервал опроса оконечной точки для передачи данных
   movlw 38h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;---------Дескриптор конечной точки 4---------;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   clrf wreg, 1;   Размер дескриптора = 7 байт
   movlw 39h;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 07h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Тип дескриптора – ENDPOINT
   movlw 3Ah;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 05h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Адрес оконечной точки
   movlw 3Bh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 81h;    IN
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Атрибуты оконечной точки
   movlw 3Ch;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 02h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Максимальный размер пакета
   movlw 3Dh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 40h;      
   movwf DESC_DATA;

   clrf wreg, 1;   
   movlw 3Eh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   clrf wreg, 1;   Интервал опроса оконечной точки для передачи данных
   movlw 3Fh;
   movwf  DESC_ADR;
   clrf wreg, 1;
   movlw 00h;      
   movwf DESC_DATA;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;---------Задание режима и разрешение работы USB устройства----------;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   movlb 04h
   bsf USB_CTRL, 1; Full Speed
   bsf USB_CTRL, 0; USB Enable
   
   bcf USB_CTRL, 2
   bcf USB_CTRL, 3
   bcf USB_CTRL, 4
   bcf USB_CTRL, 5
   bcf USB_CTRL, 6
   bcf USB_CTRL, 7

Закрыть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-дек-01 11:22 
Не в сети

Зарегистрирован: 2015-ноя-23 14:04
Сообщения: 12
Еще такой вопрос: если отправка и очистка буфера происходят автоматически, то зачем его вообще проверять на заполненность?или имеется ввиду, что нужно его проверять на случай возникновения ошибки отправки пакета,когда содержимое буфера восстанавливается и оправка заново идет?В моем устройстве конечные точки имеют тип BULK


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-дек-01 14:07 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
RomaElektrik писал(а):
Еще такой вопрос: если отправка и очистка буфера происходят автоматически, то зачем его вообще проверять на заполненность?или имеется ввиду, что нужно его проверять на случай возникновения ошибки отправки пакета,когда содержимое буфера восстанавливается и оправка заново идет?В моем устройстве конечные точки имеют тип BULK

Проверять на заполненность нужно чтобы из-за каких либо причин не переполнить его.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-дек-02 11:44 
Не в сети

Зарегистрирован: 2015-ноя-23 14:04
Сообщения: 12
oleg писал(а):
Проверять на заполненность нужно чтобы из-за каких либо причин не переполнить его.

А в случае,когда ФИФО заполнена,нужно выставить разрешение прерываний при заполнении в регистре USB_IE1?Просто не совсем понятно, как отправить допустим 700 байт, если в буфер за раз только 64 максимум можно записать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-дек-02 13:24 
Не в сети

Зарегистрирован: 2009-май-25 16:41
Сообщения: 206
Откуда: АО "ПКК Миландр"
RomaElektrik писал(а):
oleg писал(а):
Проверять на заполненность нужно чтобы из-за каких либо причин не переполнить его.

А в случае,когда ФИФО заполнена,нужно выставить разрешение прерываний при заполнении в регистре USB_IE1?Просто не совсем понятно, как отправить допустим 700 байт, если в буфер за раз только 64 максимум можно записать

Просто пишете в буфер (конечно если там есть место). USB контроллер при получении запроса от хоста сам отправит присутствующие в буфере данные, и после их отправки освободит место в буфере.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Блок контроллера USB 1886ВЕ4У
СообщениеДобавлено: 2015-дек-03 11:04 
Не в сети

Зарегистрирован: 2015-ноя-23 14:04
Сообщения: 12
oleg писал(а):
Просто пишете в буфер (конечно если там есть место). USB контроллер при получении запроса от хоста сам отправит присутствующие в буфере данные, и после их отправки освободит место в буфере.


Спасибо за помощь,буду пробовать.А еще вопрос,для чего могут понадобиться регистры разрешения прерываний при заполнении или очистке ФИФО буфера?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB