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

Задача управления двигателем пропускает дедлайн, пока работает сетевой стек

Три задачи: ctrl (приоритет 4, период 5 мс), net (приоритет 3, долгая обработка пакетов) и storage (приоритет 1). ctrl и storage делят шину SPI, защищённую так:

spi_lock = xSemaphoreCreateBinary();
xSemaphoreGive(spi_lock);

Трассировка показывает: storage взяла spi_lock, её вытеснила net, и ctrl ждёт шину по 40–60 мс. Что исправить?

  • Защищать шину мьютексом, а не двоичным семафором
  • Понизить приоритет ctrl до уровня storage
  • Брать семафор с таймаутом вместо portMAX_DELAY
  • Перенести обработку сети в прерывание

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

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

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

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