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
Rejestr sterujący IEN1
Rejestr sterujący IEN2
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?