Podsystem przerwań na przykładzie ATmega16

Podsystem przerwań na przykładzie ATmega16
Cele i zadania:
Ten i kolejne wpisy poświęcimy wiedzy o przerwaniach w taki sposób, aby czytelnik był w stanie umieć:
• rozumieć potrzebę mikrokontrolera do obsługi przerwań,

• opisać ogólną procedurę odpowiedzi na przerwania mikrokontrolera,
• opisać funkcje przerwań ATmega16, oraz
• prawidłowo skonfigurować i zaprogramować zdarzenie przerwania dla ATmega16.

r_211_07_4

Teoria przerwania
Mikrokontroler zwykle wykonuje instrukcje w uporządkowanej sekwencji pobierania – dekodowania – wykonywania, zgodnie z zaleceniami programu napisanego przez użytkownika, jak pokazano na rysunku 1.
Jednak mikrokontroler musi być przystosowany do obsługi nieplanowanych zdarzeń o wyższym priorytecie, które mogą wystąpić wewnątrz lub na zewnątrz mikrokontrolera.
Do przetwarzania takich zdarzeń mikrokontroler wymaga systemu przerwań.
System przerwań na pokładzie mikrokontrolera pozwala mu reagować na zdarzenia o wyższym priorytecie.
Te wydarzenia można zaplanować, ale nie wiemy, kiedy nastąpią.
Gdy wystąpi zdarzenie przerwania, mikrokontroler normalnie zakończy instrukcję, którą aktualnie wykonuje, a następnie przejdzie sterowanie programem do zadań określonych dla zdarzenia przerwania.
Te zadania, które rozwiązują zdarzenie przerwania, są zorganizowane w funkcję zwaną procedurą obsługi przerwań (ISR – interrupt service routine).
Każde przerwanie ma zwykle swoją własną procedurę ISR specyficzną dla przerwania.
Po zakończeniu procedury ISR mikrokontroler wznowi przetwarzanie w miejscu, w którym zostało przerwane przed wystąpieniem zdarzenia przerwania.
System przerwania mikrokontrolera ATmega16
ATmega16 jest przystosowany do obsługi potężnego i elastycznego zestawu 21 źródeł przerwań.
Trzy z przerwań pochodzą z zewnętrznych źródeł przerwań, podczas gdy pozostałe 18 przerwań wspomaga wydajne działanie podsystemów peryferyjnych na mikrokontrolerze.

Tab_1
Źródła przerwań ATmega16 pokazano w tabeli 1.
Przerwania są wymienione w malejącej kolejności priorytetu.
Jak widać, najwyższy priorytet ma RESET, po którym następują piny żądania przerwania zewnętrznego INT0 (styk 16) i INT1 (styk 17).
Pozostałe źródła przerwań są wewnętrzne dla ATmega16.
Gdy wystąpi przerwanie, mikrokontroler kończy bieżącą instrukcję, zapisuje adres następnej instrukcji na stosie i rozpoczyna wykonywanie instrukcji w wyznaczonym ISR odpowiadającym danemu źródłu przerwania.
Wyłącza również system przerwań, aby zapobiec dalszym przerwaniom w trakcie.
Wykonanie ISR jest wykonywane przez załadowanie adresu początkowego ISR specyficznego dla tego przerwania do licznika programu.
Następnie rozpocznie się procedura ISR.
Wykonywanie procedury ISR jest kontynuowane aż do napotkania powrotu z instrukcji przerwania (reti – interrupt instruction).
Sterowanie programowe następnie powraca do programu głównego.
##

Komentarze z Facebooka

Komentarze obecnie - OFF.