Je travaille sur un projet V-USB qui apparaît comme un clavier utilisant un ATmega328p. La partie USB fonctionne très bien (ce n'est pas mon premier projet V-USB), mais après avoir démarré la pile V-USB avec usbInit()
, tous les appels à la bibliothèque de cartes SD échouent. Si j'appelle les mêmes fonctions auparavant usbInit()
, tout fonctionne parfaitement.
J'utilise un clone Arduino appelé Diavolino, mais sans le cadre Arduino / câblage. J'ai l'USB connecté aux E / S numériques 2 et 3 et la carte SD à 10-13 (lignes SPI intégrées).
J'ai regardé par la bibliothèque de carte SD et n'a trouvé aucun signe de l'aide d'alarmes ou d' autres registres que SPxx
. J'aurais aussi grep
pensé au code V-USB, mais il ne touche même pas les SPxx
registres.
Le premier signe du problème était lorsque l'appareil s'est déconnecté alors qu'il était censé accéder à la carte SD. Ensuite, j'ai mis usbPoll()
et wdt_reset()
appelé dans toutes les boucles de gestion de la carte SD, et j'ai constaté qu'en cas d'écriture, la carte attend indéfiniment l'accusé de réception de la carte après avoir envoyé les deux derniers octets (CRC-16).
La bibliothèque de cartes SD que j'utilise est sd_raw
de Roland Riegel.