background image

 

SYSTEM PRZERWAŃ PROCESORA 
 
System przerwań – „skrzynka pierwszej pomocy”. Zjawiska nieprzewidziane: 

 

1)  zagrożenie natury sprzętowej (awarie elementów); 

2)  zagrożenie programowe (np. dzielenie przez zero); 
3)  usługi dla użytkownika. 

 
Jak sobie poradzić? 

 

1)  wyłączenie sprzętu, zapisanie danych 

2)    
3)  użytkownik zleca systemowi wykonanie czegoś. 

 
„Recepty” – procedura, procesor porzuca to co robił i ją wykonuje: 

-  napisana przez twórców, konstruktorów, nie można jej zmieniać; 
-  napisana przez twórców, konstruktorów, można dołączyć własną 

(zmodyfikować); 

-  miejsce puste, można stworzyć własny system przerwań. 

 
Działanie systemu przerwań: 

 

-  procesor sprawdza stabilność systemu przerwań po wykonaniu rozkazu 

(dość często), 

-  urządzenie zgłasza usterkę, wtedy procesor reaguje; 
-  zgłoszenie przerwania – procesory mają: 

  linie zgłoszenia przerwania (jest ich kilka): Int Req (interrupt 

request), 

  albo rejestry ze znacznikami, że są zgłoszone przerwania. 

 
Kiedy jest przerwanie, to: 

 

1)  procesor sprawdza zgłoszenie przerwania

 
2)  wyłącznie systemu przerwań (opcjonalnie) – procesor przyjmuje 

jedno przerwanie do obsługi (i tylko 1), inne nie są realizowane – muszą 
poczekać. Jest to funkcja opcjonalna, ponieważ jeśli pojawi się sprawa 

poważniejsza to procesor się nią zajmuje; 

 

3)  zachowanie stanu procesora (zapamiętanie tego co się to tej pory 

działo): 

  przełączanie danych – istotne dane są w bezpiecznym miejscu (na 

stosie) – rejestry PC i inne ważne rejestry, 

  przełączanie kontekstu – jeśli procesor ma kilka zestawów rejestrów – 

wykorzystywany jest ten wolny (szybsze, nie ma transmisji danych). 

Zachowanie stanu może być realizowane: 
  automatycznie – procesor bierze na siebie zachowanie danych; 
  programowo – programista musi zachować to co może być 

zniszczone, procesor nie wykona tego automatycznie 

background image

 

  kombinowane – automatycznie: licznik rozkazów, rejestry specjalne; 

programista: rejestry wspólnego przeznaczenia. 

 

4) identyfikacja przerwania – procesor uaktywnia linie odpowiedzi na 
przerwanie (Int Ack – interrupt acknowledge).  

Do procesora: 

–  numer przerwania (procesor prześle go magistralą danych), 
–  adres przerwania. 

 

ARBITRAŻ PRZERWAŃ (określa kolejność wykonywania przerwań). 
 

-  sprzętowy 

        

       

 

1. równoległy 

 

 

          2. szeregowy 

 

    3. równoległo - 

szeregowy 

 
1. – wszystkie urządzenia są przypięte do dekodera przerwań, który ustala 

kolejność zgłoszenia przerwania do procesora. Numeracja wejść decyduje o 
priorytecie przerwań. Priorytet może być wędrujący – obsłużony idzie na 

koniec kolejki 
 

2. – podaj dalej – urządzenia zgłaszające Int Req są łączone w jeden sygnał 
 

3. – połączenie 1. i 2. – dekodery przerwań są przypięte w sposób szeregowy – 
rozwiązanie dobre dla wielu urządzeń. 

 

-  programowy 

 

5)  skok do procedury obsługi przerwania

 
6)  powrót z obsługi przerwania – to co w 2) i 3), tylko w odwrotnej 

kolejności: 

 

  odtworzenie stanu procesora, 
  włączenie systemu przerwań. 

 
 

SYSTEM PRZERWAŃ W 8051 
 

1)  5-6 źródeł przerwań: 
 

  2 zewnętrzne INT0, INT1 (linie typu Int Req), 

background image

 

  2 od układów czasowo – licznikowych #0, #1, 
  1 przerwanie od portu szeregowego 
  szóste przerwanie od dodatkowego układu czasowo – licznikowego #2 

 

2)  przerwania mogą być maskowane (wyłączane) – w 8051 w sposób 

programowy (w 8-bitowym rejestrze IE) 

  

 

EA  -  ET2  ES  ET1  EX1  ET0  EX0 

Nr 

bitu 

7  6  5  4  3 

 

EA – pozwala zamaskować wszystkie przerwania (1=wszystko włączone, 
0=wszystko wyłączone) 

ET2 - WŁ/WYŁ #2 
ES – port szeregowy 

ET1 - #1 
EX1 – przerwania zewnętrzne zgłaszane linią INT1 

ET0 - #0 
EX0 - INTO 

 
Słowa sterujące i kontrolne SFR 

Maska przerwań 
 

Nr bitu 
(hex) 

AF  AE  AD  AC  AB  AA  A9  A8 

 

EA  -  ET2  ES  ET1  EX1  ET0  EX0 

 

MSB   

 

 

 

 

  LSB 

 

Przerwania od: 
 
-  portu szeregowego – rejestr SCON (obsługuje port szeregowy), bity TI, 

RI (najmłodsze). TI – przerwanie od nadajnika – nadajnik wyśle i to 

sygnalizuje; RI – przerwanie od odbiornika (odebranie bajtu = zgłoszenie 
przerwania) 

 

-  licznika #2 – w rejestrze T2CON (tylko dla 8051). TF2 – najstarszy – ślad 

o zgłoszeniu przerwania. 

 

 
PRIORYTET PRZERWAŃ – dwuetapowy: 

 

1)  użytkownik może ustalić – definiuje programowo posługując się 

rejestrem IP: 

 

-  PT2  PS  PT1  PX1  PT0  PX0 

MSB   

 

 

 

 

  LSB 

 

PT2, PT1, PT0 – od układów czasowo – licznikowych 

background image

 

PS – od portu szeregowego 
PX1 – priorytet przerwania zewnętrznego zgłaszanego linią INT1 
PX0 – priorytet przerwania zewnętrznego zgłaszanego linią INT0 

 
Dwa poziomy – wyższy i niższy. Użytkownik może ustawić priorytety 

dowolnie. 
Przyjście przerwania o wyższym priorytecie powoduje przerwanie 

przerwania o niższym priorytecie :). 
Przyjście przerwania o niższym priorytecie nie powoduje przerwania 

przerwania o wyższym priorytecie :)). 
Jak przyjdą 2 przerwania o tym samym priorytecie, to wtedy obowiązuje 

następująca kolejność: 
 

1)  INT0 
2)  #0 

3)  INT1 
4)  #1 

5)  PS 
6)  #2 

 
Ta sekwencja jest niezmienna, spadek priorytetu uaktywnia się wtedy, gdy 

przychodzi kilka przerwań o tym samym priorytecie. 
 

PROCEDURY OBSŁUGI PRZERWAŃ 
 

Adresy stałe: 
 

INT0 -> 3 hex 
INT1 -> 13 hex 

#0 -> B hex 
#1 -> 1B hex 

PS -> 23 hex 
#2 -> 2B hex 

 
Gdy był dostęp do rejestrów IE, IP to system nie sprawdza przerwań 

(dopiero po wykonaniu następnego rozkazu). 
Gdy procesor wraca z procedury przerwania – odtwarza swój stan i powraca 

do wykonania programu zaleconego, wtedy też nie sprawdza przerwań – 
dopiero po wykonaniu następnej instrukcji w programie. 
 
 

DMA – układ bezpośredniego dostępu do pamięci (Direct Memory Access) 
 

Kiedy procesor za bardzo zajmuje się obsługą urządzeń WE/WY ,a nie 
programem, DMA ma odciążyć procesor, czyli pobiera od układu WEJ do 

pamięci i z pamięci do układu WYJ. Można też skopiować fragment pamięci z 
jednego miejsca w drugie. 

background image

 

10 

Komunikacja za pomocą magistral -> procesor zarządza magistralami, ale 
DMA też potrzebuje do nich dostępu na poziomie procesora. 
 

Zarządzanie magistralami – tryby pracy DMA: 
 

1)  blokowy 
2)  z wykradaniem taktów. 

 
1. Tryb blokowy – jak DMA przejmie magistralę od procesora, to prowadzi 

transmisję od początku do końca – jest właścicielem magistrali na cały czas 
trwania transmisji. 

DMA upora się tak szybko jak to możliwe – cenne, gdy układ WE przesyła dużo 
danych (np. skaner). 

Procesor nie ma wtedy dostępu do magistrali – nie może pobierać 
argumentów, nie może wysyłać rezultatów, nie może pobrać następnego 

rozkazu, itp. 
Wniosek – DMA działa sprawnie, procesor nie. 

 
2. Tryb z wykradaniem taktów – właścicielem magistrali jest procesor, DMA 

dostaje magistralę tylko wtedy, gdy procesor jej nie potrzebuje. 
Wniosek – DMA przesyła dane „kawałek po kawałku”, procesor działa bez 

zakłóceń. 
 

To procesor programuje układy DMA. 
 

Rejestry DMA: 
 

1)  adresowy – RA – procesor zapisuje początek adresu pamięci 

wykorzystywany przez DMA 

2)  licznika – RL – ilość słów, które DMA ma przyjąć albo wysłać, czyli 

system „początek i ile” 

3)  sterujący – RS – definiowane parametry transmisji: czy to odczyt, zapis 

czy kopiowanie pamięci 

4)  statusowy – RStat. – raport z działania DMA. Jeśli DMA zgłosi przerwanie 

– jak jest błąd lub problem, RStat. podpowie rodzaj błędu. 

 

        

    

 

 
PROCESOR

RD, WR (aktywne poziomem niskim) – linie odczytu i zapisu 
MREQ, IOREQ – linie żądań dostępu do pamięci i układów WE/WY 

BUSRQ – żądanie dostępu do magistrali 

background image

 

11 

BUSACK – potwierdzenie zwolnienia magistrali 
 
DMA

Adres  

    bo mamy magistralę, czyli = procesor 

IOREQ      bo układ wejściowy w trybie programowania 

INT       zgłoszenie przerwania do procesora 
HOLDRQ – linie WYJ – chce się skontaktować z BUSACK 

HOLDACK – kontakt z BUSACK 
DMARQ – wejściowa linia 

DMAACK – linia wyjściowa 
 

Przykład układu DMA – INTEL 
8257 (8237A) 

 
- ma 4 niezależne kanały DMA 

(możliwe są 4 transmisje przez 
kanały DMA), 

 
- układ wyboru priorytetu (bo są 4 

kanały): #0 ma najwyższy priorytet 



 .......... #3 



; obsłużony na 

koniec kolejki, 
 

- umożliwia hierarchiczne podłączanie kilku układów DMA, 
 

- układ może pracować w trybie zgodnym z zapotrzebowaniem – np. w 
deklaracji transmisji „nie więcej niż...”