Choď na obsah Choď na menu

USB poznámky

KodTriedyHID = HidD_GetHidGuid()                Získa kód triedy HID

 deviceInfoList = SetupDiGetClassDevs(KodTriedyHID)         Načíta handle všetkých zariadení zvolenej triedy pripojenym k PC

SetupDiEnumDeviceInterfaces(deviceInfoList, &deviceInfo)    Opakovaným volaním  načítava postupne všetky zariadenia do "deviceInfo".

SetupDiGetDeviceInterfaceDetail(&deviceInfo, deviceDetails)    Do štruktúry "deviceDetails" vloží cestu k načítanému zariadeniu ("DevicePath").

USBhandle = CreateFile(deviceDetails->DevicePath)        Načíta handle zariadenia a otvorí ho.

HidD_GetAttributes(USBhandle, &deviceAttributes)        Do štruktúry "deviceAttributes" načíta PID, VID a verziu otvoreného zariadenia.

HidD_GetManufacturerString(USBhandle, iManufactured)    Do TXT poľa načíta zo zariadenia text o výrobcovi

HidD_GetProductString(USBhandle, iProduct)            Do TXT poľa načíta zo zariadenia text o produkte

ReadFile(USBhandle, RXbufer)                        Do poľa "RXbufer" sú vložené čísla, ktoré zariadenie poslalo.

WriteFile(USBhandle, TXbufer)                        Z poľa "TXbufer" odošle do zariadenia čísla


======================================================================================================


UCFG,FSEN = 1        ;pull-up odpor na D+ tj. Full speed (12 Mbit/s)
UCFG,FSEN = 0        ;pull-up odpor na D- tj. Low speed (1.5 Mbit/s)
UCFG,UPUEN = 1    ;pripojenie zvoleného pull-up odporu k USB pinu

UCON, USBEN = 1    ;Zapnúť modul USB
UCON,PKTDIS == 1    ;Bol prijatý SETUP token paket. SIE je vtedy zablokovaná. Pre príjem ďalších paketov treba PKTDIS vynulovať.
UCON,SE0 == 1        ;Bola detekovaná NULA na zbernici (nulové napätie voči kostre)

UADDR,0-7            ;Adresa pre USB komunikáciu s PC (zadáva užívateľ)

BDnCNT,0-7        ;Dlzka endpointu "n" v bajtoch
BDnADRH:BDnADRL    ;Adresa zaciatku pamäti endpointu "n"

BDnSTAT,DTS = 1    ;Posiela sa / prijíma dátový paket typu DAT0
BDnSTAT,DTS = 1    ;Posiela sa / prijíma dátový paket typu DAT1
BDnSTAT,DTSEN = 1    ;Povolenie synchronizacie striedania DAT0 a DAT1. Pakety s nesprávnou synchr. budú ignorované, okrem SETUP paketov.
BDnSTAT,BSTALL = 1    ;Odpoveď STALL paketom. Ak je prijatý token, bit UOWN zostáva nastavený, hodnota BD sa nemení.
BDnSTAT,UOWN = 1    ;Odovzdá endpoint n do vlastníctva jednotky SIE. Keď SIE vykoná prácu, UOWN spadne do 0.

BDnSTAT(out),2-5    ;PID, čiže ID token paketu (iba 4 bity, ďalšie 4 bity sú totiž negáciou prvých štyroch)

USTAT,DIR == 1        ; Posledná transakcia bola IN token
USTAT,DIR == 0        ; Posledná transakcia bola OUT token
USTAT,3-6            ; Číslo endpointu, ktorého sa týkala posledná transakcia

UEPn,EPINEN = 1    ; Zapnutie vstupného IN endpointu číslo "n" (IN z pohľadu PC)
UEPn,EPOUTEN = 1    ; Zapnutie výstupného OUT endpointu číslo "n" (OUT z pohľadu PC)
UEPn,EPCONDIS = 1    ; Zakázanie kontrolných transakcii (SETUP paketov) pre endpoint číslo "n"
UEPn,EPHSHK = 1    ; Zapnutie handshake paketov (ACK, NAK, STALL) pre endpoint číslo "n"
UEPn,EPSTALL = 1    ; Pozastavenie endpointu číslo "n"

INTCON,GIE = 1        ;Povolenie prerušení
INTCON,PEIE = 1    ;Povolenie prerušení od periférii
PIE2,USBIE = 1        ;Povolenie prerušení od USB portu
UIE,URSTIE = 1        ;Povolenie prerušení od stavu RESET na USB zbernici
UIE,TRNIE = 1        ;Povolenie prerušení od kompletne dokončených paketových sekvencii

PIR2,USBIF == 1        ;Nastalo prerušenie od USB
UIR,URSTIF == 1    ;Došlo resetu na USB zbernici; register UADDR bol vymazaný
UIR,TRNIF == 1        ;Prerušenie od úspešne dokončenej paketovej sekvencie