модуля. Він включає в себе такі компоненти:
Базова швидкість (повно швидкісний режим порівняно з низько швидкісним)
Включення внутрішнього навантажувального резистора
Включення внутрішнього трансивера
Використання пінг-понг буфера
Регістр UCFG також містить два біти які допомагають тестовому модулю, від лагодити і атестувати USB. Ці біти контролюють включення відображення стану моніторингу і генерації індикаторної діаграми.
USB регістр статусу (USTAT)
Регістр статусу USB звітує про статус трансакції всередині SIE. Коли SIE керує передачею по USB по закінченні переривання, USTAT потрібно зчитати для визначення статусу передачі інформації. USTAT містить передану кінцеву точку, напрям передачі і стан пінг-понг буферу (якщо використовується).
Регістр USTAT фактично читає вікно чотири байтового статусу FIFO, підтримується SIE. Це дозволяє мікро контролеру обробити одну передачу поки SIE обробляє наступну кінцеву точку. Коли SIE завершує використання буфера для читання або запису даних, це оновлює регістр USTAT. Якщо інша USB передача виконується до завершення трансакції по перериванню, SIE запам’ятає статус наступної передачі в статусі FIFO.
Завершення трансакції відбувається очищенням біту TRNIF. Якщо наступні дані в FIFO вважаючи що регістр дійсний, SIE дозволить переривання. Якщо ніякі дані не присутні, TRNIF залишиться скинутим; Дані регістру USTAT, не будуть надійні.
Регістр кінцевої точки USB
Кожна з 16-ти можливих двонаправленних кінцевих точок має свій власний управління, UEPn (де ‘n’ вказує номер кінцевої точки). Кожен регістр ідентичне доповнення службових бітів.
Регістр адреси пристрою USB (UADDR)
Регістр адреси пристрою USB містить унікальний USB адресу, що пристій декодує коли він активний. UADDR встановлюється в 00h, коли вказано USB скидання в регістрі URSTIF, або коли скидання проводиться мікро контролером. USB адреса повинна бути записана мікро контролером під час SETUP пакету (перерахування) як частина мікропрограми з підтримкою Microchip USB.
Передача даних через шину USB:
В регістрі UCON потрібно встановити біт 3 “USBEN” в одинцю для включення модуля USB.
В регістрі UCFG потрібно встановити 1 біт в одиницю для використання Пінг-Понг буфера для всіх кінцевих точок. Біт 3 встановлюється для повношвидкісної передачі даних. Біт 4 що використовується інтегрований навантажувальний резистор.
В регістрі UEP0 встановлюється 1,2,3 біти в одиницю що вказує що кінцева точка є двонаправленою.
Регістр BD0STAT встановлюється 4 біт в одиницю, передавана комірка пам’яті збільшується на одиницю автоматично. BD0STAT регістр встановлюється в комірках пам’яті починаючи з 400h. Займає всього лише 4 байти, 1 байт – буфер дескриптор, 2 – кількість байт, 3 – молодший байт адреси початкової комірки пам’яті, 4 – старший байт початкової комірки пам’яті.
При підключенні роз’єму комп’ютер починає настройку пристрою, посилається комп’ютером скидання ми перевіряємо біт URSTIF чекаємо початку фрейму перевіряючи біт SOFIF починає передавати дескриптори для настройки. Перевіряємо біт TRNIF трансакція закінчилась перевіряємо яка команда і які дані були прийняті, чекаємо пакету IN починаємо передавати дані.
2.2 Підпрограми роботи пристрою
Підпрограма роботи пристрою включення по тиску
MOVLW B'00000001'
MOVWF ADCON0
MOVLW B'00001110'
MOVWF ADCON1
MOVLW B'10000111'
MOVWF ADCON2
BSF INTCON,PEIE
BSF PIE1,ADIE
BCF INTCON,INT0IF
SLP: BSF ADCON0,1
SLEEP
NOP
BCF PIR1,ADIF
BCF STATUS,Z
BCF STATUS,N
MOVLW 0X02
SUBWF ADRESH,0,0
BTFSC STATUS,N
GOTO SLP
BTFSC STATUS,Z
GOTO SLP
BCF STATUS,N
BCF STATUS,Z
MOVLW 0X2A
SUBWF ADRESL,0,0
BTFSC STATUS,N
GOTO SLP
BTFSC STATUS,Z
GOTO SLP
BCF INTCON,INT0IF
Підпрограма роботи пристрою включення по часу
MOVF 0X20,W
MULLW 0X78
MOVFF PRODH,0X21
MOVFF PRODL,0X22
MOVLW 0XFF
MOVWF TMR1L
MOVLW 0X0F
MOVWF TMR1H
BSF T1CON,TMR1ON
SLP: NOP
SLEEP
MOVLW 0XFF
MOVWF TMR1L
MOVLW 0X0F
MOVWF TMR1H
BCF PIR1,TMR1IF
DECFSZ 0X22
GOTO SLP
DECFSZ 0X21
MOVLW 0XFF
MOVWF 0X22
MOVF 0X21,F
BTFSS STATUS,Z
GOTO SLP
BCF T1CON,TMR1ON
GOTO VYMIR
Програма роботи пристрою формування кадрів:
MOVLW B'00000001'
MOVWF ADCON0
MOVLW B'00000000'
MOVWF ADCON1
MOVLW B'00000000'
MOVWF ADCON2
MOVLW B'00110000'
MOVLW 0X04
MULWF 0X35
MOVFF PRODH,0X36
MOVFF PRODL,0X37
MOVWF T1CON
MOVLW 0X0F
MOVWF TMR1H
MOVLW 0XFF
MOVWF TMR1L
BCF PIR1,TMR1IF
BSF T1CON,0
BSF PIE1,TMR1
SLPD: SLEEP
BCF T1CON,0
MOVLW 0XFF
MOVWF TMR1L
MOVLW 0X0F
MOVWF TMR1H
BCF PIR1,TMR1IF
DECFSZ 0X37
GOTO SLPD
DECFSZ 0X36
MOVLW 0XFF
MOVWF 0X37
MOVF 0X36,F
BTFSS STATUS,Z
GOTO SLPD
BCF T1CON,TMR1ON
BSF ADCON0,1
AD1: BTFSC ADCON0,1
GOTO AD1
MOVFF ADRESH,0X20
MOVFF ADRESL,0X21
BSF ADCON0,2
BSF ADCON0,1
AD2: BTFSC ADCON0,1
GOTO AD2
MOVFF ADRESH,0X22
MOVFF ADRESL,0X23
BCF ADCON0,2
BSF ADCON0,3
BSF ADCON0,1
MOVFF 0X20,0X30
MOVFF 0X21,0X31
RRCF 0X22,F
RRNCF 0X23,F
RRCF 0X22,F
RRNCF 0X23,F
RRCF 0X22,F
RRNCF 0X23,F
RRCF 0X22,F
RRNCF 0X23,F
RRCF 0X22,F
RRNCF 0X23,F
RRCF 0X22,F
RRNCF 0X23,F
MOVFF 0X23,0X32
MOVF 0X22,W
IORWF 0X31
AD3: BTFSC ADCON0,1
GOTO AD3
MOVLW
SUBWF ADRESH,0,0
BTFSC STATUS,N
GOTO FALSE
BTFSC STATUS,Z
GOTO FALSE
BCF STATUS,N
BCF STATUS,Z
MOVLW
SUBWF ADRESL,0,0
BTFSC STATUS,N
GOTO FALSE
BTFSC STATUS,Z
GOTO FALSE
GOTO TRUE
TRUE: MOVLW 0X3C
IORWF 0X31
FALSE: MOLW 0X00
IORWF 0X31
END
Програма роботи пристрою запис через SPI:
MOVLW B'11000000'
MOVWF SSPSTAT,0
MOVLW B'00010010'
MOVWF SSPCON1,0
BSF PORTC,1,0
BCF TRISC,1,0
BCF TRISC,7,0
BCF TRISB,1,0
BCF PORTC,1,0
BSF SSPCON1,5,0
BCF PIR1,SSPIF,0
MOVLW 0X84
MOVWF SSPBUF,0
CALL WR1
MOVLW 0X00
MOVWF SSPBUF
CALL WR1
MOVWF SSPBUF
CALL WR1
MOVFF 0X38,SSPBUF
CALL WR1
MOVFF 0X37,SSPBUF
CALL WR1
MOVFF 0X30,SSPBUF
CALL WR1
MOVFF 0X31,SSPBUF
CALL WR1
MOVFF 0X32,SSPBUF
CALL WR1
INCFSZ 0X37
INCF 0X38
INCFSZ 0X37
INCF 0X38
INCFSZ 0X37
INCF 0X38
MOVLW 0X08
XORWF 0X37
MOVLW 0X01
BTFSS STATUS,Z
XORWF 0X38
BTFSS STATUS,Z
GOTO BUFWR
WR1
PR: BTFSS PIR1,3,0
BRA PR
RETURN
BUFWR
CLRF 0X37
CLRF 0X38
MOVLW 0X83
MOVWF SSPBUF
CALL WR1
MOVFF 0X39,0X3B
MOVFF 0X3A,0X3C
RLCF 0X3B,F
RLNCF 0X3C,F
MOVFF 0X3C,SSPBUF
CALL WR1
MOVFF 0X3B,SSPBUF
CALL WR1
INCFSZ 0X39
INCF 0X3A
END
2.3 Дескриптори зв’язку з USB
Всього існує 8 типів дескрипторів, найчастіше з яких використовуються наступні:
Дескриптор пристрою. Містить інформацію про виробника, код продукту, серійний номер, тип пристрою і кількість конфігурацій. Пристрій може мати тільки один такий дескриптор;
Приклад дескриптора пристрою:
MOVLW 0X12 ;Розмір дескриптора 18 байт
MOVWF 0X00,1
MOVLW 0X01 ;Код типу дескриптора 1
MOVWF 0X01,1
MOVLW 0X02 ;Номер версії 02h
MOVWF 0X02,1
MOVLW 0X00 ;Номер версії 00h
MOVWF 0X03,1
MOVLW 0XFF ; Код класу USB
MOVWF 0X04,1
MOVLW 0X00 ; Код підкласу
MOVWF 0X05,1
MOVLW 0X00 ; Код протоколу
MOVWF 0X06,1
MOVLW 0X64 ; Максимальний розмір
MOVWF 0X07,1
MOVLW 0X00 ; Кількість можливих конфігурацій
MOVWF 0X08,1
MOVLW 0X02 ; Ідентифікатор виробника
MOVWF 0X09,1
MOVLW 0X00 ; Індекс дескриптора
MOVWF 0X0A,1
Дескриптор конфігурації. Містить інформацію про енергоспоживання і про кількість інтерфейсів, використовуваних в даній конфігурації. Таких дескрипторів може бути декілька для різних конфігурацій (різні режими енергоспоживання і т.д.);
Приклад дескриптора конфігурації:
MOVLW 0X09 ;Розмір дескриптора
MOVWF 0X00,1
MOVLW 0X02 ;Тип дескриптора
MOVWF 0X01,1
MOVLW 0X64 ;Загальний об’єм
MOVWF 0X03,1
MOVLW 0X01 ;Кількість інтерфейсів
MOVWF 0X04,1
MOVLW 0X00 ;Ідентифікатор конфігурації
MOVWF 0X05,1
MOVLW 0X00 ;Індекс дескриптора
MOVWF 0X06,1
MOVLW 0X00 ;Характеристика конфігурації
MOVWF 0X07,1
MOVLW 0X00 ; Характеристика конфігурації
MOVWF 0X08,1
MOVLW 0X00 ; Характеристика конфігурації
MOVWF 0X09,1
MOVLW 0X00 ; Характеристика конфігурації
MOVWF 0X0A,1
MOVLW 0X00 ; Характеристика конфігурації
MOVWF