䜿çšãããœãããŠã§ã¢
1 ãã€ã¯ãã³ã³ãããŒã©ãŒã®å ŽåãObjective Developmentã®V-USBã©ã€ãã©ãª[1]ããã³Atmelã®Atmel Studio 6 [2] IDEã ãŸããWinAVRããŒã«ãã§ãŒã³[3]ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŠããã€ã¯ãã³ã³ãããŒã©ãŒãã¡ãŒã ãŠã§ã¢ãã³ã³ãã€ã«ããå¿ èŠããããŸãïŒå°é家ã«ãšã£ãŠã¯ãAtmel Studioã®äžéšã§ããããŒã«ãã§ãŒã³ã§å¯Ÿå¿ã§ãããããããã¯å¿ èŠãããŸããïŒã
2 ã Windowsããã°ã©ã ïŒãã¹ããœãããŠã§ã¢ïŒãäœæããããã«ãLibUsbDotNet [4] Travis Robinsonã©ã€ãã©ãªãšMicrosoft Visual Studio CïŒ2010 [5] IDEã䜿çšãããŸããã
Visual Studio 2010ãé€ããã¹ãŠã®ãœãããŠã§ã¢ã¯ç¡æã§ãããVisual Studio CïŒ2010 Expressã¯æééå®ã§ç¡æã§äœ¿çšã§ããŸãã ãã¹ãŠã®ã¢ã¯ã·ã§ã³ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã Windows 7 x64ã®ç°å¢ã§å®è¡ãããŸããããWindowsãã¡ããªã®ä»ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒWindows XP以éïŒã¯ééããªãé©åã§ãã
äžå€é
V-USBã©ã€ãã©ãªã®ãããã§ãAVRãã€ã¯ãã³ã³ãããŒã©ãŒã¯USB HIDããã€ã¹ã®äœæã«é©ããŠããŸãã ã¯ãã ããŠã䜿çšããŠããå Žåã¯ãå ¬éãããŠããã¹ããŒã ã®ããããã«åŸã£ãŠèªåã§USBæ¥ç¶ãçµã¿ç«ãŠãããšãã§ããŸãã ãã®ãããªåè·¯ïŒV-USBããã±ãŒãž[1]ããååŸïŒã¯ãäŸãšããŠåçã«ç€ºãããŠããŸãã

æéãšåŽåãç¯çŽããã«ã¯ãæ¢è£œã®ãã¬ããããŒãã䜿çšããããšããå§ãããŸãã USBããŒãããŒããŒãããŒãã«æžã蟌ãŸããŠããå ŽåãããŒãããã©ãã·ã¥ããããã«ããã°ã©ããè³Œå ¥ããå¿ èŠããªãå Žåãç¹ã«äŸ¿å©ã§ãã AVR-USB-MEGA16ãã¬ããããŒããšATmega32Aãã€ã¯ãã³ã³ãããŒã©ãŒã䜿çšããããŒãããŒããŒïŒUSBaspããã°ã©ããŒã®åäœããšãã¥ã¬ãŒãããUSBââasploaderïŒãåããŠããŸãã ããã¯ãã¹ã«ãŒãããã«ãµã€ãºã§ã©ã®ããã«èŠãããã§ãïŒ

ãŸããã¡ã¿ããŒãïŒATmega168ãŸãã¯ATmega328ãæèŒïŒããŸãã¯ATmega8ãã€ã¯ãã³ã³ãããŒã©ãŒã®ããã°ã©ããŒã䜿çšããããšãã§ããŸãã ãããã®è ºã¯ã ebay.comãŸãã¯dx.comã§å®ãè³Œå ¥ã§ããŸãã
Atmel Studio 6ããã³V-USBã©ã€ãã©ãªã䜿çšãããã€ã¯ãã³ã³ãããŒã©ãŒãã¡ãŒã ãŠã§ã¢ã®äœæ
Atmel Studio 6ïŒä»¥éãåã«AS6ïŒã§æ°ãããããžã§ã¯ããäœæããŸãã AS6ããã€ã¯ãã³ã³ãããŒã©ãŒã®éžæãææ¡ããå Žåã Atmega32Aã§ã¯ãªãæåAãªãã®Atmega32ãéžæããŸãïŒAtmega32Aã¯ããŒãäžã«ãããŸããïŒ-ããã¯éèŠã§ããWinAVRããŒã«ãã§ãŒã³ã¯éããèªèãããAtmega32ã®ã¿ãèªèããŸãã ãããã®ãã€ã¯ãã³ã³ãããŒã©ãŒã®å éšèšèšã¯åäžã§ãããããç§ãã¡ã«ãšã£ãŠéãã¯ãããŸããããAS6ã«ã¯éãããããŸãã
ããã§ãã³ã³ãã€ã©ãæ£ããæ§æããå¿ èŠããããŸãã AS6ã®ãããã¡ãã¥ãŒã§[ ããŒã« ]ãã¯ãªãã¯ãã[ ãªãã·ã§ã³ ]ãã¯ãªãã¯ãããšã次ã®ãŠã£ã³ããŠã衚瀺ãããŸãã

ãªã¹ãã®å·ŠåŽã§ã ããŒã«ãã§ãŒã³ãéžæããŸã ã ãã¬ãŒããŒã®ãªã¹ããå³åŽã«è¡šç€ºãããŸãã ãã®èšèã§ãAtmelã¯äœ¿çšããããŒã«ïŒããŒã«ãã§ãŒã³ïŒã®å¯èœãªãªãã·ã§ã³ããšã³ã³ãŒãããŸããã
. Native, (Default). Native - GCC , . Atmel, AS6. , , V-USB ( USB HID USB) . , WinAVR, .
WinAVRããŒã«ãã§ãŒã³ããã¬ãŒããŒãªã¹ãã«è¿œå ããã«ã¯ã[ ãã¬ãŒããŒã®è¿œå ]ãã¿ã³ãã¯ãªãã¯ããŸãã次ã®ãŠã£ã³ããŠã衚瀺ãããŸãã

ãã®ãŠã£ã³ããŠã®äžçªäžã®è¡ã«ãWinAVRã³ã³ãã€ã©ãŒã®ååïŒä»»æïŒãå ¥åããäžçªäžã®è¡ã«ãããŒã«ãã§ãŒã³ã³ã³ãã€ã©ãŒãã€ã³ã¹ããŒã«ãããŠãã絶察ãã¹ïŒ\ binãã©ã«ããŒïŒãå ¥åãã[ è¿œå ] ãã¯ãªãã¯ããŸãã ã¹ã¯ãªãŒã³ã·ã§ããã«ç€ºãããã«ãè¿œå ãããã³ã³ãã€ã©ãFlavorsãªã¹ãã«è¡šç€ºãããŸãã

æ°ããè¿œå ããWinAVRã³ã³ãã€ã©ãããŠã¹ã§éžæãã[ ããã©ã«ããšããŠèšå® ]ãã¿ã³ïŒããã©ã«ãã®ããŒã«ããŒã«ããïŒãã¯ãªãã¯ãã[OK]ãã¯ãªãã¯ããŸãã ãã®æé ã®åŸãAS6ã¯WinAVRã³ã³ãã€ã©ã䜿çšããŸãã
ãããžã§ã¯ãã®ããããã£ãèšå®ããŸãããã®ããããœãªã¥ãŒã·ã§ã³ãšã¯ã¹ãããŒã©ãŒã®ã«ãŒãœã«ã䜿çšããŠå·Šã¯ãªãã¯ã§ãããžã§ã¯ãåãéžæãã Alt + F7 ïŒã¡ãã¥ãŒãããžã§ã¯ã->ããããã£ïŒãæŒããšãèšå®ã®ãŠã£ã³ããŠã衚瀺ãããŸãã

次ã®èšå®ãè¡ããŸãã
- AVR / GNU Cã³ã³ãã€ã©->ã·ã³ãã«ã»ã¯ã·ã§ã³ã§ãè¡F_CPU = 12000000ULã-Dãã£ãŒã«ãã«è¿œå ããŸã-ããã¯ãã€ã¯ãã³ã³ãããŒã©ãŒ12 MHzã®åšæ³¢æ°ã«å¯Ÿå¿ããŸãïŒãã®ã¯ãªãŒãã¯AVR-USB-MEGA16ãã¬ããããŒãã«ã€ã³ã¹ããŒã«ãããŸãïŒã
- AVR / GNU Assemler-> Generalã»ã¯ã·ã§ã³ã®Assembler flagãã£ãŒã«ãã§ã -DF_CPU = 12000000ULãè¿œå ããŸãã
- AVR / GNU Cã³ã³ãã€ã©->æé©åã»ã¯ã·ã§ã³ã§ã æé©åã¬ãã«ãã£ãŒã«ãã®ãµã€ãºãæé©åïŒ-OsïŒã«ããå¿ èŠããããŸãã
ããã«ãéåžžã«éèŠãªç¹-äžã®å³ã«ç€ºãããã«ããŠã£ã³ããŠã®å·ŠåŽã®ãªã¹ãã§ã[ 詳现èšå®]ã»ã¯ã·ã§ã³ãéžæããŸãã

[ ããŒã«ãã§ãŒã³ãã¬ãŒããŒ]ããããããŠã³ãªã¹ãã§ãè¿œå ãããWinAVRã³ã³ãã€ã©ãéžæããAS6ããããžã§ã¯ãã®ã³ã³ãã€ã«æã«äœ¿çšããããã«ããŸãã ããã§AS6ã®ã»ããã¢ãããå®äºããŸããã
次ã«ããããžã§ã¯ã[6]ã®ãœãŒã¹ã³ãŒããã¡ã€ã«ãäœæãããããžã§ã¯ãã«è¿œå ããŸã-ãã¡ãŒã ãŠã§ã¢\ VUSBãã©ã«ããŒãVUSB.cãusbdrv.cãusbdrvasm.Sããã³oddebug.cãã¡ã€ã«ãåç §ããŠãã ããã ASS6ãããžã§ã¯ãã¯ãV-USBã©ã€ãã©ãªã®1ã€ã®äŸã«åºã¥ããŠããŸããhid-custom-rqã¯ãããšããšã³ãã³ãã©ã€ã³ããmakeãŠãŒãã£ãªãã£ã䜿çšããŠã³ã³ãã€ã«ãããŸããã V-USBã©ã€ãã©ãªã«åºã¥ããŠãä»ã®å€ãã®ã³ãŒãäŸãèŠã€ããããšãã§ããŸã-äž»ã«USB HIDããã€ã¹ïŒããŠã¹ãããŒããŒããå ¥åããã³åºåããã€ã¹ïŒããããŸãããUSB CDCããã€ã¹ïŒä»®æ³COMããŒãïŒããããŸãã èªåã§ãããžã§ã¯ããäœæããã®ãé¢åãªå Žåã¯ãAS6ã§VUSB.atslnãããžã§ã¯ããã¡ã€ã«ãéãã ãã§ãå¿ èŠãªèšå®ããã¹ãŠè¡ãããå¿ èŠãªãã¡ã€ã«ããã¹ãŠè¿œå ãããŸãã
å¥ã®ãã¬ããããŒãã䜿çšããå Žåã¯ã usbconfig.hãã¡ã€ã«ãæ£ããæ§æããå¿ èŠããããŸãã ããã¯V-USBã©ã€ãã©ãªã®æ§æãã¡ã€ã«ã§ãããå€ãã®èšå®ãšãã©ã¡ãŒã¿ãŒïŒVIDãPIDããã€ã¯ãã³ã³ãããŒã©ãŒã¬ãã°ãèšè¿°åã®å€ãããã³ãã®ä»ã®èšå®ïŒãèšå®ããŸãã ãã¹ãŠã®èšå®ã®è©³çŽ°ãªèª¬æã¯ããã®ãã¡ã€ã«ã®ã³ã¡ã³ãã«èšèŒãããŠããŸãã äž»ãªæ³šæç¹ã¯ãUSD D +ããã³D-ä¿¡å·ïŒãã¯ãå®çŸ©USB_CFG_IOPORTNAMEãUSB_CFG_DMINUS_BITãUSB_CFG_DPLUS_BITïŒã«äœ¿çšããããã€ã¯ãã³ã³ãããŒã©ãŒãã³ã®ç®çã§ãããããã®ã¬ãã°ã«ã¯ç¹å¥ãªèŠä»¶ã課ãããŸãã ã¢ãŒã«ã€ã[6]ã®èšå®ãã¡ã€ã«usbconfig.hã¯ãAVR-USB-MEGA16ãã¬ããããŒãã®èã®ã¬ã€ã¢ãŠãçšã§ãããåäœãä¿èšŒãããŠããŸãã ããã°ã©ã ã¯LEDã§ç¹æ» ããŸããLEDã¯ãã¬ããããŒãäžã«ãããããŒãBã®0ã¬ãã°ã«æ¥ç¶ãããŠããŸãã
ã³ã³ãã¥ãŒã¿ãŒããã°ã©ã ïŒãã¹ããœãããŠã§ã¢ïŒã®äœæ
ããã°ã©ã ã¯ããã€ã¯ãã³ã³ãããŒã©ãŒãå¶åŸ¡ããUSBââæ¥ç¶ãä»ããŠãã±ãããéä¿¡ããå¿ èŠããããŸãã
. V-USB. makefile MinGW, LibUSB. Visual Studio LibUsbDotNet. LibUsbDotNet , , . - , LibUSB . , , - LibUSB, USB Windows. .
Microsoft Visual CïŒ2010 Expressãèµ·åããWindowsãã©ãŒã ã«åºã¥ããŠæ°ãããããžã§ã¯ããäœæããŸãã 次ã«ã LibUsbDotNet.dllã©ã€ãã©ãªããããžã§ã¯ãã«æ¥ç¶ããå¿ èŠããããŸãã ãœãªã¥ãŒã·ã§ã³ãšã¯ã¹ãããŒã©ãŒã§ããããžã§ã¯ãåãå³ã¯ãªãã¯ãã[ãªã³ã¯ã®è¿œå ]ãéžæããŸãã

å¥ã®ãŠã£ã³ããŠã衚瀺ãããŸã

ããã§ã¯ãLinUsbDotNet.dllã©ã€ãã©ãªããããã£ã¹ã¯äžã®ãã¹ãèŠã€ããå¿ èŠããããŸãïŒããã©ã«ãã§ã¯CïŒ\ Program Files \ LibUsbDotNetãã©ã«ããŒãã€ã³ã¹ããŒã«ããŸããããããžã§ã¯ãã®äœæ¥ãã£ã¬ã¯ããªã«DLLãã¡ã€ã«ã®ã³ããŒãäœæããããšããå§ãããŸããè¡ã®ã¡ã€ã³ããã°ã©ã ã¢ãžã¥ãŒã«ïŒãã¡ã€ã«Form1.csïŒãžïŒ
using LibUsbDotNet; using LibUsbDotNet.Info; using LibUsbDotNet.Main;
ãã©ãŒã ã®ããžã¥ã¢ã«ãšãã£ã¿ãŒã«ç§»åããŠã次ã®ããã«ããŸãïŒ3ã€ã®ãã¿ã³ãã¿ã³ãš3ã€ã®ã©ãã«ããã¹ãã©ãã«ãè¿œå ããŸãïŒã

ãã©ãŒã ããŒãã€ãã³ããã³ãã©ãŒãäœæããŸãã ããã°ã©ã ã®èµ·åæã«LibUsbDotNetã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãåæåããããããéããŠUSBããã€ã¹ãšäº€æãããããã«ããå¿ èŠããããŸãã 亀æãéå§ããåã«ãè€æ°ã®USB HIDããã€ã¹ãã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ã§ããåããã€ã¹ã«åå¥ã«é£çµ¡ã§ããå¿ èŠããããããç¹ã«ããã€ã¹ãžã®ã¢ã¯ã»ã¹ãéãå¿ èŠããããŸãã USBããã€ã¹ãèå¥ããããã«ããã¹ãŠã®USBããã€ã¹ãæã€ç¹å¥ãªèå¥åã䜿çšãããŸãããããã¯VIDãšPIDã§ãã
. - USB VID PID, . USB-, , VID/PID, , .
VIDã¯ã¡ãŒã«ãŒIDïŒãã³ããŒIDïŒãPIDã¯ããã€ã¹IDïŒè£œåIDïŒã§ãã USBããã€ã¹ã®VIDïŒ0x 16C0 ãPIDïŒ0x 05DF ããããã®å€ã¯ãAS6ãã€ã¯ãã³ã³ãããŒã©ãŒãããžã§ã¯ãã®æ§æãã¡ã€ã«usbconfig.h ïŒãã®ãã¡ã€ã«ã«ã€ããŠã¯æ¢ã«èª¬æããŸããïŒã§ç€ºãããŠããŸãã ãã¹ããœãããŠã§ã¢ãUSBããã€ã¹ã«ã¢ã¯ã»ã¹ããã«ã¯ã usbconfig.hãã¡ã€ã«ã«ç€ºãããŠããããã«ãåããã©ã¡ãŒã¿ãŒVIDïŒ0x16c0ãPIDïŒ0x05dfã§MyUsbFinderãªããžã§ã¯ããåæåããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãForm1ã¯ã©ã¹ã®ã°ããŒãã«å€æ°å®çŸ©é åã«æ¬¡ã®ã³ãŒããè¿œå ããŸãã
public static UsbDevice MyUsbDevice; public static UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(0x16c0, 0x05df);
ã©ã®USBããã€ã¹ã䜿çšãããã決å®ããããããã«æ¥ç¶ã§ããŸããããã¯ãããã°ã©ã ãèµ·åããïŒãã©ãŒã ãŠã£ã³ããŠãéãïŒãšãã«äŸ¿å©ã§ãã ãããè¡ãã«ã¯ãããã°ã©ã ã®ã¡ã€ã³ãã©ãŒã ãéžæããããããã£ãšãã£ã¿ãŒã§ãããŒãã€ãã³ããã³ãã©ãŒForm1_LoadãäœæããŸãã ãã³ãã©ãŒã®æ¬æã«ã次ã®ã³ãŒããå ¥åããŸãã
private void Form1_Load(object sender, EventArgs e) { MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder); if (MyUsbDevice != null) { label2.Text = " !"; } else label2.Text = " !"; }
ãã¿ã³button1ïŒããªã³ãïŒã«ã¯ãªãã¯ã€ãã³ããã³ãã©ãŒãäœæããŸããããã«ã¯ãããžã¥ã¢ã«ãšãã£ã¿ãŒã§ãã¿ã³ãããã«ã¯ãªãã¯ããã€ãã³ããã³ãã©ãŒã®æ¬äœã«ã³ãŒããè¿œå ããŸãã
private void button1_Click(object sender, EventArgs e) { // , AVR-USB-MEGA16. UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_Out), 1, (short)1, 0, 0); int countIn; byte[] data = new byte[1]; MyUsbDevice.ControlTransfer(ref packet, data, 0, out countIn); }
ããªãããã¿ã³ãã³ãã©ãŒã«ã¯ãã³ãŒããè¿œå ããŸãã
private void button3_Click(object sender, EventArgs e) { // , AVR-USB-MEGA16. UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_Out), 1, (short)0, 0, 0); int countIn; byte[] data = new byte[1]; MyUsbDevice.ControlTransfer(ref packet, data, 0, out countIn); }
èªã¿åããã¿ã³ãåŠçããããã®ã³ãŒãïŒ
private void button2_Click(object sender, EventArgs e) { // AVR-USB-MEGA16 - . UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_In), 2, (short)0, (short)0, (short)0); int countIn; byte[] data = new byte[1]; if (MyUsbDevice.ControlTransfer(ref packet, data, 1, out countIn) && (countIn == 1)) { label3.Text = " " + data[0].ToString(); } }
ãã©ãŒã ãéããããã®ã€ãã³ããã³ãã©ïŒããã°ã©ã ã®çµäºïŒã¯ãLEDãç¹ç¯ããŠããå Žåã¯æ¶ç¯ããŸãã
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_Out), 1, (short)0, 0, 0); int countIn; byte[] data = new byte[1]; MyUsbDevice.ControlTransfer(ref packet, data, 0, out countIn); }
ãã€ã¯ãã³ã³ãããŒã©ãŒãã¡ãŒã ãŠã§ã¢ã§USBãã±ããããã³ãŒãããæ¹æ³
ãã€ã¯ãã³ã³ãããŒã©ãŒåŽã§ã®ããŒã¿ã®åä¿¡ãšåŠçã¯ã usbFunctionSetupé¢æ°ã§å®è¡ãããŸãïŒãã¡ãŒã ãŠã§ã¢AS6ãããžã§ã¯ãã®ã¡ã€ã³ã¢ãžã¥ãŒã«VUSB.cã«ãããŸãïŒã é¢æ°ã¯æ¬¡ã®ãšããã§ãã
usbMsgLen_t usbFunctionSetup(uchar data[8]) { usbRequest_t *rq = (void *)data; if((rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_VENDOR){ DBG1(0x50, &rq->bRequest, 1); /* : */ if(rq->bRequest == CUSTOM_RQ_SET_STATUS){ if(rq->wValue.bytes[0] & 1){ /* LED */ LED_PORT_OUTPUT |= _BV(LED_BIT); }else{ /* LED */ LED_PORT_OUTPUT &= ~_BV(LED_BIT); } }else if(rq->bRequest == CUSTOM_RQ_GET_STATUS){ static uchar dataBuffer[1]; /* usbFunctionSetup */ dataBuffer[0] = ((LED_PORT_OUTPUT & _BV(LED_BIT)) != 0); usbMsgPtr = dataBuffer; /* , */ return 1; /* 1 */ } }else{ /* USBRQ_HID_GET_REPORT USBRQ_HID_SET_REPORT , * . , * . */ } return 0; /* default : */ }
USB HIDããã€ã¹ã¯æãã·ã³ãã«ã§ããšã³ããã€ã³ã0ïŒããã©ã«ãã®ã³ã³ãããŒã«ãšã³ããã€ã³ãïŒãééããã³ã³ãããŒã«è»¢éã«ã®ã¿å¿çããŸãã èŠæ±ã®ã¿ã€ãïŒãã£ãŒã«ãbRequestïŒã«ãã£ãŠãããŒã¿éä¿¡ã®æ¹åããã³ãŒããããŸãã CUSTOM_RQ_SET_STATUSã®å Žåãããã¯ãã€ã¯ãã³ã³ãããŒã©ãŒåãã®ããŒã¿ã§ãã ããŒã¿ã¯ãã³ãŒãããããã€ã¯ãã³ã³ãããŒã©ãŒã¯ããã«çœ®ãããã³ãã³ããå®è¡ããŸãã ãã®å ŽåãLEDã®ã¹ããŒã¿ã¹ã¯ãæåã«åä¿¡ããããŒã¿ãã€ãã§ãšã³ã³ãŒããããŸããäžäœãããã«1ãããå ŽåãLEDããªã³ã«ãªãããŒãã®å Žåãæ¶ç¯ããŸãã CRequestOM_RQ_GET_STATUSãbRequestãã£ãŒã«ãã§åãå ¥ããããå Žåããããã¡ã¯LEDã®çŸåšã®ã¹ããŒã¿ã¹ã§æºãããããããã¡ããŒã¿ããã¹ãã«è¿éãããŸãã ãã¹ãŠãéåžžã«åçŽã§ãããå¿ èŠã«å¿ããŠãã³ãŒãã®åäœãããŒãºã«åãããŠç°¡åã«å€æŽã§ããŸãã
ä»çµã¿ã®ãããªïŒ
質åã«å¯Ÿããã³ã¡ã³ããšå»ºèšçãªã³ã¡ã³ãã§ãçãã§ããŠããããã§ãã
åç §è³æ
1 V-USB
2 ã Atmelã¹ã¿ãžãª6 ã
ïŒ ã WinAVR
4 ã LibUsbDotNet CïŒUSBã©ã€ãã©ãª ã
5 ã Visual Studio 2010 Express ã
6 ã ãã€ã¯ãã³ã³ãããŒã©ãšãã¹ããœãããŠã§ã¢ã®ãœãŒã¹ã³ãŒã ã
PSç¥èã®æšé²åã¯ã microsin.netãµã€ãã§ããããã®ãµã€ãã«ã¯ãUSBãããã³ã«ã«é¢ããå€ãã®æ å ±ãšãUSBããã€ã¹ã§ã®ãã€ã¯ãã³ã³ãããŒã©ãŒã®å®éã®äœ¿çšããããŸããã ã©ããããããšãïŒ å¿çæ§ãšãã®ãããã¯ã«é¢ãã質åã®æ¯æŽã®ããã«ããã®ãµã€ãã®éçºè ã«ã
å°æ¥çã«ã¯ãå¯èœã§ããã°ãããŒããŠã§ã¢USBã€ã³ã¿ãŒãã§ã€ã¹ãåãããã€ã¯ãã³ã³ãããŒã©ãŒã§åãããšãè¡ãäºå®ã§ãã