Время выполнения команды digitalWrite

RANDREY
Offline
Зарегистрирован: 10.06.2012

Приветствую!

Как раcсчитать время выполнения команды, для точного выставления времени delayMicroseconds?

Помнится digitalWrite тормозит из-за высокой прослойки, нужно некая последовательность не длинее 70 ms в цикле loop^а.

плата MEGA

 

s==10;
v==7;

void loop() {
digitalWrite(s, LOW); //
digitalWrite(v, LOW);
delayMicroseconds(4);

digitalWrite(s, LOW); //
digitalWrite(v, HIGH);
delayMicroseconds(8);

....
}

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

У вас есть millis() и micros(). вот и меряйте. Сохранили значение millis() в перемнной, сделали вывод на ногу. И еще раз прочитали millis(). Разница и есть длительность операции.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Если Вы ногодрыг задумали, не используйте digitalWrite(). Обращайтесь к портам напрямую, через регистры. Будет быстрей.