univerzitet u niŠu elektornski...

52
UNIVERZITET U NIŠU ELEKTORNSKI FAKULTET KATEDRA ZA ELEKTRONIKU Šestobitni up/down brojač i konačni automati realizovani pomoću PIC16F877 mikrokontrolera studenti: Aleksandar Gošić 11486 Aleksandar Lakićević 11523 mentor: prof. dr Mile Stojčev

Upload: others

Post on 12-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

UNIVERZITET U NIŠU ELEKTORNSKI FAKULTET KATEDRA ZA ELEKTRONIKU

Šestobitni up/down brojač i konačni automati realizovani pomoću PIC16F877

mikrokontrolera studenti:

Aleksandar Gošić 11486 Aleksandar Lakićević 11523

mentor:

prof. dr Mile Stojčev

Page 2: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

1

SADRŽAJ UVOD................................................................................................................................. 2 BROJAČI............................................................................................................................ 3 KONAČNI AUTOMATI.................................................................................................... 4 KONAČNI AUTOMATI MUROVOG TIPA .................................................................... 7 KONAČNI AUTOMATI MILIJEVOG TIPA.................................................................... 7 PROJEKTNI ZADATAK................................................................................................... 8 UPUTSTVO ZA RUKOVANJE OKRUŽENJEM............................................................. 9 SOURCE KODOVI.......................................................................................................... 12

Kod brojača:.................................................................................................................. 12 Kod konačnih automata: ............................................................................................... 20

LITERATURA ................................................................................................................. 26 BIOGRAFIJE AUTORA................................................................................................. 27 DODATAK....................................................................................................................... 30

Opis mikrokontrolera PIC16F877................................................................................. 30 MIKROC – Softver za programiranje PIC mikrokontrolera ........................................ 36 Editovanje koda ............................................................................................................ 41 Učitavanje HEX fajla u mikrokontroler – Programiranje mikrokontrolera............. 44 Princip rada bootloadera ............................................................................................... 52

Page 3: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

2

UVOD Ovaj zadatak treba da pokaže kako pomoću mikrokontrolera PIC16F877 može da se realizuje šestobitni brojač i konačan automat Milijevog i Murovog tipa. Za pisanje koda koristili smo kompajler mikroC , a za upis koda u mikrokontroler koristili smo mikroBootloader, produkte firme MikroElektronika iz Beograda. U prvom delu ovog teksta biće objašnjeni načini rada kružnog brojača i konačnih automata, oba tipa. Posle toga, biće opisani softveri za editivanje koda i za učitavanje koda u mikrokontroler. Zatim sledi opis koda koji je unešen u mikrokontroler, i na kraju opisan je kompletan hardver sistema počevši od mikrokontrolera pa nadalje.

Page 4: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

3

BROJAČI Brojači su sekvencijalne mreže čiji dijagrami stanja predstavljaju repetitivni ciklus. Broj različitih stanja u ciklusu se naziva moduo, ili osnova brojača. Brojač sa m stanja je brojač modula m. Kružni brojači, sintetizovani korišćenjem pomeračkih registara, mogu se, generalno, svrstati u ovu klasu mreža. Kao memorijski element u brojačima se koristi flipflopovi. Brojač sa n flipflopova, ako ima 2n stanja koja se menjaju u sekvenci binarnih brojeva, nazivaju se n-bitni binarni brojač ili binarni brojač modula m=2n. Ako se svi flipflopovi u brojaču taktuju zajedničkim taktnim impulsom, takvi brojači se nazivaju sinhroni. Ako taktni impuls nije zajednički za sve flipflopove, brojač je asinhroni. Kao komponente digitalnih sistema koriste se i brojači koji koduju opadajući niz binarnih borijeva (brojači unazad – down counters), i brojači, koji, zavisno od izabranog režima rada, mogu da koduju rastući ili opadajući niz binarnih brojeva. Ovi poslednji se nazivaju obostrani brojači (up-down counters ). Brojači unazad i obostrani brojači mogu biti sintetizovani kao asinhroni brojači ili kao sinhroni brojači, meñutim u praksi se isključivo koriste sinhroni brojači. Brojač unazad treba nakon svakog taktnog impulsa da dekrementira sadržaj, odnosno, sledeće stanje brojača treba da bude binarni kod za 1 manji od zatečenog stanja. Kod brojača sa paralelnim upisom, upis omgućava da se u brojač, pre početka brojanja, asinhronim signalom LOAD, upiše inicijalni sadržaj od koga će brojač početi da broji. Kod brojača postoji i izlazni signal CARRY, koji služi za kaskadno vezivanje više brojača. Na slici 1 prikazan je dijagram stanja šesnaestobitnog BCD brojača. Analogno njemu realizuju se bilo koji drugi brojači.

Slika 1.

Page 5: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

4

KONAČNI AUTOMATI Konačni automati (prema eng. Finite State Machine - FSM) predstavljaju najznačajniju tehniku za modeliranje sekvencijalnih kola, koja je naročito pogodna za projektovanje pojedinih tipova digitalnih sistema čije se ponašanje može opisati precizno definisanom sekvencom aktivnosti. Tipičan primer su upravljačke jedinice. Model konačnog automata zasnovan je na konceptu stanja i prelaza izmeñu stanja. U svakom trenutku, automat je u jednom od konačnog broja svojih stanja. Pod dejstvom taktnog signala, a u zavisnosti od tekućeg stanja i trenutne vrednosti ulaza, automat prelazi u novo stanje i generiše odgovarajuće izlaze. Konačni automat se može predstaviti dijagramom (grafom) stanja na slici 2.

Slika 2.

U ovom dijagramu, krugovima su predstavljena stanja, a strelicama (granama) prelazi izmeñu stanja. Svaka grana je označena parom ulaz/izlaz i ukazuje na novo stanje u koje će automat preći, kao i na vrednost koja će biti generisana na izlazu, pod uslovom da je na ulazu prisutna navedena vrednost. Tri tipa modela kola kanačnih automata dati su na naredne tri slike. Svaki model se razlikuje od načina postavljanja izlaza. Kolo na slici 3 se zove konačni automat Murovog tipa, kod koga se može primetiti da izlazi zavise jedino od trenutnog stanja pa se izlazi kod ovog kola nazivaju Murovi izlazi. Na slici 4 je prikazano kolo Milijevog konačnog automata kod koga izlazi zavise i od ulaza i od konačnog stanja pa se izlazi kod ovog kola nazivaju Milijevi izlazi. Na slici 5 je prizan konačni automat koji ima izlaze oba tipa, Milijev i Murov, pa se zbog toga ovi automati nazivaju konačni automati mešovitog tipa.

Page 6: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

5

Slika 3.

Slika 4.

Slika 5.

Ne postoje pravila za odreñivnje gde sinhrono-sekvencijalna mašina odnosno konačni automat treba da startuje, to je obično odluka projektanta konačnog automata koji donosi tu odluku u zavisnosti od specifikacije zahteva. Da bi realizovali konačni automat, neophodno ga je opisati na neki od sledećih načina: generisanjem tabele istinitosti (PS/NS tabele), dijagrama

Page 7: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

6

stanja, ASM dijagrama, dijagrama toka signala ili vremenskih dijagrama koje prikazuju specifikacije za zadato kolo.

Proces projektovanja konačnog automata je sledeći:

Korak 1: Prevesti specifikacione zahteve u jedan od gore navedenih oblika za opisivanje konačnih automata; Korak 2: Izvršti moguću redukciju/smanjenje stanja; Korak 3: Utvrditi minimalni broj flip-flopova i pridružiti im promenljive stanja (jedna promenljiva za svaki flip-flop), onda pridružiti jedinstven kod svakom od stanja; Korak 4: Odabrati tip flip-flopa, onda utvrditi jednačine pobudnih ulaza i jednačine Murovih odnosno Milijevih izlaza; Korak 5: Nacrtati sinhrono sekvencijalni dijagram logičkih kola.

Nadalje će biti objašnjeni posebno automati Murovog i Milijevog tipa dok automat mešovitog tipa predstavlja kombinaciju ova dva, tojest ima izlaze i jednog i drugo tipa (Murovog i Miljievog).

Page 8: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

7

KONAČNI AUTOMATI MUROVOG TIPA Ako izlaz automata zavisi jedino od tekućeg stanja, takav automat se naziva konačnim automatom Murovog tipa. Ako izlaz zavisi i od tekućeg stanja i od trenutnog ulaza, govorimo o automatu Milijevog tipa. U suštini, Murov FSM je specijalni slučaj Milijevog FSM-a i obično se predstavlja nešto drugačijim dijagramom stanja uodnosu na onaj sa slici 2. Primer dijagram stanja automata Murovog tipa prikazan je slici 6. Izlazne vrednosti su sada pridružene stanjima i navedene u zagradama ispod imena stanja. Na strelicama su naznačeni jedino uslovi (ulazi) koji iniciraju prelaz u odgovarajuće sledeće stanje.

Slika 6.

KONAČNI AUTOMATI MILIJEVOG TIPA Za razliku od konačnog automata Murovog tipa, kod koga izlaz zavisi isključivo od tekućeg stanja, kodautomata Milijeg tipa izlaz je u funkciji kako tekućeg stanja tako i trenutnog ulaza. Automati Milijevog tipa predstavljaju se dijagramom stanja kod koga su izlazne vrednosti pridružene granama, kao u dijagramu sa slike 2.

Page 9: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

8

PROJEKTNI ZADATAK Kao što smo već napomenuli zadatak ovog projekta je bio da se pomoću mikrokontrolera simulira rad šestobitnog up/down kružnog brojača sa paralelnim upisom i simulacija konačnog automata Milijevog i Murovog tipa. Za tu svrhu je iskorišćen MICROCHIP-ov mikrokontroler PIC16F877. Konkretno, zadatak je bio da se opiše šestobitni brojač kod koga može da se bira smer brojanja (UP/DOWN), postoji dozvola rada (ENABLE) i postoji mogućnost paralelnog upisa željene vrednosti od koje bi brojač počeo da broji. Takoñe trebalo je da se opišu dva konačna automata Milijevog i Murovog tipa koji će izvršavati funkcije opisane kodom. Izbor moda rada (brojač, konačni automat) bira se dvopoložajnim prekidačem na okruženju. Sa jedne strane, na ulaz kontrolera potrebno je povezati prekidače, kao ulazne module, koji će definisati stanje na ulazu logičkih funkcija, a sa druge strane potrebno je povezati LED diode, kao izlazne module, koje će služiti kao indikacija stanja na izlazu kontrolera.

Za realizaciju ovog simulatora upotrebljene su sledeće komponente: • mikrokontroler PIC16F877 kao centralna procesorska jedinica; • MAX232 sa propratnim interfejsom za serijsku komunikaciju sa

računarom putem koje se vrši programiranje kontrolera; • klik-klak prekidači koji definišu logičke ulaze kontrolera (visok ili

nizak nivo na ulazu kontrolera ); • DIP prekidači koji služe za izbor moda rada okruženja • Više namenski taster prekidači • LED diode za indikaciju logičkih stanja na izlazu kontrolera; • 74HC241 drajver za poduñivanje LED dioda; • RESET kolo za vraćanje kontrolera na početno stanje (resetovanje);

blok za napajanje sa stabilizatorom napona na 5V.

Page 10: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

9

UPUTSTVO ZA RUKOVANJE OKRUŽENJEM Kao što smo već napomenuli, ovo okruženje ima tri moda rada čiji se odabir vrši postavljanjem DIP prekidača. Zbog ograničenosti kompajlera bilo je neophodno razdvojiti softver za brojač i softver za konačne automate, pa je tako neophodno posebno učitavati kod za brojač a posebno za automate. Učitavanje kodova se vrši putem bootloadera o čemu će biti reči kasnije.

Ako je učitan softver za brojač i DIP 1 prekidač postavljen na ON, tada okruženje radi kao brojač. Pošto smo izabrali taj mod rada, neophodno je podesiti brojač na odgovarajući način. Najpre je potrebno izabrati smer brojanja klik-klak prekidačem S2. Kada je u položaju 0 onda broji naviše, što ozanačava crvena LED dioda, a u položaju 1 broji naniže, što označava žuta LED dioda. Sledeći korak je postavljanje početne vrednosti od koje će brojač startovati, što se vrši klik-klak prekidačima S3 - S8. Kada je sve prethodno podešeno, Enable prekidačem (S1) dozvoljavamo rad brojača, što signalizira zelena LED dioda. Učitavanje zadate početne vrednosti se vrši tasterom LOAD, što indicira plava LED dioda i učitana vrednost može da se pročita na LED diodama D1 do D6. Neophodno je ispratiti redosled predhodno opisanih koraka kako bi brojač bio pravilno setovan. Nakon toga je moguće vršiti brojanje. Tasterom Clock se vrši brojanje a vrednost brojanja se očitava na LED diodama D1 do D6. Brojač se može resetovati u bilo kom trentku pritiskom na taster Reset_Counter. Kad brojač doñe do krajnje vrednosti, pali se LED dioda D7 koja označava prenos, odnosno Carry. Bitno je napomenuti da se postavljanje početne vrednosti brojanja, odnosno očitavanje trenutne vrednosti izlaza brojača vrši u šestobitnom BCD kodu, kao i to da se nakon izvršenog jednog ciklusa brojanja (postavljanja izlaza carry) početna zadata vrednost (loadaovana vrednost) smanjuje za 1. Ukoliko je učitan softver za konačne automate i DIP 2 prekidač postavljen na ON, onda sistem ima ulogu Murovog automata čiji je dijagram stanja dat na slici 7.

Page 11: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

10

Slika 7.

Kao što već znamo kod automata Murovog tipa izlaz zavisi samo od ulaza pa je vrednost izlaza pridružena stanjima što se vidi sa dijagrama. Ulaz automata se podešava klik-klak prekidačem S1 i u zavisnosti od ulaza automat menja stanje. LED diode D1 i D2 označavaju stanja u kojima se automat nalazi, a D3 i D4 izlaze automata. Stanja imaju sledeće oznake: a=00; b=01; c=11; d=10; a pri tome izlazi imaju sledeće vrednosti: 01; 11; 10; 11; respektivno, što se može videti sa dijagrama. Ukoliko je učitan softver za konačne automate i DIP 3 prekidač postavljen u položaj ON onda sistem ima ulogu Milijevod automata čiji je dijagram stanja dat na slici 8.

Slika 8.

Za razliku od automata Murovog tipa kod koga izlaz zavisi samo od ulaza, kod automata Milijevog tipa pored navedenog uslova izlaz zavisi i od trenutnog stanja, pa su na dijagramu izlazi pridruženi ulazima u granama prelaza što se vidi sa slike 8. Stanja imaju sledeće oznake: a=00; b=01;

Page 12: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

11

c=10; d=11; a izlazi se menjaju u granama prelaza što se vidi sa slike 8. Indikacija trenutnog stanja i izlaza je ista kod prethodnog primera (LED dide D1 do D4 respektivno).

Page 13: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

12

SOURCE KODOVI

Kod broja ča: 1: 2: /*definisanje ulaznih i izlaznih pinova*/ 3: #define In1 PORTB.F7 4: #define Out1 PORTA.F0 5: #define In2 PORTB.F6 6: #define Out2 PORTA.F1 7: #define In3 PORTB.F5 8: #define Out3 PORTA.F2 9: #define In4 PORTB.F4 10: #define Out4 PORTA.F3 11: #define In5 PORTB.F3 12: #define Out5 PORTA.F5 13: #define In6 PORTB.F2 14: #define Out6 PORTE.F0 15: #define In7 PORTB.F1 16: #define Out7 PORTE.F1 17: #define In8 PORTB.F0 18: #define Out8 PORTE.F2 19: #define MOD1 PORTD.F0 20: #define MOD2 PORTD.F1 21: #define MOD3 PORTD.F2 22: #define MOD4 PORTD.F3 23: #define CLK PORTD.F5 24: #define LOAD PORTD.F6 25: #define RESET PORTD.F7 26: #define UP_LED PORTC.F0 27: #define DOWN_LED PORTC.F1 28: #define ENABLE_LED PORTC.F2 29: #define LOAD_LED PORTC.F3 30: /************************************/ 31: 32: void main(void)//pocetak glavnog programa 33: 34: /*definisanje promenljivih*/ 35: volatile char cnt; 36: volatile char s; 37: char dekrementer; 38: char flag; 39: char carry; 40: char marker; 41: delay_ms(200); 42: 43: /*konfigurisanje portiva*/ 44: trisa=0; 45: trisb=255; 46: trisc.f0=0; 47: trisc.f1=0; 48: trisc.f2=0; 49: trisc.f3=0; 50: trisd=255; 51: trise=0; 52: delay_ms(200); 53: porta=0; 54: portb=0; 55: portc=0; 56: portd=0; 57: porte=0;

Page 14: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

13

58: 59: /*dodeljivanje pocetnih vrednosti*/ 60: s=0; 61: cnt=0; 62: dekrementer=1; 63: flag=0; 64: carry=0; 65: marker=0; 66: adcon1=7; 67: delay_ms(200); 68: 69: /*pocetak beskonacne petlje u kojoj kontroler ostaje 70: sve do iskljucenja napajanja ili resetovanja*/ 71: labela: 72: if(1) 73: 74: /*petlja u kojoj ce se vrsiti brojanje 75: navise u slucaju da je odabran MOD1 */ 76: labela_2: 77: if((MOD1) && (!MOD2) && (!MOD3) &&(!MOD4)) 78: 79: //postavljanje pocetnih uslova 80: labela_5: 81: porte=0; 82: porta=0; 83: portc=0; //************************// 84: s=0; // postavljnje // 85: cnt=0; // pocetnih // 86: flag=0; // vrednosti // 87: carry=0; // za brojanje // 88: marker=0; // na vise // 89: dekrementer=1; //************************// 90: 91: if (In2==1)goto labela_6;//skok za brojanje na nize 92: if (In2==0) //uslov za brojanje na vise 93: 94: UP_LED=1; // indikacija brojanja na vise 95: if (In1==1) //dozvola brojanja 96: 97: ENABLE_LED=1; //indikacija dozvole brojanja 98: 99: while(LOAD==0) 100: /*blok za ispitivanje reseta brojaca*/ 101: if (In1==0)goto labela_5; 102: if (RESET==1)goto labela_2; 103: if (In1==0)goto labela_5; 104: if (RESET==1)goto labela_2; 105: delay_ms(20); 106: 107: if (LOAD==1) //ucitavanje postavljene vrednosti brojanja 108: 109: LOAD_LED=1; //indikacija ucitavanja postavljane vrednosti 110: delay_ms(500); 111: LOAD_LED=0; 112: 113: /*kada se desi overflow ne treba ponovo ucitavati pocetno 114: postavljenu vrednost vec treba skociti na labelu_3 gde ce se 115: pocetno ucitana vrednost dekrementirati za 1 svaki put kada 116: se desi overflow brojaca u suprotnom se ucitava postavljena 117: vrednost brojanja*/ 118: if (marker==1) 119: 120: goto labela_3; 121:

Page 15: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

14

122: s.f0=In3; 123: s.f1=In4; 124: s.f2=In5; 125: s.f3=In6; 126: s.f4=In7; 127: s.f5=In8; 128: cnt=s; 129: 130: 131: /*blok za ispitivanje reseta brojaca*/ 132: if (In1==0)goto labela_5; 133: if (RESET==1)goto labela_2; 134: delay_ms(20); 135: while (LOAD==1) 136: if (In1==0)goto labela_5; 137: if (RESET==1)goto labela_2; 138: delay_ms(20); 139: if (In1==0)goto labela_5; 140: if (RESET==1)goto labela_2; 141: /************************************/ 142: 143: while (LOAD==0) 144: 145: labela_3: 146: if (flag==1) 147: 148: /*dekrementiranje postavljene vrednosti kada dodje do overflow-a*/ 149: cnt=cnt-dekrementer; 150: delay_ms(20); 151: while(CLK==0) 152: if (In1==0)goto labela_5; 153: if (RESET==1)goto labela_2; 154: delay_ms(20); 155: if (CLK==1) 156: Out1=0; 157: Out2=0; 158: Out3=0; 159: Out4=0; 160: Out5=0; 161: Out6=0; 162: Out7=carry; 163: 164: delay_ms(20); 165: while(CLK==1) 166: 167: /*blok za ispitivanje reseta brojaca*/ 168: if (In1==0)goto labela_5; 169: if (RESET==1)goto labela_2; 170: 171: /*postavljanje izlaza*/ 172: Out1=0; 173: Out2=0; 174: Out3=0; 175: Out4=0; 176: Out5=0; 177: Out6=0; 178: Out7=carry; 179: 180: delay_ms(20); 181: flag=0; 182: carry=0; 183: goto labela_9; 184: 185: /*postavljajne izlaza i markera*/

Page 16: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

15

186: marker=1; 187: Out1=cnt.f0; 188: Out2=cnt.f1; 189: Out3=cnt.f2; 190: Out4=cnt.f3; 191: Out5=cnt.f4; 192: Out6=cnt.f5; 193: Out7=carry; 194: 195: /*blok za ispitivanje reseta brojaca*/ 196: if (In1==0)goto labela_5; 197: if (RESET==1)goto labela_2; 198: labela_9: 199: while(CLK==0) 200: if (In1==0)goto labela_5; 201: if (RESET==1)goto labela_2; 202: delay_ms(20); 203: if (In1==0)goto labela_5; 204: if (RESET==1)goto labela_2; 205: 206: /*inkrementiranje vrednosti brojanja kada se desi clock*/ 207: if (CLK==1) 208: 209: cnt++; 210: carry=0; 211: 212: /*blok za ispitivanje reseta brojaca*/ 213: if (In1==0)goto labela_5; 214: if (RESET==1)goto labela_2; 215: delay_ms(20); 216: while(CLK==1) 217: if (In1==0)goto labela_5; 218: if (RESET==1)goto labela_2; 219: delay_ms(20); 220: 221: /*postavljanje vrednosti kada se desi overflow*/ 222: if (cnt==64) 223: 224: porte=0; 225: porta=0; 226: dekrementer=dekrementer+1; 227: cnt=s; 228: if (dekrementer>=cnt)dekrementer=1; 229: carry=1; 230: flag=1; 231: goto labela_3; 232: 233: 234: /*postavljanje izlaznih vrednosti brojaca*/ 235: Out1=cnt.f0; 236: Out2=cnt.f1; 237: Out3=cnt.f2; 238: Out4=cnt.f3; 239: Out5=cnt.f4; 240: Out6=cnt.f5; 241: Out7=carry; 242: 243: 244: 245: 246: 247: 248: goto labela_5; //vracanje na pocetak petlje za brojanje na vise 249:

Page 17: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

16

250: /*pocetak petlje za brojanjue na nize*/ 251: labela_6: 252: porte=0; //************************// 253: porta=0; // // 254: portc=0; // postavljnje // 255: s=0; // pocetnih // 256: cnt=0; // vrednosti // 257: flag=0; // za brojanje // 258: carry=0; // na vise // 259: dekrementer=0; //************************// 260: if (In2==0)goto labela_5;//skok za brojanje na vise 261: if (In2==1) //uslov za brojanje na vise 262: 263: DOWN_LED=1; // indikacija brojanja na nize 264: if (In1==1) //dozvola brojanja 265: 266: ENABLE_LED=1; //indikacija dozvole brojanja 267: 268: while(LOAD==0) 269: /*blok za ispitivanje reseta brojaca*/ 270: if (In1==0)goto labela_6; 271: if (RESET==1)goto labela_2; 272: if (In1==0)goto labela_6; 273: if (RESET==1)goto labela_2; 274: delay_ms(20); 275: 276: if (LOAD==1) //ucitavanje postavljene verednosti brojanja 277: 278: LOAD_LED=1; //indikacija ucitavanja postavljane vrednosti 279: delay_ms(500); 280: LOAD_LED=0; 281: 282: /*kada se desi overflow ne treba ponovo ucitavati pocetno 283: postavljenu vrednost vec treba skociti na labelu_4 gde ce se 284: pocetno ucitana vrednost dekrementirati za 1 svaki put kada 285: se desi overflow brojaca u suprotnom se ucitava postavljena 286: vrednost brojanja*/ 287: if (marker==1) 288: 289: goto labela_4; 290: 291: s.f0=In3; 292: s.f1=In4; 293: s.f2=In5; 294: s.f3=In6; 295: s.f4=In7; 296: s.f5=In8; 297: cnt=s; 298: 299: 300: /*blok za ispitivanje reseta brojaca*/ 301: if (In1==0)goto labela_6; 302: if (RESET==1)goto labela_2; 303: delay_ms(20); 304: while (LOAD==1) 305: 306: if (In1==0)goto labela_6; 307: if (RESET==1)goto labela_2; 308: delay_ms(20); 309: if (In1==0)goto labela_6; 310: if (RESET==1)goto labela_2; 311: 312: while (LOAD==0) 313:

Page 18: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

17

314: labela_4: 315: if (In1==0)goto labela_6; 316: if (RESET==1)goto labela_2; 317: /**********************************/ 318: 319: if (flag==1) 320: 321: /*dekrementiranje postavljene vrednosti kada dodje do overflow-a*/ 322: cnt=cnt-dekrementer; 323: flag=0; 324: goto labela_7; 325: 326: /*postavljajne izlaza i markera*/ 327: marker=1; 328: Out1=cnt.f0; 329: Out2=cnt.f1; 330: Out3=cnt.f2; 331: Out4=cnt.f3; 332: Out5=cnt.f4; 333: Out6=cnt.f5; 334: Out7=carry; 335: while(CLK==0) 336: 337: if (In1==0)goto labela_6; 338: if (RESET==1)goto labela_2; 339: 340: /*drzanje vrednosti na izlazu dok se ne desi clock*/ 341: Out1=cnt.f0; 342: Out2=cnt.f1; 343: Out3=cnt.f2; 344: Out4=cnt.f3; 345: Out5=cnt.f4; 346: Out6=cnt.f5; 347: Out7=carry; 348: 349: 350: delay_ms(20); 351: goto labela_8; 352: labela_7: 353: /*blok za ispitivanje reseta brojaca*/ 354: if (In1==0)goto labela_6; 355: if (RESET==1)goto labela_2; 356: delay_ms(20); 357: while(CLK==0) 358: if (In1==0)goto labela_6; 359: if (RESET==1)goto labela_2; 360: 361: if (In1==0)goto labela_6; 362: if (RESET==1)goto labela_2; 363: delay_ms(20); 364: /************************************/ 365: 366: if (CLK==1) 367: 368: Out1=0; 369: Out2=0; 370: Out3=0; 371: Out4=0; 372: Out5=0; 373: Out6=0; 374: Out7=carry; 375: cnt++; 376: 377: delay_ms(20);

Page 19: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

18

378: 379: /*blok za ispitivanje reseta brojaca*/ 380: if (In1==0)goto labela_6; 381: if (RESET==1)goto labela_2; 382: 383: while(CLK==1) 384: if (In1==0)goto labela_6; 385: if (RESET==1)goto labela_2; 386: 387: labela_8: 388: if (In1==0)goto labela_6; 389: if (RESET==1)goto labela_2; 390: 391: delay_ms(20); 392: while(CLK==0) 393: if (In1==0)goto labela_6; 394: if (RESET==1)goto labela_2; 395: delay_ms(20); 396: if (In1==0)goto labela_6; 397: if (RESET==1)goto labela_2; 398: /*********************************/ 399: 400: /*dekrementiranje vrednosti brojanja kada se desi clock*/ 401: if (CLK==1) 402: 403: cnt--; 404: carry=0; 405: 406: delay_ms(20); 407: 408: /*blok za ispitivanje reseta brojaca*/ 409: if (In1==0)goto labela_6; 410: if (RESET==1)goto labela_2; 411: delay_ms(20); 412: while(CLK==1) 413: if (In1==0)goto labela_6; 414: if (RESET==1)goto labela_2; 415: delay_ms(20); 416: if (In1==0)goto labela_6; 417: if (RESET==1)goto labela_2; 418: 419: /*postavljanje vrednosti kada se desi overflow*/ 420: if (cnt==0) 421: 422: porte=0; 423: porta=0; 424: dekrementer=dekrementer+1; 425: cnt=s; 426: if (dekrementer>=cnt)dekrementer=0; 427: carry=1; 428: flag=1; 429: goto labela_4; 430: 431: 432: /*postavljanje izlaznih vrednosti brojaca*/ 433: Out1=cnt.f0; 434: Out2=cnt.f1; 435: Out3=cnt.f2; 436: Out4=cnt.f3; 437: Out5=cnt.f4; 438: Out6=cnt.f5; 439: Out7=carry; 440: 441:

Page 20: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

19

442: 443: 444: goto labela_6;//vracanje na pocetak petlje za brojanje na nize 445: 446: goto labela_2;//vracanje na pocetak petlje za ipitivanje moda rada 447: 448: goto labela;//vracanje na pocetak beskonacne petlje 449:

Kod kona čnih automata:

1: /*definisanje ulaznih i izlaznih pinova*/ 2: #define In1 PORTB.F7 3: #define Out1 PORTA.F0 4: #define In2 PORTB.F6 5: #define Out2 PORTA.F1 6: #define In3 PORTB.F5 7: #define Out3 PORTA.F2 8: #define In4 PORTB.F4 9: #define Out4 PORTA.F3 10: #define In5 PORTB.F3 11: #define Out5 PORTA.F5 12: #define In6 PORTB.F2 13: #define Out6 PORTE.F0 14: #define In7 PORTB.F1 15: #define Out7 PORTE.F1 16: #define In8 PORTB.F0 17: #define Out8 PORTE.F2 18: #define MOD1 PORTD.F0 19: #define MOD2 PORTD.F1 20: #define MOD3 PORTD.F2 21: #define MOD4 PORTD.F3 22: #define CLK PORTD.F5 23: #define LOAD PORTD.F6 24: #define RESET PORTD.F7 25: #define UP_LED PORTC.F0 26: #define DOWN_LED PORTC.F1 27: #define ENABLE_LED PORTC.F2 28: #define LOAD_LED PORTC.F3 29: /*************************************/ 30: 31: void main(void) //pocetak glavnog programa 32: 33: /*definisanje promenljivih*/ 34: volatile char cnt; 35: volatile char s; 36: char dekrementer; 37: char flag; 38: char carry; 39: delay_ms(200); 40: 41: /*konfigurisanje portiva*/ 42: trisa=0; 43: trisb=255; 44: trisc.f0=0; 45: trisc.f1=0; 46: trisc.f2=0; 47: trisc.f3=0; 48: trisd=255; 49: trise=0; 50: delay_ms(200);

Page 21: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

20

51: porta=0; 52: portb=0; 53: portc=0; 54: portd=0; 55: porte=0; 56: 57: /*dodeljivanje pocetnih vrednosti*/ 58: s=0; 59: cnt=0; 60: dekrementer=1; 61: flag=0; 62: carry=0; 63: adcon1=7; 64: delay_ms(200); 65: 66: /*pocetak beskonacne petlje u kojoj kontroler ostaje 67: sve do iskljucenja napajanja ili resetovanja*/ 68: while(1) 69: 70: 71: /*ispitivanje moda rada;*/ 72: /*u slucaju postavljenog*/ 73: /*MOD-a 2 ulazi se u petlju*/ 74: /*za realizaciju Murovog automata*/ 75: while((!MOD1) && (MOD2) && (!MOD3) && (!MOD4)) 76: 77: 78: /*definisanje stanja i izlaza*/ 79: char y1; 80: char y2; 81: char Z1; 82: char Z2; 83: 84: /*pocetak beskonacne petlje za Murov automat*/ 85: while(1) 86: 87: 88: /*dodeljivanje pocetne vrednosti izlazima i stanjima 89: i postavljanje na izlaz kontrolera*/ 90: y1=0; 91: y2=0; 92: Z1=0; 93: Z2=1; 94: Out1=y1; 95: Out2=y2; 96: Out3=Z1; 97: Out4=Z2; 98: delay_ms(1000); 99: 100: 101: /*ulazak u pocetno stanje automata*/ 102: if (In1==0) 103: 104: delay_ms(1000); 105: y1=0; 106: y2=1; 107: Z1=1; 108: Z2=1; 109: Out1=y1; 110: Out2=y2; 111: Out3=Z1; 112: Out4=Z2; 113: 114: else

Page 22: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

21

115: 116: delay_ms(1000); 117: y1=1; 118: y2=1; 119: Z1=1; 120: Z2=0; 121: Out1=y1; 122: Out2=y2; 123: Out3=Z1; 124: Out4=Z2; 125: 126: 127: /*ispitivanje uslova za prelazak u stanje b*/ 128: stanje_b: 129: if ((y1==0) && (y2==1) && (Z1==1) && (Z2==1)) 130: 131: delay_ms(1000);//uvodimo kasnjenje da bi se ocitale vrednosti 132: //ispitivanje ulaza //na izlazu kontrolera i ono ima isto znacenje 133: if (In1==0) //u celom kodu 134: 135: y1=0; 136: y2=1; 137: Z1=1; 138: Z2=1; 139: Out1=y1; //postavljanje izlaza 140: Out2=y2; 141: Out3=Z1; 142: Out4=Z2; 143: goto stanje_b;//vracanje u isto stanje zbog datih uslova 144: 145: else 146: 147: delay_ms(1000); 148: y1=1; 149: y2=0; 150: Z1=1; 151: Z2=1; 152: Out1=y1; //postavljanje izlaza 153: Out2=y2; 154: Out3=Z1; 155: Out4=Z2; 156: goto stanje_d;//prelazak u naredno stanje zbog datih uslova 157: 158: 159: 160: /*ispitivanje uslova za prelazak u stanje c*/ 161: stanje_c: 162: if ((y1==1) && (y2==1) && (Z1==1) && (Z2==0)) 163: 164: delay_ms(1000); 165: //ispitivanje ulaza 166: if(In1==1) 167: 168: delay_ms(1000); 169: y1=0; 170: y2=0; 171: Z1=0; 172: Z2=1; 173: Out1=y1; //postavljanje izlaza 174: Out2=y2; 175: Out3=Z1; 176: Out4=Z2; 177: goto stanje_a;//prelazak u naredno stanje zbog datih uslova 178:

Page 23: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

22

179: else 180: 181: delay_ms(1000); 182: y1=1; 183: y2=0; 184: Z1=1; 185: Z2=1; 186: Out1=y1; //postavljanje izlaza 187: Out2=y2; 188: Out3=Z1; 189: Out4=Z2; 190: goto stanje_d;//prelazak u naredno stanje zbog datih uslova 191: 192: 193: 194: /*ispitivanje uslova za prelazak u stanje d*/ 195: stanje_d: 196: if((y1==1) && (y2==0) && (Z1==1) && (Z2==1)) 197: 198: delay_ms(1000); 199: //ispitivanje ulaza 200: if(In1==0) 201: 202: delay_ms(1000); 203: y1=0; 204: y2=0; 205: Z1=0; 206: Z2=1; 207: Out1=y1; //postavljanje izlaza 208: Out2=y2; 209: Out3=Z1; 210: Out4=Z2; 211: goto stanje_a;//prelazak u naredno stanje zbog datih uslova 212: 213: else 214: 215: y1=1; 216: y2=0; 217: Z1=1; 218: Z2=1; 219: Out1=y1; //postavljanje izlaza 220: Out2=y2; 221: Out3=Z1; 222: Out4=Z2; 223: goto stanje_d;//vracanje u isto stanje zbog datih uslova 224: 225: 226: 227: /*ispitivanje uslova za prelazak u stanje a*/ 228: stanje_a: 229: if((y1==0) && (y2==0) && (Z1==0) && (Z2==1)) 230: 231: delay_ms(1000); 232: //ispitivanje ulaza 233: if(In1==0) 234: 235: delay_ms(1000); 236: y1=0; 237: y2=1; 238: Z1=1; 239: Z2=1; 240: Out1=y1; //postavljanje izlaza 241: Out2=y2; 242: Out3=Z1;

Page 24: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

23

243: Out4=Z2; 244: goto stanje_b;//prelazak u naredno stanje zbog datih uslova 245: 246: else 247: 248: delay_ms(1000); 249: y1=1; 250: y2=1; 251: Z1=1; 252: Z2=0; 253: Out1=y1; //postavljanje izlaza 254: Out2=y2; 255: Out3=Z1; 256: Out4=Z2; 257: goto stanje_c;//prelazak u naredno stanje zbog datih uslova 258: 259: 260: 261: 262: 263: /*ispitivanje moda rada;*/ 264: /*u slucaju postavljenog*/ 265: /*MOD-a 3 ulazi se u petlju*/ 266: /*za realizaciju Milijevog automata*/ 267: while((!MOD1) && (!MOD2) && (MOD3) && (!MOD4)) 268: 269: /*definisanje stanja i izlaza*/ 270: char y1=0; 271: char y2=0; 272: char Z1=0; 273: char Z2=0; 274: delay_ms(1000); 275: 276: /*pocetak beskonacne petlje za Milijev automat*/ 277: while(1) 278: 279: 280: //deklaracija stanja a 281: stanjea: 282: y1=0; 283: y2=0; 284: Out1=y1; //postavljanje izlaza 285: Out2=y2; 286: Out3=Z1; 287: Out4=Z2; 288: delay_ms(1000); 289: //ispitivanje ulaza 290: if(In1==1) 291: 292: Z1=0; 293: Z2=1; 294: Out1=y1; //postavljanje izlaza 295: Out2=y2; 296: Out3=Z1; 297: Out4=Z2; 298: delay_ms(1000); 299: goto stanjeb; //prelazak u naredno stanje 300: 301: else 302: 303: Z1=0; 304: Z2=0; 305: Out1=y1; //postavljanje izlaza 306: Out2=y2;

Page 25: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

24

307: Out3=Z1; 308: Out4=Z2; 309: delay_ms(1000); 310: goto stanjed; //prelazak u naredno stanje 311: 312: 313: //deklaracija stanja b 314: stanjeb: 315: y1=0; 316: y2=1; 317: Out1=y1; //postavljanje izlaza 318: Out2=y2; 319: Out3=Z1; 320: Out4=Z2; 321: delay_ms(1000); 322: delay_ms(1000); 323: //ispitivanje ulaza 324: if(In1==1) 325: 326: Z1=1; 327: Z2=0; 328: Out1=y1; //postavljanje izlaza 329: Out2=y2; 330: Out3=Z1; 331: Out4=Z2; 332: delay_ms(1000); 333: goto stanjec; //prelazak u naredno stanje 334: 335: else 336: 337: Z1=0; 338: Z2=0; 339: Out1=y1; //postavljanje izlaza 340: Out2=y2; 341: Out3=Z1; 342: Out4=Z2; 343: delay_ms(1000); 344: goto stanjed; //prelazak u naredno stanje 345: 346: //deklaracija stanja c 347: stanjec: 348: y1=1; 349: y2=0; 350: Out1=y1; //postavljanje izlaza 351: Out2=y2; 352: Out3=Z1; 353: Out4=Z2; 354: delay_ms(1000); 355: delay_ms(1000); 356: //ispitivanje ulaza 357: if(In1==1) 358: 359: Z1=0; 360: Z2=0; 361: Out1=y1; //postavljanje izlaza 362: Out2=y2; 363: Out3=Z1; 364: Out4=Z2; 365: delay_ms(1000); 366: goto stanjed; //prelazak u naredno stanje 367: 368: else 369: 370: Z1=0;

Page 26: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

25

371: Z2=0; 372: Out1=y1; //postavljanje izlaza 373: Out2=y2; 374: Out3=Z1; 375: Out4=Z2; 376: delay_ms(1000); 377: goto stanjea; //prelazak u naredno stanje 378: 379: //deklaracija stanja d 380: stanjed: 381: y1=1; 382: y2=1; 383: Out1=y1; //postavljanje izlaza 384: Out2=y2; 385: Out3=Z1; 386: Out4=Z2; 387: delay_ms(1000); 388: delay_ms(1000); 389: //ispitivanje ulaza 390: if(In1==1) 391: 392: Z1=1; 393: Z2=1; 394: Out1=y1; //postavljanje izlaza 395: Out2=y2; 396: Out3=Z1; 397: Out4=Z2; 398: delay_ms(1000); 399: goto stanjea; //prelazak u naredno stanje 400: 401: else 402: 403: Z1=0; 404: Z2=0; 405: Out1=y1; //postavljanje izlaza 406: Out2=y2; 407: Out3=Z1; 408: Out4=Z2; 409: delay_ms(1000); 410: goto stanjec; //prelazak u naredno stanje 411: 412: 413: 414: 415: 416:

Page 27: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

26

LITERATURA

• PIC16F87X, DATASHEET, Microchip Tecnology Inc, 2001. • mikroC Help , Mikroelektronika, http://mikroe.com • Arhitektura Mikrosistema Goran ðorñević, skripta, Elektronski fakultet, Niš,

2006. • Impulsna i digitalna elektronika, Dejan Živković, Miodrag Popović, ETF

Beograd 2004 • Modern digital design, Richard S. Sandige, Department of Electrical

Engineering The University of Wyoming • RISC, CISC I DSP procesori, Mile Stojčev, Elektronski fakultet, Niš, 1997.

Page 28: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

27

BIOGRAFIJE AUTORA

Ime: Aleksandar Prezime: Gošić Datum roñenja: 4.10.1985. Nacionalnost: Srbin Bračno stanje: Neoženjen Vozačka dozvola: A,B,C i E kategorije Adresa: selo Gornji Vratari, 37230 Aleksandrovac E-mail: [email protected]

Mobilni telefon: 064/29 85 805 Obrazovanje: Elektrotehnička škola Kruševac Smer: Elektrotehničar automatike, IV stepen

Page 29: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

28

Ime: Aleksandar Prezime: Lakićević Datum roñenja: 6.20.1985. Nacionalnost: Srbin Bračno stanje: Neoženjen Vozačka dozvola: B kategorije Adresa: Ilije Katića 6. 37000 Kruševac E-mail: [email protected]

Mobilni telefon: 064/635 65 25 Obrazovanje: Elektrotehnička škola Kruševac Smer: Elektrotehničar automatike, IV stepen

DODATAK

Opis mikrokontrolera PIC16F877

Većina današnjih mikrokontrolera je bazirano na Harvard arhitekturi, koja jasno definiše četiri osnovne komponente potrebne za embedded sistem. To uključuje CPU jezgro, memoriju za program (ROM, EPROM ili Flash memorija), memoriju za podatke (RAM), jedan ili više tajmera (podesive i watchdog tajmere), kao i I/O linije za komunikaciju sa eksternim periferijama i dopunskim resursima – sve to treba da bude smešteno u jednom integrisanom kolu. Mikrokontroler se u osnovi razlikuje od opštenamenskog mikroprocesorskog čipa po tome što ga je izuzetno lako pretovoriti u radni kompjuter, sa minimumom eksternih čipova za podršku. Ideja je da se mikrokontroler isprogramira, postavi u ureñaj za kontrolu, poveže na napajanje i stavi u funkciju.

Tradicionalni mikroprocesor je rasterećen obaveze da komunicira direktno sa periferijom. On, naime, zahteva da sve to odrade drugi čipovi. Mikrokontroler PIC16F877 firme MICROCHIP predstavlja integraciju mikroprocesora (CPU), memorije i periferija, pa zato ne zahteva

Page 30: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

29

složeni eksterni hardver da bi se realizovao mikroračunarski sistem. Ovaj mikrokontroler je izrañen u CMOS tehnologiji sa ugrañenom FLASH i EEPROM memorijom za memorisanje programa i podataka. PIC16F877 ima tipičnu RISC arhtekturu. Ova arhitektura, kao što je poznato, karakteriše se manjim skupom instrukcija koje se brže izvšavaju od instrukcija kod CISC arhitekture.

U daljem tekstu detaljnije će biti opisani gradivni delovi mikrokontrolera PIC16F877.

Slika 9. Raspored pinova kod mikrokontrolera PIC16F877 u kućištu DIP40

Osnovne karakteristike mikrokontrolera

• RISC mikroprocesor visokih performansi • 35 instrukcija obima jedne reči • Radna frekvencija do 20 MHz • Trajanje taktnog intervala 200 ns, pri frekvenciji 20 MHz • Opkod obima 14 bita • Harverski magacin sa osam nivoa • Tri načina adresiranja (direktno,indirektno i relativno) • Programska flash memorija kapaciteta 8 k X 14-bitnih reči

Page 31: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

30

• Memorije za podatke tipa RAM kapaciteta 368 X 8 bita • Memorije za podatke EEPROM tipa kapaciteta 256 X 8 bita • Prekidi (do 14 izvora prekida) • U/I portovi: A, B, C, D, E • Tri tajmera:

- Timer0 (TMR0): 8-bitni tajmer/brojač_dogañaja - Timer1 (TMR1): 16-bitni tajmer/brojač_dogañaja - Timer2 (TMR2): 8-bitni tajmer/brojač_dogañaja

• 10-bitni 8-kanalni analogno-digitalni (A/D) konvertor • Serijska komunikacija: MSSP, USART • Paralelna komunikacija: PSP • Power-on Reset - reset pri uključenju napajanja (POR) • Power-up timer - unošenje kašnjenja nakon uključenja napajanja

(PWRT) • Oscillator Start-up Timer - unošenje kašnjenja nakon

stabilizovanja radne frekvencije oscilatora (OST) • Sleep mode - režim rada sa malim utroškom energije • Watchdog tajmer sa sopstvenim integrisanim RC oscilatorom za

nezavisni rad • Izbor tipa oscilatora • Radni napon od 2V do 5.5V • Mala potrošnja energije:

<0.6 mA pri naponu od 3V i radnoj frekvenciji od 4 MHz 20µA pri naponu od 3V i radnom taktu od 32kHz <1µA u standby režimu rada.

Arhitektura mikrokontrolera

Kao što je istaknuto, mikrokontroler PIC16F877 poseduje tipičnu

RISC arhitekturu, koja je prikazana na slici 6. Arhitektura poseduje odvojene magistrale za podatke i programski kod. Obim podataka je 8-bitni, dok je programski kod 14-bitni. Moguće je protočno izvršenje (pipelining). Sve instrukcije su istog obima (osim instrukcija grananja) i izvšavaju se za četiri taktna intervala. Dakle, ukoliko se koristi oscilator od 20 MHz, ciklus instrukcije traje 200 ns. Na slici 6 prikazani su gradivni blokovi mikrokontrolera PIC16F877:

• Flash programska memorija – 8 kiloreči obima 14 bita • RAM (File Registers) – 368 bajtova

Page 32: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

31

• Aritmetičko-logička jedinica (ALU) • Akumulator (Working Register) • Hardverski magacin (Stack) organizivan u 8 nivoa • EEPROM memorija podataka obima 256 bajtova • Višekanalni A/D konvertor, USART (univerzalni sinhroni i

asinhroni primo-predajnik), tajmere, portove itd.

Slika 10. Arhitektura mikrokontrolera PIC16F877 Resursi mikrokontrolera koji su iskorišćeni su nadalje objašnjeni: Oscilator

Kod mikrokontrolera PIC16F877 postoje četiri konfiguracije oscilatora:

Page 33: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

32

• RC Resistor/Capacitor • XT Crystal / Resonator • LP Low Power Crystal • HS High Speed Crystal / Resonator. Najjednostavnija varijanta je RC oscilator, a to je ilustrovano na slici 11.

Ovakav pristup je ispravan u aplikacijama u kojima se ne zahteva precizna procena vremenskih intervala. Ovde ćemo naglasiti kako je moguće koristiti i interni RC oscilator, koji je integrisan u mikrokontroleru.

Slika 11. Povezivanje eksternog RC oscilatora

Frekvencija oscilovanja zavisi ne samo od vrednosti Rext i Cext, već i

od napona napajanja kao i radne temperature. Vrednost otpornika Rext treba da bude u opsegu od 3 KΩ do 100K KΩ. Izvan ovog opsega rad oscilatora nije stabilan i osetljiv je na spoljašne uticaje. Kondenzator Cext se može čak i izostaviti. Meñutim, zbog stabilnosti preporučuje se vrednost oko 20pF. Na pinu OSC2/CLKOUT generiše se taktni impuls čija je perioda četiri puta veća od periode rada oscilatora.

Kod vremenski kritičnih aplikacija treba ugrañivati kvarcni oscilator ili keramički rezonator. Vrednosti kondenzatora C1 i C2 (Slika 12), treba da budu identične.

Page 34: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

33

Slika 12. Povezivanje eksternog kvarca (LP, XT, HS)

Mikrokontroleru PIC16F877 može da se dovede i spoljašnji takt, što je prikazano na slici 13.

Slika 13. Dovoñenje spoljašnjeg takta

U Tabeli 1 dat je izbor vrednosti kondenzatora za različite vrednosti frekvencije kristalnog kvarca, dok je u Tabeli 2 predložen izbor vrednosti kondenzatora pri različitim vrednostima frekvencije rezonatora.

Na kraju ćemo istaći kako mikrokontroler PIC16F877 može da radi i na frekvenciji 32 kHz, kada ima izuzetno malu potrošnju.

Page 35: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

34

Tabela 1. Izbor vrednosti kondenzatora za kvarcni kristal

Tabela 2. Izbor vrednosti kondenzatora za rezonator

Page 36: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

35

Odnos izmeñu takta i instrukcijskog ciklusa Takt koji se dovodi na pin OSC1 oscilatora u mikrokontroleru deli se

na četiri vremenski nepreklapajuća taktna signala nazvana Q1, Q2, Q3 i Q4. Skup ovih signala čine jedan instrukcijski ciklus . U zavisnosti od trenutka generisanja u okviru ciklusa instrukcija, taktni signali Q1-Q4 se koriste za sledeće namene:

Q1 - pribavljanje instrukcije iz programske memorije Q2 - dekodiranje naredbe iz prethodnog instrukcijskog ciklusa Q3 - izvršenje naredbe iz prethodna dva instrukcijska ciklusa Q4 - prenos opkoda naredbe pozvane u Q1 u instrukcijski registar. Reset

Uloga Reseta je da sve registre mikrokontrolera dovede u početno

stanje. Ako se mikrokontroler “blokira” , ili smo ga tek uključili, neophodno je da se resetuje. Kako bi se sprečilo slučajno dovoñenje logičke ’0’ na MCLR, potrebno je da se ovaj pin preko otpornika (npr. vrednosti 10KΩ) poveže na pin napajanja Vdd.

Postoji nekoliko tipova reseta kod mikrokontrolera PIC16F877 i to su: • Power-on reset (POR) • MCLR Reset pri normalnom režimu radu • MCLR Reset prilikom SLEEP režima rada • WDT Reset pri normalnom radu • WDT Wake-up (“buñenje” iz SLEEP režima rada) • Brown-out Reset (BOR).

Portovi

PIC16F877 poseduje pet portova (PORTA, PORTB, PORTC, PORTD i PORTE) i oni predstavljaju vezu njegove interne strukture sa spoljašnjim svetom. Svaki od njih može da se konfiguriše kao ulazni ili kao izlazni. Pomenuti portovi su različitog obima:

• 8-pinski (PORTB, PORTC, PORTD)

Page 37: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

36

• 6-pinski (PORTA) • 3-pinski (PORTE).

Svakom pinu bilo kojeg porta, u zavisnosti od režima rada, mogu da se

dodele fiksne ili promenljive funkcije. Konfiguracija smera prenosa ostvaruje se upisom na odgovarajuću bit-poziciju u pripadajućem TRIS registru (0 - pin je izlazni, 1 – pin je ulazni).

Svakom portu je dodeljen registar podataka (PORTX), preko kojeg se programski pristupa U/I pinovima. Upis u neki od tih registara iniciraće upis u latch tog porta, a njegovo čitanje rezultiraće čitanjem logičkih stanja direktno sa pinova. Sve instrukcije upisivanja su tipa read-modify-write . To znači da se pri upisu u port najpre očitaju stanja pinova, zatim izvrši modifikacija, a potom korigovana vrednost upiše u latch porta. Ne postoji velika razlika u konstrukciji pomenutih pet portova.

Nadalje su opisani portovi koji su iskorišćeni za realizaciju sistema.

MIKROC – Softver za programiranje PIC mikrokontrole ra

mikroC prestavlja moćan softverski alat, koji je razvila beogradska MikroElektronika , i namenjen je pisanju koda za MICROCHIP-ove PIC mikrokontrolere. Koristeći mikroC, programeru je omogućen jednostavan način da kontroliše proces programiranja i napravi kvalitetan firmware. Osnovne karakteristike programa mikroC su sledeće:

• Pisanje C koda korišćenjem kvalitetnog editora, što se ogleda automatskom kontrolom i upozorenjima vezanim za sintaksu koda, korišćenih parametara, kao i automatskoj korekciji pojedinih grešaka;

• Preglednost strukture programa (koda), promenljivih i funkcija omogućava Code explorer;

• Jasan asemblerski kod i standardna kompatibilnost generisanih HEX datoteka toka programa preko ugrañeg debagera (debugger);

• Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina, koje značajno ubrzavaju pisanje programa;

Page 38: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

37

• Detaljan izveštaj i grafičko predstavljanje RAM i ROM mape, statistike koda i slično.

Moramo da napomenemo kako mikroC odstupa od ANSI standarda u nekoliko segmenata. Neka odstupanja su načinjena u cilju da se olakša programiranje, dok su druge rezultat hardverskih ograničenja PIC mikrokontrolera. Pomenućemo neke specifičnosti:

• Rekurzivne funkcije (function recursion) su podržane sa izvesnim

ograničenjima, koja su posledica nešto složenijeg pristupa magacinu (stack) i ograničenja vezana za memoriju;

• Pokazivači (pointers) promenljivih i pokazivači konstanti nisu kompatibilni, tj. nije moguća meñusobna dodela ili uporeñivanje;

• mikroC tretira označavanje const kao “true constans” (kod C++), što omogućava korišćenje const objekta na mestima gde ANSI C očekuje constant izraz .Ukoliko se teži ka prenosivosti programa, treba koristiti tradicionalno pretprocesorsko definisanje konstanti;

• mikroC dozvoljava C++ stil jednolinijskih komentara, koristeći dve kose crte (//). Komentar može da počne bilo gde i traje do sledeće nove linije programskog koda;

• Brojne standardne C biblioteke (ctype, math, stdlib, string ) implementirane su u mikroC, uz individualna odstupanja.

Napominjemo da mikroC podržava gotovo sve PIC mikrokontrolere

serija 12, 16 i 18. Izuzetak su mikrokontroleri koji imaju staro hardversko jezgro kao na primer PIC12C508, PIC12F508, PIC12C509, PIC12F509 itd. Inače, ograničena verzija (do 2KB programa) može da se preuzme sa sajta MikroElektronike (www.mikroe.com). U sličaju ako se želi potpuna verzija (neograničen kapacitet programa), mora da se plati licenca od 250$.

Instalacija Ovde ćemo preko Slika 14-17 ilustrovati proces instaliranja mikroC-a.

Inače, instalacija traje 30 sekundi. Posle instalacije treba pokrenuti mikroC, a to se najjednostavnije ostvaruje klikom na ikonicu:

Page 39: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

38

Početak procesa instalacije se ostvaruje klikom na izvršni fajl mikroC_..._.exe . Nakon toga sledi:

Slika 14. Sada treba kliknuti na komandno dugme NEXT

Slika 15. Prihvatanje uslova licenciranja i zatim treba kliknuti na komandno dugme

NEXT

Page 40: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

39

Slika 16. Izbor programatora (PicFlash), gotovih primera i zatim klik na komandno

dugme NEXT

Slika 17. Izbor foldera za smeštanje programa i klik na komandno dugme NEXT

Na kraju instalacije mikroC-a biće ponuñena instalacija drajvera za programator koju u ovom slučaju treba prekinuti izborom opcije No, jer će se programiranje mikrokontrolera vršiti na način koji će kasnije biti opisan.

Page 41: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

40

Editovanje koda

U narednim redovima biće ilustrovan postupak kreiranja koda u mikroC-u (Slike 18-24).

Slika 18. Izgled editora po startovanju programa mikroC

Slika 19. Kreiranje novog projekta preko opcije Project → New Project

Page 42: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

41

Slika 20. Podešavanje parametara novog projekta (naziv, tip mikrokontrolera, takt, parametri kontrolera)

Kod ovog koraka je neophodno u okviru prozora New Project odabrati:

• ime projekta; • njegovu putanju; • tip mikrokontrolera (u našem slučaju P16F877); • vrednost frekvencije kvarcnog kristala (u našem slučaju 8MHz); • i čekirati dugme Default. Nakon toga pritisnuti Ok.

Page 43: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

42

Slika 21. U editor treba uneti program (kod) mikrokontrolera

Slika 22. U editor je unet primer zadate funkcije

Page 44: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

43

Slika 23. Sada treba izvršiti prevoñenje (compile) programa preko opcije Project

→ Build

Slika 24. Izgled prozora posle kompilacije sa izveštajem (Messages)

Page 45: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

44

Kao produkti prevoñenja (kompilacije/kompajliranja) generiše se nekoliko fajlova: asemblerski kod (ASM), heksadecimalni kod (HEX), izveštaji itd. Nama je od daljeg značaja HEX fajl jer on predstavlja kod koji treba „spustiti“ u mikrokontroler, odnosno kod kojim se programira mikrokontroler.

Učitavanje HEX fajla u mikrokontroler – Programiranje mikrokontrolera

Jedan od načina na koji se programira mikrokontroler („spuštanje“

HEX fajla) je učitavanje HEX fajla posredstvom mikroBootloader-a, programa koji je sastavni deo paketa mikroC . Na taj način se izbegava potreba dodatnog programatora čime se ureñaj značajno pojeftinjuje i pojednostavljuje. Sve što je potrebno je da se ostvari serijska veza mikrokontrolera i PC-a, a to se veoma jednostavno postiže povezivanjem USART terminala mikrokontrolera na COM port PC-a, posredstvom neophodnog drajvera za RS-232 komunikaciju (MAX232 sa propratnim hardverom odnosno elektrolitskim kondenzatorima) i kabla (neupredeni „1na1”) za RS-232 komunikaciju. Ostvarivanje ove veze je predhodno detaljnije objašnjeno. Da bi se na ovaj način isprogramirao mikrokontroler ipak je neophodno da se prvo u njega, pomoću adekvatnog programatora, učita kod koji će nadalje omogućiti komunikaciju mikrokontrolera i mikroBootloader-a. Na taj način potreba za programatorom postoji samo pri prvom programiranju mikrokontrolera, te se on ne mora ugradjivati u ureñaj što ga je učinilo značajno jeftinijim i jednostavnijim, a svaki naredni put se programiranje vrši preko serijskog porta (USART terminala) korišćenjem programa mikroBootloader. Takoñe je moguće kupiti mikrokontroler sa već ugrañenim kodom za programiranje putem serijskog porta (USART terminala) korišćenjem nekog bootloader-a. Postupak programiranja je sledeći:

Najpre je potrebno učitati kod za komunikaciju sa mikroBootloader-om posredstvom nekog programatora u mikrokontroler. U tu svrhu je iskorišćeno razvojno okruženje firme MikroElektronika iz Beograda dato na slici 21.

Page 46: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

45

Slika 25. Razvojno okruženje EasyPIC4

Učitavanje datog koda se vrši na sledeći način: U okviru primera koji se dobijaju uz navedeno razvojno okruženje

nalazi se i neophodan kod koji se nalazi u sistemskom folderu programa mikroC čija putanja je sledeća: ...\Mikroelektronika\mikroC\Examples\EasyPic4\extra_examples\Bootloader\P16

Kada je program otvoren programiranje se vrši jednostavnim pritiskom na dugem Build+Program kao na slici 23.

Page 47: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

46

Slika 26. Učitavanje bootloader koda

Pošto je mikrokontroler isprogramiran kodom za komunikaciju sa

mikroBootloader-om može se izvaditi iz okruženja i ugraditi u razvijeni sistem.

Kada je i to obavljeno, dalje programiranje kontrolera se vrši na sledeći način:

U okviru alata koje poseduje mikroC nalazi se i već pomenuti mikroBootloader prikazana na slici 27.

Page 48: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

47

Slika 27. Pokretanje mikroBootloader-a

Na sledećoj slici je prikazan izgled mikroBootloader-a.

Slika 28. Izgled mikroBootloader-a

Page 49: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

48

Uspostavljanje veze se vrši na sledeći način: Najpre je potrebno izvršiti priključivanje sistema na napajanje i COM

port PC-a. Kada je program mikroBootloader pokrenut potrebno je podesiti

RS-232 komunikaciju biranjem opcije Setup Port na način prikazan na slici 29.

Slika 29. Podešavanje RS-232 komunikacije

Pošto je sve to obavljeno neophodno je resetovati mikrokontroler

pritiskom na taster predviñen za reset i u roku od dve sekunde inicirati konekciju pritiskom na opciju Connect. Ako je konekcija uspešno obavljena pojaviće se prozor kao na slici 30.

Slika 30. Uspešno obavljena konekcija

Page 50: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

49

U suprotnom će se pojaviti prozor prikazan na slici 31 što znači da neki od koraka nije ispoštovan. U tom slučaju treba ponoviti algoritam konektovanja počevši od koraka sa slike 28.

Slika 31. Neuspešna konekcija usled lošeg setovanja porta(Setup Port) ili usled isticanja vremenskog intervala od dve sekunde za iniciranje komunikacije nakon

resetovanja mikrokontrolera

Ako je konekcija uspešno izvršena (slika 30) potrebno je učitati već izgenerisani HEX fajl sa zadatom funkcijom, biranjem opcije Open HEX file kao na slikama 32 i 33.

Na samom kraju, programiranje mikrokontrolera se vrši opcijom Start bootloader. Kada se učitavanje HEX fajla završi, pojavljuje se prozor kao na slici 34 pa je potrebno još jednom resetovati mikrokontroler pritiskom reset tastera na sistemu nakon čega je on a samim tim i ceo sistem spreman za izvršavanje zadate funkcije.

Page 51: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

50

Slika 32. Otvaranje adekvatnog HEX fajla

Slika 33. Izgled prozora nakon učitanog HEX fajla nakon čega je potrebno

startovati bootloader opcijom Start bootloader

Page 52: UNIVERZITET U NIŠU ELEKTORNSKI FAKULTETes.elfak.ni.ac.rs/Papers/Gosic-Lakicevic-SestobitniBrojac.pdf · Tri tipa modela kola kana čnih automata dati su na naredne tri slike. Svaki

51

Slika 34. Izgled prozora nakon uspešno izvršenog programiranja

mikrokontrolera. Dalje je potrebno pritisnuti dugme Ok i resetovati mikrokontroler

Princip rada bootloadera Ovakav vid programiranja je specifičan za PIC mikrokotrolere. Način

na koji se programiranje zapravo odvija je sledeći: Kod koji je prvo učitan u mikrokontroler (preko programatora) je

smešten na samom početku ROM memorije predviñene za smeštanje programa rada mikrokontrolera. On ima funkciju da nakon svakog resetovanja kontrolera u toku prve 2 sekunde nadgleda USART terminal. Ukoliko je sistem priključen na COM port PC-a i u toku od te 2 sekunde usledi inicijalizacija konekcije kao na slici 33 bootloader program će skočiti na prvu liniju ispod sebe i na taj način omogućiti upisivanje konkretnog programa u prostor predviñen za te svrhe. A ako ne doñe do iniciranja konekcije u roku od 2 sekunde bootloader program takoñe skače na prvu liniju ispod sebe i ako već postoji učitan konkretan zadati program, mikrokontroler kreće sa njegovim izvršenjem. U suprotnom se ne dešava ništa sve dok se mikrokontroler ponovo ne resetuje.

Na taj način je programator potreban samo pri prvom programiranju mikrokontrolera pa je njegova ugradnja na sistem nepotrebna iako je sistem neophodno programirati više puta. Jedina mana je što je nemoguće zaštititi kod, jer bi se na taj način onemogućilo ponovno programiranje bez dodatnog programatora pa bi ovaj način programiranja bio apsurdan.