Hallo,
ich habe folgenden Testcode für den Arduino Uno.
Ich will wissen, wieviel Zeit der BefehlsblockCode:void setup() { Serial.begin(115200); while(!Serial){} pinMode(3,INPUT); } void loop() { int a = micros(); int c = digitalRead(3); delayMicroseconds(1); int b = micros(); b=(b-a)*4; Serial.println(b); delay(2000); }in Anspruch nimmt. Ich erhalte eine Ausgabe, die sehr wechselhaft ist:Code:int c = digitalRead(3); delayMicroseconds(1);So weit ich das verstanden habe ist es doch auf dem UNO so, das micros() ein Vielfaches von 4 zurückgibt. Also multipliziere ich das Ergebnis mit 4. Dennoch braucht er einmal dann die doppelte Zeit zur Ausführung des Befehlsblocks? Ich denke:Code:32 16 16 32 16 32 16 16 32 16 16 16 32 16 32 16
- dass der Controller hier entweder zwischendurch dann was anderes macht, was Zeit benötigt
- der Mikrosekundenzähler eine relative Abweichung hat
Vielleicht weiß jemand besser darüber bescheid und kann mal eine Erläuterung dazu geben, was diese Schwankungen hervorruft?
Gruß, Moppi







Zitieren

Lesezeichen