Communication µC avec un AD 7715, fonctionne presque !
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Communication µC avec un AD 7715, fonctionne presque !



  1. #1
    invitef4c6670c

    Communication µC avec un AD 7715, fonctionne presque !


    ------

    Bonsoir,

    Voilà que j'ai passé mon Dimanche à essayer de communiquer avec mon AD 7715, sans succès ! Pourtant je touche au but puisque c'est juste un bug que je n'arrive pas à trouver.

    J'ai câblé le circuit comme sur cette page avec un oscillo externe 1MHz (vérifié).

    http://paulfjujo.free.fr/AD7715/AD7715_LCD_16F84.htm

    La doc technique : http://paulfjujo.free.fr/AD7715/docu/AD7715.pdf

    Ce que je fais dans mon programme :

    - D'abord j'envoie la valeur 0x10 pour initialiser le registre de comm. (gain = 1)
    - Ensuite j'envoie la valeur 0x40 dans le registre Setup (1Mhz, filtre 50Hz)

    Une fois ceci fait, je demande une lecture de la valeur analogique donc :

    - Je test DRDY et quand il est à 0, j'envoie la valeur 0x38
    - J'attends ensuite les données.

    Le bug :

    - Au début, durant les 5 premières secondes, je reçois bien des données qui correspondent à la valeur analogique d'entrée. Et au bout d'environ 5 à 10 secondes, les données passent à 0, plus rien ! Pourtant mon signal d'horloge (paquet de 8 fronts et le paquet de 16 fronts) est bien généré.

    J'ai lu et relu la doc, vérifié les timings, mais là je ne vois pas du tout où pourrait être le problème.

    Je fournis les chronos et le programme:

    Code:
    void ADC_Write(unsigned char inpData)   
    {   
        unsigned char i;   
       
        ADC_CS = 0;
        delay_us(5);
        for(i=1; i<=8; i++)   
            {   
            ADC_CLK = 0;
            delay_us(5);
            ADC_DI = (inpData & 0x80);   
            inpData = inpData << 1;
            ADC_CLK = 1;
            delay_us(5);
            }
        delay_us(5);             
    } 
    
    
    
    unsigned int ADC_ReadValue(void)   
    {   
    
        unsigned char i = 0;   
        unsigned int adc_data = 0;
               
        
        while (ADC_DRDY); 
        while (ADC_DRDY);
        ADC_Write(0x38);  
        
        ADC_CS=0;
        delay_us(5);
        for(i=1; i<=16; i++)   
        {   
            ADC_CLK = 0;
            delay_us(5);   
            ADC_CLK = 1;
            delay_us(5);   
            adc_data = adc_data | ADC_DO;   
            adc_data = adc_data << 1;   
        }
        delay_us(5);
        ADC_CS=1; 
         
        return adc_data;   
    }   
    
    
    void ADC_init(void)   
    {   
        ADC_RST=0;
        delay_ms(10);   
        ADC_CLK=1;
        delay_ms(10);   
        ADC_CS=1;
        delay_ms(10);              
        ADC_RST=1;
                    
        delay_ms(100);   
       
        ADC_Write( 0x10 ); 
        ADC_Write( 0x40 );  
    }
    Merci beaucoup de votre future aide et bonne soirée / journée !

    -----
    Images attachées Images attachées

  2. #2
    paulfjujo

    Re : Communication µC avec un AD 7715, fonctionne presque !

    bonjour,


    peux tu poster ton code en entier
    C18 ou mikroC ?
    nombre de sample par secondes ?
    delai entre lets mesures?
    type de pic ?
    freq horloge pic ?

    il est probable que ce soit un probleme de timming.
    mais pour s'en assurer il faut avoir une vue d'ensemble.
    Prevoir aussi de relancer l'auto-calibration toutes les x mesures.

  3. #3
    invite9e96eb3a

    Re : Communication µC avec un AD 7715, fonctionne presque !

    Bonjour, merci beaucoup de votre réponse !

    Alors le µC est un AVR ATmega8535, avec un quartz à 16MHz.
    Je suis au boulot, donc je posterais le code entier ce soir quand je rentre.

    D'arès ce que j'ai observé, DRDY passe à l'état haut toutes les 50ms durant un très court instant.

  4. #4
    jiherve

    Re : Communication µC avec un AD 7715, fonctionne presque !

    Bonsoir,
    comme tout çà c'est asynchrone c'est normal, tout glisse,le mieux serait d'exploiter le DRDY en interruption(rapide), il ne reste actif que 500µs il faut que le pooling soit au moins deux fois plus rapide(4Khz), est ce le cas ?.
    Comment est appelé la routine de lecture?
    If no data read has taken place between output updates, the DRDY line will return
    high for 500 ´ tCLKÊIN cycles prior to the next output update. While DRDY is high, a read operation
    should not be attempted or in progress to avoid reading from the data register as it is being updated.
    JR
    l'électronique c'est pas du vaudou!

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

    Re : Communication µC avec un AD 7715, fonctionne presque !

    Salut,

    Effectivement, c'est ce que je me disais... ca glisse ! Au début on est synchro, pis arrive un moment ou on est dans les choux.
    Tu veux dire que le mieux et que je rentre dans une routine d’interruption à chaque fois que DRDY passe à 0 ? Dans ce cas là, je fais un comptage, par exemple il faut 10 interruptions pour déclencher une lecture.
    Pourtant à l'oscillo, DRDY ressemble + au Peigne de Dirac ! Avec des pics positif... c'est ca que j'ai pas trop capté.
    Parce que d'après la doc, il reste à 1, et passe à 0 quand la donnée est prête. or chez moi, DRDY est toujours à 0, et toutes les 50ms il passe à 1 durant 500µs...

Discussions similaires

  1. [Blanc] Aspirateur Rowenta RS460 ne fonctionne (presque) plus
    Par invited24caf05 dans le forum Dépannage
    Réponses: 2
    Dernier message: 15/01/2012, 19h46
  2. Communication avec un serveur tcp/ip avec Matlab
    Par invite98cd00fc dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 03/11/2011, 12h31
  3. Que faire avec un bac+3, presque un+4
    Par invite85ff2207 dans le forum Orientation après le BAC
    Réponses: 3
    Dernier message: 15/07/2010, 22h11
  4. Communication avec ET: presque impossible
    Par inviteb956640e dans le forum Planètes et Exobiologie
    Réponses: 22
    Dernier message: 18/02/2009, 02h56
  5. Presque 20A en 5V avec un tout petit moteur
    Par invite5d1bc976 dans le forum Électronique
    Réponses: 6
    Dernier message: 29/07/2007, 17h41
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...