Как измерить скорость выполнения функции 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()
: есть некоторая информация о временном разрешении.
Наименее навязчивый способ - установить высокий уровень порта перед вызовом функции и низкий уровень после. Поместите осциллограф на штырек порта и измерьте время.
Это также может дать вам хорошее качественное представление об изменчивости времени выполнения путем запуска по переднему фронту и наблюдения за дрожанием на заднем фронте.