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

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

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

Ответ 1

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

Ответ 2

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

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