AG
Все записи

#️⃣1️⃣ Jitter

2 min read
Embeddedjitterреальное время

#️⃣1️⃣** Jitter

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

Пример джиттера изображëн на схеме. Здесь объём работы должен быть выполнен в течение каждых 10 мс. Хотя все сроки соблюдены, существует значительный разброс во времени между запусками задачи. Для систем, требующих более точного начала или завершения работы в пределах 10 мс, это недопустимо.

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

**❓**Как обнаружить
1️⃣ Заведите скоростной таймер (или таймер системного времени) и массив счетчиков для каждой ключевой функции.
2️⃣ Считайте гистограмму или среднее отклонение времени начала выполнения и времени выполнения с хранением одного значения по формуле:

M(n) = M(n-1) + ((t(n) - t(n-1)) - M(n-1)) / n

✳️ M - среднее отклонение, t - время (значение таймера), n - итерация.

3️⃣ В другом потоке, с комфортной для вас частотой, печатайте значение в отладочный вывод.

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

Решение
1️⃣ Проверьте ISR(Interrupt Service Routine) (если это bare metal), для критических задач приоритет должен быть выше. Проверьте приоритеты задач (если RTOS(Real-Time Operating System)).
2️⃣ Вынесите обработчик из ISR и синхронизируйте данные при помощи FIFO или кольцевых буферов.
3️⃣ Проведите ревью кода, убрав рекурсивные вызовы и нерегулярные циклы.
4️⃣ Снижайте количество зависимостей от сторонних библиотек (например, printf).

Ставьте 👍🏻, если материал был полезен. Наберём 15 и больше - сделаю пример в коде 🎁

#IT #кейсы #embedded