Title: Introducci
1Introducción a los Microcontroladores
2Introducción a los Microcontroladores
- Introducción
- Arquitectura
- Memoria
- I/O
- Interrupciones
- Timers/PWM
- Interfaces y Otros Periféricos
3Introducción
- Uso de los microcontroladores
- Microondas, Lavarropas, Televisores, ...
- Automóviles, aviones, barcos
- Teléfonos
- Automatización industrial
- Pequeños dispositivos ad-hoc
- ...
4Introducció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
5Introducció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)
6Introducción
7Introducción
ATmega16 (atmel)
8Oferta 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)
9Oferta de Microcontroladores
10Oferta de Microcontroladores
11Oferta de Microcontroladores
12Oferta 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
13Oferta de Microcontroladores
14Arquitectura
15Arquitectura Procesador
REPASO
16Arquitectura
- Von Neuman vs. Hardvard
- CISC vs. RISC
- Tamaño/variedad de las instrucciones
- Velocidad clock 8/16/32 bits
17Arquitectura
REPASO
- de las instrucciones
- Por stack
- Por acumulador
- Dos direcciones
- Tres direcciones
18Arquitectura
REPASO
- Modos de direccionamiento
19Memoria
- 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.
20Memoria Tipo físicos
REPASO
21Memoria Atención
- S/DRAM sin limite de escrituras
- EEPROM 100.000 ciclos de borrado
- Flash 10.000 ciclos de borrado
22Memoria 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
23Memoria Direccionamiento
24Memoria Direccionamiento
25Memoria ejercicio
- For (i100igt0i--)
- 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?
26I/O
27Digital 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.
28Digital I/O
29Digital 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.
30Digital I/O
31Digital I/O
32Digital I/O
Ejemplo
PTBDD 0x80 // initialize PTB7 as output PTBD
0 // initialize PTB to 0 PTBD_PTBD7
PTBD_PTBD7 // invert the output
33Digital 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.
34Digital Input
- La entrada se muestrea con cada pulso (flanco
ascendente normalmente) del clock, lo que
ocasiona metaestabilidad
35Digital Input
- Normalmente incorporan un Schmitt-trigger.
- Para reducir la metaestabilidad se introducen
sincronizadores
36Digital 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).
37Digital 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
38Analog I/O
- Conversión DIGITAL a ANALOGICA
- Usando un modulador de ancho de pulso
39Conversión DIGITAL a ANALOGICA
REPASO
- Por redes del tipo R-2R. Para r bits sería
40Conversión Analógica-Digital (CAD)
- Comparador determina si V1 gtV2 y arroja 1, ó 0
en caso contrario.
41Conversión Analógica-Digital (CAD)
REPASO
42Conversión Analógica-Digital (CAD)
REPASO
- La velocidad de muestreo determina la máxima
frecuencia posible de muestrear (fmaxltfs/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)
43Conversión Analógica-Digital (CAD)
REPASO
- 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.
44Conversión Analógica-Digital (CAD)
REPASO
- Seguidor (tracking) muy lenta (2r bit times) y
variable barata.
45Conversión Analógica-Digital (CAD)
REPASO
- Aproximaciones sucesivas velocidad media y fija
en r1
Este es el modo mas utilizado
46Conversión Analógica-Digital (CAD)
47Conversió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.
48CAD 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.
49CAD Ejemplo de implementación en un MCU
50CAD Ejemplo de un registro de configuración
51 // Configures ADC peripheral (ADC clock
6.25MHz) // Bus clock as clock source, 12-bit
conversión and divisor4 ADCCFG 0x44
52Conversión Analógica-Digital
53Conversión Analógica-Digital
54Introducción a los Microcontroladores
- Introducción
- Arquitectura
- Memoria
- I/O
- Interrupciones
- Timers
- Interfaces y Otros Periféricos
55Interrupciones
- Un programa sin uso de interrupiones (polling)
inconvenientes?
56Interrupciones
57Interrupciones
REPASO
- 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)
58Interrupciones
- 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.
59Interrupciones
- Control de Interrupciones
- Inhabilitar las interrupciones no implica perder
eventos. - Cuidado al limpiar la IF
- Normal Interrupts and NMI
60Interrupciones
REPASO
- 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)
61Interrupciones IVT
62MC9S08QG8 (Freescale)
63Interrupciones
- 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
64Interrupciones
- Pasos que ocurren ante una interrupción
- 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)
65Interrupciones
El controlador de interrupciones 1 (KBI1) tiene 8
entradas conectadas a determinados puertos
66Interrupciones
- Registros de control (ubicación en la memoria)
- Son 3
67Interrupciones
68(No Transcript)
69Interrupciones
70Interrupciones
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
71Interrupciones
- Atención de la interrupción
72Interrupciones
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) ...
73Interrupciones
74Interrupciones
75Interrupciones
- 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
76Interrupciones
- 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)
77Introducción a los Microcontroladores
- Introducción
- Arquitectura
- Memoria
- I/O
- Interrupciones
- Timers
- Interfaces y Otros Periféricos
78Timers
- 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
79Timers
- 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.
80Timers
- 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 -gt cuenta máxima 255
uS con una resolución de 1 uS - 8 bit timer, clock de 1 Mhz, prescaler en 1024 -gt
cuenta máxima 260 ms con una resolución de 1 ms.
81Timers
- 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.
82Timers
- Ejemplo de registros (un solo timer)
Este timer es muy versátil y trabaja tambien como
PWM
83(No Transcript)
84Timers
85Timers
86Timers
ClockBUSclkgt8 Mhz
87Introducción a los Microcontroladores
- Introducción
- Arquitectura
- Memoria
- I/O
- Interrupciones
- Timers
- Interfaces y Otros Periféricos
88Modulació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
89Modulació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.
90Timers y PWM
91Otras 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
92Interfaces 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
93Interfaces 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
94Interfaces 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.
95Interfaces y Otros Periféricos
96Interfaces 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 lt 400pF) - Cada nodo (uno debe ser master, por lo menos)
tiene una dirección de 7 o 10 bits
97Interfaces y Otros Periféricos
98Interfaces 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.
99Interfaces 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
- ...
100Interfaces y Otros Periféricos
101Arquitectura
102(No Transcript)
103MC9S08LC60
104MCF52235