-
- Там ниже еще LightElf пример привел, связанный с приоритетами. Все,
теперь врубился до конца. Но текущий приоритет можно снизить
(наверное) в NVIC. Если так, то можно обойтись без программных
прерываний (подпрограммами). Можно, но сложно :-) - il-2(Сегодня, 07:01)
- Возможно, существуют задачи, где без "программных прерываний" не
обойтись, но я сходу таковых придумать не смог. - Eddy_Em(Сегодня, 09:48)
- Отлично! Значит, тебе удаётся так продумать структуру программы и
разделить её на куски, что защищать секции выполнения поднятием
приоритета не приходится. - Nikolay_Po(Сегодня, 11:19)
- Ну так у меня в случаях, где нужна реакция в пределах миллисекунды,
обычно один прогон суперлупа длится куда меньше. Eddy_Em(363 знак., Сегодня, 11:57)
- А у меня требуется реакция не дольше чем за 20мкс по паре интерфейсов сразу. Обработка блока данных - намного дольше и должна быть приоритетнее кода пользовательского режима. В принципе, как предположил товарищ il-2, можно не выходя из текущего высокоприоритетного прерывания, после снятия флага запроса прерывания, понизить текущий приоритет выполнения кода, изменив значение BASEPRI и вызвать подпрограмму обработки. Nikolay_Po(69 знак., Сегодня, 13:02)
- Ну так у меня в случаях, где нужна реакция в пределах миллисекунды,
обычно один прогон суперлупа длится куда меньше. Eddy_Em(363 знак., Сегодня, 11:57)
- Отлично! Значит, тебе удаётся так продумать структуру программы и
разделить её на куски, что защищать секции выполнения поднятием
приоритета не приходится. - Nikolay_Po(Сегодня, 11:19)
- Возможно, существуют задачи, где без "программных прерываний" не
обойтись, но я сходу таковых придумать не смог. - Eddy_Em(Сегодня, 09:48)
- Там ниже еще LightElf пример привел, связанный с приоритетами. Все,
теперь врубился до конца. Но текущий приоритет можно снизить
(наверное) в NVIC. Если так, то можно обойтись без программных
прерываний (подпрограммами). Можно, но сложно :-) - il-2(Сегодня, 07:01)