Ich habs jetzt zwar nicht selbst getestet und auch nichts im Internet auf die Schnelle zu volatile gefunden, aber ich habe die Vermutung, das volatile immer nur für die folgende Variable gilt. In allen Beispielen wird jede Variable separat als volatile deklariert. Dann würde das bedeuten, dass start gar nicht von den Registern fern gehalten wird und deshalb im Hauptprogramm der Status nicht aktuell ist. Außerdem sollte eine ISR so kurz wie möglich sein. Besonders UART Sendungen verlängern die ISR Abarbeitung unverhältnismäßig. Rein Interessehalber wäre es interessant, die Variable start einmal so stehen zu lassen, aber dafür die UART Sachen in das Hauptprogramm auszulagern und damit zu sehen, ob sich start verändert. Wenn nicht, dann spendiere der Variable ein eigenes volatile Schlüsselwort.

sast