Sono arrivato ad un buon punto con un mio progetto, con uno sketch probabilmente un pò incasinato ma funzionante con una Uno rev.3.
Ad un certo punto ho deciso di inserire la libreria SD.h e semplicemente includendola lo sketch si pianta. Premetto che non utilizzo per il momento pin digitali ad esclusione dello 0-1 e 2 per la comunicazione MODBUS, inoltre utilizzo A5 ed A4 per la comunicazione I2C.
Provando ad inserire nello sketch la funzionen freeRam prima di commentare l'include, restituisce 603.
Ho fatto la stessa prova su Blink e restituisce 1837. Aggiungendo SD.h lo stesso sketch visualizza 1231. Ne posso dedurre quindi che la sola SD occupi 606 byte di RAM e che quindi blocchi il programma?
Ho già recuperato la memoria salvando le stringhe da visualizzare sulla flash... altre soluzioni? Mi sono perso qualcosa?
Inserendo la funzione freeRam nel mio skecth funzionante, si.
queste sono le librerie che già includo:
#include <MenuBackend.h> //MenuBackend library - copyright by Alexander Brevig
#include <EEPROM.h> // libreria per salvare le variabili impostate nella EEPROM
#include <SimpleModbusMasterNew.h> // libreria per utilizzare la comunicazione MODBUS
#include <Wire.h> // lib per la comunicazione I2C
#include <LiquidCrystal_I2C.h> // lib LCD via I2C
//#include <SD.h>
=(
Sono quindi costretto a passare a una scheda Mega?
Il prossimo passo sarebbe iniziare ad utilizzare la scheda Ethernet, per cui non credo abbia senso spulciare le librerie per recuperare qualche byte...
tapirinho:
=(
Sono quindi costretto a passare a una scheda Mega?
Il prossimo passo sarebbe iniziare ad utilizzare la scheda Ethernet, per cui non credo abbia senso spulciare le librerie per recuperare qualche byte...
Se vuoi infilarci dentro altre lib scordatelo
L'Atmega328 ha solo 2048 byte di SRAM.