Fundamentos de los Microcontroladores

31
Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto Fundamentos de los Microcontroladores

Transcript of Fundamentos de los Microcontroladores

Page 1: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto

Fundamentos de los Microcontroladores

Page 2: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

¿Qué es un microcontrolador?

Está compuesto, principalmente, por la unidad central de proceso (CPU), memoria/s, periféricos de entrada/salida y recursos especiales. Se diferencia de un microprocesador en que esté no incluye

las memorias dentro del propio circuito integrado.

Los microcontroladores son diseñados para disminuir el coste económico y el consumo energético de un sistema particular. Cualquier electrodoméstico moderno utilizar un pequeño

microcontrolador para su funcionamiento.

Un Microcontrolador es un circuito integrado

programable capaz de ejecutar un único

programa grabado en su memoria

Page 3: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Familias de Microcontroladores

Los fabricantes crean familias de microcontroladores

con características comunes y recursos específicos

que depende de las aplicaciones.

Familia Instrucciones Pila Recursos Vectores de

Interrupción

Número de

Pines

PIC10xx

PIC12xx 33 (12 bits) 1 nivel Limitados 0 6 – 8

PIC16xx 35 (14 bits) 8 niveles Típicos 1 14 – 44

PIC18xx 77 (16 bits) 31 niveles Avanzados 2 18 – 80

Familias de microcontroladores PIC de la empresa Microchip

Page 4: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Arquitectura Harvard o Von Neumann

En la gran mayoría de los microcontroladores se utiliza la arquitectura Harvard;

la cual dispone de dos memorias separadas, una para el programa (de tipo ROM, PROM, EEPROM o Flash) y otra memoria volátil para los datos (de tipo SRAM).

Las principales ventajas son:

Buses de comunicación adaptados a cada memoria diferente tamaño de datos e instrucciones.

Acceso simultáneo a ambas memorias mejora la velocidad de procesamiento.

CPU Memoria de

Programa

Memoria de

Datos

Page 5: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

El Procesador

Es el elemento más importante del microcontrolador y determina sus principales características, tanto a nivel hardware como software.

Está compuesto la unidad de control, la unidad aritmético-lógica, una serie de registros y, en la mayoría de los casos, una pila.

El Procesador es el encargado de ejecutar las

instrucciones de un programa; cargando cada

instrucción de la memoria de programa,

ejecutando cada operación implicada leyendo

información desde y hacia la memoria de datos y

guardando los resultados

Page 6: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

El Procesador: Registros

El tamaño de los registros de un procesador determina

muchas de las potencialidades de un sistema.

Los sistemas pueden ser de 4, 8, 16, 32 o 64 bits.

Un Registro es un espacio de memoria, desde

donde se toman los datos para las operaciones,

se guardan resultados o se permite la interacción

con los periféricos de entrada/salida y recursos

especiales del microcontrolador

Una operación de suma con operandos de 16 bits será ejecutada en

una sola instrucción con un procesador de 16 bits mientras que con

uno de 8 bits, se deberán ejecutar varias instrucciones

Page 7: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

El Procesador: Registros (continuación…)

Tomando como ejemplo los microcontroladores PIC,

estos tienen dividida la memoria de datos en:

Registros de Propósito Específico: estos registros tienen

una función específica para el procesador y controlan el

estado del mismo, los periféricos…

Registros de Propósito General: pueden ser usados por

el programador libremente.

Page 8: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

El Procesador: Unidad de Control

Es el elemento más complejo de un procesador y

normalmente está dividida en unidades más

pequeñas trabajando en conjunto.

Para la sincronización de la CPU se debe utilizar un reloj,

basado en un circuito oscilador, que será el encargado de

marcar el ritmo de trabajo.

Sobre la Unidad de Control recae la lógica

necesaria para la decodificación y ejecución de

instrucciones, el control de los registros, la ALU,

los buses de acceso a memoria…

Page 9: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

El Procesador: Unidad de Control (continuación…)

Se incrementa automáticamente en cada ciclo de

instrucción de forma que las instrucciones sean

leídas en secuencia.

Algunas instrucción como los saltos y llamadas y retornos

de subrutinas, interrumpen la secuencia al escribir un

valor concreto en el contador de programa.

El Contador de Programa o PC es un registro

específico que apunta a la posición de memoria

de programa donde se encuentra la siguiente

instrucción a ejecutar por la unidad de control.

Page 10: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

El Procesador: Unidad de Control (continuación…)

Tomando como ejemplo los microcontroladores PIC, cada ciclo está dividido en cuatro fases de trabajo:

Q1 decodificación de la instrucción

Q2 lectura del dato (si lo hay)

Q3 ejecuta la instrucción

Q4 guarda el resultado (si lo hay)

PC

Ejecuta Inst. (PC-1) Lee Inst. (PC)

PC + 1

Ejecuta Inst. (PC) Lee Inst. (PC + 1)

PC + 2

Ejecuta Inst. (PC + 1) Lee Inst. (PC + 2)

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

Utiliza segmentación: ejecuta

una instrucción al mismo

tiempo que lee la siguiente

Page 11: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

El Procesador: Unidad Aritmético-Lógica

Las operaciones aritmético-lógicas pueden ser de un solo operando, siendo típicamente un registro de la memoria de datos,

o de dos operandos, siendo uno típicamente un registro de datos y el otro

un literal, que viene incluido en la propia instrucción,

el registro temporal W, el cual deberá ser cargado previamente.

La Unidad Aritmético Lógica o ALU realiza las

operaciones aritméticas y lógicas indicadas en

cada instrucción; y genera unas señales o

códigos de condición como el acarreo, overflow,

resultado cero…

Page 12: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

El Procesador: Unidad Aritmético-Lógica (continuación…)

Tomando como ejemplo una ALU simplificada de 8 bits de los microcontroladores PIC:

¿Cómo se ejecutaría una suma de un registro mas un literal?

¿Cómo se ejecutaría una suma de dos registros de la memoria de datos?

¿Cómo se verían afectados los flags?

ALU<8>

W BITOP

BU

S D

E D

AT

OS

FLAGS

Flags disponibles:

• Z se pone a 1 cuando el

resultado de la operación es 0;

0 en caso contrario

• C se pone a 1 cuando el

resultado de la operación no

entra en 8 bits; 0 en caso

contrario

Page 13: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

El Procesador: La Pila

Sólo existen dos operaciones posibles sobre una pila: push (apilar o escribir un dato) y pop (desapilar o leer un dato)

El tamaño de la pila es importante para un programador ya que limita el número de llamadas anidadas que se pueden realizar.

La Pila es una estructura de datos de tipo LIPO

(Last In First Out) que almacena temporalmente

la dirección de retorno para el uso de subrutinas

e interrupciones; guarda el valor del PC antes de

la llamada.

El ataque informático conocido como Stack

Overflow se basa en introducir datos

‘malignos’ en la pila

Page 14: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Interrupciones

Los microcontroladores pueden disponer de múltiples causas de interrupción:

E/S digitales: por cambio de estado de un pin o de un conjunto de ellos

Comunicación serie: al recibir un datos por el puerto

Conversión AD: al finalizar el proceso de conversión

Temporizadores: por desbordamiento del temporizador

Una Interrupción es una llamada a una

subrutina generada por los periféricos del

microcontrolador; dicha llamada se produce

automáticamente cuando se detecta un evento

Page 15: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Interrupciones (continuación…)

El proceso de interrupción se puede resumir en: 1. Un evento es detectado por el microcontrolador, lo que activa

los flags correspondientes.

2. La unidad de proceso, gracias a dichos flags, detecta que se ha producido una interrupción y

a. termina la ejecución de la instrucción actual,

b. se guarda en la pila el valor del contador de programa y

c. se genera un salto a la rutina de interrupción

3. Se ejecutan las instrucciones de la rutina de interrupción: a. Se identifica la interrupción por medio de los flags,

b. se atiende la interrupción,

c. se reponen los flags y

d. se finaliza la rutina de interrupción

4. La unidad de proceso restituye el estado anterior a. cargando en el contador de programa el valor guardado en la pila

Page 16: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Interrupciones (continuación…)

Aunque el proceso de interrupción es algo complejo,

tiene importantes ventajas:

Velocidad de atención a eventos: cuando el tiempo de

respuesta es un factor clave del sistema, el modelo

encuesta no es eficiente.

Capacidad de procesos asíncronos: el programador

puede trabajar como si de procesos paralelos se tratara.

Las interrupciones son tan eficaces que permiten al

procesador actuar como si estuviese haciendo varias cosas a

la vez cuando en realidad sólo es capaz de ejecutar una

instrucción tras otra

Page 17: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Periféricos

Destacan entre otros Entradas/salida digitales

Conversor AD

Temporizadores

Contador Asíncrono

Puertos de comunicación

Modulación de ancho de pulso PWM

Memoria de datos no volátil

Un Periférico es una funcionalidad del

microcontrolador que permite el manejo de

dispositivos de entrada/salida, comunicación,

temporizaciones…

Page 18: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Entradas/salidas Digitales

Normalmente, cualquier pin de un microcontrolador puede ser una entrada/salida digital por lo que: Habrá que configurar, por medio de un registro, si el pin es de salida o de

entrada.

Para conocer el estado de una entrada, se leerá un registro del microcontrolador, mientras

que para establecer el estado de una salida, se escribirá dicho estado en un registro del microcontrolador.

Las Entradas y Salidas Digitales permiten

controlar señales lógicas de 0 y 1; siendo voltajes

de 0V y +5V, respectivamente, las tensiones

típicamente utilizadas.

El registro de lectura y escritura puede ser

el mismo registro en algunos casos; y

diferente registro en otros

Page 19: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Conversor AD

Típicamente, en los microcontrolador sólo se dispone de entradas analógicas, las cuales pueden actuar también como entradas/salidas digitales, en la mayoría

de los casos.

La conversión se realiza en base a unos voltajes de referencia Vref- y Vref+ que se corresponderán con el valor digital 0 y valor máximo, respectivamente.

Suele ser posible configurar diferentes parámetros de la conversión: Precisión: números de bits del resultado binario.

Rango: configuración de los valores de Vref- y Vref+.

El Conversor Analógico-Digital convierte una

señal analógica de voltaje a una valor digital en

formato binario; con el propósito de facilitar su

procesamiento.

Page 20: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Temporizadores

Suelen utilizan un registro (temporizador de 8 bits) o varios (temporizador de 16 o 32 bits) el cual se incrementa a cada ciclo de trabajo del propio microcontrolador. para realizar temporizaciones más largas, pueden disponer de

pre-divisores y post-divisores.

En general, disponen de un interrupción cuando el registro contador se desborda, es decir, pasa del valor máximo a 0.

Un Temporizador es un dispositivo que permite

medir el tiempo; está compuesto por un contador

incremental que hace saltar una alarma cuando

ha transcurrido el tiempo configurado.

Page 21: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Temporizadores (continuación…)

La medida natural para medir el tiempo son los

segundos y todos sus múltiplos: mS, µS…

En algunos microcontroladores se usa el ‘tick’, siendo un

‘tick’ el tiempo necesario para que se genere una señal

de incremento con el reloj del sistema.

TMR

0

255

Valor Inicial

me

ro d

e ‘ti

ck

s’

Desbordamiento

Para contar un determinado número

de ‘ticks’, se escribe un valor inicial en

el registro que será:

En unidades naturales solo habrá que

multiplicarlo por el valor de un ‘tick’

𝑉𝑎𝑙𝑜𝑟 𝐼𝑛𝑖𝑐𝑖𝑎𝑙 = 256 − 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 ′𝑡𝑖𝑐𝑘𝑠′

Page 22: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Contador Asíncrono

Se dice que es asíncrono porque los impulsos no llegan regularmente;

En el caso de ser regulares, sería un contador síncrono y podría funcionar como temporizador.

Se puede configurar el tipo de evento que genera un impulso, típicamente

un flanco ascendente (pasar de 0 a 1 lógico) o

un flanco descendente (pasar de 1 a 0 lógico)

Un Contador Asíncrono es un circuito capaz de

realizar el cómputo de los impulsos que recibe

una entrada destinada a tal efecto; suelen

reutilizan la circuitería de los temporizadores

Page 23: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Temporizador vs. Contador Asíncrono

Tomando como ejemplo una versión simplificada del

Timer0 de los microcontroladores PIC:

Prescaler

TMR0

Fosc

T0CKI

0

1

0

1

Interrupción

PSA T0PS<2:0> T0CS

..

0h01

0h00

0hFF

0hFE

0h01

0h00

Desbordamiento

Temporizador

1:2

1:4

Contador

1:2

1:4

Page 24: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Puertos de Comunicación

Existen multitud de modos de comunicación diferentes entre los que destacan, en el caso de los microcontroladores:

UART, comunicación serie síncrona

USART, comunicación serie síncrona y asíncrona

I2C, interfaz serie de 2 hilos

CAN (Controller Area Network), redes de conexionado multiplexado desarrollado para la automoción.

Los Puertos de Comunicación permiten

manejar e intercambiar datos entre el

microcontrolador y otros dispositivos electrónicos

Page 25: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Modulación en Anchura de Pulsos

Muy útil para el control de la velocidad de motores

de corriente continua o para la regulación de luces

(dimming).

Utilizan, generalmente, uno de los temporizadores del

microcontrolador

La Modulación en Anchura de Pulsos o PWM

permite generar una señal de salida rectangular

con un periodo constante y una anchura de pulso

variable

Se puede utilizar también para transmitir información a

través de un canal de comunicaciones

Page 26: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Memoria de Datos no Volátil

Esta memoria es independiente de la memoria de datos de tipo RAM y de la memoria de Programa. Permite guardar, por ejemplo, valores de configuración del

programa

Muchos microcontroladores han incorporado este tipo de memoria como un periférico más; Siendo las memorias de tipo EEPROM las más comunes.

La Memoria de Datos no Volátil permite

almacenar datos de forma persistente en el

propio microcontrolador; de forma que se puede

apagar y/o reiniciar el sistema y no se pierden

En algunos microcontroladores, es posible

almacenar datos dentro de la propia

memoria de Programa

Page 27: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

Recursos Especiales

Destacan entre otros:

Reset del sistema

Watch Dog Timer o Perror Guardía

Modo de bajo consumo

Los Recursos Especiales son una serie de

características adicionales que puede incluir un

microcontrolador para mejorar el funcionamiento

o la versatilidad del mismo

Page 28: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

R.E.: Reset

Existen muchas causas diferentes para un reset: Power-On Reset fallo de alimentación

MCLR pin reset reinicio provocado con el pulsador externo de reset

Watch Dog Timer reset desbordamiento del perro guardián

Software Reset reinicio por medio de la instrucción sofware reset.

Stack Overflow Reset desbordamiento de la pila

El Reseteo de un sistema es una situación, a

priori, no deseable por diversas causas; y que

cuando se produce debe ser analizada para que

no vuelva a producirse.

Page 29: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

R.E.: Watch Dog Timer

Este temporizador se encuentra desactivado por

defecto; y puede ser activado por el programador.

Para evitar que se desborde, se utiliza la instrucción

software clrwdt.

El Watch Dog Timer o perro guardián es un

temporizador especial que resetea el

microcontrolador cuando se desborda; evita

situaciones de bloqueo indefinidas

Se utiliza únicamente en los casos en los que el programa

incluye algoritmos muy complejos que pueden bloquear el

funcionamiento normal del microcontrolador

Page 30: Fundamentos de los Microcontroladores

Sistemas Electrónicos Programables

R.E.: Modo de Bajo Consumo

Para entrar he dicho estado se utilizar la instrucción

software Sleep;

y para volver al estado normal, se puede realizar por

medio de la generación de una interrupción.

El Modo de Bajo Consumo detiene la ejecución

de instrucciones por parte de la unidad de

proceso; y pasa a un estado de ahorro

energético deteniendo además algunos de los

periféricos.

Para utilizar este modo con soltura, se debe conocer muy

bien el funcionamiento del microcontrolador

Page 31: Fundamentos de los Microcontroladores

Esta presentación está sujeta a la licencia de Reconocimiento

de Creative Commons mediante la cual se permite la copia, la

distribución, la comunicación pública y la generación de obras

derivadas sin ninguna limitación siempre que se cite al autor y

se mantenga el aviso de la licencia.

© 2014, Jonathan Ruiz de Garibay

Algunos derechos reservados