Zedomax DIY121 - Paano gumawa ng sariling "PS3 SIXAXIS magsusupil" style BATAYANG-Programmable USB aparato!
I-click dito upang Tingnan sa Full Screen Mode
USB aparato ay madali para sa mga gumagamit na i-install at i-set up (hangga't ang lahat ng bagay ay gumagana ng tama). Kadalasan, hindi ka na lamang ng plug sa isang USB aparato at ito ay gumagana kaagad. Ito ay lalong totoo para sa mga aparatong input, tulad ng mice at keyboard.
Yaong mga aparato tumalima sa isang detalye layered sa itaas ng protocol ng USB: Human Interface Device. Halos anumang posibleng uri ng input ay natukoy; isang buong "Ang ulat na tagapaglarawan" wika ay ginagamit upang sabihin sa computer kung paano i-proseso ang input. Na ito ay hindi masyadong simple ipatupad; dose-dosenang mga tiyak na kahilingan ay dapat na hawakan ng maayos. Mayroong maraming mga hakbang sa pagitan ng plugging sa isang USB aparato at ng kakayahang gamitin ito; ang mga ito sa lahat ng mangyayari sa loob ng ilang milliseconds at kabiguan ng anumang hakbang ay nangangahulugan na ang aparato ay hindi gagana.
Paano kung hindi mo na kailangang mag-alala tungkol sa anuman sa mga iyon? Paano kung maaari mong gamitin ang iyong mga paboritong microcontroller, gawin ang "something" at input ang lalabas sa ang computer sa tamang format? Hindi mo gusto mag-alala tungkol sa mga kumplikadong USB code, HID pagtutukoy, o paglabag sa iyong USB code kapag ang pagdagdag ng iba pang mga function na kailangan mo. Hindi mo gusto mag-alala marami tungkol sa pagsulat ng optimized code, o palaging nakakakuha sa paraan ng USB interrupts.
HID Portal
Iyan ay kung ano mismo ang nagpasya kong gawin. Ang isang pares ng mga taon na ang nakaraan, ako ay nakabuo ng isang USB aparato at nagpunta sa pamamagitan ng lahat ng sakit ng ulo ng pagkuha ng isang USB HID up at tumatakbo. Dahil ako ay nagkaroon ng hirap sa trabaho tapos na, ako ay nagpasya na magdagdag ng isang paraan ng pagtanggap ng data mula sa iba pang microcontroller at gamit ang data na iyon bilang input stream para sa code ng HID. Nais ko na gumamit ng isang Cubloc BATAYANG-Programmable magsusupil sa proseso ng aking data input at ipadala ito sa HID Portal. Aking mga pagsubok na application ay isang accelerometer-based HID dyoistik; lamang plug ang aparato sa ang computer at ito ay gumagana.
Hindi kailangang maging isang dyoistik; maaaring ito ay isang keyboard, isang mouse, o marami pang ibang mga kontrol natukoy sa pamamagitan ng standard na HID. Ito ay posible na magdagdag ng mga pindutan ng lakas ng tunog control sa isang aparato ... siguro may circuit sa isang taong pipi sa inyong computer kapag ang telepono singsing? Lumiko anumang boltahe input sa isang aksis dyoistik, anumang lumipat sa isang pindutan? Kahit ano ay posible!
Update: ako ay nagpasya na ang pag-urong CUBLOC hardware down sa isang CB220, at magkasya ang lahat ng bagay sa isang modelo ng airplane. Ang modelo ay pinili na tugma ng isang airplane magagamit sa Heroes ng Pacific laro ginamit namin na subukan ang dyoistik interface.
Hardware Paliwanag
Ang HID Portal ay batay sa isang lumang proyekto ng minahan, batay sa isang MC68HC908JB8 microcontroller at programmed sa pagpupulong na wika. Para sa mga tiyak na mga dahilan na hindi talaga ako makapag-release ng code sa ngayon, ngunit may mga ng maraming iba pang mga proyekto sa USB lumitaw diyan na kung saan ay maaaring nilikha para sa layunin na ito. May isang bukas-sourced malambot USB para sa pagpapatupad ng microcontroller ATtiny, halimbawa.
Aking microcontroller ay hindi naka-built-in I2C or SPI, kaya ko na kailangan upang isakatuparan ang isa sa aking sarili. Ako din hindi na-abala Pins magagamit, ibig sabihin ang aking mga solusyon na kailangan upang maging base sa botohan. Kapag ang lahat ay said at tapos na at optimized, hindi ko maaaring tuklasin ang mga gilid ng mas mabilis kaysa sa 16Khz. Ito ay tungkol sa sampung beses slower kaysa sa paglilipat na output ay magagamit mula sa magsusupil CUBLOC, kaya hindi ko maaaring gamitin na. Ako natapos ng pagsulat ng aking sariling paglilipat-out na gawain sa BATAYANG upang makakuha ang data sa HID Portal. Ito ay maaaring iwasan sa pamamagitan ng paggamit ng isang microcontroller na may SPI o I2C na binuo sa na, pero JB8 ay kung ano ako ay nasa kamay.
Gumagamit ako ng tatlong senyas upang makipag-usap sa magsusupil CUBLOC. Una, mayroong isang CLK signal. Ang HID Portal nakikita ang pagsikat ng isang gilid. Sa puntong iyon, ito ang makakabasa ng mga kasalukuyang halaga sa linya DATA. Ito ay shifted sa isang magparehistro hanggang sa isang byte ay natanggap, at ang mga code na lilipat sa susunod na byte. Ang / RST linya ay isang paraan upang mag-synchronize sa simula ng bawat packet data kung sakaling may anumang mga bogus input; kapag mababa ito sa mga hanay ng packet at bit index sa zero.
Ang HID Portal ay kasalukuyang programmed na kumilos bilang isang dyoistik may tatlong axes at walong buttons. Din ko na sinubok ito bilang isang keyboard. Sa pag-unlad sa hinaharap, gusto kong gawin ang HID Portal mas nababaluktot; pabayaan ang mga panlabas na magsusupil piliin ang mga uri ng aparato at kung gaano karami ng bawat input ay kinakailangan. Gusto Ito ay ang pinaka-naibabagay sa mga pangyayari kung ito direkta tinanggap HID descriptors ulat, ngunit na bubukas up na ang posibilidad na gumawa ng mas maraming mga pagkakamali at ang end up sa isang di-gumagana aparato.
Accelerometer ay isang DE-ACCM3D mula sa Sukat ng Engineering. Ang CUBLOC lamang ang makakabasa ng boltahe sa kanyang ADIN port at nagpalit sa isang halaga sa pagitan ng -127 at 127.
Patuloy sa Susunod na Pahina
















































