Arduino:Справочник языка Arduino/Область видимости переменных и квалификаторы/volatile

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Проверка/Оформление/Редактирование: Мякишев Е.А.


volatile

Квалификатор volatile, используется перед типом переменной, чтобы изменить способ интерпретации и доступа к переменной компилятором и в дальнейшем программой.

Объявление переменной с квалификаторм volatile – это указание для компилятора. Компилятор – это программа, которая переводит текст вашей программы на С/С++ в машинный код, то есть в реальные команды для чипа Atmega в Arduino.

Он указывает компилятору загрузить переменную из ОЗУ, а не из запоминающего регистра – временной ячейки памяти, в которой хранятся переменные программы и производятся операции с ними. При определенных условиях значения переменных, хранящихся в регистрах, могут оказаться неточными.

Переменная должна быть объявлена volatile, когда её значение может быть изменено чем-либо за пределами того участка программы, где она объявлена, например, параллельно выполняющимся процессом. В Arduino единственным местом, где это может проявиться, является участок программы, ассоциированным с прерываниями, вызванный программой обработки прерываний. См. AttachInterrupt()

Пример

 1 // переключаем светодиод, когда вызывается прерывание, изменением состояния входного пина
 2  
 3 int pin = 13;
 4 volatile int state = LOW;
 5  
 6 void setup()
 7 {
 8   pinMode(pin, OUTPUT);
 9   attachInterrupt(0, blink, CHANGE);
10 }
11  
12 void loop()
13 {
14   digitalWrite(pin, state);
15 }
16  
17 void blink()
18 {
19   state = !state;
20 }

См.также

Внешние ссылки