posible problema al utilizar variable volatil en una interrupcion

Hola!

En un proyecto que estoy desarrollando quiero medir si un deposito tiene agua o no. Para intentar hacerlo mas eficiente quiero utilizar interrupciones

attachInterrupt(0, RellenandoDeposito, RISING);///cuando se rellena el deposito de agua
attachInterrupt(0, DepositoSinAgua, FALLING);/ cuando deja de haber agua

Además tengo una variable global que parte del tipo enumeracion:

enum ESTADO_DEPOSITO {CON_AGUA, SIN_AGUA};
enum ESTADO_DEPOSITO vEstadoDeposito;

por ahora vEstadoDeposito es global y NO volatil. Pero según he leído si quiero utilizar vEstadoDeposito dentro de las funciones de la interrupcio, han de ser volátiles.

Entonces me pregunto que si hago vEstadoDeposito volatil, si podré acceder a su valor con normalidad en cualquier parte del programa sin que haya perdida de informacion.

Muchas gracias

Por supuesto. El que una variable sea accesible desde cualquier parte del programa sólo depende de que sea global, es decir, que esté declarada fuera de cualquier función.
El hecho de declararla volátil lo que hace es indicarle al compilador que cuando vaya a utilizar la variable no dé nada por supuesto y la vuelva a leer de su posición de memoria. Con ello prevenimos que una rutina de interrupción modifique la variable y en otra parte del programa se utilice sin releerla y trabaje con un valor obsoleto.

Muchas gracias, de corazon.

Quien te sugirió usar interrupciónes para detectar esos dos estados?