volatile
מגדירה את הדרך בה המהדר (compiler) והתוכנית עצמה מתייחסים למשתנה. בדרך כלל מציינים את ה-volatile
לפני ציון סוג הנתון של המשתנה.הגדרת המשתנה כ-
volatile
היא הוראה מיוחדת למהדר (compiler). המהדר הוא תוכנה שממירה את התוכנית שאתם כותבים בשפת C/C++ במקרה שלנו לשפת המיקרובקר, שזוהי השפה שמיקרובקר של ה-Arduino מבין.כדי להיות ספציפי יותר, ההגדרה מציינת למהדר לטעון את הערך המשתנה ישירות מזכרון RAM ולא מרגיסטר (register), שזהו מקום אחסון זמני שבו הנתונים של המשתנים מאוחסנים ומטופלים. במקרים מסויימים הערך של המשתנה שמאוחסן ברגיסטר יכול להיות לא נכון.
משתנה צריך להיות מוגדר כ-
volatile
במקרים בהם הערך שלו יכול להשתנות ע"י משהו שלא נשלט ע"י ריצה של התוכנית בה הוא מוגדר. ב-Arduino המקום הנפוץ ביותר להגדרת משתנה volatile
הוא בקוד המטפל בפסיקות (interrupts) הנקרא גם ISR.דוגמה
- קוד: בחר הכל
// 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;
}
ראו גם:
()attachInterruptפירוט שפת תכנות לסביבת Arduino
עמוד זה הוא תרגום של volatile לפי רישיון Creative Commons Attribution-ShareAlike 3.0.