of 111 /111
ELEKTRONSKI FAKULTET NIŠ Katedra za elektroniku Mikroprocesorski sistemi KOMUNIKACIJA MIKROKONTROLERA PIC18F4550 I RAČUNARA PREKO SERIJSKOG I USB PORTA Studenti:

Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Embed Size (px)

DESCRIPTION

Komunikacija PIC18F4550 sa racunarom

Citation preview

Page 1: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

ELEKTRONSKI FAKULTET NIŠKatedra za elektronikuMikroprocesorski sistemi

KOMUNIKACIJA MIKROKONTROLERA PIC18F4550 I RAČUNARA PREKO

SERIJSKOG I USB PORTA

Studenti:Ana Andrejić 10434Magdalena Ranđelović 10620

Mentor:prof. dr Mile K. Stojčev

SADRŽAJ

Page 2: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 VEŽBA 68

PRILOZI 75

LITERATURA 84

CIRRICULUM VITAE 85

UVODNA REČ

2

Page 3: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Ideja seminarskog rada koji je pred Vama je da se demonstrira komunikacija mikrokontrolera PIC18F4550 i portova računara (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 računara 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 korišćeni za pomenuti mikrokontroler.

U sedmom poglavlju se nalazi električna šema projekta sa opisom. U ovom poglavlju su priloženi programi u mikroC-u i opisan je proces programiranja mikrokontrolera PIC18F4550 preko PICFlash programatora.

U osmom poglavlju je opisana laboratorijska vežba po koracima (za samostalan rad studenata).

Magdalena i Ana

/1/ SERIJSKI PORT I STANDARD

3

Page 4: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Serijski port računara, koji se drugačije naziva i komunikacijski (communication – ili skraćeno: COM) port, u mogućnosti je i da prima i da šalje podatke.U zavisnosti od toga da li serijski uređaji koriste različite pinove za prijem i slanje ili samo jedan, moguće 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 ključnu komponentu serijske komunikacije. Ovaj čip, s jedne strane prihvata bajtove podataka od mikroprocesorskog sistema, transformiše ih u bitski niz i šalje bit-po-bit. S druge strane, prihvata niz bita koji stižu od nekog spoljnjeg uređaja, pakuje ih u bajtove i predaje ih mikroprocesorskom sistemu. Većina ovih či-pova ima ugrađene 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 zajednički takt, ili da predajnik obezbedi poseban signal kojim će obaveštavati prijemnik kada dolazi sledeći podatak. Kod asinhronog prenosa ne postoji poseban signal već se sinhronizacija vrši pomoću posebnih bitova koji se umeću.

Slika 1. Principijelna blok-šema serijskog porta

Serijski port PC računara koristi se za serijski prenos podataka (bit-po-bit) i samim tim je sporiji od paralelnog porta. Uređaji 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 između PC računara. Električne osobine serijskog porta su definisane EIA (Electronics Industry Association) RS232C standardom, čiji su parametri:

Logička nula "SPACE" nalazi se u opsegu napona +3V do +25V Logička jedinica "MARK" je u opsegu -3V do - 25V Oblast između -3 do + 3 V nije definisana Napon na kolu ne sme da pređe 25V u odnosu na masu (GND) Struja kola ne sme preći 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.

PARAMETAR EIA 232 RS 423-A RS 422-A RS 485način rada nebalansiran

inebalansirani diferencijalni diferencijalni

4

Page 5: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

broj drajvera i prijemnika 1 drajver1 prijemnik

1 drajver10 prijemnik

1 drajver10 prijemnik

32 drajvera32 prijemnika

maksimalna dužina kabla [m] 15 1200 1200 1200maksimalna brzina prenosa podataka [bps] 20 K 100 K 10 M 10 Mmaksimalni napon na zajedničkim krajevima [V] + 25 + 6 6 do –0.25 12 do –7

Drajverski izlazni signal

izlaz drajvera[V]-min neopterećen 5 3,6 2 3,6izlaz drajvera[V]-max Opterećen 15 6 5 3,6opterećenje 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 granična vrednost struje (mA) 500 na Vcc 150 na GND 150 na GND

150 na GND200 na –7 ili 12 V

izlazna otpornost drajvera [Ω]

uključeno napajanje n.d. n.d. n.d. 12 K

stanje visoke impedanse [Ω]

isključeno 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,2opseg ulaznog naponaprijemnika [V] 15 12 7 -7 do 12V

Tabela 1. Električne karakteristike EIA standarda

Slika 2 Raspored pinova na konektoru DSUB-25

Inače, 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.

5

Page 6: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 3. Raspored pinova na konektoru DSUB-9

DSUB-25 DSUB-9 Signal Opis signalapin 2 pin 3 TD Transmit Datapin 3 pin 2 RD Receive Datapin 4 pin 7 RTS Request To Sendpin 5 pin 8 CTS Clear To Sendpin 6 pin 6 DSR Data Set Readypin 7 pin 5 SG Signal Groundpin 8 pin 1 CD Carrier Detectpin 20 pin 4 DTR Data Pin Readypin 22 pin 9 RI Ring Indicator

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

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

druge strane linije, onda ona postaje aktivnaDSR Data Set Ready DCE signalizira da je spreman za radSG Signal Ground MasaCD Carrier Detect DCE javlja da je veza uspostavljena

DTR Data Pin Ready Indicira DCE uređaju da je DTE spremanRI Ring Indicator Signalizira detekciju signala "zvona" na telefonskoj liniji

Tabela 3. Značenje pojedinih signala

Oblik signala kod RS232 standarda dat je na donjoj slici.

6

Page 7: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 4. Oblik signala kod RS232 standarda

Situacija kada nema slanja podatka, tj. linija je slobodna, označena je MARK naponom. Prenos počinje kada linija pređe 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 najčešće u suprotnosti sa ustaljenom logikom da je +5 V logička jedinica, a 0 V logička nula. Problem rešava prijemno kolo (npr. MAX232, ST232, ICL232, MAX3232, ST3232, ICL3232 itd.) konvertujući napo-ne tako da su prilagođeni naponima interfejsa koji se koristi. Posle bita podatka dolazi bit parnosti koji se koristi za detekciju jednostruke greške u prenosu. Iza bita parnosti signal se postavlja u MARK stanje što označava početak STOP bita. Prema RS232 standardu broj stop bitova može biti: 1, 1.5 ili 2. Nakon završetka STOP bitova, linija je spremna za slanje novog karaktera. PC računari koriste kao DATA bite najčešće 7 ili 8 bita. Između slanja dva karaktera linija se nalazi u MARK stanju, a u toku prenosa više puta prelazi iz MARK u SPACE stanje u zavisnosti od broja jedinica i nula. To znači da se linija može nalaziti u SPACE stanju najviše u slučaju kada karakter sadrži sve nule. Ova osobina prenosa upotrebljena je za uvođenje specijalnog znaka nazvanog BREAK (prekid). Ovaj se signal ko-risti kako bi se dala prijemniku signalizacija da je došlo do problema u slanju podataka.

Serijski prenos počinje 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 greške i za to vreme javlja predajniku da je zauzet. Ako su podaci primljeni bez greške, prijemnik šalje predajniku signal potvrde ACK (Acknowledgment - ASCII 6), a u slučaju ako se pojavila neka greška, šalje signal negativne potvrde NAK (ASCII 21). Zavisno od upotrebljenog protokola, odgovor predajnika na dobijeni NAK signal može biti ponovno slanje podataka.

Protokol za prenos može se izvesti na dva načina 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 utvrđivanja da li je to XON, XOFF ili podatak. Strana koja ne može da primi karakter kao indikator tog stanja drugoj strani šalje XOFF znak.

Prilikom serijskog prenosa podataka moguća je pojava sledećih vrsta grešaka:

Greška uokvirenja ili greška rama podatka (framing error). Do ove greške dolazi u slučaju kada prijemnik očekuje STOP bit ali se on ne pojavljuje.

Greška prekoračenja (overrun error). Nastaje kada se pojavljuje novi znak u prijemniku a prethodni nije upotpunosti primljen.

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

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

7

Page 8: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 ukršteni.

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 računara izvodi upotrebom Intelovog UART kola 8250 kod XT ili 16450 kod AT računara. Oba su kola slična, s tim što kolo 16450 ima neke naprednije karakteristike. Kolo 8250 sadrži 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 moguće je i više 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 računara.

8

Page 9: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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

Tabela 4. Adrese COM portova

Startna adresa Opis0000:0400 Početna adresa COM10000:0402 Početna adresa COM20000:0404 Početna adresa COM30000:0406 Početna adresa COM4

Tabela 5. Bazne adrese COM portova u BIOS-u

9

Page 10: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

/2/ USB PORT I STANDARDPrvi PC računari koristili su tri porta i to: jedan za štampač (LPT) i dva serijska(COM1 i COM2)

pri čemu je jedan od njih većinom bio zauzet od strane serijskog miša. Međutim njihova sve veća primena rezultovala je pojavu različitih uređaja koji se na njih uključuju kao što su skeneri, digitalne fotoaparati i slično. To je uzrokovalo uvođenje USB porta Universal Serial Bus) koji je standardizovan 1996. godine.

Porastom broja različitih periferija koje se mogu priključiti na računar dolazilo je do sledećih problema:

priključivanje dodatnih periferija na računar koji ima samo 2 serijska i 1 paralelni port je zahtevalo dodavanje novih kartica koje bi predstavljale vezu između računara i date periferije što je zahtevalo dodatne resurse (jedan slot u samom računaru i po pravilu jedan IRQ prekid, a nešto ređe i DMA kanal), neki uređaji su projektovani tako da koriste određeni 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 uređajem (npr: štampač i skener na paralelnom portu ) što je dovodilo do nepredvidljivih problema ili potrebe da se kablovi uređaja po potrebi uključuju i isključuju sa datog porta, što je nekim situacijama vrlo opasno (dolazi do spaljivanja portova na računaru odnosno uređaju).

Njegovim uvođenjem nastojalo se da se reše sledeći problemi:

rešenje u vezi ograničenja broja slotova na osnovnoj ploči kao i broja portova PC računara jednostavno proširenja PC računara upotrebom softverskih drajvera mogućnost napajanja eksternih uređaja koji malo troše od strane računara omogućeno je priključenje do 127 eksternih uređaja na glavni USB port, pa se time rešava

ograničenje koje je pre postojalo: jedan uređaj - jedan slot. omogućene su velike brzine prenosa do 12 Mb/s pojednostavljuju se kablovi za priključenje uređaja a njihova dužina se povećava omogućena je kontrola potrošnje eksternih uređaja podržano je autokonfigurisanje ovih uređaja po principu PnP detekcije novih uređaja u

računaru.

USB port podržava dve brzine prenosa i to: veliku brzinu kada se prenos kreće do 12 Mb u sekundi, i za sporije uređaje nižu brzinu prenosa do 1.5 Mb u sekundi. USB port koristi četverožilni 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 logička nula linija D- je na većem potencijalu od linije D+ dok je u slučaju prenosa logičke jedinice obrnuto. Predajnici moraju da daju napon veći od 2.8 V sa opterećenjem od 15 kW. Prijemnici moraju da imaju simetričan ulaz pri čemu do promene stanja dolazi ako se na ulazu prijemnika naponi razlikuju za više od 200 mV. Svaka linija za prenos podataka ima i nesimetričan prijemnik za detekciju greške koja se pojavi ako su obe linije podataka nađu na istom naponu. Kada se radi o brzom USB prenosu tada se na liniju D+ priključuje opteretni otpornik(pull-up) reda 1.5 kW, dok se kod sporog prenosa on uključuje na liniju D-. Na izlazima drajvera linija D+ i D- priključuju se opteretni otpornici reda 15 kW. U slučaju kada USB eksterna jedinica nije pod naponom i kada je drajverski izlaz porta u stanju visoke impedanse preko ovih otpornika se određuje brzina prenosa. Preko njih se takođe određuje da je eksterni uređaj povezan na USB čvor. Kada uređaj nije povezan na USB čvor njegovi izlazni drajveri biće u stanju

10

Page 11: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

visoke impedanse i obe linije će biti na potencijalu mase, koje se naziva nesimetrična nula SE0(Singl Ended 0). Povezivanje uređaja 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 može da detektuje čvor. U slučaju ako se ne šalju USB paketi, linije podataka nalaze se u stanju visoke impedanse. Za priključenje USB uređaja koriste se konektori prikazani na Slici 8.

Slika 7. Presek USB četvorožilnog kabla

Slika 8. Četvoropinski USB konektori

Standardni USB kabl za priključenja eksternih USB uređaja je oblika kao na Slici 9, dok je organi-zacija USB bus-a prikazana na Slici 10.

Slika 9. Četvoropinski USB kabl

11

Page 12: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 10. Organizacija USB bus-a

Iz prikazane slike vidi se da se USB bus-a može predstaviti sa tri nivoa i to:

Nivo USB uređaja (USB Interface Layer) koji obezbeđuje fizičku vezu za prenos signala i paketa između računara i USB uređaja. Ovaj nivo omogućuje sistemskim programima koji kontrolišu USB bus, rad sa opštim funkcija koje koristi USB uređaj,

Nivo funkcije se ostvaruje upotrebom klient softvera (Client SW), Nivo interfejsa obezbeđuje da se fizički obavlja komunikacija.

Sistem USB povezivanja deli se na četiri funkcionalno zaokružene celine:

USB uređaj (USB Physical Device), klijent softver (Client Software), USB sistemski softver (USB System Software), glavni USB kontroler (USB Host Controller).

USB predtsvlja neki eksterni uređaj koji se priključuje na USB i koji izvršava zahtevane funkcije. Klijent softver omogućava da se izvrši prenos podataka između eksternog USB uređaja i računara i najčešće ga isporučuje proizvođač USB uređaja. USB sistemski softver je deo operativnog sistema za podršku USB uređaja i isporučuje se uz operativni sistem. Glavni USB kontroler zaokružuje u jednu celinu hardver i softver koji omogućuje rad USB uređaja.

USB uređaji sa računarom komuniciraju slanjem paketa. Na početku 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 dužini trajanja od dva bita.

USB uređaji mogu se resetovati na nekoliko načina od koji se često koristi pristup kada se linija podataka postavi u SE0 stanje u trajanju od 10ms. U slučaju ako USB bus se nalazi u mirnom stanju većem od 3 ms tada eksterni USB uređaji mogu preći u stanje male potrošnje ako to podržavaju. Vraćanje u radno stanje treba da traje najduže 20 ms. Prenos podatka se vrši upotrebom NRZI metoda kodiranje (Non Return Zero Invert) što znači ako se pojavi logička jedinica ona će trajati celom svojom dužinom, odnosno neće doći do promene naponskog nivo. U slučaju pojave povorki nula napon se

12

Page 13: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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, vrši 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 opterećenje do 5A, pri čemu potrošnja pojedinačne eksterne jedinice ne sme preći 400 mA kada je u radnom stanju a u stanju mirovanja 500 mA. Ovaj uslov ne mogu ispuniti svi USB uređaji tako da u tom slučaju moraju koristiti sopstveno napajanje. Iako takvi uređaji koriste takvo napajanje, napon USB kabla koriste i ovi uređaji radi provere od strane računara koji je od uređaja povezan na USB bus. Prilikom inicijalizacije USB sistema po uključenju računara on pribavlja podake o svim uređajima koji povezani na USB radi numerisanja bus-a (bus enumeration).

Za ispravan rad USB uređaja koji su povezani na računare svaki od njih mora da ima adresu koje se kreću u opsegu od 0 do 128 i dodeljuje ih računar prilikom konfigurisanja bus-a. Adresa 0 je adresa koju koristi računar za postavljanje uređaja povezanih na USB bus i ne mogu je koristiti eksterni uređaji.

Podaci koji se šalju preko USB bus dele se u pakete pri čemu veličina jednog paketa ne sme biti veća od 8 Kb. Računar deli vreme u intervale dužine 1 ms i u svakom intervalu šalje jedan paket koji počinje sa SOP bitom. Sledeći se paket razdvaja od prethodnog sa EOP što je prikazano na donjoj slici:

Na početku 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 generiše 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 sledeća četiri bita(veće težine) invertovani biti PID-a na osnovu čega se proverava tačnost primljenog PID-a. Polje PID definiše vrstu paketa i njegov format kao i tip detekcije greške. Postoje sledeći 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 vrši setovanje funkcije od strane računara i sadrži tekuću i krajnju (Endpoint) adresu. IN paket čiji je PID=1001 je prvi paket od od eksternog uređaja prema računaru. OUT paket čiji je PID=0001 je prvi paket koji računar šalje periferijskom uređaju.

13

Page 14: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Data0 paket čija je PID=0011 je paran paket podataka koji sadrži 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 greške. Nak paket koji ima PID=1010 je je odgovor predajnika o neispravno primljenom paketu. Stall paket koji ima PID=1110 pokazuje da je neko odredište zagušeno tj. ne može da primi sve do tada poslate pakete.

Prenos podataka počinje tako što računar pošalje paket u kome je definisan tip i smer prenosa, adresa USB uređaja i adresa krajnjeg odredišta. Ovaj se paket naziva token. Adresirani uređaj 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) izveštavjući o uspešnosti prenosa. Adresiranje uređaja vrši se preko adresnog polja paketa od 7 bita. Adresa se koristi sa kod IN, OUT ili Setup paketa. Paket SOF sadrži broj ramova od 11 bita pri čemu se njegov sadržaj inkrementira za svaki novi ram sve do vrednosti 7FFH. Paketi podatataka Data0 i Data1 sadrže do 1023 bajta. Ova dva paketa omogućuju jednostavnu sinhronizaciju predajnika i prijemnika u slučaju zahteva predajnika za ponovnim slanjem radi greške u prenosu. Predajnik šalje novi paket tek kada od prijemnika dobije potvrdu o uspešnosti tj. paket Ack. Prvo se šalje paket Data0 pa paket Data1 i tako naizmenično. 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 računara. Smer prenosa definiše računar slanjem IN ili OUT paketa. U IN paketu računar zahteva od eksternog USB uređaja da mu poašalje podatke. Nakon ovog paketa eksterni uređaj ili računar šalje Data paket, pri čemu se na kraju svakog primljenog paketa strana koja je vršila prijem šalje potvrdu uspešnosti slanje tj. Ack, Nak ili Stall paket.

Iz opisa USB porta vidimo da uređaji koji se na njega priključuju moraju imati visok nivo "inteligencije" kako bi podržali navedeni standard. Zbog toga se u njima nalaze najčešće mikrokontroleri koji podržavaju ovu komunikaciju i koji su za ovu vrstu standarda i razvijeni. Programiranje je znatno teže budući da navedeni protokoli moraju biti podržani. Zbog toga naučiti programiranje USB porta je svakako i najveći domet u programiranju portova.

/3/ SPI KOMUNIKACIJA

14

Page 15: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 OpisSCI 125 Kb/s MCU takt = 2MHzSPI 1 Mb/s MCU takt = 2MHz, MasterSPI 2 MB/s MCU takt = 2MHz, Slave

Tabela 6. Poređenje brzina komunikacija preko SCI i SPI

Tabela 6 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 mikro-kontroler 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 č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 pomeračkog registra sa serijskim izlazom, a primaju preko pomeračkog registra sa serijskim ulazom. U bilo kom trenutku može 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 slučaju da je komunikacija isključivo jednosmerna, svakako da se može ostvariti sa tri linije (bez MOSI ili MISO, zavisno od slučaja).

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

SS (Slave Select). Ovaj pin mikrokontrolera se veže na liniju za selektovanje slave-a. Kada mikrokontroler radi kao slave, i kada je ovaj (u slučaju ulazni) pin na visokom nivou, onda se takt

15

Page 16: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 komunikacije 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đuprocesorsku 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 softverski. 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 11. 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 11.

Slika 11 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 12. 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 jednosmerna linija sa koje pomerački registar 2 predaje podatke pomeračkom registru 1. Pinovi za takt (CLOCK) su zajednički (to je jednosmerna linija sa koje pomerački registar 1 šalje takt, bez razlike u kojem smeru se prenose podaci). Pinovi za omogućavanje komunikacije (ENABLE) su vezani zajedno – to je jednosmerna linija preko koje pomerački registar 1 omo-gućava (dozvoljava) rad pomeračkom registru 2.

Kada prvi pomerački registar šalje poruku drugom, redosled operacija je sledeći:

1. Preko linije ENABLE, prvi registar omogućava rad drugom, odnosno omogućava da drugi na svakom prelazu na liniji CLOCK iz visokog na nisko nivo (ili obrnuto, zavisno od logike), pročita stanje na liniji DATA1.

16

Page 17: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 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 pošalje. Poslednja pretpostavka u analogiji međumikrokontrolerske SPI komunikacije podrazumeva da je u registar za slanje 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, preciznije, 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 liniju 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 varira-ju u zavisnosti od mikrokontrolera i perifernog uređaja, ali to se mnogo lakše usvaja kada se poznaju osnovni principi.

/4/ DIGITALNI POTENCIOMETAR SA SPI INTERFEJSOM

17

Page 18: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 serijski interfejs (modovi 0, 0 i 1,1) ±1 LSB max INL & DNL realizovan u CMOS tehnologiji male potrošnje Maksimalna struja napajanja od 1µA prilikom izvršenja operacija u statičkom režimu rada Omogućeno povezivanje (ulančavanje) više uređaja (samo MCP42XXX) Mogućnost shutdown-a otvorenih kola svih otpornika radi maksimalne uštede energije Hardverski shutdown putem pina dostupan samo na MCP42XXX Operiše sa jednim napajanjem (2.7 – 5.5V) Industrijski temperaturni opseg: -40 C – +85 C Prošireni 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) uređaj i isporučuju se u 8-pinskom PDIP ili SOIC kućištu. MCP42XXX poseduje dva nezavisna kanala u 14-pinskom PDIP, SOIC ili TSSOP kućištu. Pozicija klizača kod MCP41XXX/42XXX se menja linearno i kontroliše se pomoću SPI interfejsa, industrijskog standarda. Uređaji imaju potrošnju manju od 1µA u statičkom režimu rada. Softversko isključivanje se izvodi razdvajanjem “A” pina od otpornog dela i simultanog povezi-vanja klizača na “B” pin. Dvokanalna (eng. dual) verzija MCP42XXX uređaja ima pin koji obavlja istu funkciju hardverski. Za vreme shutdown moda, sadržaj klizačkog registra je moguće

18

Page 19: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

promeniti, pa potenciometar ima novu vrednost nakon izlaska iz shutdown moda. Klizač se postavlja na sredinu skale (pozicija 80h) nakon uključenja. (reset) pin omogućuje hardversko resetovanje i takođe vraća klizač na sredinu skale. MCP42XXX SPI interfejs uključuje pinove SI i SO, omogućujući povezivanje deljivih uređaja. Otpornost između pojedinačnih kanala na MCP42XXX varira manje od 1%. Ova serija digitalnih potenciometara operiše sa jednim izvorom napajanja od 2.7 – 5.5V i specifici-rana je preko industrijskih i proširenih temperaturnih opsega.

Slika 14. Raspored pinova na kućištima

Opis pinova

1) PA0, PA1Veza A pina potenciometra

2) PB0, PB1Veza B pina potenciometra

3) PW0, PW1Veza klizača potenciometra

4) Izbor čipa, chip select ( )

Ovo je SPI port i koristi se za izvršenje nove komande nakon što je ista učitana u pomerački (eng. shift) registar. Ovaj pin ima Šmitov triger na ulazu.

19

Page 20: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 rastuću ivicu takta, a eksportuju se preko SO pina na opadajuću ivicu takta. Ovaj pin je kontrolisan od strane pina (tj., uređaj neće povlačiti struju ukoliko je SCK pin u radnom režimu, kada je 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 pomerački registar putem ovog pina. Ovaj pin je kontrolisan od strane pina (tj., uređaj neće povlačiti struju ukoliko je SCK pin u radnom režimu kada je 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 više urređaja. Podaci se eksportuju preko SO pina na opadajuću ivicu takta. Ovo je push-pull izlaz i ne prelazi u stanje visoke impedanse kada je na visokom nivou. Prelazi na niski logički nivo kada je na visokom logičkom nivou.

8) Reset ( )(Prisutan samo u MCP42XXX seriji)

Reset pin postavlja sve potenciometre na sredinu skale (kod 80h), ukoliko je na niskom logičkom nivou najmanje 150ns. Ovaj pin ne bi trebao da se postavlja u nisko logičko stanje kada je na nuli. Sa namerom smanjenja potrošnje, ovaj pin poseduje aktivno pull-up kolo. Ovaj pin povlači zanemarljivu struju na nivoima logičke nule i logičke jedinice. Pin Rreset ne sme ostati nepovezan.

9) Shutdown ( ) (Prisutan samo u MCP42XXX seriji)

Pin Shutdown ima Šmitov triger na ulazu. Kada je na pinu stanje logičke nule, kolo se postavlja u mod za smanjenje potrošnje (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 logički nivo kada je pin na niskom logičkom nivou. U cilju minimizacije potrošnje energije, ovaj pin poseduje aktivno pull-up kolo. Ovaj pin povlači zanemarljivu struju kada je na nivoima logičke nule i logičke jedinice. pin ne sme ostati nepovezan.

20

Page 21: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Tabela 7. Značenje pojedinih pinova (8-pinski potenciometar)

Pin#

Name Function1 Chip Select2 SCK Serial Clock3 SI Serial Data Input4 Vss Ground5 PB1 Pin B Connection For Pot 16 PW1 Wper Connection For Pot 17 PA1 Pin A Connection For Pot 18 PAO Pin A Connection For Pot 09 PWO Wper Connection For Pot 010 PBO Pin B Connection For Pot 011 Reset Input12 Shutdown Input13 SO Data Out for Daisy-Chaining14 VDD Power

Tabela 8. Značenje 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 mehaničkih potenciometara. Dostupne su otpornosti od 10 kΩ, 50kΩ i 100 kΩ. Kao što možemo videti na Slici 15, svaki od potenciometara se sastoji od promenljivog otpornika i 8-bitnog (256 pozicija) registra podataka koji određuje položaj klizača. Nominalne otpornosti klizača su 52Ω za verziju od 10 kΩ i 125 Ω za verzije od 50kΩ i 100 kΩ. Za slučaj dvokanalnih potenciometara, varijacije podudarnosti od kanala do kanala su manje od 1%. Otpornost između klizača i krajnje tačke bilo kog od otpornika menja se linearno, u zavisnosti od vrednosti smeštene u registar podataka. Kod 00h povezuje klizač sa B pinom. Prilikom dovođenja napajanja, svi registri podataka se automatski postavljaju na vrednost sredine skale (80h). Serijski interfejs omogućuje učitavanje podataka u pomerački registar, koji se onda prosleđuje registrima podataka. Serijski interfejs takođe omogućuje postavljanje pojedinačnih potenciometara u shutdown mod (režim rada), kako bi omogućila minimalna potrošnja energije. pin se upotrebljava za postavljanje svih potenciometara u shutdown mod, a pin omogućuje postavljanje svih potenciometara na sredinu skale (80h).

Pin#

Name

Function1 Chip Select2 SC Serial Clock3 SI Serial Data Input4 Vss Ground5 PA Pin A Connection 6 PW Wiper Connection 7 PB Pin B Connection 8 VDD Power

21

Page 22: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 sprežne konden-zatore. Ovi kondenzatore treba postaviti što je bliže moguće pinu uređaja. Preporučena vrednost kondenzatora je 0.1 µF. Digitalni i analogni putevi signala trebalo bi da budu što više odvojeni na ploči; takođe, nijedan od tih puteva ne bi trebao da se prostire ispod digitalnog potenciometra ili sprežnog kondenzatora. Veliku pažnju treba posvetiti putevima visokofrekventnih signala (kao što su linije takta) i držati ih što dalje od analognih vodova. Preporučuje se upotreba analogne ravne mase, kako bi potencijal mase bio isti za sve uređaje na ploči.

Režimi rada

Digitalni potenciometar se koristi/primenjuje u sledećim režimima rada:

22

Page 23: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

reostatski mod potenciometarski (mod delitelja napona)

Reostatski režim rada

U reostatskom režimu rada, potenciometar se koristi kao otporni element sa dva kraja. Neiskorišćeni kraj treba povezati za klizač, kao što je prikazano na Slici 17. Napomenimo da obrtanje polariteta A i B pina neće uticati na izvršenje operacije.

Slika 17. Reostatski režim rada (fiksna otpornost)

Upotreba digitalnog potenciometra u ovom modu omogućava kontrolu ukupne otpornosti između dva priključka. Izmerena otpornost biće najmanja prilikom koda 00h, kada je klizač vezan na B pin. Otpornost u slučaju ovog koda jednaka je otporu klizača, koji tipično iznosi 52Ω za MCP4X010 uređaje od 10 kΩ, 125 Ω za verzije od 50kΩ (MCP4X050) i 100 kΩ (MCP4X100). Za digitalni potenciometar od 10 kΩ, veličina LSB iznosi 39.0625 Ω (ako usvajamo ukupnu otpornost od 10 kΩ). Otpornost će se povećavati 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 između pina A i B manja je od 1%. Međutim, varijacija otpornosti od jednog do drugog digitalnog potenciometra može iznositi i do 30%. U reostatskom modu, otpornost ima pozitivan temperaturni koeficijent. Najveće razlike u zavisnosti od promene temperature javiće se u prvih 6% kodova (kodovi od 00h do 0Fh) usled uticaja koeficijenta otpornosti klizača na ukupnu otpornost. Na preostale kodove dominantan uticaj ima temperaturni koeficijent ukupne otpornosti R , koji tipično iznosi 800ppm/ C.

Slika 18. Reostatski režim rada (promenljiva otpornost)

23

Page 24: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Potenciometarski mod

U potenciometarskom modu, sva tri pina uređaja povezana su na različite priključke u kolu. Ovo omogućava potenciometru da daje izlazni napon proporcionalan ulaznom naponu. Ovaj mod se ponekad naziva mod delitelja napona. Potenciometar se koristi za dobijanje napona koji se podešava pozicijom klizača između dva završna kraja, kako je to prikazano na Slici 18. Napomenimo da obrnut polaritet A i B pina ne utiče na izvršenje operacije.

U ovoj konfiguraciji, koeficijent interne otpornosti definiše ukupan temperaturni koeficijent digi-talnog potenciometra. Otpornik koji se sastoji od R i R ima temperaturni koeficijent koji tipično iznosi 1ppm/ C (mereno pri kodu 80h). Pri nižim kodovima, temperaturni koeficijent otpornosti klizača je dominantan.

24

Page 25: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

/5/ MIKROKONTROLER PIC18F4550

PIC18F4550 pripada 18F seriji mikrokontrolera kompanije Microchip. Mikrokontroleri ovog proizvođača se odlikuju malom cenom i što je važnije besplatnom tehničkom podrškom (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) izvršavale jedan ciklus. Zbog toga se osnovni takt deli sa 4, jer se faze izvršenja naredbi preklapaju. Sve naredbe su fiksne dužine od 2 bajta, tako da je adresiranje memorije ograničeno. Zbog toga se memorija deli na 16 stranica, a izbor stranice se vrši u odgovara-jućim kontrolnim registrima. Ova osobina značajno usporava rad mikrokontrolera međutim napredniji kompajleri vrše 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 veličine 2 KB. Takođe postoji i 256B EEPROM-a. Procesor poseduje prošireni skup instukcija u odnosu na ranije serije (16 i 17) kao i nove načine adresi-ranja. Tako su dodate naredbe za hardversko množenje i deljenje, inkrementiranje i dekrementriranje sa uslovnim skokom, naredbe za čitanje tabela i druge. Programski brojač je širine 21 bit i njemu se može pristupati samo indirektno preko određenih registara.

Mikrokontroler poseduje i magacin (stack), ali se on nažalost može koristiti samo indirektno – tako što se u poseban registar upisuje željeni sadržaj i potom posebnom instrukcijom sadržaj tog registra stavlja na stek. Kod čitanja sa magacina vrednost se takođe nalazi u tom registru. Oscilator pruža brojne mogućnosti 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 može biti neza-visan od takta za CPU i druge jedinice.

Mehanizam prekida je organizovan kao jedan prekidni vektor koji sadrži 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 omogućavaju primenu u brojnim aplikacijama.

Slika 19. Mikrokontroler PIC18F4550 u kućištu DIP-40

25

Page 26: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 izdvojićemo 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 protočnog rada procesora (pipelining-a).

Nadalje ćemo detaljnije opisati USART i USB module mikrokontrolera PIC18F4550.

Slika 20. Raspored pinova mikrokontrolera PIC18F4550 u kućištu DIP-40

Režimi rada mikrokontrolera

Run mode: i CPU i periferija su uključeni Idle mode: CPU je isključen a periferija uključena Sleep mode: i CPU i periferija su isključeni 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 režima rada uključujući i visoko precizni PLL za USB Dva spoljašnja taktna režima rada, do 48 MHz Unutrašnji oscilator

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

26

Page 27: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Sekundarni oscilator koristi Timer1 Opcije dvostrukog oscilatora omogućavaju mikrokontroleru i USB modulu da radi na

različitim taktnim brzinama Fail-Safe taktni nadzor omogućava bezbedno isključivanje ukoliko se neki takt zaustavi

Osobine periferije

Svaki pin može da prihvati/preda relativno veliku vrednost struje 25mA/25mA Tri spoljašnja 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

Proširen CCP (Capture/Compare/PWM) modul- Multiple output režimi rada- Mogućnost izbora polariteta- Programabilno «mrtvo» vreme- Automatsko isključivanje i automatski restart

Prošireni USART modul Modul master sinhronog serijskog porta (MSSP) podržava 3-žični SPI (sva četiri režima

rada) i I2C master i slave režim rada 10-bitni 13-kanalni A/D konvertor sa pristupnim vremenom koje se može 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) proširene programske Flash memorije 1 000 000 upisivanja/brisanja ciklusa EEPROM memorije podataka Flash/Date EEPROM zadržavanje duže od 40 godina Mogućnost samoprogramiranja tokom rada (ovo na primer dozvoljava CCS kompajler) Postoje nivoi prioriteta za prekide Jednociklusni množač 8 x 8 Prošireni watchdog tajmer (WDT):

- Period programiranja od 41 ms do 131 ms Zaštita programskog koda Programiranje unutar sistema preko dva pina i napajanjem od 5V Debagovanje unutar sistema preko dva pina (ICD) Prošireni ICD/ICSP port (samo za mikrokontrolere u 44-pinskom kućištu) Širok opseg napona napajanja (od 2V do 5.5V)

27

Page 28: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 21. Arhitektura mikrokontrolera PIC18F4550

nanoWatt Tehnologija

Svi mikrokontroleri iz familije PIC18F2455/2550/4455/4550 imaju takve katakteristike da mogu značajno da smanje potrošnju. Način rada i procena smanjenja potrošnje mogu da budu:

Alternate Run režim rada: U zavisnosti da li kontroler radi po taktu Timer1 ili unutrašnjeg oscilatora , smanjenje može da bude i do 90%.

Multiple Idle režimi rada: Kontroler može da radi i sa isključenim CPU dok je periferija još uvek aktivna. Na ovaj način potrošnja iznosi oko 4% od potrošnje u normalnom režimu rada.

On-the-fly prekidački režim rada: Kontrola potrošnje se može pozvati i u toku programa. Na ovaj način se korisniku ostavlja mogućnost promene režima rada rada u softverskoj apli-kaciji.

Smanjena potrošnja u modulima mikrokontrolera: Pošto je potrošnja veća kada se ko-riste i Timer1 i Watchdog tajmer, potreba za njim je minimizirana.

Opcije višestrukog oscilatora i njegove karakteristike

28

Page 29: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Svi mikrokontroleri iz familije PIC18F2455/2550/4455/4550 pružaju dvanaest različitih opcija oscilatora, dozvoljavajući korisnicima širok izbor u razvoju aplikacijskog hardvera. To podrazumeva:

Četiri režima rada koji koriste kristalni kvarc ili keramički rezonator Četiri režima rada koja koriste spoljašnji takt Unutrašnji oscilator koji omogućuje 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 može sam da izabere, između 125 KHz i 4 MHz, što konačno daje 8 taktnih frekvencija.

PLL frekvencijski množač, dostupan i za visoke brzine i režim rada spoljnog oscilatora, što omogućava širok spektar taktnih brzina od 4 MHz do 48 MHz.

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

Ostale specijalne karakteristike

Izdržljivost memorije: Proširene Flash ćelije za obe programske memorije i za EEPROM memoriju podataka su procenjene da traju najmanje više eares/write ciklusa – više od 100 000 za programsku memoriju i 1 000 000 za EEPROM. Zadržavanje (čuvanje) podataka bez osvežavanja je procenjeno da bude veće od 40 godina.

Mogućnost samoprogramiranja: Ovaj uređaj može da sam upisuje u prostor sopstvene programske memorije pod kontrolom unutrašnjeg softvera. Korišćenjem bootloader-a, koji je smešten u zaštićenom boot bloku na vrhu programske memorije, postaje moguće da se stvori aplikacije koja može da unapređuje (update-uje) sama sebe.

Prošireni set instrukcija: Familija mikrokontrolera sa USB modulom (PIC18F2455/2550/ 4455/4550) uvodi dodatno proširenje standardnog seta instrukcija serije PIC18, uvodeći dodatnih 8 instrukcija i Indexed Literal Offset Addressing režim rada. Cilj ovoga bio da bi se optimizovao program pisan na višem programskom jeziku kao što je C.

Proširen CCP modul: U PWM režimu rada, ovaj modul omogućava 1, 2 ili 4 modulisana izlaza za kontrolisanje half-bridge i full-bridge drajvera. Ostale ka-rakteristike su auto-matsko isključivanje (za isključivanje 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).

Proširen USART: Ovaj modul serijske komunikacije može da vrši standardne RS-232 operacije i pruža podršku za LIN protokol. Druga proširenja uključuju automatsku detekciju brzine prenosa podataka (Automatic Baud Rate Detection) i 16-bitni Generator takta za prenos podataka (Baud Rate Generator) za poboljšanje rezolucije. Kad mikrokontroler ko-risti unutrašnji oscilator, EUSART omogućava stabilnu operaciju za aplikaciju koja komu-nicira spolja bez korišćenja eksternog kristala (ili prati potrošnju 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 način se smanjuje dodatni kod).

Rezervisan ICD/ICSP Port: Ovaj modul uključuje debager (za pronalaženje grešaka) i pi-nova za programiranje koji nisu u multipleksu sa nekim drugim funkcijama mikrokon-trolera. Ponuđena kao opcija, ova funkcija omogućava korisnicima da razviju moćne I/O aplikacije, sa mogućnošću programiranja i debagovanja u samom električnom kolu.

Organizacija memorije

29

Page 30: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Memorija mikrokontrolera PIC18F4550 je organizovana u sledeće tri celine:

Programska memorija Memorija podataka (RAM) EEPROM memorija podataka

Memorija podataka i programska memorija su odvojene, što omogućava istovremeni pristup prostoru ove dve memorije. EEPROM memorija podataka, za neku praktičnu primenu, može se smatrati kao periferni uređaj, 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 mogućnosti da adresira programsku memoriju od 2 MB. Ukoliko se pristupi memorijskoj lokaciji između 2MB-ne

30

Page 31: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

adrese i gornje granice fizički implementirane memorije, to će imati za posledicu učitavanje logičkih '0' (NOP instrukcija).

Mikrokontroler PIC18F4550 poseduje Flash memoriju kapaciteta 32KB i može da memoriše 16.384 instrukcije obima jedne reči.

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 izvršenja nekog programa.

Slika 22b. Programska memorija i magacin (stack) tokom izvršenja programa

USART modul

Univerzalni sinhroni/asinhroni serijski prmopredajnik ima mogućnosti 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 kontroliše pomoću 3 registra. U pitanju su:

1. TXSTA : Predajni statusni i kontrolni registar sa sledećim bitovima:

CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D CSRC – nebitan kod asinhronog prenosaTX9 – “1” uključuje prenos devetog bitaTXEN – predaja dozvoljena sa setovanjem ovog bitaSYNC – ”0” je sinhroni a “1” asinhroni režim radaBRGH – setuje veliku brzinu prenosaTRMT – status predajnog pomeračkog registra, “1” registar je prazanTX9D – deveti bit za prenos (najcešće parnost)

31

Page 32: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

2. TCSTA : Prijemni statusni i kontrolni registar sa sledećim bitovima:

SPEN RX9 SREN CREN ADDEN FERR OERR c SPEN – uključuje/isključuje serijski portRX9 – “1” uključuje prenos devetog bitaSREN – nebitan kod asinhronog prenosaCREN – prijem podataka uključen setovanjem ovog bitaADDEN – bit dozvole za detekciju adreseFERR – bit za detekciju grešaka rama (okvira)OERR – bit za detekciju grešaka prekoračenjaRX9D – deveti bit za prenos (najčešće parnost)

3. BAUDCON: Kontrolni registar generatora takta za brzinu prenosa

ABDOF RCIDL RXDTP TXCKP BRG16 – WUE ABDEN ABDOF – bit poravnanja prilikom automatske akvizicije podatakaRCIDL – prijemni bit o režimu smanjene potrošnjeRXDTP – ako je “1”, Rx podaci su invertovaniTXCKP – ako je “1”, Tx podaci su invertovaniBRG16 – uključuje 16-bitni generator bodove brzineWUE – aktivacioni (wake-up) bit dozvole ABDEN – uključuje merenje brzine prenosa (brzina u baudima) sledećeg karaktera (55h)

Izbor takta se vrši setovanjem odgovarajućih bitova i upisom vrednosti u registarski par SPBRGH: SPBRG. U zavisnosti od kombinacije, koristi se sledeća tabela za računanje željene brzine asinhrone komunikacije:

Konfiguracioni bitovi BRG/EUSART mod

Formula za ra-čunanje brzineSYNC BRG16 BRGH

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 naći tablice sa standardnim bodovim brzinama i procentualnim odstupanjima za različite konfiguracije takta procesora.

Prenos podaka se vrši preko predajnog i prijemnog kola asinhronog primopredajnika.

32

Page 33: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 23. Predajno kolo USART modula

TXREG sadrži 8-bitni podatak koji se treba poslati. Kada se u ovaj registar upiše neka vrednost njegov sadržaj se prebacuje u TSR registar za pomeranje (šiftovanje). Tada je TXREG prazan što može izazvati prekid. TSR registar se ne puni podatkom iz TXREG sve dok se ne prenese poslednji stop bit. TSR je dužine 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 upiše posle napuštanja 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 odgovarajući pin preko koga se prenose serijski podaci.

Slika 24. Prijemno kolo USART modula

33

Page 34: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Prijemno kolo je slične konstrukcije i radi po sličnom principu. Podaci sa ulaza se vode u datarecovery kolo koje radi na 16 puta većem taktu od brzine prenosa, kako bi se izbegle greške – jer je brzina odabiranja/uzorkovanja veća od brzine prenosa. Primljeni podaci se pomeraju kroz prijemni pomerački (shift) registar RSR dužine 9 bita. Posle toga se ovim podacima može pristupiti preko RCREG registra, dok se kao i kod predaje 9-tom bitu pristupa preko kontrolnog registra. Kada se RCREG napuni vrednošću iz RSR može se generisati prekid kako bi se obradili preuzeti podaci.Iz prethodnog se može zaključiti kako se za serijsku komunikaciju mogu koristiti dva načina rada. Jedan je zasnovan na prekidima koji se generišu pri završetku slanja ili prijema svakog bajta tako da se u prekid potprogramu može prihvatiti i obraditi primljeni podatak ili pripremiti slanje sledećeg bajta. Drugi način je sličan samo se umesto prekida koristi prozivka (eng. pooling) statusnih bitova koji uka-zuju na završetak transfera jednog bajta.

USB modul

Zahvaljujući USB modulu i interfejsu, PIC18F4550 se izdvaja od ostalih mikrokontrolera iz familije. USB komunikacija je veoma složena i nije jedinstvena – zbog čega ćemo samo ukratko opisati osobine USB modula korišćenog mikrokontrolera.

Karakteristike USB modula

Fleksibilan USB 2.0 standard Brzine: Low Speed (1.5 Mb/s) i Full Speed (12 Mb/s) Podržava kontrolni, prekidni, izohroni i bulk transfer Podržava do 32 krajnje tačke, odnosno16 bidirekciono 1Kbit-ni dvostruki pristup RAM memoriji za USB Unutar mikrokontrolera je integrisan USB primopredajnik sa sopstvenim regulatorom napona Interfejs za spoljašnji USB primopredajnik Protočni paralelni port (Streaming Parallel Port) za (protočni) USB prenos.

Fizička 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), veličini endpoint-a i njegovoj početnoj adresi. Pristup podacima koji se primaju ili šalju se obavlja preko ovih endpoint-a. USB serijski interfejs vrši primopredaju podataka i on mora biti taktovan frekvencijom od 24MHz. Modul ima ugradjen 3.3V regulator koji služi za napajanje pull-up otpornika na D+ liniji što je bitno kod početne faze prepoznavanja od strane hosta. Njime se određuje i brzina prenosa (spor ili brz transfer).

Komunikacija se zasniva na nekoliko prekida, a najvažniji je onaj koji se generiše kada se primi neki token (podatak). Tada se u odgovarajućim registrima može pročitati u kojem endpoint-u se podatak nalazi kako bi mu se pristupilo. Postoje i drugi prekidi koji se okidaju u slučaju greške, reseta, zagušenja ili aktivnosti na liniji. Svi oni se mogu iskoristiti za kontrolu komu-nikacije. Zbog svoje kompleksnosti koja uglavnom višestruko premašuje složenost većine aplikacija rad sa USB portom i mikrokontrolerom se najčešće izvodi pomoću gotovih modula. «Oživljavanje» USB komunikacije potrebno pisanje posebnog drajvera uređaja na strani hosta kao i odgovarajućeg softvera u mikrokontroleru. Zahvaljujući pomenutom HID (Human Interface Device) standardu i gotovim programskim modulima ovaj veliki problem se veoma lako rešava pogotovo, ukoliko se radi sa PIC mikrokontrolerima.

34

Page 35: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 25. Blok šema USB modula

Detaljnije informacije vezane za USB komunikacioni standard se mogu pronaći na zvaničnom sajtu standarda www.usb.org.

ADC SA SUKCESIVNIM APROKSIMACIJAMA

Svi signali u prirodi su kontinualni, a veoma teško je upravljati nekim procesom bez digitalizacije analognih veličina. Kao što je napomenuto, PORTA i PORTE imaju mogućnost 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 potrošnju i zauzima relativno malo mesta na silicijumskoj pločici. 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). Najčešće 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.

35

Page 36: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 26. A/D konvertor sa sukcesivnim aproksimacijama

Maksimalni ulazni napon koji se može priključiti 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. Sledeći bit (Qn-2=1) ima težinu Vps / 4, odnosno, pošto se radi o binarnom D/A konvertoru, svaki sledeći bit ima težinu upola manju od predhodnog.

Konverzija počinje tako što, nakon priključenog Vul, kontrolno logičko kolo postavi logičku jedinicu u bit najveće težine registra sukcesivnih aproksimacija (Qn-1). D/A konvertor generiše 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 najveće vrednosti Qn-1 izlazne informacije, a zatim postavlja drugi bit po težini Qn-2 na logičku jedinicu. Komparator poredi novu vrednost V iz (koja je Vps / 4 ili 3Vps / 4 u zavisnosti dobijenog u poređenju sa bitom najveće 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 težini. Kontrolna logika postavlja sledeći bit koji ima težinu upola manju od prethodnog na logičku jedinicu. Proces poređenja i postavljanja narednih flipflopova se nastavlja sve do bita najmanje težine Q0. U zavisnosti od logičkog nivoa komparatora flipflop bita najmanje težine se resetuje ili ostaje logička jedinica. Time je konverzija završena.

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 počinje postavljanjem koda "1000" u SAR (registar sukcesivnih aproksimacija). Izlazni napon D/A konvertora se postavlja na Viz = Vps / 2. Pošto je Vul > Viz, na osnovu k=1, u trenutku t1 kontrolna logika ne resetuje Q3, čime je određen 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 određena i druga cifra izlazne digitalne informacije. SAR je postavljen u stanje "1010", a Viz na Viz= 5Vps/8. Pošto 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 konačan rezultat konverzije koji je ostao u registru sukcesivnih aproksimacija Q3Q2Q1Q0="1010", Što je najbliži binarni broj koji odgovara ulaznom naponu.

36

Page 37: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 (skraćeno 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) označava kraj konverzije.

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

postavljanja D/A konvertora, kašnjenja kroz komparator i kašnjenja kroz kontrolnu logiku. Korišćeni n-bitni D/A konvertor mora imati monotono rastuću karakteristiku prenosa

(diferencijalnu linearnost bolju od ±0.5 LSB). Flipflopovi registra sukcesivnih aproksimacija (SAR registra) treba da imaju mogućnost

pojedinačnog 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 slučaju 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 kašnjenja kroz komparator i kašnjenja kroz registar sukcesivnih aproksimacija sa pripadajućim logičkim kolima. Dominantan uticaj na vreme konverzije ima vreme postavljanja D/A konvertora, pošto je ovo vreme često i za red veličine duže od ostalih kašnjenja u mreži. Tipično vreme konverzije za, na primer, dvanaestobitne integrisane SAR ADK je od 1µs za najbrže, do nekoliko desetina µs za sporije ADC.

37

Page 38: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Brzina SAR ADC je ograničena sa sledećim faktorima:

Vremenom smirivanja D/A konvertora Komparatorom, koji za određeno vreme mora da detektuje male razlike između napona Vul i Viz Vremenom izvršavanja logičkih operacija.

Maksimalno smirivanje D/A konvertora je najčešće određeno smirivanjem MSB-a. Linearnost ce-lokupnog A/D konvertora je limitirana linearnošću 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 najčešće srećemo realizacije čija rezolucija ne pre-lazi 12 bita. Kod mikrokotrolera PIC18F4550 koristi se 10-bitni ADC.

Najvažnije prednosti A/D konvertora sa sukcesivnim aproksimacijama su mala potrošnja, visoka rezolucija, tačnost i to što zauzimaju malo mesta na silicijumskoj pločici. Glavna ograničenja u strukturi su mala brzina odabiranja, kao i zahtevi da tačnost pojedinih delova (kao što su D/A konvertor i komparator) bude na nivou tačnosti 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.

Inače, registar ADCON0 definiše startovanje (uključivanje) modula za konverziju, kanal koji se koristi za konverziju, dok se registrom ADCON2 podešavaju parametri A/D konverzije (frekvencije odabiranja konvertora, početak konverzije).

Registrom ADCON1 određuje se uloga pojedinih pinova (analogni ili digitalni).

Slika 28a. Registar ADCON0

bitovi 7 i 6 – ne koriste sebitovi 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', vrši se konverzija)bit ADON – dozvola rada A/D konvertora

Slika 28b. Registar ADCON1

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

analogni, a koji digitalni (videti sledeću tabelu)

38

Page 39: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Na sledećoj slici je prikazan registar ADCON2:

Slika 29. Registar ADCON2

bit 7 (ADFM) – definiše format podatka (poravnanje ulevo ili udesno)bit 6 – ne koristi sebitovi ACQT2-0 – definišu vreme prikupljanje podataka konverzije bitovi ADCS2-0 – definišu 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 prođe zahtevano akviziciono vreme4. Početak procesa A/D konverzije5. Završetak procesa A/D konverzije6. Čitanje rezultata A/D konverzije iz registra ADRES7. Za sledeću konverziju, skočiti na korak 1 ili korak 2.

39

Page 40: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slici 30. Blok-dijagram A/D konvetora

Greške A/D konverzije

A/D konvertori nemaju idealnu prenosnu funkciju. Odstupanja od idealne prenosne funkcije definišu DC preciznost i okarakterisana su parametrima u tablicama tehničkih podataka.

A/D konverzija odstupa od idealnog zbog varijacija u procesu izrade što je zajedničko za sva integrisana kola, kao i zbog raznih drugih izvora grešaka u samom procesu analogno-digitalne (A/D) konverzije. Preciznost A/D konvertora zavisi od nekoliko ključnih tehničkih osobina, koje obuhvataju diferencijalnu nelinearnu grešku (DNL), integralnu nelinearnu grešku (INL), ofset i grešku pojačanja, preciznost referentnog napona, uticaj temperature i dinamičke performanse.

40

Page 41: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Dve veoma popularne metode za utvrđivanje ukupne greške sistema su metoda kvadratnog korena sume kvadrata grešaka (root-sum-square - RSS) i metoda najgoreg slučaja. RSS metoda pod-razumeva kvadriranje pojedinačnih grešaka, njihovo sabiranje i konačno kvadratni koren zbira daje ukupnu grešku:

UKUPNA GREŠKA =

, gde En predstavlja pojedinačnu grešku neke komponente ili parametra. Pomenuti metod je najprecizniji kada pojedinačne greške nisu u međusobnoj korelaciji (što može

a ne mora biti slučaj). Kod metode najgoreg slučaja, sve pojedinačne greške se sabiraju. Ova metoda garantuje da greška nikada neće preći određenu granicu. Kako se na ovaj način dobija gornja granica greške, stvarna greška je uvek manja od ove vrednosti (vrlo često mnogo manja). Izmerena stvarna greška obično je negde između vrednosti dobijene na ova dva načina, ali je često bliža vrednosti dobi-jenoj RSS metodom. U zavisnosti od potreba i zahteva bira se između najgore i tipične vrednosti gre-šaka. Odluka o tome koja će vrednost biti korišćena zavisi od mnogo faktora, uključujući tu i stan-dardnu devijaciju od merene vrednosti, važnosti pojedinih parametara, veličini greške u odnosu na dru-ge greške, itd. Tako da u stvari i ne postoje neka tačno određena i stroga pravila koja moraju bit ispoš-tovana.

Od aplikacije zavisi koje će specifikacije projektant da smatra najvažnijim. Na primer, DTMF dekoder uzorkuje telefonski signal kako bi utvrdio koji je taster pritisnut na aparatu sa tonskim biranjem. U ovom slučaju najbitnije je izmeriti snagu signala (iz određenog seta frekvencija) među ostalim tonovima i šumom koji nastaje prilikom A/D konverzije. U ovom projektu, projektant će naj-više pažnje da obrati na parametre dinamičkih performansi kao što su odnos signal/šum i harmonijska izobličenja. U drugom primeru, sistem može da očitava signal koji meri temperaturu neke tečnosti. U ovom slučaju, DC preciznost merenja je najbitnija tako da će ofset, pojačanje i nelinearnosti biti najpre proveravane.

Ne mora da znači, da ako uzmemo A/D konvertor sa više bita od predviđenog za neku određenu preciznost, da ćemo i dobiti karakteristike konvertora u željenoj preciznosti. Ako na primer, pret-postavimo da ja potrebno postići preciznost od 0,1% ili 10-bitnu preciznost (1/210), tako da ima smisla odabrati konvertor sa rezolucijom većom od ove. Ako odaberemo 12-bitni konvertor, možemo da pretpostavimo da će to biti dovoljno; ali bez analize specifikacije, nema garancije da on postiže 12-bitne performanse (on može biti boljih ili lošijih karakterisitka). Na primer, 12-bitni A/D konvertor sa integralnom greškom nelinearnosti od 4 LSB-a (Least Significant Bit - najmanje važan bit) može postići samo 10-bitnu preciznost u najboljem slučaju (ako se podrazumeva da su greške ofseta i poja-čanja kalibrisane). Uređaj sa integralnom greškom nelinearnosti od 0.5 LSB-a može postići grešku manju od 0.0122% odnosno 13-bitnu preciznost (ako su uklonjene greške ofseta i pojačanja). Da bi se izračunala najveća preciznost, potrebno je maksimalnu integralnu grešku nelinearnosti podeliti sa 2N, gde je N – broj bita. U našem slučaju, ako dopustimo grešku od 0.075% (tj. 11-bitnu grešku) za A/D konvertor, ostaje nam greška od 0.025% za ostatak elektronskog sklopa, što uključuje greške senzora, grešku od operacionih pojačavača, multipleksera, eventualnog D/A konvertora, ili drugih analognih izlaznih signala na putanji signala.

Mnogi signali su relativno statični, kao npr. izlazni signali temperaturnih senzora ili senzora pritiska. U takvim aplikacijama mereni signal je povezan sa nekom fizičkom veličinom i apsolutna preciznost merenja tog napona je važna. Parametri A/D konvertora koji opisuju ovaj vid preciznosti su greška ofseta, greška pojačanja dinamičkog 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 grešaka A/D konvertora, a nastaje kao rezultat pretvaranja signala i podataka je greška kvantizacije. Ova greška ne može biti izbegnuta u me-

41

Page 42: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

renjima uz A/D konverziju. DC preciznost i rezultujuću apsolutnu grešku određuju četiri parametra – ofset, pojačanje u celom dinamčkom opsegu, INL i DNL. Greška kvantizacije je nezaobilazni rezultat predstavljanja analognog signala u digitalnim brojevima (drugim rečima, plod analogno-digitalne konverzije). Maksimalna greška kvantizacije je određena rezolucijom merenja (ili rezolucijom A/D konvertora, ako je signal oversample-ovan). Dalje, greška kvantizacije će se pojaviti kao šum, poznatiji kao šum kvantizacije u dinamičkoj analizi. Na primer, greška kvantizacije pojaviće se kao prag šuma u FFT dijagramu (frekvencijskom spektru) merenog signala na ulazu A/D konvertora.

Slika 31a. Greška ofseta kod realnog A/D konvertora

Slika 31b. Greška pojačanja kod realnog A/D konvertora

42

Page 43: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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

43

Page 44: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

/6/ SOFTVER ZA PIC MIKROKONTROLERE

Za projekat koji je pred vama je korišćen softver mikroC od firme Mikroelektronika iz Beograda. Ovaj softverski 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.

Ovde ćemo navesti osnovne karakteristike softvera: 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.

Instalacija programa traje oko 30 sekundi (treba samo pratiti ponuđene 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 biće ilustrovan postupak pisanja kôda u mikroC-u (Slike 32-37) i generisanje fajlova posle prevođenja (kompilacije/kompajliranja). Slike dovoljno jasno ilustruju ceo proces, a komentari se nalaze ispod slika.

44

Page 45: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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

Slika 33. Podešavanje parametara projekta (naziv mikrokontrolera, takta, reseta...)

45

Page 46: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 34. U editor treba upisati program (kôd) mikrokontrolera

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

46

Page 47: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 36. Kompajliranje programa preko komande Project → Build

Slika 37. Izgled prozora posle prevođenja sa izveštajem (Messages)

47

Page 48: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 38. Nakon kompajliranja generiše se nekoliko fajlova: asemblerski kôd (ASM), heksadecimalni kôd (HEX), izveštaji itd.

USART terminal

Slika 39a. Izgled prozora kod USART komunikacionog terminala

48

Page 49: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Pokretanje internog softverskog terminala mikroC-a koji se koristi za komunikaciju računara i mikrokontrolera ostvaruje se na sledeći način: Tools → USART Terminal.

Na Slici 39a 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 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) 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.

Kada se podese parametri, terminal se startuje klikom na komandno dugme Connect. Odmah zatim, terminal je spreman da prihvati komande. Kada se završi komunikacija, treba kliknuti na ko-mandno dugme Disconnect.

Slika 39b. Izgled prozora kod HID komunikacionog terminala

49

Page 50: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

HID terminal

Pokretanje internog softverskog HID terminala mikroC-a koji se koristi za komunikaciju računa-ra i mikrokontrolera ostvaruje se na sledeći način: Tools → HID Terminal.

Kada se priključi uređaj sa implementiranim HID standardom, u prozor HID Devices se auto-matski upisuje naziv tog uređaja.

Na Slici 39b prikazan je izgled prozora HID terminala. Kao što se vidi, moguće je podesiti sle-deće parametre:

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.

Unutar menija Descriptor moguće je podesiti još neke parametre, kojima se nećemo baviti.

Razvojni sistem Easy PIC i program PIC FLASH

Slika 39c. Izgled razvojnog sistema Easy PIC

50

Page 51: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 39d. Izgled prozora kod PIC FLASH programa

Programiranje mikrokontrolera PIC18F4550, tj upisivanje programa u njegovu flash memoriju, vrši se preko razvojnog sistema Easy PIC (prikazan na Slici 39c). Naime, mikrokontroler se postavi u 40–pinsko podnožje razvojnog sistema, a zatim se pokrene program PIC Flash preko kojeg se unosi odgovarajući heksadecimalni kod (komandno dugme Load Hex), pri čemu su podešeni parametri kao na Slici 39d.

51

Page 52: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

/7/ REALIZACIJA PROJEKTA

Slika 40a. Izgled blok-šeme realizovanog projekta

Na Slici 40a je prikazana blok šema projekta, a na Slici 40b je data električna šema. Kao što mo-že da se uoči, postoji dvostruka veza između mikrokontrolera PIC18F4550 i PC računara – preko serijskog i preko USB porta. Mikrokontroler ujedno koristi napajanje iz USB porta računara (5V±0.25V).

Tasterom 1 (T1) se resetuje mikrokontroler (pin MCLR), dok se Tasterom 2 (T2) zadaje START komanda. Tri režima rada realizovanog kola se definišu preko DIPSW2 prekidača.

Na dva ulazna pina Porta A se dovode analogni naponi – sa standardnog obrtnog potenciometra (PA0) i digitalnog SPI potenciometra (PA1). Inače, 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 određuje vrednost otpornosti na «klizaču». Korak digitalnog potenciometra iznosi 39.06 Ω (10K/ 28). Ako mu se pošalje sekvenca 00000000, otpornost na klizaču je 0, za 00000001 otpornost na klizaču je 39.06 Ω, za 00000010 otpornost na klizaču je 78.12 Ω itd.

Ideja je da se odredi karakteristika A/D konvertora integrisanog u mikrokontroleru. Karakteristika će se izmeriti u 25 tačaka.

Ujedno je moguće odrediti i ofset, kao i grešku pune skale A/D konvertora korišćenjem SPI potenciometra.

52

Page 53: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Posle toga je moguće «ručno» vršiti A/D konverziju napona sa obrtnog potenciometra, uz kom-penzaciju ofseta koji je određen u prethodnom koraku.

Slika 40b. Izgled električne šeme projekta

Za komunikaciju PC računara i mikrokontrolera koriste se alati unutar softvera mikroC:

USART Terminal (za komunikaciju preko serijskog porta), HID Terminal (za komunikaciju preko USB porta računara).

(HID je skraćenica od Human Interface Device)

USB port se može 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 sprežu preko interfejsnog kola MAX232, koje služi za prilagođe-nje naponskih nivoa.

Na Slici 41a se nalaze relevantni blokovi (integrisana kola, tasteri, prekidači, konektori) na is-korišćenoj pločici za realizaciju ovog projekta (Slika 41b).

Kada se tasterom T2 zada START komanda, onda mikrokontroler vrši jednu od tri operacije zavisno od toga koja je kombinacija zadata na prekidaču DIPSW2:

00 – merenje ofseta i greške 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.

53

Page 54: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Dakle, greška 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).

Slika 41a. Raspored relevantnih blokova projekta na pločici

54

Page 55: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 41b. Štampana ploča koja je prepravljena za potrebe ovog projekta

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

REDNI BROJ

MERENJAVul (V) 8-BITNA REČ NA

ADC-U

1 0.000 000000002 0.019 00000001

55

Page 56: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

3 0.155 000010004 0.334 000100105 0.626 001000006 1.276 010000017 1.630 010100108 1.745 010110019 2.106 0110101010 2.511 1000000011 2.531 1000001012 2.824 1001000013 3.010 1001100114 3.330 1010100115 3.740 1011111116 3.765 1100000017 3.906 1100011118 4.141 1101001119 4.442 1110001120 4.632 1110110021 4.744 1111001022 4.805 1111010123 4.915 1111011024 4.942 1111110025 5.000 11111111

Tabela 9. Rezultati merenja napona ADC-aSa grafika na Slici 42a uočavamo da karakteristika ADC-a pomalo odstupa od linearnosti, a na-

ročito pri kraju opsega (oko 5V) – kada dobija i kvadratnu (paraboličnu) komponentu. Međutim, ova nelinearnost je izuzetno mala, tj. zanemarljiva je za mnoge praktične primene.

Punom linijom je prikazana aproksimacija karakteristike A/D konvertora (ADC).Vrednost ofseta je reda nekoliko mV (u našem slučaju je 0000000010, što iznosi oko 9mV). Soft-

verska kompenzacija ofseta se vrši 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 najniže težine se odbacuju (videti listing programa u mikroC-u). To znači, nezavisno da li je izmerena vrednost napona 1111111100 ili 1111111111, USART terminal će primiti 8-bitni podatak 11111111.

Na Slici 42b je prikazana ukupna greška A/D konvertora koja predstavlja superpoziciju greške pojačanja (linearna) i diferencijalnu nelinearnost A/D konvertora. Kao što može da se primeti, ukupna greška (bez ofseta, koji je softverski komponzovan) ne prelazi vrednost ±LSB. (Detaljnije o greškama A/D konvertora je izloženo u 5. poglavlju ovog rada).

Napomena: Za merenje napona je korišćen digimer MASTECH MS8201H.

56

Page 57: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 42b. Izmerena greška konverzije A/D konvertora

mikroC program za projekat

Za naš program je iskorišćena gotova biblioteka USBdsc.c iz mikroC-a koja omogućava da se mikrokontroler ponaša kao HID (Human Interface Device).

57

Page 58: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 43a. Memorijska mapa mikrokontrolera

Kod serije mikrokontrolera PIC18F memorija podataka je implementirana kao statički RAM. Svaki registar u ovoj memoriji ima 12-bitnu adresu. Celokupna memorija podataka je podeljena na 16 banki veličine 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 opšte namena (GPR). Istaći ćemo kako registri opšte namene GPR(1) služe 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 može da se uoči na slici, ovi registri služe 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 brojača (PCL, PCLATH, PCLATU), tajmera, prekida itd.

58

Page 59: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

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 definišu kao digitalni ulazi, a A1 –A0 kao analogni ulazi (Slika 29).

59

Page 60: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 43c. Algoritam programa upisanog u mikrokontroler PIC18F4550

60

Page 61: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Softver mikrokontrolera je napisan tako da izvršava beskonačnu petlju, pri čemu tokom svakog obilaska petlje se proverava da li se nešto promenilo (promena stanja na pinovima, prijem podatka sa serijskog porta i slično) i u skladu sa promenama se izvršavaju određene akcije

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

Na samom početku 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 definišu kao analogni ulazi Porta A (na njih se dovodi analogni naponi sa digitalnog i obrtnog potenciometra, respektivno), dok se A5:A2 definišu 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).

Da bi se koristili USART, SPI i USB modul mikrokontrolera (videti Sliku 21), neophodno je da se izvrši 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 –zahvaljujući kome je omogućeno da se mikrokontroleru od strane računara pristupa kao HID (Human Interface Device) uređaju, o čemu je bilo reči na početku ovog poglavlja.

Definisano je da kada mikrokontroler primi podatak sa serijskog porta računara, isti podatak treba da prosledi ka USB portu. Naime, podatak koji se pošalje iz USART terminala prihvata USART modul mikrokontrolera i preko USB modula ga ka HID terminalu (oba softverska terminala su opisana u 6. poglavlju rada).

(Za operacije sa USB modulom mikrokontrolera rezervisane su adrese 0400h-7FFh u koje se smešta potprogram USBdsc.c.)

61

Page 62: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Zavisno od stanja na pinu A4 mikrokontrolera, mikrokontroler će ispitati stanje prekidača DIPSW2 (naredni korak) ili će preskočiti ispitivanje. Za ovo ispitivanje se koristi standardna if petlja. Već je istaknuto kako je na ovaj pin povezan taster T2 kojim se definiše START operacija. Ukoliko je T2 pritisnut (PA4=0), onda se ispituje stanje DIPSW2 prekidača, a ako nije pritisnut „pres-kače” se procedura ispitivanja stanja DIPSW2 prekidača i prelazi se na blok kašnjenja (1s).(Adresni prostor koji je rezervisan za ove operacije je 060h-3FFh.)

Kada se ispituje stanje DIPSW2 prekidača, relevantna su 3 stanja (00, 01 i 10), dok stanje 11 ne proizvodi nikakav efekat, tj. prelazi se na blok kašnjenja (1s).

Ako je DIPSW2=00, mikrokontroler preko SPI modula (koji je softverski implementiran), od-ređuje vrednost ofseta (za stanje digitalnog potenciometra 00000000) i napona pune skale (za stanje digitalnog potenciometra 11111111). Oba podatka se šalju preko USART modula mikrokontrolera ka USART terminalu.

Ako je DIPSW2=01, mikrokontroler preko svog A/D konvertora meri napon na obrtnom poten-ciometru – varijabla i, a zatim ga šalje preko USART modula ka USART terminalu.

Ako je DIPSW2=10, mikrokontroler preko svog A/D konvertora meri napon ofseta A/D konver-tora (preko digitalnog potenciometra) – varijabla j , a zatim i na obrtnom potenciometru – varijabla i. Kompenzacija ofseta se, dakle, vrši softverski (i:=i-j), a zatim se napon obrtnog potenciometra sa kompenzovanim ofsetom (i) šalje preko USART modula ka USART terminalu.

62

Page 63: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

U okviru svakog obilaska beskonačne petlje nalazi se blok kašnjenja kojim je definisano kašnje-nje od 1 sekunde (1000ms). Projektovano vreme od 1s je izvršeno na osnovu vremena potrebnog da se pritisne taster. (Tokom pisanja programa, prvobitno je ovo vreme projektovano na 500ms, zatim na 800ms, da bi se kao optimalno izabralo vreme od 1000ms.)

Biblioteka USBdsc.c koja je smeštena u adresnom prostoru 0400h-7FFh ima sledeći listing:

//******************************************************************************// Verzija 1.01//******************************************************************************

#include "Definit.h" // uključivanje 2 heksadecimalne#include "VARs.h" // bibilioteke

//******************************************************************************// Broj bajtova za svaki izveštaj, izračunat prema veličini izveštaja// i brojača izveštaja u okviru Deskriptora izveštaja//******************************************************************************unsigned char const HID_INPUT_REPORT_BYTES = 1;unsigned char const HID_OUTPUT_REPORT_BYTES = 1;unsigned char const HID_FEATURE_REPORT_BYTES = 2;//******************************************************************************// Konstrante veličine bajta//******************************************************************************unsigned char const NUM_ENDPOINTS = 2;unsigned char const ConfigDescr_wTotalLength = USB_CONFIG_DESCRIPTOR_LEN + USB_INTERF_DESCRIPTOR_LEN + USB_HID_DESCRIPTOR_LEN + (NUM_ENDPOINTS * USB_ENDP_DESCRIPTOR_LEN);unsigned char const HID_ReportDesc_len = 47;unsigned char const Low_HID_ReportDesc_len = HID_ReportDesc_len;unsigned char const High_HID_ReportDesc_len = HID_ReportDesc_len >> 8;unsigned char const Low_HID_PACKET_SIZE = HID_PACKET_SIZE;unsigned char const High_HID_PACKET_SIZE = HID_PACKET_SIZE >> 8;//******************************************************************************// Tablice deskriptora (opisa)//******************************************************************************unsigned char const DescTables[USB_DEVICE_DESCRIPTOR_ALL_LEN*2] = {

// Deskruiptor uređaja USB_DEVICE_DESCRIPTOR_LEN, 0, // bLength-Length iz Device descriptor (uvek je 0x12) USB_DEVICE_DESCRIPTOR_TYPE, 0, // bDescriptorType - 1 = DEVICE deskriptor 0x00, 0, // bcdUSB - USB revision 2.00 (niži bajt) 0x02, 0, // - (viši bajt) 0x00, 0, //bDeviceClass - Zero znači da svaki od interfejsa radi nezavisno

63

Page 64: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

0x00, 0, // bDeviceSubClass 0x00, 0, // bDeviceProtocolEP0_PACKET_SIZE, 0, // bMaxPacketSize0 – maksimalna veličina paketa podataka za

// control transfer preko EP0 0x34, 0, // idVendor - Identifikacija prodavca (niži bajt) 0x12, 0, // (viši bajt) 0x01, 0, // idProduct - Identifikacija proizvoda (niži bajt) 0x00, 0, // (viši bajt) 0x01, 0, // bcdDevice - (niži bajt) 0x00, 0, // (viši bajt) 0x01, 0, // iManufacturer - prvi string 0x02, 0, // iProduct - drugi string 0x00, 0, // iSerialNumber - (bez) 0x01, 0, // bNumConfigurations - 1

// Deskriptor konfigurisanja USB_CONFIG_DESCRIPTOR_LEN, 0, // bLength – dužina Deskriptora konfigurisanja (uvek 0x09) USB_CONFIG_DESCRIPTOR_TYPE, 0, // bDescriptorType - 2 = Deskriptor konfigurisanja ConfigDescr_wTotalLength, 0, // wTotalLength – Ukupna dužina ovog konfiguracionog // deskriptora uvećana za deskriptore interfejsa i endpoint-a su sastavni delovi konfiguracije 0x00, 0, // (viši bajt) 0x01, 0, // bNumInterfaces - Broj interfejsa 0x01, 0, // bConfigurationValue – Konfiguraciona vrednost 0x00, 0, // iConfiguration - Indeks stringa za tu konfiguraciju ( bez ) 0xA0, 0, // bmAttributes - atributi - "Bus powered" i "Remote wakeup" 50, 0, // MaxPower - povlačenje struje 50*2 mA iz bus-a.

// Deskriptor Interfejsa USB_INTERF_DESCRIPTOR_LEN,0,// bLength- dužina deskriptora interfejsa (uvek 0x09) USB_INTERFACE_DESCRIPTOR_TYPE,0, // bDescriptorType- 4 =INTERFACE deskriptor 0x00, 0, // bInterfaceNumber -broj interfejsa, 0 osnovni red 0x00, 0, // bAlternateSetting - naizmenično podešavanje NUM_ENDPOINTS, 0, // bNumEndPoints - Broj endpoint-a korišćenih za ovaj interfejs 0x03, 0, // bInterfaceClass - namenjen za USB 0x00, 0, // bInterfaceSubClass - Not A boot uređaj 0x00, 0, // bInterfaceProtocol - bez 0x00, 0, // iInterface – Indeks za deskriptor stringa koji opisuje ovaj interfejs (bez)

// HID deskriptor USB_HID_DESCRIPTOR_LEN, 0, // bLength - Dužina HID deskriptora (uvek 0x09) USB_HID_DESCRIPTOR_TYPE, 0, // bDescriptorType - 0x21 = HID deskriptor 0x01, 0, // HID klasa izbacuje broj (1.01) 0x01, 0, 0x00, 0, // Lokalizova kod države (bez) 0x01, 0, // # od HID deskriptora klase za praćenje (1) 0x22, 0, // Izveštaj za tip deskriptora (HID) Low_HID_ReportDesc_len, 0, High_HID_ReportDesc_len, 0,

64

Page 65: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

// EP1_RX deskriptor USB_ENDP_DESCRIPTOR_LEN, 0, // bLength - dužina deskriptora (uvek 0x07) USB_ENDPOINT_DESCRIPTOR_TYPE, 0, // bDescriptorType - 5 = ENDPOINT deskriptor 0x81, 0, // bEndpointAddress - In, EP1 USB_ENDPOINT_TYPE_INTERRUPT, 0, // bmAttributes - Endpoint tip - prekid Low_HID_PACKET_SIZE, 0, // wMaxPacketSize - maks. veličina paketa – bajt nižeg // prioriteta High_HID_PACKET_SIZE, 0, // maks. veličina paketa – bajt višeg prioriteta 1, 0, // bInterval - interval prozivanja (1 ms)// EP1_TX deskriptor USB_ENDP_DESCRIPTOR_LEN, 0, // bLength dužina deskriptora (uvek 0x07) USB_ENDPOINT_DESCRIPTOR_TYPE, 0, // bDescriptorType- 5 = ENDPOINT deskriptor 0x01, 0, // bEndpointAddress - Out, EP1 USB_ENDPOINT_TYPE_INTERRUPT, 0, // bmAttributes - Endpoint tip - prekid Low_HID_PACKET_SIZE, 0, // wMaxPacketSize - maks. veličina paketa - bajt //nižeg prioriteta High_HID_PACKET_SIZE, 0, // - max packet size - bajt višeg prioriteta 1, 0, // bInterval - interval prozivanja (1 ms)

// Deskriptor HID izveštaja 0x06, 0, // USAGE_PAGE (Definisanje prodavca) 0xA0, 0, 0xFF, 0, 0x09, 0, // USAGE ID 0x01, 0, 0xA1, 0, // COLLECTION (Aplikacija) 0x01, 0,// Ulazni izveštaj 0x09, 0, // USAGE ID 0x03, 0, 0x15, 0, // LOGICAL_MINIMUM (0) 0x00, 0, 0x26, 0, // LOGICAL_MAXIMUM (255) 0x00, 0, 0xFF, 0, 0x75, 0, // REPORT_SIZE (8) 0x08, 0, 0x95, 0, // REPORT_COUNT (2) HID_INPUT_REPORT_BYTES, 0, 0x81, 0, // INPUT (Data,Var,Abs) 0x02, 0,// Izlazni izveštaj 0x09, 0, // USAGE ID - (Definisanje prodavca) 0x04, 0, 0x15, 0, // LOGICAL_MINIMUM (0) 0x00, 0, 0x26, 0, // LOGICAL_MAXIMUM (255) 0x00, 0, 0xFF, 0,

65

Page 66: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

0x75, 0, // REPORT_SIZE (8) 0x08, 0, 0x95, 0, // REPORT_COUNT (2) HID_OUTPUT_REPORT_BYTES, 0, 0x91, 0, // OUTPUT (Data,Var,Abs) 0x02, 0,// Izveštaj sa karakteristikama 0x09, 0, // USAGE ID - (Definisanje prodavca) 0x05, 0, 0x15, 0, // LOGICAL_MINIMUM (0) 0x00, 0, 0x26, 0, // LOGICAL_MAXIMUM (255) 0x00, 0, 0xFF, 0, 0x75, 0, // REPORT_SIZE (8) 0x08, 0, 0x95, 0, // REPORT_COUNT (2) HID_FEATURE_REPORT_BYTES, 0, 0xB1, 0, // FEATURE (Data,Var,Abs) 0x02, 0,// Kraj skupa 0xC0, 0 };//******************************************************************************unsigned char const LangIDDescr[8] = { 0x04, 0, USB_STRING_DESCRIPTOR_TYPE, 0, 0x09, 0, // LangID (0x0409) - niži 0x04, 0 // - viši};//******************************************************************************unsigned char const ManufacturerDescr[4] = { 0, 0, USB_STRING_DESCRIPTOR_TYPE, 0,};//******************************************************************************unsigned char const ProductDescr[4] = { 0, 0, USB_STRING_DESCRIPTOR_TYPE, 0,};//******************************************************************************unsigned char const StrUnknownDescr[4] = { 2, 0, USB_STRING_DESCRIPTOR_TYPE, 0};

//******************************************************************************// Inicijalizacija USB modula//******************************************************************************

66

Page 67: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

void InitUSBdsc(){Byte_tmp_0[0] = NUM_ENDPOINTS;Byte_tmp_0[0] = ConfigDescr_wTotalLength;Byte_tmp_0[0] = HID_ReportDesc_len;Byte_tmp_0[0] = Low_HID_ReportDesc_len;Byte_tmp_0[0] = High_HID_ReportDesc_len;Byte_tmp_0[0] = Low_HID_PACKET_SIZE;Byte_tmp_0[0] = High_HID_PACKET_SIZE;DescTables;LangIDDescr;

//Opis proizvođača;ProductDescr;StrUnknownDescr;

}//******************************************************************************

Listing Programa koji vrši postavljene zadatke

// (adresni prostor 060h-3FFh)unsigned char userWR_buffer[1]; // Definisanje ulaznog bafera USB portaunsigned short i; // Definisanje 8/bitne varijable iunsigned short j; // Definisanje 8/bitne varijable j

// Pozivanje glavne prekidne rutina (iz USBdsc)void interrupt(){ HID_InterruptProc(); // (adresni prostor 0400h-7FFh)

}

// Pocetak glavnog programavoid main() { // (adresni prostor 060h-3FFh)

TRISA = 0b111111; // Definisanje svih pinova Porta A kao ulaznih (adresa F92h) ADCON1 = 13; // Pinovi A5:A0 su digitalni, a A1:A0 analogni (adresa FC1h) Usart_Init(2400); // Inicijalizacija USART modula (adresni prostor 060h-3FFh) SPI_Init (); // Inicijalizacija SPI modula, standardni parametri

HID_Enable(&userWR_buffer, &userWR_buffer); // Dozvola za upisni USB bafer (adresni // prostor 0400h-7FFh)

// (adresni prostor 060h-3FFh)do {

67

Page 68: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

if (Usart_Data_Ready()) { // Kada mikrokontroler primi podatak od USART terminala, i = Usart_Read(); // memoriše ga u varijablu i, Usart_Write(i); // zatim primljeni podatak vraća ka USART terminalu i HID_Write(&i, 1); //ujedno ga prosledjuje ka HID terminalu (adresni

// prostor 0400h-7FFh) }

// (adresni prostor 060h-3FFh) if (PORTA.F4 == 0) { //Ako je taster T2 pritisnut,

if (PORTA.F2 == 0 && PORTA.F3 == 0) { // i ako vazi uslov, SPI_Write(0x00); i = ADC_Read(1) >> 2; // procitaj vrednost ofseta preko SPI Usart_Write(i); // i posalji ka USART terminalu, SPI_Write(0xFF); i = ADC_Read(1) >> 2; // procitaj vrednost napona pune skale preko SPI Usart_Write(i); // i posalji ka USART terminalu; } // Dva bita najmanje tezine se odbacuju (>>2)

if (PORTA.F2 == 0 && PORTA.F3 == 1) { // i ako vazi uslov, i = ADC_Read(0) >> 2; // procitaj vrednost napona na obrtnom potenciometru Usart_Write(i); // i posalji 8-bitni podatak ka USART terminalu; } if (PORTA.F2 == 1 && PORTA.F3 == 0) { // i ako vazi uslov, j = ADC_Read(1); // procitaj vrednost ofseta i = ADC_Read(0); // procitaj vrednost napona na obrtnom potenciometru i = i - j; // izvrsi kompenzaciju ofseta i = i >> 2; // Odbaci dva bita najmanje tezine (>>2) Usart_Write(i); // i posalji podatak ka USART terminalu; }

}

Delay_ms(1000); // Kašnjenje 1s (1000 ms)

} while (1); // Kraj beskonacne petlje HID_Disable(); // Zabrana za upisni USB bafer

}

68

Page 69: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

/8/ LABORATORIJSKA VEŽBA

Priključiti pločicu na USB port i serijski port računara, preko odgovarajućih kablova Neposredno po priključivanju na USB port računara, uključiće se crvena LED. Pokrenuti USART terminal iz programa mikroC na način prikazan u petom poglavlju

Tools → USART Terminal. Podesiti USART terminala (ilustrovano na Slici 44):

o COM1 ili COM2 (zavisno na koji port je povezana pločica)o Brzina 14400 Bauda, 1 stop-bit (One Stop Bit), Space bit parnosti (Parity), osam

bitova čini karakter/podatak (Data bits), uključen RTS (On)o Podesićemo da se od strane mikrokontrolera primaju heksadecimalni (HEX)

podaci; međutim, terminal može da prikaže i prijem ASCII ili dekadnih (DEC) karaktera. Podešavanje ovog parametra izvršiti u dogovoru sa predmetnim asistentom.

Slika 44. Podešavanje parametara USART terminala

Pokrenuti HID terminal iz programa mikroC na način prikazan u petom poglavlju Tools → HID Terminal.

69

Page 70: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 45. Prozor HID terminala

Ukoliko želite da proverite da li je računar prepoznao mikrokontroler koji radi u režimu HID (Human Interface Device), uđite u Device Manager (Control Panel → System → Device Manager). Sve je ilustrovano na Slici 46.

Iz prozora USART terminala šaljite sekvence različitih formata (ASCII, HEX, DEC) prema HID terminalu. Vodite računa da formati podataka budu identični u oba terminala (ASCII i ASCII, HEX i HEX, DEC i DEC). Sva tri pristupa slanja su ilustrovana na Slikama 47-49.Posebno obratite da je prilikom slanja ASCII karaktera izabrana/čekirana opcijaSend as typing u USART terminalu, dok je prilikom slanja dekadnih brojeva DEC (u opsegu koji je dozvoljen: 0-255) izabrana/čekirana opcija Send as number.Između svaka 2 menjanja formata podataka, potrebno je da obrišete prethodna stanja iz prozora USART terminala (opcija Clear History ) i HID terminala Clear Rcv).

70

Page 71: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 46. Računar je detektovao HID (Human Interface Device)

71

Page 72: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 47. Slanje ASCII karaktera

72

Page 73: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 48. Slanje heksadecimalnih (HEX) karaktera

73

Page 74: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 49. Slanje dekadnih (DEC) brojeva u opsegu 0-255

74

Page 75: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Isključiti HID terminala na način ilustrovan na Slici 50 (desni klik miša na komandnu liniju i biranje opcije Close). Ovo je pouzdaniji metod isključivanja HID terminala, nego li preko X u gornjem desnom uglu prozora. Naime, u drugom slučaju se dešava da HID terminal blokira računar – pa mora da se resetuje.

Slika 50. Isključivanje HID terminala

Pritiskom na taster T2 odrediti ofset i grešku pune skale preko SPI potenciometra. U idealnom slučaju, ofset treba da bude 0x00, a napon pune skale 0xFF. Sve je ilustrovano na Slici 51. (Izmerena greška ofseta je 0x10, a greška pune skale 0xFE).Pošto je u pitanju 10-bitna reč (u pitanju je 10-bitni A/D konvertor), a USART terminal prepoznaje samo 8-bitne reči, 2 najviša bita se programski (u mikrokontroleru) odbacuju.

Ispitati linearnost prenosne karakteristike ADC sa sukcesivnim aproksimacijama u bar 20 tačaka zaokretanjem obrtnog potenciometra. (Zaokrenite najpre potenciometar, a zatim pritisnite taster T2). Ilustracija je na Slici 51 (3 stanja: 0x00, 0x52 i 0xFF).

Postaviti DIPSW2 prekidač u stanje 10. Ispitati linearnost ADC sa sukcesivnim aproksimacijama (za ova stanja prekidača ofset je

softverski kompenzovan).

75

Page 76: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Slika 51. Ilustracija čitanja stanja na potenciometrima

Ispitati linearnost prenosne karakteristike ADC sa sukcesivnim aproksimacijama za ovaj slučaj u bar 20 tačaka zaokretanjem obrtnog potenciometra. (Zaokrenite, najpre, obrtni potenciometar, a zatim pritisnite taster T2).

Po završetku zadataka, isključite USART terminal.

A/D konverzija sa objašnjenjem

Podatak koji se dobije u prozoru UART terminala treba transformisati u dekadni (ukoliko je izabran parametar HEX u prozoru terminala), a zatim primeniti formulu:

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

76

Page 77: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

Tabela 10. ASCII kôdovi

PRILOZI77

Page 78: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

78

Page 79: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

79

Page 80: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

80

Page 81: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

81

Page 82: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

82

Page 83: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

83

Page 84: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

84

Page 85: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

LITERATURA

[1] PIC18F4550, DATASHEET, Microchip Tecnology Inc, 2004.[2] MCP410XX, DATASHEET, Microchip Tecnology Inc, 2003.[3] SPREGA MIKROKONTROLERA PIC16F877 SA PARALELNIM PERIFERIJSKIM

INTERFEJSOM 8255A I D/A KONVERTOROM DAC0832LCV, S. Stoilković, M.Pavlović, S. Popović, Elektronski fakultet Niš (Seminarski rad), http://es.elfak.ni.ac.yu

[4] SIMULACIJA PLC KONTROLERA PREKO MIKROKONTROLERA PIC16F877, M. Mladenović, A. Petrović, I. Stojanović, Elektronski fakultet Niš (seminarski rad),http://es.elfak.ni.ac.yu

[5] UVOD U SERIJSKI PORT, Vojo Milanović, http:/milan.milanovic.org/skola [6] UVOD U USB PORT, Vojo Milanović, http://milan.milanovic.org/skola [7] USB EKSPERIMENTALNO KOLO SA PIC 18F4550, Vojo Milanović,

http://milan.milanovic.org/skola [8] USB PORT, Elektrotehnički fakultet Podgorica, http://www.elektronika.cg..yu [9] mikroC Help , Mikroelektronika, http://mikroe.com

85

Page 86: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

CIRRICULUM VITAE

Prezime: AndrejićIme: AnaAdresa stanovanja: Šarbanovačka br. 25

Brestovac, Bore-mail adresa: [email protected]

Datum rođenja: 17.12.1982.Nacionalnost: SrpskaObrazovanje: Gimnazija „Bora Stanković”, BorKompletna ili stepenovana diploma: IV stepen

Poznavanje jezika: Engleski (odlično)Francuski (vrlo dobro)

Vozačka dozvola:Rad na računaru: MS WINDOWS, MS OFFICE, COREL,

PHOTOSHOP, VISIO, mikroC

Napomene: Završena jednomesečna stručna praksa u okviru studija u „Telekomu” - Niš.

Lične sposobnosti Odgovornost, energičnost, ambicioznost, inovativnost, spremnost za timski rad, sposobnost organizacije, pregovaracke sposobnosti, sposobnost za brzo učenje i usavršavanje.

Prezime: RanđelovićIme: MagdalenaAdresa stanovanja: Jadranska 16, 18000 Niše-mail adresa: [email protected]

Datum rođenja: 31.07.1982.Nacionalnost: Srpska

Obrazovanje: Gimnazija „Bora Stanković”, Niš

Kompletna ili stepenovana diploma: IV stepenPoznavanje jezika: Engleski (dobro)Vozačka dozvola: B kategorijaRad na računaru: WINDOWS (98/2K/XP/VISTA),

MS OFFICE, mikroC

Posebna interesovanja: Telekomunikacione mreže i sistemi, optički sistemi ...

86

Page 87: Komunikacija PIC18F4550 Sa Racunarom Preko Ser. i USB Porta

87