Professional Documents
Culture Documents
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
FAD
7 ADCON0
? 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
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
Activation du C.A.N.
CAN_PIC.LWP
PAGE 1 SUR 4
MICROCONTRLEUR PICS
ADCS0 0 1 0 1
Frquence FAD FOSC 1/8 FOSC 1/32 FOSC Circuit RC interne (1)
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
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
PAGE 2 SUR 4
MICROCONTRLEUR PICS
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
VREF=VREF+ - VREF
2V [ V REF [ V DD + 0, 3V
-
DURE
ERREUR ERREUR
: 2 LSB
SQUENCES
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
PAGE 3 SUR 4
MICROCONTRLEUR PICS
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 =
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
PAGE 4 SUR 4