Reference.Volatile History

Hide minor edits - Show changes to output

July 02, 2007, at 03:33 AM by Paul Badger -
Changed lines 3-4 from:
volatile is keyword known as a variable ''qualifier'', it used, usually before the datatype of a variable, to modify the way in which the compiler and subsequent program treats a variable.
to:
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.
Changed lines 7-10 from:
Specifically, it directs the compiler to load the variable from RAM and not from a storage register, which is temporary memory 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 program in which it appears, such as a concurrently executing thread. In the Arduino, the only place that this is likely to occur is in code associated with interrupts, called interrupt service routines.
to:
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 Arduino, the only place that this is likely to occur is in sections of code associated with interrupts, called an interrupt service routine.
May 29, 2007, at 10:17 PM by Paul Badger -
Changed lines 1-2 from:
!! Volatile Keyword
to:
!! volatile keyword

volatile is keyword known as a variable ''qualifier'', it used, usually before the datatype of a variable, to modify the way in which the compiler and subsequent program treats a variable.
Changed lines 7-8 from:
What it directs the compiler to do specifically, is to load the variable from RAM and not from a register, which is temporary memory where program variables are stored and manipulated. Under certain conditions, the value for a variable stored in registers can be inaccurate.
to:
Specifically, it directs the compiler to load the variable from RAM and not from a storage register, which is temporary memory where program variables are stored and manipulated. Under certain conditions, the value for a variable stored in registers can be inaccurate.
May 18, 2007, at 05:56 AM by Paul Badger -
Changed lines 5-6 from:
What it directs the compiler to do specifically is to load the variable from RAM and not from a register, which is temporary memory where program variables are stored and manipulated.
to:
What it directs the compiler to do specifically, is to load the variable from RAM and not from a register, which is temporary memory where program variables are stored and manipulated. Under certain conditions, the value for a variable stored in registers can be inaccurate.
May 18, 2007, at 05:54 AM by Paul Badger -
Changed line 33 from:
1!!!! See also
to:
!!!! See also
May 18, 2007, at 05:54 AM by Paul Badger -
Changed lines 10-34 from:
to:
[@
// 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;
}
@]

1!!!! See also
* [[AttachInterrupt]]
May 18, 2007, at 05:51 AM by Paul Badger -
Added lines 1-10:
!! Volatile Keyword

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 Atmega chip in the Arduino.

What it directs the compiler to do specifically is to load the variable from RAM and not from a register, which is temporary memory where program variables are stored and manipulated.

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

!!!! Example

Share