curso pic16f87x 8

Upload: proteus7

Post on 31-May-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Curso PIC16F87X 8

    1/8

    MODULO CONVERTIDORANALGICO/DIGITAL (A/D)

    La familia de microcontroladores

    PIC16F87X, disponen de un mdu-lo de conversin Analgico/Digitalque tiene de cinco entradas para losdispositivos de 28 pines y ocho paralos otros dispositivos de la familia.

    A travs de la entrada analgicase aplica la seal analgica a un con-densador de captura y retencin

    (sample and hold) que despus seintroduce en el convertidor. El con-vertidor A/D que es de aproximacio-nes sucesiva da como resultado unapalabra de 10 bits.

    El mdulo del convertidor A/Dpuede seleccionar como tensin dereferencia la interna, es decir entre

    VDD y masa o bien una externa quese introduzca entre RA3/AN3/VREF+ y RA2/AN2/VREF-. Cuan-do se selecciona la tensin de refe-rencia externa, hay que tener en

    CURSO DE

    MICROCONTROLADORESPIC16F87X (...y VIII)

    CURSO DE

    MICROCONTROLADORESPIC16F87X (...y VIII)Fernando Remiro DomnguezProfesor de Sistemas Electrnicos

    IES. Juan de la Ciervawww.terra.es/personal/fremiro

    MICROCON

    TROLADORES

    56RESISTOR bit 7-6: ADCS1:ADCS0: bit de seleccin de reloj para el Convertidor A/D

    00 Fosc/201 Fosc /8

    10 Fosc/3211 FRC (Procede del

    oscilador RC interno)

    bit 5-3: CH2:CH0: bit deseleccin del canalanalgico

    000 = Canal 0, (RA0/AN0)001 = Canal 1, (RA1/AN1)010 = Canal 2, (RA2/AN2)011 = Canal 3, (RA3/AN3)100 = Canal 4, (RA4/AN4)101 = Canal 5, (RA5/AN5); los PIC16F87X de 28 pines no tienen este canal110 = Canal 6, (RA6/AN6); los PIC16F87X de 28 pines no tienen este canal111 = Canal 7, (RA7/AN7),, los PIC 1 6F87X de 28 pines no tienen este canal

    bit 2: GO/#DONE. bit de estado de la conversin A/DSi ADON=1

    1= La conversin A/D est en marcha (mientras est a 1 se est realizando la conversin)0 = La conversin ha finalizado. (el bit se pone a cero automticamente por hardware cuando la conversin A/D

    finaliza) el resultado de la conversin aparece en ADRESH: ADRESL

    bit 1: No implementado: Se lee como "0"

    bit 0: ADON: bit de puesta en marcha1 = El convertidor A/D est operativo0 = El convertidor A/D est apagado y no consume corriente.

    R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0

    ADCS1 ADCS0 CHS2 CHS1 CHS0 G0/#DONE --- ADON

    Bit 7 Bit 0

    Registro ADCON0 (direccin 1Fh)

    56-63 MICROCONTROLADORES 28/10/04 14:20 Pgina 56

  • 8/14/2019 Curso PIC16F87X 8

    2/8

    cuenta que existen algunas limitacio-nes; la mxima tensin aplicada a lapatilla VREF+ (RA3/AN3) podr serde VDD+0,3V y la mnima de VDD-2,5V. En cuanto a la tensin VREF-(RA2/AN2) la mnima tensin serVSS-0,3V y la mxima VREF+ - 2V,as por ejemplo, si la tensin de ali-mentacin es de 5V, la tensin en

    RA3/AN3 no podr exceder de 5V.Por lo que la mxima tensin en laVREF- ser de 3V. Siempre se ha decumplir que VREF+ - VREF - 2V.

    El convertidor A/D tiene comocaracterstica especial el ser capaz deseguir trabajando mientras el dispo-sitivo est en el modo SEEP. Paraello el oscilador interno RC debeconectarse al conversor A/D.

    El mdulo conversor A/D tieneasociados cuatro registros:

    qADRESH : Parte alta del resultadode la conversin

    qADRESL : Parte baja del resultadode la conversin

    qADCON0: Registro de Control 0qADCON1, Registro de Control 1

    En esta pgina se muestra elregistro ADCON0 de configuracindel funcionamiento del convertidor

    y en la pgina anterior el ADCON1que es el registro de configuracinde los pines del puerto. Los pines delPORTA pueden configurarse comoentradas analgicas (RA, tambinpuede ser entrada de tensin de refe-rencia) o como E/S digital.

    Los registros ADRESH: ADRESLcontienen los 10 bits resultado dela conversin A/D. Cuando secompleta la conversin A/D, el resul-tado se guarda en los registros

    ADRESH:ADRESL y se pone a ceroel bit GO/DONE y el flag de fin deconversin ADIF (PIR1) se pone a1. El diagrama de bloques del mduloconversar A/D es el de la Figura 1.

    Despus de que el conversor A/Dse ha configurado como se desea uti-lizar, la seleccin del canal debe rea-lizarse antes de hacer la adquisicin.

    Los canales de entrada analgicadeben tener los correspondientes bitsdel registro TRIS seleccionadoscomo entradas.

    Para realizar una conversin A/Ddeben seguirse los siguientes pasos:1. Configurar el mdulo conversor A/Dq Configurar los pines que actan

    como entradas analgicas, lasseales que harn de tensin dereferencia la que trabajarn comoE/S digitales (ADDCON1).

    Tabla1

    U-0 U-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0

    ADFM --- --- --- PCFG3 PCFG2 PCFG1 PCFG0

    Bit 7 Bit 0

    Registro ADCON1 (direccin 9Fh)

    MIC

    ROCON

    TROLAD

    ORES

    57RESISTOR

    PCFG3: AN7(1) AN6(1) AN5(1) AN4 AN3 AN2 AN1 AN0 VREF+ VREF- CHAN/

    PCFG0 RA5 RA3 RA2 RA1 RA0V REFS

    RE2 RE1 RE0

    0000 A A A A A A A A VDD VSS 8/0

    0001 A A A A VREF+ A A A RA3 VSS 7/1

    0010 D D D A A A A A VDD VSS 5/0

    0011 D D D A VREF+ A A A RA3 VSS 4/1

    0100 D D D D A D A A VDD VSS 3/0

    0101 D D D D VREF+ D A A RA3 VSS 2/1

    011X D D D D D D D D VDD VSS 0/0

    1000 A A A A VREF+ VREF- A A RA3 RA2 6/2

    1001 D D A A A A A A RA3 VSS 6/0

    1010 D D A A VREF+ A A A RA3 VSS 5/1

    1011 D D A A VREF+ VREF- A A RA3 RA2 4/2

    1100 D D D A VREF+ VREF- A A RA3 RA2 3/2

    1101 D D D D VREF+ VREF- A A RA3 RA2 2/21110 D D D D D D D A VDD VSS 1/0

    1111 D D D D VREF+ VREF- D A RA3 RA2 _

    A= Entrada Analgica; D = E/S Digital; (1) Estos canales no estn disponibles para los dispositivos de

    bit 7: ADFM: Selecciona el formato del resultado de la conversin A/D (ver figura 5)1 = Pone en el registro ARDESH los seis bit de mayor peso a "0" (alineacin a la derecha).0 = pone los 6 bit de menor peso del registro ADRESL a "0" (alineacin a la izquierda).Por lo tanto los 16 bits que forman el registro ARDESH-ARDESL con ADFM=1 tiene los 6 bit de mayorpeso a cero y con ADFM=0 los 6 bit de menor peso estn a cero

    bit 6-4: No implementados: Se leen como cero

    bit 3-0: PCFG3:PCFG0: bits de configuracin de los canales de entrada del convertidor A/D. Se utilizan paraconfigurar las patillas como E/S digital o como entrada analgica de acuerdo con la siguiente tabla:

    56-63 MICROCONTROLADORES 28/10/04 14:20 Pgina 57

  • 8/14/2019 Curso PIC16F87X 8

    3/8

    q Seleccionar el canal de entrada.A/D (ADCON0).

    q Seleccionar la fuente de la seal dereloj para la conversin A/D(ADCON0).

    qActivar el mdulo de conversinA/D (ADCON0)

    2. Activar si, se desea, la interrup-cin. del mdulo conversor A/D

    q Poner a cero el bit ADIFq Poner a uno el bit ADIEq Poner a uno los bits habilitadores

    GIE y PEIE3. Esperar el tiempo requerido para

    la adquisicin4. Inicio de la conversinq Poner a 1 el bit GO/#DONE

    (ADCON0)5. Tiempo de espera para terminar la con-

    versin A/D que puede detectarse por:q Exploracin de bit GO/#DONE ,

    que al finalizar la conversin tomael valor "0"

    q Esperar que se produzca una inte-rrupcin si se ha programado alfinalizar la conversin.

    Figura 2.- Diagrama de flujos que deber seguir el programa para realizar una conversin A/D

    Figura 1.- Diagrama de bloques del convertidor A/D

    RE2/AN7(*)

    PCFG3:PCFG0

    PCFG3:PCFG0

    CHS2:CHS0

    RE1/AN6(*)RE0/AN4(*)

    RA5/AN4RA3/AN3/REFRA2/AN2/REF-

    RA1/AN1

    RA0/AN0

    VAIN

    Tensin de entrada

    VREF+

    VDD

    VSS

    CONVERTIDORA/D

    111

    110

    101

    100

    011

    010

    001

    000

    (*) No exisnten en los dispositivos de 28 pines

    MICROCON

    TROLADORES

    58RESISTOR

    56-63 MICROCONTROLADORES 28/10/04 14:20 Pgina 58

  • 8/14/2019 Curso PIC16F87X 8

    4/8

    qAunque no se autorice la interrup-cin el flag. ADIF se pone a " 1 "al finalizar la interrupcin.

    6. Leer el par de registrosADRESH:ADRESL donde seencuentran los 10 bits que resultan

    de la conversin y poner a cero elflag ADIF.

    7. Para una nueva conversin volvera los pasos 1 y 2 , El tiempo deconversin por bit est definidopor TAD, se exige un mnimo de2*TAD para realizar una nuevaconversin.El diagrama de flujos que deber

    seguir el programa para realizar unaconversin A/D puede ser la que semuestra en la Figura 2

    Requisitos para laAdquisicin A/D

    Para que el convertidor A/D pue-da tener la exactitud especificada,debe permitirse la carga del conden-sador (CHOLD) que mantiene la

    entrada a un nivel de tensin. Elmodelo de una entrada analgica semuestra en la figura 3.

    De la impedancia de la fuente(RS) se toma una muestra a travsdel interruptor (RSS) la impedanciaafecta directamente al tiempo de car-ga del condensador CHOLD. Laimpedancia recomendada para lasfuentes analgicas es de 10 k.Cuando la impedancia disminuyetambin disminuye el tiempo de

    adquisicin. Antes de realizar, laconversin debe seleccionarse elcanal de la entrada analgica.

    Para calcular el tiempo mnimode adquisicin se puede utilizar lasiguiente ecuacin, que asume un

    error de _ LSB para 1024 pasos delconvertidor A/D. TACQ=AmplisierSettling Timer + Holting CapacitorChargine Time + Temperature Coef-ficient = TAMP + TC + TCOFF 19.72 S

    Seleccin del relojdel convertidor A/D

    Se define por TAD al tiempo deconversin por bit. El convertidorA/D requiere un mnimo de 12 TAD

    MICROCON

    TROLADORES

    59RESISTOR

    Figura 3.- Estructura de un pin de un canal Analgico

    VA

    VDD

    Rs

    Cpin5pF

    VT=0.6V

    VT=0.6V

    SS

    RssRIC

  • 8/14/2019 Curso PIC16F87X 8

    5/8

    para la conversin de los 10 bits. Laseal de reloj para la conversin A/Dse selecciona por software mediantelos bits ADCS1:ADCS0q 2 TOSCq 8 TOSCq 32 TOSCq Oscilador interno RC

    (2-6 s)

    Para realizar conversionescorrectas el reloj del convertidorA/D debe seleccionarse paraasegurar un tiempo mnimo de TADde 1,6 mS.

    La tabla 2 muestra los tiempos deTAD dependiendo de la seal dereloj seleccionada para la conversinA/D

    Configuracin de los Pinesdel Puerto Analgico

    Los registros ADCON1 y TRI-SA controlan la configuracin de lospines del puerto del convertidor A/D.Cuando se desea configurar unaentrada como analgica, debe confi-gurarse como entrada los bits corres-pondientes del registro TRISA. Si

    MICROCON

    TROLADORES

    60RESISTOR

    Figura 4.- Ciclos TAD del convertidor A/D

    Figura 5.- Justificacin de los resultados de la conversin A/D

    56-63 MICROCONTROLADORES 28/10/04 14:20 Pgina 60

  • 8/14/2019 Curso PIC16F87X 8

    6/8

    los bits del TRISA correspondientesse ponen a cero (salida), el valor digi-tal de la salida (VOH o VOL) se conver-tir.

    El funcionamiento del convertidorA/D es independiente de los bitsCHS2:CHS0 y del valor delTRISA:

    Notas:1. Al leer el registro del puerto, cual-

    quier pin configurado como uncanal analgico se lee como uncero (nivel bajo). Los pines confi-gurados como entradas digitalesconvertirn la entrada analgica.Los niveles analgicos de unaentrada digital no afectarn laexactitud de la conversin.

    2. Los niveles analgicos en cual-quier pin de entrada digital(AN7:AN0 ) pueden causar que elbuffer de entrada consuma unacorriente superior a la de las espe-cificaciones del dispositivo.

    Conversiones A/DSi se pone a cero el bit

    GO/#DONE durante la conversin,se aborta la conversin actual.

    El par de registros no se modifi-carn parcialmente con los bit que sehayan completado hasta elmomento. Es decir, los registrosADRESH: ADRESL seguirn con-teniendo el valor de la ltimaconversin completa (o el ltimovalor que se haya escrito en

    ADRESH:ADRESL) despus deabortar la conversin A/D, esrequerido el TAD de espera pararealizar la prxima adquisicincomience. Despus de 2 TAD deespera, la adquisicin en cauce secomienza automticamente.

    En la figura 4 se aprecia comodespus de poner el bit GO a uno, laprimera vez el segmento tiene un TCYmnimo y un TAD mximo.

    Nota:El bit GO/#DONE no debe

    ponerse a uno en la mismainstruccin que se pone en ON elconvertidor A/D.

    Registro de resultados de laconversin A/D

    En el par de registrosADRESH:ADRESL se carga con elresultado de 10 bits de la conversinA/D. Este par de registros se extien-den hasta 16 bits. El mdulo A/D tie-ne la posibilidad de justificar el resul-

    tado de 10 bits de la conversin, den-tro de los 16 bits de la pareja deregistros. La seleccin del formatode justificacin a la izquierda o dere-cha se realiza con el bit ADFM(ADCON1 ) . Los bits restantes (a los 10 de la conversin) se llenancon ceros. Estos dos registros cuandoel convertidor A/D est en OFF y nose utiliza, pueden utilizarse como dosregistros de 8 bits de propsitogeneral.

    Funcionamiento delConvertidor A/D en el modoSleep

    El mdulo del convertidor A/Dpuede trabajar durante el modo Sleep.Para ello se debe poner como fuentede reloj el modo RC(ADCS1:ADCS0 = 11). Cuando lafuente de reloj es el oscilador RCinterno, el mdulo A/D espera unciclo de mquina antes de empezar la

    conversin. Esto permite eliminar elruido de la conversin digital, cuandola conversin finaliza el bitGO/#DONE se pone a cero y elresultado se carga en, la pareja deregistros ADRESH:ADRESL. Si lainterrupcin por final de conversinA/D est habilitada, el dispositivo sedespierta. Si la interrupcin no esthabilitada, el mdulo A/D se apagaraunque el bit ADON (ADCON0) permanezca a uno. Cuando elreloj del convertidor A/D es otrafuente distinta del oscilador RC inter-no, la instruccin sleep aborta la con-

    versin actual y el mdulo A/D seapaga, aunque el bit ADON perma-nezca a uno. Desconectando el mdu-lo del convertidor A/D el consumo esms bajo.

    Efectos del ResetCuando se fuerza un Reset se

    reestablecen todos los registros, estoobliga a apagar el convertidor A/D yse aborta cualquier conversinen curso. El valor de los

    Registros asociados al Convertidor A/D

    Direccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en POR,BOR Valor en el resto

    de Reset

    0Bh,8Bh INTCON GIE PEIE TOIE INTE RBIE TOIF INTF RBIF 0000 000x 0000 000u

    10Bh,18Bh

    0Ch PIR1 PSPIF1 ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

    8Ch PIE1 PSPIE1 ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

    1E h ADDRESH Parte alta de la conversin A/D xxxx xxxx uuuu uuuu

    9E h ADDRESL Parte baja de la conversin A/D xxxx xxxx uuuu uuuu

    1Fh ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/#DONE ADON 0000 00-0 0000 00-0

    9Fh ADCON1 ADFM --- --- --- PCFG3 PCFG2 PCFG1 PCFG0 --0- 0000 --0- 0000

    85h TRISA --- --- Registro de direccionamiento de datos de PORTA --11 1111 --11 1111

    05h PORTA --- --- Latch de datos para escritura del PORTA --0x 0000 --0u 0000

    89h (1) TRISE IBF OBF IBOV PSPMODE --- Bit de direccionamiento 0000 -111 0000 -111

    del PORTE

    09h (1) PORTE --- --- --- --- --- RE2 RE1 RE0 ---- -xxx ---- uuuu

    MICROCON

    TROLADORES

    61RESISTOR

    56-63 MICROCONTROLADORES 28/10/04 14:20 Pgina 61

  • 8/14/2019 Curso PIC16F87X 8

    7/8

    Figura 6.- Circuito para comprobar el funcionamiento del programa AD1_LEDS.asm

    Symb. Caractersticas Mnimo Tpica Mximo Unid. Condiciones

    NR Resolucin -- -- 10-bits Bit VREF=VDD = 5.12V

    VssVAIN VREFEIL Error absoluto -- --

  • 8/14/2019 Curso PIC16F87X 8

    8/8

    ;***********************************************************************************; Programa AD1_LEDS.asm Fecha : 6- Octubre-2003;Este programa realiza la conversin de la tensin presente en el canal RA3/AN3. Esta;se puede variar con el potencimetro conecatodo a AN3 . Lo 8 bits menos significativos;de la conversin se visualiza sobre los 8 LEDS conectados al PORTB; Revisin 0.0 Programa para PIC16F87X; Velocidad del Reloj: 4 MHz Reloj Instruccin: 1 MHz = 1 uS; Perro Guardin :habilitado Tipo de Reloj : XT; Proteccin del cdigo : OFF;***********************************************************************************

    List p=16F876 ;Tipo de procesadorinclude "P16F876.INC" ;Definiciones de registros internos

    ; org 0x00 ;Vector de Reset; goto Inicio

    org 0x05 ;Salva el vector de interrupcin

    ;Visualiza: Esta rutina coge los 8 bits menos significativos resultantes de la conversin;y los visualiza sobre el los LEDS conectados al PORTB

    Visualiza: bsf STATUS,RP0 ;Selecciona pgina 1movf ADRESL,wbcf STATUS,RP0 ;Selecciona pgina 0movwf PORTBreturn

    ;***********************************************************************************; Programa principal;***********************************************************************************INICIO clrf PORTB

    bsf STATUS,RP0 ;Selecciona banco 1clrf TRISB ;Puerta B se configura como salidamovlw b'00001000' ;Configura RA3 com entradamovwf TRISAbcf STATUS,RP0 ;Selecciona banco 0

    ;Se activa el ADC y se selecciona el canal RA3/AN3. Frecuencia de trabajo Fosc/32movlw b'10011001'movwf ADCON0 ;ADC en On, seleciona canal AN3

    BUCLE bsf STATUS,RP0 ;Selecciona pgina 1movlw b'10000000'movwf ADCON1 ;PORTA entradas analgicas y justificacin a la izquierdabcf STATUS,RP0 ;Selecciona pgina 0bcf PIR1,ADIF ;Restaura el flag del conversor AD

    nopbsf ADCON0,GO ;Inicia la conversin

    ADC_Wait btfss PIR1,ADIF ;Fin de conversin ??goto ADC_Wait ;Todava nocall Visualiza ;Visualiza el resultado de la conversingoto BUCLE

    ;***********************************************************************************ORG 0x1F00bcf PCLATH,4bcf PCLATH,3 ;Selecciona la pgina 0goto INICIO

    ;***********************************************************************************end ;Fin del programa fuente

    MIC

    ROCON

    TROLADORES

    63RESISTOR

    registros ADRESH:ADRESL no esmodificado por un Power-on Reset.

    EJEMPLO DE MANEJO DELCONVERTIDOR A/D

    El programa AD1_LEDS.asm,presenta en el PORTB lo 8 bitsmenos significativos del resultado dela conversin A/D de la entrada AN3

    que en el esquema del circuito deaplicacin que hemos utilizado y quese muestra en la figura 6, est conec-tada a una resistencia variable queacta como divisor de tensin. Comoviene siendo habitual en el programase ha marcado en color azul las lneasde cdigo que hemos eliminado parautilizar el programa bootloader para

    poder realizar la carga del mismo yen color verde, las lneas que hemosaadido, de tal manera que eliminadolas lneas de color verde y habilitandolas que estn en azul el programapueda grabarse directamente en unPIC16F876 utilizando un programa-dor universal, un T-20 o cualquierotro.

    56-63 MICROCONTROLADORES 28/10/04 14:20 Pgina 63