AFAIK из прошлого опыта других процессоров, вы теряете прерывание.
В таком случае перед очисткой флага прерывания 1:
- просто прочитайте бит флага прерывания 1 и временно сохранить его
- очистить флаг прерывания (в некоторых процессорах, читающих его, сбрасывает его автоматически)
- в конце прерывания 2 проверьте сохраненный бит
- , если он не установлен, просто оставьте процедуру прерывания 2
- , если она установлена и оба прерывания имеют одинаковый приоритет (или это не имеет значения!):
- просто перейдите / вызовите другую процедуру прерывания 1 ( "остаться" при выполнении подпрограммы прерывания 2)
- если оно установлено и прерывание 1 имеет другой приоритет, и вам действительно нужно назначить ему правильный:
- тогда становится сложно, вот несколько вариантов:
- как только я заставил процессор запустить другое неиспользуемое прерывание 3 с таким же приоритетом, как прерывание 1, поэтому использование прерывания 3 для выполнения подпрограммы «прерывание 1»
- построить обработка приоритета прерывания в коде, насколько это необходимо и возможно, используя описанный выше трюк и многое другое ...
PS : Это должно быть описано в руководстве процессора, приведет ли сброс бита прерывания к потере его выполнения - в основном да, бит прерывания - это просто бит "ожидания прерывания". Иногда найти описание непросто, но повседневные дела.