aide ADC Dspic33f
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

aide ADC Dspic33f



  1. #1
    afayee

    aide ADC Dspic33f


    ------

    bonjour à tous,

    je travaille avec un microcontroleur Dspic33f256jp710a. j'ai un ADCque j'ai configuré pour quatre channels. chaque channel doit récupérer une tension. je voulais savoir comment faire pour récupérer la valeur de l'ADC pour les 4 channels. J'ai essayé ADC1BUF0 mais il me donne toujour la même valeur pour tous channels. et lorsque j'utilise ADC1BUF1, ADC1BUF2, ADC1BUF3 il y a des erreurs sur mon programme car ces valeurs n'existe dans le µc. j'ai regardé les exemples de Microchip mais j'ai rien vu.
    Merci de votre aide

    voici mon programme
    Code:
    void init_ADC1(void)
    {
     AD1PCFGH= 0xFFFF;
     AD1PCFGL= 0xFF78;                  // AN0-AN1-AN2-AN7 en entrée analogique
    
     AD1CON1bits.ADON=1;  // ADC module is operating
     AD1CON1bits.ADSIDL=0;
     AD1CON1bits.ADDMABM=0;
     AD1CON1bits.AD12B=0;     //10-bit, 4-channel ADC operation
     AD1CON1bits.FORM=0;      // Integer
     AD1CON1bits.SSRC=2;      // Timer3 for ADC1, Timer5 for ADC2
     AD1CON1bits.SIMSAM=0;    // Samples multiple channels individually in sequence
     AD1CON1bits.ASAM=1;      // Sampling begins immediately after last conversion
     AD1CON1bits.SAMP=0;
     AD1CON1bits.DONE=0;    // ADC conversion cycle is completed
    
    
     AD1CON2=0x020C;     // VREF+=AVDD et VREF-=AVSS
                         // CHPS<1:0>=10 : conversion de CH0, CH1, CH2 et CH3
                         // SMPI<3:0>=3 : interruption après l'échantillonnage et les
                         //               4 conversions de CH0, CH1, CH2 et CH3
                         // Buffer 16 bits
    
    
     AD1CON3=0x001F;    // SAMC<4:0>=0 : sans effet
                        // ADRC=0 -> Horloge système
                        // ADCS<7:0>=1 -> ADC conversion Clock: Tad=2*Tcy soit 50nS
                        // ADC conversion Time for 10-bit Tconv = 12*TAD = 12*50= 600ns
    
     AD1CHS123=0x0000;  // Entrée - de CH1, CH2, CH3 = VREF-
                        // Entrée + de CH1 = AN0
                        //             CH2 = AN1
                        //             CH3 = AN2
    
     AD1CHS0=0x0007;    // entrée - de CH0 = VREF-
                        // entrée + de CH0 = AN7
    
    // AD1CSSH=0xFFFF;
     AD1CSSL = 0x0087;      // AN0-AN1-AN2-AN7
    
     IFS0bits.AD1IF=0;  // Clear ISR flag
     IEC0bits.AD1IE=1;  // Enable interrupts
     IPC3bits.AD1IP=7;  // priority interrupt
     AD1CON1bits.ADON=1;// Turn ADC ON
    
    }
    Code:
    /*void __attribute__((__interrupt__,__auto_psv__)) _ADC1Interrupt(void)
        {
    
       ADC1_value[0]= ADC1BUF0;         //Copy value from ADC buffer
       ADC1_value[1]= ADC1BUF0;
       ADC1_value[2]= ADC1BUF0;
    
    
        tension_a= ((ADC1_value[0])*Gain);
        tension_b= ((ADC1_value[1])*Gain);
        tension_c= ((ADC1_value[2])*Gain);
        
          }
    
        flag_ADC1 = 1 ;
        _LATA7=~_LATA7;
        _AD1IF = 0;
        AD1CON1 = 0x0044;                      // Must cancel current sampling
        AD1CON1 = 0x8044;                    // Re-set ADC configuration for triggered sampling
    
        }*/

    -----

  2. #2
    afayee

    Re : aide ADC Dspic33f

    excusez moi c'est un Dspic33FJ256GP710A

  3. #3
    afayee

    Re : aide ADC Dspic33f

    quelqu'un pour m'aider

  4. #4
    spown

    Re : aide ADC Dspic33f

    Bonjour/bonsoir est bienvenue sur FUTURA,

    Jeter un bout de code plein de registre sans rien spécifier comme résultat, compilateur, IDE ni schéma, il faut pas attendre de réponse.

    Bon, est ce que tu as réussi à configurer une seule entrée ?
    Qu'est ce que tu lis sur ADC1BUF0 ? c'est quoi déjà ce que tu veux lire ? schéma ?!

    Pour t'aider un peu, l'interruption n'a pas de place pour ton cas. Tu démarres l'ADC, le balayage sera fait automatiquement sur les pins désirer, ainsi la lecture via le registre rempli ( ADC1BUF0 ).

    AD1CHS0 c'est pour échantillonnage sur une pin.

    Il faut un scan sur les 4 pins via 'channel scan', et à chaque fin de cycle de conversion remplir une case d'un tableau. À la fin tu auras tes 4 valeurs enregistrées. Sinon, passer par DMA ( ce que je te conseilles pas pour le moment )

    Et finalement ça existe pas de ADC1BUF1, ADC1BUF2, ADC1BUF3 dans ton pic . Prend le temps à lire le datatsheet .

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

    Re : aide ADC Dspic33f

    Bonjour,

    j'utilise MPLAB XIDE avec le compilateur C16. j'ai configuré 4 entrée. je dois lire la tension de trois phases après je vais comparer chaque tension à une tension seuil définie. je veux lire la valeur stockée dans l'ADC après faire la conversion en valeur décimale pour pouvoir faire la comparaison. mon ADC est sur 10 bit et je veux utiliser les channels

    je penser récuprer les valeurs des tension fournie par l'ADC à chaque interruption et faire la comparaison. je dois couper l'alimentation une fois que la tension d'une phase a atteint le seuil défini.

    Puisque ADC1BUF0 permet de lire la valeur de l'ADC alors moi j'ai besoin de trois valeur je voulais savoir faire correspondre chaque valeur de ma tension à ADC1BUF0

Discussions similaires

  1. ADC dspic33f
    Par afayee dans le forum Électronique
    Réponses: 7
    Dernier message: 05/06/2015, 16h48
  2. PWM dspic33f
    Par marc64ab dans le forum Électronique
    Réponses: 9
    Dernier message: 07/05/2015, 14h07
  3. Programmation Dspic33f
    Par didou1982 dans le forum Électronique
    Réponses: 4
    Dernier message: 08/02/2011, 17h44
  4. Pic 24f ou DsPic33f ?
    Par invite624dc4b7 dans le forum Électronique
    Réponses: 15
    Dernier message: 13/01/2011, 16h10
  5. dsPic33F et bus CAN
    Par invitebd0c1fdf dans le forum Électronique
    Réponses: 1
    Dernier message: 11/06/2010, 00h58
Découvrez nos comparatifs produits sur l'informatique et les technologies.