Как измерить скорость выполнения функции Arduino?

Мне нужно определить скорость, с которой Arduino выполняет определенную функцию.

какое было бы лучшее время для этого? До сих пор я нашел что-то с классом секундомера, но мне интересно, есть ли какой-либо собственный метод для этого.

2 ответов


простой способ-использовать millis() или micros() функция в библиотеке Arduino. У вас будет более тонкий результат зерна с micros().

например:

unsigned long start = micros();
// Call to your function
myFunction();
// Compute the time it took
unsigned long end = micros();
unsigned long delta = end - start;
Serial.println(delta)

внимательно прочитайте документацию micros(): есть некоторая информация о временном разрешении.


наименее навязчивый способ-установить штырь порта высоким перед вызовом функции и низким после этого. Поместите осциллограф на штырь порта и измерьте время.

Это также может дать вам хорошее качественное представление о изменчивости времени выполнения, запустив на восходящем крае и наблюдая дрожание на падающем крае.