Програмні переривання можуть використовуватися для завершення завдання переривання з нижчим пріоритетом. Критичному коду часу часто надається високий пріоритет переривання, щоб уникнути занадто великої затримки. Після завершення критичної частини синхронізації можуть виникнути додаткові завдання, які можуть бути занадто критичними для основного циклу, але не настільки критичні, щоб затримувати інші переривання з високим пріоритетом. Ініціювання переривання програмного забезпечення з нижчим пріоритетом може досягти цього.
Наприклад, припустимо, що у вас є кілька крокових двигунів, кожен з яких має свій таймер. Тимчасові переривання мають високий пріоритет, щоб мінімізувати тремтіння кроків. Найважливіше завдання, яке займається тимчасовим завданням, може бути таким же простим, як встановлення чи очищення крокового імпульсу або просування фазових виходів. Можливо, потрібні додаткові функціональні можливості, такі як обчислення пандусів прискорення, обробка датчиків і т. Д. Оскільки це потрібно обробляти на кожному кроці, обробляти це з main () може не доцільно, оскільки час основного циклу може бути занадто довгим. Ці додаткові завдання можуть бути оброблені перериванням програмного забезпечення з нижчим пріоритетом, щоб не збільшити затримку інших крокових каналів з високим пріоритетом.
У чому різниця між програмним перериванням і функцією?
Функція отримує виклик негайно звідки, де вона викликана, і не змінює поточний рівень пріоритету переривання, якщо викликається з переривання. Програмне забезпечення переривання - це тригер переривання, який спричинить виклик цього переривання, коли з'явиться його пріоритет. Якби виклик функції було вставлено в кінці переривання з високим пріоритетом, функція містилася б у межах цього високого пріоритету. Запускаючи переривання програмного забезпечення з нижчим пріоритетом, а потім повертаючись від переривання з високим пріоритетом, функціональність викликається новим (нижчим) пріоритетом.