ATmega328P: Memoria EEPROM

Contenido:

Memoria EEPROM del ATmega328P

La memoria EEPROM (Electrically Erasable Programmable Read-Only Memory) es un tipo de memoria no volátil que se utiliza para almacenar datos que necesitan ser preservados después de apagar el dispositivo. En el caso del ATmega328P, la memoria EEPROM tiene una capacidad de 1 kilobyte (1024 bytes) y se puede acceder mediante instrucciones de lectura y escritura. Para utilizar la memoria EEPROM en el ATmega328P, es necesario incluir la librería «avr/eeprom.h».

Es importante tener en cuenta que la memoria EEPROM tiene un límite de ciclos de escritura y borrado. En el caso del ATmega328P, este límite es de 100000 ciclos. Por lo tanto, se debe utilizar la memoria EEPROM con cuidado y evitar escribir en ella con demasiada frecuencia.

✅ Si quieres conocer la descripción de cada uno de los registros, además de varios ejemplos adicionales de los que encontrarás en este post, te invito a que adquieras la 🔥 Guía de Programación mediante registros del Microcontrolador ATmega328P 🔥 dando clic ⭐ aquí ⭐. Adicionalmente recibirás los sketch de Arduino IDE y de Microchip Studio, incluyendo los archivos de simulación en Proteus Profesional v8.10.

Video Tutorial

Ejemplo 1:Grabar en la Memoria EEPROM un número de 4 bits mediante un DipSwitch luego de presionar un botón, el valor almacenado se muestra en los leds cada vez que el Dispositivo se reinicia.

Para poder utilizar la memoria eeprom del microcontrolador, en el programa se debe incluir la librería respectiva.

Se configura el bit 1 del Puerto B como entrada el cual está conectado al pulsador y se habilita su respectiva resistencia pull-up, de igual manera se configura el puerto D para el DipSwitch, el puerto C se configura como salida el cual va conectado a los leds y se escribe en el puerto C los valores de la ubicación 64 de la memoria eeprom.

Cuando el estado del bit 1 del puerto B sea LOW, se lee el valor del puerto D, se ubica cada bit en su respectivo lugar y el valor se actualiza en la dirección 64 de la eeprom.

Arduino:

at328p eeprom ejm1 1
Figura 1: Circuito con Arduino para el Ejemplo 1 de la Memoria EEPROM.
#include <avr/eeprom.h>

void setup() {
  DDRB = 0b00000000; // Entrada Botton Pin 8
  PORTB = 0b00000001; // Pull-Up Botton
  DDRD = 0b00000000; // Entradas para el switch
  PORTD = 0b11110000; // Pull-Up switch
  DDRC = 0b00001111; // Salidas para los leds
  // Escribo en el puerto C el valor de la dirección 64 de la EEPROM.
  PORTC = eeprom_read_byte((const uint8_t*)64);
  delay(10);
}

void loop() {
  if ((PINB & 0b00000001) == 0) { // Si el estado del bit 1 es LOW
    while (!(PIND & 0b00000001)); // Espero hasta que el estado del bit 1 sea HIGH
    // Actualizo el valor del byte 64 con el valor del Puerto D
    eeprom_update_byte((uint8_t*)64, (PIND >> 4));
  }
  delay(100);// Retardo 100ms
}

Lenguaje C:

at328p eeprom ejm1 2
Figura 2: Circuito con ATmega328P para el Ejemplo 1 de la Memoria EEPROM.
Este ejemplo solo está disponible en la 🔥 Guía de Programación mediante registros del Microcontrolador ATmega328P 🔥 adquiérela hoy dando clic ⭐ aquí ⭐.

Deja un comentario