CIRCUITOS AUXILIARES PIC

download CIRCUITOS AUXILIARES PIC

of 26

Transcript of CIRCUITOS AUXILIARES PIC

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    1/26

    7-1www.microcontroladores.com Microcontroladores PIC: Nivel I

    UNIDAD 7: CIRCUITOS AUXILIARES

    OBJETIVOS

    Todos los controladores tienen puertas de E/S con los que gobernar infinidad de perifricos digitalescomo ya has hecho en las unidades anteriores. Adems, los controladores actuales, disponen de una serie

    de circuitos y dispositivos auxiliares o accesorios que permiten establecer mltiples formas defuncionamiento y adaptarse al mayor nmero de aplicaciones posibles.

    En la unidad 2 se habl superficialmente sobre alguno de ellos. Ahora es el momento de estudiarloscon ms profundidad. Se trata de una unidad con una gran componente terica. Tmatelo con paciencia. Noes necesario que te aprendas de memoria todos los circuitos auxiliares que vas a ver, sino que sepas queexisten, para qu sirven y que acudas a la informacin oportuna cuando los necesites.

    REA DE TEORA

    T-7.1 INTRODUCCIN

    T-7.2 LAS PALABRAS DE CONFIGURACINT-7.2.1 Palabra CONFIG1T-7.2.2 Palabra CONFIG2T-7.2.3 Ahora t

    T-7.3 EL MDULO OSCILADORT-7.3.1 Control del osciladorT-7.3.2 Modos del oscilador externo

    T-7.3.2.1 El temporizador de arranque OSTT-7.3.2.2 El modo ECT-7.3.2.3 Los modos LP, XT y HS

    T-7.3.2.4 Los modos RC y RCIO

    T-7.3.3 Modos del oscilador internoT-7.3.3.1 Los modos INTOSC e INTOSCIOT-7.3.3.2 El oscilador HFINTOSCT-7.3.3.3 El oscilador LFINTOSC

    T-7.3.4 Conmutacin del relojT-7.3.5 Arranque con dos velocidadesT-7.3.6 Monitorizacin de la seal de relojT-7.3.7 Ciclo mquina/Ciclo de instruccinT-7.3.8 Ahora t

    T-7.4 EL SUPERVISOR WATCHDOGT-7.4.1 Ahora t

    T-7.5 EL MODO SLEEP DE BAJO CONSUMOT-7.5.1 Final del modo sleep

    T-7.6 EL RESETT-7.6.1 Power On Reset (POR)T-7.6.2 Patilla MCLRT-7.6.3 Temporizador Power-Up Timer (PWRT)T-7.6.4 Temporizador Oscillator Start-Up (OST)

    T-7.6.5 Circuito Brown-Out Reset (BOR)T-7.6.6 El registro de control de potencia PCON

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    2/26

    7-2www.microcontroladores.com Microcontroladores PIC: Nivel I

    REA DE PRCTICAS

    P-7.1 AJUSTE DE LAS PALABRAS DE CONFIGURACINP-7.2 EJEMPLO 7-1: El oscilador interno

    P-7.2.1 Descripcin / Edicin del programa fuenteP-7.2.2 Montaje elctricoP-7.2.3 Grabacin del dispositivo y comprobaciones finalesP-7.2.4 Ahora t

    P-7-3 EJEMPLO 7-2: El supervisor Watchdog (WDT)P-7.3.1 Descripcin / Edicin del programa fuenteP-7.3.2 Montaje elctricoP-7.3.3 Grabacin del dispositivo y comprobaciones finalesP-7.3.4 Ahora t

    MATERIAL COMPLEMENTARIO

    PIC16F88X Data Sheet

    Presentaciones en Power Point Gua rpida de referencia

    Ejemplos y libreras de la Unidad 7

    Vdeo Unidad 7

    Soluciones Unidad 6

    Cuestionario

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    3/26

    7-3www.microcontroladores.com Microcontroladores PIC: Nivel I

    AREA DE TEORA

    T- 7.1 INTRODUCCIN

    Todos los dispositivos PIC integran una serie de circuitos auxiliares o accesorios que mejoran elrendimiento del sistema, eliminan componentes externos, minimizan el coste final del proyecto, ofrecen

    proteccin del cdigo grabado, reducen consumos, etc.

    En esta unidad vamos a analizar los circuitos propios de la familia PIC16F88X en general, y delPIC16F886 en particular. Muchos de estos accesorios son similares, incluso idnticos, en otros dispositivosde la gama media PIC16FXXX y muy parecidos a los de la gama alta PIC18FXXXX y superiores. Se puedenresumir en los siguientes:

    Palabras de configuracin Circuito oscilador Supervisor o watchdog Circuitos de Reset

    T-7.2 PALABRAS DE CONFIGURACIN

    Sus bits se emplean para determinar diferentes formas de trabajo y de configuracin del dispositivoPIC, como puede ser el tipo de oscilador, proteccin o no del cdigo, activacin/desactivacin del WDT,etc Todo ello se realiza mediante dos palabras de 14 bits cada una, que se almacenan en ciertasposiciones de la memoria flash de programa, concretamente en las posiciones 0x2007 y 0x2008.

    Estas posiciones corresponden a una regin de memoria flash un tanto especial llamada memoriade configuracin. El rango previsto (aunque no usado ni implementado en su totalidad) para esta memoria,va desde la direccin 0x2000 hasta la 0x3FFF, y slo se puede acceder a ella durante el proceso degrabacin del dispositivo. No debes confundirla por tanto con la memoria flash donde hasta ahora grababas

    tus programas.

    En esta regin especial o memoria de configuracin se almacenan, segn el modelo de PIC, lospropios bits de configuracin, las palabras o valores de identificacin ID, y cualquier otro tipo de parmetrosde configuracin del sistema presentes o futuros.

    T-7.2.1 Palabra de configuracin CONFIG1

    Cuando el PIC est borrado todos sus bits se ponen a 1. Es el valor por defecto.

    ---- ---- /DEBUG LVP FCMEN IESO BOREN1 BOREN0

    Bit 15 Bit 8

    /CPD /CP MCLR /PWRTE WDTE FOSC2 FOSC1 FOSC0Bit 7 Bit 0

    Bits 15-14 No implementados, se leen como 1Bit 13 /DEBUG: Modo de depuracin en circuito (ICD)

    1 = Depurador desconectado. Las lneas RB6/ICSPCLK y RB7/ICSPDAT actancomo lneas de E/S

    0 = Depurador conectado. Las lneas RB6/ICSPCLK y RB7/ICSPDAT se destinanal depurador

    Bit 12 LVP: Grabacin con bajo voltaje1 = RB3/PGM acta como PGM, habilitacin de grabacin en bajo voltaje0 = RB3 acta como E/S digital.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    4/26

    7-4www.microcontroladores.com Microcontroladores PIC: Nivel I

    Bit 11 FCMEN: a monitorizacin del reloj1 = Monitorizacin activada0 = Monitorizacin desactivada

    Bit 10 IESO: Bit para la conmutacin del reloj1 = La conmutacin de reloj interno/externo habilitada0 = La conmutacin de reloj interno/externo deshabilitada

    Bit 9-8 BOREN: Seleccin del Brown-out Reset (Reset por fallo dealimentacin)11 = El sistema Brown-out Reset (BOR) activado10 = BOR activado durante la ejecucin y desactivado en el modo standby de

    bajo consumo (SLEEP)01 = El BOR se controla por software, mediante el bit SBOREN del registro

    PCON00 = El sistema BOR se desactiva

    Bit 7 /CPD: Proteccin de la memoria EEPROM de datos1 = Proteccin deshabilitada0 = Proteccin habilitada

    Bit 6 /CP: Proteccin de la memoria FLASH de programa

    1 = Proteccin deshabilitada0 = Proteccin habilitada

    Bit 5 MCLR: Configuracin de la patilla RE3/MCLR1 = RE3/MCLR acta como MCLR (Reset)0 = RE3/MCLR acta como entrada digital RE3. MCLR se conecta internamente

    a VddBit 4 /PWRTE: Activacin del temporizador Power-Up (PWRT) al conectar la

    alimentacin1 = PWRT desactivado0 = PWRT activado

    Bit 3 WDT: Activacin del supervisor o watchdog WDT

    1 = WDT activado0 = WDT desactivado. Puede activarse por software mediante el bit SWDTEN del

    registro WDTCONBit 2-0 FOSC: Seleccin del tipo de oscilador

    111 = Oscilador RC. Salida CLKOUT por RA6 y red RC conectada a la entrada RA7110 = Oscilador RCIO. RA6 E/S digital, RA7 entrada desde la red RC101 = Oscilador interno INTOSC. RA6 salida CLKOUT y RA7 E/S digital100 = Oscilador interno INTOSCIO. Las lneas RA6 y RA7 actan como E/S digitales011 = Oscilador externo EC. RA7 es E/S digital y RA7 entrada CLKIN del reloj externo010 = Oscilador HS de alta velocidad. Entre RA6 y RA6 se conecta un cristal o un resonador001 = Oscilador XT estndar. Entre RA6 y RA6 se conecta un cristal o un resonador

    000 = Oscilador LP de bajo consumo. Entre RA6 y RA6 se conecta un cristal.

    T-7.2.2 Palabra de configuracin CONFIG2

    Cuando el PIC est borrado todos sus bits se ponen a 1. Es el valor por defecto.

    ---- ---- ---- ---- ---- WRT1 WRT0 BOR4VBit 15 Bit 8

    ---- ---- ---- ---- ---- ---- ---- ----Bit 7 Bit 0

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    5/26

    7-5www.microcontroladores.com Microcontroladores PIC: Nivel I

    Bits 15-11 No implementados, se leen como 1Bit 10-9 WRT: Proteccin de escritura sobre la memoria Flash de programa

    Modelos PIC16F883/PIC16F88400 = Protegido desde 0x0000-0x07FF, desde 0x0800-0x0FFF puede modificarse

    mediante EECON01 = Protegido desde 0x0000-0x03FF, desde 0x0400-0x0FFF puede modificarse

    mediante EECON10 = Protegido desde 0x0000-0x00FF, desde 0x0100-0x0FFF puede modificarse

    mediante EECON11 = Se permite la escritura en la totalidad de la memoria flash de programa.Modelos PIC16F886/PIC16F88700 = Protegido desde 0x0000-0x0FFF, desde 0x1000-0x1FFF puede modificarse

    mediante EECON01 = Protegido desde 0x0000-0x07FF, desde 0x0800-0x1FFF puede modificarse

    mediante EECON10 = Protegido desde 0x0000-0x00FF, desde 0x0100-0x1FFF puede modificarse

    mediante EECON11 = Se permite la escritura en la totalidad de la memoria flash de programa.

    Modelo PIC16F88200 = Protegido desde 0x0000-0x03FF, desde 0x0400-0x07FF puede modificarse

    mediante EECON01 = Protegido desde 0x0000-0x00FF, desde 0x0100-0x07FF puede modificarse

    mediante EECON11 = Se permite la escritura en la totalidad de la memoria flash de programa.

    Bit 8 BOR4V: Valor del Brown-out Reset que provoca el RESET si la tensin caepor debajo de0 = Valor del BOR ajustado a 2.1V1 = Valor del BOR ajustado a 4.0V

    Bit 7-0 No implementados. Se leen como 1

    T-7.2.3 Ahora t

    Un sencillo ejercicio. Se trata de que codifiques los bits de ambas palabras de configuracin paraque el controlador trabaje en las siguientes condiciones:

    Reset por fallo de alimentacin (BOR) cuando el controlador est ejecutando instrucciones y latensin caiga por debajo de los 2 V.

    Proteccin contra lectura tanto de la memoria FLASH de programa como de la EEPROM de datos.

    Tanto el PWRT como el el supervisor Watchdog deben estar activados.

    Oscilador del tipo XT mediante cristal de cuarzo externo de 4 MHz. Proteccin contra escritura del rea de memoria FLASH de programa que va desde 0x0000 a

    0x00FF El resto de opciones quedan configuradas por defecto.

    CONFIG1

    ---- ---- /DEBUG LVP FCMEN IESO BOREN1 BOREN0

    /CPD /CP MCLR /PWRTE WDTE FOSC2 FOSC1 FOSC0

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    6/26

    7-6www.microcontroladores.com Microcontroladores PIC: Nivel I

    CONFIG2

    ---- ---- ---- ---- ---- WRT1 WRT0 BOR4V

    ---- ---- ---- ---- ---- ---- ---- ----

    T-7.3 EL MDULO OSCILADOR

    En las unidades anteriores has tenido la oportunidad de hacer diferentes programas en los queusabas las puertas de E/S para el control de diferentes perifricos digitales. Esos programas, compuestosde varias instrucciones, se ejecutaban y funcionaban de acuerdo a las especificaciones.

    Sin embargo, hasta ahora no hemos tenido en cuenta al sistema encargado de generar las bases detiempo con las que se sincronizan todas las operaciones que realiza el microcontrolador y marcan el ritmocon el que se ejecutan las instrucciones. Este sistema se conoce como El mdulo Oscilador. Es

    fundamental en cualquiermicrocontrolador y lo vas aestudiar en este apartado.

    El mdulo osciladordispone de varias fuentes dereloj con diferentescaractersticas, que permiteadaptarse a un amplio rangode aplicaciones, maximizandola eficiencia, eliminando

    componentes externos yminimizando el consumo.Observa el esquema porbloques de la figura.

    El reloj general del sistema se puede obtener a partir de diferentes fuentes: osciladores externos,resonadores de cristal de cuarzo, cermicos o circuitos RC. Tambin se puede obtener a partir de dososciladores internos integrados en el propio controlador y con diferentes velocidades que se puedenseleccionar por programa. El oscilador interno HFINTOSC es un oscilador calibrado para alta frecuencia, elLFINTOSC es un oscilador interno de baja frecuencia y sin calibrar.

    Algunas de las caractersticas generales del mdulo oscilador son:

    Fuente de reloj interna o externa que se puede seleccionar por software. Modo de arranque con dos velocidades para minimizar la latencia o tiempo de espera desde

    que el oscilador externo se pone en marcha, hasta que se empiezan a ejecutar instrucciones. Sistema de monitorizacin de la fuente de reloj para detectar fallos en el oscilador externo y

    poder conmutar automticamente con el oscilador interno en caso de error.

    El mdulo oscilador se puede configurar en 8 modos distintos de trabajo. Se seleccionan mediantelos bits FOSC de la palabra de configuracin CONFIG1 que ya has visto en el apartado anterior:

    1. EC: Oscilador externo. La patilla RA6/OSC2/CLKOUT acta como E/S.

    2. LP: Oscilador externo por cristal de cuarzo de bajo consumo a 32 KHz.3. XT: Oscilador externo por cristal de cuarzo o resonador cermico con una ganancia yconsumo medio.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    7/26

    7-7www.microcontroladores.com Microcontroladores PIC: Nivel I

    4. HS: Oscilador externo por cristal de cuarzo o resonador cermico de alta ganancia y elevadoconsumo.

    5. RC: Oscilador mediante red RC externa conectada a la patilla RA7/OSC1/CLKIN. Por lapatilla RA6/OSC2/CLKOUT se obtiene la frecuencia de trabajo del sistema (Fosc/4).

    6. RCIO: Oscilador mediante red RC externa. La patilla RA6/OSC2/CLKOUT acta como E/S.7. INTOSC: Oscilador interno. La patilla RA7/OSC1/CLKIN acta como E/S y por

    RA6/OSC2/CLKOUT se obtiene la frecuencia de trabajo del sistema (Fosc/4).8. INTOSCIO: Oscilador interno. Las patillas RA7/OSC1/CLKIN y RA6/OSC2/CLKOUT actan

    como E/S.

    T-7.3.1 Control del oscilador

    En el rea RAM de datos dispones de un registro especial (SFR), el OSCCON, que te permiteseleccionar de entre los diferentes modos del oscilador interno para ajustar la frecuencia general de trabajodel sistema. Tambin permite conocer el estado o calidad de las frecuencias generadas por dichooscilador.

    NOMBRE: OSCCON (Control y estado del mdulooscilador)

    DIR.: 0x8F BANCO: 1

    U-0 R/W-1 R/W-1 R/W-0 R-1 R-0 R-0 R/W-0---- IRCF2 IRFC1 IRFC0 OSTS HTS LTS SCS

    Bit 7 No implementado, se lee como 0Bit 6-4 IRFC: Seleccin de frecuencia de trabajo del oscilador interno

    111 = 8 MHz110 = 4 MHz (por defecto)101 = 2 MHz100 = 1 MHz011 = 500 KHz010 = 250 KHz001 = 125 KHz000 = 31 KHz (LFINTOSC)

    Bit 3 OSTS: Estado del sistema de arranque (Start-up Time)1 = El dispositivo est ejecutando instrucciones en base al oscilador definido

    por FOSC de la palabra de configuracin CONFING10 = El dispositivo est ejecutando en base al oscilador interno (el HFINTOSC o el

    LFINTOSC)Bit 2 HTS: Bit de estado del oscilador interno HFINTOSC (frecuencias desde 125 KHz

    hasta 8 MHz)1 = El oscilador interno HFINTOSC est estable0 = El oscilador interno HFINTOSC no est estabilizado

    Bit 1 LTS: Bit de estado del oscilador interno LFINTOSC (frecuencia 31 KHz)1 = El oscilador interno LFINTOSC est estable0 = El oscilador interno LFINTOSC no est estable

    Bit 0 SCS: Seleccin del sistema de reloj1 = El sistema de reloj emplea el oscilador interno0 = El sistema de reloj emplea el oscilador definido por los bits FOSC de la palabra

    de configuracin CONFIG1

    T-7.3.2 Modos de oscilador externo

    Para generar la seal general de reloj del sistema, estos modos de oscilador necesitan de

    componentes externos como generadores de reloj, cristales de cuarzo o resonadores cermicos para losmodos LP, XT o HS, o bien una red resistencia/condensador para el modo RC.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    8/26

    7-8www.microcontroladores.com Microcontroladores PIC: Nivel I

    T-7.3.2.1 El temporizador de arranque OST

    Cuando seleccionas un oscilador externo del tipo LP, XT o HS, se activa un pequeo temporizadorinterno llamado temporizador de arranque OST(Oscillator Start-up Timer) que cuenta hasta 1.024 pulsos enla patilla RA7/OSC1. Esto ocurre siempre que se produce una conexin de alimentacin o POR(Power OnReset), y el temporizador PWRT finaliza su temporizacin (ya hablaremos de l). Tambin cuando seproduce la reanudacin de la ejecucin (wake-up) tras un periodo de standby de bajo consumo realizadomediante la instruccin SLEEP.

    Durante el tiempo que implica la cuenta de esos 1.024 pulsos, queda suspendida toda ejecucin deinstrucciones. Esto garantiza que el programa comienza a ejecutarse slo cuando el oscilador externo, consu cuarzo o resonador, queda debidamente estabilizado tras conectar la alimentacin.

    Este tiempo de latencia o espera antes de comenzar la ejecucin, puede resultar un inconvenienteen aquellas aplicaciones que precisen de un arranque instantneo. Para solucionar estos casos, losdispositivos PIC16F88X (entre otros) tienen la posibilidad de hacer un arranque en dos tiempos ovelocidades. Es lo que se conoce como el modo Two-Speed Clock Start-up que vers ms adelante.Podemos decir que consiste en que justo tras la conexin de alimentacin, la ejecucin comienza tomando

    como base de tiempos al oscilador interno. Cuando el temporizador de arranque OST contabilice sus 1.024pulsos, automticamente se conmuta al modo de reloj externo.

    T-7.3.2.2 El modo EC de oscilador externo

    Tal y como se muestra en el esquema de lafigura, en el modo EC se emplea ungenerador externo que proporciona lafrecuencia general de reloj del sistema. stase aplica al controlador a travs de la patillaRA7/OSC1/CLKIN. En esta ocasin la patilla

    RA6/OSC2/CLKOUT actuar como una lneade E/S convencional.

    Al seleccionar este modo de oscilador, el temporizador de arranque OST del que hablbamosanteriormente, queda desconectado. Por ese motivo no se intercala ninguna temporizacin entre laconexin de alimentacin o reanudacin, y laejecucin de las instrucciones, salvo que sehaya activado el temporizador PWRT.

    Este modo de oscilador es precisamenteel que ests empleando en los diferentes

    ejemplos que has realizado hasta ahora con ellaboratorio USB-PICSchool, y cuyo esquema semuestra en la siguiente figura.

    El dispositivo X2 (la cpsula plateda) es un oscilador integrado a cristal de cuarzo. Por su salidaOUT proporciona una seal de onda cuadrada cuya frecuencia depende del modelo. De serie es de 4 MHz,pero fcilmente lo puedes cambiar por otro de distinta frecuencia. Cuando el jumper JP8 se coloca entre 1 y2 (por defecto) esa seal se aplica a la patilla RA7/OSC1/CLKIN del controlador PIC.

    Quiz tambin habrs observado que en los programas fuente de ejemplo usados hasta el momentose incluye la directiva:

    __config_CONFIG1,LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF&_BOR_OFF

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    9/26

    7-9www.microcontroladores.com Microcontroladores PIC: Nivel I

    Precisamente, el campo _EC_OSC, es el que selecciona en la palabra de configuracin CONFIG1el modo de oscilador EC, entre otras cosas.

    T-7.3.2.3 Los modos LP, XT y HS

    Estos modos precisan de un cristal de cuarzo o un resonadorcermico conectado entre las patillas RA7/OSC1/CLKIN yRA6/OSC2/CLKOUT, tal y como se muestra en el esquema de lafigura. A cada uno de ellos le corresponde una ganancia baja,media o alta que se ajusta en el amplificador inversor interno.Soporta as diferentes tipos comerciales de resonadores yvelocidades.

    Modo LP: Este modo selecciona la mnima ganancia en el amplificador inversor interno, con lo que elconsumo es el ms bajo de los tres modos. Est diseado para trabajar con una frecuencia de unos 32 Khz.

    Modo XP: Selecciona una ganancia intermedia a la que le corresponde un consumo medio. Ideal para

    trabajar con frecuencias de hasta 8 MHz.

    Modo HS:Emplea la mxima ganancia por lo que es el modo de oscilador que ms consumo produce. Es elmodo ideal para trabajar con frecuencias desde los 8 MHz hasta los 20 MHz.

    T-7.3.2.4 Los modos RC y RCIO

    Estos modos necesitan de la conexin de una red RC(resistencia/condensador) externa como se muestra en elesquema de la figura. Debido a las tolerancias de esoscomponentes, ambos modos son menos precisos que

    cualquiera de los anteriores modos LP, XT o HS, sin embargoson ms econmicos. Adems, la frecuencia de trabajo sepuede modificar fcilmente variando el valor de amboscomponentes.

    Modo RC: La red RC se conecta en la patilla RA7/OSC1/CLKIN. Por la patilla RA6/OSC2/CLKOUT seobtiene la frecuencia de trabajo del sistema (Fosc/4).

    Modo RCIO:La red RC tambin se conecta en la patilla RA7/OSC1/CLKIN. La patilla RA6/OSC2/CLKOUTse comporta ahora como una lnea de E/S de propsito general.

    Los valores recomendados para REXT oscilan entre los 10 K y los 100 K y una alimentacininferior a los 3 V. Con una alimentacin de 3 a 5 V los valores recomendados para REXToscilan entre los 3K y los 100 K. El valor de CEXTdebe ser mayor de 20 pF para cualquier alimentacin de entre 2 y 5 V.

    T-7.3.3 Modos de oscilador interno

    El mdulo oscilador que integran los dispositivos PIC16F88X dispone de dos osciladores internosindependientes que se pueden usar como fuente de reloj del sistema:

    1. El oscilador HFINTOSC es de 8 MHz y viene calibrado de fbrica. Esta calibracin puedeser ligeramente modificada por el usuario mediante el registro OSCTUNE.

    2. El oscilador LFINTOSC no est calibrado y su frecuencia es de 31 KHz.

    Su empleo implica que puedes evitar conectar componentes externos como cristales, resonadores oredes RC, con el ahorro que esto supone.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    10/26

    7-10www.microcontroladores.com Microcontroladores PIC: Nivel I

    Con los bits IRCF del registro OSCCON que ya viste anteriormente, se controla un postcalercon el que puedes seleccionar diferentes frecuencias de trabajo que van desde los 31 KHz hasta los 8 MHz,a partir de estos osciladores internos.

    De igual manera, mediante el bit SCS (System Clock Selection) del mismo registro OSCCON,puedes seleccionar entre las dos fuentes de reloj: la externa o la interna.

    T-7.3.3.1 Los modos INTOSC e INTOSCIO

    Cualquiera de estos modos se selecciona mediante los bits FOSC de la palabra deconfiguracin CONFIG1.

    Modo INTOSC: La patilla RA7/OSC1/CLKIN se comporta como una lnea de E/S de propsito general. Sinembargo, por la patilla RA6/OSC2/CLKOUT se obtiene una seal con la frecuencia general de trabajo(Fosc/4). Se puede usar como seal de reloj para circuitos externos, sincronizacin, calibracin, test u otrasnecesidades de la aplicacin.

    Modo INTOSCIO:Tanto la patilla RA7/OSC1/CLKIN como RA6/OSC2/CLKOUT se comportan como lneas

    de E/S de propsito general.

    T-7.3.3.2 El oscilador HFINTOSC

    La frecuencia de salida de este oscilador interno est calibrada de fbrica a 8 MHz pero puedemodificarse por software mediante el registro OSCTUNE.

    Su seal de salida se conecta con un postcaler y un multiplexor (mira el esquema general porbloques), que permiten elegir entre 7 frecuencias de salida diferentes que van desde los 125 KHz hasta los8 MHz. Se seleccionan mediante los bits IRCF del registro OSCCON. El bit SCS de ese mismoregistro permite seleccionar entre oscilador interno o externo como fuente de reloj del sistema. Tambin, en

    el mismo registro OSCCON, tenemos el bit HTS que permite conocer si la frecuencia que generaHFINTOSC es estable o no.

    Mediante el registro OSCTUNE se puede modificar ligeramente el valor de la frecuencia que generael oscilador HFINTOSC. Para ello se introduce un valor de 5 bits en complemento a 2s. Por defecto estevalor es 0 y coincide con la calibracin de fbrica a 8 MHz.

    NOMBRE: OSCTUNE (Calibracin del oscilador internoHFINTOSC)

    DIR.: 0x90 BANCO: 1

    U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0---- ---- ---- TUN4 TUN3 TUN2 TUN1 TUN0

    Bits 7-5 No implementados, se leen como 0Bit 4-0 TUN: Bits de sintona de frecuencia

    01111 = Mxima frecuencia01110 =--------00001 =00000 = Valor de calibracin de fbrica a 8 MHz11111 =----

    ----10000 = Mnima frecuencia

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    11/26

    7-11www.microcontroladores.com Microcontroladores PIC: Nivel I

    T-7.3.3.3 El oscilador LFINTOSC

    Se trata de otro oscilador de 31 KHz pero sin calibrar. Su salida se conecta con un postcaler (mira elesquema general por bloques) y se selecciona mediante los bits IRCF del registro OSCCON.

    Adems de generar la frecuencia de trabajo del sistema, el oscilador LFINTOSC tambin alimenta altemporizador de conexin de alimentacin PWRT (Power-up Timer), al supervisor WDT (watchdog) y alcircuito de monitorizacin de reloj FSCM (Fail-Safe Clock Monitor).

    Este oscilador tambin se activa cuando se activan los siguientes componentes:

    El sistema de conmutacin de reloj interno/externo mediante el bit IESO de la palabra deconfiguracin CONFIG1.

    El temporizador de conexin de alimentacin (PWRT) mediante el bit /PWRTE de la palabrade configuracin CONFIG1.

    El supervisor watchdog (WDT) mediante el bit WDTE de la palabra de configuracinCONFIG1.

    El circuito de monitorizacin de reloj FSCM mediante el bit FCMEN de la palabra deconfiguracin CONFIG1.

    El bit LTS del registro OSCCON indica si la frecuencia de salida del LFINTOSC es estable o no.

    T-7.3.4 Conmutacin del reloj

    Una de las caractersticas del mdulo oscilador de los dispositivos PIC16F88X es que te permiteseleccionar dinmicamente, por programa, entre el reloj interno y el externo como fuente de reloj delsistema. Para ello debes emplear el bit SCS (System Clock Select) del registro OSCCON:

    Cuando este bit se pone a 0 la fuente de reloj del sistema es la externa, la que estdeterminada por los bits FOSC de la palabra CONFIG1 de configuracin. ste es el

    valor por defecto del bit siempre que se produce un RESET del controlador. Cuando el bit SCS se pone a 1 la fuente de reloj es la interna. La frecuencia de trabajo la

    seleccionas ahora mediante los bits IRCF del registro OSCCON.

    El bit OSTS del registro OSCCON informa en todo momento si se est trabajando con el osciladorexterno (a 1) o el interno (a 0) como fuente de reloj del sistema.

    T-7.3.5 Arranque con dos velocidades

    Si seleccionas el oscilador externo LP, XT o HS como fuente de reloj del sistema, se activa untemporizador interno, el OST (Oscillator Start-up Timer), que temporiza o retrasa el arranque hasta contar1.024 pulsos de ese oscilador externo.

    Este retraso se produce cada vez que haya una secuencia de conexin de alimentacin POR(Power On Reset), o bien el controlador reanuda la ejecucin tras encontrarse en el modo SLEEP de bajoconsumo. Con ello se garantiza que, cuando se inicia o reanuda la ejecucin de instrucciones, sta serealice con un reloj debidamente estabilizado.

    Sin embargo puede haber aplicaciones en las que este retraso sea un inconveniente. Imaginaaplicaciones en las que la ejecucin del programa debe comenzar nada ms conectar la alimentacin. Enestos casos es cuando el arranque en dos tiempos o a dos velocidades puede resultarte muy til. Paraactivar esta prestacin del mdulo oscilador de los dispositivos PIC16F88X, debes seguir los siguientespasos:

    1. El bit IESO de la palabra CONFIG1 de configuracin debe ponerse a nivel 1.2. El bit SCS del registro OSCCON debe estar a nivel 0 (oscilador externo).

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    12/26

    7-12www.microcontroladores.com Microcontroladores PIC: Nivel I

    3. Con los bits FOSC de la palabra CONFIG1 de configuracin se debe seleccionar uno deestos tres modos de oscilador externo: LP, XT o HS.

    La secuencia de arranque con dos velocidades es la siguiente:

    1. Se produce un RESET o bien se reanuda la ejecucin tras un estado de standby producidopor la instruccin SLEEP.

    2. De forma casi inmediata se comienza la ejecucin de instrucciones empleando para ello eloscilador interno, a la frecuencia que en ese momento estn seleccionando los bitsIRCF de OSCCON.

    3. El temporizador OST comienza a contar los 1.024 ciclos procedentes del oscilador externo.4. Al finalizar la cuenta el bit OSTS de OSCCON se activa.5. El oscilador externo se conmuta y pasa a ser el que genera el reloj del sistema.

    La figura muestra un diagrama de tiempos que resume el proceso de arranque a dos velocidades.

    T-7.3.6 Monitorizacin de la seal de reloj

    Imagina que ests utilizando cualquiera de los modos de osciladorexterno para generar la seal de reloj del sistema. Qu ocurre si porcualquier motivo falla ese oscilador externo? El controlador cancelainmediatamente la ejecucin de las instrucciones del programa y la aplicacindeja de funcionar catstrofe !!

    Pues bien, otra de las posibilidades que ofrece el mdulo oscilador delos dispositivos PIC16F88X consiste en poder comprobar el estado del oscilador externo. Para ello disponede un circuito de monitorizacin de fallo de reloj, FSCM (Fail-Safe Clock Monitor), que permite detectar unfallo en cualquiera de los modos de oscilador externo (LP, XT, HS, EC, RC y RCIO). Este circuito demonitorizacin se activa mediante el bit FCMEN de la palabra CONFIG1 de configuracin.

    En la figura se muestra el esquema interno porbloques del circuito de monitorizacin FSCM. La seal dereloj del oscilador externo se compara constantemente conuna seal de referencia generada por el oscilador internoLFINTOSC y dividida entre 64, lo que hace un periodo demuestreo de 2 mS. Si transcurre este tiempo sin que sedetecte la seal procedente del oscilador externo, se generala condicin de error.

    Cuando se detecta un fallo en el oscilador externo, elsistema conmuta automticamente al oscilador interno, a la

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    13/26

    7-13www.microcontroladores.com Microcontroladores PIC: Nivel I

    frecuencia que en ese momento estn seleccionando los bits IRCF del registro OSCCON. Al mismotiempo se activa el bit OSFIF del registro PIR2 que informa de esta situacin. Si tuviramos activado el bitOSFIE del registro PIE2 se producira tambin una interrupcin cuyo tratamiento actuara en consecuencia.Todo esto se resume en el diagrama de tiempos de la figura.

    Para anular la condicin de error basta con:

    Generar un RESET Ejecutar la instruccin SLEEP Cambiar de estado el bit SCS del registro OSCCON

    T-7.3.7 El Ciclo Mquina/Ciclo de instruccin

    Sea cual sea el tipo de oscilador empleado (interno o externo), estamos hablando del oscilador quegenera la frecuencia principal del sistema, tambin conocida como Fosc, y con un periodo Tosc (1/Fosc).Sin embargo, existe una unidad de tiempo mucho ms utilizada y que se conoce como Ciclo Mquina oCiclo de Instruccin. Esta unidad de tiempo, se obtiene a partir de la frecuencia Fosc del sistema, yemplea siempre 4 ciclos o estados Q del reloj principal. Ver la figura. Determina el tiempo que tarda enejecutarse una instruccin.

    En las diferentes unidades de este curso aparecen con cierta frecuencia los siguientes trminos:

    FoscFrecuencia principal del reloj del sistema (p.e. 4 MHz). Tosc Representa el periodo del reloj y se corresponde con la funcin inversa de la

    frecuencia (1/Fosc). Por ejemplo, si Fosc = 4 MHz, Tosc = 1/4 MHz = 250 nS. 4Tosc=Fosc/4Representa el ciclo mquina o ciclo de instruccin. Corresponde con 4

    ciclos Tosc del reloj. Es la unidad de tiempo que ms vamos a utilizar. Por ejemplo, siTosc = 250 nS, 4 Tosc = 1 S. ste ser el tiempo que tarda en ejecutarse cualquier

    instruccin.

    A modo de ejemplo, en la siguiente tabla se muestran diferentes frecuencias de trabajo y suscorrespondientes periodos y ciclos de instruccin.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    14/26

    7-14www.microcontroladores.com Microcontroladores PIC: Nivel I

    Fosc 31 KHz 1 MHz 4 MHz 8 MHz 20 MHzTosc 32 S 1 S 250 nS 125 nS 50 nS

    4 Tosc=Fosc/4 129 S 4 S 1 S 0.5 S 0.2 S

    T-7.3.8 Ahora t

    Con estos ejercicios se trata de que practiques con algunos de los conceptos que se han visto en

    este apartado dedicado al mdulo oscilador.

    Ejercicio 1

    Se desea trabajar con un oscilador interno a 500 KHz y aprovechar as las patillas RA6 y RA7 comolneas de E/S de propsito general, al tiempo que ahorramos componentes externos. Codificaradecuadamente los bits que intervienen en los siguientes registros. El resto de bits djalos en sus valorespor defecto.

    CONFIG1

    ---- ---- /DEBUG LVP FCMEN IESO BOREN1 BOREN0

    /CPD /CP MCLR /PWRTE WDTE FOSC2 FOSC1 FOSC0

    CONFIG2

    ---- ---- ---- ---- ---- WRT1 WRT0 BOR4V

    ---- ---- ---- ---- ---- ---- ---- ----

    OSCCON

    NOMBRE: OSCCON (Control y estado del mdulooscilador)

    DIR.: 0x8F BANCO: 1

    ---- IRCF2 IRFC1 IRFC0 OSTS HTS LTS SCS

    Ejercicio 2

    La aplicacin necesita un arranque instantneo a dos velocidades. Al conector la alimentacin elsistema arranca con el oscilador interno. Transcurridos los 1023 ciclos del temporizador OST se emplea unoscilador externo del tipo XT

    Codificar adecuadamente los bits que intervienen en los siguientes registros. El resto de bits djalosen sus valores por defecto.

    CONFIG1

    ---- ---- /DEBUG LVP FCMEN IESO BOREN1 BOREN0

    /CPD /CP MCLR /PWRTE WDTE FOSC2 FOSC1 FOSC0

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    15/26

    7-15www.microcontroladores.com Microcontroladores PIC: Nivel I

    CONFIG2

    ---- ---- ---- ---- ---- WRT1 WRT0 BOR4V

    ---- ---- ---- ---- ---- ---- ---- ----

    OSCCON

    NOMBRE: OSCCON (Control y estado del mdulooscilador)

    DIR.: 0x8F BANCO: 1

    ---- IRCF2 IRFC1 IRFC0 OSTS HTS LTS SCS

    Ejercicio 3

    La aplicacin trabaja con un generador externo conectado por la patilla RA7/OSC1/CLKIN comofuente general de reloj. Sin embargo, en previsin de posibles fallos, el sistema deber poder conmutar alreloj interno con una frecuencia de 8 MHz si hubiera algn error en ese generador externo.

    Codificar adecuadamente los bits que intervienen en los siguientes registros. El resto de bits djalosen sus valores por defecto.

    CONFIG1

    ---- ---- /DEBUG LVP FCMEN IESO BOREN1 BOREN0

    /CPD /CP MCLR /PWRTE WDTE FOSC2 FOSC1 FOSC0

    CONFIG2

    ---- ---- ---- ---- ---- WRT1 WRT0 BOR4V

    ---- ---- ---- ---- ---- ---- ---- ----

    OSCCON

    NOMBRE: OSCCON (Control y estado del mdulooscilador)

    DIR.: 0x8F BANCO: 1

    ---- IRCF2 IRFC1 IRFC0 OSTS HTS LTS SCS

    T-7.4 EL SUPERVISOR WATCHDOG

    En lo que llevamos de curso ya ha salido en varias ocasiones el circuito auxiliar llamado supervisoro watchdog (WDT). Tambin se le conoce como perro guardin, pero qu es realmente el WDT? Es uncircuito temporizador/contador que va evolucionando hasta llegar al mximo y, que si nadie se lo impide,

    termina desbordndose provocando un RESET del controlador. El sistema se reinicia.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    16/26

    7-16www.microcontroladores.com Microcontroladores PIC: Nivel I

    El supervisor WDT se puede activar o no mediante el bit WDTE de la palabra CONFIG1 deconfiguracin, o mediante el bit SWDTEN del registro WDTCON que ahora vers. Si lo desactivas, tepuedes olvidar de l, como si no existiera.

    Ahora bien, si lo activas, lo tendrs que vigilar y evitar que finalice la cuenta y provoque el RESET.Esto lo debes hacer mediante la instruccin CLRWDT, que refresca o reinicia la cuenta del WDT cada vezque se ejecuta. A partir de ahora debes disear tus programas e insertar estratgicamente esta instruccin,de forma que siempre se ejecute antes de que el WDT finalice su temporizacin.

    Segn esto, parece que el WDT no es ms que un quebradero de cabeza del que te tienes quepreocupar. Pues bien, resulta que en ocasiones su empleo est ms que justificado.

    Imagina un equipo o sistema autnomo que debe trabajar con la mnima intervencin humanaposible. En condiciones normales el PIC ejecuta el programa que gestiona el buen funcionamiento de eseequipo o aplicacin. Sin embargo puede ocurrir que, por causas varias (interferencias, fallos en el sistema,etc.), el programa se bloquee o se meta en un bucle sin fin. En esta situacin la instruccin CLRWDTque,tan estratgicamente habas puesto para su refresco, no se ejecuta. El WDT sigue avanzando en su cuentahasta que se desborda y provoca el RESET. El controlador se reinicia automticamente sin intervencin

    alguna por tu parte.

    Las caractersticas del supervisor WDT que incorporan los dispositivos de la familia PIC16F88X seresumen a continuacin:

    Toma como base de tiempos para la temporizacin, el oscilador LFINTOSC interno conuna frecuencia de 31 KHz.

    Dispone de un preescaler de 16 bits. Dispone de otro preescaler de 8 bits que es compartido con el Timer 0. El periodo o tiempo para su desbordamiento va desde 1 mS hasta los 268 segundos. Dicho tiempo se puede ajustar por software.

    En la siguiente figura puedes ver el esquema por bloques.

    El WDT se habilita activando el bit WDTE de la palabra CONFIG1 de configuracin, o bien el bitSWDTEN del registro WDTCON. La base de tiempos procede del oscilador interno LFINTOSC a 31 KHzcon un periodo de 32 S. Esta seal va a parar a un preescaler de 16 bits que la divide por un factorajustable mediante los bits WDTPS del registro WDTCON.

    Si el bit PSA del registro OPTION (el que vimos en unidad 2), se encuentra a 1, al WDT se leasocia otro preescaler. En este caso es de 8 bits y su factor de divisin se ajusta mediante los bitsPSA de ese mismo registro OPTION.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    17/26

    7-17www.microcontroladores.com Microcontroladores PIC: Nivel I

    Los ajustes del tiempo en que se producir el desbordamiento del supervisor WDT, se realizan portanto mediante los bits PSA del registro OPTION y mediante los bits del registro WDTCON que semuestra a continuacin.

    NOMBRE: WDTCON (Registro de control del supervisor WDT) DIR.: 0x105 BANCO: 2U-0 U-0 U-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0---- ---- ---- WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN

    Bits 7-5 No implementados, se leen como 0Bit 4-1 WDTPS: Ajuste del preescaler de 16 bits del supervisor del WDT

    0000 = 1:320001 = 1:640010 = 1:1280011 = 1:2560100 = 1:512 (valor por defecto tras el RESET)0101 = 1:10240110 = 1:20480111 = 1:4096

    1000 = 1:81921001 = 1:163841010 = 1:327681011 = 1:6553611xx = Reservado

    Bit 0 SWDTEN: Activacin por software del WDT1 = Supervisor WDT activado0 = La activacin del WDT depende del bit WDTE de la palabra CONFIG1 de

    configuracin

    Por defecto, y suponiendo que el preescaler de 8 bits controlado desde el registro OPTION no est

    asociado al WDT, el tiempo nominal de desbordamiento es de unos 17 mS (32 S es el periodo de 31 KHzpor el valor 512 por defecto tras el RESET). El valor mnimo sera de 1 mS (32 S x 32) y el mximo de 2.11seg. (32 S x 65536).

    Si adems, mediante el registro OPTION asociamos tambin el preescaler de 8 bits al WDT, eltiempo mnimo sera de 1 mS (32 S x 32 x1) y el mximo de 270 segundos (32 S x 65536 x 128).

    Sea como fuere, cada vez que el WDT se desborda por no haber sido refrescado a tiempo mediantela instruccin CLRWDT, el bit /TO del registro STATUS se pone a 0 y se provoca un RESET. El programade arranque o inicio puede testear ese bit para conocer si el RESET se provoc por otras causas o biencomo consecuencia del desbordamiento del WDT, en cuyo caso quiz debiera hacerse un tratamiento

    diferente.

    T-7.4.1 Ahora t

    Se trata de activar el watchdog (WDT) y ajustarlo para que desborde y provoque el RESET cada 8segundos (aprox.) si no es refrescado previamente mediante la instruccin CLRWDT.

    Codificar adecuadamente los bits que intervienen en los siguientes registros. El resto de bits djalosen sus valores por defecto. Posiblemente encuentres que hay varias posibilidades. Prueba con varias.

    CONFIG1

    ---- ---- /DEBUG LVP FCMEN IESO BOREN1 BOREN0

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    18/26

    7-18www.microcontroladores.com Microcontroladores PIC: Nivel I

    /CPD /CP MCLR /PWRTE WDTE FOSC2 FOSC1 FOSC0

    CONFIG2

    ---- ---- ---- ---- ---- WRT1 WRT0 BOR4V

    ---- ---- ---- ---- ---- ---- ---- ----

    WDTCON

    NOMBRE: WDTCON (Registro de control del supervisor WDT) DIR.: 0x105 BANCO: 2---- ---- ---- WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN

    OPTION_REG

    Nombre: OPTION_REG Direccin: 0x01 Bancos: 1 y 3/RBU INTEDG T0CS T0SE PSA PSA2 PSA1 PSA0

    T-7.5 EL MODO SLEEP DE BAJO CONSUMO

    Este concepto tambin ha aparecido en diferentes ocasiones. Consiste en dejar al controlador enmodo de espera (standby) y se consigue al ejecutar la instruccin SLEEP. En este momento el PIC deja deejecutar instrucciones y su consumo se reduce a la mnima expresin (unos 50 nA trabajando a 2 V). Cadavez que se pone al PIC en el modo SLEEP:

    El supervisor WDT se refresca y empieza una nueva temporizacin. El bit /PD del registro de STATUS se pone a 0. El bit /TO del registro STATUS se pone a 1. El sistema oscilador se desconecta. y deja de ejecutarse instrucciones. Las puertas de E/S mantienen el estado previo a la ejecucin de la instruccin SLEEP El consumo se reduce drsticamente.

    T-7.5.1 Final del modo SLEEP

    Se dice que cuando finaliza el modo SLEEP el PIC despierta (wake-up) y reanuda la ejecucinjusto despus de la propia instruccin SLEEP. Tres son las formas de despertar al controlador para que

    reanude la ejecucin:

    1. Provocar un RESET externo mediante la patilla MCLR.2. Desbordamiento del WDT (si est activado).3. Interrupcin mediante la patilla RB0/INT, interrupcin por cambio de estado en la Puerta

    B o interrupciones provocadas por ciertos perifricos.

    Cuando la reanudacin o el despertar del PIC se produce a causa de un RESET externo, tepuedes servir de los bits /TO y /PD del registro STATUS para averiguar si ese RESET ha sido provocado ono por desbordamiento del WDT y, en ese caso, si el PIC se encontraba o no en el modo SLEEP.

    Imagina una aplicacin en la que el controlador tiene que realizar una tarea cada cierto tiempo.Cuando finaliza esa tarea lo pones en el modo SLEEP hasta que el WDT desborde. Se produce un RESETy un nuevo arranque. La tarea se vuelve a ejecutar y finaliza nuevamente en el modo SLEEP. Slo existe

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    19/26

    7-19www.microcontroladores.com Microcontroladores PIC: Nivel I

    consumo en el momento de ejecucin de la tarea, luego ste consumo se reduce al mnimo (del orden denano amperios). Piensa en sistemas alimentados con pilas o bateras.

    No todos los perifricos pueden provocar interrupciones cuando el sistema se encuentra en el modoSLEEP ya que este modo implica la desconexin del sistema de reloj y, por tanto, el funcionamiento de losmismos. Otros en cambio s que pueden seguir trabajando y por tanto despertar y reanudar la ejecucin:

    1. El Timer 1 cuando trabaja en el modo asncrono.2. El mdulo ECCP en el modo de captura.3. El convertidor ADC cuando la fuente de reloj es FRC.4. Cuando se completa un ciclo de escritura sobre la EEPROM de datos.5. Cuando las salidas del comparador cambian de estado.6. Interrupcin por cambio de estado en las lneas de entrada de la Puerta B.7. Interrupcin externa mediante la patilla RB0/INT.8. Al detectar la condicin BREAK en el mdulo EUSART.

    T-7.6 EL RESET

    Como ya sabes, la secuencia por la que el controlador se reinicia y comienza a ejecutar el programa

    de la aplicacin, se la conoce como secuencia RESET. Los dispositivos de la familia PIC16F88X disponende diferentes recursos para generar esta secuencia:

    Al conectar la alimentacin general del sistema. Se le conoce como Power On Reset(POR). Desbordamiento del supervisor WDT cuando el controlador se encuentra ejecutando el

    programa. Desbordamiento del supervisor WDT cuando el controlador se encuentra detenido, en

    standby, en el modo SLEEP de bajo consumo. Al activar la patilla MCLR en cualquier momento durante la ejecucin del programa. Al activar la patilla MCLR cuando el controlador se encuentra detenido, en standby, en el

    modo SLEEP de bajo consumo. Al detectar una cada en la tensin de alimentacin por debajo de un determinado valor de

    umbral. Se le conoce como Brown-out Reset (BOR).

    Cuando se genera un RESET algunos bits de los registros especiales (SFR) se cargan con unosvalores predeterminados, otros bits pueden permanecer sin modificarse y otros pueden adquirir un valoraleatorio. Fjate que en cada uno de los registros especiales estudiados hasta el momento, se ha venidoindicando cmo quedan sus correspondientes bits tras el RESET. Repasa si quieres el apartado T-2.2.4.

    En la siguiente figuratienes el esquemasimplificado por

    bloques del circuito deRESET que integranlos dispositivos PIC16F88X. Es muyparecido al de otrosdispositivos PIC deotras familias.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    20/26

    7-20www.microcontroladores.com Microcontroladores PIC: Nivel I

    T-7.6.1 Power-On RESET (POR)

    Consiste en un circuito interno que monitoriza la tensin de alimentacin aplicada al controlador.Cuando esta se estabiliza y alcanza el valor adecuado se genera la seal de RESET y el sistema comienzaa ejecutar el programa de la aplicacin. El circuito POR es insensible a cadas de tensin transitorias. Paraque se produzca una nueva secuencia de RESET, es necesario que la tensin de alimentacin caiga a 0 Vdurante al menos 100 S.

    T-7.6.2 MCLR

    Se trata de la patilla RE3/MCLR (pin 1). Por ella puedes provocar un RESET del sistema desde elexterior. Es una patilla activa por nivel lgico 0. Dispone de un filtro interno que evita falsas seales deRESET provocadas por pulsos externos de muy corta duracin.

    Mediante el bit MCLRE de la palabra de configuracin CONFIG1 puedes determinar elfuncionamiento de esta patilla. Si le pones a nivel 1 se comporta como entrada MCLR para el RESETexterno. Si le pones a nivel 0 la patilla se comporta como una entrada digital de propsito general (RE3).La funcin MCLR queda internamente conectada a Vdd (nivel 1) y por tanto anulada.

    T-7.6.3 Temporizador Power-Up Timer (PWRT)

    Se trata de otro circuito interno que realiza una temporizacin fija de 66 mS, cada vez que sedetecta el Power-on Reset. Consiste en un contador de 11 bits capaz de contar 2.048 eventos (211) queproporciona el oscilador interno LFINTOSC de 31 KHz ((1/31.000)*2.048=0,066 seg).

    El controlador se mantiene detenido, en RESET, mientras se realiza esta cuenta. Al final de lamisma se comienza con la ejecucin. El objetivo de esta temporizacin consiste en esperar a que la tensinVdd de alimentacin se estabilice y alcance el valor apropiado, antes de que el controlador comience aejecutar instrucciones. Es decir, el controlador comienza a trabajar 66 mS despus de conectar la

    alimentacin.

    En algunas aplicaciones este retraso puede no ser deseado. Por este motivo, mediante el bitPWRTE de la palabra de configuracin CONFIG1 tienes la posibilidad de activar o no al temporizadorPWRT. Si ese bit lo pones a nivel 0 se activa. Si lo pones a nivel 1 el PWRT queda desactivado. En estecaso el arranque o comienzo de la ejecucin es casi instantneo, pero debes asegurarte de que laalimentacin tambin sea instantnea (p.e. mediante un sistema de pilas o bateras).

    T-7.6.4 Temporizador Oscillator Start-up (OST)

    Ya se ha hablado de el. Se trata de otro temporizador que retrasa el arranque del controlador.

    Consiste en un contador de 10 bits que se alimenta desde el oscilador general externo conectado por lapatilla RA7/OSC1/CLKIN (en los modos de oscilador LP, XT y HS). Su funcin consiste en contar 1.024pulsos (210) de ese reloj externo, esperando as a la estabilizacin del mismo. El temporizador OST se poneen marcha una vez que finaliza la temporizacin del PWRT (si es que estuviera activado). La temporizacintotal viene determinada por la frecuencia del oscilador general (1/Fosc), es decir Tosc * 1024.

    En la siguiente tabla se resumen los tiempos de arranque del controlador para los diferentes modosde oscilador y en funcin de si el temporizador PWRT est o no habilitado. Recuerda: TPWRT= 66 mS

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    21/26

    7-21www.microcontroladores.com Microcontroladores PIC: Nivel I

    Tipo deoscilador

    RESET por conexin dealimentacin (POR)

    RESET por cada detensin (BOR)

    Salida delmodoSLEEP

    (despertar)PWRTE=0 PWRTE=1 PWRTE=0 PWRTE=1

    XT,HS,LP TPWRT+Tosc * 1024

    Tosc * 1024 TPWRT+Tosc * 1024

    Tosc * 1024 Tosc * 1024

    RC,EC,INTOSC TPWRT ------ TPWRT ------ ------

    En la figura tienes un diagrama de tiemposcon la secuencia de arranque delcontrolador. En ella se considera un relojexterno (p.e. XT), que la patilla MCLR estconectada a Vdd y que el temporizadorPWRT est habilitado.

    Cuando se conecta la alimentacin (Vdd)se genera la seal POR. En este instantecomienza la temporizacin TPWRT(66 mS).Cuando esta finaliza comienza latemporizacin TOST (Tosc * 1024)). Alfinalizar se libera el estado de RESET y elcontrolador comienza a ejecutar elprograma de la aplicacin.

    T-7.6.5 Circuito Brown-out Reset (BOR)

    Otra forma de provocar un RESET al sistema. Se trata de un circuito interno capaz de detectarcadas en la tensin Vdd de alimentacin por debajo de un determinado valor o umbral. Si esto ocurriera seproducir una secuencia de RESET. Mediante los bits BOREN0 y BOREN1 de la palabra de configuracin

    CONFIG1 se selecciona de entre los 4 modos de trabajo posibles:

    BOREN1 BOREN0 MODO0 0 Circuito BOR desconectado0 1 El circuito BOR se controla por software,

    mediante el bit SBOREN del registro PCON1 0 El circuito BOR se activa slo en el modo normal.

    Se desconecta en el modo SLEEP1 1 El circuito BOR siembre activado

    Mediante el bit BOR4V de la palabra de configuracin CONFIG2 se selecciona el umbral de latensin a detectar. Cuando vale 0 la tensin de umbral a detectar se establece en 2.1 V, cuando vale nivel1 el umbral es de 4.0 V.

    En la siguiente figura tienes undiagrama de tiempos con diferentessituaciones en las que se detecta una cadade tensin Vdd. Se supone que eltemporizador PWRT est habilitado. Porello, la secuencia de arranque, se demoraen 66 mS.:

    Caso 1: La tensin de alimentacin Vdd cae

    por debajo de VBOR durante un breveinstante de tiempo. El reinicio se produce 66mS despus de que Vdd supere a VBOR.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    22/26

    7-22www.microcontroladores.com Microcontroladores PIC: Nivel I

    Caso 2: La tensin de alimentacin Vdd cae por debajo de VBOR, se repone durante un tiempo inferior a 66mS y luego vuelve a caer. El reinicio se produce 66 mS despus de que Vdd supere a VBORy se estabilice.

    Caso 3: La tensin de alimentacin cae por debajo de VBORdurante un tiempo prolongado. El reinicio seproduce 66 mS despus de que Vdd supere a VBOR

    T-7.6.6 El registro de control de potencia PCON

    Entre otros, dispone de dos bits de estado que permiten determinar el tipo de RESET que se haproducido. Tambin permite o no activar por software el circuito BOR. Se muestra a continuacin.

    NOMBRE: PCON (Registro de control de potencia) DIR.: 0x8E BANCO: 1U-0 U-0 R/W-0 R/W-1 U-0 U-0 R/W-0 R/W-x---- ---- ULPWUE SBOREN ---- ---- /POR /BOR

    Bits 7-5 No implementados, se leen como 0Bit 5 ULPWUE: Permite o no despertar desde el modo SLEEP empleando la patilla

    RA0 de bajo consumo1 = Despertar en bajo consumo desde RA0 activado0 = Despertar en bajo consumo desde RA0 desactivado

    Bit 4 SBOREN: Activacin del BOR por software (si los bits BOREN de la palabrade configuracin CONFIG1=01)1 = BOR activado0 = BOR desactivado

    Bits 3-2 No implementados, se leen como 0Bit 1 /POR: Bit de estado de la conexin de alimentacin Power-on Reset (POR)

    1 = No ha habido conexin de alimentacin Power-on Reset (POR)0 = Ha habido conexin de alimentacin (POR)

    Bit 0 /BOR: Bit de estado del circuito de deteccin de cadas de tensin Brown-out Reset (BOR)1 = No se ha detectado cada de tensin Vdd0 = Se ha detectado cada de tensin Vdd y se ha generado RESET

    En la siguiente tabla se combinan los bits /TO y /PD del registro STATUS con los bits /POR y /BORdel registro PCON. Durante la secuencia de arranque o inicio, haciendo un anlisis de los mismos, podrsaveriguar la causa que provoc el RESET.

    /POR /BOR /TO /PD Causa del RESET0 X 1 1 Conexin de alimentacin Power-on Reset (POR)U 0 1 1 RESET al detectar cada de la tensin Vdd (BOR)U U 0 U RESET por desbordamiento del supervisor WDTU U 0 0 Salida del modo SLEEP (despertar) por

    desbordamiento del supervisor WDTU U U U Activacin de la patilla RE3/MCLR (RESET externo) en

    el modo normal de ejecucin.U U 1 0 Activacin de la patilla RE3/MCLR (RESET externo) en

    el modo SLEEP de bajo consumo (standby)U=bit que no se modifica; X= bit aleatorio

    En el material complementario dispones del data sheet completo de los dispositivos PIC16F88X queproporciona Microchip. En l encontrars cmo quedan todos los registros internos especiales(SFR) cada vez que se produce una secuencia de RESET en cualquiera de sus formas. Tienes toda lainformacin tcnica disponible de primera mano.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    23/26

    7-23www.microcontroladores.com Microcontroladores PIC: Nivel I

    AREA DE PRCTICAS

    P-7.1 AJUSTE DE LAS PALABRAS DE CONFIGURACIN

    Recuerda que a las palabras de configuracin slo se puede acceder durante el ciclo de grabacindel PIC. Mediante el entorno de trabajo MPLAB-IDE las puedes ajustar segn tus necesidades antes de

    proceder a esa grabacin. Basta con que selecciones Configure Configuration Bits. Se abre unaventana como la mostrada en la figura.

    Cuando seleccionas cualquiera de los campos a configurar, aparece un desplegable con lasdiferentes opciones posibles para ese campo.

    Otra forma de determinar la configuracin de trabajo del PIC y, bajo nuestro punto de vista la mscorrecta, consiste en incluirla en el propio programa fuente. De esta forma, cuando se ensambla o compila

    dicho programa, se obtiene un fichero ejecutable (*.HEX) que lleva incrustado toda esa informacin.

    Luego, cuando el software de grabacin abre el fichero *.HEX a grabar, se obtiene no solo elprograma que hay que escribir sobre la memoria flash de programa, tambin se obtiene el estado de los bitsde configuracin segn los hayamos ajustado en el programa fuente. Fjate en las siguientes directivas:

    __config _CONFIG1,LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF&_BOR_OFF__config _CONFIG2, _WRT_OFF

    Te recuerdan algo? Efectivamente, son las directivas que has empleado en todos los ejemplosrealizados hasta el momento y que seguirs empleando en lo sucesivo. Establecen el estado que deseaspara los diferentes bits de los registros CONFIG1 y CONFIG2 de configuracin. Sus etiquetas estn

    definidas en el fichero P16F886.INC y se corresponden con las que acabas de estudiar (LVP, PWRT,WDT, etc)

    Esta forma de proceder permite obtener un fichero ejecutable (*.HEX) muy compacto y con toda lainformacin que necesita el software de grabacin para grabar correctamente el dispositivo PIC. Su uso esmuy recomendable.

    P-7.2 EJEMPLO 7-1: El oscilador interno

    Con este ejemplo se trata de mostrar una de las posibilidades de los dispositivos PIC16F88X (entreotros). Consiste en conmutar y seleccionar el oscilador interno (INTOSC) como oscilador general de trabajo.

    Esto te brinda la oportunidad de poder seleccionar frecuencias (F) de trabajo que van desde los 31 KHz(LFINTOSC) hasta los 8 MHz, y periodos (Tosc) desde los 32,25 S hasta los 0.125 S (Tosc=1/F)respectivamente.

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    24/26

    7-24www.microcontroladores.com Microcontroladores PIC: Nivel I

    La seleccin de la frecuencia se realiza mediante tres interruptores del laboratorio USB-PICSchoolque se conectan con las lneas RA0:RA2 de entrada. De forma dinmica, durante la ejecucin del programa,podrs variar esa frecuencia y modificar as los tiempos de ejecucin.

    T-7.2.1 Descripcin/Edicin del programa fuente

    El programa se basa en la rutinaDelay de temporizacin que, mediante unaserie de bucles anidados, consume unos500.000 ciclos de instruccin (1 ciclo=4*Tosc).El valor binario de las entradas RA0:RA2(procedente de los interruptores) se empleapara seleccionar en OSCCON el valor de lafrecuencia de trabajo. Segn sea sta, la rutinaDelay tardar ms o meno tiempo enejecutarse a pesar de consumir el mismo nmero de ciclos de instruccin. Se producen as temporizacionesdiferentes.

    Al final de cada temporizacin, la salida RB0 cambia de estado. En la tabla de arriba se muestra unarelacin entre el valor de RA2:RA0, la frecuencia de trabajo, el tiempo de un ciclo mquina y el tiempo quetarda RB0 en cambiar de estado (ciclo mquina * 500000).

    P-7.2.2 Montaje elctrico

    Se muestra en la figura. Los interruptores E0:E2 seconectan con las patillas RA0:RA2 respectivamenteque actan como entradas. El led S0 del laboratoriose conecta con la patilla RB0 que acta como salida.

    Este led producir una intermitencia variable enfuncin del valor de los interruptores.

    P-7.2.3 Grabacin del dispositivo y comprobaciones finales

    Cuando ya hayas trabajado y experimentado con la depuracin, selecciona el modo grabador ygraba el PIC con el programa definitivo. Coloca el conmutador en la posicin RUN y comprueba que elprograma funciona correctamente.

    La salida S0 conectada en RB0 parpadea a un ritmo que vara en funcin de las entradas RA2:RA0.Debes tener en cuenta que, segn la tabla anterior, cuando se selecciona la frecuencia interna de trabajo de31 KHz (RA2=RA1=RA0=0), el cambio en RB0 se produce cada 64,5 segundos!

    P-7.2.4 Ahora t

    No hay mucho trabajo que desarrollar sobre este sencillo, pero til ejemplo. Simplemente que debesde tener en cuenta la presencia del oscilador interno en los dispositivos PIC16F88X y sus posibilidades. Losdiseos y proyectos se pueden ver muy beneficiados en un aspecto fundamental:

    El oscilador interno evita el uso de un oscilador externo y sus componentes asociados. Estoahorrar costes y espacio en el diseo final.

    Ahora te propongo que hagas un sencillo experimento.

    RA2:RA0 FRECUENCIA CICLO CAMBIO EN RB0000 31 KHz 129 S 64,5 seg.001 125 KHz 32 S 16 seg.010 250 KHz 16 S 8 seg.011 500 KHz 8 S 4 seg.100 1 MHz 4 S 2 seg101 2 MHz 2 S 1 seg.110 4 MHz 1 S 0,5 seg.111 8 MHz 0.5 S 0,25 seg.

    E. DIGITALES

    E0

    E1

    E2

    E3

    E4

    E5

    E6

    E7

    RA0

    RA2

    RA1

    RB0

    SALIDAS DI GITALES

    S0

    S1

    S2

    S3

    S4

    S5

    S6

    S7

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    25/26

    7-25www.microcontroladores.com Microcontroladores PIC: Nivel I

    1. Desconecta la alimentacin del laboratorio.2. Con cuidado, retira el oscilador externo (la cpsula metlica que se encuentra a la derecha de los

    diplays de 7 segmentos). Fjate cmo se encuentra para dejarlo luego exactamente igual.3. Vuelve a conectar la alimentacin. Funciona el programa? _____________4. Desconecta la alimentacin del laboratorio.5. Vuelve a colocar el oscilador. Fjate que el ngulo marcado con un punto () debe quedar orientado

    hacia arriba a la izquierda.6. Vuelve a conectar la alimentacin. Funciona el programa? _____________

    Explicacin:

    A pesar de que el programa va a emplear el oscilador interno como reloj general del sistema,cuando retiras el oscilador externo no funciona. Ten en cuenta que en la palabra de configuracin hasseleccionado el oscilador externo (EC_OSC):

    __config _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF&_BOR_OFF__config _CONFIG2, _WRT_OFF&_BOR40V

    Si este lo retiras no podrn ejecutarse las instrucciones que permiten precisamente seleccionar yconmutar al oscilador interno.

    P-7-3 EJEMPLO 7-2: El supervisor Watchdog (WDT)

    Se trata de demostrar cmo mediante el WDT se puede provocar un RESET de forma peridica sino se le refresca a tiempo. Tambin vamos a ver cmo es posible que nuestro programa distinga si elRESET se provoca por desbordamiento del WDT, o bien por la activacin de la patilla MCLR y/o conexinde la tensin de alimentacin. Para ello vamos a emplear dos leds del laboratorio USB-PICSchool queproducirn un flash en funcin del tipo de RESET producido:

    1. Flash de 0,4 seg. sobre el led S3 conectado con la salida RB3, si el RESET se produce poractivacin de la patilla MCLR o cada vez que se conecte la alimentacin del sistema (Power OnReset).

    2. Flash de 0,1 seg sobre el led S0 conectado con la salida RB0, cada vez que el RESET se provocapor un desbordamiento del supervisor WDT.

    Por otra parte, el WDT que incorporan los dispositivos PIC16F88X, dispone de un prescaler quepermite ajustar el desbordamiento con 12 intervalos distintos, que van desde los 0.13 segundos hasta los270. Vamos a emplear los interruptores E0:E3 conectados con las entradas RA0:RA3 para ajustar, en elregistro WDTCON, uno de esos intervalos segn la siguiente tabla:

    RA3:RA0 WDTCON TIEMPO (s) RA3:RA0 WDTCON TIEMPO (s)0000 32 0.13 0110 2048 8.450001 64 0.26 0111 4096 16.910010 128 0.52 1000 8192 33.820011 256 1.05 1001 16384 67.640100 512 2.11 1010 32768 135.280101 1024 4.22 1011 65536 270.60

    P-7.3.1 Descripcin del programa fuente

    Como ya has visto en el rea de teora, el supervisor WDT consiste en un temporizador que sealimenta desde un oscilador interno, independiente del sistema y con una frecuencia F de 31 KHz (periodo

    T=32 S). Dispone de un prescaler de 8 bits que se selecciona desde el registro OPTION_REG. En elpresente ejemplo se ha elegido un prescaler fijo de 128. Tambin dispone de un prescaler de 16 bits y con12 intervalos distintos que se seleccionan desde el registro WDTCON. El valor de este ltimo lo vamos a

  • 7/25/2019 CIRCUITOS AUXILIARES PIC

    26/26

    seleccionar mediante las entradas RA3:RA0. El tiempo total de desbordamiento ser por tanto de 32 S *128 * WDTCON y oscilar entre los 0,13 seg y los 270,6 seg. como se mostr en la tabla anterior.

    En la secuencia de inicio, el programa chequea el bit NOT_TO del registro STATUS para determinarsi el RESET se ha producido al accionar la patilla MCLR y/o al conectar la alimentacin, o bien si ha sido pordesbordamiento del WDT. Realiza as la intermitencia correspondiente y actualiza, mediante el registroWDTCON, el nuevo valor del prescaler con el valor actual de las entradas conectadas en RA3:RA0.

    P-7.3.2 Montaje elctrico

    Lo tienes en la figura. Los interruptores E0:E3 dellaboratorio se conectan con las lneas RA0:RA3respectivamente que actuarn como entradas. Losleds S0 y S3 se conectan con las lneas RB0 y RB3respectivamente. Actuarn como salidas.

    P-7.3.3 Grabacin del dispositivo y comprobaciones finales

    Cuando ya hayas trabajado y experimentado con la depuracin, selecciona el modo grabador ygraba el PIC con el programa definitivo. Coloca el conmutador en la posicin RUN y comprueba que elprograma funciona correctamente.

    Simplemente comprueba que el ejemplo cumple con sus expectativas. Nada ms conectar laalimentacin (o generar MCLR con el botn RESET), se debe producir un flash de 0,4 segundos sobre el ledS3 conectado con RB3.

    A partir de este momento, observaremos que el led S0 conectado en RB0 produce un flash de 0,1seg. de forma peridica cada vez que desborda el WDT. La duracin del periodo se puede modificar con lasentradas RA3:RA0, hacindolo con ms o menos frecuencia.

    P-7.3.4 Ahora t

    Como trabajo personal te propongo hacer un programa en el que cada vez que desborde el WDT se

    lea el estado de una entrada (p.e RA0) y se refleje en una salida (p.e. RB0). El resto del tiempo, entre undesbordamiento y el siguiente, el controlador deber encontrarse en el modo SLEEP de bajo consumo.

    Esto permite incidir en un par de importantes detalles:

    1. Hay aplicaciones que slo requieren la intervencin del controlador de forma peridica,cada cierto tiempo. Imagina que se trata de monitorizar el estado de una o ms entradasque varan de forma muy dilatada en el tiempo.

    2. Cuando el controlador no est trabajando lo ponemos en el modo SLEEP. Con estoconseguimos reducir el consumo drsticamente hasta que el WDT desborde.

    E. DIGITALES

    E0

    E1

    E2

    E3

    E4

    E5

    E6

    E7

    SALIDAS DI GITALES

    S0

    S1

    S2

    S3

    S4

    S5

    S6

    S7

    RA0

    RA2

    RA1

    RA3

    RB0

    RB3