Реализую псевдо реальное время.
Понадобилось контролировать время выполнения плат - благодаря этому очень много тормозов в разных устройствах удалось вытащить.
1) В частности:
блог сложения строк очень медленный - возможно из-за использования библиотечной функции String
2) Очень медленный (>10 mc) вывод на LCD (у меня через i2c)
3) тормозит блок датчика SR04 из-за использования функции pulseIn() - она ждет отклика от датчика, а программа висит
4) и т.п.
Для измерения времени работы платы приходиться прибегать к хитростям - запоминаю время в начале платы и в следующей плате запоминаю время исполнения.
В конце этой же платы запоминать не удается, так как блоки на плате выполняются не в той последовательности как они нарисованы.
Пример в файле.
Если бы появился блок на выходе которого можно было бы принять время выполнения задачи, а еще бы не плохо период вызова платы - очень облегчило бы разработку систем чувствительных к реальном времени.
Без автора такой блок сделать не представляется возможным.
Спасибо.
Вычисление времени работы платы
Вычисление времени работы платы
Когда мне нужно было измерять время выполнения программы (платы) я в начале выполнения устанавливал 0 на дискретном выходе, а в конце выполнения 1 на нем же и измерял длительность импульса осциллографом. Такой вот олд скулл. 

- Rovki
- Полковник
- Сообщения: 5726
- Зарегистрирован: 22 апр 2016, 17:25
- Откуда: Чехов
- Имя: Анатолий
- Благодарил (а): 68 раз
- Поблагодарили: 222 раза
- Контактная информация:
Вычисление времени работы платы
Длительность 1 импульса генератора сделанного на 1 инверторе с обратной связью равна циклу программы .Ставим счетчик на 1000 и формируем по окончании счета импульс длительностью 0,5сек ,чтобы был виден на 13 пине .Измеряем время счета 1000 импульсов и делим в уме на 1000 -получаем длительность периода = 1имп+1пауза .Для большей точности можно считать 10000 имп. ...
Электронщик до мозга костей и не только
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость