Usb sur pic32mx
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Usb sur pic32mx



  1. #1
    davidif

    Usb sur pic32mx


    ------

    Bonjour,

    Afin de me familiariser avec le PIC32MX795, j'ai pu faire le tour de ces fonctionnalités essentiel (interruption, timers, tempo, I/O analogique et digital, PWM ) il me reste encore pas mal de choses a voir et parmit celles-ci une m'interresse particulièrement pour transferrer mes données sur un pc en USB, auriez vous des conseils ou informations particulières pour m'orienter au mieux pour cette fonction qui me parait assez complexe à mon niveau, j'ai évidemment été voir chez microchip et ça me parait compliqué pour l'instant.

    Merci

    -----

  2. #2
    davidif

    Re : Usb sur pic32mx

    Bonjour,

    Afin d’atteindre mon objectif intermédiaire que je me suis fixé est d’échanger des données avec mon PC via l’USB, ça me parait le plus difficile mais c’est pour moi une étape importante.

    J’ai donc récupéré les routines de chez Microchip « PIC32_ESK_USB_Device_CDC_Basic _Demo » que j’ai intégré à mon programme et avec l’utilitaire « Dynamic CDC Demo.exe » je communique correctement les données, mais ça reste évidemment une routine de microchip que je peu adapter par la suite, d’où ma difficultés pour moi pour le moment car j’ai cru trop vite que c’était gagné a partir du moment ou la routine de microchip me permettait d’envoyer une chaine de caractère que je pouvais envoyé autre chose comme les données relatif aux PWM ou Entrées ANA par exemple.

    Ayant une faible notion du fonctionnement de l’USB, j’essai d’ acquérir quelques connaissances sur le net afin de mieux utiliser le programme de microchip mais pour l’instant j’ai encore quelques progrès a faire.

    Par exemple dans le prog de microchip, il y a cette fonction :

    void ProcessIO(void)
    {
    BYTE numBytesRead;

    //Blink the LEDs according to the USB device status
    BlinkUSBStatus();

    //
    // User Application USB tasks
    //

    // If suspended, do nothing.
    if((USBDeviceState < CONFIGURED_STATE)||(USBSuspend Control==1)) return;

    // If switch pressed, print a message
    if(msg_switch == 0)
    {
    if(stringPrinted == FALSE)
    {
    if(mUSBUSARTIsTxTrfReady())
    {
    putrsUSBUSART("$ANA[0]");
    stringPrinted = TRUE;
    }
    }
    }
    else
    {
    stringPrinted = FALSE;
    }

    // If character received, add 1 and echo it
    if(mUSBUSARTIsTxTrfReady())
    {
    numBytesRead = getsUSBUSART(USB_Out_Buffer,64 );
    if(numBytesRead != 0)
    {
    BYTE i;

    for(i=0;i<numBytesRead;i++)
    {
    switch(USB_Out_Buffer[i])
    {
    case 0x0A:

    case 0x0D:
    //USB_In_Buffer[i] = ANA[0];
    USB_In_Buffer[i] = USB_Out_Buffer[i];
    break;
    default:
    USB_In_Buffer[i] = USB_Out_Buffer[i] + 1;
    //USB_In_Buffer[i] = ANA[0];
    break;
    }

    }

    putUSBUSART(USB_In_Buffer,numB ytesRead);

    }
    }

    // Service the USB CDC driver
    CDCTxService();

    } // End ProcessIO

    Au début j’ai pensé bêtement qu’au lien de faire « putrsUSBUSART("chaine de caractère"); » on pouvais faire « putrsUSBUSART(ANA[0]); » j’envois la valeur d’une entrée analogique seulement, c’est inutile de dire que ça ne fonctionne pas, peut-être que cette fonction peut envoyer seulement des caractère ou string, ANA[0] est définit comme un char.

    Comment peut-on identifier chaque données pour les récupérer et les traiter sur le pc, par exemple j’ai beaucoup utilisé le CAN au boulot qui fonctionne comme avec un identifiant et des datas.


    Merci pour votre aide
    Dernière modification par davidif ; 27/10/2013 à 09h28.

  3. #3
    davidif

    Re : Usb sur pic32mx

    Par contre, mon code est indenté, mais elles ne sont pas prix en compte entre les balises ?!

    Code:
    void ProcessIO(void)
    {   
        BYTE numBytesRead;
    
        //Blink the LEDs according to the USB device status
        BlinkUSBStatus();
    
        //
        // User Application USB tasks
        //
    
        // If suspended, do nothing.
        if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) return;
    
        // If switch pressed, print a message
        if(msg_switch == 0)
        {
            if(stringPrinted == FALSE)
            {
                if(mUSBUSARTIsTxTrfReady())
                {
                    putrsUSBUSART("$ANA[0]");
                    stringPrinted = TRUE;
                }
            }
        }
        else
        {
            stringPrinted = FALSE;
        }
    
        // If character received, add 1 and echo it
        if(mUSBUSARTIsTxTrfReady())
        {
            numBytesRead = getsUSBUSART(USB_Out_Buffer,64);
            if(numBytesRead != 0)
            {
                BYTE i;
                
                for(i=0;i<numBytesRead;i++)
                {
                    switch(USB_Out_Buffer[i])
                    {
                        case 0x0A:
    						
                        case 0x0D:
                            //USB_In_Buffer[i] = ANA[0];
    						USB_In_Buffer[i] = USB_Out_Buffer[i];
                            break;
                        default:
                            USB_In_Buffer[i] = USB_Out_Buffer[i] + 1;
    						 //USB_In_Buffer[i] = ANA[0];
                            break;
                    }
        
                }
        
                putUSBUSART(USB_In_Buffer,numBytesRead);
    			
            }
        }
    
        // Service the USB CDC driver
        CDCTxService();
    
    } // End ProcessIO

  4. #4
    RISC

    Re : Usb sur pic32mx

    Salut,

    Si tu veux utiliser l'USB, je te recommande de partir des librairies car elles sont mises à jour régulièrement.
    Tu les télécharges ici : http://www.microchi.com/MLA . Après installation, dans le répertoire USB tu auras des dizaines de projets et chaque projet fonctionne sur 10 ou 20 configurations différentes (il faut bien sûr utiliser MPLAB X).
    Il existe plusieurs projets en classe CDC. Ton application doit se trouver dans ProcessIO(). Attention de ne JAMAIS bloquer la pile ! Elle doit être appelée au moins toutes les ms.

    a+

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

    Re : Usb sur pic32mx

    Merci RISC pour l'info que je vais aller voir, par contre tu me dis d'utiliser MPLAB X, c'est une obligation pour ce genre de projet ?

    je dis ça par ce que j'ai tenté de l'utiliser seulement il bug pas mal , c'est pour ça que je suis resté sur mplab 8, c'est à dire que les breakpoints par exemple sont pas pris en compte et son signalés cassé une fois le programme exécuté et quand je passe du mode débug au mode programme c'est tout un truc ! je suis le plus souvent obligé de fermé mplabX re-siwtch a nouveau et ré-ouvrir mplax enfin c'est le bordel...

    alors qu'avec mplab8, j'ai aucun problème de ce genre ?

  7. #6
    davidif

    Re : Usb sur pic32mx

    RISC tu me parle de la pile ? pourquoi que peut-il ce passer si on bloque la pile ? et comment l'appeler cette pile ? mes notions en termes d'USB sont très limité pour le moment.

  8. #7
    davidif

    Re : Usb sur pic32mx

    sur une fonction comme celle_ci

    void putUSBUSART(char *data, BYTE Length);

    on doit lui entrée une data de type char et sa longueur si je me trompe pas, que veut dire l'étoile ?

  9. #8
    RISC

    Re : Usb sur pic32mx

    Salut,

    Pour char *data, je te recommande de lire un livre de C ou un tutoriel sur les pointeurs....
    La pile USB fonctionne très bien mais je pense que tu t'attaques à quelquechose d'un peu compliqué pour l'instant si la notion de pointeur ne t'es pas encore familière. Pour la pile USB il faut lire la documentation sur les API qui se trouve ici :
    c:\microchip_solutions_v2013-06-15\Microchip\Help\MCHPFSUSB Library Help.chm

    a+

  10. #9
    davidif

    Re : Usb sur pic32mx

    Pour les pointeurs ça m'es effectivement revenu, on vient cibler un emplacement dans laquelle ce trouve une valeur que l'on veut utiliser.
    C'est donc ce que j'ai fait pour cette fonction, j'ai déclaré un pointeur de type char

    Char *val_ana;

    Puis

    Val_ana=&ANA[0];

    Et donc

    putUSBUSART(val_ana, 1) mais malheureusement je ne reçois pas de caractères compréhensible sur l'interface Pc, je ne sais pas si le problème vient de mon programme de pic ou de l'interface pc de mocrochip sous visual c++

    Nom : interface.jpg
Affichages : 55
Taille : 58,0 Ko

  11. #10
    davidif

    Re : Usb sur pic32mx

    Merci pour le fichier d'aide RISC, bon j'ai regardé ce fichier et commence à tâtonner un peu quelque fonctions qui je crois doit être fait pour envoyé des données sur le bus USB.

    Juste pour reprendre l'exemple et constater comment ça fonctionne:

    void ProcessIO1(void)
    {
    BYTE numBytesRead;

    if((USBDeviceState < CONFIGURED_STATE)||(USBSuspend Control==1)) return;

    // If switch pressed, print a message
    if(msg_switch == 0)
    {

    if(USBUSARTIsTxTrfReady())
    {
    char data[] = {0x00, 0x01, 0x02, 0x03, 0x04};
    putUSBUSART(data,5);
    }

    }

    CDCTxService();
    } // End ProcessIO
    rien ne se passe, par contre quand je change les données du tableau char data[] = {0x10, 0x02, 0x03, 0x04, 0x05};
    quelque chose passe mais rien de compréhensible

    Nom : interface.jpg
Affichages : 59
Taille : 86,5 Ko

    j'ai l'impression de voir circuler des données mais l'interface ne les interprète pas correctement le type ?

  12. #11
    davidif

    Re : Usb sur pic32mx

    En fait, j'ai compris ce qui ce passe, je reçois bien mes data mais elle s'affiche en ASCII

Discussions similaires

  1. Pic32mx mplab v8.92
    Par davidif dans le forum Électronique
    Réponses: 9
    Dernier message: 19/10/2013, 23h15
  2. Routine Interruption Pic32MX
    Par cedric300 dans le forum Électronique
    Réponses: 6
    Dernier message: 28/01/2013, 20h33
  3. RTCC Pic32Mx
    Par invite024026d4 dans le forum Électronique
    Réponses: 13
    Dernier message: 23/11/2012, 09h07
  4. Timer PIC32MX
    Par E_78 dans le forum Électronique
    Réponses: 3
    Dernier message: 26/07/2012, 08h38
  5. PWM Sur PIC32MX
    Par youril dans le forum Électronique
    Réponses: 2
    Dernier message: 23/09/2011, 22h25
Découvrez nos comparatifs produits sur l'informatique et les technologies.