Go Down

Topic: Variabili static e interrupt (Read 868 times) previous topic - next topic

Janos

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....  :smiley-mr-green:

lesto

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
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Janos

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

Janos

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

Cioè, se scrivo:

Code: [Select]
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?

Janos

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

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

astrobeed


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.




Janos

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

Go Up