Продукти

Прекъсвания (Interrupts) – вътрешна логика и приоритети

Прекъсвания (Interrupts) – вътрешна логика и приоритети
13 януари 2026

1. Въведение

Прекъсванията (Interrupts) са един от най-важните механизми в микроконтролерите и вградените системи. Те позволяват на процесора да реагира незабавно на външни или вътрешни събития, без да чака текущата програма да завърши.

В тази тема ще разгледаме:

  • Какво представляват прекъсванията;

  • Как работят вътрешно;

  • Как се определят приоритетите;

  • Как процесорът превключва между задачи;

  • Практически примери и реални приложения.

 

 

 

 

 

 

 

2. Какво е прекъсване (Interrupt)

Прекъсването е сигнал, който кара процесора временно да спре текущото изпълнение на програмата и да изпълни специална функция – ISR (Interrupt Service Routine).

Основна идея:

  • Процесорът изпълнява код;

  • Възниква събитие (бутон, таймер, UART и др.);

  • Процесорът спира текущия код;

  • Стартира ISR функцията;

  • След края ѝ се връща обратно.

 

 

3. Видове прекъсвания

3.1 Външни прекъсвания

  • Бутони;

  • Сензори;

  • Промяна на пин.

3.2 Вътрешни прекъсвания

  • Таймери;

  • UART;

  • ADC;

  • Watchdog.

3.3 Софтуерни прекъсвания

  • Генерирани от програма;

  • Използват се за тестове и RTOS.

 

 

4. Вътрешна логика на прекъсванията

4.1 Как процесорът разбира, че има прекъсване?

Всеки модул:

  • Има флаг (Interrupt Flag);

  • При събитие → флаг = 1;

  • Контролерът проверява:

    • Флаг активен?

    • Разрешено ли е прекъсването?

4.2 Глобално разрешаване

Процесорът има:

  • Глобален флаг (GIE);

  • Ако GIE = 0 → няма прекъсвания;

  • Ако GIE = 1 → приемат се;

 

 

5. Процес при възникване на прекъсване

Стъпка по стъпка:

  1. Процесорът завършва текущата инструкция;

  2. Проверява дали прекъсването е разрешено;

  3. Записва:

    • Program Counter;

    • Регистри.

  4. Прескача към ISR адрес;

  5. Изпълнява ISR функцията;

  6. Връща старото състояние;

  7. Продължава от мястото на спиране.

 

 

6. ISR – Interrupt Service Routine

Какво представлява:

  • Специална функция;

  • Изпълнява се автоматично;

  • Не се извиква ръчно.

Основни правила:

  • Да е възможно най-кратка;

  • Без delay();

  • Без тежки изчисления;

  • Само флагове и бързи операции.

 

 

7. Приоритети на прекъсванията

7.1 Какво е приоритет?

Когато има няколко прекъсвания:

  • По-високият приоритет се изпълнява първи

 

7.2 Хардуерен приоритет

Процесорът:

  • Има таблица с приоритети;

  • Някои модули са по-важни.

Пример:

  1. Reset;

  2. Watchdog;

  3. Таймер;

  4. UART;

  5. GPIO.

 

7.3 Nested interrupts (Вложени прекъсвания)

Възможно е:

  • Докато се изпълнява ISR;

  • Да дойде по-висок приоритет;

  • Процесорът:

    • Спира текущата ISR;

    • Стартира новата;

    • После се връща.

 

 

8. Маскиране на прекъсвания

Какво е маска?

  • Временно забраняване;

  • Използва се за защита на код.

Пример:

  • Критична секция;

  • SPI комуникация;

  • Запис в памет.

 

 

9. Често срещани грешки

  • Забравен флаг за изчистване;

  • Тежък код в ISR;

  • Използване на delay();

  • Достъп до shared променливи без volatile;

  • Забравено глобално разрешение.

 

 

10. Реални приложения

  • Бутон за аварийно спиране;

  • Таймер за PWM;

  • UART комуникация;

  • Енкодери;

  • Сензори за движение.

 

 

11. Добри практики

  • ISR = възможно най-кратка;

  • Използвай флагове;

  • Логиката в main();

  • Винаги чисти interrupt flag;

  • Използвай volatile.

 

 

12. Заключение

Прекъсванията са основен инструмент:

  • За бърза реакция;

  • За ефективен код;

Разбирането на:

  • Вътрешната логика;

  • Приоритетите;

  • Контролера.

→ Води до стабилни и професионални системи.