So,
wollte grade eben nur mal kurz die Zeit messen, die ein Arduino braucht um einen analogen Pin auszulesen und den Wert in ner Variable zu speichern.
Soweit so gut. Dachte ich zumindest. Aber erstmal der Code:
Der Code ist so einfach, da kann man eigentlich keinen Fehler übersehen, aber trotzdem läuft es nicht wie gewünscht!Code:#define SensorRead 0 // Define the Analog Pin to read int array[1000]; long time; //start time void setup() { Serial.begin(9600); //Open the Serial Port with baudrate set to 9600 } void loop() { time = millis(); for(int i = 0; i <= 1000; i++){ array[i] = analogRead(A0); } time = millis() - time; Serial.println(time); delay(100); }
Wenn ich den Seriellen Port auslese, bekomme ich nur steigende Werte und zwar pro Sekunde um 1000 (macht ja Sinn, da millis() in Millisekunden misst).
Aber direkt nach der for-Schleife wird doch die Aktuelle Programmlaufzeit von dem Zeitpunkt des Startens der for-Schleife abgezogen, was ja eigentlich
die Laufzeit der Schleife selbst ergeben müsste!
Tausche ich hingegen die beiden "millis()" gegen "micros()" aus, wodurch jetzt die Laufzeit in Mikrosekunden statt Millisekunden gemessen wird,
wird exakt die Zeit ausgegeben, die die for-Schleife braucht. Irgendwas mit 116.000ns, was mit der Zeit, die ein analoger Pin zum auslesen braucht (116ns * 1000, wegen der Schleife), übereinstimmt.
Warum geht das mit millis() nicht? Ich meine so schlimm ist das jetzt auch nicht, würde aber schon gerne
wissen was da genau falsch läuft, bzw. wo der Fehler liegt, oder habe ich was ganz banales übersehen?
Lesezeichen