Otro ejemplo, seria por ejemplo una variable compartida que se utiliza en una interrupción y fuera de esta, mientras tu estas leyendo dicha variable desde el programa, se podría modificar en la interrupción obteniendo un valor incorrecto, por eso conviene declararlas como volatile, aunque con solo hacer esto no es suficiente, hay que tener otras precauciones al trabajar en este tipo de situaciones.
Otro ejemplo, seria por ejemplo una variable compartida que se utiliza en una interrupción y fuera de esta, mientras tu estas leyendo dicha variable desde el programa, se podría modificar en la interrupción obteniendo un valor incorrecto, por eso conviene declararlas como volatile, aunque con solo hacer esto no es suficiente, hay que tener otras precauciones al trabajar en este tipo de situaciones.
ese es el mejor ejemplo en donde se suele utilizar volatil, en variables que van a ser usada fuera y dentro de las rutinas de atension de una interrupcion.
sds
Otro ejemplo, seria por ejemplo una variable compartida que se utiliza en una interrupción y fuera de esta, mientras tu estas leyendo dicha variable desde el programa, se podría modificar en la interrupción obteniendo un valor incorrecto, por eso conviene declararlas como volatile, aunque con solo hacer esto no es suficiente, hay que tener otras precauciones al trabajar en este tipo de situaciones.
ese es el mejor ejemplo en donde se suele utilizar volatil, en variables que van a ser usada fuera y dentro de las rutinas de atension de una interrupcion.
sds
Al menos en los PICs es una "ayuda" pero no soluciona el problema. Supongamos el codigo en ASM
Al parecer el calificador volatile es un tema muy amplio, leo diferentes ideas y me confundo más, parece que necesitamos a un experto para que nos saque de dudas.
Volatile static char dato @0x100,
int x=0;
static int i=0;extern int x; // Valido
extern int i; // No validoa = 15, sa = 15
a = 15, sa = 20
a = 15, sa = 25
a = 15, sa = 30
a = 15, sa = 35
a = 15, sa = 40
a = 15, sa = 45
a = 15, sa = 50
a = 15, sa = 55
a = 15, sa = 60