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