Вы находитесь на странице: 1из 104

Introduccin a los

Microcontroladores

Introduccin a los
Microcontroladores

Introduccin
Arquitectura
Memoria
I/O
Interrupciones
Timers/PWM
Interfaces y Otros Perifricos

Introduccin
Uso de los microcontroladores

Microondas, Lavarropas,
Televisores, ...
Automviles, aviones, barcos
Telfonos
Automatizacin industrial
Pequeos dispositivos ad-hoc
...

Introduccin
Ejemplo. Se quiere:

Leer peridicamente 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

Introduccin
Diseo discreto. Se requiere:

Un microprocesador
20 lneas 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)

Introduccin
Diseo discreto.

Introduccin
Diseo Integrado.
ATmega16
(atmel)

Oferta de
Microcontroladores

Estructurada por familias y


subfamilias.
Por ejemplo, cada familia tiene el mismo
nucleo del procesador (su cdigo ser
compatible): 8051,PIC,HC,ARM
O son familias orientadas a la aplicacin
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 clasificacin es en
base a los perifericos que integran
o memoria

Oferta de
Microcontroladores

MC9RS08KA Family

Arquitectura

REPAS
O

Arquitectura: Procesador

Arquitectura

Von Neuman vs. Hardvard


CISC vs. RISC
Tamao/variedad de las
instrucciones
Velocidad: clock; 8/16/32 bits

REPAS
O

Arquitectura

de las instrucciones

Por stack
Por acumulador
Dos direcciones
Tres direcciones

REPAS
O

Arquitectura

Modos de direccionamiento

Memoria

Registros (memoria de corto plazo):

Memoria de datos

Pequea (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.

REPAS
O

Memoria: Tipo fsicos

Memoria: Atencin

S/DRAM: sin limite de escrituras


EEPROM: 100.000 ciclos de
borrado
Flash: 10.000 ciclos de borrado

Memoria:
Direccionamiento

Separado:

Cada tipo fsico se direcciona por separado


(por ejemplo, usando diferentes registros
ndices)
Hay direcciones repetidas

Contnuo:

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 iteracin 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 conexin


directa al exterior:

Los MCU tienen en general de 8 a 32 pines


(o ms).
Se agrupan en ports de a 8 pines.
En general, los pines se pueden configurar
como entrada o salida
La lgica puede ser positiva o negativa.
Los pines pueden tener otras funciones
alternativas.

Digital I/O
pin 1 del port B
Mdulo de
Interrupcin 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 direccin 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

PTBDD = 0x80; // initialize PTB7 as output


PTBD = 0; // initialize PTB to 0
PTBD_PTBD7 = ~PTBD_PTBD7; // invert the ou

Digital I/O

PORT Register: de preferencia debe


escribirse con operaciones de
escritura de bit, si estan
disponibles
Caso contrario usar : Read-ModifyWrite 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

Cancelacin de ruidos
Resistencias de pull-up/down en las
entradas: puede (debe) programarse su
conexin/desconexin (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

Conversin DIGITAL a ANALOGICA:

Usando un modulador de ancho de


pulso

Conversin DIGITAL a
ANALOGICA:

REPAS
O

Por redes del tipo R-2R. Para r bits


sera:

Conversin Analgica-Digital
(CAD)

Comparador: determina si V1 >V2


y arroja 1, 0 en caso contrario.

REPAS
O

Conversin Analgica-Digital
(CAD)

Conversion de valor

REPAS
O

Conversin Analgica-Digital
(CAD)

La velocidad de muestreo determina la


mxima frecuencia posible de
muestrear (fmax<fs/2). Adems, hay
que tener en cuenta el tiempo que
puede llevar la conversin.
La conversion lleva tiempo: para
asegurar la estabilidad se usa una etapa
de retencin (sample-hold)

REPAS
O

Conversin Analgica-Digital
(CAD)

Directa (flash): muy rpida (1 bit


time); muy cara

Este modo de
conversin rpido
es utilizado en
algunos MCU y por
lo general, no hay
mas de 1 o 2
canales rpidos.

REPAS
O

Conversin Analgica-Digital
(CAD)

Seguidor (tracking): muy lenta (2r


bit times) y variable; barata.

REPAS
O

Conversin Analgica-Digital
(CAD)

Aproximaciones sucesivas: velocidad


media y fija en r+1

Este es el modo mas utilizado

Conversin Analgica-Digital
(CAD)

Control del CAD

Tensin de
Referencia
Entrada
Start Conversion
Habilitacin

Salida (registro)
Conversio
n
Complete

Conversin Analgica-Digital
(CAD)

Los MCU pueden tener de 4 a 16 o ms entradas


(canales) y un solo CAD, de 8 a 12 bits de precisin.
Se multiplexan los canales (aumentan los tiempos)
Autoincremento: al leer un canal, se pasa al
siguiente y se efecta un SC automticamente.
Existe el modo contnuo y de disparos sucesivos
mediante el RTC
Una conversin puede dispararse por eventos
como un timer, una variacin de una entrada digital
o una seal externa.

CAD: Ejemplo de caractersticas


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
implementacin en un MCU

Estado,
control
y
reloj
configuracin

multiplexor

comparador

CAD: Ejemplo de un registro de


configuracin


// Configures ADC peripheral (ADC clock = 6.25MHz)
// Bus clock as clock source, 12-bit conversin and
divisor=4
ADCCFG = 0x44;

Conversin Analgica-Digital

Conversin Analgica-Digital

Introduccin a los
Microcontroladores

Introduccin
Arquitectura
Memoria
I/O

Interrupciones

Timers
Interfaces y Otros Perifricos

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

Procesar

Producir
salidas

Atender
evento 1

Atender
evento 2

...
existir
do_init();
...
interrupts_on;
for (;;) {
do_some_process();
set_outputs()
}

...

Atender
evento n

REPAS
O

Interrupciones

Las interrupciones se generan


cuando cuando cambia un
estado.
Permiten la reaccin 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

REPAS
O

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 direccin de la
primera instruccin 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 va
los IE)
Cancelacin de ruidos
Eventos internos

Interrupciones

Pasos que ocurren ante una interrupcin:


1.
2.
3.

4.

MCU setea la IF (est o no habilitada la


interrupcin
Se termina la instruccin 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 (ubicacin en


la memoria)
Son 3

direccin

mnemnicos de funcion de cada bit

Interrupciones

Interrupciones

Mapeo a variables:

Interrupciones

Ejemplo inicializacin:

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/
// KBI1P2 internal pull-up, falling edge/
// Enable KBI1P3 interrupts
// Enable KBI1P2 interrupts
// Detect edges only
// Clear possible false interrupts
// Enable KBI1 interrupts

Interrupciones

Atencin de la interrupcin

Calificador: dice que la funcin es


una subrutina de interrupcin

Interrupciones

Nmero 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 KBIxISR
Y entonces la sintaxis queda:
interrupt void KBIx_ISR(void) { ...

Interrupciones

En el main:

Interrupciones

Interrupciones

Polling vs. Interrupts


Siempre hay que analizar la situacin 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 temporizacin precisa
El estado es mas importante que el
cambio
Los impulsos duran mucho
Hay ruido en la seal
Hay cosas para hacer en el main (pero no
demasiado)

Introduccin a los
Microcontroladores

Introduccin
Arquitectura
Memoria
I/O
Interrupciones

Timers

Interfaces y Otros Perifricos

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 interrupcin cuando hacen
overflow
Esto sirve para generar seales o
eventos perdicos (con acotada
precisin)
Pueden tener una seal 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 mxima 255


uS con una resolucin de 1 uS
8 bit timer, clock de 1 Mhz, prescaler en 1024 ->
cuenta mxima 260 ms con una resolucin 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 automticamente


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,


automticamente se levanta una salida, o similar.

Timers

Ejemplo de registros (un solo


timer)

Este timer es muy verstil y trabaja tambien como

Timers

Timers

Timers

Ejemplo de uso simple:

Clock=BUSclk=>8 Mhz

Introduccin a los
Microcontroladores

Introduccin
Arquitectura
Memoria
I/O
Interrupciones
Timers

Interfaces y Otros Perifricos

Modulacin de Ancho de
Pulso (PWM)

Es un timer que genera una seal


peridica de salida con perodo y
ciclo de trabajo configurables

Modulacin de Ancho de
Pulso (PWM)

Adems de su uso como CDA, los


PWM se usan para controlar ABS
en autos, niveles de iluminacin en
LCDs, control de motores, etc.

Timers y PWM

Otras caractersticas

RTC (Real Time Counters)


Watchdog
Consumo: reduccion de tensin,
frecuencia y modo sleep
Reset, POR y BOR
External, Internal (software) Reset
Keyboard interrupts

Interfaces y Otros Perifricos

SCI (UART)

Provee una (o mas) interface de comunicacin


asincrnica serie (UART) por medio de dos hiloas (Tx
y Rx)
Parmetros comunes: full o half duplex, data bits,
parity bits, stop bits, baud rate

Interfaces y Otros Perifricos

SCI (UART)

Generalmente los modulos generan interrupciones


(fin de transmisin, recepcin, etc.)
De las SCI del MCU se pueden generar con
componentes externos interfases fsicas RS232,
RS422, RS485, etc.

USART (sincrnica)

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 Perifricos

SPI (Serial Peripherical Interface)

Para comunicacin 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 Perifricos

Interfaces y Otros Perifricos

IIC (I2C)

Inter-IC bus, de Phillips, es un bus sincrnico


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 lmites al numero de dispositivos a
conectar (capacidad total en el bus < 400pF)
Cada nodo (uno debe ser master, por lo
menos) tiene una direccin de 7 o 10 bits

Interfaces y Otros Perifricos

IIC (I2C)

Interfaces y Otros Perifricos

Ethernet

Implementacin de 10/100/1000* Ethernet


MAC con PHY
Para conexiones a redes de area local
estndar

CAN (Controller Area Network) de Bosh y


Flexcan

Originalmente diseado para su uso en


automoviles y ahora extendido a otras areas,
permite la comunicacin por bus en 1 Mbps
hasta 40 m. mediante broadcast.

Interfaces y Otros Perifricos

Mdulos de criptografa
Stack TCP/IP (para mdulos 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 Perifricos

Arquitectura

MC9S08LC
60

MCF52235

Вам также может понравиться