Prove con EEPROM

Questo è il codice scritto per fare le prove:

#include <EEPROM.h> // Libreria per usare la memoria EEprom di Arduino

byte a=1;
byte b=1;
byte c=1;
byte d=1;
byte e=1;
byte f[]= {100,100,100,100,100,100,100,100};
byte g[]= {100,100,100,100,100,100,100,100};
byte h[]= {100,100,100,100,100,100,100,100};
byte l =0;

void setup() {
/*
EEPROM.write(0,20);
EEPROM.write(1,40);
EEPROM.write(2,15);
EEPROM.write(3,20);
EEPROM.write(4,100);
for (int i=5;i<13;i++) {
EEPROM.write(i,0);
}
for (int i=13;i<21;i++) {
EEPROM.write(i,2);
}
for (int i=21;i<29;i++) {
EEPROM.write(i,2);
}*/
Serial.begin(9600);
a=EEPROM.read(0);
Serial.println(a);
b=EEPROM.read(1);
Serial.println(b);
c=EEPROM.read(2);
Serial.println(c);
d=EEPROM.read(3);
Serial.println(d);
e=EEPROM.read(4);
Serial.println(e);
for (int i=5;i<13;i++) {
l++;
f[l]=EEPROM.read(i);
Serial.println(f[l]);
}
l=0;
Serial.println("-------------");
for (int i=13;i<21;i++) {
l++;
g[l]=EEPROM.read(i);
Serial.println(g[l]);
}
l=0;
Serial.println("-------------");
for (int i=21;i<29;i++) {
l++;
h[l]=EEPROM.read(i);
Serial.println(h[l]);
}
}

void loop() {

}

Per mia cosa ho scritto i dati col codice scritto tra /* e */. Poi ho creato il codice per leggere, tutto apposto tranne per una cosa, guardate la foto seguente:

Prima dei valori, esatti e nel posto giusto, mi escono quei quadratini, cosa sono? Devo tenerne conto, dato che i valori in memoria si trovano con quelli messi da me precedentemente?
Lo chiedo perchè se stacco Arduino dal pc e lo rimetto, in automatico mi escono i dati giusti senza quadratini. I quadratini escono ogni volta che reinvio il codice ad arduino.

Cortesemente specifica SEMPRE di che modello di Arduino parli ... ne esistono ormai decine ed il comportamento è diverso in funzione della MCU che montano.

Guglielmo

Arduino mega

Con il vecchio IDE (che io continuo ad usare, visto che il nuovo lo considero poco più di una beta), non mi sembra che si vedessero, comunque, probabilmente, dato che ti appaiono solo quando invii il codice (ah ... guarda che le flash hanno vita limitata, quindi, se devi solo riavviare un programma, usa il tasto di reset e NON ricaricare) ... direi che è una cattiva gestione del monitor seriale durante l'uso del bootloader (che, appunto, usa la seriale) ... :roll_eyes:

Guglielmo

Per memoria flash intendi la EEPROM?

NO, la memoria flash è quella dove viene caricato il programma ... su AVR ha una vita un fattore 10 più corta della EEPROM.

Guglielmo

Ma sempre nella scrittura, spero.

... ovvio, infatti di dicevo di NON ricaricare i programmi se non hai modifiche (così da evitare scritture), ma di usare semplicemente il tasto di reset per riavviare :wink:

Guglielmo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.