Du sprichst vom Atomaren Datenzugriff.
Ja genau! Hier hatte ich darüber gelesen: https://www.arduino.cc/referen…ope--qualifiers/volatile/
Theoretisch hast du natürlich recht. Praktisch ist es im Rundenzähler Beispiel vom Programmablauf aber so, dass der kritische Code ja nur einmal ausgeführt wird, wenn kürzlich der dazu gehörige Interrupt ausgelöst wurde.
Das verstehe ich nicht ganz. Denn das trifft zwar für die Variablen timestampx, nicht aber für die Integer-Variablen eventx zu. eventx wird in loop() permanent gelesen und geprüft. Da ist es doch nicht auszuschließen, dass die ISR just in dem Moment dazwischen funkt. Oder mache ich da einen Denkfehler?
Die Zeitspanne liegt im konkreten Fall bei 40 - 48µS
Interessant! Kannst du mir sagen, wie ich die Laufzeit der ISR feststellen kann? Man müsste doch den vom Compiler erzeugten Assemblercode kennen und dann die benötigten Takte zusammenzählen. Ist das aus irgendeiner Datei nach dem Compilieren ersichtlich? Vielleicht hast du einen Link, wo ich das nachlesen kann. Das wäre super!
Gruß,
RCfreund