mardi 3 janvier 2012

EEPROM check

Suite à des bugs sur mon thermostat, j'ai réalisé un programme de vérification des lectures/écritures sur EEPROM.




Mon Arduino Uno est OK.
Par contre mon Arduino Mini présente des erreurs sur les premières adresses. J'en déduis que cela est du au grand nombre d'écritures sur l'EEPROM (une par seconde). En effet, pour éviter de perdre l'heure en cas de débranchement de l'alimentation, mon programme sauvegarde l'heure à chaque seconde. Afin d'éviter l'usure sur l'EEPROM, j'ai déplacer cette sauvegarder sur le changement de minute.

Comment griller l'EEPROM d'un Arduino ? C'est sur hackaday.

Log


Debut
Erreur: Adr=1 Val=11111111
Erreur: Adr=1 Val=10101010
Erreur: Adr=1 Val=1010101
Erreur: Adr=2 Val=11111111
Erreur: Adr=2 Val=10101010
Erreur: Adr=2 Val=1010101
Erreur: Adr=3 Val=10101010
Erreur: Adr=3 Val=1010101
Erreur: Adr=4 Val=11111111
Erreur: Adr=4 Val=10101010
Erreur: Adr=4 Val=1010101
Fin


Programme


#include <stdio.h>
#include <EEPROM.h>

void setup() {
  Serial.begin(9600);

  Serial.println("Debut");

  byte ecritures[] = { 0, 255, 170, 85 };
  int adr = 0;
  byte val;

  for(int adr=0;adr<512;adr++) {
    for(int i=0;i<4;i++) {
      EEPROM.write(adr,ecritures[i]);
      val = EEPROM.read(adr);
      if(val != ecritures[i]) {
        Serial.print("Erreur: Adr=");
        Serial.print(adr,DEC);
        Serial.print(" Val=");
        Serial.println(ecritures[i],BIN);
      }
    }
  }

  Serial.print("Fin");
}

void loop() {

}

Aucun commentaire:

Enregistrer un commentaire