hk007:
Aber du meinst, es wäre wichtig, beim Zugriff auf die "pulses"-Variable die Interrupts zu disablen, damit ich nicht zufällig beim Schreiben der long-Variable einen Interrupt bekomme und dann die Variable "verbogen" ist?
Was ist schon wichtig? Wenn du es nicht machst, wird nur sehr, sehr selten ein Fehler auftreten. Und wenn du das Ergebnis nur irgendwo anzeigst, wird das "nie" jemand merken.
In der Automatisierungstechnik sind allerdings Fehler, die ganz sporadisch auftreten und nicht reproduziert werden können, sehr unangenehm.
Das ist die 2 Machinenbefehle sei
und cli
, die zusätzlich erzeugt werden, immer wert.
"volatile" ist ein anderer Fall: das sagt dem Compiler nur, dass die Variable sich irgendwie ändern kann, obwohl der Compiler nichts davon weiss.
Nimm an, dein Interrupt-Handler ist in einer anderen Datei, die separat übersetzt wird:
pulses++; // könnte einfach weggelassen werden, weil es nie gelesen wird ;)
oder der Compiler meint, die Variable braucht er nicht aus dem RAM zu laden, weil er sie noch in einem Register hat ...
Nachdem du die 8 Buchstaben einmal eingetippt hast, ist alles klar: kein zusätzlicher Code, der eigentlich nicht gebraucht wird, aber auch keine falsche Optimierung.
Evtl. noch untersetzen, falls es zu wenig Impulse sind.
Ja. Hängt alles auch davon ab, was ein Puls bedeutet, ab wann du 0 anzeigen willst, und wie du möglichst ohne float Division auskommst.