Beruflich Dokumente
Kultur Dokumente
KOMUNIKACIJA MIKROKONTROLERA
PIC16F877-20 PREKO SPI MODULA
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
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.
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.
7
Mikroprocesorski sistemi –seminarski rad
takođe i da se uradi kompjuterska provera projektila, što je smanjilo težinu kablova i
konektora.
KARAKTERISTIKE
9
Mikroprocesorski sistemi –seminarski rad
2 – SPI KOMUNIKACIJA
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.
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.
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).
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.
14
Mikroprocesorski sistemi –seminarski rad
15
Mikroprocesorski sistemi –seminarski rad
16
Mikroprocesorski sistemi –seminarski rad
2-3. SPI EEPROM MEMORIJE
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.
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
19
Mikroprocesorski sistemi –seminarski rad
Slika 2-6. Raspored pinova za tri tipa kućišta u koja se smešta 25xx640
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.
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
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.
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-3. OSCILATOR
RC Resistor/Capacitor
XT Crystal / Resonator
LP Low Power Crystal
HS High Speed Crystal / Resonator.
25
Mikroprocesorski sistemi –seminarski rad
Slika 3-3. Povezivanje eksternog RC oscilatora
26
Mikroprocesorski sistemi –seminarski rad
Slika 3-5. Dovođenje spoljašnjeg takta
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:
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.
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 - -
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
31
Mikroprocesorski sistemi –seminarski rad
8Bh INTCON 0000 000X 0000 000U UUUU UUUU
Legenda:
X (nepoznato stanje)
U (nepromenjeno stanje)
Q (stanje zavisi od uslova)-
– (ne postoji fizički, čita se kao logička ‘0’).
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
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:
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.
36
Mikroprocesorski sistemi –seminarski rad
Slika 3-14. Blok-dijagram pinova RA5, RA3-RA0
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.
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
PORT C
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.
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
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.
46
Mikroprocesorski sistemi –seminarski rad
Tabela 3-9. Registar za podešavanje A/D konverzije
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
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).
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.
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:
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
54
Mikroprocesorski sistemi –seminarski rad
Slika 4-5. Prevođenje programa preko komande Project → Build
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.
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.
57
Mikroprocesorski sistemi –seminarski rad
5 – KOMUNIKACIJA MIKROKONTROLERA PREKO
SPI MODULA: PRAKTIČNA REALIZACIJA
PC
Napajanje TX RX
5V
MAX232
C7 C6
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
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?
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.
PROGRAM MASTER-A
void main() {
TRISA = 0b111111; // Definisanje pinova A PORTA
PORTA = 0b000000;
while (1) {
if (USART_Data_Ready()) {
i = USART_Read();
USART_Write(i);
61
Mikroprocesorski sistemi –seminarski rad
}
PORTB.F7 = 1;
PORTB.F6 = 1;
PORTB.F5 = 1;
PORTB.F4 = 1;
}
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
void main() {
// TRISA = 0b111111; // Definisanje pinova A PORTA
// PORTA = 0b000000;
while (1) {
PORTB.F7 = 1;
PORTB.F6 = 1;
63
Mikroprocesorski sistemi –seminarski rad
}
if (PORTB.F0==0) {
}//~!
64
Mikroprocesorski sistemi –seminarski rad
6 – LABORATORIJSKA VEŽBA
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
( 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):
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.
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
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