פירוט שפת תכנות - הגדרת משתנים - volatile

פורום זה מכיל תרגום לעברית של מדריכים, דוגמאות קוד, פירוט שפת תכנות לכרטיסי Arduino וחומרים לימודיים אחרים מהאתר arduino.cc

פירוט שפת תכנות - הגדרת משתנים - volatile

הודעהעל ידי Alex » ב' יולי 17, 2017 2:59 pm

מילת מפתח 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.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 7168
הצטרף: ה' ינואר 28, 2010 8:27 pm

חזור אל תרגום מדריכים מהאתר arduino.cc

Jump box

מי מחובר

משתמשים הגולשים בפורום זה: CCBot [Bot]