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 При цьому методі організації переривань контролери ЗП видають тільки сигнал з одиницею у молодшому біті, а адреса підпрограми обробки переривань закладається у програмі полінгу. Отже, немає потреби у командах рестартів.


 

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

50670. Измерение коэффициента ошибок в цифровых каналах телекоммуникационных систем 186 KB
  Цель работы Ознакомление с приборами методами и схемами измерений коэффициента ошибок в цифровых каналах телекоммуникационных систем; методами оценки качества цифровой модуляции с использованием глазковых диаграмм и диаграмм рассеяния. Экспериментальная часть Измерение коэффициента ошибок на выходе канала передачи информации. Отношение сигнал шум 5 6 7 9 11 15 Число ошибок 54320 50290 56350 57420 35240 1 Общее число принятых бит 111700 106100 123800 148900 102800 466000 Коэффициент ошибок 0.
50671. Изучение законов динамики вращательного движения твёрдого тела вокруг неподвижной оси на маятнике Овербека 292.5 KB
  В этой модели считается что трение в оси неподвижного блока отсутствует этот блок невесом а момент сил трения в оси блока с крестовиной не зависит от угловой скорости вращения В этих условиях ускорение груза массой m постоянно на всём отрезке движения H. Тогда рассмотрим систему состоящую из блока 1 с моментом инерции который может вращаться вокруг неподвижной горизонтальной оси и блока 2 с моментом инерции вращающегося вокруг оси . Запишем основное уравнение динамики вращательного движения для каждого блока учитывая что...
50673. Изучение метода последовательного анализа при испытании на надежность элементов и устройств информационной техники 71.5 KB
  В результате исследования процесса возникновения отказов в аппаратуре ИИС убедимся в простоте метода последовательного анализа при испытаниях на надежность который опираясь на данных о границах надежности и рисках потребителя и изготовителя позволяет принять решение о принадлежности партии изделий к принимаемой или бракуемой группе.
50675. Функции системы MATLAB 108 KB
  Изучение основных функций системы MATLAB. Создание новых функций и построение их графиков в среде MATLAB. Решение систем линейных уравнений. Изучение генератора базовой случайной величины.
50676. Изучение методов структурного резервирования 95.5 KB
  Требуется с помощью различных видов резервирования обеспечить надежность системы в течении T = 1000 часов c вероятностью безотказной работы не менее Pдоп = 0.95 задавая кратность резервирования определяя её стоимость. Необходимо определить какой тип резервирования наиболее эффективен.