Professional Documents
Culture Documents
Microcontroladores
Introducción a los Microcontroladores
Introducción
Arquitectura
Memoria
I/O
Interrupciones
Timers/PWM
Interfaces y Otros Periféricos
Introducción
Uso de los microcontroladores
Microondas, Lavarropas, Televisores, ...
Automóviles, aviones, barcos
Teléfonos
Automatización industrial
Pequeños dispositivos ad-hoc
...
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
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)
Introducción
Diseño discreto.
Introducción
Diseño Integrado.
ATmega16 (atmel)
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)
Oferta de Microcontroladores
Oferta de Microcontroladores
Oferta de Microcontroladores
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
Oferta de Microcontroladores
MC9RS08KA Family
Arquitectura
REPASO
Arquitectura: Procesador
Arquitectura
Von Neuman vs. Hardvard
CISC vs. RISC
Tamaño/variedad de las instrucciones
Velocidad: clock; 8/16/32 bits
REPASO
Arquitectura
de las instrucciones
Por stack
Por acumulador
Dos direcciones
Tres direcciones
REPASO
Arquitectura
Modos de direccionamiento
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.
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”.
REPASO
Start Conversion
Conversion
Habilitación Complete
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.
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.
CAD: Ejemplo de implementación en
un MCU
Estado, control
y configuración
reloj
multiplexor
comparador
CAD: Ejemplo de un registro de
configuración
0 1 0
0 0 1
// Configures ADC peripheral (ADC clock = 6.25MHz)
0 0
// Bus clock as clock source, 12-bit conversión and divisor=4
ADCCFG = 0x44;
Conversión Analógica-Digital
Conversión Analógica-Digital
Introducción a los Microcontroladores
Introducción
Arquitectura
Memoria
I/O
Interrupciones
Timers
Interfaces y Otros Periféricos
Interrupciones
Un programa sin uso de interrupiones (polling):
Inicializa-
ciones
Leer
entradas ...
do_init();
...
Procesar for (;;) {
do_inputs();
do_some_process();
Producir set_outputs()
salidas
}
¿inconvenientes?
Interrupciones
Con interrupciones:
Inicializa-
ciones
Pueden no existir
...
do_init();
...
Procesar interrupts_on;
for (;;) {
do_some_process();
Producir set_outputs()
salidas
}
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)
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.
Interrupciones
Control de Interrupciones
Inhabilitar las interrupciones no implica
perder eventos.
Cuidado al limpiar la IF
Normal Interrupts and NMI
REPASO
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)
Interrupciones: IVT
En el Atmega128 (Atmel):
MC9S08QG8
(Freescale)
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
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)
Interrupciones
Ejemplo:
El controlador de interrupciones 1 (KBI1) tiene
8 entradas conectadas a determinados puertos
KBI1P2
Interrupciones
Registros de control (ubicación en la
memoria)
Son 3
/*KBI1 Init*/
KBI1SC_KBIE = 0; // Mask KBI1 interrupts
KBI1ES_KBEDG3 = 0; // KBI1P3 internal pull-up, falling edge/low level
KBI1ES_KBEDG2 = 0; // KBI1P2 internal pull-up, falling edge/low level
KBI1PE_KBIPE3 = 1; // Enable KBI1P3 interrupts
KBI1PE_KBIPE2 = 1; // Enable KBI1P2 interrupts
KBI1SC_KBIMOD = 0; // Detect edges only
KBI1SC_KBACK = 1; // Clear possible false interrupts
KBI1SC_KBIE = 1; // Enable KBI1 interrupts
} //end InitKBI
Interrupciones
Atención de la interrupción
Calificador: dice que la función es una
subrutina de interrupción
Número de vector que
Interrupciones
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) { ...
Interrupciones
En el main:
Interrupciones
Interrupciones
Polling vs. Interrupts
Siempre hay que analizar la situación puntual,
pero en general, usar interrupciones cuando:
Los eventos son infrecuentes
Clock=BUSclk=>8 Mhz
Introducción a los Microcontroladores
Introducción
Arquitectura
Memoria
I/O
Interrupciones
Timers
Interfaces y Otros Periféricos
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
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.
Timers y PWM
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
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
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
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.
Interfaces y Otros Periféricos
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
Interfaces y Otros Periféricos
IIC (I2C)
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”.
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
...
Interfaces y Otros Periféricos
Arquitectura
MC9S08LC60
MCF52235