Прекъсва. Източници на прекъсване, управление на прекъсване.

Прекъсва. Източници на прекъсване, управление на прекъсване.

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

В зависимост от източника на сигнала за прекъсване те се разделят на:

асинхронни или външни (хардуерни) - събития, които идват от външни източници (например периферни устройства) и могат да възникнат във всеки произволен момент: сигнал от таймер, мрежова карта или дисково устройство, натискане на клавиши на клавиатурата, движение на мишката. Фактът, че такова прекъсване възниква в системата, се интерпретира като заявка за прекъсване (IRQ);

софтуер (особен случай на вътрешно прекъсване) - инициира се от изпълнението на специална инструкция в програмния код. Софтуерните прекъсвания обикновено се използват за достъп до функции във фърмуера, драйверите и операционната система.

Терминът "капан" (на английски trap) понякога се използва като синоним на термина "прекъсване" или "вътрешно прекъсване". По правило употребата е установена в документацията на производителя на определена процесорна архитектура.

Кога трябва да спрете програмата? Обикновено, когато се случи нещо важно. Какво е важно събитие - трябва да определите сами, като зададете разрешенията за прекъсване от използваните модули. Например, байт дойде в UART. Ако не бъде обработен навреме, тогава следващият входящ байт ще замени съществуващия и информацията ще бъде загубена. Следователно, когато байт пристигне в UART, той е необходим„пуснете всичко“ и прочетете байт от буфера за получаване. Така че, ако проектът използва UART, той трябва да бъде конфигуриран така, че да генерира прекъсване, когато приемният буфер е пълен. Ако това е направено, UART е източникът на прекъсването. В допълнение към UART, източниците на прекъсване обикновено са модули:

Можем да кажем, че почти всички периферни устройства могат да генерират прекъсвания. Ако периферията на който и да е микроконтролер не може да генерира прекъсвания, това значително ограничава възможностите на микроконтролера.

Освен всичко друго, може погрешно да се мисли, че прекъсванията се конфигурират само когато микроконтролерът се стартира. Всъщност не е. Прекъсванията могат да бъдат активирани или деактивирани, или техният приоритет може да бъде променен навсякъде в програмата.

Контролерът е необходим за наблюдение на спазването на приоритетите на прекъсванията, както и за присвояване на номер на всяка заявка.

Контролерът на прекъсванията съдържа регистър с номера на прекъсванията. Когато се получи заявка за прекъсване, контролерът сравнява приоритета на изпълнявания в момента код и отхвърля заявката за прекъсване с по-нисък или равен приоритет. Водещата част от номера на заявката може да бъде зададена програмно.

Всеки манипулатор на прекъсване завършва с инструкция IRET, чието изпълнение осигурява връщане към прекъснатата програма за продължаване на нейното изпълнение.

Логиката за обработка на прекъсванията е реализирана като програмируем контролер за прекъсвания (PIC), който се намира в чипа с процесора.

Прекъсвания. Вектори на прекъсване, приоритети на прекъсване, маскиране на прекъсване.

Вектори на прекъсване

Инициализирането на таблицата се извършва отчасти от основната система за вход/изход на BIOS след тестване на хардуера и преди операционната система да започне да се зарежда, отчасти когатозареждане на MS-DOS. Операционната система MS-DOS може да промени някои от векторите за прекъсване, зададени от BIOS.

Векторна таблица на прекъсванията