You are on page 1of 4

MICROCONTRLEUR PICS

CONVERTISSEUR A/N DU PIC16F877

Convertisseur A/N 10 bits du PIC16F877


PRSENTATION
DU

C.A.N. (CONVERTISSEUR ANALOGIQUE NUMRIQUE).

Le PIC 16F877 possde 8 entres analogiques (RA0..RA5 et RE0..RE2 pour les PICs disposant du port E) multiplxes vers un C.A.N. approximation successive (SAR = Successive approximation register). Ce dernier est prcd dun chantillonneur / bloqueur permettant une stabilit de la tension dentre pendant toute la dure de la conversion.
VDD PCFG3 PCFG2 PCFG1 PCFG0 0 ADCON1 JUSTIFICATION ADRESH 7 7 ADRESL 0 0 FOSC (QUARTZ)

VSS AN0 (RA0) AN1 (RA1) AN2 (RA2) AN3 (RA3) AN4 (RA5) AN5 (RE0) AN6 (RE1) AN7 (RE2)

2 VERS 1

2 VERS 1

# VREF-

# VREF+

VAIN
8 VERS 1 GO/DONE

#
START/EOC
4 VERS 1

10 BITS

CHS2 CHS1 CHS0

FAD

1/2 1/8 1/32


RC(~250KHZ)

7 ADCON0

ACTIVATION ADON CAN

? La gestion de la conversion se fait grce 4 registres 8 bits : w ADRESH et ADRESL (Analog to Digital result High and Low), contiennent le rsultat de la
conversion sur 10 bits. Rem: un octet ne contiendra que 2 bits.

w ADCON0 et ADCON1 (Analog to Digital Control 0, 1), permettent de configurer la conversion. ? La tension de rfrence peut tre interne (GND ou 5v), ou externe (RA2 et RA3) selon la
configuration. En aucun cas elle ne doit dpasser la tension dalimentation.

? Le temps de conversion minimum est denviron 20 s. La dure du signal dhorloge TAD ne doit pas
tre en dessous de 1,6 s.

CONFIGURATION

DE LA CONVERSION

REGISTRE ADCON0 Bit 6


ADCS0

Bit 7
ADCS1

Bit 5
CHS2

Bit 4
CHS1

Bit 3
CHS0

ADCS1 ADSC0

Bit 2
GO/DONE

ADFM 7

Bit 3
Inutilis

Bit 0
ADON

Slection Frquence Horloge

Slection entre de conversion

Lancement / Fin de conversion Nomm ADGO sur HI-TECH

Activation du C.A.N.

CAN_PIC.LWP

SECTION T.S. LECTRONIQUE - PADIOLLEAU J-LUC ET COTTET JJ

PAGE 1 SUR 4

MICROCONTRLEUR PICS

CONVERTISSEUR A/N DU PIC16F877

Slection frquence dhorloge du C.A.N. : ADCS1 0 0 1 1


(1)

ADCS0 0 1 0 1

Frquence FAD FOSC 1/8 FOSC 1/32 FOSC Circuit RC interne (1)

Frquence max. du Quartz 1,25 MHz 5 MHz 20 MHz X

La frquence FAD engendre par le RC est denviron 250 KHz.

Slection entre de conversion : CHS2 0 0 0 0 1 1 1 1 CHS1 0 0 1 1 0 0 1 1 CHS0 0 1 0 1 0 1 0 1 Canal Slectionn AN0 (RA0) AN1 (RA1) AN2 (RA2) AN3 (RA3) AN4 (RA5) AN5 (RE0) AN6 (RE1) AN7 (RE2)

Lancement et fin de conversion : Le bit GO/DONE lance la conversion lorsquil est positionn 1. Il passe 0 lorsque la conversion est termin. Il est nomm ADGO dans le langage C HI-TECH . Activation du C.A.N. : Le positionnement 1 du bit ADON active le convertisseur A/N. Dans le cas contraire le C.A.N. Est inoprant.

REGISTRE ADCON1
Bit 7 ADFM Bit 6 X Bit 5 X Bit 4 X Bit 3 PCFG3 Bit 2 PCFG2 Bit 1 PCFG1 Bit 0 PCFG0

Mode de prsentation du rsultat

Inutiliss (sont lus 0)

Slection de la tension de rfrence et du nombre dentre analogiques

ADFM= Slection du Format du rsultat de la conversion: Le rsultat de la conversion sur 10 bits peut se prsenter de 2 faons : - ADFM = 0 justification gauche (dans ce cas ADRESH donne un rsultat sur 8 bits, correspondant la partie la plus significative = poids fort). Ce mode est surtout utilis lorsque lon se contente dun rsultat sur 8 bits (variable de type unsigned char).
7

D9

D8

ADRESH D7 D6 D5

D4

D3

D2

D1

D0

ADRESL 0 0

- ADFM = 1 justification droite. Le rsultat correspond directement un entier de type unsigned int en langage C. Ce mode est donc tout indiqu lorsque lon souhaite utiliser le rsultat sur 10 bits. 7 ADRESH 0 7 ADRESL 0 0 0 0 0 0 0 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

CAN_PIC.LWP

SECTION T.S. LECTRONIQUE - PADIOLLEAU J-LUC ET COTTET JJ

PAGE 2 SUR 4

MICROCONTRLEUR PICS

CONVERTISSEUR A/N DU PIC16F877

Slection de la tension de rfrence et du nombre dentres analogiques : PCFG3 : PCFG0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 AN7 RE2 A A D D D D D D A D D D D D D D AN6 RE1 A A D D D D D D A D D D D D D D AN5 RE0 A A D D D D D D A A A A D D D D AN4 AN3 RA5 RA3 A A VREF+ A A A VREF+ A D A VREF+ D D D D D VREF+ A A A VREF+ A VREF+ A VREF+ A VREF+ D D D VREF+ D AN2 RA2 A A A A D D D D
VREF-

A A
VREFVREFVREF-

D
VREF-

AN1 RA1 A A A A A A D D A A A A A A D D

AN0 RA0 A A A A A A D D A A A A A A A A

VREF+ VDD RA3 VDD RA3 VDD RA3 VDD VDD RA3 VDD RA3 RA3 RA3 RA3 VDD RA3

VREFVSS VSS VSS VSS VSS VSS VSS VSS RA2 VSS VSS RA2 RA2 RA2 VSS RA2

Nombre Ain 8 7 5 4 3 2 0 0 6 6 5 4 3 2 1 1

CARACTRISTIQUES
LIMITES
DES TENSIONS ANALOGIQUES

V SS 0, 3V [ V REF [ V REF+ 2, 0V V DD 2, 5V [ V REF+ [ V DD + 0, 3V

VREF=VREF+ - VREF

2V [ V REF [ V DD + 0, 3V
-

VSS 0, 3V [ V AIN [ V REF + 0, 3V

DURE

DE CONVERSION : TACQ = 12 X TAD (minimum 19,2 us) DE LINARIT : 1 LSB DE DCALAGE

ERREUR ERREUR

: 2 LSB

SQUENCES

RESPECTER POUR LA CONVERSION

SQUENCE DINITIALISATION : 1. Slection de la tension de rfrence et du nombre dentres analogiques : PCFG 3:0. 2. Slection du mode de prsentation du rsultat (justification droite ou gauche) : ADFM. 3. Slection de frquence dhorloge du convertisseur ADCS 1:0. 4. Activation du C.A.N. : ADON = 1. SQUENCE DE CONVERSION : 1. Slection de lentre analogique convertir CHS 2:0. 2. Lancement de la conversion : GO/DONE = 1. (ADGO = 1;) 3. Attente de fin de conversion : GO/DONE = 0 ?. (While (ADGO = = 1); ou While (ADGO); ). 4. Lecture du rsultat dans ADRESH et ADRESL.

INTERRUPTION
La fin de conversion A/N peut gnrer une routine dinterruption. Pour cela il faut positionner 1 le bit dactivation gnral des interruptions GIE (Bit 7 du registre INTCON), le bit dactivation des interruptions priphriques PEIE (Bit 6 du registre INTCON), ainsi que le bit dactivation de linterruption CAN ADIE (Bit 6 du registre PIE1). Lorsquune requte dinterruption est lance par le CAN (A la fin dun cycle de conversion), le drapeau (Flag) ADIF (Bit 6 du registre PIR1) passe 1. Ce bit doit tre repositionn 0 avant toute nouvelle conversion et lors de linitialisation.

CAN_PIC.LWP

SECTION T.S. LECTRONIQUE - PADIOLLEAU J-LUC ET COTTET JJ

PAGE 3 SUR 4

MICROCONTRLEUR PICS

CONVERTISSEUR A/N DU PIC16F877

EXEMPLE
Ce programme permet deffectuer une conversion A/N de la tension prsente sur AN0 (RA0) et dafficher le rsultat (sur 8 bits) sur 8 LEDs connectes au port B. Les tensions de rfrence Vref+ et Vref-, sont fixes VDD et VSS.

Langage C :
//****************** sous programmes*********************** char can(void) // Sous programme CAN { ADGO = 1; // Lancement de CAN while (ADGO == 1) continue; // Attente fin CAN return ADRESH; // Lecture rsultat sur 8 bits } //****************** Programme Principal ******************* main(void) { TRISB =0xFF;

// PortB en sortie // RA0 = AN0, Vref+=VDD, Vref-=Vss, justif. gauche // Fcan=Fosc/32, Select AN0, ADON =

/* Configuration CAN */ ADCON1 = 0b00001110; ADCON0 = 0b10000001; while(1) { CCPR1L = can(); } }

// Rsultat CAN -> PORT B

Langage Assembleur :
ADGO reset goto org init banksel clrf banksel clrf movlw banksel movwf movlw banksel movwf start call movwf goto can PORTB start ;Appel du sous programme de conversion TRISB TRISB PORTB PORTB 0x0E ADCON1 ADCON1 0x81 ADCON0 ADCON0 ;port B en sortie pour Leds ;Port 0 ;RA0=AN0 Vref+=VDD Vref-=Vss, justif. gauche ;Fcan=Fosc/32, Select AN0, ADON = 1 init 0x04 ;saut au debut du prog principal ;prevu pour interruption equ org 2 0x00 ;depart du processeur adr 0

CAN_PIC.LWP

SECTION T.S. LECTRONIQUE - PADIOLLEAU J-LUC ET COTTET JJ

PAGE 4 SUR 4

You might also like