У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


або LS. При цьому функції контролера і хаба 2.0 (включаючи і кореневий) ускладнюються, оскільки транзакції на FS і LS розщеплюються і між їх частинами уклинюються високошвидкісне передачі. Від старих (1.1) пристроїв і хабів вся ця тонкість ховається, що і забезпечує зворотну сумісність.

Цілком зрозуміло, що пристрій USB 2.0 зможе реалізувати високу швидкість, тільки якщо по дорозі від нього до хост - контролера (теж 2.0) зустрічатимуться тільки хаб» 2.0. Якщо це правило порушити і між ним і контролером 2.0 опиниться старий хаб, то зв'язок може бути встановлений тільки в режимі FS. Якщо така швидкість, пристрій і клієнтське ПО влаштує (наприклад, для принтера і сканера це виллється тільки в більший годину очікування користувача), то підключений пристрій працювати буде, але з'явиться повідомлення про неоптимальну конфігурацію з'єднань. По можливості її слід виправити, благо перемикання кабелів USB можна виконувати «на ходу». Пристрої і ПО, критичні до смуги пропускання шини, в неправильній конфігурації працювати відмовляться і категорично зажадають перемикань. Якщо ж хост - контролер старий, то вся краса USB 2.0 виявиться недоступною користувачу. У цьому випадку доведеться міняти хост - контролер (міняти системну платню або набувати PCI-карти контролера). Контролер і хаби USB 2.0 дозволяють підвищити сумарну пропускну спроможність шини і для старих пристроїв. Якщо пристрої FS підключати до різних портів хабов USB 2.0 (включаючи і кореневий), то для них сумарна пропускна спроможність шини USB зросте в порівнянні з 12 Мбіт/с в стільки разів, скільки використовується портів високошвидкісних хабів.

Для виявлення помилок передачі кожен пакет має контрольні поля CRC-кодів, що дозволяють виявляти всі одиночні і подвійні бітові помилки. Апаратні засоби виявляють помилки передачі, а контролер автоматичний проводити триразову спробу передачі. Якщо повтори безуспішні, повідомлення про помилку передається клієнтському ПО.

Хочу поділитися своїми напрацюваннями у області передачі даних від
саморобного пристрою на мікроконтролері до комп'ютера і назад
по шині USB. До цього я міг писати тільки простенькі програми
для обміну даними через COM-порт, але оскільки зараз прийшла епоха
заходу для COM, довелося переходити на USB програмку
для комп'ютера, яка обмінюється даними з пристроєм на
мікроконтролері PIC16F876A через COM-порт, але із-за того що на
нових комп'ютерах перестали встановлювати COM-порти з'явилася
необхідність переробити цей проект на USB. Я дізнався, що є
декілька способів це зробити:

У фірми Microchip є відповідні для цієї справи мікроконтролери
PIC18F2455/2550/4455/4550. Вони мають в своєму складі модуль USB.
Я в цій статті орієнтуватимуся на мікроконтролер PIC18F4550.

Отже, нам потрібно написати програму для мікроконтролера PIC18F4550.
Таку програму щоб при підключенні цього мікроконтролера до
комп'ютера відбувалося створення віртуального COM-порту, через
який можна передавати і приймати дані. Задачка не з адже легких
, не дивлячись на те, що в цій мікросхемі є модуль USB загальне
уявлення про те, що відбувається на шині потрібно знати. Модуль
USB займається дуже глибокими речами на дуже низькому рівні,
такими як канальне кодування, декодування подій і помилок,
а що стосується протоколів транзакцій, структури дескрипторів,
обробки запитів і інших повинна
займатися програма мікроконтролера, що управляє. Означає, щоб
написати цю програму доведеться все-таки ознайомитися із
специфікацією USB і із специфікацією CDC класу? Тут довелося подсуетиться мені і парирувати цей
проект на асемблер. Але я не просто переписав цей проект, а узяв
на себе сміливість внести в нього істотні зміни. Власне
про те, що у мене вийшло я і хочу розповісти в цій дипломні.

Опис USB і програми я вирішив почати не з утомливої теорії,
, а з найцікавішого, тобто з
практики. Я хочу, щоб ви відчули як це, коли твоя
робота при підключенні до USB розпізнається комп'ютером як
пристрій готовий до роботи. Для цього потрібно зібрати наступну схему.


Рис . 11 Підключення мікропроцесора PIC18F4550 до ПК через порт USB

4. РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ДЛЯ МІКРОКОНТРОЛЕРА РІС18F4550 ТА ПРОГРАМНЕ ЗАБЕЗПЕЧЕНН ДЛЯ USB.

LIST P=18F4550

INCLUDE <P18F4550.INC>

 

model small

stack 100h

dataseg

str0 DB 0ah,0dh,'$'

str1 DB 'Connect programmer & press "Enter" key to continue','$'

str2 DB 0ah,0dh,'Data write & read is not equal,press Enter to repeat','$'

str3 DB 0ah,0dh,'OK','$'

codeseg

mov ax,@data

mov ds,ax

mov es,ax

mov dx,378h

mov al,24h

out dx,al

mov ah,9

lea dx,str1

int 21h

mov ah,9

lea dx,str0

int 21h

mov ax,71ch

int 21h

mov dx,378h

mov al,10h

out dx,al

mov al,8

out dx,al

call loadcon

mov cx,16

cc : call data0

loop cc

mov dx,378h

mov cx,7

cc1 : call loadinc

loop cc1

 

mov dx,378h

mov si,100

cc2 : call loaddat

call data0

call data1

call data0

call data0

call data0

call data1

call data1

call data0

call data0

mov di,6

cc3 : call data1

dec di

jnz cc3

call data0

call loadbeg

call zat

dec si

jnz cc2

call loadred

xor bp,bp

call redbyte

cmp bp,3f31h

jz m8

mov ah,9

lea dx,str2

int 21h

mov ah,9

lea dx,str0

int 21h

mov ax,71ch

int 21h

mov dx,378h

jmp m0

m8 : mov ah,9

lea dx,str3

int 21h

jmp m0

zat proc

mov bp,1fh

cycle05: mov cx,0fffh

cycle03: nop

loop cycle03

dec bp

jnz cycle05

ret

zat endp

data0 proc

mov al,0ah

out dx,al

mov al,8

out dx,al

ret

data0 endp

data1 proc

mov al,0ah

out dx,al

mov al,0bh

out dx,al

mov al,9

out dx,al

mov al,8

out dx,al

ret

data1 endp

loaddat proc

call data0

call data1

call data0

call data0

call data0

call data0

mov al,0ch

out dx,al

ret

loaddat endp

loadbeg proc

call data0

call data0

call data0

call data1

call data0

call data0

mov al,0ch

out dx,al

ret

loadbeg endp

loadinc proc

call data0

call data1

call data1

call data0

call data0

call data0

mov al,0ch

out dx,al

ret

loadinc endp

loadred proc

call data0

call data0

call data1

call data0

call data0

call data0

mov al,0ch

out dx,al

ret

loadred endp

loadcon proc

call data0

call data0

call data0

call data0

call data0

call data0

mov al,0ch

out dx,al

ret

loadcon endp

redbyte proc

mov al,0eh

out dx,al

mov al,0ch

out dx,al

mov bh,15

r1 : mov al,0eh

out dx,al

mov al,0ch

out dx,al

inc dx

in al,dx

dec dx

rcl al,1

rcl al,1

rcr bp,1

dec bh

jnz r1

rcr bp,1

and bp,3fffh

mov al,0ch

out dx,al

ret

redbyte endp

m0 : mov ah,4ch

int 21h

end

USB

LIST P=18F4550

INCLUDE <P18F4550.INC>

cblock 0x00

R1

ADRESS

DATA_0_1

DATA_

endc

SI111:

BCF UCON,USBEN,0

CALL DELAY

clrf USTAT

movlw 0x40

movwf UCON

MOVLW


Сторінки: 1 2 3 4 5 6 7 8 9 10 11 12 13