Ciao a tutti! Vorrei un vostro parere: possiedo un arduino uno e sto facendo uno sketch in cui ho utilizzato varie librerie come quella per la sd card, il display e la bignumber che è utile per fare calcoli con elevata precisione di cui mi è stato detto che sfrutta molta ram.
Lo sketch occupa 28.048 byte su 32.256 byte e la memoria dinamica occupa 1.224 byte (59%) su 2.048 byte.
Facendo partire solo il void setup arduino svolge le sue funzioni. Tuttavia aggiungendo anche il void loop arduino non completa nemmeno la parte del void setup e si ferma.
Secondo voi sono andato oltre le capacità della centralina? Quale altro arduino mi permetterebbe di far funzionare lo sketch?
Grazie.
Matteo90:
Secondo voi sono andato oltre le capacità della centralina? Quale altro arduino mi permetterebbe di far funzionare lo sketch?
Se realmente sei andato in stack/heap overflow, molto facile, devi passare alla Mega 2560 che ha 8k di ram.
Matteo90:
Ciao a tutti! Vorrei un vostro parere: possiedo un arduino uno e sto facendo uno sketch in cui ho utilizzato varie librerie come quella per la sd card, il display e la bignumber che è utile per fare calcoli con elevata precisione di cui mi è stato detto che sfrutta molta ram.
Lo sketch occupa 28.048 byte su 32.256 byte e la memoria dinamica occupa 1.224 byte (59%) su 2.048 byte.
Questo è il consumo statico, ossia senza il conteggio delle variabili allocate a runtime dinamicamente. Siccome la bigNumber crea una notevole mole di dati in RAM, è facile che il chip si sia freezato per esaurimento della memoria.
Prova abbassando la precisione (ossia il numero di cifre decimali) alla bigNumber ed a racchiudere le scritte fisse che mandi al display nella funzione F(), ad esempio se hai:
lcd.Print("CIAO");
sostituisci con
lcd.Print(F("CIAO"));
leo72:
Matteo90:
Ciao a tutti! Vorrei un vostro parere: possiedo un arduino uno e sto facendo uno sketch in cui ho utilizzato varie librerie come quella per la sd card, il display e la bignumber che è utile per fare calcoli con elevata precisione di cui mi è stato detto che sfrutta molta ram.
Lo sketch occupa 28.048 byte su 32.256 byte e la memoria dinamica occupa 1.224 byte (59%) su 2.048 byte.Questo è il consumo statico, ossia senza il conteggio delle variabili allocate a runtime dinamicamente. Siccome la bigNumber crea una notevole mole di dati in RAM, è facile che il chip si sia freezato per esaurimento della memoria.
Prova abbassando la precisione (ossia il numero di cifre decimali) alla bigNumber ed a racchiudere le scritte fisse che mandi al display nella funzione F(), ad esempio se hai:lcd.Print("CIAO");sostituisci con
lcd.Print(F("CIAO"));
Grazie Leo72! Ho abbassato la precisione e ora sembra che funzioni bene!
Ti linko questo articolo, trovi un pò di info sul risparmio della memoria nonché un paio di soluzioni per controllare la memoria RAM libera a runtime: in questo modo puoi vedere durante l'esecuzione del codice quanta te ne resta libera.
leo72:
Ti linko questo articolo, trovi un pò di info sul risparmio della memoria nonché un paio di soluzioni per controllare la memoria RAM libera a runtime: in questo modo puoi vedere durante l'esecuzione del codice quanta te ne resta libera.
Grazie mille!!!!! XD