Переезд на FreeRTOS закончен

Всего получилось 15 задач.

И все эти задачи раньше приходилось реализовывать вручную, на стандартных костылях Arduino-style (функции tick(), «таймеры на millis()» и всё остальное, в результате чего код становился трудно читаемым).

С переходом на нормальные задачи код стал заметно проще. Всем ардуинщикам очень рекомендую по возможности перебираться на FreeRTOS. Благо, она есть для всего уже.

Рис. 1

Переезд на FreeRTOS закончен: 4 комментария

  1. А почему вообще было принято решение переписать на rtos (threads + queue)?
    Потому что параллельное чтение миди-файлов и нажатых кнопок выглядела некрасиво в `loop()`?
    Или там набегали погрешности времени например и ритм плавал?

    1. Потому что «самодельная многозадачность в Arduino-style» вынуждает код быть сложным для понимания.
      Изолированные задачи и реализуются проще, и читаются лучше.

      Ну и лично мне хотелось хорошенько разобраться в FreeRTOS.

      P.S. А за чтение кнопок и за проигрывание файлов сейчас отвечают разные контроллеры. Кнопки читает RP2040 расположенный на плате клавиатуры. И докладывает о клавиатурных событиях в центральный модуль, где работает другой RP2040.

      Вот они все 3:

      1. Ну да, в баяне самое дорогое — время разработчика! Затем печатные платы 😉
        И чтобы изолировать код, чтобы он был простой расширяемый, проще купить платки по 500р и перекидываться сообщениями.

    2. А вообще, я не собирался именно переписывать.
      Мне надо было с нуля написать прошивку для клавиатурного контроллера — и я это сделал под FreeRTOS.
      И после этого понял, что теперь уже не смогу мириться с «уродством» основной прошивки.

Добавить комментарий