Управління пріоритетами переривань

При роботі мікроконтролера можлива ситуація, коли одночасно надходять запити на переривання від різних джерел. Для уникнення конфліктів в МCS51 реалізована дворівнева апаратно-програмна система пріоритетів, відповідно до якої пристрій управління вибирає джерело переривання, який може бути оброблений раніше. У межах кожного рівня пріоритетів встановлена наступна ієрархія пріоритетності обслуговування запитів: INT0 - TF0 - INT1 - TF1 - TI / RI.

Для будь-якого з п'яти джерел (TF1, TF0, INT1, INT0, TI або RI) програмним способом може бути встановлений один з двох рівнів пріоритету - "високий" або "низький". У разі збігу рівнів пріоритетів кількох одночасних запитів переривань, вибір вищого пріоритету пристрій управління проводить відповідно апаратної шкали INT0 - TF0 - INT1 - TF1 - TI / RI. Наприклад, якщо високий пріоритет обраний програмістом для переривань по входу INT0 і таймеру/лічильнику ТС1, то в разі одночасного запиту від джерел IE0, TF1 спочатку буде обробляться запит INT0, а потім ТС1 і тільки після цього - інші запити в порядку TF0-IE1-(TI / RI). Рівень пріоритету кожного джерела встановлюють за допомогою регістра пріоритетів переривань IP.

На рис.7.2 зображено бітову структуру цього регістру, а призначення окремих бітів описано в табл. 7.3.

               
- - - PS PT1 PX1 PT0 PX0

Рис. 7.2. Бітова структура регістра ІР

Таблиця 7.3

Біт Позиція Призначення
PS IP.4 Пріоритет переривань послідовного порту
PT1 IP.3 Пріоритет переривань таймера/лічильника ТС1
PX1 IP.2 Пріоритет переривань по входу INT1
PT0 IP.1 Пріоритет переривань таймера/лічильника ТС0
PX0 IP.0 Пріоритет переривань по входу INT0

Для встановлення високого рівня пріоритету переривання необхідно встановити відповідний біт в «1». Скидання біту керування приводить до призначення низького рівня пріоритету.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: