Bitte lese dir meine Antwort auf den Post von Besserwessi nochmal durch.Nichtsdestotrotz kann ich mich mit der Aussage, dass es "einfach nur falsch" sei, nicht anfreunden. Die Ausdrucksweise ist sicher nicht wissenschaftlich korrekt, aber sie passt hier sehr wohl.
Es geht nicht darum, dass volatile zu verwenden ist, sondern um das warum.
Da steht, dass es möglich ist, dass eine veränderte globale Variable in einer Funktion nie (auch nicht am Ende) ins RAM zurück geschrieben wird, und daher die in der Funktion gemachte Veränderung verloren ist. Das ist so grundlegend falsch, dass ich mich beim besten Willen nicht mit "komisch beschrieben" oder "im Grundgedanke richtig" anfreunden kann.sonst werden die Werte am ende der ISR wahrscheinlich verworfen weil nie aus den Registern ins RAM kopiert.
Ja, so bin ich, ein fieser kleiner Besserwisser.Und nur auf den Sonderfällen rumzureiten, damit eine Aussage nicht als allgemeingültig stehen gelassen werden kann, ist gemein.
Natürlich kann man die Verallgemeinerung so stehen lassen, schließlich ist ein volatile zuviel bei weitem nicht so problematisch, wie ein volatile zuwenig. Ich wollte nur mal darauf hinweisen, dass es sich um eine vereinfachende Verallgemeinerung handelt, und nicht um eine unumstößliche Grundregel.
Er hat dem OP ja auch geholfen.Besserwessi wollte sicher nur helfen.
Nur wenn die Hilfe auch grundlegend falsche Aussagen beinhaltet, kann man die nicht einfach so stehen lassen, insbesondere wenn der Post hilfreich war. Beim Fragenden würde sich sonst festsetzen: das mit dem volatile hat geholfen, also stimmt wohl auch die Begründung.
MfG
Stefan
Lesezeichen