Mikrokontrolery System przerwań Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Mikrokontrolery – System przerwań 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 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań 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 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Obsługa przerwań zachowanie stanu CPU odtworzenie żądanie przerwania ISR program t 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Cykl pobranie instrukcji - wykonanie Nie Tak 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Przykładowa organizacja pamięci - MSP430F2274 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań 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); 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Operacje na stosie 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań 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 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Ź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 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Ź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-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań 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. 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Przerwania MSP430G2553 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań 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 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Kontroler przerwań – przykład Intel 8259A 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Przerwania jednopoziomowe Przerwanie 1 – najniższy priorytet Przerwanie 3 – najwyższy priorytet żądanie przerwania 1 żądanie przerwania 2 żądanie przerwania 3 ISR program priorytet t 11-2016 Zygmunt Kubiak
Mikrokontrolery – System przerwań Przerwania wielopoziomowe Przerwanie 1 – najniższy priorytet Przerwanie 3 – najwyższy priorytet żądanie przerwania 1 żądanie przerwania 2 żądanie przerwania 3 ISR program priorytet t 11-2016 Zygmunt Kubiak
Dziękuję Zygmunt Kubiak 11-2016