Sie sind auf Seite 1von 7

El Mdulo de Conversin A/D de los PIC

Caractersticas generales en el PIC16F877


Ocho canales de conversin. Cinco pines E/S de PORTA y los tres de PORTE. Convierte la seal analgica en un nmero digital de 10 bits. Tensin de referencia seleccionable por software. Puede ser VDD o la tensin aplicada en los pines RA2 y/o RA3. Posibilidad de seguir funcionando cuando el PIC est en modo Hay 11 registros asociados a este perifrico. Definicin de pines de entrada Manejo de interrupciones
INTCON - PIE1 - PIR1 TRISA - PORTA - TRISE - PORTE

Control del conversor A/D


ADCON0 - ADCON1 - ADRESH - ADRESL

El Mdulo de Conversin A/D de los PIC


Estructura interna
RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA5/AN4 RE0/AN5 RE1/AN6 RE2/AN7
000 001 010 011 100 101 110 111

CHS2:CHS0

Convertidor A/D
VAIN (Input Voltage)

PCFG3:PCFG0 VDD VREF+

PCFG3:PCFG0

VREF VS S

El Mdulo de Conversin A/D de los PIC


Registro ADCON0 (1Fh)
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE ADON

bit 7-6

ADCS1:ADCS0: Seleccin del reloj para la conversin A/D


00 = fOSC / 2 01 = fOSC / 8 10 = fOSC / 32 11 = fRC

bit 5-3

CHS2:CHS0: Seleccin del canal de conversin


000 = Canal 0 100 = Canal 4 001 = Canal 1 101 = Canal 5 010 = Canal 2 110 = Canal 6 011 = Canal 3 111 = Canal 7

bit 2

GO/DONE: Estado de la conversin


Si ADON=1: 1 = Conversin en progreso 0 = Conversin finalizada

bit 0

ADON: Bit de encendido del convertidor A/D


1 = Mdulo A/D encendido 0 = Mdulo A/D apagado

El Mdulo de Conversin A/D de los PIC


Registro ADCON1 (9Fh)
ADFM PCFG3 PCFG2 PCFG1 PCFG0

bit 7

ADFM: Seleccin de formato del resultado


1 = Ajuste a la derecha 0 = Ajuste a la izquierda

bit 3-0

PCFG3:PCFG0: Configuracin de las entradas al mdulo A/D


PCFG3: AN7 PCFG0 RE2 0000 0001 0010 0011 0100 0101 011x 1000 1001 1010 1011 1100 1101 1110 1111 A A D D D D D A D D D D D D D AN6 RE1 A A D D D D D A D D D D D D D AN5 RE0 A A D D D D D A A A A D D D D AN4 RA5 A A A A D D D A A A A A D D D AN3 RA3 A VREF+ A V REF+ A V REF+ D V REF+ A V REF+ V REF+ V REF+ V REF+ D V REF+ AN2 RA2 A A A A D D D AN1 RA1 A A A A A A D A A A A A A D D AN0 RA0 A A A A A A D A A A A A A A A

V REFA A V REFV REFV REFD V REF-

El Mdulo de Conversin A/D de los PIC


Registro INTCON (0Bh , 8Bh , 10Bh , 18Bh)
GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

bit 7 bit 6

GIE: Habilitacin global de interrupciones PEIE: Habilitacin de interrupciones de perifricos

Registro PIE1 (8Ch)


PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE

bit 6

ADIE: Habilitacin de la interrupcin del convertidor A/D

Registro PIR1 (0Ch)


PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF

bit 6

ADIF:

de la interrupcin del convertidor A/D


0 = Conversin A/D an no completada.

1 = Conversin A/D completada.

El Mdulo de Conversin A/D de los PIC


Pasos en una conversin A/D
1. Configurar el mdulo A/D. Definir entradas analgicas y tensin de referencia. Seleccionar el canal de la conversin. (ADCON0) Seleccionar el reloj de la conversin. (ADCON0) Encender el mdulo A/D. (ADCON0)
(ADCON1)

2. Configurar la interrupcin por conversin A/D. - Bajar el ADIF. (PIR1) - Habilitar la interrupcin del convertidor A/D. - Habilitar las interrupciones de los perifricos. - Habilitar la mscara global de interrupciones.

(PIE1) (INTCON) (INTCON)

3. Esperar a que transcurra el tiempo de adquisicin. - Tiempo necesario para capturar el valor analgico a convertir. - Los valores tpicos del tiempo de adquisicin son del orden de 20s.

El Mdulo de Conversin A/D de los PIC


4. Comenzar la conversin. - Poner a 1 el bit GO/DONE.
(ADCON0) No activar este bit a la vez que se enciende el convertidor A/D

5. Esperar a que se complete la conversin A/D. a) Controlando cundo el bit GO/DONE se pone a 0. b) Esperando a que llegue la interrupcin del convertidor.

6. Leer el resultado de la conversin. - Disponible en los registros ADRESH:ADRESL. - Bajar el ADIF si se estn usando interrupciones.

7. Llevar a cabo la siguiente conversin. - Volver al paso 1 2, segn convenga. - Espera mnima antes de empezar la siguiente adquisicin: 2TAD.
TAD: Tiempo necesario para la conversin de un bit.

El Mdulo de Conversin A/D de los PIC


Tiempo de adquisicin
Tiempo necesario para cargar el condensador de mantenimiento (CHOLD ).
V DD

RS VA

AN X CPIN 5pF

R IC 1K IFUGAS 500nA

SS

R SS CHOLD 120pF VSS

Mxima impedancia recomendada para la fuente: 10K.


En estas condiciones, TACQ 20s.

Mientras no se complete la conversin, no empieza otra adquis icin.


Esperar TACQ : a) tras una conversin; b) tras seleccionar un nuevo canal; c) tras encender el mdulo A/D.

El Mdulo de Conversin A/D de los PIC


Tiempo de conversin
La conversin de 10 bits dura 12TAD.
Tciclo T AD TAD TAD b9 TAD b8 TAD b7 TAD b6 TAD b5 TAD b4 TAD b3 TAD b2 TAD b1 TAD b0

Comienza la conversin Se abre SS (tp. GO/DONE 1

100ns)

Se carga ADRES Se pone GO/DONE a 0 Se levanta el flag ADIF CHOLD conectado a entrada analgica

TAD configurable en ADCON0 (reloj de la conversin).


TAD=2TOSC - TAD=8TOSC - T AD=32TOSC - T AD=2s6s (tp. 4s) Para un funcionamiento correcto se necesita un valor mnimo de TAD=1,6s.

El Mdulo de Conversin A/D de los PIC


Funcin de transferencia
La primera transicin tiene lugar cuando la tensin analgica de entrada alcanza el valor VREF- + (VREF+ - VREF-)/1024 1LSb.
FFh FEh FDh FCh

04h 03h 02h 01h 00h

(VREF- )

(V REF+)

El Mdulo de Conversin A/D de los PIC


Conversin A/D en el compilador C de CCS
Configuracin del mdulo conversor A/D setup_adc (modo);
modo: ADC_OFF ADC_CLOCK_DIV_2 ADC_CLOCK_DIV_8 ADC_CLOCK_DIV_32 ADC_CLOCK_INTERNAL
(ADCON0 (ADCON0 (ADCON0 (ADCON0 (ADCON0 00h) 01h) 41h) 81h) C1h)

Definicin de entradas analgicas setup_adc_ports (valor);


valor: NO_ANALOGS ALL_ANALOG ANALOG_RA3_REF A_ANALOG A_ANALOG_RA3_REF RA0_RA1_RA3_ANALOG RA0_RA1_ANALOG_RA3_REF
(ADCON1 (ADCON1 (ADCON1 (ADCON1 (ADCON1 (ADCON1 (ADCON1 86h) 80h) 81h) 82h) 83h) 84h) 85h)

El Mdulo de Conversin A/D de los PIC


Definicin de entradas analgicas (cont.) setup_adc_ports (valor);
valor: ANALOG_RA3_RA2_REF ANALOG_NOT_RE1_RE2 ANALOG_NOT_RE1_RE2_REF_RA3 ANALOG_NOT_RE1_RE2_REF_RA3_RA2 A_ANALOG_RA3_RA2_REF RA0_RA1_ANALOG_RA3_RA2_REF RA0_ANALOG RA0_ANALOG_RA3_RA2_REF
(ADCON1 (ADCON1 (ADCON1 (ADCON1 (ADCON1 (ADCON1 (ADCON1 (ADCON1 88h) 89h) 8Ah) 8Bh) 8Ch) 8Dh) 8Eh) 8Fh)

Seleccin del canal analgico set_adc_channel (canal);


canal: 0 1 2 3
(AN0 ) (AN1 ) (AN2 ) (AN3 )

4 5 6 7

(AN4) (AN5) (AN6) (AN7)

El Mdulo de Conversin A/D de los PIC


Lectura del resultado valor = read_adc ();
valor: Entero de 16 bits segn la directiva empleada. La influencia de dicha directiva se recoge en la siguiente tabla
#device adc=8 adc=10 adc=11 adc=16 8 bits 00-FF x x 0-FF00 10 bits 00-FF 0-3FF x 0-FFC0 11 bits 00-FF x 0-7FF 0-FFE0 16 bits 00-FF x x 0-FFFF

El fichero 16f877.h incluye como primera directiva Es necesario incluir informacin del tipo de conversor A/D. Por ello los ficheros C que usen este mdulo debern comenzar por

El Mdulo de Conversin A/D de los PIC


Ejemplo setup_adc_ports (A_ANALOG); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (3); delay_us (20); valor = read_adc (); setup_adc (ADC_OFF);
W 10000010 Banco 1 ADCON1 W Banco 0 W ADCON0 W W & 00111000 W W | 11 000001 ADCON0 W W ADCON0 W W & 11000111 W W | 00011000 ADCON0 W GO/DONE 1 Espera a GO/DONE=0 W ADRESH TEMP W Banco 1 W ADRESL Banco 0 REGL W W TEMP REGH W

W ADCON0 W W & 00111000 ADCON0 W

Das könnte Ihnen auch gefallen