Vous êtes sur la page 1sur 104

Introducción a los

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

Memoria: Tipo físicos


Memoria: Atención
 S/DRAM: sin limite de escrituras
 EEPROM: 100.000 ciclos de borrado
 Flash: 10.000 ciclos de borrado
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
Memoria: Direccionamiento
 Separado
Memoria: Direccionamiento
 Continuo
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?


I/O
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.
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
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.
Digital I/O
Digital I/O
Digital I/O
bit 7 bit 0
Ejemplo:
1 0 0
0 0 0
0 0PTB7 as output
PTBDD = 0x80; // initialize
PTBD = 0; // initialize PTB to 0
PTBD_PTBD7 = ~PTBD_PTBD7; // invert the output
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.
Digital Input
 La entrada se muestrea con cada pulso
(flanco ascendente normalmente) del
clock, lo que ocasiona “metaestabilidad”:
Digital Input
 Normalmente incorporan un Schmitt-
trigger.
 Para reducir la “metaestabilidad” se
introducen “sincronizadores”
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).
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
Analog I/O
 Conversión DIGITAL a ANALOGICA:
 Usando un modulador de ancho de pulso
REPASO

Conversión DIGITAL a ANALOGICA:


 Por redes del tipo R-2R. Para r bits sería:
Conversión Analógica-Digital (CAD)
 Comparador: determina si V1 >V2 y
arroja 1, ó 0 en caso contrario.
REPASO

Conversión Analógica-Digital (CAD)


 Conversion de valor
REPASO

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

Conversión Analógica-Digital (CAD)


 Directa (flash): muy rápida (1 bit time);
muy cara

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

Conversión Analógica-Digital (CAD)


 Seguidor (tracking): muy lenta (2r bit
times) y variable; barata.
REPASO

Conversión Analógica-Digital (CAD)


 Aproximaciones sucesivas: velocidad media y
fija en r+1

Este es el modo mas utilizado


Conversión Analógica-Digital (CAD)
 Control del CAD
Tensión de
Referencia

Entrada Salida (registro)

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
}

Atender Atender ... Atender


evento 1 evento 2 evento n
REPASO

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

dirección mnemónicos de funcion de cada bit


Interrupciones
Interrupciones
 Mapeo a variables:
Interrupciones
 Ejemplo inicialización:
void InitKBI() {

/*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

 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
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)
Introducción a los Microcontroladores
 Introducción
 Arquitectura
 Memoria
 I/O
 Interrupciones
 Timers
 Interfaces y Otros Periféricos
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
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.
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.
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.
Timers
 Ejemplo de registros (un solo timer)

Este timer es muy versátil y trabaja tambien como PWM


Timers
Timers
Timers
 Ejemplo de uso simple:

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

Vous aimerez peut-être aussi