1 / 28

MCS51 - wykład 5

MCS51 - wykład 5. Wykład 5 1/27. Przerwania MCS51 Praca krokowa Praca z obniżonym poborem prądu. dwa: INT0 i INT1; aktywne poziomem lub opadającym zboczem;

riva
Download Presentation

MCS51 - wykład 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MCS51 - wykład 5

  2. Wykład 5 1/27 Przerwania MCS51Praca krokowaPraca z obniżonym poborem prądu

  3. dwa: INT0 i INT1; • aktywne poziomem lub opadającym zboczem; • włączane/wyłączane bitami EX0 i EX1 w rejestrze IE; • rejestr sterujący: MCS51 - przerwania zewnętrzne 2/27 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

  4. 0 1 INTx IEx ITx EXx MCS51 - przerwania zewnętrzne 3/27 Wejścia INTx są testowane w każdym cyklu maszynowym

  5. cykl maszynowy N-1 cykl maszynowy N cykl maszynowy N+k 3/4c.m. 3/4c.m. 3/4c.m. INTx wykrycie wysokiego poziomu wykrycie niskiego poziomu IEx 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. MCS51 - przerwania zewnętrzne 4/27 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ę.

  6. TCM pierwszy cykl rozkazowy proc. obsługi INTx cykl maszynowy N-1 cykl maszynowy N cykl maszynowy N+1 3/4c.m. 3/4c.m. 3/4c.m. INTx IEx wykrycie zbocza opadającego Flaga IEx jest automatycznie kasowana przy wejściu w odpowiednią procedurę obsługi. tINTH tINTL Przerwania aktywne opadającym zboczem Przy ITx = 1 flaga IEx jest ustawiana po wykryciu opadającego zbocza na INTx: MCS51 - przerwania zewnętrzne 5/27 warunek „zauważenia” przerwania aktywnego zboczem: tINTH , tINTL > TCM

  7. 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ń 6/27

  8. IE EA AF - AE ET2AD ES AC ET1 AB EX1 AA ET0 A9 EX0 A8 A8h Rejestry sterujące: Rejestr odblokowania przerwań MCS51 - system przerwań 7/27 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)

  9. IP - BF - BE PT2BD PS BC PT1 BB PX1 BA PT0 B9 PX0 B8 B8h Rejestr priorytetów MCS51 - system przerwań 8/27 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

  10. IE0 1 0 EX0 najwyższy priorytet PX0 POZIOM1 TF0 1 0 ET0 PT0 IE1 1 0 EX1 PX1 TF1 1 0 POZIOM0 ET1 RI PT1 1 0 TI ES PS TF2 1 0 najniższy priorytet EXF2 ET2 PT2 EA Struktura systemu przerwań MCS51 - system przerwań 9/27

  11. Wektorowość systemu przerwań INT0 03h timer 0 0Bh INT1 13h timer 1 1Bh SIO (RI+TI) 23h timer2 (TF2+EXF2) 2Bh MCS51 - system przerwań 10/27

  12. 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ń 11/27

  13. 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ń 12/27

  14. Czas reakcji na pojawiające się przerwanie: dolne ograniczenie: MCS51 - system przerwań 13/27 c.m.testującyflagi c.m.arbitrażuprzerwań 2 c.m.rozkazuLCALL 1. c.m.proceduryobsługi TINTLAT > 3TCM konieczwykłegocyklu rozk górne ograniczenie (zał. nie jest wykonywana żadna inna proc. obsługi) c.m.testującyflagi c.m.arbitrażuprzerwań 4 c.m.rozkazuMUL lub DIV 2 c.m.rozkazuLCALL 1. c.m.proceduryobsługi szczególnycykl rozk. np. RETI TINTLAT< 9TCM

  15. Procedura obsługi przerwania Zalecana struktura: MCS51 - system przerwań 14/27 zapis na stos stanu rejestrów wykorzystywanychwewną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 stosuRETI

  16. TF0 INT0 IE0 INT1 IE1 RI System przerwań 1-poziomowy, bity priorytetów mają jednakowy stan MCS51 - system przerwań 15/27 obsługa timera 0 obsługaINT0 obsługaINT1 obsługaSIO T T zmiany automatyczne zmiany wymuszone programowo

  17. TF0 INT0 IE0 INT1 IE1 RI System przerwań 2-poziomowy, bity PX1,PS=1 (wyższy poziom) pozostałe =0 MCS51 - system przerwań 16/27 obsługaINT1 obsługa timera 0 obsługaINT0 obsługaSIO T T zmiany automatyczne zmiany wymuszone programowo

  18. System przerwań N-poziomowy, bity priorytetów mogą mieć jednakowy stan MCS51 - system przerwań 17/27 Efekt ten jest do osiągnięcia przy odpowiedniej konstrukcji procedur obsługi przerwań: zapis na stos stanu rejestrów wykorzystywanychwewną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 stosuRET odblokuj: RETI

  19. TF0 INT0 IE0 INT1 IE1 RI System przerwań N-poziomowy - c.d. MCS51 - system przerwań 18/27 obsługaINT0 obsługaINT1 obsługa timera 0 obsługa timera 0 obsługaSIO T T zmiany automatyczne zmiany wymuszone programowo chwile wykonania procedury odblokuj

  20. System przerwań N-poziomowy - c.d. MCS51 - system przerwań 19/27 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ń

  21. 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)

  22. INT0 (P3.2) obsługa programowa pracy krokowej oczekiwanie na wysoki poziomna INT0 JNB P3.2,$JB P3.2,$RETI oczekiwanie na niski poziomna INT0 Przerwanie zewnętrzne, aktywne poziomem, umożliwia realizację pracy krokowej. Zał. do wejścia INT0 dołączono przycisk rozwierający je z masą. MCS51 - praca krokowa 21/27 Aktywność INT0 niskim poziomem spowoduje uruchomienie procedury obsługi tego przerwania Procedura obsługi przerwania INT0 jest procedurą obsługi pracy krokowej: POPK 111111100R POPK 111100R POPK 11111111110000R debugowany progr. E INT0 E - odblokowanie przerwań 1 - oczekiwanie na „1” 0 - oczekiwanie na „0” R - RETI

  23. PCON SMOD - - - GF1 GF0 PD IDL 87h Występują w układach CMOS Standardowy rejestr sterujący: MCS51 - tryby oszczędzania energii 22/27 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

  24. 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 23/27

  25. 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 24/27

  26. 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 25/27

  27. Spotykane inne rozwiązania oszczędzania energii: MCS51 - tryby oszczędzania energii 26/27 • 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.

  28. Spotykane inne rozwiązania oszczędzania energii: MCS51 - tryby oszczędzania energii 27/27 • 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

More Related