• Nie Znaleziono Wyników

Obsługa zdarzeń - przerwania, zapytywanie wykład 12

N/A
N/A
Protected

Academic year: 2022

Share "Obsługa zdarzeń - przerwania, zapytywanie wykład 12"

Copied!
26
0
0

Pełen tekst

(1)

Obsługa zdarze ´n - przerwania, zapytywanie wykład 12

Adam Szmigielski

aszmigie@pjwstk.edu.pl

(2)

Metody obsługi zdarze ´n

• Przerwanie (ang. Interrupt) - zmiana sterowania, niezale˙znie od

aktualnie wykonywanego programu, spowodowana pojawieniem si˛e sygnału przewania. Pojawienie si˛e przerwania powoduje

wstrzymanie aktualnie wykonywanego programu i wykonanie przez kontroler procedury obsługi przerwania.

• Zapytywanie (ang. Polling) - aktywne, okresowe, próbkowanie (sprawdzanie) statusu urz ˛adze´n zewn˛etrznych przez kontroler.

(3)

wyj´scia,

• W polling-u komputer centralny cyklicznie sprawdza stan urz ˛adzenia zewn˛etrznego w oczekiwaniu na gotowo´s´c tego urz ˛adzenia - czeka na gotowo´s´c,

• Polling znajduje zastosowanie w sytuacjach, gdy komputer ł ˛aczy si˛e z zewn˛etrznymi urz ˛adzeniami w celu zebrania (od´swie˙zenia) danych, przy czym współpraca ta odbywa si˛e w trybie off-line,

• Polling mo˙ze by´c wykorzystany do wymiany informacji z urz ˛adzeniami zewn˛etrznymi, w sytuacji gdy z jaki´s wzgl˛edów urz ˛adzenia te nie mog ˛a rozpocz ˛a´c komunikacji,

• W systemach obsługuj ˛acych jedno zadanie polling mo˙ze równie˙z mie´c zastosowanie.

Wi˛ekszo´s´c czasu procesora byłaby wówczas tracona na sprawdzanie gotowo´sci urz ˛adzenia,

• W systemach, które wymagaj ˛a wykonania wielu zada ´n polling jest mało efektywny w stosunku do przerwa´n.

(4)

Port wej´scia-wyj´scia - wybór trybu pracy

• Zmiana funkcji z wyj´scia na wej´scie:

– zablokowanie lub odblokowanie bufora (sygnał I/O),

– mo˙zliwo´s´c uaktywnienia obwodu podci ˛agaj ˛acego (sygnał PULL-UP),

• Mo˙zliwe stany wyj´scia:

– stan niski, – stan wysoki,

– stan wysokiej impedancji (domy´slny po resecie).

(5)

– Config PORT = Output - dla wyj´scia, – Config PIN = Input - dla wej´scia,

• Przy braku zewn˛etrznych rezystorów podci ˛agaj ˛acych (stan wysokiej impedancji) nale˙zy ustawi´c stan portu na wysoki:

– Set PORT

• Przykład:

Mo˙zna ustawia´c i odwoływa´c si˛e do pojedynczych pinów portu.

(6)

Rodzaje przerwa ´n

1. Sprz˛etowe:

• Zewn˛etrzne sygnał przerwania pochodzi z zewn˛etrznego ´zródła.

Przerwania te słu˙z ˛a do komunikacji z urz ˛adzeniami zewn˛etrznymi.

• Wewn˛etrzne - pochodz ˛ace od timera

• Wewn˛etrzne wyj ˛atki - (ang. exceptions) – zgłaszane przez

procesor dla sygnalizowania sytuacji wyj ˛atkowych (np. dzielenie przez zero)

2. Programowe: z kodu programu wywoływana jest procedura obsługi przerwania (do komunikacji z systemem operacyjnym).

(7)

Wektory przerwa ´n

• Wektor przerwa ´n jest adresem pocz ˛atku obsługi przerwania,

• Wektor przerwa ´n, w momencie wyst ˛apienia przerwania, wpisywany jest do licznika rozkazów - rejestr PC, a zawarto´s´c rejestru PC jest kładziona na stos,

• Adresy procedur obsługi przerwa ´n zapisane s ˛a w tablicy wektorów przerwa´n,

• Przechowuje ona adresy poszczególnych procedur obsługi przerwa ´n,

(8)

Tablica wektorów przerwa ´n dla µC Atmel ATMega32

Dokładniejsze informacje w dokumentacji.

(9)

Przerwania programowe

• Z kodu programu wywoływana jest procedura obsługi przerwania,

• Najcz˛e´sciej wykorzystywane do komunikacji z systemem

operacyjnym, który w procedurze obsługi przerwania (np. w DOS 21h)

(10)

Przerwania maskowalne i niemaskowalne

• Przerwania maskowalne które mo˙zna blokowa´c i odblokowa´c programowo,

• Przerwania niemaskowalne - przerwania, których nie mo˙zna zablokow´c programowo. S ˛a to przerwania, których wyst ˛apienie

ka˙zdorazowo powoduje bezwarunkowy skok do funkcji obsługi tego przerwania, np. reset

(11)

Obsługa przerwania

• Procedura obsługi przerwania - ci ˛ag rozkazów realizuj ˛acych po˙z ˛adan ˛a reakcj˛e na przerwanie,

• Program główny - sekwencja działa ´n (rozkazów) mikroprocesora realizowanych gdy nie ma przerwa´n,

• Obsługa przerwania nie mo˙ze wprowadza´c ˙zadnych zmian w programie głównym.

(12)

Procedura obsługi przerwania

1. Rozpoznanie przyczyny przerwania (realizacja mo˙ze by´c sprz˛etowa), 2. Skasowanie przyczyny przerwania (realizacja mo˙ze by´c sprz˛etowa), 3. Zablokowanie przerwania,

4. Składowanie na stosie rejestrów roboczych, 5. Wła´sciwa obsługa przerwania,

6. Odtworzenie rejestrów roboczych ze stosu, 7. Odblokowanie przerwania,

8. Powrót do zawieszonego programu.

(13)

Stos

• W momencie wywołania przerwania adres odkładany jest na stos,

• Wska´znik stosu powinien by´c ustawiony na miejsce gdzie znajduje si˛e stos.

(14)

Priorytet przerwa ´n

• Priorytet przerwa ´n - zró˙znicowanie co do wa˙zno´sci (pilno´sci) zada´n realizowanych przez system mikroprocesorowy,

• W szczególno´sci zadaniami tymi mog ˛a by´c procedury obsługi

przerwa´n ró˙znicuj ˛ac ich pilno´s´c dokonuje si˛e okre´slenia priorytetów poszczególnych przerwa´n,

• W przypadku AVR system obsługi przerwa ´n jest płaski (brak hierarchii). Wszystkie przerwania s ˛a jednakowo wa˙zne.

(15)

• sprz˛etowo - o wyborze przerwania decyduje kontroler przerwa ´n.

(16)

Programowa realizacja hierarchii przerwa ´n

• programowo - poprzez wspóln ˛a procedur˛e obsługi przerwa´n. Jest on arbitrem systemu przerwa´n (rozpoznaje ´zródła aktualnych przerwa´n i decyduje o kolejno´sci ich obsługi)

(17)

• Przerwania z ró˙znych ´zródeł pojawiaj ˛a si˛e w dowolnych, niezale˙znych od siebie, chwilach czasu,

• z punktu widzenie procesora przerwania 1 i 3 wyst ˛apiły jednocze´snie.

(18)

System przerwa ´n bez priorytetów

• Opó´znienia {∆t2, ∆t3} w reakcji na obsług˛e przerwa´n,

• Mo˙zliwo´s´c zgubienia przerwania podczas tych opó´znie ´n,

• Maksymalny czas oczekiwania na obsług˛e przerwania mo˙ze by´c równy sumie czasów obsługi pozostałych przerwa´n w systemie,

(19)

• Opó´znienia {∆t1, ∆t2} w reakcji na obsług˛e przerwa´n,

• Przerwania o ni˙zszych priorytetach mog ˛a dłu˙zej czeka´c na obsług˛e (w skrajnych przypadkach mog ˛a by´c nie obsłu˙zone),

(20)

Rodzaje przerwa ´n

• Przerwania zegarowe - odmierzanie czasu,

• Przerwania od urz ˛adze´n zewn˛etrznych - nieregularne,

• Przerwania od układów kontroluj ˛acych prac˛e systemu - o najwy˙zszym priorytecie. Sygnalizuj ˛a stan pracy jak

– zanik zasilania,

– bł ˛ad/wyj ˛atek procesora, – inne

(21)

Liczniki i timery

• Timery s ˛a to liczniki słu˙z ˛ace do odmierzania okresów czasu,

• Cz˛estotliwo´s´c pracy licznika jest okre´slana poprzez podział cz˛estotliwo´sci zegara,

• Timery (liczniki) mog ˛a mie´c ró˙zn ˛a długo´s´c - zazwyczaj 8 albo 16 bitów,

• Przerwanie od timera generowane jest w momencie przepełnienia licznika.

(22)

Timer0 w µC Atmel ATMega32

Licznik pojedynczy,

Automatyczne zerowanie (Auto Reload),

Generator Pulse Width Modulator (PWM),

generator cz˛estotliwo´sci,

Licznik zdarze´n zewn˛etrznych,

10-bitowy prescaler,

Przepełnienie (TOV0 and OCF0).

(23)
(24)

Uruchomienie timera0 i timera1

1. Ustawienie trybów pracy timera. Normalny tryb pracy jest domy´slny.

Pozostałe tryby omówione b˛ed ˛a na nast˛epnych wykładach.

2. Ustawienie prescalera okre´slenie cz˛estotliwo´sci pracy zegra licznika w oparciu o zegar systemowy. Dost˛epne dzielniki to

N = {1, 8, 64, 256, 1024} - tyle razy mo˙zna zmiejszy´c cz˛estotliwo´s´c zegara systemowego,

3. Ustawienie etykiety wektora przerwa´n danego przerwania,

4. Uruchomienie wszystkich przerwa´n oraz przerwa´n timera (rejestr Timer/Counter Interrupt Mask Register),

5. Wystartowanie timera 6. Obsługa przerwa´n.

(25)
(26)

Zadania na ´cwiczenia

1. Wykorzystuj ˛ac przerwanie int0 zrealizuj system, który zlicza wci´sni˛ecia przycisku i wypisuje wynik na ł ˛acze szeregowe,

2. Posługuj ˛ac si˛e timerem pracuj ˛acym w normalnym trybie zrealizuj generator o cz˛estotliwo´sci f = . . . i współczynniku wypełnienia ω = . . . podanych przez prowadz ˛acego. Po naci´sni˛eciu przycisku generowana cz˛estotliwo´s´c powinna zwi˛eksza´c si˛e o 10%.

Cytaty

Powiązane dokumenty

wstrzymanie aktualnie wykonywanego programu i wykonanie przez kontroler procedury obsługi przerwania.. • Zapytywanie (ang. Polling) - aktywne, okresowe, próbkowanie

Procesor, CPU (Central Processing Unit) to najważniejsza jednostka każdego komputera, będąca najczęściej pojedynczym mikroprocesorem, połączonym z płytą główną

JeŜeli ustawione jest zewnętrzne źródło zegara dla licznika TC0, licznik będzie mógł być napędzany nawet jeŜeli port ustawiony jest jako wyjście. UmoŜliwia to

Twoim zadanie jest więc stosunkowo proste: napisz obsługę licznika programowego (w tym wywołanie konwersji na BCD) z wykorzystaniem systemu przerwań timera, tak aby

Gdy za obsługę oczekuje więcej nie obsłużonych przerwań wybór przerwania do obsługi może być dokonany według różnych zasad.. Poszczególnym przerwaniom mogą

Procedura obsługi przerwania odblokowuje wątek lub proces który w całości wykonuje obsługę zdarzenia. wątek procedura

Jeżeli zdarzenia obsługiwane są przez przerwania, to czas reakcji na zdarzenie będzie się wiązał z czasem obsługi przerwań. Parametry ilościowe opisujące własności czasowe

Gdy za obsługę oczekuje więcej nie obsłużonych przerwań wybór przerwania do obsługi może być dokonany według różnych zasad.. Poszczególnym przerwaniom mogą