Вступить в клуб →
средняявопросFreeRTOS: задачи, очереди и синхронизация

Опрос датчика раз в 100 мс на деле идёт с периодом 115–130 мс

for (;;) {
    sample_and_filter();              /* 15–30 мс */
    vTaskDelay(pdMS_TO_TICKS(100));
}

Цифровой фильтр рассчитан на частоту дискретизации ровно 10 Гц, но период «гуляет» и в среднем больше 100 мс. Как получить стабильный период?

  • Использовать xTaskDelayUntil от прошлого пробуждения
  • Уменьшить задержку до 80 мс, чтобы компенсировать
  • Поднять приоритет задачи до максимального
  • Вызывать taskYIELD() вместо vTaskDelay

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела