Variabili static e interrupt

Mi sapreste dire a cosa serve precisamente il prefisso STATIC alle variabili?

Spiego a cosa penso che mi potrebbe servire: vorrei avere una variabile locale, dentro un vettore di interrupt, che però non perda il suo valore quando esco dall'interrupt e che quindi, quando questo viene nuovamente chiamato, possa utilizzare il valore di questa variabile. Spero di essermi spiegato.... :grin:

esattamente, più precisamente è una variabile la cui vita è estesa a tutto il programma. Essa controlla anche la visibitità della variabile: in questo caso rimane all'interno della funzione che la dichiara.
Quindi in pratica unisce la "vita" di una variabile globale (che implicitamente sono in realtà extern), con la visibilità di una variabile locale

Perfetto, grazie mille. Proprio quello che mi serviva... ^^

Mi è venuto un altro piccolo dubbio. Come la inizializzo?

Cioè, se scrivo:

static int i = 0;

dentro la funzione di interrupt, tutti le volte che chiamo l'interrupt i viene messa a 0? Se si, come posso inizializzarla?

Scusate il doppio post ma penso di essermi risposto da solo: http://www.arduino.cc/en/Reference/Static

Variables declared as static will only be created and initialized the first time a function is called.

Janos:
Mi sapreste dire a cosa serve precisamente il prefisso STATIC alle variabili?

Serve per evitare che una variabile venga distrutta quando esci dalla funzione dove è stata creata, rimane visibile solo a questa funzione.
Per l'uso con la ISR è caldamente consigliato usare variabili globali piuttosto che variabili locali anche se vengono utilizzate solo all'interno della ISR.

Perché? Cavolo, il codice sarebbe molto più elegante e leggibile se mettessi le variabili che mi servono direttamente dentro l'ISR...