Convertisseur Analogique Numerique (ADC) en C - Mcu/Cpu (hardware et périphériques) > 8 bits - Articles et téléchargements
Convertisseur Analogique Numerique (ADC) en C - Mcu/Cpu (hardware et périphériques) > 8 bits - Articles et téléchargements
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
proposer
 
   
             
 
Catégories
 
   
             
 
Recherche
 
   
 
Articles-et-telechargements > Mcu/Cpu (hardware et périphériques) > 8 bits > Convertisseur Analogique Numerique (ADC) en C

Convertisseur Analogique Numerique (ADC) en C

Publié par david le 10/09/2006 (5760 lectures)
Un article sur l'ADC existe deja ici http://www.68hc08.net/modules/publisher/item.php?itemid=76
Je ne vais donc pas le re-expliquer mais donner la version du code en C

Je rappelle pour info que l'ADC fonctionne en mode autonome, c'est a dire que le processeur peut faire autre chose pendant qu'il en determine la valeur. La fréquence de l'ADC doit etre autour des 1Mhz.
A noter aussi que la valeur Vrefh, si elle n'est pas reliée à VDD en interne, doit avoir une valeur minimale de 1.5V sur les modeles HC908 5V, et quasiment 3V pour les 9S08/9S12 3.3V.

Important: Il faut définir une broche à mesurer, on peut effectuer qu'une seule mesure en même temps, le résultat se trouve dans le registre ADR. A vous de créer un programme specifique si vous souhaitez analyser plusieurs broches en même temps.
On a aussi la possibilité de travailler en interruption AIEN ou de connaitre la fin de la conversion COCO.


Voici un exemple en C pour l'initialisation de l'ADC (pour un AB32):
ADCLK_ADIV=2; // predivision de CAN par 3
ADCLK_ADICLK=0; // vitesse de bus en aquisition
ADSCR_ADCH=0; // mesure de PTB0
ADSCR_AIEN=0; // pas d'interruption
ADSCR_ADCO=1; // lecture continu

La lecture de votre resultat:
unsigned char VALEUR_ANALOGIQUE;
VALEUR_ANALOGIQUE=ADR;

Si on souhaite attendre la fin de la conversion le code sera:
unsigned char VALEUR_ANALOGIQUE;
if (ADSCR_COCO==1)
 {  
   VALEUR_ANALOGIQUE=ADR;
 }

ou encore
unsigned char VALEUR_ANALOGIQUE;
do
 {  
   // mettre votre code à executer en attendant la fin de la conversion
 } while (ADRSCR_COCO==0)
   VALEUR_ANALOGIQUE=ADR;


Pour travailler en interruption, n'oubliez pas de mettre le lien dans le fichier PRN qui reprend tout les vecteurs d'interruptions. Sachez aussi que l'ADC est le moins prioritaire dans les vecteurs d'interruptions, donc à gerer si vous utilisez plusieurs interruptions en même temps

Article précédent Article suivant
Article précédent Routine Timer et Tempo en C Utilisation de la sortie PWM Article suivant
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Auteur Commentaire en débat
Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Convertisseur Analogique Numerique (ADC) en C - Mcu/Cpu (hardware et périphériques) > 8 bits - Articles et téléchargements