Правильно ли я понял, что для ОСРВ, прерывания полностью
блокируются сбросом бита MIE? И нет возможности разрешать не запрещать более приоритетные прерывания, не влияющие на задачи
и переключения контекста ОС? Я пробую не сбрасывать MIE, а устанавливать ITHRESDR. Но есть сложность - ITHRESDR - это регистр периферии и его не записать без использования РОН. А значит, нет способа заблокировать прерывания до порчи состояния.
Вижу такой компромиссный вариант: При входе в прерывание ОСРВ, сначала маскирую MIE без порчи регистров и стека. Затем, быстро сохраняю в стек пару РОН, необходимых для установки порога ITHRESDR. Устанавливаю порог приоритета ITHRESDR (на уровень прерываний API RTOS) и разрешаю MIE. Таким образом, обеспечивается максимально короткий промежуток, в течение которого прерывания полностью блокированы.
Прерывания с приоритетом выше прерываний ОСРВ, максимально быстро разблокируются и, так как они не связаны с ОС напрямую и не пользуются её программными стыками, работают без ограничений с минимальной латентностью. После переключения контекста, порог блокировки прерываний сбрасывается, восстанавливаются регистры и происходит выход из перерывания ОС как обычно.