Documente Academic
Documente Profesional
Documente Cultură
ORGANIZACIÓN DE UN
MICROCONTROLADOR
Sistemas Embebidos
Marzo/ 2020
INTRODUCCIÓN
3
INTRODUCCIÓN
4
INTRODUCCIÓN
5
INTRODUCCIÓN
6
INTRODUCCIÓN
Arduino se popularizó por ser:
• Barato: El costo de una tarjeta es relativamente bajo y menor a
la integración con elementos discretos.
• Portable: El IDE de Arduino se ejecuta en Windows, Macintosh
OSX y Linux.
• Simple: El entorno es de fácil uso para los principiantes y por su
flexibilidad, muy útil para los usuarios avanzados.
• Software de código abierto: El lenguaje puede ser expandido
con bibliotecas de C++ y también es posible agregar código
AVR-C directamente en los programas.
• Hardware extensible y abierto: Los diagramas de las tarjeras
Arduino son públicos bajo una licencia de Creative Commons. 7
INTRODUCCIÓN
• En el curso utilizaremos la tarjeta Arduino Uno Rev 3, que tiene
un microcontrolador ATMega328P.
• Aunque nos enfocaremos a comprender y utilizar los recursos
del MCU y no las bibliotecas de funciones de Arduino.
8
ARDUINO UNO
99
OPCIONES DE PROGRAMACIÓN
Arduino AVR - C
Su Arquitectura es Cerrada.
11
MICROCONTROLADORES AVR DE ATMEL
Tamaño
XMEGA
megaAVR
tinyAVR
núcleo
AVR
Características
PB – 8 bits 14
PC – 7 bits
PD – 8 bits
INTERIOR DEL MICROCONTROLADOR (ATMEGA328P)
15
Núcleo AVR
16
AVR CPU CORE
La CPU asegura la correcta ejecución de programas. La
CPU tiene acceso a las memorias, realiza cálculos,
controla periféricos y maneja interrupciones.
18
EJECUCIÓN DE INSTRUCCIONES
20
ARCHIVO DE REGISTROS
El Archivo de Registros tiene 32
7 0 Dir.
registros de propósito general de 8 bits, R0 0x00
habilitados para un acceso rápido. R1 0x01
R2 0x02
...
Seis registros pueden ser usados como R13 0x0D
apuntadores de 16 bits R14 0x0E
R15 0x0F
Para direccionamiento indirecto en el
R16 0x10
espacio de datos. R17 0x11
De esta forma se denominan X, Y y Z. ...
R26 (XL) 0x1A
X {
R27 (XH) 0x1B
El registro Z también puede usarse Y {
R28 (YL) 0x1C
como apuntador a la memoria de R29 (YH) 0x1D
R30 (ZL) 0x1E
programa. Z {
R31 (ZH) 0x1F
22
Memoria de Programa
Memoria Flash cuyo tamaño varia
entre procesadores, para el
ATMega328 es de 32 Kbytes (16 K x 16
bits).
SRAM EEPROM 24
Memoria SRAM de Datos
25
Los 32 registros de acceso rápido y los registros I/O tienen
direcciones para ser tratados como SRAM de propósito general.
Archivo de Registros
El repertorio de instrucciones AVR está optimizado para
el archivo de Registros. 7 0 Dir.
R0 0x00
Las instrucciones que trabajan con dos R1 0x01
operandos pueden utilizar cualquier R2 0x02
...
registro. R13 0x0D
Si se va a operar un registro con una R14 0x0E
R15 0x0F
constante, sólo se pueden emplear los R16 0x10
registros de R16 a R31. R17 0x11
...
Cada registro tienen una dirección para R26 (XL) 0x1A
X {
ser tratado como RAM genérica (0x00 – R27 (XH) 0x1B
R28 (YL) 0x1C
0x1F), utilizando instrucciones de Y {
R29 (YH) 0x1D
Carga (LD) y almacenamiento (ST). R30 (ZL) 0x1E
Z {
R31 (ZH) 0x1F
De R26 a R31 pueden usarse como
apuntadores para direccionamiento 26
indirecto.
Registros I/O
Los Registros I/O se emplean para la configuración y el control de
recursos internos, así como para conocer su estado.
Los Registros I/O en el rango 0x00 - 0x1F son accesibles por bit.
Para modificarse, con instrucciones SBI y CBI o para evaluarse, a
través de las instrucciones SBIS y SBIC.
27
Registros I/O Extendidos
El espacio para los Registros I/O Extendidos es de 160
localidades; aunque la mayoría están libres.
– N: Bandera de Negativo
31
ACCESO AL ESPACIO DE PROPÓSITO GENERAL
35
35
Función de Escritura en EEPROM :
// Recibe el dato y la dirección a escribir
// Establece la dirección
EEAR = direccion;
// Coloca el dato
EEDR = dato;
// Inicia la escritura
EECR |= ( 1 << EEPE );
}
36
Función de Lectura en EEPROM :
// Inicia la lectura
EECR |= ( 1 << EERE );
// Regresa el dato
return EEDR;
}
37
PUERTOS DE ENTRADA/SALIDA
Incluye 3 puertos, todas las terminales con más de una función alterna.
PB – 8 bits
PC – 7 bits
38
PD – 8 bits
Puertos de Entrada/Salida
Se requiere de tres registros I/O para el manejo de cada puerto:
7 6 5 4 3 2 1 0
0x0B PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTB
0x0A DDRB7 DDRB6 DDRB5 DDRB4 DDRB3 DDRB2 DDRB1 DDRB0 DDRB
0x09 PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
0x08 - PORTC6 PORTC5 PORTC4 PORTC3 PORTC2 PORTC1 PORTC0 PORTC
0x07 - DDRC6 DDRC5 DDRC4 DDRC3 DDRC2 DDRC1 DDRC0 DDRC
0x06 - PINC6 PINC5 PINC4 PINC3 PINC2 PINC1 PINC0 PINC
0x05 PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD0 PORTD
0x04 DDRD7 DDRD6 DDRD5 DDRD4 DDRD3 DDRD2 DDRD1 DDRD0 DDRD
0x03 PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0 PIND
41
Puertos de Entrada/Salida
( Configuraciones )
42
EJEMPLOS:
43
Sistema de Inicialización
Se tienen las siguientes fuentes de Inicialización (Reset):
45
45
Sistema de Inicialización
46
46
Sistema del reloj
• Se tienen diferentes fuentes para generar la señal de reloj en el MCU y a
la vez, la señales de reloj se distribuyen por los diferentes módulos.
47
Señales de reloj en un AVR
49
Sistema del reloj
• La fuente de reloj se selecciona con los bits de configuración CKSEL. Se
tienen las opciones:
• Existen otro par de bits (SUT, Set up Time) para definir el retardo inicial en la
operación del oscilador. Trabajan en combinación con los bits CKSEL. 50
Preescalador del Sistema de Reloj
Notas: Para el modo de espera (StandBy) se recomienda usar cristales o resonadores externos.
53
Administración de la Potencia y modos SLEEP
54
Administración de la Potencia y modos SLEEP
55
Administración de la Potencia y
modos de bajo consumo
56
Ahorro de energía apagando recursos
57
EJERCICIOS
58
59
60