Microsin - dezvoltare dispozitiv USB - cum să începeți cu bibliotecile USB AVR (v-USB) și libusb
În primul rând, câteva cuvinte generale despre pachetul (bibliotecă) USB AVR (redenumit V-USB) de Dezvoltare Obiectiv, și biblioteca libusb.
AVR USB (V-USB) - sub formă de pachete care conțin rutine de bibliotecă (și exemple de utilizare a acesteia), care permite utilizarea familii de microcontrolere AVR (prizvoditel Atmel) pentru a face viteză redusă (low-speed USB standard 1.0.) USB-dispozitiv. În aceste dispozitive, protocolul USB este implementat în software - în firmware, cusute în microcontroler. Mai mult decât atât, sub formă de pachete AVR-USB conține, de exemplu, programul de gazdă (de calculator la care dispozitivul conectat USB) care implementează schimbul de date cu dispozitive USB dezvoltate. biblioteca V-USB dezvoltat de Dezvoltare Obiectiv și este disponibil gratuit, precum și pentru uz comercial (în funcție de licența aleasă).
Programul pentru gazda utilizată, la rândul său, o altă bibliotecă - libusb [13]. Pentru simplitate vom numi programul sews firmware-ul pe termen microcontroler. și programele care se execută pe computer și să comunice cu dispozitive USB dezvoltate de noi - de termeni pe gazdă. Deci, procesul de lucru cu pachetul AVR-USB (V-USB) și o bibliotecă libusb pe platforma Windows pas cu pas.
Pentru a compila firmware-ul și software-ul au nevoie de pachete speciale de software gazdă, instalarea și utilizarea sunt considerate de mai jos.
Ca urmare, în dosarul curent obține fișierul main.hex. care este firmware-ul pentru microcontroler. Dacă ați conectat avrdude programator (Makefile configurat pentru ea), programarea cristalului de tip doar face programul.
7. Acum, pentru software-ul gazdei. Pentru a compila avem nevoie de gcc.exe. care este o parte a pachetului MinGW (în cazul în care pentru a descărca. - a se vedea link-ul). Pachetul MinGW - un set de portat din Unix utilitati linie de comandă. Am descarcat MinGW-5.1.4.exe, dimensiunea fișierului la 140,095 bytes. Acesta este un program de instalare complicat că atunci când instalați descărcarea de pe Internet tot ce ai nevoie. Când executați, va cere, selectați „Descărcați și instalați“ sau „Descărcați numai“, selectați „Descărcați și instalați“. În continuare, întrebați ce pachet pentru a instala - Anterior, curent sau candidat. Alegerea ceea ce este oferit în mod implicit - curent. investigații suplimentare pentru a alege componentele care urmează să fie instalate. În mod implicit, a oferit doar „instrumente de bază MinGW“, dar am pus o căpușă, în orice caz pe „g ++ compilator“. Asigurați-vă de utilitate nu au ales, pentru că am funcționează deja (pachetul WinAVR ordinat). Pe lângă rugat să aleagă directorul de instalare - C: \ MinGW, este de acord. Pe lângă cerut să aleagă o locație pentru comanda rapidă, atunci procesul de descărcare va începe. Georgia am pentru o lungă perioadă de timp, timp de aproximativ o oră, la o viteză de aproximativ 22 Kbytes / sec (conform informațiilor instalatorului). Loaded tot dosarul curent, în cazul în care rulați MinGW-5.1.4.exe. După instalarea gcc.exe este în c: \ MinGW \ bin \, dar în acest fel variabila Calea nu este înregistrată, trebuie să adăugați manual (sperăm că nu trebuie să explice cum?).



Voi descrie mai detaliat instalarea driverelor, pentru că, uneori, utilizatorii bibliotecii există probleme cu ea, mai ales atunci când se conectează noul USB-dispozitiv la computer cu alte VID și PID (chiar dacă acesta este un libusb bibliotecă a fost instalat mai devreme). Problema este că noul dispozitiv USB (cu noul VID și PID) necesită un driver nou filtru de așa-numitul (driver de filtru). În timpul instalării libusb-win32-devel-filtru-X.X.X.X doar va solicita să instalați un driver filtru pentru toate dispozitivele USB detectate, și sarcina dumneavoastră este de a alege dispozitivul pe care doriți, și setați driverul de filtrare pe el. Deci, noi descărcăm libusb-win32-devel-filtru, de exemplu libusb-win32-devel-filtru-1.2.2.0.exe, și a alerga. Confirmarea de pornire rapidă (dacă nu puteți verifica editorul), faceți clic pe butonul „Run“:

Pe expertul de instalare este binevenită biblioteca libusb-Win32 prostește faceți clic pe Următorul:

La solicitarea confirmării de acceptare a licenței, selectați de obicei „Accept acordul“ și faceți clic pe Următorul:

Pe fereastra „informații importante“ prostește faceți clic pe Următorul:

Apoi, oferă pentru a schimba calea și numele directorului în care pentru a instala biblioteca. Nimic nu ar trebui să fie schimbat, prostește faceți clic pe Următorul:

Apoi, oferă pentru a schimba calea și numele dosarului în care se va baza pe etichete. Nimic nu ar trebui să fie schimbat, prostește faceți clic pe Următorul:

Instalarea este finalizată biblioteca libusb. Dacă lăsați caseta de validare „expertul de instalare filtru de lansare“ și faceți clic pe butonul Finish, expertul va începe instalarea unui driver filtru pe punctul de a dispozitivului USB. Acesta este un pas important pe care am decis să fac o secțiune separată 8a.

Acum, în mod normal, au compilat exemple de linia de comandă a gazdei destinate GCC. În cazul în care compilarea este în eroare, este posibil să aveți în folderul C: \ Program Files \ libusb-Win32 \ lipsit de dosare includ și lib. Puteți descărca un director libusb-Win32 set complet de referință [9].
8a. Instalarea driverului de filtrare. Așa cum am menționat, programul software-ul gazdă scris folosind biblioteca libusb, pe platforma Windows pentru a comunica cu dispozitivele USB prin intermediul așa-numitul driverul de filtrare. În cazul în care conducătorul auto este filtrul USB-dispozitiv nu este instalat, atunci când încercați să accesați USB dispozitiv puteți obține mesaje de genul „Nu am putut găsi un dispozitiv USB“ hardctrl-HID „cu VID = 0x16c0 pid = 0x5df“ (în acest exemplu afiseaza parametrii „hardctrl- HID“, = 0x16c0 VID, pid = 0x5df, întrebat în fișierul usbconfig.h, macro-uri USB_CFG_DEVICE_NAME, USB_CFG_VENDOR_ID, USB_CFG_DEVICE_ID respectiv). Problema persistă instalarea unui driver de filtru la aparat. Expert instalare a unui driver filtru se execută în procesul de instalare de bibliotecă libusb (procedeul descris în etapa anterioară), dar puteți rula, de asemenea, driverul de filtru Wizard (filtru Wizard) și separat din meniul Start programului:

După pornirea filtrului va apărea o fereastră în care puteți selecta acțiunea necesară - a instala un driver filtru pe USB-dispozitiv, eliminați instalat anterior pe driverul de filtru USB-dispozitiv, eliminați toate driverele de filtrare instalate de pe toate dispozitivele USB. În cazul unor probleme cu acces la USB-dispozitiv, trebuie să instalați driver-ul de filtrare, asa ca alege primul punct, „Instalați un filtru de dispozitiv“:

Apoi, apare o fereastră în care expertul va afișa toate USB-dispozitiv de găsit, pe care îl puteți instala biblioteca filtrul driverul libusb. Ar trebui să fie în conformitate cu valorile VID și PID găsit în lista problemelor USB-dispozitivul nostru, selectați-l și faceți clic pe butonul Install.

Următoarea procedură va fi rapidă pentru a instala un driver de filtrare:

După instalarea unui driver filtru primi un mesaj. Acum, problema cu referire la dispozitiv prin intermediul libusb bibliotecă-USB nu va fi.
Procesul de compilare este finalizat, directorul curent va fi fișiere obiect (extensia * .Inelele) și executabil set-led.exe - fișierul executabil și au programul care funcționează cu USB-dispozitiv dezvoltat.
12. Conectați dispozitivul la computer. Dacă ați colectat și coase în mod corect, un mesaj care a găsit un nou dispozitiv LEDCtlHID.
și apoi un altul, USB Human Interface Device:
Dacă te uiți în Device Manager, directorul Human Interface Devices va fi de 2 dispozitive noi:

Nici conducător auto nu ne ia - dispozitivul nostru USB aparține unei clase de HID!
Asta-i tot! Putem învăța doar pentru a încerca exemple una după alta (exemple sunt descrise în etapa 4), codul lor de studiu, și chiar mai bine, pe baza de exemple pentru a face propriul USB-dispozitiv și un program pentru ea.
1. Dispozitiv de lucru ascuns-date, și a ascuns-personalizat-RQ - nr. LED-set led.exe utilitate de management afișează un mesaj de eroare "Nu s-a putut găsi un dispozitiv USB" LEDCtlHID "cu VID = 0x16c0 pid = 0x5df". În acest manager dispozitiv arată prezența dispozitivului conectat „USB HID-covmectimoe yctpoyctvo“ LEDCtlHID (cum ar trebui să fie), și utilitatea TestLibUsb - un dispozitiv care nu este prezentat. Motivul - nu aveți o bibliotecă libusb. sau instalarea sa a fost deteriorat (de exemplu, ce sa întâmplat cu mine după contractarea virusului - Kaspersky vindecat toate, dar ceva sa rupt). Eliminarea simplu - a instala biblioteca libusb (repetați pasul 8).
2. Gazda nu începe cu un "Ppilozheniyu ydaloc zapyctitcya ne, ne era Nayden libusb0.dll pockolky. Povtopnaya yctanovka ppilozheniya mozhet icppavit ETY ppoblemy". Motivul - în folderul% SystemRoot% \ system32 \ libusb0.dll lipsă fișier. Elimină simplu - trebuie să copiați fișierul de la un alt computer care execută o libusb bibliotecă, sau reinstalați libusb bibliotecă.
3. O problemă comună pentru începători pentru a lucra cu biblioteca V-USB - întrerupe. Este de dorit să se evite astfel de situații, lăsați o întrerupe INT0, care lucrează pentru V-USB, și de a folosi codul numai programul principal. Dacă aveți nevoie pentru a organiza un alt handler de întrerupere, atunci ar trebui să fie făcut cu cea mai mare grijă. În acest caz, cea mai bună soluție este de a scrie obrabochika de asamblare.
4. Incepatori încearcă adesea să se strecoare neîndemânatic exemple de pachet-USB-AVR russian.rar AVRStudio, și ei nu au de lucru - proiectul nu compilează, erori de accesare cu crawlere. De fapt, toate exemplele USB-AVR-russian.rar concepute pentru a compila din comanda de a face linia de comandă.
5. Uita de asemenea, pentru a construi proiectul (hex face make.) Pentru a face curat - face curat. Comanda make clean îndepărtează toate fișierele obiect, ceea ce asigură elaborarea corectă a tuturor cazurilor - și la schimbarea setărilor Makefile, și să modificați codul sursă.
6. În Makefile sunt importante proiect opțiuni de firmware - de tip microcontroler (DISPOZITIV), frecvența de ceas (F_CPU). Uneori, frecvența de cuarț pe microcontrolerul nu se potrivește cu F_CPU variabilă, iar USB-dispozitiv, deoarece aceasta nu funcționează. De asemenea, trebuie amintit că frecvența admisibilă a seriei de cuarț 12, 15, 16, 16,5, 20 MHz cuarț altele nu va funcționa.
7 sunt de asemenea importante în usbconfig.h fișierul de configurare - se setează toți parametrii USB-dispozitiv, cum ar fi picioarele sunt folosite pentru semnalele D + și D-. Scopul fiecărei opțiuni în detaliu documentate. fișier usbconfig.h este partajat firmware (folderul firmware) și software-ul gazdă (dosar linie de comandă).
microsin: pot exista mai multe motive, iar aceste motive pot funcționa simultan.
1. telecomanda IR transmite pachete mai lent decât rulează repetarea automată pe o tastatură obișnuită. Aceasta este cea mai probabilă cauză.
2. Pe de casă set HID-tastatura este prea mare interval de repetare automată (aceasta este doar dacă utilizați auto-repetare).
3. Lacune în programul HID-tastatură.
Dacă eu mă iau la pachet AVR-USB-conducător auto, motivul ar putea fi?
microsin: Tu nu trebuie să uitați să setați jumper, bootloader catalitică USBasp? Vă rugăm să citiți articolul "AVR-USB-MEGA16: USBasp bootloader USB pentru microcontroler și ATmega32". Odată ce jumper-ul și conectați USB, bootloader este activat, iar computerul va avea un dispozitiv care funcționează ca un programator USBasp, a cărui VID = 0 × 16C0 și PID = 0 × 05DC.
Dacă doriți să înlocuiți firmware-ul la altul, utilizați bootloader așa cum este descris în documentația sa. Dacă doriți să înlocuiți bootloader, utilizați un ISP sau JTAG programator, așa cum este descris în documentația sa.