Go Down

Topic: Azzeramento variabili dopo diversi minuti (Read 70 times) previous topic - next topic

XiniRaffaele

Salve a tutti,
  ho un problema con uno script che non riesco a risolvere (sto andando per tentativi da alcune settimane).
Il programma che ho scritto ha circa 1800 righe di codice e prima di postarlo magari riesco a trovare qualcuno che ha avuto il mio stesso problema.
Premetto che utilizzo un Arduino Mega 2560 con applicata una ethernet shield versione 1 con controller EthernetW5100.
Il programma ha una connessione ethernet che utilizzo per comunicare con uno script in python bidirezionalemente in modo da poter leggere una serie di variabili e modificarle. Le altre connessioni che ho implementato sono una Modbus RTU su RS485 utilizzando la libreria SimpleModbus (esce sulla serial2) e una seriale per recuperare dati da un altro arduino (serial3). Nessuna delle due connessioni è al momento utilizzata in quanto sono ancora nella fase di test quindi non ho collegato alcun cavo ai pin delle rispettive seriali.
Il programma serve ad accendere ad intervalli di tempo impostabili ed in determinate finestre alcuni relè che mi vanno a comandare delle elettrovalvole: è una centralina per gestire l'irrigazione su diversi "settori".
All'avvio tutto bene ed inizializzo nel setup le variabili in maniera random. Con lo script in python leggo senza alcun problema le variabili e sono tutte valvorizzate. Il funzionamento è corretto e lo script va ad aggiungere ad una coda di avvio i "settori" in modo da accenderli sequenzialmente ma mai sovrapposti se affini ad una stessa pompa.
Dopo 10, a volte 20 o più minuti andando a leggere di nuovo le variabili me ne trovo alcune a 0, senza che le avessi modificate.
Ho pensato ad un problema di RAM ma il programma utilizza il 54% della memoria per le variabili globali e anche andando a controllare la RAM libera nelle funzioni (anche all'interno di alcune funzioni particolarmente complesse in termini di variabili utilizzate) ne ho sempre 3685 byte liberi.
Ho provato anche ad invertire l'ordine con cui dichiaro le variabili e l'ordine con cui le valorizzo pensando che così il problema si spostasse su altre variabili ma non è così.
Altra cosa strana: inserendo un'ulteriore array di 100 int dichiarato globale e inizializzandolo nello sketch non mi cambia la memoria riservata alle variabili globali calcolata dall' avr-size dopo la compilazione.
Grazie per ogni aiuto.



Go Up