Professional Documents
Culture Documents
Laboratorijske vjebe
UVOD
ta je mikroraunar?
Mikroraunar je integralno kolo visokog stepena intergracije u kojem se nalazi procesorska
jezgra sa memorijom i ulazno-izlazna periferija.
Prisustvo procesorske jezgre podrazumijeva rad komponente baziran na izvravanju
pohranjenog programa u memoriji.
Mikroraunar jo nazivamo mikrokompjuter ili mikrokontroler. Termin mikrokontroler najbolje
opisuje primjenu ove komponente, a to je kontrola sistema. Ako uzmemo u obzir rije mikro moemo
zakljuiti da se tu radi o kontroli sistema sa vrlo malom komponentom za razliku od kontrole sistema
koju moemo izvesti sa raunarom, to bi zauzelo puno vie prostora i kotalo puno vie. Na kraju
trebamo izvesti zakljuak gdje trebamo koristiti mikroraunar.
Mikroraunar koristimo u ureajima u kojima sam kontrolni sistem treba da zauzima vrlo malo
povrine jer je i sam ureaj tj. njegova elektronika treba da budu mali, i to je najvanije ureaj treba da
bude ekonomine cijene, a najee prenosiv i lagan.
Koji ureaj imamo skoro svi u depu, a ispunjava sve ove uvjete?
ta je periferija tog ureaja?
Primjena mikroraunara je raznovrsna i zbog niske cijene sve vea, u nekoliko podruja je vrlo
izraena:
1. Potroaka elektronika (detektori pokreta, termostati, daljinska kontrola, odravanje
baterija, kafe aparati, kuanski aparati, itd...)
2. Komunikaciona tehnika (telefonski aparati, mikrofoni, modemi, i sl.)
3. Industrija (mjerenje energije, prenosni instrumenti, akvizicija podataka, kontrola motora)
4. Automobilska industrija (kontrola svjetala, inteligentni senzori, detektori blizine, praene
pritiska guma, daljinsko otkljuavanje, auto-alarmi, i sl.)
esto se ne razumije razlika i prednost koritenja mikrokontrolera u odnosu na sklopove
digitalne elektronike s kojom se isto moe izvesti svaki sistem kontrole. Sistem sa mikroraunarom ima
ogromnu prednost jer se moe reprogramirati svaki put da radi drugaije, dok sistem sa digitalnom
elektronikom ne moemo mijenjati jer bi morali mijenjati cijelu elektroniku i strukturu ploe.
Arhitektura mikroraunara
Osnovni elementi arhitekture mikroraunara (MCU Micro Control Unit) su:
- procesorska jezgra,
- memorija, i
- ulazno-izlazna periferija.
Na slici 1 prikazana je blok shema arhitekture tipinog mikroraunara:
Za potrebe praktine nastave koristimo PIC Peripherial Interface Controller (itaj pik ili pic)
mikroraunare amerike firme Microchip koji su tzv. RISC mikroraunari sa Harvardskom
arhitekturom.
RISC (Reduced Instruction Set Computer) je raunar sa reduciranim setom instrukcija , za
programiranje PIC mikroraunara potrebno je nauiti samo 35 instrukcija ako programiramo
asemblerskim jezikom.
Na slici 2 prikazana je blok shema Harvardske arhitekture, tu se vidi da postoje dvije sabirnice
podataka ili tzv. magistrale (BUS), jedna 8-bitna je za podatke, a druga 14-bitna je za
programske instrukcije. Ovo omoguuje CPU da pribavlja podatke i instrukcije odvojeno i
istovremeno ime se postiu velike brzine izvravanja programa kroz protonu strukturu.
4MHz ili 8MHz interni oscilator (svaki mikroraunar mora imati oscilator koji daje radni takt
po kojem CPU i ostali elementi sistema rade);
ICSP (In Circuit Serial Programming) mogunost reprogramiranja unutar kola;
Programska FLASH ROM memorija od 512 8-bitnih rijei;
SRAM za podatke (varijable) od 23 byte;
4 pina, od toga 3 ulazno-izlazna pina i 1 samo ulazni pin;
8-bitni tajmer/broja (Timer0);
WDT (Watchdog Timer) nezavisni oscilator koji resetuje MCU ako program stane;
8-bitni jednokanalni ADC na 2 vanjska pina; itd...
Element
PIC16F887
MINRES330R
LED-GREEN
Komentar
Mikroraunar ili MCU
Otpornik 330 - 0,6W
LED dioda
Mikroraunar stavljamo u sredinu, LED diode se spajaju preko otpornika od 330 na port A i port B,
pinovi RA0 i RB2, katode LED dioda spajamo na uzemljenje GND, kao na slici I-1.
U treem koraku izabrati opciju Include none jer biblioteke ukljuujemo samo po potrebi, u
etvrtom koraku radimo konfiguraciju mikroraunara, slika I-2.
Kompajliramo program sa BuildBuild ili sa CTRL+F9, kao rezultat dobiemo hex datoteku
istog imena na istoj lokaciji gdje je i projekt, treba biti My Documents.
Uitavanje programa u model mikroraunara u Proteusu za simulaciju vrimo na sljedei nain
(vraamo se u Proteus): sa lijeve alatne trake biramo Selection Mode (ili strelicu), dvostrukim klikom na
MCU ulazimo u njegov meni, u Program File moramo dati tanu putanju do Led_Blink.hex i Processor
Clock Frequency moramo promijeniti na 8MHz (kao na slici). Ostale parametre komponente ne
mijenjamo.
Kad je ema napravljena i program uitan u MCU poinjemo sa simulacijom, u lijevom donjem
uglu nalazi se alatna traka za upravljanje simulacijom, pritisnite PLAY:
Dok traje simulacija ne moemo mijenjati nita na emi, prvo se mora zaustaviti simulacija sa STOP.
RADNI ZADACI:
1. U Help-u mikroC-a pod Built-In Routines nai funkciju Delay_ms i objasniti koja je maksimalna
vrijednost ulaznog argumenta funkcije.
2. U Help-u mikroC-a pronai operator ~ i objasniti njegovu funkciju u programu, vidjeti pod mikroC
Language Reference / Operators.
3. U Help-u mikroC-a nai kako se individualno adresiraju noice (pinovi) mikroraunara, pogledati
pod mikroC Specifics / Accessing Individual Bits.
4. Izmijeniti program tako da se ukljuuje samo pin RA0, a ne cijeli port.
5. Izmijeniti program tako da LED diode rade izmjenino.
6. U datasheet-u PIC16F887 pronai ANSEL i ANSELH registre i objasniti emu slue.
II VJEBA - TASTERI
Teoretski uvod
Na slici II-1 vidimo est spoj tastera na mikroraunar sa tzv. pull-up otpornikom. Prekida je
normalno otvorenog tipa (NO) i kad nije pritisnut preko otpornika napon od 5V dolazi na pin
mikroraunara to predstavlja logiku 1. (Na slici II-1 pull-up otpornik R1 je standardno visoke
vrijednosti npr. 10K jer elimo malu potronju struje, I = 5V / 10K). Kad se taster pritisne, to nazivamo
aktivno stanje, 0V je na pinu mikroraunara to predstavlja logiku 0. Program treba da detektuje tu
promjenu stanja iz 1 u 0.
Meutim, kod tastera imamo problem mehanikog istitravanja kontakata (eng. debouncing) tako
da program, umjesto jednog, moe detektovati vie pritisaka na taster, i zbog toga, praviti greku. Za
spoj sa slike II-1 program moe detektovati vie nula prilikom jednog pritiska, a mi elimo da detektuje
samo jednu. Potrebno je znai, period u kojem se deava istitravanje kontakata, a to je odmah nakon
prve detektovane nule, na neki nain ignorisati. Hardverski se to radi sa kondenzatorom u paralelnom
spoju, a softverski sa podesiivim kanjenjem. Softverski nain je prikladniji od hardverskog, jer za svaki
prekida, moramo odreivati kondenzator eksperimentalno, dok softverski moemo mijenjati kanjenje u
pozivu funkcije kao to je to rijeeno funkcijom Button u mikroC kompajleru.
Funkcija Button se poziva sa nekoliko parametara na sljedei nain:
Button(&PORTA, 0, 10, 0)
gdje su parametri redom:
1.
2.
3.
4.
Funkcija Button daje izlaz tipa bool, tj. true(istina) ili false(neistina), true ako je taster pritisnut i false ako
nije, pa je moemo pozvati unutar uslovne izjave npr.
if(Button(&PORTA, 0, 1, 0)) {
PORTB=0xFF;
}
i tih par linija koda e upisati sve jedinice u port B ako je taster na pinu 0 porta A pritisnut.
Da bi neki pin bio koriten za taster on mora biti deklarisan kao ulazni pin to radimo namjetanjem
TRIS registra, npr:
TRISA.F0 = 1; // port A pin 0 konfigurisan kao ulazni pin
Laboratorijska vjeba
Poinjemo sa izradom eme u Proteus-u dodavanjem elemenata sa LibraryPick
Device/Simbol te biramo sljedee elemente iz pripadnih kategorija i podkategorija (pogledati tabelu II-1).
Za uzemljenje sa lijeve strane alatne trake biramo Terminals ModeGND. Elemente povezujemo sa
Buses Mode (isto lijeva alatna traka). Na emu stavljamo taster sa pull-up otpornikom i dvije LED sa
otpornicima za ogranienje struje na noice RB2 i RB7.
Tabela II-1.
Kategorija / podkategorija
Microprocessor ICs / PIC16 F.
Resistors
Optoelectronics
Active
Element
PIC16F887
RES
LED
BUTTON
Komentar
MCU
Otpornik
LED dioda
SPST Push Button
10
11
Teoretski uvod
Unutar jednog 7-segmentnog displeja imamo 7 svjetleih dioda obiljeenih sa A, B, C, D, E, F i
G i dodatak DP - decimalnu taku. Postoje dvije vrste 7 segmentnih displeja, sa zajednikom anodom i
zajednikom katodom. Sve to je prikazano na slici III-1, isjeak iz datasheet-a SC52-11:
Heksadecimalna kombinacija
3F
06
5B
4F
66
6D
7D
07
7F
6F
12
Binarna kombinacija
00111111
Laboratorijska vjeba
7-segmentni displeji se obino veu preko mree otpornika (Rx8 u Proteusu vrijednosti 330
za standardno napajanje 5V) povezujemo segmente redom na pinove PORTB abecednim redom (A=0,
... , G=6). Displej emo nai u biblioteci Optoelectronics, CC je oznaka za Comon Cathode.
Prema slici III-2 napraviti novi projekt u Proteusu i snimiti ga u My Documents.
U mikroC programu otvoriti novi projekt, postavke MCU staviti kao u II vjebi, fajl 7seg1.c
snimiti u My Documents sa sljedeim kodom:
unsigned short mask(unsigned short num);
unsigned short i;
// deklaracija funkcije
// deklaracija varijable i
void main() {
ANSEL = 0;
ANSELH = 0;
C1ON_bit = 0;
C2ON_bit = 0;
PORTB = 0;
TRISB = 0;
do {
for (i = 0; i <= 9; i++) {
PORTB = mask(i);
13
Delay_ms(1000);
}
} while (1);
}
unsigned short mask(unsigned short num) {
switch (num) {
case 0 : return 0x3F;
case 1 : return 0x06;
case 2 : return 0x5B;
case 3 : return 0x4F;
case 4 : return 0x66;
case 5 : return 0x6D;
case 6 : return 0x7D;
case 7 : return 0x07;
case 8 : return 0x7F;
case 9 : return 0x6F;
}
}
RADNI ZADACI:
1. Dodati komentar na svaku liniju koda i objasniti program u potpunosti, osim INTCON registra,
posluiti se Help-om mikroC-a i literaturom, potrebno je dati objanjenje switch-case strukture,
for petlje, deklaracije i pozivanja funkcije, i tipova varijabli u mikroC-u, npr. unsigned short kakva je to varijabla?
2. Izmjeniti program i simulacijski model tako da po pritisku na taster GORE broj na displeju se
uveca za 1. Displej je na pocetku 0, a ako dodje do 9 mora ici opet na 0.
3. Izmjeniti program tako da radi i taster DOLE.
4. Izmjeniti program tako da se brojevi prikazuju u jednocifrenoj hex kombinaciji od 0 do F.
5. Izmjeniti program i simulacijski model tako da kad se simulacija pokrene na 7-segmentnom
displeju sa zajednikom anodom (CA Common Anode) bude ispisan broj 5, koji se svake
sekunde umanjuje za 1, poslije 0 ide na 9. (Potrebno je napisati novu tabelu binarnih
kombinacija i izmjeniti tijelo funkcije, korisititi datasheet, literaturu, internet...)
14
char i;
// Loop variable
void Move_Delay() {
Delay_ms(500);
}
void main(){
ANSEL = 0;
ANSELH = 0;
C1ON_bit = 0;
C2ON_bit = 0;
Lcd_Init();
// Initialize LCD
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,txt3);
// Clear display
// Cursor off
// Write text in first row
15
Lcd_Out(2,1,txt4);
Delay_ms(3000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,5,txt1);
Lcd_Out(2,5,txt2);
Delay_ms(2000);
// Moving text
for(i=0; i<4; i++) {
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
while(1) {
for(i=0; i<8; i++) {
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}
for(i=0; i<8; i++) {
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
// Endless loop
// Move text to the left 7 times
}
}
16
17
V VJEBA - TASTATURA
Na sljedeem primjeru vidjeemo kako se na mikroraunar povezuje tastatura 3x4 (KEYPADPHONE), komponenta esto koritena u telefonskim aparatima, alarmnim ureajima, kalkulatorima i sl.
Za prikaz broja se koristi 7-segmentni displej sa BCD ulazima (7SEG-BCD) zbog manjka slobodnih
pinova. Simulacijski model spajamo prema slici V-1.
Redovi na tastaturi su obiljeeni sa A,B,C i D (slika 9), a kolone sa 1,2 i 3, i pritisak na dugme
prespaja red i kolonu. Kolone spojene na RB1-2-3 su ulazni pinovi, a redovi spojeni na RB4-5-6-7 su
izlazni pinovi i inicijalno su svi na logikoj 1 tako da nema toka struje. Program skenira tastaturu, rezultat
se pohranjuje na PORTA, dekoder pretvara BCD-8421 kod u kod pogodan za ispis na 7-seg displej.
Funkcija keyscan radi tako to red spusti na logiku 0, i zatim provjeri da li je neki od tastera
spojenih na RB1-2-3 pritisnut, ako je pritisnut njegovo aktivno stanje je logika 0. U zavisnosti o kojem
se redu i tasteru radi funkcija vraa u glavni program cijeli broj za ispis. Redovi se skeniraju
neprestano jedan za drugim. Programski kod je sljedei:
unsigned short keyscan();
void main() {
TRISB.F1=1;
TRISB.F2=1;
TRISB.F3=1;
TRISB.F4=0;
TRISB.F5=0;
TRISB.F6=0;
TRISB.F7=0;
PORTB.F4=0;
18
PORTB.F5=0;
PORTB.F6=0;
PORTB.F7=0;
TRISA=0;
PORTA=0;
// redovi su inicijalno 0
// portA je izlazni
// portA je inicijalno 0
// beskonana petlja
do {
PORTA=keyscan();
} while(1);
}
// funkcija keyscan
unsigned short keyscan() {
unsigned short i;
PORTB.F4=0; // ispitujemo red A na RB4
for (i=1; i<4; i++) {
if(Button(&PORTB,i,1,0)) {PORTB.F4=1; return i;}
}
PORTB.F4=1;
PORTB.F5=0; // ispitujemo red B na RB5
for (i=1; i<4; i++) {
if(Button(&PORTB,i,1,0)) {PORTB.F5=1; return i+3;}
}
PORTB.F5=1;
PORTB.F6=0; // ispitujemo red C na RB6
for (i=1; i<4; i++) {
if(Button(&PORTB,i,1,0)) {PORTB.F6=1; return i+6;}
}
PORTB.F6=1;
PORTB.F7=0; // ispitujemo red D na RB7
for (i=1; i<4; i++) {
if(Button(&PORTB,i,1,0)) {PORTB.F7=1; return i+9;}
}
PORTB.F7=1;
}
RADNI ZADATAK:
19
VI VJEBA - AD KONVERZIJA
Teoretski uvod
Analogno-digitalna konverzija je postupak pretvorbe analogne veliine napona u digitalni oblik tj.
binarni broj. Samom postupku najee prethodi tzv. kondicioniranje ili prilagodba mjerene veliine u
podruju od interesa (pojaavanje i usklaivanje naponskih nivoa).
Da bi radili AD konverziju sa mikroraunarom potrebno je da isti ima ugraenu hardversku
komponentu koju nazivamo ADC modul. Neki mikroraunari imaju ADC modul, a neki nemaju, npr.
PIC16F887 ima, a PIC16F84A nema.
PIC16F877 ima AD modul 10-bitne rezolucije sa 14 kanala to nam daje mogunost mjerenja
14 razliitih analognih veliina (ali ne istovremeno). Svaki kanal je spojen na odgovarajui pin
mikroraunara (AN0, AN1, ... , AN13). Pin mora biti deklarisan kao ulazni (TRIS =1), i kao analogni
(ANSEL i ANSELH registri).
10-bitna rezolucija znai da imamo 210 = 1024 binarnih brojeva (0 i 1023) za registriranje
izmjerene veliine. Napon koji mjerimo moe biti maksimalnog raspona od 0 do 5V pa je tako
5V/1023=4,88mV razlika izmeu dva susjedna binarna broja i istovremeno najvea mogua greka. U
tabeli VI-1 date su neke vrijednosti napona i pripadajue binarne i decimalne vrijednosti (popuniti prazna
mjesta u tabeli):
Tabela VI-1
NAPON BINARNA VRIJEDNOST
5V
1111111111
3V
1001100110
0011011011
0000010011
4,88mV 0000000001
0
0000000000
DECIMALNA VRIJEDNOST
1023
614
1
0
Vea rezolucija znai veu preciznost AD konvertora, npr. ako imamo 8-bitni ADC napon od 5V
moemo prikazati sa 28=256 vrijednosti (0 i 255). 5V/255=19,6mV je razlika izmeu dva susjedna
binarna broja i istovremeno najvea mogua greka, to je 4 puta vea greka nego kod 10-bitnog ADC.
mikroC kompajler ima ugraenu funkciju Adc_read koja nam omoguava lagan rad sa ADC
modulom, tj. lako oitavanje vrijednosti napona. Prototip Adc_read funkcije je sljedei:
unsigned Adc_read(unsigned short channel)
gdje su:
unsigned - izlazni tip (unsigned int) cijeli broj bez predznaka veliine 2 bajta kojim moemo
prikazati brojeve od 0 do 65535;
Adc_read naziv funkcije;
20
unsigned short tip ulaznog argumenta, unsigned short int, kratki cijeli broj bez predznaka
veliine 1 bita kojim moemo prikazati brojeve od 0 do 255
channel opis ulaznog argumenta, ulazni argument je broj kanala na kojem se vri AD
konverzija, npr. za pin AN2 taj argument bie 2.
Za potrebe simulacije na ADC kanal dovodiemo srednji izvod potenciometra (POT-HG) koji
moemo pomjerati gore-dole i time mjenjati odnos otpora tj. napon na ADC u toku simulacije. Spojiemo
i DC voltmetar na ulaz ADC radi kontrole oitanja napona (nalazi se u lijevoj alatnoj traci - slika VI-2).
ANSEL i ANSELH registri slue za konfiguraciju pinova u analogne to je potrebno uiniti prije
ulaska u beskonanu petlju ako emo raditi AD konverziju. Kao to se vidi na slici VI-1, pinovi imaju
viestruku mogunost konfiguracije, digitalni, analogni ili neku specifinu funkciju.
U ovom primjeru koristimo pin 2 na portu A tj. AN2 i pripadajui bit u ANSEL registru mora biti 1.
Ostali pinovi su deklarirani kao digitalni i moraju biti 0, konfiguracija u C-u e izgledati ovako:
ANSEL = 0x04;
ANSELH = 0x00;
ANSELH
7
0
0
AN13
0
AN12
21
0
AN11
0
AN10
AN9
0
AN8
ANSEL
7
0
0
0
AN7
0
AN6
0
AN5
0
AN4
1
AN3
0
AN2
0
AN1
AN0
U mikroC kompajleru imamo 2 primjera programskog koda za AD konverziju, u prvom primjeru
ADC_on_LEDs oitavamo vrijednost na kanalu 2 (AN2) i svih 10 bitova prikazujemo pomou LED dioda
spojenih na port D i dva najznaajnija na port B, bitove 7 i 6. U toku simulacije umjesto pojedinanih
LED dioda i koristiemo LED_BARGRAPH element spojen preko otporne mree kao na slici VI-3.
PORTD.BIT0
PORTD.BIT1
PORTD.BIT2
...
PORTD.BIT6
PORTD.BIT7
PORTB.BIT6
PORTB.BIT7
do {
temp_res = ADC_Read(2);
// Oitaj 10-bitni rezultat AD konverzije na 2. kanalu
PORTD = temp_res;
// Poalji 8 lakih bitova na PORTD
PORTB = temp_res >> 2;
// Poalji 2 najtea bita na RB7 i RB6
// sa temp_res >> 2 pomiemo svih 10 bitova za 2 mjesta u desno i kad to dodjelimo portu B sa
// PORTB = imaemo 8 i 9 bit na 6 i 7 mjestu u portu B
} while(1);
}
23
// 1 byte
// 2 byte
// pokaziva na 1 byte
// 4 byte
}
}//~!
24
Laboratorijska vjeba
RADNI ZADATAK: Koristei programski kod iz gornja dva listinga napisati program koji e
pokrenuti simulaciju sa slike VI-5, napraviti simulacijski model u Proteusu i testirati izvoenje programa.
25
Teoretski uvod
Prekidi su najmoniji alat u programiranju mikroraunara i esto se koriste. Prekid u izvravanju
nekog programa deava se u bilo kojem dijelu programa sa svrhom da se izvri odreena radnja koja je
prioritetna, takvu radnju zovemo prekidna servisna rutina (eng. interrupt service routine). Prekid moe
biti vanjski ili unutranji, imamo vie vrsta prekida zavisno od mikroraunara, npr. PIC16F84A ima etiri
razliita prekida i moemo ih koristiti sve odjednom, u katalokim podacima (datasheet) navedeno je da
su to sljedei prekidi:
1.
2.
3.
4.
Svaki izvor prekida ima pridruena dva bita u INTCON (INTerruptCONtrol) registru (osim to za provjeru
upisa u EEPROM koristimo EECON1 registar), jednim bitom omoguujemo taj prekid, a drugim
detektujemo da se taj prekid desio. Tu je i zajedniki bit GIE (Global Interrupt Enable) kojim se
omoguuju ili zabranjuju svi prekidi odjednom. Prekidna logika PIC16F84A izgleda kao na slici VII-1.
26
Laboratorijska vjeba
Za laboratorijsku vjebu ispitivanja prekida napraviti simulacijski model kao na slici VII-3.
Ispitujemo dva prekida, vanjski na RB0 pinu koji se deava pritiskom na taster, dioda D1 mijenja svoje
stanje, i unutranji na Timer0 koji radi na takt mikroprocesora i uzrokovan je preljevom registra sa
maksimalne vrijednosti 0xFF na minimalnu vrijednost 0x00. Za frekvenciju oscilatora od 8MHz koja je
zadana za ovu vjebu, Timer0 registar se uvea za 1 svakih 500ns bez koritenja djelila (prescaler).
Kad se prekid na Timer-u 0 desi kratko se upali LED dioda D2.
27
// prekidna rutina
// RB0 je ulazni
// RB7 je izlazni
// RA0 je izlazni
// Timer0 pocetna vrijednost
// cnt pocetna vrijednost
// beskonana petlja
// Promijeni stanje RB7
// Reset cnt
RADNI ZADACI:
1. Skicirati OPTION_REG registar sa postavkom u mainu na hex 84, i objasniti kako je namjeten
taj registar, koristiti datasheet.
2. Skicirati INTCON registar sa postavkom u mainu na hex B0 i objasniti kako je postavljen sa
opisom svih bitova tog registra, koristiti datasheet.
3. Zato je poetna vrijednost TMR0 96? U kojem vremenu se deava prekid? Izraunati. Voditi
rauna o tome da je prescaler 1:32.
4. emu slui varijabla cnt? Zato ide do 400?
5. Na koji nain se ispituje unutar prekidne rutine koji se prekid desio? Objasni if else strukturu
koja se tu koristi.
28