System Przerwan

Embed Size (px)

Citation preview

  • 8/19/2019 System Przerwan

    1/69

    INSTYTUT ELEKTRONIKI

    POLITECHNIKI ŚLĄSKIEJ

    Zak ład Uk ładów Cyfrowych i Mikroprocesorowych

    Seria Pomoce Dydaktyczne Nr 8

    Zdzisław Pogoda

    ROZDZIAŁ 4

    STSTEM PRZERWAŃ

    Materiały pomocnicze do przedmiotu:

    Systemy komputerowe i mikroprocesory

    dla

    Kierunku Elektronika

    GLIWICE 2003

  • 8/19/2019 System Przerwan

    2/69

    Instytut ElektronikiPolitechniki Ślą skiejul. Akademicka 1644 - 101 Gliwice

    Seria Pomoce Dydaktyczne

    1. Z. Pogoda, Pamięć notatnikowa, 19932. Z. Pogoda, Pamięć wirtualna, 19933. Z. Pogoda, Arytmetyka komputerów, 19944. Z. Pogoda, Podstawy techniki mikroprocesorowej cz. 1, 19945. Z. Pogoda, Podstawy techniki mikroprocesorowej cz. 2, 19946. Z. Pogoda, Wstęp do systemów komputerowych, 19947. Z. Pogoda, Mikroprocesory 16/32 bitowe, 19948. Z. Pogoda, System przerwań, 2003

    Seria Varia

    1. Zlecenia Systemu Operacyjnego DOS 6.0

    Wydano nakładem własnym Instytutu Elektroniki© Zdzisław Pogoda R1Gliwice 2003

  • 8/19/2019 System Przerwan

    3/69

    I

    4. SYSTEM PRZERWAŃ 1

    4.1. Ogólne własności systemu przerwań 1

    4.2. Przerwania w mikroprocesorach 8080/85 64.3. Jednopoziomowy, wielourządzeniowy uk ład przerwań 134.4. Wektorowy uk ład przerwań 17

    4.5. Zagnieżdżanie przerwań 214.6. Kontroler przerwań 8214 264.7. Rozszerzanie uk ładu przerwań z kontrolerem 8214 294.8. Kontroler przerwań 8259A 34

  • 8/19/2019 System Przerwan

    4/69

    II

  • 8/19/2019 System Przerwan

    5/69

    4. System przerwań

    4.1. Ogólne własności systemu przerwań

    W czasie normalnej pracy mikroprocesora powstają sytuacje, w których konieczne jest chwilowe

    wstrzymanie realizacji jednego programu i rozpo-

    czę cie innego z zachowaniem możliwości powrotu.Takie działanie nazywa się   przerwaniem programu.Program, który podlega przerwaniu bę dziemyw dalszym cią gu nazywać  programem  g ł ównym,

    a nowy program, rozpoczynają cy działanie - pro-gramem obsł ugi  przerwania. Mechanizm przerwańdokonuje wię c przełą czenia programów w mikro-

     procesorze (rys. 4.1).

    Można wymienić trzy główne przyczyny wymagają ce przerywania bieżą cego programu:

    •  Obsł uga urz ądzeń  we/wy. Urzą dzenia we/wy działają   zwykle ze znacznie mniejszą  pr ę dkością  niż procesor. Mię dzy dwoma kolejnymi bajtami, które mogą  być przyjmo-wane lub wysyłane przez urzą dzenie, mikroprocesor może wykonać  wiele rozkazów

     programu głównego. Przerwanie nastę  puje w chwilach, gdy urzą dzenie jest gotowe do przyję cia lub wysłania danej. Program obsługi przerwania wykonuje czynności zwią za-ne z pobieraniem lub wysyłaniem danych.

    •   Reakcja na zdarzenia zewnętrzne. Jeżeli mikroprocesor pracuje w systemie sterowania,to pewne zdarzenia zewnę trzne mogą  wymagać wykonania określonych czynności. Np.

     po wypełnieniu zbiornika sk ładnikami, konieczne jest uruchomienie mechanizmu mie-szania z podgrzewaniem wg określonego programu. Program obsługi przerwania sterujewtedy napę dami i elementami grzewczymi.

    •  Wewnętrzne sytuacje wyjątkowe. Przyczyna przerwania powstaje wewną trz mikropro-cesora i zwią zana jest z sytuacjami uniemożliwiają cymi poprawną  realizację  programu.Typowymi przyczynami przerwań  wewnę trznych są : próba dzielenia przez zeroi naruszenie warunków ochrony pamię ci.

    Pierwsze dwie przyczyny przerwań znajdują  się  poza mikroprocesorem i takie przerwa-nia nazywają  się  przerwaniami zewnętrznymi (ang. interuptions). Z punktu widzenia mikro-

     procesora jest sprawą  oboję tną , czy źródłem przerwania było urzą dzenie we/wy, czy sterowa-ny proces technologiczny. Różnica bę dzie dotyczyła jedynie funkcji wykonywanych przez

     program obsługi przerwania. Przerwania zewnę trzne mogą  być  inicjowane wyłą cznie za po-mocą  zewnę trznych sygnałów przerwań. Prawie wszystkie mikroprocesory posiadają  mecha-nizm umożliwiają cy reakcję  na przerwania zewnę trzne.

    Przerwania wewnętrzne (ang. exeptions) nie wystę  pują  w każdym mikroprocesorze. Np. jeśli mikroprocesor nie wykonuje operacji dzielenia i nie jest wyposażony w mechanizmochrony pamię ci, to brak takich przyczyn przerwania. W szczególności mikroprocesory8080/85 nie posiadają  przerwań wewnę trznych.

    Program główny

    przerwanie

    Program główny

    Program obsługiprzerwania

     Rys. 4.1. Przełączanie programów przy przerwaniu

  • 8/19/2019 System Przerwan

    6/69

    INSTYTUT ELEKTRONIKI - 4.2 - Z. Pogoda

    Podstawowym warunkiem poprawnego wykonania przerwania (przełą czenia progra-mów) jest zapewnienie powrotu do programu głównego. Warunek ten narzuca ograniczeniena moment czasu, w którym takie przełą czenie może się  rozpocząć. Na to, by przerwany pro-

    gram mógł być poprawnie wznowiony, konieczne jest zapewnienie, by po powrocie z prze-rwania zawartości wszystkich rejestrów i stany przerzutników sterują cych mikroprocesora,istotne dla działania programu, były takie same, jak w momencie jego przerywania. Zbiór tych wszystkich informacji nazywa się   stanem programu. Oznacza to, że w chwili wykony-wania przerwania stan programu musi być zapamię tany w bezpiecznym miejscu a nastę  pnieodtworzony w chwili powrotu z obsługi przerwania. Aby mechanizm przełą czania progra-mów był efektywny czasowo ilość  informacji stanowią cej stan programu powinna być moż-liwie mała. Ze wzglę du na cykliczność pracy mikroprocesora takim momentem czasu jest za-kończenie kolejnego cyklu rozkazowego. Wykonanie nastę  pnego rozkazu programu jest uza-leżnione jedynie od zawartości rejestrów dostę  pnych programowo. Natomiast zawartości reje-strów roboczych i stany przerzutników sterują cych mikroprocesora, do których nie ma dostę -

     pu programowego, nie są   już ważne w nastę  pnym cyklu rozkazowym. Ponieważ po zakoń-czeniu programu obsługi przerwania konieczne jest wznowienie programu głównego od roz-kazu, który nie został jeszcze wykonany, to ważną  informacją  o stanie programu jest adres te-go rozkazu. Adres ten nazywa się  adresem  powrotnym. Zapamię tywanie adresu powrotnego

     jest obowią zkowe przy każdym przerwaniu i dlatego wykonywane jest zazwyczaj w sposóbautomatyczny. Wynika stą d, że program obsługi przerwania jest specyficznym rodzajem pod-

     programu. Jego specyfika polega na tym, że nie jest on inicjowany za pomocą  rozkazu skokuze śladem znajdują cego się  w programie głównym, lecz jest wywoływany przez przyczynę 

     przerwania. Przyczyna przerwania może się   pojawić  w dowolnym momencie czasu a wię cw czasie trwania cyklu rozkazowego. Natomiast rozpoczę cie obsługi przerwania może nastą -

     pić najwcześniej po zakończeniu bieżą cego cyklu rozkazowego.Drugą  grupą  informacji sk ładają cych się  na stan programu są  zawartości rejestrów pro-

    gramowych. Różne mikroprocesory posiadają  różne liczby tych rejestrów. Niekiedy może ich być bardzo wiele (np. kilkadziesią t). Ważne jest by te zawartości były takie same w chwili powrotu, jakie były w chwili przerywania. Zapamię tywać trzeba bę dzie zawartości tylko tychz nich, które bę dą  używane w programie obsługi. Nie jest wię c celowe wprowadzanie do mi-kroprocesora mechanizmu, który spowoduje automatyczne zapamię tanie zawartości wszyst-kich rejestrów dostę  pnych programowo. Zapamię tanie to jest zazwyczaj realizowane przez

     program obsługi przerwania. W programie tym wiadomo, jakie rejestry bę dą  używane i tylkoich zawartości muszą  być zapamię tywane.

    Dla organizacji powrotu z programu obsługi przerwania wykorzystuje się  taki sam me-

    chanizm, jaki jest stosowany przy skokach do podprogramów i powrotów z nich. Wystarczyaby mechanizm przerwań powodował zapamię tanie adresu powrotnego w tym samym miej-scu, w którym zapamię tuje go rozkaz skoku ze śladem. Wtedy taki sam rozkaz bę dzie mógł

     być użyty do powrotu z podprogramu i z programu obsługi przerwania.Czas wykonywania programu obsługi przerwania może się   zawierać  w bardzo szero-

    kich granicach: od kilkunastu rozkazów, w przypadku prostych operacji we/wy, do wielu mi-

    nut a nawet godzin, w przypadku sterowania w czasie rzeczywistym. Wię kszą   część  czasu pracy mikroprocesora może zajmować obsługa przerwań. To działanie może być uznane zagłówne w systemie. Przerywany program główny stanowi wtedy rodzaj „wypełniacza”, wy-korzystują cego czas, w którym mikroprocesor nie realizuje swoich podstawowych zadań.Mówi się  wtedy o przetwarzaniu w „tle”.

  • 8/19/2019 System Przerwan

    7/69

    Z. Pogoda - 4.3 - INSTYTUT ELEKTRONIKI

    W systemach mikroprocesorowych wystę  puje zazwyczaj wiele źródeł  przerwań, któremogą  pochodzić od różnych urzą dzeń zewnę trznych. Mechanizm przerwań musi wię c umoż-liwiać aktywację   różnych programów obsługi w zależności od przyczyny. Dla każdego sys-

    temu przerwań  istnieje maksymalna ich liczba, stanowią ca pojemność  tego systemu. Ponie-waż przerwania zewnę trzne powstają  w sposób asynchroniczny wzglę dem pracy mikroproce-sora, wię c może się  zdarzyć, że w czasie trwania jednego cyklu rozkazowego pojawi się  wię -cej niż jedno przerwanie. Konieczne jest wię c stworzenie mechanizmu umożliwiają cego wy-

     bór jednego z wielu przerwań, które zostanie obsłużone jako pierwsze. Wybór ten może byćdokonywany jednym z dwóch sposobów: programowo lub sprzę towo. W obydwu przypad-kach system przerwań musi być wyposażony w środki umożliwiają ce dokonanie tego wyboru.Jeśli spośród kilku aktywnych przerwań dokonuje się  wyboru jednego, to tym samym obdarzasię   go wyższym priorytetem niż  pozostałe. Wynika stą d, że wszystkim źródłom przerwańtrzeba przyporzą dkować  priorytety, umożliwiają ce kolejną   ich obsługę . Jeśli te priorytetyustalone są  w sposób sprzę towy, to mówi się  o tzw.  priorytetowym systemie przerwań. Prio-

    rytety nadane przyczynom przerwań w sposób sprzę towy są , na ogół, niezmienialne (tzn. niemogą  być zmieniane programowo). Programowy wybór przerwania do obsługi umożliwia za-stosowanie dowolnego algorytmu wyboru, lecz czas upływają cy od chwili powstania prze-rwania do chwili podję cia jego obsługi, zwany czasem reakcji systemu przerwań, wydłuża się .

    Z chwilą   rozpoczę cia programu obsługi przerwania mikroprocesor zachowuje się   tak samo, jak w czasie realizacji przerwanego programu głównego. Nie ma żadnej różnicy po-mię dzy realizacją   cią gu rozkazów należą cego do programu głównego i programu obsługi

     przerwania. W czasie wykonywania programu obsługi jednego przerwania może powstać in-ne. Powstaje wtedy problem: jak mikroprocesor ma się  zachować w takiej sytuacji? Możliwesą  dwa sposoby rozwią zania tego problemu:

    •  Obsługa nowego przerwania nie może się   rozpocząć, dopóki nie zostanie zakończony bieżą cy program obsługi. Przerwania wielokrotne obsługiwane w taki sposób nazywają się   przerwaniami wzgl ędnymi (rys. 4.2). Przerwania obsługiwane są  wtedy kolejno.

    •   Nowe przerwanie może spowodować  przerwanie trwają cego programu obsługi. Prze-rwania wielokrotne obsługiwane w taki sposób nazywają   się przerwaniami bezwzgl ęd-nymi  (rys. 4.3). Obsługa przerwań  realizowana jest tak, jak zagnieżdżają cych się  pod-

     programów.

    Program główny

    Program główny

    Kontynuacja programugłównego

    Kontynuacja programugłównego

    Program obsługi 1

    Program obsługi 2

    Program obsługi 2

    Program obsługi 2

    INT1

    INT1

    INT2INT2

     Rys. 4.2. Przerwania wzgl ędne (kolejne)  Rys. 4.3. Przerwania bezwzgl ędne

  • 8/19/2019 System Przerwan

    8/69

    INSTYTUT ELEKTRONIKI - 4.4 - Z. Pogoda

    Aby umożliwić takie działanie, konieczne jest przyję cie zasady, zgodnie z któr ą , rozpo-czę cie dowolnego programu obsługi zwią zane jest z zablokowaniem mechanizmu przerwań.Blokada przerwań  jest stanem wewnę trznym mikroprocesora, w którym nie reaguje on na

    zewnę trzne sygnały przerywają ce. Zasada ta przyję ta jest we wszystkich mikroprocesorach:rozpoczę cie programu obsługi przerwania powoduje automatyczne zablokowanie przerwań.Odblokowanie przerwań  może być  wykonane  jedynie  drogą   programową   przez wykonanieodpowiedniego rozkazu. Od programów obsługi zależy wię c, czy wielokrotne przerwania ob-sługiwane bę dą  w sposób kolejny (rys. 4.2), czy w sposób zagnieżdżony (rys. 4.3).Jeżeli po-szczególnym źródłom przerwań nadane zostaną  priorytety, to jest rzeczą  naturalną , by przy-czyna o niższym priorytecie nie mogła spowodować  przerwania programu obsługi uaktyw-nionego przez przyczynę  o wyższym priorytecie. Wymaga to wyposażenia systemu przerwańw dodatkowe środki sprzę towe, umożliwiają ce generację  sygnału przerywają cego pochodzą -cego jedynie od przyczyny o wyższym priorytecie, niż przerwanie aktualnie obsługiwane.

    Kolejnym stopniem rozwoju systemów przerwań  jest wprowadzenie możliwości chwi-lowego blokowania wybranego przerwania w sposób programowy. Taki rodzaj blokady na-zywa się  maskowaniem  przerwań. Różnica mię dzy maskowaniem i blokowaniem polega natym, że maskowanie wykonywane jest wyłą cznie z inicjatywy programu i dotyczy wybranego

     przerwania, natomiast blokada wykonywana jest automatycznie i dotyczy wszystkich prze-

    rwań. Dla umożliwienia pełnej kontroli stanu blokady przerwań, mikroprocesory, zwykle po-siadają  tak że rozkaz powodują cy zablokowanie wszystkich przerwań. Niektóre mikroproceso-ry posiadają  specjalne przerwanie używane w sytuacjach katastroficznych (np. błą d parzysto-ści w dostę  pie do pamię ci lub na magistrali danych). Wykonywanie bieżą cego programu musi

     być wtedy natychmiast przerwane i działanie to nie może być ani blokowane ani maskowane.Takie przerwanie nazywa się  niemaskowalnym (NMI - ang. non maskable interrupt ).

    Z każdą   przyczyną   przerwania zwią zany jest odpowiadają cy jej program obsługi, zaj-mują cy określone miejsce w pamię ci operacyjnej. Ze wzglę du na to, że programy te muszą 

     być w każdej chwili gotowe do wykonania, muszą  one być programami rezydencyjnymi. Niewyklucza to ładowania nak ładek w czasie ich wykonywania. Mechanizm przerwań musi po-siadać  środki umożliwiają ce uaktywnienie programu przypisanego do obsługi określonego

     przerwania. W praktyce sprowadza się  to do określenia adresu startowego danego programu.Procedura uaktywniania programu obsługi wykonywana jest zazwyczaj w dwóch fazach.W pierwszej fazie nastę  puje identyfikacja źródła przerwania, w wyniku której określany jestnp. jego numer. W drugiej fazie numer przerwania zostaje przetworzony na adres startowy

     programu obsługi. Działanie to może być wykonywane na drodze sprzę towej lub w sposóbkombinowany: częściowo sprzę towo, częściowo programowo. Oczywiście, sprzę towy sposóbokreślania tego adresu pozwala uzyskać mniejszy czas reakcji systemu przerwań. Niekiedy,dla uproszczenia konstrukcji systemu przerwań, przyjmuje się , że programy obsługi muszą  się rozpoczynać  w komórkach pamię ci o ściśle określonych przez konstrukcję   mikroprocesoraadresach i nie mogą  ulegać zmianie. Uzyskuje się  wtedy proste konstrukcje, lecz sposób tenuniemożliwia swobodne prowadzenie gospodarki pamię cią .

    Ze wzglę du na sposób identyfikacji źródła przerwania, systemy przerwań  można po-dzielić na trzy rodzaje:

    •   Jednopoziomowy uk ł ad przerwań. Mikroprocesor posiada jeden sygnał  przerywają cy,który jest równy sumie logicznej wszystkich sygnałów przerywają cych, pochodzą cych

  • 8/19/2019 System Przerwan

    9/69

    Z. Pogoda - 4.5 - INSTYTUT ELEKTRONIKI

    od różnych urzą dzeń  (rys. 4.4). Istniejetylko jeden program obsługi, rozpoczyna-

     ją cy się   od ściśle ustalonego adresu.

    Czynnością   wstę  pną   tego programu jestwtedy stwierdzenie, które urzą dzenie wy-wołało przerwanie. Jeśli takich urzą dzeń

     było wię cej, to program musi dokonaćwyboru, które z nich ma być obsługiwane

     jako pierwsze.

    •  Wielopoziomowy uk ł ad przerwań. Mikro- procesor posiada kilka wejściowych sy-gnałów przerywają cych (rys. 4.5). Z każ-dym z nich zwią zany jest inny adres roz-

     poczynania programu obsługi. Jeśli w tymsamym czasie aktywnych jest wię cej sy-gnałów przerywają cych, to konieczny jestwybór jednego z nich. W zwią zku z tym,każdemu poziomowi przyporzą dkowany

     jest określony priorytet. Z każdym pozio-mem może współ pracować  wię cej urzą -dzeń, podobnie jak w uk ładzie jednopo-ziomowym. Wszystkie przerwania po-

    dzielone zostają   na klasy priorytetowe.Identyfikacja przerwania odbywa się  wię c

    sprzę towo mię dzy poziomami (klasami)i programowo w obr ę  bie klas.

    •  Wektorowy uk ł ad przerwań. Mikroproce-sor posiada jedno wejście  przerywające(rys. 4.6 ). Jednak po przyję ciu sygnału

     przerwania , mikroprocesor pobiera z oto-

    czenia dodatkową   informację   identyfiku- ją cą   przerwanie (najczęściej za pomocą magistrali danych). Identyfikator przerwa-

    nia jest użyty do wyznaczenia adresu pro-

    gramu obsługi. Stą d, nazywa się  on wekto-rem przerwania. Przetworzenie wektora

     przerwania na adres programu obsługi od- bywa się  w sposób sprzę towy. Wektoroweuk łady przerwań  są   z tego powodu naj-szybsze (zapewniają   najmniejszy czas re-akcji).

    Jak wynika z powyższej analizy, część  funkcji zwią zanych z obsługą  przerwań wyko-nywanych jest wewną trz mikroprocesora a część poza nim. Cały system przerwań sk łada się wię c z dwóch części: wewnę trznego uk ładu przerwań  i zewnę trznego uk ładu przerwań. We-

       M   I   K   R   O   P   R   O   C   E   S   O   R

       M   I   K   R   O   P   R   O   C   E   S   O   R

    PRZERWANIE

    URZ Ą DZENIE #0

    URZ Ą DZENIE #1

    URZ Ą DZENIE #2

    URZ Ą DZENIE #3

     Rys. 4.4. Jednopoziomowy uk ł ad przerwań

     Rys. 4.5. Wielopoziomowy uk ł ad przerwań

    URZ Ą DZENIE #0

    URZ Ą DZENIE #1

    URZ Ą DZENIE #2

    URZ Ą DZENIE #3

    PRZERWANIE #0

    PRZERWANIE #1

    PRZERWANIE #2

    PRZERWANIE #3

       M

       I   K   R   O   P   R   O   C   E   S   O   R

     Rys. 4.6. Wektorowy uk ł ad przerwań

    PRZERWANIE

    IDENTYFIKATOR(WEKTOR)

    PRZERWANIA

  • 8/19/2019 System Przerwan

    10/69

    INSTYTUT ELEKTRONIKI - 4.6 - Z. Pogoda

    wnę trzny uk ład przerwań  jest cechą  konstrukcyjną  mikroprocesora i projektant systemu mi-kroprocesorowego nie posiada wpływu na sposób jego funkcjonowania. Zewnę trzny uk ład

     przerwań może być  swobodnie kształtowany przez projektanta, zależnie od wymagań doty-

    czą cych obsługi przerwań  i ich liczby. Niektórzy producenci mikroprocesorów dostarczają specjalizowane kontrolery przerwań, które ułatwiają   projektowanie zewnę trznego uk ładu

     przerwań. Należy podkreślić, że struktura i funkcje systemu przerwań mają  znaczny wpływna postać programu obsługi. Nie istnieje wię c poję cie uniwersalnego programu obsługi.

    4.2. Przerwania w mikroprocesorach 8080/85

    Wewnę trzny uk ład przerwań mikroprocesora 8080 charakteryzuje się   wyją tkową   pro-stotą . Sk ładają  się  na niego dwa przerzutniki, jedna bramka oraz dekoder wykrywają cy rozka-zy EI  ( Enable Interrupt ) i DI  ( Disable Interrupt ). Na rys. 4.7 pokazany jest funkcjonalnyschemat tego uk ładu, bez uwzglę dnienia zależności czasowych. Skuteczność  zewnę trznego

    sygnału przerywają cego INT uzależniona jest od stanu przerzutnika zezwolenia na przerwaniaINTE ( Interrupt Enable). Przerzutnik ten może być wzbudzany i zerowany programowo przezwykonanie rozkazów EI oraz DI. Jeśli przerzutnik INTE jest wyzerowany, to sygnał INT nie mawpływu na działanie mikroprocesora. Jeśli wewnę trzny uk ład przerwań jest odblokowany, towzbudzony zostaje przerzutnik INT, co powoduje powstanie wewnę trznego sygnału INTA. Sy-gnał ten zeruje przerzutnik zezwolenia na przerwania i uk ład przerwań zostaje zablokowany.Ponadto, zostaje on przekazany na zewną trz w postaci bitu w słowie stanu. Testowanie sy-gnału INT odbywa się  w ostatnim takcie zegarowym każdego cyklu rozkazowego. Ponieważsygnał  INT może się  pojawić w dowolnym momencie, wię c aby jego istnienie mogło zostać

    INT

    INTE

    RESET

    INTA

    INTE

    D Q

    C

    S

    D Q

    INT

    REJESTR ROZKAZÓW

    DEKODER ROZKAZÓW

    EI

    DI

     Rys. 4.7. Wewnętrzny uk ł ad przerwań w mikroprocesorze 8080

  • 8/19/2019 System Przerwan

    11/69

    Z. Pogoda - 4.7 - INSTYTUT ELEKTRONIKI

    zarejestrowane w przerzutniku INT, musi on trwać nie krócej niż czas realizacji najdłuższegorozkazu. Najdłużej trwają cym rozkazem jest rozkaz XTHL  (wymiana zawartości pary reje-strów HL ze stosem) realizowany w czasie 18 taktów zegarowych, co przy standardowej czę -

    stotliwości daje 9 µs. Wzbudzenie przerzutnika INT blokuje też inkrementację  licznika rozka-zów PC na cały nastę  pny cykl rozkazowy. Na tym kończą  się  funkcje wewnę trznego uk ładu

     przerwań i rozpoczyna się  kolejny cykl maszynowy, który jest pierwszym cyklem maszyno-wym nowego cyklu rozkazowego, tzn. jest to cykl maszynowy pobierania rozkazu, lecz wy-

    konywany z ustawionym bitem INTA w słowie stanu. Cykl taki nazywa się  INTERRUPT. Cyklmaszynowy obsługi przerwania różni się  od zwyk łego cyklu pobierania rozkazu FETCH na-stę  pują cymi cechami:

     1.  Stan licznika rozkazów PC  nie jest zmieniany przez cały czas trwania noworozpo-czynanego rozkazu, dzię ki czemu zawiera on stale adres nastę  pnego rozkazu w pro-gramie głównym, który był by wykonywany, gdyby przerwanie nie wystą  piło. Jest to

    wię c adres powrotny, od którego należy wznowić program główny po zakończeniuobsługi przerwania. 2.  Nowy rozkaz pobierany jest w zwyk ły sposób z magistrali danych, ale źródłem jegonie jest pamięć, lecz zewnę trzny uk ład przerwań. W słowie stanu zamiast aktywnego

     bitu MEMR, pojawia się  aktywny sygnał INTA. Sygnał ten używany jest w zewnę trz-nym uk ładzie przerwań do strobowania na magistralę  danych rozkazu, który spełniarolę  wektora przerwań. Równocześnie wewnę trzny uk ład przerwań zostaje zabloko-wany.

    Wewnę trzny uk ład przerwań blokowany jest też przez wykonanie operacji RESET. Jestto konieczne, ponieważ w chwili załą czania napięć zasilają cych lub inicjalizacji pracy mikro-

     procesora, może on nie być  gotowy do natychmiastowej obsługi przerwań  (np. w pamię ciRAM brak programów obsługi). Jak wynika z rys. 4.7 istnieją  trzy przyczyny blokowania prze-rwań, tj. operacja zerowania, rozpoczę cie obsługi przerwania i wykonanie rozkazu DI. Nato-miast odblokowanie uk ładu przerwań  może być  dokonane tylko jednym sposobem - przezwykonanie rozkazu EI. Zasada ta przestrzegana jest w wię kszości mikroprocesorów.

    Sygnał  INTA  (ang.  Interrupt Acknowledge), stanowią cy potwierdzenie rozpoczę cia ob-sługi przerwania, powinien skasować żą danie obsługi przerwania INT w zewnę trznym uk ła-dzie przerwań, by zapobiec ponownej obsłudze tego samego przerwania po odblokowaniuwewnę trznego uk ładu przerwań.

    Moment odblokowania wewnę trznego uk ładu przerwań  ustalany jest programowo,w zwią zku z czym, w programie obsługi rozkaz EI musi wystą  pić. Gdyby bowiem zabrak ło

    tego rozkazu, to żadne przerwanie nie byłoby już obsługiwane. Miejsce wystę  powania tegorozkazu w programie obsługi jest zależne od trybu obsługi przerwań. Jeśli przerwania mają  być  obsługiwane kolejno, tzn. jeden program obsługi nie może być  przerywany przez inne przerwania, to rozkaz EI powinien być ostatnim rozkazem programu, znajdują cym się  bezpo-średnio przed rozkazem powrotu RET  (przerwania wzglę dne). Jeśli natomiast dopuszczalne

     jest zagnieżdżanie się  przerwań (przerwania bezwzglę dne), to rozkaz EI powinien wystą  pić na począ tku programu obsługi. Oczywiście, możliwe jest zabezpieczanie krytycznych czasowofragmentów programu obsługi przed przerwaniami o wyższym priorytecie. Sytuacje takiemogą   wystą  pić  w programach wymiany danych z pamię ciami z wirują cym nośnikiem,w których transmisja bloku danych nie może być przerwana. Orientacyjne przebiegi czasowesygnałów uczestniczą cych w realizacji cyklu maszynowego przerwania pokazane są  na rys. 4.8.

  • 8/19/2019 System Przerwan

    12/69

    INSTYTUT ELEKTRONIKI - 4.8 - Z. Pogoda

    Cykl maszynowy obsługi przerwania kończy się   wię c wprowadzeniem wektora prze-rwania do rejestru rozkazów i zablokowaniem wewnę trznego uk ładu przerwań. W zwią zkuz tym, wektor przerwania interpretowany jest jak każdy inny rozkaz pobrany z pamię ci.Wektorem przerwań może być w zasadzie dowolny rozkaz i stanowi on pierwszy rozkaz pro-gramu obsługi. Jest to sytuacja wyją tkowa, polegają ca na tym, że mikroprocesor wykonujerozkaz nie znajdują cy się  w żadnym z programów w pamię ci operacyjnej. Rozkaz ten jest ge-nerowany w zewnę trznym uk ładzie przerwań.

    Prawidłowe wykonanie przerwania musi spełniać dwa nastę  pują ce warunki:

     1.  Zabezpieczenie stanu licznika rozkazów, zawierają cego adres kolejnego rozkazu pro-gramu głównego, od którego musi być wznowiona jego realizacja po zakończeniu ob-sługi przerwania,

     2.  Załadowanie do licznika rozkazów adresu począ tkowego programu obsługi przerwania.

     Nastę  pne rozkazy realizowane są   już w standardowy sposób, jak w przypadku progra-mu głównego. W zależności od przyczyny przerwania muszą  być inicjowane różne programyobsługi. Wobec tego wektor przerwania (rozkaz) musi zawierać  informację   umożliwiają cą wykonanie skoku do właściwego programu obsługi. Rozkazem spełniają cym te warunki jestrozkaz skoku ze śladem CALL. Jest to rozkaz o długości trzech bajtów, posiadają cy nastę  pują -cy format:

    CALL: 1 1 0 0 1 1 0 1 x”CD”

    mniej znaczą cy bajt adresu

    bardziej znaczą cy bajt adresu

    Dla przechowania bieżą cej zawartości licznika rozkazów (śladu, adresu powrotnego),rozkaz ten wykorzystuje stos umieszczony w pamię ci operacyjnej. Przed pierwszym użyciem

    φ1

    φ2

    INT

    INTE

    INT F/F

    MAG.DANYCH

    DBIN

    STAN INTA WEKTORPRZERWAŃ

    Obsługa przerwań

    M1

    T2T1 T3

     Rys. 4.8. Orientacyjne przebiegi sygnał ów w cyklu maszynowym przerwania

  • 8/19/2019 System Przerwan

    13/69

    Z. Pogoda - 4.9 - INSTYTUT ELEKTRONIKI

    tego rozkazu (po operacji zerowania RESET) należy ustalić począ tek (dno) stosu przez wpisa-nie odpowiedniego adresu do wskaźnika stosu SP. Można to zrobić za pomocą  rozkazu łado-wania bezpośredniego pary bajtów

    LXI SP, stack_addr  

    gdzie stack_addr   jest nazwą  symboliczną  (adresem symbolicznym) dna stosu. Jeśli wię c pro-gramy obsługi przerwań znajdują  się  w pamię ci stałej ROM i nie jest wymagane żadne ich ła-dowanie, to odblokowanie przerwań może być wykonane zaraz po zainicjowaniu stosu. Roz-kaz CALL wykonywany jest w 5 cyklach maszynowych obejmują cych łą cznie 17 taktów zega-rowych (8.5 µs). Funkcje wykonywane przez rozkaz CALL można opisać w nastę  pują cy spo-sób, uwzglę dniają c, że wskaźnik stosu SP zawiera adres ostatnio zapisanej komórki i zapeł-niany jest w kierunku maleją cych adresów

    (PCH) → ((SP) – 1) - przesłanie na stos bardziej znaczą cej częścilicznika rozkazów

    (PCL) → ((SP)-2) - przesłanie na stos mniej znaczą cej części liczni-ka rozkazów

    (SP) – 2 →SP - uaktualnienie zawartości wskaźnika stosu(bajt2)(bajt1) → PC - załadowanie do licznika rozkazów adresu po-

    czą tkowego podprogramu

    W kolejnych cyklach maszynowych wykonywane są  nastę  pują ce funkcje:

    M1 - wpisanie do rejestru rozkazów pierwszego bajtu rozkazu, pomniejszenie wartościwskaźnika stosu o jedność, powię kszenie zawartości licznika rozkazów o jedność,

    M2 - wpisanie do rejestru Z drugiego bajtu rozkazu, czyli mniej znaczą cej części adresu podprogramu, powię kszenie zawartości licznika rozkazów o jedność,

    M3 - wpisanie do rejestru W trzeciego bajtu rozkazu, czyli bardziej znaczą cej części ad-resu podprogramu, powię kszenie zawartości licznika rozkazów o jedność, licznik rozkazów zawiera adres nastę  pnego rozkazu,

    M4 - wysłanie bardziej znaczą cej części licznika rozkazów na stos, pomniejszenie za-wartości wskaźnika stosu o jedność,

    M5 - wysłanie mniej znaczą cej części licznika rozkazów na stos.

    Po zakończeniu rozkazu CALL wskaźnik stosu zawiera adres ostatnio zapisanej komórki a ad-res skokowy (podprogramu) zawarty jest w parze rejestrów WZ. W cyklu pobierania nastę  p-nego rozkazu na magistralę   adresową  wysyłana jest zawartość  rejestrów WZ  (adres podpro-

    gramu) a do licznika rozkazów wpisywana jest wartość  (WZ) + 1  →  PC. Nastę  pne rozkazy podprogramu realizowane są  już w zwyk ły sposób.Powrót z podprogramu odbywa się  za pomocą  rozkazu RETURN, wykonują cego nastę -

     pują ce funkcje:

    ((SP)) → PCL((SP) + 1 ) → PCH(SP) + 2 → SP

  • 8/19/2019 System Przerwan

    14/69

    INSTYTUT ELEKTRONIKI - 4.10 - Z. Pogoda

    Rozkaz ten wykonywany jest w trzech cyklach maszynowych

    M1 - wpisanie do rejestru rozkazów jednobajtowego rozkazu, powię kszenie zawartościlicznika rozkazów o jedność,

    M2 - pobranie ze stosu jednego bajtu i wpisanie go do rejestru Z, powię kszenie zawarto-ści wskaźnika stosu o jedność,

    M3 - Pobranie ze stosu kolejnego bajtu i wpisanie go do rejestru W, powię kszenie za-wartości wskaźnika stosu o jedność.

    Jeżeli w czasie wykonywania podprogramu stos był zrównoważony, to po zakończeniu roz-kazu RETURN, w rejestrach WZ znajdzie się  adres powrotny, zapisany na stosie przez rozkazCALL. Podobnie jak poprzednio, w czasie pierwszego cyklu maszynowego nastę  pnego cyklurozkazowego, na magistralę  adresową  wysyłana jest zawartość pary rejestrów WZ a do liczni-ka rozkazów wpisywana jest wartość (WZ) + 1 → PC.

    Opisane działania, zwią zane z wykonywaniem skoku do podprogramu i powrotu do

     programu głównego przedstawione są  poglą dowo na rys. 4.9.Jeżeli w czasie cyklu maszynowego obsługi przerwania, wektorem przerwań bę dzie kod

    rozkazu CALL, to wykonywany jest on podobnie jak poprzednio z tym, że blokowana jest in-krementacja licznika rozkazów w cyklach M1 i M2. Oznacza to, że licznik rozkazów zawieracią gle adres nastę  pnego rozkazu programu głównego. Rozpoczyna się   wykonanie rozkazuCALL w zwyk ły sposób, tzn. wykonywane są  dwa nastę  pne cykle maszynowe w celu skom-

     pletowania rozkazu. Konfiguracje bitów w słowie stanu wskazują  na cykle typu odczyt pa-mię ci (sygnał interfejsowy MEMR). Ale rozkaz nie może być kompletowany z pamię ci, tylkoz zewnę trznego uk ładu przerwań. Aby to umożliwić konieczne jest zastą  pienie dwóch kolej-nych impulsów MEMR  impulsami INTA. Operację   tak ą   wykonuje automatycznie sterownik magistrali 8228. Taka modyfikacja działania rozkazu CALL przedstawiona jest na rys. 4.10.

    W rezultacie, zewnę trzny uk ład przerwań otrzymuje trzy kolejno po sobie nastę  pują ceimpulsy INTA, które muszą   być  wykorzystane do strobowania na magistralę   danych trzechkolejnych bajtów rozkazu CALL. Ponieważ argumentem rozkazu CALL  jest pełny, 16-bitowy,adres pamię ci, to programy obsługi mogą  być położone w dowolnym miejscu przestrzeni ad-resowej. Projektant posiada pełną   swobodę   rozmieszczania w pamię ci elementów oprogra-mowania. Ażeby zewnę trzny uk ład przerwań mógł wygenerować rozkazy CALL z pełnymi ad-resami programów obsługi, musi być wyposażony w zespół  rejestrów, do których te adresyzostaną  wcześniej wpisane w sposób programowy. Wymagana wię c bę dzie procedura inicja-lizacji zewnę trznego uk ładu przerwań, który traktowany jest w niej jak urzą dzenie wyjściowe.

    W celu uproszczenia konstrukcji uk ładu przerwań, mikroprocesor 8080 wyposażonyzostał w uproszczone rozkazy skoku ze śladem RST  ( Restart ). Są   to rozkazy jednobajtowe,w których trzy bity mogą  być ustalane dowolnie. Te trzy bity wykorzystywane są  w mikro-

     procesorze do ustalenia adresu skokowego. Format tego rozkazu jest nastę  pują cy

    1 1 1 N N N 1 1

    Funkcje rozkazu RST N można opisać w nastę  pują cy sposób

    (PCH) → (SP) – 1(PCL) → (SP) – 2(SP) – 2 → SP

    8 ⋅ N → PC

  • 8/19/2019 System Przerwan

    15/69

    Z. Pogoda - 4.11 - INSTYTUT ELEKTRONIKI

    STOS

    n + 3 (L)n + 3 (H)

    Zajęta

    SP - 2SP- 1

    SP

    SP'SP' + 1

    SP' + 2

    CALL

    PAMIĘĆ

    n - 1nn + 1n + 2n + 3n + 4

    CALLm (L)m (H)

    PROGRAM GŁÓWNY

    RET

    RET

    SP' = SP + 2

    PC' n = 3

    IR PC m + k + 1RET

    PODPROGRAM

    PAMIĘĆ

    mm + 1m + 2

    m + k

    SP' = SP - 2

    m

    n + 3

    PC'

    PCIR CALL m (L) m (H)

    SP'SP' + 1SP' + 2

    SP - 2SP- 1SP

    STOS

    n + 3 (L)n + 3 (H)

    Zajęta PAMIĘĆ

    CALL

    IR CALL

    RET

    UKŁ ADPRZERWAŃ

    INTA

    m PC

    PC'

    n + 1

    m

    PAMIĘĆ

    n - 1nn +1

    INT

    PROGRAM GŁÓWNY

    RETPC

    PC'

    SP' = SP + 2

    n + 1

    m + k + 1RETIR

    PROGRAMOBSŁUGI

    PRZERWAŃ

    mm + 1m + 2

    m + k

     Rys. 4.9. Realizacja skoku do podprogramu i powrót do programu g ł ównego

     Rys. 4.9. Realizacja skoku do programu obsł ugi przerwania i powrót do programu g ł ównego

  • 8/19/2019 System Przerwan

    16/69

    INSTYTUT ELEKTRONIKI - 4.12 - Z. Pogoda

    Oznacza to, że po zapamię taniu na stosie bieżą cej zawartości licznika rozkazów (adresu śla-dowego), wpisywany jest do niego nowy adres (skokowy), równy

    (PC) = 00000000 00NNN000

    Trzybitowa liczba N  może przyjmować  8 różnych wartości, a wię c za pomocą   rozkazówRST N  można inicjować  8 różnych programów obsługi przerwań  rozpoczynają cych się w nastę  pują cych komórkach pamię ci

     AdresRozkaz

    szesnastkowy dziesiętnyRST 0 0000 0RST 1 0008 8RST 2 0010 16RST 3 0018 24RST 4 0020 32RST 5 0028 40

    RST 6 0030 48RST 7 0038 56

    Wynika stą d, że dla każdego programu obsługi zarezerwowany zostaje blok 8 komórek pa-mię ci. Typowe wykorzystanie tego bloku jest nastę  pują ce

    PUSH PSW ;zapamię tanie na stosie stanu procesoraPUSH B ;zapamię tanie na stosie zawartości pary rejestrów BCPUSH D ;zapamię tanie na stosie zawartości pary rejestrów DEPUSH H ;zapamię tanie na stosie zawartości pary rejestrów HLEI ;odblokowanie przerwańJMP INTN ;skok do programu obsługi przerwania o numerze N.

    Zmienna część wektora przerwania, generowanego przez zewnę trzny uk ład przerwań, jest w tym przypadku wielkością  3-bitową . Pozostałe bity mają  zawsze wartości równe 1. Za-sada generacji pełnego 8-bitowego wektora przerwań pokazana jest na rys. 4.11.

    NUMER ŹRÓDŁ APRZERWANIA

    0

    1

    2

    3

    4

    5

    6

    7   R   E   J   E   S   T   R   W   E   K   T   O   R   A

       P   R   Z   E   R   W   A        Ń

    MAGISTRALADANYCH

     Rys. 4.11. Generator jednobajtowego wektora przerwań

  • 8/19/2019 System Przerwan

    17/69

    Z. Pogoda - 4.13 - INSTYTUT ELEKTRONIKI

    4.3. Jednopoziomowy, wielourzą dzeniowy układ przerwań

    Podstawowym problemem w jednopoziomowym, wielourzą dzeniowym uk ładzie prze-

    rwań  jest identyfikacja źródła przerwania, umożliwiają ca rozpoczę cie, właściwego dla tegoźródła, programu obsługi. Powstanie wspólnego sygnału przerwania oznacza, że przynajmniej

     jedno z urzą dzeń żą dało obsługi.Możliwe są  dwa sposoby przeprowadzenia tej identyfikacji

    •  Sygnały żą dania przerwania zapamię tywane są   we wspólnym rejestrze przerwań, poodczytaniu zawartości którego programowo wybierane jest przerwanie, które bę dzie ob-sługiwane jako pierwsze.

    •  Każde źródło przerwania wyposażone jest w rejestr stanu, w którym wyróżniony bitzawiera informacje, czy dane źródło było przyczyną   powstania przerwania, czy nie.Konieczne jest wtedy odczytywanie zawartości rejestrów stanu (w programowo ustalo-nej kolejności), i podobnie jak poprzednio, podję cie decyzji, które z żą dań przerwania

    ma być obsługiwane jako pierwsze.

    Cechą   charakterystyczną   jednopoziomowego uk ładu przerwań  jest istnienie jednego programu obsługi. Uaktywnienie właściwej procedury obsługi odbywa się  na podstawie do-datkowej informacji, uzyskiwanej poprzez odczyt rejestru przerwań lub rejestrów stanu urzą -dzeń. W obydwu przypadkach wybór procedury obsługi dokonywany jest przez przeszukiwa-nie (ang. pooling ). Identyfikacja źródeł poprzez odczyt słów stanu jest operacją  dłużej trwają -cą , lecz można wtedy uzyskać wię cej informacji o stanie urzą dzenia. Ta dodatkowa informa-cja umożliwia wykonanie przez program obsługi różnych funkcji, zależnie od stanu urzą dze-nia.

    W przypadku mikroprocesora 8080 jednopoziomowy uk ład przerwań  może być  uzy-

    skany przez generację  zawsze tego samego wektora przerwań. Jeśli jednostka centralna z mi-kroprocesorem 8080 zawiera kontroler interfejsu 8228, to efekt taki może być uzyskany przez przyłą czenie wyjścia sygnał INTA do źródła napię cia +12 V. Generowany jest wtedy automa-

    INTA

    µPMAGISTRALA DANYCH

    KANAŁ#0

    KANAŁ#1

    KANAŁ#2

    Rejestr przerwań

    Przetwornik A/C

    Drukarka

    Koniec konwersji

    Bufor pusty

    INTA

    +5 V

    DI0

    8212

    DO

    DI7

     Rys. 4.12. Struktura jednopoziomowego uk ł adu przerwań

  • 8/19/2019 System Przerwan

    18/69

    INSTYTUT ELEKTRONIKI - 4.14 - Z. Pogoda

    tycznie wektor przerwania, na który sk ładają  się  same jedynki, co odpowiada rozkazowi RST7  i wspólny program obsługi przerwań musi się   rozpoczynać w komórce pamię ci o adresie56d. Na rys. 4.12  pokazany jest przyk ład uk ładu, w którym generatorem wektora przerwań

     jest rejestr 8-bitowy, którego wyjścia przyłą czane są  do magistrali danych przez aktywny po-ziom sygnału INTA.

    Sygnały gotowości urzą dzenia do wysłania lub przyję cia bajtu danych wpisywane są  dorejestru przerwań oraz przez bramk ę  sumy logicznej wprowadzane są  na wejście przerywają -ce mikroprocesora. Sygnały te traktowane są  jako żą dania obsługi. Pojawienie się  co najmniej

     jednego żą dania przerwania powoduje rozpoczę cie cyklu INTERRUPT  w mikroprocesorze.Efektem tego jest powstanie sygnału INTA, który wyprowadza na magistralę  danych same je-dynki. Mikroprocesor wykonuje rozkaz RST 7, czyli rozpoczyna program obsługi od adresu56d. Równocześnie wewnę trzny uk ład przerwań zostaje zablokowany. Uk ład przedstawionyna rys. 4.12  może być wykorzystany tylko do takiej obsługi przerwań wielokrotnych (prze-rwania wzglę dne). Oznacza to, że uk ład przerwań  musi pozostać  zablokowany do końca

    trwania programu obsługi. Rozkaz odblokowują cy przerwania EI wystą  pi bezpośrednio przedrozkazem powrotu do programu głównego RET. Wcześniejsze odblokowanie przerwań  do-

     prowadziłoby do rozpoczę cia kolejnego żą dania obsługi. W efekcie nastą  piłoby niekontrolo-wane rozpoczynanie tego samego programu obsługi i w rezultacie obsługa niektórych prze-rwań  mogłaby się   zakończyć  z bardzo dużym opóźnieniem. Ponadto, jeśli skutki działaniaróżnych procedur obsługi byłyby uzależnione od siebie, to mogłoby to doprowadzić do cią -głego powtarzania tych samych procedur. Stan taki nazywa się  zakleszczeniem systemu.

    Ważna funkcja uk ładu przerwań polega na kasowaniu bitu w rejestrze przerwań, któremusi być wykonane po rozpoczę ciu obsługi. Operacja ta może być wykonana w różny spo-sób, np.

    •  Kasowanie bitu w rejestrze przerwań wykonywane jest automatycznie przez urzą dzenie,które wywołało przerwanie. Np. wysłanie kolejnego bajtu do drukarki może równocze-śnie kasować bit w rejestrze stanu.

    •  Kasowanie bitu w rejestrze przerwań odbywa się  w sposób programowy. Może to byćwykonane przez ponowny zapis zawartości rejestru przerwań, po wyzerowaniu odpo-wiedniego bitu, lub przez indywidualne zerowanie bitu za pomocą   rozkazu wyjściaOUT. Każdy bit rejestru przerwań musi mieć wtedy przydzielony oddzielny adres.

     Na rys. 4.13 pokazany jest przyk ład uk ładu z indywidualnym kasowaniem bitu żą dania przerwania. W uk ładzie tym rejestr 8212 pełni rolę  bufora trójstanowego wyprowadzają cegozawartość rejestru przerwań na magistralę  danych. Właściwy rejestr przerwań stanowi zespół

     przerzutników D z indywidualnym zerowaniem. Dzię ki połą czeniu wyjścia STB rejestru 8212z napię ciem zasilają cym, stan tych przerzutników powielany jest w jego przerzutnikach we-wnę trznych. Stan rejestru 8212 odczytywany jest przez program obsługi za pomocą   rozkazuIN 18. Program obsługi kasuje żą danie obsługi przerwania za pomocą  rozkazu OUT xx.

    Jeśli rejestr przerwań zawiera wię cej zgłoszeń, które mogą  powstać w czasie wykony-wania programu obsługi, to po jego zakończeniu sygnał INT nadal jest aktywny i rozpoczynasię   obsługa nastę  pnego przerwania. Ustalenie kolejności obsługi odbywa się  w sposób pro-gramowy. Po odczytaniu zawartości rejestru przerwań należy podjąć decyzję , które przerwa-nie ma być obsługiwane jako pierwsze. Należy wię c ustalić  regulamin obsługi kolejki zgło-szeń. Problem ten może być rozwią zany wieloma sposobami, np.:

  • 8/19/2019 System Przerwan

    19/69

    Z. Pogoda - 4.15 - INSTYTUT ELEKTRONIKI

    •  Cykliczne przesuwanie zawartości akumulatora z testowaniem flagi przeniesieniaCY. Za pomocą  rozkazu skoku warunkowego JC wykonywany jest skok do właści-wego programu obsługi przerwania. Pesuwanie może być  wykonywane w prawo

    lub w lewo. Przy przesunię ciach w prawo, jako pierwsze bę dą   obsługiwane prze-rwania sygnalizowane na mniej znaczą cych bitach magistrali. W ten sposób po-szczególnym przerwaniom nadane zostaną  priorytety.

    •  Przesuwanie maski z wę drują cą  jedynk ą . Ustala się  mask ę  w postaci bajtu, w któ-rym tylko jeden bit jest równy jedności a pozostałe są  zerowe. Przez wykonanie ilo-czynu logicznego z zawartością   rejestru przerwań można się  przekonać, czy zgło-szenie o odpowiednim numerze było aktywne. Skok do właściwego programu ob-sługi przerwań  bę dzie wtedy wykonywany za pomocą   rozkazu JNZ  (zależnym odflagi zera).

    Jeśli automatycznie generowanym wektorem przerwań  jest rozkaz RST 7, to programobsługi musi się   rozpoczynać w komórce pamię ci o adresie 56d. Począ tkowy fragment pro-gramu obsługi może mieć nastę  pują cą  postać

    ORG 56

    PUSH PWSPUSH BPUSH DPUSH HIN 18hRLCJC IROUT0RLCJC IROUT1…………RLCJC IROUT7JMP ERROR

    INT

    STBDI0DI1DI2

    MAGISTRALADANYCH

    CLRDS1MD DS2

    IN 18

    INT REQ0

    D

    C

    Q

    CLR

    OUT 10

    D

    C

    Q

    CLR

    INT REQ1

    OUT 11

    D

    C

    Q

    CLR

    INT REQ2

    OUT 12

     Rys. 13. Uk ł ad przerwań z programowym kasowanięm  żądań przerwań

  • 8/19/2019 System Przerwan

    20/69

    INSTYTUT ELEKTRONIKI - 4.16 - Z. Pogoda

     Należy pamię tać, że w czasie wykonywania programu obsługi przerwania stos musi byćzrównoważony. Taka metoda wyboru zgłoszenia do obsługi jest równoważna nadaniu po-szczególnym zgłoszeniom ustalonych priorytetów. Wię ksze możliwości można uzyskać przez

    zastosowanie maski. Jednak operacja iloczynu logicznego z mask ą   zawierają cą   tylko jedną  jedynk ę  zeruje wszystkie bity akumulatora z wyją tkiem jednego. Dlatego oryginalna zawar-tość  rejestru przerwań musi być  zapamię tana w innym rejestrze. Poniższa sekwencja rozka-zów wyszukuje przerwanie z takim samym regulaminem jak poprzedni

    IN 18hMOV B, A ANI 01hJNZ IROUT0MOV A,B ANI 02hJNZ IROUT1…………

     ANI 80hJNZ IROUT7JMP ERROR

    Ustawiają c maski 01h, 02h, ... w innej kolejności, można ustalić dowolną  kolejność ob-sługiwania przerwań.

    Stosowanie masek pozwala tak że utworzyć  inne regulaminy obsługi kolejki zgłoszeń. Np. w praktyce czę sto mają   zastosowanie tzw. priorytety cykliczne, w których obsłużonezgłoszenie bę dzie ponownie obsługiwane jako ostatnie. Zachodzi wtedy konieczność  zapa-mię tanie maski w wydzielonej komórce pamię ci. W czasie inicjalizacji systemu należy ustalić

     począ tkową  wartość maski, która w czasie wykonywania obsługi bę dzie przesuwana. Przyj-mijmy, że począ tkowa wartość maski zostanie ustalona jako 80h

    LXI H, MASKAMVI M, 80h

    Przeszukiwanie kolejki zgłoszeń może być wtedy zrealizowane za pomocą   nastę  pują cej se-kwencji rozkazów

    ………IN 18hMOV B, ALXI H, MASKAMOV C, MMOV A, CRLCMOV C, A ANA BJNZ IROUT0MOV A, CRLCMOV C, A ANA BJNZ IROUT1………MOV A, CRLCMOV C, A ANA B

  • 8/19/2019 System Przerwan

    21/69

    Z. Pogoda - 4.17 - INSTYTUT ELEKTRONIKI

    JNZ IROUT7JMP ERROR

    W chwili rozpoczę cia przeszukiwania maska posiada jedynk ę  na pozycji odpowiadają -

    cej przerwaniu ostatnio obsługiwanemu. Przed każdym kolejnym testem maska jest przesu-wana cyklicznie o jeden bit w lewo i ponownie zapisywana w rejestrze C. Jeśli wię c począ t-kowa wartość maski była równa 80h, to po przesunię ciu cyklicznym w lewo o jeden bit bę dzieona miała wartość równą  01h. Proces przeszukiwania rozpocznie się  od przerwania nr 0. Poznalezieniu aktywnego przerwania aktualna wartość maski musi być zapamię tana w komórceMASKA. Tak wię c, każdy właściwy program obsługi musi się  rozpocząć od rozkazu MOV M, C(w rejestrach HL znajduje się  adres komórki MASKA). Po rozpoczę ciu nowego cyklu przeszu-kiwania, jako pierwsze testowane bę dzie zgłoszenie nastę  pne po ostatnio obsługiwanym.Można powiedzieć, że w tym algorytmie, przerwanie, którego obsługa się   rozpoczęła otrzy-muje priorytet najniższy a nastę  pne przerwanie - najwyższy. Zmiany priorytetów odbywają się  cyklicznie, tzn. nastę  pnym za przerwaniem nr 7 jest przerwanie nr 0.

    4.4. Wektorowy układ przerwań

    Podstawowym problemem w konstrukcji wektorowych uk ładów przerwań  jest genera-cja wektora przerwania, identyfikują cego źródło przerwania. Jeśli jako wektor przerwania

     przyjąć rozkaz RST, to mamy do dyspozycji trzy bity identyfikują ce przerwanie. Przyporzą d-kowują c każdemu z tych bitów jedno źródło przerwania, otrzymamy możliwość identyfikacjiczterech źródeł, dla których programy obsługi bę dą   sią   rozpoczynać w komórkach pamię ci

    o adresach 0, 8, 16 i 32 (dziesię tnie). Adresom tym odpowiadają  nastę  pują ce wartości bitówzmiennych w rozkazie RST

    NNN Adres000 0001 8010 16100 32

    Uk ład przerwań musi zapewniać, by nigdy wię cej niż jeden z tych bitów nie miał war-tości 1. Warunek ten można spełnić, przypisują c wszystkim przerwaniom priorytety.  Na rys.4.14 pokazany jest prosty uk ład generacji wektora przerwań o powyższych właściwościach.

     Najwyższy priorytet posiada przerwanie INT REQ0. Jeśli jest ono aktywne, to wszystkie bramki B1 ÷ B5 są  zamknię te i wektor przerwania jest równy NNN = 000 (RST 0). Jeśli aktyw-ne jest przerwanie INT REQ1, to zamknię te są  bramki B2 ÷ B5 i generowany jest wektor prze-rwania równy NNN = 001 (RST 1) itd.

    Uk ład z rys. 4.14  może być  rozszerzony do obsługi 8 przerwań  przez zastosowanieuk ładu priorytetowego z kodowaniem. Uk ład ten wybiera aktywną  linię  wejściową  o najwyż-szym priorytecie i wyprowadza na zewną trz kod binarny numeru tej linii. Uk ładem spełniają -cym ten warunek jest uk ład SN74148, którego działanie opisane jest poniższą  tablicą  prawdy

  • 8/19/2019 System Przerwan

    22/69

    INSTYTUT ELEKTRONIKI - 4.18 - Z. Pogoda

    Koder priorytetowy SN74148

    EI 0 1 2 3 4 5 6 7 A2 A1 A0 GS EOL   × × × × × × × × H H H H HL H H H H H H H H H H H H LL   × × × × × × × L L L L L LL   × × × × × × L H L L H L HL   × × × × × L H H L H H L HL   × × × × L H H H L H L L HL   × × × L H H H H H L H L HL   × × L H H H H H H L L L HL   × L H H H H H H H H H L HL L H H H H H H H H H L L H

    Wykorzystanie uk ładu SN74148 do konstrukcji wektorowego uk ładu przerwań pokazane jest na rys. 4.15. Sygnał wyjściowy EO ( Enable Output ) jest aktywny, jeśli przynajmniej je-den z sygnałów wejściowych jest aktywny. Oznacza wię c istnienie przynajmniej jednego żą -dania przerwania a wię c może być użyty jako sygnał przerwania dla mikroprocesora. źródło

     przyłą czone do wejścia nr 7 kodera priorytetowego posiada najwyższy priorytet. Odpowia-dają cy mu wektor przerwania jest równy NNN = 000 a jego program obsługi musi się  rozpo-cząć od adresu równego 0.

    Warunki obsługi programowej takiego uk ładu są  takie same jak dla uk ładu jednopozio-mowego, tzn. kasowanie żą dania obsługi przerwania rozpoczę tego odbywa się  programowoa odblokowanie przerwań  wykonywane jest bezpośrednio przed powrotem do programugłównego (przerwania wzglę dne).

    Rejestr zgłoszeń

    D Q

    C

    QCLR

    D Q

    C

    QCLR

    D Q

    C

    Q

    CLR

    D Q

    C

    QCLR

    INT REQ1

    OUT 1

    INT REQ2

    OUT 2

    INT REQ3

    OUT 3

    Układ priorytetowy

    B1

    B2

    B3

    B4

    B5

    Generator wektoraprzerwań

    STB

    8212

    DI DO

    CLRDS1 DS2

    INTA

    Magistraladanych

    INT

     Rys. 4.14. Prosty wektorowy uk ł ad przerwań

  • 8/19/2019 System Przerwan

    23/69

    Z. Pogoda - 4.19 - INSTYTUT ELEKTRONIKI

    Dalsze rozwinię cie zewnę trznego uk ładu przerwań polega na wprowadzeniu mechani-zmu automatycznego zerowania sygnału żą dania obsługi dla przerwania, którego obsługa zo-stała rozpoczę ta. Można w tym celu wykorzystać dekoder kodu BCD na kod dziesię tny (1 z10), np. SN7442. Tablica prawdy dla tego dekodera jest nastę  pują ca

    Dekoder BCD na 1 z 10 SN7442

    Wejście BCD Wyjście dziesiętneNr 

    D C B A 0 1 2 3 4 5 6 7 8 90 L L L L L H H H H H H H H H1 L L L H H L H H H H H H H H2 L L H L H H L H H H H H H H3 L L H H H H H L H H H H H H4 L H L L H H H H L H H H H H

    5 L H L H H H H H H L H H H H6 L H H L H H H H H H L H H H7 L H H H H H H H H H H L H H8 H L L L H H H H H H H H L H9 H L L H H H H H H H H H H L

     A H L H L H H H H H H H H H HB H L H H H H H H H H H H H HC H H L L H H H H H H H H H HD H H L H H H H H H H H H H HE H H H L H H H H H H H H H HF H H H H H H H H H H H H H H

    Uk ład przerwań wykorzystują cy ten dekoder pokazany jest na rys. 4.16.

    Rejestr zgłoszeńD

    C

    CLR

    INT REQ0

    OUT 0

    Q

    D

    C

    CLR

    INT REQ1

    OUT 1

    Q

    D

    C

    CLR

    INT REQ3

    OUT 3

    Q

    Koder priorytetów

    0 EO

    74148 A0

     A1

     A2

    7 EI

    INT

    Generator wektoraprzerwań

    STB

    8212

    DI DO

    CLRDS1 DS2

    Magistraladanych

    INTA

     Rys. 4.15. Wektorowy uk ł ad przerwań z koderem priorytetów SN74148

  • 8/19/2019 System Przerwan

    24/69

    INSTYTUT ELEKTRONIKI - 4.20 - Z. Pogoda

    W stanie spoczynkowym, gdy sygnał INTA jest nieaktywny, na wejściu D dekodera znaj-duje się  sygnał wysoki H i wszystkie jego wyjścia od 0 do 7 znajdują  się  też w stanie nieaktyw-

    nym, niezależnie od stanu pozostałych wejść. W cyklu INTERRUPT sygnał INTA staje się  aktyw-ny i poziom sygnału na wejściu D jest niski. Jak wynika a powyższej tablicy prawdy, jedna liniawyjściowa, o numerze odpowiadają cym liczbie utworzonej przez stany wejść  A, B, C, uzyskuje

     poziom niski, co powoduje wyzerowanie odpowiedniego bitu w rejestrze zgłoszeń. Na rys. 4.17  pokazany jest uk ład przerwań z maskowaniem. Jest on wyposażony w dwa

    dodatkowe rejestry: rejestr maski i rejestr przerwań maskowanych, zbudowane z wykorzysta-niem uk ładów 8212, pracują cych w trybie 1. Rejestr maski działa jak urzą dzenie wyjściowe,do którego, za pomocą   rozkazu OUT, można wpisać  dowolny bajt, traktowany jak maska

     przerwań. Poszczególne bity tej maski sterują  wprowadzaniem zgłoszeń do rejestru przerwańmaskowanych. Jeśli bit maski jest zerowy, to bramka wejściowa rejestru przerwań maskowa-nych jest zamknię ta i odpowiednie zgłoszenie nie bę dzie obsługiwane. Z chwilą  rozpoczę cia

    obsługi przerwania zostaje zablokowany wewnę trzny uk ład przerwań, co sygnalizowane jestnieaktywnym poziomem sygnału INTE. Zostaje wtedy zablokowana zmiana zawartości reje-stru przerwań maskowanych. Zabezpiecza to przed wyzerowaniem niewłaściwego bitu w re-

     jestrze przerwań niemaskowanych. Gdyby tej blokady nie było i po rozpoczę ciu obsługi jed-nego przerwania powstałoby nowe o wyższym priorytecie, to mogłoby zostać  skasowane

     przez sygnał INTA.W uk ładzie tym wystę  puje problem maskowania przerwań, zwią zany z tym, że do reje-

    stru maski istnieje tylko jednokierunkowy dostę  p. Aby zmienić  tylko jeden bit maski, po-trzebna jest znajomość całej. Nie można jej jednak odczytać. Rozwią zanie tego problemu mo-że być uzyskane przez równoczesny wpis maski do rejestru i do ustalonej komórki pamię ci.Wtedy operacje maskowania przeprowadza się  na masce pobranej z pamię ci.

    Rejestr zgłoszeń

    D

    C

    CLRQ

    INT REQ0

    Koder priorytetów

    7 EO

    74148 A0

     A1

     A2

    EI0

    0

    7442 A

    B

    C

    D

    7

    Dekoder 1 z 10

    Generator wektoraprzerwań

    STB

    8212

    CLR

    DS1 DS2

    Magistraladanych

    INTA

    INT

     Rys. 4.16. Uk ł ad przerwań z automatycznym kasowaniem żądania obsł ugi

  • 8/19/2019 System Przerwan

    25/69

    Z. Pogoda - 4.21 - INSTYTUT ELEKTRONIKI

    4.5. Zagnieżdżanie przerwań

    Zagnieżdżanie programów obsługi ma miejsce wówczas, gdy program obsługi jednego prze-rwania może być przerywany przez inne przerwanie (rys. 4.3). W celu umożliwienia rozpo-czę cia obsługi nowego przerwania konieczne jest programowe odblokowanie wewnę trznegouk ładu przerwań. Oczywiście, odblokowanie to może być wykonane dopiero po wyzerowaniuzgłoszenia bieżą co obsługiwanego przerwania. Założymy, że źródło nie może generować no-wego sygnału żą dania przerwania, dopóki nie zakończy się   program obsługi poprzedniego.Jeśli odblokowanie przerwań  wystą  piłoby w programach obsługi w uk ładach opisanychw poprzednim paragrafie, to każde nowe przerwanie powodowałoby rozpoczę cie nowego

     programu obsługi. W ten sposób mogłyby się   rozpocząć programy obsługi wszystkich prze-rwań. Aktualnie obsługiwane byłoby przerwanie, które pojawiłoby się   jako ostatnie. Zakoń-

    czenie obsługi pierwszego rozpoczę tego przerwania nastą  piłoby dopiero wtedy, gdy zakoń-czona zostanie obsługa wszystkich zgłoszeń  i nie pojawią   się   żadne nowe. Źródła, którychobsługa się  zakończyła mogą  generować nowe sygnały przerwań, których obsługa rozpoczniesię  niezwłocznie. W ten sposób obsługa zgłoszenia, które wystą  piło jako pierwsze może byćzakończona z bardzo dużym opóźnieniem, lub przy dużej czę stotliwości innych zgłoszeń mo-że się  nigdy nie zakończyć. Przez pierwsze zgłoszenie rozumiane jest przerwanie pojawiają cesię  w sytuacji, gdy nie było obsługiwane żadne inne. Ponieważ  sygnały przerwań  powstają w sposób asynchroniczny, to każde zgłoszenie może być pierwszym. Oznacza to, że opóźnie-nie obsługi jest zależne od momentu czasu, w którym pojawi się   zgłoszenie. Najwię kszeopóźnienie wystą  pi w obsłudze zgłoszenia pierwszego a najszybciej zostanie obsłużone zgło-szenie ostatnie.

    Rejestr przerwań

    niemaskowanych

    INT REQ 0

    D Q

    C

    CLR

    Rejestr przerwań

    maskowanych

    8212

    CLRDS1 DS2

    MDINTE

    Koder priorytetów

    74148EO

     A0 A1 A2

    EI CLRDS1 DS2

    MD

    8212

    STB

    Rejestr wektoraprzerwań

    Magistraladanych

    INT

    Rejestr maski

    DO0DO1DO2

    8212

    CLRDS1 DS2

    MD

    DI

    Dekoder zerowaniazgłoszeń

    7442

     A

    B

    C

    D

    OUT n

    Magistraladanych

    INTA

     Rys. 4.17. Wektorowy uk ł ad przerwań z maskowaniem

  • 8/19/2019 System Przerwan

    26/69

    INSTYTUT ELEKTRONIKI - 4.22 - Z. Pogoda

    Uporzą dkowanie kolejności obsługi zgłoszeń  można uzyskać, określają c zgłoszenia,których obsługa może podlegać wię kszym i mniejszym opóźnieniom. Wszystkie zgłoszeniazostają  w ten sposób uporzą dkowane według ważności. Zgłoszenie, którego obsługa musi być

    realizowana z najmniejszym opóźnieniem otrzymuje najwyższy priorytet, co oznacza, że niemoże być  przerwana przez żadne inne zgłoszenie. Odwrotnie, zgłoszenie, którego obsługamoże się   odbyć  z najwię kszym opóźnieniem otrzymuje najniższy priorytet, co oznacza, żemoże być przerwana przez każde inne zgłoszenie. Na rys. 4.18 pokazana jest zasada działania

     priorytetowego uk ładu przerwań. Uk ład ten wyposażony jest w dwa dodatkowe bloki funk-

    cjonalne: rejestr poziomu bieżą cego i komparator. Załóżmy, że system mikroprocesorowyznajduje się  w stanie spoczynku, tzn. brak jest aktywnych przerwań. Do rejestru poziomu bie-żą cego musi być wpisana wartość, umożliwiają ca wygenerowanie sygnału INT, jeśli pojawisię  dowolne żą danie przerwania. Każdemu zgłoszeniu przypisany jest, przez koder prioryte-tów, trzybitowa liczba (dla 8 wejść przerywają cych), oznaczają ca priorytet tego zgłoszenia.

    W stanie począ tkowym komparator generuje sygnał przerwania przy dowolnym priorytecie.Rozpoczyna się   program obsługi tego przerwania z zablokowanym wewnę trznym uk ładem przerwań. Program obsługi wpisuje poziom priorytetu tego przerwania do rejestru poziomu bieżą cego, po czym wewnę trzny uk ład przerwań zostaje odblokowany. Jeśli teraz pojawi się zgłoszenie o niższym priorytecie, to komparator nie wygeneruje nowego sygnału przerwań.Zostanie ono jedynie zarejestrowane w rejestrze zgłoszeń. Jeśli natomiast pojawi się  zgłosze-nie o wyższym priorytecie, to komparator wygeneruje nowy sygnał przerwania INT = ( A > B) irozpocznie się   nowy program obsługi, wpisują cy własny poziom priorytetu do rejestru po-ziomu bieżą cego. Po zakończeniu tego programu, wznawiany jest program przerwany.Wznowienie to musi być zwią zane z odtworzeniem poziomu priorytetu programu przerwane-go. W ten sposób poziom priorytetu staje się  elementem stanu programu, na równi z zawarto-

    Żą dania przerwańINT REQ n

       R  e   j  e  s

       t  r  z  g      ł  o  s  z  e      ń

       i

       k  o   d  e  r

      p  r   i  o  r  y   t  e   t   ó  w

       R  e   j  e  s   t  r  p  o  z   i  o  m  u

       b   i  e      ż     ą  c  e  g  o

    Do rejestruwektora

    przerwań

    Magistrala danych

    OUT m

    B

    INT

     A

    Komparator 

     A > B

     Rys. 4.18. Priorytetowy uk ł ad przerwań z zagnie ż d  ż aniem

  • 8/19/2019 System Przerwan

    27/69

    Z. Pogoda - 4.23 - INSTYTUT ELEKTRONIKI

    ściami rejestrów uniwersalnych. Konieczne jest wię c stworzenie dostę  pu do poziomu priory-tetowego programu przerywanego. Możliwe są  dwa sposoby rozwią zania tego problemu

    •  Rejestr poziomu bieżą cego jest rejestrem dwukierunkowym z możliwością  zapisu iodczytu. Za pomocą  rozkazu IN można odczytać jego zawartość i zapisać na stosie, podobnie jak zawartości rejestrów uniwersalnych. Nastę  pnie, za pomocą   rozkazuOUT można wpisać do niego poziom własny rozpoczynanego programu.

    •  Rejestr poziomu bieżą cego jest rejestrem jednokierunkowym, umożliwiają cym je-dynie zapis. Wtedy należy zarezerwować w pamię ci komórk ę  o ustalonym adresie,wspólną  dla wszystkich programów obsługi, zawierają cą  kopię   zawartości rejestru

     poziomu bieżą cego. Na począ tku programu obsługi zawartość  tej komórki zapisy-wana jest na stosie a poziom własny wpisywany jest do rejestru poziomu bieżą cegoi do pamię ci.

     Na rys. 4.19  pokazany jest schemat blokowy programu obsługi. Operacje zapamię tywaniai odtwarzania rozszerzonego stanu programu przerywanego wykonywane są  przy zablokowa-nym wewnę trznym uk ładzie przerwań. Zabezpiecza to przed utratą  poziomu priorytetowego

     programu przerywanego, gdyby w tym czasie powstało kolejne przerwanie o wyższym prio-rytecie.

    INTERRUPT

    Pobranie wektoraprzerwań i skok doprogramu obsługi

    Zapamiętaniestanu programuprzerywanego

    Pobranie zawartościkomórki LEVEL

    i zapamiętanie jej nastosie

    Wpisanie priorytetubieżą xego do komórkiLEVEL i do rejestru

    poziomu bieżą cego

    Odblokowanieprzerwań EI

    WŁ AŚCIWYPROGRAM OBSŁUGI

    DI Blokada przerwań DI

    Pobranie ze stosupriorytetu programu

    przerwanego

    Wpisanie priorytetuprogramu przerwanegodo komórki LEVEL i do

    rejestru poziomu bieżą cego

    Odtworzeniestanu programu

    przerwanego

    Odblokowanieprzerwań EI

    RETURN

     Rys. 4.19. Struktura programu obsł ugi przerwań z zagnie ż d  ż aniem

  • 8/19/2019 System Przerwan

    28/69

    INSTYTUT ELEKTRONIKI - 4.24 - Z. Pogoda

    Opisany mechanizm priorytetowy musi tak że dotyczyć programu głównego, który może być traktowany jak program obsługi o najniższym priorytecie, zezwalają cym na rozpoczę cieobsługi dowolnego przerwania. Uzyskuje się  wię c łą cznie 9 programów, dopuszczeniem do

    realizacji których, musi sterować  rejestr stanu bieżą cego. Wymaga to użycia dodatkowego,czwartego, bitu zezwalają cego na wszystkie przerwania. Stanom rejestru poziomu bieżą cegomożna przypisać nastę  pują ce znaczenia

    G B2 B1 B0 Poziom Znaczenie

    1   × × × -1 Zezwolenie na dowolne przerwania0 0 0 0 0 Zezwolenie na przerwanie z priorytetem 1 lub wyższym0 0 0 1 1 Zezwolenie na przerwanie z priorytetem 2 lub wyższym0 0 1 0 2 Zezwolenie na przerwanie z priorytetem 3 lub wyższym0 0 1 1 3 Zezwolenie na przerwanie z priorytetem 4 lub wyższym0 1 0 0 4 Zezwolenie na przerwanie z priorytetem 5 lub wyższym

    0 1 0 1 5 Zezwolenie na przerwanie z priorytetem 6 lub wyższym0 1 1 0 6 Zezwolenie na przerwanie z priorytetem 70 1 1 1 7 Brak zezwolenia na żadne przerwanie

    Jeśli bit G ma wartość 1, to pozostałe bity rejestru poziomu bieżą cego są  ignorowane. Ozna-cza to, że bit G powinien blokować operację  porównania w komparatorze priorytetów. Pozo-stałe bity tego rejestru B2 ÷ B0 tworzą   liczby z przedziału 0 ÷ 7, które przypisywane są  pro-gramom obsługi, odpowiadają cym kolejnym numerom żą dań przerwania i mogą  być  trakto-wane jak ich priorytet własny. Program obsługi przerwania INT REQ 0 posiada priorytet naj-niższy równy 0. Jeśli jako pierwsze wystą  pi np. przerwania INT REQ 3, to jego program ob-sługi powinien wpisać do rejestru poziomu bieżą cego wartość GB = 3. Spowoduje to blokadę 

     przerwań nr 0, 1 i 2, natomiast podję ta może być obsługa przerwań nr. 4, 5, 6 i 7. Programowigłównemu można, przy takiej numeracji, przypisać priorytet równy -1. W czasie inicjalizacjisystemu, do rejestru poziomu bieżą cego powinna być wtedy wpisana wartość x'08', co umoż-liwia rozpoczę cie obsługi dowolnego przerwania.

    Program obsługi dowolnego przerwania może mieć nastę  pują cą  struktur ę  ogólną 

    8 × NNN PUSH PSWPUSH BPUSH DPUSH HJMP INTNNN………

    INT NNN LDA LEVEL

    PUSH PSW ;zapamiętanie priorytetu przerywanego programuMVI A, NNNSTA LEVELOUT m ;wpisanie priorytetu nowego programuEI………

    ………DIPOP PSWSTA LEVELOUT m ;odtworzenie priorytetu przerwanego programu

  • 8/19/2019 System Przerwan

    29/69

  • 8/19/2019 System Przerwan

    30/69

    INSTYTUT ELEKTRONIKI - 4.26 - Z. Pogoda

    W systemach sterowania procesami technologicznymi obowią zują  inne reguły. Wyma-gany czas reakcji uk ładu przerwań podyktowany jest przez własności procesu technologicz-nego. Wszystkie źródła przerwań muszą  być uszeregowane wg ważności funkcji, jakie wyko-

    nują . Np. przerwania mają ce znaczenie alarmowe (przekroczenia wartości krytycznych takich parametrów jak ciśnienia, temperatury, poziomy itp.) muszą   posiadać  najwyższe priorytety. Najniższe priorytety przydzielane są   funkcjom informacyjno-sprawozdawczym.Jeśli eksplo-atacja próbna systemu wykazuje, że mimo wszystko, niektóre przerwania obsługiwane są z niewystarczają cą  pr ę dkością , to ostatecznym rozwią zaniem bę dzie zastosowanie mikropro-cesora o wię kszej mocy obliczeniowej.

    4.6. Kontroler przerwań 8214

    Kontroler przerwań 8214 został zaprojektowany do obsługi 8 przerwań. Przerwania te reje-strowane są  w rejestrze przerwań a uk ład priorytetowy wybiera z nich to, które aktualnie po-siada najwyższy priorytet. Poziom tego priorytetu porównywany jest z poziomem zawartymw programowo obsługiwanym rejestrze poziomu bieżą cego i w zależności od wyniku tego

     porównania generowany jest odpowiedni wektor przerwania. Uproszczony schemat blokowy

    tego kontrolera pokazany jest na rys. 4,21.

    Zgłoszenia przerwań, aktywne przy niskim poziomie, wprowadzane są  na wejście reje-stru zgłoszeń i dalej - kodera priorytetów. Przyłą czenie źródeł do określonych wejść decydujeo ich priorytecie w ten sposób, że wejście R7 posiada najwyższy priorytet a wejście R0 - naj-niższy. Koder priorytetów wydaje trzybitowy kod numeru przerwania posiadają cego najwyż-szy priorytet. Rejestr zgłoszeń  znajdują cy się   na wejściu kodera sterowany jest przez prze-

    R0R1

    R2R3R4R5R6R7

    Rejestr zgłoszeńi

    koder priorytetów

    Zgłoszenie aktywne

    OC

    OC

    OC

     A0

     A1

     A2

    INTOCD Q

    C

    Komparator priorytetów A

    B

     A > B

    Rejestr poziomu

    bieżą cego

    B0B1B2SGS

    ECS

    C

    D QSET

    INT DIS

    INTE

    CLK

     Rys. 4.21. Uproszczony schemat blokowy kontrolera przerwań 8214

  • 8/19/2019 System Przerwan

    31/69

    Z. Pogoda - 4.27 - INSTYTUT ELEKTRONIKI

    rzutnik zakazu INT DIS. Jeśli przerzutnik ten jest wzbudzony, to w rejestrze zgłoszeń nie mogą nastę  pować żadne zmiany. Oznacza to, że sygnał żą dania przerwania musi pozostać na po-ziomie aktywnym dopóki nie rozpocznie się  jego obsługa.

    W przypadku przerwań zagnieżdżają cych się , ważne jest nie tylko określenie przerwa-nia o najwyższym priorytecie, lecz również to, czy posiada ono priorytet wyższy od priorytetu

     przerwania aktualnie obsługiwanego. Dla umożliwienia wykonania tego zadania kontroler wyposażony jest w rejestr stanu bieżą cego, obsługiwany programowo. Jest to 4-bitowy rejestr ładowany ujemnym zboczem sygnału ECS  ( Enable Current Status). Obsługa tego rejestruwykonywana jest przez program obsługi przerwania za pomocą  standardowego rozkazu OUT.Do rejestru poziomu bieżą cego ładowane jest dopełnienie (inwersja bitowa) poziomu odnie-sienia, które jest porównywane w komparatorze priorytetów z poziomem uzyskiwanym z ko-

    dera priorytetów. Do rejestru poziomu bieżą cego może być wpisana dowolna wartość, co przy połą czeniach kaskadowych kontrolerów może być  wykorzystane do ustalania priorytetówgrup zgłoszeń.

    Czwarty bit rejestru poziomu bieżą cego SGS  (Status Group Select ) posiada specjalneznaczenie. Komparator priorytetów generuje sygnał wyjściowy tylko wtedy, gdy poziom no-wego zgłoszenia jest wyższy od poziomu bieżą cego. W szczególności, jeśli obydwie porów-nywane wielkości mają  wartości zerowe, co ma miejsce, gdy system znajdował sie w staniespoczynku i pojawiło się  zgłoszenie o najniższym priorytecie, to komparator nie generuje sy-gnału wyjściowego. Bit SGS forsuje wtedy odpowiednie wejście bramki wzbudzają cej prze-rzutnik INT, generują cej sygnał przerwania dla mikroprocesora. Bit SGS blokuje wię c działa-nie komparatora priorytetów, zezwalają c na rozpoczę cie obsługi przerwania o dowolnym

     priorytecie.

    Jak wynika z rys. 4.21, przerzutnik INT zostaje wzbudzony, jeśli spełnione są  równocze-śnie nastę  pują ce warunki

     –  przynajmniej jedno zgłoszenie jest aktywne, – nowe żą danie przerwania ma wyższy priorytet niż bieżą co obsługiwane, –  przerzutnik zakazu INT DIS jest wyzerowany, – sygnał  INTE  jest aktywny (normalnie sygnał  ten jest łą czony jest z wyjściem INTE

    mikroprocesora, a wię c sygnał  przerwania może powstać, gdy odblokowany jestwewnę trzny uk ład przerwań).

    Spełnienie tych warunków rozpoczyna proces obsługi nowego przerwania. Wzbudzenie prze-rzutnika INT  wywołuje w mikroprocesorze rozpoczę cie cyklu maszynowego INTERRUPT,a w kontrolerze 8214 zostaje wzbudzony przerzutnik INT DIS. Wzbudzenie przerzutnika zaka-zu wywołuje dwie akcje

     – zamyka bramk ę  wejściową  do przerzutnika INT, co powoduje, że najbliższe dodat-nie zbocze sygnału zegarowego CLK zeruje ten przerzutnik. Sygnał wyjściowy INTstaje się  nieaktywny, tzn. ma on charakter impulsu o szerokości kilkunastu ns. Po-nieważ rozpoznawanie sygnału przerywają cego w mikroprocesorze może się  odbyćze znacznie wię kszym opóźnieniem, wię c istnieje konieczność  zapamię tania gow dodatkowym przerzutniku.

     –  blokuje zmiany w rejestrze zgłoszeń, co zapewnia, że wektor przerwania wyprowa-dzany liniami A2 ÷  A0 nie ulega zmianie.

  • 8/19/2019 System Przerwan

    32/69

    INSTYTUT ELEKTRONIKI - 4.28 - Z. Pogoda

    Stan taki może trwać dowolnie długo. W tym czasie zgłoszenia zewnę trzne nie są  rejestrowa-ne. Oznacza to, że sygnał żą dania przerwania generowany przez źródło musi pozostawać ak-tywny, dopóki nie rozpocznie się  jego obsługa.

    Po rozpoczę ciu programowej obsługi zainicjowanego przerwania do rejestru poziomu bieżą cego wpisywany jest nowy poziom. Sygnał  wpisują cy ECS  zeruje równocześnie prze-rzutnik zakazu INT DIS. Tym samym, przywrócony zostaje stan pierwotny kontrolera i jest ongotowy do zainicjowania nowego przerwania (oczywiście po odblokowaniu wewnę trznegouk ładu przerwań).

    Stanem spoczynkowym kontrolera jest stan, w którym obydwa przerzutniki INT DIS orazINT są  wyzerowane. W tym czasie realizowany jest program obsługi. Zmiana tego stanu na-stę  puje po pojawieniu się  przerwania o wyższym priorytecie niż aktualnie obsługiwane. Stanwzbudzenia przerzutnika INT jest stanem krótkotrwałym. Czas trwania wzbudzenia przerzut-nika INT DIS jest zależny od programu obsługi i kończy się  po wpisaniu nowego poziomu bie-żą cego. W czasie wzbudzenia przerzutnika zakazu, kontroler nie rejestruje nowych zgłoszeń

    i nie generuje nowych sygnałów przerwania.Stan począ tkowy osią gany jest w czasie wykonywania programu inicjalizują cego sys-

    tem przez wpisanie poziomu bieżą cego programu głównego. Bit SGS powinien mieć dla tego poziomu wartość zerową . W tym czasie wewnę trzny uk ład przerwań jest zablokowany (INTE= 0). Wpis do rejestru poziomu bieżą cego zeruje przerzutnik INT DIS i po odblokowaniu we-wnę trznego uk ładu przerwań kontroler jest gotowy do działania.

    Do generacji pełnego 8-bitowego wektora przerwań może być wykorzystany rejestr 8212(rys. 4.22). Jego wewnę trzny przerzutnik INT może być wykorzystany do zapamię tywania impul-sowego sygnału przerwania, pochodzą cego z kontrolera 8214. Rejestr 8212 powinien pracować wtrybie MD = 0. Wtedy stany wejść są  natychmiast kopiowane w jego przerzutnikach typu D.

    Φ2(TTL)

    INTE

           Ż     ą   d  a  n   i  a

      o   b  s      ł  u  g   i

    I/O Write

    CLKINTE INT

    R0

    R1

    R2

    R3

    R4

    R5

    R6

    R7

     A0

     A1

     A2

    8214

    ETLGB0

    B1

    B2

    SGS

    ECSELR

    +5 V

    STB INT

    8212D0

    D1

    D2

    D3

    D4

    D5

    D6

    D7

    DO0

    DO1

    DO2

    DO3

    DO4

    DO5

    DO6

    DO7

    CLRDS2 MD DS1

    INTA

    D0

    D1D2D3D4D5D6D7

    INT

     Rys. 4.22. Uk ł ad przerwań z kontrolerem 8214

  • 8/19/2019 System Przerwan

    33/69

    Z. Pogoda - 4.29 - INSTYTUT ELEKTRONIKI

    Trójstanowe wyjścia przyłą czane są  do magistrali danych za pomocą  sygnałów DS2DS1⋅ .

    Powstanie sygnału przerwania w kontrolerze 8214 powoduje, za pośrednictwem sygnału STB,wzbudzenie przerzutnika INT  i powstanie trwałego sygnału przerwania do mikroprocesora.Rozpoczę cie cyklu maszynowego INTERRUPT  sygnalizowane jest sygnałem INTA, który po-woduje wyprowadzenie wektora przerwań (rozkaz RST n) na magistralę  danych i wyzerowa-nie przerzutnika INT. Sygnał  INTA powinien też skasować żą danie przerwania w urzą dzeniu.Kasowanie to może też być wykonane programowo, jak opisano wcześniej.

    Ponieważ wyjścia  A2 ÷  A0 wyprowadzane są  z kontrolera 8214 w konwencji negatyw-nej, to dla przerwania o najwyższym priorytecie otrzymamy wektor RST 0. Sposób generacjiwektorów przerwań dla różnych priorytetów można przedstawić w tablicy

    D7 D6 D5 D4 D3 D2 D1 D0

    Poziompriorytetu

    RST 1 1  A2 A1  A0 1 1 1

    Najniższy 0 7 1 1 1 1 1 1 1 11 6 1 1 1 1 0 1 1 12 5 1 1 1 0 1 1 1 13 4 1 1 1 0 0 1 1 14 3 1 1 0 1 1 1 1 15 2 1 1 0 1 0 1 1 16 1 1 1 0 0 1 1 1 1

    Najwyższy 7 0 1 1 0 0 0 1 1 1

    4.7. Rozszerzanie układu przerwań z kontrolerem 8214

    Kontroler przerwań 8214 pozwala na konstrukcję  uk ładów przerwań dla obsługi dużej liczbyurzą dzeń, poprzez połą czenia kaskadowe i wielowarstwowe. Do tworzenia takich uk ładówwykorzystywane są  trzy dodatkowe sygnały, nie pokazane na rys. 4.21:

    ELR - ( Enable Level Read ), jest to sygnał wejściowy, blokują cy wyprowadzaniewektora przerwań na zewną trz.

    ETLG - ( Enable This Level Group), jest to sygnał wejściowy, blokują cy generację sygnału przerwania i wyprowadzanie wektora przerwań.

    ENLG - ( Enable Next Level Group), jest to sygnał wyjściowy, przyjmują cy poziom

    aktywny, gdy kontroler znajduje się  w stanie spoczynku, tzn. nie są  obsłu-giwane żadne przerwania pochodzą ce od niego.

    Wpływ tych sygnałów na działanie kontrolera pokazany jest na rys. 4.23. Kontroler  przerwań może wię c generować sygnał  INT  i wektor przerwania, jeśli jego sygnał ETLG jestaktywny. Natomiast sygnał ENLG jest równy

    ETLGSGS ACTREQENLG   ⋅⋅=

    tzn. posiada poziom aktywny, jeśli

  • 8/19/2019 System Przerwan

    34/69

    INSTYTUT ELEKTRONIKI - 4.30 - Z. Pogoda

     – w rejestrze zgłoszeń nie ma żadnego zgłoszenia oczekują cego na obsługę  (REQ ACT= 0),

     – w rejestrze poziomu bieżą cego, bit SGS ma wartość zerową , tzn. nie odbywa się  ob-sługa przerwania zainicjowanego przez ten kontroler,

     – kontroler nie został zablokowany sygnałem zewnę trznym (ETLG = 1).

    Sygnał  ENLG  może wię c być  użyty do blokady dru-giego kontrolera 8214, którego przerwania bę dą  mogły byćobsługiwane, jeśli w pierwszym bę dzie istniał stan spoczyn-ku. Zatem, przerwania tego drugiego kontrolera bę dą  posia-dały niższe priorytety. Sygnały ETLG i ENLG pozwalają  wię cutworzyć kaskadę  kontrolerów, dla których

    ETLGi+1 = ENLGi

    Dla pierwszego kontrolera w łańcuchu bę dzie ETLG1  = 1i jego przerwania bę dą   miały najwyższy priorytet (rys.4.24). Tak wię c, w całym łańcuchu tylko jeden kontroler może być  aktywny. Umożliwia to zastosowanie techniki„sumowania na drucie” sygnałów numeru przerwania  A2  ÷ A0  oraz przerwań  INT. W tym celu wyjścia tych sygnałówwyprowadzone są   za pomocą   bramek z otwartym kolekto-rem.

    Ponieważ  przy połą czeniach łańcuchowych zwię ksza

    się  liczba przerwań, to do aktywacji programów obsługi niemogą  być użyte rozkazy RST n. Obliczenie adresu skokowe-go do programu obsługi musi być wykonane w sposób pro-gramowy. Należy wtedy zrezygnować z wektorowego uk ła-du przerwań (np. przez generację  stałego wektora przerwań

     przez przyłą czenie wyjścia INTA  w kontrolerze interfejsu8228 do +12 V) a wspólny program obsługi musi obliczyćadres skokowy. Powstaje wtedy uk ład quasi-wektorowy,w którym identyfikator przerwania dostarczony przez ze-

    wnę trzny uk ład przerwań służy do obliczenia adresu skoko-wego. Ten sposób obsługi przerwań  nie może być  utoż-

    ETLG

    ETLGREQ ACT

    SGS

    ENLG

    D Q

    INT

    INTELRETLGREQ ACT

    z koderapriorytetów

    OC

    OC

    OC

     A0

     A1

     A2

     Rys. 4.23 Sygnał  y dla tworzenia uk ł adów kaskadowych i wielowarstwowych z kontrolerem przerwań 8214.

    8214

    R00

    R07

    Priorytetnajniższy

    ETLGELR

    INT0

     A0 A1 A2

    G0

    8214

    R10

    R17 ETLGELR

    INT1

     A0 A1 A2

    G1

    ENLG

    8214

    Rn0

    Rn7 ETLGELR

    INTn

     A0 A1 A2

    Gn

    ENLG

    +5 V

    Priorytetnajniższy

     Rys. 2.24. Uk ł ad ł ańcuchowykontrolerów 8212

  • 8/19/2019 System Przerwan

    35/69

    Z. Pogoda - 4.31 - INSTYTUT ELEKTRONIKI

    samiany z uk ładem jednopoziomowym, wielourzą dzeniowym,gdyż nie odbywa się  w nim programowy proces poszukiwaniai wyboru obsługiwanego przerwania. Dostarczona z zewną trz

    informacja, w sposób jednoznaczny, określa położenie pro-gramu obsługi. Na rys. 4.25  pokazany jest przyk ład takiegouk ładu z dwoma kontrolerami 8214 o pojemności 16 przerwań.Wszystkie przerwania podzielone są  na dwie grupy, odpowia-dają ce obydwu kontrolerom. Wektor przerwania musi zawieraćinformację  identyfikują cą  grupę . Do identyfikacji grupy wyko-rzystany jest sygnał  ENLG  kontrolera o wyższym priorytecie.Sygnał  przerwania generowany jest podobnie jak w uk ładzie

     prostym. Natomiast wektor przerwania odczytywany jest pro-

    gramowo (a nie sygnałem INTA, który teraz nie istnieje lub jestużywany do wprowadzenia na magistralę  danych kodu rozkazu

    RST 7), co zeruje przerzutnik w rejestrze 8212.

    Odczytany wektor przerwania posiada nastę  pują cą  struktur ę 

    0 G  A2 A1 A1 0 0 0

    Jeżeli bit G posiada wartość  równą  1, to oznacza to, że aktywne przerwanie pochodziz kontrolera o niższym priorytecie. Poszczególne przerwania bę dą  wię c generowały nastę  pu-

     ją ce wektory

    D7 D6 D5 D4 D3 D2 D1 D0

    Priorytet przerwania 0 G  A2 A1 A0 0 0 0

    Najniższy 0 0 1 1 1 1 0 0 01 0 1 1 1 0 0 0 02 0 1 1 0 1 0 0 03 0 1 1 0 0 0 0 04 0 1 0 1 1 0 0 05 0 1 0 1 0 0 0 06 0 1 0 0 1 0 0 07 0 1 0 0 0 0 0 08 0 0 1 1 1 0 0 09 0 0 1 1 0 0 0 0

    10 0 0 1 0 1 0 0 0

    11 0 0 1 0 0 0 0 012 0 0 0 1 1 0 0 013 0 0 0 1 0 0 0 014 0 0 0 0 1 0 0 0

    Najwyższy 15 0 0 0 0 0 0 0 0

    Jest to wię c cią g liczb, które mogą  być użyte do tworzenie adresów skokowych. W najprost-szym przypadku, adres skokowy może być utworzony w nastę  pują cy sposób

    15 0

    baza wektor  

    Niższypriorytet

    Wyższypriorytet

    8214

    R00

    R07 ETLGELR

    INT0

     A0 A1 A2

    G

    R10

    R17ETLG

    ELR

    INT1

     A0 A1 A2

    ENLG

    +5 V

     Rys. 4.25. Uk ł ad kaskadowy z dwoma kontrolerami 8212

  • 8/19/2019 System Przerwan

    36/69

    INSTYTUT ELEKTRONIKI - 4.32 - Z. Pogoda

    gdzie baza  jest wielkością   stałą , lokują cą   począ tki programów obsługi na dowolnej 256- bajtowej stronicy w przestrzeni adresowej.

    Ponieważ trzy najmniej znaczą ce bity wektora przerwań są  zawsze równe zeru, to adre-

    sy te wyznaczają  komórki pamię ci odległe mię dzy sobą  o 8 bajtów. Powstają  wię c podobneinterwały jak przy wykorzystywaniu jako wektora przerwań, rozkazu RST. Począ tkowy frag-ment programu obsługi przerwania, rozpoczynają cego się  w komórce nr 56d, powinien miećwtedy nastę  pują cą  postać

    PUSH PSWPUSH BPUSH DPUSH HIN nMOV L,AMVI H, bazaPCHL

    Ponieważ  najbardziej znaczą cy bit wektora przerwań  nie jest praktycznie wykorzystany, to bez żadnych zmian do uk ładu można dołą czyć  trzeci kontroler 8214 i uzyskać  pojemnośćuk ładu przerwań równą  24. Pojawią  się  wtedy dwa bity identyfikują ce grupę  przerwań

    G1G0 Priorytet

    11 najniższy

    01   średni

    10 najwyższy

    Dalsze rozszerzanie uk ładu przerwań  można uzyskać  przez zmniejszenie interwałumię dzy począ tkami procedur obsługi przerwań do 4 bajtów, co jest wystarczają ce do umiesz-czenia w nim rozkazu JMP  lub CALL  (łą cznie z rozkazem RET). Pojawią  się  wtedy trzy bar-dziej znaczą ce bity swobodne, do których można wprowadzić sygnały grupowe z łańcucha 4kontrolerów. Pojemność uk ładu przerwań bę dzie wtedy równa 32.Postę  pują c tak dalej, można zwię kszyć  liczbę  kontrolerów do 5 i uzyskać pojemność uk ładu

     przerwań równą  40, lecz wtedy interwał mię dzy adresami zmaleje do 2 bajtów, co jest niewy-starczają ce do umieszczenia rozkazu skokowego. Rozszerzenie tego interwału można uzyskać

     programowo w nastę  pują cy sposób

    PUSH PSWPUSH BPUSH DPUSH HIN nMOV L, AMVI H, baza/2DAD HPCHL

    Do rejestru H wpisywana jest połowa bazy, i taki adres jest podwajany (rozkaz DAD). Wtedyliczba parzysta staje się  liczbą  podzielną  przez cztery, w której dwa najmniej znaczą ce bity są zerowe, co tworzy interwały 4-bajtowe. Oczywiście, baza powinna być tak dobrana, by przy

     podwajaniu nie wystą  pił nadmiar.

  • 8/19/2019 System Przerwan

    37/69

    Z. Pogoda - 4.33 - INSTYTUT ELEKTRONIKI

    Wreszcie, ta sama technika mogłaby być zastosowana do rozszerzenia uk ładu o nastę  p-

    ny kontroler przerwań, co dałoby pojemność równą  48. Należałoby się  posłużyć czwartą  czę -

    ścią  bazy.

    W omówionych przyk ładach numer przerwania był kodowany, natomiast grupa wyzna-czana była w sposób liniowy. Powodowało to, że nie wszystkie adresy skokowe dla określo-

    nego interwału mogły być wykorzystane. Jeśli numer grupy zostanie również zakodowany, to

     pojemność  uk ładu przerwań  może być  rozszerzona do pełnej liczby równej 256. Struktura

    wektora przerwań bę dzie wtedy nastę  pują ca

    G4 G3 G2 G1 G0  A2 A2 A0

    Pięć  bitów grupowych daje możliwość  rozróżnienia 64 grup przerwań  (kontrolerów), Taki

    wektor przerwania powinien być przetworzony na adres skokowy. Dla interwału czterobajto-

    wego może to być osią gnię te w nastę  pują cy sposób

    15 8 7 0

    B5 B4 B3 B2 B1 B0 G4 G3 G2 G1 G0 A2 A1 A0 0 0

    Powstaje wtedy tablica skoków do procedur obsługi obejmują ca 1 KB  pamię ci, która może

    stanowić dowolną  stronicę  w przestrzeni adresowej, określoną  przez bity Bi. Na rys. 4.26  po-

    kazany jest przyk ład wykorzystania kodera priorytetowego SN74148 do kodowania numeru

     jednej z czterech grup. Użycie kodera priorytetowego jest niezbę dne, gdyż  kilka sygnałów

    +5 V

    INT0INT1

    INT2

    INT3

    +5 V

     A30 A31 A32