pic18f4550

Upload: simajuve90

Post on 01-Mar-2016

41 views

Category:

Documents


0 download

DESCRIPTION

PIC18F4550

TRANSCRIPT

MIKROKONTROLER PIC18F4550

PIC18F4550 pripada 18F seriji mikrokontrolera kompanije Microchip. Mikrokontroleri ovog proizvoaa se odlikuju malom cenom i to je vanije besplatnom tehnikom podrkom (kompajleri, razvojni sistemi, programatori).S obzirom da poseduju harvard strukturu, memorijska mapa je podeljena na programsku i memoriju za podatke kao i EEPROM. Procesor (CPU) mikrokontrolera koristi tehniku preklapanja, kako bi se sve instrukcije (osim grananja) izvravale jedan ciklus. Zbog toga se osnovni takt deli sa 4, jer se faze izvrenja naredbi preklapaju. Sve naredbe su fiksne duine od 2 bajta, tako da je adresiranje memorije ogranieno. Zbog toga se memorija deli na 16 stranica, a izbor stranice se vri u odgovara- juim kontrolnim registrima. Ova osobina znaajno usporava rad mikrokontrolera meutim napredniji kompajleri vre inteligentno plan-iranje raspodele memorije kako bi se varijable koje se zajedno koriste nalazile u istoj memo-rijskoj banci.Programska memorija je 32KB dok je RAM veliine 2 KB. Takoe postoji i 256B EEPROM-a. Procesor poseduje proireni skup instukcija u odnosu na ranije serije (16 i 17) kao i nove naine adresi- ranja. Tako su dodate naredbe za hardversko mnoenje i deljenje, inkrementiranje i dekrementriranje sa uslovnim skokom, naredbe za itanje tabela i druge. Programski broja je irine 21 bit i njemu se moe pristupati samo indirektno preko odreenih registara.Mikrokontroler poseduje i magacin (stack), ali se on naalost moe koristiti samo indirektno tako to se u poseban registar upisuje eljeni sadraj i potom posebnom instrukcijom sadraj tog registra stavlja na stek. Kod itanja sa magacina vrednost se takoe nalazi u tom registru. Oscilator prua brojne mogunosti prilikom izbora radnog takta koji je ujedno i takt za periferije. Maksimalni eksterni takt je 48MHz, to daje procesoru mikrokontrolera takt od 12MHz. Za tu svrhu se koristi PLL kolo i delitelji frekvencije. Najbitnije je da se za rad USB modula mikrokontrolera mora obezbediti takt od 24MHz, a PIC ima prednost u odnosu na konkurentske mikrokontrolere to taj takt moe biti neza- visan od takta za CPU i druge jedinice.Mehanizam prekida je organizovan kao jedan prekidni vektor koji sadri adresu prekidne rutine u kojoj se treba ispitati izvor prekida i preduzeti eljena akcija. Dakle, nema prekidnog vektora za svaki ili grupu izvora prekida to je jedan od nedostataka ovog mikrokontrolera, jer se time gubi na brzini i preglednosti koda.Ovaj mikrokontroler ima bogat skup hardverskih periferija koje mu omoguavaju primenu u brojnim aplikacijama.

Slika 19. Mikrokontroler PIC18F4550 u kuitu DIP-40

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 izdvojiemo veoma napredan integrisani USB 2.0 modul velike brzine sa 1KB memorije za podatke, 10 bitni 13-to kanalni AD konvertor, 4 tajmerske jedinice (dve imaju mogucnost PWM-a), SPI , I2C i USART modul.Radna frekvencija mikrokontrolera je do 48MHz, dok je efektivna vrednost frekvencije 4 puta manja zbog protonog rada procesora (pipelining-a).Nadalje emo detaljnije opisati USART i USB module mikrokontrolera PIC18F4550.

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

Reimi rada mikrokontrolera

Run mode: i CPU i periferija su ukljueniIdle mode: CPU je iskljuen a periferija ukljuenaSleep mode: i CPU i periferija su iskljueniIdle 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 ADvobrzinski startni oscilator.

Struktura fleksibilnog oscilatora

etiri kristalna reima rada ukljuujui i visoko precizni PLL za USB Dva spoljanja taktna reima rada, do 48 MHzUnutranji oscilator- 8 frekvencija koje bira korisnik, od 31 kHz do 8 MHz- Podeavanje koje bira korisnik zbog kompenzacije frekvencijskog drifta

26

Sekundarni oscilator koristi Timer1Opcije dvostrukog oscilatora omoguavaju mikrokontroleru i USB modulu da radi na razliitim taktnim brzinamaFail-Safe taktni nadzor omoguava bezbedno iskljuivanje ukoliko se neki takt zaustavi

Osobine periferije

Svaki pin moe da prihvati/preda relativno veliku vrednost struje 25mA/25mA Tri spoljanja prekidaetiri 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 bitaProiren CCP (Capture/Compare/PWM) modul- Multiple output reimi rada- Mogunost izbora polariteta- Programabilno mrtvo vreme- Automatsko iskljuivanje i automatski restartProireni USART modulModul master sinhronog serijskog porta (MSSP) podrava 3-ini SPI (sva etiri reima rada) i I2C master i slave reim rada10-bitni 13-kanalni A/D konvertor sa pristupnim vremenom koje se moe programiratiDvostruki analogni komparator sa multipleksnim ulazom.

Specijalne karakteristike mikrokontrolera

C kompajler optimizirane arhitekture sa opcionim dodatnim skupom instrukcija100 000 ciklusa upisivanja/brisanja (erase/write) proirene programske Flash memorije1 000 000 upisivanja/brisanja ciklusa EEPROM memorije podatakaFlash/Date EEPROM zadravanje due od 40 godinaMogunost samoprogramiranja tokom rada (ovo na primer dozvoljava CCS kompajler) Postoje nivoi prioriteta za prekideJednociklusni mnoa 8 x 8Proireni watchdog tajmer (WDT):- Period programiranja od 41 ms do 131 msZatita programskog kodaProgramiranje unutar sistema preko dva pina i napajanjem od 5V Debagovanje unutar sistema preko dva pina (ICD)Proireni ICD/ICSP port (samo za mikrokontrolere u 44-pinskom kuitu) irok opseg napona napajanja (od 2V do 5.5V)

27

Slika 21. Arhitektura mikrokontrolera PIC18F4550

nanoWatt Tehnologija

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

Alternate Run reim rada: U zavisnosti da li kontroler radi po taktu Timer1 ili unutranjeg oscilatora , smanjenje moe da bude i do 90%.Multiple Idle reimi rada: Kontroler moe da radi i sa iskljuenim CPU dok je periferija jo uvek aktivna. Na ovaj nain potronja iznosi oko 4% od potronje u normalnom reimu rada.On-the-fly prekidaki reim rada: Kontrola potronje se moe pozvati i u toku programa. Na ovaj nain se korisniku ostavlja mogunost promene reima rada rada u softverskoj apli- kaciji.Smanjena potronja u modulima mikrokontrolera: Poto je potronja vea kada se ko- riste i Timer1 i Watchdog tajmer, potreba za njim je minimizirana.

28

Opcije viestrukog oscilatora i njegove karakteristike

Svi mikrokontroleri iz familije PIC18F2455/2550/4455/4550 pruaju dvanaest razliitih opcija oscilatora, dozvoljavajui korisnicima irok izbor u razvoju aplikacijskog hardvera. To podrazumeva:etiri reima rada koji koriste kristalni kvarc ili keramiki rezonatoretiri reima rada koja koriste spoljanji taktUnutranji oscilator koji omoguuje takt od 8 MHz ( 2%) i INTRC izvor (aproksimativno31 kHz, koji ne zavisi od temperature i VDD) kao i opseg od 6 taktnih frekvencija koje koris- nik moe sam da izabere, izmeu 125 KHz i 4 MHz, to konano daje 8 taktnih frekvencija.PLL frekvencijski mnoa, dostupan i za visoke brzine i reim rada spoljnog oscilatora, to omoguava irok spektar taktnih brzina od 4 MHz do 48 MHz.Asinhroni dvostruki takt, omoguava USB modulu da radi na visokim frekvencijama dok ostatak mikrokontrolera se taktuje iz oscilatora male snage.

Ostale specijalne karakteristike

Izdrljivost memorije: Proirene Flash elije za obe programske memorije i za EEPROMmemoriju podataka su procenjene da traju najmanje vie eares/write ciklusa vie od 100000 za programsku memoriju i 1 000 000 za EEPROM. Zadravanje (uvanje) podataka bez osveavanja je procenjeno da bude vee od 40 godina.Mogunost samoprogramiranja: Ovaj ureaj moe da sam upisuje u prostor sopstvene programske memorije pod kontrolom unutranjeg softvera. Korienjem bootloader-a, koji je smeten u zatienom boot bloku na vrhu programske memorije, postaje mogue da se stvori aplikacije koja moe da unapreuje (update-uje) sama sebe.Proireni set instrukcija: Familija mikrokontrolera sa USB modulom (PIC18F2455/2550/4455/4550) uvodi dodatno proirenje standardnog seta instrukcija serije PIC18, uvodei dodatnih 8 instrukcija i Indexed Literal Offset Addressing reim rada. Cilj ovoga bio da bi se optimizovao program pisan na viem programskom jeziku kao to je C.Proiren CCP modul: U PWM reimu rada, ovaj modul omoguava 1, 2 ili 4 modulisana izlaza za kontrolisanje half-bridge i full-bridge drajvera. Ostale ka-rakteristike su auto- matsko iskljuivanje (za iskljuivanje PWM izlaza u toku prekida ili za neki drugi zadat uslov) i automatsko restartovanje (da bi se izlazi opet aktivirali onda kad su zadati uslovi opet ispunjeni).Proiren USART: Ovaj modul serijske komunikacije moe da vri standardne RS-232 operacije i prua podrku za LIN protokol. Druga proirenja ukljuuju automatsku detekciju brzine prenosa podataka (Automatic Baud Rate Detection) i 16-bitni Generator takta za prenos podataka (Baud Rate Generator) za poboljanje rezolucije. Kad mikrokontroler ko- risti unutranji oscilator, EUSART omoguava stabilnu operaciju za aplikaciju koja komu- nicira spolja bez korienja eksternog kristala (ili prati potronju snage)10-bitni A/D Konvertor: Ovaj modul aktivira programirljivo vreme konverzije, ime e kanal biti odabran i konverzija e se pokrenuti, bez ekanja na period odabiranja (na taj nain se smanjuje dodatni kod).Rezervisan ICD/ICSP Port: Ovaj modul ukljuuje debager (za pronalaenje greaka) i pi- nova za programiranje koji nisu u multipleksu sa nekim drugim funkcijama mikrokon- trolera. Ponuena kao opcija, ova funkcija omoguava korisnicima da razviju mone I/O aplikacije, sa mogunou programiranja i debagovanja u samom elektrinom kolu.

29

Organizacija memorijeMemorija mikrokontrolera PIC18F4550 je organizovana u sledee tri celine: Programska memorijaMemorija podataka (RAM)EEPROM memorija podataka

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

Slika 22a. Programska memorija i magacin (stack)

Organizacija programske memorije

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

adrese i gornje granice fiziki implementirane memorije, to e imati za posledicu uitavanje logikih '0' (NOP instrukcija).Mikrokontroler PIC18F4550 poseduje Flash memoriju kapaciteta 32KB i moe da memorie16.384 instrukcije obima jedne rei.Mikrokontroleri iz serija PIC18 imaju dva vektora prekida: Reset vektor ija je adresa 0000h iPrekidni (interrupt) vektor ije su adrese 0008h i 0018h.

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

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

USART modul

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

1. TXSTA : Predajni statusni i kontrolni registar sa sledeim bitovima:

CSRCTX9TXENSYNCSENDBBRGHTRMTTX9D

CSRC nebitan kod asinhronog prenosaTX9 1 ukljuuje prenos devetog bitaTXEN predaja dozvoljena sa setovanjem ovog bita SYNC 0 je sinhroni a 1 asinhroni reim rada BRGH setuje veliku brzinu prenosaTRMT status predajnog pomerakog registra, 1 registar je prazanTX9D deveti bit za prenos (najcee parnost)2. TCSTA : Prijemni statusni i kontrolni registar sa sledeim bitovima:

SPENRX9SRENCRENADDENFERROERRc

SPEN ukljuuje/iskljuuje serijski port RX9 1 ukljuuje prenos devetog bita SREN nebitan kod asinhronog prenosaCREN prijem podataka ukljuen setovanjem ovog bitaADDEN bit dozvole za detekciju adreseFERR bit za detekciju greaka rama (okvira) OERR bit za detekciju greaka prekoraenja RX9D deveti bit za prenos (najee parnost)

3. BAUDCON: Kontrolni registar generatora takta za brzinu prenosa

ABDOFRCIDLRXDTPTXCKPBRG16WUEABDEN

ABDOF bit poravnanja prilikom automatske akvizicije podatakaRCIDL prijemni bit o reimu smanjene potronje RXDTP ako je 1, Rx podaci su invertovani TXCKP ako je 1, Tx podaci su invertovani BRG16 ukljuuje 16-bitni generator bodove brzine WUE aktivacioni (wake-up) bit dozvoleABDEN ukljuuje merenje brzine prenosa (brzina u baudima) sledeeg karaktera (55h)

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

Konfiguracioni bitoviBRG/EUSARTmodFormula za ra-unanje brzine

SYNCBRG16BRGH

0008 bitniFosc/[64(n+1)]

0018 bitniFosc/[16(n+1)]

01016 bitniFosc/[16(n+1)]

01116 bitniFosc/[4(n+1)]

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

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

Slika 23. Predajno kolo USART modula

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

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

USB modul

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

Karakteristike USB modula

Fleksibilan USB 2.0 standardBrzine: Low Speed (1.5 Mb/s) i Full Speed (12 Mb/s) Podrava kontrolni, prekidni, izohroni i bulk transfer Podrava do 32 krajnje take, odnosno16 bidirekciono1Kbit-ni dvostruki pristup RAM memoriji za USBUnutar mikrokontrolera je integrisan USB primopredajnik sa sopstvenim regulatorom naponaInterfejs za spoljanji USB primopredajnikProtoni paralelni port (Streaming Parallel Port) za (protoni) USB prenos.

Fizika veza ostvaruje se preko dva pina D+ i D- dok se ostali koriste za povezivanje eksternog predajnika (transivera). Podaci se primaju i prenose preko posebnog bafera kapaciteta 1KB koji je podeljen na 16 tzv. endpoint-a i njihove deskriptore koji sadrze podatke o karakteru endpoint-a (smeru toka podataka), veliini endpoint-a i njegovoj poetnoj adresi. Pristup podacima koji se primaju ili alju se obavlja preko ovih endpoint-a. USB serijski interfejs vri primopredaju podataka i on mora biti taktovan frekvencijom od 24MHz. Modul ima ugradjen 3.3V regulator koji slui za napajanje pull-up otpornika na D+ liniji to je bitno kod poetne faze prepoznavanja od strane hosta. Njime se odreuje i brzina prenosa (spor ili brz transfer).Komunikacija se zasniva na nekoliko prekida, a najvaniji je onaj koji se generie kada se primi neki token (podatak). Tada se u odgovarajuim registrima moe proitati u kojem endpoint-u se podatak nalazi kako bi mu se pristupilo. Postoje i drugi prekidi koji se okidaju u sluaju greke, reseta, zaguenja ili aktivnosti na liniji. Svi oni se mogu iskoristiti za kontrolu komu-nikacije.Zbog svoje kompleksnosti koja uglavnom viestruko premauje sloenost veine aplikacija rad sa USB portom i mikrokontrolerom se najee izvodi pomou gotovih modula. Oivljavanje USB komunikacije potrebno pisanje posebnog drajvera ureaja na strani hosta kao i odgovarajueg softvera u mikrokontroleru. Zahvaljujui pomenutom HID (Human Interface Device) standardu i gotovim programskim modulima ovaj veliki problem se veoma lako reava pogotovo, ukoliko se radi sa PIC mikrokontrolerima.

34

Slika 25. Blok ema USB modula

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

ADC SA SUKCESIVNIM APROKSIMACIJAMA

Svi signali u prirodi su kontinualni, a veoma teko je upravljati nekim procesom bez digitalizacije analognih veliina. Kao to je napomenuto, PORTA i PORTE imaju mogunost A/D konverzije to podrazumeva da se mogu konfigurisati kao analogni ili digitalni.S obzirom da je 10-bitni A/D konvertor sa sukcesivnim aproksimacijama integrisan u mikro- kontrolerima PIC familije, naredne redove emo posvetiti upravo ovom tipu A/D konvertora.ADC sa sukcesivnim aproksimacijama (SAR ADC) ima veoma malu potronju i zauzima relativno malo mesta na silicijumskoj ploici. Ova kombinacija performansi ga ini idealnim za veliki broj aplikacija kao to su: instrumenti koji su baterijski napajani, industrijska kontrola, akvizicija podataka itd.SAR ADC su est izbor za aplikacije sa srednjom i visokom rezolucijom i sa srednjom brzinom konverzije (od nekoliko s do nekoliko desetina s). Najee se biraju gde brzina odabiranja ne prelazi 5 s, a opseg rezolucije SAR A/D konvertora je od 8 do 16 bita. Principijelna ema A/D konvertora sa sukcesivnim aproksimacijama data je na Slici 26.

35

Slika 26. A/D konvertor sa sukcesivnim aproksimacijama

Maksimalni ulazni napon koji se moe prikljuiti na konvertor je Vulmax i on je jednak naponu pune skale Vps tj. Vulmax = Vps . Maksimalni izlazni napon iz D/A konvertora Viz je za 1 LSB manji od napona Vps. Pod ovakvim uslovima D/A konvertor e, kad je MSB bit postavljen na jedinicu (Qn-1 =1), a svi ostali na nulu, generisati napon Viz = Vps/ 2. Sledei bit (Qn-2=1) ima teinu Vps / 4, odnosno, poto se radi o binarnom D/A konvertoru, svaki sledei bit ima teinu upola manju od predhodnog.Konverzija poinje tako to, nakon prikljuenog Vul, kontrolno logiko kolo postavi logiku jedinicu u bit najvee teine registra sukcesivnih aproksimacija (Qn-1). D/A konvertor generie napon Viz = Vps / 2 koji se poredi sa Vul. Ako je Vul > Vps / 2, MSB bit digitalnog ekvivalenta napona Vul je jedan, a ako je Vul < Vps / 2, tada taj bit treba da bude nula. Kontrolna logika, na osnovu izlaza komparatora resetuje (ako je k=0), ili ne resetuje (ako je k=1) MSB flipflop u registru sukcesivnih aproksimacija, ime je definisan bit najvee vrednosti Qn-1 izlazne informacije, a zatim postavlja drugi bit po teini Qn-2 na logiku jedinicu. Komparator poredi novu vrednost Viz (koja je Vps / 4 ili 3Vps / 4 u zavisnosti dobijenog u poreenju sa bitom najvee vrednosti) sa Vul, a zatim kontrolna logika, na osnovu izlaza komparatora resetuje ili ne flipflop za taj bit (Qn-2) i definisana je vrednost bita drugog po teini. Kontrolna logika postavlja sledei bit koji ima teinu upola manju od prethodnog na logiku jedinicu. Proces poreenja i postavljanja narednih flipflopova se nastavlja sve do bita najmanje teine Q0. U zavisnosti od logikog nivoa komparatora flipflop bita najmanje teine se resetuje ili ostaje logika jedinica. Time je konverzija zavrena.Kao primer, na Slici 25 pokazan je vremenski dijagram napona Viz idealnog etvorobitnog A/Dkonvertora sa sukcesivnim aproksimacijama.Na Slici 27 je pretpostavljen ulazni napon 11/16 > Vul/Vps >5/8. Konverzija poinje postavljanjem koda "1000" u SAR (registar sukcesivnih aproksimacija). Izlazni napon D/A konvertora se postavlja na Viz = Vps / 2. Poto je Vul > Viz, na osnovu k=1, u trenutku t1 kontrolna logika ne resetuje Q3, ime je odreen MSB bit izlazne informacije, postavlja Q2=1, tako da je kod upisan u registar sukcesivnih aproksimacija (SAR) "1100", a izlazni napon D/A konvertora se postavlja na Viz=3 / 4Vps. Sada je Vul< Viz, kontrolna logika u trenutku t2, na osnovu k=0 resetuje Q2 i bezuslovno postavlja Q1=1. Ovim je odreena i druga cifra izlazne digitalne informacije. SAR je postavljen u stanje "1010", a Viz na Viz=5Vps/8. Poto je Vul > Viz, k=1 zabranjuje da kontrolna logika resetuje Q1, u trenutku t3 postavlja se Q0=1, tako da je u SAR registru stanje "1011". U trenutku t4 se na osnovu k=0 resetuje Q0, tako da je konaan rezultat konverzije koji je ostao u registru sukcesivnih aproksimacija Q3Q2Q1Q0="1010", to je najblii binarni broj koji odgovara ulaznom naponu.

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 (skraeno SAR ADC) mogu se definisati uslovi za sintezu registra sukcesivnih aproksimacija (SAR) i kontrolne logike (KL):

Konverzija analognog signala u digitalni binarni kodovan broj od n cifara se obavlja u n+1 taktnom intervalu, od kojih prvi (t0) inicijalizuje sekvencu sukcesivnih aproksimacija, a poslednji (tn) oznaava kraj konverzije.Start konverzije se zadaje asinhrono u odnosu na taktni impuls A/D konvertora.Vreme izmeu dva susedna taktna impulsa treba da je dovoljno dugako, kako bi isteklo vreme postavljanja D/A konvertora, kanjenja kroz komparator i kanjenja kroz kontrolnu logiku. Korieni n-bitni D/A konvertor mora imati monotono rastuu karakteristiku prenosa (diferencijalnu linearnost bolju od 0.5 LSB).Flipflopovi registra sukcesivnih aproksimacija (SAR registra) treba da imaju mogunost pojedinanog postavljanja i resetovanja.Ulazni napon Vul ne sme da se menja u toku konverzije, s obzirom da se flipflopovi postavljaju bit po bit, a ve postavljeni flipflopovi, u sluaju promene Vul, ne mogu da promene stanje.

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

tSARADK=(n+1)*tc

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

37

ostalih kanjenja u mrei. Tipino vreme konverzije za, na primer, dvanaestobitne integrisane SAR ADK je od 1s za najbre, do nekoliko desetina s za sporije ADC.Brzina SAR ADC je ograniena sa sledeim faktorima: Vremenom smirivanja D/A konvertoraKomparatorom, koji za odreeno vreme mora da detektuje male razlike izmeu napona Vul i VizVremenom izvravanja logikih operacija.

Maksimalno smirivanje D/A konvertora je najee odreeno smirivanjem MSB-a. Linearnost ce- lokupnog A/D konvertora je limitirana linearnou D/A konvertora. Zbog toga, SAR ADC-i ija rezo- lucija prelazi 12 bita esto zahtevaju neku vrstu kalibracije ili dodavanje novih komponenti da bi se po- stigla potrebna linearnost. Dodavanje novih komponenti donosi sa sobom i problem slaganja (upare- nosti) komponenti. Zbog svega navedenog, u praksi najee sreemo realizacije ija rezolucija ne pre- lazi 12 bita. Kod mikrokotrolera PIC18F4550 koristi se 10-bitni ADC.Najvanije prednosti A/D konvertora sa sukcesivnim aproksimacijama su mala potronja, visoka rezolucija, tanost i to to zauzimaju malo mesta na silicijumskoj ploici. Glavna ogranienja u strukturi su mala brzina odabiranja, kao i zahtevi da tanost pojedinih delova (kao to su D/A konvertor i komparator) bude na nivou tanosti celog sistema.Da bi se iskoristio 10-bitni i 13-kanalni A/D konvertor integrisan u mikrokontroleru, neophodno je podesiti registre ADCON0, ADCON1 i ADCON2.Inae, registar ADCON0 definie startovanje (ukljuivanje) modula za konverziju, kanal koji se koristi za konverziju, dok se registrom ADCON2 podeavaju parametri A/D konverzije (frekvencije odabiranja konvertora, poetak konverzije).Registrom ADCON1 odreuje se uloga pojedinih pinova (analogni ili digitalni).

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

Slika 28b. Registar ADCON1

bitovi 7 i 6 ne koriste sebit 5 (VCFG1) konfiguracioni bit za negativni referentni napon bit 4 (VCFG0) konfiguracioni bit za pozitivni referentni naponbitovi PCFG3-0 konfiguracioni bitovi A/D konvertora kojima se definie koji kanali su analogni, a koji digitalni (videti sledeu tabelu)

38

Na sledeoj slici je prikazan registar ADCON2:

Slika 29. Registar ADCON2

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

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

Algoritam A/D konverzije

1. Konfiguracija A/D konvertora (preko ADCON0, ADCON1 i ADCON2)2. Konfigurisanje A/D prekida ukoliko se zahtevaju (ADIF, ADIE, PEIE, GIE)3. ekanje da proe zahtevano akviziciono vreme4. Poetak procesa A/D konverzije5. Zavretak procesa A/D konverzije6. itanje rezultata A/D konverzije iz registra ADRES7. Za sledeu konverziju, skoiti 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 tehnikih podataka.A/D konverzija odstupa od idealnog zbog varijacija u procesu izrade to je zajedniko za sva integrisana kola, kao i zbog raznih drugih izvora greaka u samom procesu analogno-digitalne (A/D) konverzije. Preciznost A/D konvertora zavisi od nekoliko kljunih tehnikih osobina, koje obuhvataju diferencijalnu nelinearnu greku (DNL), integralnu nelinearnu greku (INL), ofset i greku pojaanja, preciznost referentnog napona, uticaj temperature i dinamike performanse.

40

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

UKUPNA GREKA =

, gde En predstavlja pojedinanu greku neke komponente ili parametra.Pomenuti metod je najprecizniji kada pojedinane greke nisu u meusobnoj korelaciji (to moe a ne mora biti sluaj). Kod metode najgoreg sluaja, sve pojedinane greke se sabiraju. Ova metoda garantuje da greka nikada nee prei odreenu granicu. Kako se na ovaj nain dobija gornja granica greke, stvarna greka je uvek manja od ove vrednosti (vrlo esto mnogo manja). Izmerena stvarna greka obino je negde izmeu vrednosti dobijene na ova dva naina, ali je esto blia vrednosti dobi- jenoj RSS metodom. U zavisnosti od potreba i zahteva bira se izmeu najgore i tipine vrednosti gre- aka. Odluka o tome koja e vrednost biti koriena zavisi od mnogo faktora, ukljuujui tu i stan- dardnu devijaciju od merene vrednosti, vanosti pojedinih parametara, veliini greke u odnosu na dru- ge greke, itd. Tako da u stvari i ne postoje neka tano odreena i stroga pravila koja moraju bit ispo- tovana.Od aplikacije zavisi koje e specifikacije projektant da smatra najvanijim. Na primer, DTMF dekoder uzorkuje telefonski signal kako bi utvrdio koji je taster pritisnut na aparatu sa tonskim biranjem. U ovom sluaju najbitnije je izmeriti snagu signala (iz odreenog seta frekvencija) meu ostalim tonovima i umom koji nastaje prilikom A/D konverzije. U ovom projektu, projektant e naj- vie panje da obrati na parametre dinamikih performansi kao to su odnos signal/um i harmonijska izoblienja. U drugom primeru, sistem moe da oitava signal koji meri temperaturu neke tenosti. U ovom sluaju, DC preciznost merenja je najbitnija tako da e ofset, pojaanje i nelinearnosti biti najpre proveravane.Ne mora da znai, da ako uzmemo A/D konvertor sa vie bita od predvienog za neku odreenu preciznost, da emo i dobiti karakteristike konvertora u eljenoj preciznosti. Ako na primer, pret- postavimo da ja potrebno postii preciznost od 0,1% ili 10-bitnu preciznost (1/210), tako da ima smisla odabrati konvertor sa rezolucijom veom od ove. Ako odaberemo 12-bitni konvertor, moemo da pretpostavimo da e to biti dovoljno; ali bez analize specifikacije, nema garancije da on postie 12- bitne performanse (on moe biti boljih ili loijih karakterisitka). Na primer, 12-bitni A/D konvertor sa integralnom grekom nelinearnosti od 4 LSB-a (Least Significant Bit - najmanje vaan bit) moe postii samo 10-bitnu preciznost u najboljem sluaju (ako se podrazumeva da su greke ofseta i poja- anja kalibrisane). Ureaj sa integralnom grekom nelinearnosti od 0.5 LSB-a moe postii greku manju od 0.0122% odnosno 13-bitnu preciznost (ako su uklonjene greke ofseta i pojaanja). Da bi se izraunala najvea preciznost, potrebno je maksimalnu integralnu greku nelinearnosti podeliti sa 2N, gde je N broj bita. U naem sluaju, ako dopustimo greku od 0.075% (tj. 11-bitnu greku) za A/D konvertor, ostaje nam greka od 0.025% za ostatak elektronskog sklopa, to ukljuuje greke senzora, greku od operacionih pojaavaa, multipleksera, eventualnog D/A konvertora, ili drugih analognih izlaznih signala na putanji signala.Mnogi signali su relativno statini, kao npr. izlazni signali temperaturnih senzora ili senzora pritiska. U takvim aplikacijama mereni signal je povezan sa nekom fizikom veliinom i apsolutna preciznost merenja tog napona je vana. Parametri A/D konvertora koji opisuju ovaj vid preciznosti su greka ofseta, greka pojaanja dinamikog opsega, diferencijalna nelinearnost (DNL) i integralna nelinearnost (INL). Ova etiri parametra u potpunosti opisuju apsolutnu preciznost A/D konvertora.Iako se ne navodi kao parametar jedna od osnovnih greaka A/D konvertora, a nastaje kao rezultat pretvaranja signala i podataka je greka kvantizacije. Ova greka ne moe biti izbegnuta u me-

41

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

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

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

42

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

SOFTVER ZA PIC MIKROKONTROLERE

Za projekat koji je pred vama je korien softver mikroC od firme Mikroelektronika iz Beograda. Ovaj softverski alat slui za pisanje kda za Microchip-ove PIC mikrokontrolere. Programeru je omogueno da na jednostavan nain kontrolie proces programiranja i napravi kvalitetan firmware za mikrokontroler.

Ovde emo navesti osnovne karakteristike softvera:

Pisanje C kda korienjem kvalitetnog i preglednog editora, to se ogleda u automatskoj kontroli i upozorenjima vezanim za sintaksu kda, korienih para-metara, kao i automatskoj korekciji pojedinih greakaPreglednost strukture programa (kda), promenljivih i funkcija omoguava Code explorerJasan asemblerski kd i standardna kompatibilnost generisanih HEX datoteka toka programa preko ugraeg debagera (debugger)Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina, koje znaajno ubrzavaju pisanje programaDetaljan izvetaj i grafiko predstavljanje RAM i ROM mape, statistike kda i slino.

mikroC, dodue, odstupa od ANSI standarda u nekoliko segmenata. Neka odstupanja su nainjena su u cilju da se olaka programiranje, dok su druge rezultat hardverskih ogranienja PIC mikrokontrolera. Pomenuemo sada neke specifinosti:

Rekurzivne funkcije (function recursion) su podrane sa izvesnim ogranienjima, koja su posledica neto sloenijeg pristupa magacinu (stack) i ogranienja vezana za memoriju Pokazivai (pointers) promenljivih i pokazivai konstanti nisu kompatibilni, tj. nije mogua meusobna dodela ili uporeivanjemikroC tretira oznaavanje const kao true constans (kod C++), to omoguava korienje const objekta na mestima gde ANSIC oekuje constant izraz .Ukoliko se tei ka prenosivosti programa, treba koristiti tradicionalno pretprocesorsko definisanje konstantimikroC dozvoljava C++ stil jednolinijskih komentara, koristei dve kose crte (//). Komentar moe da pone bilo gde i traje do sledee nove linije programskog kdaBrojne standardne C biblioteke (ctype, math, stdlib, string ) implementirane su u mikroC, uz individualna odstupanja.

Instalacija programa traje oko 30 sekundi (treba samo pratiti ponuene opcije i pritiskati ko- mandno dugme Next). Posle instalacije treba pokrenuti mikroC, a to se najjednostavnije ostvaruje klikom na ikonicu.

Pisanje programa

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

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 prevoenja 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 raunara i mikrokontrolera ostvaruje se na sledei nain: Tools USART Terminal.Na Slici 39a prikazan je izgled prozora USART terminala. Kao to se vidi, mogue je podesiti vei broj parametara. Naveemo samo najvanije:Serijski port (u padajuem meniju treba izabrati eljeni serijski port, a kod standardnih raunara to su COM1 i COM2)Brzina prenosa (za frekvenciju kvarca od 8MHz bira se 14400 bauda) Broj stop bitova (1, 1.5 i 2)Izbor parnosti (bez, parna, neparna itd.) Broj bitova koji ine karakter (5, 6, 7 ili 8) Ukljuivanje/iskljuivanje handshaking signala (RTS i DTR)Izbor formata podatka koji se alje (ASCII, heksadecimalni - HEX ili dekadni - DEC) Nain slanja (odmah po kucanju ili kada se klikne na opciju SEND) itd.

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

Slika 39b. Izgled prozora kod HID komunikacionog terminala

49

HID terminal

Pokretanje internog softverskog HID terminala mikroC-a koji se koristi za komunikaciju rauna- ra i mikrokontrolera ostvaruje se na sledei nain: Tools HID Terminal.Kada se prikljui ureaj sa implementiranim HID standardom, u prozor HID Devices se auto- matski upisuje naziv tog ureaja.Na Slici 39b prikazan je izgled prozora HID terminala. Kao to se vidi, mogue je podesiti sle- dee parametre:

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

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

Razvojni sistem Easy PIC i program PIC FLASH

Slika 39c. Izgled razvojnog sistema Easy PIC

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 u40pinsko podnoje razvojnog sistema, a zatim se pokrene program PIC Flash preko kojeg se unosi odgovarajui heksadecimalni kod (komandno dugme Load Hex), pri emu su podeeni parametri kao na Slici 39d.

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 elektrina ema. Kao to mo- e da se uoi, postoji dvostruka veza izmeu mikrokontrolera PIC18F4550 i PC raunara preko serijskog i preko USB porta. Mikrokontroler ujedno koristi napajanje iz USB porta raunara (5V0.25V).Tasterom 1 (T1) se resetuje mikrokontroler (pin MCLR), dok se Tasterom 2 (T2) zadaje STARTkomanda. Tri reima rada realizovanog kola se definiu preko DIPSW2 prekidaa.Na dva ulazna pina Porta A se dovode analogni naponi sa standardnog obrtnog potenciometra (PA0) i digitalnog SPI potenciometra (PA1). Inae, digitalnim potenciometrom ija je nominalna vrednost 10K se upravlja preko simuliranog SPI interfejsa mikrokontrolera (postoji biblioteka u prog- ramu mikroC) PIC18F4550 alje 8-bitnu re koja odreuje vrednost otpornosti na klizau. Korak digitalnog potenciometra iznosi 39.06 (10K/ 28). Ako mu se poalje sekvenca 00000000, otpornost na klizau je 0, za 00000001 otpornost na klizau je 39.06 , za 00000010 otpornost na klizau je78.12 itd.Ideja je da se odredi karakteristika A/D konvertora integrisanog u mikrokontroleru. Karakteristikae se izmeriti u 25 taaka.Ujedno je mogue odrediti i ofset, kao i greku pune skale A/D konvertora korienjem SPIpotenciometra.Posle toga je mogue runo vriti A/D konverziju napona sa obrtnog potenciometra, uz kom- penzaciju ofseta koji je odreen u prethodnom koraku.

52

Slika 40b. Izgled elektrine eme projekta

Za komunikaciju PC raunara i mikrokontrolera koriste se alati unutar softvera mikroC:

USART Terminal (za komunikaciju preko serijskog porta),HID Terminal (za komunikaciju preko USB porta raunara). (HID je skraenica od Human Interface Device)

USB port se moe povezati direktno na mikrokontroler PIC18F4550, s obzirom da ovaj ima inte- grisani USB modul. Za dodatnu stabilizaciju DATA + i DATA- signala stavljeni su otpornici od 27 (videti [7] u poglavlju Literatura).Serijski port i mikrokontroler se spreu preko interfejsnog kola MAX232, koje slui za prilagoe- nje naponskih nivoa.Na Slici 41a se nalaze relevantni blokovi (integrisana kola, tasteri, prekidai, konektori) na is- korienoj ploici za realizaciju ovog projekta (Slika 41b).Kada se tasterom T2 zada START komanda, onda mikrokontroler vri jednu od tri operacije zavisno od toga koja je kombinacija zadata na prekidau DIPSW2:

00 merenje ofseta i greke pune skale preko SPI potenciometra,01 A/D konverzija napona izmerenog na potenciometru P1 sa bez softverskom kompenzacije ofseta i prikazom u USART terminalu programa mikroC,10 A/D konverzija napona izmerenog na potenciometru P1 sa softverskom kompenzacijom ofseta i prikazom u u USART terminalu programa mikroC.

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

53

Slika 41a. Raspored relevantnih blokova projekta na ploici

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

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

Redni brojmerenjaVUL (V)8-bitna re na ADC-u

10.00000000000

20.01900000001

30.15500001000

40.33400010010

50.62600100000

61.27601000001

71.63001010010

81.74501011001

92.10601101010

102.51110000000

112.53110000010

122.82410010000

133.01010011001

143.33010101001

153.74010111111

163.76511000000

173.90611000111

184.14111010011

194.44211100011

204.63211101100

214.74411110010

224.80511110101

234.91511110110

244.94211111100

255.00011111111

Tabela 9. Rezultati merenja napona ADC-aSa grafika na Slici 42a uoavamo da karakteristika ADC-a pomalo odstupa od linearnosti, a na- roito pri kraju opsega (oko 5V) kada dobija i kvadratnu (parabolinu) komponentu. Meutim, ova nelinearnost je izuzetno mala, tj. zanemarljiva je za mnoge praktine primene.Punom linijom je prikazana aproksimacija karakteristike A/D konvertora (ADC).Vrednost ofseta je reda nekoliko mV (u naem sluaju je 0000000010, to iznosi oko 9mV). Soft- verska kompenzacija ofseta se vri tako to se od izmerene vrednosti napona na obrtnom potenciometru (10-bitni podatak) oduzme vrednost izmerenog ofseta preko digitalnog SPI potenciometra (0000000010).S obzirom da je USART terminal u softveru mikroC projektovan tako da prima podatke do 8 bitova, dva bita najnie teine se odbacuju (videti listing programa u mikroC-u). To znai, nezavisno da li je izmerena vrednost napona 1111111100 ili 1111111111, USART terminal e primiti 8-bitni podatak 11111111.Na Slici 42b je prikazana ukupna greka A/D konvertora koja predstavlja superpoziciju greke pojaanja (linearna) i diferencijalnu nelinearnost A/D konvertora. Kao to moe da se primeti, ukupna greka (bez ofseta, koji je softverski komponzovan) ne prelazi vrednost LSB. (Detaljnije o grekama A/D konvertora je izloeno u 5. poglavlju ovog rada).

Napomena: Za merenje napona je korien digimer MASTECH MS8201H.

Slika 42b. Izmerena greka konverzije A/D konvertora

mikroC program za projekat

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

Slika 43a. Memorijska mapa mikrokontrolera

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

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 beskonanu petlju, pri emu tokom svakog obilaska petlje se proverava da li se neto promenilo (promena stanja na pinovima, prijem podatka sa serijskog porta i slino) i u skladu sa promenama se izvravaju odreene akcijeNadalje emo detaljno objasniti svaki blok algoritma prikazanog na Slici 43c.

Varijable i, jPORT A j e ulazniA 5:A2 - digitalni pinoviA 1:A0 - an alogni pi novi

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

Inicijal izacija USART m odula Inicijal izacija SP I m odula Inicijal izacija USB m odula

Da bi se koristili USART, SPI i USB modul mikrokontrolera (videti Sliku 21), neophodno je da se izvri njihova inicijalizacija. U okviru softvera mikroC postoje integrisane biblioteke koje omogu- avaju komunikaciju USART i SPI modula. Za aktiviranje pomenuta dva modula koriste se instrukcije Usart_Init() i SPI_Init (), respektivno. (Adresni prostor koji je rezervisan za inicijalizaciju: 060h-3FFh.)Kada je u pitanju USB modul, koristi se poseban potprogram koji se nalazi u fajlu USBdsc.c zahvaljujui kome je omogueno da se mikrokontroleru od strane raunara pristupa kao HID (Human Interface Device) ureaju, o emu je bilo rei na poetku ovog poglavlja.

Ako se prim i po datak sa serijskog por ta, isti tre bada se prosle di ka USB por tu

Definisano je da kada mikrokontroler primi podatak sa serijskog porta raunara, isti podatak treba da prosledi ka USB portu. Naime, podatak koji se poalje iz USART terminala prihvata USART modul mikrokontrolera i preko USB modula ga ka 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 prekidaaDIPSW2 (naredni korak) ili e preskoiti 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 prekidaa, a ako nije pritisnut pres- kae se procedura ispitivanja stanja DIPSW2 prekidaa i prelazi se na blok kanjenja (1s).(Adresni prostor koji je rezervisan za ove operacije je 060h-3FFh.)

Kada se ispituje stanje DIPSW2 prekidaa, 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), od- reuje vrednost ofseta (za stanje digitalnog potenciometra 00000000) i napona pune skale (za stanje digitalnog potenciometra 11111111). Oba podatka se alju preko USART modula mikrokontrolera ka USART terminalu.Ako je DIPSW2=01, mikrokontroler preko svog A/D konvertora meri napon na obrtnom poten- ciometru varijabla i, a zatim ga alje preko USART modula ka USART terminalu.Ako je DIPSW2=10, mikrokontroler preko svog A/D konvertora meri napon ofseta A/D konver- tora (preko digitalnog potenciometra) varijabla j , a zatim i na obrtnom potenciometru varijabla i. Kompenzacija ofseta se, dakle, 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 beskonane petlje nalazi se blok kanjenja kojim je definisano kanje- nje 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 na800ms, da bi se kao optimalno izabralo vreme od 1000ms.)

PRILOZI

77

78

79

80

81

82

43