Download Introducción a los Microcontroladores

Document related concepts
no text concepts found
Transcript
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):



Memoria de datos



Pequeña (relativamente)
Almacenamiento temporario p/CPU
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
Ejemplo:
bit 7
bit 0
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 Schmitttrigger.
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
Start Conversion
Habilitación
Salida (registro)
Conversion
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):
Inicializaciones
Leer
entradas
Procesar
Producir
salidas
...
do_init();
...
for (;;) {
do_inputs();
do_some_process();
set_outputs()
}
¿inconvenientes?
Interrupciones

Con interrupciones:
Inicializaciones
Pueden no existir
Procesar
Producir
salidas
Atender
evento 1
Atender
evento 2
...
do_init();
...
interrupts_on;
for (;;) {
do_some_process();
set_outputs()
}
...
Atender
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.
2.
3.
4.
MCU setea la IF (esté o no habilitada la
interrupción
Se termina la instrucción en curso o si el MCU
está en estado “sleep”, se despierta.
Se identifica la ISR considerando los IE y la
interrupcion de mas alta prioridad (si hay mas
de un IF seteado).
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;
KBI1ES_KBEDG3 = 0;
KBI1ES_KBEDG2 = 0;
KBI1PE_KBIPE3 = 1;
KBI1PE_KBIPE2 = 1;
KBI1SC_KBIMOD = 0;
KBI1SC_KBACK = 1;
KBI1SC_KBIE = 1;
} //end InitKBI
//
//
//
//
//
//
//
//
Mask KBI1 interrupts
KBI1P3 internal pull-up, falling edge/low level
KBI1P2 internal pull-up, falling edge/low level
Enable KBI1P3 interrupts
Enable KBI1P2 interrupts
Detect edges only
Clear possible false interrupts
Enable KBI1 interrupts
Interrupciones

Atención de la interrupción
Calificador: dice que la función es una
subrutina de interrupción
Interrupciones
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) { ...
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