Gerne, volatile bezeichnet die Variable als flüchtig, d.h. bei jedem Zugriff soll sie bitteschön aus dem Speicher gelesen oder geschrieben werden.Eine kurze Erklärung was genau das volatile dort anstellt?
Das hindert den Compiler daran sie in einem Register zu halten, weil der Inhalt an einer anderen Stelle (bei Dir der Timerinterrupt) geändert werden könnte, ohne das der Prozessor es merkt.
Variablen, die für die Komunikation zwischen Interrupts und Hauptprogramm zuständig sind, sind daher als volatile zu deklarieren, es sei den man macht die Optimierung weg (-O0) was ja nicht gerade Sinn macht(wie Du leider feststellen musstest)
Ich hoffe, daß es verständlich genug war
Gruß Sebastian
Lesezeichen