Создание подпрограмм прерывания (ISR) модуля Versa Eurocard (VME), выполняющих дочерние подсистемы или блоки синхронизации задач
Simulink Coder/Асинхронные/Шаблоны прерываний
Для каждого указанного уровня прерывания VME в примере RTOS (VxWorks ®) блок асинхронного прерывания генерирует подпрограмму обслуживания прерываний (ISR), которая вызывает одно из следующих действий :
Подсистема вызова функции
Блок синхронизации задач
Диаграмма Stateflow ®, настроенная для события ввода вызова функции
Примечание
Можно использовать блоки в vxlib1 (асинхронное прерывание и синхронизация задач) для моделирования и создания кода. Эти блоки содержат начальные примеры, помогающие разрабатывать пользовательские блоки для целевой среды.
Блок поддерживает прерывания VME с 1 по 7.
Блок использует следующие системные вызовы RTOS (VxWorks):
sysIntEnable |
sysIntDisable |
intConnect |
intLock |
intUnlock |
tickGet |
Выполнение больших подсистем на уровне прерываний может оказать значительное влияние на время отклика на прерывания для прерываний равного и более низкого приоритета в системе. Обычно лучше всего сохранять ISR как можно короче. Подключите только подсистемы вызова функций, содержащие несколько блоков, к блоку асинхронного прерывания.
Лучшим решением для больших подсистем является использование блока синхронизации задач для синхронизации выполнения подсистемы вызова функций с задачей RTOS. Поместите блок синхронизации задач между блоком асинхронного прерывания и подсистемой функционального вызова. Затем блок асинхронного прерывания использует блок синхронизации задач в качестве ISR. ISR освобождает семафор синхронизации (выполняет semGive) к задаче и немедленно возвращается с уровня прерывания. Пример RTOS (VxWorks) затем планирует и запускает задачу. См. описание блока синхронизации задач.