[Programmation] Problème de détection USB PIC18F25K50 (CDC) : le status ne change pas une fois initialisé [Résolu]
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Problème de détection USB PIC18F25K50 (CDC) : le status ne change pas une fois initialisé [Résolu]



  1. #1
    ATdevice

    Exclamation Problème de détection USB PIC18F25K50 (CDC) : le status ne change pas une fois initialisé [Résolu]


    ------

    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?

    Code:
    // 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
       }
    }
    Merci

    PS : Désolé pour l'indentation pourrie, je ne sais toujours pas comment on ajoute des tabulations dans la section code...

    -----

  2. #2
    ATdevice

    Re : Problème de détection USB PIC18F25K50 (CDC) : le status ne change pas une fois initialisé

    Bon je crois que j'ai trouvé, il y a une state machine "USER_USB_CALLBACK_EVENT_HANDL ER" dans le fichier "usb_device_events.c". J'ai ajouté USBDeviceDetach(); dans le cas "EVENT_SUSPEND" et ça a l'air de fonctionner

Discussions similaires

  1. [Programmation] problème erreur arduino " exit status 1 expected '}' before 'else' "
    Par invitea98ab839 dans le forum Électronique
    Réponses: 18
    Dernier message: 06/04/2020, 16h54
  2. PC toujours lent après avoir changé 3 fois le systeme
    Par invite5fc33410 dans le forum Matériel - Hardware
    Réponses: 9
    Dernier message: 20/04/2015, 18h07
  3. [Blanc] LV Indesit condo changé, pas de cyclage[résolu]
    Par invite63480633 dans le forum Dépannage
    Réponses: 17
    Dernier message: 28/04/2014, 18h03
  4. [Thermique] Un fois de plus, un problème ECS sur Thémis 23 [résolu]
    Par aksanti dans le forum Dépannage
    Réponses: 12
    Dernier message: 16/09/2012, 16h02
  5. datavision dg-24128-01 probleme de lecture du status...
    Par invite3b6bd018 dans le forum Électronique
    Réponses: 1
    Dernier message: 17/01/2007, 14h10
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...