Sie sind auf Seite 1von 81

ELEKTRONSKI FAKULTET

SEMINARSKI RAD IZ MIKROPROCESORA


MENTOR: PROF. DR MILE STOJČEV

KOMUNIKACIJA MIKROKONTROLERA
PIC16F877-20 PREKO SPI MODULA

DUŠAN ĐORĐEVIĆ 10797


ŽARKO ĐORĐEVIĆ 10798

1
Mikroprocesorski sistemi –seminarski rad
SADRŽAJ

O SEMINARSKOM RADU 3
MIKROKONTROLERI I EMBEDDED SISTEMI 4
SPI KOMUNIKACIJA 10
PIC16F877 21
SOFTVER ZA PIC MIKROKONTROLERE 48
KOMUNIKACIJA MIKROKONTROLERA PREKO SPI MODULA:
PRAKTIČNA REALIZACIJA 55
LABORATORIJSKA VEŽBA 61
ZAKLJUČAK 65
KORIŠĆENA LITERATURA 66
PRILOG 67
O AUTORIMA SEMINARSKOG RADA 77

2
Mikroprocesorski sistemi –seminarski rad
O SEMINARSKOM RADU

Autori su realizovali ovaj projekat u nameri da studentima približe jedan od način kako
mogu da komuniciraju dva mikrokontrolera PIC16F877-20. Ovde je za komunikaciju
iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima.
Mikrokontroleri su programirani preko AllPIC programatora o kojem je priložen
kompletan članak na kraju rada, a za pisanje programa korišćen je softver mikroC, koji je
razvila i ponudila tržištu beogradska Mikroelektronika.
Električna šema i dizajn štampane pločice (PCB) su kreirani u Protel-u.
Realizovanje štampane pločice na vitroplastu je urađeno u niškoj firmi «Denitron» i ovom
prilikom se zahvaljujemo gospodinu Draganu Deniću na ekspeditivnosti i kvalitetu izrade.
Posebnu zahvalnost dugujemo profesoru Miletu Stojčevu što nam je pružio priliku da
realizujemo ovaj projekat.

3
Mikroprocesorski sistemi –seminarski rad
1 - MIKROKONTROLERI I EMBEDDED SISTEMI

1-1. MIKROKONTROLERI I MIKROPROCESORI

Mikrokontroler je tzv. «računar-u-čipu» koji se koristi za kontrolu integrisanih kola,


sklopova, uređaja itd. Tipičan mikrokontolrer sadrži svu potrebnu memoriju i I/O interfejse
(A/D konvertore, serijske i paralelne komunikacione module, tajmere itd.), za razliku od
mikroprocesora opšte namene koji zahteva dodatne čipove za obezbeđivanje neophodnih
funkcija. Na Slikama 1-1 i 1-2 respektivno su prikazane opšte blok šeme mikroprocesora
(CPU) i mikrokontrolera.

Slika 1-1. Blok-šema mikroprocesora

Pored gorenavedenih, ovde ćemo izložiti dodatne razlike između mikrokontrolera i


mikroprocesora:

 Mikroprocesori su najcešće CISC tipa, tako da za kopiranje podataka iz spoljašnje


memorije koriste veći broj opkôdova, dok mikrokontroleri jedan ili dva,
 Za manipulisanje sa podacima tipa bit, mikroprocesori koriste jedan ili dva tipa
instrukcija, dok je kod mikrokontrolera taj broj veći,
 Mikroprocesori su projektovani za brzi prenos podataka iz programa sa spoljno
adresiranih lokacija u čip, dok se kod mikrokontrolera brzi prenos bitova obavlja u
okviru čipa,
 Mikrokontroler može da funkcioniše kao računar bez dodataka spoljnih gradivnih
blokova (memorije i U/I uređaja), dok operativnost mikroprocesora bez spoljne
memorije i U/I podsistema nije moguća.
4
Mikroprocesorski sistemi –seminarski rad
Mikrokontroleri se danas koriste u embedded sistemima za upravljanje raznim
funkcijama. Naime, oni se veoma često koriste i u situacijama kada treba da se veoma brzo
reaguje na spoljne signale – posebno ako se takvi sistemi koriste za rad u realnom vremenu.
Mikrokontroleri su sastavni delovi mnogih vrsta elektronske opreme (pogledati
embedded sistemI). Oni čine većinu svih prodatih procesorskih čipova. Preko 50% su
"jednostavni" mikrokontroleri, a drugih 50% su specijaliozovani digitalni procesori signala
(DSP). Mikrokontroler je prisutan u skoro svakom električnom uređaju, veš mašini,
mikrotalasnoj pećnici, telefonu itd.

Slika 1-2. Opšta blok-šema mikrokontrolera

Sada ćemo po abecednom redu navesti listu najpoznatijih proizvođača mikrokontrolera:

 AMCC
 Atmel
 Cypress Microsystem
 Freescale Semiconductor
 Fujitsu
 Holtek
 Intel
 Microchip
 National Semiconductor
5
Mikroprocesorski sistemi –seminarski rad
 NEC
 Philips Semiconductor
 Renesas Tech. Corp.
 ST Microelectronics
 Texas Instruments
 Toshiba
 Western Design Center
 Ubicom
 Xilinx
 ZiLog
 BASIC programibilni MCU-ovi.

Za skoro svakog proizvođača „golog” mikrokontrolera, postoji destine malih kompanija


koji ih prepakuju u zgodnija pakovanja za korisnike. Njihovi proizvodi su često MCU sa
prethodno napunjenim BASIC prevodiocem, spakovanim u Dual In Line (DIP) kućište zajedno
sa regulatorom napajanja i drugim poboljšanjima. PIC-ovi su izgleda ovde vrlo popularni,
verovatno zbog dobre statičke zaštite. Moćniji primeri (npr. brže izvršavanje, više RAM-a i
prostora za kôd) se izgleda baziraju na Atmel AVR ili Hitachi čipovima.
BASIC Stamp - Veliko ime u BASIC mikrokontrolerima. Nekoliko različitih modula je
dostupno sa raznim brzinama obrade, RAM-om, veličinama EEPROM-a. najpopularniji je
originalni BASIC Stamp 2 modul. BASIC Stamp koristi Parallac kao platformu za uvodno
programiranje i robotske kitove.
SX-Key - Parallax-ov razvojni alat za SX liniju mikrokontrolera, koji podržava sve
raspoložive komercijalne SX čipove. Upotrebom besplatnog SX-Key softvera (Assembly
jezik), ili SX/B Compiler (BASIC-stil jezika) od Parallax-a, SX-Key programska alatke može
programirati SX čipove in-system i izvršiti in-circuit debagovanje na nivou izvornog kôda.
ZX serija MCU-a se bazira na Atmel Atmega32 procesorima i pokreću Virtuelnu Mašinu koja
ima ugrađen multitasking, matematiku 32-bitnog pokretnog zareza i preko 1k RAM-a za
korisnički program. Multitasking unapređuju strukturalniji prilaz kodiranja za interfejs uređaja
koji zahtevaju servis upita – npr. serijski uređaji, IR itd.
Programski jezik za ZX seriju je Zbasic, moderni dijalekt Basic-a po uzoru na Microsoft-
ov Visual Basic. Najveće poboljšanje u odnosu na tipičan MCU Basic dijalekt su para-
metrizovane podrutine/funkcije koje podržavaju lokalne varijable. Stroga provera tipa je
sledeće unapređenje koje pomaže bržem pisanju ispravnog programa.
Comfile pravi seriju mikrokontrolera markirani kao Cubloc, koristeći Atmel Atmega128
procesor. Oni su vrlo konkurentni sa cenom, budući da su namenjeni industrijskim
aplikacijama, i imaju neke lepe osobine kao što je Ladder Logic u dodatku BASIC-a, ogromnu
80k bajtnu programsku memoriju, i hardver impulsne modulacije.

1-2. EMBEDDED SISTEMI

Embedded sistem predstavlja računarski sistem specijalne namene, koji je potpuno


zatvoren od strane kontrola uređaja. Za razliku od ličnih računara opšte namene, embedded
sistem ispunjava specifične zahteve i izvršava prethodno definisane zadatke. Programibilni
hardverski čip je "sirov materijal" i on je programiran određenom aplikacijom. Ovo treba
6
Mikroprocesorski sistemi –seminarski rad
shvatiti samo kao poređenje sa starijim sistemima sa potpuno funkcionalnim hardverom, ili
opšte namenskim hardverom, koji imaju učitan softver eksterno.
Embedded sistemi su kombinacija hardvera i softvera koji omogućavaju laku serijsku
proizvodnju i raznovrsnost aplikacija. U proteklih nekoliko godina interesovanje za ovu vrstu
sistema je naglo poraslo, i danas predstavlja nezaobilaznu temu u računarskom svetu.

ISTORIJA

Prvi moderan prepoznatljiv embedded sistem bio je Apollo Guidance Computer, kojeg je
razvio Charles Stark Draper u MIT Instrumetation Laboratory. Svaki let do Meseca je imao
dva takva. Na njima je bio pokrenut sistem inrecionog navođenja oba komandna modula i
LEM-a.
Na početku projekta, Apollo-v kompjuter navođenja je smatran za najriskantniji deo
Apollo projekta. Upotreba, u to vreme, novih monolitnih integrisanih kola, da bi smanjili
veličinu i težinu, uvećao je rizik. Prvi masovno proizveden embedded sistem bio je kompjuter
za navođenje Minuteman projektila 1961. god. To je bio Autonetics D-17 kompjuter za
navođenje, sagrađen od logike sa klasičnim tranzistorima i hard diska za osnovnu memoriju.

Apollo Navigacioni Kompjuter

Autonetics D-17 kompjuter za navođenje

Kada je Minuteman II ušao u serijsku proizvodnju 1966. godine, D-17 je zamenjen sa


novim kompjuterom koji je koristio integrisana kola, i to je njegova prva upotreba. Bez ovog
programa, integrisana kola možda nikada ne bi dostigla primenljivu tačku cene.
Glavna karakteristika dizajna Minuteman kompjutera je to što je njegov algoritam
navođenja bilo moguće kasnije reprogramirati u programu, da bi projektil bio precizniji, a

7
Mikroprocesorski sistemi –seminarski rad
takođe i da se uradi kompjuterska provera projektila, što je smanjilo težinu kablova i
konektora.

PRIMERI EMBEDDED SISTEMA


 automatske mašine za brojanje novca
 avijaciona elektronika, kao što je inercioni navigacioni sistemi, kontrola avionskog
hardvera/softvera i drugih integrisanih sistema u avionima i projektilima
 mobilni telefoni i telefonski tasteri
 kompjuterska mrežna oprema, uključujući rutere, servere vremena i firewall-ovi
 kompjuterski štampači
 kopir mašine
 pogon diska (flopi i hard disk pogon)
 kontroleri motora i kontroleri antiblokade kočnica za automobile
 proizvodi za kućnu automatizaciju, poput termostata, klima, prskalica i sistemi
obezbeđenja
 ručni kalkulatori
 kućni aparati, uključujući mikrotalasne rerne, mašine za pranje veša, televizija, DVD
plejeri/snimači
 medicinska oprema
 merna oprema kao što su digitalni osciloskopi, logički analajzeri i spektralni analajzeri
 multifunkcijski ručni satovi
 multifunkcijskii štampači (MFP)
 lični digitalni asistent (personal digital assistant - PDA), to jest, mali ručni kompjuteri
sa PIM-ovima i drugim aplikacijama
 mobilni telefoni sa dodatnim sposobnostima, na primer, mobilni digitalni pomoćnik sa
telefonom i PDA i Java (MIDP)
 programibilni logički kontroleri (PLC-ovi) za industrijsku automatizaciju i nadgledanje
 stacionarna video igračka konzola i ručne igračke konzole
 prenosivi kompjuter.

KARAKTERISTIKE

Embedded kompjuterski sistemi obrazuju najširu moguću upotrebu kompjuterskih


sistema; on uključuje sve kompjutere koji su drugačiji od onih koji su izričito kompjuteri opšte
namene. Primeri embedded sistema idu od malih muzičkih plejera do kontrolnih sistema u
realnom vremenu poput onih u svemirskim brodovima. Oni su osobeni po obezbeđivanju
funkcije, ili funkcija, koje nisu same po sebi kompjuterske.
Većina komercijalnih embedded sistema su dizajnirani tako da izvrše odabrane funkcije
po najnižoj ceni. Većina, ali ne i svi embedded sistemi, imaju sisteme u realnom vremenu
(real-time) koji moraju da rade u tehničkim granicama. Ovi sistemi ponekad moraju biti vrlo
brzi za neke funkcije, ali većina drugih funkcija verovatno ne zahteva brzinu. Ovi sistemi
zadovoljavaju njihove tehničke granice sa kombinacijom hardvera specijalne namene i
softvera skrojenog prema zahtevu sistema.
Teško je označiti embedded sisteme prema njihovoj brzini, ili ceni, ali za sisteme visoke
proizvodnje, cena će često dominirati u odnosu na sistemski dizajn. Srećom, većina sistema
ima ogrančene real-time zahteve koji se mogu ispuniti sa kombinacijom prilagođenog
8
Mikroprocesorski sistemi –seminarski rad
hardvera i ograničene količine softvera visokih performansi. Uzmite na primer vrhunski
digitalni set za satelitsku televiziju. Čak iako takvi sistemi treba da obrade desetine megabajta
kontinualnih podataka u sekundi, većina teškog posla je urađena od strane prilagođenog
hardvera koji raščlanjuje, upućuje i dekodira višekanalni digitalni niz (stream) u jedan video
izlaz. Embedded CPU-u je prepušteno da odredi putanju podataka, upravlja prekidima
(interruts) granica frejmova, generiše i prikaže grafiku itd. da bi omogućio vrhunski izgled i
osećaj. Zato će češće mnogi delovi embedded sistema zahtevati niže performanse za razliku
od primarnog cilja sistema. Ovo omogućava arhitekturi embedded sistema da bude namerno
pojednostavljen zbog niže cene u odnosu na opštenamenski kompjuter koji radi isti zadatak
upotrebom CPU-a koji je "dovoljno dobar" za one sekundarne funkcije.
Za embedded sisteme koji nisu visokoserijski, lični računari često mogu da se uzmu u
razmatranje da li ograničavanjem softvera ili zamenom operativnog sistema sa real-time
operatinim sistemom. U tom slučaju hardver specijalne namene može biti zamenjen sa
jednim ili više CPU-a visoke performance. Ipak, neki embedded sistemi mogu zahtevati i
visokoperformansni CPU, specijalizovan hardver, i ogromnu memoriju da bi izvršio traženi
zadatak.
U domenu visokoserijskih embedded sistema, npr. muzičkih plejera, smanjenje cene
postaje osnovna briga. Ovi sistemi često imaju samo nekoliko čipova, visoko integrisan CPU,
prilagođen čip koji kontroliše sve druge funkcije i jedan memorijski čip. U ovakvom dizajnu
svaka komponenta je odabrana i projektovana da bi smanjila cenu koštanja.
Napisan softver za većinu embedded sistema, pogotovu za one bez diska se ponekad
naziva firmware, ime za softver koji je ugrađen u hardverski uređaj, napr. u jedan ili više
ROM/Flash memorijskih IC čipova.
Programi u embedded sistemima često rade unutar real-time granica sa ograničenim
resursima: često nema disk, operativni sistem, tastaturu ili ekran. Softver možda nema ništa
daljinsko poput fajl sistema, ili ako je prisutan, flash disk možda zamenjuje rotirajući medij.
Ako je korisnički interfejs prisutan, onda je to mala tastatura i displej sa tečnim kristalom
(LCD).
Embedded sistemi se nalaze u mašinama od kojeih se očekuje dugogodišnji rad bez
grešaka. Stoga je obično softver i firmware razvijen i testiran pažljivije nego softver za lične
kompjutere. Mnogi embedded sistemi izbegavaju mehanički pokretne sisteme kao što su hard
diskovi, prekidači ili tasteri jer što su nepouzdani za razliku od stalnih delova poput Flash
memorije.
Pored toga, embedded sistemi mogu biti izvan domašaja ljudi (duboko u petrolejskim
bušotinama, izbačeni u svemir itd.) pa moraju biti u mogućnosti da se samostalno resetuju
čak i pri katastrofalnim greškama u podacima. Ovo je uglavnom postignuto sa standardnim
elektronskim delovima nazvanim watchdog tajmer koji resetuje kompjuter ukoliko softver
povremeno ne resetuje tajmer.

9
Mikroprocesorski sistemi –seminarski rad
2 – SPI KOMUNIKACIJA

SPI (Serial Peripheral Interface) standard za sinhronu serijsku komunikaciju razvijen je


od strane Motorolinih inženjera, za potrebu brzog i pouzdanog serijskog prenosa podataka na
manjim rastojanjima (do 3m). Prvobitno, ovaj standard je bio predviđen za komunikaciju sa
perifernim uređajima, ali je vremenom razvijena i mogućnost komunikacije između više mikro-
kontrolera ili mikroprocesora .
Postoji široka paleta perifernih uređaja baziranih na SPI – od običnih TTL pomeračkih
(shift) registara, do SPI memorija, displeja, A/D konvertora itd.

Tip komunikacije Maksimalna brzina Komentar


SCI 125 Kb/s MCU takt = 2MHz
SPI 1 Mb/s MCU takt = 2MHz, Master
SPI 2 MB/s MCU takt = 2MHz, Slave

Tabela 2-1. Poređenje brzina komunikacija preko SCI i SPI

Tabela 2-1 pokazuje kako je SPI komunikacija oko 10 puta brža od SCI komunikacije
(Standard Communication Interface) kada mikrokontroler radi kao master, i oko 20 puta brža
kada mikrokontroler radi kao slave. Takođe se vidi da kada mikrokontroler radi kao slave,
moguća je brzina prenosa podataka jednaka internom taktu mikrokontrolera.

 Napomena: Motorola je svoj serijski asinhroni/sinhroni interfejs nazvala “Serijski ko-


munikacioni interfejs” (Serial Communications Interface, ili SCI). Odgovarajući Intel-ov
serijski interfejs nosi naziv “Programibilni komunikacioni interfejs” (Programmable
Communication Interface, ili PCI) itd. U praksi, pomenuti interfejs koriste U(S)ART či-
povi, odnosno U(S)ART integrisana kola, kao na primer: Intel 8251, INS 8250-B INS
16450, 16550 itd.

2-1. SPI PROTOKOL

Pri SPI prenosu, podaci se šalju preko pomeračkog registra sa serijskim izlazom, a pri-
maju preko pomeračkog registra sa serijskim ulazom. U bilo kom trenutku može da postoji je-
dan master, kako bi se osigurala ispravna komunikacija.
Kao što je prikazano na Slici 2-1 potrebne su 4 linije, odnosno za SPI komunikaciju
koriste se 4 pina:

 MOSI (Master Output Slave Input). Kada mikrokontroler radi kao master, onda je ovo li-
nija za slanje podataka, a kada radi kao slave – ovo je linija za primanje podataka.

10
Mikroprocesorski sistemi –seminarski rad
 MISO (Master Input Slave Output). Kada mikrokontroler radi kao master, onda je ovo
linija za primanje podataka, a kada radi kao slave – ovo je linija za slanje podataka. U slu-
čaju da je komunikacija isključivo jednosmerna, svakako da se može ostvariti sa tri linije
(bez MOSI ili MISO, zavisno od slučaja).
 SCK (SPI Clock). Ovo je linija za takt pod kojim se izvodi komunikacija. Takt daje master,
a pomerački registar slave-a prima podatke, odnosno očitava ulaz na promenu ovog takta.
 SS (Slave Select). Ovaj pin mikrokontrolera se veže na liniju za selektovanje slave-a.
Kada mikrokontroler radi kao slave, i kada je ovaj (u slučaju ulazni) pin na visokom nivou,
onda se takt sa SCK linije i podaci sa MOSI linije se ignorišu. Tek kada se dovede SS na
nizak nivo, SPI sistem slave-a prati promene na pinovima koji su vezani za ovaj tip ko-
munikacije i može da primi i pošalje informaciju. Kada mikrokontroler radi kao master, SS
pin ima dve opcije. Može da se konfiguriše kao ulazni pin i da setuje određeni fleg (flag), tj.
da inicira prekid u slučaju da mu bude doveden nizak nivo. To je dobra opcija za među-
procesorsku komunikaciju. Na ovaj način može uspešno da se eliminiše mogućnost da
više mikrokontrolera u datom trenutku pokušaju da budu masteri. Ovo se rešava soft-
verski. SS pin takođe može da se konfiguriše kao izlazni, i da selektuje neki slave, ili da
obavlja bilo kakvu funkciju nezavisnu od SPI podsistema mikrokontrolera.

Slika 2-1. Povezivanje jednog mastera i tri slave-a u SPI komunikaciju

U slučaju povezivanja više mikrokontrolera preko SPI kanala, svi MISO pinovi se vezuju
zajedno na jednu liniju, MOSI pinovi se vezuju na drugu liniju, a SCK pinovi se vezuju na tre-
ću liniju, kao sto je prikazano na Slici 2-1.
Slika 2-1 je primer vezivanja kada samo jedan mikrokontroler može da bude master. Ako
uloga mastera treba da bude promenljiva, onda svaki mikrokontroler treba da ima pojedinač-
nu vezu sa SS pinovima ostalih mikrokontrolera.
Zamislimo strukturu sa dva pomeračka registra povezana kao na Slici 2-2. Neka sa
strane sa koje su povezani medusobno, registri imaju serijske ulaze i izlaze. Sa stanovišta
programera, kakvi su ulazi i kakva je logika – nije bitno. Pinovi za podatke (DATA1) su
povezani zajedno, i to predstavlja jednosmernu liniju sa koje pomerački registar 1 predaje
11
Mikroprocesorski sistemi –seminarski rad
podatke pomeračkom registru 2. Pinovi za podatke (DATA2) su povezani zajedno, i to je jed-
nosmerna linija sa koje pomerački registar 2 predaje podatke pomeračkom registru 1. Pinovi
za takt (CLOCK) su zajednički (to je jednosmerna linija sa koje pomerački registar 1 šalje
takt, bez razlike u kojem smeru se prenose podaci). Pinovi za omogućavanje komunikacije
(ENABLE) su vezani zajedno – to je jednosmerna linija preko koje pomerački registar 1 omo-
gućava (dozvoljava) rad pomeračkom registru 2.
Kada prvi pomerački registar šalje poruku drugom, redosled operacija je sledeći:

1. Preko linije ENABLE, prvi registar omogućava rad drugom, odnosno omogućava
da drugi na svakom prelazu na liniji CLOCK iz visokog na nisko nivo (ili obrnuto,
zavisno od logike), pročita stanje na liniji DATA1.
2. Preko linije CLOCK prvi registar šalje takt pod kojim drugi čita promene na liniji za
podatke DATA1.
3. Kada prvi registar završi sa prenosom, postavlja linije CLOCK i ENABLE u stanje
mirovanja (idle state).

Slika 2-2. Hardverska šema SPI komunikacije

Kada prvi registar želi da dobije informaciju od drugog, preduslov koji treba da se ispuni
je da drugi registar već ima spremnu informaciju koju treba da pošalje. Poslednja pretpostav-
ka u analogiji međumikrokontrolerske SPI komunikacije podrazumeva da je u registar za sla-
nje slave-a programski već postavljena informaciju koja se traži. Redosled operacija je:

1. Preko linije ENABLE, prvi pomerački registar omogućava rad drugom ili, preciz-
nije, omogućava da drugi pri svakom prelazu iz visokog na nisko nivo na liniji
CLOCK (ili obrnuto, zavisno od logike), promeni stanje na liniji DATA2.
2. Preko linije CLOCK prvi šalje takt sa kojim će čitati promene stanja koje šalje drugi
na liniju za podatke DATA2. Obrnuto rečeno, drugi pomerački registar preko linije
CLOCK dobija takt pod kojim će slati signale.
3. Kada drugi završi sa prenosom, onda prvi postavlja linije CLOCK i ENABLE u sta-
nje mirovanja. Prvi «zna» da je prenos završen kada se na liniji CLOCK završi n-ti
ciklus (n je broj bitova koji čini informaciju, na primer: 8, 16 itd.)

Ovo je primer koji opisuje SPI logiku, a pri tome ne ulazi u pojedinosti interne periferije
samog mikrokontrolera. Relativno je lako da se pošalje poruka preko SPI kanala od mastera
ka slave-u. Ono što želimo da naglasimo jeste način slanja podataka slave-master.

12
Mikroprocesorski sistemi –seminarski rad
U kom trenutku treba slave da pošalje poruku, odlučuje master. On tada šalje takt na
lini-lju CLOCK. Da bi poslao takt, zbog automatizovane SPI kontrolne i upravljačke logike,
master, u stvari, mora da pošalje poruku na magistralu i normalno da selektuje slave-a.
Sve što je navedeno opisuje suštinu SPI komunikacije. Svakako da ima mnogo detalja
koji variraju u zavisnosti od mikrokontrolera i perifernog uređaja, ali to se mnogo lakše usvaja
kada se poznaju osnovni principi.
2-2. POLARITET I FAZA TAKTA

Upravljačka SPI logika mastera poseduje dva parametra (CPOL i CPHA) preko kojih se
definišu četiri režima (moda) rada (Mode 0, Mode 1, Mode 2 i Mode 3). Na taj način, omogu-
ćeno je da master postavi polaritet i fazu takta, kako bi se omogućila velika fleksibilnost za ko-
munikaciju između mastera i slave-a.
Na Slici 2-3 prikazan je vremenski dijagram takta (SCK) koji generiše upravljačka SPI
logika, uključujući polaritet i fazu takta. koji Neposredno ispod dijagrama data su objašnjenja
za sve moguće varijante, odnosno za sva četiri moda.

Slika 2-3. Vremenski dijagram polariteta i faze takta

Pri CPOL=0 (bazična vrednost takta je 0) važi sledeća logika:

 CPHA=0 (podatak se čita na rastuću, a menja na opadajuću ivicu takta),


 CPHA=1 (podatak se čita na opadajuću, a menja na rastuću ivicu takta).

Kada je CPOL=1 (bazična vrednost takta je 1) važi logika:

 CPHA=0 (podatak se čita na opadajuću, a menja na rastuću ivicu takta),


 CPHA=1 (podatak se čita na rastuću, a menja na opadajuću ivicu takta).
13
Mikroprocesorski sistemi –seminarski rad
Na sledećim vremenskim dijagramima (dati su ispod ovog teksta), detaljno su prikazane
sve moguće varijante (odnosno, sva četiri moda) vezana za polaritet i fazu takta master-a i
slave-a .

14
Mikroprocesorski sistemi –seminarski rad
15
Mikroprocesorski sistemi –seminarski rad
16
Mikroprocesorski sistemi –seminarski rad
2-3. SPI EEPROM MEMORIJE

U današnje vreme dosta su aktuelni serijski EEPROM-i. U slučaju paralelne spoljašne


memorije gube se dragoceni pinovi, tj. celi portovi, što u mnogim aplikacijama predstavlja
veliki problem. Serije spoljašne memorije koriste serijski kanal mikrokontrolera koji može da
opslužuje više uređaja. Dakle, serijske memorije mogu mnogo lakše da se priključe u sistem,
a da pri tom ne zauzimaju veliki broj pinova.
Postoje varijacije na temu serijskih memorija, u zavisnosti od tipa memorije i protokola
za komunikaciju. Svakako, tu su neprikosnoveni EEPROM-i zbog lakoće upisivanja i brisanja.
Pošto je SPI veoma popularan tip serijske komunikacije, koriste ga mnogi proizvođači mikro-
kontrolera i ogroman broj proizvođača periferija.
U narednom tekstu biće ukratko objašneni princip funkcionisanja SPI EEPROM-a, kada
želimo da pročitamo njegov sadržaj, i funkcije nekih pinova koji su bitni.
Na Slici 2-4 je prikazana opšta šema 25xx640, Microchip-ovog SPI EEPROM-a po-
vezanim sa mikrokontrolerom 68HC11F1. Oznake i funkcije pinova ovog SPI EEPROM-a su
sledeći:

 CS (Chip Select) Ovaj pin mora da bude na niskom nivou da bi memorija bila se-
lektovana.
 SI (Serial Input) Serijski ulaz za instrukcije adrese i podatke. Podaci se čitaju
(latched) na usponskoj ivici takta.
 SO (Serial Output) Serijski izlaz. Podaci na ovom pinu se menjaju na opadajuću
ivicu takta.
 SCK (Serial Clock) Ulaz za takt.

17
Mikroprocesorski sistemi –seminarski rad
Slika 2-4. SPI komunikacija mikrokontrolera i EEPROM-a

ČITANJE

Čip se selektuje dovođenjem niskog nivoa na pin CS. Zatim mora da se pošalje in-
strukcija za čitanje na pin SI (u našem slučaju je instrukcija $03). Posle instrukcije za čitanje
kontrolna logika memorije očekuje 16-bitnu adresu sa koje treba da pročita sadržaj. Posle ko-
rektno primljene instrukcije za čitanje i adrese, traženi sadržaj se postavlja na izlazni pome-
rački registar povezan sa pinom SO. Ovaj sadržaj se šalje uz uslov da takt na pinu SCK
produži. Podatak sa naredne adrese se čita sa produžavanjem takta na pinu SCK. Tada se
unutrašnji adresni pointer inkrementira automatski i novi podatak se izvodi preko SO. Ako se
dostigne najveća adresa, adresni brojač dobija vrednost $0000 i odatle se nastavlja čitanje.

ARHITEKTURA SPI MEMORIJE 25xx640

Na Slici 2-5 je prikazana arhitektura SPI memorije 25xx640, čiji je kapacitet 64Kb (or-
ganizacija: 8192 x 8 bita). Pošto postoje tri tipa ovog EEPROM-a, u Tabeli 2-2 su date ka-
rakteristike svake od njih, dok su na Slici 2-6 data tri tipa kućišta u koje se pakuju pomenute
memorije.

18
Mikroprocesorski sistemi –seminarski rad
Slika 2-5. Arhitektura SPI EEPROM-a 25xx640

Tabela 2-2. Karakteristike SPI EEPROM-a 25xx640


___
Pored četiri standardna pina bitna za SPI interfejs (CS, SCK, SI, SO), napajanja Vcc i
mase (Vss), 25xx640 poseduje i sledeća dva pina:
______
 HOLD (pin preko koga se ova memorija, po potrebi, može privremeno «isključiti» iz
SPI interfejsa)
 WP (Write Protect pin, preko koga se memorija štiti od neželjenog upisa).

19
Mikroprocesorski sistemi –seminarski rad
Slika 2-6. Raspored pinova za tri tipa kućišta u koja se smešta 25xx640

 Napomena: Ovde je ukratko opisan SPI EEPROM 25xx640 proizvođača Microchip.


Naravno, u praksi se veoma često koriste i memorije drugih proizvođača, kao na pri-
mer: M25P16 (ST Microelectronics), AT45DB041, AT45DB321 (Atmel) itd. Pošto su
veoma slične sa 25xx640, ovde se nećemo baviti njihovim opisom.

A/D KONVERTOR LTC1286

Sada ćemo ukratko opisati analogno-digitalni konvertor LTC1286 firme LTC1286 firme
Linear Techology koji komunicira sa mikrokontrolerima preko sinhrone serijske komunikacije
SPI. Ovaj ADC radi na principu sukcesivnih aproksimacija. Rezolucija konvertora je 12 bita,
što znači da je odnos signal/šum (tačnije: potiskivanje šuma) usled kvantizacije 72dB. Potroš-
nja konvertora iznosi tipično 250µA u toku konverzije, a potom se automatski ubacuje u režim
smanjene potrošnje – kada nema konverzije, i tada potrošnja iznosi svega 1nA.

Slika 2-6. Blok dijagram analogno-digitalnog konvertora LTC1286


20
Mikroprocesorski sistemi –seminarski rad
Interfejs između analogno-digitalnog konvertora i mikrokontrolera ili neke druge periferije
je sinhron i serijski. Kompletan prenos podataka je sinhronizovan preko linije takta (CLK). Pri-
jem bita od strane mikrokontrolera se vrši na opadajućoj ivici takta, dok je prenos svakog bita
koji se šalje od konvertora ka mikrokontroleru vrši na rastućoj ivici takta.
Korišćeni analogno-digitalni konvertor ne zahteva konfiguracionu reč od strane mikro-
kontrolera i nema ulaz za prijem podataka Din koji služi i za kaskadno vezivanje više konver-
tora. Pošto ovaj konvertor ima dva ulaza D+ i D- on je inicijalno konfigurisan kao diferencijalni
ulaz ili jedan običan ulaz ako je drugi vezan na masu. Opadajuća ivica CS signala koji služi za
prozivanje konvertora, inicira prenos podatak između konvertora i mikrokontrolera, kao što je
prikazano na Slici 2-7.

Slika 2-7. Sekvenca rada analogno-digitalnog konvertora LTC1286

Posle završenog signala takta iako je i dalje prisutan signal CS, analogno-digitalni kon-
vertor će da daje logičke nule na svom izlazu. Posle opadajuće ivice signala CS drugi takt im-
puls omogućava prenos podataka od konvertora do mikrokontrolera preko linije Dout. Kada
se linija CS podigne na visok nivo, konvertor se resetuje i spreman je za novu konverziju.

21
Mikroprocesorski sistemi –seminarski rad
3 - PIC16F877

Mikrokontroler PIC16F877 firme Microchip predstavlja integraciju procesora (CPU),


memorije i periferija, pa zato ne zahteva složeni eksterni hardver da bi se ostvario
mikroračunarski sistem. Ovaj mikrokontroler je izrađen u CMOS tehnologiji sa ugrađenim
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.
Većina mikrokontrolera koji se danas primenjuje je bazirano na Harvard arhitekturi, koja
jasno definiše četiri osnovne komponente potrebne za embedded sistem – mikroprocesorsko
(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.
U ovom poglavlju ćemo detaljno opisati arhitekturu i organizaciju memorije
mikrokontrolera PIC16F877. Zatim ćemo posebnu pažnju posvetiti A/D konvertoru (struktura
ADC-a i algoritam konverzije) i SPI modulu koji su integrisani unutar mikrokontrolera, s
obzirom da su usko povezani sa temom ovog seminarskog rada.

3-1. OSNOVNE KARAKTERISTIKE MIKROKONTROLERA

 RISC mikroprocesor veoma visokih performansi


 35 instrukcija obima jedne reči
 Radna frekvencija do 20 MHz
 Trajanje taktnog intervala 0.2 µs, pri frekvenciji 20 MHz
 13-bitni opkôd
 Harverski magacin (stack) sa osam nivoa
 Tri načina adresiranja (direktno,indirektno i relativno)
 Programska flash memorija kapaciteta 8k X 13-bitnih reči
 Memorija za podatke tipa RAM kapaciteta 368 X 8 bita
 Memorija za podatke EEPROM tipa kapaciteta 256 X 8 bita
 Prekidi (do 14 izvora prekida)
 U/I portovi: A, B, C, D, E
 Tri tajmera:
o Timer0 (TMR0): 8-bitni tajmer/brojač_događaja
o Timer1 (TMR1): 16-bitni tajmer/brojač_događaja
o 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)

22
Mikroprocesorski sistemi –seminarski rad
 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 je u opsegu 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.

Slika 3-1. Fotografija mikrokontrolera PIC16F877 u kućištu DIP40

23
Mikroprocesorski sistemi –seminarski rad
Slika 3-2. Raspored pinova mikrokontrolera u kućištu DIP40

24
Mikroprocesorski sistemi –seminarski rad
Slika 3-3. Arhitektura mikrokontrolera PIC16F877

3-2. ARHITEKTURA MIKROKONTROLERA

Na Slici 3-3. je predstavljena (RISC) arhitektura mikrokotrolera PIC16F877, koja


poseduje odvojene magistrale za podatke i programski kôd. Obim podataka je 8-bitni,
dok je programski kôd 13-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 4 MHz, ciklus instrukcije traje 1 µs. Kada je
oscilator sa kvarcom od 20MHz, ciklus instrukcije traje 200ns. Na slici su, dakle, prikazani
osnovni blokovi mikrokontrolera PIC16F877:

 Flash programska memorija – 8 kiloreči obima 14 bita


 RAM (File Registers) – 368 bajtova
 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 primopredajnik),
tajmere, portove itd.

3-3. OSCILATOR

Kod mikrokontrolera PIC16F877 postoje četiri konfiguracije oscilatora:

 RC Resistor/Capacitor
 XT Crystal / Resonator
 LP Low Power Crystal
 HS High Speed Crystal / Resonator.

Najjednostavnija varijanta je izbor RC oscilatora, a to je ilustrovano na Slika 3-3. Ovakav


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

25
Mikroprocesorski sistemi –seminarski rad
Slika 3-3. Povezivanje eksternog RC oscilatora

Frekvencija oscilovanja zavisi ne samo od vrednosti R ext i Cext, već i od napona


napajanja kao i radne temperature. Vrednost otpornika R ext 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 3-4), treba da budu identične.

Slika 3-4. Povezivanje eksternog kvarca (LP, XT, HS)

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


Slici 3-5.

26
Mikroprocesorski sistemi –seminarski rad
Slika 3-5. Dovođenje spoljašnjeg takta

U Tabeli 3-1. dat je izbor vrednosti kondenzatora za različite vrednosti frekvencije


kristalnog kvarca, dok je u Tabeli 3-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.

Tabela 3-1. Izbor vrednosti kondenzatora za kvarcni kristal

27
Mikroprocesorski sistemi –seminarski rad
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 opkôda naredbe pozvane u Q1 u instrukcijski registar.

3-4. RESETOVANJE MIKROKONTROLERA


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 (Slika 3-6).
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).

Slika 3-6. Povezivanje MCLR pina na napajanje

Power-on reset (POR) impuls se generiše u samom kolu kada se detektuje porast
napona napaja-nja (oko 1.2-1.7 V). Da bi se POR iskoristio, dovoljno je da MCLR pin
priključimo na Vdd direktno ili preko otpornika (Slika 3-6). Ukoliko je porast napona napajanja
spor, neophodno je na MCLR postaviti spoljnje kolo za reset. Prikaz kola za POR reset je
dat na Slici 3-7.

28
Mikroprocesorski sistemi –seminarski rad
Slika 3-7. Spoljašnje kolo za POR

Interno POR kolo neće generisati Reset signal kad napon napajanja padne ispod
minimuma. Za situacije kada je moguća pojava BROWN-OUT-a (privremeni pad napona
ispod minimalne vrednosti), neophodno je da se priključi spoljašnje Brown-out reset kolo,
koje je prikazano na Slici 3-8.

Slika 3-8. Kolo za BROWN-OUT RESET (prva varijanta)

29
Mikroprocesorski sistemi –seminarski rad
Slika 3-9. Kolo za BROWN-OUT RESET (druga varijanta)

Power-up Timer (PWRT) generiše impuls fiksne širine (nominalno 72 ms) od pojave
impulsa POR-a. Za to vreme će mikrokontroler biti u Reset stanju. Za ovaj vremenski period
obezbeđuje se da napon napajanja dostigne nominalnu vrednost. Tajmeru PWRT dozvoljava
se rad setovanjem PWRTE bita koji pripada konfiguracionoj reči u fazi programiranja čipa.
PWRT se taktuje internim RC oscilatorom.
Oscilator Start-up Timer (OST) obezbeđuje kasnjenje od 1024 taktnih intervala nakon
isteka kvazistabilne periode PWRT-a (pogledaj Tabelu 3-3). Ovo obezbeđuje da kristalni
oscilator ili rezonator startuju stabilnom frekvencijom. OST se aktivira samo kod XT, LP i HS
režima rada i to pri: POR i “buđenju” iz SLEEP režima rada.
Mikrokontroler PIC16F877 ima implementiran dvobitni statusni registar nazvan
PCON (Power Control Register). Prvi bit nazvan POR setuje se kada se aktivira Power-on-
Reset, a resetuje se kada se aktivira neki drugi Reset. Drugi bit (BOR) kada je setovan
ukazuje da je aktivno Brown-out stanje (nedozvoljena naponska stanja u napajanju mikro-
kontrolera), zbog kojeg takođe može da se aktivira Reset.

Power-up
Konfiguracija PWRT omogućen PWRT “Buđenje” iz
oscilatora onemogućen SLEEP režima
rada
XT, HS, LP 72 ms + 1024 1024 Tosc 1024 Tosc
Tosc
RC 72 ms - -

Tabela 3-3. Kašnjenja OST-a

Stanja na kojima se postavljaju interni registri CPU-a nakon Reseta zavisi od vrste
Reseta i režima rada u kojima se nalazi mikroprocesor (Sleep i normalni).
Stanje nekih registara ostaje nedifinisano, neki zadržavaju svoje stanje, a ostali se
postavljaju u unapred definisana stanja (vidi Tabele 4-4 i 4-5).

30
Mikroprocesorski sistemi –seminarski rad
Program Counter STATUS register
Power-on reset (POR) 000h 0001 1XXX
MCLR reset pri
normalnom radu 000h 000U UUUU
MCLR reset prilikom
SLEEP režima rada 000h 0001 0UUU
WDT Reset pri
normalnom radu 000h 0000 1UUU
WDT Wake-up
(buđenje iz SLEEP PC+1 UUU0 0UUU
režima rada)
Interrupt 004h UUU1 0UUU

Tabela 3-4. Postavljanje registara nakon reseta

MCLR reset pri: Buđenje iz


- normalnom režimu SLEEP režima
Registar Power-on - SLEEP mod WDT - interrupt
reset reset pri normalnom - WDT time out
režimu
00h INDF ---- ---- ---- ---- ---- ----
01h TMR0 XXXX XXXX UUUU UUUU UUUU UUUU
02h PCL 0000 0000 0000 0000 PC+1
03h STATUS 0001 1XXX 000Q QUUU UUUQ QUUU
04h FSR XXXX XXXX UUUU UUUU UUUU UUUU
05h PORTA ---X XXXX ---U UUUU ---U UUUU
06h PORTB XXXX XXXX UUUU UUUU UUUU UUUU
08h EEDATA XXXX XXXX UUUU UUUU UUUU UUUU
09h EEADR XXXX XXXX UUUU UUUU UUUU UUUU
0Ah PCLATH ---0 0000 ---0 0000 ---U UUUU
0Bh INTCON 0000 000X 0000 000U UUUU UUUU
80h INDF ---- ---- ---- ---- ---- ----
81h OPTION 1111 1111 1111 1111 UUUU UUUU
82h PCL 0000 0000 0000 0000 PC+1
83h STATUS 0001 1XXX 000Q QUUU UUUU UUUU
84h FSR XXXX XXXX UUUU UUUU UUUU UUUU
85h TRISA ---1 1111 ---1 1111 ---U UUUU
86h TRISB 1111 1111 1111 1111 UUUU UUUU
88h EECON1 ---0 X000 ---0 Q000 ---0 UUUU
89h EECON2 ---- ---- ---- ---- ---- ----
8Ah PCLATH ---0 0000 ---0 0000 ---U UUUU

31
Mikroprocesorski sistemi –seminarski rad
8Bh INTCON 0000 000X 0000 000U UUUU UUUU

Tabela 3-5. Postavljanje registara nakon reseta

Legenda:

X (nepoznato stanje)
U (nepromenjeno stanje)
Q (stanje zavisi od uslova)-
– (ne postoji fizički, čita se kao logička ‘0’).

3-5. WATCHDOG TIMER


Watchdog timer (WDT) se taktuje nezavisanim RC oscilatorom koji radi čak i kad je
zaustavljen rad glavnog oscilatora, u SLEEP režimu rada. Prekoračenje intervala brojanja
WDT-a, prilikom normalnog rada, izaziva RESET mikrokontrolera. Ako je mikrokontroler bio u
SLEEP režimu rada, prekoračenje tajmera će probuditi mikrokontroler i program će
nastaviti sa normalnim radom. Isključivanje WDT-a se vrši resetovanjem WDTE bita u
konfiguracionoj reči.
Nominalno vreme WDT-a je 18 ms bez uptrebe preskalera. Ovo vreme može da varira
od kola do kola, zbog temperature i slično. Ukoliko je potrebno duže vreme moze se WDT-u
pridružiti preskaler sa faktorom deljenja do 1:128, tako da se vreme može produžiti do 2.3s.
Instrukcije CLRWDT i SLEEP resetuju WDT.

3-6. PREKIDI (INTERRUPTS)

Mikrokontroler PIC16F877 podržava tehniku rada sa prekidima (interrupts) i može da


opsluži ukupno 14 izvora prekida, što internih, što eksternih. Napomenućemo da svaki prekid
ne poseduje sopstveni vektor-broj.
Onog trenutka kada se prihvati zahtev za prekid, sledi izvršenje prekidnog programa
počev od adrese 0x0004. Tada se programskim putem testira stanje markera, koji se
postavljaju kada se aktivira odgovarajući prekid (interrupt flags polling). Onog trenutka
kada se ustanovi koji je od uređaja zahtevao prekid, prelazi se na izvršenje odgova-
rajuće rutine za obradu tog prekida. Povratna adresa prekinutog programana čuva se
automatski u hardverskom magacinu. Povratak iz prekidnog programa se vrši instrukcijom
RETFIE. Upravljački registar INTCON se koristi za maskiranje prekida.
Značenje pojedinih markera ćemo sada navesti:

 T0IF (INTCON:2) setuje se na prekoračenje TMR0


 INTF (INTCON:1) setuje se u slučaju da nastupi spoljni prekid na pinu RBO/INT
 RBIF (INTCON:0) setuje se kada se dogodi promena stanja na nekom od pinova
RB3-RB7
 PSPIF (PIR1:7) PSP marker bit koji se koristi u operaciji čitanja i upisa na PORTD,
kada je on konfigurisan kao PSP

32
Mikroprocesorski sistemi –seminarski rad
 ADIF (PIR1:6) marker koji se koristi za vreme analogno-digitalne konverzije
 RCIF (PIR1:5) marker koji označava da je prijemni bafer koji koristi USART blok, pun
 TXIF (PIR1:4) marker koji pokazuje da je bafer za slanje podataka koji koristi
USART prazan
 SSPIF (PIR1:3) marker koji se koristi za rad sinhronog serijskog porta
 CCP1IF (PIR1:2) marker koji koristi CCP1 blok
 TMR2IF (PIR1:1) marker koji setuje TMR2 kada dođe do prekoračenja
 TMR1IF (PIR1:0) marker koji setuje TMR2 kada dođe do prekoračenja
 EEIF (PIR2:4) marker koji se setuje kada se završi upis u interni EEPROM
 BCLIF (PIR2:3) marker koji koristi SSP blok kada je konfigurisan da radi u I2C master
režimu
 CCP2IF (PIR2:0) marker koji koristi CCP2 blok.

Pored bita za dozvolu rada svih prekida General Interrupt Enable (GIE) i bita za dozvolu
rada prekida generisanih od strane periferija (PEIE), ovom registru pripadaju i markeri
prekida (interrupt flags) i bitovi koji dozvoljavaju prekid koji izaziva Tajmer0 (TMR0), spoljašnji
prekid na pinu RB0/INT i prekida porta B na promenu stanja. Osim ova tri osnovna prekida,
postoji još 11 periferijskih prekida. Bitovi za njihovu dozvolu nalaze se u registrima PIE1 i
PIE2, a odgovarajući flegovi – u registrima PIR1 i PIR2. Ovi se flegovi setuju čim se ispuni
uslov prekida bez obzira na stanje njihovog bita dozvole, a po izvršenju servisne rutine
potrebno ih je soſtverski resetovati.

3-7. TAJMERI
U arhitekturi mikrokontrolera PIC16F877 su ugrađena tri tajmera (TMR0, TMR1 i TMR2)
i njihov zadatak je da mere vreme i broje eksterne događaje. Svaki od pomenutih tajmera
poseduje određene specifičnosti.
TMR0 (Tajmer0) poseduje čitava familija PICmicro kontrolera. To je, zapravo, običan 8-
bitni brojač koji generiše prekid pri prelasku sa stanja 0xFF na stanje 0x00 (overflow). Izvor
takta za TMR0 može da bude bilo interni sistemski sat (frekvencije Fosc/4) ili bilo kakav
spoljni generator takta spojen na pin RA4/T0CKI. Naravno, može da se podesi da se
TMR0 inkrementira na rastuću ili opadajuću ivicu spoljašnjeg signala. U kombinaciji sa
modulom Tajmera0 može da se koristi za programabilni preskaler (delilac frekvencije) sa
odnosima deljenja od 1:2 do 1:256. Ako deljenje nije potrebno, preskaler se dodeljuje
watchdog tajmeru. Kada je preskaler u upotrebi, maksimalna frekvencija eksternog
izvora iznosi 50MHz. Na Slici 4-10. prikazan je blok-dijagram TMR0/WDT preskalera.

33
Mikroprocesorski sistemi –seminarski rad
Slika 3-10. Blok-dijagram TMR0/WDT preskalera

Slika 3-11. Blok-dijagram tajmera TMR1


TMR1 je 16-bitni tajmer i može da radi kao brojač ili može da se koristi za merenje
vremena. Blok-šema ovog tajmera data je na Slici 4-11. TMR1 može da ima tri izvora takta:
sistemski sat (Fosc/4), spoljašnji takt ili spoljašnji kristal. Brojač eksternih događaja
može se sinhronizovati sa internim oscilatorom, a postoji i asinhroni način rada koji
omogućava da se brojač inkrementira i u SLEEP režimu rada. Preskaliranje je moguće sa
vrednostima deljenja 1:1, 1:2, 1:4 i 1:8.
TMR2 je 8-bitni tajmer sa programabilnim preskalerom i postskalerom. Može da bude
tajmer ili brojač opšte namene. Međutim, potreban je CCP modulu prilikom generisanja
PWM signala i modulu za sinhronu serijsku komunikaciju (SSP) kao Baud Rate generator.
Zajedno sa TMR2 koristi se registar PR2 (Period Register). Kada se vrednost brojača
34
Mikroprocesorski sistemi –seminarski rad
izjednači sa vrednošću upisanom u registar PR2, generiše se odgovarajući prekid. Struk-
tura TMR2 prikazana je na Slici 3-12.

Slika 3-12. Blok-dijagram tajmera TMR2

3-8. PORTOVI

PIC16F877 poseduje pet portova (PORT A, PORT B, PORT C, PORT D i PORT E) 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)


 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. Jedino se PortB od ostalih razlikuje zbog posebne
opcije koju nude četiri MSB. Ukoliko se setuje bit RBIE u registru INTCON, svaka promena
stanja na ovim pinovima, generisaće prekid mikrokontrolera.
35
Mikroprocesorski sistemi –seminarski rad
PORT A

Port A je 6-bitni (RA5-RA0) bidirekcioni port (podaci mogu da se šalju u oba smera).
Sadržaj re-gistra TRISA određuje smer (ulazni ili izlazni) pinova na portu. Blok-dijagrami za
pin RA4 je prikazan na Slici 3-13, a za ostale pinove na Slici 3-14.

Slika 3-13. Blok-dijagram pina RA4

Sada ćemo kroz nekoliko primera ilustrovati postavljanje smerova na portu:

 TRISA = 0b000000 (PORTA je izlazni)


 TRISA = 0b111111 (PORTA je ulazni)
 TRISA = 0b111000 (RA5-RA3 pinovi su ulazni, a RA2-RA0 su izlazni)
 TRISA = 0b001000 (RA3 jeulazni, a ostali su izlazni) itd.
Port A ima mogućnost analogno-digitalne konverzije i prvenstveno se koristi u te svrhe.
A/D konvertor, koji je integrisan u mikrokontroleru, je 10-bitni sa 8 ulaznih kanala, jer se u ove
svrhe koriste i svi pinovi Porta E (i pet pinova Porta A; dakle, svi izuzev RA4).
Pin RA4 je sa otvorenim drejnom i može da se iskoristi za ulazni takt za tajmer TMR0.

36
Mikroprocesorski sistemi –seminarski rad
Slika 3-14. Blok-dijagram pinova RA5, RA3-RA0

Tabela 3-6. Funkcije Porta A i registri

37
Mikroprocesorski sistemi –seminarski rad
U Tabeli 3-6. dati su prikaz funkcija pojedinačnih pinova Porta A i registri koji se
koriste za konfigurisanje porta.

PORT B

Port B je 8-bitni bidirekcioni port. Svakom pinu porta korespondira odgovarajući bit u
registru TRISB, kojim se definiše smer. Svi pinovi unutar Port B poseduju pull-up otpornike.
Ovi otpornici mogu da se uključe jednim kontrolnim bitom. To se postiže postavljanjem
RBPU' bita na ‘0’. Pull-up otpornici se automatski isključuju kada se pin konfiguriše kao
izlazni. Otpornici su isključeni i kod Power-on reseta.

Slika 3-15. Blok-dijagram pinova RB3-RB0

38
Mikroprocesorski sistemi –seminarski rad
Slika 3-16. Blok-dijagram pinova RB7-RB4

39
Mikroprocesorski sistemi –seminarski rad
Tabela 3-7. Funkcije Porta B i registri

Četiri pina na Portu B (RB7-RB4) imaju mogućnost generisanja prekida. Samo


pinovi koji su definisani kao ulazni mogu da prouzrokuju prekid.
Kombinacija prekida na promenu stanja Porta B i pull-up otpornik mogu se
iskoristiti kao jednostavan interfejs za tastaturu.
Na Slikama 3-15 i 3-16 blokovski je prikazana (ilustrovana) interna struktura obe grupe
pinova Porta B.
U Tabeli 3-7. dati su prikaz funkcija pojedinačnih pinova Porta B i registri koji se
koriste za konfigurisanje porta.

PORT C

Slika 3-17. Blok-dijagram pinova RC7-RC5, RC2-RC0


40
Mikroprocesorski sistemi –seminarski rad
3-18. Blok-dijagram pinova RC7-RC5, RC2-RC0

41
Mikroprocesorski sistemi –seminarski rad
Tabela 3-8. Funkcije Porta C i registri

Port C je 8-bitni bidirekcioni port. Posebnost ovog porta se ogleda u tome što poseduje
ugrađen USART modul, koji služi za serijsku komunikaciju (npr. sa računarom ili drugim
mikrokontrolerom). Modulu se pristupa preko pinova RC7 i RC6. Pinove treba softverski
konfigurisati da budu u funkciji USART modula.
Na Slikama 3-17 i 3-18 prikazana je struktura Porta C, dok je funkcionalna tabela
registara koji se koriste za konfigurisanje samog porta data u Tabeli 3-8.

PORTOVI D I E

Port D je 8-bitni bidirekcioni port. Ovaj port može da se konfiguriše kao 8-bitni paralelni
mikroprocesorski port (Parallel Slave Port - PSP) i to podešavanjem konfiguracionog bita
PSPMOTE (TRISC<4>). U ovom režimu rada ulazni bafer je TTL tipa.
Port E je bidirekcioni veličine 3 bita. Ima mogućnost A/D konverzije. Ulazni bafer je tipa
Schmitt Trigger. Pinovi mogu da se konfigurišu kao digitalni ili analogni, kao i u slučaju Porta
A, o čemu je već bilo reči.

3-9. ORGANIZACIJA MEMORIJE

Memoriju mikrokontrolera čine tri odvojene celine:

 Programska memorija
 Memorija podataka
 EEPROM memorija podataka.

Inače, u mikrokontroleru postoji i stack (magacin), koji radi na principu cikličnog bafera,
što znači da se u njega mogu staviti osam različitih adresa, dok se sa upisom devete adrese
– briše prva i tako redom. Programski se ne može utvrditi da li je došlo do prepunjenja stack-a.

PROGRAMSKA MEMORIJA

PIC16F877 poseduje 13-bitni programski brojač (PC) koji je u mogućnosti da adresira


memorijski prostor od 8K programskih reči od 14 bita. Reset vektor je 0x0000 i od njega
počinje izvršavanje programa. Prekidni (interrupt) vektor je 0x0004. Mapa programske
memorije i magacin prikazani su na Slici 3-19.
42
Mikroprocesorski sistemi –seminarski rad
Slika 3-19 Mapa programske memorije i magacin

Slika 3-20. Izbor željene banke preko bitova RP0 i RP1

ORGANIZACIJA MEMORIJE PODATAKA

Memorija za podatke je podeljena u više banki (banks), a sastoji se od registara opšte


namene (General Purpose Registers) i registara specijalne funkcije (Special Function
Registers). U jednom od specijalnih registara, tzv. STATUS registru postoje dva bita RP1 i
RP0 koji služe za izbor željene banke podataka po principu prikazanom na Slici 3-20.

43
Mikroprocesorski sistemi –seminarski rad
Svaka banka može da sadrži do 128 registara (0x7F). Niže lokacije u banci zauzimaju
specijalni registri, a ostatak prostora popunjavaju registri opšte namene implementirani kao

44
Mikroprocesorski sistemi –seminarski rad
Slika 3-21. Mapa registara mikrokontrolera PIC16F877
45
Mikroprocesorski sistemi –seminarski rad
statički RAM. Neki specijalni registri koji se često koriste mapirani su u sve banke da bi se
omogućio brzi pristup i redukcija kôda. Mapa registara mikrokontrolera PIC16F877 prikazana
je na Slici 3-21. Nekoliko specijalnih registara su registri jezgra, usko povezani sa funkcio-
nisanjem mikroprocesora kontrolera. Ostali registri su vezani za periferne module i služe za
njihovo upravljanje i kontrolu statusa.
Programski brojač (PC) je 13-bitni registar koji određuje adresu naredne instrukcije u
programskom flash memoriji. Simboličko ime nižeg bajta je PCL. To je registar u koji se može
i upisivati i iščitavati. Viših pet bita programskog brojača smešteni su u izolovani registar PCH
kojem se pristupa samo preko latch-a PCLATH, mapiranom u internom RAM-u na adresi
0x0A.
STATUS registar je veoma bitan i zato je predviđeno da se može adresirati iz bilo koje
banke. On pokazuje status aritmetičko-logičke jedinice, reset status mikrokontrolera i sadrži
bite za selekciju banki internog RAM-a. Od navedenih flegova posebno treba izdvojiti Zero bit
(Z), koji se postavlja kad je rezultat aritmetičke operacije jednak nuli i bit prenosa/pozajmice
Carry (C).
Registar OPTION_REG se inače koristi za konfiguraciju preskalera za TMR0 ili
Watchdog, za upravljanje TMR0, selekciju ivice okidanja eksternog prekida, i za omoguća-
vanje Pull-up otpornika na Porta B. Kada je reč o registrima jezgra, ne treba zaboraviti par
FSR (File Select Register) i INDF (Indirect File), koji služe za indirektno adresiranje memorije
podataka. Bilo koja instrukcija koja se obraća INDF registru predstavlja indirektan pristup
onoj lokaciji internog RAM-a čija je adresa trenutno u registru FSR.

INTERNI EEPROM ZA PODATKE

Ukoliko je potrebno sačuvati neke podatke i nakon ukidanja napajanja mikrokontrolera,


treba ih prethodno zapisati u interni EEPROM. Ova memorija je obima 256 bajtova.

3-10. A/D KONVERTOR

Signali u prirodi su kontinualni, a veoma teško je upravljati nekim procesom bez


digitalizacije analognih veličina. Kao što je napomenuto, Portovi A i E imaju mogućnost A/D
konverzije što podrazumeva da se mogu konfigurisati kao analogni ili digitalni.
Da bi se iskoristio 10-bitni A/D konveror integrisan u mikrokontroleru, neophodno je
podesiti registre ADCON0 i ADCON1. U Tabelama 3-9 i 3-10 dati su prikazi pomenutih
registara, respektivno.
Inače, registar ADCON0 služi za podešavanje A/D konverzije (frekvencije odabiranja
konvertora, kanal koji se koristi za konverziju, početak konverzije i uključivanje modula za
konverziju).
Registrom ADCON1 određuje se uloga pojedinih pinova (analogni ili digitalni). Modul za
A/D konverziju se bazira na sa sukcesivnoj aproksimaciji.
Blok-dijagram A/D konvertora mikrokontrolera PIC16F877 prikazan je na Slici 3-22.

46
Mikroprocesorski sistemi –seminarski rad
Tabela 3-9. Registar za podešavanje A/D konverzije

ALGORITAM A/D KONVERZIJE

1. Konfiguracija A/D konvertora (preko ADCON0 i ADCON1)


2. Konfigurisanje A/D prekida ukoliko se zahtevaju (ADIF, ADIE, PEIE, GIE)
3. Čekanje da prođe zahtevano akviziciono vreme
4. Početak procesa A/D konverzije
5. Završetak procesa A/D konverzije
6. Čitanje rezultata A/D konverzije iz registra ADRES
7. Za sledeću konverziju, skočiti na korak 1 ili korak 2.

47
Mikroprocesorski sistemi –seminarski rad
Tabela 3-10. Registar za podešavanje tipa kanala (analogno ili digitalni)

48
Mikroprocesorski sistemi –seminarski rad
Slika 3-22. Blok-dijagram A/D konvertora

3-10. PERIFERIJSKE JEDINICE

Mikrokontroler PIC16F877 poseduje nekoliko korisnih periferijskih modula. S obzirom da


mikrokontroler treba da razmenjuje podatke sa ostalim komoponentama (npr. registrima,
memorijama, drugim mikrokontrolerima itd.) u tu svrhu je opremljen sa tri hardverska
komunikaciona modula.

49
Mikroprocesorski sistemi –seminarski rad
Prvi od njih je SSP modul (Synchronous Serial Port), koji služi za komunikaciju sa serij-
skim EEPROM-ima, pomeračkim registrima, displej-drajverima itd. Ovaj modul može da radi u
jednom od sledeća dva režima:
 Serial Peripheral Interface (SPI)
 Inter-Integrated Circuit (I2C).

Drugi serijski komunikacioni modul je USART (Universal Synchronous Asynchronous


Receiver Transmiter). On uglavnom služi za povezivanje sa personalnim računarom, mada to
nije jedina njegova mogućnost primene.
USART može da se konfiguriše u neki od sledećih režima rada:

 Asinhroni rad (full duplex)


 Sinhroni master rad (half duplex)
 Sinhroni slave rad (half duplex).

Osim serijskih, postoji i jedan paralelni komunikacioni modul. U pitanju je modul PSP
(Parallel Slave Port). Njegov zadatak je da PIC16F877 direktno poveže na 8-bitnu magistralu
podataka drugog mikroprocesora. Eksterni mikroprocesor tada, preko linija Read (RD) i
Write (WR) može da čita i upisuje u registar Porta D kao u svaki drugi 8-bitni latch.

50
Mikroprocesorski sistemi –seminarski rad
4 - SOFTVER ZA PIC MIKROKONTROLERE

U realizaciji ovog seminarskog rada korišćen je softverski alat mikroC koji je delo firme
Mikroelektronika iz Beograda. Pomenuti alat služi za pisanje kôda za Microchip-ove PIC
mikrokontrolere. Programeru je omogućeno da na jednostavan način kontroliše proces
programiranja i napravi kvalitetan firmware za mikrokontroler.

Navešćemo njegove osnovne karakteristike:


 Pisanje C kôda korišćenjem kvalitetnog i preglednog editora, što se ogleda u
automatskoj kontroli i upozorenjima vezanim za sintaksu kôda, korišćenih para-
metara, kao i automatskoj korekciji pojedinih grešaka
 Preglednost strukture programa (kôda), promenljivih i funkcija omogućava Code
explorer
 Jasan asemblerski kôd 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
 Detaljan izveštaj i grafičko predstavljanje RAM i ROM mape, statistike kôda i slično.

mikroC, doduše, odstupa od ANSI standarda u nekoliko segmenata. Neka odstupanja


su načinjena su u cilju da se olakša programiranje, dok su druge rezultat hardverskih ograni-
čenja PIC mikrokontrolera. Pomenućemo sada 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 ANSIC 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 kôda
 Brojne standardne C biblioteke (ctype, math, stdlib, string ) implementirane su u
mikroC, uz individualna odstupanja.

mikroC podržava gotovo sve PIC mikrokontrolere serija 12, 16 i 18. Izuzetak su jedino
mikrokontroleri koji poseduju staro hardversko jezgro, kao na primer PIC12C50x, PIC12F50x,
itd. Inače, ograničena verzija (do 2KB programa) može da s preuzme sa sajta beogradske
51
Mikroprocesorski sistemi –seminarski rad
Mikroelektronike (www.mikroe.com). Za punu verziju programa, treba platiti licencu koja
iznosi 250$ i važi samo za jedan računar.

4-1. INSTALACIJA

Instalacija programa traje 30-ak sekundi (treba samo pratiti ponuđene opcije i pritiskati
komandno dugme Next). Posle instalacije treba pokrenuti mikroC, a to se najjednostavnije
ostvaruje klikom na ikonicu:

4-2. PISANJE KÔDA

Na narednih nekoliko strana biće ilustrovan postupak pisanja kôda u mikroC-u (Slike 4-
1_4-7) i generisanje fajlova posle prevođenja (kompilacije/kompajliranja). Slike dovoljno jasno
ilustruju ceo proces, a komentari se nalaze ispod slika.

Slika 4-1. Kreiranje novog projekta preko opcije Project → New Project
52
Mikroprocesorski sistemi –seminarski rad
Slika 4-2. Podešavanje parametara projekta (naziv mikrokontrolera, takta, reseta...)

53
Mikroprocesorski sistemi –seminarski rad
Slika 4-3. U editoru treba napisati program (kôd) mikrokontrolera

Slika 4-4. U editor je unet neki program

54
Mikroprocesorski sistemi –seminarski rad
Slika 4-5. Prevođenje programa preko komande Project → Build

Slika 4-6. Izgled prozora posle prevođenja sa izveštajem (Messages)

Slika 4-7. Posle prevođenja (kompilacije/kompajliranja) generiše se nekoliko fajlova:


asemblerski kôd (ASM), heksadecimalni kôd (HEX), izveštaji itd.

4-3. USART TERMINAL

55
Mikroprocesorski sistemi –seminarski rad
Pokretanje internog softverskog terminala mikroC-a koji se koristi za komunikaciju raču-
nara i mikrokontrolera ostvaruje se na sledeći način: Tools → USART Terminal.
Na Slici 4-8. prikazan je izgled prozora USART terminala. Kao što se vidi, moguće je
podesiti veći broj parametara. Navešćemo samo najvažnije:

 Serijski port (u padajućem meniju treba izabrati željeni serijski port, a kod
standardnih računara to su COM1 i COM2)
 Brzina prenosa (za frekvenciju kvarca od 4MHz treba izabrati 2400 bauda, dok za
8MHz bira se 9600 bauda itd.)
 Broj stop bitova (1, 1.5 i 2)
 Izbor parnosti (bez, parna, neparna itd.)
 Broj bitova koji čine karakter (5, 6, 7 ili 8)
 Uključivanje/isključivanje handshaking signala (RTS i DTR)
 Izbor formata podatka koji se šalje (ASCII, heksadecimalni - HEX ili dekadni - DEC)
 Način slanja (odmah po kucanju ili kada se klikne na opciju SEND) itd.

Slika 4-8. Izgled prozora kod USART komunikacionog terminala

56
Mikroprocesorski sistemi –seminarski rad
Kada se podese parametri, terminal se startuje klikom na komandno dugme Connect.
Odmah zatim, terminal je spreman da prihvati komande (vidi Sliku 4-9). Kada se završi
komunikacija, treba kliknuti na komandno dugme Disconnect.

Slika 4-9. Izgled prozora softverskog USART terminala kada je pokrenut

4-4. UBACIVANJE FIMWARE-A U MIKROKONTROLER

Heksadecimalni kôd koji je dobijen iz kompilatora/kompajlera je «razumljiv» mikro-


kontroleru i u njega se upisuje preko programatora.
Za ovaj seminarski rad je korišćen programator AllPIC o kojem je dat kompletan članak
u poglavlju Prilog. Zbog toga se ovde nećemo baviti njegovim opisom.

57
Mikroprocesorski sistemi –seminarski rad
5 – KOMUNIKACIJA MIKROKONTROLERA PREKO
SPI MODULA: PRAKTIČNA REALIZACIJA

PC
Napajanje TX RX
5V
MAX232

C7 C6

Tasteri 2 B3-B0 B3-B0 Tasteri 1


PIC16F877 PIC16F877

Zelene LED B7-B4 C5 C4 B7-B4 Crvene LED


SDI
SPI C4 SDO
C5 SPI
A0
ADC C3
SCK
C3 ADC A0

Potenciometar2
Potenciometar Slave Master Potenciometar 1

Slika 5-1. Blok-šema veze dva mikrokontrolera PIC16F877 preko SPI modula

Na Slici 5-1 prikazana je blok-šema veze dva mikrokontrolera PIC16F877 preko njihovih
SPI modula, dok je na Slici 5-2 prikazana električna šema. Uloga master-a (ujedno je
povezan sa serijskim portom PC računara) je dodeljena mikrokontroleru U2, dok je uloga
slave-a dodeljena mikrokontroleru U3. Na Portove B oba mikrokontrolera povezani su po
četiri tastera i četiri LED diode.
Komunikacija PC↔U2 ostvaruje se samo preko R x i Tx signala (bez handshaking-a), što
je u našem slučaju sasvim dovoljno.
Potenciometri P1 i P2 su povezani na pinove PA0 oba mikrokontrolera, respektivno.
Tri pina Porta C (PC3, PC4 i PC5) su dovoljni za ostvarenje SPI komunikacije master-
slave. PC3 ima ulogu takta (SCK), kod master-a PC4 i PC5 imaju ulogu SI (Serial Input) i SO
(Serial Output), respektivno, a kod slave-a je obrnuto. U načem slučaju nismo upotrebili Cs
signal, jer nije potreban – komuniciraju samo master i slave.

58
Mikroprocesorski sistemi –seminarski rad
Može da se primeti kako je reset zajednički za oba mikrokontrolera i ostvaruje se
pritiskom na taster SW0.

59
Mikroprocesorski sistemi –seminarski rad
U1
D1
J1 8-14V LM7805
1 3
1 Vin Vout

Gnd
2
BAT42
CON2 C1 C2 C3

2
100uF 1000uF 100nF

Gnd Gnd Gnd Gnd Gnd


C13 100nF

U4 J2
1 16 1
C9 C1+ Vcc
2 15 6
100nF V+ Gnd Gnd
3 14 2
C1- T1out
4 13 7
C2+ R1in
5 12 3
C10 C2- R1out
6 11 8
100nF V- T1in
7 10 4
T2out T2in
8 9 9
R2in R2out
C11 5
C12
100nF MAX232
100nF DB9
Gnd
Gnd
P1 10K Gnd Gnd
U2/master/
R1 LED4
1 40
MCLR PB7
2 39
15K PA0 PB6
SW0 3 38 LED3
PA1 PB5
4 37
PA2 PB4
5 36
PA3 PB3
6 35 LED2
Gnd PA4 PB2 RN1
7 34
PA5 PB1
C4 8 33 1 9
RD PB0
9 32 LED1 2
100nF WR VDD
10 31 3
CS VSS Gnd
11 30 4
VDD PD7
12 29 5
Gnd VSS PD6
Y1 13 28 SW4 6
OSC1 PD5
14 27 7
OSC2 PD4
15 26 SW3 8
4MHz PC0 PC7
16 25
C5 C6 PC1 PC6
17 24 SW2 2K2
27pF 27pF PC2 PC5
18 23
PC3 PC4
19 22 SW1
PD0 PD3
20 21
PD1 PD2 Gnd
Gnd Gnd PIC16F877-04

U3/slave/
1 40 LED8
MCLR PB7
2 39
PA0 PB6
3 38 LED7
PA1 PB5
4 37
PA2 PB4
5 36
Gnd PA3 PB3
P2 6 35 LED6
PA4 PB2 RN2
10K 7 34
PA5 PB1
8 33 1 9
RD PB0
9 32 LED5 2
WR VDD
10 31 3
CS VSS Gnd
11 30 4
VDD PD7
12 29 5
Gnd VSS PD6
Y2 13 28 SW8 6
OSC1 PD5
14 27 7
OSC2 PD4
15 26 SW7 8
4MHz PC0 PC7
16 25
C7 C8 PC1 PC6
17 24 SW6 2K2
27pF 27pF PC2 PC5
18 23
PC3 PC4
19 22 SW5
PD0 PD3
20 21 Gnd
PD1 PD2
Gnd Gnd PIC16F877-04

Slika 5-2. Šema veze dva mikrokontrolera preko njihovih SPI modula

60
Mikroprocesorski sistemi –seminarski rad
KAKO KOLO FUNKCIONIŠE?

Tabeli 5-1 ilustruje kako kolo funkcioniše. Naglasićemo da je P2 povezan na slave


mikrokontroler, tako da se informacija o naponu na njemu prenosi preko SPI master-slave
komunikacije.

Taster Funkcija
SW4 Uključujemo LED4
SW3 Uključujemo LED3
SW2 Isklučujemo LED1-LED4
SW1 Šalje se ASCII karakter "1" ka USART terminalu
SW8 Uključujemo LED8
SW7 Uključujemo LED7
SW6 Isključujemo LED8 i LED7
SW5 Naizmenično uključivanje/isklučivanje LED6 i LED5
LED1 i LED2 se uključuju slanjem ASCII karaktera
"2" i "3", respektivno.
Naponski nivoi na P1 i P2 se očitavaju slanjem
ASCII karaktera "4" i "5", respektivno.

Tabeli 5-1. Funkcije tastera i ASCII komandi

PROGRAM MASTER-A

unsigned short i, j, napon;

void main() {
TRISA = 0b111111; // Definisanje pinova A PORTA
PORTA = 0b000000;

TRISB = 0x0F; // Definisanje pinova B PORTA


PORTB = 0xFF;
ADCON0 = 0;

USART_init(9600); // Podesavanje USART modula


// (8 bita, 9600 bauda)
Spi_Init(); // Inicijalizacija SPI

while (1) {

if (USART_Data_Ready()) {
i = USART_Read();
USART_Write(i);
61
Mikroprocesorski sistemi –seminarski rad
}

if (i==0x32) { // Paljenje LED1 preko PC-a.


PORTB.F5 = 0;
i=0x00;
}

if (i==0x33) { // Paljenje LED0 preko PC-a.


PORTB.F4 = 0;
i=0x00;
}

if (PORTB.F3==0) { // Paljenje LED2.


PORTB.F7 = 0;
delay_ms(200);

if (PORTB.F2==0) { // Paljenje LED3.


PORTB.F6 = 0;
delay_ms(200);

if (PORTB.F1==0) { // Gasenje LED.

PORTB.F7 = 1;
PORTB.F6 = 1;
PORTB.F5 = 1;
PORTB.F4 = 1;
}

if (PORTB.F0==0) { // Slanje karaktera ‘1’ ka PC-u..


USART_Write(0x31);
delay_ms(400);
}

if (i==0x34) { // Osmobitna A/D konverzija, P1


napon = ADC_Read(0) >> 2;
USART_Write(napon);
i=0x00;
}

62
Mikroprocesorski sistemi –seminarski rad
if (i==0x35) { // Osmobitna A/D konverzija, P2 preko SPI

Spi_Write(i);
delay_ms(100);
Spi_Read (j);
USART_Write(j);

}//~!

PROGRAM SLAVE-A

unsigned short i, napon;


int k;

void main() {
// TRISA = 0b111111; // Definisanje pinova A PORTA
// PORTA = 0b000000;

TRISB = 0x0F; // Definisanje pinova B PORTA


PORTB = 0xFF;

while (1) {

if (PORTB.F3==0) { // Gasenje obe LED8.


PORTB.F7 = 0;
delay_ms(50);

if (PORTB.F2==0) { // Gasenje obe LED7.


PORTB.F6 = 0;
delay_ms(50);

if (PORTB.F1==0) { // Gasenje LED.

PORTB.F7 = 1;
PORTB.F6 = 1;
63
Mikroprocesorski sistemi –seminarski rad
}

if (PORTB.F0==0) {

k=6; // Naizmenicno paljenje LED6 i LED5.


while (k > 0) {
PORTB.F5 = 1;
PORTB.F4 = 0;
delay_ms(100);
PORTB.F5 = 0;
PORTB.F4 = 1;
delay_ms(100);
k--;
PORTB.F5 = 1;
PORTB.F4 = 1;
delay_ms(100);
}
}

if (i==0x64) { .// Osmobitna A/D konverzija, P2


napon = ADC_Read(0) >> 2;
Spi_Write(napon);
delay_ms(100);
}
}

}//~!

64
Mikroprocesorski sistemi –seminarski rad
6 – LABORATORIJSKA VEŽBA

Slika 6-1. Štampana ploča

Na Slici 6-1. je prikazan izgled štampane ploče za električno kolo sa Slike 5-1. Mogu da
se uoče po dve grupe tastera (SW1-SW4, SW5-SW8) i dve grupe LED dioda (LED1-LED4,
LED5-LED8). Prva grupa tastera i LED je povezana za Port B mikrokontrolera kojem je
softverski dodeljena uloga master-a, dok je druga grupa tastera i LED povezana za Port B
mikrokontrolera kojem je dodeljena uloga slave-a.
Firmware-i (ugrađeni softveri) za master i slave mikrokontroler su različiti.

65
Mikroprocesorski sistemi –seminarski rad
A/D KONVERZIJA KROZ PRIMER

Opisaćemo način određivanja napona izmerenog A/D konverorom sa sukcesivnom


aproksimacijom koji je integrisan u mikrokontroleru PIC16F877.
Zbog konzistentnosti podataka u vežbi (svi su osmobitni) sa internog 10-bitnog A/D
konvertora ćemo očitavati osmobitnu digitalnu reč, tj. odbacićemo softverski dve najmanje
značajne cifre. Na ovaj način pogoršana rezolucija A/D konverzije, ali se zato dobija podatak
jednostavan za obradu.
Podatak koji se dobije u prozoru USART terminala treba transformisati u dekadni
(ukoliko je izabran parametar HEX u prozoru terminala), a zatim primeniti formulu:

( xx) DEC
VA   5V .
28  1

Ukoliko je, na primer, pročitana heksadecimalna vrednost (0x10) HEX, odnosno dekadna
vrednost (16)DEC, to znači da je izmeren napon:

(16) DEC
VA   5V  0,3137V .
255

Ukoliko se očitava ASCII karakter, pogledati u Tabelu 6-1 i pronaći odgovarajuću dekad-
nu vrednost.

Zadatak

1) Povezati kolo sa serijskim portom računara preko standardnog pin-to-pin DB9 kabla.
2) Dovesti kolu napajanje preko adaptera 220V~/7.5V–, a tek onda adapter postaviti u
mrežno napajanje. Bitno je ispoštovati opisani redosled.
3) Pokrenuti USART terminal iz programa mikroC.
Podesiti parametra USART terminala (prikazano na Slici 6-2):

 COM1 ili COM2 (zavisno na koji port je povezano kolo)


 Brzina 9600 Bauda, 1 stop-bit (One Stop Bit), Space bit parnosti (Parity), osam
bitova čini karakter/podatak (Data bits), isključen RTS (Off)
 Podesite da prenos mikrokontroler↔PC bude ASCII.

4) Proveriti rad kola preko komandi u tabeli:

Taster Funkcija
SW4 Uključujemo LED4
SW3 Uključujemo LED3
SW2 Isklučujemo LED1-LED4
SW1 Šalje se ASCII karakter "1" ka USART terminalu
66
Mikroprocesorski sistemi –seminarski rad
SW8 Uključujemo LED8
SW7 Uključujemo LED7
SW6 Isključujemo LED8 i LED7
SW5 Naizmenično uključivanje/isklučivanje LED6 i LED5
LED1 i LED2 se uključuju slanjem ASCII karaktera
"2" i "3", respektivno.
Naponski nivoi na P1 i P2 se očitavaju slanjem
ASCII karaktera "4" i "5", respektivno.

Tabela 6-1. Funkcije

Tabela 6-2. Tabela ASCII/DEC karaktera

67
Mikroprocesorski sistemi –seminarski rad
Slika 6-2. Parametri UART terminala i primeri slanja dva tipa podatka
(heksadecimalni – HEX i dekadni - DEC)

68
Mikroprocesorski sistemi –seminarski rad
7 - ZAKLJUČAK

Seminarski rad čiji ste sadržaj mogli da pročitate je završen tokom aprila 2008. godine.
Štampana pločica je kreirana u Protel-u, a realizovana u firmi «Denitron».
Studenti su najpre uvedeni u priču o mikrokontrolerima. Jasno je napravljena razlika
između mikrokontrolera i mikroprocesora i navedene njihove osobine. Potom su na nekoliko
strana opisani embedded sistemi.
SPI komunikaciji je posvećeno celo poglavlje rada. Razmotrene su uloge master-a i
slave-a, protokol itd. Tu su ujedno izloženi i praktični primeri sa pvezivanjem mikrokontrolera
sa SPI memorijom, SPI A/D konvertorom (SPI ADC).
Isto tako, detaljno je opisan mikrokontroler PIC16F877-20 (arhitektura, organizacija
memorije, oscilator, portovi, tajmeri, ADC, komunikacioni moduli). Posebna pažnja je
posvećena A/D konvertoru (ADC) i SPI komunikacionom modulu, jer su isti uskopovezani sa
temom samog seminarskog rada.
Jedno poglavlje je posvećeno softveru mikroC i njegovom komunikacionom USART
terminalu preko kojeg se ostvaruje veza PC-mikrokontroler.
Posle teorijskog uvoda, studentima je približen sâm projekat i način izvođenja
laboratorijske vežbe.

69
Mikroprocesorski sistemi –seminarski rad
8 - KORIŠĆENA LITERATURA

Prilikom pisanja seminarskog rada korišćena je sledeća on-line literatura:

 Serijska komunikacija računara i USART modula mikrokontrolera PIC16F877A,


Dejan Lazić, Ivan Novaković, Elektronski fakultet - Niš, (seminarski rad)
 PIC16F877, Microchip Tecnology, http://www.microchip.com
 Embedded sistemi, http://www.oaza.net
 AllPIC programator, Info Elektronika - Niš
 IC-Prog, http://www.ic-prog.com
 mikroC, firma Mikroelektronika, http://mikroe.com
 KOMUNIKACIJE – SPI, časopis Mikroelektronika br 8, http://mikroe.com

70
Mikroprocesorski sistemi –seminarski rad
9 – PRILOG

71
Mikroprocesorski sistemi –seminarski rad
72
Mikroprocesorski sistemi –seminarski rad
73
Mikroprocesorski sistemi –seminarski rad
74
Mikroprocesorski sistemi –seminarski rad
75
Mikroprocesorski sistemi –seminarski rad
76
Mikroprocesorski sistemi –seminarski rad
77
Mikroprocesorski sistemi –seminarski rad
78
Mikroprocesorski sistemi –seminarski rad
79
Mikroprocesorski sistemi –seminarski rad
80
Mikroprocesorski sistemi –seminarski rad
10 – O AUTORIMA SEMINARSKOG RADA

Prezime: Đorđević
Ime: Žarko
Adresa stanovanja: Bulevar Nikole Tesle 45/2, Niš
E-mail adresa: zarehunter@gmail.com
Bračno stanje: neoženjen
Datum rođenja: 30.03.1983.g.
Nacionalnost: Srbin
Obrazovanje: Gimnazija ”Svetozar Marković”, Niš
Kompletna ili stepenovana diploma: IV stepen
Vozačka dozvola: B kategorija
Poznavanje jezika Engleski (vrlo dobro)
Poznavanje operativnih sistema i WINDOWS XP, MS OFFICE, COREL DRAW,
programskih paketa EMBEDDED C,
Posebna interesovanja Politička aktivnost (studentska organizacija
i politička stranka), programiranje, sportska
aktivnost
Sposobnosti Upornost, preduzimljivost, kreativnost,
timski rad
Napomene

Prezime: Đorđević
Ime: Dušan
Adresa stanovanja: Borivoja Velimanovića 53, Ćuprija
E-mail adresa: duky83@gmail.com
Bračno stanje: Neoženjen
Datum rođenja: 13.05.1983.g.
Nacionalnost: Srbin
Obrazovanje: Osnovna škola „Vuk Karadžić“, Ćuprija
EGŠ „Nikola Tesla“, Jagodina
elektrotehničar automatike
Kompletna ili stepenovana diploma: IV stepen
Vozačka dozvola: B kategorija
Poznavanje jezika Engleski (dobro)
Poznavanje operativnih sistema i WINDOWS Vista, AutoCAD, EAGLE
programskih paketa PROTEL 2004
Posebna interesovanja Pretraživanje Interneta, čitanje stručne
literature, biznis i mnoge druge stvari.
Sposobnosti Radoznalost, preduzimljivost, snalažljivost
Napomene

81
Mikroprocesorski sistemi –seminarski rad

Das könnte Ihnen auch gefallen