Pages: [1]   Go Down
Author Topic: Variabili static e interrupt  (Read 781 times)
0 Members and 1 Guest are viewing this topic.
Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10463
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Cioè, se scrivo:

Code:
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?
Logged

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 123
Posts: 9308
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.



Logged

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: