Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга. Гуржій. 1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.53 Mб
Скачать

Стани програмованого контролера переривань

ПКП може знаходитись у двох станах: настройки або обслуговування запитів на переривання. У стані настройки здійснюється ініціалізація та встановлення режимів роботи контролера шляхом його програмування як пристрою вводу/ виводу за допомогою чотирьох керуючих слів ініціалізації ICW1—ICW4, а в стані обслуговування контролер приймає операційні керуючі слова 0CW1—OCW3, що визначають алгоритм обслуговування запитів на переривання в заданому режимі ініціалізації. Передавання слів ініціалізації та операційних слів у відповідні регістри мікросхем І8259А здійснюється за допомогою команд байтового виводу OUT мікропроцесора і80х86. Стан програмно доступних регістрів І8259А зчитується за допомогою команд IN.

Для обміну кодами між мікропроцесором та ПКП в обчислювальній системі зарезервовано чотири порти вводу/ виводу: порти 20h (парний) та 21h (непарний) для ведучого та A0h, A1h для веденого. Через ці порти можуть бути передані 4 слова ініціалізації ICW1—ICW4, що задають режим роботи ПКП та 3 операційні керуючі слова (слова робочих наказів) 0CW1-0CW3.

Призначення та формати керуючих слів ініціалізації ПКП

Керуючі слова ініціалізації є константами, що задають: конфігурацію ПКП, порядок ініціалізації, базовий номер вектора переривання для входу IRQ0, наявність або відсут­ність каскадування, режими обслуговування. Ініціалізація ведучого та веденого контролерів здійснюється індивідуально.

ICW1 керуюче слово ініціалізації. Біт З (LHN), що дорівнює 1 задає запуск запитів рівнем, тобто відповідний тригер регістра IRR встановлюється на 1 рівнем потенціалу на своєму вході; якщо ж LTIN=1, то відповідний тригер регістра IRR встановлюється на 1 фронтом вхідного сигналу. Біт 2 (ADI) використовується тільки в ПЕОМ на базі МПК 18080/8085. Біт 1 (SNCL) вказує на наявність у системі одного контролера (якщо дорівнює 1) або каскаду з кількох контролерів (якщо дорівнює 0). Біт 0 (ІС4) визначає: буде чи не буде в процесі ініціалізації виводитись керуюче слово ICW4. Якщо цей біт дорівнює 1, то ICW4 необхідно форму­вати. Якщо ICW4 не виводиться (ІС4=0), то це слово автоматично набуває нульового значення в усіх розрядах. Слово ICW1 передається за парними адресами. Формат слова ініціалізації ICW1 показано на рис. 2.3.

Керуюче слово ICW2 задає номер вектора переривання для переривань рівня 0 (наприклад, 08h для IBM PC, в яких по рівню 0 відбувається переривання від таймера). Так як вектори апаратних переривань розміщуються підряд один за одним, вивід в ICW2 значення 08h не тільки задає восьмий вектор для таймера, але і дев'ятий для переривань рівня 1 і т. п. Формат керуючого слова наведено на рис. 2.4.

Керуюче слово ICW3 — виводиться тільки за наявності каскаду ПКП та має різний формат для ведучого та веденого контролерів.

ICW3 ведучого вказує, до яких входів IRQ0-IRQ7 підключені ведені контролери. При цьому відповідні біти встановлюються на 1. Інші біти дорівнюють 0. Приклад: нехай система переривань має два ведені контролери, ввімкнені до входів IRQ2 та IRQ4 ведучого, тоді ICW3 ведучого ПКП повинен мати формат (див. рис. 2.5).

ICW3 веденого ПКП у трьох молодших розрядах містить номер рівня ведучого, до якого він увімкнений. Наприклад, для веденого контролера, що працює на рівні 2, ICW3 має формат (див. рис. 2.6)

Керуюче слово Ініціалізації ICW4 має формат (див рис. 2.7)

Призначення та формати операційних слів ПКП

У заданому режимі ініціалізації користувач може:

  1. маскувати та розмасковувати апаратні переривання;

  2. змінювати пріоритети рівнів;

  3. видавати команду завершення обробки апаратного переривання;

  4. встановлювати/скидати режим спеціальної маски;

  5. переводити ПКП у режим опитування та зчитування стану регістрів ISR та IRR.

Для здійснення вказаних дій необхідно за відповідними адресами записати одне з трьох слів робочих наказів 0CW1-0CW3.

0CW1 визначає стан розрядів у регістрі маски IMR та використовується для встановлення та скидання масок переривання (IRQ0-IRQ7). Формат слова наведено на рис. 2.8.

Значення бітів М0-М7, що дорівнюють одиницям, означає, що переривання відповідного рівня маскується та не буде оброблятись контролером. Дозвіл джерела переривання може бути здійсненим установкою відповідного розряду на 0. 0CW1 видається за адресою 21h (для веду­чого) або A1h для веденого контролерів.

OCW2 призначено для виводу команди завершення обробки апаратного переривання ЕОІ, циклічного зсуву та явної зміни пріоритетів рівнів. Залежно від сполучення зна­чення розрядів встановлюються відповідні режими та ко­манди. Розряди 0CW2 мають такі призначення:

L0-L2 — використовують для вказання номера рівня переривання.

ЕОІ використовується для команд закінчення пере­ривання (в неавтоматичному режимі). Якщо ЕОІ=1, то при виконанні команди АЕОІ (автоматичне завершення переривання) буде враховуватися стан розрядів SL та R. Якщо ЕОІ=0, то команда АЕОІ виконуватись не буде.

SL — використовується для дозволу та заборони роз­рядів L0-L2. Якщо SL=1, то операція відноситься до рівня, вказаного в розрядах L0-L2. Якщо SL=O, то розряди L0-L2 заборонені.

R — використовується для керування всіма процеду­рами ротації пріоритетів. Якщо R=l, то форма ротації визначається станом розрядів SL та ЕОІ. Якщо R=0, то ротації не буде. Значення бітів у форматі команди наведено на рис. 2.10.

0CW3 — це слово наказів, дозволяє встановити та відмінити режим спеціальної маски, перевести контролер у режим опитування та прочитати вміст IRR та ISR.

Призначення бітів та формат команди наведено на рис. 2.9. Після виконання команд читання регістра ISR та IRR вміст регістрів зчитується за адресою 20h або AOh. Для отримання вмісту регістра IMR необхідно виконати читан­ня портів за адресами 21h або Alh.

Вправа

Сформувати керуючі слова ініціалізації та слова робочих наказів для всіх допустимих режимів функціонування ПКП.

Приклад конкретного завдання та його розв'язання

Нехай контролер переривань складається з двох каскадно ввімкнених мікросхем І8259А. Для підключення веденої мікросхеми використовується вхід IRQ2 ведучої та запуск запитів переривання здійснюється фронтом вхідних сигналів від контролерів зовнішніх пристроїв. Номер вектора переривання з найбільшим пріоритетом дорівнює 08h.

Контролер повинен працювати в режимі автоматичного завершення обробки переривання без спеціального вкладення, режим буфера не використовується. Маскуються переривання рівнів IRQ6, IRQ13. Необхідно передбачити циклічний зсув рівнів пріоритетів зі звичайним кінцем переривання, а дно пріоритетного кільця встановити за запитом, який вже обслужили.

Розв'язання

Для ведучого контролера:

ICW1=00010001b; ICW2=00001000b; ICW3=00000100b;

ICW4=00000010b; OCW1=10111111b; OCW2=10100000b.

Для веденого контролера:

ICW1=00010001b; ICW2=00001000b; ICW3=00000010b;

ICW4=00000010b; OCW1=11011111b; OCW2=10100000b.

Питання для самоконтролю знань

  1. В яких станах може знаходитись ПКП?

  2. Які адреси зарезервовані для програмування ПКП?

  3. Що собою являють слова ініціалізації І8259?

  4. Призначення та формат слів ініціалізації ICW1-ICW4.

  1. Яка послідовність дій при ініціалізації ПКП?

  2. Які функції може реалізувати користувач у заданому режимі роботи ПКП?

  1. Призначення робочих «наказів» 0CW1-0CW3.

  2. Яке слово робочих наказів використовується для маскування переривань? Вкажіть його формат.

Резюме

ПКП може знаходитись у двох станах: настройки або обслуговування запитів на переривання. Керуючі слова ініціалізації є константами, що задають конфігурацію ПКП, порядок ініціалізації, базовий номер вектора переривання для входу IRQ0, наявність або відсутність каскадування, режими обслуговування. Ініціалізація ведучого та веденого контролерів здійснюється індивідуально.

Передавання слів ініціалізації та операційних слів у відповідні регістри мікросхем І8259А здійснюється за допомогою команд байтового виводу OUT мікропроцесора і80х86. Стан програмно доступних регістрів І8259А зчитується за допомогою команд IN.

Для обміну кодами між мікропроцесором та ПКП в обчислювальній системі зарезервовано чотири порти вводу/виводу: порти 20h (парний) та 21h (непарний) для ведучого та - AOh, Alh для веденого. Через ці порти можна передати 4 слова ініціалізації ICW1-ICW4, що задають режим роботи ПКП та 3 операційні керуючі слова (слова робочих наказів) 0CW1-0CW3.

У заданому режимі ініціалізації користувач може:

  1. маскувати та розмасковувати апаратні переривання;

  2. змінювати пріоритети рівнів;

  3. видавати команду завершення обробки апаратного переривання;

  4. встановлювати/скидати режим спеціальної маски;

  5. переводити ПКП у режим опитування та зчитування стану регістрів ISR та IRR.

Ваш наступний крок

Засвоївши поняття ініціалізації ПКП та керування ним у заданому режимі ініціалізації, вивчивши призначення та формати керуючих слів ініціалізації ICW - Initialization Control Word та операційних слів OCW - Operation Control Word, а також навчившись формувати структури керуючих слів ініціалізації та операційних слів, Ви підготувались до практичного засвоєння методики ініціалізації ПКП. Далі Ви дізнаєтесь, що ці питання мають важливе значення з точки зору практичного засвоєння процедур керування системою переривання.

Заняття 4. Підготовка ПКП до роботи

Тема заняття

Ініціалізація системи переривання ПЕОМ.

Мета заняття

Засвоїти терміни, що належать до поняття ініціалізації.

Вивчити алгоритми ініціалізації системи переривання ПЕОМ для веденого та ведучого контролерів.

Навчитись складати схеми ініціалізації ПКП.

Навчитись складати програмні модулі ініціалізації ПКП.

Ініціалізація системи переривання ПЕОМ

До початку нормальної роботи кожний контролер І8295А в системі повинен бути ініціалізовании за допомогою командних слів ініціалізації (ICW), що містять від двох до чотирьох байтів. ICW використовуються для встановлення необхідних умов та режимів роботи І8259А. Процедура ініціалізації контролера виконується тільки у вказаній послідовності, так як вона нерозривно зв'язана з апаратурою.

Якщо в системі кілька контролерів, то спочатку ініціалізується MASTER (ведучий), далі SLAVE (ведений).

Ініціалізація ПКП починається з моменту виводу за адресою 20h керуючого слова ICW1. Слова ініціалізації повинні йти одне за одним ICW1, ICW2, ICW3, ICW4. У про­цесі ініціалізації контролер послідовно приймає керуючі слова ICW1-ICW4. При наявності в системі одного контролера ICW3 не виводиться. Наявність ICW4 визначається вмістом слова ICW1. У порт з парною адресою ( 20h, AOh) виводиться слово ICW1. Порт з непарною адресою (21h, Alh) використовується для виводу ICW2, ICW3, ICW4. Після ініціалізації ПКП готовий до роботи в заданому режимі. Для зміни режимів роботи, що задаються при ініціалізації, вимагається ініціалізувати його знову.

Алгоритми ініціалізації системи переривання ПЕОМ

При ініціалізації ПКП виконуються такі дії, в тому числі й апаратні:

згідно з ICW1 встановлюється логіка послідовності ініціалізації таким чином, щоб забезпечувався прийом ICW, вказаних в ICW1;

скидаються регістри ISR та IMR;

скидається режим спеціального маскування (SMM);

скидається тригер ротації в автоматичному режимі ЕОІ;

схема читання/запису настроюється на читання IRR в обох контролерах;

встановлюється фіксований пріоритет (вищий у IRQ0, нижчий у IRQ7);

встановлюється режим розпізнавання запитів на пе­реривання по фронту;

встановлюється робота підсистеми в каскадному режимі (об'єднання по входу IRQ2 MASTER);

присвоюються коди векторів, відповідні до рівнів переривань.

Схема алгоритму ініціалізації ПКП наведена на рис. 2.11.

Типова програма ініціалізації контролерів перери­вання має вигляд:

Для MASTER

MOV AL, 11h Ввід ICW1: режим запуску по фронту ІЛТМ=0,

OUT 20h,AL каскадний режим SNLG=0, IC4=1 - наявність

JMP $+2 у ланцюзі ініціалізації команди ICW4, D4=l

JMP $+2 вказує, що виконується команда ICW1

JMP $+2 Часова затримка

MOV AL,08h ICW2, встановлює базову адресу векторів

OUT 21h,AL переривань у діапазоні 08h - OFh

JMP $+2

JMP $+2 Часова затримка

JMP $+2

MOV AL,04h ICW3, вказує, що SLAVE підключений до

OUT21h,AL IRQ2

JMP $+2

JMP $+2 Часова затримка

JMP $+2

MOV AL,01h ICW4, встановлений режим роботи системи

OUT 21h,AL (може бути при необхідності заданий спеці -

JMP $+2 альний повновкладений режим SFNM)

JMP $+2 Часова затримка

JMP $+2

MOVAL, 00h Скидання регістра масок

OUT 21h,AL

Для SLAVE

MOV AL, 15h Ввід ICW1: режим запуску по рівню LTIM=1,

OUT AOh,AL каскадний режим SNLG=0, IC4=1 - наявність у ланцюгу ініціалізації команди ICW4, D4=l

вказує, що виконується команда ICW1

JMP $+2

JMP $+2 Часова затримка JMP $+2

MOV AL,70h ICW2, встановлює базову адресу векторів

OUT Alh,AL переривань у діапазоні 70h-7Fh

JMP $+2

JMP $+2 Часова затримка

JMP $+2

MOV AL,70h ICW2, встановлює базову адресу векторів

OUT Alh,AL переривань у діапазоні 7Oh-7Fh

JMP $+2

JMP $+2 Часова затримка

JMP $+2

MOV AL,02h ICW3, вказує, що SLAVE підключений до IRQ2

OUT Alh,AL

JMP $+2;

JMP $+2; Часова затримка

JMP $+2;

MOV AL,01h CW4, встановлений режим роботи системи

OUT Alh,AL (може бути при необхідності заданий спеці­альний повновкладений режим SFNM)

JMP $+2;

JMP $+2; Часова затримка

JMP $+2;

MOV AL, 00h Скидання регістра масок

OUT Alh,AL

Зазначимо, що коли після ініціалізації потрібно здійснити які-небудь програмні зміни в ICW, то необхідно перепрограмувати всю послідовність ICW, а не тільки окреме змінюване слово.

Вправа

Скласти схему ініціалізації ПКП та програмний модуль передавання слів ініціалізації і робочих команд при таких вихідних даних.

Нехай контролер переривань складається з двох каскадно ввімкнених мікросхем І8259А. Для підключення веденого використовується вхід IRQ2 ведучого, і запуск запитів переривання здійснюється рівнем вхідних сигналів від контролерів зовнішніх пристроїв. Номер вектора переривання з найбільшим пріоритетом дорівнює 08h. Контролер повинен працювати в режимі автоматичного завершення обробки переривання без спеціального вкла­дення, режим буфера не використовується. Маскуються переривання рівнів IRQ6, IRQ13. Необхідно передбачити циклічний зсув рівнів пріоритетів зі звичайним кінцем переривання, а дно пріоритетного кільця встановлювати за запитом, який вже обслужили.

Питання для самоконтролю знань

1. В якій послідовності вводяться слова ініціалізації ПКП?

  1. В якій послідовності здійснюють ініціалізацію каскадно ввімкнених ПКП?

  2. Які дії необхідно здійснити для пере ініціалізації ПКП?

  3. Напишіть програмний модуль ініціалізації ведучого ПКП.

  4. Напишіть програмний модуль ініціалізації веденого ПКП.

  5. Перелічіть основні функції, в тому числі й апаратні, які виконуються при ініціалізації.

  6. Нарисуйте схему алгоритму ініціалізації ПКП.

  7. Чи може система переривань мати кілька ведених контролерів?

  8. Вкажіть послідовність ініціалізації у випадку, якщо є два ведені контролери переривань.

Резюме

До початку нормальної роботи кожний контролер І8295А в системі повинен бути ініціалізований за допо­могою командних слів ініціалізації (ICW). Якщо в системі кілька контролерів, то спочатку ініціалізується MASTER (ведучий), далі SLAVE (ведений).

Ініціалізація ПКП починається з моменту виводу за адресою 20h керуючого слова ICW1. Слова ініціалізації повинні йти одне за одним ICW1, ICW2, ICW3, ICW4.

Після ініціалізації ПКП готовий до роботи в заданому режимі. Для зміни режимів роботи, що задаються при ініціалізації, вимагається переініціалізувати його знову.

Ваш наступний крок

Засвоївши методику побудови алгоритмів ініціалізації системи переривання ПЕОМ для веденого та ведучого контролерів та навчившись складати схеми та модулі програм ініціалізації ПКП, Ви підготувались до засвоєння матеріалу по застосуванню програмних способів керування режимами роботи ПКП.