Metody obsługi zdarze ´n
• Przerwanie (ang. Interrupt) - zmiana sterowania, niezale˙znie od
aktualnie wykonywanego programu, spowodowana pojawieniem si˛e sygnału przerwania. 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.
SWB - Przerwania, polling, timery - wykład 10asz 2
Zapytywanie (ang. Polling)
• Technika polling jest najcz˛e´sciej u˙zywana w kontek´scie obsługi urz ˛adze´n wej´scia/
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.
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).
SWB - Przerwania, polling, timery - wykład 10asz 4
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,
Tablica wektorów przerwa ´n dla µC Atmel ATMega32
Dokładniejsze informacje w dokumentacji.
SWB - Przerwania, polling, timery - wykład 10asz 6
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)
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
SWB - Przerwania, polling, timery - wykład 10asz 8
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.
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.
SWB - Przerwania, polling, timery - wykład 10asz 10
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.
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.
SWB - Przerwania, polling, timery - wykład 10asz 12
Sprz˛etowa realizacja hierarchii przerwa ´n
• sprz˛etowo - o wyborze przerwania decyduje kontroler przerwa ´n.
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)
SWB - Przerwania, polling, timery - wykład 10asz 14
Asynchroniczno´s´c przerwa ´n
• 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.
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,
SWB - Przerwania, polling, timery - wykład 10asz 16
System przerwa ´n z priorytetami
• Istnieje hierarchia wa˙zno´sci przerwa ´n,
• 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),
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
SWB - Przerwania, polling, timery - wykład 10asz 18
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.
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).
SWB - Przerwania, polling, timery - wykład 10asz 20
Timer0 w µC Atmel ATMega32 - schemat blokowy
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.
SWB - Przerwania, polling, timery - wykład 10asz 22
Struktura programu obsługi przerwa ´n (Bascom-AVR)
Zadania na ´cwiczenia
Wszystkie zadania nale˙zy wykona´c w ´srodowisku BASCOM-AVR 1. Wykorzystuj ˛ac przerwanie int0 zrealizuj system, który zlicza
wci´sni˛ecia przycisku i wy´swietla wynik.
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%,
3. O ile to mo˙zliwe, zrealizuj zadanie z punktu 2 na rzeczywistym układzie.