#arduino #rtos
#arduino #rtos
Вопрос:
У меня есть программа RTOS, работающая на Arduino Uno с Atmel Studio
Я добавил прерывание для срабатывания при нажатии переключателя . Прерывание настроено на срабатывание на низком уровне
Внутри ISR у меня есть строка кода для переключения светодиода на плате Arduino
Когда я нажимаю на переключатель, я ожидаю увидеть светодиодный переключатель .
Когда я нажимаю кнопку, индикатор не переключается, когда запущен планировщик RTOS
Я отключил планировщик RTOS
Затем я попробовал еще раз
Теперь светодиод переключается правильно .
Я попытался изменить прерывание, чтобы оно срабатывало на низком уровне, а не на отрицательном . И результат тот же самый . Светодиод не переключается .
В чем причина проблемы ? Как я могу заставить прерывание работать правильно, когда запущен планировщик
Заранее благодарю вас !!
Комментарии:
1. Я переключаю светодиод внутри переключателя ISR . Нужно ли мне делать это вместо этого внутри задачи, когда запущен планировщик RTOS ? В этом ли проблема ? Задача создается и приостанавливается при запуске . Затем ISR возобновляет выполнение задачи по переключению светодиода . Затем задача приостанавливается при повторном запуске и ожидает, пока прерывание не возобновит ее снова . Таким образом, задача выполняется только один раз
2. Я тщательно исследовал этот вопрос . Я не смог найти информацию, объясняющую эту проблему . Позже я добавил код для переключения переменной в ISR . Это работает. Мне интересно узнать, когда светодиод не будет переключаться .