Przerwania: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
Dodane 1560 bajtów ,  24 wrz 2013
Nie podano opisu zmian
 
(Nie pokazano 7 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
Jednostka centralna posiada układ przerwań, który jest w stanie przyjmować i obsługiwać 32 przerwania. Układ przerwań jest układem priorytetowym. Ustalenie priorytetów związane jest z geometrią zgłoszeń przerwań, a mianowicie im niższy jest numer przerwania, tym wyższy jest jego priorytet.
Jednostka centralna posiada układ przerwań, który jest w stanie przyjmować i obsługiwać 32 przerwania. Układ przerwań jest układem priorytetowym. Ustalenie priorytetów związane jest z geometrią zgłoszeń przerwań, a mianowicie im niższy jest numer przerwania, tym wyższy jest jego priorytet.
== Obsługa przerwań ==


Obsługę przerwania wykonuje się gdy:
Obsługę przerwania wykonuje się gdy:
* nastąpi zgłoszenie przerwania do rejestru RZm
 
* nastąpi zgłoszenie przerwania do rejestru RZ
* zapalona jest maska odpowiadająca zgłoszonemu przerwaniowi,
* zapalona jest maska odpowiadająca zgłoszonemu przerwaniowi,
* wskaźnik przeskoku P=0,
* wskaźnik przeskoku P=0,
Linia 37: Linia 40:
* RM[0÷9] := 0 dla i = 0
* RM[0÷9] := 0 dla i = 0
* RZ<sub>j</sub> := 0
* RZ<sub>j</sub> := 0
* IC := S/64+1;0/
* IC := S/64+i;0/
* S/97;0/ := S/97;0/+4
* S/97;0/ := S/97;0/+4
* SR<sub>10</sub> := 0
* SR<sub>10</sub> := 0
== Elementy układu obsługi przerwań ==


Układ przerwań zawiera następujące rejestry:
Układ przerwań zawiera następujące rejestry:
Linia 46: Linia 51:
* RP - 32-bitowy rejestr przyjęć przerwań, w którym następuje wybranie przerwania o najwyższym priorytecie spośród przerwań zamaskowanych.
* RP - 32-bitowy rejestr przyjęć przerwań, w którym następuje wybranie przerwania o najwyższym priorytecie spośród przerwań zamaskowanych.


Poniżej przedstawiono znaczenie poszczególnych pozycji rejestru zgłoszeń przerwań RZ:
Wszystkie pozycje rejestru zgłoszeń, z wyjątkiem pozycji przerwań kanałowych, dostępne są programowo (rozkazami KI i FI). Wszystkie pozycje (z wyjątkiem zerowej) rejestru RZ są maskowalne. Maskę stanowi rejestr maskujący RM o długości 10 bitów (poz 0&divide;9 rejestru SR). Przyporządkowanie pozycji rejestru RZ pozycjom rejestru maskującego i adresy początków podprogramów obsługi, a także znaczenie poszczególnych pozycji rejestru zgłoszeń RZ przedstawia tabela poniżej. Przerwania, które zostały zgłoszone, mogą być obsłużone tylko w przypadku, gdy zapalona jest odpowiadająca im pozycja w rejestrze maskującym.


{| class="wikitable"
{| class="wikitable"
! RZ<sub>n</sub> !! Znaczenie
! Pozycja w SR !! Pozycja w RZ !! Adres<br/>(dec) !! Adres<br/>(hex) !! Opis
|-
| - || 0 || 64 || 0x40 || alarm zasilania (z danego procesora)
|-
| 0 || 1 || 65 || 0x41 || błąd parzystości pamięci operacyjnej
|-
| 1 || 2 || 66 || 0x42 || brak pamięci operacyjnej
|-
| 2 || 3 || 67 || 0x43 || zgłoszenie przerwania z drugiego procesora (przeważnie o wyższym priorytecie)
|-
| 3 || 4 || 68 || 0x44 || zanik zasilania (z interfejsu) modułów zewnętrznych
|-
| rowspan=7 | 4 || 5 || 69 || 0x45 || [[przerwanie zegarowe]]
|-
| 6 || 70 || 0x46 || nieprawidłowy rozkaz
|-
| 7 || 71 || 0x47 || nadmiar dzielenia stałoprzecinkowego
|-
| 8 || 72 || 0x48 || podmiar zmiennoprzecinkowy
|-
| 9 || 73 || 0x49 || nadmiar zmiennoprzecinkowy
|-
| 10 || 74 || 0x4a || błąd danych zmiennoprzecinkowych lub próba dzielenia przez zero
|-
| 11 || 75 || 0x4b || do zastosowań specjalnych
|-
| rowspan=2 | 5 || 12 || 76 || 0x4c || kanał 0
|-
| 13 || 77 || 0x4d || kanał 1
|-
| rowspan=2 | 6 || 14 || 78 || 0x4e || kanał 2
|-
| 15 || 79 || 0x4f || kanał 3
|-
|-
| 0 || alarm zasilania (z danego procesora)
| rowspan=6 | 7 || 16 || 80 || 0x50 || kanał 4
|-
|-
| 1 || błąd parzystości pamięci operacyjnej
| 17 || 81 || 0x51 || kanał 5
|-
|-
| 2 || brak pamięci operacyjnej
| 18 || 82 || 0x52 || kanał 6
|-
|-
| 3 || zgłoszenie przerwania z drugiego procesora (przeważnie o wyższym priorytecie)
| 19 || 83 || 0x53 || kanał 7
|-
|-
| 4 || zanik zasilania (z interfejsu) modułów zewnętrznych
| 20 || 84 || 0x54 || kanał 8
|-
|-
| 5 || przerwanie zegarowe
| 21 || 85 || 0x55 || kanał 9
|-
|-
| 6 || nieprawidłowy rozkaz
| rowspan=6 | 8 || 22 || 86 || 0x56 || kanał 10
|-
|-
| 7 || nadmiar dzielenia stałoprzecinkowego
| 23 || 87 || 0x57 || kanał 11
|-
|-
| 8 || podmiar zmiennoprzecinkowy
| 24 || 88 || 0x58 || kanał 12
|-
|-
| 9 || nadmiar zmiennoprzecinkowy
| 25 || 89 || 0x59 || kanał 13
|-
|-
| 10 || błąd danych zmiennoprzecinkowych lub próba dzielenia przez zero
| 26 || 90 || 0x5a || kanał 14
|-
|-
| 11 || do zastosowań specjalnych
| 27 || 91 || 0x5b || kanał 15
|-
|-
| 12&divide;27 || przerwania kanałowe
| rowspan=4 | 9 || 28 || 92 || 0x5c || zgłoszenie operatora (OPRQ)
|-
|-
| 28 || zgłoszenie operatora (OPRQ)
| 29 || 93 || 0x5d || zgłoszenie przerwania z drugiego procesora (przerwanie o niższym priorytecie)
|-
|-
| 29 || zgłoszenie przerwania z drugiego procesora (przerwanie o niższym priorytecie)
| 30 || 94 || 0x5e || przerwanie programowe
|-
|-
| 30&divide;31 || przerwania programowe
| 31 || 95 || 0x5f || przerwanie programowe
|-
|-
|}
|}

Menu nawigacyjne