Введение
Когда речь заходит об операционных системах реального времени (ОСРВ), наша команда часто сталкивается с вопросом: «А какая задержка обработки прерываний?» Скажем сразу – время реакции на событие в ОСРВ – это не единственная и не самая важная характеристика операционных систем. Тем не менее мы попробуем разобраться со столь частым вопросом путём проведения эксперимента на отечественном оборудовании.
Стенд для проведения эксперимента
В целях проверки мы остановились на отечественном микроконтроллере К1986ВЕ92FI (маркировка на корпусе MDR1211FI), выпускаемом АО «ПКК Миландр». Данный микроконтроллер применяется в различных платформах и на отладочных платах российских разработчиков. Наша команда выбрала плату MDR32 Miluino (рис. 1), так как она обеспечивает основные технические характеристики, необходимые для проведения эксперимента.

Для обеспечения быстрого старта работы с ОСРВ на микроконтроллерах принято решение использовать конфигуратор для встраиваемых систем FX-Designer и ОСРВ FXRTOS.
Один из таймеров с ШИМ-выходом выберем в качестве источника прерываний. В целях оценки задержки вызова обработчика прерывания будем в нём формировать сигнал на другой свободный вывод. Для измерения задержки используем осциллограф. Сразу отметим, что обращение к периферии микроконтроллера из прерывания не совсем корректно, так как это может вступить в конфликт с другими операциями обращения к тем же периферийным модулям в основной программе. Следует отметить, что такая ситуация может привести к непредсказуемому поведению устройства в целом. Но в данном случае мы это учитываем и предполагаем, что обращение из основной программы к одному и тому же периферийному модулю микроконтроллера исключено.
Настройка периферии микроконтроллера
В целях выполнения эксперимента проведём ряд настроек микроконтроллера и платы MDR32 Miluino в конфигураторе FX-Designer.
- Для генерации выходного сигнала используем таймер TMR3, он же в нашем случае будет являться источником прерываний. В конфигураторе включаем таймер «MDR_TMR3», и в его настройках включаем для канала № 3 режим работы «ШИМ В» – ШИМ с прямым выходом на вывод микроконтроллера, в данном случае автоматически назначается вывод PB5 (рис. 2).

- Частоту тактирования ядра микроконтроллера поднимаем до максимальной – 80 МГц. Для этого на вкладке «Тактирование» (рис. 3) указываем частоту внешнего кварцевого резонатора и переключаем мультиплексоры CPU_C1_SEL и CPU_C2_SEL так, чтобы частота с выхода внешнего генератора HSE прошла через PLL, в котором указываем множитель x5. После этого переключаем мультиплексор HCLK_SEL на PLL, чтобы он использовался как источник тактирования для HCLK.

- Назначенные ранее выводы микроконтроллера отображаются на разъёме XP2 отладочной платы MDR32 Miluino (рис. 4): выход таймера (вывод PB5) и выход сигнала INT_WORK (вывод PB6).

- После генерации исходного кода проекта добавляем код в обработчик прерывания. В начале обработчика прерывания выставляем «1» на вывод INT_WORK, после сбрасываем флаг прерывания, чтобы избежать повторного вызова, и выставляем «0» на вывод INT_WORK (рис. 5).

После этого подключаем осциллограф к выводам микроконтроллера PB5 и PB6. На выводе PB5 наблюдаем периодический сигнал запроса на прерывание. На выводе INT_WORK (PB6) наблюдаем короткие импульсы, передний фронт которых означает начало выполнения пользовательского кода в обработчике прерывания. Далее измерим задержки между прерыванием и началом выполнения пользовательского кода в самом прерывании.
Результаты измерений
Вариант № 1 – проверка задержки прерывания без ОСРВ (рис. 6)

Осциллограмма в режиме накопления – захватывается большое количество сигналов для визуализации возможного джиттера. Синий график – источник прерывания, по нему включена синхронизация захвата сигнала. Красный график – сигнал INT_WORK.
На основании полученного графика определяем минимальную и максимальную задержки обработки прерывания: 1,029 мкс и 1,13 мкс соответственно.
Вариант № 2 – подключаем ОСРВ FX-RTOS для проверки задержки (рис. 7)

Проводим повторную генерацию исходного кода проекта и проверяем изменения в задержке обработки прерывания (рис. 8).

При работе прерываний под управлением ОСРВ добавилась небольшая задержка. Минимальная задержка составляет 1,844 мкс, а максимальная – 1,875 мкс. На основании вышеуказанного можно сделать следующий предварительный вывод: применение ОСРВ может добавить задержку обработки прерываний 0,8 мкс относительно задержки без ОСРВ.
Если в прерывании не используются функции ОСРВ, то его можно обрабатывать, как и в варианте № 1. Но в этом случае прерывание может происходить на стеке любых потоков, что необходимо учитывать при разработке встраиваемого программного обеспечения.
Заключение
В результате проведённого эксперимента получены максимальная и минимальная задержки реакции на прерывание. Важно понимать, что данные характеристики не являются исчерпывающими для корректной оценки параметров конечного изделия, хоть и позволяют сформировать представление о требованиях, которым оно может соответствовать. На практике необходимо учитывать и ряд других параметров, например, таких как максимальная частота прерываний, при которой не происходит пропусков событий, средняя и медианная задержки, а также их изменение при работе под нагрузкой.
© СТА-ПРЕСС, 2026
Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!

