PIC16F876 e variabili durante interrupt

Ciao a tutti, non ho ben chiaro una cosa : durante un interrupt i dati contenuti nelle variabili es. "int numero", vanno persi oppure una volta ritornati al programma principale me li ritrovo ancora li ? Uso il linguaggio C (CSS C).

Grazie in anticipo a chiunque. Ciao cl@udio

Reply to
virgilio
Loading thread data ...

se la variabile è dichiarata a livello globale e l'interrupt la modifica è chiaro che la modifica permane! se invece dichiari una variabile all'interno di una ISR allora la variabile perde il suo contenuto quando l'interrupt finisce e alla chiamata successiva avrà un valore pseudo-random

non fa differenza, è un concetto che vale per tutti i compilatori

non so se esistano poi direttive specifiche per far si che una variabile dichiarata localmente (in una function) possano mantenere il loro valore tra chiamate successive (pur restando visibili solo localmente) in java mi pare che questa keyword sia STATIC ma non credo esista anche su macchine come i pic ;)

-ice-

Reply to
ice

"ice" ha scritto nel messaggio news:44a5642b$0$16945$ snipped-for-privacy@reader4.news.tin.it...

La possibilità di definire una variabile come 'static' appartiene al linguaggio non al target. Ora, il fatto che il CCS si possa definire un compilatore, è generalmente ritenuto un eccesso di ottimismo. Quindi, su CCS, non mi esprimo (e, sorry, non ho voglia di consultarmi il manuale che ho qui da qualche parte). Su C18 e C30 puoi, ovviamente, dichiarare una variabile come statica.

Saluti,

--
simone.bern
Mr. Heisemberg is not the only one who can affect a measurement by looking 
at it (Robert A. Pease)

zsimonez.zbernz@zliberoz.it (Rimuovere i caratteri di zorro per rispondere 
via mail)
Reply to
Simone Bern

...ehmm...scusate la mia ignoranza : per mantenere il valore della variabile devo definire la variabile come statica (es. "static int variabile") sia se e' all' interno della funzione di interrupt sia se si trova prima o all' interno del main() ?

Mille grazie ancora Ciao cl@udio

Reply to
virgilio

variabili dichiarate all'esterno di ogni funzione sono 'automaticamente' statiche e visibili da tutte le funzioni ( del modulo ) variabili dichiarate all'interno di una funzione necessitano della keyword 'static' per mantenere ( conservare ) il loro valore tra una chiamata e la successiva.

e' buona norma, se usi variabili condivise tra programma normale e routine d'interrupt, utilizzare per queste variabili la keyword 'volatile', questa keyword costringe il compilatore a ricaricare il valore della variabile nelle variabili temporanee ad ogni accesso, in mancanza di questa keyword il compilatore potrebbe utilizzare un valore memorizzato in un regitro temporaneo e non vedere quindi il valore aggiornato dalla routine d'interrupt.

Reply to
mmm

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.