Professional Documents
Culture Documents
Tema 6: Microcontroladores
Carlos Garre del Olmo
Microcontroladores
MICROPROCESADORES
Introduccin a los microcontroladores. Principales familias y sus caractersticas. La familia PIC16. Diseo de sistemas empotrados. Programacin de microcontroladores. Introduccin a los DSP
Contenidos
Qu es un Microcontrolador?
MICROPROCESADORES
Sistemas Empotrados
MICROPROCESADORES
Sistema empotrado/embebido (Embedded System): sistema informtico cuyo hardware y software estn concebidos para un uso concreto. Se componen de dos elementos:
Controlador. Sistema a controlar.
Son sistemas informticos embarcados en el propio sistema que van a controlar. En muchos sistemas empotrados es ms prctico utilizar microcontroladores que microprocesadores:
Limitaciones de espacio todo en un nico chip. Limitaciones de consumo los sistemas empotrados muchas veces son porttiles. Limitaciones econmicas es ms barato tener un nico chip que todo el hardware de un computador basado en microprocesador. Las unidades de E/S de los microcontroladores estn diseadas para manejar sensores y actuadores tpicos de los sistemas empotrados.
Ejemplos: Lavadora, televisor, TDT, cajero automtico, UVI mvil, caja del supermercado, misil, llaves del coche, GPS, boyas,
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
4
Suelen utilizar arquitectura Harvard (memoria de datos e instrucciones separadas) Presenta ventajas en computadores que no hay que reprogramar constantemente. Dimensiones muy reducidas los que utilizaremos en las prcticas (encapsulado DIP) habitualmente slo se usan para diseo de prototipos. Gran variedad dentro de una misma familia Adaptado a aplicaciones concretas:
Robots y sistemas mecnicos (control de motores). Comunicaciones (WiFi, USB, Ethernet). Multimedia (entradas A/D y salidas D/A). Aplicaciones crticas (resistencia trmica, robustez). Instrumentacin (sensores, LCD, ).
Robustez (pantallazo azul en una lavadora o en un misil??) Watchdog Timer. Bajo consumo funcionamiento a pilas, sondas espaciales, Dormido hasta recibir interrupcin. Proteccin anticopia de la memoria de programa evitar ingeniera inversa y espionaje industrial.
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
5
Eleccin de un Microcontrolador
MICROPROCESADORES
Obviando factores generales, como el precio o el tamao, las caractersticas que nos ayudan a decidir entre la gran variedad de microcontroladores (PIC) son:
Nmero de bits: Arquitecturas de 8, 16 y 32 bits. Velocidad: en MIPS o en MHz. De 4MHz a 80MHz. Memoria de programa:
Tamao: de 300Bs a 512KBs. Tipo: Flash (regrabable) vs OTP (programable una nica vez). Autoescribible? ICSP.
Memoria principal: de 16Bs a 64KBs. Memoria permanente: EEPROM de 0 a 4KBs. Temperatura de trabajo: De -40C a 150C. Voltaje: desde 18V. Encapsulado: DIP/SPDIP para prototipos. Otros: SOIC, QFN, SSOP, TQFP, DFN, Pines de E/S y pines totales: 4 a 85 / 6 a 100 Unidades de E/S y otros componentes:
Conversores A/D. Puertos de comunicacin digital (serie, RF, Ethernet, USB, ). Temporizadores, comparadores, PWM, capturadores,
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
6
Conversores A/D:
Nmero de puertos: 0 a 32 Resolucin (bits) por puerto: 10b a 16b
Temporizadores
Timers: Contadores de 8 a 32 bits que se incrementan automticamente. Permiten temporizar operaciones, interfaces, etc. Puede haber varios por chip (de 1 a 13). Watchdog Timer: Contador que se incrementa automticamente, y se pone a 0 desde cdigo. Si llega al final de la cuenta, resetea la MCU.
PWM
MICROPROCESADORES
10
Microcontroladores
MICROPROCESADORES
Introduccin a los microcontroladores. Principales familias y sus caractersticas. La familia PIC16. Diseo de sistemas empotrados. Programacin de microcontroladores. Introduccin a los DSP
Contenidos
11
Principales Familias
MICROPROCESADORES
Intel:
Familias de 8 y 16 bits. 8051: Muy extendido. Sirve como ncleo para MCUs de otros fabricantes (Atmel: mayores fabricantes de tarjetas inteligentes).
Microcontroladores
MICROPROCESADORES
Introduccin a los microcontroladores. Principales familias y sus caractersticas. La familia PIC16. Diseo de sistemas empotrados. Programacin de microcontroladores. Introduccin a los DSP
Contenidos
13
Familia PIC16
MICROPROCESADORES
Microcontroladores de 16 bits. Muchsima informacin en Internet y en libros: robots, videojuegos, mando a distancia, instrumentacin, multimedia, PIC-Pong y PIC-Tetris:
El miembro de la familia ms conocido es el 16F84: 175KBs de programa. 68B RAM. 64B EEPROM. 1 timer 8 bits. 18 pines. 3$. Tambin son muy utilizados el 16F876 y 16F877:
16F876: 14KB programa, 368B RAM, 256B EEPROM, 2x timers 8 bits, 1 timer 16 bits, 5x A/D (10b), USART, SPI, I2C, 2x CCP. 28 pines. 4$. 16F877: 40 pines. 8 canales A/D.
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
14
El PIC16F84A a fondo
MICROPROCESADORES
Pila por hardware de 8 niveles. 4 fuentes de interrupcin: pin externo RB0/INT, TMR0, PORTB<7:4>, EEPROM write complete. 13 pines de E/S. Mximo 25 mA por pin (E/S). ICSP (2 pines), Power-up Timer (PWRT), Watchdog Timer (WDT), SLEEP mode, Code protection,
15
16
17
Direccionamiento
18
ALU
19
Puertos de E/S: Puerto A Puerto B Entrada de interrupcin externa multiplexada con el LSb del puerto B Todo digital
20
EEPROM
21
22
Sistemas bsicos y de seguridad: Reloj: cristal externo circuito RC Interno Power On: 1. POR 2. PWRT 3. OST WDT
23
Registros: W!
24
25
Memoria de Programa:
Memoria de Datos SFR: Special Function Registers. Divididos en 2 bancos. GPR: General Purpose Registers. Todos de 8 bits.
26
27
Similar al registro de estado de x86, pero puede ser escrito y ledo libremente (salvo bits TO y PD), adems de automticamente por la ALU. IRP, RP1: No implementados. RP0: Seleccin de banco de registros: 00 (Banco 0), 01 (Banco 1). TO: Time-out: 0 (WDT time-out), 1 (despus de CLRWDT). PD: Power-down: SLEEP 0. Z: Zero: Igual que en x86. DC: Acarreo de dgito: acarreo del 4 bit (mitad del byte). C: Acarreo: el de toda la vida (MSb).
28
Permite configurar el funcionamiento de algunos componentes. RBPU: Si es 0, se activa un Weak Pull-up en los pines del puerto B. INTEDG: Selecciona qu es lo que provoca una interrupcin en el pin RB0/INT:
0 (flanco de bajada), 1 (flanco de subida).
T0IE: Mscara para la interrupcin de overflow del Timer. INTE: Mscara para la interrupcin externa (pin RB0/INT). RBIE: Mscara para la interrupcin de cambio en el puerto B. T0IF: Flag de la interrupcin de overflow del Timer:
0 (no hay overflow), 1 (ha ocurrido overflow) se debe poner a 0 por software.
INTF: Flag de interrupcin externa. RBIF: Flag de interrupcin por cambio del puerto B (al menos un bit ha cambiado).
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
30
Se utilizan para el modo de direccionamiento indirecto. FSR: puntero (contiene una direccin de memoria). INDF: dato al que apunta el puntero. INDF no es un registro fsico, sino que lo usa el programador. Ejemplo:
En la posicin de memoria 0C tenemos el valor 4F. Cargamos la direccin de memoria en FSR: FSR = 0C. Si leemos INDF, nos devolver el valor 4F: INDF = 4F. Si escribimos en INDF, cambiamos el contenido de la posicin 0C de memoria.
31
La EEPROM no est mapeada en memoria principal. Se accede a ella a travs de unos registros especficos. EEDATA: Es donde guardamos el dato a escribir, o de donde leemos el dato ledo. Es similar al registro DR visto en el tema 2. EEADR: Es donde indicamos la direccin de la EEPROM a leer o a escribir. Como el 16F84A tiene 64B, el rango estar entre 00 y 3F. EECON1 y EECON2: Control de la EEPROM. EECON2 no es un registro fsico:
EEIF: Flag de interrupcin de fin de escritura. Se debe limpiar por software. WRERR: Se pone a 1 si falla la escritura. WREN: Si est a 1, la EEPROM es de lectura/escritura. Si no, de slo lectura. WR: Si el programador lo activa, comienza una escritura. Se limpia por hardware. RD: Si el programador lo activa, comienza una lectura. Se limpia por hardware.
32
Lectura:
Escribir direccin en EEADR (00-3F). Activar el bit RD de EECON1. En el prximo ciclo, el dato est en EEDATA
Escritura:
Escribir direccin en EEADR (00-3F). Escribir valor en EEDATA. Cargar 55h en el registro virtual EECON2. Cargar AAh en el registro virtual EECON2. Activar el bit WR de EECON1 Se recomienda desactivar interrupciones hasta este punto.
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
33
Registro TRISA: cada bit se corresponde con uno de los pines del puerto A. Si ese bit est a 1, significa que ese pin es una entrada. Si es 0, es una salida. Por defecto, todo son salidas (TRISA = 0). Registro PORTA: Lo que escribas en este registro sale por los pines de salida. Si lo lees, lees los pines de entrada. El bit 4 est multiplexado con la entrada de reloj del Timer, segn el bit T0CS del Option Register.
34
Registro TRISB: Similar a TRISA, para el puerto B. Registro PORTB: Similar a PORTA, para el puerto B. Los pines que son entrada (TRISB) se pueden configurar como weak pull-up (bit RBPU del Option register). Los bits 4 a 7 pueden ser configurados para lanzar una interrupcin en cuanto cambia su entrada (si estn configurados como entradas en TRISB) Podemos tener la MCU en modo SLEEP hasta que cambie una entrada.
35
16F84A: Timer0
MICROPROCESADORES
Funciona como un contador de 8 bits que se incrementa automticamente en una de estas dos situaciones (segn el bit T0CS del Option Register):
Ciclo de reloj interno se dice que acta como temporizador. Flanco externo en el pin RA4/T0CKI se dice que acta como contador.
Registro TMR0: Contiene el valor del contador. Si se escribe en l, deja de contar durante 2 ciclos tenerlo en cuenta si queremos una temporizacin precisa! Un contador de 8 bits con un reloj de 4MHz slo nos permite hacer cuentas de unos pocos microsegundos. Solucin para hacer cuentas ms largas: slo incrementar cada X ciclos PRESCALER. El PRESCALER se configura en el Option Register, y permite configurar el Timer para que cuente slo cada 256 ciclos (1:1, 1:2, 1:4 1:256). Cuando el Timer termina su cuenta, genera la interrupcin T0IF. Esta interrupcin no puede cambiar el modo SLEEP, ya que durante este modo el Timer est apagado.
36
16F84A: Interrupciones
MICROPROCESADORES
Mscaras de interrupcin: registro INTCON. Mscara global en el bit GIE. Flags de interrupcin: registros INTCON y EECON1. Cuando ocurre una interrupcin:
El bit GIE se pone a 0 automticamente (no se anidan interrupciones). Se hace un PUSH del PC a la pila hardware de 8 niveles. Cualquier otro contexto que se quiera salvar, se debe hacer por software. PC = 0004h vector de rutina de tratamiento de interrupciones. Se ejecuta la rutina de tratamiento. La rutina de tratamiento limpia los flags. La rutina de tratamiento regresa con la instruccin RETFIE.
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
37