2. Introducción a los Microcontroladores
Introducción
Arquitectura
Memoria
I/O
Interrupciones
Timers/PWM
Interfaces y Otros Periféricos
3. Introducción
Uso de los microcontroladores
Microondas, Lavarropas, Televisores, ...
Automóviles, aviones, barcos
Teléfonos
Automatización industrial
Pequeños dispositivos ad-hoc
...
4. Introducción
Ejemplo. Se quiere:
Leer periódicamente una temperatura
Prender y apagar un calefactor
Mostrar en un display la temperatura
Permitir al usuario ajustar la temperatura
Posibilidad de actualizar la funcionalidad
con un interfase serie
5. Introducción
Diseño discreto. Se requiere:
Un microprocesador
20 líneas de I/O (2 chips de 16 c/u)
1 Interfaz serie (1 chip)
1 Timer (1 chip)
Memoria SRAM (para variables)
Memoria Flash (para programa)
Memoria EEPROM (para constantes)
8. Oferta de Microcontroladores
Estructurada por “familias” y
“subfamilias”.
Por ejemplo, cada familia tiene el
mismo nucleo del procesador (su código
será compatible): 8051,PIC,HC,ARM
O son familias orientadas a la aplicación
O por performance (de diferente tipo)
12. Oferta de Microcontroladores
Dentro de cada “familia” hay mucha
varidad de dispositivos
Pueden estar agrupados en
“subfamilias”
Una forma de clasificación es en base a
los perifericos que integran o memoria
19. Memoria
Registros (memoria de corto plazo):
Pequeña (relativamente)
Almacenamiento temporario p/CPU
Memoria de datos
Relativamente Grande
Almacena datos mientras el MCU funciona
Memoria de programa
Relativamente Grande
De preferencia, mantiene el programa incluso con
el MCU apagado.
21. Memoria: Atención
S/DRAM: sin limite de escrituras
EEPROM: 100.000 ciclos de borrado
Flash: 10.000 ciclos de borrado
22. Memoria: Direccionamiento
Separado:
Cada tipo físico se direcciona por separado
(por ejemplo, usando diferentes registros
índices)
Hay direcciones repetidas
Contínuo:
Se accede siempre igual y la logica interna
accede a la memoria que corresponde
No hay direcciones repetidas
25. Memoria: ejercicio
For (i=100;i>=0;i--)
Inadvertidamente i es almacenada en EEPROM
Inadvertidamente i esta implementada como
unsigned
Como la EEPROM es lenta, cada iteración lleva,
digamos, 10 ms
¿Que pasa al conectar el MCU?:
el programa se cuelga
Me doy cuenta, digamos, a los 10 segundos
Empiezo a “debuggear” el programa (pero no apago el MCU)
¿En cuanto tiempo me quedo sin microcontrolador?
27. Digital I/O
Implementadas por pines de conexión directa
al exterior:
Los MCU tienen en general de 8 a 32 pines (o
más).
Se agrupan en “ports” de a 8 pines.
En general, los pines se pueden configurar como
entrada o salida
La lógica puede ser positiva o negativa.
Los pines pueden tener otras funciones
alternativas.
28. Digital I/O
•pin 1 del port B
•Módulo de
Interrupción 1 -
entrada 5
•Pin Tx de puerto serie
•Conversor AD canal 5
29. Digital I/O
Los pines se controlan mediante 3 registros:
Data Direction Register (DDR): hay uno por cada
puerto y cada bit determina la dirección de un pin.
Port Register (PORT): uno por cada puerto y cada
bit controla el estado del puerto (si es de salida)
Port Input Register (PIN): uno por cada puerto y
cada bit da el estado de su respectivo pin, esté
este configurado como entrada o salida.
32. Digital I/O
PTBDD = 0x80; // initialize PTB7 as output
PTBD = 0; // initialize PTB to 0
PTBD_PTBD7 = ~PTBD_PTBD7; // invert the output
1 0 0
0 0 0
0 0
Ejemplo:
bit 7 bit 0
33. Digital I/O
PORT Register: de preferencia debe
escribirse con operaciones de escritura
de bit, si estan disponibles
Caso contrario usar : Read-Modify-Write
con cuidado.
34. Digital Input
La entrada se muestrea con cada pulso
(flanco ascendente normalmente) del
clock, lo que ocasiona “metaestabilidad”:
35. Digital Input
Normalmente incorporan un Schmitt-
trigger.
Para reducir la “metaestabilidad” se
introducen “sincronizadores”
36. Digital Input
Cancelación de ruidos
Resistencias de pull-up/down en las entradas:
puede (debe) programarse su
conexión/desconexión (a veces mediante el
registro PORT).
37. Digital Output
Apenas el DDR setea un pin como
salida, el MCU excita el pin de acuerdo
al contenido del registro PORT
correspondiente.
Cuidado con los cortocircuitos
Orden de seteo de DDR y PORT
42. Conversión Analógica-Digital (CAD)
La velocidad de muestreo determina la
máxima frecuencia posible de muestrear
(fmax<fs/2). Además, hay que tener en
cuenta el tiempo que puede llevar la
conversión.
La conversion lleva tiempo: para asegurar la
estabilidad se usa una etapa de retención
(sample-hold)
REPASO
43. Conversión Analógica-Digital (CAD)
Directa (flash): muy rápida (1 bit time);
muy cara
REPASO
Este modo de
conversión rápido es
utilizado en algunos
MCU y por lo general,
no hay mas de 1 o 2
canales “rápidos”.
46. Conversión Analógica-Digital (CAD)
Control del CAD
Habilitación
Tensión de
Referencia
Entrada Salida (registro)
Conversion
Complete
Start Conversion
47. Conversión Analógica-Digital (CAD)
Los MCU pueden tener de 4 a 16 o más entradas
(canales) y un solo CAD, de 8 a 12 bits de precisión.
Se multiplexan los canales (aumentan los tiempos)
Autoincremento: al leer un canal, se pasa al siguiente
y se efectúa un SC automáticamente.
Existe el “modo contínuo” y de disparos sucesivos
mediante el RTC
Una conversión puede “dispararse” por eventos como
un timer, una variación de una entrada digital o una
señal externa.
48. CAD: Ejemplo de características en
un MCU
Linear successive approximation algorithm with 12 bits
resolution.
Up to 28 analog inputs.
Output formatted in 12-, 10- or 8-bit right-justified format.
Single or continuous conversion (automatic return to idle after
single conversion).
Configurable sample time and conversion speed/power.
Conversion complete flag and interrupt.
Input clock selectable from up to four sources.
Operation in wait or stop3 modes for lower noise operation.
Asynchronous clock source for lower noise operation.
Selectable asynchronous hardware conversion trigger.
Automatic compare with interrupt for less-than, or greater-than
or equal-to, programmable value.
49. CAD: Ejemplo de implementación en
un MCU
Estado, control
y configuración
reloj
multiplexor
comparador
54. Introducción a los Microcontroladores
Introducción
Arquitectura
Memoria
I/O
Interrupciones
Timers
Interfaces y Otros Periféricos
55. Interrupciones
Un programa sin uso de interrupiones (polling):
¿inconvenientes?
Procesar
Producir
salidas
. . .
do_init();
. . .
for (;;) {
do_inputs();
do_some_process();
set_outputs()
}
Inicializa-
ciones
Leer
entradas
56. Interrupciones
Con interrupciones:
Pueden no existir
Procesar
Producir
salidas
. . .
do_init();
. . .
interrupts_on;
for (;;) {
do_some_process();
set_outputs()
}
Atender
evento 1
Atender
evento 2
Atender
evento n
. . .
Inicializa-
ciones
57. Interrupciones
Las interrupciones se generan cuando
cuando cambia un “estado”.
Permiten la reacción ante eventos
Restricciones de tiempo real
Polling vs. Interrupts
Interrupt Service Routine (ISR)
REPASO
58. Interrupciones
Control de Interrupciones
Interrupt Enable (IE): bit que se setea para
habilitar al controlador que llame a la ISR cuando
se produce el evento.
Interrupt Flag (IF): lo setea el MCU cuando se
produce el evento. Se limpia automatica o
manualmente.
Interrupt mode (IM): mas de un bit para indicar si
la interrupcion se produce por flanco ascendente,
descendente, , etc.
Global Interrupt Enable.
59. Interrupciones
Control de Interrupciones
Inhabilitar las interrupciones no implica
perder eventos.
Cuidado al limpiar la IF
Normal Interrupts and NMI
60. Interrupciones
Interrupt Vector Table: es una tabla
donde se indica para cada interrupcion
en donde se encuentra la ISR que la
atiende.
Puede contener la dirección de la
primera instrucción de la ISR respectiva
o una instrucion jump (JSR) a la ISR
(depende el MCU)
REPASO
63. Interrupciones
Prioridades: fijas o variables
Dentro de una ISR se puede establecer
cuales interrupciones se permiten (sin
hacerlo “a mano” vía los IE)
Cancelación de ruidos
Eventos internos
64. Interrupciones
Pasos que ocurren ante una interrupción:
1. MCU setea la IF (esté o no habilitada la
interrupción
2. Se termina la instrucción en curso o si el MCU
está en estado “sleep”, se despierta.
3. Se identifica la ISR considerando los IE y la
interrupcion de mas alta prioridad (si hay mas
de un IF seteado).
4. Se llama a la ISR (... y ya pasó un tiempito)
72. Interrupciones
Calificador: dice que la función es una
subrutina de interrupción
Número de vector que
debe atender esta rutina
Alternativa:
Se le puede definir al linker (archivo .prm)
que guarde la direccion de la funcion
directamente:
VECTOR ADDRESS 0xFFDA KBIx-ISR
Y entonces la sintaxis queda:
interrupt void KBIx_ISR(void) { ...
75. Interrupciones
Polling vs. Interrupts
Siempre hay que analizar la situación puntual,
pero en general, usar interrupciones cuando:
Los eventos son infrecuentes
Hay mucho tiempo entre eventos
El cambio de estado es importante
Quiero detectar impulsos cortos
Hay eventos generados por hardware (no hay
rebotes o picos)
Hay muy poco para hacer así que conviene estar
en modo sleep
76. Interrupciones
Conviene “polear” cuando:
El operador es humano
No se requiere una temporización precisa
El estado es mas importante que el cambio
Los “impulsos” duran mucho
Hay ruido en la señal
Hay cosas para hacer en el main (pero no
demasiado)
77. Introducción a los Microcontroladores
Introducción
Arquitectura
Memoria
I/O
Interrupciones
Timers
Interfaces y Otros Periféricos
78. Timers
Son contadores que suben o bajan con
cada pulso de reloj.
El valor actual se lee de un registro o se
setea en el mismo.
Cuidado al acceder a timers con
longitud de registro mayor a la palabra
del MCU
79. Timers
Los timers generalmente generan una
interrupción cuando hacen overflow
Esto sirve para generar señales o
eventos peródicos (con acotada
precisión)
Pueden tener una señal de clock
independiente del MCU. Con ella se
incrementa la cuenta.
80. Timers
Prescaler
Es otro contador (de 8 o 10 bits) que trabaja
contra el clock y produce una salida que es la que
entra al timer.
Se logra una extension de tiempos a medir por la
division del prescaler. Ejemplo:
8 bit timer, clock de 1 Mhz -> cuenta máxima 255 uS con
una resolución de 1 uS
8 bit timer, clock de 1 Mhz, prescaler en 1024 -> cuenta
máxima 260 ms con una resolución de 1 ms.
81. Timers
Otras fuentes de cuenta:
Pulsos externos
Cristal externo: generlamente de 32.768 KHz que
implementa otro RTC independiente en el MCU
Timestamp (input capture)
Puede setearse un evento para que automáticamente se
copie el valor del contador en un registro de captura.
Ejemplo: cuando un comparador cambia, tomar la
cuenta.
Disparo de salida (output compare)
Se setea el timer una cuenta y cuando se alcanza,
automáticamente se levanta una salida, o similar.
82. Timers
Ejemplo de registros (un solo timer)
Este timer es muy versátil y trabaja tambien como PWM
87. Introducción a los Microcontroladores
Introducción
Arquitectura
Memoria
I/O
Interrupciones
Timers
Interfaces y Otros Periféricos
88. Modulación de Ancho de Pulso
(PWM)
Es un timer que genera una señal
periódica de salida con período y ciclo
de trabajo configurables
89. Modulación de Ancho de Pulso
(PWM)
Además de su uso como CDA, los PWM
se usan para controlar ABS en autos,
niveles de iluminación en LCDs, control
de motores, etc.
91. Otras características
RTC (Real Time Counters)
Watchdog
Consumo: reduccion de tensión,
frecuencia y modo sleep
Reset, POR y BOR
External, Internal (software) Reset
Keyboard interrupts
92. Interfaces y Otros Periféricos
SCI (UART)
Provee una (o mas) interface de comunicación asincrónica
serie (UART) por medio de dos hiloas (Tx y Rx)
Parámetros comunes: full o half duplex, data bits, parity
bits, stop bits, baud rate
93. Interfaces y Otros Periféricos
SCI (UART)
Generalmente los modulos generan interrupciones (fin de
transmisión, recepción, etc.)
De las SCI del MCU se pueden generar con componentes
externos interfases físicas RS232, RS422, RS485, etc.
USART (sincrónica)
Agrega un hilo para sincronismo, el cual es generado por
una de las partes
Si se usa como UART, el pin se puede usar como I/O
94. Interfaces y Otros Periféricos
SPI (Serial Peripherical Interface)
Para comunicación serie mediante 4 hilos
basada en master-slave:
MOSI: Master Out – Slave In
MISO: Master In – Slave out
SCK: System Clock, generado por el master
SS: Slave select. Si hay mas de una linea, con
un decodificador externo se pueden atender 2n
slaves.
96. Interfaces y Otros Periféricos
IIC (I2C)
Inter-IC bus, de Phillips, es un bus sincrónico que
opera en modo master-slave con dos hilos SCL y
SDA en modo half duplex, para distancias cortas,
hasta 3.4 Mbps, mediante el intercambio de
tramas.
No hay límites al numero de dispositivos a
conectar (capacidad total en el bus < 400pF)
Cada nodo (uno debe ser master, por lo menos)
tiene una dirección de 7 o 10 bits
98. Interfaces y Otros Periféricos
Ethernet
Implementación de 10/100/1000* Ethernet MAC
con PHY
Para conexiones a redes de area local estándar
CAN (Controller Area Network) de Bosh y
Flexcan
Originalmente diseñado para su uso en
automoviles y ahora extendido a otras areas,
permite la comunicación por bus en 1 Mbps hasta
40 m. mediante “broadcast”.
99. Interfaces y Otros Periféricos
Módulos de criptografía
Stack TCP/IP (para módulos ethernet)
IEEE 1149.1 Test Access Port (JTAG)
DMA Timers
QSPI (Queued SPI)
EzPort, para programar la memoria flash
interna desde flash externas en forma directa
LCD controllers
...