Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Configuration des entrées analogiques
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#11 Message par satinas » jeu. 28 déc. 2017 07:57 lien vers la Data-Sheet : Cliquez ici

Salut Jérémy,
Pourquoi sélectionner le canal de mesure après la fin de conversion, c'est un peu tard :)
La première conversion se fait donc sur le canal par défaut.
Bonne journée

Configuration des entrées analogiques
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#12 Message par Jérémy » jeu. 28 déc. 2017 08:10 lien vers la Data-Sheet : Cliquez ici

Bonjour satinas,

Je suis justement en train de rechercher sur la DS le temps de pause qu'il faut pour changer de channel? c'est marrant comme les esprits se rencontrent !

Il me semble avoir lu, que le changement de channel demande une stabilisation ( donc du temps) car il passe d'abord par Vss et ensuite il met le nouveau channel à étudier. j'ai donc mis une mini tempo de 5ms .

satinas a écrit :Source du message Pourquoi sélectionner le canal de mesure après la fin de conversion, c'est un peu tard :)

En fait le changement de channel juste après une conversion est pour la suivante ( une préparation en quelque sorte). pour gagner du temps dans la pause. car comme le traitement UART prend du temps, cela en laisse pour changer le channel et donc diminuer la pause, enfin c'est ce que je me dis ! peut être à tort ? Un avis ?

Je vais avoir 4 lectures analogiques a faire ( mes joystick) avant de les envoyer par voie radio. Il seront prioritaires car déterminerons le pilotage du robot.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Configuration des entrées analogiques
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#13 Message par satinas » jeu. 28 déc. 2017 08:28 lien vers la Data-Sheet : Cliquez ici

La sélection du canal c'est juste une écriture de registre. Lorsqu'on passe le flag ADGO à 1, il lance d'abord l'échantillonnage, puis la conversion. Un exemple est fourni dans la datasheet.

Code : Tout sélectionner

/* This code block configures the ADC for polling, VDD and VSS references, ADCRC oscillator and AN0 input.
Conversion start & polling for completion are included. */
    void main() {
        //System Initialize
        initializeSystem();
        //Setup ADC
        ADCON0bits.FM = 1;      //right justify
        ADCON0bits.CS = 1;      //FRC Clock
        ADPCH = 0x00;           //RA0 is Analog channel
        TRISAbits.TRISA0 = 1;   //Set RA0 to input
        ANSELAbits.ANSELA0 = 1; //Set RA0 to analog
        ADCON0bits.ON = 1;      //Turn ADC On
    while (1) {
        ADCON0bits.GO = 1;     //Start conversion
        while (ADCON0bits.GO); //Wait for conversion done
        resultHigh = ADRESH;   //Read result
        resultLow = ADRESL;    //Read result
    }
 }


Si cela n'a pas changé, on règle l'horloge ADC et la durée d'échantillonnage dans les registres de configuration de l'ADC.

PS: Il semble que ça a changé, tu as raison, l'échantillonnage n'est plus piloté par le processeur, il faut le faire soi-même avec une tempo. le flasg ADGO lance la conversion directement.
Modifié en dernier par satinas le jeu. 28 déc. 2017 08:44, modifié 1 fois.

Configuration des entrées analogiques
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#14 Message par Jérémy » jeu. 28 déc. 2017 08:42 lien vers la Data-Sheet : Cliquez ici

Tu as raison satinas, mais je ne suis jamais allé aussi loin dans la configuration d'un ADC .

Sans titre.jpg


J'ai repris l'exemple de la DS et je l'ai adapté à mon besoin. J'avoue que la notion de Tda et de l'horloge sont flou pour moi.
J'ai essayé de ne pas utiliser le "FRC clock" en réglant un Fosc/n . Ca fonctionnais aussi sauf à Fosc/2. surement que ca allait trop vite et qu'il n’avait pas le temps de faire la mesure. en modifiant les valeurs de Fosc de Fosc/2 ) Fosc/128 on peut remarqué des différences de valeur de lecture. ca ne se joue pas a grand chose.

Je cherche à être un précis, mais surtout fiable . que me conseillerais tu ? il me semble avoir lu double sample ? est ce que le PIC peut faire deux mesures et faire une moyenne ? car cela pourrait m’intéresser pour bien lisser mes valeurs ! Peut être qu'il me faudrait un filtre en hard ou soft ?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Configuration des entrées analogiques
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#15 Message par satinas » jeu. 28 déc. 2017 09:23 lien vers la Data-Sheet : Cliquez ici

L'horloge de l'ADC est soit FRC (600kHz) soit FOSC/n. Cela donne un Tad de 2us si FRC, et si on utilise FOSC, il faut aussi un Tad de 2us environ (entre 1us et 9us d'après les electrical specifications). La conversion dure 12 Tad.
Pour l'échantillonnage, durée typique 2us, il est manuel par défaut, car ADPRE et ADACQ sont à 0, ADGO lance la conversion directement.
Si l'on met dans ADPRE et ADACQ des valeurs en unité Tad, ADGO lance d'abord l'échantillonnage puis la conversion.
Utilise le de façon basique ou en double conversion, faut y aller doucement ...
Ca s'arrange pas ces pics, vive le 12F508 !

Configuration des entrées analogiques
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#16 Message par Jérémy » jeu. 28 déc. 2017 09:32 lien vers la Data-Sheet : Cliquez ici

Merci pour ces explications , un peu plus claires . Quest ce qu'un Tad ? un temps de lecture sur la broche ?
La double conversion est comme son nom l'indique ? c'est à dire deux conversions à la suite et il renvoie la moyenne des deux ?

PS: j'ai essayé d’intégrer mon programme Test qui fonctionne parfaitement dans mon programme principale et BIMMM ca fonctionne pas . Par élimination succéssive je suis certain que c'est la ligne UART2_init(); qui me fait planter mon chimlblick .... see you in other post !

J'en peux plus de ce PIC
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Configuration des entrées analogiques
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#17 Message par satinas » jeu. 28 déc. 2017 09:39 lien vers la Data-Sheet : Cliquez ici

La lettre T désigne la période d'un signal. Un signal de fréquence F = 1 MHz, a une période T = 1/F, donc 1us.
L'ADC a sa propre horloge Fad (dérivée de FRC ou FOSC) et sa période Tad = 1/Fad
La double conversion retourne 2 valeurs, j'ai pas tout lu en détail.


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 43 invités