Protocole USB avec PIC 18F
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Protocole USB avec PIC 18F



  1. #1
    invite4671370c

    Protocole USB avec PIC 18F


    ------

    Salut tous le monde,

    Alors voila comme le titre l'indique je cherche a créer une liaison entre un PC et une carte a base de PIC 18F2450. Je poste pas sans m'être renseigné avant, j'ai lu pas mal de tuto sur le protocole USB, des exemples de chez Microchip, des codes sources, des fichiers .INF, mais sérieux j'ai RIEN compris! (J'ai compri les bases, choix de la vitesse par pull-up, PID/VID etc.)
    J'ai aussi télécharge le firmware 2.2 de Microchip, j'ai essayé le USB stack configuration tool, il me crée les 2 fichiers, mais j'ai l'impression que il me manque encore 1500 lignes de code...
    Ensuite je suis obligé de créer un driver pour PC? Comment dois-je gérer l'énumération, je veux dire sous quelle forme le PC envoi l'adresse au périphérique? Sans parler des paquets à envoyer par ex. quelle valeur dois je mettre dans les 8 bit de synchronisation? Ou dans le SOF? Ou encore les descripteurs, ou le contrôle de redondance cyclique?

    Bref, vous voyez le niveau. A la limite je pourrai même prendre un code source tout fait, le modifier un peu puis l'utiliser, mais c'est vraiment pas mon but.

    Je voudrais que mon application reste basique (Envoi au PIC/réception sur PC). Alors voila je sais que j'ai pas de question vraiment précise mais j'aimerais un conseil des pros comment je peux faire mon soft. (Je programme sous C18)

    -----

  2. #2
    invitee0bbe70d

    Re : Protocole USB avec PIC 18F

    Salut,

    L'outil de configuration de la stack 2.2 permet d'intégrer une application dans la stack USB. C'est peut être pas la façon la plus simple de démarrer avec l'USB si c'est ton premier projet.

    Dans le framework 2.2, il existe plusieurs projets tous faits que je te conseille d'utiliser avec différents types de classes.

    Dans ton cas, je te conseille l'émulation série <--> USB utilisant la classe CDC.
    Coté PC tu pourras donc récupérer les données sur la liaison série comme si ton PC était connecté à un port COM (il sera virtuel).
    L'avantage d'utiliser une classe USB est que tu n'auras PAS à développer de driver

    Tu as donc un prototype avec un PIC18F2450. Quel outil de programmation utilises-tu (ICD2?, clone, Pickit2,...) ?
    Quelles sont tes compétences coté PC ? Dans quel langage vas-tu programmer ?

    Si tu as installé le framework 2.2 sur ton PC, tu trouveras le projet d'émulation série ici : c:\Microchip Solutions\USB Device - CDC - Serial Emulator\

    Tu pourras trouver ici des exemples d'appli USB coté PIC et PC utilisant une ancienne version de la stack :
    http://www.codes-sources.com/recherc...USB+PIC18F2550

    bon courage

  3. #3
    invite89303051

    Re : Protocole USB avec PIC 18F

    Bonjour,

    J'ai également essayé de comprendre l'USB avec les exemples de Microchip. Ils sont simple et facilement adaptable. Je suis ensuite parti sur du code perso qui n'a pas fonctionné, je recevais n'importe quoi dans les buffers de lecture du port USB. Après quelques recherche, j'avais oublié de déclarer ce qu'il fallait dans le fichier .lkr (SECTION NAME=USB_VARS RAM=usb4)
    La prochaine fois, je lis la doc.
    Si tu as besoin d'un coup de main, n'hésites pas.

    Cordialement

  4. #4
    invite4671370c

    Re : Protocole USB avec PIC 18F

    Wow, ça rigole plus Microchip qui me répond en personne!

    Citation Envoyé par microchip Voir le message
    Dans ton cas, je te conseille l'émulation série <--> USB utilisant la classe CDC.
    Coté PC tu pourras donc récupérer les données sur la liaison série comme si ton PC était connecté à un port COM (il sera virtuel).
    L'avantage d'utiliser une classe USB est que tu n'auras PAS à développer de driver
    Ça c'est pas con, mais cette méthode est conçue uniquement pour débuter non? Bref n'allons pas plus vite que la musique, ça me satisfait tout a fait pour le moment.
    Donc, j'ai lu le tuto de Microchip sur le CDC, et d'après ce que j'ai compris j'adapte le main.c a mon PIC, j'ajoute un autre fichier .c ou je met mes fonction, mon code, mes gestion I/O etc... Ensuite je branche le tout sur le PC (Le mien n'a pas de port série, ça marche même sans?), j'indique ou est mon fichier .inf et enfin je peux communiquer avec mon PIC via HyperTerminal.
    Et la j'ai encore un tas de question, dans les exemples de Microchip ils parlent du code pour demoboard toujours de chez Microchip, un PIC sur un breadboard fera l'affaire?
    Ce que j'envoi avec HyperTerminal sur le PIC se retrouve dans une variable particulière? Ce que je rentre avec HyperTerminal c'est uniquement le paquet data? Et pour la connexion de D+ D- sur le PIC, c'est toujours D+ D- ou dans ce cas j'utilise RX TX? J'ai toujours besoin d'une pull-up de choix de vitesse?

    Bref, j'essaye un peu de me démerder, j'essayais cette méthode, mais a mon avis je posterais encore pas mal. Déjà merci pour les réponses.

    (Pour programmer les PIC j'utilise PICKit2, y a que ça de vrai, pour la programmation au niveau du PC je pense au C ou a la limite C++ (J'ai un niveau acceptable en C mais ne m'en parlez pas de la POO!))

  5. A voir en vidéo sur Futura
  6. #5
    invite13ed46c1

    Re : Protocole USB avec PIC 18F

    je passe par la aussi , et je debute j'ai reussi a mettre en place le usb-serie avec l'exemple de microchip , meme si j'ai trouver tres barbare tout les fichier a mettre en plus ... et en plus pour ajouter le bootloader au meme temps que le cdc encore plus de code a modifier ...
    sinon actuelement je teste ccs c ça marche pas trop mal l'exemple pour le bootloader marche et le cdc aussi et au meme temps
    et tout cela avec deux include a ajouter sur mon fichier rien de plus

    sinon dommnage qu'il y a pas de compilateur open source pour pic parce que ccs est pas donner

    sinon j'ai trouver beacoup d'avantage avec ce cdc simpre et sur le usb que demander de plus

    @+

  7. #6
    invite4671370c

    Re : Protocole USB avec PIC 18F

    Citation Envoyé par taz6cle Voir le message
    et en plus pour ajouter le bootloader au meme temps que le cdc encore plus de code a modifier ...
    Attends, mais je suis commeme pas obligé d'utiliser le bootloader?

  8. #7
    invitee0bbe70d

    Re : Protocole USB avec PIC 18F

    Bonjour,

    Citation Envoyé par taz6cle Voir le message
    et en plus pour ajouter le bootloader au meme temps que le cdc encore plus de code a modifier ...
    ??? rien à modifier...j'utilise la carte PICDEM FS-USB avec les exemples fournis et le bootloader CUSTOM class son application PDFSUSB.EXE. Il suffit de compiler le projet CDC avec le fichier linker adapté et on peut bootloader le projet CDC sans modifications. Il faut uniquement modifier le code pour ajouter sa propre application. A moins que tes modifs viennent du fait que tu utilises CCS au lieu du C18.

    sinon dommage qu'il y a pas de compilateur open source pour pic parce que ccs est pas donner
    Le compilateur C18 version student est gratuit et illimité en code / temps ( http://www.microchip.com/C18 ). Pourquoi utilises le compilateur CCS ???
    La pile de protocole USB est écrite à l'origine pour les PIC18 (même si elle fonctionne sur d'autres compilateurs).

  9. #8
    invitee0bbe70d

    Re : Protocole USB avec PIC 18F

    Bonsoir,

    Citation Envoyé par VIIV Voir le message
    Donc, j'ai lu le tuto de Microchip sur le CDC, et d'après ce que j'ai compris j'adapte le main.c a mon PIC, j'ajoute un autre fichier .c ou je met mes fonction, mon code, mes gestion I/O etc... Ensuite je branche le tout sur le PC (Le mien n'a pas de port série, ça marche même sans?), j'indique ou est mon fichier .inf et enfin je peux communiquer avec mon PIC via HyperTerminal.
    Et la j'ai encore un tas de question, dans les exemples de Microchip ils parlent du code pour demoboard toujours de chez Microchip, un PIC sur un breadboard fera l'affaire?
    Ce que j'envoi avec HyperTerminal sur le PIC se retrouve dans une variable particulière? Ce que je rentre avec HyperTerminal c'est uniquement le paquet data? Et pour la connexion de D+ D- sur le PIC, c'est toujours D+ D- ou dans ce cas j'utilise RX TX? J'ai toujours besoin d'une pull-up de choix de vitesse?

    Bref, j'essaye un peu de me démerder, j'essayais cette méthode, mais a mon avis je posterais encore pas mal. Déjà merci pour les réponses.
    Les choses ne sont pas si compliquées...
    L'émulation série <--> USB signifie simplement que tes applications PC communiquent avec un port série virtuel qui en fait est un port USB.
    Coté PIC, rien a changer au niveau hard, simplement tu récupères au travers de l'USB les octets envoyés par Hyperterminal ou autre...

    Lis les fonctions de la stack USB avec la classe CDC. Il existe différentes fonctions UARTUSB. Il suffit de tester un sémaphore (cdc_trf_state) avant d'appeler les API

    Voici différentes API utilisées dans le projet CDC :
    ============================== ==============
    void putrsUSBUSART(const rom char *data);
    void putsUSBUSART(char *data);
    void mUSBUSARTTxRom(rom byte *pData, byte len);
    void mUSBUSARTTxRam(byte *pData, byte len);
    byte getsUSBUSART(char *buffer, byte len);
    byte mCDCGetRxLength(void);
    ============================== ==============
    cdc_trf_state :
    CDC_TX_READY
    ou CDC_TX_BUSY
    ou CDC_TX_BUSY_ZLP
    ou CDC_TX_COMPLETING

    Lors de l'appel d'une API qui envoies des données vers le PC, il faut vérifier si : cdc_trf_state == CDC_TX_READY
    ou utiliser la macro
    BOOL mUSBUSARTIsTxTrfReady(void); (retourne ‘1’ si l'état est CDC_TX_READY )


    Concernant ton prototype, si tu veux minimiser les changements logiciels vis à vis de la carte PICDEM FS-USB, il te suffit de regarder le schéma de cette carte et te concevoir la tienne en t'en inspirant : schéma de la carte PICDEM FS-USB dans ce manuel

Discussions similaires

  1. interruption I2C pic 18F
    Par inviteec13c33a dans le forum Électronique
    Réponses: 11
    Dernier message: 05/04/2012, 15h46
  2. pic 18F et L298
    Par invite35c29b80 dans le forum Électronique
    Réponses: 5
    Dernier message: 23/03/2009, 09h11
  3. comment passer des pic 16F au pic 18F ?
    Par invitee5da1686 dans le forum Électronique
    Réponses: 5
    Dernier message: 13/08/2008, 23h04
  4. Schema de developpement USB basé autour du 18F#550
    Par schneiderj dans le forum Électronique
    Réponses: 3
    Dernier message: 01/05/2008, 23h03
  5. programmation du pic 18F dans MPLAB
    Par invite10722f67 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/10/2006, 16h10
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...