Stap 1: Het gebruik van de AVR met V-USB
"V-USB is een software-implementatie van een low-speed USB-apparaat voor Atmel's AVR® microcontrollers, die het mogelijk maken om te bouwen USB-hardware met bijna elke AVR® microcontroller, niet vereist extra chip."
V-USB gebruikt een set van hardware en sommige zeer speciale vergadering programmering technieken voor bits-bang de niet-terugkeer-naar-zero (NRZ) binaire code die USB gebruikt om te communiceren. De bestanden die worden geleverd door V-USB zal in ons programma worden opgesteld om te maken van een USB-apparaat met onze ATmega328P
Bezoek de download sectie van V-USB website om een kopie van de meest recente versie. In de broncode van mijn project, heeft het al opgenomen.
Om te compileren V-USB in uw project...
- Zorg ervoor dat u de processor hebt gedefinieerd en kloksnelheid correct (V-USB ondersteunt alleen bepaalde kloksnelheden)
- Kopieer de map "usbdrv" van het gedownloade pakket in de projectmap van uw
- In uw projectmanager of makefile, omvatten "usbdrv.c" en "usbdrvasm. S", zodanig dat het object-bestand dat wordt gegenereerd zal worden gekoppeld in uw project
- In de map "usbdrv", er is een "usbconfig-prototype.h", kopieer dat bestand naar uw belangrijkste project-map en hernoem het naar "usbconfig.h"
- Bewerken van "usbconfig.h", dit zal later worden verklaard in detail
- "#include"-instructies gebruiken met "usbconfig.h" en vervolgens "usbdrv/usbdrv.h"
- Zorg ervoor dat "usbdrv/usbdrv.h" kundig voor vondst "usbconfig.h", is als er geen gebruik kunnen maken van, het gebruik "-ik" aan uw makefile of bewerken "usbdrv/usbdrv.h" om het bestandspad naar "usbconfig.h" (om te "... / usbconfig.h ")
Uw project moet dan het aantal functies implementeren...
- U moet initialiseren V-USB, en vervolgens inschakelen interrupts in de AVR
- Het is bijna een standaardpraktijk nep verbinding verbreken, wacht een paar milliseconden en opnieuw verbinding maken met de computer tijdens het starten van de code. Dit zorgt ervoor dat het apparaat en de computer zich in een staat van "reset" om te beginnen.
- Een handlerfunctie verzoek moet worden uitgevoerd, zelfs als u geen echte acties in het uitvoeren, moet u implementeren het zelf. Zoeken die "usbFunctionSetup" na.
- In ons voorbeeld moeten we gebruiken deze functie om twee speciale aanvragen te verwerken, zie je het later
- De gamepad is een HID-apparaat, een USB-HID verslag Descriptor moet worden geschreven en opgeslagen in uw code
Meer lezen: