Страница 1 из 1

Вычисление времени работы платы

Добавлено: 09 май 2017, 08:50
ecoins
Реализую псевдо реальное время.
Понадобилось контролировать время выполнения плат - благодаря этому очень много тормозов в разных устройствах удалось вытащить. 

1) В частности:
       блог сложения строк очень медленный - возможно     из-за использования библиотечной функции String
2) Очень медленный (>10 mc) вывод на LCD (у меня через i2c)
3) тормозит блок  датчика SR04 из-за использования функции pulseIn() - она ждет отклика от датчика, а программа висит
4) и т.п.

Для измерения времени работы платы приходиться прибегать к хитростям - запоминаю время в начале платы и в следующей плате запоминаю время исполнения.
В конце этой же платы запоминать не удается, так как блоки на плате выполняются не в той последовательности как они нарисованы.
 Пример в файле.

Если бы появился блок на выходе которого можно было бы принять время выполнения задачи, а еще бы не плохо период вызова платы - очень облегчило бы разработку систем чувствительных к реальном времени.

Без автора такой блок сделать не представляется возможным.
Спасибо.

Вычисление времени работы платы

Добавлено: 06 май 2018, 12:58
Axelforce
Когда мне нужно было измерять время выполнения программы (платы) я в начале выполнения устанавливал 0 на дискретном выходе, а в конце выполнения 1 на нем же и измерял длительность импульса осциллографом. Такой вот олд скулл. :ohyes:

Вычисление времени работы платы

Добавлено: 06 май 2018, 13:25
Rovki
Длительность 1 импульса генератора сделанного на 1 инверторе с обратной связью равна циклу программы .Ставим счетчик на 1000 и формируем по окончании счета импульс длительностью 0,5сек ,чтобы был виден на 13 пине .Измеряем время счета 1000 импульсов и делим в уме на 1000 -получаем длительность периода = 1имп+1пауза .Для большей точности можно считать 10000 имп. ...