Introduccion_a_los_Microcontroladores_v2.ppt

jbmarcos 28 views 104 slides Aug 28, 2025
Slide 1
Slide 1 of 104
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81
Slide 82
82
Slide 83
83
Slide 84
84
Slide 85
85
Slide 86
86
Slide 87
87
Slide 88
88
Slide 89
89
Slide 90
90
Slide 91
91
Slide 92
92
Slide 93
93
Slide 94
94
Slide 95
95
Slide 96
96
Slide 97
97
Slide 98
98
Slide 99
99
Slide 100
100
Slide 101
101
Slide 102
102
Slide 103
103
Slide 104
104

About This Presentation

Microcontroladores y microprocesadores


Slide Content

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

Arquitectura: Procesador
REPASO

Arquitectura

Von Neuman vs. Hardvard

CISC vs. RISC

Tamaño/variedad de las instrucciones

Velocidad: clock; 8/16/32 bits

Arquitectura

de las instrucciones

Por stack

Por acumulador

Dos direcciones

Tres direcciones
REPASO

Arquitectura

Modos de direccionamiento
REPASO

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.

Memoria: Tipo físicos
REPASO

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
PTBDD = 0x80; // initialize PTB7 as output
PTBD = 0; // initialize PTB to 0
PTBD_PTBD7 = ~PTBD_PTBD7; // invert the output

Ejemplo:
bit 7 bit 0

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

Conversión DIGITAL a ANALOGICA:

Por redes del tipo R-2R. Para r bits sería:
REPASO

Conversión Analógica-Digital (CAD)

Comparador: determina si V1 >V2 y
arroja 1, ó 0 en caso contrario.

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
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”.

Conversión Analógica-Digital (CAD)

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

Conversión Analógica-Digital (CAD)

Aproximaciones sucesivas: velocidad media
y fija en r+1
REPASO
Este es el modo mas utilizado

Conversión Analógica-Digital (CAD)

Control del CAD
Habilitación
Tensión de
Referencia
Entrada
Salida (registro)
Conversio
n
Complete
Start Conversion

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

// Configures ADC peripheral (ADC clock = 6.25MHz)
// 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):
¿inconvenientes?
Procesar
Producir
salidas
. . .
do_init();
. . .
for (;;) {
do_inputs();
do_some_process();
set_outputs()
}
Inicializa-
ciones
Leer
entradas

Interrupciones

Con interrupciones:
Pueden no existir
Procesar
Producir
salidas
. . .
do_init();
. . .
interrupts_on;
for (;;) {
do_some_process();
set_outputs()
}
Atender
evento 1
Atender
evento 2
Atender
evento n
. . .
Inicializa-
ciones

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)
REPASO

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

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)
REPASO

Interrupciones: IVT

En el Atmega128 (Atmel):

M
C
9
S
0
8
Q
G
8

(
F
r
e
e
s
c
a
le
)

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
KBI1P2
El controlador de interrupciones 1 (KBI1)
tiene 8 entradas conectadas a determinados
puertos

Ejemplo:

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


Atención de la interrupción
Interrupciones

Interrupciones
Calificador: dice que la función es
una subrutina de interrupción
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
2
n
slaves.

Interfaces y Otros Periféricos

Interfaces y Otros Periféricos

IIC (I
2
C)

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 (I
2
C)

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

MC9S08LC6
0

MCF52235
Tags