74
8. Przerwania
g. Przerwania
75
ziomu. Dlatego, by układ poprawnie zareagował na sygnał przerwania, zarówno stan wysoki jak i niski powinny trwać przynajmniej przez jeden cykl maszyn< wy.
Przy przerwaniach zewnętrznych reagujących na poziom, przed zakończeniem podprogramu obsługi przerwania, sygnał wejściowy powinien przejść do poziomu wysokiego lub należy zablokować to przerwanie, gdyż w przeciwny przypadku nastąpi ponowne wejście do obsługi tego prze. rwania.
W mikrokontrolerach rodziny '51 występuje jeden znacznik, którym można zablokować wszystkie przerwania równocześnie i znaczniki blokujące indywidualnie każde źródło przerwania. W zależności od liczby źródeł prze* rwań, znaczniki te mogą mieścić się w jednym lub dwóch rejestrach.
W różnych mikrokontrolerach rodziny '51 rejestry zawierające te same znaczniki i mieszczące się pod tymi samymi adresami mogą mieć różą nazwy. Podobnie znaczniki pełniące tę sama funkcję mogą mieć równią inną nazwę
Poniżej są podane rejestry i rozmieszczone w nich znaczniki blokując-: przerwania dla mikrokontrolerów 8xC51/51 i 80C515/535.
-
• ETO - znacznik blokujący przerwanie od licznika TO
• EX0 - znacznik blokujący zewnętrzne przerwanie INTO
• FXEN2 - znacznik blokujący przerwanie od zewnętrznego sygnału
przeładowania licznika T2.
• EX6 : EX4 - znaczniki blokujące zewnętrzne przerwania INT6 -s* INT4
oraz przerwania od komparatorów CC3 * CCI
• EX3 - znacznik blokujący zewnętrzne przerwanie INT3 oraz
przerwanie od komparatora CRC.
• EX2 - znacznik blokujący zewnętrzne przerwanie INT2.
• EADC - znacznik blokujący przerwanie od przetwornika A/C.
Stan znaczników wywołujących przerwania jest sprawdzany w fazie S5P2 każdego cyklu maszynowego, rysunek 8-4. W następnym cyklu maszynowym po wykryciu sygnału przerwania następuje rozpoznanie źródła przerwania oraz ustalenie kolejności obsługi przerwania, jeśli wystąpiło kilka sygnałów przerwań równocześnie. W dwóch kolejnych cyklach maszynowych jest zapamiętywana na stosie zawartość licznika rozkazów, do licznika rozkazów jest wpisywany adres przerwania i jest ewentualnie zerowany znacznik wywołujący przerwanie, jeżeli jest to znacznik zerowany sprzętowo.
rejestr
IE
Ustawienie znaczników w stan zera powoduje zablokowanie przerwa Przychodzące sygnały przerwań nie śą pamiętane.
8xC51/52:
adres 0A8h
0
cykle maszynowe 3
EA
ET2
ES ET1
EX1 ETO EX0
rw
zgłoszenie
przerwań
S5P2
wybór
przerwania
skok do adresu obsługi przerwania
podprogram obsługi przerwania
zapamiętanie
przerwań
80C515/535:
rejestr
IENO
rejestr
IEN1
adres 0A8h
EAL 1 W PT | ET2 | ES \\ ET1 | EX1 ETO EX0 |rw = 0
adres 0B8h
|EXENT2lsWDTl EX6 | EX5 || EX4 1 EX3 [ EX2 lEADC|rw = 0
EA, EAL - znaczniki blokujące wszystkie przerwania.
ET2 - znacznik blokujący przerwanie od licznika T2
ES - znacznik blokujący przerwania od nadajnika i odbiornil
portu szeregowego
ET1 - znacznik blokujący przerwanie od licznika Tl EX1 - znacznik blokujący zewnętrzne przerwanie INT1
Rys. 8-4. Wybór przerwania i wywołanie podprogramu jego obsługi.
Wejście do procedury obsługi przerwania może być opóźnione jeżeli:
1. jest obsługiwane przerwanie, które nie może być przerwane. W tej sytuacji musi być ono najpierw zakończone, potem jest wykonywany jeden rozkaz z przerwanego programu i dopiero wtedy może być obsłużone kolejne przerwanie.
2. nie został zakończony aktualnie wykonywany rozkaz. Najpierw musi być zakończony rozkaz, by procesor przeszedł do obsługi przerwania.
Z powyższego wynika wniosek, że czas od momentu nadejścia sygnału trwania do momentu wejścia do procedury obsługi przerwania może być
roż
ny.