Вот не вижу никакой проблемы обрабатывать кнопки в задаче. Оно работает нормально. С энкодером ситуация другая, его лучше подключать к таймеру если это STM, результаты так же вполне нормально обрабатываются в потоке RTOS.

Комментарии: 13

  1. Aleksandr

    А если надо усыпить процессор?

  2. Anonim

    >в отдельном потоке с высоким приоритетом

    • Aleksandr

      и пробудить по кнопке, например?

      • Anonim

        отлично, пусть ядро молотит по-максимуму

        • Anton

          Это уже совсем другая задача, которой изначально в вопросе небыло :) Почему оно должно молотить по - максимуму, задача исполняется допустим с частотой 100Гц, этого более чем достаточно, чтобы обрабатывать нажатия кнопок. У меня в рабочем проекте около 60 кнопок, многие из них вообще не возможно обрабатывать по прерыванию... все работает прекрасно :)

          • Anonim

            В freertos почитай про функции FromISR зачем молотить даже по 100гц, если вполне можно не молотить? и механизмы для "не молотить" встроены в OS

            • Aleksandr

              Спасибо. Это мне ещё рано. Я это придумал, только чтобы продемонстрировать невозможность задачи с высоким приоритетом в некоторых случаях.

              • Anonim

                Я не про просыпание, я в целом про твой вопрос FromISR это функции для обмена данными из прерывания в задачи семафоры, очереди

                • Aleksandr

                  Про очереди сам думал, но мне кажется, что оно не совсем то, что нужно.

                  • Anonim

                    почему?

                    • Aleksandr

                      Да фиг знает. Читать надо подробнее.

                  • Anonim

                    там ещё нотификации, стримы, сообщения есть но всё равно всё упирается в глобальную переменную и в примерах у них именно через глобальную всё решается

            • Anton

              Как я уже сказал, не всегда возможно обрабатывать по прерыванию, мне вот состояния кнопок вообще приходят по SPI от рядом стоящей ПЛИС. Опрос клавиатуры в задаче универсален и работает нормально. К тому же поток обработки клавиатуры исполняется очень быстро и засыпает.

Не нашли ответ?

Вам также может быть интересно