USB-Wii Classic Controller (1 / 18 steg)
Steg 1: Med AVR med V-USB
"V-USB är en bara programvara genomförandet av en low-speed USB-enhet för Atmel's AVR® microcontrollers, gör det möjligt att bygga USB-maskinvara med nästan alla AVR® mikrokontroller, som inte kräver någon ytterligare chip."
V-USB använder en uppsättning av hårdvara och några mycket speciell församlingen programmeringstekniker till bit-bang tillbaka-till-noll (NRZ) binära koden som USB använder för att kommunicera. De filer som tillhandahålls av V-USB kommer att sammanställas i våra program för att skapa en USB-enhet med våra ATmega328P
Besök den Hämta V-USB webbplats för att få en kopia av den senaste versionen. I mitt projekt källkod, har det redan ingår.
Att sammanställa V-USB till projektet...
- Kontrollera att du har definierat processorn och klockhastigheten korrekt (V-USB stödjer endast vissa klockhastigheter)
- Kopiera mappen "usbdrv" från den nedladdade paketet till projektmappen
- Din projektledare eller makefile, bland annat "usbdrv.c" och "usbdrvasm. S", så att objektfilen som genereras kommer att bli kopplad till ditt projekt
- Inne i mappen "usbdrv", det finns en "usbconfig-prototype.h", kopiera den filen till katalogen huvudprojektet och döp om den till "usbconfig.h"
- Redigera "usbconfig.h", detta kommer att förklaras i detalj senare
- Använda "#include" uttalanden för att inkludera "usbconfig.h" och sedan "usbdrv/usbdrv.h"
- Se till att "usbdrv/usbdrv.h" är att hitta "usbconfig.h", om den inte kunna använda användning "-jag" till din makefile eller redigera "usbdrv/usbdrv.h" att ändra sökvägen till filen till "usbconfig.h" (att "... / usbconfig.h ")
Sedan måste projektet genomföra vissa funktioner...
- Du måste initiera V-USB och sedan på Aktivera avbrott i AVR
- Det är nästan en normal praxis att fake frånkoppling, vänta några millisekunder och återansluta till datorn, under start koden. Detta gör att din enhet och datorn finns i en "reset" stat att börja.
- En begäran hanterarfunktion måste genomföras, även om du inte utföra verkliga åtgärder i det, du måste genomföra det själv. Leta efter "usbFunctionSetup" senare.
- I vårt exempel, måste vi använda denna funktion för att hantera två speciella önskemål, ser du det senare
- Gamepad är en HID-enhet, en USB-HID-rapport deskriptor måste skrivas och lagras i din kod
Mer läsning: