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. ;)

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 :D

@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...