volatile

Документація

volatile keyword


volatile — це ключове слово, відоме як специфікатор змінної. Він зазвичай використовується перед типом даних змінної, щоб змінити спосіб, яким компілятор і подальша програма обробляє змінну.

Оголошення volatile змінної — це вказівка до компілятора. Компілятор — це програмне забезпечення, яке переводить код C/C++ у машинний код, який є справжньою інструкцією для чіпа Atmega на Arduino.

Зокрема він вказує компілятору завантажити змінну з оперативної пам'яті, а не з регістра зберігання, який є тимчасовим розташуванням пам’яті, де зберігаються та управляються програмні змінні. При певних умовах, значення змінної, що зберігається в регістрах, може бути неточним.

Змінна повинна бути оголошена як volatile як тільки її значення може бути змінене за межами секції коду, в якому вона з’являється, наприклад при потоках, що одночасно виконуються. В Arduino єдине місце, де це може статися — секції коду, що пов'язані з перериваннями і мають назву процедура опрацювання переривань.

Приклад

// перемикає світлодіод, коли пін переривання змінив стан

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


Повернутись до головної

Коментарі 0

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.