Verificare SRAM utilizzata

astrobeed:
Dipende da come usi la memoria, se ad ogni iterazione vengono aggiunti dati alla fine l'heap si riempie e va in overflow, se viene solo modificato il contenuto di una, o più, variabile/i non c'è problema, da notare che lo stack non viene incrementato ad ogni iterazione pertanto non va in overflow.

ma questo come avviente? ogni volta che una funzione richiama se stessa deve fare una call mettendo nello stack quantomeno il punto di ritorno della procedura...mi sbaglio?
Boo non mi capisco... comunque penso che per provare a risolvere il problema si possa provare a dichiarare globale un puntatore ad uno o due array e in setup() procedere con il malloc... qualcosa dovrebbe andare meglio anche perchè qua non abbiamo 2k ma 8... in pratica anneghiamo in un mare :roll_eyes: di ram che non usiamo
... poi domanda... perchè questo non mi crasha il leonardo che ha solo 2,5k di ram e i led continuano a lampeggiare? ...dove sto scrivendo?

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
char prova1[1000];

char *prova2;
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
  
  prova2 = (char *) malloc(1000 * sizeof(char));

  
}

// the loop routine runs over and over again forever:
void loop() {
  int i;
  for (i = 0; i <1000; i++)
  {  prova1[i]=0;
    
    }
 for (i = 0; i <1000; i++)
  {  prova2[i]=0;
    
    }
    
    
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}