Programm Zeit auslesen

Hi,

ich möchte auslesen wie lange der Arduino braucht um ein Programm auszuführen wie kann man das machen ??

MaximilianGrohmann:
Hi,

ich möchte auslesen wie lange der Arduino braucht um ein Programm auszuführen wie kann man das machen ??

Was für ein Programm?

Üblicherweise führt ein Arduino das hochgdeladene Programm immer vom Einschalten (power-on) bis zum Ausschalten (power-off) aus.

Meinst Du etwas anderes? Wenn ja, was meinst Du überhaupt genau?

Zum Auslesen von Zeiten gibt es im übrigen die Funktionen micros() und millis(), die sind Dir bekannt, ja?

Miss, wie lange eine fast leere loop() für 1.000.000 Durchläufe braucht. Dann bau eine Version, die ausserdem dein "Programm" ausführt, und vergleiche.

void setup() {}

unsigned long zaehler = 1000000; // 1 Million um vernünftige Zeiten zu erhalten
void loop() {
  if (zaehler-- > 0) {
    // Dein Code später hier
  } else {
    // Auswertung
    unsigned long stoptime = millis();
    Serial.begin(9600);
    Serial.print ("Leerer Sketch: "); 
    Serial.print(stoptime / 1000.0);  // als float Zahl
    Serial.println(" MicroSekunden je loop - Umlauf");

    while (1) {} // Stop, Reset erforderlich für einen neuen Test
  }
}

Vielen Dank

Hallo,

rein zufällig existiert dafür schon was. Rufste irgendwo in der loop einmal mit auf. Anfang, Ende egal.

/**************************************************
** GuntherB                                      **
** Funktion um die Loopaufrufzeiten zu ermitteln **
** wird in der Loop aufgerufen                   **
** benötigt ca (AL * 4 + 10 )Byte RAM            **
***************************************************/
void LoopTiming(){
  const unsigned int AL = 100; // Arraylänge
  static unsigned long Timestamp[AL];
  static unsigned int Nr = 0, Min=0xFFFF, Max, Avg = 0;
  Timestamp[Nr++]=millis();
  if (Nr >= AL){  // Array voll, Daten auswerten
     for (unsigned int i = 1; i<AL; i++){
      Max = max(Max, Timestamp[i]-Timestamp[i-1]);
      Min = min(Min, Timestamp[i]-Timestamp[i-1]);
      Avg += Timestamp[i]-Timestamp[i-1];
    }
    Avg = Avg / (AL-1);
    Serial.println(F("Loop wird aufgerufen "));
    Serial.print(F("Durchschnitt "));Serial.print(Avg);Serial.println("ms");
    Serial.print(F("minimal      "));Serial.print(Min);Serial.println("ms");
    Serial.print(F("maximal      "));Serial.print(Max);Serial.println("ms");
    Min = 0xFFFF;
    Max = 0;
    Avg = 0;
    Nr = 0;
  }
}