Vous êtes sur la page 1sur 6

Microcontroladores: Son circuitos integrados que incorporan todos los bloques funcionales de un Sistema Microprocesador en un nico encapsulado.

SISTEMA MNIMO MICROPROCESADOR CPU, Central Process Unit o Unidad Central de Proceso. Formada por dos bloques: Unidad de Control y Unidad de Proceso. Memoria, donde residen las instrucciones del programa y sus datos. Mdulos E/S, elementos encargados de recibir y entregar informacin al exterior.

MICROPROCESADORES Y MICROCONTROLADORES

MICROCONTROLADOR PIC Arquitectura Harvard: buses internos separados para memoria de datos (8 bits) y de programa (12, 14 16 bits depende de la familia) Microprocesador RISC: juego de instrucciones reducido Estructura pipe-line: durante la ejecucin de una instruccin, se est accediendo a la memoria de programa para traer la siguiente instruccin a ejecutar. (salvo un salto o llamada a subpr.) Todas las instrucciones ocupan una posicin de memoria de programa Todas las instrucciones se ejecutan en un ciclo de instruccin = 4 ciclos de reloj (salvo las instrucciones de salto) Ortogonalidad de los registros: se opera entre el registro de trabajo W y cualquier otro registro, el resultado puede almacenarse en W ARQUITECTURA VON-NEUMAN ARQUITECTURA HARVARD

El tiempo de acceso se mejora respecto a la arquitectura mismo bus.

Von Neumann donde programa y datos se traen a la CPU usando el

La arquitectura Harvard tiene memoria de programa, memoria de datos y dispositivos de entrada o salida separados y se accede a ellos a travs de buses separados.

CARACTERSTICAS DEL PIC: Eficiencia del cdigo: permiten gran compactacin de programas Rapidez de ejecucin: a frecuencia de 20MHz 5 millones de instr./seg. Seguridad en acceso: Separa memoria de datos y de programa Juego reducido de instrucciones RISC Compatibilidad de pines y cdigo entre dispositivos (familias) Gran variedad de versiones en distintos encapsulados (8 - 84 pines) Herramientas de desarrollo software y hardware abundantes y de bajo costo

FAMILIA PIC16CXXX/16FXXX Puertos de Entrada/Salida Puerto Esclavo Paralelo (PSP) Temporizadores/contadores (TMR0, TMR1, TMR2) Captura / Comparacin / PWM (CCP1 y CCP2) Conversin Analgica / Digital (A/D) Transmisor Receptor Asncrono Sncrono Universal (USART) Puerto Serie Sncrono (BSSP MSSP) Memoria EEPROM de datos FLASH EEPROM de programa modificable desde el cdigo

PIC. PROCESO DE DISEO 1. 2. 3. Diseo del programa y escritura del cdigo fuente en ensamblador o en C Pruebas, verificacin y modificacin del cdigo: Simulacin del programa (puro software) o emulacin dentro del circuito de aplicacin (software y hardware) Grabacin del cdigo mquina en la memoria del microcontrolador

2.

EL PIC16F877 DISPONE DE TRES TIPOS DE MEMORIA:

Memoria de programa: Consta de 8192 posiciones (8Kwords) y contiene el programa con las instrucciones que gobiernan la aplicacin. Es no voltil. Memoria de datos RAM: Guarda las variables y datos. Est formada por registros de 8 bits. Es voltil. Memoria EEPROM de datos: Es una pequea rea de memoria de datos de lectura y escritura no voltil que permite garantizar que determinada informacin estar siempre disponible al reiniciar el programa. Memoria de programa La informacin contenida en esta memoria se graba previamente mediante un equipo (programador o grabador). Almacena todas las instrucciones del programa en ejecucin, y queda grabada de forma permanente. En el PIC16F877 esta memoria es no voltil del tipo ROM Flash y admite unas 1000 grabaciones. Est organizada en palabras de 14 bits cada una. Todas las instrucciones ocupan una posicin de memoria de programa A la posicin 0 se accede tras un RESET y a la posicin 4 tras una interrupcin. MEMORIA DE PROGRAMA. CONTADOR DE PROGRAMA, PC. Para acceder a la memoria de programa de los PIC16FXXX se utiliza un registro de 13 bits que acta como puntero de la instruccin que se debe ejecutar en el siguiente ciclo de instruccin. Este registro es el Contador de Programa PC que permite direccionar 8K posiciones de memoria de 14 bits (recordar que cada posicin corresponde a una instruccin) por tanto, el PC es capaz de direccionar 8K instrucciones. Resulta fcil saber si un PIC tiene memoria de programa suficiente para una determinada aplicacin.

MEMORIA DE PROGRAMA. CONTADOR DE PROGRAMA ( PC ). Los 8K de memoria de programa disponible estn divididos en 4 pginas de 2K cada una (0h7FFh, 800h-FFFh, 1000h-17FFh y 1800h-1FFFh). Esto se debe a que las instrucciones de salto y llamada a subprograma permiten cargar slo 11 bits en el PC (desplazamiento en 211 = 2K) Si se estn ejecutando instrucciones secuencialmente, el contador de programa pasar de una pgina a otra. Para saltar entre pginas de la memoria de programa los 2 bits ms altos del PC deben modificarse. Esto se realiza escribiendo en el registro PCLATH (es un registro situado en la memoria de datos). CONTADOR DE PROGRAMA El contador de programa (PC) es un registro de 13 bits que se descompone en 2 registros: PCH y PCL El byte bajo PC<0:7> se denomina PCL y est disponible en la memoria de datos. Es un registro que se puede leer y escribir directamente desde el programa. El cuasibyte alto PC<12:8> se denomina PCH y no est disponible en la memoria de datos. Este registro no se puede leer ni escribir directamente. La escritura debe realizarse usando como registro intermedio el registro PCLATH que s es un registro de 8 bits accesible en la memoria de datos del microcontrolador. El contenido del registro PCLATH se transfiere a la parte alta del PC en el momento en que se escribe en el registro PCL. Tambin aporta dos bits al PC en los saltos o llamadas a subprogramas.

LA PILA:permite almacenar las direcciones a donde debe retornar el programa cuando se finaliza una llamada a una subrutina o cuando se finaliza la ejecucin de una rutina de interrupcin. Los microcontroladores de la familia PIC16 tienen una pila de 8 niveles x 13 bits, que por tanto permite como mximo 8 llamadas a subrutinas (CALLs) o ejecuciones de rutinas de interrupcin (salto a 0004h). El espacio de memoria para la pila no forma parte de la memoria de programa ni de la memoria de datos que tiene el microcontrolador. Es un espacio de memoria totalmente independiente. El puntero de pila no se puede leer ni escribir. La pila es gestionada por el hardware. MEMORIA RAM DE DATOS La memoria de datos est distribuida en 4 posibles bancos de 128 bytes cada uno. Por tanto, la mxima cantidad de memoria disponible en los microcontroladores PIC16 es de 512 bytes. No obstante, no estn implementadas todas las posiciones de memoria en todos los bancos. Por ejemplo, un PIC16F876 slo tiene implementadas 368 posiciones de memoria de datos. A cada posicin de memoria se le denomina registro. La memoria de datos se organiza en bancos de 128 bytes porque cuando se indica una direccin de operando fuente, slo se pueden incluir 7 bits en la codificacin: 27=128 bytes Sirve para almacenar todos los datos que se manejan en un programa. Se distinguen dos tipos de registro: Registros de funciones especiales: Son los primeros registros. Cada uno de ellos cumple un propsito especial en el control del PIC. Registros de propsito general: Se pueden usar para guardar datos temporales. El PIC16F877 dispone de 368.

Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3. Los registros de funciones especiales aparecen de la direccin 00h a 1Fh del Banco 0, de 80h a 9Fh del Banco 1, de 100h a 10F en el Banco 2 y de 180h a 18Fh del Banco 3. Algunos son accesibles desde dos o ms bancos. Los registros de propsito general ocupan 368 posiciones de memoria.

MEMORIA DE DATOS: MODOS DE DIRECCIONAMIENTO La memoria de datos est distribuida en 4 posibles bancos de 128 bytes cada uno.

Existen 2 modos de direccionamiento para acceder a cualquiera de las posiciones de la memoria de datos: Direccionamiento directo Direccionamiento indirecto

Direccionamiento directo: La posicin de memoria con la que se trabaja viene directamente definida en el cdigo de la instruccin. Direccionamiento indirecto: La posicin de memoria con la que se trabaja viene definida por el contenido del registro FSR (Posicin 04h, 84h, 104h o 184h), es decir, el registro FSR acta como puntero de la posicin de memoria con la que se pretende operar.

CARACTERSTICAS ESPECIALES DE LOS PIC Estas caractersticas suelen ser los aspectos que ms distinguen la CPU de estos dispositivos con otros microprocesadores. Oscilador: ms simple y con menos elementos adicionales necesarios. Resets y Watchdog: seguridad en el arranque, reinicio y autovigilancia. Sleep: modo de bajo consumo para aplicaciones con bateras. Interrupciones: lgica de mscaras y eventos y posicin comn del PTI. Proteccin de cdigo: para evitar la copia de programas grabados. ICSP e ICSP LVP: (In-Circuit Serial Programming) programacin en serie ya en la tarjeta de la aplicacin y a baja tensin (Low Voltage Program). Modo depuracin ICD: (In-Circuit Debugger) modo especial que permite depurar el cdigo pero ya con el MCU conectado con el resto del circuito. UN CICLO DE INSTRUCCIN es el tiempo que se tarda en ejecutar una instruccin (salvo saltos) en el microcontrolador. En los PIC16, un ciclo de instruccin dura 4 ciclos de reloj (Q1, Q2, Q3, Q4). MODO SLEEP 1. 2. Los microcontroladores PIC pueden trabajar en dos modos distintos: Modo Normal: ejecutando las instrucciones Modo Dormido o de bajo consumo: se suspende la ejecucin El consumo de un microcontrolador depende de su frecuencia de trabajo, a ms frecuencia ms consumo. El modo dormido supone un ahorro de consumo porque el oscilador del microcontrolador deja de oscilar, por tanto no se ejecutan instrucciones. En este modo dormido se entra por software cuando se ejecuta la instruccin SLEEP Al entrar en modo dormido, el bit PD (STATUS<3>) se pone a 0 y el bit TO (STATUS<4>) se pone a 1, estos bits indican que se entr en ese modo para conocimiento posterior en tiempo de ejecucin. A continuacin el oscilador deja de oscilar. Los pines asociados a Puertos de Entrada/Salida mantienen el valor previo a la ejecucin de la instruccin SLEEP. Si est habilitado el WATCHDOG (en la palabra de configuracin), su temporizador se pondr a cero al ejecutar la instruccin SLEEP, pero se mantendr corriendo y podra desbordar ya que el Watchdog tiene un oscilador RC independiente del propio del microcontrolador. El microcontrolador puede salir del modo de bajo consumo por alguno de los siguientes motivos: 1. Un RESET externo provocado en el pin MCLR. 2. Desbordamiento del WATCHDOG.

3. Interrupcin provocada por algn evento de los perifricos que pueden generarlos sin la presencia del oscilador.

RESET DEL MCU Los PIC16F87X tienen 6 posibles fuentes de RESET del MCU: Power-on Reset (POR) -> Reset de Alimentacin del Microcontrolador MCLR Reset durante funcionamiento normal -> Activacin del pin de Reset en modo normal MCLR Reset durante SLEEP -> Activacin del pin de Reset en modo de bajo consumo WDT Reset (durante funcionamiento normal) -> Desbordamiento del Watchdog en modo normal WDT Wake-up (durante SLEEP) -> Desbordamiento del Watchdog en modo de bajo consumo Brown-out Reset (BOR) -> Reset por cada temporal de la alimentacin

La mayora de los registros del mapa de memoria de datos no se ven afectados por ningn tipo de RESET. No obstante, hay muchos otros registros que son reseteados a un valor determinado si se produce un POR, un MCLR Reset WDT Reset durante funcionamiento normal, un MCLR Reset durante SLEEP un BOR. PERRO GUARDIN O WATCHDOG El temporizador Watchdog es un temporizador existente en el microcontrolador basado en un oscilador RC interno, independiente del oscilador del microcontrolador Este oscilador RC interno no tiene nada que ver con un posible oscilador RC externo conectado a la patilla OSC1/CLKI. Si est activo, durante el funcionamiento normal del microcontrolador, un desbordamiento ( time-out) del Watchdog provoca un Reset del microcontrolador (Watchdog Timer Reset). Para que no se desborde, cada cierto tiempo y antes de que llegue al lmite, se debe ejecutar una instruccin CLRWDT que limpia el Watchdog y le hace comenzar una nueva cuenta desde cero. Si el dispositivo est en modo dormido, un desbordamiento del watchdog provoca que el micro despierte y continue con el funcionamiento normal (Watchdog Timer Wake-Up) con la instruccin que sigue a SLEEP. El bit TO del registro STATUS se pone a cero tras un desbordamiento del Watchdog. Un preescaler es un divisor de frecuencia que puede hacer que se cuente antes el nmero de desbordamientos del WDT y hacer as que el tiempo que tarda en resetear al microcontrolador sea ms largo. Ese divisor de frecuencia est compartido con el TMR0 y por tanto, si se usa para el TMR0 no se puede usar para el WATCHDOG y viceversa. El divisor de frecuencia del WATCHDOG viene definido por unos bits del registro OPTION: PSA: a quin se le asigna el divisor. PS2-PS1-PS0: cul es el factor de divisin de la frecuencia: 100: 1:32 para TMR0 / 1:16 para WDT. 101: 1:64 para TMR0 / 1:32 para WDT. 110: 1:128 para TMR0 / 1:64 para WDT. 111: 1:256 para TMR0 / 1:128 para WDT

000: 1:2 para TMR0 / 1:1 para WDT. 001: 1:4 para TMR0/ 1:2 para WDT. 010: 1:8 para TMR0 / 1:4 para WDT. 011: 1:16 para TMR0 / 1:8 para WDT. INTERRUPCIONES

Los PIC16F87XA tienen hasta 15 posibles fuentes de interrupcin, entre otras: Escritura o lectura del puerto esclavo paralelo (PSPIF) Desbordamiento del TMR0 Desbordamiento del TMR1

Desbordamiento del TMR2 Captura de un mdulo CCP (CCPxIF). Comparacion del modulo CCP en modo disparo de evento especial. Mdulo SSP al detectar un bit de START STOP Mdulo SSP al transmitir o recibir en modo esclavo Mdulo USART al RX o TX (modo sncrono) (RCIF TXIF). Al finalizar una conversin A/D Al completar una escritura en EEPROM (EEIF). Al modificarse el estado de salida de alguno de los comparadores (CMIF). Interrupcin externa por flanco en el pin RB0/INT (INTF). Interrupcin por cambio en los valores de los pines RB4 a RB7 del PORTB (RBIF).

Se dispone de un bit de habilitacin de interrupciones global GIE (INTCON<7>) que permite deshabilitar todas las interrupciones (si est a 0). Cuando el bit GIE est a 1, si una interrupcin tiene su flag a 1 y sus bits de habilitacin a 1, el microcontrolador terminar la instruccin que se est ejecutando en ese instante y, a continuacin, pasar a ejecutar la posicin 4 de la memoria de programa que corresponde a la posicin del vector de interrupcin y que es el mismo para todas las interrupciones. Las fuentes de interrupcin pueden deshabilitarse individualmente utilizando sus mscaras o bits de habilitacin (bits acabados en E). El bit GIE se pone a 0 tras un RESET. Por tanto, al principio las interrupciones estn desactivadas. Al producirse el salto a la rutina o programa de tratamiento de la interrupcin, el bit GIE se pone a 0 deshabilitando el resto de interrupciones, salvo que por software se vuelva a poner a 1 ese bit GIE. El retorno del programa de tratamiento de interrupcin (RETFIE) coloca en la mscara global GIE el valor 1, adems de recuperar el PC de la pila hardware. Los bits de flags pueden ponerse a 1 independientemente de que sus bits de habilitacin estn o no a 1, ya que indican eventos.