Wykład 5

12
1 Wykład 5 Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył Katedra Inżynierii Komputerowej Politechnika Częstochowska

description

Wykład 5. Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył Katedra Inżynierii Komputerowej Politechnika Częstochowska. Struktura systemu przerwań maskowalnych* w SAB 80C537 część 1. Struktura systemu przerwań maskowalnych w SAB 80C537, część 2. Rejestr sterujący IEN0. - PowerPoint PPT Presentation

Transcript of Wykład 5

Page 1: Wykład 5

1

Wykład 5

Przerwania

w systemie SAB80C537

dr inż. Andrzej Przybył

Katedra Inżynierii Komputerowej

Politechnika Częstochowska

Page 2: Wykład 5

2

Struktura systemu przerwań maskowalnych* w SAB 80C537 część 1

Page 3: Wykład 5

3

Struktura systemu przerwań maskowalnych w SAB 80C537, część 2

Page 4: Wykład 5

4

Rejestr sterujący IEN0

Page 5: Wykład 5

5

Rejestr sterujący IEN1

Page 6: Wykład 5

6

Rejestr sterujący IEN2

Page 7: Wykład 5

7

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.

Page 8: Wykład 5

8

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.

Page 9: Wykład 5

9

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 T0ljmp procedura_przerwania_T0

RSEG PROGRAM ;informacja dla linkera - następne dane to kod programu

START: ;(Z tego miejsca uruchomi sie program);... dowolne instrukcjeSETB EAL ;globalne zezwolenie na przerwanieSETL ET0 ;zezwolenie na przerwania Timera T0

PETLA: ; Petla glowna programu;...JMP PETLA

;@@@@@@@@@@@@@@@@@@@@@@@@@procedura_przerwania_T0:

push PSW ;odkładamy na stos używane rejestrypush 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 PSWreti

;@@@@@@@@@@@@@@@@@@@@@@@@@

Page 10: Wykład 5

10

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.

Page 11: Wykład 5

11

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.

Page 12: Wykład 5

12

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?