Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Notas AVR Parte1 PDF
Notas AVR Parte1 PDF
ATMega328P
Contacto: fsantiag@mixteco.utm.mx
OBJETIVO
2
TEMAS
1. El microcontrolador
2. Programación en alto nivel
3. Recursos internos
i. Interrupciones externas
ii. Interrupciones por cambios en los pines
iii. Temporizadores
iv. Convertidor Analógico-Digital
v. Comunicación Serial
vi. Interfaz SPI
vii. Interfaz TWI
3
HERRAMIENTAS DE DESARROLLO
Si tienen Windows XP o Win-7 lo conveniente es usar el
entorno AVR-Studio, versión 4.18.
• Edición de Esquemáticos
• Simulación Visual de Sistemas
• Diseño de Circuitos Impresos
6
PROGRAMACIÓN DEL MICROCONTROLADOR
1. Programador Universal
2. ATMel AVR STK-500
3. AVR Dragon
7
4. Programador USBasp
5. Programador USB ISP
9
6. La Tarjeta Arduino puede ser un programador para los AVR, básicamente se
debe considerar:
• El "sketch" a descargar en Arduino es ArduinoISP y está en los ejemplos
incluidos en el entorno.
• La conexión Arduino One -Microcontrolador es:
Libros complementarios:
TEMA 1
EL MICROCONTROLADOR
Octubre / 2019
MICROCONTROLADOR
13
APLICACIONES DE LOS MCU
14
Crecimiento en el mercado
15
15
Microprocesadores y Microcontroladores
17
APLICACIONES
• Microprocesadores • Microcontroladores
Los microprocesadores son Los microcontroladores
comúnmente usados como CPU desempeñan actividades
en las computadoras. orientadas a control.
También se encuentran en Son la base para los Sistemas
sistemas con procesamiento
intensivo, como consolas de Embebidos.
juegos o equipo de video de alta Sistemas con un proceso único o
definición. tarea principal bajo ejecución.
Además, se encuentran en las Sus limitaciones no son una
SBC (Single Board Computer). restricción para este tipo de
Generalmente están en sistemas aplicaciones.
multitareas.
18
Microcontroladores v.s. FPGA’s
• FPGA • Microcontroladores
• Bloques e interconexiones • Unidades funcionales bien
configurables, es posible definidas.
diseñar sistemas a medida.
• El programa determina el
• El programa define al comportamiento del hardware.
hardware.
• Un programa se ejecuta en
• En un sistema, los diferentes
forma secuencial, aunque
módulos pueden operar en
exista concuerrencia en los
forma concurrente.
recursos, su atención por la
CPU será secuencial.
19
Microcontroladores v.s. FPGA’s
Operación: C = A - B
23
23
MICROCONTROLADORES
POPULARES
Organización de un
microcontrolador
Ent/Sal Ent/Sal
Digitales Analógicas
Temporizador/
Contador
CPU
Oscilador Perro guardián
(Watchdog timer)
Memoria
de Programa
Puerto Serie
(UART)
Vcc Memoria
de Datos
Otros
Recursos
Gnd
Bus de Datos
de 8 bits 25
MICROCONTROLADORES AVR
DE ATMEL
Su Arquitectura es Cerrada.
27
27
ASPECTO EXTERNO
ATMEGA328
PB – 8 bits 28
PC – 7 bits
PD – 8 bits
Núcleo AVR
29
INTERIOR DEL MICROCONTROLADOR (ATMEGA328P)
30
AVR CPU CORE
La arquitectura Harvard maximiza el rendimiento y
paralelismo en la ejecución de instrucciones.
La CPU tiene acceso a las memorias, realiza cálculos,
controla periféricos y maneja interrupciones.
El Contador del Programa (PC, Program Counter) contiene la
dirección de la instrucción que se está ejecutando.
Se actualiza automáticamente para avanzar entre instrucciones.
El Registro de Instrucción (IR, Instruction Register) mantiene
una instrucción durante su ejecución.
Una instrucción es una secuencia de 1's y 0's que se identifica
por un campo conocido como el opcode o código de operación.
31
AVR CPU CORE
T1 T2 T3 T4 T5
CLK CPU
33
ARCHIVO DE REGISTROS
32 registros de 8 bits, todos de propósito 7 0 Dir.
general. R0 0x00
R1 0x01
R2 0x02
Los registros R26 a R31 pueden ser ...
apuntadores de 16 bits, para R13 0x0D
R14 0x0E
direccionamiento indirecto en el espacio R15 0x0F
de datos. Se denominan X, Y y Z. R16 0x10
R17 0x11
...
El registro Z también puede usarse X {
R26 (XL) 0x1A
como apuntador a la memoria de R27 (XH) 0x1B
R28 (YL) 0x1C
programa. Y {
R29 (YH) 0x1D
R30 (ZL) 0x1E
Z {
R31 (ZH) 0x1F
Arquitectura Optimizada para ejecutar
código C compilado.
34
AVR CPU CORE
Mapa de memoria
35
Memoria de Programa
SRAM EEPROM 37
Memoria SRAM de Datos
38
Los 32 registros de acceso rápido y los registros I/O tienen
direcciones para ser tratados como SRAM de propósito general.
Registros I/O
Read/Write
Valor inicial
– N: Bandera de Negativo
T1 T2 T3
CLK CPU
Registro IR Captura
Incluye 3 puertos, todas las terminales con más de una función alterna.
45
PB – 8 bits
PC – 7 bits
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
48
Puertos de Entrada/Salida
( Configuraciones )
49
EJEMPLOS:
50
El Microcontrolador
ATMega328P
TEMA 2
PROGRAMACIÓN EN ALTO NIVEL
Octubre de 2019
PROCESO DE PROGRAMACIÓN
52
¿ENSAMBLADOR O LENGUAJE C?
TIPOS DE DATOS
DEFINICIONES EN WINAVR
56
ELEMENTOS DEL LENGUAJE
OPERADORES
Operador ternario
Aritméticos
Operador Descripción Ejemplo Propocisión1? Proposición2 : Proposición3;
* Producto a*b
/ División a/b
V F
% Módulo a%b Proposición 1
+ Suma a+b
Proposición 2 Proposición 3
- Resta a-b
57
ELEMENTOS DEL LENGUAJE
Trabajan sobre operandos de los tipos: Una variable con cualquier valor
char, int o long. Afectan el resultado al distinto de cero se considera
nivel de bits. verdadera.
58
ELEMENTOS DEL LENGUAJE
Asignaciones
Operador Ejemplo Equivalencia
= a=b a=b
*= a *= b a=a*b
/= a /= b a=a/b
%= a %= b a=a%b
+= a += b a=a+b
-= a -= b a=a-b
<<= a <<= b a = a << b
>>= a >>= b a = a >> b
&= a &= b a=a&b
|= a |= b a=a|b
^= a ^= b a=a^b 59
ESTRUCTURAS DE CONTROL
Dentro de la programación
estructurada se tienen tres tipos
Secuenciales
de Estructuras de Control.
Proposición 1
1. Secuenciales.
2. Selectivas. Proposición 2
3. Repetitivas.
Proposición 3
// Expresiones en secuencia
a = b + c;
. . .
contador++;
61
ELEMENTOS DEL LENGUAJE
ESTRUCTURAS SELECTIVAS
Selección Simple Selección Doble
F V F
Expresión Proposición 1
V
Proposición 2 Proposición 3
Proposición
if(expresión) if(expresión)
Proposición proposición1
else
proposición2
62
ELEMENTOS DEL LENGUAJE
= Constante_1 = Default
Expresión
= Constante_2 = Constante_n
= Constante_3
Proposición 1 Proposición 2 Proposición 3 ... Proposición n Prop. Default
switch (expresión){
case Constante_1:
Proposición 1
case Constante_2:
Proposición 2
. . . .
default:
Proposición default 63
}
ELEMENTOS DEL LENGUAJE
ESTRUCTURAS REPETITIVAS
Repetición por Condición:
Proposición
F
Expresión
V V
Expresión
Proposición
F
do {
while(expresión) proposición
proposición } while(expresión);
64
ELEMENTOS DEL LENGUAJE
Expresión1
F
Expresión2
Expresión3 V
Proposición
proposición
65
66
TIPOS DE MEMORIA
SRAM PARA VARIABLES
Variables: Datos que van a ser leídos o escritos repetitivamente.
La SRAM es el espacio de almacenamiento por default para las
variables.
uint8_t x, y;
int a, b, c;
Si es posible, el compilador utilizará los registros de propósito
general (R0 a R31).
Ejemplos de declaraciones:
const char cadena[] PROGMEM = “Cadena con un mensaje constante”;
const uint8_t tabla[] PROGMEM = { 0x24, 0x36, 0x48, 0x5A, 0x6C };
67
68
x = pgm_read_byte(&tabla[i]);
68
69
EEPROM
Las variables cuyo contenido se quieran conservar aún en
ausencia de energía deberán almacenarse en la EEPROM.
34 12 01 02 03 04 FF FF FF . . .
69
70
71
EJEMPLO 2. DISEÑO DE UNA ALU DE 4 BITS
Construya una ALU de 4 bits considerando la distribución de puertos de la
figura y el comportamiento mostrado en la tabla:
PortC[2:0] Operación
000 R=A+B
001 R=A-B
010 R=A*B
011 R = A AND B
100 R = A OR B
101 a 111 R=0
72
EJEMPLO 2. DISEÑO DE UNA ALU DE 4 BITS
73
EJEMPLO 3. CONTADOR CON SALIDA EN 7 SEGMENTOS
76
EJEMPLO 4. MÁQUINA DE ESTADOS
PARA UNA PUERTA AUTOMÁTICA
77
IMPLEMENTACIÓN PRÁCTICA
PC1
PC0