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 ---
- 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 ---
Modérateur : Jérémy
Configuration des entrées analogiques
Configuration des entrées analogiques
-
Jérémy
Administrateur du site- Messages : 2723
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
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 .
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.
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.
Configuration des entrées analogiques
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.
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.
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- Messages : 2723
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Tu as raison satinas, mais je ne suis jamais allé aussi loin dans la configuration d'un ADC .
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 ?
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.
Configuration des entrées analogiques
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 !
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- Messages : 2723
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
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
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
Configuration des entrées analogiques
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 84 invités