You are on page 1of 37

MICROPROCESADORES

Tema 6: Microcontroladores
Carlos Garre del Olmo

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

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

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

Qu es un Microcontrolador?
MICROPROCESADORES

Microcontrolador: todos los componentes bsicos de un computador integrados en un nico chip:


Unidad central de proceso. Memoria (principal e incluso secundaria). Unidades de entrada/salida.

Ms microcontroladores que personas en el mundo!


Cuantos microcontroladores llevas ahora mismo en los bolsillos? Telfono mvil, llaves del coche, iPod, llave del garaje Cuntos tienes en casa? Lavadora, microondas, televisor, teclado, ratn, Y en el coche? Un coche moderno puede tener cerca de 100 microcontroladores (airbags, traccin, ABS, ). En 2003, Microchip vendi 25 millones de microcontroladores PIC para el control de airbags.
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
3

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

Caractersticas de los Microcontroladores


MICROPROCESADORES

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

Comunicacin Analgica y Digital


MICROPROCESADORES

Conversores A/D:
Nmero de puertos: 0 a 32 Resolucin (bits) por puerto: 10b a 16b

Interfaz de puerto serie:


USB: Soporte para USB 2.0. OTG (On-The-Go): Pensado para sistemas embebidos, permite que un mismo dispositivo acte como master y como slave. UART / USART: Clsica conexin de puerto serie (RS-232). La UART slo soporta comunicacin asncrona. Comunicacin con otros sistemas. SPI (Serial Peripheral Interface): interfaz serie sncrona y full-duplex que sigue el paradigma maestro/esclavo. Comunicacin entre componentes electrnicos del mismo sistema, que requieran buen ancho de banda. I2C (Inter-Integrated Circuit): maestro/esclavo ms lento que SPI. Pensado para comunicacin entre componentes que no requieran velocidad, sino bajo coste. Requiere menos pines y permite conectar dispositivos en caliente.

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

Comunicacin Analgica y Digital (II)


MICROPROCESADORES

Otras interfaces digitales:


CAN (Controller Area Network): Comunica varias MCUs entre s. Diseado para automviles comunicar todos los sistemas electrnicos del automvil. LIN (Local Interconnect Network): Subsistema de CAN ms econmico. IrDA: Comunicacin por infrarrojos. Puerto paralelo: GPIO, PMP. AC97: Interfaz de E/S para audio. Conecta la MCU con un codec externo. Ethernet: clsica conexin de red. Radiofrecuencia (RF): comunicacin inalmbrica rfPIC: 10MW (~200m)

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

Sensores, Actuadores y Otros


MICROPROCESADORES

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.

Mdulo CCP (Capture/Compare/PWM)


Utiliza un registro dedicado para las tres funciones (CCPR) y un pin de E/S dedicado. Acta junto con el primer temporizador (TMR1). Capture: en el momento en el que ocurre un flanco (programable) en el pin, se guarda el valor de TMR1 en CCPR y salta una interrupcin. Compare: se guarda un valor en CCPR, y salta una interrupcin cada vez que el valor de TMR coincide con el de CCPR. PWM (Pulse Width Modulation): utilizado para control de motores. Usa el pin como salida, emitiendo un pulso modulado en anchura. http://tams-www.informatik.uni-hamburg.de/applets/hades/webdemos/95dpi/pic16f628-ccp/exemplo_capture.html
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
9

PWM
MICROPROCESADORES

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

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

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

11

Principales Familias
MICROPROCESADORES

Freescale: Divisin de semiconductores de Motorola.


68HC705: MCU ms vendida de la historia? 8 bits, 20 pines, 112B RAM. 68HC11: Familia de MCUs con arquitectura Von Neumann. Instrucciones CISC. Coldfire: arquitectura de 32 bits. Hasta 128KBs datos, 512KBs programa, 500MHz, 120 pines.

Intel:
Familias de 8 y 16 bits. 8051: Muy extendido. Sirve como ncleo para MCUs de otros fabricantes (Atmel: mayores fabricantes de tarjetas inteligentes).

Texas Instruments, Zilog, Analog Devices Microchip:


PIC: MCUs de 8, 16 y 32 bits. dsPIC: DSPs. rfPIC: MCUs con unidad de RF. Por qu lo escogemos? Muy extendido, muchsima informacin, muy didctico, alianza acadmica, muestras gratuitas, fcil programacin (HW y SW),
ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
12

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

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

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

Juego de instrucciones RISC:


35 instrucciones Todas en un ciclo, salvo bifurcaciones (2 ciclos). Memoria de programa: 1024KW de 14 bits. Direccionamiento directo, indirecto y relativo.

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,

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

15

Arquitectura del PIC16F84A


MICROPROCESADORES

Memoria de datos y de programa

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

16

Arquitectura del PIC16F84A


MICROPROCESADORES

Decodificacin y secuenciamiento de instrucciones

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

17

Arquitectura del PIC16F84A


MICROPROCESADORES

Direccionamiento

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

18

Arquitectura del PIC16F84A


MICROPROCESADORES

ALU

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

19

Arquitectura del PIC16F84A


MICROPROCESADORES

Puertos de E/S: Puerto A Puerto B Entrada de interrupcin externa multiplexada con el LSb del puerto B Todo digital

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

20

Arquitectura del PIC16F84A


MICROPROCESADORES

EEPROM

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

21

Arquitectura del PIC16F84A


MICROPROCESADORES

Timer: Entrada de reloj externa multiplexada con el bit 4 del puerto A.

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

22

Arquitectura del PIC16F84A


MICROPROCESADORES

Sistemas bsicos y de seguridad: Reloj: cristal externo circuito RC Interno Power On: 1. POR 2. PWRT 3. OST WDT

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

23

Arquitectura del PIC16F84A


MICROPROCESADORES

Registros: W!

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

24

16F84A: Descripcion de pines


MICROPROCESADORES

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

25

16F84A: Memorias Programa y Datos


MICROPROCESADORES

Memoria de Programa:

Memoria de Datos SFR: Special Function Registers. Divididos en 2 bancos. GPR: General Purpose Registers. Todos de 8 bits.

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

26

16F84A: Special Function Registers


MICROPROCESADORES

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

27

16F84A: Status Register


MICROPROCESADORES

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).

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

28

16F84A: Option Register


MICROPROCESADORES

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).

T0CS: Selecciona la fuente de reloj del Timer:


0 (reloj interno), 1 (pin RA4/T0CKI).

T0SE: Selecciona cundo se incrementa el Timer si se usa reloj externo:


0 (flanco de subida de T0CKI), 1 (flanco de bajada de T0CKI).

PSA: Permite preescalar un contador:


0 (preescala el Timer), 1 (preescala el WDT).

PS2-PS0: Selecciona el ratio de escalado:


ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA
29

16F84A: INTCON Register


MICROPROCESADORES

Control de interrupciones: mscaras y activacin. GIE: Global Interrupt Enable:


0 (desactiva todas las interrupciones), 1 (activa las interrupciones no enmascaradas).

EEIE: Mscara para la interrupcin de escritura terminada en EEPROM.


0 (inhabilita), 1 (habilita).

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

16F84A: Registros INDF y FSR


MICROPROCESADORES

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.

Ejemplo: Limpiar las posiciones de memoria 20-2F usando direccionamiento indirecto:

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

31

16F84A: Registros de la EEPROM


MICROPROCESADORES

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.

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

32

16F84A: Manejo de la EEPROM


MICROPROCESADORES

Lectura:
Escribir direccin en EEADR (00-3F). Activar el bit RD de EECON1. En el prximo ciclo, el dato est en EEDATA

se puede leer de inmediato.

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

16F84A: Puerto A de E/S


MICROPROCESADORES

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.

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

34

16F84A: Puerto B de E/S


MICROPROCESADORES

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.

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

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.

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

36

16F84A: Interrupciones
MICROPROCESADORES

Hay 4 fuentes de interrupcin:


Pin externo RB0/INT. TMR0 overflow. Cambio en los bits 4:7 de PORTB. Fin de escritura en EEPROM.

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

You might also like