komunikacija mikrokontrolera pic16f877-20...

77
Mikroprocesorski sistemi –seminarski rad 1 E E L L E E K K T T R R O O N N S S K K I I F F A A K K U U L L T T E E T T S S E E M M I I N N A AR R S S K K I I R R A AD D I I Z Z M M I I K K R R O O P P R R O O C C E E S S O O R R A A M M E E N N T T O O R R : : P P R R O O F F . . D D R R M M I I L L E E S S T T O O J J Č Č E E V V K K O O M M U U N N I I K K A A C C I I J J A A M M I I K K R R O O K K O O N N T T R R O O L L E E R R A A P P I I C C 1 1 6 6 F F 8 8 7 7 7 7 - - 2 2 0 0 P P R R E E K K O O S S P P I I M M O O D D U U L L A A D D U U Š Š A AN N Đ Đ O O R R Đ Đ E E V V I I Ć Ć 1 1 0 0 7 7 9 9 7 7 Ž Ž A AR R K K O O Đ Đ O O R R Đ Đ E E V V I I Ć Ć 1 1 0 0 7 7 9 9 8 8

Upload: truongkhanh

Post on 01-Sep-2018

245 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

1

EEELLLEEEKKKTTTRRROOONNNSSSKKKIII FFFAAAKKKUUULLLTTTEEETTT SSSEEEMMMIIINNNAAARRRSSSKKKIII RRRAAADDD IIIZZZ MMMIIIKKKRRROOOPPPRRROOOCCCEEESSSOOORRRAAA

MMMEEENNNTTTOOORRR::: PPPRRROOOFFF... DDDRRR MMMIIILLLEEE SSSTTTOOOJJJČČČEEEVVV

KKKOOOMMMUUUNNNIIIKKKAAACCCIIIJJJAAA MMMIIIKKKRRROOOKKKOOONNNTTTRRROOOLLLEEERRRAAA PPPIIICCC111666FFF888777777---222000 PPPRRREEEKKKOOO SSSPPPIII MMMOOODDDUUULLLAAA

DDDUUUŠŠŠAAANNN ĐĐĐOOORRRĐĐĐEEEVVVIIIĆĆĆ 111000777999777 ŽŽŽAAARRRKKKOOO ĐĐĐOOORRRĐĐĐEEEVVVIIIĆĆĆ 111000777999888

Page 2: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

2

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

Page 3: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

3

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.

Page 4: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

4

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.

ALU

Akumulator

Radni registri

PC SP

kola za taktovanje i sinhronizaciju

kola za prihvatanje

prekida

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.

Page 5: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

5

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 Ø NEC Ø Philips Semiconductor

Page 6: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

6

Ø 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 shvatiti samo kao poređenje sa starijim sistemima sa potpuno funkcionalnim hardverom, ili opšte namenskim hardverom, koji imaju učitan softver eksterno.

Page 7: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

7

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 takođe i da se uradi kompjuterska provera projektila, što je smanjilo težinu kablova i konektora.

Page 8: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

8

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 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

Page 9: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

9

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.

Page 10: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

10

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. Ø 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).

Page 11: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

11

Ø 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 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

Page 12: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

12

(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.

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.

Page 13: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

13

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).

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 .

Page 14: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

14

Page 15: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

15

Page 16: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

16

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.

Page 17: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

17

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.

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.

Page 18: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

18

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).

Page 19: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

19

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

Page 20: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

20

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.

Page 21: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

21

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) Ø Oscillator Start-up Timer - unošenje kašnjenja nakon stabilizovanja radne

frekvencije oscilatora (OST)

Page 22: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

22

Ø 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

Slika 3-2. Raspored pinova mikrokontrolera u kućištu DIP40

Page 23: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

23

Slika 3-3. Arhitektura mikrokontrolera PIC16F877

Page 24: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

24

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.

Slika 3-3. Povezivanje eksternog RC oscilatora

Page 25: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

25

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

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

Kod vremenski kritičnih aplikacija treba ugrađivati kvarcni oscilator ili keramički rezonator. Vrednosti kondenzatora C1 i C2 (Slika 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.

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.

Page 26: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

26

Tabela 3-1. Izbor vrednosti kondenzatora za kvarcni kristal

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

Page 27: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

27

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.

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

Page 28: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

28

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)

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

Page 29: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

29

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 oscilatora

PWRT omogućen PWRT onemogućen

“Buđenje” iz SLEEP režima rada

XT, HS, LP 72 ms + 1024 Tosc

1024 Tosc 1024 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).

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 režima rada)

PC+1

UUU0 0UUU

Interrupt 004h UUU1 0UUU

Tabela 3-4. Postavljanje registara nakon reseta

Registar

Power-on reset

MCLR reset pri: - normalnom režimu - SLEEP mod WDT reset pri normalnom režimu

Buđenje iz SLEEP režima - interrupt - WDT time out

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

Page 30: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

30

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 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.

Page 31: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

31

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 Ø 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 sostverski 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.

Page 32: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

32

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.

Slika 3-10. Blok-dijagram TMR0/WDT preskalera

Slika 3-11. Blok-dijagram tajmera TMR1

Page 33: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

33

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 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).

Page 34: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

34

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. 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.

Page 35: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

35

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.

Slika 3-14. Blok-dijagram pinova RA5, RA3-RA0

Page 36: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

36

Tabela 3-6. Funkcije Porta A i registri

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

Page 37: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

37

Slika 3-16. Blok-dijagram pinova RB7-RB4

Page 38: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

38

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

Page 39: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

39

3-18. Blok-dijagram pinova RC7-RC5, RC2-RC0

Page 40: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

40

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.

Page 41: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

41

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.

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

Page 42: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

42

Slika 3-21. Mapa registara mikrokontrolera PIC16F877

Page 43: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

43

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.

Page 44: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

44

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.

Page 45: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

45

Tabela 3-10. Registar za podešavanje tipa kanala (analogno ili digitalni)

Page 46: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

46

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.

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:

Page 47: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

47

Ø 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.

Page 48: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

48

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 Mikroelektronike (www.mikroe.com). Za punu verziju programa, treba platiti licencu koja iznosi 250$ i važi samo za jedan računar.

Page 49: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

49

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

Page 50: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

50

Slika 4-2. Podešavanje parametara projekta (naziv mikrokontrolera, takta, reseta...)

Slika 4-3. U editoru treba napisati program (kôd) mikrokontrolera

Page 51: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

51

Slika 4-4. U editor je unet neki program

Slika 4-5. Prevođenje programa preko komande Project → Build

Page 52: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

52

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

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.

Page 53: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

53

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

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.

Page 54: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

54

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.

Page 55: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

55

5 – KOMUNIKACIJA MIKROKONTROLERA PREKO SPI MODULA: PRAKTIČNA REALIZACIJA

PIC16F877 PIC16F877

MAX232

Tasteri 2

Zelene LED

PC

Crvene LED

Tasteri 1

Napajanje 5V

Slave Master

SPI SPIADC ADC

B7-B4

B3-B0

TX RX

B3-B0

B7-B4

C5C4C3

C4C5C3

Potenciometar

Potenciometar 2

Potenciometar 1

A0

A0

SDO SDI SCK

C7 C6

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 Rx 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.

Može da se primeti kako je reset zajednički za oba mikrokontrolera i ostvaruje se pritiskom na taster SW0.

Page 56: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

56

MCLR1

PA02

PA13

PA24

PA35

PA46

PA57

RD8

WR9

PC217

PD2 21PD3 22PC4 23PC5 24PC6 25PC7 26PD4 27PD5 28PD6 29PD7 30CS10

VDD11

VSS12

OSC113

OSC214

PC015

PC116

PC318

PD019

PD120

VSS 31VDD 32PB0 33PB1 34PB2 35PB3 36PB4 37PB5 38PB6 39PB7 40U2/master/

PIC16F877-04

C527pF

C627pF

Y1

4MHz

Gnd Gnd

Gnd

Gnd

Vin1

Gnd

2

Vout 3

U1LM7805

C1

100uF

C2

1000uF

C3

100nF

GndGnd Gnd Gnd

12

J1

CON2

Gnd

C1+1 Vcc 16

V+2 Gnd 15

C1-3 T1out 14

C2+4 R1in 13

C2-5 R1out 12

V-6 T1in 11

T2out7 T2in 10

R2in8 R2out 9

U4

MAX232

Gnd

Gnd

C4

100nF

Gnd

Gnd

162738495

J2

DB9

Gnd

C13 100nF

C9100nF

C11100nF

C10100nF

C12100nF

8-14V

12345678

9RN1

2K2

LED4

LED1

LED2

LED3

SW4

SW3

Gnd

SW2

SW1

D1

BAT42

MCLR1

PA02

PA13

PA24

PA35

PA46

PA57

RD8

WR9

PC217

PD2 21PD3 22PC4 23PC5 24PC6 25PC7 26PD4 27PD5 28PD6 29PD7 30CS10

VDD11

VSS12

OSC113

OSC214

PC015

PC116

PC318

PD019

PD120

VSS 31VDD 32PB0 33PB1 34PB2 35PB3 36PB4 37PB5 38PB6 39PB7 40U3/slave/

PIC16F877-04

C727pF

C827pF

Y2

4MHz

Gnd Gnd

Gnd

Gnd

12345678

9RN2

2K2

LED8

LED5

LED6

LED7

SW8

SW7

Gnd

SW6

SW5

R1

15KSW0

P1 10K

P210K

Gnd

Gnd

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

Page 57: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

57

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);

Page 58: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

58

} 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; }

Page 59: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

59

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;

Page 60: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

60

} 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); } } }//~!

Page 61: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

61

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.

Page 62: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

62

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:

.512

)(8 VxxV DEC

A ⋅−

=

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

.3137,05255)16( VVV DEC

A =⋅=

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

Page 63: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

63

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.

Tabela 6-1. Funkcije

Tabela 6-2. Tabela ASCII/DEC karaktera

Page 64: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

64

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

Page 65: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

65

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.

Page 66: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

66

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

Page 67: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

67

9 – PRILOG

Page 68: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

68

Page 69: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

69

Page 70: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

70

Page 71: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

71

Page 72: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

72

Page 73: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

73

Page 74: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

74

Page 75: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

75

Page 76: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

76

Page 77: KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 …es.elfak.ni.ac.rs/Papers/Djordjevic-Djordjevic-SPI-PICs.pdf · iskorišćen serijski komunikacioni modul SPI koji je integrisan u mikrokontrolerima

Mikroprocesorski sistemi –seminarski rad

77

10 – O AUTORIMA SEMINARSKOG RADA

Prezime: Đorđević Ime: Žarko Adresa stanovanja: Bulevar Nikole Tesle 45/2, Niš E-mail adresa: [email protected] 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 programskih paketa

WINDOWS XP, MS OFFICE, COREL DRAW, 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: [email protected] 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 programskih paketa

WINDOWS Vista, AutoCAD, EAGLE PROTEL 2004

Posebna interesovanja

Pretraživanje Interneta, čitanje stručne literature, biznis i mnoge druge stvari.

Sposobnosti Radoznalost, preduzimljivost, snalažljivost Napomene