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

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

{{#setlogo:ArduinoCommunityLogo.png}}

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


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

См.также

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