Référence du Langage Arduino : Mini | Standard | Etendue | Librairies | Comparaison
Le mot-clé volatile est connu en tant que qualificateur de variable et il est utilisé usuellement avant la déclaration d'une type de variable, afin de modifier la façon dont le compilateur, et par voie de conséquence le programme, traitera la variable.
Déclarer une variable volatile est une information pour le compilateur. Le compilateur est la partie du logiciel Arduino qui transforme votre code C/C++ en un code machine (c'est à dire en une suite de 0 et 1), lequel correspond aux instructions réelles pour le microcontrôleur Atmega de votre carte Arduino.
Plus précisément, il indique au compilateur de charger la variable depuis la RAM et pas depuis un registre de stockage, lequel est un emplacement temporaire de la mémoire où les variables sont stockées et manipulées. Sous certaines conditions, la valeur de la variable stockée dans les registres peut-être imprécise.
Une variable devra être déclarée volatile chaque fois que sa valeur pourra être changée par quelque chose d'autre que le code dans laquelle elle apparaît, tel qu'un fil d'exécution concurrent. Avec Arduino, la seule situation où cela risque d'arriver concerne les section de codes associées aux interruptions, appelées également routines de service des interruptions.
// inverse l'état de la LED quand une interruption par changement d'état d'une broche survient
int pin = 13;
volatile int state = LOW; // déclaration variable volatile = stockée en RAM
void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE); // Attache l'interruption à la fonction blink
}
void loop()
{
digitalWrite(pin, state); // met la broche dans l'état voulu
}
void blink()
{
state = !state; // inverse l'état de la variable
}
Aucun commentaire
Page d'accueil de la référence Arduino en français
Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino.
Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.
La présente traduction française commentée a été réalisée par Xavier HINAULT (2010) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.