problema con utilizzo EEPROM...strano (per me!)

ciao a Tutti,

ho scritto uno sketch dove, singolarmente andavo a scrivere e leggere sulla e dalla EEPROM…e funzionava.
Ho voluto quindi “automatizzare” in void setup() la scrittura di tramite:

  valore = EEPROM.read(primoavvio);  // verifica valore di primo avvio per impostare la EEPROM con i valori di base
  for (int i = 1; i <= 100; i++) {
    materiali[i] = i;
  }
  if ((int)valore != 1) {
    int i;
    EEPROM.write(ricevitore, 1);  // inizializzazione Ricevitore al numero 1

    for (i = 1; 1 <= 4; i++) {
      EEPROM.write(materiali[i], i);
    }
    for (i = 5; i <= 100; i++) {
      EEPROM.write(materiali[i], 0);
    }
    EEPROM.write(primoavvio, 1);
  }

dopo aver scritto questa cosa, ovviamente l’array materiali e la variabile valore sono dichiarati nelle global, non mi parte più il programma…usavo il monitor seriale per inviare comandi.
ho provato in un altro sketch ad eseguire cicli for per scrivere e leggere registri EEPROM e funzionano benissimo…
cosa mi sfugge?..se elimino questa parte il programma torna a funzionare.
grazie

io metterei un delay() anche piccolo, dopo ogni EEPROM.write(x,y)

Ciao Brunello,

ho messo dei delay...(fino a 200!) e non ha funzionato...poi ho lasciato i cicli for senza istruzioni..e già questi danno problemi!? quindi ho cambiato l'inizializzazione del ciclo da (i=1;etc) ed (i=5;etc) in (i=0;etc)...e funziona!? Allora...nella mia immensa ignoranza...come mai non funziona?...

Una delle condizioni dei tuoi for è 1 <= 4, forse volevi scrivere i <= 4? :wink:

Occhio di lince… :wink: :wink:

:grinning: che pirla sono! grazie

Figurati, io una volta (per lavoro) sono diventato pazzo perché avevo scritto:

a = a;

Ci ho messo letteralmente MESI a trovare il problema :(.