w5-sw_w_us - Katedra Inżynierii Komputerowej Politechniki
Download
Report
Transcript w5-sw_w_us - Katedra Inżynierii Komputerowej Politechniki
Wykład 5
Przerwania
w systemie SAB80C537
dr inż. Andrzej Przybył
Katedra Inżynierii Komputerowej
Politechnika Częstochowska
1
Struktura systemu przerwań maskowalnych*
w SAB 80C537 część 1
2
Struktura systemu przerwań maskowalnych
w SAB 80C537, część 2
3
Rejestr sterujący IEN0
4
Rejestr sterujący IEN1
5
Rejestr sterujący IEN2
6
Podstawowe informacje
dotyczące wykorzystywania przerwań, cz. 1
1. Każde przerwanie ma swoją flagę zgłoszenia ustawianą
automatycznie przez urządzenie będące źródłem przerwania
2. Flagi można również ustawić programowo symulując w ten sposób
wystąpienie zgłoszenia żądania przerwania.
3. Do każdej flagi zgłoszenia przerwania istnieje odpowiednia flaga
zezwolenia, która pozwala (gdy ustawiona) lub zabrania (gdy
skasowana) wykonania obsługi danego przerwania.
4. Każde przerwanie ma swój wektor w tablicy wektorów przerwań.
Jest to specyficzny adres, do którego zostanie przekazane
sterowanie procesora w przypadku zezwolenia na obsługę danego
przerwania.
5. Niektóre z flag zgłoszenia przerwania zostają automatycznie
(sprzętowo) skasowane zaraz po rozpoczęciu obsługi przerwania.
Inne trzeba kasować programowo.
7
Podstawowe informacje
dotyczące wykorzystywania przerwań, cz. 2
6. Procesor rozpoczynając obsługę przerwania wykonuje „skok” do
właściwego wektora przerwań, wcześniej zapamiętując na stosie adres
następnej instrukcji, która powinien wykonać gdyby nie wystąpiło
przerwanie.
7. Procedura obsługi przerwania powinna kończyć się instrukcję RETI
(Return from Interrupt), która powoduje powrót do przerwanego miejsca
wykonywania programu głównego.
8. Wszelkie zmiany w rejestrach procesora, które zostały dokonane w trakcie
działania procedury obsługi przerwania mogą mieć niekorzystny wpływ na
wykonywanie przerwanego programu. Z tego powodu wartości używanych
w procedurze obsługi przerwania rejestrów muszą być zapamiętane na
początku procedury przerwania i odtworzone na jej końcu.
9. Zezwolenie na obsługę przerwań może być sterowane dla całego systemu
(globalnie) za pomocą bitu EAL.
8
Przykładowa procedura obsługi przerwań
org 0x0000 ; adres początku kodu programu - tutaj początek tablicy wektorów
;przerwań
JMP
START
;Adres 0x0000 to wektor przerwania RESET – po resecie ma się
;rozpocząć wykonywanie programu od miejsca oznaczonego etykietą START
org 0x000b
;Adres 0x000b to wektor przerwania Timer T0
ljmp procedura_przerwania_T0
RSEG
PROGRAM
;informacja dla linkera - następne dane to kod programu
START:
;(Z tego miejsca uruchomi sie program)
;... dowolne instrukcje
SETB EAL
;globalne zezwolenie na przerwanie
SETL ET0
;zezwolenie na przerwania Timera T0
PETLA:
; Petla glowna programu
;...
JMP PETLA
;@@@@@@@@@@@@@@@@@@@@@@@@@
procedura_przerwania_T0:
push PSW ;odkładamy na stos używane rejestry
push ACC ;Akumulator A – tutaj używamy nazwy ACC
;...
;...
pop ACC ;rejestry odtwarzamy w odwrotnej kolejności – stos to
struktura LIFO (Last In First Out)
pop PSW
reti
;@@@@@@@@@@@@@@@@@@@@@@@@@
9
Priorytety przerwań
Priorytety przerwań ustalane są dla całych grup
(dwójek lub trójek) według tabeli:
za pomocą bitów w rejestrach IP1/0:
oraz na podstawie schematu ze stron 2 oraz 3.
10
Priorytety przerwań
• Priorytety przerwań opisują zachowanie się systemu przerwań w
przypadku jednoczesnego wystąpienia dwu lub więcej zgłoszeń
żądań przerwań.
• Każde przerwanie ma zdefiniowany priorytet, który opisuje w jakiej
kolejności (w stosunku do innych przerwań) zostanie wykonane.
• Przerwanie o najwyższym priorytecie zawsze zostanie
wykonane w pierwszej kolejności i nie zostanie przerwane przez
żadne inne przerwanie.
• Przerwanie o niższym priorytecie zostanie opóźnione jeśli
aktualnie wykonuje się przerwanie o takim samym lub wyższym
priorytecie.
• Przerwanie takie również (jeśli już się wykonuje) zostanie
przerwane przez procedurę obsługi przerwania o wyższym
priorytecie – jeśli nastąpi takie zgłoszenie.
11
Pytania kontrolne
• Opisać działanie flag zgłoszeń przerwań w systemie
komputerowym.
• Jakie warunki muszą być spełnione aby procesor rozpoczął
wykonywanie procedury obsługi wybranego przerwania
• Opisać zachowanie się systemu przerwań w przypadku
jednoczesnego zgłoszenia dwu przerwań o różnych priorytetach.
• Podać podstawowe warunki jakie musi spełniać procedura obsługi
przerwania w systemie z procesorem SAB 80C537
• Jaki jest cel stosowania przerwań w tworzeniu oprogramowania
systemów wbudowanych?
12