120 likes | 271 Views
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.
E N D
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
Podstawowe informacje dotyczące wykorzystywania przerwań, cz. 1 • Każde przerwanie ma swoją flagę zgłoszenia ustawianą automatycznie przez urządzenie będące źródłem przerwania • Flagi można również ustawić programowo symulując w ten sposób wystąpienie zgłoszenia żądania przerwania. • 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. • 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. • Niektóre z flag zgłoszenia przerwania zostają automatycznie (sprzętowo) skasowane zaraz po rozpoczęciu obsługi przerwania. Inne trzeba kasować programowo.
Podstawowe informacje dotyczące wykorzystywania przerwań, cz. 2 • 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. • 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. • 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. • Zezwolenie na obsługę przerwań może być sterowane dla całego systemu (globalnie) za pomocą bitu EAL.
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 ;@@@@@@@@@@@@@@@@@@@@@@@@@
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.
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.
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?