Sencillez de manejo: Tienen un juego de instrucciones
reducido; 35 en la gama media. Buena informacin, fcil de conseguir y econmica. Precio: Su coste es comparativamente inferior al de sus competidores. Poseen una elevada velocidad de funcionamiento. Buen promedio de parmetros: velocidad, consumo, tamao, alimentacin, cdigo compacto, etc. Herramientas de desarrollo fciles y baratas. Muchas herramientas software se pueden recoger libremente a travs de Internet desde Microchip 2 Existe una gran variedad de herramientas hardware que permiten grabar, depurar, borrar y comprobar el comportamiento de los PIC. Diseo rpido. La gran variedad de modelos de PIC permite elegir el que mejor responde a los requerimientos de la aplicacin. 3 4 C: EEPROM, F: FLASH, CF: ROM 5
6 El PIC16F84 puede trabajar con cuatro diferentes configuraciones del oscilador. Las configuraciones hechas con un cristal y un circuito RC (resistor-capacitor) son las ms frecuentemente usadas. La configuracin con un cristal se designa XT y la segunda se denomina RC. 7 El oscilador de cristal es un encapsulado metlico con dos lneas que tiene impresa la frecuencia a la cual oscila el cristal. Es necesario conectar un capacitor cermico de 22 pF o 30 pF entre las terminales del cristal y tierra. En algunos casos se encuentran encapsulados los capacitores y el cristal en un circuito con tres lneas. Tal elemento se llama un resonador cermico, las terminales del centro son la tierra mientras que las lneas de los extremos se conectan a las lneas OSC1 y OSC2 del microcontrolador. La frecuencia del cristal es tpicamente de 4 Mhz. 8 9 Se usa en aplicaciones donde no es necesaria una gran precisin de tiempo. Este tipo de oscilador es ms barato que el anterior. La frecuencia de resonancia del oscilador depende del valor de la resistencia R, el capacitor C, el valor del voltaje de alimentacin, la temperatura de trabajo y la tolerancia de estos elementos. 10 - Con valores muy altos, por ejemplo 1M, el oscilador puede volverse muy sensible al ruido y la humedad, por lo que es recomendable usar resistencia de un valor entre 3 y 100 k. - No importando que tipo de oscilador que se use, el reloj es dividido entre 4 y puede obtenerse por medio de la lnea OSC2/CLKOUT y emplearse para sincronizar otros circuitos externos. 11 Al alimentarse el microcontrolador el oscilador empieza a trabajar y al inicio la seal es inestable y con variaciones en su amplitud, pero con el tiempo se estabiliza.
Para evitar que la seal inestable del reloj tenga una mala influencia en el comportamiento del microcontrolador, es necesario mantener al microcontrolador en un estado de reset durante la estabilizacin del oscilador del reloj. La figura muestra una seal de un oscilador de cuarzo al encender la fuente de alimentacin. 12 La seal de reset se usa para colocar al microcontrolador en un estado conocido. Bajo este estado, el contenido de los registros se lleva a una posicin de inicio. El reset no solo se usa cuando el microcontrolador se esta comportando de una forma no deseada, si no que tambin puede usarse para sacar al microcontrolador de un ciclo. 13 Para evitar colocar un cero lgico accidentalmente en la lnea MCLR, esta lnea debe conectarse va un resistor al positivo de la fuente de alimentacin. El valor del resistor debe ser entre 5 y 10 k. Este tipo de resistor es de los llamados pull up.
14 Reset durante el encendido de la fuente de alimentacin (tambin llamado Power On Reset o POR). Reset durante trabajo regular llevando a cero lgico la lnea MCLR. Reset durante el estado SLEEP. Reset al ocurrir un sobreflujo (overflow) en el watchdog timer (WDT). Reset al ocurrir un sobreflujo (overflow) en el watchdog timer (WDT) encontrndose en el estado SLEEP. 15 Las fuentes ms importantes son la primera y la segunda, la primera ocurre al encender la fuente de alimentacin y sirve para llevar los registros internos a una posicin o valor inicial y la segunda es ms comnmente usada durante el desarrollo de programas. Durante un reset las localidades de la memoria RAM no son inicializadas. Al encender la fuente de alimentacin esas localidades contienen un valor desconocido y al activar el reset su valor no es cambiado. Los registros del PIC16F84 conocidos como SFR si son inicializados a un valor conocido. El program counter es inicializado con 0000h. 16 Al encender la fuente de alimentacin, y detectar un incremento en el voltaje de alimentacin en Vdd (en el rango de 1.2V a 1.8V), el microcontrolador genera un pulso de reset. Ese pulso tiene una duracin de 72ms, suficientes para que se estabilice el oscilador. Esos 72ms son proporcionados por un temporizador interno llamado PWRT el cual tiene su propio oscilador RC, el microcontrolador est en un estado de reset mientras el PWRT est activo. Sin embargo, cuando el dispositivo ya se encuentra trabajando, puede surgir el problema de que la alimentacin no cae a cero completamente, pero s por abajo del lmite que garantiza el correcto funcionamiento del microcontrolador. Este puede suceder en la prctica especialmente en ambientes industriales ruidosos y de inestabilidad en la fuente de alimentacin. Para resolver este problema es necesario asegurar que el microcontrolador se encuentre en un estado de reset cada vez que la fuente caiga por abajo del lmite permitido. 17 Puede ser necesario usar componentes electrnicos especiales para generar la seal de reset y que aparezca un cero lgico en la lnea MCLR hasta que el voltaje se encuentre en los lmites correctos. 18 La CPU es la encargada de buscar y decodificar las instrucciones que deben ser ejecutadas. 19 La CPU conecta todas las partes del microcontrolador de manera centralizada y tal vez la funcin ms importante es decodificar las instrucciones del programa. Esta conexin se lleva a cabo por medio de los buses de datos y direcciones. 20 La unidad aritmtica y lgica es responsable de realizar las operaciones de adicin, sustraccin, movimientos (a la izquierda y derecha dentro de un registro) y operaciones lgicas. Los movimientos de datos dentro de un registro tambin se les conoce como corrimientos. El PIC16F84 tiene un ALU de 8 bits y registros de trabajo de 8 bits. 21 En instrucciones con dos operandos, generalmente un operando est en el registro de trabajo (denominado registro W) y el otro es uno de los registros de propsito general o es una constante. Operando es el contenido sobre el cual se ejecuta una operacin y un registro es cualquiera de los registros GPR o SFR, GPR es una abreviacin de General Purpose Register- Registro de Propsito General y SFR es Special Function Register-Registro de Funcin Especial. 22 En instrucciones de un solo operando, el operando es el contenido del registro W o uno de los registros de propsito general. El ALU tambin controla los bits de estado encontrados en el registro llamado STATUS. Dependiendo de la instruccin que se est ejecutando, el ALU afecta los valores de los bits de acarreo- Carry (C), acarreo de dgito- Digit Carry (DC) y cero-Zero (Z) del registro de STATUS. 23 El reloj entra al microcontrolador por medio de la lnea OSC1 donde un circuito interno del microcontrolador lo divide en cuatro ciclos iguales llamados Q1, Q2, Q3 y Q4. Estos cuatro ciclos constituyen un ciclo de instruccin (tambin llamado ciclo de mquina) durante el cual se ejecuta una instruccin. 24 Se aplica la tcnica de segmentacin (pipe-line) en la ejecucin de las instrucciones. La segmentacin permite al procesador realizar al mismo tiempo la ejecucin de una instruccin y la bsqueda del cdigo de la siguiente. De esta forma se puede ejecutar cada instruccin en un ciclo (un ciclo de instruccin equivale a cuatro ciclos de reloj). Las instrucciones de salto ocupan dos ciclos al no conocer la direccin de la siguiente instruccin hasta que no se haya completado la de bifurcacin. 25 La ejecucin de una instruccin se inicia al llamar a la instruccin de la memoria de programa en cada ciclo Q1 y escribindola en el registro de instruccin (instruction register) durante Q4. La decodificacin y ejecucin de la instruccin se realizan entre los siguientes ciclos Q1 y Q4. El contador de programa (PC) contiene la direccin de la siguiente instruccin a ejecutar. Si la instruccin causa un cambio en el PC, PC apunta a otra direccin, como por ejemplo llamadas a subrutinas, se necesitan dos ciclos para ejecutar la instruccin, ya que la instruccin debe ser procesada nuevamente. 26 TCY0 lee la instruccin MOVLW 55h TCY1 ejecuta la instruccin MOVLW 55h y lee MOVWF PORTB. TCY2 ejecuta la instruccin MOVWF PORTB y lee CALL SUB_1. TCY3 ejecuta la llamada a una subrutina CALL SUB_1 y lee la instruccin BSF PORTA,BIT3. Ya que esta instruccin no es la que se necesita o no es la primera instruccin de SUB_1, la instruccin debe ser leda nuevamente. Este es un claro ejemplo de una instruccin que necesita ms de un ciclo para ejecutarse. TCY4 se usa totalmente para leer la primera instruccin de la subrutina SUB_1. TCY5 ejecuta la primera instruccin de SUB_1 y lee la siguiente instruccin. 27 El PIC16F84 cuenta con 18 lneas. El encapsulado que se encuentra ms frecuentemente en el mercado es del tipo DIP18 pero tambin existe como encapsulado SMD el cual es ms pequeo que un DIP. DIP es una abreviacin de Dual In Package. SMD es una abreviacin de Surface Mount Devices. 28 1. RA2 lnea 2 del puerto A. No tiene funcin adicional. 2. RA3 lnea 3 del puerto A. No tiene funcin adicional. 3. RA4 lnea 4 del puerto A. Su funcin adicional es TOCK1 y es una lnea de control del temporizador. 4. MCLR entrada de reset y voltaje de programacin Vpp del microcontrolador. 5. Vss tierra. 6. RB0 lnea 0 del puerto B. Funciona alternamente como entrada de interrupcin. 7. RB1 lnea 1 del puerto B. No tiene funcin adicional. 8. RB2 lnea 2 del puerto B. No tiene funcin adicional. 9. RB3 lnea 3 del puerto B. No tiene funcin adicional. 10. RB4 lnea 4 del puerto B. No tiene funcin adicional. 11. RB5 lnea 5 del puerto B. No tiene funcin adicional. 12. RB6 lnea 6 del puerto B. Lnea de reloj (clock) en el modo de programacin. 13. RB7 lnea 7 del puerto B. Lnea de datos (data) en el modo de programacin. 14. Vdd alimentacin. 15. OSC2 lnea asignada para conectarlo con un oscilador. 16. OSC1 lnea asignada para conectarlo con un oscilador. 17. RA0 lnea 0 del puerto A. No tiene funcin adicional. 18. RA1 lnea 1 del puerto A. No tiene funcin adicional. Las lneas RB4 a RB7 pueden usarse tambin como entradas para detectar algn cambio de estado en las mismas. 29