+ All Categories
Home > Documents > Libro PIC

Libro PIC

Date post: 13-Feb-2018
Category:
Upload: leonel-gzz
View: 225 times
Download: 0 times
Share this document with a friend

of 469

Transcript
  • 7/23/2019 Libro PIC

    1/468

    1

    1 Introduccin

    El objetivo principal de este libro es el de exponer, de principio a fin, todos y cada uno de losaspectos tcnicos relacionados con la operacin de los microcontroladores PICfabricados porla empresa MICROCHIP TECHNOLOGY, INC.

    Debido a que existen una gran variedad de modelos (catalogados bsicamente en 3 familias, la

    serie 12C de 12 y 14 bits, la serie 16C de 14 bits y las series 17C y 18C de 16 bits), nosconcentraremos nicamente en la primera familia y en algunos modelos bsicos de la segunda,con la finalidad de exponer sus caractersticas de manera ms detallada y facilitar as suexplicacin.

    Cabe mencionar que este libro no pretende remplazar al manual de especificaciones tcnicas(datasheet) de algn modelo de microcontrolador en especial sino que trata de complementarloal describir sus caractersticas generales de operacin con ms detalle, adems de hacerlo enespaol.

    El formato que ser empleado a lo largo de todo el libro consistir en que algunas palabrastcnicas en el idioma ingls que no tengan una traduccin comprensible para ser entendidaspor su significado exacto, stas sean traducidas al espaol y posteriormente escritas en ingls,presentando stas ltimas entre parntesis. As por ejemplo, si hacemos referencia a lapalabra en ingls stack, sta ser escrita como: pila (stack).

    Diseando con el microcontrolador PIC esta escrito en un lenguaje sencillo, pudiendo serentendido por cualquier estudiante o ingeniero con conocimientos bsicos de electrnica digital,sin que esto implique que el libro no tenga un buen nivel de conocimientos, ya que se pretendeque al terminar de estudiar este libro, el lector este capacitado para disear cualquier sistemabasado en los microcontroladores PIC. Obviamente esto no se cumple al pie de la letra ya queadems del conocimiento tcnico del microcontrolador se requerir algo de prctica, pero noobstante se tendr una muy buena referencia de cmo hacerlo, ayudado con el proyectocompleto que se presenta en el captulo 28, al final de este libro.

    En los primeros captulos se presenta la informacin tcnica y de operacin tanto de la unidadcentral de procesamiento (CPU), la distribucin de su memoria de programa (EPROM), la

    memoria de registros (RAM),la de sus puertos de entrada/salida (I/O ports) as como la de susdiferentes dispositivos o controladores perifricos.

    En los captulos posteriores se presenta una descripcin detallada de todas y cada una de lasinstrucciones con que cuenta la familia de microcontroladores, una explicacin general del usodel lenguaje ensamblador as como una descripcin del sistema de desarrollo MPLAB que laempresa MICROCHIP TECHNOLOGY, INC, a travs de su sitio de Internet(www.microchip.com), pone a la disposicin de sus usuarios en forma gratuita.

    Finalmente, mencionar que este libro esta basado en la informacin tcnica publicada porMICROCHIP TECHNOLOGY INC. en su sitio de internet mencionado con anterioridad y elautor de este libro da todo el crdito a dicha empresa y hace notar que todas las marcasmencionadas en este libro, son marcas registradas.

  • 7/23/2019 Libro PIC

    2/468

    2

    Breve historia del nacimiento de los microcontroladores

    En los aos setenta comenz a desarrollarse, de una manera prctica, la tecnologa de los

    microprocesadores. En ese entonces, la capacidad de stos no rebasaba 8 bits del bus dedatos (data), su velocidad era limitada y no excedan de 1 MHz de velocidad de operacin.Asimismo, su modo de direccionamiento de memoria era diferente a la que existe actualmente,ya que, exista una sola memoria que compartan, tanto el programa (EPROM) como los datos(RAM). No obstante, se podan direccionar hasta 64 Kbytes con sus 16 lneas del bus dedirecciones (address).

    De esta manera, el microprocesador contenido en un circuito integrado de 40 pines era solouna parte del sistema, ya que tanto la memoria de programa (EPROM) implementada en unbloque de la capacidad total, as como la memoria de datos (RAM) implementada en otrobloque de la misma memoria total, eran implementadas con circuitos integrados de variascapacidades que podan ser de 256 bytes hasta 2 Kbytes en un principio. Asimismo, losdiferentes dispositivos perifricos deban implementarse con circuitos digitales (y analgicos)

    que ocupaban un gran espacio y demandaban mayor consumo de energa. Todos estosdispositivos, comunicados entre si mediante un bus de direcciones, un bus de datos y un busde control, contenidos en un solo circuito integrado forman lo que hoy se conoce comomicrocontroladores.

    La tecnologa fu avanzando a pasos agigantados y los llamados microprocesadores pasaron aser microcontroladores, y hoy en da podemos encontrar en el mercado un sin nmero demarcas, opciones y capacidades de estos sistemas pero, como se menciono anteriormente,implementados en un solo circuito integrado, con un consumo muy bajo de energa, unavelocidad de operacin mucho mayor y un costo muy reducido entre otras muchas ventajas.

    Lo anterior nos permite que en la actualidad podamos disear sistemas mucho ms complejos,ocupando menos espacio, consumiendo menos energa y manufacturndolos a un menorcosto.

    Sin embargo, es importante aclarar que actualmente existen los microprocesadores de 16, 32 yhasta 64 bits y fu solo una lnea de aplicacin la implementada como microcontroladores. Estalnea existe en varias versiones de 8 y 16 bits, con memoria de programa (EPROM) de hasta 8Kbytes y memoria de datos (RAM) de hasta 1 kbyte, as como una gran variedad dedispositivos perifricos (ver el sitio de internet www.microchip.com) para ver la informacin msactual.

    La principal causa de la existencia de los microcontroladores es que existen aplicacionesespecficas que demandan recursos limitados y de ah que existan una gran variedad demodelos con diferentes capacidades de memoria y de dispositivos perifricos. Esto se podrentender con claridad una vez que se haya concluido la lectura de este libro.

    El diseo de cualquier sistema de control requerir del seguimiento de los siguientes pasos:

    Definicin del sistema a disear.

    Este paso consiste en definir las caractersticas del sistema a disear, con el objeto deelegir el modelo de microcontrolador adecuado que cumpla con los requerimientos delsistema, es decir, responder principalmente a las siguientes preguntas:

    Cules sern los parmetros o variables de entrada?Cules sern los parmetros o variables de salida?Cules sern los procesos a realizar?Capacidad necesaria en memoria de programa (EPROM)?

  • 7/23/2019 Libro PIC

    3/468

    3

    Capacidad necesaria en memoria de datos (RAM)?Cules sern los dispositivos perifricos necesarios?Cul es la velocidad mxima y mnima del proceso?

    Cul ser la frecuencia de operacin del microcontrolador?El nmero y tipo de las entradas (analgica o digital)?El nmero de las salidas?Se requerir de memoria no voltil para guardar parmetros?Qu corriente ser necesaria en los puertos de salida?Qu voltajes de alimentacin sern utilizados?

    Diseo de los circuitos de acoplamiento asociados a los puertos deentrada/salida del microcontrolador.

    Este paso consiste en disear los circuitos o interfases necesarias para acoplar lasseales de entrada y de salida a los puertos de entrada/salida (I/O ports) delmicrocontrolador. Vemoslo con un ejemplo: Imaginemos que requerimos medir unvoltaje del tipo analgico cuyo rango de operacin que se encuentre entre 0 y 36 voltsde corriente directa (VDC). Es obvio que esta medicin no la podremos hacer en formadirecta ya que daaramos el circuito de entrada del microcontrolador porquesobrepasara el voltaje de entrada mximo permitido. En este caso necesitaremosacondicionar la seal de entrada mediante un divisor de voltaje (digamos dividir entre10) para proporcionarle al puerto de entrada un voltaje mximo de 3.6V (36/10=3.6). Eneste caso bastar con un par de resistencias cuya relacin sea de 10:1, por ejemplo100K en serie con 10K para lograr dicha reduccin.

    Es decir, existen una infinidad de casos que por razones obvias no describiremos eneste libro ya que el objetivo principal de ste no es ensear tcnicas de diseo deinterfaces sino la programacin del microcontrolador en el sistema a disear.

    Diseo del programa de control (software)

    Esta es probablemente la parte medular de la etapa del diseo del sistema en si,aunque sin menospreciar la etapa del diseo de los circuitos (hardware).

    En la etapa del diseo del programa de control deber estimarse, de una maneraaproximada, la capacidad, tanto de la memoria de programa (EPROM) como lamemoria de datos (RAM) necesarias para la correcta implementacin de la aplicacin,pero hacindolo bajo el criterio de dejar libre (sin uso) un porcentaje de la misma, yaque por causas en ocasiones no contempladas, es necesario hacer ajustes finales oampliaciones de ltima hora, impidindonos la conclusin satisfactoria del proyecto,teniendo as que migrar a un modelo con mayor capacidad.

    Otro aspecto importante de visualizar en esta etapa, es el criterio de optimizacin bajoel cual ser diseado el programa de control (software), es decir, si ste seroptimizado en velocidad (cuando el tiempo de ejecucin de algn proceso esprimordial) o en tamao de la memoria de programa usada (cuando la capacidad dememoria es muy limitada), pero teniendo como prioridad el primero.

    Por otra parte, existen dos tipos de mtodos empleados para registrar cualquier cambioen las seales de entrada: Por interrupcin (interrupt) y por poleo (polling).

    El primer mtodo es el ms usado y corresponde al uso de una rutina de interrupcinque ser ejecutada una vez que se detecte una condicin especial, previamentedefinida, interrumpiendo en ese mismo instante al proceso principal, ejecutndola yregresando nuevamente el control al proceso principal interrumpido. Este mtodo

  • 7/23/2019 Libro PIC

    4/468

    4

    generalmente es el ms rpido y el que garantiza el registro de todos y cada uno de loscambios de la seal de entrada.

    El segundo mtodo es mucho ms fcil de implementar pero en ocasiones puedeesclavizar al proceso principal de control y en consecuencia, limitarlo en la ejecucin devarias tareas al mismo tiempo.

    Finalmente, existir en ocasiones la necesidad de realizar algunos clculosmatemticos y que por motivos del tiempo empleado en su ejecucin, no sea viablehacerlo. En este caso se requerir del uso de algn algoritmo diseado especialmentepara remplazar a la rutina de clculo que opera con lentitud. Existen una gran variedadde algoritmos o rutinas de ejecucin rpida disponibles en las notas de aplicacin delsitio Web de la empresa fabricante MICROCHIP TECHNOLOGY, INC.

    Programacin del microcontrolador

    Una vez capturado el programa de control (software) de la aplicacin en el editor delprograma de desarrollo MPLAB, este deber ser ensamblado pare ser convertido alenguaje de mquina y guardado en un archivo .hex. Este proceso es ejecutadoautomticamente por esta herramienta de desarrollo poderosa.

    Despus de lo anterior, la informacin generada por el programa MPLAB estar listapara su programacin en un microcontrolador virgen, es decir, no programado. Debidoa que en la etapa de desarrollo se requiere del proceso de programar y borrar elmicrocontrolador varias veces a lo largo del desarrollo del sistema, podemos mencionarque existen dos tipos de dispositivos utilizados para esta etapa: Uno del tipo de borradocon luz ultravioleta (UV) y corresponden a los modelos con terminacin JW, los cualesposeen una ventana transparente en el centro del circuito integrado y el segundo deltipo reprogramable (FLASH), el cual puede ser borrado elctricamente desde elprogramador.

    En el primer caso, el usuario requerir de una lmpara que emita luz ultravioleta paragenerar el borrado de los microcontroladores. Existen varios fabricantes de este tipo delmparas, pero una solucin ms rpida y econmica podra ser el utilizar una lmparagermicida, es decir, una lmpara utilizada para la esterilizacin de instrumentalmdico.

    Existen varios tipos de programadores de microcontroladores en el mercado, pero elms econmico y recomendado por la empresa MICROCHIP TECHNOLOGY, INC.,para efectos de desarrollo de prototipos es el modelo PIC START PLUS, el cual esconectado a una computadora personal (PC) a travs del puerto de comunicacin serial(COM1). Este programador es manejado desde el programa de desarrollo MPLAB. Sinembargo, este programador tiene un precio de aproximadamente $200 US dolares y

    pudiera ser no muy accesible para algunos estudiantes, en cuyo caso existen otrasopciones ms econmicas, como por ejemplo el programador que vende las tiendas deelectrnica STEREN a un precio menor de $200 pesos. Cabe aclarar que esteprogramador se limita nicamente a algunos modelos de 8 y 18 pines, por lo que elinteresado deber preguntar en la tienda si el modelo de microcontrolador quepretender usar en su proyecto se encuentra incluido en las opciones de esteprogramador.

  • 7/23/2019 Libro PIC

    5/468

    5

    2 Generalidades

    En este captulo se describe la arquitectura de los microcontroladores PIC as como suscaractersticas operativas.

    Estructura de los microcontroladores PIC

    Cada microcontrolador PIC esta integrado por algunos de los siguientes subsistemasprincipales de acuerdo a su operacin:

    Oscilador Lgica de arranque (RESET) Unidad central de procesamiento (CPU) Unidad lgica y aritmtica (ALU) Memoria de programa (EPROM) Memoria de datos (RAM) Puertos de entrada/salida (I/O PORTS) Temporizador 0 (TIMER0) Temporizador guardin (WATCHDOG TIMER)

    Convertidor Anlogo/Digital de 8 bits (ADC) Modulador de ancho de pulso (CPP) Puerto serial sincrnico (SSP) Transmisor/Receptor universal sincrnico/asncrono (USART)

    En los siguientes prrafos sern descritos todos y cada uno de los subsistemas mencionadosanteriormente pero antes mencionaremos otros aspectos que debern ser tomados en cuentapara seleccionar el modelo de microcontrolador adecuado.

    Variedades de los dispositivos

    Una vez que los requerimientos funcionales del dispositivo son especificados, algunas otrasdecisiones debern ser tomadas:

    Tecnologa de la memoria Voltaje de operacin Rango de la temperatura de operacin Frecuencia de operacin Empaquetado (Packaging)

    Variedades de memoria

    Antes que nada mencionaremos que la tecnologa empleada en la fabricacin de la memoriano afectar su operacin lgica, es decir, cuando se haga referencia a la tecnologa de lamemoria o su rango de voltaje, implicar que estas circunstancias no influirn en la manera enque sta opera.

  • 7/23/2019 Libro PIC

    6/468

    6

    MICROCHIP TECHNOLOGY, INC. ofrece tres diferentes tipos de memoria de programa, locual es especificado en el nmero del modelo mediante la primera o primeras letras despus

    de la designacin del tipo de familia. De esta manera tendremos:1. C usado para designar el tipo EPROM (Ejemplo: 12Cxxx)2. CR usado para designar el tipo ROM (Ejemplo: 12CRxxx)3. F usado para designar el tipo FLASH (Ejemplo: 16Fxxx)

    EPROM(Erasable Programable Read Only Memory)

    Este tipo de memoria tiene la capacidad de ser programada y borrada por el usuario y es muyusada en la etapa de desarrollo de proyectos.

    ROM(Read Only Memory)

    Este tipo de memoria es de solamente lectura y el cdigo del programa contenido en esta escargado en el momento de su fabricacin. Tiene la ventaja de que pueden producirse en altosvolmenes y ahorrar tiempo de programacin en las lneas de produccin. Sin embargo, estetipo de tecnologa es muy poco flexible en cuanto a actualizaciones se refiere ya que tiene ladesventaja de que si hubiese algn cambio de versin en el programa, todo el inventario yaproducido quedara inservible, lo que representara una gran prdida econmica.

    FLASH

    Este tipo de memoria es la ms verstil de todas ya que, debido a que es elctricamenteborrable, esta puede ser programada en las lneas de produccin sin desmontar el circuito.Tambin puede ser usada en la etapa de desarrollo. El problema radica en que no todos losmodelos de microcontroladores son fabricados con este tipo de memoria y los que si la poseenson de ms alto costo.

    Opciones del rango de voltaje de operacin

    Todos los microcontroladores operan bajo un rango de voltaje estndar. Sin embargo existenuna serie especial que operan con un rango de voltaje extendido (y en consecuencia un rangode frecuencia reducida). Este tipo de memorias presentan en el nmero de modelo la letra L

    justo despus del nmero de familia. Por ejemplo:

    1. PIC12LCxxx2. PIC16LCRxxx3. PIC16LFxxx

    El rango de voltajes de operacin, de acuerdo al tipo de memoria, se presenta a continuacin:Estndar: C 4.5V 6.0V

    CR 4.5V 6.0VF 4.5V 6.0V

    Extendido: LC 2.5V 6.0VLCR 2.5V 6.0VLF 2.0V 6.0V

  • 7/23/2019 Libro PIC

    7/468

    7

    Variedades de empaquetado

    Existen tres diferentes tipos de empaquetado de los microcontroladores PIC, y ser

    dependiendo de la fase en que se encuentre el desarrollo de la aplicacin, el que deber serelegido.

    El primer tipo de empaquetado es cermico y corresponde a dispositivos con ventanatransparente necesaria para ser borrados mediante emisiones de luz ultravioleta. Este tipo deempaquetado es utilizado principalmente en la etapa de desarrollo debido a que la memoria deprograma (EPROM) puede ser borrada y reprogramada en repetidas ocasiones.

    El segundo tipo de empaque es de plstico de muy bajo costo y es utilizado en la etapa deproduccin.

    Por ultimo existe el empaque denominado DIE, el cual en realidad carece de encapsulado.Este tipo de empaque es muy utilizado en aplicaciones de muy bajo costo as como enaplicaciones donde el espacio en primordialmente reducido.

    Dispositivos borrables con luz ultravioleta (UV)

    La versin de dispositivos de memoria de programa (EPROM) borrables con luz ultravioleta esusada en forma ptima en el desarrollo de prototipos y programas piloto.

    El tiempo requerido para borrar completamente un dispositivo vara de acuerdo a la longitud deonda de la luz, la distancia de la fuente de luz ultravioleta y la tecnologa del proceso defabricacin del dispositivo (que tan pequeas son las celdas de memoria).

    NOTA: Es importante mencionar, que tanto la luz fluorescente como la luz solar emiten luzultravioleta en la longitud de onda de borrado, por lo cual deber ser una prctica importante,

    cubrir la ventada del dispositivo con alguna etiqueta opaca, con el objeto de prevenir, con elpaso del tiempo, que algunas de las celdas de memoria sean borradas de manera accidental.El tiempo de borrado para la luz fluorescente es de aproximadamente tres aos mientras quepara la luz solar es de una semana.

    Dispositivos programables una sola vez (OTP)

    Este tipo de dispositivos, empaquetados en plstico, es muy til en lneas de produccin dondeexiste la posibilidad de tener cambios en el cdigo del programa de control (software). Como sunombre lo indica, stos solo pueden ser programados una sola vez (one time programmable)(OTP).

    Dispositivos reprogramables (FLASH)

    Un dispositivo reprogramable (FLASH) permite que su memoria sea cambiada mediante unacarga elctrica. Esto permite que ste pueda ser borrada y reprogramada an estandomontado en el circuito impreso. Este tipo de dispositivo es empaquetado en plstico de bajocosto.

    A pesar de que esta presentacin es la mejor, lamentablemente no todos los modelos la t ienen,pero los modelos que la tienen, su costo es ms elevado.

  • 7/23/2019 Libro PIC

    8/468

    8

    Dispositivos elctricamente borrables (EEPROM)

    Un dispositivo elctricamente borrable (EEPROM) permite que su memoria sea borrada

    mediante una carga elctrica. Esto permite que ste pueda ser reprogramada an estandomontado en el circuito impreso. Este tipo de dispositivo es empaquetado en plstico de bajocosto.

    Dispositivos de solamente lectura (ROM)

    Este tipo de dispositivos son programados en el momento de su fabricacin, lo que los haceaun ms econmicos ya que adems de su encapsulado de plstico de bajo costo, ahorran elcosto del tiempo empleado en su programacin en la lnea de produccin. Sin embargo, tienenla desventaja de no poder ser utilizados en caso de alguna revisin en el cdigo del programade control (software).

  • 7/23/2019 Libro PIC

    9/468

    9

    3 Oscilador

    En este captulo se describir con detalle todo lo referente al oscilador interno delmicrocontrolador PIC, entendiendo por oscilador, el circuito utilizado para generar la seal dereloj (clock). Esta seal equivale a lo que llamaramos el marca pasos del sistema. Este reloj(clock) es requerido para que el microcontrolador ejecute las instrucciones y los perifricospuedan funcionar.

    Un ciclo de reloj de instruccin (internal instruction clock cycle) (Tcy) es generado con cuatroperiodos de reloj.

    Este circuito oscilador podr ser programado, mediante los bits de configuracin (configurationbits), para operar en uno de ocho diferentes modos dependiendo de su valor. Estos bits deconfiguracin se encuentran contenidos en una posicin de memoria no voltil, la cual esescrita en el momento de la programacin del microcontrolador. Los modos del oscilador sonlos siguientes:

    LP Cristal de baja frecuencia (Potencia)(Low Frequency (Power) Crystal)

    XT Cristal/Resonador(Crystal/Resonator)

    HS Cristal/Resonador de alta velocidad(High Speed Crystal/Resonador)

    RC Resistencia/Capacitor externos(External Resistor/Capacitor)

    EXTRC Resistencia/Capacitor externos(External Resistor/Capacitor)

    EXTRC Resistencia/Capacitor externos con seal CLKOUT(External Resistor/Capacitor with CLKOUT)

    INTRC Resistencia/Capacitor internos de 4 MHz(Internal 4 MHz Resistor/Capacitor)

    INTRC Resistencia/Capacitor interno de 4 MHz con seal CLKOUT(Internal 4 MHz Resistor/Capacitor with CLKOUT)

    Estas opciones del oscilador son disponibles para hacer al microcontrolador suficientementeflexible y ste pueda ser utilizado en muy diversas aplicaciones.

    Las opciones del tipo RC nos permiten tener ahorros en costo, mientras que la opcin LP nospermite tener ahorros en consumo de potencia.

  • 7/23/2019 Libro PIC

    10/468

    10

    Configuraciones del oscilador

    Tipos de osciladores

    Los microcontroladores de la serie 12Cxxx de 12 y 14 bits, poseen nicamente 4 modosdiferentes de operacin del oscilador (programados mediante dos bits de configuracin FOSC1y FOSC0), mientras que la familia de la serie 16Cxxx poseen 8 modos (programados mediantetres bits de configuracin FOSC2 FOSC1 y FOSC0).

    La principal diferencia entre los modos LP, XT y HS es la ganancia del inversor interno delcircuito del oscilador, el cual permite su operacin a diferentes rangos de frecuencia. Las tablas3.1 y 3.2 nos proporcionan suficiente informacin para la seleccin de un modo de operacindel oscilador.

    El uso de la opcin del oscilador con ms baja ganancia resultar en ms bajas corrientes

    dinmicas (IDD) y en consecuencia en un ahorro en el consumo de potencia.El modo RC as como los modos EXTRC con seal CLKOUT tienen la misma funcionalidad.Ellos son nombrados as para ayudar a describir su operacin comparndolos con los otrosmodos.

    Tabla 3.1: Seleccin del modo del oscilador para la serie 12Cxxx

    FOSC1:FOSC0 Modo Ganancia Comentario

    1 1 RC --- Solucin ms econmica(Solo un capacitor y una

    resistencia externas).1 0 HC Alta Para aplicaciones de alta

    frecuencia. Es el que mscorriente consume.

    0 1 XT Media Para frecuencia de cristalestndar. Consumo decorriente medio.

    0 0 LP Baja Para aplicaciones de bajafrecuencia/ bajo consumode potencia.

  • 7/23/2019 Libro PIC

    11/468

    11

    Tabla 3.2: Seleccin del modo del oscilador para la serie 16Cxxx

    FOSC2:FOSC0 Modo Ganancia Comentario

    1 1 1 EXTRC --- Solucin econmica.CLKOUT Mucha variacin en la base

    de tiempo. CLKOUTes habilitadosobre el puerto de e/s (I/O pin).

    1 1 0 EXTRC --- Solucin econmica.Mucha variacin en la base detiempo. CLKOUTes inhibidosobre el puerto de e/s (I/O pin).

    1 0 1 INTRC --- Solucin mas econmica.CLKOUT Oscilador de 4 MHz (calibrable)

    CLKOUT es habilitado sobre elPuerto de e/s (I/O pin).

    1 0 0 INTRC --- Solucin ms econmica.Mucha variacin en la basede tiempo. CLKOUT es inhibidosobre el puerto de e/s (I/O pin).

    0 1 1 --- --- Reservada.

    0 1 0 HS Alta Aplicaciones de alta frecuencia.El que ms corriente consume.

    0 0 1 XT Media Frecuencia de cristal estndar.

    Consumo de corriente medio.

    0 0 0 LP Baja Aplicaciones de baja frecuenciay bajo consumo de potencia.

    Osciladores de Cristal / Resonadores cermicos

    En los modos XT, LP o HS un cristal o un resonador cermico es conectado en los pines OSC1y OSC2 para establecer la oscilacin del microcontrolador (figura 3.1). El diseo del oscilador

    requerir del uso de un cristal de corte paralelo (parallel cut crystal) ya que si se utilizara uncristal de corte serie (series cut crystal) pudiera salirse de la frecuencia de resonancia y nocumplir con las especificaciones requeridas.

    En los modos XT, LP o HS, una fuente de reloj externa puede ser proporcionada sobre el pinde entrada OSC1 (figura 3.1).

  • 7/23/2019 Libro PIC

    12/468

    12

    Figura 3.1: Operacin con cristal o resonador cermicoen los modos HS, XT o LP

    Arranque del oscilador / resonador

    El arranque del oscilador comenzar su operacin conforme el voltaje de alimentacin V DD seincremente a partir de la referencia Vss. El tiempo requerido para que el oscilador comience aoscilar depende de varios factores:

    Frecuencia del cristal / resonador. Valores de los capacitares usados (C1y C2en la figura 3.1). Tiempo de ascenso del voltaje de polarizacin VDD. Temperatura del sistema. Valor de la resistencia en serie Rssi es utilizada (figura 3.1). Modo de operacin del oscilador seleccionado, el cual selecciona la ganancia del

    inversor interno del circuito del oscilador.

    Calidad del cristal Diseo de las pistas del oscilador en el circuito impreso. Ruido del sistema.

    Como puede observarse existen una gran variedad de circunstancias que hacen que vare elcomportamiento de arranque del circuito oscilador pero no es motivo de preocupacin, ya queen realidad no es de mayor trascendencia en la generalidad de las aplicaciones.

    La figura 3.2 nos muestra una grfica del comportamiento de arranque del circuito oscilador.

    Figura 3.2 Ejemplo de las caractersticas de arranque del oscilador

  • 7/23/2019 Libro PIC

    13/468

    13

    Seleccin de los componentes

    La figura 3.1 nos muestra un diagrma elctrico del circuito del cristal o resonador cermico

    del microcontrolador. El valor de la resistencia interna de retroalimentacin ( feedback) RF, seencuentra tpicamente entre el rango de los 2 a los 10 Mohms. La resistencia en serie RS,puede ser requerida con cierto tipo de cristales, pero en general no es utilizada. Los valorestpicos de los capacitares C1 y C2debern ser elegidos de acuerdo al modo de operacin deloscilador y la frecuencia del oscilador utilizada.

    Seleccin de capacitares C1 y C2 para osciladores con resonadores cermicos.

    Para el modo XT operando a una frecuencia de 455 KHz se recomienda usar C1, C2 convalores de 15 pf -100 pf.

    Para el modo XT operando a una frecuencia de 2.0 MHz se recomienda usar C1, C2 convalores de 15 pf - 68 pf.

    Para el modo XT operando a una frecuencia de 4.0 MHz se recomienda usar C1, C2 convalores de 15 pf - 68 pf.

    Para el modo HS operando a una frecuencia de 8.0 MHz se recomienda usar C1, C2 convalores de 10 pf -68 pf.

    Para el modo HS operando a una frecuencia de 16.0 MHz se recomienda usar C1, C2 convalores de 10 pf - 22 pf.

    Para el modo HS operando a una frecuencia de 20.0 MHz se recomienda usar C1, C2 convalores de 10 pf.

    Seleccin de capacitares C1 y C2 para osciladores con cristal.

    Para el modo LP operando a una frecuencia de 32 KHz se recomienda usar C1, C2 con valoresde 68 pf - 100 pf.

    Para el modo LP operando a una frecuencia de 200 KHz se recomienda usar C1, C2 convalores de 15 pf - 30 pf.

    Para el modo XT operando a una frecuencia de 100 KHz se recomienda usar C1 de 68 pf 150pf y C2 de 150 pf - 200 pf.

    Para el modo XT operando a una frecuencia de 2 MHz se recomienda usar C1, C2 con valores

    de 15 pf - 30 pf.Para el modo XT operando a una frecuencia de 4 MHz se recomienda usar C1, C2 con valoresde 15 pf - 30 pf.

    Para el modo HS operando a una frecuencia de 8 MHz se recomienda usar C1, C2 con valoresde 15 pf - 30 pf.

    Para el modo HS operando a una frecuencia de 10 MHz se recomienda usar C1, C2 convalores de 15 pf - 30 pf.

    Para el modo HS operando a una frecuencia de 20 MHz se recomienda usar C1, C2 convalores de 15 pf - 30 pf.

  • 7/23/2019 Libro PIC

    14/468

    14

    Calibrando el circuito oscilador

    Debido a que los microcontroladores operan sobre amplios rangos de frecuencia, voltaje y

    temperatura, dependiendo de la parte y versin usada y tambin de la variacin de lascomponentes tales como cristales, capacitores, etc., y estos a su vez variando en calidad ymanufactura, es necesario asegurar su operacin adecuada mediante la validacin de estoscomponentes para que cumplan con los requerimientos de la aplicacin.

    Existen una gran variedad de factores que intervienen en la seleccin, tales como:

    Ganancia del amplificador Frecuencia deseada Frecuencia de resonancia del cristal Temperatura de operacin Rango de la fuente de voltaje Tiempo de arranque

    Estabilidad Tiempo de vida del cristal Consumo de potencia Simplificacin del circuito Uso de componentes estndar Etc.

    Determinando los valores ptimos para los cristales, el modo de operacin del oscilador,C1, C2 y Rx.

    El mejor mtodo para la seleccin de componentes es la aplicacin de un conocimiento bsicoy una gran cantidad de mediciones y pruebas.

    Cristales

    Estos son usualmente seleccionados nicamente por su frecuencia de resonancia en paralelo,pero sin embargo existen otros parmetros importantes para su diseo, tales como latemperatura y la tolerancia en frecuencia. La nota de aplicacin AN588 de MICROCHIPTECHNOLOGY, INC.es una excelente referencia para conocer ms acerca de la operacin delos cristales.

    El circuito del oscilador interno de los microcontroladores PIC es uno del tipo paralelo, por loque tambin es necesario seleccionar un cristal del mismo tipo y la capacitancia de carga esusualmente especificada en el rango de 20 a 32 pf.

    El modo de operacin del reloj (clock mode) es elegido principalmente con la especificacin delparmetro FOSCbasado en la frecuencia. Los modos de operacin del reloj (exceptuando RC)son simplemente seleccin de ganancias, bajas ganancias para bajas frecuencias y altasganancias para altas frecuencias.

    C1 y C2 deber ser seleccionado de la manera anteriormente expuesta. Un mtodo paramejorar el arranque del oscilador es utilizar un valor de C2 mayor que C1. Esto causar unmayor corrimiento de fase en el encendido y acelerar su arranque.

  • 7/23/2019 Libro PIC

    15/468

  • 7/23/2019 Libro PIC

    16/468

    16

    La figura 3.4 muestra la implementacin de un circuito oscilador externo resonante en paralelomientras que la figura 3.5 nos muestra uno resonante en serie.

    Figura 3.4 Circuito oscilador externo resonante en paralelo

    Figura 3.5 Circuito oscilador externo resonante en serie

    Cuando el microcontrolador es alimentado con un reloj externo tal y como muestran las figuras3.4 y 3.5, entonces ste deber ser configurado para operar en modo LP, XT o HS.

    Oscilador RC externo

    Para las aplicaciones que no sean sensibles al tiempo, la opcin EXTRC ofrece un ahorroadicional en costo. La frecuencia del oscilador del tipo RC es una funcin de: El voltaje dealimentacin, la resistencia externa (REXT), el capacitor externo (CEXT) y la temperatura deoperacin. Adicionalmente a esto, la frecuencia del oscilador variar de unidad a unidad debidoa la variacin de los procesos de fabricacin de los componentes. Es ms, an el tipo deempaquetado de la capacitancia de CEXT afectar la frecuencia de oscilacin, especialmentepara valores bajos. Las tolerancias de estos componentes debern ser tomadas en cuentatambin. La figura 3.6 nos muestra la manera de conectar este tipo de oscilador. Sin embargoes importante hacer notar que para valores de REXTmenores a 2.2 Kohms, la operacin deloscilador podr venir a ser inestable o parar completamente. Asimismo, para valores de REXTmuy altos (como por ejemplo 1 Mohms), la operacin del oscilador vendr a ser sensible al

  • 7/23/2019 Libro PIC

    17/468

    17

    ruido y humedad. Por lo anterior, el valor de la REXTrecomendado deber estar entre el rangode 3 y 100 Kohms.

    Figura 3.6 Oscilador del modo EXTRC

    Aunque el oscilador podra operar sin un capacitor externo (CEXT= 0 pf), se recomienda usarvalores mayores a 20 pf por razones de estabilidad y ruido, ya que usando valores menores osin capacitores, la frecuencia de oscilacin podra variar dramticamente debido a cambios encapacitancias externas tales como las contenidas en las pistas del circuito impreso (PCB), ascomo las del empaquetado del circuito.

    Por otra parte, la frecuencia del oscilador dividida por 4 se encuentra disponible sobre el pinOSC2 / CLKOUT y puede ser usado para prueba del mismo o para sincronizar algn otrocircuito lgico (figura 5.3).

    Arranque en RC

    Cuando es usado el modo RC, este iniciar su oscilacin inmediatamente despus de que elvoltaje de alimentacin alcance el umbral de entrada de acuerdo a las especificacioneselctricas del microcontrolador. Es decir, el circuito comenzar a oscilar de acuerdo alincremento de voltaje de alimentacin. El tiempo requerido para que el RC comience a oscilardepender de muchos factores entre los que se encuentran:

    El valor de resistencia utilizada El valor de capacitancia utilizada El tiempo de levantamiento del voltaje de alimentacin VDD La temperatura del sistema

    Oscilador RC interno de 4 MHz

    El oscilador RC interno (no disponible en todos los modelos) proporciona un reloj fijo de 4 MHznominal operando con VDD= 5V y 25 C (ver especificaciones tcnicas del microcontrolador enuso).

    Para contrarrestar alguna variacin producida en el oscilador, existe un registro OSCCAL cuyovalor es utilizado para calibrar la frecuencia del oscilador RC interno. El valor de calibracin queMICROCHIPprograma dentro del microcontrolador compensar las variaciones de frecuenciadel oscilador provocadas por variaciones en el proceso de manufactura. Los bits CAL3:CAL0son usados para una calibracin fina dentro de una ventana de frecuencia.

  • 7/23/2019 Libro PIC

    18/468

    18

    Valores ms altos en los bits CAL3:CAL0 (de 0000 a 1111) producir un reloj ms veloz.

    Cuando la frecuencia de 4 MHz no pueda ser obtenida del ajuste de los bits CAL3:CAL0,entonces ser necesario incrementar o decrementar los bits CALFST o CALSLW, los cualesson usados para obtener un ajuste (offset) positivo o negativo del valor de la ventana defrecuencia mencionada anteriormente. As, prendiendo el bit CALFST nos permite ajustar eloscilador a una mayor frecuencia mientras que si prendemos el bit CALSLW nos permiteajustar el oscilador a una menor frecuencia. Despus de un ciclo de arranque (RESET) delmicrocontrolador, el registro OSCCAL es forzado al valor medio (CAL3:CAL0 = 7, CALFST = 0y CALSLW = 0).

    Registro OSCCAL

    Bit7:4 CAL3:CAL0: Bits de calibracin del oscilador RC interno0000 = Frecuencia ms baja dentro del rango, mientras que1111 = Frecuencia ms alta dentro del rango.

    Bit3 CALFST: Bit de ajuste (offset) del rango del oscilador1 = Incrementa la frecuencia del oscilador RC interno dentro de la

    ventana acotada por CAL3:CAL0.0 = No ajuste (offset)

    Bit2 CALSLW: Bit de ajuste (offset) del rango del oscilador1 = Decrementa la frecuencia del oscilador RC interno dentro de

    la ventana acotada por CAL3:CAL0.0 = No ajuste (offset)

    Bit1:0 No implementados: Ledos como 0

    Nota: Estos bits debern ser escritos como 0 cuando seamodificado el registro OSCCAL para compatibilidad con futurosmodelos.

    R = Bit de lectura W = Bit de escrituraU = Bit no implementado, ledo como 0- n = Valor que toma en el arranque (Power on Reset) (POR)

    Nota: El registro OSCCAL es usado para calibrar el oscilador RC interno delmicrocontrolador provocado por las variaciones del proceso. El valordel registro OSCCAL no debera ser modificado del valorproporcionado por MICROCHIPy todos los ajustes necesarios debernser hechos por el programa (software) de aplicacin.

    La figura 3.7 muestra las posibles frecuencias del microcontrolador a partir de un puntodescalibrado (a VDD= 5V, 25 C y OSCCAL = 70h), as como los cambios realizables por elregistro OSCCAL.

  • 7/23/2019 Libro PIC

    19/468

    19

    Figura 3.7 Frecuencia ideal del oscilador RC interno vs. Valor OSCCAL

    La figura 3.8 muestra un ejemplo de un microcontrolador donde mediante la seleccin de unode los valores CAL3:CAL0, la frecuencia de oscilacin puede ser corregida a 4 MHz. Estos bitspueden ser considerados como un fino ajuste de la frecuencia. Algunas veces la frecuencia delmicrocontrolador en un punto descalibrado no puede ser corregido a 4 MHz mediante el ajustefino de los valores de los bits CAL3:CAL0. Es entonces cuando son usados los otros 2 bitsdisponibles, el CALSLW y el CALFST, los cuales permiten un ajuste de mayor rango (positivo onegativo) para mover la frecuencia dentro del rango en el cual el ajuste fino pueda trabajar. La

    accin de estos bits puede ser apreciada en las figuras 3.9 y 3.10.Figura 3.9 Ajuste positivo CALFST de la frecuencia del oscilador RC

  • 7/23/2019 Libro PIC

    20/468

    20

    Figura 3.10 Ajuste negativo CALSLW de la frecuencia del oscilador RC

    Una instruccin de calibracin es programada en la ltima direccin de la memoria deprograma. Esta instruccin contiene el valor de calibracin para el oscilador RC interno. Estevalor es programado como una instruccin RETLW XX, donde XX es el valor de calibracin.Para disponer de este valor deber usarse la instruccin CALL YY, donde YY corresponde a laltima direccin de la memoria de programa del microcontrolador. Una vez ejecutada estainstruccin, el valor ser cargado en el registro W. Posteriormente deber ejecutarse lainstruccin MOVWF OSCCAL para cargar este valor en el registro de calibracin del oscilador

    RC interno. La tabla 3.5 muestra la localidad del valor de calibracin dependiendo del tamaode la memoria de programa.

    Tabla 3.5: Localidad del valor de calibracin

    Nota 1: Observe que cuando es borrado un microcontrolador de ventana con luz UV,tambin ser borrado su valor de calibracin programado en ste, por lo queantes de hacerlo deber salvar dicho valor. Una buena prctica es el escribir elvalor de calibracin sobre su empaque. As, este valor podr ser reprogramadoen la prxima programacin.

    Nota 2: Los bits de OSCCAL no se encuentran implementados y debern serescritos como 0. Esto ayudar a asegurar la compatibilidad con futurosmodelos.

  • 7/23/2019 Libro PIC

    21/468

    21

    Reloj de salida (CLOCK OUT)

    El oscilador RC interno puede ser configurado a proporcionar una seal de reloj de salida sobre

    el pin CLKOUT, mediante la programacin de la direccin de la palabra de configuracin(Configuration word) 2007h. As, los bits FOSC2, FOSC1, FOSC0 debern ser programadoscomo 101 para seleccionar un oscilador RC interno, o bien, 111 para un oscilador RCexterno.

    La seal CLKOUT, la cual es dividida por 4, es utilizada para propsitos de prueba o parasincronizar algn otro circuito lgico.

    Cuando el valor de calibracin del oscilador RC interno es borrado accidentalmente, la opcinde CLKOUT permitir determinar cual debera ser el valor de calibracin. Esto se lograescribiendo un programa que modifique (incrementar / decrementar) el valor del registroOSCCAL. As, cuando la seal CLKOUT sea de 1 MHz (1.5%) a 5V, 25 C, entonces el valordel registro OSCCAL tendr el valor de calibracin correcto. Este valor deber ser presentadoen un puerto o enviado serialmente para su posterior programacin.

    Efectos del modo de reposo (sleep) sobre el oscilador interno del microcontrolador.

    Cuando el microcontrolador ejecute una instruccin SLEEP, el reloj y el oscilador de ste sonapagados y el dispositivo es mantenido al inicio de un ciclo de instruccin (estado Q1). Con eloscilador apagado, las seales de los pines OSC1 y OSC2 dejaran de oscilar. Debido a quetodas las corrientes de los transistores han sido removidas, el estado de reposo ( sleep) ser elque logre el menor consumo de corriente (slo corrientes de fuga). As pues, habilitandocualquier opcin que opere en el modo de reposo (sleep) aumentar el consumo de corriente.El usuario podr despertar el microcontrolador de su estado de reposo (sleep) mediante unaseal externa de arranque (Reset), el arranque del temporizador de guardia (Watchdog TimerReset) o por una interrupcin.

    Efectos del arranque (Reset) sobre el oscilador interno del microcontrolador.

    El arranque (Reset) del microcontrolador no tiene ningn efecto sobre el oscilador interno. Eloscilador continuar operando normalmente. Mientras el microcontrolador permanece en lacondicin de arranque (Reset) la lgica se mantendr en el estado Q1 de manera tal quecuando ste salga de esta condicin, ste se encuentre en el inicio de un ciclo de instruccin.

    El pin OSC2, cuando sea usado como una seal de reloj de salida (modo EXTRC), sermantenido en un estado bajo durante el arranque (Reset) y tan pronto como el pin MCLR seencuentre a un voltaje alto (VIH), el oscilador RC comenzar a operar.

    Retardos al encendido (power-up)

    Existen dos temporizadores (timers) que proporcionan retardos en el momento del encendido(power-up) del microcontrolador. Uno de ellos es el temporizador de arranque del oscilador(OST), el cual mantendr el microcontrolador en el estado de arranque (Reset) hasta que eloscilador de cristal se encuentre estable. El otro temporizador es el de encendido (PWRT), elcual proporciona un retardo fijo de 72 milisegundos (nominal) durante el encendido (POR yBOR) con la finalidad de mantener al microcontrolador en el estado de arranque (Reset)mientras se estabiliza la fuente de poder. Con estas dos opciones, muchas aplicaciones norequerirn de circuitos de arranque externos.

  • 7/23/2019 Libro PIC

    22/468

    22

  • 7/23/2019 Libro PIC

    23/468

    23

    4 Arranque (RESET)

    La lgica de arranque (Reset) es utilizada para poner al microcontrolador en un estadoconocido. Existen varias fuentes que generan un estado de arranque ( Reset), las cualespueden ser determinadas mediante los bits de estado (status) del dispositivo. La lgica dearranque (Reset) fu diseada con caractersticas tales que reducen el costo del sistema eincrementan la confiabilidad del mismo. Existen varias clases de arranque (Reset):

    Arranque de encendido (Power-on Reset) (POR). Arranque mediante el pin MCLR durante operacin normal. Arranque mediante el pin MCLR durante el estado de reposo (Sleep). Arranque mediante el temporizador de guardia (Watchdog timer) durante operacin

    normal. Arranque del tipo Brown-out (BOR) Arranque por deteccin de error de paridad (Parity Error Reset) (PER).

    Muchos registros no son afectados por una condicin de arranque (Reset); su estado (status)es desconocido bajo una condicin de arranque del tipo POR y sin cambio para los otros tiposde condicin de arranque. Los registros restantes son forzados a un estado de arranque(Reset) bajo todo tipo de condiciones de arranque.

    Los bits de paridad (Parity bits) pueden ser usados para verificar el contenido de la memoria deprograma.

    Muchos registros no son afectados bajo la condicin de despertar del temporizador de guardia(WDT wake-up) debido a que ste es visto como una conclusin de la operacin normal. Losbits de estado (status) TO, PD, POR, BOR y PER son prendidos o apagados de acuerdo adiferentes condiciones de arranque, segn se indica en la tabla 4.2. Estos bits son empleadospor el programa de control (software) para determinar cual fu la naturaleza de la condicin dearranque (Reset) ocurrida. Ver la tabla 4.4 para observar una completa descripcin del estadode los registros bajo esta condicin.

    En la figura 4.1 se muestra un diagrma de bloques simplificado del circuito de arranque(Reset) contenido en el microcontrolador. Este diagrma de bloques es generalizado y contiene

    todos los tipos de arranque, por lo que deber revisarse las especificaciones tcnicas delmodelo de microcontrolador utilizado para ver que tipos de arranque son disponibles.

    Recuerde que mientras el microcontrolador se encuentre en el estado de arranque (Reset), lafase del reloj interno se mantendr en Q1 (al inicio del ciclo de instruccin). Asimismo esimportante sealar que el pin MCLR de entrada contiene un filtro para rechazar ruido y algunospulsos pequeos.

  • 7/23/2019 Libro PIC

    24/468

    24

    Figura 4.1 Diagrma de bloques simplificado del circuito de arranque

    Nota 1: Este es un oscilador independiente al oscilador RC del pin CLKIN o el oscilador INTRC.2: Las caractersticas de las cajas punteadas no son disponibles en todos los modelos.3. En algunos modelos, este pin puede ser configurado como un puerto de entrada.4. En modelos antiguos, el bit de configuracin es definido como PWRTE = 1 como habilitado

    (enabled), mientras que en los modelos recientes PWRTE = 0 como habilitado (enabled).

    Arranque de encendido (Power-on Reset) (POR)

    Un pulso de arranque de encendido (POR) es generado en el microcontrolador cuando esdetectado un levantamiento del voltaje de alimentacin VDD. Para tomar ventaja de este tipo dearranque, conecte el pin MCLR a VDDa travs de una resistencia como se muestra en la figura4.2. Esto eliminar las componentes externas necesarias para crear un arranque de encendido.Ver especificaciones tcnicas del modelo utilizado.

  • 7/23/2019 Libro PIC

    25/468

    25

    Figura 4.2 Utilizando el tipo de arranque POR

    Cuando el microcontrolador salga de la condicin de arranque (Reset) (inicio de la operacinnormal), los parmetros de operacin tales como voltaje, temperatura, frecuencia, etc. debernestar dentro de los rangos permisibles de acuerdo a las especificaciones tcnicas delmicrocontrolador.

    La figura 4.3 muestra un posible circuito POR para una rampa de voltaje de alimentacin lenta.El circuito externo es necesario nicamente si la rampa es demasiado lenta. El diodo Dayudar a descargar rpidamente al capacitor Ccuando el voltaje de alimentacin VDDcaiga.

    Figura 4.3 Circuito externo de arranque de encendido para rampa lenta

    Temporizador del voltaje de alimentacin al encendido (Power-up Timer) (PWRT)

    Este temporizador genera un retardo de 72 milisegundos sobre el arranque de encendido(POR) o sobre el arranque Brown-out (BOR). Ver parmetros en las especificaciones tcnicasdel microcontrolador a usar. El temporizador opera con un oscilador RC interno dedicado. El

    microcontrolador es mantenido en el estado de arranque (Reset) mientras permanece activodicho temporizador (PWRT), generando as un retraso que permita alcanzar un nivel de voltajede alimentacin VDD aceptable. Este temporizador puede ser habilitado o deshabilitadomediante el bit de configuracin correspondiente (power-up timer enable bit). Este temporizadordebera habilitarse cuando es habilitado el arranque Brown-out (BOR). Si el bit PWRTE = 0significa que se encuentra habilitado (esta condicin es para microcontroladores actuales, yaque en versiones anteriores era el caso invertido, es decir, el bit PWRTE = 0 significabadeshabilitado). Refirase a las especificaciones tcnicas del modelo empleado para asegurarsede esta condicin.

    El tiempo de retardo generado por este temporizador variar de dispositivo a dispositivo debidoal voltaje de alimentacin VDD, la temperatura y las variaciones del proceso de fabricacin.

  • 7/23/2019 Libro PIC

    26/468

    26

    Temporizador del arranque del oscilador (Oscillator Start-up timer) (OST)

    Este temporizador proporciona un retardo equivalente a 1024 ciclos (desde la entrada OSC1)

    despus de que el temporizador PWRT ha concluido su conteo, lo que asegura la estabilidaddel oscilador de cristal o resonador. El temporizador OST es invocado nicamente en losmodos XT, LP y HS, utilizndolo solo en el arranque de voltaje de alimentacin al encendido(Power-on Reset), el arranque Brown-out o al despertar (wake-up) del estado de reposo(sleep).

    Este temporizador cuenta los pulsos del oscilador sobre el pin OSC1/CLKIN y la longitud de suretardo depender de la frecuencia del cristal o resonador.

    La figura 4.4 muestra la operacin del circuito OST en conjunto con el temporizador del voltajede alimentacin de encendido (power-up timer). Observe que para cristales de baja frecuenciael tiempo de retardo del arranque vendr a ser muy grande.

    Figura 4.4 Tiempo de arranque del oscilador

    Secuencia de encendido (Power-up)

    En el encendido del voltaje de alimentacin, la secuencia del retardo se describe acontinuacin: Primeramente el arranque de encendido (POR) es detectado internamente y, siste ha sido habilitado, el retardo del temporizador del voltaje de alimentacin al encendido(PWRT) es activado. Una vez que ha concluido dicho retardo, el temporizador del arranque deloscilador (OST) inicia su conteo. Aqu podemos ver que el retardo total variar de acuerdo a laconfiguracin del oscilador y al estado del bit PWRTE. Por ejemplo, en el modo RC con el bitPWRTE = 1 (PWRT deshabilitado), no existir ningn retardo. Las figuras 4.5, 4.6 y 4.7 nosmuestran varias secuencias de retardo.

    Debido a que los retardos ocurren a partir del pulso interno del POR, si MCLR se mantuvierabajo un tiempo suficientemente largo, los retardos expiraran. Posteriormente, poniendo MCLR

  • 7/23/2019 Libro PIC

    27/468

    27

    alto iniciara la ejecucin del programa inmediatamente (figura 4.7). Esto es muy til parapropsitos de prueba o para sincronizar ms de un microcontrolador operando en paralelo.

    Si el voltaje de alimentacin del microcontrolador no se encontrara dentro de lasespecificaciones elctricas al final del retardo, el pin MCLR/VPPdeber mantenerse bajo hastaque ste cumpla con dichas especificaciones. El uso de un retardo generado con un arreglo RCexterno es suficiente en muchas de estas aplicaciones.

    La tabla 4.1 muestra los retardos que ocurren en varias situaciones, mientras que la figura 4.5a 4.8 nos muestran cuatro casos diferentes que pueden ayudar al microcontrolador en elencendido.

    Tabla 4.1 Retardos en varias situaciones

    Figura 4.5 Secuencia de retardo en el encendido (Power-up) (MCLR conectado a VDD)

  • 7/23/2019 Libro PIC

    28/468

    28

    Figura 4.6 Secuencia de retardo en el encendido (Power-up) (MCLR no conectado a VDD)Caso 1

    Figura 4.7 Secuencia de retardo en el encendido (Power-up) (MCLR no conectado a VDD)Caso 2

    Figura 4.8 Tiempo de subida del voltaje de alimentacin lento (MCLR conectado a VDD)

  • 7/23/2019 Libro PIC

    29/468

    29

    Arranque tipo Brown-out (BOR)

    El circuito correspondiente a este tipo de arranque pone al microcontrolador en la condicin de

    arranque (Reset) cuando el voltaje de alimentacin cae por debajo del punto BVDD. Estoasegura que el microcontrolador no continuar la ejecucin del programa en caso de que elvoltaje de alimentacin se encuentre fuera del rango de operacin. El Arranque tipo Brown-out (BOR) es comnmente utilizado en aplicaciones de lnea de corriente alterna (AC) o bienen aplicaciones usando bateras de gran capacidad, donde grandes cargas pueden serconectadas (tales como automotrices) y causar al microcontrolador una cada temporal devoltaje por debajo de las especificaciones mnimas de operacin. Antes de usar este tipo dearranque verifique que las especificaciones elctricas del modelo de microcontrolador a utilizarcumplan con los requerimientos de la aplicacin.

    El circuito de arranque tipo Brown-out es controlado mediante el bit de configuracin BODEN,el cual podr ser deshabilitado (si este es programado como 0) o habilitado (si es programadocomo 1). As, si el voltaje VDD cae por debajo del voltaje BVDD (tpicamente 4.0 V), elmicrocontrolador ir al estado de arranque (Reset) y permanecer en este estado hasta que elvoltaje VDD nuevamente sobrepase el punto BVDD y el temporizador de encendido (Power-upTimer) termine su conteo de 72 milisegundos adicionales. Ahora bien, si nuevamente cayera elvoltaje por debajo del voltaje BVDD mientras el temporizador se encuentra operando, elmicrocontrolador volver a la condicin de arranque (Reset) y el temporizador reiniciar suconteo. La figura 4.9 muestra esta situacin.

    Con el bit de configuracin BODEN = 1, todos los voltajes por debajo del punto BVDD,mantendrn al microcontrolador en estado de arranque (Reset).

    Figura 4.9 Situaciones del arranque Brown-out

    Recuerde que no todos los modelos poseen este tipo de circuito o que el nivel de voltaje BV DDpudiera ser el no deseado. En estos casos podrn usarse algn circuito externo. Las figuras4.10 y 4.11 nos muestran dos ejemplos de circuitos externos que pudieran ser implementados.Obviamente, cada ejemplo deber ser evaluado para ver si cumple con los requerimientos dela aplicacin.

  • 7/23/2019 Libro PIC

    30/468

    30

    Figura 4.10 Circuito externo Brown-out nmero 1

    Figura 4.11 Circuito externo Brown-out nmero 2

    Registros y valores de los bits de estado

    Las tablas 4.2 y 4.3 nos muestran los valores de los bits de estado cuando alguna de lasdiversas condiciones de encendido (Reset) ocurre, as como los registros involucrados y susafectaciones.

  • 7/23/2019 Libro PIC

    31/468

    31

    Tabla 4.2 Bits de estado y su significado

    Tabla 4.3 Condiciones de inicializacin para registros especiales

  • 7/23/2019 Libro PIC

    32/468

    32

    Tabla 4.4 Condiciones de inicializacin para los registros de funcin especial.

  • 7/23/2019 Libro PIC

    33/468

    33

    Tabla 4.4 Condiciones de inicializacin para los registros de funcin especial.(Continuacin)

  • 7/23/2019 Libro PIC

    34/468

    34

    Registros de Control de Poder (Power Control) y de Estado (Status)

    El registro de control de poder (PCON) contiene un bit de estado que permite la diferenciacin

    entre un arranque de alimentacin (Power-on Reset) (POR), un arranque MCLR externo(external MCLR Reset) o un arranque de guardia (WDT Reset). Este registro de 4 bits, tambincontiene un bit de estado para determinar si un arranque Brown-out (Brown-out Reset)ocurri.

    El bit BOR (Brown-out Reset) es desconocido en un arranque de encendido (Power-on Reset).Inicialmente debe ser puesto a 1 por el usuario y revisado sobre subsecuentes arranquespara ver si BOR = 0, lo que indicara que un arranque Brown-out ha ocurrido. El bit deestado de BOR es uno del tipo no importa (dont care) si el circuito Brown-out esdeshabilitado (mediante el apagado del bit BODEN en la palabra de configuracin(Configuration word).

    El bit POR (Power-on Reset) es apagado al generarse un arranque de alimentacin (Power-onReset) y no se afectar en ninguna otra circunstancia. El usuario deber encender este bitseguido de un arranque de alimentacin (Power-on Reset). Si subsecuentes arranquesocurrieran y el bit POR resultara ser 0, indicara que un arranque de encendido (Power-onReset) habr ocurrido.

    El bit PER (Parity Error Reset) se apagar si se presenta la condicin de arranque (Reset)provocado por la deteccin de un error de paridad. Este bit deber ser encendido por elprograma del usuario. Adicionalmente, este bit es puesto a 1, si la condicin de arranque deencendido (Power-on Reset) se presenta.

    El bit MPEEN (Memory Parity Error Enable) refleja su estado en la palabra de configuracin(Configuration word). Este bit no es afectado en ninguna otra circunstancia.

    Registro PCON

    bit7 MPEEN: Bit del estado del circuito de deteccin de error de paridad en memoria.Este bit refleja el valor del bit de configuracin MPEEN.

    bit 6:3 No implementado: Ledo como 0.

    bit 2 PER: Bit del estado de la deteccin de error de paridad en memoria de programa.1 = Ninguna deteccin de error de paridad en memoria ha ocurrido.

    0 = Una deteccin de error de paridad en memoria de programa ha ocurrido.(Debe ser puesto a 1 por el programa despus de su deteccin).

    bit 1 POR: Bit del estado de la deteccin de arranque de encendido (Power-on Reset)1 = Ningn arranque de encendido (Power-on Reset) ha ocurrido.0 = Una deteccin de arranque de encendido (Power-on Reset) ha ocurrido.

    (Debe ser puesto a 1 por el programa despus de su deteccin).

    bit 0 BOR: Bit del estado de la deteccin de arranque Brown-out (Brown-out Reset)1 = Ningn arranque Brown-out (Brown-out Reset) ha ocurrido.0 = Una deteccin de arranque Brown-out (Brown-out Reset) ha ocurrido.

    (Debe ser puesto a 1 por el programa despus de su deteccin).

  • 7/23/2019 Libro PIC

    35/468

    35

    Nota: R = bit de lectura W = bit de escritura u = bit sin cambio

    U = bit no implementado, ledo como 0 - n = Valor al arranque POR

    El registro STATUS contiene dos bits (TO y PD) los cuales, cuando son usados en conjuncincon los bits del registro PCON, proporcionan al usuario suficiente informacin para determinarla causa del arranque (Reset).

    Registro STATUS

    bit7 IRP: Bit de seleccin del banco de registros (Register Bank Select)(usado para direccionamiento indirecto)1 = Banco 2, 3 (100h 1FFh)0 = Banco 0, 1 (00h FFh)

    Para microcontroladores con bancos 0 y 1 nicamente, este bit es reservado y debermantenerse en 0.

    bit 6:5 RP1:RP0: Bit de seleccin del banco de registros (Register Bank Select)(usado para direccionamiento directo)

    11 = Banco 3 (180h 1FFh)10 = Banco 2(100h 17Fh)01 = Banco 1 (80h FFh)00 = Banco 0 (00h 7Fh)

    Cada banco es de 128 bytes. Para microcontroladores con banco 0 y 1 nicamente,este bit es reservado y deber mantenerse en 0.

    bit 4 TO: Bit de tiempo fuera (Time-out bit)1 = Despus del encendido (Power-up), la instruccin CLRWDTo la instruccin SLEEP.0 = Un tiempo fuera del temporizador de guardia (WDT) ocurri.

    bit 3 PD: Bit de voltaje de alimentacin cado (Power down bit)1 = Despus del encendido (Power-up) o la instruccin CLRWDT.0 = Por la ejecucin de la instruccin SLEEP.

    bit 2 Z: Bit cero (Zero bit)

    1 = El resultado de una operacin aritmtica o lgica fu cero.0 = El resultado de una operacin aritmtica o lgica NO fu cero.

    bit 1 DC: Bit digito acarreado / prstamo (Digit carry / borrow bit)1 = Un acarreo del cuarto bit menos significante en el resultado ocurri.0 = Ningn acarreo del cuarto bit menos significante en el resultado ocurri

    bit 0 C: Bit acarreo / prstamo (Carry / borrow bit)(Solo en las instrucciones ADDWF, ADDLW, SUBLW, SUBWF)

    1 = Un acarreo del bit ms significante en el resultado ocurri.0 = Ningn acarreo del bit ms significante en el resultado ocurri.

    Nota: Para prstamo (borrow) la polaridad es invertida. Una resta es ejecutada por sumar el

  • 7/23/2019 Libro PIC

    36/468

    36

    complemento a 2 del segundo operando. Para las instrucciones de rotacin (RRF,RLF), este bit es cargado con cualquiera de los bits alto (bit 7) o bajo (bit 0) del registrofuente (source register).

    Nota: R = bit de lectura W = bit de escritura u = bit sin cambio

    U = bit no implementado, ledo como 0 - n = Valor al arranque POR

  • 7/23/2019 Libro PIC

    37/468

    37

    5 Arquitectura

    El alto desempeo de los microcontroladores PIC puede ser atribuido al nmero decaractersticas comnmente encontradas en microprocesadores RISC (Reduced InstructuctionSet Complex). Estas incluyen:

    Arquitectura tipo HARVARD

    Instrucciones de palabra larga (Long word) Instrucciones de palabra simple (Single word) Instrucciones de ciclo sencillo (Single cycle) Yuxtaposicin de la Instruccin (Instruction pipelining) Conjunto reducido de instrucciones Arquitectura de registros en fila (Register File Architecture) Instrucciones ortogonales (simtricas)

    La figura 5.2 muestra un arreglo de conductores (bus) de memoria central para losmicrocontroladores de la serie 16Cxxx.

    Arquitectura HARVARD

    Este tipo de arquitectura se caracteriza por tener la memoria de programa (EPROM) y lamemoria de datos (RAM) en forma separada, siendo accedidas desde diferentes buses. Estacaracterstica mejora el ancho de banda comparado con el tipo de arquitectura tradicional VonNeumann, el cual contempla la memoria de programa y la memoria de datos sobre el mismobus de acceso. Para ejecutar una instruccin en un microprocesador con arquitectura VonNeumann ste debe hacer uno o ms (generalmente ms) accesos a travs del bus de 8 bitspara buscar la instruccin y posteriormente el dato, operarlo y posiblemente escribirlo. Comopuede verse en esta descripcin, este bus puede estar extremadamente congestionado. Adiferencia de lo anterior, en la arquitectura Harvard la instruccin es buscada en un solo ciclode instruccin (single instruction cycle) (los 12 y 14 bits en la serie 12Cxxx y 14 bits en la serie16Cxxx). As, mientras la instruccin es buscada accediendo la memoria de programa, lamemoria de datos es leda o escrita a travs de otro bus independiente. Estos busesseparados permiten que una instruccin sea ejecutada mientras es buscada la siguienteinstruccin. La figura 5.1 muestra una comparacin entre la arquitectura Harvard y la VonNeumann.

  • 7/23/2019 Libro PIC

    38/468

    38

    Figura 5.1 Bloques de las arquitecturas Harvard vs. Von Neumann

    Instrucciones de palabra larga (Long word)

    Las instrucciones de palabra larga poseen un bus de instrucciones ms amplio (ms bits) queel bus de memoria de datos de 8 bits. Esto es posible debido a que los dos buses seencuentran separados y por tal motivo el tamao de la instruccin puede ser diferente que los 8bits de la memoria de datos. Lo anterior permite un uso ms eficiente de la memoria deprograma.

    Instrucciones de palabra simple (Single word)

    Los cdigos de operacin de las instrucciones de palabra simple son de 12 y 14 bits (para laserie 12Cxxx) y 14 bits (para la serie 16Cxxx). Un bus de acceso a memoria de programapuede buscar, en un solo ciclo, la instruccin completa. Esto implica que el tamao de lamemoria de programa sea el tamao del programa (en nmero de instrucciones) ya que todaslas localidades son vlidas.

    En la arquitectura Von Neumann, la mayora de las instrucciones son multi-byte. En general, unmicroprocesador con 4 Kbytes de memoria de programa equivaldra a 2 Kbytes deinstrucciones. Esta relacin de 2:1 es en general y depende del cdigo de la aplicacin.Adicionalmente, debido a que cada instruccin puede abarcar mltiples bytes, no existeninguna seguridad de que cada localidad contenga una instruccin vlida.

    Yuxtaposicin de la Instruccin (Instruction pipelining)

    La Yuxtaposicin de la Instruccin es un traslape de una bsqueda de la instruccin con unaejecucin de otra instruccin, visto en dos etapas. Es decir, la bsqueda de una instruccintoma un periodo TCY, mientras que la ejecucin toma otro periodo TCY. Sin embargo, debido altraslape de la bsqueda de la instruccin actual con la ejecucin de la instruccin previa, sepuede decir que ambas acciones suceden en cada periodo TCY.

  • 7/23/2019 Libro PIC

    39/468

    39

    Conjunto reducido de instrucciones

    Cuando un conjunto de instrucciones esta bien diseado y es altamente ortogonal (simtrico),

    pocas instrucciones son requeridas para todas las tareas necesarias. Con pocas instrucciones,el conjunto completo podr ser aprendido ms rpidamente.

    Arquitectura de registros de fila (Register File Architecture)

    La memoria de datos / registros de fila podr ser direccionada en dos posibles modos: directa oindirectamente. Todos los registros de funcin especial, incluyendo el contador de programa(Program Counter), se encuentran mapeados en dicha memoria.

    Instrucciones ortogonales (simtricas)

    Las instrucciones ortogonales permiten la realizacin de cualquier operacin sobre cualquierregistro utilizando cualquier modo de direccionamiento. Esta naturaleza simtrica y la ausenciade instrucciones especiales hacen la programacin ms simple y todava eficiente.Adicionalmente, la curva de su aprendizaje se reduce significativamente.

    El conjunto de instrucciones de los microcontroladores PIC utiliza nicamente dos instruccionesque no son orientadas a registros. Una de ellas es la instruccin SLEEP, la cual pone almicrocontrolador dentro de un modo de ms bajo consumo de corriente. La otra es lainstruccin CLRWDT, la cual verifica que el microcontrolador opere correctamente mediante eluso del temporizador de guardia (Watchdog Timer) (WDT).

  • 7/23/2019 Libro PIC

    40/468

    40

    Figura 5.2 Diagrma a bloques general de la serie PIC16Cxxx

  • 7/23/2019 Libro PIC

    41/468

    41

    Esquema del reloj / Ciclo de instruccin

    La entrada del reloj (de OSC1) es internamente dividida por cuatro, para generar cuatro pulsos

    de reloj en cuadratura, denominados Q1, Q2, Q3 y Q4. Internamente, el contador del programa(program counter) (PC) es incrementado cada Q1, y la instruccin es buscada en la memoriade programa y atrapada en el registro de instruccin en Q4. La instruccin es decodificada yejecutada durante el siguiente ciclo Q1 a Q4. Lo anterior es ilustrado mediante la figura 5.3 y elejemplo 4.1.

    Figura 5.3 Ciclo de reloj de instruccin

    Flujo de la instruccin

    Un ciclo de instruccin consiste de cuatro periodos Q (Q1, Q2, Q3 y Q4). La bsqueda deinstruccin toma un ciclo mientras que la decodificacin y ejecucin de instruccin toma otro.Sin embargo, debido a la yuxtaposicin, cada instruccin se ejecuta en un solo ciclo. Si unainstruccin causara un cambio en el contador de programa (PC) (como por ejemplo: GOTO),entonces se requerir de un ciclo extra para completar la instruccin (Ejemplo 5.1).

    La bsqueda de instruccin comienza con el incremento del contador de programa (PC) en Q1.

    En el ciclo de ejecucin, la instruccin buscada es capturada en el registro de instruccin(Instruction Register) (IR) en el ciclo Q1. Esta instruccin es entonces decodificada y ejecutadadurante los periodos Q2, Q3 y Q4. La memoria de datos es leda durante Q2 (lectura del

    operando) y escrita durante Q4 (destino de la escritura).

    El ejemplo 5.1 muestra la operacin de las dos etapas de yuxtaposicin para la secuencia deinstruccin mostrada. En el tiempo TCY0, la primera instruccin es buscada en la memoria deprograma. Durante TCY1, la primera instruccin es ejecutada mientras que la segundainstruccin es buscada. Durante TCY2, la segunda instruccin es ejecutada mientras que latercera instruccin es buscada. Durante TCY3, la cuarta instruccin es buscada mientras que latercera instruccin (CALL SUB_1) es ejecutada. Cuando la tercera instruccin completa suejecucin, el CPU salva la direccin de la instruccin cuatro sobre la pila (stack) y cambia elcontador de programa (PC) a la direccin de SUB_1. Esto significa que la instruccin que fubuscada durante TCY3 necesita ser descartada de la secuencia. Durante TCY4, la instruccincuatro es eliminada (ejecutada como una instruccin NOP) y la instruccin de la direccin

  • 7/23/2019 Libro PIC

    42/468

    42

    SUB_1 es buscada. Finalmente durante TCY5, la instruccin cinco es ejecutada y la instruccinde la direccin SUB_1 + 1 es buscada.

    Ejemplo 5.1 Flujo de la yuxtaposicin de instrucciones

    Descripcin de los puertos de entrada/salida (I/O ports)

    La tabla 5.1 nos da una breve descripcin de las diferentes funciones que pueden sermultiplexadas (multiplexed) a un pin de un puerto. Cabe mencionar que podrn existirmltiples funciones sobre un solo pin. Cuando el multiplexaje(multiplexing) ocurre, losrequerimientos funcionales de los mdulos perifricos podrn forzar la direccin del dato (bitTRIS) de un puerto, tal como sucede en el mdulo de conversin anlogo/digital (A/D) y en elmdulo LCD.

  • 7/23/2019 Libro PIC

    43/468

    43

    Tabla 5.1 Descripcin de puertos de entrada/salida (I/O)

  • 7/23/2019 Libro PIC

    44/468

    44

    Tabla 5.1 Descripcin de puertos de entrada/salida (I/O) (Continuacin)

  • 7/23/2019 Libro PIC

    45/468

    45

    Tabla 5.1 Descripcin de puertos de entrada/salida (I/O) (Continuacin)

  • 7/23/2019 Libro PIC

    46/468

    46

    Tabla 5.1 Descripcin de puertos de entrada/salida (I/O) (Continuacin)

  • 7/23/2019 Libro PIC

    47/468

    47

    Tabla 5.1 Descripcin de puertos de entrada/salida (I/O) (Continuacin)

  • 7/23/2019 Libro PIC

    48/468

    48

  • 7/23/2019 Libro PIC

    49/468

    49

    6 CPU y ALU

    La unidad central de procesamiento (Central Processing Unit) (CPU) es la responsable deutilizar la informacin contenida en la memoria de programa (instrucciones) para controlar laoperacin del microcontrolador. Muchas de estas instrucciones operan sobre la memoria dedatos. Para operar sobre la memoria de datos, la unidad lgica y aritmtica ( Arithmetic LogicalUnit) (ALU) es requerida. Adicionalmente a la ejecucin de operaciones lgicas y aritmticas,

    esta unidad controla los bits de estado (STATUS bits) (los cuales se encuentran en el registroSTATUS). El resultado de algunas instrucciones forzan los bits de STATUS a un valordependiendo del estado del resultado.

    Los cdigos de mquina que el CPU reconoce, son mostrados en la tabla 6.1, (as como losmnemnicos de las instrucciones utilizados por el programa ensamblador (Assembler) MPASMpara generar dichos cdigos).

  • 7/23/2019 Libro PIC

    50/468

    50

    Tabla 6.1 Conjunto de instrucciones de los microcontroladores de la serie PIC16Cxxx.

  • 7/23/2019 Libro PIC

    51/468

    51

    Formato general para las instrucciones

    Las instrucciones del microcontrolador PIC pueden ser divididas en cuatro formatos, segn se

    muestra en la figura 6.1. Como podr observarse, el cdigo de operacin (opcode) para lainstruccin vara de 3 a 6 bits. Este tamao del cdigo de operacin variable es lo que permiteque puedan ser implementadas 35 instrucciones.

    Figura 6.1 Formato general para las instrucciones

    Unidad Central de Procesamiento (CPU)

    La Unidad Central de Procesamiento (CPU) puede ser pensada como el cerebro delmicrocontrolador. Esta unidad es responsable por buscar la correcta instruccin para suejecucin, decodificarla y ejecutarla.

    El CPU algunas veces trabaja en conjuncin con la unidad lgica y aritmtica (ALU) paracompletar la ejecucin de la instruccin (en operaciones lgicas y aritmticas).

    El CPU controla el bus de direcciones de la memoria de programa, el bus de direcciones de

    la memoria de datos y el acceso a la pila (stack).

    Reloj de la instruccin (Instruction Clock)

    Cada ciclo de instruccin (TCY) esta compuesto de cuatro periodos Q (Q1 a Q4). El tiempo delperiodo Q es el mismo que el tiempo de periodo del oscilador del microcontrolador (TOSC). Losciclos Q proveen los tiempos para la decodificacin, lectura, procesamiento del dato, escritura,etc. de cada ciclo de instruccin. El siguiente diagrma muestra la relacin de los ciclos Q conel ciclo de instruccin.

    Los cuatro ciclos Q que forman un ciclo de instruccin (TCY), podrn generalizarse como:

  • 7/23/2019 Libro PIC

    52/468

    52

    Q1: Ciclo de decodificacin de la instruccin o forzado a la instruccin NOP.Q2: Ciclo de lectura del dato de la instruccin o la instruccin NOP.Q3: Procesamiento del dato.

    Q4: Ciclo de escritura del dato de la instruccin o la instruccin NOP.Cada instruccin mostrar un detallado ciclo de operacin para esa instruccin.

    Figura 6.2 Actividad del ciclo Q

    Unidad Lgica y Aritmtica (Arithmetic Logical Unit) (ALU)

    Los microcontroladores PIC contienen una ALU de 8 bits as como un registro de trabajo W(Working Register) tambin de 8 bits. Esta unidad es una ALU de propsito general y ejecutalas funciones aritmticas y lgicas (Boolean) entre el dato en el registro de trabajo y cualquierotro registro de fila (file register).

    Figura 6.3 Operacin de la ALU y el registro de trabajo W

  • 7/23/2019 Libro PIC

    53/468

    53

    La ALU es de 8 bits y es capz de realizar las funciones de: suma (addition), resta(substraction), corrimiento (shift) y operaciones lgicas. A menos que otra cosa seamencionada, las operaciones aritmticas sern realizadas en complemento a 2 ( twos

    complement). En instrucciones de dos operandos, tpicamente un operando es el registro detrabajo W (W register), y el otro operando ser un registro de fila o una constante inmediata. Eninstrucciones de un solo operando, ste ser el registro de trabajo W o un registro de fila.

    El registro de trabajo W es un registro de 8 bits utilizado por las operaciones lgicas yaritmticas. Este es un registro no direccionable.

    Dependiendo de la instruccin ejecutada, la ALU podr afectar los valores de los bits Carry (C),Digit Carry (DC) y Zero (Z) en el registro STATUS. Los bits C y DC operan como un pedirprestado (borrow) en la instruccin de substraccin (ver las instrucciones SUBLW y SUBWFpara ejemplos).

    Registro STATUS (STATUS Register)

    El registro STATUS mostrado en la figura 6.1, contiene el estado aritmtico de la ALU, elestado del arranque (Reset) y los bits de seleccin de bancos de la memoria de datos. Debidoa que la seleccin de los bancos de la memoria de datos es controlable por este registro, stedeber estar siempre presente en cada uno de los bancos, as como su posicin (offset)relativa. (Ver la figura 7.5 Mapa de los registros de fila en el siguiente captulo).

    El registro STATUS podr ser el destino para cualquier instruccin como con cualquier otroregistro, es decir, si el registro STATUS fuese el destino para una instruccin que afecte los bitsZ, DC y C, entonces la escritura a estos tres bits ser deshabilitada. Estos bits son prendidos yapagados de acuerdo a la lgica del dispositivo. Asimismo, los bits TO y PD no son deescritura. Por lo anterior, el resultado de una instruccin con el registro STATUS como destinopodra resultar diferente a lo intentado.

    Por ejemplo, la instruccin CLRF STATUS borrar (0) los tres bits ms significantes yprender el bit Z. Esto dejar el registro STATUS como: 000uu1uu (donde u significa sincambio).

    Por lo tanto es recomendado que nicamente sean usadas las instrucciones BCF, BSF,SWAPF y MOVWF para alterar el registro STATUS ya que estas instrucciones no afectan losbits Z, C y DC. (Ver tabla 6.1).

    Nota 1: Algunos modelos de microcontroladores PIC no requieren los bits IRP y RP1(STATUS). Estos bits no son usados por el captulo 6 CPU y ALU ydebern ser mantenidos bajos. El uso de estos bits de lectura/escritura (R/W)como de propsito general NO es recomendado debido a que podran afectar

    la compatibilidad con productos futuros.Nota 2: Los bits C y DC operarn como bits borrow y digit borrow respectivamente

    en las instrucciones de substraccin.

    Registro STATUS

  • 7/23/2019 Libro PIC

    54/468

    54

    bit7 IRP: Bit de seleccin de banco de registros (usado en direccionamiento indirecto)1 = Bank 2, 3 (100h 1FFh)

    0 = Bank 0, 1 (00h FFh)Para modelos con nicamente Bank0 y Bank1, el bit IRP es reservado y siempredeber ser mantenido apagado 0.

    bit 6:5 RP1:RP0: Bits de seleccin de banco de registros (usado en direccionamiento directo)11 = Bank 3 (180h 1FFh)10 = Bank 2 (100h 17Fh)01 = Bank 1 (80h FFh)00 = Bank 0, 1 (00h 7Fh)

    Cada banco es de 128 bytes.

    bit 4 TO:Bit de tiempo fuera (Time-out bit)1 = Despus del encendido (power-up), la instruccin CLRWDT o la instruccin SLEEP.0 = Un tiempo fuera provocado por WDT (Watchdog Timer) ocurri.

    bit 3 PD: Bit de baja de voltaje de alimentacin (Power-down bit)1 = Despus del encendido (power-up), la instruccin CLRWDT.0 = Por la ejecucin de una instruccin SLEEP.

    bit 2 Z: Bit Zero1 = El resultado de una operacin lgica o aritmtica fu cero.0 = El resultado de una operacin lgica o aritmtica NO fu cero.

    bit 1 DC: Bit Digit carry/borrow (instrucciones ADDWF, ADDLW, SUBLW, SUBWF)(Para borrow la polaridad es invertida).

    1 = Un acarreo del cuarto bit menos significante del resultado ocurri.0 = Ningn acarreo del cuarto bit menos significante del resultado ocurri.

    bit 0 C: Bit Carry/borrow (instrucciones ADDWF, ADDLW, SUBLW, SUBWF)1 = Un acarreo del bit ms significante del resultado ocurri.0 = Ningn acarreo del bit ms significante del resultado ocurri.

    Nota: Para la accin de pedir prestado (borrow) la polaridad es invertida. Una resta(substraction) es ejecutada por agregar el complemento a dos del segundo operando.Para las instrucciones de rotacin (rotate) RRF y RLF, este bit es cargado con el bitms significante o el bit menos significante del registro fuente.

    R = Bit de lectura W = Bit de escritura U = Bit no implementado, ledo como 0

    - n = Valor al arranque del encendido (Power-on Reset) (POR).

    Registro OPTION_REG (OPTION_REG register)

    El Registro OPTION_REG es un registro de lectura y escritura el cual contiene varios bits decontrol para configurar el pre-escalador del los temporizadores TMR0/WDT (TMR0/WDTprescaler), la interrupcin externa INT, TMR0 y las resistencias de pull-up en el puerto B(PORTB).

  • 7/23/2019 Libro PIC

    55/468

    55

    Registro OPTION_REG

    bit 7 RBPU: Bit de habilitacin de las resistencias de pull-up1 = Deshabilitar las resistencias de pull-up del puerto B.0 = Habilitar las resistencias de pull-up del puerto B.

    bit 6 INTEDG: Bit de seleccin del flanco de la interrupcin (Interrupt edge)1 = Interrupcin en el flanco de subida (rising edge) del pin INT.0 = Interrupcin en el flanco de bajada (falling edge) del pin INT.

    bit 5 T0CS: Bit de seleccin de la fuente del reloj para el temporizador TMR01 = Transicin sobre el pin T0CKI.

    0 = Reloj interno del ciclo de instruccin (CLKOUT).

    bit 4 T0SE: Bit de seleccin del flanco de la fuente del reloj del temporizador TMR01 = Incremento en la transicin alto a bajo sobre el pin T0CKI.0 = Incremento en la transicin bajo a alto sobre el pin T0CKI.

    bit 3 PSA: Bit de asignacin del pre-escalador (prescaler assignment)1 = El pre-escalador es asignado al temporizador de guardia (WDT).0 = El pre-escalador es asignado al temporizador del mdulo Timer0.

    bit 2:0 PS2:PS0: Bits de seleccin de velocidad (Rate) del pre-escalador

    Nota: Para lograr una asignacin de 1:1 para el pre-escalador del temporizador TMR0, asigneel pre-escalador al temporizador de guardia WDT.

    R = Bit de lectura W = Bit de escritura U = Bit no implementado, ledo como 0- n = Valor al arranque del encendido (Power-on Reset) (POR).

    Registro PCON (PCON Register)

    El registro de control de encendido (Power Control register) (PCON) contiene los bits de lasbanderas (flag bits), que junto con los bits TO y PD, permitirn al usuario diferenciar entre losdiversos tipos de arranque (Resets) del microcontrolador.

    Nota 1: El bit BOR es desconocido en el arranque de encendido (Power-on Reset), porlo que deber ser encendido por el usuario y revisado en subsecuentes

  • 7/23/2019 Libro PIC

    56/468

    56

    arranques (resets) para ver si el bit BOR ha sido apagado. Si este fuese elcaso, esto indicar que un arranque del tipo Brown-out ha ocurrido.El bit BOR es uno del tipo no importa (dont care) en caso que ste se

    encuentre deshabilitado (mediante el apagado del bit BODEN en la palabra deconfiguracin (configuration word)).

    Nota 2 Se recomienda que el bit POR sea apagado despus de que un arranque deencendido (Power-on Reset) haya sido detectado, de manera tal que otrosarranques de encendido (Power-on Reset) subsecuentes puedan serdetectados.

    Registro PCON

    bit 7 MPEEN: Bit del estado del circuito de error de paridad en memoria(Memory Parity Error Circuitry Status bit).

    Este bit refleja el valor del bit de configuracin MPEEN.

    bit 6:3 No implementados, ledos como 0.

    bit 2 PER: Bit del estado de arranque (reset) del error de paridad en memoria(Memory Parity Error Reset Status bit).

    1 = Ningn error ocurri.0 = Un error de paridad en la memoria de programa ocurri.

    (Debe ser prendido en el programa despus de que un arranque deencendido (Power-on Reset) ocurre).

    bit 1 POR: Bit del estado de arranque de encendido (Power-on Reset Status)1 = Ningn arranque de encendido (Power-on Reset) ha ocurrido.0 = Un arranque de encendido (Power-on Reset) ha ocurrido

    (Debe ser prendido en el programa despus de que un arranque deencendido (Power-on Reset) ocurre).

    bit 0 BOR: Bit del estado de arranque Brown-out (Brown-outReset Status)1 = Ningn arranque Brown-out (Brown-outReset) ha ocurrido.0 = Un arranque Brown-out (Brown-outReset) ha ocurrido

    (Debe ser prendido en el programa despus de que un arranqueBrown-out (Brown-outReset) ocurre).

    R = Bit de lectura W = Bit de escritura U = Bit no implementado, ledo como 0- n = Valor al arranque del encendido (Power-on Reset) (POR).

  • 7/23/2019 Libro PIC

    57/468

    57

    7 Organizacin de Memoria

    En cada microcontrolador PIC existen dos bloques de memoria: la memoria de programa y lamemoria de datos. Cada bloque posee su propio bus de acceso por lo que ambos bloquespueden ser accedidos durante el mismo ciclo del oscilador.

    La memoria de datos puede ser dividida en dos secciones: los registros de funcin especial

    (SFR) y la memoria de propsito general (RAM). En este captulo se describir la operacin delos registros de funcin especial (SFR) que controlan la parte central (core) delmicrocontrolador, mientras que los registros usados por los mdulos perifricos sern tratadosen su captulo correspondiente.

    Organizacin de la memoria de programa

    Los microcontroladores PIC de la serie 16Cxxx tienen un contador de programa (ProgramCounter) (PC) de 13 bits capz de direccionar un espacio de memoria de programa de 8K x 14como mximo (ver especificaciones tcnicas de cada modelo). El ancho del bus de lamemoria de programa (palabra de instruccin) es de 14 bits. Debido a que todas lasinstrucciones son de una sola palabra (single word), los microcontroladores con capacidad de,por ejemplo, 8K x 14 de memoria de programa tendrn el mismo nmero (8K) de instrucciones,

    lo que har mucho ms sencillo determinar si se cuenta con la memoria suficiente para unacierta aplicacin.

    El espacio de la memoria de programa es dividida en cuatro pginas de 2K palabras cada una(0h 7FFh, 800h FFFh, 1000h 17FFh y 1800h 1FFFh). La figura 7.1 muestra el mapa dememoria de programa as como los 8 diferentes niveles de profundidad del circuito de pila(stack). Ahora bien, dependiendo del modelo, slo ser implementada la porcin de memoriaque ste posea (refirase a las especificaciones tcnicas del modelo en cuestin).

    Para brincar entre las pginas de la memoria de programa, los bits ms significantes delcontador de programa (PC) debern ser modificados. Esto se hace escribiendo el valordeseado dentro del registro de funcin especial PCLATH (Program Counter Latch High). Sifuesen ejecutadas instrucciones secuenciales, el contador de programa cruzar las pginas sin

    ninguna intervencin del usuario. Ahora bien, para microcontroladores que poseen menos de8K palabras, el acceso a una localidad prxima superior a su direccin fsicamenteimplementada causar un reciclado (wraparound). Por ejemplo, en un modelo con 4K palabrasde memoria de programa, accediendo la direccin 17FFh, esta acceder a la direccin 7FFh.Los modelos con 2K palabras o menores no requerirn de paginado.

  • 7/23/2019 Libro PIC

    58/468

    58

    Figura 7.1 Arquitectura del mapa de memoria de programa y pila (stack)

    Vector de arranque (Reset Vector)

    En cualquier microcontrolador PIC, un arranque (Reset) hace que el contador de programa(PC) apunte hacia la direccin 0000h. Esta direccin es llamada la direccin del Vector deReset ya que esta ser la direccin a la que el programa saltar cuando ocurra un arranque(Reset) en el microcontrolador.

    Cualquier arranque (Reset) tambin borrar el contenido del registro PCLATH, lo que significaque cualquier salto al Vector de Reset (0000h) brincar la primera localidad de memoria deprograma de la pgina 0.

  • 7/23/2019 Libro PIC

    59/468

    59

    Vector de Interrupcin

    Cuando una interrupcin sea reconocida, el contador de programa (PC) ser forzado a la

    direccin 0004h. Esta es llamada la direccin del Vector de Interrupcin. En este caso, elregistro PCLATH no es modificado, por lo que una vez que se encuentre en la rutina deatencin a interrupcin (interrupt service routine) (ISR), se podr escribir en el registro PCLATHsi fuese necesario, pero salvando previamente el valor de dicho registro para ser reintegrado asu valor antes de abandonar dicha rutina.

    Informacin de calibracin

    Algunos modelos poseen informacin de calibracin almacenada en la memoria de programa.Esta informacin es programada por el fabricante Microchipcuando el dispositivo se encuentraen la prueba final. El uso de este valor permite a la aplicacin lograr mejores resultados. Lainformacin de calibracin se encuentra generalmente al final de la memoria de programa y esimplementada como una instruccin RETLW siendo el valor literal, la informacin decalibracin.

    Nota: Para las versiones de ventana, lea y copie el valor de calibracin antes de borrar eldispositivo. Esto permitir reintegrar dicho valor nuevamente al ser reprogramado.Escribir este valor sobre el empaque es altamente recomendado.

    Contador de programa (Program Counter) (PC)

    El contador de programa (PC) especifica la direccin de la instruccin a buscar para suejecucin y es de 13 bits de tamao. El byte menos significante (low byte) es llamado elregistro PCL. Este registro es de lectura y escritura. El byte ms significante (high byte) esllamado el registro PCH. Este registro contiene los bits PC y no puede ser ledo ni

    escrito directamente. Es decir, todas las modificaciones a dicho registro se debern hacer atravs del registro PCLATH.

    La figura 7.2 muestra las cuatro diferentes situaciones para el cargado del contador deprograma (PC). La situacin 1 muestra como el PC es cargado con la escritura al registro PCL(PCLATHPCH). La situacin 2 muestra como el PC es cargado durante la instruccinGOTO (PCLATH PCH). La situacin 3 muestra como el PC es cargado durante lainstruccin CALL (PCLATHPCH), con el PC cargado (empujado (PUSHed)) sobre laparte alta de la pila (stack). La situacin 4 muestra como el PC es cargado durante una de lasinstrucciones de regreso (RETURN) donde el PC es cargado (jalado (POPed)) de la parte altade la pila (stack).

  • 7/23/2019 Libro PIC

    60/468

    60

    Figura 7.2 Cargado del PC en diferentes situaciones

  • 7/23/2019 Libro PIC

    61/468

    61

    GOTO computado

    Un GOTO computado es obtenido mediante la suma de un valor de desbalance (offset) al

    contador de programa (PC) (es decir, la instruccin ADDWF PCL).Cuando hacemos una lectura a una tabla mediante el mtodo del uso de un GOTO computado,ste deber ser ejercitado cuidadosamente si la localidad de la tabla cruza los lmites delbloque de memoria, o sea, del registro PCL (cada bloque es de 256 bytes).

    Nota: Cualquier escritura al registro PCL causar que los 5 bits menos significantes delregistro PCLATH sean cargados dentro del registro PCH.

    Pila (Stack)

    La pila (stack) permite la ocurrencia de una combinacin de hasta 8 llamadas como mximo arutinas (CALL) e interrupciones. La pila (stack) contiene la direccin de regreso de laramificacin (branch) en la ejecucin del programa.

    Los microcontroladores de la serie 16Cxxx tienen una pila (stack) de 8 niveles de 13 bits cadauno. Este espacio no es parte de ninguna de las memorias de programa ni de datos y suapuntador (stack pointer) no puede ser ledo ni escrito.

    As, cuando una ramificacin en el programa vaya a ser ejecutada, ya sea generada por unainstruccin CALL (salto a una rutina) o por alguna interrupcin (salto al vector de interrupcin),antes de realizar este salto, la direccin que apunta el PC + 1 (siguiente instruccin a ejecutardespus del regreso) ser salvada en la pila (stack)


Recommended