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