Hallo achim S.
In dem link steht's doch genau drin:
Volatile Variablen
Variablen, auf die sowohl innerhalb wie auch außerhalb einer Interruptserviceroutine zugegriffen wird (schreibend oder lesend), müssen (ähnlich wie Hardwareregister) mit dem Schlüsselwort volatile (flüchtig) versehen werden, damit der C-Compiler berücksichtigen kann, dass diese Variablen jederzeit (durch das Auftreten des Interrupts) gelesen oder geschrieben werden können. Ansonsten würde der C-Compiler das regelmäßige Abfragen oder Beschreiben dieser Variablen ggf. wegoptimieren, da er nicht damit rechnet, dass auf die Variable auch "ohne sein Zutun" zugegriffen wird.
Eine ausführlichere Erklärung zu "volatile" ist hier zu finden: FAQ: Was hat es mit volatile auf sich
Ganz wichtig ist auch bei dem Artikel über die Interrupts der Punkt
Interruptfeste Programmierung
Die Antwort auf Deine Frage -
- Du mußt also wait10 als "volatile" deklarieren
- in der main bei der Verarbeitung von wait10 die Interrupts sichern, sperren und wieder freigeben...
Egon