SYSTEM PRZERWAŃ (dla µ-kontrolerów rodziny 51) pomysł przerwań zewnętrznych i programowych to kolejny, genialny fundament konstrukcji procesorów cyfrowych Naturalnie sekwencyjne wykonywanie programu może być przerwane przez specjalne sygnały pochodzące od wewnętrznych urządzeń peryferyjnych bądź przychodzące z zewnątrz. W procesorach o złożonych systemach operacyjnych repertuar przerwań rozszerzają przerwania programowe, pochodzące od innych procesów. Przerwanie oznacza zawsze zmianę stanu licznika rozkazów i rozpoczęcie obsługi przerwania. Po zakończeniu obsługi przerwania µ-kontroler powraca do wykonywania programu od miejsca przerwania. Z każdym źródłem przerwania ściśle związane są: adres i priorytet programu obsługi. Dla µ-kontrolerów rodziny 51 nieźle przestrzegana jest standaryzacja tych parametrów. Przy jednoczesnym wystąpieniu warunków dla dwóch lub więcej przerwań w pierwszej kolejności obsługiwane jest przerwanie o wyższym priorytecie. Czas reakcji na przerwanie zależy od szeregu warunków. Jest to bardzo istotny czynnik w programowaniu µ-kontrolerów, stosowanych zwykle w systemach o silnym uwarunkowaniu czasowym. Zarówno cały układ przerwań jak i każde indywidualne przerwanie mogą być programowo uaktywnione lub wyłączone. 1/10
SYSTEM PRZERWAŃ (dla µ-kontrolerów rodziny 51) cd. Wskaźniki przerwań Wskaźniki przerwań (występują w rejestrach SFR, właściwych dla danych urządzeń lub sygnałów) ustawiane są sprzętowo i ustawienie to jest warunkiem koniecznym dla przerwania. Wskaźniki muszą być zerowane (sprzętowo bądź programowo) przed opuszczeniem procedury obsługi przerwania. W przeciwnym przypadku obsługa przerwania wywołana zostanie natychmiast ponownie. Niektóre wskaźniki przerwań mogą być ustawiane także programowo, co daje możność programowego symulowania zdarzeń. Układ przerwań reaguje na stan wskaźnika, a nie na moment ustawienia. Stan wskaźników badany jest w każdym cyklu maszynowym w fazie S5P2. Priorytet przerwania Przy jednoczesnym ustawieniu kilku wskaźników, o kolejności obsługi przerwania decyduje priorytet. Efektywny priorytet danego przerwania wynika z dwóch czynników: - programowo ustawianego poziomu priorytetu, który jest czynnikiem nadrzędnym w stosunku do - naturalnego priorytetu przerwań. W µ-kontrolerach rodziny 51 liczba poziomów przerwań bywa różna (1-4). Efektywny priorytet przerwania z poziomu wyższego jest wyższy od każdego przerwania z poziomu niższego. Wśród przerwań danego poziomu o pierwszeństwie obsługi decyduje znów priorytet naturalny. 2/10
Przerwanie o wyższym priorytecie przerywa obsługę przerwania o niższym priorytecie, po czym następuje powrót do przerwanej obsługi przerwania o niższym priorytecie. (Rysunek z książki T.Starecki. Mikokontrolery jednoukładowe rodziny 51. NOZOMI W-wa 1996) 3/10
(Tabela z książki T.Starecki. Mikokontrolery jednoukładowe rodziny 51. NOZOMI W-wa 1996) 4/10
5/10 (Tabela z książki T.Starecki. Mikokontrolery jednoukładowe rodziny 51. NOZOMI W-wa 1996)
SYSTEM PRZERWAŃ (dla µ-kontrolerów rodziny 51) cd. Naturalny priorytet przerwań nie może być zmieniany jest sztywno związany z typem µ-kontrolera. Również, adresy procedur obsługi (tzw. wektory adresowe) poszczególnych przerwań zależą od typu µ-kontrolera i nie mogą być zmieniane. Obsługa przerwań Stan wskaźników badany jest w S5P2 i interpretowany w czasie następnego cyklu maszynowego. Jeśli warunki dla przerwania są spełnione to generowana jest ( sprzętowo ) instrukcja dalekiego wywołania procedury, a adres jej określa wektor adresowy zgłoszonego przerwania. Wywołanie to jest jednak wstrzymane jeśli: - trwa obsługa przerwania o priorytecie wyższym niż zgłoszone, lub - bieżący cykl maszynowy nie jest ostatnim cyklem wykonywanej instrukcji, lub - właśnie wykonywana jest komenda RETI, lub jakaś inna, modyfikująca rejestry zawierające bity priorytetów lub bity zezwoleń na przerwania. Wygenerowana instrukcja dalekiego wywołania procedury obsługuje oczywiście odpowiednio licznik rozkazów, natomiast NIE zapamiętuje (ani nie odtwarza) żadnych rejestrów. Należy to do programisty. Powróŧ z tych szczególnych procedur obsługi przerwań musi być wywołany przez RETI (a nie przez RET!!!). Tylko w ten sposób układ przerwań przywracany jest do stanu sprzed przerwania. 6/10
7/10
8/10
9/10
SYSTEM PRZERWAŃ (dla µ-kontrolerów rodziny 51) cd. Czas reakcji na przerwanie Szacowanie tego czasu jest bardzo ważnym elementem projektownia systemu sterowanego µ-kontrolerami, który jest zwykle systemem czasu rzeczywistego, czyli systemem o silnych uwarunkowaniach czasowych. 1. Przynajmniej jeden cykl maszynowy upływa na interpretację wskaźników próbkowanych w S5P2. 2. Dwa cykle maszynowe zużywa instrukcja LCALL, sprzętowo wygenerowane dalekie wywołania procedury przerwania. 3. Na maksymalny czas reakcji może składać się szereg cykli maszynowych, wynikających z w/w warunków wstrzymujących obsługę przerwania. 4. Decydującym, ale łatwiejszym do oszacowania składnikiem czasu reakcji na przerwanie jest sam program obsługi przerwania. Dobrą praktyką programistyczną jest optymalizacja, minimalizowanie programów obsługi, wprowadzanie do obsługi przerwań jedynie niezbędnych operacji i przerzucanie szczegółowej analizy i obróbki danych do programu głównego. 10/10