Professional Documents
Culture Documents
Microcontroladores
1
Ing. Edgar Fernando Tipn C.
Contenidos:
Introduccin
Un microcontrolador es un circuito integrado programable el cual contiene todos los componentes de un computador. Es un computador completo de limitadas prestaciones, que est contenido en un nico chip.
Introduccin
Por lo general se lo emplea para controlar el funcionamiento de una nica tarea y gracias a su reducido tamao suele incorporarse en el propio dispositivo que controla, lo que se denomina Embedded System. Un microcontrolador normalmente dispone de una memoria limitada, en la que se almacena un solo programa.
Ing. Edgar Fernando Tipn C.
Introduccin
Las lneas de entrada y salida se conectan con sensores y actuadores al dispositivo fsico que controlan. Una vez programado el microcontrolador slo sirve para atender la tarea para la que ha sido programado. Las ventajas de los microcontroladores son:
Aumento de servicios y utilidades para el usuario. Aumento de la fiabilidad. Reduccin de tamao en el producto acabado. Mayor flexibilidad. El Sistema es adaptable para futuros cambios
Ing. Edgar Fernando Tipn C.
Introduccin
Existen varios fabricantes de Microcontroladores pero las principales son: Intel, Atmel, Motorola y Microchip Este curso se basa en el Microcontrolador PIC 16F877 de Microchip, El AT89C51 de Atmel y la familia MC68HCXX de Motorola. La Programacin de los mismo se realizara en lenguaje ensamblador.
Introduccin
Los PIC (Peripheral Interface Controller) son circuitos integrados de Microchip, que pertenecen a la categora de los microcontroladores. Los PICs se clasifican en familias en funcin de sus caractersticas internas
El microprocesador bsicamente est formado de la CPU y la ALU
MICROCONTROLADOR
Una variedad de opciones estn disponibles. Dependiendo de la aplicacin y requisitos de la produccin, la opcin apropiada del dispositivo puede seleccionarse. En funcin del tipo de memoria se clasifican en: F, como en el PIC16F877. Estos dispositivos tienen memoria de programa Flash y operan encima del rango de voltaje normal. LF, como en el PIC16LF84. Tienen memoria de programa Flash y operan encima de un rango de voltaje extendido CR, como en el PIC16CR83. Estos dispositivos tienen memoria de programa ROM y operan encima del rango de voltaje normal. LCR, como en el PIC16LCR84. Estos dispositivos tienen memoria de programa ROM y operan encima de un rango de voltaje extendido. CE, como en el PIC12CE518. Tienen memoria de programa ROM y operan en el rango de voltaje normal y tienen memoria EEPROM.
Ing. Edgar Fernando Tipn C.
Partes de un microcontrolador
Existen diferentes tipos de Microcontroladores PIC, con el fin de que el diseador pueda escoger el que mejor satisfaga las necesidades del proyecto que desea realizar. Estas son: GAMA ENANA: Son de la serie 12C(F)XXX, de 8 pines, 6 lineas I/O digitales, reloj interno RC, Memoria de programa entre 512 y 1Kb, Memoria RAM de 25 a 41 Bytes y EEPROM de 16 Bytes(CE), y cuentan con varios recursos auxiliares como Conversor A/D, Watch Dog Timer, Comparadores y Timer. El formato de sus instrucciones puede ser de 12 o 14 bits y su set de instrucciones es de 33 o 35 instrucciones respectivamente
Ing. Edgar Fernando Tipn C.
Partes de un microcontrolador
GAMA MEDIA: PIC16C(F)XXX de 18 hasta 40 pines, Es una gama muy variada y completa, donde se encuentra el PIC16C(F)877; (C = Memoria EEPROM; F = Memoria FLASH). Esta gama posee instrucciones de 14 bits, con un Set de 35 instrucciones. Dispone de interrupciones y una pila de 8 niveles que permiten el anidamiento de subrutinas. Esta gama se clasifica en las siguientes subfamilias: Gama media estndar (PIC16C55X) Gama media con comparador analgico (PIC 16C62x/64X/66X) Gama media con mdulos de captura (CCP), modulacin de anchura de impulsos (PWM) y puerto serial (PIC16C6X) Gama media con ADC de 8 bits (PIC16C7X) Gama media con memoria Flash y EEPROM ( PIC 16X8X) Donde el PIC 16F877 pertenece a esta familia y equivale a los 16C6XX
10
Partes de un microcontrolador
GAMA ALTA: PIC17CXXX y PIC18C(F)XXX, los hay de 40 hasta 68 pines, alcanzan las 58 instrucciones de 16 bits. Disponen de un sistema de gestin de interrupciones vectorizadas muy potente. Tambin incluyen variados controladores de perifricos, Puertos seriales y Paralelos. La caracterstica ms destacable de estos microcontroladores es su arquitectura abierta, que consiste en la posibilidad de ampliacin con elementos externos. Para tal fin, los pines sacan al exterior las lneas de los buses de datos, direcciones y control, a las que se conectan memorias o controladores perifricos. Esta filosofa de construccin del sistema es la que se emplea en los Microprocesadores y no suele ser habitual cuando se emplean microcontroladores.
Ing. Edgar Fernando Tipn C.
11
Partes de un microcontrolador
El procesador Memoria de programa Memoria de datos Lneas de entrada y salida (I/O) Recursos auxiliares
12
Los PIC utilizan arquitectura Harvard en lugar de la tradicional Von Neumann. La arquitectura Harvard se caracteriza por tener dos memorias independientes, una para instrucciones y otra para datos. Cada una tiene su propio bus por lo que la CPU puede acceder simultneamente a las dos. Esto agilita el proceso de lectura y ejecucin de las instrucciones Arquitectura Harvard
13
El Procesador
Otra caracterstica importante es que el procesador es de tipo RISC con un repertorio pequeo y sencillo de 35 instrucciones, de forma que la mayor parte de las instrucciones se ejecutan en un ciclo de mquina, a excepcin de las de salto. Adems se introduce una segmentacin (pipeline) en el procesador, dividiendo la ejecucin de una instruccin en varias etapas. De esta forma se puede trabajar sobre varias instrucciones simultneamente cada una en una etapa distinta.
Ing. Edgar Fernando Tipn C.
14
Memoria de programa
Es una memoria de almacenamiento no voltil (PROM, EPROM, EEPROM o FLASH), en la que se almacena el programa que gobierna la aplicacin a la que est destinado el microcontrolador. En general tiene un tamao reducido desde 512 a 8K palabras en la familia de los PIC. Adems al tener una memoria especfica de programa se puede adecuar el tamao de las instrucciones y los buses al ms apropiado para cada aplicacin.
Ing. Edgar Fernando Tipn C.
15
Memoria de datos
La memoria para almacenar datos debe ser de lectura y escritura, por lo que en general se usa memoria RAM, aunque algunos micros llevan memoria EEPROM para evitar la prdida de los datos en caso de corte en el suministro de corriente. Los tamaos son mucho ms reducidos que la memoria de programa; por ejemplo el PIC16F84A dispone solamente de 68 bytes de datos RAM y 64 bytes de EEPROM y el PIC16F877 tiene 368 bytes de RAM y 256 bytes de EEPROM
Ing. Edgar Fernando Tipn C.
16
Lneas de entrada/salida
Estas lneas son los pines del microcontrolador que sirven para comunicarse con los perifricos conectados al sistema. Pueden enviar o recibir datos digitales al o desde el perifrico. Manejan la informacin en paralelo y se agrupan en conjuntos que reciben el nombre de puertos o prticos. Los pines de los puertos pueden configurarse independientemente cada una de ellos como entrada o salida.
17
Oscilador
Oscilador tipo "HS" para frecuencias mayores de 4 Mhz. En el caso del PIC16F877 podr instalarse un oscilador hasta 20 Mhz. Oscilador "XT" para frecuencias de 455KHz a 4 Mhz. Oscilador tipo "LP" para frecuencias entre 32 y 200 Khz., usando un cristal de baja potencia. Oscilador tipo "RC" para frecuencias no mayores a 5.5 Mhz., usando resistencia y capacitor. Oscilador INTRCes un reloj interno de 4MHz
Ing. Edgar Fernando Tipn C.
18
Banco de registros
Los registros son las diferentes posiciones de la memoria RAM. Se clasifican en Especiales y Generales. Los Especiales son registros reservados para las configuraciones internas del PIC y los Generales para el almacenamiento de datos del programa. La memoria RAM se divide en 1, 2 o 4 Bancos en funcin del tamao de la memoria, por lo que se debe seleccionar el banco correspondiente antes de almacenar o leer un determinado registro
Ing. Edgar Fernando Tipn C.
19
Temporizadores
Los temporizadores son contadores descendentes y programables, en los cuales se carga un valor inicial y se decrementa en funcin de los pulsos de reloj recibidos y su configuracin. El Watch Dog Timer (WDT) se considera un temporizador especial, que permite el reseteo del PIC pasado un tiempo de espera programado sin ser reiniciado por software
20
Oscilador
Oscilador tipo "HS" para frecuencias mayores de 4 Mhz. En el caso del PIC16F877 podr instalarse un oscilador hasta 20 Mhz. Oscilador "XT" para frecuencias de 455KHz a 4 Mhz. Oscilador tipo "LP" para frecuencias entre 32 y 200 Khz., usando un cristal de baja potencia. Oscilador tipo "RC" para frecuencias no mayores a 5.5 Mhz., usando resistencia y capacitor. Oscilador INTRC es un reloj interno RC de 4MHz
Ing. Edgar Fernando Tipn C.
21
Es el que establece el flujo de los direccionamientos de la memoria de programa, su tamao depende de la capacidad de la memoria de programa, por ejemplo para un PIC de 512 es de 9 Bits y para uno de 8K es de 13 Bits.
22
Reset
Posee un MCLR (Master Clear) externo, que genera una reiniciacin del PIC al recibir un pulso bajo en el pin correspondiente. Tiene un POR (Power-On Reset) que se genera siempre que la tensin desciende entre 2.1V y 1.5V. Por desbordamiento del WDT. Por despertar de un comando SLEEP
23
Recursos auxiliares
Temporizadores para controlar los tiempos. Perro guardin (Watch Dog Timer). Conversor A/D para recibir seales analgicas. Comparador analgico para comprobar el valor de una seal analgica. Sistema de proteccin ante fallos de alimentacin. Estado de reposo, para minimizar el consumo de energa.
24
PIC 16F877
En la actualidad es uno de los PICs ms completos, cuenta con: Comparadores Analgicos. Tres temporizadores TMR0 y TMR2 de 8 bits y TMR1 de 16 bits. Memoria de Programa de 8 K de 14 bits, FLASH, por lo que abarca un rango de direcciones desde 00000H a la 1FFFH. Memoria de Datos RAM de 368 bytes. Memoria de Datos EEPROM de 256 bytes.
Ing. Edgar Fernando Tipn C.
25
Tiene 14 tipos diferentes de interrupciones. Un juego de 35 instrucciones RISC. El encapsulado es de plstico DIP con 40 pines. Permite un rango de frecuencias de trabajo de hasta 20 MHz. Soporta osciladores de tipo externo: LP, RC, HS, XT. No tiene oscilador interno. Perro guardin Watch Dog Timer (WDT) con el reloj RC interno para mejor seguridad.
26
2 Canales PWM max. resolucin: 10-bit Puerto Serial: Synchronous Serial Port (SSP) con SPI (Master mode) e I2C (Master/Slave), USART Puerto paralelo esclavo de 8 Bits Voltaje de alimentacin VDD debe estar entre 2 y 5.5 V. Voltaje de grabacin de programa (Vpp) debe estar entre 12 y 14 V DC. Tiene 33 lneas de E/S digitales, divididas en cinco puertos (puerto A 6 lneas y puerto B, C y D 8 lneas y puerto E de 3 lneas).
Ing. Edgar Fernando Tipn C.
27
8 conversores A/D de 10 bits. Corriente mxima absorbida por los puertos A, B y E o C y D combinados: 200 mA. Corriente mxima suministrada por los puerto A, B y E o C y D combinados: 200 mA . Corriente mxima absorbida por lnea: 25 mA. Corriente mxima suministrada por lnea: 25 mA.
28
Modos de direccionamiento
Inmediato: aqu la instruccin utiliza un dato determinado. Ej: movlw 0x15 Directo: el operando utilizado por la instruccin se da por medio de una direccin. As por ejemplo: movwf trisa Indirecto: la instruccin usa como operando al registro INDF (direccin de memoria de datos 00H, pero en la prctica no implementada fsicamente)
Ing. Edgar Fernando Tipn C.
29
Aspecto externo
30
31
32
Conexin de osciladores
OSCILADOR TIPO XT
33
Conexin de osciladores
34
Circuito de Reset
La entrada MCLR permite reiniciar el estado del micro, llevndose a cabo dos acciones importantes
Se carga un 0 en el Contador de Programa, de forma que despus de un Reset siempre se ejecuta la instruccin que est en la posicin 0 de la memoria de programa. Los registros de estado y control toman un estado conocido y determinado.
Ing. Edgar Fernando Tipn C.
35
Circuito de Reset
Dos circuitos muy usados para RESET
36
Circuito Bsico
37
Registro: STATUS
Avisar el estado de la ALU (C, DC, Z) Indicar el estado de reset (TO, PD) Seleccionar el banco de memoria
El registro Status est ubicado en la localidad 03h de la RAM Bits del registro status
STATUS
38
Registro: STATUS
STATUS
C:
39
acarreo. Se pone en 1 cuando hay carry en el octavo bit DC: acarreo. Igual que C pero para el bit 4 Z: cero. Se pone en 1 si el resultado de la instruccin anterior es cero PD: (Power down) Se pone automticamente a 1L al conectar el PIC a la alimentacin, se pone a 0L usando la instruccin SLEEP TO: (Time out) Est en 1L al conectar el PIC a la alimentacin, y se pone a 0L cuando el perro guardin se desborda.
Ing. Edgar Fernando Tipn C.
Registro: STATUS
STATUS
RP0: Se usa para seleccionar el banco de memoria que se utilizar en direccionamiento directo. RP1: Igual que RP0, para seleccionar el banco. RP1 RP0 BANC0 0 0 0 0 1 1 1 0 2 1 1 3 IRP: Selecciona el banco de direccionamiento indirecto. 0=banco 0 o 1 y 1=banco 2 o 3.
40
El PIC16F877 tiene 33 lneas para comunicarse con el medio externo. Estas pueden ser utilizadas como entradas y salidas. Seis lneas forman el prtico A: RA0 RA5 Ocho lneas forman el prtico B: RB0 RB7 Ocho lneas forman el prtico C: RC0 RC7 Ocho lneas forman el prtico D: RD0 RD7 Tres lneas forman el prtico E: RE0 RE2
Ing. Edgar Fernando Tipn C.
41
Registros: TRIS A, B, C, D y E
Cada lnea de los prticos debe especificarse si ser usada como entrada o como salida. Los registros TRISA, TRISB, TRISC, TRISD y TRISE sirven para indicar si las lneas son entradas o salidas: con 1L entrada, con 0L salida
b7 b6 b5 b4 b3 b2 b1 b0
TRISB
entradas salidas
Ing. Edgar Fernando Tipn C.
42
Registros: TRIS
Si se selecciona TRISB = 10011000, como en la lmina anterior, entonces las lneas del prtico B quedan especificadas como se indica.
b7 b6 b5 b4 b3 b2 b1 b0
PORTB
X X X X X X X X
entradas salidas X datos
43
44
45
ADFM.- Seleccin de formato del resultado. Al ponerlo en 1 se selecciona resultado de 10 bits justificado a la derecha. Y con un 0 se selecciona justificacin a la izquierda. PCFG3:PCFG0.- Bits de configuracin de las entradas del convertidor. Configuran las patitas de entrada del convertidor de acuerdo a la siguiente tabla, (en donde A = Entrada Analgica D = Entrada /Salida digital)
Ing. Edgar Fernando Tipn C.
46
REGISTRO ADCON1
47
48
49
50
Registro: OPTION
OPTION
Su funcin principal es controlar el TMR0 Est ubicado en la localidad 81H, banco 1de la RAM Su formato es:
RBPU: 1 activa, 0 desactiva, las resistencias Pull-up de PortB INTEDG: 0 activa flanco descendente, 1 activa flanco ascendente de la interrupcin externa RB0/INT TOCS: 1 contador de pulsos por RA4/TOCK1, 0 temporizador, se incrementa por el ciclo de instruccin interno. TOSE: 0 incrementa TMR0 en el flanco ascendente, 1 incrementa TMR0 en el flanco descendente
51
Registro: OPTION
PSA:
OPTION
52
Su funcin principal es controlar las interrupciones Est ubicado en la localidad 0BH de la RAM Su formato es:
GIE: PEIE: TOIE: INTE: permiso global de las interrupciones, con 1 habilita habilitacin de interrupciones de los perifricos. 1 habilita interrupcin de TMR0, 0 lo deshabilita 0 deshabilita interrupcin externa RB0/INT, 1 la habilita
53
TOIF:
INTF:
bandera de interrupciones en RB0 1: ha ocasionado una interrupcin (debe borrarse por software) 0: No ha ocasionado interrupcin bandera de interrupciones en RB4 a RB7 1: han cambiado bits RB4 a RB7 (debe borrarse por software) 0: No ha cambiado el estado
RBIF:
54
55
Manejo de Interrupciones
Interrupcin es un salto especial a una subrutina que no est contemplado en un punto especfico del programa principal, sino que puede ocurrir en cualquier punto de ste y no es provocado por una instruccin en el programa, sino por un evento interno o externo al sistema del microcontrolador. Los dispositivos que manejan eventos capaces de provocar una solicitud de interrupcin se denominan fuentes de interrupcin. El PIC16F877 cuenta con 14 fuentes de interrupcin.
Ing. Edgar Fernando Tipn C.
56
Manejo de Interrupciones
Cada fuente de interrupcin posee dos bits asociados a ella: Una Bandera (terminada en F) de Interrupcin, la cual es activada (en alto) por el evento para solicitar una interrupcin. Una Mscara (terminada en E) Local de Interrupcin, la cual si est desactivada (en bajo) bloquear la solicitud de interrupcin correspondiente, pero si est activada (en alto) permitir la solicitud de Interrupcin.
Ing. Edgar Fernando Tipn C.
57
Manejo de Interrupciones
Adems existe una mscara de interrupcin global GIE (INTCON<7>), la cual bloquear todas las solicitudes de interrupcin si est desactivada (GIE=0). Algunas fuentes de interrupcin tambin poseen una segunda mscara de interrupcin global denominada PEIE (INTCON<6>). De hecho, acta sobre todas las fuentes de interrupcin, excepto las interrupciones debidas a INT, el sobreflujo del Timer 0 y las interrupciones del puerto B (INTF, T0IF y RBIF).
Ing. Edgar Fernando Tipn C.
58
Manejo de Interrupciones
La nica manera en que una solicitud de interrupcin provoca en efecto una interrupcin en el programa es cuando: La mscara global est activada (GIE=1). (En su caso) la mscara global de perifricos est activada (PEIE=1) La mscara local est activada Ocurre un evento que activa la bandera correspondiente. La lgica de activacin de mscaras y banderas descrita puede entenderse en trminos de un diagrama lgico. En este diagrama se muestran las 14 fuentes de interrupcin del PIC16F877 y se usan los nombres especficos de cada fuente de interrupcin para sus respectivas banderas y mscaras de interrupcin.
59
INTERRUPCIONES
60
Cuando se cumplen las siguientes tres condiciones simultneamente: El bit GIE est activado (en alto) Se produce un evento que solicita interrupcin (se activa alguna de las banderas de interrupcin) Est activada la mscara correspondiente a la bandera activada.
Ing. Edgar Fernando Tipn C.
61
62
Dado que el programa principal no puede prever en que punto ser interrumpido, la rutina de atencin a la interrupcin debe ser tal que no altere ninguno de los registros que requiere paso a paso el programa principal para su operacin normal. Estos registros son los que van guardando el contexto del programa (tal como en qu banco est, el resultado de la ltima operacin, etc.) y son: Registro STATUS Registro W Registro PCLATH (si se estn usando las pginas 1, 2 o 3).
Ing. Edgar Fernando Tipn C.
63
;* Salva informacin de contexto previo a la rutina de atencin a la interrupcin MOVWF W_Temp ;Salva el registro W en en un registro temporal SWAPF STATUS,W ;Copia STATUS en W (usa SWAP para no alterarlo al copiarlo) CLRF STATUS ;Banco cero, sin importar banco actual MOVWF STATUS_temp ;Salva STATUS en STATUS_temp (Banco 0) ; MOVF PCLATH,W ;slo se requiere si se estn usando las pginas 1,2,y/o 3 ; MOVWF PCLATH_temp ;salva PCLATH ; CLRF PCLATH ;pgina 0 sin importar pgina actual ... ;aqu se escribe el cdigo de la rutina de atencin a la interrupcin ... ;* A continuacin restablece la informacin de contexto que salv al inicio ; MOVF PCLATH_Temp.,W ;rescata PCLATH ; MOVWF PCLATH ;si se usan las paginas 1,2 y/o 3 SWAPF STATUS_temp,W ;rescata el STATUS original MOVWF STATUS ;restablece banco original SWAPF W_temp,F ;rescata el W original SWAPF W_temp,W ;sin alterar el STATUS ya rescatado. RETFIE
64
65
Programacin de Display
66
TIMER 0
67