Contatore dei loop eseguiti

Salve,
se volessi contare il numero dei loop che l'arduino esegue devo per forza inizializzare un contatore ed incrementarlo ad ogni loop o esiste un'altra possibilità che minimizzi l'allocazione di memoria?

Un contatore è la via più semplice. Il consumo di memoria è minimo: considera che un integer di tipo long occupa solo 4 byte (32 bit) e permette di contare 2^32 cicli (4.294.967.296)!

Ma hai poi bisogno di memorizzare tale valore affinché in caso di mancanza di alimentazione il valore non venga perso?
Se questo è il caso, puoi memorizzare il valore nella EEPROM interna al micro.

gli interi su Arduino sono a 16 bit

Ehm ehm.... ho scritto:

leo72:
considera che un integer di tipo long occupa solo 4 byte (32 bit) e permette di contare 2^32 cicli (4.294.967.296)!

Gli interi normali sì, sono a 2 byte, ma i long sono a 4. :wink:

ops! scusami ho letto troppo velocemente!!

Ciao Leo72,
sono un Megaprincipiante, ho intuito (vagamente), la possibilità di memorizzare dei dati all'interno dell'"EEPROM".
mi stai dicendo che è possibile memorizzare dati anche in assenza di alimentazione?
perchè se è così arduino mi darà moltissime soddisfazioni :smiley:

@leo72
comunque c'é l' errore.
Se usi un long é col segno e non Ti conta fino a 4294967296 ma fino a 2147483648 e poi dventa un numero negativo.
Devi usare un unsigned long.
@Marbi
Per memorizzare o leggere dei Byte nella memoria EEPROM del Atmega puoi usare la libreria EEprom.h http://arduino.cc/en/Reference/EEPROM
Sappi peró che il produttore garantisce 10000 cicli di cancellazione/scrittura per la EEprom.
Ciao Uwe

uwefed:
Sappi peró che il produttore garantisce 10000 cicli di cancellazione/scrittura per la EEprom.
Ciao Uwe

No, il produttore garantisce 10.000 cicli per la Flash. Per la EEPROM ne sono garantiti 100.000 :wink:
Vedi datasheet, pag. 1.

uups, beccato. La mia memoria mi ha tradito.
Grazie leo72 per la correzione
Comunque quello che volevo segnalare é che se cambi ogni ciclo il numero nella eeprom arrivi molto velocemente al numero di cancelazioni massimi della EEprom. Oltre questo un ciclo di scrittura dura qualche msecondo e ralenta notevolmente il ciclo loop().
Ciao Uwe

Sì, vero. Se il loop è semplice, si può arrivare anche a consumare i cicli totali in meno di 10 minuti...