Типичный способ, что прерывания пропустили это когда первое появление прерывания не обслуживается до второго появления одного и того же источника прерываний. Когда вы не будете обслуживать первое появление достаточно быстро, вы пропустите последующее появление, потому что его нельзя отличить от первого появления. Нет очереди для стека множественных вхождений прерывания, поэтому вам необходимо обслуживать и очищать каждое прерывание до того, как это прерывание произойдет снова. (Обратите внимание, что разные источники прерываний могут быть отложены в одно и то же время и обслуживаться отдельно, потому что их можно различить. Это два вхождения одного и того же источника прерываний, которые могут вас пропустить.)
100% загрузка процессора не обязательно вызовите прерывания, но я думаю, что это может способствовать. Это может вызвать другие проблемы.
Многие микроконтроллеры включают в себя механизм приоритизации прерываний, который определяет, какие источники прерываний будут утверждаться, по каким другим прерываниям. Это зависит от одного микроконтроллера до следующего, поэтому вам нужно будет проверить лист данных вашего конкретного микроконтроллера.
Обновление: Итак, какие условия могут привести к тому, что прерывание не будет обслуживаться достаточно быстро? Если прерывания отключены слишком долго, прерывание может не обслуживаться достаточно быстро. Или, если обработчик прерываний с более высоким приоритетом занимает слишком много времени, прерывание с более низким приоритетом может не обслуживаться достаточно быстро.
Чтобы избежать этих ситуаций, не забудьте сократить периоды прерывания прерываний и процедуры обработки прерываний.
@UncleO: Я изменил «полностью обслуживаемый» на «обслуживаемый» в первом предложении. И я добавил обновление с причинами, по которым прерывание может не обслуживаться достаточно быстро. – kkrambo