Zedomax DIY121 - Cum să faci propriul tău "PS3 SIXAXIS controlor" stil de bază dispozitiv programabil USB!
Faceţi clic aici pentru a vizualiza în Full Screen Mode
Dispozitivele USB sunt uşor pentru ca utilizatorii să instaleze şi a înfiinţat (cu condiţia ca totul funcţionează corect). De multe ori, tu chiar conectaţi un dispozitiv USB şi it works imediat. Acest lucru este valabil în special pentru dispozitivele de intrare, cum ar fi şoareci şi tastaturi.
Aceste dispozitive sunt conforme cu un caiet de sarcini stratificată pe partea de sus a protocolul USB: Human Interface Device. Aproape orice tip posibil de intrare este definit; un întreg "descriptor raport" limba este folosit pentru a spune calculatorului cum să proces de intrare. Acest lucru nu este foarte simplu să pună în aplicare; zeci de cereri specifice trebuie să fie tratate în mod corespunzător. Există mulţi paşi între conectarea într-un dispozitiv USB şi a fi capabil să le utilizeze; toate acestea au loc în câteva milisecunde şi eşecul de orice pas înseamnă dispozitivul nu va funcţiona.
Ce dacă tu nu a trebuit să vă faceţi griji cu privire la oricare din asta? Ce se întâmplă dacă ai putea folosi microcontroler dumneavoastră preferat, a face "ceva" şi de intrare apare pe calculator în formatul corect? Tu nu ar trebui să vă faceţi griji despre codul de complexe USB, caietul de sarcini HID, sau de rupere codul dvs. USB când adăugând funcţiile de care aveţi nevoie. Tu nu ar trebui să vă faceţi griji de mult despre scrierea de cod optimizat, sau întotdeauna să vă stea în calea de întreruperile USB.
HID Portal
Asta e exact ceea ce am decis să fac. Un cuplu de ani în urmă, am dezvoltat un dispozitiv USB şi a trecut prin toate dureri de cap de a obţine un USB HID sus şi să fie difuzate. Din moment ce am avut deja munca grea făcut, am decis să adauge o metodă de a primi date de la un alt microcontroler şi utilizând că datele ca fluxul de intrare pentru codul HID. Am vrut să utilizeze o BAZA Cubloc-controler programabil de a prelucra date de intrare meu şi trimite-l la Portal HID. Cererea mea de testare ar fi un accelerometru bazate pe joystick-ul HID; pur şi simplu conectaţi dispozitivul la computer şi că va funcţiona.
Aceasta nu trebuie să fie un joystick;Ar putea fi o tastatură, un mouse, sau multe alte controale definite de standardul HID. Este posibil să adăugaţi butoane pentru controlul volumului la un dispozitiv de ... poate avea un circuit de mut computer atunci când sună telefonul? Transforma orice tensiune de intrare într-o axă joystick-ul, orice trece într-un buton? Orice este posibil!
Update: am decis să scadă hardware-ul CUBLOC în jos la un CB220, şi tot ceea ce se potrivesc într-un model de avion. Modelul a fost ales pentru a se potrivi un avion disponibile în Eroilor de la joc Pacific am folosit pentru a testa interfata joystick-ul.
Hardware Explicaţie
Portalul HID se bazează pe un proiect vechi de-al meu, bazat pe un microcontroler MC68HC908JB8 şi programate în limbaj de asamblare. Din anumite motive nu pot presă, de fapt, codul chiar acum, dar există o mulţime de alte proiecte de USB acolo care ar putea fi adaptate în acest scop. Acolo 'un deschis-punere în aplicare provenind moale USB pentruMicrocontroler ATTINY, de exemplu.
Microcontroller mea nu şi-au construit-in-I2C sau SPI, asa ca am nevoie de a pune în aplicare unul de-al meu. Eu, de asemenea, nu au avut întrerup Pins disponibile, ceea ce înseamnă soluţie meu necesare pentru a se bazeze pe de votare. Când totul a fost spus şi de făcut şi optimizat, nu am putut detecta marginile mai repede decât 16kHz. Acest lucru este de aproximativ de zece ori mai lent decât producţia trecerea de la dispoziţie de la operator CUBLOC, aşa că nu am putut folosi pe acela. Am sfârşit prin a scris trecerea mea propria-out rutina in BAZĂ pentru a obţine date pentru a portalului HID. Acest lucru ar putea fi evitată prin utilizarea unui microcontroler care are SPI sau I2C construit în deja, dar JB8 este ceea ce am avut pe mână.
Eu folosesc trei semnale pentru a comunica cu controlerul CUBLOC. În primul rând, există un semnal de CLK. Portalul HID detectează un avantaj în creştere. În acel moment, citeşte valoarea prezentă pe linia DATE. Aceasta este deplasat într-un registru, până când un octet a fost primit, şi se mută la codul de byte următoare./ RST linie este o modalitate de a sincroniza de începerea fiecărui pachet de date în cazul în care nu a existat nici o intrare falsă; LOW atunci când acesta stabileşte de pachete şi indexurile de biţi la zero.
Portalul HID este în prezent programat să acţioneze ca un joystick-ul cu trei axe şi opt butoane. I-am testat, de asemenea, ca pe o tastatură. În dezvoltarea viitoare, aş dori să fac Portal HID mai flexibilă; lasa controller externe a selecta tipul de dispozitiv şi câte din fiecare intrare sunt necesare. Ar fi cel mai flexibil, în cazul în care, direct acceptat descriptori HID raport, dar că se deschide posibilitatea de a face mai multe greşeli şi să se termine cu un non-dispozitiv de lucru.
Accelerometru este o DE-ACCM3D de la Dimension Inginerie. CUBLOC pur şi simplu citeste tensiunea pe porturile sale Adin şi converteşte la o valoare cuprinsă între -127 şi 127.
Continuat pe Next Page
















































