MCS51 - wykład 5 Wykład 5 2/28 Przerwania MCS51 Praca krokowa Praca z obniżonym poborem prądu MCS51 - przerwania zewnętrzne 3/28 • dwa: INT0 i INT1; • aktywne poziomem.
Download ReportTranscript MCS51 - wykład 5 Wykład 5 2/28 Przerwania MCS51 Praca krokowa Praca z obniżonym poborem prądu MCS51 - przerwania zewnętrzne 3/28 • dwa: INT0 i INT1; • aktywne poziomem.
Slide 1
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 2
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 3
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 4
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 5
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 6
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 7
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 8
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 9
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 10
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 11
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 12
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 13
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 14
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 15
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 16
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 17
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 18
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 19
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 20
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 21
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 22
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 23
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 24
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 25
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 26
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 27
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 28
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 2
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 3
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 4
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 5
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 6
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 7
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 8
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 9
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 10
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 11
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 12
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 13
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 14
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 15
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 16
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 17
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 18
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 19
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 20
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 21
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 22
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 23
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 24
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 25
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 26
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 27
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON
Slide 28
MCS51 - wykład 5
Wykład 5
2/28
Przerwania MCS51
Praca krokowa
Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne
3/28
• dwa: INT0 i INT1;
• aktywne poziomem lub opadającym zboczem;
• włączane/wyłączane bitami EX0 i EX1 w rejestrze IE;
• rejestr sterujący:
TCON
TF1 8F TR1 8E TF0 8D TR0 8C
IE1 8B
IT1 8A
IE0 89
IT0
88
88h
IE1 - flaga przerwania INT1
IT1 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT1
IE0 - flaga przerwania INT0
IT0 - ustawiony powoduje wykrywanie opadającego zbocza jako przerwania INT0
MCS51 - przerwania zewnętrzne
4/28
0
INTx
1
IEx
ITx
EXx
Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne
5/28
Przerwania aktywne niskim poziomem
Przy ITx = 0 stan flagi IEx zmienia się automatycznie przy zmianie wejścia INTx.
Niemożliwa jest wtedy programowa modyfikacja ich stanu.
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
4c.m.
cykl maszynowy N+k
3/
4c.m.
INTx
wykrycie niskiego
poziomu
IEx
wykrycie wysokiego
poziomu
Chcąc programowo wymusić wystąpienie przerwania zewnętrznego
(ustawienie się flagi IEx), należy wyzerować odpowiedni bit portu P3.
Zanik niskiego poziomu na wejściu INTx przed uruchomieniem odpowiedniej
obsługi przerwania, spowoduje „zgubienie” przerwania.
Pozostawienie niskiego poziomu na wejściu INTx przez procedurę obsługi
przerwania, spowoduje jego ponowną, nadmiarową obsługę.
MCS51 - przerwania zewnętrzne
6/28
Przerwania aktywne opadającym zboczem
Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx:
TCM
cykl maszynowy N-1 cykl maszynowy N
3/
3/
4c.m.
cykl maszynowy N+1
3/
4c.m.
pierwszy cykl
rozkazowy
proc. obsługi
INTx
4c.m.
INTx
wykrycie zbocza
opadającego
IEx
tINTH
warunek „zauważenia” przerwania
aktywnego zboczem:
tINTH , tINTL > TCM
tINTL
Flaga IEx jest automatycznie
kasowana przy wejściu w
odpowiednią procedurę obsługi.
MCS51 - system przerwań
7/28
Cechy systemu przerwań:
• wektorowy - każde przerwanie ma ustalony adres początkowy jego obsługi:
adresy początkowe procedur obsługi przerwań spełniają równość:
AOP = k·8+3 , k=0,1,...
• priorytetowy - pozycja wektora przerwania decyduje o jego priorytecie,
dodatkowo można wymusić wyższy priorytet obsługi;
• wielopoziomowy (2 w standardzie, 4 w niektórych rozszerzeniach);
• zablokowany po resecie sprzętowym;
MCS51 - system przerwań
8/28
Rejestry sterujące:
Rejestr odblokowania przerwań
IE
EA AF
-
AE
ET2 AD
ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h
EA - ustawiony włącza system przerwań
ET2 - włącza przerwanie od timera/licznika 2 (EXF2 or TF2)
ES - włącza przerwanie od portu szeregowego (RI or TI)
ET1 - włącza przerwanie od timera/licznika 1 (TF1)
EX1 - włącza przerwanie zewnętrzne INT1 (IE1)
ET0 - włącza przerwanie od timera/licznika 0 (TF0)
EX0 - włącza przerwanie zewnętrzne INT0 (IE0)
MCS51 - system przerwań
9/28
Rejestr priorytetów
IP
-
BF
-
BE
PT2 BD
PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h
Bity rejestru IP po ustawieniu nadają przerwaniom wyższy priorytet.
PT2 - przerwaniu od timera/licznika 2
PS - przerwaniu od portu szeregowego
PT1 - przerwaniu od timera/licznika 1
PX1 - przerwaniu zewnętrznemu INT1
PT0 - przerwaniu od timera/licznika 0
PX0 - przerwaniu zewnętrznemu INT0
MCS51 - system przerwań
10/28
Struktura systemu przerwań
IE0
1
EX0
PX0
TF0
1
ET0
PT0
IE1
0
1
EX1
PX1
TF1
0
1
ET1
RI
TI
0
PT1
0
1
ES
PS
TF2
0
1
EXF2
ET2
PT2
EA
0
najwyższy
P priorytet
O
Z
I
O
M
1
P
O
Z
I
O
M
0
najniższy
priorytet
MCS51 - system przerwań
Wektorowość systemu przerwań
INT0
03h
timer 0
0Bh
INT1
13h
timer 1
1Bh
SIO (RI+TI)
23h
timer2 (TF2+EXF2)
2Bh
11/28
MCS51 - system przerwań
12/28
Proces przyjęcia przerwania:
1. W każdym cyklu maszynowym (w fazie S5P2, tj. w 5/6c.m.)
następuje testowanie flag przerwań.
2. W kolejnym cyklu maszynowym:
jeżeli EA=1 i indywidualne flagi odblokowania zgłoszonych przerwań
są ustawione, i spełnione są warunki:
• nie jest wykonywana procedura obsługi przerwania o tym samym
lub wyższym priorytecie co nowe przerwanie;
• bieżący cykl maszynowy jest ostatnim cyklem wykonania rozkazu;
• aktualnie wykonywany rozkaz to nie RETI,
ani żaden inny modyfikujący rejestry z bitami priorytetów przerwań
lub zezwolenia na przerwania;
to po zakończeniu bieżącego cyklu rozkazowego symulowany jest rozkaz
LCALL adres_obsługi
(adres_obsługi wynika z wektora akceptowanego przerwania).
MCS51 - system przerwań
13/28
Wejście w obsługę przerwania automatycznie kasuje flagi:
• TF0, TF1
• IE0, IE1 tylko wtedy gdy przerwania te są aktywne opadającym zboczem
Jeżeli przerwanie zewnętrzne jest aktywne niskim poziomem,
to procedura jego obsługi musi wykonać operację wymuszającą wysoki
poziom sygnału na odpowiednim wejściu INTx - wtedy wyzeruje się flaga IEx.
Flagi od portu szeregowego (TI, RI) i timera/licznika 2 (TF2, EXF2)
muszą być kasowane programowo wewnątrz procedury obsługi przerwania.
MCS51 - system przerwań
14/28
Czas reakcji na pojawiające się przerwanie:
dolne ograniczenie:
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT > 3TCM
koniec
zwykłego
cyklu rozk
górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi)
c.m.
c.m.
testujący arbitrażu
flagi
przerwań
szczególny
cykl rozk. np. RETI
4 c.m.
rozkazu
MUL lub DIV
2 c.m.
rozkazu
LCALL
1. c.m.
procedury
obsługi
TINTLAT< 9TCM
MCS51 - system przerwań
15/28
Procedura obsługi przerwania
Zalecana struktura:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
odtworzenie stanu rejestrów ze stosu
RETI
MCS51 - system przerwań
16/28
System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan
T
obsługa
timera 0
obsługa
INT0
obsługa
INT1
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
17/28
System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0
obsługa
T obsługaINT1 timera 0
obsługa
INT0
T
obsługa
SIO
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
MCS51 - system przerwań
18/28
System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan
Efekt ten jest do
osiągnięcia przy
odpowiedniej konstrukcji
procedur obsługi przerwań:
zapis na stos stanu rejestrów wykorzystywanych
wewnątrz procedury, w tym:
PUSH PSW,
innych rejestrów (np. A, B, DPH, DPL, itd.)
przełączenie aktywnego banku rejestrów
usunięcie przyczyny przerwania:
skasowanie sygnału przerwania,
ewent. programowe zerowanie flagi (np. RI,TI)
ACALL odblokuj
odtworzenie stanu rejestrów ze stosu
RET
odblokuj: RETI
MCS51 - system przerwań
19/28
System przerwań N-poziomowy - c.d.
obsługa obsługa
INT0
obsługa
INT1
T
timera 0
T
obsługa
SIO
obsługa
timera 0
TF0
INT0
IE0
INT1
IE1
RI
zmiany
automatyczne
zmiany wymuszone
programowo
chwile wykonania
procedury odblokuj
MCS51 - system przerwań
20/28
System przerwań N-poziomowy - c.d.
Zróżnicowane priorytety przerwań decydują o kolejności obsługi zgłoszonych
przerwań w momencie odblokowania systemu przerwań (po rozkazie RETI).
System jest podobny do systemu wielopoziomowego bez priorytetów.
UWAGA:
zapełnienie RAM stosem przy wielopoziomowej obsłudze przerwań
MCS51 - rozszerzenia systemu przerwań
1. Zwiększenie liczby możliwych źródeł przerwań
• więcej przerwań zewnętrznych;
• przerwania od dodatkowych składników struktury.
2. Zwiększenie ilości poziomów priorytetów z 2 do 4
(poprzez zdublowanie rejestrów IP)
21/28
MCS51 - praca krokowa
22/28
Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej.
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą.
INT0 (P3.2)
Aktywność INT0 niskim poziomem
spowoduje uruchomienie procedury
obsługi tego przerwania
Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej:
obsługa programowa
pracy krokowej
JNB
JB
RETI
P3.2,$
P3.2,$
oczekiwanie na
wysoki poziom
na INT0
oczekiwanie na
niski poziom
na INT0
debugowany progr. E POPK 111111100R
POPK 111100R POPK 11111111110000R
/INT0
E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii
23/28
Występują w układach CMOS
Standardowy rejestr sterujący:
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
IDL - ustawiony włącza tryb uśpienia (idle)
PD - ustawiony włącza tryb zatrzymania (power down),
ma wyższy priorytet od bitu IDL
GF1, GF0 - flagi do wykorzystania programowego,
nie występują w każdym układzie MCS-51
UWAGA:
ponieważ adres PCON=87h, jego bity nie są bezpośrednio adresowalne
87h
MCS51 - tryby oszczędzania energii
Tryb uśpienia
• rozkaz ustawiający bit IDL jest ostatnim normalnie wykonanym;
• generator taktu nadal pracuje;
• funkcjonuje system przerwań;
• funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• kilkukrotna redukcja prądu zasilającego;
24/28
MCS51 - tryby oszczędzania energii
25/28
Tryb uśpienia - c.d.
• powrót do normalnej pracy pod wpływem:
- wystąpienia odblokowanego przerwania:
zostanie wykonana odpowiednia procedura obsługi przerwania,
a następnie procesor wróci do rozkazu za tym, który ustawił bit IDL;
jeżeli po obsłużeniu przerwania ponownie ma być tryb uśpienia,
to należy odpowiednio napisać program, np:
spij:
ORL
PCON,#1
SJMP
spij
można też wykorzystać opcjonalne flagi GF0 i GF1
- resetu sprzętowego
to jednak zeruje mikrokontroler
i inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
26/28
Tryb zatrzymania
• rozkaz ustawiający bit PD jest ostatnim normalnie wykonanym;
• generator taktu zostaje zatrzymany;
• nie funkcjonuje system przerwań;
• nie funkcjonują peryferia wbudowane w strukturę;
• stany pinów portów pozostają bez zmian (szczegóły dane katalogowe);
• podtrzymywana jest zawartość wewn. RAM i rejestrów SFR;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• kilkusetkrotna redukcja prądu zasilającego (! ważne są zewn. obwody portów);
• powrót do normalnej pracy tylko poprzez reset sprzętowy
- to jednak inicjuje rejestry SFR na wartości początkowe
MCS51 - tryby oszczędzania energii
27/28
Spotykane inne rozwiązania oszczędzania energii:
Tryb spowolnienia (np. 515A, 517, 517A)
• uzyskuje się poprzez włączenie dodatkowego podzielnika generatora taktu
dodatkowym bitem sterującym;
• wolniej są wykonywane rozkazy;
• wolniej funkcjonują peryferia wbudowane w strukturę;
• możliwe jest obniżenie napięcia zasilającego nawet do 2V (1V dla wersji CL);
• redukcja prądu zasilającego proporcjonalnie do redukcji szybkości;
• powrót do normalnej pracy poprzez wyzerowanie bitu sterującego.
MCS51 - tryby oszczędzania energii
28/28
Spotykane inne rozwiązania oszczędzania energii:
Umożliwienie wyjścia z trybu zatrzymania pod wpływem:
• niezablokowanego przerwania zewnętrznego;
• przerwania od licznika sekundowego;
Wprowadzenie dodatkowych bitów włączających tryby uśpienia i zatrzymania:
IDLE i IDLS oraz PDE i PDS.
Włączenie wybranego trybu polega na użyciu dwóch rozkazów, np:
MOV
ORL
ANL
MOV
XRL
MOV
A,PCON
A,#1
A,#0DFh
PCON,A
A,#21h
PCON,A
;IDLE:=1
;IDLS:=0
;wpis do PCON
;IDLE:=0,IDLS:=1
;wpis do PCON