PDF de programación - Introducción a los Microcontroladores

Imágen de pdf Introducción a los Microcontroladores

Introducción a los Microcontroladoresgráfica de visualizaciones

Publicado el 10 de Junio del 2020
889 visualizaciones desde el 10 de Junio del 2020
3,4 MB
133 paginas
Creado hace 9a (23/04/2015)
MICROCONTROLADORES

MICROCONTROLADORES

Introducción
Arquitectura
Memoria
I/O Digital
Interrupciones
I/O Analógica
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 núcleo 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)

INTRODUCCIÓN

OFERTA DE MICROCONTROLADORES

OFERTA DE MICROCONTROLADORES

OFERTA DE MICROCONTROLADORES

Año: 2014

OFERTA DE MICROCONTROLADORES

ARQUITECTURA

ARQUITECTURA

ARQUITECTURA

ARQUITECTURA

ARQUITECTURA

ARQUITECTURA: PROCESADOR

ARQUITECTURA

Von Neuman vs. Hardvard

CISC vs. RISC

Tamaño/variedad de las instrucciones

Velocidad: clock; 8/16/32 bits

SISTEMAS EMBEBIDOS

Dos alternativas:

“BARE METAL”

Sobre un Sistema Operativo

básico (administrador de tareas)

de tiempo real (QNX, FreeRTOS, …)

genérico (Linux, Android, Windows, …)

SISTEMAS EMBEBIDOS: BOOTLOADING

 Un”bootloader” es una pieza de código que se puede

encargar de:

 Inicializar el harware en forma básica

 Cargar la aplicación o el sistema operativo en la memoria tomándolo de una

flash, la red u otro medio no-volatile

 I Execution of the application

 Puede no haber “bootloader” o este estar implícito en el

proceso de arranque de la CPU

 Puede haber “bootloaders” para completar el proceso de

“bootloading”

EJEMPLOS DE BOOTLOADING: X86

BIOS

(ROM)

El Sistema
Operativo
(Kernel

del Filesystem)



Etapa 1

(512 bytes de

algún dispositivo

de

almacenamiento)

Etapa 2

(el bootloader
propiemente

dicho)

EJEMPLOS DE BOOTLOADING:
ARM TI OMAP3 CON LINUX

Inicializa la RAM y trata de
encontrar una imagen
ejecutable en varios lugares
y la carga en SRAM o RAM

ROM Code

(en la CPU)

Linux
Kernel

Toma el control del
sistema
completamente. (los
“bootloaders” ya no
existen)

Corre en la SRAM, inicializa
la DRAM, el controlador
NAND or MMC y carga en la
RAM la siguiente etapa y la
ejecuta.

X-loader /
U-Boot 1

U-Boot 2

Corre en la RAM.
Inicializar algún
harware (red,USB, etc.).
Carga el kernel y lo
ejecuta

EJEMPLOS DE BOOTLOADING:
MCS08- BAREMETAL

De la hoja de datos:
“…
3.3 Run Mode
Run is the normal operating mode for the MC9S08LC60
Series. This mode is selected upon the MCU exiting reset
if the BKGD/MS pin is high. In this mode, the CPU
executes code from internal memory with execution
beginning at the address fetched from memory at
0xFFFE:0xFFFF after reset.
…”

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

MEMORIA

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?



ENTRADA/SALIDA DIGITAL

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

(del manual de referencia del MCU)

DIGITAL I/O

DIGITAL I/O

DIGITAL I/O

Ejemplo:

bit 7

bit 0

1 0 0 0 0 0 0 0

PTBDD = 0x80; // initialize PTB7 as output
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

PROTECCIÓN DE ENTRADAS Y SALIDAS

Conexión directa: problemas habituales

Aislación galvánica



INTERRUPCIONES

INTERRUPCIONES

 Un programa sin uso de interrupiones (polling):

¿inconvenientes?

ProcesarProducir salidas. . .do_init();. . .for (;;) {do_inputs();do_some_process();set_outputs()}Inicializa-cionesLeer entradas INTERRUPCIONES

 Con interrupciones:

Pueden no existir

ProcesarProducir salidas. . .do_init();. . .interrupts_on;for (;;) {do_some_process();set_outputs()}Atender evento 1Atender evento 2Atender evento n. . .Inicializa-ciones INTERRUPCIONES

Las interrupciones se generan 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

INTERRUPCIONES

Interrupt Vector Table: es una tabla donde se indica

para cada interrupción 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):



8
G
Q
8
0
S
9
C
M

l


)
e
a
c
s
e
e
r
F
(

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.

3.

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

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;
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;
KBI1PE_KBIPE2 = 1;
KBI1SC_KBIMOD = 0; // Detect edges only
KBI1SC_KBACK = 1
  • Links de descarga
http://lwp-l.com/pdf17744

Comentarios de: Introducción a los Microcontroladores (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad