Fundamentos de los Microcontroladores
-
Upload
jonathan-ruiz-de-garibay -
Category
Engineering
-
view
165 -
download
4
Transcript of Fundamentos de los Microcontroladores
Sistemas Electrónicos Programables Facultad de Ingeniería, Universidad de Deusto
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
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
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
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
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
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.
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…
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.
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
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…
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
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
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
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
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
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…
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
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.
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.
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
Nú
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 − 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 ′𝑡𝑖𝑐𝑘𝑠′
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
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
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
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
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
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
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.
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
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
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