Étape 6: Firmware Code
Remarque : Une grande partie du code pour ce projet provenait en totalité ou en partie un excellent tutoriel VUSB sur Th.
Assurez-vous que votre code du microprogramme est enregistré dans le même répertoire que le dossier d’usbdrv que vous avez téléchargé depuis VUSB (le dossier d’usbdrv, à son tour, doit contenir la mis à jour le usbconfig.h).
Je ne vais pas dans le code trop. Il y a beaucoup d’autres ' ibles PWMing LEDs, ou mise en place de couleur changeant des lumières d’ambiance. La seule chose qui est sans doute de nouveau est le code pour interagir avec le port USB. Il y a deux manières différentes de transférer des données sur USB. La façon la plus simple consiste à utiliser un transfert de contrôle. Un transfert de contrôle est généralement utilisé pour la configuration ou les commandes de l’État, mais il y a suffisamment d’espace pour envoyer toutes nos données. Un transfert de contrôle commence avec un paquet d’installation. De la documentationde la libusb, le paquet d’installation a la structure suivante :
bRequest, wValue et wLength peuvent être spécifiques à l’application. Pour nos besoins, nous aurons un certain nombre de bRequest unique pour chaque canal RVB différent (et l’autre pour le mode de fondu). Dans le code ci-joint, il ressemble à ceci :
Nous allons utiliser wValue pour maintenir le niveau d’intensité spécifiée par l’utilisateur (0-255). Ainsi, par exemple, si nous voulions tourner entièrement sur les LEDs rouges, nous enverrait un message à bRequest la valeur « 0 » et wValue « 255 » la valeur. Si nous voulions faire éteindre les LEDs vertes, nous enverrions un message avec bRequest défini à « 1 » et wValue la valeur « 0 ». Le code VUSB offre un moyen agréable pour nos micro extraire ces informations du paquet d’installation sous la forme de la fonction usbFunctionSetup() , qui est appelée automatiquement chaque fois que le micro voit un paquet d’installation.