Tabla de contenido:

Agregar una EEPROM 24LC256 al Arduino Due: 3 pasos
Agregar una EEPROM 24LC256 al Arduino Due: 3 pasos

Video: Agregar una EEPROM 24LC256 al Arduino Due: 3 pasos

Video: Agregar una EEPROM 24LC256 al Arduino Due: 3 pasos
Video: 💾 Memoria EEPROM INTERNA del Arduino [Curso de Arduino desde Cero] #024 2024, Noviembre
Anonim
Agregar una EEPROM 24LC256 al Arduino Due
Agregar una EEPROM 24LC256 al Arduino Due

El arduino due carece de eeprom. Este instructable agrega uno y le permite almacenar valores en la memoria no volátil que sobrevivirán a una actualización de firmware arduino.

Paso 1: Breadboarding

Breadboarding
Breadboarding

Aquí hay algunas instrucciones realmente buenas: https://www.hobbytronics.co.uk/arduino-external-eeprom Solo las seguí. La foto muestra el circuito integrado. las clavijas 1 a 4 y la clavija 7 están conectadas a tierra. El pin 8 está conectado al suministro de 3.3 V en la placa de vencimiento Los cables amarillo (pin 6) y blanco (pin 5) conectados a los pines i2c SDA (datos) y SCL (reloj) en la placa de vencimiento (numerados 21 y 20).

Paso 2: Código de tiempo

Hora del código
Hora del código

Aquí hay algunos fragmentos de código que utilizo en mis bocetos. En primer lugar, incluya los encabezados de la biblioteca Wire en algún lugar cerca de la parte superior de su boceto: / * Use 24LC256 EEPROM para guardar la configuración * / #include Luego agregue algunas funciones para leer y escribir bytes de la EEPROM (solo me preocupan los bytes individuales pero hay un función de escritura de página en el chip también). Tenga en cuenta que hay una definición de macro de 0x50 … esta es la dirección del chip en el bus i2c (puede conectar más de una cosa i2c en un bus i2c y seleccionar con cuál desea hablar cambiando la dirección). / * Estas dos funciones nos ayudan a escribir en el chip EEPROM 24LC256 * / #define EEPROM_ADDR 0x50 void EEPROM_write (unsigned int addr, byte data) {int rdata = data; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.write (rdata); Wire.endTransmission (); //Serial.print("EEPROM write: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); retraso (5); } byte EEPROM_read (unsigned int addr) {byte data = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Wire.requestFrom (EEPROM_ADDR, 1); if (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM read: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); retraso (5); devolver datos; } Puede descomentar las líneas Serial.print (…) si desea ver algún resultado de depuración. En la función setup () de arduinos, inicia la biblioteca de cables y puede leer los valores iniciales. Aquí leo en dos bytes (banderas y max_cc), dos palabras (lean_min y lean_max) y una matriz de palabras sd_max [3]: // leer valores guardados en la EEPROM Wire.begin (); banderas = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = palabra (EEPROM_read (3), EEPROM_read (2)); lean_max = palabra (EEPROM_read (5), EEPROM_read (4)); para (int j = 0; j <3; j) {sd_max [j] = palabra (EEPROM_read (7 j * 2), EEPROM_read (6 j * 2)); } Aquí está el bit de código que los escribe en la EEPROM: EEPROM_write (0, flags); EEPROM_write (1, max_cc); EEPROM_write (2, lowByte (lean_min)); EEPROM_write (3, highByte (lean_min)); EEPROM_write (4, lowByte (magro_máx)); EEPROM_write (5, highByte (magro_máx)); para (int j = 0; j <3; j) {EEPROM_write (6 j * 2, lowByte (sd_max [j])); EEPROM_write (7 j * 2, highByte (sd_max [j])); } Eso es todo realmente.

Paso 3: Conéctelo

Conéctelo
Conéctelo

Conéctelo a un veroboard para atornillarlo en un gabinete y hacer el trabajo.

Recomendado: