Почему прерывание не запускается при запуске планировщика RTOS

#arduino #rtos

#arduino #rtos

Вопрос:

У меня есть программа RTOS, работающая на Arduino Uno с Atmel Studio

Я добавил прерывание для срабатывания при нажатии переключателя . Прерывание настроено на срабатывание на низком уровне

Внутри ISR у меня есть строка кода для переключения светодиода на плате Arduino

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

Когда я нажимаю кнопку, индикатор не переключается, когда запущен планировщик RTOS

Я отключил планировщик RTOS

Затем я попробовал еще раз

Теперь светодиод переключается правильно .

Я попытался изменить прерывание, чтобы оно срабатывало на низком уровне, а не на отрицательном . И результат тот же самый . Светодиод не переключается .

В чем причина проблемы ? Как я могу заставить прерывание работать правильно, когда запущен планировщик

Заранее благодарю вас !!

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

1. Я переключаю светодиод внутри переключателя ISR . Нужно ли мне делать это вместо этого внутри задачи, когда запущен планировщик RTOS ? В этом ли проблема ? Задача создается и приостанавливается при запуске . Затем ISR возобновляет выполнение задачи по переключению светодиода . Затем задача приостанавливается при повторном запуске и ожидает, пока прерывание не возобновит ее снова . Таким образом, задача выполняется только один раз

2. Я тщательно исследовал этот вопрос . Я не смог найти информацию, объясняющую эту проблему . Позже я добавил код для переключения переменной в ISR . Это работает. Мне интересно узнать, когда светодиод не будет переключаться .