Как измерить скорость выполнения функции 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(): есть некоторая информация о временном разрешении.

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

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

Другие вопросы по тегам