Zitat Zitat von sternst
Zitat Zitat von Besserwessi
Die Variablen in der ISR muß man als Volatile deklarieren, sonst werden die Werte am ende der ISR wahrscheinlich verworfen weil nie aus den Registern ins RAM kopiert.
Sorry, aber das ist Blödsinn.
Das sind globale Variablen und werden daher selbstverständlich spätestens am Ende der Funktion ins RAM zurückgeschrieben.
Er hats komisch beschrieben, aber der Grundgedanke ist korrekt.
Wird eine Variable von zwei verschiedenen Stellen (ISR und Hauptprogramm) benutzt, so muss sie volatile sein, sonst wird sie beim Benutzen der Optimierung wegen nicht erneut aus dem RAM ausgelesen (da sie sich in dem aktuellen Ablaufstrang ja nicht geändert haben kann).