volatile

volatile is a keyword known as a variable qualifier, it is usually used before the datatype of a variable, to modify the way in which the compiler and subsequent program treats the variable.

Declaring a variable volatile is a directive to the compiler. The compiler is software which translates your C/C++ code into the machine code, which are the real instructions for the CPU in the 86Duino.

Specifically, it directs the compiler to load the variable from RAM and not from a storage register, which is a temporary memory location where program variables are stored and manipulated. Under certain conditions, the value for a variable stored in registers can be inaccurate.

A variable should be declared volatile whenever its value can be changed by something beyond the control of the code section in which it appears, such as a concurrently executing thread. In the 86Duino, the only place that this is likely to occur is in sections of code associated with interrupts, called an interrupt service routine.

 

Example

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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

}

 

See also

attachInterrupt()


 

Language Reference Home

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