-         

Ergebnis 1 bis 3 von 3

Thema: ARDUINO: Zeitmessung, wo liegt hier der Fehler?

  1. #1
    Benutzer Stammmitglied Avatar von PlasmaTubeI²C
    Registriert seit
    19.03.2013
    Ort
    Nürnberg
    Alter
    21
    Beiträge
    78

    ARDUINO: Zeitmessung, wo liegt hier der Fehler?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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:
    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);
    }
    Der Code ist so einfach, da kann man eigentlich keinen Fehler übersehen, aber trotzdem läuft es nicht wie gewünscht!
    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?
    Gruß, Stefan. Rechtschreibfehler gefunden? Kannste behalten!

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.401
    Zitat Zitat von PlasmaTubeI²C Beitrag anzeigen
    .... 116ns * 1000, wegen der Schleife...
    Dein ARDUINO ist ja ganz schön schnell: in 116ns eine Funktion aufrufen, den ADC starten, wandeln lassen, auslesen, aus der Funtion zurück, Wert ins Array und der restliche Loop-Overhead. Wie schnell taktet er?

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  3. #3
    Benutzer Stammmitglied Avatar von PlasmaTubeI²C
    Registriert seit
    19.03.2013
    Ort
    Nürnberg
    Alter
    21
    Beiträge
    78
    Hm das dürften so um die 1,6Ghz sein. Selbstverständlich wassergekühlt. Ne Spaß beiseite, ich mein natürlich schon µs...
    Gruß, Stefan. Rechtschreibfehler gefunden? Kannste behalten!

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 23.09.2008, 18:25
  2. Antworten: 14
    Letzter Beitrag: 31.12.2007, 16:24
  3. Wo liegt der Fehler?
    Von julien im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 22
    Letzter Beitrag: 07.03.2007, 21:33
  4. Robby kaputt, oder wo liegt der Fehler ?
    Von DeepS im Forum Robby CCRP5
    Antworten: 16
    Letzter Beitrag: 12.03.2005, 14:40
  5. Wo liegt der Fehler?
    Von Matthias im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 6
    Letzter Beitrag: 27.12.2003, 10:45

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •