Arduinoリファレンス

Arduinoリファレンスの日本語訳のページです
garretlab
volatile

説明

volatileは型修飾子の一つであり、変数のデータ型の前に書き、コンパイラやコンパイラが生成するプログラムによるその変数の取り扱い方法を変更する。

変数をvolatileとして修飾することは、コンパイラに対して指令することである。。コンパイラとは、C/C++言語のコードを機械語に翻訳し、ArduinoのAtmegaチップ上の実際の命令セットを生成するものである。

具体的には、プログラムの変数が一時的に配置されて操作されるレジスタではなく、必ずRAMから読み込むように指示する。特定の状況では、レジスタに格納された変数の値は不正確になることがある。

並行処理するスレッドなど、変数が、そのコード以外によって変更されるような場合に、volatile修飾を行う必要がある。Arduinoでは、このようなことが起こりうるのは、割り込みサービスルーチンと呼ばれる、割り込みに関するコードだけである。

// 割り込みによってピンの状態が変わるとLEDを反転する(消灯⇔点灯)

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;
}

バージョン

Arduino 1.8.5

オリジナルのページ

http://arduino.cc/en/Reference/Volatile



メニューを表示するためにJavaScriptを有効にしてください。

inserted by FC2 system