AAndrejic - MRandjelovic - Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Port

Embed Size (px)

DESCRIPTION

energetika

Citation preview

  • ELEKTRONSKI FAKULTET NI Katedra za elektroniku Mikroprocesorski sistemi

    KOMUNIKACIJA MIKROKONTROLERA PIC18F4550 I RAUNARA PREKO

    SERIJSKOG I USB PORTA

    Studenti: Ana Andreji 10434 Magdalena Ranelovi 10620 Mentor: prof. dr Mile K. Stojev

  • 2

    SADRAJ UVODNA RE 03 /1/ SERIJSKI PORT I STANDARD 04 /2/ USB PORT I STANDARD 10 /3/ SPI KOMUNIKACIJA 15 /4/ DIGITALNI POTENCIOMETAR SA SPI INTERFEJSOM 18 /5/ MIKROKONTROLER PIC18F4550 25 /6/ SOFTVER ZA PIC MIKROKONTROLERE 44 /7/ REALIZACIJA PROJEKA 52 /8/ LABORATORIJSKA VEBA 68 PRILOZI 75 LITERATURA 84 CIRRICULUM VITAE 85

  • 3

    UVODNA RE

    Ideja seminarskog rada koji je pred Vama je da se demonstrira komunikacija mikrokontrolera PIC18F4550 i portova raunara (USB i serijskog). Na mikrokontroler su povezana dva potenciometra digitalni SPI i obrtni standardni potenciometar. Oba potenciometra imaju nominalnu vrednost 10 K.

    U radu su najpre opisani serijski i USB port raunara sa standardima, SPI komunikacija, a zatim je opisan digitalni potenciometar sa SPI interfejsom (MCP410xx).

    Peto poglavlje opisuje arhitrekturu i organizaciju mikrokontrolera PIC18F4550, a esto poglavlje opisuje razvojni sistem i softver koji su korieni za pomenuti mikrokontroler.

    U sedmom poglavlju se nalazi elektrina ema projekta sa opisom. U ovom poglavlju su priloeni programi u mikroC-u i opisan je proces programiranja mikrokontrolera PIC18F4550 preko PICFlash programatora.

    U osmom poglavlju je opisana laboratorijska veba po koracima (za samostalan rad studenata). Magdalena i Ana

  • 4

    /1/ SERIJSKI PORT I STANDARD

    Serijski port raunara, koji se drugaije naziva i komunikacijski (communication ili skraeno: COM) port, u mogunosti je i da prima i da alje podatke.U zavisnosti od toga da li serijski ureaji koriste razliite pinove za prijem i slanje ili samo jedan, mogue je razlikovati dva tipa komunikacije: full-duplex (informacije se mogu istovremeno prenositi u oba smera) i half-duplex (dok se informacije prenose u jednom smeru, prenos iz drugog smera je zabranjen).

    Serijski port zasniva rad na UART kontrolerskom ipu, koji predstavlja kljunu komponentu serijske komunikacije. Ovaj ip, s jedne strane prihvata bajtove podataka od mikroprocesorskog sistema, transformie ih u bitski niz i alje bit-po-bit. S druge strane, prihvata niz bita koji stiu od nekog spoljnjeg ureaja, pakuje ih u bajtove i predaje ih mikroprocesorskom sistemu. Veina ovih i-pova ima ugraene FIFO bafere za prijem podataka radi ubrzanja rada, to je ranije napomenuto.

    Postoje dva glavna oblika serijskog prenosa: sinhroni i asinhoni. Sinhoni prenos podrazume-va da predajnik i prijemnik dele zajedniki takt, ili da predajnik obezbedi poseban signal kojim e obavetavati prijemnik kada dolazi sledei podatak. Kod asinhronog prenosa ne postoji poseban signal ve se sinhronizacija vri pomou posebnih bitova koji se umeu.

    Slika 1. Principijelna blok-ema serijskog porta Serijski port PC raunara koristi se za serijski prenos podataka (bit-po-bit) i samim tim je sporiji

    od paralelnog porta. Ureaji koji koriste serijsku komunikaciju koriste dve vrste kablova i to: DCE (Data Communications Equipment) i DTE (Data Pin Equipment). DCE koriste modemi, ploteri i sl. dok se DTE koristi za vezu izmeu PC raunara. Elektrine osobine serijskog porta su definisane EIA (Electronics Industry Association) RS232C standardom, iji su parametri:

    Logika nula "SPACE" nalazi se u opsegu napona +3V do +25V Logika jedinica "MARK" je u opsegu -3V do - 25V Oblast izmeu -3 do + 3 V nije definisana Napon na kolu ne sme da pree 25V u odnosu na masu (GND) Struja kola ne sme prei 500 mA.

    Pored RS232C standarda postoje i novije verzije EIA-232D i EIA-232E, koje su objavljene 1987. i 1991. godine i to je prikazano u Tabeli 1.

  • 5

    PARAMETAR EIA 232 RS 423-A RS 422-A RS 485 nain rada nebalansiran

    i nebalansirani diferencijalni diferencijalni

    broj drajvera i prijemnika 1 drajver 1 prijemnik

    1 drajver 10 prijemnik

    1 drajver 10 prijemnik

    32 drajvera 32 prijemnika

    maksimalna duina kabla [m] 15 1200 1200 1200 maksimalna brzina prenosa podataka [bps]

    20 K

    100 K

    10 M

    10 M

    maksimalni napon na zajednikim krajevima [V]

    + 25

    + 6

    6 do 0.25

    12 do 7

    Drajverski izlazni signal izlaz drajvera [V]-min

    neoptereen

    5

    3,6

    2

    3,6

    izlaz drajvera [V]-max

    Optereen

    15

    6

    5

    3,6

    optereenje drajvera [] 3 7 K 450 (min) 100 (min) 60 (min) ''slew rate'' drajvera [V/s] 30 (max) spoljna kontrola n.d. n.d. izlazna struja kratkog spoja granina vrednost struje (mA)

    500 na Vcc

    150 na GND

    150 na GND

    150 na GND 200 na 7 ili 12 V

    izlazna otpornost drajvera []

    ukljueno napajanje

    n.d.

    n.d.

    n.d.

    12 K

    stanje visoke impedanse []

    iskljueno napajanje

    30 K

    60 K

    60 K

    12 K

    ulazna impedansa prijemnika [] 3 7 K 4 K(min) 4 K (min) 12 K (min) osetljivost prijemnika [V] 3 V 0,2 0,2 0,2 opseg ulaznog napona prijemnika [V]

    15

    12

    7

    -7 do 12V

    Tabela 1. Elektrine karakteristike EIA standarda

    Slika 2 Raspored pinova na konektoru DSUB-25

  • 6

    Inae, serijski port koristi dve vrste konektora: DSUB-25 (25-pinski) i DSUB-9 (9-pinski). Oblik konektora i raspored pinova na njima kao i glavni signali na pojedinim pinovima dati su na Slikama 2 i 3, i Tabeli 2, dok je opis svakog signala da u Tabeli 3.

    Slika 3. Raspored pinova na konektoru DSUB-9

    DSUB-25 DSUB-9 Signal Opis signala

    pin 2 pin 3 TD Transmit Data pin 3 pin 2 RD Receive Data pin 4 pin 7 RTS Request To Send pin 5 pin 8 CTS Clear To Send pin 6 pin 6 DSR Data Set Ready pin 7 pin 5 SG Signal Ground pin 8 pin 1 CD Carrier Detect pin 20 pin 4 DTR Data Pin Ready pin 22 pin 9 RI Ring Indicator

    Tabela 2. Signali na konektorima DSUB-25 (relevantni) i DSUB-9

    Signal Opis signala Znaenje signala TD Transmit Data Serijski izlaz podataka (TXD) RD Receive Data Serijski ulaz podataka (RXD) RTS Request ToSend Indicira da je modem spreman za razmenu podataka CTS Clear To Send Kada modem detektuje signal "Carrier" od modema sa

    druge strane linije, onda ona postaje aktivna DSR Data Set Ready DCE signalizira da je spreman za rad SG Signal Ground Masa CD Carrier Detect DCE javlja da je veza uspostavljena

    DTR Data Pin Ready Indicira DCE ureaju da je DTE spreman RI Ring Indicator Signalizira detekciju signala "zvona" na telefonskoj liniji

    Tabela 3. Znaenje pojedinih signala

    Oblik signala kod RS232 standarda dat je na donjoj slici.

  • 7

    Slika 4. Oblik signala kod RS232 standarda

    Situacija kada nema slanja podatka, tj. linija je slobodna, oznaena je MARK naponom. Prenos poinje kada linija pree u SPACE stanje, to predstavlja START bit. Iza start bita dolaze bitovi podataka i to tako da je jedinica predstavljena negativnim naponom, a nula pozitivnim. Ovo je najee u suprotnosti sa ustaljenom logikom da je +5 V logika jedinica, a 0 V logika nula. Problem reava prijemno kolo (npr. MAX232, ST232, ICL232, MAX3232, ST3232, ICL3232 itd.) konvertujui napo-ne tako da su prilagoeni naponima interfejsa koji se koristi. Posle bita podatka dolazi bit parnosti koji se koristi za detekciju jednostruke greke u prenosu. Iza bita parnosti signal se postavlja u MARK stanje to oznaava poetak STOP bita. Prema RS232 standardu broj stop bitova moe biti: 1, 1.5 ili 2. Nakon zavretka STOP bitova, linija je spremna za slanje novog karaktera. PC raunari koriste kao DATA bite najee 7 ili 8 bita. Izmeu slanja dva karaktera linija se nalazi u MARK stanju, a u toku prenosa vie puta prelazi iz MARK u SPACE stanje u zavisnosti od broja jedinica i nula. To znai da se linija moe nalaziti u SPACE stanju najvie u sluaju kada karakter sadri sve nule. Ova osobina prenosa upotrebljena je za uvoenje specijalnog znaka nazvanog BREAK (prekid). Ovaj se signal ko-risti kako bi se dala prijemniku signalizacija da je dolo do problema u slanju podataka.

    Serijski prenos poinje tako da predajna strana alje prijemnoj strani signal RTS - zahtev za slanjem, dok prijemnik ako je spreman za prijem odgovara signalom CTS - spreman za prijem. Predajnik zatim alje podatke prijemniku. Nakon prijema podataka, prijemnik proverava da li su podaci primljeni bez greke i za to vreme javlja predajniku da je zauzet. Ako su podaci primljeni bez greke, prijemnik alje predajniku signal potvrde ACK (Acknowledgment - ASCII 6), a u sluaju ako se pojavila neka greka, alje signal negativne potvrde NAK (ASCII 21). Zavisno od upotrebljenog protokola, odgovor predajnika na dobijeni NAK signal moe biti ponovno slanje podataka.

    Protokol za prenos moe se izvesti na dva naina i to: hardverski i softverski. Za realizaciju hardverskog protokola neophodno je da postoje linije: RTS, CTS i linija za prenos bitova poruke. Softverska realizacija koristi umesto linija RTS i CTS, ASCII znakove XON i XOFF (nazivaju su i DC1 i DC3), zbog ega je umesto tri dovoljna samo jedna linija. Kada se primenjuje ovaj protokol prijemnici i na predaji i prijemu proveravaju svaki prispeli znak radi utvrivanja da li je to XON, XOFF ili podatak. Strana koja ne moe da primi karakter kao indikator tog stanja drugoj strani alje XOFF znak.

    Prilikom serijskog prenosa podataka mogua je pojava sledeih vrsta greaka:

    Greka uokvirenja ili greka rama podatka (framing error). Do ove greke dolazi u sluaju kada prijemnik oekuje STOP bit ali se on ne pojavljuje.

    Greka prekoraenja (overrun error). Nastaje kada se pojavljuje novi znak u prijemniku a prethodni nije upotpunosti primljen.

    Greka parnosti (parity error). Nastaje kada bit parnosti ne odgovara stanju bitova u bitovima podatka.

    Standardno za vezu dva PC raunara koristi se takozvani Null Modem kabl, iji je raspored pinova prikazan na Slici 5.

  • 8

    Slika 5. Izgled null-modem kabla Sa slike se vidi da su i na prijemnoj i predajnoj strani spojeni signali DTR, DSR i CD kao i RTS i CTS, dok su signali TD i RD ukrteni. Za testiranje serijskog porta i izradu programa koristi se kabl sa zatvorenom petljom (Loop Back) prikazan na Slici 6.

    Slika 6. Kabl sa zatvorenom petljom za testiranje

    Serijska komunikacija se kod PC raunara izvodi upotrebom Intelovog UART kola 8250 kod XT ili 16450 kod AT raunara. Oba su kola slina, s tim to kolo 16450 ima neke naprednije karakteristike. Kolo 8250 sadri 10, dok kolo16450 ima 12 programabilnih jednobajtnih registara. Svaki port (COM1 i COM2) ima po jedno UART kolo koja se vezuju na linije prekida IRQ3 i IRQ4. Standardno se koriste dva porta, a mogue je i vie sa adresama i IRQ. Bazne adrese COM portova nalaze se u BIOS-u na adresama datim u Tabeli 5, dok je u Tabeli 6 data grupa registara koju koristi serijski port raunara.

  • 9

    Naziv Adresa IRQ COM 1 3F8 4 COM 2 2F8 3 COM 3 3E8 4 COM 4 2E8 3

    Tabela 4. Adrese COM portova

    Startna adresa Opis 0000:0400 Poetna adresa COM1 0000:0402 Poetna adresa COM2 0000:0404 Poetna adresa COM3 0000:0406 Poetna adresa COM4

    Tabela 5. Bazne adrese COM portova u BIOS-u

  • 10

    /2/ USB PORT I STANDARD

    Prvi PC raunari koristili su tri porta i to: jedan za tampa (LPT) i dva serijska(COM1 i COM2) pri emu je jedan od njih veinom bio zauzet od strane serijskog mia. Meutim njihova sve vea primena rezultovala je pojavu razliitih ureaja koji se na njih ukljuuju kao to su skeneri, digitalne fotoaparati i slino. To je uzrokovalo uvoenje USB porta Universal Serial Bus) koji je standardizovan 1996. godine.

    Porastom broja razliitih periferija koje se mogu prikljuiti na raunar dolazilo je do sledeih problema:

    prikljuivanje dodatnih periferija na raunar koji ima samo 2 serijska i 1 paralelni port je zahtevalo dodavanje novih kartica koje bi predstavljale vezu izmeu raunara i date periferije to je zahtevalo dodatne resurse (jedan slot u samom raunaru i po pravilu jedan IRQ prekid, a neto ree i DMA kanal), neki ureaji su projektovani tako da koriste odreeni IRQ ili port tako da je lako dolazilo do konflikata u IRQ mapi ili na DMA kanalima, deljenje datih portova (serijski, paralelni) sa nekim drugim ureajem (npr: tampa i skener na paralelnom portu ) to je dovodilo do nepredvidljivih problema ili potrebe da se kablovi ureaja po potrebi ukljuuju i iskljuuju sa datog porta, to je nekim situacijama vrlo opasno (dolazi do spaljivanja portova na raunaru odnosno ureaju).

    Njegovim uvoenjem nastojalo se da se ree sledei problemi:

    reenje u vezi ogranienja broja slotova na osnovnoj ploi kao i broja portova PC raunara jednostavno proirenja PC raunara upotrebom softverskih drajvera mogunost napajanja eksternih ureaja koji malo troe od strane raunara omogueno je prikljuenje do 127 eksternih ureaja na glavni USB port, pa se time reava

    ogranienje koje je pre postojalo: jedan ureaj - jedan slot. omoguene su velike brzine prenosa do 12 Mb/s pojednostavljuju se kablovi za prikljuenje ureaja a njihova duina se poveava omoguena je kontrola potronje eksternih ureaja podrano je autokonfigurisanje ovih ureaja po principu PnP detekcije novih ureaja u

    raunaru.

    USB port podrava dve brzine prenosa i to: veliku brzinu kada se prenos kree do 12 Mb u sekundi, i za sporije ureaje niu brzinu prenosa do 1.5 Mb u sekundi. USB port koristi etveroilni kabl preko koga se prenose podaci i napajanje sa impedansom 90 W to je dato na Slici 7.

    Za prenos podataka koriste se dve linije D+ i D-. Kada se prenosi logika nula linija D- je na veem potencijalu od linije D+ dok je u sluaju prenosa logike jedinice obrnuto. Predajnici moraju da daju napon vei od 2.8 V sa optereenjem od 15 kW. Prijemnici moraju da imaju simetrian ulaz pri emu do promene stanja dolazi ako se na ulazu prijemnika naponi razlikuju za vie od 200 mV. Svaka linija za prenos podataka ima i nesimetrian prijemnik za detekciju greke koja se pojavi ako su obe linije podataka nau na istom naponu. Kada se radi o brzom USB prenosu tada se na liniju D+ prikljuuje opteretni otpornik(pull-up) reda 1.5 kW, dok se kod sporog prenosa on ukljuuje na liniju D-. Na izlazima drajvera linija D+ i D- prikljuuju se opteretni otpornici reda 15 kW. U sluaju kada USB eksterna jedinica nije pod naponom i kada je drajverski izlaz porta u stanju visoke impedanse preko ovih otpornika se odreuje brzina prenosa. Preko njih se takoe odreuje da je eksterni ureaj

  • 11

    povezan na USB vor. Kada ureaj nije povezan na USB vor njegovi izlazni drajveri bie u stanju visoke impedanse i obe linije e biti na potencijalu mase, koje se naziva nesimetrina nula SE0(Singl Ended 0). Povezivanje ureaja na vor on e dobiti napajanje ali njegovi izlazi i dalje e biti u stanju visoke impedanse, dok e napon na liniji podataka porta koji je povezan na opteretni otpor postati visok to moe da detektuje vor. U sluaju ako se ne alju USB paketi, linije podataka nalaze se u stanju visoke impedanse. Za prikljuenje USB ureaja koriste se konektori prikazani na Slici 8.

    Slika 7. Presek USB etvoroilnog kabla

    Slika 8. etvoropinski USB konektori

    Standardni USB kabl za prikljuenja eksternih USB ureaja je oblika kao na Slici 9, dok je

    organi-zacija USB bus-a prikazana na Slici 10.

    Slika 9. etvoropinski USB kabl

  • 12

    Slika 10. Organizacija USB bus-a

    Iz prikazane slike vidi se da se USB bus-a moe predstaviti sa tri nivoa i to: Nivo USB ureaja (USB Interface Layer) koji obezbeuje fiziku vezu za prenos signala i

    paketa izmeu raunara i USB ureaja. Ovaj nivo omoguuje sistemskim programima koji kontroliu USB bus, rad sa optim funkcija koje koristi USB ureaj,

    Nivo funkcije se ostvaruje upotrebom klient softvera (Client SW), Nivo interfejsa obezbeuje da se fiziki obavlja komunikacija.

    Sistem USB povezivanja deli se na etiri funkcionalno zaokruene celine: USB ureaj (USB Physical Device), klijent softver (Client Software), USB sistemski softver (USB System Software), glavni USB kontroler (USB Host Controller).

    USB predtsvlja neki eksterni ureaj koji se prikljuuje na USB i koji izvrava zahtevane funkcije.

    Klijent softver omoguava da se izvri prenos podataka izmeu eksternog USB ureaja i raunara i najee ga isporuuje proizvoa USB ureaja. USB sistemski softver je deo operativnog sistema za podrku USB ureaja i isporuuje se uz operativni sistem. Glavni USB kontroler zaokruuje u jednu celinu hardver i softver koji omoguuje rad USB ureaja.

    USB ureaji sa raunarom komuniciraju slanjem paketa. Na poetku paketa slanja paketa linija za prenos podataka se postavlja u suprotno stanje od onog u kome se nalazi u mirnom stanju, dosk se na kraju paketa podataka, ova linija postavlja u SE0 stanje u duini trajanja od dva bita.

    USB ureaji mogu se resetovati na nekoliko naina od koji se esto koristi pristup kada se linija podataka postavi u SE0 stanje u trajanju od 10ms. U sluaju ako USB bus se nalazi u mirnom stanju veem od 3 ms tada eksterni USB ureaji mogu prei u stanje male potronje ako to podravaju. Vraanje u radno stanje treba da traje najdue 20 ms. Prenos podatka se vri upotrebom NRZI metoda kodiranje (Non Return Zero Invert) to znai ako se pojavi logika jedinica ona e trajati celom svojom

  • 13

    duinom, odnosno nee doi do promene naponskog nivo. U sluaju pojave povorki nula napon se linije menja za svaki bit, to se koristi za uspostavljanje signala takta na prijemu. Kada se u povorci podataka pojavi est uzastopnih jedinica radi sigurnosti na prijemu, vri se umetanje bita tj. ubaci se jedna nula koja se na prijemu izbacuje.

    Preko USB bus-a kao to smo videli prenosi se i napon napajanja V+ koji iznosi + 5V, uz maksimalno optereenje do 5A, pri emu potronja pojedinane eksterne jedinice ne sme prei 400 mA kada je u radnom stanju a u stanju mirovanja 500 mA. Ovaj uslov ne mogu ispuniti svi USB ureaji tako da u tom sluaju moraju koristiti sopstveno napajanje. Iako takvi ureaji koriste takvo napajanje, napon USB kabla koriste i ovi ureaji radi provere od strane raunara koji je od ureaja povezan na USB bus. Prilikom inicijalizacije USB sistema po ukljuenju raunara on pribavlja podake o svim ureajima koji povezani na USB radi numerisanja bus-a (bus enumeration).

    Za ispravan rad USB ureaja koji su povezani na raunare svaki od njih mora da ima adresu koje se kreu u opsegu od 0 do 128 i dodeljuje ih raunar prilikom konfigurisanja bus-a. Adresa 0 je adresa koju koristi raunar za postavljanje ureaja povezanih na USB bus i ne mogu je koristiti eksterni ureaji.

    Podaci koji se alju preko USB bus dele se u pakete pri emu veliina jednog paketa ne sme biti vea od 8 Kb. Raunar deli vreme u intervale duine 1 ms i u svakom intervalu alje jedan paket koji poinje sa SOP bitom. Sledei se paket razdvaja od prethodnog sa EOP to je prikazano na donjoj slici:

    Na poetku svako paketa se alje sinhronizacioni bajt koji se sastoji od sedam nula i jednom jedinicom (80H). Na osnovu ovog bajta sinhrono kolo na strani prijemnika generie taktni signal. Nako sinhronizacionog bajta sledi polje za identifikaciju paketa PID (Packet Identifier), kod koda se prva 4 bita koriste za identifikaciju vrste paketa, dok su sledea etiri bita(vee teine) invertovani biti PID-a na osnovu ega se proverava tanost primljenog PID-a. Polje PID definie vrstu paketa i njegov format kao i tip detekcije greke. Postoje sledei oblici paketa u USB komunikaciji:

    SOF paket iji je PID=0101 koji alje 11 bitni podatak o broju rama (frame), kao i 5 bita CRC detekcije.

    Setup, IN i OUT paketi imaju oblik kao na gornjoj slici. Setup paket iji je PID=1101 vri setovanje funkcije od strane raunara i sadri tekuu i krajnju (Endpoint) adresu. IN paket iji je

  • 14

    PID=1001 je prvi paket od od eksternog ureaja prema raunaru. OUT paket iji je PID=0001 je prvi paket koji raunar alje periferijskom ureaju.

    Data0 paket ija je PID=0011 je paran paket podataka koji sadri do 1023 bajta podataka. Data1 paket ija je PID=1011 je neparan paket podataka. Ovi paketi za CRC kontrolu koriste 16 bita.

    Ack paket koji ima PID=0010 je potvrda prijemnika da je paket primljen bez greke. Nak paket koji ima PID=1010 je je odgovor predajnika o neispravno primljenom paketu. Stall paket koji ima PID=1110 pokazuje da je neko odredite zagueno tj. ne moe da primi sve do tada poslate pakete. Prenos podataka poinje tako to raunar poalje paket u kome je definisan tip i smer prenosa, adresa USB ureaja i adresa krajnjeg odredita. Ovaj se paket naziva token. Adresirani ureaj detektuje svoju adresu iz adresnog polja i time bude selektovan i postaje spreman za prijem ili predaju podataka Primalac odgovara slanjem odzivnog paketa (handshake packet) izvetavjui o uspenosti prenosa. Adresiranje ureaja vri se preko adresnog polja paketa od 7 bita. Adresa se koristi sa kod IN, OUT ili Setup paketa. Paket SOF sadri broj ramova od 11 bita pri emu se njegov sadraj inkrementira za svaki novi ram sve do vrednosti 7FFH. Paketi podatataka Data0 i Data1 sadre do 1023 bajta. Ova dva paketa omoguuju jednostavnu sinhronizaciju predajnika i prijemnika u sluaju zahteva predajnika za ponovnim slanjem radi greke u prenosu. Predajnik alje novi paket tek kada od prijemnika dobije potvrdu o uspenosti tj. paket Ack. Prvo se alje paket Data0 pa paket Data1 i tako naizmenino. Svi paketi imaju na kraju bite za redundantu proveru CRC da li je paket ispravno primljen. Pri prenosu podataka uvek se obavlja komunikacija u oba smera i uvek je inicijalizirana od strane raunara. Smer prenosa definie raunar slanjem IN ili OUT paketa. U IN paketu raunar zahteva od eksternog USB ureaja da mu poaalje podatke. Nakon ovog paketa eksterni ureaj ili raunar alje Data paket, pri emu se na kraju svakog primljenog paketa strana koja je vrila prijem alje potvrdu uspenosti slanje tj. Ack, Nak ili Stall paket. Iz opisa USB porta vidimo da ureaji koji se na njega prikljuuju moraju imati visok nivo "inteligencije" kako bi podrali navedeni standard. Zbog toga se u njima nalaze najee mikrokontroleri koji podravaju ovu komunikaciju i koji su za ovu vrstu standarda i razvijeni. Programiranje je znatno tee budui da navedeni protokoli moraju biti podrani. Zbog toga nauiti programiranje USB porta je svakako i najvei domet u programiranju portova.

  • 15

    /3/ SPI KOMUNIKACIJA

    SPI (Serial Peripheral Interface) standard za sinhronu serijsku komunikaciju razvijen je od strane Motorolinih inenjera, za potrebu brzog i pouzdanog serijskog prenosa podataka na manjim rastojanjima (do 3m). Prvobitno, ovaj standard je bio predvien za komunikaciju sa perifernim ureajima, ali je vremenom razvijena i mogunost komunikacije izmeu vie mikro-kontrolera ili mikroprocesora .

    Postoji iroka paleta perifernih ureaja baziranih na SPI od obinih TTL pomerakih (shift) registara, do SPI memorija, displeja, A/D konvertora itd.

    Tip komunikacije Maksimalna brzina Opis SCI 125 Kb/s MCU takt = 2MHz SPI 1 Mb/s MCU takt = 2MHz, Master SPI 2 MB/s MCU takt = 2MHz, Slave

    Tabela 6. Poreenje brzina komunikacija preko SCI i SPI

    Tabela 6 pokazuje kako je SPI komunikacija oko 10 puta bra od SCI komunikacije (Standard Communication Interface) kada mikrokontroler radi kao master, i oko 20 puta bra kada mikro-kontroler radi kao slave. Takoe se vidi da kada mikrokontroler radi kao slave, mogua 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). Odgovarajui Intel-ov serijski interfejs nosi naziv Programibilni komunikacioni interfejs (Programmable Communication Interface, ili PCI) itd. U praksi, pomenuti interfejs koriste U(S)ART ipovi, odnosno U(S)ART integrisana kola, kao na primer: Intel 8251, INS 8250-B INS 16450, 16550 itd.

    SPI PROTOKOL

    Pri SPI prenosu, podaci se alju preko pomerakog registra sa serijskim izlazom, a primaju preko pomerakog registra sa serijskim ulazom. U bilo kom trenutku moe da postoji jedan master, kako bi se osigurala ispravna komunikacija.

    Kao to je prikazano na Slici 11 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 linija 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 sluaju da je komunikacija iskljuivo jednosmerna, svakako da se moe ostvariti sa tri linije (bez MOSI ili MISO, zavisno od sluaja).

    SCK (SPI Clock). Ovo je linija za takt pod kojim se izvodi komunikacija. Takt daje master, a pomeraki registar slave-a prima podatke, odnosno oitava ulaz na promenu ovog takta.

  • 16

    SS (Slave Select). Ovaj pin mikrokontrolera se vee na liniju za selektovanje slave-a. Kada mikrokontroler radi kao slave, i kada je ovaj (u sluaju ulazni) pin na visokom nivou, onda se takt sa SCK linije i podaci sa MOSI linije se ignoriu. Tek kada se dovede SS na nizak nivo, SPI sistem slave-a prati promene na pinovima koji su vezani za ovaj tip komunikacije i moe da primi i poalje informaciju. Kada mikrokontroler radi kao master, SS pin ima dve opcije. Moe da se konfigurie kao ulazni pin i da setuje odreeni fleg (flag), tj. da inicira prekid u sluaju da mu bude doveden nizak nivo. To je dobra opcija za meuprocesorsku komunikaciju. Na ovaj nain moe uspeno da se eliminie mogunost da vie mikrokontrolera u datom trenutku pokuaju da budu masteri. Ovo se reava softverski. SS pin takoe moe da se konfigurie kao izlazni, i da selektuje neki slave, ili da obavlja bilo kakvu funkciju nezavisnu od SPI podsistema mikrokontrolera.

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

    U sluaju povezivanja vie 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 treu liniju, kao sto je prikazano na Slici 11.

    Slika 11 je primer vezivanja kada samo jedan mikrokontroler moe da bude master. Ako uloga mastera treba da bude promenljiva, onda svaki mikrokontroler treba da ima pojedinanu vezu sa SS pinovima ostalih mikrokontrolera.

    Zamislimo strukturu sa dva pomeraka registra povezana kao na Slici 12. Neka sa strane sa koje su povezani medusobno, registri imaju serijske ulaze i izlaze. Sa stanovita programera, kakvi su ulazi i kakva je logika nije bitno. Pinovi za podatke (DATA1) su povezani zajedno, i to predstavlja jednosmernu liniju sa koje pomeraki registar 1 predaje podatke pomerakom registru 2. Pinovi za podatke (DATA2) su povezani zajedno, i to je jednosmerna linija sa koje pomeraki registar 2 predaje podatke pomerakom registru 1. Pinovi za takt (CLOCK) su zajedniki (to je jednosmerna linija sa koje pomeraki registar 1 alje takt, bez razlike u kojem smeru se prenose podaci). Pinovi za omoguavanje komunikacije (ENABLE) su vezani zajedno to je jednosmerna linija preko koje pomeraki registar 1 omo-guava (dozvoljava) rad pomerakom registru 2.

    Kada prvi pomeraki registar alje poruku drugom, redosled operacija je sledei:

  • 17

    1. Preko linije ENABLE, prvi registar omoguava rad drugom, odnosno omoguava da drugi na svakom prelazu na liniji CLOCK iz visokog na nisko nivo (ili obrnuto, zavisno od logike), proita 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 zavri sa prenosom, postavlja linije CLOCK i ENABLE u stanje mirovanja (idle state).

    Slika 12. 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 poalje. Poslednja pretpostavka u analogiji meumikrokontrolerske SPI komunikacije podrazumeva da je u registar za slanje slave-a programski ve postavljena informaciju koja se trai. Redosled operacija je:

    1. Preko linije ENABLE, prvi pomeraki registar omoguava rad drugom ili, preciznije,

    omoguava 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 reeno, drugi pomeraki registar preko linije CLOCK dobija takt pod kojim e slati signale.

    3. Kada drugi zavri sa prenosom, onda prvi postavlja linije CLOCK i ENABLE u sta-nje mirovanja. Prvi zna da je prenos zavren kada se na liniji CLOCK zavri 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 poalje poruka preko SPI kanala od mastera ka slave-u. Ono to elimo da naglasimo jeste nain slanja podataka slave-master.

    U kom trenutku treba slave da poalje poruku, odluuje master. On tada alje takt na liniju CLOCK. Da bi poslao takt, zbog automatizovane SPI kontrolne i upravljake logike, master, u stvari, mora da poalje poruku na magistralu i normalno da selektuje slave-a.

    Sve to je navedeno opisuje sutinu SPI komunikacije. Svakako da ima mnogo detalja koji varira-ju u zavisnosti od mikrokontrolera i perifernog ureaja, ali to se mnogo lake usvaja kada se poznaju osnovni principi.

  • 18

    /4/ DIGITALNI POTENCIOMETAR SA SPI INTERFEJSOM

    Karakteristike

    svaki potenciometar iz serija MCP4XXXX ima 256 stanja/nivoa Vrednosti potenciometra od 10 k, 50k i 100 k Jednokanalna (single) ili dvokanalna (dual) verzija SPI TM serijski interfejs (modovi 0, 0 i 1,1) 1 LSB max INL & DNL realizovan u CMOS tehnologiji male potronje Maksimalna struja napajanja od 1A prilikom izvrenja operacija u statikom reimu rada Omogueno povezivanje (ulanavanje) vie ureaja (samo MCP42XXX) Mogunost shutdown-a otvorenih kola svih otpornika radi maksimalne utede energije Hardverski shutdown putem pina dostupan samo na MCP42XXX Operie sa jednim napajanjem (2.7 5.5V) Industrijski temperaturni opseg: -40 C +85 C Proireni temperaturni opseg: -40 C +125 C

    Slika 13. Blok ema digitalnog potenciometra

    Opis

    MCP41XXX i MCP421XXX su digitalni potenciometri sa 256 pozicija, dostupni u verzijama od 10 k, 50k i 100 k. MCP41XXX je jednokanalni (eng. single) ureaj i isporuuju se u 8-pinskom PDIP ili SOIC kuitu. MCP42XXX poseduje dva nezavisna kanala u 14-pinskom PDIP, SOIC ili TSSOP kuitu. Pozicija klizaa kod MCP41XXX/42XXX se menja linearno i kontrolie se pomou

  • 19

    SPI interfejsa, industrijskog standarda. Ureaji imaju potronju manju od 1A u statikom reimu rada. Softversko iskljuivanje se izvodi razdvajanjem A pina od otpornog dela i simultanog povezi-vanja klizaa na B pin. Dvokanalna (eng. dual) verzija MCP42XXX ureaja ima SHDN pin koji obavlja istu funkciju hardverski. Za vreme shutdown moda, sadraj klizakog registra je mogue promeniti, pa potenciometar ima novu vrednost nakon izlaska iz shutdown moda. Kliza se postavlja na sredinu skale (pozicija 80h) nakon ukljuenja. RS (reset) pin omoguuje hardversko resetovanje i takoe vraa kliza na sredinu skale. MCP42XXX SPI interfejs ukljuuje pinove SI i SO, omoguujui povezivanje deljivih ureaja. Otpornost izmeu pojedinanih kanala na MCP42XXX varira manje od 1%. Ova serija digitalnih potenciometara operie sa jednim izvorom napajanja od 2.7 5.5V i specifici-rana je preko industrijskih i proirenih temperaturnih opsega.

    Slika 14. Raspored pinova na kuitima Opis pinova

    1) PA0, PA1 Veza A pina potenciometra 2) PB0, PB1 Veza B pina potenciometra 3) PW0, PW1 Veza klizaa potenciometra

  • 20

    4) Izbor ipa, chip select ( CS ) Ovo je SPI port i koristi se za izvrenje nove komande nakon to je ista uitana u pomeraki (eng. shift) registar. Ovaj pin ima mitov triger na ulazu. 5) Serijski Takt, Clock (SCK) Ovaj SPI port se koristi za taktovanje novih podataka koji se unose u registar. Podaci se unose putem SI pina na rastuu ivicu takta, a eksportuju se preko SO pina na opadajuu ivicu takta. Ovaj pin je kontrolisan od strane CS pina (tj., ureaj nee povlaiti struju ukoliko je SCK pin u radnom reimu, kada je CS pin na visokom naponskom nivou). Ovaj pin ima mitov triger na ulazu. 6) Serijski Unos Podataka (SI) Ovo je SPI port za serijski unos podataka. Komandni i bajtovi podataka se unose u pomeraki registar putem ovog pina. Ovaj pin je kontrolisan od strane CS pina (tj., ureaj nee povlaiti struju ukoliko je SCK pin u radnom reimu kada je CS pin aktivan, tj. na visokom nivou). Ovaj pin ima mitov triger na ulazu. 7) Serijski Izlaz Podataka (SO)

    (Prisutan samo u MCP42XXX seriji)

    Ovo je SPI serijski izlazni pin podataka i koristi se za povezivanje vie urreaja. Podaci se eksportuju preko SO pina na opadajuu ivicu takta. Ovo je push-pull izlaz i ne prelazi u stanje visoke impedanse kada je CS na visokom nivou. Prelazi na niski logiki nivo kada je CS na visokom logikom nivou. 8) Reset ( RS )

    (Prisutan samo u MCP42XXX seriji)

    Reset pin postavlja sve potenciometre na sredinu skale (kod 80h), ukoliko je na niskom logikom nivou najmanje 150ns. Ovaj pin ne bi trebao da se postavlja u nisko logiko stanje kada je SHDN na nuli. Sa namerom smanjenja potronje, ovaj pin poseduje aktivno pull-up kolo. Ovaj pin povlai zanemarljivu struju na nivoima logike nule i logike jedinice. Pin Rreset ne sme ostati nepovezan. 9) Shutdown (SHDN )

    (Prisutan samo u MCP42XXX seriji)

    Pin Shutdown ima mitov triger na ulazu. Kada je na pinu stanje logike nule, kolo se postavlja u mod za smanjenje potronje (eng. idle mod), kada je A pin otvoren, a B i W pini povezani, za sve potenciometre. Ovaj pin ne bi trebalo postavljati na niski logiki nivo kada je CS pin na niskom logikom nivou. U cilju minimizacije potronje energije, ovaj pin poseduje aktivno pull-up kolo. Ovaj pin povlai zanemarljivu struju kada je na nivoima logike nule i logike jedinice. SHDN pin ne sme ostati nepovezan.

  • 21

    Tabela 7. Znaenje pojedinih pinova (8-pinski potenciometar)

    Pin#

    Name Function 1 CS Chip Select 2 SCK Serial Clock 3 SI Serial Data Input 4 Vss Ground 5 PB1 Pin B Connection For Pot 1 6 PW1 Wper Connection For Pot 1 7 PA1 Pin A Connection For Pot 1 8 PAO Pin A Connection For Pot 0 9 PWO Wper Connection For Pot 0 10 PBO Pin B Connection For Pot 0 11 RS Reset Input 12 SHDN Shutdown Input 13 SO Data Out for Daisy-Chaining 14 VDD Power

    Tabela 8. Znaenje pojedinih pinova (14-pinski potenciometar)

    Informacije o aplikaciji

    Serije MCP41XXX/42XXX su jednokanalni/dvokanalni digitalni potenciometri sa 256 pozicija i

    mogu se koristiti umesto standardnih mehanikih potenciometara. Dostupne su otpornosti od 10 k, 50k i 100 k. Kao to moemo videti na Slici 15, svaki od potenciometara se sastoji od promenljivog otpornika i 8-bitnog (256 pozicija) registra podataka koji odreuje poloaj klizaa. Nominalne otpornosti klizaa su 52 za verziju od 10 k i 125 za verzije od 50k i 100 k. Za sluaj dvokanalnih potenciometara, varijacije podudarnosti od kanala do kanala su manje od 1%. Otpornost izmeu klizaa i krajnje take bilo kog od otpornika menja se linearno, u zavisnosti od vrednosti smetene u registar podataka. Kod 00h povezuje kliza sa B pinom. Prilikom dovoenja napajanja, svi registri podataka se automatski postavljaju na vrednost sredine skale (80h). Serijski interfejs omoguuje uitavanje podataka u pomeraki registar, koji se onda prosleuje registrima podataka. Serijski interfejs takoe omoguuje postavljanje pojedinanih potenciometara u shutdown mod (reim rada), kako bi omoguila minimalna potronja energije. SHDN pin se upotrebljava za postavljanje svih potenciometara u shutdown mod, a RS pin omoguuje postavljanje svih potenciometara na sredinu skale (80h).

    Pin#

    Name

    Function 1 CS

    CS Chip Select

    2 SC Serial Clock 3 SI Serial Data Input 4 Vss Ground 5 PA Pin A Connection 6 PW Wiper Connection 7 PB Pin B Connection 8 VDD Power

  • 22

    Slika 15. Detaljnija blok ema digitalnog potenciometra

    Slika 16. Povezivanje digitalnog potenciometra i mikroprocesora

    Kada se neko kolo povezuje na digitalni potenciometar, potrebno je koristiti sprene konden-zatore. Ovi kondenzatore treba postaviti to je blie mogue pinu ureaja. Preporuena vrednost kondenzatora je 0.1 F. Digitalni i analogni putevi signala trebalo bi da budu to vie odvojeni na ploi; takoe, nijedan od tih puteva ne bi trebao da se prostire ispod digitalnog potenciometra ili sprenog kondenzatora. Veliku panju treba posvetiti putevima visokofrekventnih signala (kao to su linije takta) i drati ih to dalje od analognih vodova. Preporuuje se upotreba analogne ravne mase, kako bi potencijal mase bio isti za sve ureaje na ploi.

    Reimi rada Digitalni potenciometar se koristi/primenjuje u sledeim reimima rada:

  • 23

    reostatski mod potenciometarski (mod delitelja napona)

    Reostatski reim rada

    U reostatskom reimu rada, potenciometar se koristi kao otporni element sa dva kraja. Neiskorieni kraj treba povezati za kliza, kao to je prikazano na Slici 17. Napomenimo da obrtanje polariteta A i B pina nee uticati na izvrenje operacije.

    Slika 17. Reostatski reim rada (fiksna otpornost)

    Upotreba digitalnog potenciometra u ovom modu omoguava kontrolu ukupne otpornosti izmeu dva prikljuka. Izmerena otpornost bie najmanja prilikom koda 00h, kada je kliza vezan na B pin. Otpornost u sluaju ovog koda jednaka je otporu klizaa, koji tipino iznosi 52 za MCP4X010 ureaje od 10 k, 125 za verzije od 50k (MCP4X050) i 100 k (MCP4X100). Za digitalni potenciometar od 10 k, veliina LSB iznosi 39.0625 (ako usvajamo ukupnu otpornost od 10 k). Otpornost e se poveavati sa LSB korakom sve dok izmerena otpornost ne dostigne vrednost 9985.94 pri kodu FFh. Kliza se nikad ne povezuje na pin A otpornika.

    Za dvokanalne digitalne potenciometre, varijacija ukupne otpornosti od kanala do kanala izmeu pina A i B manja je od 1%. Meutim, varijacija otpornosti od jednog do drugog digitalnog potenciometra moe iznositi i do 30%. U reostatskom modu, otpornost ima pozitivan temperaturni koeficijent. Najvee razlike u zavisnosti od promene temperature javie se u prvih 6% kodova (kodovi od 00h do 0Fh) usled uticaja koeficijenta otpornosti klizaa na ukupnu otpornost. Na preostale kodove dominantan uticaj ima temperaturni koeficijent ukupne otpornosti R AB , koji tipino iznosi 800ppm/ C.

    Slika 18. Reostatski reim rada (promenljiva otpornost)

  • 24

    Potenciometarski mod

    U potenciometarskom modu, sva tri pina ureaja povezana su na razliite prikljuke u kolu. Ovo omoguava potenciometru da daje izlazni napon proporcionalan ulaznom naponu. Ovaj mod se ponekad naziva mod delitelja napona. Potenciometar se koristi za dobijanje napona koji se podeava pozicijom klizaa izmeu dva zavrna kraja, kako je to prikazano na Slici 18. Napomenimo da obrnut polaritet A i B pina ne utie na izvrenje operacije.

    U ovoj konfiguraciji, koeficijent interne otpornosti definie ukupan temperaturni koeficijent digi-talnog potenciometra. Otpornik koji se sastoji od R WB i R AB ima temperaturni koeficijent koji tipino iznosi 1ppm/ C (mereno pri kodu 80h). Pri niim kodovima, temperaturni koeficijent otpornosti klizaa je dominantan.

  • 25

    /5/ MIKROKONTROLER PIC18F4550

    PIC18F4550 pripada 18F seriji mikrokontrolera kompanije Microchip. Mikrokontroleri ovog proizvoaa se odlikuju malom cenom i to je vanije besplatnom tehnikom podrkom (kompajleri, razvojni sistemi, programatori).

    S obzirom da poseduju harvard strukturu, memorijska mapa je podeljena na programsku i memoriju za podatke kao i EEPROM. Procesor (CPU) mikrokontrolera koristi tehniku preklapanja, kako bi se sve instrukcije (osim grananja) izvravale jedan ciklus. Zbog toga se osnovni takt deli sa 4, jer se faze izvrenja naredbi preklapaju. Sve naredbe su fiksne duine od 2 bajta, tako da je adresiranje memorije ogranieno. Zbog toga se memorija deli na 16 stranica, a izbor stranice se vri u odgovara-juim kontrolnim registrima. Ova osobina znaajno usporava rad mikrokontrolera meutim napredniji kompajleri vre inteligentno plan-iranje raspodele memorije kako bi se varijable koje se zajedno koriste nalazile u istoj memo-rijskoj banci.

    Programska memorija je 32KB dok je RAM veliine 2 KB. Takoe postoji i 256B EEPROM-a. Procesor poseduje proireni skup instukcija u odnosu na ranije serije (16 i 17) kao i nove naine adresi-ranja. Tako su dodate naredbe za hardversko mnoenje i deljenje, inkrementiranje i dekrementriranje sa uslovnim skokom, naredbe za itanje tabela i druge. Programski broja je irine 21 bit i njemu se moe pristupati samo indirektno preko odreenih registara.

    Mikrokontroler poseduje i magacin (stack), ali se on naalost moe koristiti samo indirektno tako to se u poseban registar upisuje eljeni sadraj i potom posebnom instrukcijom sadraj tog registra stavlja na stek. Kod itanja sa magacina vrednost se takoe nalazi u tom registru. Oscilator prua brojne mogunosti prilikom izbora radnog takta koji je ujedno i takt za periferije. Maksimalni eksterni takt je 48MHz, to daje procesoru mikrokontrolera takt od 12MHz. Za tu svrhu se koristi PLL kolo i delitelji frekvencije. Najbitnije je da se za rad USB modula mikrokontrolera mora obezbediti takt od 24MHz, a PIC ima prednost u odnosu na konkurentske mikrokontrolere to taj takt moe biti neza-visan od takta za CPU i druge jedinice.

    Mehanizam prekida je organizovan kao jedan prekidni vektor koji sadri adresu prekidne rutine u kojoj se treba ispitati izvor prekida i preduzeti eljena akcija. Dakle, nema prekidnog vektora za svaki ili grupu izvora prekida to je jedan od nedostataka ovog mikrokontrolera, jer se time gubi na brzini i preglednosti koda.

    Ovaj mikrokontroler ima bogat skup hardverskih periferija koje mu omoguavaju primenu u brojnim aplikacijama.

    Slika 19. Mikrokontroler PIC18F4550 u kuitu DIP-40

  • 26

    Mikrokontroler poseduje 35 izlazno ulaznih linija koje se multipleksiraju sa data registrima portova i signalima drugih modula kao to je prikazano na slici:

    Od perifernih modula PIC18F4550 izdvojiemo veoma napredan integrisani USB 2.0 modul velike brzine sa 1KB memorije za podatke, 10 bitni 13-to kanalni AD konvertor, 4 tajmerske jedinice (dve imaju mogucnost PWM-a), SPI , I2C i USART modul.

    Radna frekvencija mikrokontrolera je do 48MHz, dok je efektivna vrednost frekvencije 4 puta manja zbog protonog rada procesora (pipelining-a).

    Nadalje emo detaljnije opisati USART i USB module mikrokontrolera PIC18F4550.

    Slika 20. Raspored pinova mikrokontrolera PIC18F4550 u kuitu DIP-40 Reimi rada mikrokontrolera

    Run mode: i CPU i periferija su ukljueni Idle mode: CPU je iskljuen a periferija ukljuena Sleep mode: i CPU i periferija su iskljueni Idle mode struja je do 5.8 A Sleep mode struja je do 0.1 A Oscilator Timer1: 1.1 A, 32 kHz, 2V Watchdog tajmer: 2.1 A Dvobrzinski startni oscilator.

    Struktura fleksibilnog oscilatora

    etiri kristalna reima rada ukljuujui i visoko precizni PLL za USB Dva spoljanja taktna reima rada, do 48 MHz Unutranji oscilator

    - 8 frekvencija koje bira korisnik, od 31 kHz do 8 MHz - Podeavanje koje bira korisnik zbog kompenzacije frekvencijskog drifta

  • 27

    Sekundarni oscilator koristi Timer1 Opcije dvostrukog oscilatora omoguavaju mikrokontroleru i USB modulu da radi na

    razliitim taktnim brzinama Fail-Safe taktni nadzor omoguava bezbedno iskljuivanje ukoliko se neki takt zaustavi

    Osobine periferije

    Svaki pin moe da prihvati/preda relativno veliku vrednost struje 25mA/25mA Tri spoljanja prekida etiri tajmera (Timer0 do Timer3) Do dva CCP (Capture/Compare/PWM) modula

    - Capture je 16-bitni, maksimalne rezolucije 6.25 ns (TCY/16) - Komparator je 16-bitni, maksimalne rezolucije 100 ns (TCY) - PWM izlaz: PWM rezolucija je od 1 do 10 bita

    Proiren CCP (Capture/Compare/PWM) modul - Multiple output reimi rada - Mogunost izbora polariteta - Programabilno mrtvo vreme - Automatsko iskljuivanje i automatski restart

    Proireni USART modul Modul master sinhronog serijskog porta (MSSP) podrava 3-ini SPI (sva etiri reima

    rada) i I2C master i slave reim rada 10-bitni 13-kanalni A/D konvertor sa pristupnim vremenom koje se moe programirati Dvostruki analogni komparator sa multipleksnim ulazom.

    Specijalne karakteristike mikrokontrolera

    C kompajler optimizirane arhitekture sa opcionim dodatnim skupom instrukcija 100 000 ciklusa upisivanja/brisanja (erase/write) proirene programske Flash memorije 1 000 000 upisivanja/brisanja ciklusa EEPROM memorije podataka Flash/Date EEPROM zadravanje due od 40 godina Mogunost samoprogramiranja tokom rada (ovo na primer dozvoljava CCS kompajler) Postoje nivoi prioriteta za prekide Jednociklusni mnoa 8 x 8 Proireni watchdog tajmer (WDT):

    - Period programiranja od 41 ms do 131 ms Zatita programskog koda Programiranje unutar sistema preko dva pina i napajanjem od 5V Debagovanje unutar sistema preko dva pina (ICD) Proireni ICD/ICSP port (samo za mikrokontrolere u 44-pinskom kuitu) irok opseg napona napajanja (od 2V do 5.5V)

  • 28

    Slika 21. Arhitektura mikrokontrolera PIC18F4550 nanoWatt Tehnologija

    Svi mikrokontroleri iz familije PIC18F2455/2550/4455/4550 imaju takve katakteristike da mogu znaajno da smanje potronju. Nain rada i procena smanjenja potronje mogu da budu:

    Alternate Run reim rada: U zavisnosti da li kontroler radi po taktu Timer1 ili unutranjeg oscilatora , smanjenje moe da bude i do 90%.

    Multiple Idle reimi rada: Kontroler moe da radi i sa iskljuenim CPU dok je periferija jo uvek aktivna. Na ovaj nain potronja iznosi oko 4% od potronje u normalnom reimu rada.

    On-the-fly prekidaki reim rada: Kontrola potronje se moe pozvati i u toku programa. Na ovaj nain se korisniku ostavlja mogunost promene reima rada rada u softverskoj apli-kaciji.

    Smanjena potronja u modulima mikrokontrolera: Poto je potronja vea kada se ko-riste i Timer1 i Watchdog tajmer, potreba za njim je minimizirana.

  • 29

    Opcije viestrukog oscilatora i njegove karakteristike

    Svi mikrokontroleri iz familije PIC18F2455/2550/4455/4550 pruaju dvanaest razliitih opcija oscilatora, dozvoljavajui korisnicima irok izbor u razvoju aplikacijskog hardvera. To podrazumeva:

    etiri reima rada koji koriste kristalni kvarc ili keramiki rezonator etiri reima rada koja koriste spoljanji takt Unutranji oscilator koji omoguuje takt od 8 MHz (2%) i INTRC izvor (aproksimativno

    31 kHz, koji ne zavisi od temperature i VDD) kao i opseg od 6 taktnih frekvencija koje koris-nik moe sam da izabere, izmeu 125 KHz i 4 MHz, to konano daje 8 taktnih frekvencija.

    PLL frekvencijski mnoa, dostupan i za visoke brzine i reim rada spoljnog oscilatora, to omoguava irok spektar taktnih brzina od 4 MHz do 48 MHz.

    Asinhroni dvostruki takt, omoguava USB modulu da radi na visokim frekvencijama dok ostatak mikrokontrolera se taktuje iz oscilatora male snage.

    Ostale specijalne karakteristike

    Izdrljivost memorije: Proirene Flash elije za obe programske memorije i za EEPROM memoriju podataka su procenjene da traju najmanje vie eares/write ciklusa vie od 100 000 za programsku memoriju i 1 000 000 za EEPROM. Zadravanje (uvanje) podataka bez osveavanja je procenjeno da bude vee od 40 godina.

    Mogunost samoprogramiranja: Ovaj ureaj moe da sam upisuje u prostor sopstvene programske memorije pod kontrolom unutranjeg softvera. Korienjem bootloader-a, koji je smeten u zatienom boot bloku na vrhu programske memorije, postaje mogue da se stvori aplikacije koja moe da unapreuje (update-uje) sama sebe.

    Proireni set instrukcija: Familija mikrokontrolera sa USB modulom (PIC18F2455/2550/ 4455/4550) uvodi dodatno proirenje standardnog seta instrukcija serije PIC18, uvodei dodatnih 8 instrukcija i Indexed Literal Offset Addressing reim rada. Cilj ovoga bio da bi se optimizovao program pisan na viem programskom jeziku kao to je C.

    Proiren CCP modul: U PWM reimu rada, ovaj modul omoguava 1, 2 ili 4 modulisana izlaza za kontrolisanje half-bridge i full-bridge drajvera. Ostale ka-rakteristike su auto-matsko iskljuivanje (za iskljuivanje PWM izlaza u toku prekida ili za neki drugi zadat uslov) i automatsko restartovanje (da bi se izlazi opet aktivirali onda kad su zadati uslovi opet ispunjeni).

    Proiren USART: Ovaj modul serijske komunikacije moe da vri standardne RS-232 operacije i prua podrku za LIN protokol. Druga proirenja ukljuuju automatsku detekciju brzine prenosa podataka (Automatic Baud Rate Detection) i 16-bitni Generator takta za prenos podataka (Baud Rate Generator) za poboljanje rezolucije. Kad mikrokontroler ko-risti unutranji oscilator, EUSART omoguava stabilnu operaciju za aplikaciju koja komu-nicira spolja bez korienja eksternog kristala (ili prati potronju snage)

    10-bitni A/D Konvertor: Ovaj modul aktivira programirljivo vreme konverzije, ime e kanal biti odabran i konverzija e se pokrenuti, bez ekanja na period odabiranja (na taj nain se smanjuje dodatni kod).

    Rezervisan ICD/ICSP Port: Ovaj modul ukljuuje debager (za pronalaenje greaka) i pi-nova za programiranje koji nisu u multipleksu sa nekim drugim funkcijama mikrokon-trolera. Ponuena kao opcija, ova funkcija omoguava korisnicima da razviju mone I/O aplikacije, sa mogunou programiranja i debagovanja u samom elektrinom kolu.

  • 30

    Organizacija memorije

    Memorija mikrokontrolera PIC18F4550 je organizovana u sledee tri celine:

    Programska memorija Memorija podataka (RAM) EEPROM memorija podataka

    Memorija podataka i programska memorija su odvojene, to omoguava istovremeni pristup

    prostoru ove dve memorije. EEPROM memorija podataka, za neku praktinu primenu, moe se smatrati kao periferni ureaj, s obzirom da se adresiranje i pristup odvija preko kontrolnih registra.

    Slika 22a. Programska memorija i magacin (stack)

    Organizacija programske memorije

    U mikrokontrolerima serije PIC18 integrisan je 21-bitni programski broja koji je u mogunosti da adresira programsku memoriju od 2 MB. Ukoliko se pristupi memorijskoj lokaciji izmeu 2MB-ne

  • 31

    adrese i gornje granice fiziki implementirane memorije, to e imati za posledicu uitavanje logikih '0' (NOP instrukcija).

    Mikrokontroler PIC18F4550 poseduje Flash memoriju kapaciteta 32KB i moe da memorie 16.384 instrukcije obima jedne rei.

    Mikrokontroleri iz serija PIC18 imaju dva vektora prekida:

    Reset vektor ija je adresa 0000h i Prekidni (interrupt) vektor ije su adrese 0008h i 0018h.

    Na Slici 22b su ilustrovani programska memorija i magacin tokom izvrenja nekog programa.

    Slika 22b. Programska memorija i magacin (stack) tokom izvrenja programa

    USART modul

    Univerzalni sinhroni/asinhroni serijski prmopredajnik ima mogunosti half i full duplex prenosa, automatske detekcije i kalibracije bodove brzine. Za komunikaciju se koriste I/O pinovi RC6 kao TX i RC7 kao RX za asinhroni prenos. Rad modula se kontrolie pomou 3 registra. U pitanju su:

    1. TXSTA : Predajni statusni i kontrolni registar sa sledeim bitovima: CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D CSRC nebitan kod asinhronog prenosa TX9 1 ukljuuje prenos devetog bita TXEN predaja dozvoljena sa setovanjem ovog bita SYNC 0 je sinhroni a 1 asinhroni reim rada BRGH setuje veliku brzinu prenosa TRMT status predajnog pomerakog registra, 1 registar je prazan TX9D deveti bit za prenos (najcee parnost)

  • 32

    2. TCSTA : Prijemni statusni i kontrolni registar sa sledeim bitovima: SPEN RX9 SREN CREN ADDEN FERR OERR c SPEN ukljuuje/iskljuuje serijski port RX9 1 ukljuuje prenos devetog bita SREN nebitan kod asinhronog prenosa CREN prijem podataka ukljuen setovanjem ovog bita ADDEN bit dozvole za detekciju adrese FERR bit za detekciju greaka rama (okvira) OERR bit za detekciju greaka prekoraenja RX9D deveti bit za prenos (najee parnost) 3. BAUDCON: Kontrolni registar generatora takta za brzinu prenosa ABDOF RCIDL RXDTP TXCKP BRG16 WUE ABDEN ABDOF bit poravnanja prilikom automatske akvizicije podataka RCIDL prijemni bit o reimu smanjene potronje RXDTP ako je 1, Rx podaci su invertovani TXCKP ako je 1, Tx podaci su invertovani BRG16 ukljuuje 16-bitni generator bodove brzine WUE aktivacioni (wake-up) bit dozvole ABDEN ukljuuje merenje brzine prenosa (brzina u baudima) sledeeg karaktera (55h)

    Izbor takta se vri setovanjem odgovarajuih bitova i upisom vrednosti u registarski par SPBRGH: SPBRG. U zavisnosti od kombinacije, koristi se sledea tabela za raunanje eljene brzine asinhrone komunikacije:

    Konfiguracioni bitovi SYNC BRG16 BRGH

    BRG/EUSART mod

    Formula za ra-unanje brzine

    0 0 0 8 bitni Fosc/[64(n+1)] 0 0 1 8 bitni Fosc/[16(n+1)] 0 1 0 16 bitni Fosc/[16(n+1)] 0 1 1 16 bitni Fosc/[4(n+1)]

    U dokumentaciji se mogu nai tablice sa standardnim bodovim brzinama i procentualnim odstupanjima za razliite konfiguracije takta procesora.

    Prenos podaka se vri preko predajnog i prijemnog kola asinhronog primopredajnika.

  • 33

    Slika 23. Predajno kolo USART modula

    TXREG sadri 8-bitni podatak koji se treba poslati. Kada se u ovaj registar upie neka vrednost njegov sadraj se prebacuje u TSR registar za pomeranje (iftovanje). Tada je TXREG prazan to moe izazvati prekid. TSR registar se ne puni podatkom iz TXREG sve dok se ne prenese poslednji stop bit. TSR je duine 9 bita. Prvih 8 je vrednost koja se uzima iz TXREG, dok je 9-ti bit bit parnosti (opciono). Kod prenosa svih 9 bitova prvo je potrebno upisati 9 bit pa onda vrednost u TXREG kako bi se izbeglo da se deveti bit upie posle naputanja 8-bitne vrednosti iz TSR registra. TSR se taktuje signalom iz baud rate generatora koji je, u stvari, takt za pomeranje (iftovanje). Ovaj registar je vezan za odgovarajui pin preko koga se prenose serijski podaci.

    Slika 24. Prijemno kolo USART modula

  • 34

    Prijemno kolo je sline konstrukcije i radi po slinom principu. Podaci sa ulaza se vode u datarecovery kolo koje radi na 16 puta veem taktu od brzine prenosa, kako bi se izbegle greke jer je brzina odabiranja/uzorkovanja vea od brzine prenosa. Primljeni podaci se pomeraju kroz prijemni pomeraki (shift) registar RSR duine 9 bita. Posle toga se ovim podacima moe pristupiti preko RCREG registra, dok se kao i kod predaje 9-tom bitu pristupa preko kontrolnog registra. Kada se RCREG napuni vrednou iz RSR moe se generisati prekid kako bi se obradili preuzeti podaci. Iz prethodnog se moe zakljuiti kako se za serijsku komunikaciju mogu koristiti dva naina rada. Jedan je zasnovan na prekidima koji se generiu pri zavretku slanja ili prijema svakog bajta tako da se u prekid potprogramu moe prihvatiti i obraditi primljeni podatak ili pripremiti slanje sledeeg bajta. Drugi nain je slian samo se umesto prekida koristi prozivka (eng. pooling) statusnih bitova koji uka-zuju na zavretak transfera jednog bajta. USB modul

    Zahvaljujui USB modulu i interfejsu, PIC18F4550 se izdvaja od ostalih mikrokontrolera iz familije. USB komunikacija je veoma sloena i nije jedinstvena zbog ega emo samo ukratko opisati osobine USB modula korienog mikrokontrolera. Karakteristike USB modula

    Fleksibilan USB 2.0 standard Brzine: Low Speed (1.5 Mb/s) i Full Speed (12 Mb/s) Podrava kontrolni, prekidni, izohroni i bulk transfer Podrava do 32 krajnje take, odnosno16 bidirekciono 1Kbit-ni dvostruki pristup RAM memoriji za USB Unutar mikrokontrolera je integrisan USB primopredajnik sa sopstvenim regulatorom napona Interfejs za spoljanji USB primopredajnik Protoni paralelni port (Streaming Parallel Port) za (protoni) USB prenos.

    Fizika veza ostvaruje se preko dva pina D+ i D- dok se ostali koriste za povezivanje eksternog

    predajnika (transivera). Podaci se primaju i prenose preko posebnog bafera kapaciteta 1KB koji je podeljen na 16 tzv. endpoint-a i njihove deskriptore koji sadrze podatke o karakteru endpoint-a (smeru toka podataka), veliini endpoint-a i njegovoj poetnoj adresi. Pristup podacima koji se primaju ili alju se obavlja preko ovih endpoint-a. USB serijski interfejs vri primopredaju podataka i on mora biti taktovan frekvencijom od 24MHz. Modul ima ugradjen 3.3V regulator koji slui za napajanje pull-up otpornika na D+ liniji to je bitno kod poetne faze prepoznavanja od strane hosta. Njime se odreuje i brzina prenosa (spor ili brz transfer).

    Komunikacija se zasniva na nekoliko prekida, a najvaniji je onaj koji se generie kada se primi neki token (podatak). Tada se u odgovarajuim registrima moe proitati u kojem endpoint-u se podatak nalazi kako bi mu se pristupilo. Postoje i drugi prekidi koji se okidaju u sluaju greke, reseta, zaguenja ili aktivnosti na liniji. Svi oni se mogu iskoristiti za kontrolu komu-nikacije. Zbog svoje kompleksnosti koja uglavnom viestruko premauje sloenost veine aplikacija rad sa USB portom i mikrokontrolerom se najee izvodi pomou gotovih modula. Oivljavanje USB komunikacije potrebno pisanje posebnog drajvera ureaja na strani hosta kao i odgovarajueg softvera u mikrokontroleru. Zahvaljujui pomenutom HID (Human Interface Device) standardu i gotovim programskim modulima ovaj veliki problem se veoma lako reava pogotovo, ukoliko se radi sa PIC mikrokontrolerima.

  • 35

    Slika 25. Blok ema USB modula

    Detaljnije informacije vezane za USB komunikacioni standard se mogu pronai na zvaninom sajtu standarda www.usb.org. ADC SA SUKCESIVNIM APROKSIMACIJAMA

    Svi signali u prirodi su kontinualni, a veoma teko je upravljati nekim procesom bez digitalizacije

    analognih veliina. Kao to je napomenuto, PORTA i PORTE imaju mogunost A/D konverzije to podrazumeva da se mogu konfigurisati kao analogni ili digitalni.

    S obzirom da je 10-bitni A/D konvertor sa sukcesivnim aproksimacijama integrisan u mikro-kontrolerima PIC familije, naredne redove emo posvetiti upravo ovom tipu A/D konvertora.

    ADC sa sukcesivnim aproksimacijama (SAR ADC) ima veoma malu potronju i zauzima relativno malo mesta na silicijumskoj ploici. Ova kombinacija performansi ga ini idealnim za veliki broj aplikacija kao to su: instrumenti koji su baterijski napajani, industrijska kontrola, akvizicija podataka itd.

    SAR ADC su est izbor za aplikacije sa srednjom i visokom rezolucijom i sa srednjom brzinom konverzije (od nekoliko s do nekoliko desetina s). Najee se biraju gde brzina odabiranja ne prelazi 5 s, a opseg rezolucije SAR A/D konvertora je od 8 do 16 bita. Principijelna ema A/D konvertora sa sukcesivnim aproksimacijama data je na Slici 26.

  • 36

    Slika 26. A/D konvertor sa sukcesivnim aproksimacijama

    Maksimalni ulazni napon koji se moe prikljuiti na konvertor je Vulmax i on je jednak naponu pune skale Vps tj. Vulmax = Vps . Maksimalni izlazni napon iz D/A konvertora Viz je za 1 LSB manji od napona Vps. Pod ovakvim uslovima D/A konvertor e, kad je MSB bit postavljen na jedinicu (Qn-1 =1), a svi ostali na nulu, generisati napon Viz = Vps/ 2. Sledei bit (Qn-2=1) ima teinu Vps / 4, odnosno, poto se radi o binarnom D/A konvertoru, svaki sledei bit ima teinu upola manju od predhodnog.

    Konverzija poinje tako to, nakon prikljuenog Vul, kontrolno logiko kolo postavi logiku jedinicu u bit najvee teine registra sukcesivnih aproksimacija (Qn-1). D/A konvertor generie napon Viz = Vps / 2 koji se poredi sa Vul. Ako je Vul > Vps / 2, MSB bit digitalnog ekvivalenta napona Vul je jedan, a ako je Vul < Vps / 2, tada taj bit treba da bude nula. Kontrolna logika, na osnovu izlaza komparatora resetuje (ako je k=0), ili ne resetuje (ako je k=1) MSB flipflop u registru sukcesivnih aproksimacija, ime je definisan bit najvee vrednosti Qn-1 izlazne informacije, a zatim postavlja drugi bit po teini Qn-2 na logiku jedinicu. Komparator poredi novu vrednost Viz (koja je Vps / 4 ili 3Vps / 4 u zavisnosti dobijenog u poreenju sa bitom najvee vrednosti) sa Vul, a zatim kontrolna logika, na osnovu izlaza komparatora resetuje ili ne flipflop za taj bit (Qn-2) i definisana je vrednost bita drugog po teini. Kontrolna logika postavlja sledei bit koji ima teinu upola manju od prethodnog na logiku jedinicu. Proces poreenja i postavljanja narednih flipflopova se nastavlja sve do bita najmanje teine Q0. U zavisnosti od logikog nivoa komparatora flipflop bita najmanje teine se resetuje ili ostaje logika jedinica. Time je konverzija zavrena.

    Kao primer, na Slici 25 pokazan je vremenski dijagram napona Viz idealnog etvorobitnog A/D konvertora sa sukcesivnim aproksimacijama.

    Na Slici 27 je pretpostavljen ulazni napon 11/16 > Vul/Vps >5/8. Konverzija poinje postavljanjem koda "1000" u SAR (registar sukcesivnih aproksimacija). Izlazni napon D/A konvertora se postavlja na Viz = Vps / 2. Poto je Vul > Viz, na osnovu k=1, u trenutku t1 kontrolna logika ne resetuje Q3, ime je odreen MSB bit izlazne informacije, postavlja Q2=1, tako da je kod upisan u registar sukcesivnih aproksimacija (SAR) "1100", a izlazni napon D/A konvertora se postavlja na Viz=3 / 4Vps. Sada je Vul < Viz, kontrolna logika u trenutku t2, na osnovu k=0 resetuje Q2 i bezuslovno postavlja Q1=1. Ovim je odreena i druga cifra izlazne digitalne informacije. SAR je postavljen u stanje "1010", a Viz na Viz= 5Vps/8. Poto je Vul > Viz, k=1 zabranjuje da kontrolna logika resetuje Q1, u trenutku t3 postavlja se Q0=1, tako da je u SAR registru stanje "1011". U trenutku t4 se na osnovu k=0 resetuje Q0, tako da je konaan rezultat konverzije koji je ostao u registru sukcesivnih aproksimacija Q3Q2Q1Q0="1010", to je najblii binarni broj koji odgovara ulaznom naponu.

  • 37

    Slika 27. Promena napona D/A konvertora prilikom A/D konverzije

    Na istom vremenskom dijagramu na slici je isprekidanom linijom prikazan tok konverzije napona Vul < Vps / 16. Nakon etiri koraka sukcesivnih aproksimacija, kao rezultat konverzije se dobija stanje Q3Q2Q1Q0="0000".

    Na osnovu sprovedene analize funkcionisnja A/D konvertora sa sukcesivnim aproksimacijama (skraeno SAR ADC) mogu se definisati uslovi za sintezu registra sukcesivnih aproksimacija (SAR) i kontrolne logike (KL):

    Konverzija analognog signala u digitalni binarni kodovan broj od n cifara se obavlja u n+1 taktnom intervalu, od kojih prvi (t0) inicijalizuje sekvencu sukcesivnih aproksimacija, a poslednji (tn) oznaava kraj konverzije.

    Start konverzije se zadaje asinhrono u odnosu na taktni impuls A/D konvertora. Vreme izmeu dva susedna taktna impulsa treba da je dovoljno dugako, kako bi isteklo vreme

    postavljanja D/A konvertora, kanjenja kroz komparator i kanjenja kroz kontrolnu logiku. Korieni n-bitni D/A konvertor mora imati monotono rastuu karakteristiku prenosa

    (diferencijalnu linearnost bolju od 0.5 LSB). Flipflopovi registra sukcesivnih aproksimacija (SAR registra) treba da imaju mogunost

    pojedinanog postavljanja i resetovanja. Ulazni napon Vul ne sme da se menja u toku konverzije, s obzirom da se flipflopovi postavljaju

    bit po bit, a ve postavljeni flipflopovi, u sluaju promene Vul, ne mogu da promene stanje.

    Vreme konverzije A/D konvertora sa sukcesivnim aproksimacijama ja dato izrazom:

    tSARADK=(n+1)*tc

    , gde je n- broj bita konvertora, a Tc - perioda ponavljanja impulsa CLK. Minimalna perioda ponav-ljanja CLK zavisi od vremena postavljanja D/A konvertora, od kanjenja kroz komparator i kanjenja kroz registar sukcesivnih aproksimacija sa pripadajuim logikim kolima. Dominantan uticaj na vreme konverzije ima vreme postavljanja D/A konvertora, poto je ovo vreme esto i za red veliine due od

  • 38

    ostalih kanjenja u mrei. Tipino vreme konverzije za, na primer, dvanaestobitne integrisane SAR ADK je od 1s za najbre, do nekoliko desetina s za sporije ADC.

    Brzina SAR ADC je ograniena sa sledeim faktorima:

    Vremenom smirivanja D/A konvertora Komparatorom, koji za odreeno vreme mora da detektuje male razlike izmeu napona Vul i Viz Vremenom izvravanja logikih operacija.

    Maksimalno smirivanje D/A konvertora je najee odreeno smirivanjem MSB-a. Linearnost ce-lokupnog A/D konvertora je limitirana linearnou D/A konvertora. Zbog toga, SAR ADC-i ija rezo-lucija prelazi 12 bita esto zahtevaju neku vrstu kalibracije ili dodavanje novih komponenti da bi se po-stigla potrebna linearnost. Dodavanje novih komponenti donosi sa sobom i problem slaganja (upare-nosti) komponenti. Zbog svega navedenog, u praksi najee sreemo realizacije ija rezolucija ne pre-lazi 12 bita. Kod mikrokotrolera PIC18F4550 koristi se 10-bitni ADC.

    Najvanije prednosti A/D konvertora sa sukcesivnim aproksimacijama su mala potronja, visoka rezolucija, tanost i to to zauzimaju malo mesta na silicijumskoj ploici. Glavna ogranienja u strukturi su mala brzina odabiranja, kao i zahtevi da tanost pojedinih delova (kao to su D/A konvertor i komparator) bude na nivou tanosti celog sistema.

    Da bi se iskoristio 10-bitni i 13-kanalni A/D konvertor integrisan u mikrokontroleru, neophodno je podesiti registre ADCON0, ADCON1 i ADCON2.

    Inae, registar ADCON0 definie startovanje (ukljuivanje) modula za konverziju, kanal koji se koristi za konverziju, dok se registrom ADCON2 podeavaju parametri A/D konverzije (frekvencije odabiranja konvertora, poetak konverzije).

    Registrom ADCON1 odreuje se uloga pojedinih pinova (analogni ili digitalni).

    Slika 28a. Registar ADCON0

    bitovi 7 i 6 ne koriste se bitovi CHS3-CHS0 selekcija jednog od 13 kanala (kombinacije 1101,1110,1111 se ne koriste) bit GO/DONE statusni bit A/D konvertora (kada uzima vrednost '1', vri se konverzija) bit ADON dozvola rada A/D konvertora

    Slika 28b. Registar ADCON1

    bitovi 7 i 6 ne koriste se bit 5 (VCFG1) konfiguracioni bit za negativni referentni napon bit 4 (VCFG0) konfiguracioni bit za pozitivni referentni napon bitovi PCFG3-0 konfiguracioni bitovi A/D konvertora kojima se definie koji kanali su

    analogni, a koji digitalni (videti sledeu tabelu)

  • 39

    Na sledeoj slici je prikazan registar ADCON2:

    Slika 29. Registar ADCON2

    bit 7 (ADFM) definie format podatka (poravnanje ulevo ili udesno) bit 6 ne koristi se bitovi ACQT2-0 definiu vreme prikupljanje podataka konverzije bitovi ADCS2-0 definiu takt A/D konvertora

    Blok-dijagram A/D konvertora mikrokontrolera PIC18F4550 prikazan je na Slici 30.

    Algoritam A/D konverzije

    1. Konfiguracija A/D konvertora (preko ADCON0, ADCON1 i ADCON2) 2. Konfigurisanje A/D prekida ukoliko se zahtevaju (ADIF, ADIE, PEIE, GIE) 3. ekanje da proe zahtevano akviziciono vreme 4. Poetak procesa A/D konverzije 5. Zavretak procesa A/D konverzije 6. itanje rezultata A/D konverzije iz registra ADRES 7. Za sledeu konverziju, skoiti na korak 1 ili korak 2.

  • 40

    Slici 30. Blok-dijagram A/D konvetora Greke A/D konverzije

    A/D konvertori nemaju idealnu prenosnu funkciju. Odstupanja od idealne prenosne funkcije definiu DC preciznost i okarakterisana su parametrima u tablicama tehnikih podataka.

    A/D konverzija odstupa od idealnog zbog varijacija u procesu izrade to je zajedniko za sva integrisana kola, kao i zbog raznih drugih izvora greaka u samom procesu analogno-digitalne (A/D) konverzije. Preciznost A/D konvertora zavisi od nekoliko kljunih tehnikih osobina, koje obuhvataju diferencijalnu nelinearnu greku (DNL), integralnu nelinearnu greku (INL), ofset i greku pojaanja, preciznost referentnog napona, uticaj temperature i dinamike performanse.

  • 41

    Dve veoma popularne metode za utvrivanje ukupne greke sistema su metoda kvadratnog korena sume kvadrata greaka (root-sum-square - RSS) i metoda najgoreg sluaja. RSS metoda pod-razumeva kvadriranje pojedinanih greaka, njihovo sabiranje i konano kvadratni koren zbira daje ukupnu greku:

    UKUPNA GREKA = , gde En predstavlja pojedinanu greku neke komponente ili parametra.

    Pomenuti metod je najprecizniji kada pojedinane greke nisu u meusobnoj korelaciji (to moe a ne mora biti sluaj). Kod metode najgoreg sluaja, sve pojedinane greke se sabiraju. Ova metoda garantuje da greka nikada nee prei odreenu granicu. Kako se na ovaj nain dobija gornja granica greke, stvarna greka je uvek manja od ove vrednosti (vrlo esto mnogo manja). Izmerena stvarna greka obino je negde izmeu vrednosti dobijene na ova dva naina, ali je esto blia vrednosti dobi-jenoj RSS metodom. U zavisnosti od potreba i zahteva bira se izmeu najgore i tipine vrednosti gre-aka. Odluka o tome koja e vrednost biti koriena zavisi od mnogo faktora, ukljuujui tu i stan-dardnu devijaciju od merene vrednosti, vanosti pojedinih parametara, veliini greke u odnosu na dru-ge greke, itd. Tako da u stvari i ne postoje neka tano odreena i stroga pravila koja moraju bit ispo-tovana.

    Od aplikacije zavisi koje e specifikacije projektant da smatra najvanijim. Na primer, DTMF dekoder uzorkuje telefonski signal kako bi utvrdio koji je taster pritisnut na aparatu sa tonskim biranjem. U ovom sluaju najbitnije je izmeriti snagu signala (iz odreenog seta frekvencija) meu ostalim tonovima i umom koji nastaje prilikom A/D konverzije. U ovom projektu, projektant e naj-vie panje da obrati na parametre dinamikih performansi kao to su odnos signal/um i harmonijska izoblienja. U drugom primeru, sistem moe da oitava signal koji meri temperaturu neke tenosti. U ovom sluaju, DC preciznost merenja je najbitnija tako da e ofset, pojaanje i nelinearnosti biti najpre proveravane.

    Ne mora da znai, da ako uzmemo A/D konvertor sa vie bita od predvienog za neku odreenu preciznost, da emo i dobiti karakteristike konvertora u eljenoj preciznosti. Ako na primer, pret-postavimo da ja potrebno postii preciznost od 0,1% ili 10-bitnu preciznost (1/210), tako da ima smisla odabrati konvertor sa rezolucijom veom od ove. Ako odaberemo 12-bitni konvertor, moemo da pretpostavimo da e to biti dovoljno; ali bez analize specifikacije, nema garancije da on postie 12-bitne performanse (on moe biti boljih ili loijih karakterisitka). Na primer, 12-bitni A/D konvertor sa integralnom grekom nelinearnosti od 4 LSB-a (Least Significant Bit - najmanje vaan bit) moe postii samo 10-bitnu preciznost u najboljem sluaju (ako se podrazumeva da su greke ofseta i poja-anja kalibrisane). Ureaj sa integralnom grekom nelinearnosti od 0.5 LSB-a moe postii greku manju od 0.0122% odnosno 13-bitnu preciznost (ako su uklonjene greke ofseta i pojaanja). Da bi se izraunala najvea preciznost, potrebno je maksimalnu integralnu greku nelinearnosti podeliti sa 2N, gde je N broj bita. U naem sluaju, ako dopustimo greku od 0.075% (tj. 11-bitnu greku) za A/D konvertor, ostaje nam greka od 0.025% za ostatak elektronskog sklopa, to ukljuuje greke senzora, greku od operacionih pojaavaa, multipleksera, eventualnog D/A konvertora, ili drugih analognih izlaznih signala na putanji signala.

    Mnogi signali su relativno statini, kao npr. izlazni signali temperaturnih senzora ili senzora pritiska. U takvim aplikacijama mereni signal je povezan sa nekom fizikom veliinom i apsolutna preciznost merenja tog napona je vana. Parametri A/D konvertora koji opisuju ovaj vid preciznosti su greka ofseta, greka pojaanja dinamikog opsega, diferencijalna nelinearnost (DNL) i integralna nelinearnost (INL). Ova etiri parametra u potpunosti opisuju apsolutnu preciznost A/D konvertora.

    Iako se ne navodi kao parametar jedna od osnovnih greaka A/D konvertora, a nastaje kao rezultat pretvaranja signala i podataka je greka kvantizacije. Ova greka ne moe biti izbegnuta u me-

  • 42

    renjima uz A/D konverziju. DC preciznost i rezultujuu apsolutnu greku odreuju etiri parametra ofset, pojaanje u celom dinamkom opsegu, INL i DNL. Greka kvantizacije je nezaobilazni rezultat predstavljanja analognog signala u digitalnim brojevima (drugim reima, plod analogno-digitalne konverzije). Maksimalna greka kvantizacije je odreena rezolucijom merenja (ili rezolucijom A/D konvertora, ako je signal oversample-ovan). Dalje, greka kvantizacije e se pojaviti kao um, poznatiji kao um kvantizacije u dinamikoj analizi. Na primer, greka kvantizacije pojavie se kao prag uma u FFT dijagramu (frekvencijskom spektru) merenog signala na ulazu A/D konvertora.

    Slika 31a. Greka ofseta kod realnog A/D konvertora

    Slika 31b. Greka pojaanja kod realnog A/D konvertora

  • 43

    Slika 31c. Diferencijalna nelinearnost kod realnog A/D konvertora

  • 44

    /6/ SOFTVER ZA PIC MIKROKONTROLERE Za projekat koji je pred vama je korien softver mikroC od firme Mikroelektronika iz

    Beograda. Ovaj softverski alat slui za pisanje kda za Microchip-ove PIC mikrokontrolere. Programeru je omogueno da na jednostavan nain kontrolie proces programiranja i napravi kvalitetan firmware za mikrokontroler.

    Ovde emo navesti osnovne karakteristike softvera:

    Pisanje C kda korienjem kvalitetnog i preglednog editora, to se ogleda u automatskoj kontroli i upozorenjima vezanim za sintaksu kda, korienih para-metara, kao i automatskoj korekciji pojedinih greaka

    Preglednost strukture programa (kda), promenljivih i funkcija omoguava Code explorer Jasan asemblerski kd i standardna kompatibilnost generisanih HEX datoteka toka programa

    preko ugraeg debagera (debugger) Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina, koje znaajno

    ubrzavaju pisanje programa Detaljan izvetaj i grafiko predstavljanje RAM i ROM mape, statistike kda i slino.

    mikroC, dodue, odstupa od ANSI standarda u nekoliko segmenata. Neka odstupanja su

    nainjena su u cilju da se olaka programiranje, dok su druge rezultat hardverskih ogranienja PIC mikrokontrolera. Pomenuemo sada neke specifinosti:

    Rekurzivne funkcije (function recursion) su podrane sa izvesnim ogranienjima, koja su

    posledica neto sloenijeg pristupa magacinu (stack) i ogranienja vezana za memoriju Pokazivai (pointers) promenljivih i pokazivai konstanti nisu kompatibilni, tj. nije mogua

    meusobna dodela ili uporeivanje mikroC tretira oznaavanje const kao true constans (kod C++), to omoguava korienje

    const objekta na mestima gde ANSIC oekuje constant izraz .Ukoliko se tei ka prenosivosti programa, treba koristiti tradicionalno pretprocesorsko definisanje konstanti

    mikroC dozvoljava C++ stil jednolinijskih komentara, koristei dve kose crte (//). Komentar moe da pone bilo gde i traje do sledee nove linije programskog kda

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

    Instalacija programa traje oko 30 sekundi (treba samo pratiti ponuene opcije i pritiskati ko-

    mandno dugme Next). Posle instalacije treba pokrenuti mikroC, a to se najjednostavnije ostvaruje klikom na ikonicu. Pisanje programa

    Na narednih nekoliko strana bie ilustrovan postupak pisanja kda u mikroC-u (Slike 32-37) i generisanje fajlova posle prevoenja (kompilacije/kompajliranja). Slike dovoljno jasno ilustruju ceo proces, a komentari se nalaze ispod slika.

  • 45

    Slika 32. Kreiranje novog projekta preko opcije Project New Project

    Slika 33. Podeavanje parametara projekta (naziv mikrokontrolera, takta, reseta...)

  • 46

    Slika 34. U editor treba upisati program (kd) mikrokontrolera

    Slika 35. U editor je unet program koji treba da se prevede

  • 47

    Slika 36. Kompajliranje programa preko komande Project Build

    Slika 37. Izgled prozora posle prevoenja sa izvetajem (Messages)

  • 48

    Slika 38. Nakon kompajliranja generie se nekoliko fajlova: asemblerski kd (ASM), heksadecimalni kd (HEX), izvetaji itd.

    USART terminal

    Slika 39a. Izgled prozora kod USART komunikacionog terminala

  • 49

    Pokretanje internog softverskog terminala mikroC-a koji se koristi za komunikaciju raunara i mikrokontrolera ostvaruje se na sledei nain: Tools USART Terminal. Na Slici 39a prikazan je izgled prozora USART terminala. Kao to se vidi, mogue je podesiti vei broj parametara. Naveemo samo najvanije:

    Serijski port (u padajuem meniju treba izabrati eljeni serijski port, a kod standardnih raunara to su COM1 i COM2)

    Brzina prenosa (za frekvenciju kvarca od 8MHz bira se 14400 bauda) Broj stop bitova (1, 1.5 i 2) Izbor parnosti (bez, parna, neparna itd.) Broj bitova koji ine karakter (5, 6, 7 ili 8) Ukljuivanje/iskljuivanje handshaking signala (RTS i DTR) Izbor formata podatka koji se alje (ASCII, heksadecimalni - HEX ili dekadni - DEC) Nain slanja (odmah po kucanju ili kada se klikne na opciju SEND) itd.

    Kada se podese parametri, terminal se startuje klikom na komandno dugme Connect. Odmah

    zatim, terminal je spreman da prihvati komande. Kada se zavri komunikacija, treba kliknuti na ko-mandno dugme Disconnect.

    Slika 39b. Izgled prozora kod HID komunikacionog terminala

  • 50

    HID terminal

    Pokretanje internog softverskog HID terminala mikroC-a koji se koristi za komunikaciju rauna-ra i mikrokontrolera ostvaruje se na sledei nain: Tools HID Terminal.

    Kada se prikljui ureaj sa implementiranim HID standardom, u prozor HID Devices se auto-matski upisuje naziv tog ureaja. Na Slici 39b prikazan je izgled prozora HID terminala. Kao to se vidi, mogue je podesiti sle-dee parametre:

    Izbor formata podatka koji se alje (ASCII, heksadecimalni - HEX ili dekadni - DEC) Nain slanja (odmah po kucanju ili kada se klikne na opciju SEND) itd.

    Unutar menija Descriptor mogue je podesiti jo neke parametre, kojima se neemo baviti.

    Razvojni sistem Easy PIC i program PIC FLASH

    Slika 39c. Izgled razvojnog sistema Easy PIC

  • 51

    Slika 39d. Izgled prozora kod PIC FLASH programa Programiranje mikrokontrolera PIC18F4550, tj upisivanje programa u njegovu flash memoriju, vri se preko razvojnog sistema Easy PIC (prikazan na Slici 39c). Naime, mikrokontroler se postavi u 40pinsko podnoje razvojnog sistema, a zatim se pokrene program PIC Flash preko kojeg se unosi odgovarajui heksadecimalni kod (komandno dugme Load Hex), pri emu su podeeni parametri kao na Slici 39d.

  • 52

    /7/ REALIZACIJA PROJEKTA

    Slika 40a. Izgled blok-eme realizovanog projekta Na Slici 40a je prikazana blok ema projekta, a na Slici 40b je data elektrina ema. Kao to mo-

    e da se uoi, postoji dvostruka veza izmeu mikrokontrolera PIC18F4550 i PC raunara preko serijskog i preko USB porta. Mikrokontroler ujedno koristi napajanje iz USB porta raunara (5V0.25V).

    Tasterom 1 (T1) se resetuje mikrokontroler (pin MCLR), dok se Tasterom 2 (T2) zadaje START komanda. Tri reima rada realizovanog kola se definiu preko DIPSW2 prekidaa.

    Na dva ulazna pina Porta A se dovode analogni naponi sa standardnog obrtnog potenciometra (PA0) i digitalnog SPI potenciometra (PA1). Inae, digitalnim potenciometrom ija je nominalna vrednost 10K se upravlja preko simuliranog SPI interfejsa mikrokontrolera (postoji biblioteka u prog-ramu mikroC) PIC18F4550 alje 8-bitnu re koja odreuje vrednost otpornosti na klizau. Korak digitalnog potenciometra iznosi 39.06 (10K/ 28). Ako mu se poalje sekvenca 00000000, otpornost na klizau je 0, za 00000001 otpornost na klizau je 39.06 , za 00000010 otpornost na klizau je 78.12 itd.

    Ideja je da se odredi karakteristika A/D konvertora integrisanog u mikrokontroleru. Karakteristika e se izmeriti u 25 taaka.

    Ujedno je mogue odrediti i ofset, kao i greku pune skale A/D konvertora korienjem SPI potenciometra.

    Posle toga je mogue runo vriti A/D konverziju napona sa obrtnog potenciometra, uz kom-penzaciju ofseta koji je odreen u prethodnom koraku.

  • 53

    Slika 40b. Izgled elektrine eme projekta

    Za komunikaciju PC raunara i mikrokontrolera koriste se alati unutar softvera mikroC: USART Terminal (za komunikaciju preko serijskog porta), HID Terminal (za komunikaciju preko USB porta raunara).

    (HID je skraenica od Human Interface Device)

    USB port se moe povezati direktno na mikrokontroler PIC18F4550, s obzirom da ovaj ima inte-grisani USB modul. Za dodatnu stabilizaciju DATA + i DATA- signala stavljeni su otpornici od 27 (videti [7] u poglavlju Literatura).

    Serijski port i mikrokontroler se spreu preko interfejsnog kola MAX232, koje slui za prilagoe-nje naponskih nivoa.

    Na Slici 41a se nalaze relevantni blokovi (integrisana kola, tasteri, prekidai, konektori) na is-korienoj ploici za realizaciju ovog projekta (Slika 41b).

    Kada se tasterom T2 zada START komanda, onda mikrokontroler vri jednu od tri operacije zavisno od toga koja je kombinacija zadata na prekidau DIPSW2:

    00 merenje ofseta i greke pune skale preko SPI potenciometra, 01 A/D konverzija napona izmerenog na potenciometru P1 sa bez softverskom kompenzacije

    ofseta i prikazom u USART terminalu programa mikroC, 10 A/D konverzija napona izmerenog na potenciometru P1 sa softverskom kompenzacijom

    ofseta i prikazom u u USART terminalu programa mikroC. Dakle, greka ofseta A/D konvertora se meri preko SPI potenciometra (kao to smo napomenuli), a simulacija SPI modula se ostvaruje preko gotove biblioteke iz softvera mikroC (pin C2 mikrokontro-lera je ulazni signal, pin C1 je takt, a pin C0 izlazni signal SPI interfejsa).

  • 54

    Slika 41a. Raspored relevantnih blokova projekta na ploici

    Slika 41b. tampana ploa koja je prepravljena za potrebe ovog projekta

  • 55

    Slika 42a. Izmerena karakteristika A/D konvertora merenjem napona na potenciometru

    Redni broj merenja VUL (V) 8-bitna re na ADC-u

    1 0.000 00000000 2 0.019 00000001 3 0.155 00001000 4 0.334 00010010 5 0.626 00100000 6 1.276 01000001 7 1.630 01010010 8 1.745 01011001 9 2.106 01101010 10 2.511 10000000 11 2.531 10000010 12 2.824 10010000 13 3.010 10011001 14 3.330 10101001 15 3.740 10111111 16 3.765 11000000 17 3.906 11000111 18 4.141 11010011 19 4.442 11100011 20 4.632 11101100 21 4.744 11110010 22 4.805 11110101 23 4.915 11110110 24 4.942 11111100 25 5.000 11111111

    Tabela 9. Rezultati merenja napona ADC-a

  • 56

    Sa grafika na Slici 42a uoavamo da karakteristika ADC-a pomalo odstupa od linearnosti, a na-roito pri kraju opsega (oko 5V) kada dobija i kvadratnu (parabolinu) komponentu. Meutim, ova nelinearnost je izuzetno mala, tj. zanemarljiva je za mnoge praktine primene.

    Punom linijom je prikazana aproksimacija karakteristike A/D konvertora (ADC). Vrednost ofseta je reda nekoliko mV (u naem sluaju je 0000000010, to iznosi oko 9mV). Soft-

    verska kompenzacija ofseta se vri tako to se od izmerene vrednosti napona na obrtnom potenciometru (10-bitni podatak) oduzme vrednost izmerenog ofseta preko digitalnog SPI potenciometra (0000000010).

    S obzirom da je USART terminal u softveru mikroC projektovan tako da prima podatke do 8 bitova, dva bita najnie teine se odbacuju (videti listing programa u mikroC-u). To znai, nezavisno da li je izmerena vrednost napona 1111111100 ili 1111111111, USART terminal e primiti 8-bitni podatak 11111111. Na Slici 42b je prikazana ukupna greka A/D konvertora koja predstavlja superpoziciju greke pojaanja (linearna) i diferencijalnu nelinearnost A/D konvertora. Kao to moe da se primeti, ukupna greka (bez ofseta, koji je softverski komponzovan) ne prelazi vrednost LSB. (Detaljnije o grekama A/D konvertora je izloeno u 5. poglavlju ovog rada).

    Napomena: Za merenje napona je korien digimer MASTECH MS8201H.

    Slika 42b. Izmerena greka konverzije A/D konvertora mikroC program za projekat

    Za na program je iskoriena gotova biblioteka USBdsc.c iz mikroC-a koja omoguava da se mikrokontroler ponaa kao HID (Human Interface Device).

  • 57

    Slika 43a. Memorijska mapa mikrokontrolera

    Kod serije mikrokontrolera PIC18F memorija podataka je implementirana kao statiki RAM.

    Svaki registar u ovoj memoriji ima 12-bitnu adresu. Celokupna memorija podataka je podeljena na 16 banki veliine od po 256 bajtova. Prvih 96 adresa (000h-05Fh) u okviru Banke 0 je rezervisano za pris-tup RAM-u, dok ostatak registara Banke 0, Banke 1-7 ine registri opte namena (GPR). Istai emo kako registri opte namene GPR(1) slue kao RAM bafer za operacije USB modula mikrokontrolera. (Napomena: BSR je Bank Select Register, odnosno registar za selekciju banke.) U okviru Banke 15 prostor od 160 adresa (F60h-FFFh) rezervisan je za registre specijalne na-mene SFR (Special Function Registers), koji su prikazani na Slici 43b. Kao to moe da se uoi na slici, ovi registri slue za definisanje ulaznih/izlaznih pinova portova mikrokontrolera (TRISA, TRISB, TRISC, TRISD, TRISE), stanja portova (PORTA, PORTB, PORTC, PORTD, PORTE), parametara internog A/D konvertora (ADCON1, ADCON2, ADCON3), stanja programskog brojaa (PCL, PCLATH, PCLATU), tajmera, prekida itd.

  • 58

    Slika 43b. Mapa registara specijalne namene kod serije mikrokontrolera PIC18F

    Sada emo preko primera ilustrovati postavljanje smerova na Portu A: TRISA = 0b000000 (PORTA je izlazni) TRISA = 0b111111 (PORTA je ulazni) TRISA = 0b111000 (A5:A3 su ulazni, a A2:A0 su izlazni pinovi).

    Ako je ADCON1 = 13 (odnosno ADCON1 = 0b1101), pinovi PA5-PA0 se definiu kao digitalni

    ulazi, a A1 A0 kao analogni ulazi (Slika 29).

  • 59

    Slika 43c. Algoritam programa upisanog u mikrokontroler PIC18F4550

  • 60

    Softver mikrokontrolera je napisan tako da izvrava beskonanu petlju, pri emu tokom svakog obilaska petlje se proverava da li se neto promenilo (promena stanja na pinovima, prijem podatka sa serijskog porta i slino) i u skladu sa promenama se izvravaju odreene akcije

    Nadalje emo detaljno objasniti svaki blok algoritma prikazanog na Slici 43c.

    Varijable i, j PORT A je ulazni

    A5:A2 - digitalni pinovi A1:A0 - analogni pinovi

    Na samom poetku treba definisati varijable i i j, koje se koriste u programu. Obe varijable su 8-

    bitne i nose informaciju o naponu koji se meri preko internog A/D konvertora mikrokontrolera. A1:A0 se definiu kao analogni ulazi Porta A (na njih se dovodi analogni naponi sa digitalnog i

    obrtnog potenciometra, respektivno), dok se A5:A2 definiu kao digitalni ulazi Porta A (pin A5 se ne koristi, na pin A4 je povezan START taster T2, dok je na pinove A3:A2 povezan DIPSW2 prekida). Dakle, treba definisati ulaze i izlaze Porta A preko TRISA (adresa F92h) i koji su pinovi analogni ulazi, a koji digitalni (adresa FC1h).

    Inicijalizacija USART modula

    Inicijalizacija SPI modulaInicijalizacija USB modula

    Da bi se koristili USART, SPI i USB modul mikrokontrolera (videti Sliku 21), neophodno je da

    se izvri njihova inicijalizacija. U okviru softvera mikroC postoje integrisane biblioteke koje omogu-avaju komunikaciju USART i SPI modula. Za aktiviranje pomenuta dva modula koriste se instrukcije Usart_Init() i SPI_Init (), respektivno. (Adresni prostor koji je rezervisan za inicijalizaciju: 060h-3FFh.)

    Kada je u pitanju USB modul, koristi se poseban potprogram koji se nalazi u fajlu USBdsc.c zahvaljujui kome je omogueno da se mikrokontroleru od strane raunara pristupa kao HID (Human Interface Device) ureaju, o emu je bilo rei na poetku ovog poglavlja.

    Ako se primi podatak sa serijskog porta, isti trebada se prosledi ka USB portu

    Definisano je da kada mikrokontroler primi podatak sa serijskog porta raunara, isti podatak treba da prosledi ka USB portu. Naime, podatak koji se poalje iz USART terminala prihvata USART modul mikrokontrolera i preko USB modula ga ka HI