Étape 3: Utiliser la bibliothèque de l’usb
Maintenant, vous devez télécharger ce pour en savoir plus sur le contrôleur : https://github.com/ribbotson/USB-Host/blob/master/examples/USB_desc.pde
Avec ce code, nous découvrons toutes sortes de choses sur l’arduino.
Voir :
Début
freeMemory() rapports 683
Descripteur de périphérique :
Descripteur de longueur : 12
Type de descripteur : 01
Version USB : 0200
Classe de périphérique : 00
Sous-classe de périphérique : 00
Protocole de périphérique : 00
Max.Packet taille : 40
Vendor ID: 054C
ID produit : 0268
Revision ID: 0100
Indice de MFG.String : 01
Indice de prod.String : 02
Numéro de série indice : 00
Numéro de la conf: 01
Descripteur de configuration :
Longueur totale : 0029
Num.INTF : 01
CONF.value : 01
CONF.String : 00
Attr.: 80
Max.PWR: FA
Descripteur de l’interface :
INTF.Number : 00
Alt.: 00
Points de terminaison : 02
INTF. Classe : 03
INTF. Sous-classe : 00
INTF. Protocole : 00
INTF.String : 00
Descripteur de l’inconnu :
Longueur : 09
Type : 21
Contenu : 110100012294000705
Descripteur de point de terminaison :
Adresse de point de terminaison : 02
Attr.: 03
Max.pkt taille : 0040
Intervalle d’interrogation : 01
Descripteur de point de terminaison :
Adresse de point de terminaison : 81
Attr.: 03
Max.pkt taille : 0040
Intervalle d’interrogation : 01
memoryMin() rapports 336
Nous devons maintenant obtenir la bibliothèque et le contrôleur synchronisés vers le haut. pour ce faire, nous utilisons le code suivant :
typedef struct {}
epAddr octet ; copie du descripteur de point de terminaison sans bit 7 si la valeur
octet Attr ; Type de point de terminaison de transfert.
unsigned int MaxPktSize ; Taille de paquet maximale.
octet intervalle ; Intervalle d’interrogation dans les cadres.
sndToggle octet ; dernière valeur de bascule, masque de bits pour bits bascule HCTL
rcvToggle octet ; dernière valeur de bascule, masque de bits pour bits bascule HCTL
} EP_RECORD ;
et aussi ceci :
device_descriptor = (USB_DEVICE_DESCRIPTOR *) & buf ;
Si ()
(device_descriptor -> idVendor! = PS3_VID) || (device_descriptor -> idProduct! = PS3_PID)) {
Serial.println (« périphérique USB non pris en charge ») ;
while(1) ; arrêter