UNIVERSIDAD PRIVADA DEL VALLE
FACULTAD DE INFORMATICA Y ELECTRONICA
INGENIERIA ELECTRONICA
Evaluación
CAMPUS TIQUIPAYA
MICROPROCESADORES I
Informe de Laboratorio Nº 1
MICROCONTROLADOR Y
BOOTLOADER
Grupo “A”
Estudiante: Luz Camila Clavijo Cruz
Docente: Ing. M.Sc. Gerson Pérez
Cochabamba, 16 de abril de 2021
Gestión II – 2021
MICROCONTROLADOR Y BOOTLOADER
1. OBJETIVOS
1.1. OBJETIVO GENERAL
Conocer y aprender a programar el microcontrolador ATmega328P.
1.2. OBJETIVOS ESPECÍFICOS
Implementar correctamente el circuito que se solicita en la
práctica de laboratorio.
Realizar correctamente el programa para el correcto
funcionamiento del circuito que se solicita en la práctica de
laboratorio.
2. MARCO TEÓRICO
El circuito integrado ATMEGA328P-PU es un miicrocontrolador de 32 K
basado en la tecnología RISC AVR Atmel picoPower de alto desempeño y
bajo consumo de 8 bits que combina la memoria flash ISP de 32 kB con
capacidades de lectura mientras realiza escritura, EEPROM de 1024 bytes,
SRAM de 2 kB, 23 líneas de E/S de propósito general, 32 registros de trabajo,
tres temporizadores/contadores flexibles con modos de comparación,
interrupciones internas y externas, puerto serie USART programable, interfaz
de puerto serie de 2 cables orientada a bytes, puerto serie SPI, convertidor
A/D de 6 canales y 10 bits (8 canales en paquetes TQFP y QFN/FML),
temporizador de vigilancia programable con oscilador interno y cinco modos
de ahorro de energía seleccionables por software. El dispositivo funciona
entre 1.8 y 5.5 voltios.
Al ejecutar instrucciones potentes en un solo ciclo de reloj, ATMEGA328-PU
logra rendimientos aproximados a 1MIPS por MHz, permitiendo que el
diseñador del sistema optimice el consumo de energía en comparación con
la velocidad de procesamiento.
131 poderosas instrucciones – La mayoría de las ejecuciones
de ciclo de reloj único
32 x 8 registros de trabajo de uso general
Operación completamente estática
Hasta 20 MIPS de rendimiento a 20 MHz
Multiplicador en 2 ciclos en el chip
Ciclos de escritura / borrado: 10,000 flash / 100,000 EEPROM
Sección de código de inicio opcional con bits de bloqueo
independientes
En la programación del sistema mediante un programa de
arranque en chip
Verdadera lectura durante la operación de escritura
Bloqueo de programación para la seguridad del software
Soporte de la biblioteca Atmel® QTouch®
Botones táctiles capacitivos, deslizadores y ruedas
Adquisición de QTouch y QMatrix®
Hasta 64 canales de detección
Dos temporizadores / contadores de 8 bits con preescalador
por separado y modo de comparación
Un temporizador / contador de 16 bits con preescalador
separado, modo de comparación y modo de captura
Contador de tiempo real con oscilador separado
Seis canales de PWM
Programable serial USART
Maestro / Esclavo SPI
Aplicaciones: Automatización y Control de Procesos,
Comunicaciones y Rojo, Electrónica de Consumo, Diseño
Embebido y Desarrollo, Multimedia, Dispositivos Portátiles,
Robótica, Instrumentación y Medida, Seguridad
3. MATERIAL Y EQUIPO UTILIZADO
MATERIALES Y EQUIPOS
Ítem
Denominación
Cantidad
1
Fuente de Poder
1
2
Multímetro Digital
1
INSUMOS
Ítem
Denominación
Cantidad
1
Bread board
1
2
ATmega328P
1
3
Cristal de 16 MHz
1
4
LED
1
5
Capacitor de 22 pF
2
6
Capacitor de 100 nF
1
7
Resistencia de 10 kΩ
1
8
Resistencia de 330-390 Ω
1
9
Convertidor USB-serial
1
10
Caja de cables
1
4. TÉCNICA O PROCEDIMIENTO
4.1. PROCEDIMIENTO
4.1.1. PARTE 1
Unidad
Pza.
Pza.
Unidad
Pza.
Pza.
Pza.
Pza.
Pza.
Pza.
Pza.
Pza.
Pza.
Pza.
Polarizar el microcontrolador de acuerdo con la hoja de datos y conectar
el oscilador de 16 MHz para su funcionamiento.
Grabar un programa de prueba (parpadeo de LED) usando el bootloader
y el programa avrdude.
5. MEDICIÓN, CÁLCULOS Y GRÁFICO
5.1. PARTE 1
5.1.1. Código
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRD|=(1<<4); //Pin 4 del Puerto D configurados como
salidas
PORTD&=~(1<<4); //Enviamos un 0 al pin 4 del puerto
D
/* Replace with your application code */
while (1)
{
PORTD|=(1<<4); //Enviamos un 1 al pin 4 del
puerto D
_delay_ms(1000); //Se prende el LED durante 1
segundo
PORTD&=~(1<<4); //Enviamos un 0 al pin 4 del
puerto D
_delay_ms(1000); //Se apaga el LED durante 1
segundo
}
}
5.1.2. Circuito
5.1.3. Simulación
Apagado
22pF
U1
2
C1
X1
C2
1
CRYSTAL
12
13
14
15
16
17
7
8
PB0/ICP1/CLKO/PCINT0
PD0/RXD/PCINT16
PB1/OC1A/PCINT1
PD1/TXD/PCINT17
PB2/SS/OC1B/PCINT2
PD2/INT0/PCINT18
PB3/MOSI/OC2A/PCINT3
PD3/INT1/OC2B/PCINT19
PB4/MISO/PCINT4
PD4/T0/XCK/PCINT20
PB5/SCK/PCINT5
PD5/T1/OC0B/PCINT21
PB6/TOSC1/XTAL1/PCINT6 PD6/AIN0/OC0A/PCINT22
PB7/TOSC2/XTAL2/PCINT7
PD7/AIN1/PCINT23
23
24
25
26
27
28
29
22pF
R1
10k
PC0/ADC0/PCINT8
PC1/ADC1/PCINT9
PC2/ADC2/PCINT10
PC3/ADC3/PCINT11
PC4/ADC4/SDA/PCINT12
PC5/ADC5/SCL/PCINT13
PC6/RESET/PCINT14
AREF
AVCC
ADC6
ADC7
30
31
32
1
2
9
10
11
R2
330
20
18
D1
19
22
LED-WHITE
ATMEGA328P
Encendido
22pF
U1
2
C1
X1
C2
1
CRYSTAL
22pF
R1
10k
12
13
14
15
16
17
7
8
23
24
25
26
27
28
29
PB0/ICP1/CLKO/PCINT0
PD0/RXD/PCINT16
PB1/OC1A/PCINT1
PD1/TXD/PCINT17
PB2/SS/OC1B/PCINT2
PD2/INT0/PCINT18
PB3/MOSI/OC2A/PCINT3
PD3/INT1/OC2B/PCINT19
PB4/MISO/PCINT4
PD4/T0/XCK/PCINT20
PB5/SCK/PCINT5
PD5/T1/OC0B/PCINT21
PB6/TOSC1/XTAL1/PCINT6 PD6/AIN0/OC0A/PCINT22
PB7/TOSC2/XTAL2/PCINT7
PD7/AIN1/PCINT23
PC0/ADC0/PCINT8
PC1/ADC1/PCINT9
PC2/ADC2/PCINT10
PC3/ADC3/PCINT11
PC4/ADC4/SDA/PCINT12
PC5/ADC5/SCL/PCINT13
PC6/RESET/PCINT14
AREF
AVCC
ADC6
ADC7
30
31
32
1
2
9
10
11
R2
330
20
18
19
22
D1
LED-WHITE
ATMEGA328P
6. CONCLUSIONES
Podemos concluir que se pudo asimilar el cómo programar un
microcontrolador de manera adecuada.
Logramos implementar el circuito de manera correcta en Proteus y
esto hizo que claramente el resultado fuera el esperado.
Concluimos que implementar el circuito correctamente, además de
programar correctamente el código para el microcontrolador hace que
la experiencia del laboratorio nos de los resultados esperados.
7. CUESTIONARIO
7.1. Explique de forma breve la arquitectura del microcontrolador.
En la figura se puede ver el diagrama en bloques de la arquitectura
del microcontrolador ATmega328P. Este microcontrolador usa una
arquitectura Harvard, usando memorias y buses separados para
programa y datos. La CPU usa un pipeline (pipelining) de un nivel,
es decir que mientras está ejecutando una instrucción, la próxima
instrucción está siendo buscada (pre-fetched) desde la memoria
de programa. Gracias a esta técnica de pipeline y buses
separados, el microcontrolador puede ejecutar las instrucciones en
un solo ciclo de reloj.
El microcontrolador también posee un banco (file) de registros de
propósito general de 32 x 8 bits, con tiempos de acceso de un solo
ciclo de reloj. Esto permite que las instrucciones aritméticas y
lógicas (ALU), se puedan realizar en un solo ciclo de reloj. En la
siguiente figura se puede observar el banco de registros. Hay 6
registros que se pueden usar como 3 registros de direccionamiento
indirecto a la memoria de programa, habilitando eficiente cálculos
de direcciones en la memoria de programa, muy utilizados en los
programas C. Estos registros son llamados X, Y, Z y usan los
registros 26 al 31.
7.2.
Explique el proceso de grabación usando el bootloader.
Conectamos nuestro Arduino UNO al equipo y abrimos el IDE
de Arduino.
Abrimos el archivo ArduinoISP desde el menú -> Archivo ->
Ejemplos -> ArduinoISP.
Vamos a -> Herramientas -> Boards -> Arduino Uno.
En -> Herramientas -> Serial Port seleccionamos el que
utilicemos siempre para cargar nuestros Sketch.
Una vez que tengamos esta configuración, pulsamos el botón
de Cargar de nuestro IDE.
Si todo sale correctamente nos aparecerá el mensaje de
«Carga terminada» y desconectamos el Arduino del equipo y
pasamos a preparar las conexiones.
Una vez hayamos terminado las conexiones, conectamos
nuestro Arduino al equipo y nos vamos de nuevo al IDE.
Vamos a -> Herramientas -> Programador -> y seleccionamos
Arduino as ISP.
Ahora pulsamos directamente -> Herramientas -> Grabar
secuencia de inicio, que aparece justo debajo de Programador.
Si lo hace correctamente nos aparecerá un mensaje indicando
«Finalizada la grabación de la secuancia de inicio».
8. BIBLIOGRAFÍA
https://www.dipmecatronica.com.mx/product/atmega328p/