Professional Documents
Culture Documents
Interrupt je signal koji se šalje procesoru koji nakon toga prekida trenutni proces i
pokreće novi. Može ih generirati hardverski uređaj ili softverski program.
Hardverski interrupt kod PC-a često stvara uređaj za unos, kao što su miš ili tastatura.
Na primjer, ako koristite program za obradu teksta i pritisnete tipku, program mora odmah
obraditi unos. Unosom "zdravo" stvara se pet zahtjeva za prekid, koji programu mogu
prikazati slova koja ste upisali. Slično tome, svaki put kada kliknete tipku miša ili dodirnete
zaslon osjetljiv na dodir, uređaju šaljete prekidni signal.
Interrupt se procesoru šalje kao zahtjev za prekid ili IRQ (interrunpt reques). Svaki
uređaj za unos ima jedinstvenu IRQ identifikacijski broj ili prioritet. Time se sprječavaju
sukobi i osigurava prednost zajedničkim uređajima za unos, kao što su tipkovnice i miševi.
U našem slučaju koristit ćemo samo EXTI registre koji su spojeni na NVIC, jer preko
njih zapravo podešavamo naš interrupt. U STM32F103 postoji 20 linija koje povezuju NVIC
i EXTI registre. Prvih 16 od tih 20 koristimo za podešavanje interrupt-a GPIO periferije. Na
sljedećoj slici je zapravo prikazana veza pinova i EXTI linija:
Slika 3 - Šema koja pokazuje način na koji su pinovi spojeni na EXTI linije
Kao što možemo vidjeti na svaku liniju su spojeni svi pinovi mikrokontrolera sa istim
indeksom. Na sljedećoj slici možemo vidjeti kako izgleda EXTIC registar za pinove indeksa
od 0 do 3:
Naime, za svaku EXTI liniju imamo četiri bita koja određuju na kojem portu se nalazi
interrupt.
U gore prikazanoj tabeli možemo vidjeti kako za svaku EXTI liniju možemo podesiti
port pina. Ostali EXTICR registi su identični kao i registar na slici 4, s tim da svaki registar
obuhvata različita 4 pina. Pa tako imamo da je:
Registar Pinovi
EXTICR1 0-3
EXTICR2 4-7
EXTICR3 8 - 11
EXTICR4 12 - 15
Pošto svi EXTI registri pripadaju AFIO periferiji, prvo što radimo jeste uključivanje
kloka za istu. Nakon toga u fajlu za naš mikrokontroler, nađemo definirane strukture za
AFIO.
Na slici je prikazane vrijednosti koje služe za biranje porta na EXTI0 liniji, odnosno
liniji koja služi za generiranje interrupt-a pina čiji je indeks 0. Na ovaj način možemo pronaći
konfiguraciju za svaku od linija. Sada ćemo mi u našem kodu napraviti uslove kojima
provjeravamo odabrani port, a potom za svaki uslov upotrebom switch-a provjeriti unešeni pin
i na osnovu toga upisati vrijednost u određeni EXTIC registar.
Na slici 7 možemo vidjeti kako u slučaju odabira pina A0, program u EXTICR1
upisuje vrijednost “AFIO_EXTICR1_EXTI0_PA” ili 0x0000. Sličan postupak važi za svaki
pin pojedinačno.
Što se tiče STM32F103, među EXTI registrima postoje dva posebna registra koji
služe za određivanje rastuće ili opadajuće ivice. Njihovi nazivi su EXTI_RTSR i
EXTI_FSTR.