Bonjour,
Pour un projet j'utilise les fonctions USB CDC de Microchip pour PIC18F25K50 (Générées avec Code Configurator pour XC8).
Mon système a une alimentation dédiée (il peut être utilisé ou non en USB pour la configuration). Le problème est que je ne peux pas utiliser une I/O pour détecter la présence de VBUS car j'utilise TOUTES les I/O du MCU pour d'autres fonctions.
Le programme suivant me permet de vérifier le status de l'USB, enfin en théorie...
1) Si j'allume le système sans câble USB, la LED rouge est allumée, OK.
2) Si je branche le câble USB, la LED passe au vert, OK.
3) Maintenant si je débranche le câble, la LED verte reste allumée. Dans "ma logique" la LED devrait repasser au rouge, mais ce n'est pas le cas (j'ai pas étudié en détail l'USB, trop de fichiers générés c'est un peu le cirque). Une idée de comment faire SANS détection du VBUS? Dans la plupart des exemples que j'ai pu trouver ils utilisent le système alimenté en USB donc ils ne sont jamais confronté au cas où on débranche l'USB, puisque ça éteint le système... Un indice?
MerciCode:// Includes #include "usb_device.h" #include "usb_device_cdc.h" // Defines #define LED_RED_TRIS TRISA0 #define LED_RED LATA0 #define LED_GREEN_TRIS TRISA1 #define LED_GREEN LATA1 // LED init LED_RED_TRIS=0; // Outptut LED_GREEN_TRIS=0; // Outptut LED_RED=1; // LED Red OFF LED_GREEN=1; // LED Green OFF // USB init USBDeviceInit(); // USB attach USBDeviceAttach(); // Main loop while(1) { if(USBGetDeviceState() == CONFIGURED_STATE) { LED_RED=1; // LED Red OFF LED_GREEN=0; // LED Green ON } else { LED_RED=0; // LED Red ON LED_GREEN=1; // LED Green OFF } }
PS : Désolé pour l'indentation pourrie, je ne sais toujours pas comment on ajoute des tabulations dans la section code...
-----