Reference   Language (extended) | Libraries | Comparison | Changes

Palabra clave volatile

volatile es una palabra clave conocida como variable clasificada (qualifier), se utiliza habitualmente delante de un tipo de datos, para modicar la forma en la que el compilador y el correspondiente programa trata la variable.

Declarar un variable como volátil es una directiva para el compilador. El compilador es un software que traduce tu código C/C++ en código máquina, que son las instrucciones reales para el chip Atmega de la Arduino.

Específicamente, dirige al compliador para cargar la variable desde memoria RAM y nos desde un registro de almacenamiento, que es una localización de memoria temporal donde las variables se almacenan y son manipuladas. Bajo ciertas condiciones, el valor de la variable almacenada en registros puede ser imprecisa.

Una variable debe ser declarada volatile siempre que su valor pueda ser modificado por algo más allá de la sección del código en el que aparece, como por ejemplo un hilo de ejecución concurrente. En Arduino, el único lugar en el que se podría dar el caso es en secciones de código asociadas a interrupciones, denominadas rutina de servicio de interrupción (interrupt service routine).

Ejemplo

// Conmuta el LED cuando el pin de interrupción cambia de estado

int pin = 13;
volatile int estado = LOW;

void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, parpadea, CHANGE);
}

void loop()
{
  digitalWrite(pin, estado);
}

void parpadea()
{
  estado = !estado;
}

Ver también

Página principal Referencia

Correcciones, sugerencias, y nueva documentación deberán ser publicadas en el Foro (castellano) o en el Foro (inglés).

El texto de la referencia de Arduino está publicado bajo la licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0. Los ejemplos de código de la referencia están liberados al dominio público.

Share