Vous êtes sur la page 1sur 86

ELEKTRONSKI FAKULTET NI Katedra za elektroniku Mikroprocesorski sistemi

KOMUNIKACIJA MIKROKONTROLERA PIC18F4550 I RA UNARA PREKO SERIJSKOG I USB PORTA

Studenti: Ana Andreji Magdalena Ran#elovi Mentor: prof. dr Mile K. Stoj$ev

10434 10620

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

UVODNA RE&
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 priloeni programi u mikroC-u i opisan je proces programiranja mikrokontrolera PIC18F4550 preko PICFlash programatora. U osmom poglavlju je opisana laboratorijska veba po koracima (za samostalan rad studenata).

Magdalena i Ana

/1/ SERIJSKI PORT I STANDARD


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, transformie ih u bitski niz i alje bit-po-bit. S druge strane, prihvata niz bita koji stiu od nekog spoljnjeg ure%aja, pakuje ih u bajtove i predaje ih mikroprocesorskom sistemu. Ve#ina ovih ipova 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 podrazumeva da predajnik i prijemnik dele zajedni ki takt, ili da predajnik obezbedi poseban signal kojim #e obavetavati prijemnik kada dolazi slede#i podatak. Kod asinhronog prenosa ne postoji poseban signal ve# se sinhronizacija vri 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 na in rada broj drajvera i prijemnika maksimalna duina kabla [m] maksimalna brzina prenosa podataka [bps] maksimalni napon na zajedni kim krajevima [V] Drajverski izlazni signal

EIA 232 RS 423-A nebalansiran nebalansirani i 1 drajver 1 drajver 1 prijemnik 10 prijemnik 15 1200 20 K + 25 100 K +6

RS 422-A diferencijalni 1 drajver 10 prijemnik 1200 10 M 6 do 0.25

RS 485 diferencijalni 32 drajvera 32 prijemnika 1200 10 M 12 do 7

izlaz drajvera 5 3,6 2 3,6 [V]-min neoptere#en izlaz drajvera 15 6 5 3,6 [V]-max Optere#en 3 7K 450 (min) 100 (min) 60 (min) optere#enje drajvera [%] 30 (max) spoljna kontrola n.d. n.d. ''slew rate'' drajvera [V/s] 150 na GND izlazna struja kratkog spoja 500 na Vcc 150 na GND 150 na GND 200 na 7 ili 12 V grani na vrednost struje (mA) izlazna otpornost uklju eno n.d. n.d. n.d. 12 K drajvera [%] napajanje stanje visoke isklju eno 30 K 60 K 60 K 12 K impedanse [%] napajanje 4 K(min) 4 K (min) 12 K (min) ulazna impedansa prijemnika [%] 3 7 K osetljivost prijemnika [V] opseg ulaznog napona prijemnika [V] 3V 15 0,2 12 0,2 7 0,2 -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.

Slika 3. Raspored pinova na konektoru DSUB-9 DSUB-25 pin 2 pin 3 pin 4 pin 5 pin 6 pin 7 pin 8 pin 20 pin 22 DSUB-9 pin 3 pin 2 pin 7 pin 8 pin 6 pin 5 pin 1 pin 4 pin 9 Signal TD RD RTS CTS DSR SG CD DTR RI Opis signala Transmit Data Receive Data Request To Send Clear To Send Data Set Ready Signal Ground Carrier Detect Data Pin Ready Ring Indicator

Tabela 2. Signali na konektorima DSUB-25 (relevantni) i DSUB-9 Signal TD RD RTS CTS DSR SG CD DTR RI Opis signala Transmit Data Receive Data Request ToSend Clear To Send Data Set Ready Signal Ground Carrier Detect Data Pin Ready Ring Indicator Zna enje signala Serijski izlaz podataka (TXD) Serijski ulaz podataka (RXD) Indicira da je modem spreman za razmenu podataka Kada modem detektuje signal "Carrier" od modema sa druge strane linije, onda ona postaje aktivna DCE signalizira da je spreman za rad Masa DCE javlja da je veza uspostavljena Indicira DCE ure&aju da je DTE spreman Signalizira detekciju signala "zvona" na telefonskoj liniji Tabela 3. Zna enje pojedinih signala Oblik signala kod RS232 standarda dat je na donjoj slici.

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 reava prijemno kolo (npr. MAX232, ST232, ICL232, MAX3232, ST3232, ICL3232 itd.) konvertuju#i napone tako da su prilago%eni naponima interfejsa koji se koristi. Posle bita podatka dolazi bit parnosti koji se koristi za detekciju jednostruke greke u prenosu. Iza bita parnosti signal se postavlja u MARK stanje to ozna ava po etak STOP bita. Prema RS232 standardu broj stop bitova moe biti: 1, 1.5 ili 2. Nakon zavretka STOP bitova, linija je spremna za slanje novog karaktera. PC 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 vie puta prelazi iz MARK u SPACE stanje u zavisnosti od broja jedinica i nula. To zna i da se linija moe nalaziti u SPACE stanju najvie u slu aju kada karakter sadri sve nule. Ova osobina prenosa upotrebljena je za uvo%enje specijalnog znaka nazvanog BREAK (prekid). Ovaj se signal koristi kako bi se dala prijemniku signalizacija da je dolo 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 greke i za to vreme javlja predajniku da je zauzet. Ako su podaci primljeni bez greke, prijemnik alje predajniku signal potvrde ACK (Acknowledgment - ASCII 6), a u slu aju ako se pojavila neka greka, alje signal negativne potvrde NAK (ASCII 21). Zavisno od upotrebljenog protokola, odgovor predajnika na dobijeni NAK signal moe biti ponovno slanje podataka. Protokol za prenos moe se izvesti na dva 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 moe da primi karakter kao indikator tog stanja drugoj strani alje XOFF znak. Prilikom serijskog prenosa podataka mogu#a je pojava slede#ih vrsta greaka: Greka uokvirenja ili greka rama podatka (framing error). Do ove greke dolazi u slu aju kada prijemnik o ekuje STOP bit ali se on ne pojavljuje. Greka prekora enja (overrun error). Nastaje kada se pojavljuje novi znak u prijemniku a prethodni nije upotpunosti primljen. Greka parnosti (parity error). Nastaje kada bit parnosti ne odgovara stanju bitova u bitovima podatka. Standardno za vezu dva PC ra unara koristi se takozvani Null Modem kabl, iji je raspored pinova prikazan na Slici 5.

Slika 5. Izgled null-modem kabla

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

Slika 6. Kabl sa zatvorenom petljom za testiranje

Serijska komunikacija se kod PC 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 sadri 10, dok kolo16450 ima 12 programabilnih jednobajtnih registara. Svaki port (COM1 i COM2) ima po jedno UART kolo koja se vezuju na linije prekida IRQ3 i IRQ4. Standardno se koriste dva porta, a mogu#e je i vie sa adresama i IRQ. Bazne adrese COM portova nalaze se u BIOS-u na adresama datim u Tabeli 5, dok je u Tabeli 6 data grupa registara koju koristi serijski port ra unara.

Naziv COM 1 COM 2 COM 3 COM 4

Adresa 3F8 2F8 3E8 2E8

IRQ 4 3 4 3

Tabela 4. Adrese COM portova

Startna adresa 0000:0400 0000:0402 0000:0404 0000:0406

Opis Po etna adresa COM1 Po etna adresa COM2 Po etna adresa COM3 Po etna adresa COM4

Tabela 5. Bazne adrese COM portova u BIOS-u

/2/ USB PORT I STANDARD


Prvi 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 mia. 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 neto 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 ree slede#i problemi: reenje u vezi ograni enja broja slotova na osnovnoj plo i kao i broja portova PC ra unara jednostavno proirenja PC ra unara upotrebom softverskih drajvera mogu#nost napajanja eksternih ure%aja koji malo troe od strane ra unara omogu#eno je priklju enje do 127 eksternih ure%aja na glavni USB port, pa se time reava 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 duina se pove#ava omogu#ena je kontrola potronje eksternih ure%aja podrano je autokonfigurisanje ovih ure%aja po principu PnP detekcije novih ure%aja u ra unaru.

USB port podrava dve brzine prenosa i to: veliku brzinu kada se prenos kre#e do 12 Mb u sekundi, i za sporije ure%aje niu brzinu prenosa do 1.5 Mb u sekundi. USB port koristi etveroilni kabl preko koga se prenose podaci i napajanje sa impedansom 90 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 k. Prijemnici moraju da imaju simetri an ulaz pri emu do promene stanja dolazi ako se na ulazu prijemnika naponi razlikuju za vie od 200 mV. Svaka linija za prenos podataka ima i nesimetri an prijemnik za detekciju greke 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 k, 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 k. 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 10

povezan na USB vor. Kada ure%aj nije povezan na USB vor njegovi izlazni drajveri bi#e u stanju 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 moe 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 etvoroilnog 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

Slika 10. Organizacija USB bus-a

Iz prikazane slike vidi se da se USB bus-a moe predstaviti sa tri nivoa i to: Nivo USB 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 kontroliu USB bus, rad sa optim 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 zaokruene 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 izvrava zahtevane funkcije. Klijent softver omogu#ava da se izvri 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 podrku USB ure%aja i isporu uje se uz operativni sistem. Glavni USB kontroler zaokruuje 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 duini 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 potronje ako to podravaju. Vra#anje u radno stanje treba da traje najdue 20 ms. Prenos podatka se vri upotrebom NRZI metoda kodiranje (Non Return Zero Invert) to zna i ako se pojavi logi ka jedinica ona #e trajati celom svojom 12

duinom, odnosno ne#e do#i do promene naponskog nivo. U slu aju pojave povorki nula napon se linije menja za svaki bit, to se koristi za uspostavljanje signala takta na prijemu. Kada se u povorci podataka pojavi est uzastopnih jedinica radi sigurnosti na prijemu, vri se umetanje bita tj. ubaci se jedna nula koja se na prijemu izbacuje. Preko USB bus-a kao to smo videli prenosi se i napon napajanja V+ koji iznosi + 5V, uz maksimalno optere#enje do 5A, pri emu potronja pojedina ne eksterne jedinice ne sme pre#i 400 mA kada je u radnom stanju a u stanju mirovanja 500 A. 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 duine 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 generie taktni signal. Nako sinhronizacionog bajta sledi polje za identifikaciju paketa PID (Packet Identifier), kod koda se prva 4 bita koriste za identifikaciju vrste paketa, dok su slede#a etiri bita(ve#e teine) invertovani biti PID-a na osnovu ega se proverava ta nost primljenog PID-a. Polje PID definie vrstu paketa i njegov format kao i tip detekcije greke. 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 vri setovanje funkcije od strane ra unara i sadri teku#u i krajnju (Endpoint) adresu. IN paket iji je 13

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.

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

Ack paket koji ima PID=0010 je potvrda prijemnika da je paket primljen bez greke. Nak paket koji ima PID=1010 je je odgovor predajnika o neispravno primljenom paketu. Stall paket koji ima PID=1110 pokazuje da je neko odredite zagueno tj. ne moe da primi sve do tada poslate pakete. Prenos podataka po inje tako to ra unar poalje paket u kome je definisan tip i smer prenosa, adresa USB ure%aja i adresa krajnjeg odredita. 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) izvetavju#i o uspenosti prenosa. Adresiranje ure%aja vri se preko adresnog polja paketa od 7 bita. Adresa se koristi sa kod IN, OUT ili Setup paketa. Paket SOF sadri broj ramova od 11 bita pri emu se njegov sadraj inkrementira za svaki novi ram sve do vrednosti 7FFH. Paketi podatataka Data0 i Data1 sadre do 1023 bajta. Ova dva paketa omogu#uju jednostavnu sinhronizaciju predajnika i prijemnika u slu aju zahteva predajnika za ponovnim slanjem radi greke u prenosu. Predajnik alje novi paket tek kada od prijemnika dobije potvrdu o uspenosti tj. paket Ack. Prvo se alje paket Data0 pa paket Data1 i tako 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 definie ra unar slanjem IN ili OUT paketa. U IN paketu ra unar zahteva od eksternog USB ure%aja da mu poaalje podatke. Nakon ovog paketa eksterni ure%aj ili ra unar alje Data paket, pri emu se na kraju svakog primljenog paketa strana koja je vrila prijem alje potvrdu uspenosti slanje tj. Ack, Nak ili Stall paket. Iz opisa USB porta vidimo da ure%aji koji se na njega priklju uju moraju imati visok nivo "inteligencije" kako bi podrali navedeni standard. Zbog toga se u njima nalaze naj e#e mikrokontroleri koji podravaju ovu komunikaciju i koji su za ovu vrstu standarda i razvijeni. Programiranje je znatno tee budu#i da navedeni protokoli moraju biti podrani. Zbog toga nau iti programiranje USB porta je svakako i najve#i domet u programiranju portova.

14

/3/ SPI KOMUNIKACIJA


SPI (Serial Peripheral Interface) standard za sinhronu serijsku komunikaciju razvijen je od strane Motorolinih inenjera, za potrebu brzog i pouzdanog serijskog prenosa podataka na manjim rastojanjima (do 3m). Prvobitno, ovaj standard je bio predvi%en za komunikaciju sa perifernim ure%ajima, ali je vremenom razvijena i mogu#nost komunikacije izme%u vie 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 SCI SPI SPI Maksimalna brzina 125 Kb/s 1 Mb/s 2 MB/s Opis MCU takt = 2MHz MCU takt = 2MHz, Master MCU takt = 2MHz, Slave

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

Tabela 6 pokazuje kako je SPI komunikacija oko 10 puta bra od SCI komunikacije (Standard Communication Interface) kada mikrokontroler radi kao master, i oko 20 puta bra kada mikrokontroler radi kao slave. Tako%e se vidi da kada mikrokontroler radi kao slave, mogu#a je brzina prenosa podataka jednaka internom taktu mikrokontrolera. Napomena: Motorola je svoj serijski asinhroni/sinhroni interfejs nazvala Serijski komunikacioni 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 moe da postoji jedan master, kako bi se osigurala ispravna komunikacija. Kao to je prikazano na Slici 11 potrebne su 4 linije, odnosno za SPI komunikaciju koriste se 4 pina: MOSI (Master Output Slave Input). Kada mikrokontroler radi kao master, onda je ovo linija za slanje podataka, a kada radi kao slave ovo je linija za primanje podataka. MISO (Master Input Slave Output). Kada mikrokontroler radi kao master, onda je ovo linija za primanje podataka, a kada radi kao slave ovo je linija za slanje podataka. U slu aju da je komunikacija isklju ivo jednosmerna, svakako da se moe 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. 15

SS (Slave Select). Ovaj pin mikrokontrolera se vee na liniju za selektovanje slave-a. Kada mikrokontroler radi kao slave, i kada je ovaj (u slu aju ulazni) pin na visokom nivou, onda se takt sa SCK linije i podaci sa MOSI linije se ignoriu. Tek kada se dovede SS na nizak nivo, SPI sistem slave-a prati promene na pinovima koji su vezani za ovaj tip komunikacije i moe da primi i poalje informaciju. Kada mikrokontroler radi kao master, SS pin ima dve opcije. Moe da se konfigurie kao ulazni pin i da setuje 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 moe uspeno da se eliminie mogu#nost da vie mikrokontrolera u datom trenutku pokuaju da budu masteri. Ovo se reava softverski. SS pin tako%e moe da se konfigurie kao izlazni, i da selektuje neki slave, ili da obavlja bilo kakvu funkciju nezavisnu od SPI podsistema mikrokontrolera.

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

U slu aju povezivanja vie mikrokontrolera preko SPI kanala, svi MISO pinovi se vezuju zajedno na jednu liniju, MOSI pinovi se vezuju na drugu liniju, a SCK pinovi se vezuju na tre#u liniju, kao sto je prikazano na Slici 11. Slika 11 je primer vezivanja kada samo jedan mikrokontroler moe da bude master. Ako uloga mastera treba da bude promenljiva, onda svaki mikrokontroler treba da ima 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 stanovita programera, kakvi su ulazi i kakva je logika nije bitno. Pinovi za podatke (DATA1) su povezani zajedno, i to predstavlja jednosmernu liniju sa koje 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:

16

1.

2. 3.

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. Preko linije CLOCK prvi registar alje takt pod kojim drugi ita promene na liniji za podatke DATA1. Kada prvi registar zavri sa prenosom, postavlja linije CLOCK i ENABLE u stanje mirovanja (idle state).

Slika 12. Hardverska ema SPI komunikacije

Kada prvi registar eli da dobije informaciju od drugog, preduslov koji treba da se ispuni je da drugi registar ve# ima spremnu informaciju koju treba da poalje. Poslednja pretpostavka u analogiji me%umikrokontrolerske SPI komunikacije podrazumeva da je u registar za slanje slave-a programski ve# postavljena informaciju koja se trai. Redosled operacija je: 1. Preko linije ENABLE, prvi 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. 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. Kada drugi zavri sa prenosom, onda prvi postavlja linije CLOCK i ENABLE u sta-nje mirovanja. Prvi zna da je prenos zavren kada se na liniji CLOCK zavri n-ti ciklus (n je broj bitova koji ini informaciju, na primer: 8, 16 itd.)

2.

3.

Ovo je primer koji opisuje SPI logiku, a pri tome ne ulazi u pojedinosti interne periferije samog mikrokontrolera. Relativno je lako da se poalje poruka preko SPI kanala od mastera ka slave-u. Ono to elimo da naglasimo jeste na in slanja podataka slave-master. U kom trenutku treba slave da poalje 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 poalje poruku na magistralu i normalno da selektuje slave-a. Sve to je navedeno opisuje sutinu SPI komunikacije. Svakako da ima mnogo detalja koji variraju u zavisnosti od mikrokontrolera i perifernog ure%aja, ali to se mnogo lake usvaja kada se poznaju osnovni principi.

17

/4/ DIGITALNI POTENCIOMETAR SA SPI INTERFEJSOM


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

Slika 13. Blok ema digitalnog potenciometra

Opis MCP41XXX i MCP421XXX su digitalni potenciometri sa 256 pozicija, dostupni u verzijama od 10 k(, 50k( i 100 k(. MCP41XXX je jednokanalni (eng. single) ure%aj i isporu uju se u 8-pinskom PDIP ili SOIC ku #itu. MCP42XXX poseduje dva nezavisna kanala u 14-pinskom PDIP, SOIC ili TSSOP ku#itu. Pozicija kliza a kod MCP41XXX/42XXX se menja linearno i kontrolie se pomo#u 18

SPI interfejsa, industrijskog standarda. Ure%aji imaju potronju manju od 1A u stati kom reimu rada. Softversko isklju ivanje se izvodi razdvajanjem A pina od otpornog dela i simultanog povezivanja kliza a na B pin. Dvokanalna (eng. dual) verzija MCP42XXX ure%aja ima SHDN pin koji obavlja istu funkciju hardverski. Za vreme shutdown moda, sadraj kliza kog registra je mogu#e promeniti, pa potenciometar ima novu vrednost nakon izlaska iz shutdown moda. Kliza se postavlja na sredinu skale (pozicija 80h) nakon uklju enja. RS (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 operie sa jednim izvorom napajanja od 2.7 5.5V i specificirana je preko industrijskih i proirenih temperaturnih opsega.

Slika 14. Raspored pinova na ku#itima

Opis pinova 1) PA0, PA1 Veza A pina potenciometra 2) PB0, PB1 Veza B pina potenciometra 3) PW0, PW1 Veza kliza a potenciometra

19

4) Izbor ipa, chip select ( CS ) Ovo je SPI port i koristi se za izvrenje nove komande nakon to je ista u itana u pomera ki (eng. shift) registar. Ovaj pin ima mitov triger na ulazu. 5) Serijski Takt, Clock (SCK) Ovaj SPI port se koristi za taktovanje novih podataka koji se unose u registar. Podaci se unose putem SI pina na rastu#u ivicu takta, a eksportuju se preko SO pina na opadaju#u ivicu takta. Ovaj pin je kontrolisan od strane CS pina (tj., ure%aj ne#e povla iti struju ukoliko je SCK pin u radnom reimu, kada je CS pin na visokom naponskom nivou). Ovaj pin ima mitov triger na ulazu. 6) Serijski Unos Podataka (SI) Ovo je SPI port za serijski unos podataka. Komandni i bajtovi podataka se unose u pomera ki registar putem ovog pina. Ovaj pin je kontrolisan od strane CS pina (tj., ure%aj ne#e povla iti struju ukoliko je SCK pin u radnom reimu kada je CS pin aktivan, tj. na visokom nivou). Ovaj pin ima mitov triger na ulazu. 7) Serijski Izlaz Podataka (SO) (Prisutan samo u MCP42XXX seriji) Ovo je SPI serijski izlazni pin podataka i koristi se za povezivanje vie 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 CS na visokom nivou. Prelazi na niski logi ki nivo kada je CS na visokom logi kom nivou. 8) Reset ( RS ) (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 SHDN na nuli. Sa namerom smanjenja potronje, 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 (SHDN ) (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 potronje (eng. idle mod), kada je A pin otvoren, a B i W pini povezani, za sve potenciometre. Ovaj pin ne bi trebalo postavljati na niski logi ki nivo kada je CS pin na niskom logi kom nivou. U cilju minimizacije potronje 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. SHDN pin ne sme ostati nepovezan.

20

Pi n# 1 2 3 4 5 6 7 8

Na CS me CS SC SI Vss PA PW PB VDD

Function Chip Select Serial Clock Serial Data Input Ground Pin A Connection Wiper Connection Pin B Connection Power

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

Pin # 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Name Function Chip Select CS SCK Serial Clock SI Serial Data Input Vss Ground PB1 Pin B Connection For Pot 1 PW1 Wper Connection For Pot 1 PA1 Pin A Connection For Pot 1 PAO Pin A Connection For Pot 0 PWO Wper Connection For Pot 0 PBO Pin B Connection For Pot 0 Reset Input RS Shutdown Input SHDN SO Data Out for Daisy-Chaining 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 moemo videti na Slici 15, svaki od potenciometara se sastoji od promenljivog otpornika i 8-bitnog (256 pozicija) registra podataka koji odre%uje poloaj 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 smetene 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 (reim rada), kako bi omogu#ila minimalna potronja energije. SHDN pin se upotrebljava za postavljanje svih potenciometara u shutdown mod, a RS pin omogu#uje postavljanje svih potenciometara na sredinu skale (80h). 21

Slika 15. Detaljnija blok ema digitalnog potenciometra

Slika 16. Povezivanje digitalnog potenciometra i mikroprocesora

Kada se neko kolo povezuje na digitalni potenciometar, potrebno je koristiti sprene kondenzatore. Ovi kondenzatore treba postaviti to je blie mogu#e pinu ure%aja. Preporu ena vrednost kondenzatora je 0.1 F. Digitalni i analogni putevi signala trebalo bi da budu to vie odvojeni na plo i; tako%e, nijedan od tih puteva ne bi trebao da se prostire ispod digitalnog potenciometra ili sprenog kondenzatora. Veliku panju treba posvetiti putevima visokofrekventnih signala (kao to su linije takta) i drati ih to dalje od analognih vodova. Preporu uje se upotreba analogne ravne mase, kako bi potencijal mase bio isti za sve ure%aje na plo i.

Reimi rada Digitalni potenciometar se koristi/primenjuje u slede#im reimima rada: 22

reostatski mod potenciometarski (mod delitelja napona)

Reostatski reim rada U reostatskom reimu 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 izvrenje operacije.

Slika 17. Reostatski reim 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 moe 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 AB , koji tipi no iznosi 800ppm/ C.

Slika 18. Reostatski reim rada (promenljiva otpornost) 23

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 podeava pozicijom kliza a izme%u dva zavrna kraja, kako je to prikazano na Slici 18. Napomenimo da obrnut polaritet A i B pina ne uti e na izvrenje operacije. U ovoj konfiguraciji, koeficijent interne otpornosti definie ukupan temperaturni koeficijent digitalnog potenciometra. Otpornik koji se sastoji od R WB i R AB ima temperaturni koeficijent koji tipi no iznosi 1ppm/ C (mereno pri kodu 80h). Pri niim kodovima, temperaturni koeficijent otpornosti kliza a je dominantan.

24

/5/ MIKROKONTROLER PIC18F4550


PIC18F4550 pripada 18F seriji mikrokontrolera kompanije Microchip. Mikrokontroleri ovog proizvo%a a se odlikuju malom cenom i to je vanije besplatnom tehni kom podrkom (kompajleri, razvojni sistemi, programatori). S obzirom da poseduju harvard strukturu, memorijska mapa je podeljena na programsku i memoriju za podatke kao i EEPROM. Procesor (CPU) mikrokontrolera koristi tehniku preklapanja, kako bi se sve instrukcije (osim grananja) izvravale jedan ciklus. Zbog toga se osnovni takt deli sa 4, jer se faze izvrenja naredbi preklapaju. Sve naredbe su fiksne duine od 2 bajta, tako da je adresiranje memorije ograni eno. Zbog toga se memorija deli na 16 stranica, a izbor stranice se vri u odgovaraju#im kontrolnim registrima. Ova osobina zna ajno usporava rad mikrokontrolera me%utim napredniji kompajleri vre inteligentno plan-iranje raspodele memorije kako bi se varijable koje se zajedno koriste nalazile u istoj memo-rijskoj banci. Programska memorija je 32KB dok je RAM veli ine 2 KB. Tako%e postoji i 256B EEPROM-a. Procesor poseduje proireni skup instukcija u odnosu na ranije serije (16 i 17) kao i nove na ine adresiranja. Tako su dodate naredbe za hardversko mnoenje i deljenje, inkrementiranje i dekrementriranje sa uslovnim skokom, naredbe za itanje tabela i druge. Programski broja je irine 21 bit i njemu se moe pristupati samo indirektno preko odre%enih registara. Mikrokontroler poseduje i magacin (stack), ali se on naalost moe koristiti samo indirektno tako to se u poseban registar upisuje eljeni sadraj i potom posebnom instrukcijom sadraj tog registra stavlja na stek. Kod itanja sa magacina vrednost se tako%e nalazi u tom registru. Oscilator prua 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 moe biti nezavisan od takta za CPU i druge jedinice. Mehanizam prekida je organizovan kao jedan prekidni vektor koji sadri adresu prekidne rutine u kojoj se treba ispitati izvor prekida i preduzeti eljena akcija. Dakle, nema prekidnog vektora za svaki ili grupu izvora prekida to je jedan od nedostataka ovog mikrokontrolera, jer se time gubi na brzini i preglednosti koda. Ovaj mikrokontroler ima bogat skup hardverskih periferija koje mu omogu#avaju primenu u brojnim aplikacijama.

Slika 19. Mikrokontroler PIC18F4550 u ku#itu DIP-40

25

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#itu DIP-40

Reimi 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 reima rada uklju uju#i i visoko precizni PLL za USB Dva spoljanja taktna reima rada, do 48 MHz Unutranji oscilator - 8 frekvencija koje bira korisnik, od 31 kHz do 8 MHz - Podeavanje koje bira korisnik zbog kompenzacije frekvencijskog drifta 26

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 moe da prihvati/preda relativno veliku vrednost struje 25mA/25mA Tri spoljanja prekida &etiri tajmera (Timer0 do Timer3) Do dva CCP (Capture/Compare/PWM) modula - Capture je 16-bitni, maksimalne rezolucije 6.25 ns (TCY/16) - Komparator je 16-bitni, maksimalne rezolucije 100 ns (TCY) - PWM izlaz: PWM rezolucija je od 1 do 10 bita Proiren CCP (Capture/Compare/PWM) modul - Multiple output reimi rada - Mogu#nost izbora polariteta - Programabilno mrtvo vreme - Automatsko isklju ivanje i automatski restart Proireni USART modul Modul master sinhronog serijskog porta (MSSP) podrava 3-i ni SPI (sva etiri reima rada) i I2C master i slave reim rada 10-bitni 13-kanalni A/D konvertor sa pristupnim vremenom koje se moe programirati Dvostruki analogni komparator sa multipleksnim ulazom.

Specijalne karakteristike mikrokontrolera


C kompajler optimizirane arhitekture sa opcionim dodatnim skupom instrukcija 100 000 ciklusa upisivanja/brisanja (erase/write) proirene programske Flash memorije 1 000 000 upisivanja/brisanja ciklusa EEPROM memorije podataka Flash/Date EEPROM zadravanje due od 40 godina Mogu#nost samoprogramiranja tokom rada (ovo na primer dozvoljava CCS kompajler) Postoje nivoi prioriteta za prekide Jednociklusni mnoa 8 x 8 Proireni watchdog tajmer (WDT): - Period programiranja od 41 ms do 131 ms Zatita programskog koda Programiranje unutar sistema preko dva pina i napajanjem od 5V Debagovanje unutar sistema preko dva pina (ICD) Proireni ICD/ICSP port (samo za mikrokontrolere u 44-pinskom ku#itu) irok opseg napona napajanja (od 2V do 5.5V)

27

Slika 21. Arhitektura mikrokontrolera PIC18F4550

nanoWatt Tehnologija
Svi mikrokontroleri iz familije PIC18F2455/2550/4455/4550 imaju takve katakteristike da mogu zna ajno da smanje potronju. Na in rada i procena smanjenja potronje mogu da budu: Alternate Run reim rada: U zavisnosti da li kontroler radi po taktu Timer1 ili unutranjeg oscilatora , smanjenje moe da bude i do 90%. Multiple Idle reimi rada: Kontroler moe da radi i sa isklju enim CPU dok je periferija jo uvek aktivna. Na ovaj na in potronja iznosi oko 4% od potronje u normalnom reimu rada. On-the-fly prekida ki reim rada: Kontrola potronje se moe pozvati i u toku programa. Na ovaj na in se korisniku ostavlja mogu#nost promene reima rada rada u softverskoj aplikaciji. Smanjena potronja u modulima mikrokontrolera: Poto je potronja ve#a kada se koriste i Timer1 i Watchdog tajmer, potreba za njim je minimizirana.

28

Opcije viestrukog oscilatora i njegove karakteristike


Svi mikrokontroleri iz familije PIC18F2455/2550/4455/4550 pruaju dvanaest razli itih opcija oscilatora, dozvoljavaju#i korisnicima irok izbor u razvoju aplikacijskog hardvera. To podrazumeva: &etiri reima rada koji koriste kristalni kvarc ili kerami ki rezonator &etiri reima rada koja koriste spoljanji takt Unutranji 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 korisnik moe sam da izabere, izme%u 125 KHz i 4 MHz, to kona no daje 8 taktnih frekvencija. PLL frekvencijski mnoa , dostupan i za visoke brzine i reim 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


Izdrljivost memorije: Proirene Flash #elije za obe programske memorije i za EEPROM memoriju podataka su procenjene da traju najmanje vie eares/write ciklusa vie od 100 000 za programsku memoriju i 1 000 000 za EEPROM. Zadravanje ( uvanje) podataka bez osveavanja je procenjeno da bude ve#e od 40 godina. Mogu#nost samoprogramiranja: Ovaj ure%aj moe da sam upisuje u prostor sopstvene programske memorije pod kontrolom unutranjeg softvera. Kori#enjem bootloader-a, koji je smeten u zati#enom boot bloku na vrhu programske memorije, postaje mogu#e da se stvori aplikacije koja moe da unapre%uje (update-uje) sama sebe. Proireni set instrukcija: Familija mikrokontrolera sa USB modulom (PIC18F2455/2550/ 4455/4550) uvodi dodatno proirenje standardnog seta instrukcija serije PIC18, uvode#i dodatnih 8 instrukcija i Indexed Literal Offset Addressing reim rada. Cilj ovoga bio da bi se optimizovao program pisan na viem programskom jeziku kao to je C. Proiren CCP modul: U PWM reimu rada, ovaj modul omogu#ava 1, 2 ili 4 modulisana izlaza za kontrolisanje half-bridge i full-bridge drajvera. Ostale ka-rakteristike su automatsko 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). Proiren USART: Ovaj modul serijske komunikacije moe da vri standardne RS-232 operacije i prua podrku za LIN protokol. Druga proirenja uklju uju automatsku detekciju brzine prenosa podataka (Automatic Baud Rate Detection) i 16-bitni Generator takta za prenos podataka (Baud Rate Generator) za poboljanje rezolucije. Kad mikrokontroler koristi unutranji oscilator, EUSART omogu#ava stabilnu operaciju za aplikaciju koja komunicira spolja bez kori#enja eksternog kristala (ili prati potronju snage) 10-bitni A/D Konvertor: Ovaj modul aktivira programirljivo vreme konverzije, ime #e kanal biti odabran i konverzija #e se pokrenuti, bez ekanja na period odabiranja (na taj na in se smanjuje dodatni kod). Rezervisan ICD/ICSP Port: Ovaj modul uklju uje debager (za pronalaenje greaka) i pinova za programiranje koji nisu u multipleksu sa nekim drugim funkcijama mikrokontrolera. 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.

29

Organizacija memorije
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, moe 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

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 moe da memorie 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 izvrenja nekog programa.

Slika 22b. Programska memorija i magacin (stack) tokom izvrenja 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 kontrolie pomo#u 3 registra. U pitanju su: 1. TXSTA : Predajni statusni i kontrolni registar sa slede#im bitovima: CSRC CSRC TX9 TXEN SYNC BRGH TRMT TX9D TX9 TXEN SYNC SENDB BRGH TRMT TX9D

nebitan kod asinhronog prenosa 1 uklju uje prenos devetog bita predaja dozvoljena sa setovanjem ovog bita 0 je sinhroni a 1 asinhroni reim rada setuje veliku brzinu prenosa status predajnog pomera kog registra, 1 registar je prazan deveti bit za prenos (najce#e parnost) 31

2. TCSTA : Prijemni statusni i kontrolni registar sa slede#im bitovima: SPEN SPEN RX9 SREN CREN ADDEN FERR OERR RX9D RX9 SREN CREN ADDEN FERR OERR c

uklju uje/isklju uje serijski port 1 uklju uje prenos devetog bita nebitan kod asinhronog prenosa prijem podataka uklju en setovanjem ovog bita bit dozvole za detekciju adrese bit za detekciju greaka rama (okvira) bit za detekciju greaka prekora enja deveti bit za prenos (naj e#e parnost)

3. BAUDCON: Kontrolni registar generatora takta za brzinu prenosa ABDOF ABDOF RCIDL RXDTP TXCKP BRG16 WUE ABDEN RCIDL RXDTP TXCKP BRG16 WUE ABDEN

bit poravnanja prilikom automatske akvizicije podataka prijemni bit o reimu smanjene potronje ako je 1, Rx podaci su invertovani ako je 1, Tx podaci su invertovani uklju uje 16-bitni generator bodove brzine aktivacioni (wake-up) bit dozvole uklju uje merenje brzine prenosa (brzina u baudima) slede#eg karaktera (55h)

Izbor takta se vri 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:

SYNC 0 0 0 0

Konfiguracioni bitovi BRG16 0 0 1 1

BRGH 0 1 0 1

BRG/EUSART mod 8 bitni 8 bitni 16 bitni 16 bitni

Formula za raunanje brzine Fosc/[64(n+1)] Fosc/[16(n+1)] Fosc/[16(n+1)] 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 vri preko predajnog i prijemnog kola asinhronog primopredajnika.

32

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

Slika 24. Prijemno kolo USART modula

33

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 greke jer je brzina odabiranja/uzorkovanja ve#a od brzine prenosa. Primljeni podaci se pomeraju kroz prijemni pomera ki (shift) registar RSR duine 9 bita. Posle toga se ovim podacima moe pristupiti preko RCREG registra, dok se kao i kod predaje 9-tom bitu pristupa preko kontrolnog registra. Kada se RCREG napuni vredno#u iz RSR moe se generisati prekid kako bi se obradili preuzeti podaci. Iz prethodnog se moe zaklju iti kako se za serijsku komunikaciju mogu koristiti dva na ina rada. Jedan je zasnovan na prekidima koji se generiu pri zavretku slanja ili prijema svakog bajta tako da se u prekid potprogramu moe prihvatiti i obraditi primljeni podatak ili pripremiti slanje slede#eg bajta. Drugi na in je sli an samo se umesto prekida koristi prozivka (eng. pooling) statusnih bitova koji ukazuju na zavretak transfera jednog bajta.

USB modul
Zahvaljuju#i USB modulu i interfejsu, PIC18F4550 se izdvaja od ostalih mikrokontrolera iz familije. USB komunikacija je veoma sloena i nije jedinstvena zbog ega #emo samo ukratko opisati osobine USB modula kori#enog mikrokontrolera. Karakteristike USB modula Fleksibilan USB 2.0 standard Brzine: Low Speed (1.5 Mb/s) i Full Speed (12 Mb/s) Podrava kontrolni, prekidni, izohroni i bulk transfer Podrava do 32 krajnje ta ke, odnosno16 bidirekciono 1Kbit-ni dvostruki pristup RAM memoriji za USB Unutar mikrokontrolera je integrisan USB primopredajnik sa sopstvenim regulatorom napona Interfejs za spoljanji USB primopredajnik 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 vri primopredaju podataka i on mora biti taktovan frekvencijom od 24MHz. Modul ima ugradjen 3.3V regulator koji slui za napajanje pull-up otpornika na D+ liniji to je bitno kod 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 najvaniji je onaj koji se generie kada se primi neki token (podatak). Tada se u odgovaraju#im registrima moe pro itati u kojem endpoint-u se podatak nalazi kako bi mu se pristupilo. Postoje i drugi prekidi koji se okidaju u slu aju greke, reseta, zaguenja ili aktivnosti na liniji. Svi oni se mogu iskoristiti za kontrolu komu-nikacije. Zbog svoje kompleksnosti koja uglavnom viestruko premauje sloenost ve#ine aplikacija rad sa USB portom i mikrokontrolerom se naj e#e izvodi pomo#u gotovih modula. Oivljavanje 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 reava pogotovo, ukoliko se radi sa PIC mikrokontrolerima. 34

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 teko 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 mikrokontrolerima PIC familije, naredne redove #emo posvetiti upravo ovom tipu A/D konvertora. ADC sa sukcesivnim aproksimacijama (SAR ADC) ima veoma malu potronju i zauzima relativno malo mesta na silicijumskoj 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

Slika 26. A/D konvertor sa sukcesivnim aproksimacijama Maksimalni ulazni napon koji se moe 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 teinu Vps / 4, odnosno, poto se radi o binarnom D/A konvertoru, svaki slede#i bit ima teinu 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 teine registra sukcesivnih aproksimacija (Qn-1). D/A konvertor generie napon Viz = Vps / 2 koji se poredi sa Vul. Ako je Vul > Vps / 2, MSB bit digitalnog ekvivalenta napona Vul je jedan, a ako je Vul < Vps / 2, tada taj bit treba da bude nula. Kontrolna logika, na osnovu izlaza komparatora resetuje (ako je k=0), ili ne resetuje (ako je k=1) MSB flipflop u registru sukcesivnih aproksimacija, ime je definisan bit najve#e vrednosti Qn-1 izlazne informacije, a zatim postavlja drugi bit po teini Qn-2 na logi ku jedinicu. Komparator poredi novu vrednost Viz (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 teini. Kontrolna logika postavlja slede#i bit koji ima teinu upola manju od prethodnog na logi ku jedinicu. Proces pore%enja i postavljanja narednih flipflopova se nastavlja sve do bita najmanje teine Q0. U zavisnosti od logi kog nivoa komparatora flipflop bita najmanje teine se resetuje ili ostaje logi ka jedinica. Time je konverzija zavrena. Kao primer, na Slici 25 pokazan je vremenski dijagram napona Viz idealnog etvorobitnog A/D konvertora sa sukcesivnim aproksimacijama. Na Slici 27 je pretpostavljen ulazni napon 11/16 > Vul/Vps >5/8. Konverzija po inje postavljanjem koda "1000" u SAR (registar sukcesivnih aproksimacija). Izlazni napon D/A konvertora se postavlja na Viz = Vps / 2. Poto je Vul > Viz, na osnovu k=1, u trenutku t1 kontrolna logika ne resetuje Q3, ime je 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. Poto je Vul > Viz, k=1 zabranjuje da kontrolna logika resetuje Q1, u trenutku t3 postavlja se Q0=1, tako da je u SAR registru stanje "1011". U trenutku t4 se na osnovu k=0 resetuje Q0, tako da je kona an rezultat konverzije koji je ostao u registru sukcesivnih aproksimacija Q3Q2Q1Q0="1010", to je najblii binarni broj koji odgovara ulaznom naponu.

36

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, kanjenja kroz komparator i kanjenja 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 ponavljanja CLK zavisi od vremena postavljanja D/A konvertora, od kanjenja kroz komparator i kanjenja kroz registar sukcesivnih aproksimacija sa pripadaju#im logi kim kolima. Dominantan uticaj na vreme konverzije ima vreme postavljanja D/A konvertora, poto je ovo vreme esto i za red veli ine due od 37

ostalih kanjenja u mrei. Tipi no vreme konverzije za, na primer, dvanaestobitne integrisane SAR ADK je od 1s za najbre, do nekoliko desetina s za sporije ADC. Brzina SAR ADC je 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 izvravanja logi kih operacija.

Maksimalno smirivanje D/A konvertora je naj e#e odre%eno smirivanjem MSB-a. Linearnost celokupnog A/D konvertora je limitirana linearno#u D/A konvertora. Zbog toga, SAR ADC-i ija rezolucija prelazi 12 bita esto zahtevaju neku vrstu kalibracije ili dodavanje novih komponenti da bi se postigla potrebna linearnost. Dodavanje novih komponenti donosi sa sobom i problem slaganja (uparenosti) komponenti. Zbog svega navedenog, u praksi naj e#e sre#emo realizacije ija rezolucija ne prelazi 12 bita. Kod mikrokotrolera PIC18F4550 koristi se 10-bitni ADC. Najvanije prednosti A/D konvertora sa sukcesivnim aproksimacijama su mala potronja, 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 definie startovanje (uklju ivanje) modula za konverziju, kanal koji se koristi za konverziju, dok se registrom ADCON2 podeavaju 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 se bitovi CHS3-CHS0 selekcija jednog od 13 kanala (kombinacije 1101,1110,1111 se ne koriste) bit GO/DONE statusni bit A/D konvertora (kada uzima vrednost '1', vri se konverzija) bit ADON dozvola rada A/D konvertora

Slika 28b. Registar ADCON1 bitovi 7 i 6 bit 5 (VCFG1) bit 4 (VCFG0) bitovi PCFG3-0 ne koriste se konfiguracioni bit za negativni referentni napon konfiguracioni bit za pozitivni referentni napon konfiguracioni bitovi A/D konvertora kojima se definie koji kanali su analogni, a koji digitalni (videti slede#u tabelu)

38

Na slede#oj slici je prikazan registar ADCON2:

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

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

Algoritam A/D konverzije 1. 2. 3. 4. 5. 6. 7. Konfiguracija A/D konvertora (preko ADCON0, ADCON1 i ADCON2) Konfigurisanje A/D prekida ukoliko se zahtevaju (ADIF, ADIE, PEIE, GIE) &ekanje da pro%e zahtevano akviziciono vreme Po etak procesa A/D konverzije Zavretak procesa A/D konverzije &itanje rezultata A/D konverzije iz registra ADRES Za slede#u konverziju, sko iti na korak 1 ili korak 2.

39

Slici 30. Blok-dijagram A/D konvetora

Greke A/D konverzije A/D konvertori nemaju idealnu prenosnu funkciju. Odstupanja od idealne prenosne funkcije definiu DC preciznost i okarakterisana su parametrima u tablicama 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 greaka u samom procesu analogno-digitalne (A/D) konverzije. Preciznost A/D konvertora zavisi od nekoliko klju nih tehni kih osobina, koje obuhvataju diferencijalnu nelinearnu greku (DNL), integralnu nelinearnu greku (INL), ofset i greku poja anja, preciznost referentnog napona, uticaj temperature i dinami ke performanse.

40

Dve veoma popularne metode za utvr%ivanje ukupne greke sistema su metoda kvadratnog korena sume kvadrata greaka (root-sum-square - RSS) i metoda najgoreg slu aja. RSS metoda podrazumeva kvadriranje pojedina nih greaka, njihovo sabiranje i kona no kvadratni koren zbira daje ukupnu greku: UKUPNA GREKA = , gde En predstavlja pojedina nu greku neke komponente ili parametra. Pomenuti metod je najprecizniji kada pojedina ne greke nisu u me%usobnoj korelaciji (to moe a ne mora biti slu aj). Kod metode najgoreg slu aja, sve pojedina ne greke se sabiraju. Ova metoda garantuje da greka nikada ne#e pre#i odre%enu granicu. Kako se na ovaj na in dobija gornja granica greke, stvarna greka je uvek manja od ove vrednosti (vrlo esto mnogo manja). Izmerena stvarna greka obi no je negde izme%u vrednosti dobijene na ova dva na ina, ali je esto blia vrednosti dobijenoj RSS metodom. U zavisnosti od potreba i zahteva bira se izme %u najgore i tipi ne vrednosti greaka. Odluka o tome koja #e vrednost biti kori#ena zavisi od mnogo faktora, uklju uju#i tu i standardnu devijaciju od merene vrednosti, vanosti pojedinih parametara, veli ini greke u odnosu na druge greke, itd. Tako da u stvari i ne postoje neka ta no odre%ena i stroga pravila koja moraju bit ispotovana. Od aplikacije zavisi koje #e specifikacije projektant da smatra najvanijim. Na primer, DTMF dekoder uzorkuje telefonski signal kako bi utvrdio koji je taster pritisnut na aparatu sa tonskim biranjem. U ovom 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 najvie panje da obrati na parametre dinami kih performansi kao to su odnos signal/um i harmonijska izobli enja. U drugom primeru, sistem moe 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 vie bita od predvi%enog za neku odre%enu preciznost, da #emo i dobiti karakteristike konvertora u eljenoj preciznosti. Ako na primer, pretpostavimo 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, moemo da pretpostavimo da #e to biti dovoljno; ali bez analize specifikacije, nema garancije da on postie 12bitne performanse (on moe biti boljih ili loijih karakterisitka). Na primer, 12-bitni A/D konvertor sa integralnom grekom nelinearnosti od 4 LSB-a (Least Significant Bit - najmanje vaan bit) moe posti#i samo 10-bitnu preciznost u najboljem slu aju (ako se podrazumeva da su greke ofseta i pojaanja kalibrisane). Ure%aj sa integralnom grekom nelinearnosti od 0.5 LSB-a moe posti#i greku manju od 0.0122% odnosno 13-bitnu preciznost (ako su uklonjene greke ofseta i poja anja). Da bi se izra unala najve#a preciznost, potrebno je maksimalnu integralnu greku nelinearnosti podeliti sa 2N, gde je N broj bita. U naem slu aju, ako dopustimo greku od 0.075% (tj. 11-bitnu greku) za A/D konvertor, ostaje nam greka od 0.025% za ostatak elektronskog sklopa, to uklju uje greke senzora, greku 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 vana. Parametri A/D konvertora koji opisuju ovaj vid preciznosti su greka ofseta, greka 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 greaka A/D konvertora, a nastaje kao rezultat pretvaranja signala i podataka je greka kvantizacije. Ova greka ne moe biti izbegnuta u me41

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

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

Slika 31b. Greka poja anja kod realnog A/D konvertora

42

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

43

/6/ SOFTVER ZA PIC MIKROKONTROLERE


Za projekat koji je pred vama je kori#en softver mikroC od firme Mikroelektronika iz Beograda. Ovaj softverski alat slui za pisanje kda za Microchip-ove PIC mikrokontrolere. Programeru je omogu#eno da na jednostavan na in kontrolie proces programiranja i napravi kvalitetan firmware za mikrokontroler. Ovde #emo navesti osnovne karakteristike softvera:

Pisanje C kda kori#enjem kvalitetnog i preglednog editora, to se ogleda u automatskoj kontroli i upozorenjima vezanim za sintaksu kda, kori#enih para-metara, kao i automatskoj korekciji pojedinih greaka Preglednost strukture programa (kda), promenljivih i funkcija omogu#ava Code explorer Jasan asemblerski kd 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 izvetaj i grafi ko predstavljanje RAM i ROM mape, statistike kda i sli no.

mikroC, dodue, odstupa od ANSI standarda u nekoliko segmenata. Neka odstupanja su na injena su u cilju da se olaka programiranje, dok su druge rezultat hardverskih ograni enja PIC mikrokontrolera. Pomenu#emo sada neke specifi nosti: Rekurzivne funkcije (function recursion) su podrane sa izvesnim ograni enjima, koja su posledica neto sloenijeg 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 tei ka prenosivosti programa, treba koristiti tradicionalno pretprocesorsko definisanje konstanti mikroC dozvoljava C++ stil jednolinijskih komentara, koriste#i dve kose crte (//). Komentar moe da po ne bilo gde i traje do slede#e nove linije programskog kda Brojne standardne C biblioteke (ctype, math, stdlib, string ) implementirane su u mikroC, uz individualna odstupanja.

Instalacija programa traje oko 30 sekundi (treba samo pratiti ponu%ene opcije i pritiskati komandno 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 kda 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

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

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

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

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

Slika 36. Kompajliranje programa preko komande Project # Build

Slika 37. Izgled prozora posle prevo$enja sa izvetajem (Messages) 47

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

USART terminal

Slika 39a. Izgled prozora kod USART komunikacionog terminala 48

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 najvanije: 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 zavri komunikacija, treba kliknuti na komandno dugme Disconnect .

Slika 39b. Izgled prozora kod HID komunikacionog terminala 49

HID terminal
Pokretanje internog softverskog HID terminala mikroC-a koji se koristi za komunikaciju ra unara 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 automatski upisuje naziv tog ure%aja. Na Slici 39b prikazan je izgled prozora HID terminala. Kao to se vidi, mogu #e je podesiti slede#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

Slika 39d. Izgled prozora kod PIC FLASH programa

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

51

/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 moe 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 (5V0.25V). Tasterom 1 (T1) se resetuje mikrokontroler (pin MCLR), dok se Tasterom 2 (T2) zadaje START komanda. Tri reima rada realizovanog kola se definiu preko DIPSW2 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 programu 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 poalje 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 greku pune skale A/D konvertora kori#enjem SPI potenciometra. Posle toga je mogu#e ru no vriti A/D konverziju napona sa obrtnog potenciometra, uz kompenzaciju ofseta koji je odre%en u prethodnom koraku. 52

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 moe povezati direktno na mikrokontroler PIC18F4550, s obzirom da ovaj ima integrisani USB modul. Za dodatnu stabilizaciju DATA + i DATA- signala stavljeni su otpornici od 27( (videti [7] u poglavlju Literatura). Serijski port i mikrokontroler se spreu preko interfejsnog kola MAX232, koje slui za prilago%enje naponskih nivoa. Na Slici 41a se nalaze relevantni blokovi (integrisana kola, tasteri, prekida i, konektori) na iskori#enoj plo ici za realizaciju ovog projekta (Slika 41b). Kada se tasterom T2 zada START komanda, onda mikrokontroler vri jednu od tri operacije zavisno od toga koja je kombinacija zadata na prekida u DIPSW2: 00 merenje ofseta i greke pune skale preko SPI potenciometra, 01 A/D konverzija napona izmerenog na potenciometru P1 sa bez softverskom kompenzacije ofseta i prikazom u USART terminalu programa mikroC, 10 A/D konverzija napona izmerenog na potenciometru P1 sa softverskom kompenzacijom ofseta i prikazom u u USART terminalu programa mikroC. Dakle, greka ofseta A/D konvertora se meri preko SPI potenciometra (kao to smo napomenuli), a simulacija SPI modula se ostvaruje preko gotove biblioteke iz softvera mikroC (pin C2 mikrokontrolera je ulazni signal, pin C1 je takt, a pin C0 izlazni signal SPI interfejsa). 53

Slika 41a. Raspored relevantnih blokova projekta na plo ici

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

Slika 42a. Izmerena karakteristika A/D konvertora merenjem napona na potenciometru Redni broj merenja 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 VUL (V) 0.000 0.019 0.155 0.334 0.626 1.276 1.630 1.745 2.106 2.511 2.531 2.824 3.010 3.330 3.740 3.765 3.906 4.141 4.442 4.632 4.744 4.805 4.915 4.942 5.000 8-bitna re na ADC-u 00000000 00000001 00001000 00010010 00100000 01000001 01010010 01011001 01101010 10000000 10000010 10010000 10011001 10101001 10111111 11000000 11000111 11010011 11100011 11101100 11110010 11110101 11110110 11111100 11111111

Tabela 9. Rezultati merenja napona ADC-a 55

Sa grafika na Slici 42a uo avamo da karakteristika ADC-a pomalo odstupa od linearnosti, a naro 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 naem slu aju je 0000000010, to iznosi oko 9mV). Softverska kompenzacija ofseta se vri tako to se od izmerene vrednosti napona na obrtnom potenciometru (10-bitni podatak) oduzme vrednost izmerenog ofseta preko digitalnog SPI potenciometra (0000000010). S obzirom da je USART terminal u softveru mikroC projektovan tako da prima podatke do 8 bitova, dva bita najnie teine se odbacuju (videti listing programa u mikroC-u). To 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 greka A/D konvertora koja predstavlja superpoziciju greke poja anja (linearna) i diferencijalnu nelinearnost A/D konvertora. Kao to moe da se primeti, ukupna greka (bez ofseta, koji je softverski komponzovan) ne prelazi vrednost LSB. (Detaljnije o grekama A/D konvertora je izloeno u 5. poglavlju ovog rada). Napomena: Za merenje napona je kori#en digimer MASTECH MS8201H.

Slika 42b. Izmerena greka 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 ponaa kao HID (Human Interface Device).

56

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 pristup RAM-u, dok ostatak registara Banke 0, Banke 1-7 ine registri opte namena (GPR). Ista#i #emo kako registri opte namene GPR(1) slue kao RAM bafer za operacije USB modula mikrokontrolera. (Napomena: BSR je Bank Select Register, odnosno registar za selekciju banke.) U okviru Banke 15 prostor od 160 adresa (F60h-FFFh) rezervisan je za registre specijalne namene SFR (Special Function Registers), koji su prikazani na Slici 43b. Kao to moe da se uo i na slici, ovi registri slue za definisanje ulaznih/izlaznih pinova portova mikrokontrolera (TRISA, TRISB, TRISC, TRISD, TRISE), stanja portova (PORTA, PORTB, PORTC, PORTD, PORTE), parametara internog A/D konvertora (ADCON1, ADCON2, ADCON3), stanja programskog broja a (PCL, PCLATH, PCLATU), tajmera, prekida itd.

57

Slika 43b. Mapa registara specijalne namene kod serije mikrokontrolera PIC18F Sada #emo preko primera ilustrovati postavljanje smerova na Portu A: TRISA = 0b000000 (PORTA je izlazni) TRISA = 0b111111 (PORTA je ulazni) TRISA = 0b111000 (A5:A3 su ulazni, a A2:A0 su izlazni pinovi).

Ako je ADCON1 = 13 (odnosno ADCON1 = 0b1101), pinovi PA5-PA0 se definiu kao digitalni ulazi, a A1 A0 kao analogni ulazi (Slika 29).

58

Slika 43c. Algoritam programa upisanog u mikrokontroler PIC18F4550 59

Softver mikrokontrolera je napisan tako da izvrava beskona nu petlju, pri emu tokom svakog obilaska petlje se proverava da li se neto promenilo (promena stanja na pinovima, prijem podatka sa serijskog porta i sli no) i u skladu sa promenama se izvravaju odre%ene akcije Nadalje #emo detaljno objasniti svaki blok algoritma prikazanog na Slici 43c.
Varijable i, j PORT A je ulazni A5:A2 - digitalni pinovi A1:A0 - analogni pi novi

Na samom po etku treba definisati varijable i i j, koje se koriste u programu. Obe varijable su 8bitne i nose informaciju o naponu koji se meri preko internog A/D konvertora mikrokontrolera. A1:A0 se definiu kao analogni ulazi Porta A (na njih se dovodi analogni naponi sa digitalnog i obrtnog potenciometra, respektivno), dok se A5:A2 definiu kao digitalni ulazi Porta A (pin A5 se ne koristi, na pin A4 je povezan START taster T2, dok je na pinove A3:A2 povezan DIPSW2 prekida ). Dakle, treba definisati ulaze i izlaze Porta A preko TRISA (adresa F92h) i koji su pinovi analogni ulazi, a koji digitalni (adresa FC1h).

Inicijalizacija USART modula Inicijalizacija SPI modula Inicijalizacija USB modula

Da bi se koristili USART, SPI i USB modul mikrokontrolera (videti Sliku 21), neophodno je da se izvri njihova inicijalizacija. U okviru softvera mikroC postoje integrisane biblioteke koje omogu#avaju komunikaciju USART i SPI modula. Za aktiviranje pomenuta dva modula koriste se instrukcije Usart_Init() i SPI_Init (), respektivno. (Adresni prostor koji je rezervisan za inicijalizaciju: 060h-3FFh.) Kada je u pitanju USB modul, koristi se poseban potprogram koji se nalazi u fajlu USBdsc.c 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.

Ako se primi po datak sa serijskog porta, isti tre ba da se prosle di ka USB por tu

Definisano je da kada mikrokontroler primi podatak sa serijskog porta ra unara, isti podatak treba da prosledi ka USB portu. Naime, podatak koji se poalje iz USART terminala prihvata USART modul mikrokontrolera i preko USB modula ga ka 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 smeta potprogram USBdsc.c.)

60

PA4=0 ?

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 definie START operacija. Ukoliko je T2 pritisnut (PA4=0), onda se ispituje stanje DIPSW2 prekida a, a ako nije pritisnut preska e se procedura ispitivanja stanja DIPSW2 prekida a i prelazi se na blok kanjenja (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 kanjenja (1s). Ako je DIPSW2=00, mikrokontroler preko SPI modula (koji je softverski implementiran), odre%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 potenciometru 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 konvertora (preko digitalnog potenciometra) varijabla j , a zatim i na obrtnom potenciometru varijabla i. Kompenzacija ofseta se, dakle, vri softverski (i:=i-j), a zatim se napon obrtnog potenciometra sa kompenzovanim ofsetom (i) alje preko USART modula ka USART terminalu.

61

Kasnjenje 1s
U okviru svakog obilaska beskona ne petlje nalazi se blok kanjenja kojim je definisano kanjenje od 1 sekunde (1000ms). Projektovano vreme od 1s je izvreno 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 smetena 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 izvetaj, izra unat prema veli ini izvetaja // i broja a izvetaja u okviru Deskriptora izvetaja //****************************************************************************** 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 (nii bajt) 0x02, 0, // - (vii bajt) 0x00, 0, //bDeviceClass - Zero zna i da svaki od interfejsa radi nezavisno 62

0x00, 0, 0x00, 0, EP0_PACKET_SIZE, 0, 0x34, 0, 0x12, 0, 0x01, 0, 0x00, 0, 0x01, 0, 0x00, 0, 0x01, 0, 0x02, 0, 0x00, 0, 0x01, 0,

// bDeviceSubClass // bDeviceProtocol // bMaxPacketSize0 maksimalna veli ina paketa podataka za // control transfer preko EP0 // idVendor - Identifikacija prodavca (nii bajt) // (vii bajt) // idProduct - Identifikacija proizvoda (nii bajt) // (vii bajt) // bcdDevice - (nii bajt) // (vii bajt) // iManufacturer - prvi string // iProduct - drugi string // iSerialNumber - (bez) // bNumConfigurations - 1

// Deskriptor konfigurisanja USB_CONFIG_DESCRIPTOR_LEN, 0, // bLength duina Deskriptora konfigurisanja (uvek 0x09) USB_CONFIG_DESCRIPTOR_TYPE, 0, // bDescriptorType - 2 = Deskriptor konfigurisanja ConfigDescr_wTotalLength, 0, // wTotalLength Ukupna duina ovog konfiguracionog // deskriptora uve#ana za deskriptore interfejsa i endpoint-a su sastavni delovi konfiguracije 0x00, 0, // (vii 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- duina 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 podeavanje 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 - Duina 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 drave (bez) 0x01, 0, // # od HID deskriptora klase za pra#enje (1) 0x22, 0, // Izvetaj za tip deskriptora (HID) Low_HID_ReportDesc_len, 0, High_HID_ReportDesc_len, 0, 63

// EP1_RX deskriptor USB_ENDP_DESCRIPTOR_LEN, 0, // bLength - duina 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 nieg // prioriteta High_HID_PACKET_SIZE, 0, // maks. veli ina paketa bajt vieg prioriteta 1, 0, // bInterval - interval prozivanja (1 ms) // EP1_TX deskriptor USB_ENDP_DESCRIPTOR_LEN, 0, // bLength duina 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 //nieg prioriteta High_HID_PACKET_SIZE, 0, // - max packet size - bajt vieg prioriteta 1, 0, // bInterval - interval prozivanja (1 ms) // Deskriptor HID izvetaja 0x06, 0, // USAGE_PAGE (Definisanje prodavca) 0xA0, 0, 0xFF, 0, 0x09, 0, // USAGE ID 0x01, 0, 0xA1, 0, // COLLECTION (Aplikacija) 0x01, 0, // Ulazni izvetaj 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 izvetaj 0x09, 0, // USAGE ID - (Definisanje prodavca) 0x04, 0, 0x15, 0, // LOGICAL_MINIMUM (0) 0x00, 0, 0x26, 0, // LOGICAL_MAXIMUM (255) 0x00, 0, 0xFF, 0, 64

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, // Izvetaj 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) - nii 0x04, 0 // - vii }; //****************************************************************************** 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 //****************************************************************************** 65

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 vri postavljene zadatke


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

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

// (adresni prostor 060h-3FFh)

TRISA = 0b111111; ADCON1 = 13; Usart_Init(2400); SPI_Init ();

// Definisanje svih pinova Porta A kao ulaznih (adresa F92h) // Pinovi A5:A0 su digitalni, a A1:A0 analogni (adresa FC1h) // Inicijalizacija USART modula (adresni prostor 060h-3FFh) // 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 { 66

if (Usart_Data_Ready()) { i = Usart_Read(); Usart_Write(i); HID_Write(&i, 1); } if (PORTA.F4 == 0) {

// Kada mikrokontroler primi podatak od USART terminala, // memorie ga u varijablu i, // zatim primljeni podatak vra#a ka USART terminalu i //ujedno ga prosledjuje ka HID terminalu (adresni // prostor 0400h-7FFh) // (adresni prostor 060h-3FFh) //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); } while (1); HID_Disable(); } // Kanjenje 1s (1000 ms) // Kraj beskonacne petlje // Zabrana za upisni USB bafer

67

/8/ LABORATORIJSKA VEBA


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 moe da prikae i prijem ASCII ili dekadnih (DEC) karaktera. Podeavanje ovog parametra izvriti u dogovoru sa predmetnim asistentom.

Slika 44. Podeavanje parametara USART terminala Pokrenuti HID terminal iz programa mikroC na na in prikazan u petom poglavlju Tools HID Terminal. 68

Slika 45. Prozor HID terminala

Ukoliko elite da proverite da li je ra unar prepoznao mikrokontroler koji radi u reimu 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 opcija Send 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 obriete prethodna stanja iz prozora USART terminala (opcija Clear History ) i HID terminala Clear Rcv ).

69

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

70

Slika 47. Slanje ASCII karaktera

71

Slika 48. Slanje heksadecimalnih (HEX) karaktera

72

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

73

Isklju iti HID terminala na na in ilustrovan na Slici 50 (desni klik mia 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 deava da HID terminal blokira ra unar pa mora da se resetuje.

Slika 50. Isklju ivanje HID terminala

Pritiskom na taster T2 odrediti ofset i greku 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 greka ofseta je 0x10, a greka pune skale 0xFE). Poto je u pitanju 10-bitna re (u pitanju je 10-bitni A/D konvertor), a USART terminal prepoznaje samo 8-bitne re i, 2 najvia 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). 74

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 zavretku zadataka, isklju ite USART terminal.

A/D konverzija sa objanjenjem


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

VA =

( xx) DEC 5V . 8 2 1

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

VA =

(16) DEC 5V = 0,3137V . 255

Tabela 10. ASCII kdovi

76

PRILOZI

77

78

79

80

81

82

83

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

84

CIRRICULUM VITAE

Prezime: Ime: Adresa stanovanja: e-mail adresa: Datum ro&enja: Nacionalnost: Obrazovanje: Kompletna ili stepenovana diploma: Poznavanje jezika: Voza$ka dozvola: Rad na ra$unaru:

Andreji# Ana arbanova ka br. 25 Brestovac, Bor andrejicana@yahoo.com 17.12.1982. Srpska Gimnazija Bora Stankovi#, Bor IV stepen Engleski (odli no) Francuski (vrlo dobro) MS WINDOWS, MS OFFICE, COREL, PHOTOSHOP, VISIO, mikroC Zavrena jednomese na stru na praksa u okviru studija u Telekomu - Ni. Odgovornost, energi nost, ambicioznost, inovativnost, spremnost za timski rad, sposobnost organizacije, pregovaracke sposobnosti, sposobnost za brzo u enje i usavravanje.

Napomene: Li$ne sposobnosti

85

Prezime: Ime: Adresa stanovanja: e-mail adresa: Datum ro&enja: Nacionalnost: Obrazovanje: Kompletna ili stepenovana diploma: Poznavanje jezika: Voza$ka dozvola: Rad na ra$unaru:

Ran&elovi# Magdalena Jadranska 16, 18000 Ni magdalena@bankerinter.net 31.07.1982. Srpska Gimnazija Bora Stankovi#, Ni IV stepen Engleski (dobro) B kategorija WINDOWS (98/2K/XP/VISTA), MS OFFICE, mikroC Telekomunikacione mree i sistemi, opti ki sistemi ...

Posebna interesovanja:

86

Vous aimerez peut-être aussi