Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modulo ADC
Modulo ADC
Microcontroladores PIC
ATE-Universidad de Oviedo
Puede seguir funcionando cuando el PIC est en modo SLEEP ya que dispone de un oscilador RC interno propio Hay 11 registros asociados a este perifrico.
Definicin de pines de entrada y seales aplicadas Manejo de interrupciones
TRISA PORTA TRISE - PORTE INTCON PIE1 PIR1 ADCON0 ADCON1 ADRESH - ADRESL
ATE-Universidad de Oviedo
Estructura interna
Multiplexor analgico 8 a 1
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
Mdulo A/D
SS RSS Circuito de Muestreo y Retencin CHOLD
VDD
GO /DONE
Funcin de transferencia conversor A/D La primera transicin tiene lugar cuando la tensin analgica de entrada alcanza el valor VREF- + (VREF+ - VREF-)/1024 1LSb.
11 bits
(VREF-)
(VREF+)
1021 LSb
Microcontroladores PIC
ATE-Universidad de Oviedo
ADRESH
A/D
ADRESL
004h 003h 002h 001h 2 LSb 4 LSb 1021 LSb 1022 LSb
0V
1 LSB = VDD/1024
3 LSb
1 LSb
000h
VDD
Ve
Microcontroladores PIC
ATE-Universidad de Oviedo
GO/DONE
ADON
bit 7-6
bit 5-3
bit 2
bit 0
Microcontroladores PIC
ATE-Universidad de Oviedo
ADON
bit 7-6
ADCS1:ADCS0: Seleccin del reloj para la conversin A/D junto con ADCS2 que est en ADCON1
00 = fOSC / 2 00 = fOSC / 4 01 = fOSC / 8 01 = fOSC / 16 10 = fOSC / 32 10 = fOSC / 64 11 = fRC 11 = fRC
ADCS2= 0 ADCS2= 1
bit 5-3
bit 2
bit 0
Microcontroladores PIC
ATE-Universidad de Oviedo
PCFG1
PCFG0
bit 7
bit 3-0
Microcontroladores PIC
ATE-Universidad de Oviedo
PCFG1
PCFG0
ADFM: Seleccin de formato del resultado ADCS2: Seleccin de reloj para conversin A/D junto con ADCS1 y ADCS0 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 VREF+ A VREF+ D VREF+ A VREF+ VREF+ VREF+ VREF+ D VREF+ 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
1 = Ajuste a la derecha
0 = Ajuste a la izquierda
Microcontroladores PIC
ATE-Universidad de Oviedo
bit 7 bit 6
bit 6
bit 6
Microcontroladores PIC
ATE-Universidad de Oviedo
- Habilitar la interrupcin del convertidor A/D. - Habilitar las interrupciones de los perifricos. - Habilitar la mscara global de interrupciones.
- Tiempo necesario para capturar el valor analgico a convertir. - Los valores tpicos del tiempo de adquisicin son del orden de 20s.
ATE-Universidad de Oviedo
Microcontroladores PIC
11
4. Comenzar la conversin.
a) Controlando cundo el bit GO/DONE se pone a 0. b) Esperando a que llegue la interrupcin del convertidor. - Disponible en los registros ADRESH:ADRESL. - Bajar el flag ADIF si se estn usando interrupciones.
12
Tiempo de adquisicin
RS VA
SS
En estas condiciones, TACQ=Amplifier Settling Time +Hold Capacitor Charging Time +Temperature Coefficient =TAMP + TC + TCOFF =2s + TC + [(Temperature -25C)(0.05s/C)] TC = - CHOLD (RIC + RSS + RS) Ln(1/2047) = -120pF (1k. + 7k. + 10k.) Ln(0.0004885) = 16.47s TACQ=2s + 16.47s + [(50C -25C)(0.05s/C) = 19.72s 20s
Microcontroladores PIC
13
Tiempo de conversin
La conversin de 10 bits dura 12TAD.
Tciclo TAD TAD TAD b9 TAD b8 TAD b7 TAD b6 TAD b5 TAD b4 TAD b3 TAD b2 TAD b1 TAD b0
Se carga ADRES Se pone GO/DONE a 0 Se levanta el flag ADIF CHOLD conectado a entrada analgica
TAD=2TOSC - TAD=8TOSC - TAD=32TOSC - TAD=2s6s (tp. 4s) Tambin TAD=4TOSC - TAD=16TOSC - TAD=64TOSC en PIC16F87xA
14
2 TAD
Depende de Rs externa
Interruptor de muestreo cerrado para alcanzar el nuevo valor a convertir
T. de conversin
T. de adquisicin
GO/DONE 0
Interruptor abierto Inicio de conversin Interruptor cerrado
SS RSS
CHOLD VSS
Desde el fin de conversin hasta que se vuelve a cerrar el interruptor transcurren 2TAD 15
Microcontroladores PIC
ATE-Universidad de Oviedo
Depende de Rs externa
Interruptor de muestreo cerrado para alcanzar el nuevo valor a convertir
T. de conversin
T. de adquisicin
SS
SS
A partir de aqu se podra lanzar una nueva conversin porque ya se ha alcanzado el valor de la tensin a convertir
Inicio de conversin
GO/DONE 1
CONDICIN a cumplir:
Microcontroladores PIC
ATE-Universidad de Oviedo
16
0 = Ajuste a la izquierda
AN3 RA3 A VREF+ A VREF+ A VREF+ D VREF+ A VREF+ VREF+ VREF+ VREF+ D VREF+ 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
Microcontroladores PIC
ATE-Universidad de Oviedo
17
bit 7-6
bit 5-3
bit 2
bit 0
Microcontroladores PIC
ATE-Universidad de Oviedo
19
Microcontroladores PIC
ATE-Universidad de Oviedo
20
; TEMP ; ; ; ; ; start
org 0x04 ; Vector de interrupcin goto service_int org 0x10 movlw 0FFh movwf PORTB bsf STATUS,RP0 movwf TRISA clrf TRISB bcf STATUS,RP0 call InitializeAD call SetupDelay bsf ADCON0,GO goto loop
; PORTB = 11111111b ; Banco 1 ; PORTA son entradas ; PORTB son salida ; Banco 0 ; Delay para Tad ; Inicia conversin A/D
; InitializeAD, inicializa el modulo A/D. ; Selecciona CH0 a CH3 como entradas analgicas, reloj RC y lee el CH0. ; InitializeAD bsf STATUS,RP0 ; Banco 1 movlw B'00000100' ; RA0,RA1,RA3 entradas analogicas movwf ADCON1 ; Justificado a la izquierda ; 8 bits mas significativos en ADRESH bsf PIE1,ADIE ; Habilitamos interrupciones A/D bcf STATUS,RP0 ; Banco 0 movlw b11000001 ; Oscilador RC, Entrada analgica CH0 movwf ADCON0 ; Modulo A/D en funcionamiento bcf PIR1,ADIF ; Limpio flag interrupcin bsf INTCON,PEIE ; Habilito interrupciones de perifericos bsf INTCON,GIE ; Habilito interrupciones globales return ; Esta rutina es un retardo software de ms de 10us si ; se usa un oscilador de 4MHz que se usa para asegurar ; un tiempo de adquisicin de ms de 20 us mediante una doble llamada ; antes de lanzar una nueva conversin. SetupDelay SD movlw 3 movwf TEMP decfsz TEMP, F goto SD return END ; Carga Temp con 3 ; Bucle de retardo
loop ;
Microcontroladores PIC
ATE-Universidad de Oviedo
21
; START
Microcontroladores PIC
ATE-Universidad de Oviedo
22
bsf STATUS,RP0 ; guardo el resultado de la conversin en la pila movf ADRESL,W ; primero los 8 bits menos significativos movwf INDF ; que estn en ADRESL (en el banco 1) incf FSR ; Se incrementa el puntero de direcciones RAM bcf STATUS,RP0 ; Volvemos al banco 0 movf ADRESH,W ; para recoger ahora los 2 bits ms significativos movwf INDF ; los guardamos en la siguiente posicin apuntada por FSR incf FSR ; incrementamos de nuevo FSR movlw 0x08 ; Incrementamos el nmero de canal a convertir addwf ADCON0 ; para lo cual sumamos 1 al bit 3 de ADCON0 btfss ADCON0,6 ; miro si ya he convertido los 8 canales, el bit 6 sera 1 goto new_ad ; si no convierto otro, nueva conversin bcf ADCON0,6 ; en caso contrario, vuelvo a poner Tad=32*Tosc (b6=0) movlw ADTABLE ; de nuevo el puntero del dir. indirecto movwf FSR ; apuntando a la primera posicion de la tabla goto new_ad ; y vuelvo a convertir, empezando por el canal 0 ;*********************************** Temporizacin del tiempo de adquisicin ************************************* delay_adq movlw 8 ; bucle del tiempo de adquisicin movwf TEMP ; 18,5 useg incluyendo call y return adq nop ; 1 ciclo decfsz TEMP,F ; decremento y comparacin con cero goto adq ; si no hemos llegado a cero, repetimos return ; si ya llegamos a cero, retornamos
Microcontroladores PIC
ATE-Universidad de Oviedo
23