MCS51 - wykład 5
Przerwania MCS51 Praca krokowa Praca z obniżonym poborem prądu Wykład 5 1/27 Przerwania MCS51 Praca krokowa Praca z obniżonym poborem prądu
MCS51 - przerwania zewnętrzne 2/27 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 3/27 ITx IEx INTx 1 EXx Wejścia INTx są testowane w każdym cyklu maszynowym
MCS51 - przerwania zewnętrzne 4/27 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 cykl maszynowy N+k wykrycie wysokiego poziomu 3/4c.m. wykrycie niskiego poziomu IEx INTx 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 5/27 Przerwania aktywne opadającym zboczem Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx: cykl maszynowy N-1 cykl maszynowy N cykl maszynowy N+1 wykrycie zbocza opadającego 3/4c.m. INTx IEx tINTH tINTL TCM Flaga IEx jest automatycznie kasowana przy wejściu w odpowiednią procedurę obsługi. pierwszy cykl rozkazowy proc. obsługi INTx warunek „zauważenia” przerwania aktywnego zboczem: tINTH , tINTL > TCM
MCS51 - system przerwań 6/27 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ń 7/27 Rejestry sterujące: Rejestr odblokowania przerwań EA AF - AE ET2 AD ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 IE 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ń 8/27 Rejestr priorytetów - BF - BE PT2 BD PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 IP 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
Struktura systemu przerwań MCS51 - system przerwań 9/27 Struktura systemu przerwań IE0 EX0 PX0 1 TF0 ET0 IE1 EX1 TF1 ET1 RI ES TF2 ET2 TI EXF2 EA PT0 PX1 PT1 PS PT2 P O Z I O M 1 P O Z I O M 0 najwyższy priorytet najniższy priorytet
MCS51 - system przerwań 10/27 Wektorowość systemu przerwań INT0 03h timer 0 0Bh INT1 13h timer 1 1Bh SIO (RI+TI) 23h timer2 (TF2+EXF2) 2Bh
MCS51 - system przerwań 11/27 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ń 12/27 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.
Czas reakcji na pojawiające się przerwanie: dolne ograniczenie: MCS51 - system przerwań 13/27 Czas reakcji na pojawiające się przerwanie: dolne ograniczenie: c.m. testujący flagi c.m. arbitrażu 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. testujący flagi c.m. arbitrażu przerwań 4 c.m. rozkazu MUL lub DIV 2 c.m. rozkazu LCALL 1. c.m. procedury obsługi szczególny cykl rozk. np. RETI TINTLAT< 9TCM
odtworzenie stanu rejestrów ze stosu RETI MCS51 - system przerwań 14/27 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ń 15/27 T T System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan obsługa timera 0 obsługa INT0 obsługa INT1 obsługa SIO T T TF0 IE0 INT0 IE1 INT1 RI zmiany automatyczne zmiany wymuszone programowo
MCS51 - system przerwań 16/27 T T System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0 obsługa INT1 obsługa timera 0 obsługa INT0 obsługa SIO T T TF0 IE0 INT0 IE1 INT1 RI zmiany automatyczne zmiany wymuszone programowo
odtworzenie stanu rejestrów ze stosu RET MCS51 - system przerwań 17/27 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ń 18/27 T T System przerwań N-poziomowy - c.d. obsługa INT0 obsługa INT1 obsługa timera 0 obsługa timera 0 obsługa SIO T T TF0 IE0 INT0 IE1 INT1 RI zmiany automatyczne zmiany wymuszone programowo chwile wykonania procedury odblokuj
MCS51 - system przerwań 19/27 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ń 20/27 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)
Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą. MCS51 - praca krokowa 21/27 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 P3.2,$ JB P3.2,$ RETI oczekiwanie na niski poziom na INT0 oczekiwanie na wysoki poziom na INT0 POPK 111111100R POPK 111100R POPK 11111111110000R debugowany progr. E INT0 E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI
MCS51 - tryby oszczędzania energii 22/27 Występują w układach CMOS Standardowy rejestr sterujący: SMOD - GF1 GF0 PD IDL PCON 87h 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
MCS51 - tryby oszczędzania energii 23/27 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;
MCS51 - tryby oszczędzania energii 24/27 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 25/27 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 26/27 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 27/27 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 A,PCON ORL A,#1 ;IDLE:=1 ANL A,#0DFh ;IDLS:=0 MOV PCON,A ;wpis do PCON XRL A,#21h ;IDLE:=0,IDLS:=1 MOV PCON,A ;wpis do PCON