Reference   Language | Libraries | Comparison | Changes

Volatile

Volatile ist ein Schlüsselwort und gilt als ein Variablenkennzeichner. Normalerweise steht er vor dem Datentyp einer Variable um die Weise zuverändert wie der Compiler und das nachfolgende Programm mit der Variable umgeht.

Die Deklaration einer Variable als volatile ist eine Anweisung an den Compiler. Der Compiler ist ein Programm, dass C/C++ Code in Maschinencode umwandelt, was die wirklichen Anweisungen für den Atmega Chip auf dem Arduino enthält.

Es ordnet dem Compiler an, die Variable aus dem RAM und nicht aus dem Speicherregister zu laden, welches ein temporärer Speicherort ist an dem Programmvariablen aufbewahrt und verändert werden. Unter besonderen Umständen kann der Wert der Variable im Register fehlerhaft sein.

Eine Variable sollte immer als volatile deklariert werden, wenn der Wert von etwas anderem als der Codesektion in der sich die Variable befindet geändert wird. Zum Beispiel ein gleichzeitig ausgeführter Thread. Im Arduino tritt dies nur in den Regionen von Code auf die etwas mit Interrupts, auch Interrupt Service Routine genannt, zu tun haben.

Beispiel

// toggles LED when interrupt pin changes state

int pin = 13;
volatile int state = LOW;

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

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

void blink()
{
  state = !state;
}

Mehr Informationen:

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.

Share