Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Współpraca z układami peryferyjnymi i urządzeniami zewnętrznymi Testowanie programowe (odpytywanie, przeglądanie) System przerwań Testowanie programowe Testowanie odpowiednich bitów (flag przerwań) w rejestrach specjalnych, związanych z układami peryferyjnymi Priorytety obsługi kolejność obsługi Możliwy, wydłużony czas obsługi Dodatkowe obciążenie mikrokontrolera zadaniami testowania 2
Przerwania Przerwania są zdarzeniami wymuszającymi zmianę wykonywania programu Sygnał IRQ (ang. Interrupt ReQuest) Zdarzenia te uruchamiają specjalny podprogram obsługi przerwań (ISR ang. Interrupt Service Routine) Po zakończeniu programu obsługi przerwań (ISR), następuje powrót do uprzednio wykonywanego programu Występuje niewielkie opóźnienie wykonania przerwania - jest to czas między wystąpieniem zdarzenia a początkiem wykonania ISR; zależy od momentu wystąpienia zdarzenia względem cyklu rozkazowego oraz zainicjowania przerwania; przykładowo w MSP430 potrzeba do 6 cykli zegarowych 3
Obsługa przerwań ISR zachowanie stanu CPU odtworzenie stanu CPU program żądanie przerwania t 4
Cykl pobranie instrukcji - wykonanie Nie Tak 5
Przykładowa organizacja pamięci - MSP430F2274 6
MSP430 Wejście do trybu LPM3 i zezwolenie na przerwania w asemblerze: bis.b #LPM3+GIE,SR ; LPM3 w/interrupts Wejście do trybu LPM3 i zezwolenie na przerwania w języku C: bis_sr_register(lpm3_bits + GIE); 7
Operacje na stosie 8
Sekwencja obsługi przerwania Wykrycie przez układ peryferyjny zdarzenia wymagającego interwencji mikrokontrolera Zgłoszenie żądania przerwania do mikrokontrolera CPU przerywa aktualnie wykonywaną sekwencję rozkazów i przechowuje niezbędne o niej informacje na stosie CPU przechodzi do wykonania procedury obsługi przerwania Po wykonaniu procedury obsługi przerwania CPU odtwarza informacje ze stosu i wraca do kontynuacji przerwanego programu Powrót z przerwania (instrukcja reti) w MSP430 wymaga 5-ciu cykli zegarowych 9
Źródła przerwań Okresowe Timer y w pracujące w trybach okresowych Zegary systemowe z dzielnikami Okresowe źródła zewnętrzne Asynchroniczne, przypadkowe Źródła wewnętrzne Programowe Pułapki Błędy Przerwania od wewnętrznych układów peryferyjnych Źródła zewnętrzne Wyzwalanie poziomem sygnału Wyzwalanie zboczem narastającym lub opadającym 10
Źródła przerwań Przerwania od wewnętrznych układów peryferyjnych Kontrolery DMA Liczniki / Timer y RTC (ang. Real Time Clock) Kontrolery interfejsów (UART, I2C-Bus, SPI, CAN, USB, Ethernet,..) Przetworniki (A/C i C/A) WDT (WatchDog Timer) 11
Podział przerwań Przerwania niemaskowalne NMI (ang. Non Maskable Interrupt) - nie mogą być wyłączone przez ustawienie bitu przerwania globalnego (GIE) Przerywania maskowalne (ang. Maskable Interrupt) można je włączyć programowo przez ustawienie bitu przerwania globalnego (GIE), np. przerwania urządzeń peryferyjnych jak Timer w trybie timera interwałowego w momencie przepełnienia itp. 12
Przerwania MSP430G2553 13
Sterowania obsługiwane są przez kontroler przerwań Przykład kontrolera Intel 8259A Rejestr zgłoszenia przerwań IRR (ang. Interrupt Request Register) Rejestr maski przerwań IMR (ang. Interrupt Mask Register) Rejestr obsługiwanych przerwań ISR (ang. In-Service Register) Układ priorytetu 14
Kontroler przerwań przykład Intel 8259A 15
Przerwania jednopoziomowe Przerwanie 1 najniższy priorytet Przerwanie 3 najwyższy priorytet priorytet ISR program t żądanie przerwania 1 żądanie przerwania 1 żądanie przerwania 2 żądanie przerwania 3 16
Przerwania wielopoziomowe Przerwanie 1 najniższy priorytet Przerwanie 3 najwyższy priorytet priorytet ISR program t żądanie przerwania 1 żądanie przerwania 1 żądanie przerwania 2 żądanie przerwania 3 17
Dziękuję Zygmunt Kubiak 18 11-201 6