Está en la página 1de 8

Tecnológico de estudios superiores de Jocotitlán

Ingeniería en Sistemas Computacionales

Asignatura:

Sistemas programables

Investigación. Microcontrolador ATmega328P

Docente:
➢ Dr. En C. Leopoldo Gil Antonio

Alumno:
➢ Julio Ponce Camacho
➢ Adrián Sánchez Villegas

Grupo IC-0701 Turno Matutino 28 de octubre 2021


Introducción
En el presente documento se presenta un a investigación de las características más
relevantes del microcontrolador ATmega328P, el cual es usado en placas Arduino. Este
es el cerebro de estos dispositivos y cuentan con la gran característica de ser
reprogramables y es por eso que las placas Arduino son tan útiles en gran variedad de
sectores. Se determinarán cuáles son sus características más relevantes, realizando una
categorización en base a la función que tiene, en este caso serán característica RISC
avanzada, Segmentos de memoria no volátil de alta resistencia, funciones periféricas,
características especiales del microcontrolador, y las características Técnicas del
microcontrolador. De igual modo, también se abordará un tema relevante para
comprender este microcontrolador, el cual es la descripción de cada uno de los pines de
este microcontrolador, definiendo cuales la utilidad de cada uno. Todo esto resumiéndolo
en base al material proporcionado por el docente, el datasheet, iniciando con una
descripción general del microcontrolador ATmega328P.
Microcontrolador ATmega328P
El Atmel ATmega328P es un microcontrolador CMOS de 8 bits de bajo consumo basado
en la arquitectura RISC mejorada de AVR. Al ejecutar poderosas instrucciones en un
solo ciclo de reloj, el ATmega328P logra rendimientos cercanos a 1MIPS por MHz, lo
que permite al diseñador del sistema optimizar el consumo de energía frente a la
velocidad de procesamiento.
Características de ATmega328P
El núcleo Atmel AVR combina un rico conjunto de instrucciones con 32 registros de
trabajo de propósito general. Todos los 32 registros están conectados directamente a la
Unidad Aritmética Lógica (ALU), lo que permite acceder a dos registros independientes
en una sola instrucción ejecutada en un ciclo de reloj. La arquitectura resultante es más
eficiente en código y logra rendimientos hasta diez veces más rápidos que los
microcontroladores CISC convencionales. El ATmega16A proporciona las siguientes
características:
Arquitectura RISC Avanzada:

• 32 líneas de E / S de uso general, 32 registros de trabajo de uso general: El


archivo de registro está optimizado para el conjunto de instrucciones RISC
mejorado de AVR. Para lograr el rendimiento y la flexibilidad requeridos, el archivo
de registro admite los siguientes esquemas de entrada / salida:
• Un operando de salida de 8 bits y una entrada de resultado de 8 bits
• Dos operandos de salida de 8 bits y una entrada de resultado de 8 bits
• Dos operandos de salida de 8 bits y una entrada de resultado de 16 bits
• Un operando de salida de 16 bits y una entrada de resultado de 16 bits

2
• 131 poderosas instrucciones: La mayoría de ejecución de ciclo de reloj único
• Operación completamente estática: Esto quiere decir que el reloj puede
detenerse y los datos de la memoria no se pierden.
• Rendimiento de hasta 16 MIPS a 16 MHz: Se refieren a que tiene un rendimiento
de hasta 16 Millones de instrucciones por segundo una velocidad de 16 MHz.
• Multiplicador de 2 ciclos en chip
Segmentos de memoria no volátil de alta resistencia

• 32 K bytes de memoria de programa flash autoprogramable en el sistema: El


ATmega328P contiene 32 Kbytes de memoria flash reprogramable en el sistema
en chip para el almacenamiento de programas. Dado que todas las instrucciones
del AVR tienen un ancho de 16 o 32 bits, la memoria flash está organizada como
16K x 16. Para la seguridad del software, el espacio de memoria del programa
flash se divide en dos secciones, la sección del cargador de arranque y la sección
del programa de aplicación en ATmega328P. La memoria flash tiene una
resistencia de al menos 10,000 ciclos de escritura / borrado.
• EEPROM de 1 Kbytes: El Atmel ATmega328P contiene 1 Kbyte de memoria
EEPROM de datos. Está organizado como un espacio de datos separado, en el
que se pueden leer y escribir bytes individuales. La EEPROM tiene una resistencia
de al menos 100.000 ciclos de escritura / borrado. El acceso entre la EEPROM y
la CPU se describe a continuación, especificando los registros de direcciones de
EEPROM, el registro de datos de EEPROM y el registro de control de EEPROM.
• SRAM interna de 2 Kbytes: El ATmega328P es un microcontrolador complejo
con más unidades periféricas de las que se pueden admitir dentro de las 64
ubicaciones reservadas en el código de operación para las instrucciones IN y
OUT. Para el espacio de E / S extendido de 0x60 - 0xFF en SRAM, solo se pueden
usar las instrucciones ST / STS / STD y LD / LDS / LDD.
• Sección de código de arranque opcional con bits de bloqueo independientes
o Programación en el sistema mediante un programa de arranque en chip
o Verdadera operación de lectura mientras escribe
• Bloqueo de programación para la seguridad del software.
Funciones periféricas

• Dos temporizadores / contadores de 8 bits con preescalador y modo de


comparación independientes: Timer / Counter0 es un módulo de temporizador
/ contador de 8 bits de uso general, con dos unidades de comparación de salida
independientes y con soporte WM. Permite una sincronización precisa de la
ejecución del programa (gestión de eventos) y la generación de ondas.
• Un temporizador / contador de 16 bits con preescalador, modo de
comparación y modo de captura independientes: La unidad de temporizador /
contador de 16 bits permite una sincronización precisa de la ejecución del
programa (gestión de eventos), la generación de ondas y la medición de la

3
sincronización de la señal. La mayoría de las referencias de bits y registros de
esta sección están escritas en forma general. Una "n" minúscula reemplaza el
número del temporizador / contador, y una "x" minúscula reemplaza el canal de la
unidad de comparación de salida. Sin embargo, cuando se usa el registro o la
definición de bit en un programa, se debe usar la forma precisa, es decir, TCNT1
para acceder al valor del contador del Temporizador / Contador1 y así
sucesivamente.
• Contador en tiempo real con oscilador independiente
• Seis canales PWM
o PWM modo rápido.
o PWM fase correcta.
o PWM fase y frecuencia correcta.
o Modo no PWM.
• ADC de 8 canales y 10 bits en paquete TQFP y QFN / MLF
o Medición de temperatura
• USART serie programable: El receptor y transmisor en serie síncrono y
asíncrono universal (USART) es un dispositivo de comunicación en serie muy
flexible.
• Interfaz serial SPI maestro / esclavo: SPI es un protocolo de comunicaciones
con una configuración full duplex, que utiliza cuatro señales, Chip Select (CS),
reloj (SCK), Master Out / Slave In (MOSI) y Master In / Slave Out (MISO), para las
comunicaciones entre un maestro y un esclavo.
• Interfaz en serie de 2 cables orientada a bytes (compatible con Phillips I C):
Las interfaces serie transmiten sus datos un bit a la vez. Estas interfaces pueden
operar con tan solo un cable o en este caso 2 cables.
• Temporizador de vigilancia programable con oscilador integrado en el chip:
• Comparador analógico en chip: Al entrar en el modo inactivo, el comparador
analógico debe desactivarse si no se utiliza. Al ingresar al modo de reducción de
ruido ADC, el comparador analógico debe estar desactivado. En otros modos de
suspensión, el comparador analógico se desactiva automáticamente. Sin
embargo, si el comparador analógico está configurado para usar la referencia de
voltaje interno como entrada, el comparador analógico debe desactivarse en todos
los modos de suspensión. De lo contrario, se habilitará la referencia de voltaje
interno, independientemente del modo de suspensión.
• Interrumpir y despertar al cambiar el pin: Al ingresar al modo de suspensión,
todos los pines del puerto deben configurarse para usar la potencia mínima.
Entonces, lo más importante es asegurarse de que ninguna clavija impulse cargas
resistivas. En los modos de suspensión en los que tanto el reloj de E / S (clkI / O)
como el reloj ADC (clkADC) están detenidos, los búferes de entrada del dispositivo
se desactivarán. En algunos casos, la lógica de entrada es necesaria para
detectar condiciones de activación y luego se habilitará.

4
Características especiales del microcontrolador
• Reinicio de encendido y detección programable de apagones: Si la aplicación
no necesita el detector de caída de tensión, este módulo debe apagarse. Si el
detector de caída de voltaje está habilitado por los fusibles BODLEVEL, se
habilitará en todos los modos de suspensión y, por lo tanto, siempre consumirá
energía. En los modos de sueño más profundos, esto contribuirá
significativamente al consumo de corriente total.
• Oscilador calibrado interno: el oscilador RC interno proporciona un reloj
aproximado de 8.0MHz. Aunque el voltaje y la temperatura dependen, este reloj
puede ser calibrado con mucha precisión por el usuario. Si se selecciona,
funcionará sin componentes externos. Durante el reinicio, el hardware carga el
valor de calibración preprogramado en el registro OSCCAL y, por lo tanto, calibra
automáticamente el oscilador RC.
• Fuentes de interrupción externas e internas. El AVR proporciona varias fuentes
de interrupción diferentes. Estas interrupciones y el vector de reinici o separado
tienen cada uno un vector de programa separado en el espacio de memoria del
programa. A todas las interrupciones se les asignan bits de habilitación
individuales que deben escribirse en uno lógico junto con el bit de habilitación de
interrupción global en el registro de estado para habilitar la interrupción.
Dependiendo del valor del contador del programa, las interrupciones pueden
desactivarse automáticamente cuando se programan los bits de bloqueo de
arranque BLB02 o BLB12.
• Seis modos de suspensión: inactivo, reducción de ruido ADC, ahorro de
energía, apagado, espera y espera extendida:
o Cuando los bits SM2..0 se escriben en 000, la instrucción SLEEP hace que
la MCU entre en modo inactivo, deteniendo la CPU pero permitiendo SPI,
USART, comparador analógico, ADC, interfaz serial de 2 cables,
temporizador / contadores, perro guardián y el sistema de interrupción para
seguir funcionando.
o En el modo de apagado guarda el contenido del registro, pero congela el
oscilador, deshabilitando todas las demás funciones del chip hasta la
siguiente interrupción externa o reinicio de hardware.
o En el modo de ahorro de energía, el temporizador asíncrono continúa
funcionando, lo que permite al usuario manten er una base de temporizador
mientras el resto del dispositivo está inactivo.
o El modo de reducción de ruido de ADC detiene la CPU y todos los módulos
de E / S, excepto el temporizador asíncrono y el ADC, para minimizar el
ruido de conmutación durante las conversiones de ADC.
o En el modo de espera, el oscilador de cristal / resonador está funcionando
mientras el resto del dispositivo está inactivo. Esto permite un arranque
muy rápido combinado con un bajo consumo de energía.

5
o En el modo de espera extendido, tanto el oscilador principal como el
temporizador asíncrono continúan funcionando.
Características Técnicas del microcontrolador

• E / S y paquetes
o 23 líneas de E / S programables
o TQFP de 32 derivaciones y QFN / MLF de 32 teclas
• Voltaje de funcionamiento:
o 2,7 V a 5,5 V para ATmega328P
• Rango de temperatura:
o Rango de temperatura automotriz: –40 ° C a + 125 ° C
• Grado de velocidad:
o ● 0 a 8 MHz a 2,7 a 5,5 V (rango de temperatura automotriz: –40 ° C a +
125 ° C)
o ● 0 a 16 MHz a 4,5 a 5,5 V (rango de temperatura automotriz: –40 ° C a +
125 ° C)
• Bajo consumo de energía
o Modo activo: 1,5 mA a 3 V - 4 MHz
o Modo de apagado: 1 µA a 3 V
Configuración de los pines

• VCC: Voltaje de suministro digital.


• GND: Tierra.
• Port B (PB7: 0) XTAL1 / XTAL2 / TOSC1 / TOSC2: El puerto B es un puerto de
E / S bidireccional de 8 bits con resistencias pull-up internas (seleccionadas para
cada bit). Los búferes de salida del puerto B tienen Características de
accionamiento simétricas con alta capacidad de suministro y fuente. Como

6
entradas, los pines del puerto B que se extraen externamente baja generará
corriente si se activan las resistencias pull-up. Los pines del puerto B tienen tres
estados cuando se activa una condición de reinicio, incluso si el reloj no está
funcionando.
• Port C (PC5: 0): El puerto C es un puerto de E / S bidireccional de 7 bits con
resistencias pull-up internas (seleccionadas para cada bit). Los búferes de salida
PC5..0 tienen características de excitación simétricas con alta capacidad tanto de
suministro como de fuente. Como entradas, los pines del puerto C que se tiran
hacia abajo externamente generarán corriente si se activan las resistencias pull-
up. Los pines del puerto C tienen tres estados cuando se activa una condición de
reinicio, incluso si el reloj no está funcionando.
• PC6/RESET: Si el fusible RSTDISBL está programado, se utiliza PC6 como pin
de entrada. Si el fusible RSTDISBL no está programado, se utiliza PC 6 como
entrada de reinicio. Un nivel bajo en este pin durante más tiempo que la longitud
mínima de pulso generará un reinicio, incluso si el reloj no está funcionando. No
se garantiza que los pulsos más cortos generen un reinicio.
• Port D (PD7:0): El puerto D es un puerto de E / S bidireccional de 8 bits con
resistencias pull-up internas (seleccionadas para cada bit). Los búferes de salida
del puerto D tienen características de unidad simétricas con alta capacidad de
sumidero y fuente. Como entradas, los pin es del puerto D que se tiran hacia abajo
externamente generarán corriente si se activan las resistencias pull-up. Los pines
del puerto D tienen tres estados cuando se activa una condición de reinicio,
incluso si el reloj no está funcionando.
• AVcc: AVCC es el pin de voltaje de suministro para el convertidor A / D, PC3: 0 y
ADC7: 6. Debe estar conectado externamente a V CC, incluso si no se usa el ADC.
Si se utiliza el ADC, debe conectarse a V CC a través de un filtro de paso bajo.
Tenga en cuenta que PC6..4 utiliza voltaje de suministro digital, V CC.
• AREF: AREF es el pin de referencia analógico para el convertidor A / D.
• ADC7:6 (TQFP y QFN/MLF solo el paquete): En el paquete TQFP y QFN / MLF,
ADC7: 6 sirven como entradas analógicas al convertidor A / D. Estos pines se
alimentan desde el suministro analógico y sirven como canales ADC de 10 bits.

7
Conclusiones
Julio Ponce Camacho
Un microcontrolador es un circuito integrado que tiene aplicaciones normalmente en el
sector de sistemas embebidos, siendo que tiene una serie de instrucciones en su
memoria, ejecutándolas y cumpliendo la función para lo que fue programado. Un
microcontrolador como mínimo se puede determinar que contiene los elementos de un
microprocesador, periféricos y memoria para cumplir con un funcionamiento correcto. En
el tema abordado se habló del microcontrolador que tienen normalmente los dispositivos
Arduino Uno, el cual es el ATmega328P, siendo que este tiene características propias,
que es importante analizarlas para comprender el funcionamiento de este tipo de
circuitos integrados, ya que para realizar una buena práctica de programación, es
importante considerar los dos factores principales, el hardware y software de un
dispositivo. Este microcontrolador y su diseño, es lo que ha permitido que Arduino sea
un dispositivo muy popular, y elección principal de muchas personas que se dedican a
crear sistemas embebidos, y es que al tener como característica principal ser
reprogramable, y con tanta facilidad que es a través de los puertos de Arduino, da una
amplia gama de posibilidades para crear diversos sistemas.
Adrián Sánchez Villegas
Como pudimos observar el microcontrolador ATmega328P cuenta con poderosas
instrucciones que se ejecutan en su mayoría en un solo ciclo de reloj, por lo que puede
alcanzar un desempeño cercano a 1 MIPS por cada MHz en la frecuencia de reloj, lo que
permite al diseñador del sistema optimizar el consumo de energía frente a la velocidad
de procesamiento. Lo que observamos de forma general, es que este microcontrolador
cuenta múltiples características desde segmentos de memoria no volátil de alta
resistencia hasta incluso funciones periféricas, y en base a esto determinamos que
ATmega328P tiene un alto desempeño, una buena optimización, y un bajo consumo de
energía, y ahora entendemos porque fue un remplazo del microcontrolador
ATmega328P, y que en un futuro nos puede servir para realizar mejores prácticas de
programación.

También podría gustarte