Faites le test avec les éléments suivants;
premier programme:
#include <EEPROM.h>
void ecrireEEPROM()
{
uint16_t EEPROM_SIZE = EEPROM.length();
byte ecriture;
for (uint16_t adresse = 0; adresse < EEPROM_SIZE; adresse++) {
Serial.write('.');
if (((adresse + 1) % 32) == 0) Serial.write('\n');
ecriture = adresse % 256;
EEPROM.write(adresse, ecriture );
}
}
void setup() {
Serial.begin(115200);
Serial.println(F("\n------ ECRITURE EEPROM -------\n"));
ecrireEEPROM();
Serial.println(F("\n------ FIN ECRITURE EEPROM -------\n"));
}
void loop() {}
second programme
#include <EEPROM.h>
void verifierEEPROM()
{
uint16_t EEPROM_SIZE = EEPROM.length();
uint16_t nbErreurs = 0;
for (uint16_t adresse = 0; adresse < EEPROM_SIZE; adresse++) {
byte attendu = adresse % 256;
byte lu = EEPROM.read(adresse);
if ( attendu != lu) {
Serial.print(F("ERREUR @"));
Serial.print(adresse);
Serial.write('\t');
Serial.print(F("LU="));
Serial.print(lu);
Serial.print(F("\tATTENDU="));
Serial.println(attendu);
nbErreurs++;
}
}
if (nbErreurs == 0) Serial.println(F("EEPROM COHERENTE"));
}
void setup() {
Serial.begin(115200);
Serial.println(F("\n------ TEST EEPROM -------\n"));
verifierEEPROM();
Serial.println(F("\n------ FIN TEST EEPROM -------\n"));
}
void loop() {}
- chargez le premier programme
- ouvrez la console à 115200 bauds
vous devriez voir:
[sub][color=purple]
------ ECRITURE EEPROM -------
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
................................
------ FIN ECRITURE EEPROM -------
[/color][/sub]
débranchez la prise USB pour couper l'alimentation
rebranchez la prise USB
chargez le second programme
vous devriez voir dans la console le texte suivant
[sub][color=purple]
------ TEST EEPROM -------
EEPROM COHERENTE
------ FIN TEST EEPROM -------
[/color][/sub]
--> DONC TOUT VA BIEN
en fait je pense que votre soucis c'est que vous effectuez le test avec le programme qui met la mémoire à Zéro avant de la remplir de nombre. Quand vous lancez la première fois, ça met tout à zéro, puis remplace tous les zéros par un octet et s'arrête là. Vous coupez le courant.
Puis vous remettez le courant et chargez le second programme pour voir si tout et bon - et là le programme vous dit que ça ne va pas...
--> ce qu'il se passe c'est que dès que vous remettez le courant, le programme résident dans votre arduino se relance, et donc commence à vider la mémoire puis à la re-remplir. Mais comme vous êtes rapide pour lancer le nouveau téléchargement, vous interrompez ce processus qui est assez long à un endroit plus ou moins aléatoire ce qui fait que si vous allez super vite vous aurez quelques zéros en debut de mémoire et les bonnes données ensuite, si vous êtes moins rapide vous aurez mis tous les zéros puis commencé à mettre des bonnes données à nouveau en mémoire mais si vous interrompez avant la fin, alors le début de la mémoire sera bon et la fin ce sera des zéros....
--> bref le programme fait bien ce qu'on lui dit ![]()
Pour que cela ne vous arrive pas, les 2 programmes ci dessus ne mettent pas la mémoire à zéro. donc comme ça pas de risque même quand vous rebootez, effectivement il va commencer à remplir l'EEPROM mais c'est pas grave car les valeurs sont bonnes.