Die lokalen Variablen brauchen nicht als volatile (flüchtig) deklariert zu werden. volatile ist eine Variable/Zugriff dann, wenn sich der Inhalt "unbemerkt" ändern kann, also wenn Hardware oder Interrupt-Service-Routine den Wert ändern. Volatile stellt sicher, daß bei jedem Zugriff die Variable wirklich gelesen/geschrieben wird.
Werden Daten zwischen einer normalen Funktion und einer ISR ausgetauscht, dann muss die globale Variable/Struktur volatile sein.
Zusätzlich muss der Zugriff atomar sein, wenn das Übergabe-Objekt länger als ein Byte ist.
Lesezeichen