22978

Переривання

Лекция

Коммуникация, связь, радиоэлектроника и цифровые приборы

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

Украинкский

2013-08-04

5.91 MB

0 чел.

Лекція №9

Переривання

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

Переваги такого способу очевидні: між порівняно рідкими запитаннями на переривання процесор не простоює, а виконує корисну роботу. Недоліком цього методу є, однак, деяка складність програмної та апаратної частин.

Організація переривань

Все починається з того, що ЗП виставляє сигнал високого рівня (логічну одиницю) на вхід  INT мікропроцесора. Стан на вході INT мікропроцесор перевіряє кожного разу в останньому такті чергової команди, по передньому фронту тактового імпульсy F2. У відповідь на виявлений запит мікропроцесор виставляє на шину даних слово стану D0,D1,D5 = 1  (23H).  Цим мікропроцесор повідомляє про свій намір виконувати сприймання та обробку переривання. Біт    D0 = 1 означає “підтвердження переривання”, D1  = 1 те що в даному циклі буде відбуватися введення (читання) інформації, а D5 = 1 те, що це є сприймання першого байту команди.

 Сигнал “підтвердження переривання” D0 = 1, котрий має назву INTA,    подається на контролер ЗП, який і  вступає у обмін даними з мікропроцесором  (звичайно це буває інвертований сигнал ). Ці дані будуть оброблятися мікропроцесором за підпрограмою обробки переривань, яка повинна бути заздалегідь закладена у  память мікропроцесора .

 Але спершу ніж розпочати обробку переривання треба зафіксувати всі відомості про перервану фонову програму з тим, щоб по закінченню обробки переривання мати змогу знову повернутися до неї. Для цього у стек записується вміст лічильника команд (в котрім на момент початку переривання було записано адресу наступної команди фонової  програми). Замість цього в лічильник команд заноситься адреса команди, з якої починається підпрограма  обробки переривань. Далі, оскільки для виконання цієї підпрограми може знадобиться акумулятор та регістр ознак (регістри А та F) вміст цих регістрів також заноситься у стек. Лише після цього стає можливим введення даних з ЗП і старт підпрограми обробки переривань цих даних.

По закінченню підпрограми обробки переривань вміст А та F регістрів і вміст лічильника команд повертаються зі стеку на свої місця і виконання фонової програми продовжується. Тому кожна підпрограма обробки переривань  має починатися з команди   PUSH PSW і  закінчуватися  командою POP PSW. Якщо ж в підпрограмі будуть задіяні також робочі регістри B,C,D,E,H та L, в котрих може бути інформація з фонової програми, то вміст цих регістрів також бажано на час обробки переривань зберігати у стеку.

 Друге зауваження полягає в тому що за сигналом  RESET (з якого починається робота МП), переривання блокуються . В ознаку цього на виході INTE  мікропроцесора встановлюється “0”. Тому якщо передбачається можливість переривань, в фонову програму повинний бути заздалегідь закладений дозвіл на переривання, який забезпечується командою ЕІ. За цією командою тригер дозволу на переривання (який є у мікропроцесорі) встановлюється у “1” і мікропроцесор стає готовим до сприймання запитів на переривання. Слід мати на увазі, що після підтвердження запиту на переривання  (сигнал ) вищезгаданий тригер знову ж таки повертається у нуль, в результаті чого МП виявляється заблокованим і для обслуговування наступного переривання його треба знову розблокувати командою ЕІ. Тому ця команда ставиться звичайно на початку кожної підпрограми переривань, одразу услід за вищезгаданою командою  PUSH PSW .

 Інколи при виконанні будь-якої особливо важливої фонової програми (або її фрагменту) буває необхідним виключити можливість її переривання. Тоді у фонову програму вводиться команда DI - заборона на переривання, яка діятиме до появи в програмі  команди ЕІ - дозволу на переривання.

Кожна підпрограма обробки переривань повинна закінчуватися командою RET - виходом з підпрограми, за якою в лічильник команд повертається зі стека адреса фонової програми, яка була перервана.

Команда   рестарту

Розглянемо тепер докладніше, як відбувається перехід до підпрограми обслуговування переривання. Після того як один з зовнішніх пристроїв видав запит на переривання на вхід мікропроцесора INT, останній  видає сигнал підтвердження  і переходить у режим переривань,  звільняючи шину даних. За сигналом  на ШД  треба встановити  вектор переривань - адресу комірки памяті, у котрій зберігаються відомості про адресу початку підпрограми обробки переривань.

 Вектори переривань визначаються при одержанні мікропроцесором від ЗП команди рестарту, передбаченої в системі команд МП-80. Мнемоніка цієї команди є RST N, де N - номер рестарту. Всього у МП-80 вісім команд рестартів. За кожним ЗП закріплюється своя команда рестарту, отже МП-80 може обслуговувати вісім зовнішніх пристроїв. Команда рестарту формується і виводиться на ШД з контролера ЗП, який дав запит на переривання.

У двійковому запису команда рестарту має вигляд 11msk111, де літери   msk означають номер рестарту у двійковому запису і, отже, номер ЗП, котрому відповідає цей рестарт. Так наприклад, команді RST 2  відповідає код 11010111, тобто   D7H. За номером рестарту мікропроцесор дізнається який саме ЗП дав запит на переривання і яку підпрограму обробки переривань слід запустити.

За командою   мікропроцесор виконує такі дії:

записує у стек чергову адресу фонової програми. За цією адресою мікропроцесор повернеться до фонової програми по закінченню переривання;

Виставляє через лічильник команд на ША адресу 0000 0000 00ms k000, в котрій захований номер рестарту.

Так наприклад, для RST 2 це буде адреса 0010Н. Це і є вектор переривань. Адреса наступного рестарту  RST 3 буде 0018Н. Отже, під вектор переривань відводиться 8 комірок памяті, в котрих можна було б розташувати підпрограму обробки переривань. Але звичайно восьми комірок памяті буває для цього замало. Тому саму підпрограму обробки переривань розташовують де-небудь у вільній області памяті, а за адресою 0010Н записують лише команду безумовного переходу на цю підпрограму.

У  “Мікролабі”  справа ускладнюється ще й тим, що всі початкові адреси ПЗП від 0000 до 03FF зафіксовані за оперативною системою “Монітора” і запис до цих комірок неможливий. Тому у “Мікролабі” команда переходу на початкову адресу підпрограми обробки переривань (яка може бути довільною) записується у комірки памяті службової області ОЗП, по три комірки на вектор. Так наприклад, для RST 2 передбачено комірки з адресами 83D1,83D2,83D3. Для RST 3  ці адреси починаються з 83D4.

А за адресами, що встановлюються командами RST фіксовано записані  початкові адреси вказаних груп. Так наприклад, за адресою 0010Н записана команда C3 D1 83, тобто безумовний перехід до адреси 83D1. (Останні пять комірок памяті у ОЗП від 0013Н до 0017 не використовуються і в них записано FF).  Таким чином виклик підпрограми переривань має у “Мікролабі” багатоступеневий характер (рис.9.1): команда рестарту від  ЗП встановлює вектор переривань в області ПЗП, по ньому  встановлюється адреса “внутрішнього” вектора в службовій області ОЗП, і нарешті по записаній там адресі відбувається безумовний перехід до підпрограми обробки переривань.

Можна звичайно запитати навіщо така складність? Чи не міг би контролер зовнішнього пристрою одразу видавати команду виклику підпрограми обробки переривань, вказуючи її початкову адресу? Так можна було б зробити, але це надто ускладнило б апаратну частину контролера ЗП, який мав би  видавати трьох- байтну команду  адреси підпрогра- ми, тоді як в нашому варіанті йому достатньо видавати одноба- йтну команду рестарту. Як  ми побачимо трохи згодом, метод видачі контролером безпосередньо трьохбайтової команди з адресою підпрограми обробки переривань вживається у більш складних мікропроцесорних системах.

Розглянемо тепер докладніше як вся ця проце-дура рестарту ви-конується апа-ратно. Після того як мікропроцесор увійшов у режим переривань і його ШД звільнилась, на неї за сигналом  слід ввести ззовні (від контролера ЗП) команду рестарту. Це можна виконати за допомогою буферного регістру (напр. КР580ИР82 або К589ИР12), виходи якого мають третій стан (рис.9.2.). На вхід цього регістру стаціонарно встановлюють одиниці і нулі, що відповідають команді рестарту від даного ЗП. За  командою  вони виводяться на ШД. Кожний ЗП повинний мати свій відповідно закодований буферний регістр, який і входить до складу контролера цього ЗП. Замість буферного регістра  можна було б використати і інші ІМС, які мають третій стан, наприклад, шинні формувачі К589АП16 або КР580ВА861.

Якщо в процесі обробки переривань будь-який інший ЗП подасть свій запит на переривання, то виконання попередньої підпрограми буде перервано і почнеться виконання нової підпрограми від ЗП, який дав запит останній. Після закінчення цієї підпрограми МП повернеться до виконання попередньої. Це має назву вкладених переривань. Таких вкладень у МП-80 може бути аж до восьми. Але це буває незручним і для того щоб якось впорядкувати черговість обслуговування переривань від кількох ЗП, за цими ЗП слід встановити якійсь пріоритет обслуговувань.

Пріоритети переривань

Обслуговування запитів тільки від одного периферійного пристрою відбувається за описаною вище схемою і не викликає будь-яких утруднень, бо початкова адреса підпрограми обробки переривань однозначно задається, а джерелом запиту є лише один ЗП.

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

Цю задачу можна розвязати двома методами: програмним або апаратним. При програмному методі процесор одержавши запит   від якогось із зовнішніх пристроїв (поки що невідомо від якого) засилає у стек вміст лічильника команд, регістрів А та F  і розпочинає послідовне опитування всіх ЗП, зясовуючи котрий з них зробив запит. Це можна здійснити, наприклад, за допомогою команди  IN ADR N, де ADR N - адреса N- того зовнішнього пристрою. У відповідь на це контролер цього пристрою видає слово готовності, в одному з розрядів якого стоїть одиниця, а в усіх інших - нулі.  Командою  JZ (або JNZ) мікропроцесор перевіряє слово готовності, Якщо опитуваний ЗП не видавав запиту, то його слово готовності виявляється нульовим і мікропроцесор пере-ходить до опитування наступного за номером ЗП. Якщо ж у слові готовності є одиниця (воно не нульове), то запускається підпрограма обробки запиту для цього ЗП. Черговість опитування визначається рівнем пріоритетів ЗП: першим опитується найпріоритетніший, останнім - ЗП з найнижчим пріоритетом. Отже, пріоритетність ЗП закладається в програму їх опитування. Такий метод програмного опитування має назву полінга. Приклад блок-схеми програми полінга зображено на рис.9.3.2

Для входження в програму полінга  за сигналом збірного INT (і після одержання відовіді ) адреса самої підпрограми полінга вводиться на ШД з буферного регіс-тра подібного до того, як це робилось для команди рестарту (рис.9.2.). Буфер, звичайно має бути запрограмований на фіксовану адресу підпрограми полінгу. Недоліком методу полінга є його порівняно мала швидкодія, бо щоразу програмно доводиться опитувати підряд всі контролери зовнішніх пристроїв.

Кращим у цьому відношенні є метод векторних переривань, за яким ЗП сам сповіщає мікропроцесору своє імя (вектор) і запускає у дію відповідну програму обробки переривань. Цей процес здійснюється автоматично (апаратно) і не потребує складних та повільно діючих програм. Блок-схему такої системи зображено на рис.9.4.

Зовнішні пристрої через дизюнктор (схему АБО) виставляють свої запити на переривання на збірну лінію INT. У відповідь на це з системного контролера  виходить сигнал підтвердження переривань . Цей сигнал подається на контролер ЗП з найвищим пріоритетом  (ЗП 0). Якщо цей ЗП не давав запита на переривання  сигнал  йде далі до ЗП 1, потім до ЗП 2, тощо, поки не знайдеться ЗП, який цей запит подавав. Якщо такий ЗП знайшовся, то він видає на ШД команду CALL ADR N, тобто команду до переходу на відповідну йому підпрограму обслуговування переривань. Або видає вже знайому нам команду рестарта .

Таким чином, пріоритетність тут закладається схемотехнічно,  порядком міжмодульного зєднання контролерів зовнішніх пристроїв щодо проходження сигналу .

Програмований контролер переривань (ПКП)

Для апаратної реалізації процесу багаторівневих переривань мікропро-цесора КР580ВМ80 розроблено спеціальний програмований контролер переривань КР580ВН59, який здійснює векторну вісьмирівневу систему переривань. У міжнародних позна-ченнях він має назву 8259.

Схематичне зображення  виводів цієї ІМС подано на рис.9.5. Тут D0 - D7 це інформаційні двоспрямовані виводи з третім станом. Вони підключаються до системної ШД і служать для введення у ПКП керуючих слів та виведення з нього слова стану. Вивід  - вхід вибору мікросхеми; ПКП активізується при  = 0. та  визначають режим запису або читання. При = 0 відбувається запис у регістри контролера керуючих слів, котрі призначають подальшу роботу контролера. За командою  = 0 відбувається читання мікропроцесором слова стану ПКП.

Адресується ПКП як зовнішній пристрій за двома адресами, що різняться молодшим бітом А0. За молодшою адресою (А0 = 0) записується перше керуючe слово початкового встановлення  (ICW1) , по старшій адресі (А0 = 1) - друге слово (ICW2). Виводи   IR0 - IR7  - входи по яких потрапляють сигнали запитів на переривання від вісьми зовнішніх пристроїв, що їх обслуговує ПКП. Вихід  INT - запит до мікропроцесора на переривання, який виробляється ПКП на підставі запитів від зовнішніх пристроїв.  - вхід для підтвердження переривання. Сигнал  надходить до ПКП від мікропроцесора коли той дає згоду на переривання. Виводи ,CAS0 - CAS2 використовуються для каскадування ПКП. При каскадуванні один ведучий ПКП обслуговує вісім ведених. При цьому кількість ЗП що їх може обслуговувати  така система зростає до 64. Питання повязані з каскадуванням нами розглядатися не будуть.

Організацію пріоритетів ПКП може здійснювати по-різному в залежності від того як його запрограмувати. Найпростішим варіантом є режим повного вкладення, коли ЗП підключеному до IR7 привласнюється найвищий пріоритет, а тому, що приєднаний до IR0 - найнижчий.  Якщо в процесі обслуговування ЗП з низьким пріоритетом зявиться запит від ЗП з вищим пріоритетом, то МП переводиться на обслуговування останнього, тобто нова підпрограма виявляється “вкладеною”  до попередньої. Таких “вкладень” може бути до семи.

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

Вибір режимів роботи ПКП здійснюється керуючими словами. Ці слова бувають двох видів:

слова початкового встановлення, або слова ініціалізації (ICW). Вони вводяться у ПКП до початку його роботи і зберігаються у його регістрах.

У керуючих словах ICW1 та ICW2  криються закладені програмістом вектори для кожного з восьми ЗП, що їх обслуговує ПКП (по 4 або по 8 бітів у кожному векторі). Ці вектори видаються на ШД при надходженні запиту від зовнішніх пристроїв. У цих словах визначається також чи буде   каскадування і за яким режимом. Таких слів два (якщо немає каскадування) або три (якщо каскадування є).

2) слова керування або операційні слова (OCW). Вони вводяться до ПКП за молодшою адресою і визначають режим пріоритетів, Ці слова можна вводити підчас роботи ПКП замінюючи “на ходу” порядок пріоритетів.

Контролер переривань через себе дані не пропускає. Його справа - збирати запити на переривання, визначати пріоритети обслуговування ЗП і видавати вказівки до МП, яку з підпрограм обробки слід задіяти і яка її початкова адреса. Що ж до самого процесу обміну даними, то він має йти через порти - послідовні або паралельні - котрі також слід заздалегідь запрограмувати.

При використанні ПКП спрощуються контролери зовнішніх пристроїв. Вони тепер не повинні видавати команди рестартів; їх справа - тільки надсилати запити до ПКП по відповідних лініях IRN і чекати, коли до них звернеться мікропроцесор. Інформація про те, до якого ЗП має звернутися мікропроцесор, міститься в векторі переривань що його виробляє тепер ПКП. Відповідно до цього мікропроцесор звертається до порту, до якого підключений зовнішний пристрій.

Працюючи разом з системним контролером КР580ВК28  наш контролер переривань може навіть видавати трьохбайтові команди викликів підпрограм обробки переривань CALL ADR N, де ADR N - початкова адреса N - тої підпрограми обробки.  

 

1 У деяких книгах наводяться схеми контролерів ЗП, де виведення векторів переривань на ШД здійснюється через систему інверторів, Це є помилкою, бо звичайні інвертори не мають третього стану.

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


 

А также другие работы, которые могут Вас заинтересовать

20182. Точечные оценки законов распределения 114.5 KB
  Функции распределения описывают поведение непрерывных случайных величин т. Задача нахождения точечных оценок частный случай статистической задачи нахождения оценок параметров функции распределения случайной величины на основании выборки. В отличие от самих параметров их точечные оценки являются случайными величинами причем их значения зависят от объема экспериментальных данных а закон распределения от законов распределения самих случайных величин.
20183. Малое предпринимательство в экономических системах разных стран 293.71 KB
  Выявить тенденции и особенностей становления малого бизнеса в экономике России, его значимости в социально-экономическом развитии общества; раскрыть проблемы взаимодействия малого бизнеса и государственных органов; рассмотреть зарубежный опыт развития малого предпринимательства; исследовать франчайзинг как способ развития малого бизнеса; изучить франчайзинговые модели бизнеса российских стран.
20184. СЧЕТЧИКИ. Общие сведения 309.5 KB
  40 показаны вход и выходы счетчика без раскрытия схемы счетчика а в табл.19 Числопоступивших импульсов Состояние триггеров Число поступившихимпульсов Состояние триггеров Q4 Q3 Q2 Q1 Q4 Q3 Q2 Q1 0 0 0 0 0 8 1 0 0 0 1 0 0 0 1 9 1 0 0 1 2 0 0 1 0 10 1 0 1 0 3 0 0 1 1 11 1 0 1 1 4 0 1 0 0 12 1 1 0 0 5 0 1 0 1 13 1 1 0 1 6 0 1 1 0 14 1 1 1 0 7 0 1 1 1 15 1 1 1 1 Наряду с суммирующими счетчиками в которых в процессе счета каждое очередное число на одну единицу превышает предыдущее используются и такие счетчики в которых в процессе счета числа...
20185. ТРИГГЕРЫ. Активные и пассивные логические уровни элементов И-НЕ и ИЛИ-НЕ 207.5 KB
  Назначение триггера. Воздействуя на входы триггера его устанавливают в нужное состояние. Логический уровень на инверсном выходе представляет собой инверсию состояния триггера в состоянии 0 Q = 1 и наоборот. Приведем обозначение и назначение входов триггеров: R от английского RESET раздельный вход установки в состояние 0; S от английского SET раздельный вход установки в состояние 1; K вход установки универсального триггера в состояние 0; J вход установки универсального триггера в состояние 1; T счетный вход; D от английского...
20186. МУЛЬТИПЛЕКСОРЫ/ ДЕМУЛЬТИПЛЕКСОРЫ 74 KB
  Мультиплексор является устройством которое осуществляет выборку одного из нескольких входов и подключает его к своему выходу. Мультиплексор имеет несколько информационных входов D0 D1 . При подаче стробирующего сигнала на вход С мультиплексор выбирает один из входов адрес которого задается двоичным кодом на адресных входах и подключает его к выходу.26 Таким образом подавая на адресные входы адреса различных информационных входов можно передавать цифровые сигналы с этих входов на выход Q.
20187. ШИФРАТОРЫ/ДЕШИФРАТОРЫ 1.84 MB
  Входы дешифратора предназначаются для подачи двоичных чисел выходы последовательно нумеруются десятичными числами. В таких устройствах двоичное число поступая на вход дешифратора вызывает появление сигнала на определенном его выходе.19а приведено символическое изображение дешифратора. Рассмотрим построение дешифратора осуществляющего преобразование заданное табл.
20188. Совершенствование деятельности административно-хозяйственной службы АЗИМУТ Отель Санкт-Петербург 423.5 KB
  Рассмотреть теоретические аспекты процесса обслуживания номерного фонда и его особенностей; исследовать и проанализировать организацию деятельность административно-хозяйственной службы АЗИМУТ Отеля Санкт-Петербург, обосновать экономическую эффективность предложенных мероприятий...
20189. ЛОГИЧЕСКИЕ ФУНКЦИИ Понятие о логической функции и логическом устройстве 153 KB
  Для того чтобы подчеркнуть особенности таких функций состоящую в том что сама функция и ее аргументы могут принимать значения логического нуля и логической единицы будем эти функции называть функциями алгебры логики ФАЛ. Такое устройство является комбинационным в котором значение формируемой на выходе логической функции определяется лишь значениями ее аргументов в данный момент времени. Элементарные логические функции.
20190. ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ 1.58 MB
  1 используется напряжение двух уровней: высокий уровень соответствует лог. При этом на резистре R образуется напряжение той полярности при которой диоды в цепях остальных входов оказываются под действием запирающего напряжения. На резисторе R образуется напряжение близкое к наибольшему из напряжений действующих на входах. В момент подачи на вход импульса изза емкости Сэк напряжение на выходе не может возрасти скачком; оно растет по экспоненциальному закону с постоянной времени так как Rвых R стремясь к значению Uвх R R Rвых.