Une conversion s'effectue en cinquante cycles machines ou 50 microsecondes pour une fréquence fosc de 12 MHz. Le convertisseur utilise la technique d'approximation successive et donne un résultat dont la résolution est de 10 bits.
Aspect matériel
La figure 4.11 présente l'organisation de l'ensemble de conversion. Un multiplexeur gère les 8 entrées analogiques. Une de ces entrées est mise en relation avec le CAN si son code de canal est programmé dans les trois bits de poids faible du registre ADCON (AADRO, AADR1, et AADR2). La conversion peut être lancée soit par programme, soit par détection d'un front montant sur la broche STADC. Ce choix doit être défini par le programmeur en modifiant l'état du bit ADEX du registre ADCON. Lorsque la conversion est lancée par signal extérieur, la transition "0 vers 1" est détectée en fin du cycle machine en cours et la conversion commence sur le cycle suivant. Pour une conversion lancée par mise à 1 du bit ADCS (bit 3 de ADCON) la conversion débute avec l'exécution de l'instruction qui suit cette écriture dans le registre ADCON.
On notera que le bit ADCS sert aussi comme indicateur de fin de conversion (voir détails dans tableau 4.12).
La fin d'une conversion est signalée par le positionnement de l'indicateur ADCI. Cet indicateur peut déclencher une interruption si la source constituée par le CAN est autorisée.
L'indicateur ADCI doit être remis impérativement à 0 par le programmeur car la conjugaison ADCI=1 et ADSC=O (fin d'une conversion) empêche tout lancement de nouvelle conversion.
Figure 4.11 : Schéma fonctionnel de l'ensemble de conversion
Registres à fonctions spéciales
Les registres à fonction spéciale dédiés au CAN sont au nombre de deux. Le registre ADCH, accessible seulement en adressage direct, sert à recueillir les huit bits de poids fort du résultat de la conversion. Les deux bits de poids faible, qui peuvent être ignorés si l'application le tolère, sont placés dans le deuxième registre à fonction spéciale ADCON. Les fonctions assurées par ADCON sont détaillées dans le tableau 4.12.
ADCON : Adresse directe C5H.
ADC1 |
ADCO |
ADEX |
ADCI |
ADCS |
AADR2 |
AADR1 |
AADRO |
ADC1 : |
Bit 1 du résultat de la conversion. |
ADCO : |
Bit 0 du résultat de 10 bits. |
ADEX : |
Autorisation de lancement externe d'une conversion. = 0 : conversion lancée uniquement par mise à 1 de ADCS = 1 : conversion lancée par ADCS = 1 ou par signal extérieur (broche STADC). |
ADCI : |
Indicateur pour interruption. ADCI est mis à 1 lorsque le résultat d'une conversion est disponible.Une interruption peut être provoquée et ce bit doit être remis à 0 par programme. Si ADCI est à l, une nouvelle conversion ne peut pas être lancée. ADCI ne peut pas être forcé à 1 par programme. |
ADCS : |
Bit de lancement et d'état. Mis à 1 par programme, ADCS permet le lancement d'une conversion. Pendant toute la durée de la conversion ce bit reste à 1 et repasse automatiquement à 0 pour signaler la fin de conversion. ADCS passe à 0 en même temps que ADCI passe à 1. ADCS ne peut pas être remis à 0 par programme. ADCI ADCS 0 0 : CAN libre, une conversion peut être lancée 0 1 : conversion en cours, lancement impossible 1 0 : conversion finie, lancement impossible 1 1 : combinaison impossible. |
AADR2 : |
Bit de sélection d'une des 8 entrées analogiques |
AADR1 : |
Bit de sélection d'une des 8 entrées analogiques |
AADRO : |
Bit de sélection d'une des 8 entrées analogiques |
Tableau 4.12 : Registre de contrôle du CAN.
Alimentation et tensions de référence
Sur la figure 4.11, on peut remarquer la présence d'une alimentation directe pour le convertisseur (alimentation et masse analogique AVDD et AVSS) ainsi que deux bornes destinées à recevoir une différence de potentiel dite de référence (AVref+ et AVref-). Cette tension est destinée à l'alimentation du réseau R/2R du convertisseur numérique analogique contenu dans le CAN. Cette tension peut être différente de la tension d'alimentation mais doit rester incluse dans les limites :
AVREF + |
inférieure ou égale à |
AVDD + 0.2 V |
|
et |
AVREF - |
supérieure ou égale à |
AVSS - 0.2 V |
Cette liberté permet d'optimiser la résolution de la conversion en fonction des valeurs à convertir. Par exemple, si les tensions d'entrée à convertir sont, à coup sûr, comprises entre 1 V et 3 V, il est possible de choisir pour AVREF- la valeur de 1 V et pour AVREF+ la valeur de 3 V.
Le résultat de la conversion se calcule grâce à la formule :
Extrait de "Microcontrôleurs 80C535, 80C537, 80C552" de Bernard Odant; édition Dunod Tech.
Un exemple de mise en oeuvre ici (cet exemple utilise les interruptions et est en assembleur)
Une autre description sur ce document en page 6 (+ exemple en assembleur)
Un programme source en C utilisant le CAN du 80C552