/REF+ CONERIDOR A/D Características: Convertidor A/D de aproximaciones sucesivas Entrada multiplexada ANx, incluye circuito &H res tipos de convertidores, según el dispositivo: Convertidor A/D básico de 8bits. Cuatro entradas analógicas AN<3:> y entrada REF seleccionable a DD o AN3/ REF Convertidor A/D de 8bits. Hasta ocho entradas analógicas AN<3:> y entrada REF seleccionable a DD o AN3/ REF Convertidor A/D de bits. Hasta ocho entradas analógicas AN<3:> y entradas REF+, REFseleccionable a A DD,A SS o AN3/ REF+,AN2/ REF /REF Registros CON y CON para la configuración del A/D Para convertidores de 8bits, el resultado se obtiene en el registro RES Para convertidores de bits, el resultado se obtiene en los registro RESL y RESH. El formato del resultado (justificado a derecha o izquierda) es seleccionado con FM del CON Conversión de la entrada analógica ANx seleccionada con CHS<{2,}:> del CON Permite su desconexión de alimentación para bajo consumo, con el ON del CON Cuatro fuentes de reloj (F =/ ) para la conversión: /2, /8, /32, F RC (derivado de un oscilador RC interno del A/D) en función de CS<:> del CON La configuración de los puertos RE<2:>,RA5, RA<3:> con entradas analógicas AN<7:> multiplexadas es seleccionada con PCFG<{3,2,}:> del CON. Los puertos usados como entradas analógicas deben configurar su RISx<n>=, y leen el PORx<n>= En funcionamiento durante modo normal o SLEEP (requiere fuente de reloj F RC ) El A/D provoca petición de interrupción (IF=) al finalizar la conversión
D D D D REF+ REF D A D D D D D D D A D D A A REF+ REF A A D D D A REF+ REF A A D D D D REF+ REF A A D D A A REF+ A A A D D A A A A A A A A A A REF+ REF A A D D A A REF+ A A A D D D D A D A A D D D D REF+ D A A D D D D D D D D A A A A REF+ A A A D D D A A A A A A A A A A A A A X AN7/ /RE2 AN6/ /RE AN5/ /RE AN4/ /RA5 AN3/ /RA3 AN2/ /RA2 AN/ /RA AN/ /RA PCFG3 PCFG2 PCFG PCFG A/D Port ConFiGuration CON* (9Fh) FM PCFG3 PCFG2 PCFG PCFG 2 El Hw limpia el bit al finalizar la conversión Conversión A/D en proceso A/D alimentado (On) Conversión A/D finalizada A/D no alimentado (Off) GO 2 GO/ A/D ON ON No seleccionar canales no implementados /8 = /32 = F RC = AN7 AN /2= AN A/D Clock Select CS CS A/D CHannel Select CHS2 CHS CHS *PIC6F87X (Consultar manual de referencia para otros dispositivos) CON* (Fh) CS CS CHS2 CHS CHS GO/ ON RESL* (9Eh) Parte baja del resultado del A/D bits RESH* (Eh) Parte alta del resultado del A/D bits *PIC6F87X (Consultar manual de referencia para otros dispositivos) PIE* (8Ch) PIR* (Ch) PSPIE PSPIF A/D Interrupt Enable Int. por A/D deshabilitada Int. por A/D habilitada A/D result ForMat Justificado izquierda Justificado derecha IE RCIE XIE SSPIE CCPIE MR2IE MRIE IF RCIF XIF SSPIF CCPIF MR2IF MRIF IE A/D Interrupt Flag A/D no finalizó conversión A/D finalizó conversión Flujo de funcionamiento del periférico A/D FM IF
Secuencia para realizar una conversión:. Configurar el periférico A/D: Configurar entradas analógicas PCFG<{3,2,}:>, RISx<n>= Seleccionar reloj de conversión CS<:> Alimentar el A/D, ON= Seleccionar canal de entrada CHS<{2,}:> 2. Configurar interrupciones si es necesario GIE=, PEIE=, IE= IF= 3. Esperar el tiempo de adquisición del &H 4. Comenzar conversión, GO= 5. Esperar la finalización de la conversión. Dos formas: Consultando cuando GO= (o IF=) Interrupción por finalizar la conversión (IF=) 6. Lectura del resultado de conversión en RES (A/D8bits) o RESH,RESL (A/Dbits) 7. Limpiar bandera IF= si es necesario Margen de tensión de entrada REF = REF+ REF LSB= REF /2 n Precisión máxima de ±/2 LSB= ± REF /2 n+ A/D bits /2LSB El tiempo de muestreo es la suma del tiempo de adquisición ( ) y el tiempo de conversión (k* ) SLING = + k El tiempo de adquisición ( ) es el necesario para que el &H se cargue a la tensión del canal de entrada al: erminar la conversión, o Cambiar el canal de entrada RS kω A/D bits ±5nA = A/Dbits C = C + = 2 µ s HOLD (R IC + A/D8bits + R COFF SS COFF > 25ºC DD = 5 = 9.72 µ s@ = 5ºC A/D bits R = k Ω C S = 5 µ s + R ) ln 2 n ( ) = ( 25º C),5 µ s/º C S + REF t = ( R IC + R SS + R S ) C CHOLD REF e CHOLD = REF n + 2 CHOLD HOLD t C
El tiempo de conversión depende de la frecuencia del reloj seleccionada para el A/D (F =/ ). Se debe asegurar en los modos /N que (min) N/ A/D bits A/D bits A/D bits CONERSIÓN bits CONERSIÓN 8bits = 2 = (min) 6F87X (min) 6LF87X =,6 µ s = 3 µ s RC(min/typ/max) 6F87X 6LF87X RC(min/typ /max) = 2/4/6 µ s = 3/6/9 µ s #include "p6f876.inc C2us equ x2 ;Contador retardo 2us C macro canal ;Macro> cambia a canal<2:> movlw H'C'+canal*8 ;Evalua durante ensamblado (no runtime) movwf CON ;FRC, CHS<2:>=canal<2:>, GO=, ON= movlw D'5' ; movwf C2us ; movlw D'2' ; (PCL=2 para nueva iteración) decfsz C2us,F ;5Iteraciones: 4*(+2)+*(2)=4 subwf PCL,F ;Nueva iteración nop ; nop ; endm ;otal =9=9us(@4MHz) ;Proxima instrucción a los 2us... ;ector RESE, Inicializaciones bsf SAS,RP ;Banco movlw H'4' ;3 Canales: RA/AN,RA/AN,RA3/AN3 movwf CON ;ref+=dd, ref=ss, Jusfif. Izquierda bcf PIE,IE ;IE= movlw H'3' ;RA/AN,RA/AN entradas analógicas iorwf RISA,F bcf RISA,3 ;RA3/AN3, salida digital bcf SAS,RP ;Banco... L bcf PORA,3 ;RA3= (se lee como ) C ;Configura canal bsf CON,GO ;GO*= WC btfsc CON,GO ;Espera a GO*= goto WC call PROCESA ;Procesa {RESH<7:>,RESL<7:6>}... bsf PORA,3 ;RA3= (se lee como ) C ;Configura canal bsf CON,GO ;GO*= WC btfsc CON,GO ;Espera a GO*= goto WC call PROCESA ;Procesa {RESH<7:>,RESL<7:6>}... ;Sigue con el programa goto L ;uelve a convertir los dos canales
En algunos dispositivos uno de los módulos CCPx (modo comparación, función de disparo) permite inicializar la conversión A/D (GO=), al mismo tiempo de realizar reset del MR. Esta función posibilita la adquisición periódica de muestras de forma autónoma CON CS CS CHS2 CHS CHS GO/ ON CCP2 (PIC6F87X) #include "p6f876.inc... ;ector RESE org 4 goto INERRP ;ector INERRPCIÓN... ;Inicializaciones bcf INCON,GIE ;GIE= movlw H'C' movwf CON ;A/D: FRC, canal#, GO=, ON= movlw H'2' movwf CON ;: Prescaler=:4, FOSC/4, Off movlw H'B' movwf CCP2CON ;CCP2: modo disparo(reset MR,GO= del A/D) clrf MRH clrf MRL ;=h movlw D'97' movwf CCPR2H movlw D'68' movwf CCPR2L ;CCPR2=97*256+68=25 bsf SAS,RP ;Banco movlw H'8E' ; Canal: RA/AN movwf CON ;ref+=dd, ref=ss, Justif. derecha bsf PIE,IE ;IE= bcf PIE2,CCP2IE ;CCP2IE= movlw H'' iorwf RISA,F ;RA/AN entrada analógica bcf SAS,RP ;Banco bcf PIR,IF ;IF= bsf INCON,GIE ;GIE= bsf INCON,PEIE ;PEIE= bsf CON,MRON ; On, realizara 25 cuentas( a 24999) ;Nueva A/D=us*25*4=us=ms(@4MHz)... ;Resto código INERRP... ;Salva W y SAS banksel PIR btfss PIR,IF ;IF=? goto L call PROCESA ;Procesa la A/D cada ms(@4mhz) bcf PIR,IF ;IF=... ;Resto de servicios de interrupción L... ;Restaura W y SAS retfie