155
Elektronski fakultet u Nišu Mikroprocesorski sistemi AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 mikrokontrolerom Mentor: Studenti: Prof.Dr Mile Stojčev Branko Stojić 10990 Milan Stojiljković 10991

AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

Embed Size (px)

Citation preview

Page 1: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

Elektronski fakultet u Nišu Mikroprocesorski sistemi

AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 mikrokontrolerom

Mentor: Studenti: Prof.Dr Mile Stojčev Branko Stojić 10990 Milan Stojiljković 10991

Page 2: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 1 -

Sadržaj: UVOD 3 1.AD KONVERZIJA 4 1.1. Uvod u a/d konvertore 4 1.2. Integrirajući a/d konvertor 6 1.3. Prateći a/d konvertor 11 1.4. Adc sa sukcesivnom aproksimacijom (sar) 13 1.5. Sigma-delta a/d konvertori 15 1.6. Fleš a/d konvertori 22 1.7. Prenosna funkcija a/d konvertora 25 1.8. Greške a/d konvertora 27 2.MIKROKONTROLER 30

2.1. Osnovne karakteristike mikrokontrolera 30 2.2. Kratak opis mikrokontrolera PIC16F877 34 2.3. Raspored no`ica 35 2.4. Generator takta (Oscilator) 36 2.5. Takt/instrukciski ciklus 38 2.6. Reset 40 2.7. Watchdog timer 44 2.8. Prekidi 44 2.9. U/I Portovi 46 2.10. A/D konverzija 56 2.11. Strujna,naponska i temperaturna ograni~enja 58 2.12. Organizacija memorije 59 2.13. Tajmeri 63 2.14. CCP moduli 63 2.15. Ostale periferne jedinice 64

3.HARDVER 66 3.1. Funkcionalna i blok šema 66 3.2. Ispravljački stepen sa stabilizacijom napona 67 3.3. AD konvertor ADC0804 68 3.4. Ulazni stepen AD konvertora ADC0804 86 3.5. Povezivanje kola za reset i oscilatora 86 3.6. Kontrolna logika 87 3.7. Povezivanje LCD-a 89 3.8. Fizički izgled štampanih pločica 93 3.9. Spisak korišćenih komponenata 95

Page 3: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 2 -

4. SOFTVER 97 4.1. Korišćeni softver; MPLAB, Hi - Tech, Ic – Prog 97 4.2. Listing programa; u C-u, asembleru, heksadecimalnog kôda 116

5. TESTIRANJE AD KONVERTORA 141

6. DODATK 1 149

- Specifikacije pojedinih komponenti

7. DODATK 2 153 - AllPic Programator

8. DODATK 3 156

- Izgled realizovanog uređaja

9. AUTORI PROJEKTA 157

11. KORIŠĆENA LITERATURA 158

Page 4: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 3 -

UVOD

Kao prvo, autori ovog projekta želeli bi da se zahvale Elektronskom fakultetu u Nišu o posebno Prof.Dr Miletu Stojčevu koji su omogućili realizaciju ovog projekta, kao i na ukazanoj mogućnosti proširivanja i sticanja znanja iz oblasti koje su pokrivene ovim projektom.

U ovom projektu autori su izveli praktičnu realizaciju A/D konvertora sa integrisanim kolom ADC0804, koje je kontrolisano mikrokontrlerom PIC16F877, gde se rezultat A/D konverzije prikazuje na LCD-u. Takođe u ovom radu koji je sastavni deo ovog projekta data je teorijska osnova kao i konkretna objašnjenja vezana za samu realizaciju.

U prvom poglavlju obrađene su teorijske osnove A/D konverzije; bitni parametri tog procesa kao i principe rada najčešće korišćenih A/D konvertora: integrirajući ADC, prateći ADC, ADC sa sukcesivnom aproksimacijom, sigma-delata ADC, fleš ADC. Gde nam je od posebnog interesa A/D konvertor sa sukcesivnom aproksimacijom, s obzirom da integrisano kolo ADC0804 spada u kategoriju istih

U drugom poglavlju opisan je mikrokontroler PIC16F877: arhitektura, mogućnosti i specifikacije.

Treće poglavlje se bavi konkretnom realizacijom hardvera; prikazani su električna šema i izgled štampane ploče projekta sa objašnjenjima uloga i funkcija komponenata u kolu, kao način povezivanja i kontrolna logika između njih samih.

U četvrtom poglavlju prikazan je softver koji je korišćen za pisanje programa i za programiranje mikrokontrolera, takođe je prikazan i listing programa u C-u, asembleru, kao i izgled heksadecimalnog kôda.

Peto poglavlje je posvećeno testiranju realizovanog AD konvertora. U dodatku 1 priložene su fizičke karakteristike korišćenih komponenata. Dodatak 2 posvećen je programatoru. U dodatku 3 prikazan je fizički izgled realizovanog uređaja. Pri kraju rada je dat spisak literature koja je korišćena.

Page 5: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 4 -

1. ANALOGNO-DIGITALNA KONVERZIJA 1.1. UVOD U A/D KONVERTORE

Analogno-digitalna konverzija predstavlja generisanje digitalnog kodovanog broja koji odgovara analognom ulaznom signalu. Elektronsko kolo koje vrši kon-verziju naziva se analogno-digitalni konvertor, ili skraćeno A/D konvertor (ADC).

Kod savremenih tehnika merenja, dominantnu grupu instrumenata i merne opreme, čine digitalni merni instrumenti. Oni često ne samo da poseduju napred-nije performanse u odnosu na odgovarajuće analogne instrumente (brzina, propusni opseg, pouzdanost, otpornost na smetnje, minijaturizacija, itd.), već imaju i znatno nižu cenu, a omogućavaju i veoma jednostavnu automatizaciju procesa merenja. Nažalost, veličine koje je potrebno dovesti na ulaze u merni sistem, samo su u veoma malom broju slučajeva, po svojoj prirodi digitalne. Pa čak i tada, često je potrebno analizirati parametre ovih digitalnih veličina na najnižem, fizičkom nivou, naročito u postupcima overe i atestiranja sistema ili dijagnostike, kod neregularnog rada usled otkaza ili ispada. Sa stanovišta merenja, jedini način da se ovakvi signali ispravno okarakterišu i u tim situacijama, jeste da se tretiraju kao analogne veličine i opišu odgovarajućim analognim parametrima.

Elementaran analogno-digitalni konvertor je naponski komparator. Ulazni analogni signal -Vul, komparator konvertuje u jednobitnu digitalnu informaciju D=d0, tako da d0=0 označava da je Vul<V1, a d0=1 da je Vul>V1, gde je V1 unapred određen naponski prag. Ako je potrebno da se veličina analognog napona odredi sa većom preciznošću i predstavi u digitalnom obliku, potrebno je porediti ulazni napon sa više naponskih pragova. Šema ovakvog jednog konvertora prikazana je na Slici 1.1.

Sl.1.1. Principijelna šema A/D konvertora

Na Slici 1.1. je prikazana principijelna šema A/D konvertora koja sadrži m komparatora

i koder sa m ulaza i n izlaza. Ako se naponi Vi rasporede ekvidistantno unutar naponskog opsega od 0 do Vps, na osnovu izlaza kom-paratora ki može da se odredi u kom se naponskom opsegu nalazi ulazni signal Vul. Digitalnu informaciju sa komparatora koder koduje u digitalni broj izabranog binarnog brojnog sistema.

Na Slici 1.2. prikazana je idealna karakteristika prenosa A/D konvertora u slučaju da postoji 8 nivoa komparacije ulaznog napona.

Page 6: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 5 -

Sl.1.2. Karakteristika prenosa idealnog A/D konvertora

Ako se ulazni napon linearno menja od 0 do napona pune skale Vps , izlazna digitalna

informacija može da ima m + 1 = 9 diskretnih stanja: 0 za Vul<V1 , 1 za V1<Vul<V2, 2 za V2<Vul<V3 , ... 7 za V7<Vul<V8 i ''PREKORAČENJE'' ako je ulazni napon Vul>V8.

Karakteristika prenosa na Slici 1.2. pretpostavlja ekvidistantno raspoređene napone Vi , idealne komparatore bez histerezisa i nulto vreme propagacije signala kroz komparatore i koder. Realna karakteristika prenosa će odstupati od idealne i mogu se definisati statičke i dinamičke greške koje unosi realan A/D konvertor.

Statičke karakteristike A/D konvertora se definišu tako što se definišu apsolutna linearnost, greška (ofset) nule, greška pune skale, greška pojačanja i diferencijalna linearnost. U slučaju velike diferencijalne nelinearnosti, kada je narušena monotonost karakteristike prenosa, za A/D konvertore se češće koristi termin "izgubljen kod" (missed code), umesto nemonotonost.

Pošto je izlazna informacija A/D konvertora digitalni broj, dinamičke karakte-ristike A/D kovertora se svode na specificiranje potrebnog vremena da se od trenutka početka konverzije na izlazu A/D konvertora postavi digitalni ekvivalent ulaznog analognog signala. Ovo vreme se naziva vreme konverzije.

Rezolucija, odnosno, broj nivoa kvantizacije ulaznog signala se najčešće definiše brojem bita izlazne digitalne informacije, ako je primenjen prirodni binarni kod, ili brojem decimalnih cifara, za A/D konvertore koji generišu izlaznu informaciju u BCD kodu. Povećanje rezolucije A/D konvertora sa Slike 1.1. se može postići jedino povećanjem broja naponskih nivoa, odnosno, brojem komparatora. Za povećanje rezolucije za samo jedan bit, potrebno je duplirati broj komparatora i srazmerno proširiti kombinacionu mrežu kodera. Tako je za 8-bitni konvertor potrebno 256 komparatora. Pošto je u praksi potrebno obavljati A/D konverziju i sa mnogo većom rezolucijom, direktna konverzija sa 2n komparatora i kodne mreže postaje neekonomična zbog velikog broja kompo-nenti. U cilju smanjenja broja sastavnih elektronskih kola, primenjuju se različite metode za A/D konverziju.

Uglavnom se A/D konvertori klasifikuju po načinu ili brzini konverzije. Najčešće se proizvode i koriste tri klase A/D konvertora:

Page 7: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 6 -

• Vrlo brzi A/D konvertori, formirani korišćenjem paralelnih komparatora koji se jos nazivaju i direktni ili fleš A/D konvertori.

• Konvertori srednje brzine, koji napon na ulazu porede sa referentnim naponom generisanim D/A konvertorom.

• Konvertori male brzine, koji najčešće proces konverzije napona u digitalni broj obavljaju merenjem vremena za koje napon, koji raste linearno sa vremenom, dostigne vrednost ulaznog napona. Ovakvi konvertori se još nazivaju i serijski A/D konvertori , A/D konvertori sa vremenskim ekviva-lentom, ili integratorski A/D konvertori.

1.2. INTEGRIRAJUĆI A/D KONVERTOR

Integrirajući A/D konvertori nazivaju se još i konvertori sa vremenskim ekvivalentom, jer se A/D konverzija odvija kroz proces kvantizacije vremenskog intervala koji predstavlja ekvivalent naponu na ulazu u konvertor.

Kod startnog i pratećeg konvertora etaloni su iste prirode kao i merena veličina, tako da je njen digitalni ekvivalent iznalažen direktnim brojanjem kvantizacionih nivoa. Umesto stepenastog referentnog napona sa kojim se poredi analogni odmerak signala, može se upotrebiti i kontinualni monotono opadajući ili rastući napon. Pošto je i taj napon analogni, ne možemo pomoću njega ostvariti direktnu kvantizaciju ulaznog signala, ali ako poznajemo vremensku zavisnost monotono promenljivog napona kvantizacije može se izvesti pomoću pogodno odabranog etalona vremena.

Kod ovog tipa A/D konvertora, konverzija se odvija u dva koraka:

• Transformacija ulaznog napona u vremenski interval • Kvantizacija dobijenog vremenskog intervala.

Vremenski interval se dobija sa inegratora koji je prikazan na Slici 1.3.

Sl.1.3. Integrator

Napon na kondenzatoru je jednak:

Page 8: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 7 -

Integrirajući A/D konvertori mogu se koristiti za konverziju podataka sa visokom tačnošću i malom brzinom. Ovi A/D konvertori su spori jer su signali sporopromenljivi. Greška ofseta kod ovih konvertora je mala i mogu imati visoku linearnost.

Što se tiče upotrebe ovih konvertora , oni imaju široku upotrebu u mernim instrumentima za merenje napona i struje. Osetljivi su na promene temperature. Imamo dva tipa integrirajućih A/D konvertora:

• Konvertor sa jednostrukim nagibom • Konvertor sa dvostrukim nagibom

Konvertori sa jednostrukim nagibom

Konvertor sa jednostrukim nagibom transformiše ulazni signal u vreme. Da bi se ostvarila linearna zavisnost između veličine ulaznog napona i trajanja vremenskog intervala, referentni napon VR treba da se menja linearno sa vremenom. Da bi se to postiglo ulazni napon se generiše pomoću integratora. Na Slici 1.4. prikazana je šema A/D konvertora sa jednostrukim nagibom sa strujnim izvorom. Integrator čine kondenzator C i tranzistor TR1. Tranzistor TR1 upo-trebljen je kao prekidač preko koga se vrši resetovanje, odnosno pražnjenje kondenzatora C. Pre svakog ciklusa konverzije potrebno je resetovati kondenzator kao i brojač, što se postiže resetovanjem D flipflopa i pri tome izlaz Q kontrolnog kola obezbeđuje nizak napon na bazi tranzistora TR1, pa tranzistor odlazi u zasićenje i na taj način prazni kondenzator C.

Sl.1.4. Šema A/D konvertora sa jednostrukim nagibom sa strujnim izvorom

Page 9: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 8 -

Sl.1.5. Vremenski dijagram signala A/D konvertora sa jednostrukim nagibom

Ciklus konverzije započinje setovanjem kontrolnog flipflopa. Visoki napon na izlazu Q blokira tranzistor TR2, pa kondenzator C počinje da se puni konstantnom strujom tranzistora TR1. Zahvaljujući tome napon na kondenzatoru VR raste linearno sa vremenom. Ovaj napon se dovodi na komparator radi poređenja sa analognim podatkom VA. Sve dok je VA > VR na komparatorskom izlazu k postoji visok nivo napona. Brojanje taktnih impulsa traje sve dotle, dok napon VR ne dostigne vrednost VA. Kada se izjednače ta dva napona komparator se prebacuje u stanje ligičke 0, čime je završen konverzacioni ciklus, a krajnji rezultat brojanja predstavlja digitalni ekvivalent ulazne analogne vrednosti. Prema tome, efektivno vreme konverzije započinje setovanjem kontrolnog flipflopa, a završava se izjednačavanjem ulaznog i referentnog napona. Ciklusno vreme konverzije uklju-čuje i vreme pražnjenja kondenzatora C. Vremenski dijagrami signala konvertora prikazanog na Slici 1.4. prikazani su na Slici 1.5.

Struja punjenja kondenzatora C je konstantna i ona iznosi:

, gde je VZ radni napon Zenerove diode. Vremenska zavisnost referentnog napona data je izrazom:

Porast referentnog napona ograničen je uslovom:

, odakle se nalazi vremenski ekvivalent analogne vrednosti:

Page 10: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 9 -

Ako se ovaj vremenski interval kvantuje periodom taktnog generatora TP, nalazi se da on sadrži N perioda.

Iz jednakosti:

, nalazi se da je:

Gornji izraz pokazuje da je analogni napon VA proporcionalan broju impulsa N koji je odbrojan na binarnom brojaču, što znači da je prenosna karakteristika konvertora linearna.

Opisani uređaj ponekad se naziva A/D konvertor sa širinskom modulacijom. To upravo znači da veličina analognog signala određuje vreme trajanja, odnosno širinu impulsa u toku koga se odvija proces brojanja. Posmatrano sa ovog stanovišta opisana konverzija je naročito pogodna za prenos informacija, pri čemu je dovoljno da se prenose samo start i stop impulsi vremenskih ekviva-lenata Ti.

Konvertori sa dvostrukim nagibom

Tačnost A/D konvertora sa vremenskom kvantizacijom može da se poveća korišćenjem principa konverzije pomoću dvostrukog nagiba. Takav konvertor prikazan je na Slici 1.6.

Sl.1.6. Blok šema A/D konvertora sa dvostrukim nagibom

Integrator je izveden pomoću operacionog pojačavača OP. Start-komandom preko analognog prekidača AP zatvara se prekidač P1, a otvara P2. Napon na izlazu operacionog

Page 11: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 10 -

pojačavača počinje linearno da raste i čim pređe potencijal nule komparator K otvara I kolo za prolaz taktnih impulsa PT. Ovi impulsi pobuđuju binarni brojač sve dotle, dok svi njegovi stepeni ne pređu iz resetovanog u setovano stanje.

Na Slici 1.7. predstavljen je vremenski dijagram signala koji se pojavljuju u A/D konvertoru prikazanom na Slici 1.6.

Sl.1.7. Vremenski dijagram signala A/D konvertora sa dvostrukim nagibom

Vreme TA, za koje će brojač stići od 0 do svoje maksimalne vrednosti određeno je kapacitetom brojača i učestanošću taktnog generatora. U toku tog vremena vrši se integracioni proces pod dejstvom ulaznog analognog napona VA, usled čega se na izlazu operacionog pojačavača formira linearni napon:

Po isteku vremena TA ništa se nije izmenilo u pogledu dovođenja taktnih impulsa na brojač. Prvi impuls koji nailazi posle pojavljivanja maksimalne vrednosti brojača, vraća brojač ponovo u početno stanje, a kao posledica toga prebacuje se i analogni prekidač AP u drugi položaj. Prema tome, na operacionom pojačavaču započinje integracija pod dejstvom referentnog napona VR tako da se sada na njegovom izlazu formira opadajući linearni napon:

Page 12: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 11 -

U toku formiranja ovog napona brojač ponovo odbrojava impulse sve dotle dok napon vVR(t) ne dostigne nulti potencijal, kada komparator k sprečava dalje pobuđivanje brojača. Prema tome, iz uslova vVR(TR)=0 nalazi se vremenski ekvivalent analognog napona:

Ako se ovo vreme kvantuje periodom generatora TP, nalazi se da je:

, gde je N broj primljenih impulsa u brojaču. Vidi se da je digitalni ekvivalent ulazne analogne vrednosti izražen brojem impulsa koje brojač primi u toku druge integracije. Primećujemo da kod A/D konvertora sa dvostrukim nagibom, za razliku od A/D konvertora sa jednostrukim nagibom, vremenska konstanta RC nema uticaja na proces konverzije, pa je time eliminisana i greška koju ona unosi. Šta više, konverzija ne zavisi ni od stabilnosti etalona tj. periode taktnog generatora, s obzirom da se i vreme TA meri istim etalonom. Prema tome, A/D konvertor sa dvostrukim nagibom odlikuje se velikom tačnošću, ali i vrlo malom brzinom konverzije. To je sasvim razumljivo kad se ima u vidu da ciklus konverzije obuhvata i vremenski period TA, koji je utoliko veći što je rezolucioni napon konvertora manji.

1.3. PRATEĆI A/D KONVERTOR

Prateći A/D konvertor koristi D/A konvertor kao referencu za formiranje digitalnog ekvivalenta analognog signala. Logička šema pratećeg A/D konvertora prikazana je na Slici 1.8.

Ovaj tip A/D konvertora je veoma jednostavne konstrukcije. Sastoji se od obostranog brojača, D/A konvertora i komparatora. Brojač se taktuje signalom TAKT, koji se može zabraniti signalom GATE, ako postavimo signal u stanje logičke nule GATE=0. Komparator poredi ulazni napon Vul sa izlaznim naponom iz D/A konvertora Viz. Ako je Vul > Viz izlaz komparatora je k=1, brojač broji unapred, povećava se sadržaj obostranog brojača, pa prema tome i napon Viz raste. Kada postane Vul < Viz, menja se stanje izlaza komparatora i brojač počinje da broji unazad. Ako Vul ne menja vrednost i ako je histerezis komparatora manji od 1 LSB, već nakon prvog taktnog impulsa napon Viz će ponovo postati manji od Vul, komparator će da promeni stanje, brojač će da promeni smer brojanja i napon Viz ponovo raste. Sve dok Vul ne promeni vrednost, brojač broji po jedan impuls napred, po jedan nazad, a napon Viz osciluje oko napona Vul za 1 LSB.

Page 13: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 12 -

Sl.1.8. Prateći A/D konvertor

Vremenski dijagram promene napona Viz u funkciji promene ulaznog napona Vul prikazan je na Slici 1.9.

Sl.1.9. Vremenski dijagram napona pratećeg A/D konvertora

Za vreme dok je signal GATE na nultom logičkom nivou na brojač ne stižu taktni

impulsi, brojač ne menja sadržaj tako da i napon na izlazu D/A konvertora ne menja vrednost. Kada je GATE=1, brojač u zavisnosti od logičkog nivoa izlaza komparatora broji unapred ili unazad, a napon na izlazu D/A konvertora teži da dostigne Vul i da prati promene Vul. Brzina promene napona Viz zavisi od periode taktnih impulsa tc. Minimalna vrednost tc je ograničena vremenom postavljanja D/A konvertora i kašnjenjem komparatora. Ako je promena napona Vul brža od maksimalne brzine promene Viz, izlazni digitalni kod, a time i napon Viz će da kasni u odnosu na ulazni napon. Pošto promenom učestanosti signala TAKT može da se menja brzina promene napona Viz, prateći A/D konvertor može da se koristi kao specifičan digitalno upravljiv filtar.

Sa vremenskog dijagrama na Slici 1.9. vidi se da je, nakon što je u trenutku t2 logički nivo signala GATE postao GATE=0, izlazni napon je zadržao vrednost koju je imao u t=t2. Ovim je ostvarena funkcija analogno-digitalnog prati/pamti kola. Informacija o veličini napona u trenutku prebacivanja u režim "pamti" (t2) je raspoloživa kako u digitalnom, tako i u analognom obliku i može ostati zapamćena neograničeno dugo, za razliku od analognih prati/pamti kola.

Page 14: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 13 -

1.4. ADC SA SUKCESCIVNOM APROKSIMACIJOM (SAR)

A/D konvertori sa sukcesivnim aproksimacijama (SAR ADC) imaju malu potrošnju i zauzimaju relativno malo mesta na silicijumskoj pločici. Ova kombinacija performansi ih čini idealnim za veliki broj aplikacija kao što su: instrumenti koji su baterijski napajani, industrijska kontrola, akvizicija podataka i mnoge druge.

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

Sl.1.10. A/D konvertor sa sukcesivnim aproksimacijama

Maksimalni ulazni napon koji se može priključiti na konvertor je Vulmax i on je jednak naponu pune skale Vps tj. Vulmax = Vps . Maksimalni izlazni napon iz D/A konvertora Viz je za 1 LSB manji od napona Vps. Pod ovakvim uslovima D/A konvertor će, kad je MSB bit postavljen na jedinicu (Qn-1 =1), a svi ostali na nulu, generisati napon Viz = Vps/ 2. Sledeći bit (Qn-2=1) ima težinu Vps / , odnosno, pošto se radi o binarnom D/A konvertoru, svaki sledeći bit ima težinu upola manju od predhodnog.

Konverzija počinje tako što, nakon priključenog Vul, kontrolno logičko kolo postavi logičku jedinicu u bit najveće težine registra sukcesivnih aproksimacija (Qn-1). D/A konvertor generiše napon Viz = Vps / 2 koji se poredi sa Vul. Ako je Vul > Vps / 2, MSB bit digitalnog ekvivalenta napona Vul je jedan, a ako je Vul < Vps / 2, tada taj bit treba da bude nula. Kontrolna logika, na osnovu izlaza komparatora resetuje (ako je k=0), ili ne resetuje (ako je k=1) MSB flipflop u registru sukcesivnih aproksimacija, čime je definisan bit najveće vrednosti Qn-1 izlazne informacije, a zatim postavlja drugi bit po težini Qn-2 na logičku jedinicu. Komparator poredi novu vrednost Viz (koja je Vps / ili 3Vps / u zavisnosti dobijenog u poređenju sa bitom najveće vrednosti) sa Vul, a zatim kontrolna logika, na osnovu izlaza komparatora resetuje ili ne flipflop za taj bit (Qn-2) i definisana je vrednost bita drugog po težini. Kontrolna logika postavlja sledeći bit koji ima težinu upola manju od predhodnog na logičku jedinicu. Proces poređenja i postavljanja narednih flipflopova se nastavlja sve do bita najmanje težine Q0. U zavisnosti od logičkog nivoa komparatora flipflop bita najmanje težine se resetuje ili ostaje logička jedinica. Time je konverzija završena.

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

Page 15: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 14 -

Sl.1.11. Promena napona D/A konvertora prilikom A/D konverzije

Na slici 1.11. je pretpostavljen ulazni napon 11/16 > Vul/Vps >5/8. Konverzija počinje

postavljanjem koda "1000" u SAR (registar sukcesivnih aproksimacija). Izlazni napon D/A konvertora se postavlja na Viz = Vps / 2. Pošto je Vul > Viz, na osnovu k=1, u trenutku t1 kontrolna logika ne resetuje Q3, čime je određen MSB bit izlazne informacije, postavlja Q2=1, tako da je kod upisan u registar sukcesivnih aproksimacija (SAR) "1100", a izlazni napon D/A konvertora se postavlja na Viz=3 / Vps. Sada je Vul < Viz, kontrolna logika u trenutku t2, na osnovu k=0 resetuje Q2 i bezuslovno postavlja Q1=1. Ovim je određena i druga cifra izlazne digitalne informacije. SAR je postavljen u stanje "1010", a Viz na Viz= 5Vps/8. Pošto je Vul > Viz, k=1 zabranjuje da kontrolna logika resetuje Q1, u trenutku t3 postavlja se Q0=1, tako da je u SAR registru stanje "1011". U trenutku t se na osnovu k=0 resetuje Q0, tako da je konačan rezultat konverzije koji je ostao u registru sukcesivnih aproksimacija Q3Q2Q1Q0="1010", Što je najbliži binarni broj koji odgovara ulaznom naponu.

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 ADK) 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 kon-vertora. • Vreme između dva susedna taktna impulsa treba da je dovoljno dugačko, kako bi

isteklo vreme postavljanja D/A konvertora, kašnjenja kroz kom-parator i kašnjenja kroz kontrolnu logiku.

• Korišćeni n-bitni D/A konvertor mora imati monotono rastuću karakteristiku prenosa (diferencijalnu linearnost bolju od ±0.5 LSB).

• Flipflopovi registra sukcesivnih aproksimacija (SAR registra) treba da imaju mogućnost pojedinačnog postavljanja i resetovanja.

Page 16: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 15 -

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

Brzina SAR ADK je ograničena sa:

• Vremenom smirivanja D/A konvertora • Komparatorom, koji za određeno vreme mora da detektuje male razlike između

napona Vul i Viz • Vremenom izvršavanja logičkih operacija.

Maksimalno smirivanje D/A konvertora je najčešće određeno smirivanjem MSB-a. Linearnost celokupnog A/D konvertora je limitirana linearnošću D/A konvertora. Zbog toga, SAR ADK-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.

Najvažnije prednosti A/D konvertora sa sukcesivnim aproksimacijama su mala potrošnja, visoka rezolucija, tačnost i to što zauzimaju malo mesta na sili-cijumskoj 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.

1.5. SIGMA-DELTA A/D KONVERTORI

Sigma-delta konvertori se karakterišu visokom rezolucijom, tačnošću, vi-sokom integrabilnošću i niskom cenom. Zbog navedenih osobina oni su veoma zastupljeni u komercijalnim aplikacijama kao sto su mobilna telefonija, ADSL tehnologija i mnoge druge.

U samoj realizaciji možemo uočiti dve strane ovog konvertora:

• analognu stranu (jednostavna, čini je 1-bitni A/D konvertor) • digitalnu stranu (kompleksnija).

Blok šema sigma – delta A/D konvertora prikazana je na Slici 1.12.

Page 17: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 16 -

Sl.1.12. Blok šema sigma – delta A/D konvertora

Radi lakšeg razumevanja principa rada i strukture sigma-delta konvertora tekst je podeljen na sledeće delove:

• oversampling • delta modulaciju • uobličavanje spektra šuma (noise shaping) • digitalno filtriranje • decimaciju.

OVERSAMPLING (“prekomerno odmeravanje”)

Po teoremi o odabiranju, brzina odabiranja F mora biti barem dva puta veća od širine opsega ulaznog signala. Kada je Fs > 2Fb, to se zove oversampling. Na primer, neka je na ulaz običnog višebitnog A/D konvertora doveden sinusni signal koji se odabira frekvencijom koja je dva puta veća od njegovog opsega. Kada signal prođe kroz konvertor, na izlazu će se za rezultat dobiti koristan signal i mnoštvo nasumičnog šuma. Ovo je šum kvantizacije, koji je rezultat sledećeg: ulazni signal A/D konvertora je kontinualni signal sa beskonačnim brojem mogućih stanja, a digitalni izlaz je diskretna f-ja čiji je broj različitih stanja određen rezolucijom konvertora. Prema tome, AD konverzija gubi određen deo informacija i uvodi smetnje u signal. Amplituda ove greške je nasumična, sa vrednostima do ±LSB. Na Slici 1.13. prikazan je koristan signal i šum u frekvencijskom domenu.

Sl.1.13. Signal na izlazu konvertora u frekvencijskom domenu kada je Fs=2Fb

Page 18: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 17 -

Ako se posmatra isti ulazni signal,ali se frekvencija odabiranja poveća k puta, na kF, što je prikazano na Slici 1.14, vidi se da se nivo šuma smanjio, a energija šuma se rasporedila na veći frekvencijski opseg (pri tom je odnos signal/šum ostao isti).

Propuštanjem ovakvog signala kroz digitalni filtar dobijaju se mnogo bolji rezultati nego što bi se dobili kada ne bi koristili oversampling. Prikaz signala propuštenog kroz digitalni filtar dat je na Slici 1.15.

Sl.1.14. Signal na izlazu konvertora kada je brzina odabiranja povećana k puta

Sl.1.15. Odziv digitalnog filtra nakon oversampling-a DELTA MODULACIJA

U osnovi ideje delta modulacije je digitalni prenos razlike susednih odbiraka analognog ulaznog signala, čime se smanjuje količina prenesenih podataka. Za demodulaciju koristi se integrator i niskopropusni filtar koji odstranjuje šum kvantizacije. Na Slikama 1.16 i 1.17 prikazana je blok šema delta modulacije i demodulacije:

Page 19: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 18 -

Sl.1.16. Delta modulacija

Sl.1.17. Demodulacija

UOBLIČAVANJE SPEKTRA ŠUMA (noise shaping)

Ako zanemarimo nesavršenost realnih komponenti pri realizaciji sigma delta modulatora, ukupna greška je jednaka grešci kvantizacije. Blok šema jednog takvog sigma delta modulatora prikazana je na Slici 1.18.

Sl.1.18. Blok šema sigma delta modulatora sa niskopropusnim filtrom

Signal Y(s), kad imamo da je N(s)=0, jednak je:

, odakle dobijamo da je prenosna funkcija modulatora jednaka:

Page 20: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 19 -

, dobijamo da je to za niskopropusni filtar.

Ako želimo da izrazimo prenosnu karakteristiku signala šuma, kada je X(s)=0, imamo:

, odakle dobijamo da je prenosna karakteristika jednaka:

; premat tome, dobijamo da je to visokopropusni filtar.

Dakle, zaključujemo kako se sigma delta modulator ponaša kao nisko-propusni filtar za signal, a kao visokopropusni filtar za šum. Na taj način je većina šuma "pomerena" na visoke frekvencije. To predstavlja uobličavanje spektra šuma. Karakteristika spektra korisnog signala i šuma prikazana je na Slici 1.19.

Sl.1.19. Karakteristika korisnog signala i signala šuma

Ako sada primenimo digitalni filtar, on će otkloniti više šuma nego što bi se otklonilo primenom samog oversamplinga. Na Slici 1.20. prikazan je signal zajedno sa šumom i označen je deo koji izdvajamo uz pomoć digitalnog filtra. Izdvajamo samo koristan signal.

Page 21: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 20 -

Sl.1.20. Izdvajanje korisnog signala uz pomoć digitalnog filtra

Primer jednog sigma-delta modulatora prvog reda prikazan je na sledećoj Slici 1.21.

Sl.1.21. Blok šema sigma-delta modulatora prvog reda

Sigma-delta modulator se sastoji iz jednog diferencijalnog pojačavača, integratora i komparatora sa povratnom spregom koja sadrži 1-bitni D/A konvertor. Ovaj D/A konvertor služi za održavanje srednje vrednosti izlaza integratora blizu referentnog nivoa komparatora. Na izlazu modulatora formira se povorka "jedinica" i "nula". Gustina "jedinica" na izlazu proporcionalna je ulaznom signalu. Povećanjem amplitude ulaznog signala komparator generiše veći broj "jedinica" i obrnuto, smanjivanjem amplitude ulaznog napona komparator gene-riše manji broj "jedinica".

Modulator prvog reda obezbeđuje poboljšanja odnosa signal/šum od 9dB za svako dupliranje frekvencije odabiranja. Može se postići uobličavanje spektra šuma koristeći više od jedne faze integracije i sumiranja u sigma-delta modulatoru. Na primer, sigma-delta modulator drugog reda obezbeđuje poboljšanja odnosa signal/šum od 15dB za svako udvostručavanje frekvencije odabiranja. Principijelna šema jednog sigma-delta modulatora trećeg reda prikazana je na Slici 1.22.

Page 22: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 21 -

Sl.1.22. Principijelna šema sigma-delta modulatora trećeg reda

DIGITALNO FILTRIRANJE

Digitalni NF filtar je sastavni deo sigma-delta konvertora. Uloga digitalnog filtra je sledeća:

• usrednjava povorku 1-bitnih podataka • poboljšava rezoluciju A/D konvertora • uklanja šum kvantizacije koji je izvan opsega koji nas interesuje (određuje širinu

opsega signala) • određuje vreme smirivanja

DECIMACIJA

Decimacija, koja se još zove i downsampling, je proces odbacivanja viška odabiranih

podataka bez gubitka informacije. Ona se karakteriše faktorom decimacije M koji može biti bilo koji ceo broj i predstavlja odnos ulaznog i izlaznog opsega. Svrha decimacije jeste smanjivanje frekvencije izlaznog signala na upotrebljivu vrednost. Smanjivanje opsega kao rezultat daje i jeftiniju imple-mentaciju. Primer decimacije dat je na Slici 1.23.

Sigma-delta konvertori svoj rad temelje na tri pojma:

• oversampling • uobličavanje spektra šuma • decimacija

Page 23: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 22 -

Sl.1.23. Primer decimacije

Zbog toga sigma-delta konvertori imaju veoma visoku rezoluciju i tačnost, ali i malu brzinu. Neke od osnovnih karakteristika sigma-delta konvertora su:

• Visoka izlazna rezolucija (2 bita) (Kod sigma-delta konvertora je povećana rezolucija na račun smanjenja brzine).

• Prednost ovih konvertora je što ne zahtevaju dodatna kola ili kalibraciju, čak i kad imamo visoku rezoluciju.

• Visoka tačnost. • Standardni sigma-delta A/D konvertori koji se uglavnom koriste u digitalnim audio

aplikacijama, imaju ograničenu širinu propusnog opsega na 22kHz. U novije vreme neki konvertori su dostigli širinu propusnog opsega od 1MHz do 2 MHz sa 12 do 16 bita rezolucije. Od najbržih sigma-delta A/D kon-vertora se ne očekuje da imaju značajno širi propusni opseg od nekoliko MHz u bliskoj budućnosti.

• Zauzimaju mnogo mesta na čipu (najviše mesta zauzimaju digitalni filtar i decimator). • Ograničenje ove strukture je i kašnjenje koje je znatno veće nego kod drugih tipova

A/D konvertora. Zbog oversemplinga i kašnjenja sigma-delta A/D konvertori se retko sreću u aplikacijama u kojima se koristi multipleks.

1.6. FLEŠ A/D KONVERTORI

Fleš A/D konvertori (Flash ADC) ili kako ih još zovu paralelni A/D konvertori spadaju u klasu najbržih A/D konvertora. Najbrži način da konvertujemo analogni oblik napona u digitalni oblik ostvaruje se pomoću ovog A/D konvertora. Ovi konvertori su idealni za aplikacije koje zahtevaju veliku širinu opsega.

Fleš A/D konvertori troše puno energije, imaju relativno nisku rezoluciju i mogu biti veoma skupi, što ih ograničava na korišćenje u aplikacijama sa visokim frekvencijama. Koriste se za akviziciju podataka, satelitske komunikacije, radarsku obradu, digitalne osciloskope i visokonaponske disk drajvere.

Fleš A/D konvertor je sačinjen od veoma brzih kaskadnih komparatora. Svaki komparator predstavlja 1LSB, a izlazni kod se može odrediti u jednom kompara-torskom kolu. Osnovna realizacija fleš A/D kovertora prikazana je na Slici 1.24.

Page 24: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 23 -

Sl.1.24. Osnovna blok šema fleš A/D konvertora

Realizacija fleš A/D konvertora sa termometarskim kodom prikazana je na Slici 1.25. Za jedan N-bitni konvertor potrebno je da kolo sadrži 2N-1 kom-paratora. Otpornički razdelnik sa 2N otpornika obezbeđuje referentni napon. Referentni napon za svaki komparator je za jedan LSB veći od referentnog napona za komparator koji je odmah ispod. Svaki komparator daje "1" kada je njegov analogni ulazni napon veći od referentnog napona dovedenog na njega. U suprotnom, izlaz je "0". Prema tome, ako je analogni ulaz između VX i VX5, komparatori X1 do X daju jedinice, a preostali komparatori daju nule. Ovo je poznato kao termometarsko enkodiranje, a tako je dobilo naziv jer je slično živinom termometru kod koga živin stub uvek raste do odgovarajuće temperature i iznad te vrednosti živa ne ide. Termometarski kod je zatim dekodiran u odgovarajući izlazni kod.

Page 25: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 24 -

Sl.1.25. Fleš A/D kovertor sa termometarskim kodom

Što se komparatora tiče oni su tipično kaskada širokopojasnih stepena niskih pojačanja. Ovo pojačanje je malo, jer je na visokim frekvencijama teško postići i širok opseg i veliko pojačanje. Dizajnirani su za nizak napon ofseta, takav da je ulazni ofset svakog komparatora manji od LSB-a A/D konvertora. U suprotnom, komparatorski ofset bi mogao lažno navesti komparator, pri čemu digitalni kod ne bi reprezentovao termometarski kod (greška na najniža 2 bita). Leč sa osve-žavanjem na svakom komparatorskom izlazu čuva rezultat. Leč ima pozitivnu povratnu spregu, tako da je krajnje stanje zasigurno ili "1" ili "0".

Problemi kod realnih fleš A/D konvertora

Kao i kod svih ostalih realnih komponenata i kod realnih fleš (flash) A/D konvertora se javljaju problemi. Najčešće probleme ćemo ukratko predstaviti.

U normalnim uslovima komparatorski izlaz će biti termometarski kod kao što je na primer "00011111", a greške mogu izazvati izlazni kod kao što je na primer "00010111". Ovaj izlaz nulte sekvence se naziva ISKRA (sparkle). Ovo može biti izazvano nesavršenošću ulaznog nagomilavanja ili vremenskom neusaglašenošću komparatora. Moderni konvertori kao što je MAX10 uvrštavaju ulazno kolo za odmeravanje i zadršku, SH kolo (sample&hold) ispred A/D konvertora sa enko-dirajućom tehnikom koja sprečava iskra kodove.

Page 26: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 25 -

Kada je digitalni izlaz komparatora nejasan (ni nula ni jedinica), izlaz je definisan kao metastabilan. Metastabilnost može biti redukovana obezbeđivanjem više vremena za regeneraciju. Takođe, metastabilnost se može poboljšati Grejovim kodom enkodiranja. Grejov kod obezbeđuje da se u jednom trenutku samo jedan bit u izlazu promeni. Kod Grejovog koda svaki kod se razlikuje za tačno jednu cifru (jedan kod) od kodova susednih njemu tj. od kodova pre i posle njega. Komparatorski izlazi su prvo konvertovani u Grejev kod enkodiranja i onda kasnije dekodirani u binarni, ako je to poželjno. Drugi problem koji se javlja je taj kada se metastabilan izlaz kreće dvema različitim kružnim putanjama. Moguća situacija koja može da se dogodi je da jedna putanja “proglasi” ulaz kao "1" dok druga putanja “smatra” da je na ulazu "0". Ovo može da stvori glavne greške. Da bi se ovakve greške izbegle potrebno je da samo jedna kružna putanja oseti metastabilan izlaz.

Još jedna stvar koja može da stvara probleme je frekventna zavisnost izlaznog signala. Kada se ulazni signal promeni pre nego što komparator izvrši svoje odlučivanje, performansa A/D konvertora je nepovoljno realizovana. Naj-ozbiljniji problem u realizaciji je smanjivanje odnosa signal/šum (plus distorzija) kako frekvencija analognog ulaza raste.

Kada proanaliziramo zavisnost fleš A/D konvertora od rezolucije dolazimo do zaključka da se brzina konverzije fleš A/D konvertora ne menja značajno sa povećanjem rezolucije. Kod konvertora sa sukcesivnim aproksimacijama brzina konverzije se menja linearno sa povećanjem rezolucije, dok se kod integrirajućih vreme duplira sa svakim bitom povećanja rezolucije. Usaglašavanje fleš konvertora obično ograničava rezoluciju na oko 8 bita. Zahtevi kod usaglašavanja komponenti se dupliraju sa svakim bitom povećanja rezolucije. Kod fleš A/D konvertora svaki bit povećanja rezolucije gotovo da udvostručava veličinu kola. Snaga se takođe udvostručava. Kod A/D konvertora sa sukcesivnim aprok-simacijama i kod sigma-delta konvertora promena je linearna dok kod integrirajućih neće doći do značajnih promena. Cena kola takođe raste sa povećanjem njegove složenosti.

CMOS fleš A/D konvertori su dostupni na niskim brzinama i rezolucijama i obično su namenjeni za inegrisanje u velika CMOS kola. Za aplikacije koje zahtevaju skromnu rezoluciju, obično do 8 bita, na frekvencijama semplovanja od nekoliko stotina MHz, arhitektura fleš A/D konvertora bi mogla biti jedina povoljna alternativa. Za aplikacije sa visokom frekvencijom analognog ulaza, izabrani A/D konvertor bi trebao da ima jedno ulazno kolo za odmeravanje i zadršku. 1.7. PRENOSNA FUNKCIJA A/D KONVERTORA

Prenosna funkcija je dijagram na kome je prikazan kod na izlazu iz A/D konvertora za vrednosti ulaznog signala A/D konvertora. Dijagram prenosne funkcije nije kontinualan već se sastoji od 2N kodova, gde je N rezolucija A/D konvertora u bitima. Ako bi povezali ove kodove jednom linijom (obično kroz tačke na prelasku sa jednog koda na drugi), idealna prenosna funkcija bi bila prava linija. Linija povučena kroz tačke na svakoj granici između kodova, počinjala bi u koordinatnom početku a nagib prave bi bio isti (kao na Slici 1.26.) za svaki A/D konvertor.

Page 27: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 26 -

Sl.1.26. Idealna prenosna funkcija 3-bitnog A/D konvertora

Slika 1.26. prikazuje idealnu prenosnu funkciju za 3-bitni A/D konvertor sa referentnim tačkama na ivici promene koda. Izlazni kod biće najmanji (000) za vrednosti ulaznog signala ispod 1/8 maksimalne vrednosti (to je i širina jednog koda tog A/D konvertora). Takođe, primetite da A/D konvertor dostiže najveći izlazni kod (111) već na 7/8 maksimalne vrednosti dinamičkog opsega, a ne na granici dinamičkog opsega. Znači, prelazak na maksimalni digitalni izlazni kod ne dešava se kada je vrednost ulaznog napona na granici dinamičkog opsega. Prelazak se dešava kada je napon za jedan kod – ili najmanje značajan bit (LSB) – manji od dinamičkog opsega (drugim rečima od referentnog napona).

Sl.1.27. Prenosna funkcija 3-bitnog A/D konvertora sa ofsetom od -1/2 LSB

Page 28: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 27 -

Prenosna funkcija može biti implementirana sa ofsetom od -½ LSB, kao što je

prikazano na Slici 1.27. Ova translacija prenosne funkcije ulevo translira i opseg greške kvantizacije iz (-1 do 0 LSB) u opseg (-½ do +½ LSB). Iako je ovaj ofset nameran, on se često navodi u specifikacijama kao deo greške ofseta. 1.8. GREŠKE A/D KONVERTORA

Ograničenja u materijalima koji se koriste za izradu znače da u praksi A/D konvertori neće imati idealnu prenosnu funkciju. Odstupanja od idealne prenosne funkcije definišu DC preciznost i okarakterisana su parametrima u tablicama tehničkih podataka.

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

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

UKUPNA GREŠKA = , gde En predstavlja pojedinačnu grešku neke komponente ili parametra.

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

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

Ne mora da znači, da ako uzmemo A/D konvertor sa više bita od predviđenog za neku određenu preciznost, da ćemo i dobiti karakteristike konvertora u željenoj preciznosti. Ako na primer, pretpostavimo da ja potrebno postići pre-ciznost od 0,1% ili 10-bitnu preciznost (1/210), tako da ima smisla odabrati konvertor sa rezolucijom većom od ove. Ako odaberemo 12-bitni konvertor, možemo da pretpostavimo da će to biti dovoljno; ali bez analize

Page 29: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 28 -

specifikacije, nema garancije da on postiže 12-bitne performanse (on može biti boljih ili lošijih karakterisitka). Na primer, 12-bitni A/D konvertor sa integralnom greškom nelinearnosti od LSB-a (Least Significant Bit - najmanje važan bit) može postići samo 10-bitnu preciznost u najboljem slučaju (ako se podrazumeva da su greške ofseta i pojačanja kalibrisane). Uređaj sa integralnom greškom nelinearnosti od 0.5 LSB-a može postići grešku manju od 0.0122% odnosno 13-bitnu preciznost (ako su uklonjene greške ofseta i pojačanja). Da bi se izračunala najveća preciznost, potrebno je maksimalnu integralnu grešku nelinearnosti podeliti sa 2N, gde je N – broj bita. U našem slučaju, ako dopustimo grešku od 0.075% (tj. 11-bitnu grešku) za A/D konvertor, ostaje nam greška od 0.025% za ostatak elektronskog sklopa, što uključuje greške senzora, grešku od operacionih pojačavača, multipleksera, eventualnog D/A konvertora, ili drugih analognih izlaznih signala na putanji signala.

Mnogi signali su relativno statični, kao npr. izlazni signali temperaturnih senzora ili senzora pritiska. U takvim aplikacijama mereni signal je povezan sa nekom fizičkom veličinom i apsolutna preciznost merenja tog napona je važna. Parametri A/D konvertora koji opisuju ovaj vid preciznosti su greška ofseta, greška pojačanja dinamičkog opsega, diferencijalna nelinearnost (DNL) i inte-gralna nelinearnost (INL). Ova četiri parametra u potpunosti opisuju apsolutnu preciznost A/D konvertora.

Iako se ne navodi kao parametar jedna od osnovnih grešaka A/D konvertora, a nastaje kao rezultat pretvaranja signala i podataka je greška kvantizacije. Ova greška ne može biti izbegnuta u merenjima uz A/D konverziju. DC preciznost i rezultujuću apsolutnu grešku određuju četiri parametra – ofset, pojačanje u celom dinamčkom opsegu, INL i DNL. Greška kvantizacije je nezaobilazni rezultat predstavljanja analognog signala u digitalnim brojevima (drugim rečima, plod analogno-digitalne konverzije). Maksimalna greška kvantizacije je određena rezo-lucijom merenja (ili rezolucijom A/D konvertora, ako je signal oversample-ovan). Dalje, greška kvantizacije će se pojaviti kao šum, poznatiji kao šum kvantizacije u dinamičkoj analizi. Na primer, greška kvantizacije pojaviće se kao prag šuma u FFT dijagramu (frekvencijskom spektru) merenog signala na ulazu A/D kon-vertora.

Sl.1.28. Greška ofseta kod realnog A/D konvertora

Page 30: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 29 -

Sl.1.29. Greška pojačanja kod realnog A/D konvertora

Sl.1.30. Diferencijalna nelinearnost kod realnog A/D konvertora

Page 31: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 30 -

2. MIKROKONTROLERI

2.1. Osnovne karakteristike mikrokontrolera

Mikrokontroler je u sutini pravi ''mali ra~unar'' na ~ipu, koji sadr`i sve gradivne blokove CPU-a (ALU, PC, SP, registre i dr.), ali tako|e i RAM, ROM, paralelne i seriske U/I portove, generatore takta i dr.

Mikrokontroler je ure|aj opte namene, koji pribavlja podatke, obavlja ograni~enu obradu nad tim podacima, i upravlja svojim okru`enjem na osnovu rezultata izra~unavanja. Mikrokontroler u toku svog rada koristi fiksni program koji je smeten u ROM-u i koji se ne menja u toku `ivotnog veka sistema.

PIC16F877 je Microchip-ov 8-bitnom CMOS mikrokontroler baziran na flash

tehnologiji.To znači da u samom ~ipu postoji programska memorija koja se upisuje i briše električnim putem, što je daleko naprednije od brisanja EPROM-a UV zracima.

RISC arhitektura omogućuje odvojene magistrale 8-bitnih podataka i 14-bitne programske memorije, pa je mogue da se pribavlja naredna instrukcija dok se izvršava tekua (eng. pipelining). Sve instrukcije traju jednako (osim u slu~aju grananja programa) i završe se za ~etiri ciklusa oscilatora. Dakle, ako je oscilator konfigurisan na 4 MHz, dobija se da ciklus instrukcije iznosi 1 μs.

Jezgro mikrokontrolera PIC16F877 proizvodi se u 40-pinskom (DIP) ili u 44-pinskim kućištima (QFP i PLCC), Slika 2.1.

Sl.2.1. Kuišta u koja se «pakuje» PIC16F877 (a. DIP-40, b.PLC-44, c.TQFP-44) Sa blok dijagrama kojeg daje Microchip (Slika 2.2.) može se ustanoviti da se

koncepcija ovog mikrokontrolera ne razlikuje mnogo od koncepcije RISC mikrokontrolera drugih proizvođača prisutnih na tržištu. Uočavaju se standardne komponente:

• Flash programska memorija – 8 kword

Page 32: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 31 -

• RAM (File Registers) – 368 bajtova • Aritmetičko-logička jedinica (ALU) • Akumulator (Working Register) • Hardverski magacin (Stack) sa 8 nivoa • EEPROM memorija podataka – 256 bajtova • Razne periferne jedinice (portovi, tajmeri, A/D konvertor, USART,...)

PIC16F877 podr`ava tehniku prekida (eng. interrupts). Postoji ukupno 14 izvora prekida, što spoljašnjih, što unutrašnjih. Svaki prekid nema sopstveni interapt-vektor, ve postoji jedinstvena adresa (0x0004) od koje se nastavlja izvršavanje programa kada se dogodi bilo koji od njih. Tada je na programeru da prozivanjem zastavica/markera pojedinih prekida (eng. interrupt flags polling) ustanovi ko tra`i prekid i uputi program na izvršavanje odgo-varajue rutine za obradu. Adresa na koju se program treba vratiti po obradi prekida ~uva se automatski u hardverskom magacinu i u programski broja~ vraa izvršavanjem instrukcije RETFIE.

Sl.2.2. Arhitektura mikrokontrolera

Ono što mikrokontrolere izdvaja od ostalih procesora jeste prisustvo raznih specijalnih kola koja se trebaju izboriti sa potrebama real-time aplikacija. Ovaj mikrokontroler poseduje niz osobina potrebnih da se maksimizuje pouzdanost sistema, minimizuje cena kroz eliminaciju eksternih komponenti, omoguće režimi niske potrošnje energije, pru`anje zaštite programskog kôda. Upotreba navedenih resursa definiše se u programatorskom

Page 33: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 32 -

sostveru upisom odgovarajue konfiguracione re~i u registar CONFIG. Taj registar je dostupan samo u toku upisa programa u mikrokontroler i drugačije se ne mo`e adresirati.

Među ponu|enim karakteristikama postoji mogućnost izbora četiri tipa oscilatora, mogućnost upotrebe Power-up (PWRT) i Oscilator Start-up (OST) tajmera, te eventualno korišćenje Power-on (POR) i/ili Brown-out (BOR) reseta. Poveanju pouzdanosti kroz spre~avanje zalaska programa u mrtve petlje poma`e upotreba Watchdog tajmera (WDT). Zaštitu kôda od neželjenog čitanja pru`a opcija code protection.

Za ure|aje sa baterijskim napajanjem interesantna mogunost je Sleep Mode, re`im sa smanjenom potrošnjom energije, kada se program ne izvršava, ali rade neke periferne jedinice koje mogu “probuditi” mikrokontroler. Tada je potrošnja mikrokontrolera ispod 1 μA.

Sl.2.3. Mapa programske memorije

Napajanje se dovodi na pinove VDD, a masa na pinove VSS. No`ice OSC1 i OSC2

slu`e za priklju~enje oscilatorskih komponenti (RC-kolo ili rezonator), odnosno priključenje eksternog oscilatora kao bolje, ali skuplje varijante. Osim za reset-kolo pin 1 (MCLR/VPP) ima ulogu u toku procesa programiranja mikrokontrolera. Ostalih 33 pina predstavljaju I/O linije. Oni su grupisani u pet portova (PORT A, B, C, D i E) i svaki od njih je individualno konfigurabilan kao izlazni ili kao ulazni. Osim opšte namene, veina pinova ima i specifičnu svrhu koja se programski dodeljuje u slu~aju korišćenja nekih specijalnih periferija mikrokontrolera (broja~a, serijske komunikacije, A/D konvertora i dr.)

Page 34: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 33 -

Na kraju ovog uvoda treba napomenuti da su Microchip PIC mikrokontroleri dominantni u odnosu na konkurentne relativno visokom strujom koju moe propustiti I/O pin (25 mA). Tako|e, ova familija mikrokontrolera poseduje veoma širok opseg napona napajanja koji se prote`e od 2,0 V do 5,5 V.

BLOK DIJAGRAM MIKROKONTROLERA

Osnovne karakteristike mikrokontrolera PIC16F877:

• Visoko performansni RISC CPU • 35 instrukcija obima jedne reci • Radna frekvencija ,fref = DC-20 MHz • Trajanje taktnog intervala tcpu = 200 ns, kada je fref = 20 MHz • Op-kôd obima14bita • Hardverski magacin sa osam nivoa • Tri na~ina adresiranja: -direktno

-indirektno -relativno

Page 35: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 34 -

• Programska memorija kapaciteta 8 kx14-bitnih reci realizovane u FLASH tehnologiji • Memorije za podatke tipa RAM kapaciteta 368x8 bita • Memorije za podatke EEPROM tipa kapaciteta 256x8 bita • Prekidi ( do 14 izvora prekida) • U/I portovi: A,B,C,D,E • Tri tajmera: -Timer0: 8-bitni tajmer/brojac dogadjaja -Timer1: 16-bit tajmer/brojac dogadjaja -Timer2: 8-bit tajmer/brojac dogadjaja • 10-to bitni 8-kanalni Analogno-Digitalni (A/D) konvertor • Seriska komunikacija: MSSP,USART • Paralelna komunikacija: PSP • Power-on Reset- reset pri uklju~enju napajanja(POR) • Power-up timer-unosenje kanjenja nakon uklju~enja napajanja (PWRT) • Oscillator Start-up Timer-unosenje kasnjenja nakon stabilizovanja radne frekvencije

oscilatora(OST) • Sleep –re`im rada za stednju energije • Watchdog timer sa sopstvenim integrisanim RC oscilatorom za nezavisni rad • Izbor tipa oscilatora • Mala potronja,velika brzina rada • Radni napon od 2V do 5.5V • Mala potronja energije:

1. <0.6 mA pri naponu od 3V i radnoj frekvenciji od 4 MHz 2. 20μA pri naponu od 3V i radnom taktu od 32kHz 3. <1μA u standby nacinu rada

2.2. Kratak opis mikrokontrolera PIC16F877 Kao to smo ve naglasili mikrokontroler PIC16F877 poseduje tip~nu RISC arhitekturu.

Arhitektura poseduje odvojene magistrale za podatke i programski kôd. Obim podataka je 8-bitni, dok je programski kôd 14-bitni. Mogue je proto~no izvrenje (pipelining). Sve insrukcije su istog obima (osim instrukcija grananja) i izvsavaju se za ~etiri taktna intervala. Dakle, ako koristimo oscilator npr. od 20 MHz dobijamo da ciklus instrukcuije traje 200 ns. Sa blok dijagrama (slika 1.4) mogu se uo~iti sledei gradivni blokovi:

• Flash programska memorija – 8 kilore~i obima 14 bita • RAM (File Registers) – 368 bajtova • Aritmetičko-logička jedinica (ALU) • Akumulator (Working Register) • Hardverski magacin (Stack) organizivan u 8 nivoa • EEPROM memorija podataka obima 256 bajtova • Razne periferne jedinice (portovi, tajmeri, A/D konvertor, USART,...)

Page 36: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 35 -

Sl.2.4 Blok dijagram mikrokontrolera PIC16F877 2.3. Raspored no`ica

Jezgro mikrokontrolera PIC16F887A pakuje se u 40-pinsko DIP pakovanje ili u 44-pinska kuita QFP i PLCC tipa. Na slici 2.5 prikazan je raspored no`ica kod 40-to pinskog DIP pakovanja:

Page 37: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 36 -

Sl.2.5 Raspored nozica mikrokontrolera PIC16F877

• Napajanje od +5V se dovodi na pinove VDD (11 i 32) a masa na pinove VSS (12 i 31).

• No`ice OSC1 i OSC2 (pinovi 13 i 14) slu`e za priklu~ivanje oscilatorskih komponeti (RC-kolo ili kvarc).

• Pin 1 (MCLR/VPP) ima dvostruku ulogu. Standardno se koristi kao Reset, a u procesu programiranja kao pin za dovo|enje visokog napona (13V).

• Ostalih 33 pina prestavljaju U/I linije. One su grupisane u pet portova (PORTA-PORTE) i svaki od njih mozemo konfigurisati kao ulazni ili izlazni. Osim opste namene vecina pinova ima i specificnu namenu koju dobija u slucaju koriscenja nekih specijalnih periferija mikrokontrolera (brojaca, ADC, serijske komunikacije).

2.4. Generator takta (Oscilator)

Mogue su ~etri varijante u konfiguraciji oscilatora: LP Low Power Crystal XT Crystal / Resonator HS High Speed Crystal / Resonator RC Resistor/Capacitor Kontroler moze da radi i na 32 kHz i tada ima jako malu potronju. Najednostavnija varijanta je RC oscilator(slika 2.6).Ova varijanta oscilatora mo`e se koristiti u aplikacijama gde se precizna procena vremenskih intervala ne zahteva.

Page 38: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 37 -

Sl.2.6 Na~in povezivanja RC oscilatora

Frekfencja oscilovanja zavisi od napona napajanja, vrednosti Rext i Cext ,kao i radne

temperature. Rext treba da je u granicama od 5k do 100k. Van ovog opsega rad oscilatora postaje nestabilan i osetljiv na spoljne uticaje. Cext se moze i izostaviti, ali zbog stabilnosti se preporu~uje 20pF. Na OSC2/CLKOUT generise se taktni impuls cija je perioda ~etiri puta veca od periode oscilatora. Kod vremenski kriticnih aplikacija treba ugradjivati kvarcni oscilator ili keramicki rezonator. Vrednosti kondenzatora C1 i C2 (slika 2.7), treba da su jednaki.

Sl.2.7 Na~in povezivanja XT oscilatora

Preporuka proizvo|a~a za vrednosti C1 i C2 kod nekih konfiguracija je: Tabela 2.1.

LP 32 kHz 68-100pF - Kristal 200 kHz 15-33pF - Kristal

Tabela 2.2. XT

100 kHz 100-150pF - Kristal 455 kHz 47-100pF Rezonator - 2.0 MHz 15-33pF Rezonator Kristal 4.0 MHz 15-33 Rezonator Kristal

Tabela 2.3. HS

Page 39: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 38 -

4.0 MHz 15-33pF - Kristal 8.0 MHz 15-33pF Rezonator Kristal 10.0MHz 15-33pF Rezonator Kristal

Moguce je i da se oscilacije dovode iz nekog spoljnjeg izvora kao sto je prikazano na slici 2.8.:

Sl.2.8. Na~in

povezivanja

spoljnjeg oscilator

a

Naj~ee se koristi spoljni kristalni oscilator (XT) radne frekvencije 4MHz. Bice

prikazano kako se spaja kristalni oscilator sa mikrokontrolerom (slika 2.9) i kako izgleda oblik signala generisan iz oscilatora u trenutku ukljucenja (slika 2.10). Oscilatoru treba neko vreme ΔT da se stabilizira na potrebnu frekvenciju i amplitudu

Sl.2.9. Spajanje kristalnog oscilatora Sl.2.10. Oblik signala pri uklju~enju oscilatora 2.5. Takt/instrukciski ciklus Takt koji se dovodi na nozice oscilatora OSC1 u mikrokontroleru se deli na ~etiri vremenski nepreklapajuca taktna signala nazvana Q1,Q2,Q3 i Q4. Skup ovih signala ~ine

Page 40: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 39 -

jedan instrukciski ciklus(slika 1.11a). U zavisnosti od trenutka generisanja u okviru ciklusa instrukcija taktni signali Q1-Q4 se koriste za sledee namene:

• Q1-pribavljanje instrukcije iz programske memorije • Q2-dekodiranje naredbe iz prethodnog instrukciskog ciklusa • Q3-izvrsenje naredbe iz prethodna dva instrukciska ciklusa • Q4-prenos op-kôda naredbe pozvane u Q1 u instrukcijski registar.

Uzmimo za primer instrukciski ciklus TCY2 (slika 1.12a). U toku taktnog impulsa Q1 instrukcijskog ciklusa TYC2, stanje programskog brojaca (PC) se uveava za 1 i pribavlja naredna instrukciju iz programske memorije. U toku intervala Q2 dekodira se instrukcija pribavljena u TCY1, a u toku Q3 se izvrava instrukcija pribavljena u TCY0. U ~etvrtom taktu Q4 instrukciskog ciklusa TCY2 se, instrukcija pribavljena u toku Q1, prebacuje se u instrukciski registar.

Sl.2.11. Vremenski dijagram i proto~nost kod izvravanja instrukcije

a).Vremenski dijagram

Sl.2.11. b) Proto~nost kod izvrenja sekvence instrukcije

Na slici 1.11b prikazan je proto~ni nacin izvrenja sekvence od 5 instrukcija. Kao sto

se vidi sa slika 1.11b postoje dva stepena u proto~noj obradi. Prvi se odnosi na pribvljanje, a drugi na izvrenje. Neka je proto~ni sistem inicijalno prazan. U toku TCY0 pribavlja se instrukcija sa labele 1 tipa MOVLW 55h. U toku TCY1 izvrava se instrukcija sa labele 1 i pribavlja instrukcija sa labele 2 tipa MOVWF PORTB. U toku TCY2 pribavlja se instrukcija sa labele 3 koja je tipa CALL SUB_1 i pretstavlja poziv potprograma 1, i izvrava se instrukcija sa labele 2. U toku TCY3 pribavlja se instrukcija sa labele 4 tipa BSF PORTA, BIT3 i izvrava insrukcija sa labele 3. Napomenimo da je instrukcija sa labele 3 tipa bezuslovno grananje tako da, u principu, efekat izvrenja instrukcije sa labele 4 ne treba da bude vidljiv,tj. ona treba da pretstavlja neku operaciju tipa NOP (da ne menja statusne markere procesora kao i stanja procesora). Nakon izvrsenja instrukcije CALL SUB_1 vrednost programskog brojaca se postavlja na adresu insrukcije koja se nalazi na labeli 5. U toku TCY4 pribavlja se instrukcija sa labele 5 tipa Instruction @ address SUB_1 (prva naredba potprograma), a izvrsava instrukcija na labeli 4 koja je sa stanovista procesora i programa operacija tipa NOP. U TCY5 pribavlja se druga naredba potprograma i izvrava prava.

Page 41: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 40 -

2.6. Reset

Reset slu`i da bi sve registre mikrokontrolera doveli u po~etni polo`aj. Ako se mikrokontroler “zako~i” ,ili smo ga tek uklju~ili, treba ga resetovati. Da bi sprecili slucajno dovodjenje “0” na MCLR nozicu, porebno ju je preko otpornika povezati na pol napajanja Vdd (slika 1.12)

Sl.1.12. Povezivanje kola za reset

Postoji vie vrste reseta kod PIC16F877 mikrokontrolera:

• Power-on reset (POR) • MCLR Reset pri normalnom radu • MCLR Reset prilikom SLEEP rezima rada • WDT Reset pri normalnom radu • WDT Wake-up (budjenje iz SLEEP rezima rada) • Brown-out Reset (BOR)

Power-on reset (POR) impuls se generise u samom kolu kada se detektuje porast napona napajanja (oko 1,2 – 1,7 V). Da bi se POR iskoristio dovoljno je MCLR nozicu prikljuciti na Vdd direktno ili preko otpornika (sl. 2.13). Ukoliko je porast napona napajnja spor neophodno je na MCLR postaviti spoljnje kolo za reset. Sema kola za POR reset je prikazana na slici 2.13.

Page 42: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 41 -

Sl.2.13 Spoljanje kolo za reset

Interno POR kolo nee generisati Reset signal kad napon napajanja padne ispod minimuma. Za situacije kada je mogua pojava BROWN-OUT-a (privremeni pad napona ispod Vmin) prebno je napraviti spoljnje Brown-out reset kolo,sto je prikazano na slici 2.14.

Sl.2.14. Kolo za BROWN-OUT reset Varijanta 1

Kolo ce generisati Reset impuls kada napon bude ispod (Vz + 0.7) V Vz – napon na Zener diodi.

Sl.2.15. Kolo za BROWN-OUT reset Varijanta 2

Uslov da tranzistor isklju~i je:

Page 43: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 42 -

V7.0R1R2

R1Vdd <+

Power-up Timer (PWRT) generise impuls fiksne irine (nominalno 72 msec) od pojave impulsa POR-a. Za to vreme ce kontroler biti je u Reset stanju. Za ovaj vremenski period se obezbedjuje da napon napajanja dostigne nominalnu vrednost. Tajmeru PWRT se dozvoljava rad setovanjem PWRTE bita koji pripada konfiguracionoj reci u fazi programiranja cipa. PWRT se taktuje internim RC oscilator.

Oscilator Start-up Timer (OST) obezbedjuje kasnjenje od 1024 taktnih intervala nakon isteka kvazistabilne periode PWRT-a (vidi tabelu 2.4.). Ovo obezbe|uje da kristalni oscilator ili rezonator startuju stabilnom frekvencijom. OST se aktivira samo kod XT, LP i HS rezima rada i to pri:

• POR, i • bu|enju iz SLEEP re`ima rada.

Mikrokontroler PIC16F877 ima implementiran dvo-bitni statusni registar nazvan PCON (Power Control Register). Prvi bit nazvan POR setuje se kada se aktivira Power-on-Reset a resetuje se kada je se aktivira neki drugi Reset. Drugi bit (BOR)kada je setovan ukazuje da je aktivan Brown-out stanja (nepropisana naponska stajna u napajanju mikrokontrolera), zbog kojeg se takodje može aktivirati Reset. Tabela 2.4.

Power-up Konfiguracija

oscilatora PWRT omogucen PWRT

onemogucen Budjenje iz SLEEP

rezima rada XT, HS, LP 72 ms + 1024 Tosc 1024 Tosc 1024 Tosc

RC 72 ms - - Stanja na kojima se postavljaju interni registri CPU-a nakon Reseta zavisi od vrste Reseta i re`ima rada u kojima se nalazi procesor (Sleep i normalni). Stanje nekih registara ostaje nedifinisano, neki zadr`avaju svoje stanje, a ostali se postavljaju u unapred definisana stanja (vidi Tabele 2.5 i 2.6). Tabela 2.5.: Postavljanje registara nakon reseta

Program Counter STATUS reg. Power-on reset (POR) 000h 0001 1xxx

MCLR reset pri normalnom radu

000h 000u uuuu

MCLR reset prilikom SLEEP re`ima rada

000h 0001 0uuu

WDT Reset pri normalnom radu

000h 0000 1uuu

WDT Wake-up (bu|enje iz SLEEP re`ima rada)

PC+1 uuu0 0uuu

Interapt 004h uuu1 0uuu Tabela 2.6.

Registar Power-on reset MCLR reset pri: -normalnom radu

Bu|enje iz SLEEP -interapt

Page 44: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 43 -

-SLEEP mod WDT reset pri normalnom radu

-WDT time out

00h INDF ---- ---- ---- ---- ---- ---- 01h TMR0 xxxx xxxx uuuu uuuu uuuu uuuu 02h PCL 0000 0000 0000 0000 PC+1 03h STATUS 0001 1xxx 000q quuu uuuq quuu 04h FSR xxxx xxxx uuuu uuuu uuuu uuuu 05h PORTA ---x xxxx ---u uuuu ---u uuuu 06h PORTB xxxx xxxx uuuu uuuu uuuu uuuu 08h EEDATA xxxx xxxx uuuu uuuu uuuu uuuu 09h EEADR xxxx xxxx uuuu uuuu uuuu uuuu 0Ah PCLATH ---0 0000 ---0 0000 ---u uuuu 0Bh INTCON 0000 000x 0000 000u uuuu uuuu 80h INDF ---- ---- ---- ---- ---- ---- 81h OPTION 1111 1111 1111 1111 uuuu uuuu 82h PCL 0000 0000 0000 0000 PC+1 83h STATUS 0001 1xxx 000q quuu uuuq uuuu 84h FSR xxxx xxxx uuuu uuuu uuuu uuuu 85h TRISA ---1 1111 ---1 1111 ---u uuuu 86h TRISB 1111 1111 1111 1111 uuuu uuuu 88h EECON1 ---0 x000 ---0 q000 ---0 uuuu 89h EECON2 ---- ---- ---- ---- ---- ---- 8Ah PCLATH ---0 0000 ---0 0000 ---u uuuu 8Bh INTCON 0000 000x 0000 000u uuuu uuuu Legenda: x – Nepoznato stanje u – Nepromenjeno stanje q – Stanje zavisi od uslova - - Ne postoji fizi~ki ~ita se kao 0 Struktura Reset logike za PIC16F877 data je na slici 2.16.:

Page 45: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 44 -

Sl.2.16. Blok dijagram Reseta

2.7. Watchdog timer

Watchdog timer (WDT) taktuje se nezavisanim RC oscilatorom koji radi ~ak i kad je zaustavljen rad glavnog oscilatora, u SLEEP re`imu rada, povezan na OSC1/CLKIN i OSC2/CLKOUT pinove. Prekora~enje intervala brojanja WDT-a, prilikom normalnog rada, izaziva RESET kontrolera. Ako je kontroler bio u SLEEP rezimu rada prekora~enje tajmera ce probuditi kontroler i program ce nastaviti sa normalnim radom. Isklju~ivanje WDT-a se vrsi resetovanjem WDTE bita u konfiguracionoj re~i. Nominalno vreme WDT-a je 18 ms bez uptrebe preskalera. Ovo vreme mo`e da varira od kola do kola zbog temperature i sli~no. Ukoliko je potrebno duze vreme moze se WDT-u pridruziti preskaler sa faktorom deljenja do 1:128, tako se vreme moze produziti do 2,3 s. Instrukcije CLRWDT i SLEEP resetuju WDT. TO’ bit u STATUS registru e biti 0 nakon isteka WDT. 2.8. Prekidi

Mikrokontroler PIC16F877 podr`ava tehniku rada sa prekidima (interrupts). Postoji ukupno 14 izvora pekida, neki su interni, a drugi su eksterni. Svaki prekid nema sopstveni vektor-broj.Kada se prihvati zahtev za prekid izvrsenje prekidnog programa po~inje od adrese 0x0004. Tada se programskim putem testira stanje markera koji se postavljaju kada se aktivira odgovarajui prekid (interrupt flags polling).Kada se ustanovi koji je od uredjaja generisao zahtev za prekid prelazi se na izvrenje odgovarajuce rutine za obradu tog prekida. Povratna adresa prekinutog programana ~uva se automatski u hardverski magacin. Povratak iz prekidnog programa se vri instrukcijom RETFIE. Upravlja~ki registar INTCON se koristi za maskiranje prekida. Pregled sadr`aja marker bitova kojim se generise zahtev za prekid je definisan na slici 1.17. Zna~enje pojedinih markera je sledece:

• T0IF (INTCON:2) setuje se na prekora~enje Timer0 • INTF (INTCON:1) setuje se u slu~aju da nastupi spoljni prekid na pinu RBO/INT

Page 46: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 45 -

• RBIF (INTCON:0) setuje se kada se dogodi promena stanja na nekom od pinova RB4, RB5, RB6, RB7

• PSPIF (PIR1:7) PSP marker bit koji se koristi u opreciji ~itanja i upisa na PORTD kada je on konfigurisan kao PSP

• ADIF (PIR1:6) marker koji se koristi za vreme analogno-digitalne konverzije • RCIF (PIR1:5) marker koji ozna~ava da je prijemni bafer koji koji koristi USART

blok, pun • TXIF (PIR1:4) marker koji pokazuje da je bafer za slanje podataka koji koristi

USART prazan • SSPIF (PIR1:3) marker koji se koristi za rad sinhronog serijskog porta • CCP1IF (PIR1:2) marker koji koristi CCP1 blok • TMR2IF (PIR1:1) marker koji setije Timer2 kada dodje do prkora~enja • TMR1IF (PIR1:0) marker koji setije Timer2 kada dodje do prkora~enja • EEIF (PIR2:4) marker koji se setuje kada se zavrsi upis u interni EEPROM • BCLIF (PIR2:3) marker koji koji korist SSP blok kada je konfigurisan da radi u I2C

master re`imu rada • CCP2IF (PIR2:0) marker koji koristi CCP2 blok.

Pored bita za dozvolu rada svih prekida General Interrupt Enable (GIE) i bita za dozvolu rada prekida generisanih od strane periferija (PEIE), ovom registru pripadaju i markeri prekida (interrupt-flags) i bitovi koji dozvoljavaju prekid koji izaziva tajmer0, spoljasnji prekid na pinu RB0/INT i prekida porta B na promenu stanja. Osim ova tri osnovna prekida postoji jos 11 periferijskih prekida. Bitovi za njihovo omogucenje nalaze se u registrima PIE1 i PIE2, a korespodentni flegovi,u registrima PIR1 i PIR2. Ovi se flegovi setuju ~im se ispuni uslov interapta bez obzira na stanje njihovog bita omogucenja, a po izvrsenju servis rutine potrebno ih je sostverski resetovati. Na sledecoj slici (sl. 2.17.) prikazana je logi~ka sema svih interrupt-a sa tabelom u kojoj su oni pobrojani:

Sl.2.17. Sema logike za prihvatanje zahteva za prekid i sadrzaj

Page 47: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 46 -

2.9. U/I Portovi

Za vezu mikrokontrolera sa spoljnim svetom zadu`eni su ulazno/izlazni portovi. Ima ih pet i oznaceni kao PORTA, PORTB, PORTC, PORTD i PORTE. Razli~itog su obima. PORTE cine tri pina, PORTA est, a ostala tri porta su osmopinski. Odredjeni pinovi U/I portova u zavisnosti od rezima rada mogu da imaju fiksne ili promenljive funkcije. Konfiguracija smera prenosa na odgovarajuoj bit poziciji porta vrsi se upisom konfiguracione re~i u pripadajui TRIS registar pri cemu nula konfigurise pin kao izlazni, a jedinica kao ulazni. Svaki port poseduje odgovarajui registar podataka (PORTX) preko kojeg se programski pristupa U/I pinovima. Upis u neki od tih registara inicirace upis u lec tog porta, a njegovo ~itanje rezultirae ~itanjem logickih stanja direktno sa pinova. Sve instrukcije upisivanja su tzv. read-modify-write instrukcije. To znaci da se pri upisu u port prvo ocitaju stanja pinova, izvrsi modifikacija, a potom ispravljena vrednost upie u lec porta. Nema velike razlike u elektri~noj konstrukciji navedenih pet portova. Port B se od ostalih razlikuje posebnom opcijom koju nude cetiri MSB. Ukoliko se setuje bit RBIE u registru INTCON, svaka promena stanja na ovim pinovima generisae prekid mikrokontrolera. Port A

Port A je 6-to bitni bidirekcioni port i sadr`i pinove od RA0 do RA5. TRISA je direkcioni registar koji odre|uje smer pinova na portu. Ako postavimo TRIS na 1 pin je ulazni, u suprotnom pin je izlazni. Npr. ako je TRISA=0b111111 ceo port A je ulazni, a ako je TRISA=0b000000, ceo port A je izlazni. Moguce je podeliti port A, tako da, na primer, prva 2 bita budu ulazna,a ostala 4 izlazna (TRISA=0b110000). Na slikama 2.18 i 2.19 bice prikazan blok dijagram porta A:

Sl.2.18 Port A od RA0 do RA3 i RA5 Sl.2.19 Pin RA4 na portu A

Pin RA4 je izlaz sa otvorenim drejnom pa se zahteva od projektanta da ve`e otpornik odgovarajuce vrednosti za pozitivan napon. Pri tome mora se voditi racuna o strujnom ograni~enju pina o cemu ce biti kasnije rei. Ceo port A ima mogunost analogno-digitalne konverzije i prvenstveno se korisi u te svrhe. A/D konvertor je 10-to bitni sa 8 ulaznih

Page 48: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 47 -

kanala, jer se u ove svrhe korite i svi pinovi na portu E (i pinovi porta A od RA0 do RA3 i pin RA5). Pin RA4 moze da se izkoristi za ulaznu frekvenciju timer0. Timer0 mo`e da se okida preko ovog pina na rastuu ili opadajucu ivicu ulaznog signala, sto se odradjuje selekcijom bita T0SE u registru OPTION.

Na slici 2.20 dat je tabelarni prikaz funkcija pojedinih pinova porta A i registri koji se koriste za konfigurisanje porta:

Sl.2.20. tabelarni prikaz registara za konfigurisanje porta A

Port B

Port B je 8-mo bitni bidirekcioni port. Svi pinovi imaju odgovarajue bitove u TRISB registru kojim mo~e da se pinovi konfigurisu kao izlazni ili kao ulazni. ‘1’ u nekom bitu u TRISB registru stavlja odgovarajuci pin u stanje visoke impedanse i on radi kao ulazni pin. ‘0’ u TRISB registru prosle|uje sadr`aj bita iz izlaznog (latch) registra na pin i on radi kao izlazni.

Svi pinovi u PORTB imaju pull-up otpornike. Ovi otpornici se mogu ukljuciti jednim kontrolnim bitom. To se radi stavljanjem RBPU' bita na ‘0’. Pull-up otpornici se automatski iskljucuju kad se pin konfigurise kao izlazni. Otpornici su iskljuceni kod Power-on-reset-a.

^etri pina na PORTB (RB7-RB4) imaju mogunost generisanja interapta. Samo pinovi definisani kao ulazni mogu prouzrokovati interapt. Vrednost na pinovima se poredi sa starom vrednoscu uhvacenoj kod zadnjeg citanja porta B. Nad ovim vrednostima se vrsi OR operacija da bi se generisao interapt na promenu stanaja na PORTB. Ovaj interapt moze probuditi kontroler iz SLEEP re`im rada. Korisnik moze u rutini za obradu prekida ponititi prekid sledeim postupcima:

• ^itanjem ili pisanjem u PORTB. Ovo ce ukloniti neslaganje na portu i uslov za interapt.

• Resetovanjem flag bita RBIF. Neslaganje na portu B ce nastaviti da setuje RBIF. ^itanje PORTB-a ce prekinuti

neslaganje i uslov za interapt i omoguciti resetovanje bita RBIF Kombinacija interapta na promennu stanja PORTB i pull up otpornika se mo`e iskoristiti za jednostavan interfejs za tastaturu. Da bi promena na U/I pinu bila prepoznata irina impusa mora da bude najmanje koliko i jedan masinski ciklus (4 * Fosc). Na slikama 2.21. i 2.22. prikazana je struktura PORTB.

Page 49: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 48 -

Sl.2.21. Struktura pinova od RB0 do RB3 Sl.2.22. Struktura pinova od RB4 do RB7 Na slici 2.23. su prikazane tabele sa funkcijama pojedinih pinova i registara koji se koriste za konfigurisanje porta B.

Sl.2.23. Tabela registara koji slu`e za konfigurisanje PORTB.

Page 50: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 49 -

Pin RB0 ima mogunost da izazove prekid mikrokontrolera. Ako je ovaj interapt

omoguen (setovan bit 4 (INTE) u INTCON registru) i na RB0/INT pinu se pojavi odgovarajua ivica (definisana INTEDG bitom OPTION registra) nastupie interapt. Na kraju interapt rutine potrebno je u programu resetovati INTF bit u INTCON registru, kako bi naredni interapt bio mogu. Port C Port C je 8-mo bitni bidirekcioni port. Ovaj port je poseban sto na pinovima RC6 i RC7 ima ugra|en USART modul koji slu`i za serisku komunikaciju (npr. Sa ra~unarom). Prilikom korienja modula za serisku komunikaciju potrebno je softverski konfigurisati pinove RC6 i RC7 tako da budu u funkciji USART modula. Na slikama 2.24 i 2.25 su prikazane blok eme PORTC, a funkcionalna tabela registara koji se koriste za konfigurisanje samog porta data je na slici 2.26.

Sl.2.24. Struktura pinova od RC0 do RC2 i od RC5 do RC7

Sl.2.25.Struktura pinova od RC3 i RC4

Page 51: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 54 -

Sl.2.26 Tabela registara koji sluze za konfigurisanje PORTC

Port D

Port D je 8-mo bitni bidirekcioni port. Ovaj port se mo`e konfigurisati kao 8-mo bitni paralelni mikroprocesorski port (parallel slave port-PSP), podesavanjem konfigurisuceg bita PSPMOTE (TRISC<4>). U tom rezimu rada ulazni bafer je TTL tipa. Na slikama 2.27 i 2.28 je prikazana blok sema PORTD i funkcionalna tabela registara koji se koriste za konfigurisanje samog porta.

Sl.2.27. Struktura porta D

Page 52: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 55 -

Sl.2.28 Tabela registara koji slu`e za konfigurisanje PORTD

Port E

Port E je irine 3 bita.Ima mogunost A/D konverzije. Svaki pin porta E mo`e da se konfigurie softverski kao ulazni ili izlazni. Ulazni bafer je Schmitt Trigger tipa. Pinovi se mogu konfigurisati kao digitalni ili analogni,kao i u slu~aju porta A, sto je vec pomenuto. Na slikama 2.29 i 2.30 prikazana je strukturna blok sema PORTE i tabelarni prikaz registara koji slu`e za konfigurisanje.

Page 53: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 56 -

Sl.2.29 Struktura porta E

Sl.2.30 Tabela registara koji slu`e za konfigurisanje porta

2.10. A/D konverzija

S obzirom na kontinualnost pojava u spoljanjem svetu, teko je upravljati bilo kojim procesom bez digitalizacije analognih veli~ina. Kao sto smo vec napomenuli PORTA i PORTE imaju mogucnost A/D konverzije sto podrazumeva da se mogu konfigurisati kao analogni ili digitalni. Ako zelimo da koristimo A/D konverziju moramo uklju~iti modul za tu svrhu i podesiti ga na nacin koji nam najvise odgovara. Da bi to uradili potrbno je da pravilno podesimo registre ADCON0 i ADCON1. Zato u nastavku dajemo prikaz tih registara i prikaz tabele

Page 54: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 57 -

koji su potrebni za konfigurisanje. Na slici 1.31 je prikazan je registar ADCON0. Registar ADCON0 sluzi za podesavanje A/D konverzije: frekvencije semplovanja A/D konvertora, kanal koji se koristi za A/D konverziju, po~etak A/D konverzije i uklju~uje se modul za A/D konverziju. Registrom ADCON1 (na slici 2.31) odre|ujemo ulogu pojedinih pinova (analogni ili digitalni). Modul za A/D konverziju se bazira na A/D konvertor sa sukcesivni aproksimacijama.

Sl.2.31. Registar za podeavanje A/D konverzije

Page 55: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 58 -

Sl.2.32. Podeavanje tipa kanala (analogni/digitalni)

2.11. Strujna, naponska i temperaturna ograni~enja

U tabeli 2.7 dat je pregled strujnih, naponskih i temperaturnih ograni~enja mikrokontrolera i pojedinih portova. Tabela 2.7: Strujna,naponska i temperaturna ograni~enja mikrokontrolera Radna temperatura ambijenta -55 do +125ºC Napon na pojedinim pinovima u odnosu na Vss (bez Vdd, MCLR i RA4)

-0.3V do(Vdd+0.3)

Temperatura cuvanja mikrokontrolera -65 do +150ºC Napon Vdd u odnosu na Vss -0.3V do +7.5V Napon na MCLR u odnosu na Vss 0 do +14V Napon na RA4 u odnosu na Vss 0 do +8.5 V Ukupna disipacija 1W Maksimalna izlazna struja na pinu Vss 300mA Maksimalna ulazna struja na pinu Vdd 250mA

Page 56: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 59 -

Ulazna struja kroz klamp diode IIK (VI < 0 ili VI > VDD) +/- 20mA Izlazna struja kroz klamp diode IOK (VO < 0 or VO > VDD) +/- 20mA Maksimalna struja koju mo`e da primi jedan pin 25mA Maksimalna struja koju mo`e da da svaki pin 25mA Maksimalna struja koju mo`e port da primi(port A,B,C,D iE)

200mA

Maksimalna struja koju mo`e port da da (port A,B,C,D i E) 200mA 2.12. Organizacija memorije

Strukturu memorije ovog mikrokontrolera ~ine tri odvojena bloka: 1. Programska memorija 2. Memorija podataka 3. EEPROM memorija podataka

Odvojeno od nabrojanoh memorijskih blokova egzistira zasebna struktura

magacina (Stack), koji se satoji od osam 13-bitnih registara. Stack pointer se ne moze ~itati, niti se u njega moze upisivati. Prilikom izvrsenja instrukcije CALL ili prilikom poziva prekida mikrokontrolera, adresa sledee instrukcije se stavlja na magacin. Magacin radi na principu ciklicnog bafera, sto znaci da se u njega mogu staviti osam razli~itih adresa, a da se upisom devete brie prva i tako redom. Programski se ne mo`e utvrditi da li je dolo do prepunjeja steka. Organizcija programske memorije

PIC16F877 imaju 13-bitni programski brojac (PC) koji je u mogunosti da adresira memorijski prostor od 8k programskih re~i od 14 bita. Reset vektor je 0x0000 i od njega po~inje izvravanje programa. Interapt vektor je 0x0004. Mapa programske memorije i magacin prikazani su na slici 2.33.

Page 57: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 60 -

Sl.2.33 Mapa programske memorije i stack

Organizacija memorije podataka

Memorija za podatke je izdeljena u vie celina–banki (banks), a sastoji se od registara opte namene (General Purpose Registers) i registara specijalne funkcije (Special Function Registers). U jednom od specijalnih registara, tzv. STATUS registru postoje dva bita RP1 i RP0 koji slu`e za odabir `eljene banke podataka po principu prikazanom na slici 2.34.

Sl.2.34.Nacin kodovanja Bank

Page 58: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 61 -

Svaka banka mo`e da sadr`i do 128 registara (0x7F). Ni`e lokacije u banci zauzimaju specijalni regisri, a ostatak prostora popunjavaju registri opte namene implementirani kao stati~ki RAM. Neki specijalni registri koji se cesto koriste mapirani su u sve banke da bi se omogućio brzi pristup i redukcija kôda. Mapa registara mikrokontrolera PIC16F877 prikazana je na slici 2.35. Nekoliko specijalnih registara su registri jezgra, usko povezani sa funkcionisanjem CPU. Ostali registri su vezani za periferne module i sluze njihovom upravljanju i kontroli statusa. Programski brojač (PC) odredjuje adresu instrukcije u programskom flesu koja ce sledeca biti pribavljena. Rec je o 13-bitnom registru. Simboli~ko ime ni`eg bajta je PCL. To je registar koji se moze i upisivati i iscitavati. Težih pet bita programskog brojaca smesteni su u izolovani registar PCH kojem se pristupa samo preko leca PCLATH mapiranom u internom RAM-u na adresi 0x0A. STATUS registar je veoma bitan i zato je predvidjeno da se moze adresirati iz bilo koje banke. On pokazuje status aritmeticko-logicke jedinice, reset status mikrokontrolera i sadrzi bite za selekciju banki internog RAM-a. Od navedenih flegova posebno treba izdvojiti Zero bit (Z) koji se postavlja kad je rezultat aritmeticke operacije jednak nuli i bit prenosa/pozajmice Carry (C). Registar OPTION_REG se koristi za konfiguraciju preskalera za tajmer 0 ili Watchdog, za upravljanje tajmerom0, selekciju ivice okidanja eksternog interapta, i za omoguavanje Pull-up otpornika na portu B. Kada je re~ o registrima jezgra ne treba zaboraviti par FSR (File Select Register) i INDF (Indirect File), koji slu`e za indirektno adresiranje memorije podataka. Bilo koja instrukcija koja se obraa INDF registru ustvari indirektno pristupa onoj lokaciji internog RAM-a cija je adresa trenutno u registru FSR.

Page 59: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 62 -

Sl.2.35. Mapa registra PIC16F877

Page 60: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 63 -

Interni EEPROM za podatke

Ako je potrebno neke podatke sa~uvati i po ukidanju napajanja mikrokontrolera, treba ih prethodno zapisati u interni EEPROM. Ova memorija sadrzi 256 bajtova. 2.13. Tajmeri

Ove se periferije koriste za merenje vremena i brojanje eksternih doga|aja. Ugra|ena su tri tajmerska modula (TMR 0,1,2) i svaki ima svoje specificnosti.

Tajmer0 je jednostavni 8-bitni brojač koji generie interapt pri prelasku sa 0xFF na 0x00 (overflow). Poseduju ga svi nizi PICmicro™ procesori i ovde je zadrzana kompatibilnost s njima. Izvor takta za tajmer0 moze biti bilo interni sistemski sat (Fosc/4), bilo spoljni generator takta spojen na pin RA4/T0CKI. Moguce je podesiti da se brojac inkrementira na rastucu ili opadajuu ivicu spoljnjeg signala. U kombinaciji sa modulom tajmera 0 moze se koristiti programabilni preskaler (delilac frekvencije) sa odnosima deljenja od 1:2 do 1:256. Ukoliko deljenje nije potrebno preskaler se dodeli watchdog tajmeru. Kada je preskaler u upotrebi maksimalna frekvencija eksternog izvora iznosi 50 MHz sto je vece od maksimalne frekvencije samog mikrokontrolera.

Tajmer1 je 16-bitni i tako|e je osposobljen da radi kao brojac ili mera~ vremena. Ima tri izvora takta: sistemski sat (Fosc/4), spoljasnji takt ili spoljasnji kristal. Brojac eksternih dogadjaja moze se sinhronizovati sa internim oscilatorom, a postoji i asinhroni na~in rada koji omoguuje da se brojac inkrementira i u sleep re`imu. Preskaliranje je upotrebljivo sa vrednostima deljenja 1:1, 1:2, 1:4 i 1:8.

Tajmer2 je 8-bitni tajmer sa programabilnim preskalerom i postskalerom. Mo`e biti tajmer/brojac opste namene. Me|utim, potreban je CCP modulu prilikom generisanja PWM signala i modulu za sinhronu serijsku komunikaciju (SSP) kao Baud Rate generator. U kooperaciji sa tajmerom 2 koristi se registar PR2 (Period Register). Kada se vrednost broja~a izjedna~i sa vrednou upisanom u registar PR2, generie se odgovarajui interapt. 2.14. CCP moduli

CCP je skraenica za Compare/Capture/PWM. PIC16F877 poseduje dva ovakva modula koji mu poma`u da se lake nosi sa raznim zahtevima real-time aplikacija. U re`imu rada Capture kada se desi doga|aj na pinu RC2/CCP1 16-bitna vrednost tajmera 1 preslikava se u registre CCPR1H:CCPR1L. Istovremeno se setuje korespondentni interapt fleg u registru PIR1. Da bi ova operacija bila uspena tajmer1 mora raditi u tajmerskom re`imu ili re`imu sinhronizovanog brojanja. U re`umu rada Compare 16-bitna vrednost registra CCPR1 se stalno poredi sa vrijednoscu para registara tajmera1. Kada dodje do izjednacenja mogue je da se pin RC2/CCP1 setuje, resetuje ili ostane nepromenjen, sto se ranije podesi odgovarajućim konfiguracionim bajtom upisanim u registar CCP1CON. I u ovom slucaju se setuje interapt fleg CCP1IF.

U re`imu rada PWM (Pulse Width Modulation) pin RC2/CCP1 proizvodi irinsko-impulsni modulisani signal rezolucije do 10 bita. Pojednostavljeni blok-dijagram PWM modula dat je na slici 1.36.

Page 61: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 64 -

Sl.2.36 Pojednostavljeni blok-dijagram PWM modula

Period PWM signala odre|uje se upisom u PR2 registar po formuli: PWM_perid = [(PR2)+1]*4*Tosc*TMR2_preskajler Vreme ispune (Duty Cycle Time) menja se upisom u registar CCPR1L i dva bita registra CCP1CON (biti 5 i 4). Time je omoguena maksimalno 10-bitna rezolucija PWM izlaza. Formula za prora~un je:

PWM_Duty_Cycle = (CCPR1L:CCP1CON<5:4>)*Tosc*TMR2_preskajler 2.15. Ostale periferne jedinice

Mikrokontroler PIC16F877 poseduje jo nekoliko korisnih periferijskih modula koji ce u ovom odjeljku biti samo kratko spomenuti. Mikrokontroler obi~no nije usamljen, nego je deo mre`e ure|aja koji trebaju medjusobno komunicirati i razmenjivati podatke. U tu svrhu, on je opremljen sa tri hardverska komunikaciona modula. Prvi od njih je SSP modul (Synchronous Serial Port), koji sluzi za komunikaciju sa serijskim EEPROM-ima, pomerackim registrima, displej-drajverima, itd. Ovaj modul mo`e raditi u jednom od dva re`ima: 1. Serial Peripheral Interface (SPI) 2. Inter-Integrated Circuit (I2C) Drugi serijski komunikacioni modul je USART (Universal Synchronous Asynchronous Receiver Transmiter).On uglavnom slu`i za povezivanje sa personalnim ra~unarom, ali to nije njegova jedina mogunost primene. USART se moze konfigurisati u neki od sledeih modova rada:

Page 62: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 65 -

1. Asinhroni rad (full duplex) 2. Sinhroni master rad (half duplex) 3. Sinhroni slave rad (half duplex) Osim serijskih, postoji i jedan paralelni komunikacioni modul. Re~ je o modulu PSP (Parallel Slave Port). On sluzi da se PIC16F877 direktno pove`e na 8-bitnu magistralu podataka drugog mikroprocesora. Eksterni procesor tada koristeci linije Read (RD) i Write (WR) mo`e ~itati i upisivati PORTD registar kao svaki drugi 8-bitni le~.

Page 63: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 66 -

3. Hardver 3.1. Funkcionalna i blok šema

Kao što se može videti sa funkcionalne i blok šeme ceo sistem možemo

podeliti u više manjih sekcija koje zaokružuju neku logičku celinu. Lako uočavamo ispravljački stepen, LCD, mikrokontroler sa propratnim elementima i AD konvertor sa ulaznim stepenom.

Sl.3.1. Funkcionalna šema sistema

Page 64: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 67 -

Sl.3.2. Blok šema sistema

3.2. Ispravljački stepen sa stabilizacijom napona

Struktura bloka za napajanje prikazana je na slici 2.3. Pomoću transformatora T1 mrežni napon od 220 V se transformiše u AC napon amplitude 6 V. Nakon toga vrši dvostruko ispravljanje pomoću grecovog ispravljača. Nestabilizovani napon od 6 V se dovodi na ulaz dva linearna stabilizatora 7805. Na izlazu stabilizatora dobija se stabilisani napon od 5 V. Gde se izlaz jednog stabilizatora koristi za napajanje mikrokontrolera, a izlaz drugog za napajanje AD konvertora.

Sl.3.3. Ispravljački stepen sa stabilizacijom napona

Ispravljački

stepen

ADC 0804

Q2

Izlazni intrerfejs

/ LCD

Q

Ulazna veličina

/ Analogni DC napon

PIC 16F877

Q1

Port D

Por t B

Port C

Izlazna reč In wr cs rd

Page 65: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 68 -

3.3.ADC0804

Osobine: 1. 800c48 Bus kompatibilan 2. vreme konverzije ,100us 3. lako se povezuje na veinu mikroprocesora 4. radi u „Stand alone modu „ 5. ttl kompatibilni ulazi i izlazi 6. clock generator na samom ~ipu 7. raspon analognog ulaznog napona 0-5v

OPIS

Familija ADC 0802 je c-mos osmobitna, sukcesivni aproksimativni AD konvretor koji je dizajniran da radi sa 8080a sa kontrol bus izlazima sa 3 stanja. Ovi konvertori se prijavljuju prorcesoru kao memorijske lokacije ili I/O portovi.

Page 66: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 69 -

Page 67: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 70 -

Page 68: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 71 -

Page 69: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 72 -

Kola sa tri stanja i talasni oblici :

Page 70: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 73 -

Page 71: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 74 -

Page 72: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 75 -

Razumevanje specifikacija A/D greke

Perfektn A/D transfer karakterisktika je prikazana na 11a. Horizontalna skala prikazuje analognu ulaznu voltazu sa nivoima od 1 LSB. Digitalni izlazni kodovi koji odgovaraju ovim ulazima su prikazani kao D-1, D, D+1. Za perfektni A/D svaki stub treba da bude lociran -1/2 do +1/2 LSB od centralne vrednosti. Kao sto je prikazano, stubovi su idealni i nemaju irinu. Ta~ni digitalni izlazni kodovi e biti izabrani iz oblasti analogno ulazne volta`e koji se iri +/-1/2LSB od idealnih centralnih vrednosti. Pa je tako svaka nit(tread) iroka 1LSB. Na slici 11b je prikazana transfer funkcija ADC 0802 u najgorem slu~aju. Pored svake funkcije transfera je prikazan grafik greke. Primeuje se da greka sadrzi kvantizacionu nesigurnost A/D-a. Detaljan opis:

Funkc. dijagram ADC 0802 serije A/D konvertora radi na principu sukcesive aproksimacije. Analogni prekida~i se zatvaraju sekvencijalno koristeci sukcesivno-aproksimativnu logiku dok se razlika analogne ulazne volta`e ne poklopi sa referentnom volta`om. Normalna operacija se vri na sledei na~in:

Sa prelaskom sa visoke na nisku tranzociju WR ulaza, resetuju se SAR unutranja kola i nivoi shift registra i INTR izlaz ce biti postavljen na visoko (high). Dokle god su CS i WR nisko AD e ostati u stanju reseta. Konverzacija ce

Page 73: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 76 -

po~eti od 1 do 8 clock perioda kada bar jedan ulaz izvri tranziciju sa niskog na visoko. Posle zavretka tra`enog broja clock pulseva INTR pin e napraviti tranziciju sa visokog na nisko. Ovo se moze iskoristiti da se blokira procesor. RD operacija e prebaciti INTR liniju na visoko opet. Da bi se osiguralo paljenje pod svim mogucim uslovima, potreban eksterni WR puls prilikom prvog paljenja kola Digitalne operacije:

Konverzija po~inje postavljanjem CSR i WR na nisko. To pokree filp flop i rezultujui nivo 1 resetuje 8bitni shift registar i vri input 1 u D flip flop. Unutrasnji clock onda signalizira transfer ove 1 na Q izlaz DFF1a. Ako set signal nije vie prisutan start F/F je resetovan i 8bitni shift registar tada mo`e da u-clock-uje 1 to startuje konverziju.. Da nema ovog signala jo uvek bi trajao reset mod. Kad bi podaci hteli da se pro~itaju, kombinacije CS i RD u niskom nivou e prouzrokovati da se INTR F/F resetuje i izlazno kolo sa 3 stanja e biti u mogunosti da da 8bitne digit. izlaze. Analogna Operacija

Analogna komapracija se vri uz pomo kola za sabiranje kapacitivnog napajanja. Tri kondenzatora dele zajedni~ki ~vor sa ulazom na auto nivelisanim komparaotorom. Ulazni kondenzator se ukljucuje izmedju Vin+Vin-. Punjenje mre`e korespodira izmerenoj razlici izmedju ulaza i trenutne totalne vrednosti postavljene od strane sukcesivnog aproksimativnog registra. Ulazni bypass kondenzatori

Bypass kondenzatori na ulazu u usrednjavaju ova punjenja i prouzrokuju da jednosmerna struja te~e kroz izlazne otpornike analognog izvora signala. Na 640kHz clock frekvencije sa Vin+ inputom od 5V ova jednosmerna struja je na max od oko 5 mikroampera. Zbog toga se bypass kondenzatori ne smeju koristiti na analognim ulazima ili pri Vref/2 pinu za izvore sa velikom otporncu tj. veom od 1000oma. Ako su bas potrebni vri se minimizacija veli~ine kondenzatora. Otpornost ulaznog izvora

Visok nivo otpronosti izvora, gde ne postoje bypass kondenzatori, ne prouzrokuje greke jer se ulazne struje primire pre nego to po~ne komparacija. Za izvore sa niskom otpornou dovoljan je kondenzator od 0.1F na ulazu pri ~emu se smanjuje EMI. 100omski otpornici se mogu koristiti za izolaciju ovih kondenzatora od Izlaznog operacionog poja~ava~a.

Page 74: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 77 -

Podeavanje referentnog naponskog opsega

Za max fleksibilnoost ovi AD su dizajnirani da se prilagode volta`i od 5v, 2.5v ili po referenci . Ovo je omogueno dizajniranjem ICA kao sto je prikazno na slici 12 . Mora se primetiti da je referentna volta`a za IC ili ½ 1/2½ volta`e koja je dovedena na V+ pinu ili je jednaka volta`i koja je dovedena sa spoljne stranena na pin Vref/2. To omoguava korienje ref volta`e od 5V ili kao alternativa mo`e se koristiti volta`a manja od 2.5V dovedena Vref/2 ulazu. Unutranji gain Vref/2 ulaza je 2. Ovakva prilago|avajua referentna volta`a moze koristiti reducirani opseg ili dinami~ki volta`ni opseg analognog ulaza. Tako se koristi puna 8bitna rezolucija na ovako reducirani analogno ulazni volta`ni raspon, kako je prikazano na slici 13. Za uveane ulazne skale koristi se slika 14 i 15.

Page 75: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 78 -

7. Potrebna

Page 76: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 79 -

Ta~nost reference Konvertor se mo`e koristiti u pseudo-ratiometrik modu ili apsolutnom

modu. U ratiometriskom veli~ina volta`ne reference je zna~ajan faktor i u izlazu pretvara~a izvora i u izlazu AD konvertora te se zbog toga poništavaju u finalnom izlaznom kodu. U apsolutnoj konverziji i po~etna vrednost i temperaturna stabilnost referentne volta`e su van`i faktori pri odre|ivanju ta~nosti. Za Vref/2 volta`e 2,5V nominalne vrednosti po~etne greške su +-10mV i one mogu da izazovu konverzione greške od +-1LSB kao posledica vrednosti gejna 2 na ulazu Vref/2. Kod aplikacije pri reduciranoj širini opsega inicijalna vednost i stabilnost ulazne volta`e na Vref/2 postaje još va`nije. [Širine opsega manje od 2,5V potra`uju ~ak i stro`e kriterijume pri inicijalnoj ta~nosti i stabinosti referentnog izvora. Generalno referentna volta`a potra`uje inicijalna podešavanja. Greške koje se javljaju prilikom unosa pogrešne referentne volta`e se javlja u vidu greške na celoj skali A/D transfer funkcije. Nulta greka

Nula kod A/D-a ne tra`i nikakva podešavanja. Ako minimalna vrednost analognog ulaznog napona nije uzemljenje onda postoji mogunost nultog offset-a. Konvertor se mo`e povezati na izlaz 0000 0000 digitalnog koda zarad minimalne ulazne volta`e pomeranjem A/D Vin(-) ulaza na vrednost Vin (min). Ovo koristi operaciju diferencijalnog moda A/D konvertora. Nulta greška kod A/D konvertora pokazuje lokaciju prvog stuba transfer funkcije i mo`e se meriti uzemljenjem ulaza Vin (-) i primenom male ja~ine pozitivne volta`e na Vin(+) ulazu. Nulta greška je razlika izme|u stvarnog ulaza jednosmerne volta`e koja je potrebna da bi došlo do prelaza digitalnog koda na izlazu 0000 0000 na 1111 1111 i idealne vrednosti od ½ LSB-a. Podešavanje za celu skalu

Podešavanja na celoj skali se mogu raditi uz pomu diferencijalne ulazne volta`e koja je za 3/2 LSB-a manja od `eljenog opsega analogne volta`e na celoj skali i onda podešavanjem ja~ine ulaza Vref/2 za kod na digitalnonm izlazu koji se upravo promenio sa 1111 1110 na 1111 1111.

Page 77: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 80 -

Opcije za klokovanje

Klok za A/D mo`e potei od strane spoljnjeg izvora kao što su CPU klok ili se spoljna RC mre`a mo`e dodati da bi se omoguilo samo-klokovanje. CLK IN omoguava korišenje [Šmit trigera kao što je prikazano na slici 16. Jako kapacitivno ili jednosmerno napajanje CLK-a R pina se treba izbei pošto bi ovo poremetilo rad konvertora. Ja~ina manja od 50pF je dozvoljen. Restartovanje tokom konverzije

Ako se A/D restartuje tokom konverzije konvertor se resetuje i nova konverzija po~inje. Izlazni podaci kola za pamenje se ne apdejtuju ako konverzija koja je u toku nije dovršena. Podaci sa predhodne konverzije ostaju na kolu za pamenje.

Driving the data BUS

CMOS A/D kao MOS mikroprocesori i memorije imaju potebu za BUS driver-om kada totalni kapacitet DATA BUS-a postane veliki. Ostala kola, koja su povezana na data BUS, pridodaju totalnoj kapacitivnosti ~ak i u modu sa tri stanja. Postoje odre|ene alternative koje dizajneri mogu da koriste za rešavanje ovog problema. U osnovi, punjenje kapaciteta data BUS-a usporava vreme odziva i ako su ispunjene sve specifikacije DC-a za sisteme koji rade pod relativno sporom CPU klok frekfencijom postoji više vremena da se uspostave pravilni logi~ki nivoi na BUS-u te je time omoguen prenos podataka vee kapacitivnosti. Za više frekfencije CPU kloka vreme se mo`e produ`iti za I/O o~itavnja insertovanjem ~ekajuih stanja (8080) ili korišenjem kola za produ`avanjem kloka. Najzad ako je vreme kratko a kapacitet prenosa veliki mora se koristiti spoljni BUS driver. Ovo mogu biti buffer-i sa tri stanja ili specijalni produkti za ostvarivanje veeg protoka. Napajanje

Vrhovi šumova na V+ liniji snabdevanja mogu izazvati konverzione greške jer komparator reaguje na ovaj šum. Zbog toga se koristi specijalni filter

Page 78: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 81 -

koji se stavlja blizu V+ konvertorskog pina i preporu~uje se vrednosti od 1uF. Ako se u sistemu nalazi ikakva neregulisana volta`a odvojeni 5V-ni regulator volta`e za konvertor e dosta smanjiti digitalni šum na V+ liniji za snabdevanje.

Mere predostronosti prilikom povezivanja i priklju~ivanja

Standardni digitalni priklju~ci nisu zadovoljavajui za širokopojasno povezivanje sa A/D konvertorom. Mogu se koristit priklju~ci na plo~i PC-a. Sve `ice i prenosnici logi~kih signala bi se trebalo grupisati i maksimalno odvojiti od prenosnika analognog signala. U suprotnom bi se mogao pojaviti ne`eljeni šum. Bypass kondezator za napajanje i kondezator za samo-klokovanje bi trebalo da budu vezani za digitalno uzemljenje. Bilo koji Vref/2 Bypass kondezator, filter kondezator analognog ulaza bi trebalo da budu povezani za analogno uzemljenje. Test za dobro uzemljenje predstavlja merenje nulte greške A/D konvertora.

Testiranje A/D konvertora

Postoje mnogi nivoi kompleksnosti vezani za testiranje A/D konvertora.

Jedan od najprostijih testova jeste korišenje poznate analogne ulazne volta`e na konvertoru i korišenje LED-a da bi se prikazao rezultujui izlazni kod kao na sl. 18. Vref/2 pin treba povezati na 2,56V i treba se koristiti V+ volta`a za napajanje od 5,12V. To daje LSB vrednost od 2mV. Ako se koristi podešavanje cele skale analogna ulazna volta`a od 5,09V se dovodi Vin + pinu pri ~emu je Vin – pin uzemljen. Vrednost Vref/2 ulazne volta`e se treba podešavati dok se kod na digitalnom izlazu ne prebaci sa 1111 1110 na 1111 1111. Ova vrednost se onda koristi za sve testove. LED displej za digitalni izlaz se mo`e dekodirati deljenjem 8bit na 2 hex karaktera, jedan sa 4 najva`nijih bit-ova i jedan sa 4 najmanje va`nijih bit-ova. Izlazne volta`a se onda tra`i po formuli: Vout = (MS/16+LS/256)*5,12V

Page 79: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 82 -

Tipi~na primena Povezivanje 8080/85 ili ZED-80 mikroprocesor

Ovaj konvertor je dizajniran da se direktno povezuje sa 8080/85 ili ZED-80 mikroprocesor. Mogunost izlaza sa tri stanja A/D konvertora eleminiše potrebu za spoljnim interfejs ure|ajem i ako je dekodiranje adresa još uvek potrebno da bi se generisao prikladan CS za konvertor. A/D se mo`e mapirati u memorijskom prostoru ili se mo`e kontrolisati kao ure|aj za I/O koristei i I/OW strobere i dekodovanjem adresnih bitova A0 u A7 da bi se pribavio CS ulaz. Korišenjem I/O prostora dobijamo 256 dodatnih adresa i mogunost prostijeg 8bit-nog dekodera adresa, ali se podaci mogu ubacivati samo preko akumulatora. Da bi se iskoristile referentne instrukcije dodatne memorije A/D se mora mapirati u memorijskom prostoru. Slika 21.

Standardni kontrol BUS signali 8080-ice se mogu direktno povezati na digitalne kontrolne ulaze A/D-a, zbog potrebe za BUS tajmingom, da bi se omoguilo startovanje konvertora i ubacivanje podataka na data BUS. BUS driver se treba koistiti za ja~e mikroprocesorske sisteme gde se prevazilazi kapacitivna ja~ina vea od 100pF. Veoma je po`eljno primetiti da u sistemu gde je A/D konvertor 1 od 8 ili manje I/O mapiranih ure|aja nema potrebe za adresnim dekodiranjem. Svaki od 8 adresnih bit-ova se mo`e koristiti direktno kao ulazCS-a. Povezivanje derivata 6800 mikroprocesora

Kontrolni BUS za derivate 6800 mikroprocesora ne koristi RD i WR strobe signale. Umesto toga koristi jedinstvenu R/W liniju i dodatno vreme ako je potrebno. Svi I/O ure|aji su memorijski mapirani u 6800 sistem, i specijalan signal VMA indicira da je trenutna adresa va`ea. Slika 23 pokazuje šemu za interfejs gde je A/D emorijski mapiran u 6800 sistem. Prostije, CS dekodiranje je prikazano koristei ½ DM8092. Zapamtiti da u mnogim 6800 sistemima ve dekodirana 4/5 linija se dovodi na zajedn~iki BUS na pinu 21. Ona se mo`e direktno vezati na CS pin A/D-a ako nijedan drugi ure|aj nije adresiran na HEX ADDR:4XXX ili 5XXX.

Na slici 24 ADC 0802 serija je povezana na MC 6800 mikroprocesor pomou porta B na MC 6820 ili MC 6821 perifernog interferencijskog adaptera. Ovde je CS pin A/D konvertora uzemljen pošto je PIA ve memorijski mapiran u MC 6800 sistemu i nije potrebno CS dekodiranje. Tako|e primetiti da su linije podataka A/D izlaza povezane na BUS mikroprocesora pod programskom kontrolom kroz PIA te je mogue A/D RD pin uzemiti.

Page 80: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 83 -

Page 81: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 84 -

Page 82: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 85 -

Page 83: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 86 -

3.4. Ulazni stepen AD konvertora ADC0804 AD konvertor ADC0804 ima samo jedan ulazni pin, zato postoje parovi

ugradnih buksni čijim spajanjem na njega možemo dovesti različite ulazne signale. Što se tiče jednosmernih signala postoje dva fiksna ulaza; jedan od 2.5 V (od razdelnika napona R10, R11) i drugi od 3.36 V (od razdelnika napona R 2, R14), takođe postoji jedan promenljivi ulaz od 0 – 5 V (od potenciometra R12). Ukoliko je potrebno dovesti naizmenični signal ostavljena je mogućnost preko para ulaznih ugradnih buksni J3. Tada razdelnik napona R10, R11 podiže nivo naizmeničnog signala za 2.5 V, diode D4 i D5 imaju zaštitnu ulogu.

Stabilizator (LM336) koristimo radi dobijanja referentnog napona od 2.5 V za AD knovertor, čiju je vrednost moguće podešavati preko potenciometra R6.

Frekvencija AD konvertora ADC0804 definisana je RC članom (R9,C7) preko formule:

791.11

CRf

××=

Sl.3.7. Ulazni stepen AD konvertora ADC0804

3.5. Povezivanje kola za reset i oscilatora

Strukturu kola za reset čine pasivni elementi R3 i C4 čija je vremenska konstanta tako izabrana da obezbedi korektni start programa nakon uključenja sistema na napajanje. Uloga tastera S1 je da obezbedi manuelni reset za slučaj da mikrokontroler iz određenih razloga blokira rad u toku izvršenja programa.

Način povezivanja kola oscilatora je prikazan na slici 3.8. U konkretnom rešenju, koje se odnosi na povezivanje kristalnog oscilatora, poštovane su preporuke firme Microchip. Frekvencija oscilatora je 4 MHz.

Page 84: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 87 -

Kondenzator C4 ima ulogu da filtrira napon na pinu MCLR za vreme rada kontrolera, tj. da ne dođe do neželjenog resetovanja mikokontrolera usled postojanja VF smetnji na vodovima za napajanje.

Sl.3.8. Način povezivanja mikrokontrolera

Dioda D3 ima zaštitnu ulogu pri programiranju mikrokontrolera

programatorom koji se povezuje na konektor S2.

3.6. Kontrolna logika

Kao što se može videti sa slike i blok šeme sprega mikrokontrolera PIC16F877 i AD konvertora ADC0804 ostvarena je preko porta C i porta D mikrokontrolera, dok je preko porta B izvršena sprege mikrokontrolera i LCD-a.

Port C je definisan kao ulazni port mikrokontrolera i njegova uloga je da prihvati izlaznu osmobitnu digitalnu reč AD konvertora.

Pinovi porta D služe za kontrolu AD konvertora. Pin RD0 porta D mikrokontrolera vezan je za pin CS AD konvertora. CS

služi za selektovanje AD konvertora, ukoliko ih ima više. U konkretnom slučaju postji samo jedan AD konvertor pa je CS postavljen na logičku 0.

RD1 je vezan za pin RD AD konvertora. RD definiše stanje izlaznog trostatičkog bafera AD kovertora. Kada se RD postavi na logičku 1 izlaz trostatičkog bafera je u stanju visoke impedanse, a kada dovedemo logičku nulu na izlazu AD konvertora imamo neku osmobitnu digitalnu reč.

RD2 je vezan za pin WR AD konvertora. WR omogućava početak AD konverzije, silaznom ivicom signala koji dovodimo na WR startujemo proces AD konverzije, dok uzlazna ivica startuje interni brojač po čijem odbrojavanju se završava proces AD konverzije.

Page 85: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 88 -

RD3 je vezan za pin INTR AD konvertora. Signalom koji generiše na pinu INTR AD konvertor obaveštava mikrokontroler o stanju procesa AD konverzije. Pre početka AD konverzije signal INTR ima vrednost logičke 0, u trenutku startovanja AD konverzije skače na vrednost logičke 1, dok se po završetku procesa konverzije vraća na logičku 0.

Sl.3.9. Sprega mikrokontrolera i AD konvertora

Sl.3.10. Talasni oblici kontrolnih signala

Takođe, trebamo napomenuti da je na pin RD7 mikrokontrolera povezan

mikroprekidač S3, čijim aktiviranjem startujemo proces AD konverzije.

Page 86: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 89 -

3.7. Povezivanje LCD-a

Široku primenu u savremenim mikrokontrolerskim sistemima postigli su LCD displeji koji pored prikaza numeričkih karaktera imaju u sebi implementiran ceo ASCII alfabet, kao i razne specijalne znake. Postoje različiti tipovi alfanumeričkih LCD displeja, ali najveći procenat se bazira na istom čip-setu tipa Hitachi HD44780. Iz tog razloga displeji koji su kompatibilni sa HD44780 mogu koristiti iste softverske rutine, bez obzira na tip ili proizvođača. U konkretnom rešenju za povezivanje LCD-a korišćena su sledeća tri konektora:

1. konektor za prenos podataka, LCD_DATA; 2. konektor kojim se predaju komande LCD-u, LCD_DATA1; 3. konektor za napajanje, LCD_NAP. LCD displej je instaliran na gornjem delu osnovne ploče. Regulacija

kontrasta LCD displeja ostvarena je preko potenciometra R5 nominalne vrednosti 10k. Način povezivanja LCD displeja na napajanje i interfejsa za regulaciju kontrasta prikazan je na slici na slici sl.3.11.:

Sl.3.11. Povezivanje LCD displeja na napajanje i interfejsa za regulaciju kontrasta

LCD displej je formata 2x16 karaktera. Svaki karakter moze da prikaže

maksimalno 7x9 osnovnih elemenata. Format prikaza karaktera je programabilan i definiše se na početku prikaza informacije u redu. Pristup displeju radi upisa karaktera ostvaruje se preko 14-to pinskog konektora, paralelnim pristupom 8-mo bitnog podatka na nozicama od D0 do D7 (slika 3.12. i 3.13.).

Page 87: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 90 -

Sl.3.12. Fizički izgled organizacije prikaza LCD-a i adresne organizacije

memorije za prikaz

Funkcija i namena svakog od pina na konektoru LCD displeja je definisana na slici 3.13.

Sl.2.13. Raspored i funkcije pinova konektora LCD-a

Ukazaćemo sada na princip rada LCD displeja. Sa mikrokontrolerom LCD

displej komunicira preko sledeće dve magistrale: • dvosmerne magistrala za podatke, D0 do D7, preko ovih linija

mikrokontroler moze da upisuje u ili čita podatke iz LCD displeja

Page 88: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 91 -

• jednosmerne upravljačke magistrale – čine je linije RS, R\W i E. Signal E kada je aktivan (E=1) dozvoljava rad displeja. Signal R\W definise operaciju čitanja ili upisa (R\W=1 obavlja se operacija čitanja, u suprotnom je upis). Signalom RS definiše se kom se registru vrši pristup, kada je RS =1 registrima za podatke nazvanih DDRAM-a (Display Data Ram) i CGRAM-a (Character Generator Ram), a kada je RS=0 pristupa se komandnom registru.

Upisom u DDRAM podaci se prikazuju na ekranu LCD-a. CGRAM

prikazuje karaktere na displeju u matrično tačkastoj formi. Sadržaj CGRAM-a je moguće softverski menjati, tako da se mogu prikazati forme karaktera kreiranih po želji korisnika. Internu memoriju LCD displeja koja se koristi za prikaz karaktera čine dva reda od po 40 lokacija (vidi sliku 3.14.). U svakoj lokaciji se memoriše po jedan karakter, a ukupno je vidljivo 16 karaktera, a nevidljivo 24. To znaci da je moguće ostvariti horizontalno pomeranje informacija u toku prikaza. Na slici 2.12. prikazane su adrese vidljivih lokacija na LCD displeju, pri čemu se početna adresa prikaza definiše komandom za prikaz u fazi inicijalizacije.

Sl.3.14. Dvoredni smart LCD

U cilju uštede broja pinova kojim se LCD displej povezuje na mikrokontroler projektanti cesto koriste četvorobitni rezim rada komuniciranja. Naime, umesto da se vrši istovremeni prenos svih osam bitova karaktera prenos se ostvaruje na nivou niblova, i to tako što se prvo prenosi MS a nakon toga LS nibl. Treba pri ovome naglasiti da se četvorobitni rezim komuniciranja definiše odgovarajućom komandom u fazi inicijalizacije. Na ovaj način umesto da se povezivanje ostvari sa 11, realizuje se sa 7 linija. Ako se LCD koristi samo za prikaz poruka, pin RW se može povezati na masu i broj potrebnih pinova je tako smanjen na 6.

Na slici 3.15. je pikazno povezivanje LCD-a sa PIC16F877 u 4-bitnom režimu komuniciranja. U konkretnoj realizaciji korišćen je PORT D i to tako da su za prenos podataka iskorišćeni pinovi od RD4 do RD7, a za upravljanje radom displeja pinovi RD2 i RD3.

Page 89: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 92 -

Sl.3.15. Način povezivanja LCD-a i mikrokontrolera

LCD displej je programibilna periferija, pa kao takva podržava određeni

skup komandi. Spisak komandi i funkcije koje obavljaju te komande prikazan je na slici 3.16.

Sl.3.16. Tabela instrukcija LCD-a

Page 90: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 93 -

3.8. Fizički izgled štampanih pločica Na slikama 3.17. do 3.19. prikazan je oblik štampanih pločica sistema projektovanih u programskom paketu Protel 99SE.

Sl.3.17. Izgled štampane pločice - pogled odozgo

Page 91: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 94 -

Sl.3.18. Izgled štampane pločice - pogled odozdo

Sl.3.19. Raspored komponenata

Page 92: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 95 -

3.9. Spisak korišćenih komponenata

Spisak ugrađenih elemenata korišćenih u projektu dat je u tabeli 3.1.

Oznaka komponente Naziv komponente Vrednost komponente R1 Otpornik 1/4W 1k R2 Otpornik 1/4W 1k R3 Otpornik 1/4W 4k7 R4 Otpornik 1/4W 4k7 R5 Potenciometar 10k R6 Potenciometar 10k R7 Potenciometar 10k R8 Otpornik 1/4W 10k R9 Otpornik 1/4W 2k2 R10 Otpornik 1/4W 100k R11 Otpornik 1/4W 100k R12 Otpornik 1/4W 100Ω

R13 Otpornik 1/4W 100Ω R14 Otpornik 1/4W 2k

C1 Elektrolitski kondenzator 470μF C2 Blok kondenzator 100nF C3 Blok kondenzator 100nF C4 Blok kondenzator 100nF C5 Keramički kondenzator 22pF

C6 Keramički kondenzator 22pF

C7 Keramički kondenzator 150pF

C8 Blok kondenzator 100nF C9 Blok kondenzator 100nF

BP1 Blok kondenzator 100nF BP2 Blok kondenzator 100nF BP3 Blok kondenzator 100nF D1 Grec 1A D2 LED 3mm Crvena D3 Dioda BAT42 D4 Dioda 1N4007 D5 Dioda 1N4007 Q LCD Displej HD44780 Kompatibilan Q1 Mikrokontroler PIC16F877 Q2 AD Konvertor ADC0804 Q3 Stabilizator 2.5V LM336 U1 Stabilizator 5V 7805 U2 Stabilizator 5V 7805

Page 93: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 96 -

J1 Konektor 220V

J3 Par ugradnih buksni Ženski

J4 Par ugradnih buksni Ženski

J5 Par ugradnih buksni Ženski

J6 Par ugradnih buksni Ženski T1 Transformator 2.5VA 220/6V 400mA Y1 Oscilator 4MHz S1 Mikroprekidac - S2 Konektor Petopinski S3 Mikroprekidac -

Tabela 3.1. Spisak komponenata

Page 94: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 97 -

4. Softver 4.1. Instalacija korišćenog softvera

Za kreiranje programa na HLL-u C koristićemo programski paket Hi-Tech. Koraci koje treba preuzeti da bi se instalirao paket Hi- Tech i kreirala aplikacija na programskom jeziku C, su sledeći:

1. Pre instalacije ovog programskog paketa potrebno je instalirati MPLAB, jer se kasnije Hi-Tech integriše u MPLAB programski paket. Instalacija MPLAB-a počinje pokretanjem aplikacije MPLAB v6.41.EXE. Po pokretanju aplikacije na monitoru se pojavljuje prozor:

2. Za nastavak instalacije potreban je kliknuti NEXT . Nakon ovoga se pojavljuje sledeći prozor:

Page 95: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 98 -

3. Čekira se polje I ACCEPT i klikom na NEXT sledi nastavak instalacije i pojavljuje se prikaz sledećeg oblika

4. Klikom na Browse bira se direktorijum gde se instalira MPLAB, a zatim klikom na NEXT nastavlja se instalacija.

Page 96: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 99 -

5. Aplikacija nas pita da li želimo da napravimo prečicu u start meniju. Odabiramo jednu od ponuđenih opcija, a zatim sledi klik na NEXT.

6. Bira se da li želi prečica na radnoj površini, a zatim treba kliknuti na NEXT.

Page 97: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 100 -

7. Ako je korisnik spreman za instalaciju to potvrđuje tasterom NEXT pa se dobija sledeći prozor:

8. Potrebno je sačekati određeni vremenski period da se završi instalacija, a zatim se pojavljuje prozor prikazan na sledećoj slici:

Page 98: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 101 -

9. Za nastavak instalacije kliknuti na NEXT.

10. Nakon čitanja poruke koja se odnosi na USB Driver Installition Please

read treba kliknuti na NEXT.

Page 99: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 102 -

11. Nakon čitanja poruke koja se odnosi na Driver Installition You MUST read treba kliknuti na NEXT.

12. Nakon čitanja poruke koja se odnosi na USB Driver Installition Please read treba kliknuti na CONTINUE.

Page 100: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 103 -

13. Nakon čitanja poruke koja se odnosi na USB Driver Installition Please read treba kliknuti na CONTINUE.

14. Za kraj instalacije kliknuti na FINISH. 15. Poželjno je u ovom trenutku restartovati računar.

Page 101: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 104 -

Nakon instalacije paketa MPLAB potrebno je instalirati programski paket Hi-Tech i integrisati ga u MPLAB. Da bi se obavila ova aktivnost potrebno je preuzeti sledeće korake:

1. Instalacija počinje pokretanjem aplikacije picclite.exe. Po pokretanju aplikacije na monitoru dobijamo sledeći prozor:

2. Klikom na NEXT nastavlja se instalacija.

3. Da bi se nastavilo sa instalacijom treba kliknuti na NEXT.

Page 102: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 105 -

4. U generisanom prozoru nude se uslovi korišćenja licenciranog softvera.

Klikom na YES nastavlja se proces instalacije.

5. Klikom na taster (polje) Browse bira se direktorijum gde se instalira Hi-Tech, a zatim klikom na polje NEXT nastavlja se instalacija

Page 103: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 106 -

6. Za nastavak instalacije potrebno je kliknuti na polje NEXT

7. U ovom trenutku potrebno je sačekati izvesni vremenski period da se završi instalacija Hi-Tech..

Page 104: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 107 -

8. Odgovorom na YES na generisanom prozoru izvršiće se integracija Hi-Tech u MPLAB razvojnom okruženju.

9. Za nastavak kliknuti na OK.

Page 105: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 108 -

10. Kliknuti na NEXT za nastavak.

11. Klikom na YES završavamo instalaciju Hi-Tech i po automatizmu se restartuje računar.

Page 106: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 109 -

Sada je potrebno podesiti MPLAB tako da koristi Hi-Tech kompajler u procesu kompajliranja.

1. Klikom na ikonu MPLAB koja se nalazi na radnoj površini pokreće se kompajler i generiše se prozor:

2. Sada je potrebno podesiti MPLAB tako da koristi Hi-Tech kompajler u procesu kompajliranja. Klikom na Project → Project Wizard pojavice se novi prozor na monitoru.

Page 107: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 110 -

3. Za nastavak kliknuti na NEXT.

4. U polju Device potrebo je odabrati PIC16F877.

Page 108: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 111 -

5. U polju Actiive Toolsuite potrebno je odabrati opciju HI-TECH Toolsuite,a zatim kliknuti na polje NEXT.

Page 109: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 112 -

6. U polju Poject Name potrebno je upisati ime projekta, a zatim u polju Project Directory odabrati direktorijum gde ćemo smestiti prethodno napisani kôd.

7. Na ovom prozoru treba odabrati folder u kojoj se nalazi napisan nas program koji želimo da kompajliramo. Klikom na potrebni fajl, pa zatim na ADD , štikliranjem polja ispred imena odabranog fajla i klikom na NEXT generiše se prozor:

Page 110: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 113 -

8. Klikom na FINISH završavaju se potrebna podešavanja Na dalje sledi editovanje i proces kompajliranja napisanog programa (Project → Build All) koji kao rezultat daje HEX fajl koji se kasnije da učitava u Ic-Prog. Kada ovo završimo potrebo je instalirati programski paket Ic-Prog.

1. Instalacija počinje pokretanjem aplikacije icprog.exe. Zatim je potrebno je

izvršiti podešavanja kao na priloženoj slici, a zatim kliknuti na polje OK.

Page 111: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 114 -

2. Zatim se pojavljuje sledeći prozor:

3. Ukoliko je potrebno treba podesiti odgovarajući drajver, a zatim sledi učitavanje HEX fajla koji se dobija kompajliranjem programa. To možemo uraditi klikom na: File→Open File...

Page 112: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 115 -

Nakon toga pojavljuje se prozora na kom se može videti heksadecimalni sadržaj iskompajliranog programa. Potrebno je na njemu podesiti tip oscilatora i fuses podešavanja, ako već nisu programski podešena.

Page 113: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 116 -

4. Loadovanje se pokrece klikom na: Command→Program All (kao na

prilozenoj slici):

5. Nakon potvrde počinje proces loadovanja, a zatim automatski i proces

verifikacije.

4.2. Listing programa

Listing programa u c-u //************************************************************** // Projekat: ADC sa ADC0804 // Sourse: adc0804.c // procesor:PIC16F877 //************************************************************** #include <pic.h> #include "delay.c" #include "lcd.c" __CONFIG(LVPDIS&XT&PWRTEN&WDTDIS&DEBUGDIS); __EEPROM_DATA('A','D','C','_','0','8','0','4'); __EEPROM_DATA('J','U','N','_','2','0','0','8'); __EEPROM_DATA('V','E','R','_','1','.','0','0'); __EEPROM_DATA('B','R','A','N','K','O','_','S'); __EEPROM_DATA('T','O','J','I','C','_','M','I'); __EEPROM_DATA('L','A','N','_','S','T','O','I'); __EEPROM_DATA('L','K','O','V','I','C','.','.'); #define adc_data PORTC #define naponska_ref 500000

Page 114: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 117 -

#define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit)) //dajemo simbolocka imena pinovima static bit cs @ PORTBIT(PORTD,0); static bit rd @ PORTBIT(PORTD,1); static bit wr @ PORTBIT(PORTD,2); static bit intr @ PORTBIT(PORTD,3); static bit start @ PORTBIT(PORTD,7); void broj(unsigned char b) unsigned char pom=0,k=8; unsigned char maska=0b10000000; lcd_gotoxy(5,1); //pozicioniraj kursor while(k>0) pom=b&maska; maska=maska>>1; pom=pom>>k-1; lcd_dec_str(pom); //stampaj binarno k=k--; void meri(void) unsigned long napon=0; unsigned long napon1=0; napon1=(naponska_ref/256); lcd_gotoxy(0,0); cs=0; //omoguci konvreziju rd=0; //omoguci izlaz wr=1; // cekaj konverziju DelayUs(1); wr=0; //pocni konverziju DelayUs(10); wr=1; while(intr); DelayUs(1); napon=(napon1*adc_data); //racunanje napona napon=(napon/1000); // odredjivanje formata lcd_puts("NAPON: "); lcd_dec2str3(napon); //prepravi potprogram za decimalnu tacku lcd_puts(" V"); lcd_gotoxy(0,1); lcd_puts("BIN: "); broj(adc_data); //stampaj binarni oblik void main(void) GIE=0; //onenomoguci sve prekide TRISC=0xFF; TRISA=0x00;

Page 115: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 118 -

TRISE=0b000; TRISD=0x88; TRISB=0x00; PORTA=0x00; PORTE=0b000; PORTB=0x00; PORTD=0x00; lcd_init(); lcd_clear(); lcd_gotoxy(0,0); lcd_puts("PROJEKAT IZ"); lcd_gotoxy(0,1); lcd_puts("MIPS-A"); DelaySec(2); lcd_clear(); while(1) if(!start) while(1) meri(); DelayUs(200); Napomena: Ovde je prikazan samo glavni program, u kome su korišćene gotove biblioteke; pic.h, delay.c, lcd.c koje su priložene uz kompletnu dokumentaciju projekta.

Listing programa u asembleru

HI-TECH Software PICC Macro Assembler V9.60 1 processor 16F877 2 opt pw 79 3 psect text0,local,class=CODE,delta=2 4 psect text1,local,class=CODE,delta=2 5 psect text2,local,class=CODE,delta=2 6 psect text3,local,class=CODE,delta=2 7 psect text4,local,class=CODE,delta=2 8 psect text5,local,class=CODE,delta=2 9 psect text6,local,class=CODE,delta=2 10 psect text7,local,class=CODE,delta=2 11 psect text8,local,class=CODE,delta=2 12 psect config,global,class=CONFIG,delta=2 13 psect eeprom_data,global,class=EEDATA, + space=2,delta=2 14 psect text9,local,class=CODE,delta=2 15 psect text10,local,class=CODE,delta=2 16 psect strings,global,class=STRING,delta=2 17 psect temp,global,ovrld,class=BANK0,space=1,de

Page 116: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 119 -

+ lta=1 18 0000 19 0000 20 0000 21 0000 22 0000 23 0000 24 0000 25 0000 26 0000 27 0000 28 29 psect text0 30 0522 _DelayMs 31 ; _cnt assigned to ?a_DelayMs+0 32 0000 _DelayMs$cnt set ?a_DelayMs 33 ; _i assigned to ?a_DelayMs+1 34 0000 _DelayMs$i set ?a_DelayMs+1 35 ; __dcnt assigned to ?a_DelayMs+2 36 0000 _DelayMs$_dcnt set ?a_DelayMs+2 37 ;_cnt stored from w 38 0522 0183 clrf 3 ;select bank 0 39 0523 00A7 movwf ?a_DelayMs 40 0524 l4 41 ;delay.c: 11: void 42 ;delay.c: 23: i = 4; 43 0524 3004 movlw 4 44 0525 00A8 movwf ?a_DelayMs+1 45 0526 l7 46 ;delay.c: 24: do 47 ;delay.c: 25: unsigned char _dcnt; _dcnt = (2 + 50)/((12*1000L)/(4*1000L))|1; while(--_dcnt != + 0) continue; ; 48 0526 3053 movlw 83 49 0527 00A9 movwf ?a_DelayMs+2 50 0528 l9 51 0528 0BA9 decfsz ?a_DelayMs+2 52 0529 2D28 goto l9 53 ;delay.c: 26: while(--i); 54 052A 0BA8 decfsz ?a_DelayMs+1 55 052B 2D26 goto l7 56 ;delay.c: 27: while(--cnt); 57 052C 0BA7 decfsz ?a_DelayMs 58 052D 2D24 goto l4 59 052E 0008 return 60 61 psect text1 62 059C _DelaySec 63 ; _sec assigned to ?a_DelaySec+0 64 0000 _DelaySec$sec set ?a_DelaySec 65 ; _loop assigned to ?a_DelaySec+1 66 0000 _DelaySec$loop set ?a_DelaySec+1 67 ;_sec stored from w 68 059C 0183 clrf 3 ;select bank 0

Page 117: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 120 -

69 059D 00A1 movwf ?a_DelaySec 70 ;delay.c: 31: void 71 059E 01A2 clrf ?a_DelaySec+1 72 059F 2DA3 goto l15 73 05A0 l12 74 ;delay.c: 36: 75 05A0 30FA movlw -6 76 05A1 2522 call _DelayMs 77 05A2 0AA2 incf ?a_DelaySec+1 78 05A3 l15 79 05A3 0822 movf ?a_DelaySec+1,w 80 05A4 00A3 movwf ?a_DelaySec+2 81 05A5 01A4 clrf ?a_DelaySec+3 82 05A6 0821 movf ?a_DelaySec,w 83 05A7 00A5 movwf ?a_DelaySec+4 84 05A8 01A6 clrf ?a_DelaySec+5 85 05A9 1003 bcf 3,0 86 05AA 0DA5 rlf ?a_DelaySec+4 87 05AB 0DA6 rlf ?a_DelaySec+5 88 05AC 1003 bcf 3,0 89 05AD 0DA5 rlf ?a_DelaySec+4 90 05AE 0DA6 rlf ?a_DelaySec+5 91 05AF 0826 movf ?a_DelaySec+5,w 92 05B0 3A80 xorlw 128 93 05B1 00F4 movwf btemp 94 05B2 0824 movf ?a_DelaySec+3,w 95 05B3 3A80 xorlw 128 96 05B4 0274 subwf btemp,w 97 05B5 1D03 btfss 3,2 98 05B6 2DB9 goto u45 99 05B7 0823 movf ?a_DelaySec+2,w 100 05B8 0225 subwf ?a_DelaySec+4,w 101 05B9 u45 102 05B9 1C03 btfss 3,0 103 05BA 0008 return 104 05BB 2DA0 goto l12 105 106 psect text2 107 0567 _lcd_cmd 108 ; _ins assigned to ?a_lcd_cmd+0 109 0000 _lcd_cmd$ins set ?a_lcd_cmd 110 ; __dcnt assigned to ?a_lcd_cmd+1 111 0000 _lcd_cmd$_dcnt set ?a_lcd_cmd+1 112 ;_ins stored from w 113 0567 0183 clrf 3 ;select bank 0 114 0568 00B0 movwf ?a_lcd_cmd 115 ;lcd.c: 35: void lcd_cmd(unsigned char ins) 116 0569 1106 bcf 6,2 117 ;lcd.c: 38: PORTB = (PORTB & 0x0f) | (ins & 0xf + 0); 118 056A 39F0 andlw -16 119 056B 00B2 movwf ?a_lcd_cmd+2 120 056C 0806 movf 6,w ;volatile 121 056D 390F andlw 15 122 056E 0432 iorwf ?a_lcd_cmd+2,w 123 056F 0086 movwf 6 ;volatile

Page 118: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 121 -

124 ;lcd.c: 39: LCD_E = 1; LCD_E = 0; 125 0570 1586 bsf 6,3 126 0571 1186 bcf 6,3 127 ;lcd.c: 40: PORTB = (PORTB & 0x0f) | ((ins << 4 + ) & 0xf0); 128 0572 0E30 swapf ?a_lcd_cmd,w 129 0573 39F0 andlw 240 130 0574 39F0 andlw -16 131 0575 00B2 movwf ?a_lcd_cmd+2 132 0576 0806 movf 6,w ;volatile 133 0577 390F andlw 15 134 0578 0432 iorwf ?a_lcd_cmd+2,w 135 0579 0086 movwf 6 ;volatile 136 ;lcd.c: 41: LCD_E = 1; LCD_E = 0; 137 057A 1586 bsf 6,3 138 057B 1186 bcf 6,3 139 ;lcd.c: 42: unsigned char _dcnt; _dcnt = (40) + /((12*1000L)/(4*1000L))|1; while(--_dcnt != 0) + continue; ; 140 057C 300D movlw 13 141 057D 00B1 movwf ?a_lcd_cmd+1 142 057E l17 143 057E 0BB1 decfsz ?a_lcd_cmd+1 144 057F 2D7E goto l17 145 0580 0008 return 146 147 psect text3 148 0581 _lcd_data 149 ; _ins assigned to ?a_lcd_data+0 150 0000 _lcd_data$ins set ?a_lcd_data 151 ; __dcnt assigned to ?a_lcd_data+1 152 0000 _lcd_data$_dcnt set ?a_lcd_data+1 153 ;_ins stored from w 154 0581 0183 clrf 3 ;select bank 0 155 0582 00B4 movwf ?a_lcd_data 156 ;lcd.c: 46: void lcd_data(unsigned char ins) 157 0583 1506 bsf 6,2 158 ;lcd.c: 49: PORTB = (PORTB & 0x0f) | (ins & 0xf + 0); 159 0584 39F0 andlw -16 160 0585 00B6 movwf ?a_lcd_data+2 161 0586 0806 movf 6,w ;volatile 162 0587 390F andlw 15 163 0588 0436 iorwf ?a_lcd_data+2,w 164 0589 0086 movwf 6 ;volatile 165 ;lcd.c: 50: LCD_E = 1; LCD_E = 0; 166 058A 1586 bsf 6,3 167 058B 1186 bcf 6,3 168 ;lcd.c: 51: PORTB = (PORTB & 0x0f) | ((ins << 4 + ) & 0xf0); 169 058C 0E34 swapf ?a_lcd_data,w

Page 119: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 122 -

170 058D 39F0 andlw 240 171 058E 39F0 andlw -16 172 058F 00B6 movwf ?a_lcd_data+2 173 0590 0806 movf 6,w ;volatile 174 0591 390F andlw 15 175 0592 0436 iorwf ?a_lcd_data+2,w 176 0593 0086 movwf 6 ;volatile 177 ;lcd.c: 52: LCD_E = 1; LCD_E = 0; 178 0594 1586 bsf 6,3 179 0595 1186 bcf 6,3 180 ;lcd.c: 53: LCD_RS = 0; 181 0596 1106 bcf 6,2 182 ;lcd.c: 54: unsigned char _dcnt; _dcnt = (40) + /((12*1000L)/(4*1000L))|1; while(--_dcnt != 0) + continue; ; 183 0597 300D movlw 13 184 0598 00B5 movwf ?a_lcd_data+1 185 0599 l21 186 0599 0BB5 decfsz ?a_lcd_data+1 187 059A 2D99 goto l21 188 059B 0008 return 189 190 psect text4 191 053F _lcd_puts 192 ;lcd.c: 58: void lcd_puts(const char * s) 193 053F 2D48 goto l25 194 0540 l26 195 ;lcd.c: 61: lcd_data(*s++); 196 0540 0833 movf ?_lcd_puts+1,w 197 0541 00B8 movwf code_ptr+1 198 0542 0832 movf ?_lcd_puts,w 199 0543 0AB2 incf ?_lcd_puts 200 0544 1903 btfsc 3,2 201 0545 0AB3 incf ?_lcd_puts+1 202 0546 200D call string_table 203 0547 2581 call _lcd_data 204 0548 l25 205 0548 1283 bcf 3,5 206 0549 1303 bcf 3,6 ;carry unused 207 054A 0833 movf ?_lcd_puts+1,w 208 054B 00B8 movwf code_ptr+1 209 054C 0832 movf ?_lcd_puts,w 210 054D 200D call string_table 211 054E 3800 iorlw 0 212 054F 1903 btfsc 3,2 213 0550 0008 return 214 0551 2D40 goto l26 215 216 psect text5 217 0650 _lcd_dec2str3 218 ; _y assigned to ?a_lcd_dec2str3+0 219 0000 _lcd_dec2str3$y set ?a_lcd_dec2str3 220 ;lcd.c: 69: void lcd_dec2str3(unsigned int x) 221 0650 3003 movlw 3

Page 120: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 123 -

222 0651 0183 clrf 3 ;select bank 0 223 0652 022B subwf ?_lcd_dec2str3+1,w 224 0653 30E8 movlw 232 225 0654 1903 btfsc 3,2 226 0655 022A subwf ?_lcd_dec2str3,w 227 0656 1803 btfsc 3,0 228 0657 2E97 goto l29 229 ;lcd.c: 73: 230 0658 3064 movlw 100 231 0659 00F6 movwf btemp+2 232 065A 01F7 clrf btemp+3 233 065B 082B movf ?_lcd_dec2str3+1,w 234 065C 00F5 movwf btemp+1 235 065D 082A movf ?_lcd_dec2str3,w 236 065E 00F4 movwf btemp 237 065F 2702 call lwdiv 238 0660 0878 movf btemp+4,w 239 0661 00AC movwf ?a_lcd_dec2str3 240 0662 0879 movf btemp+5,w 241 0663 00AD movwf ?a_lcd_dec2str3+1 242 ;lcd.c: 75: lcd_data(y+0x30); 243 0664 082C movf ?a_lcd_dec2str3,w 244 0665 3E30 addlw 48 245 0666 2581 call _lcd_data 246 ;lcd.c: 76: lcd_data(0x2E); 247 0667 302E movlw 46 248 0668 2581 call _lcd_data 249 ;lcd.c: 77: x-=(y*100); 250 0669 3064 movlw 100 251 066A 00F6 movwf btemp+2 252 066B 01F7 clrf btemp+3 253 066C 082D movf ?a_lcd_dec2str3+1,w 254 066D 00F5 movwf btemp+1 255 066E 082C movf ?a_lcd_dec2str3,w 256 066F 00F4 movwf btemp 257 0670 2552 call lwmul 258 0671 0878 movf btemp+4,w 259 0672 02AA subwf ?_lcd_dec2str3 260 0673 1C03 btfss 3,0 261 0674 03AB decf ?_lcd_dec2str3+1 262 0675 0879 movf btemp+5,w 263 0676 02AB subwf ?_lcd_dec2str3+1 264 ;lcd.c: 78: y=x/10; 265 0677 300A movlw 10 266 0678 00F6 movwf btemp+2 267 0679 01F7 clrf btemp+3 268 067A 082B movf ?_lcd_dec2str3+1,w 269 067B 00F5 movwf btemp+1 270 067C 082A movf ?_lcd_dec2str3,w 271 067D 00F4 movwf btemp 272 067E 2702 call lwdiv 273 067F 0878 movf btemp+4,w 274 0680 00AC movwf ?a_lcd_dec2str3 275 0681 0879 movf btemp+5,w 276 0682 00AD movwf ?a_lcd_dec2str3+1 277 ;lcd.c: 79: lcd_data(y+0x30); 278 0683 082C movf ?a_lcd_dec2str3,w 279 0684 3E30 addlw 48 280 0685 2581 call _lcd_data 281 ;lcd.c: 80: x-=(y*10);

Page 121: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 124 -

282 0686 300A movlw 10 283 0687 00F6 movwf btemp+2 284 0688 01F7 clrf btemp+3 285 0689 082D movf ?a_lcd_dec2str3+1,w 286 068A 00F5 movwf btemp+1 287 068B 082C movf ?a_lcd_dec2str3,w 288 068C 00F4 movwf btemp 289 068D 2552 call lwmul 290 068E 0878 movf btemp+4,w 291 068F 02AA subwf ?_lcd_dec2str3 292 0690 1C03 btfss 3,0 293 0691 03AB decf ?_lcd_dec2str3+1 294 0692 0879 movf btemp+5,w 295 0693 02AB subwf ?_lcd_dec2str3+1 296 ;lcd.c: 81: lcd_data(x+0x30); 297 0694 082A movf ?_lcd_dec2str3,w 298 0695 3E30 addlw 48 299 0696 2D81 goto _lcd_data 300 ;lcd.c: 82: 301 0697 l29 302 ;lcd.c: 83: else lcd_puts("Error"); 303 0697 3023 movlw low u19 304 0698 00B2 movwf ?_lcd_puts 305 0699 3000 movlw high u19 306 069A 00B3 movwf ?_lcd_puts+1 307 069B 2D48 goto l25 308 309 psect text6 310 052F _lcd_dec_str 311 ;lcd.c: 86: void lcd_dec_str(unsigned int x) 312 052F 3000 movlw 0 313 0530 0183 clrf 3 ;select bank 0 314 0531 0231 subwf ?_lcd_dec_str+1,w 315 0532 3002 movlw 2 316 0533 1903 btfsc 3,2 317 0534 0230 subwf ?_lcd_dec_str,w 318 0535 1803 btfsc 3,0 319 0536 2D3A goto l32 320 ;lcd.c: 89: 321 0537 0830 movf ?_lcd_dec_str,w 322 0538 3E30 addlw 48 323 0539 2D81 goto _lcd_data 324 ;lcd.c: 91: 325 053A l32 326 ;lcd.c: 92: else lcd_puts("Error"); 327 053A 3023 movlw low u29 328 053B 00B2 movwf ?_lcd_puts 329 053C 3000 movlw high u29 330 053D 00B3 movwf ?_lcd_puts+1 331 053E 2D48 goto l25 332 333 psect text7 334 05E3 _lcd_init 335 ; __dcnt assigned to ?a_lcd_init+0 336 0000 _lcd_init$_dcnt set ?a_lcd_init

Page 122: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 125 -

337 ; __dcnt assigned to ?a_lcd_init+0 338 0000 _lcd_init$_dcnt set ?a_lcd_init 339 ; __dcnt assigned to ?a_lcd_init+0 340 0000 _lcd_init$_dcnt set ?a_lcd_init 341 ;lcd.c: 96: void lcd_init(void) 342 05E3 0183 clrf 3 ;select bank 0 343 05E4 0806 movf 6,w ;volatile 344 05E5 390F andlw 15 345 05E6 3830 iorlw 48 346 05E7 0086 movwf 6 ;volatile 347 ;lcd.c: 100: LCD_E = 1; LCD_E = 0; 348 05E8 1586 bsf 6,3 349 05E9 1186 bcf 6,3 350 ;lcd.c: 101: DelayMs(5); 351 05EA 3005 movlw 5 352 05EB 2522 call _DelayMs 353 ;lcd.c: 103: PORTB = (PORTB & 0b00001111) | 0x3 + 0; 354 05EC 0806 movf 6,w ;volatile 355 05ED 390F andlw 15 356 05EE 3830 iorlw 48 357 05EF 0086 movwf 6 ;volatile 358 ;lcd.c: 104: LCD_E = 1; LCD_E = 0; 359 05F0 1586 bsf 6,3 360 05F1 1186 bcf 6,3 361 ;lcd.c: 105: unsigned char _dcnt; _dcnt = (16 + 0)/((12*1000L)/(4*1000L))|1; while(--_dcnt != 0 + ) continue; ; 362 05F2 3035 movlw 53 363 05F3 00A1 movwf ?a_lcd_init 364 05F4 l35 365 05F4 0BA1 decfsz ?a_lcd_init 366 05F5 2DF4 goto l35 367 ;lcd.c: 107: PORTB = (PORTB & 0b00001111) | 0x3 + 0; 368 05F6 0806 movf 6,w ;volatile 369 05F7 390F andlw 15 370 05F8 3830 iorlw 48 371 05F9 0086 movwf 6 ;volatile 372 ;lcd.c: 108: LCD_E = 1; LCD_E = 0; 373 05FA 1586 bsf 6,3 374 05FB 1186 bcf 6,3 375 ;lcd.c: 109: unsigned char _dcnt; _dcnt = (16 + 0)/((12*1000L)/(4*1000L))|1; while(--_dcnt != 0 + ) continue; ; 376 05FC 3035 movlw 53 377 05FD 00A1 movwf ?a_lcd_init

Page 123: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 126 -

378 05FE l39 379 05FE 0BA1 decfsz ?a_lcd_init 380 05FF 2DFE goto l39 381 ;lcd.c: 111: PORTB = (PORTB & 0b00001111) | 0x2 + 0; 382 0600 0806 movf 6,w ;volatile 383 0601 390F andlw 15 384 0602 3820 iorlw 32 385 0603 0086 movwf 6 ;volatile 386 ;lcd.c: 112: LCD_E = 1; LCD_E = 0; 387 0604 1586 bsf 6,3 388 0605 1186 bcf 6,3 389 ;lcd.c: 113: unsigned char _dcnt; _dcnt = (16 + 0)/((12*1000L)/(4*1000L))|1; while(--_dcnt != 0 + ) continue; ; 390 0606 3035 movlw 53 391 0607 00A1 movwf ?a_lcd_init 392 0608 l42 393 0608 0BA1 decfsz ?a_lcd_init 394 0609 2E08 goto l42 395 ;lcd.c: 115: lcd_cmd(0x20+0x08); 396 060A 3028 movlw 40 397 060B 2567 call _lcd_cmd 398 ;lcd.c: 116: lcd_cmd(0x06); 399 060C 3006 movlw 6 400 060D 2567 call _lcd_cmd 401 ;lcd.c: 117: lcd_cmd(0x0C); 402 060E 300C movlw 12 403 060F 2567 call _lcd_cmd 404 ;lcd.c: 119: lcd_cmd(0x01); DelayMs(2);; 405 0610 3001 movlw 1 406 0611 2567 call _lcd_cmd 407 0612 3002 movlw 2 408 0613 2522 call _DelayMs 409 ;lcd.c: 120: lcd_cmd(0x02); DelayMs(2);; 410 0614 3002 movlw 2 411 0615 2567 call _lcd_cmd 412 0616 3002 movlw 2 413 0617 2D22 goto _DelayMs 414 415 psect text8 416 05BC _broj 417 ; _b assigned to ?a_broj+0 418 0000 _broj$b set ?a_broj 419 ; _maska assigned to ?a_broj+1 420 0000 _broj$maska set ?a_broj+1 421 ; _pom assigned to ?a_broj+2 422 0000 _broj$pom set ?a_broj+2 423 ; _k assigned to ?a_broj+3 424 0000 _broj$k set ?a_broj+3 425 ; __dcnt assigned to ?a_broj+4 426 0000 _broj$_dcnt set ?a_broj+4 427 ;_b stored from w 428 05BC 0183 clrf 3 ;select bank 0

Page 124: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 127 -

429 05BD 00AA movwf ?a_broj 430 ;adc0804.c: 34: void broj(unsigned char b) 431 05BE 01AC clrf ?a_broj+2 432 05BF 3008 movlw 8 433 05C0 00AD movwf ?a_broj+3 434 ;adc0804.c: 37: unsigned char maska=0b10000000; 435 05C1 3080 movlw -128 436 05C2 00AB movwf ?a_broj+1 437 ;adc0804.c: 38: lcd_cmd(0x80+5+(0x40*1)); uns + igned char _dcnt; _dcnt = (40)/((12*1000L)/(4*1 + 000L))|1; while(--_dcnt != 0) continue; ;; 438 05C3 30C5 movlw -59 439 05C4 2567 call _lcd_cmd 440 05C5 300D movlw 13 441 05C6 00AE movwf ?a_broj+4 442 05C7 l45 443 05C7 0BAE decfsz ?a_broj+4 444 05C8 2DC7 goto l45 445 05C9 l48 446 05C9 08AD movf ?a_broj+3 447 05CA 1903 btfsc 3,2 448 05CB 0008 return 449 ;adc0804.c: 39: while(k>0) 450 ;adc0804.c: 40: 451 05CC 082A movf ?a_broj,w 452 05CD 052B andwf ?a_broj+1,w 453 05CE 00AC movwf ?a_broj+2 454 ;adc0804.c: 42: maska=maska>>1; 455 05CF 1003 bcf 3,0 456 05D0 0CAB rrf ?a_broj+1 457 ;adc0804.c: 43: pom=pom>>k-1; 458 05D1 032D decf ?a_broj+3,w 459 05D2 00AF movwf ?a_broj+5 460 05D3 0A2F incf ?a_broj+5,w 461 05D4 00F4 movwf btemp 462 05D5 2DD8 goto u140 463 05D6 u145 464 05D6 1003 bcf 3,0 465 05D7 0CAC rrf ?a_broj+2 466 05D8 u140 467 05D8 0BF4 decfsz btemp 468 05D9 2DD6 goto u145 469 ;adc0804.c: 44: lcd_dec_str(pom); 470 05DA 1283 bcf 3,5 471 05DB 1303 bcf 3,6 ;carry unused 472 05DC 082C movf ?a_broj+2,w 473 05DD 00B0 movwf ?_lcd_dec_str 474 05DE 01B1 clrf ?_lcd_dec_str+1 475 05DF 252F call _lcd_dec_str 476 ;adc0804.c: 45: k=k--; 477 05E0 082D movf ?a_broj+3,w 478 05E1 03AD decf ?a_broj+3 479 05E2 2DC9 goto l48 480 481 psect config

Page 125: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 128 -

482 2007 3F71 dw 16241 ;# 483 484 psect eeprom_data 485 0000 0041 0044 0043 db 65,68,67,95,48,56,48,52 ;# + 005F 0030 0038 + 0030 0034 486 0008 004A 0055 004E db 74,85,78,95,50,48,48,56 ;# + 005F 0032 0030 + 0030 0038 487 0010 0056 0045 0052 db 86,69,82,95,49,46,48,48 ;# + 005F 0031 002E + 0030 0030 488 0018 0042 0052 0041 db 66,82,65,78,75,79,95,83 ;# + 004E 004B 004F + 005F 0053 489 0020 0054 004F 004A db 84,79,74,73,67,95,77,73 ;# + 0049 0043 005F + 004D 0049 490 0028 004C 0041 004E db 76,65,78,95,83,84,79,73 ;# + 005F 0053 0054 + 004F 0049 491 0030 004C 004B 004F db 76,75,79,86,73,67,46,46 ;# + 0056 0049 0043 + 002E 002E 492 493 psect text9 494 069C _meri 495 ; _napon1 assigned to ?a_meri+0 496 0000 _meri$napon1 set ?a_meri 497 ; _napon assigned to ?a_meri+4 498 0000 _meri$napon set ?a_meri+4 499 ; __dcnt assigned to ?a_meri+8 500 0000 _meri$_dcnt set ?a_meri+8 501 ; __dcnt assigned to ?a_meri+8 502 0000 _meri$_dcnt set ?a_meri+8 503 ; __dcnt assigned to ?a_meri+8 504 0000 _meri$_dcnt set ?a_meri+8 505 ; __dcnt assigned to ?a_meri+8 506 0000 _meri$_dcnt set ?a_meri+8 507 ; __dcnt assigned to ?a_meri+8 508 0000 _meri$_dcnt set ?a_meri+8 509 ;adc0804.c: 49: void meri(void) 510 069C 0183 clrf 3 ;select bank 0 511 069D 01A5 clrf ?a_meri+4 512 069E 01A6 clrf ?a_meri+5 513 069F 01A7 clrf ?a_meri+6 514 06A0 01A8 clrf ?a_meri+7 515 ;adc0804.c: 52: unsigned long napon1=0; 516 06A1 01A1 clrf ?a_meri 517 06A2 01A2 clrf ?a_meri+1 518 06A3 01A3 clrf ?a_meri+2 519 06A4 01A4 clrf ?a_meri+3 520 ;adc0804.c: 53: napon1=(500000/256); 521 06A5 30A1 movlw 161 522 06A6 00A1 movwf ?a_meri 523 06A7 3007 movlw 7 524 06A8 00A2 movwf ?a_meri+1

Page 126: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 129 -

525 06A9 01A3 clrf ?a_meri+2 526 06AA 01A4 clrf ?a_meri+3 527 ;adc0804.c: 54: lcd_cmd(0x80+0+(0x40*0)); uns + igned char _dcnt; _dcnt = (40)/((12*1000L)/(4*1 + 000L))|1; while(--_dcnt != 0) continue; ;; 528 06AB 3080 movlw -128 529 06AC 2567 call _lcd_cmd 530 06AD 300D movlw 13 531 06AE 00A9 movwf ?a_meri+8 532 06AF l52 533 06AF 0BA9 decfsz ?a_meri+8 534 06B0 2EAF goto l52 535 ;adc0804.c: 56: cs=0; 536 06B1 1008 bcf 8,0 537 ;adc0804.c: 57: rd=0; 538 06B2 1088 bcf 8,1 539 ;adc0804.c: 58: wr=1; 540 06B3 1508 bsf 8,2 541 ;adc0804.c: 59: unsigned char _dcnt; _dcnt = + (1)/((12*1000L)/(4*1000L))|1; while(--_dcnt != + 0) continue; ; 542 06B4 01A9 clrf ?a_meri+8 543 06B5 0AA9 incf ?a_meri+8 544 06B6 l56 545 06B6 0BA9 decfsz ?a_meri+8 546 06B7 2EB6 goto l56 547 ;adc0804.c: 60: wr=0; 548 06B8 1108 bcf 8,2 549 ;adc0804.c: 61: unsigned char _dcnt; _dcnt = + (10)/((12*1000L)/(4*1000L))|1; while(--_dcnt != + 0) continue; ; 550 06B9 3003 movlw 3 551 06BA 00A9 movwf ?a_meri+8 552 06BB l59 553 06BB 0BA9 decfsz ?a_meri+8 554 06BC 2EBB goto l59 555 ;adc0804.c: 62: wr=1; 556 06BD 1508 bsf 8,2 557 ;adc0804.c: 63: while(intr); 558 06BE l61 559 06BE 1988 btfsc 8,3 560 06BF 2EBE goto l61 561 ;adc0804.c: 64: unsigned char _dcnt; _dcnt = + (1)/((12*1000L)/(4*1000L))|1; while(--_dcnt != + 0) continue; ; 562 06C0 01A9 clrf ?a_meri+8 563 06C1 0AA9 incf ?a_meri+8 564 06C2 l65 565 06C2 0BA9 decfsz ?a_meri+8 566 06C3 2EC2 goto l65

Page 127: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 130 -

567 ;adc0804.c: 65: napon=(napon1*PORTC); 568 06C4 0821 movf ?a_meri,w 569 06C5 00F8 movwf btemp+4 570 06C6 0822 movf ?a_meri+1,w 571 06C7 00F9 movwf btemp+5 572 06C8 0823 movf ?a_meri+2,w 573 06C9 00FA movwf btemp+6 574 06CA 0824 movf ?a_meri+3,w 575 06CB 00FB movwf btemp+7 576 06CC 0807 movf 7,w ;volatile 577 06CD 00F4 movwf btemp 578 06CE 01F5 clrf btemp+1 579 06CF 01F6 clrf btemp+2 580 06D0 01F7 clrf btemp+3 581 06D1 27C3 call llmul 582 06D2 0874 movf btemp,w 583 06D3 00A5 movwf ?a_meri+4 584 06D4 0875 movf btemp+1,w 585 06D5 00A6 movwf ?a_meri+5 586 06D6 0876 movf btemp+2,w 587 06D7 00A7 movwf ?a_meri+6 588 06D8 0877 movf btemp+3,w 589 06D9 00A8 movwf ?a_meri+7 590 ;adc0804.c: 66: napon=(napon/1000); 591 06DA 30E8 movlw 232 592 06DB 00F8 movwf btemp+4 593 06DC 3003 movlw 3 594 06DD 00F9 movwf btemp+5 595 06DE 01FA clrf btemp+6 596 06DF 01FB clrf btemp+7 597 06E0 3025 movlw ?a_meri+4 598 06E1 0084 movwf 4 599 06E2 1383 bcf 3,7 600 06E3 27B7 call lldiv_f 601 ;adc0804.c: 67: lcd_puts("NAPON: "); 602 06E4 303F movlw low u39 603 06E5 1283 bcf 3,5 604 06E6 1303 bcf 3,6 ;carry unused 605 06E7 00B2 movwf ?_lcd_puts 606 06E8 3000 movlw high u39 607 06E9 00B3 movwf ?_lcd_puts+1 608 06EA 253F call _lcd_puts 609 ;adc0804.c: 68: lcd_dec2str3(napon); 610 06EB 0825 movf ?a_meri+4,w 611 06EC 00AA movwf ?_lcd_dec2str3 612 06ED 0826 movf ?a_meri+5,w 613 06EE 00AB movwf ?_lcd_dec2str3+1 614 06EF 2650 call _lcd_dec2str3 615 ;adc0804.c: 69: lcd_puts(" V"); 616 06F0 3035 movlw low u49 617 06F1 00B2 movwf ?_lcd_puts 618 06F2 3000 movlw high u49 619 06F3 00B3 movwf ?_lcd_puts+1 620 06F4 253F call _lcd_puts 621 ;adc0804.c: 70: lcd_cmd(0x80+0+(0x40*1)); uns

Page 128: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 131 -

+ igned char _dcnt; _dcnt = (40)/((12*1000L)/(4*1 + 000L))|1; while(--_dcnt != 0) continue; ;; 622 06F5 30C0 movlw -64 623 06F6 2567 call _lcd_cmd 624 06F7 300D movlw 13 625 06F8 00A9 movwf ?a_meri+8 626 06F9 l68 627 06F9 0BA9 decfsz ?a_meri+8 628 06FA 2EF9 goto l68 629 ;adc0804.c: 71: lcd_puts("BIN: "); 630 06FB 3047 movlw low u59 631 06FC 00B2 movwf ?_lcd_puts 632 06FD 3000 movlw high u59 633 06FE 00B3 movwf ?_lcd_puts+1 634 06FF 253F call _lcd_puts 635 ;adc0804.c: 72: broj(PORTC); 636 0700 0807 movf 7,w ;volatile 637 0701 2DBC goto _broj 638 639 psect text10 640 0618 _main 641 ; __dcnt assigned to ?a_main+0 642 0000 _main$_dcnt set ?a_main 643 ; __dcnt assigned to ?a_main+0 644 0000 _main$_dcnt set ?a_main 645 ; __dcnt assigned to ?a_main+0 646 0000 _main$_dcnt set ?a_main 647 ;adc0804.c: 78: void main(void) 648 0618 138B bcf 11,7 649 ;adc0804.c: 81: TRISC=0xFF; 650 0619 30FF movlw -1 651 061A 1683 bsf 3,5 652 061B 1303 bcf 3,6 ;carry unused 653 061C 0087 movwf 7 ;volatile 654 ;adc0804.c: 82: TRISA=0x00; 655 061D 0185 clrf 5 ;volatile 656 ;adc0804.c: 83: TRISE=0b000; 657 061E 0189 clrf 9 ;volatile 658 ;adc0804.c: 84: TRISD=0x88; 659 061F 3088 movlw -120 660 0620 0088 movwf 8 ;volatile 661 ;adc0804.c: 85: TRISB=0x00; 662 0621 0186 clrf 6 ;volatile 663 ;adc0804.c: 86: PORTA=0x00; 664 0622 1283 bcf 3,5 665 0623 0185 clrf 5 ;volatile 666 ;adc0804.c: 87: PORTE=0b000; 667 0624 0189 clrf 9 ;volatile 668 ;adc0804.c: 88: PORTB=0x00; 669 0625 0186 clrf 6 ;volatile 670 ;adc0804.c: 89: PORTD=0x00; 671 0626 0188 clrf 8 ;volatile 672 ;adc0804.c: 90: lcd_init(); 673 0627 25E3 call _lcd_init 674 ;adc0804.c: 91: lcd_cmd(0x01); DelayMs(2);; 675 0628 3001 movlw 1

Page 129: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 132 -

676 0629 2567 call _lcd_cmd 677 062A 3002 movlw 2 678 062B 2522 call _DelayMs 679 ;adc0804.c: 92: lcd_cmd(0x80+0+(0x40*0)); uns + igned char _dcnt; _dcnt = (40)/((12*1000L)/(4*1 + 000L))|1; while(--_dcnt != 0) continue; ;; 680 062C 3080 movlw -128 681 062D 2567 call _lcd_cmd 682 062E 300D movlw 13 683 062F 00A0 movwf ?a_main 684 0630 l71 685 0630 0BA0 decfsz ?a_main 686 0631 2E30 goto l71 687 ;adc0804.c: 93: lcd_puts("PROJEKAT IZ"); 688 0632 3029 movlw low u69 689 0633 00B2 movwf ?_lcd_puts 690 0634 3000 movlw high u69 691 0635 00B3 movwf ?_lcd_puts+1 692 0636 253F call _lcd_puts 693 ;adc0804.c: 94: lcd_cmd(0x80+0+(0x40*1)); uns + igned char _dcnt; _dcnt = (40)/((12*1000L)/(4*1 + 000L))|1; while(--_dcnt != 0) continue; ;; 694 0637 30C0 movlw -64 695 0638 2567 call _lcd_cmd 696 0639 300D movlw 13 697 063A 00A0 movwf ?a_main 698 063B l75 699 063B 0BA0 decfsz ?a_main 700 063C 2E3B goto l75 701 ;adc0804.c: 95: lcd_puts("MIPS-A"); 702 063D 3038 movlw low u79 703 063E 00B2 movwf ?_lcd_puts 704 063F 3000 movlw high u79 705 0640 00B3 movwf ?_lcd_puts+1 706 0641 253F call _lcd_puts 707 ;adc0804.c: 96: DelaySec(2); 708 0642 3002 movlw 2 709 0643 259C call _DelaySec 710 ;adc0804.c: 97: lcd_cmd(0x01); DelayMs(2);; 711 0644 3001 movlw 1 712 0645 2567 call _lcd_cmd 713 0646 3002 movlw 2 714 0647 2522 call _DelayMs 715 0648 l78 716 ;adc0804.c: 99: while(1) 717 ;adc0804.c: 100: 718 0648 1B88 btfsc 8,7 719 0649 2E48 goto l78 720 064A l82 721 ;adc0804.c: 102: 722 ;adc0804.c: 104:

Page 130: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 133 -

723 064A 269C call _meri 724 ;adc0804.c: 106: unsigned char _dcnt; _dcnt = + (200)/((12*1000L)/(4*1000L))|1; while(--_dcnt + != 0) continue; ; 725 064B 3043 movlw 67 726 064C 00A0 movwf ?a_main 727 064D l85 728 064D 0BA0 decfsz ?a_main 729 064E 2E4D goto l85 730 064F 2E4A goto l82 731 732 psect strings 733 0000 734 0000 735 0000 736 0000 737 0000 738 0000 739 0000 740 0000 741 0000 742 0000 743 0000 744 0000 745 0000 746 0000 747 0000 748 0000 749 0000 750 0000 751 0000 752 0000 753 0000 754 0000 755 0000 756 0000 757 0000 758 0000 759 0000 760 0000 761 0000 762 0000 763 0000 764 0000 765 0000 766 0000 767 0000 768 0000 769 0000 770 0000 771 0000 772 0000 773 0000 774 0000 775 0000 776 0000 777 0000 778 0000

Page 131: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 134 -

779 0000 780 0000 781 0000 782 0000 783 0000 784 0000 785 0000 786 0000 787 0000 788 0000 789 0000 790 0000 791 0000 792 0000 793 0000 794 0000 795 0000 796 0000 797 0000 798 0000 799 0000 800 0000 801 0000 802 0000 803 0000 804 0000 805 0000 806 0000 807 0000 808 0000 809 0000 810 0000 811 0000 812 0000 813 0000 814 0000 815 0000 816 0000 817 0000 818 0000 819 0000 820 0000 821 0000 822 0000 823 0000 824 0000 825 0000 826 0000 827 0000 828 0000 829 0000 830 0000 831 0000 832 0000 833 0000 834 0000 835 0000 836 0000 837 0000 838 0000

Page 132: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 135 -

839 0000 840 0000 841 0000 842 0000 843 0000 844 0000 845 0000 846 0000 847 0000 848 0000 849 0000 850 0000 851 0000 852 0000 853 0000 854 0000 855 0000 856 0000 857 0000 858 0000 859 0000 860 0000 861 0000 862 0000 863 0000 864 0000 865 0000 866 0000 867 0000 868 0000 869 0000 870 0000 871 0000 872 0000 873 0000 874 0000 875 0000 876 0000 877 0000 878 0000 879 0000 880 0000 881 0000 882 0000 883 0000 884 0000 885 0000 886 0000 887 0000 888 0000 889 0000 890 0000 891 0000 892 0000 893 0000 894 0000 895 0000 896 0000 897 0000 898 0000

Page 133: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 136 -

899 0000 900 0000 901 0000 902 0000 903 0000 904 0000 905 0000 906 0000 907 0000 908 0000 909 0000 910 0000 911 0000 912 0000 913 0000 914 0000 915 0000 916 0000 917 0000 918 0000 919 0000 920 0000 921 0000 922 0000 923 0000 924 0000 925 0000 926 0000 927 0000 928 0000 929 0000 930 0000 931 0000 932 0000 933 0000 934 0000 935 0000 936 0000 937 0000 938 0000 939 0000 940 0000 941 0000 942 0000 943 0000 944 0000 945 0000 946 0000 947 0000 948 0000 949 0000 950 0000 951 0000 952 0000 953 0000 954 0000 955 0000 956 0000 957 0000 958 0000

Page 134: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 137 -

959 0000 960 0000 961 0000 962 0000 963 0000 964 0000 965 0000 966 0000 967 0000 968 0000 969 0000 970 0000 971 0000 972 0000 973 0000 974 0000 975 0000 976 0000 977 0000 978 0000 979 0000 980 0000 981 0000 982 0000 983 0000 984 0000 985 0000 986 0000 987 0000 988 0000 989 0000 990 0000 991 0000 992 0000 993 0000 994 0000 995 0000 996 ; Strings 997 0023 u19 998 0023 u29 999 0023 3445 retlw 69 ;'E' 1000 0024 3472 retlw 114 ;'r' 1001 0025 3472 retlw 114 ;'r' 1002 0026 346F retlw 111 ;'o' 1003 0027 3472 retlw 114 ;'r' 1004 0028 3400 retlw 0 1005 0029 u69 1006 0029 3450 retlw 80 ;'P' 1007 002A 3452 retlw 82 ;'R' 1008 002B 344F retlw 79 ;'O' 1009 002C 344A retlw 74 ;'J' 1010 002D 3445 retlw 69 ;'E' 1011 002E 344B retlw 75 ;'K' 1012 002F 3441 retlw 65 ;'A' 1013 0030 3454 retlw 84 ;'T' 1014 0031 3420 retlw 32 1015 0032 3449 retlw 73 ;'I' 1016 0033 345A retlw 90 ;'Z' 1017 0034 3400 retlw 0 1018 0035 u49

Page 135: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 138 -

1019 0035 3420 retlw 32 1020 0036 3456 retlw 86 ;'V' 1021 0037 3400 retlw 0 1022 0038 u79 1023 0038 344D retlw 77 ;'M' 1024 0039 3449 retlw 73 ;'I' 1025 003A 3450 retlw 80 ;'P' 1026 003B 3453 retlw 83 ;'S' 1027 003C 342D retlw 45 1028 003D 3441 retlw 65 ;'A' 1029 003E 3400 retlw 0 1030 003F u39 1031 003F 344E retlw 78 ;'N' 1032 0040 3441 retlw 65 ;'A' 1033 0041 3450 retlw 80 ;'P' 1034 0042 344F retlw 79 ;'O' 1035 0043 344E retlw 78 ;'N' 1036 0044 343A retlw 58 ;':' 1037 0045 3420 retlw 32 1038 0046 3400 retlw 0 1039 0047 u59 1040 0047 3442 retlw 66 ;'B' 1041 0048 3449 retlw 73 ;'I' 1042 0049 344E retlw 78 ;'N' 1043 004A 343A retlw 58 ;':' 1044 004B 3420 retlw 32 1045 004C 3400 retlw 0 1046 1047 psect temp 1048 0074 btemp btemp 1049 0074 ds 8 HI-TECH Software PICC Macro Assembler V9.60 Symbol Table ?a_DelayMs 0027 ?a_DelaySec 0021 ?a_broj 002A ?a_main 0020 ?a_meri 0021 l4 0524 l7 0526 l9 0528 l12 05A0 l21 0599 l15 05A3 l32 053A l25 0548 l17 057E l42 0608 l26 0540 l35 05F4 l52 06AF l61 06BE l45 05C7 l29 0697 l71 0630 l39 05FE l56 06B6 l48 05C9 l65 06C2 l82 064A l75 063B l59 06BB l68 06F9 l85 064D l78 0648 u19 0023 u29 0023 u45 05B9 u39 003F u49 0035 u59 0047 u69 0029 u79 0038 _lcd_data 0581 fsr 0004 _lcd_init 05E3 _lcd_puts 053F u140 05D8 u145 05D6 _lcd_dec2str3 0650 ?a_lcd_cmd 0030 f2613 0032 f2623 0036 f2723 002F f2583 0023 _DelayMs 0522 _broj 05BC _main 0618 ?_lcd_puts 0032 _meri 069C btemp 0074 llmul 07C3 lwdiv 0702 lwmul 0552 start 0000 lldiv_f 07B7 ?_lcd_dec_str 0030 ?a_lcd_data 0034 ?a_lcd_init 0021 _lcd_cmd 0567 _DelaySec 059C _lcd_dec_str 052F

Page 136: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 139 -

code_ptr 0037 string_table 000D ?a_lcd_dec2str3 002C status 0003 ?_lcd_dec2str3 002A used_code_ptr 0001 used_btemp0 0001 used_btemp1 0001 used_btemp2 0001 used_btemp3 0001 used_btemp4 0001 used_btemp5 0001 used_btemp6 0001 used_btemp7 0001

Listing heksadecimalnog kôda

:100000002030840037300820182E04068001840A2E :100010000406031D05286400003483120313B7008F :10002000B81B1B28381B232838088A003708B70A52 :100030000319B80A82008313381883173708B70AE0 :100040008400000808004534723472346F3472340E :100050000034503452344F344A3445344B344134F4 :100060005434203449345A34003420345634003463 :100070004D344934503453342D34413400344E34EB :10008000413450344F344E343A3420340034423406 :0A00900049344E343A342034003471 :100A44008301A7000430A8005330A900A90B282D66 :100A5400A80B262DA70B242D08000030830131029A :100A640002300319300203183A2D3008303E812D2C :100A74002330B2000030B300482D482D3308B800AD :100A84003208B20A0319B30A0D2081258312031315 :100A94003308B80032080D20003803190800402D2F :100AA400F801F9010310F70CF60C031C602D74080F :100AB400F80775080318750AF9070310F40DF50D06 :100AC4007608770403190034542D8301B00006110D :100AD400F039B20006080F393204860086158611F3 :100AE400300EF039F039B20006080F3932048600AE :100AF400861586110D30B100B10B7E2D08008301DF :100B0400B4000615F039B60006080F39360486001D :100B140086158611340EF039F039B60006080F39FF :100B2400360486008615861106110D30B500B50B06 :100B3400992D08008301A100A201A32DFA302225DA :100B4400A20A2208A300A4012108A500A6010310FB :100B5400A50DA60D0310A50DA60D2608803AF400D8 :100B64002408803A7402031DB92D23082502031CAE :100B74000800A02D8301AA00AC010830AD0080302C :100B8400AB00C53067250D30AE00AE0BC72DAD08E8 :100B9400031908002A082B05AC000310AB0C2D0325 :100BA400AF002F0AF400D82D0310AC0CF40BD62D93 :100BB400831203132C08B000B1012F252D08AD03B7 :100BC400C92D830106080F39303886008615861131 :100BD4000530222506080F3930388600861586111F :100BE4003530A100A10BF42D06080F3930388600EA :100BF400861586113530A100A10BFE2D06080F398C :100C040020388600861586113530A100A10B082EE8 :100C140028306725063067250C30672501306725A5 :100C240002302225023067250230222D8B13FF303B :100C340083160313870085018901883088008601A3 :100C440083128501890186018801E3250130672526 :100C540002302225803067250D30A000A00B302EF5 :100C64002930B2000030B3003F25C03067250D3075 :100C7400A000A00B3B2E3830B2000030B3003F255B :100C840002309C250130672502302225881B482E1E :100C94009C264330A000A00B4D2E4A2E0330830126 :100CA4002B02E83003192A020318972E6430F60049 :100CB400F7012B08F5002A08F40002277808AC0095 :100CC4007908AD002C08303E81252E308125643012

Page 137: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 140 -

:100CD400F600F7012D08F5002C08F40052257808D9 :100CE400AA02031CAB037908AB020A30F600F70131 :100CF4002B08F5002A08F40002277808AC007908CC :100D0400AD002C08303E81250A30F600F7012D088D :100D1400F5002C08F40052257808AA02031CAB0342 :100D24007908AB022A08303E812D2330B20000300E :100D3400B300482D8301A501A601A701A801A101C3 :100D4400A201A301A401A130A1000730A200A301C4 :100D5400A401803067250D30A900A90BAF2E08101F :100D640088100815A901A90AA90BB62E0811033089 :100D7400A900A90BBB2E08158819BE2EA901A90A22 :100D8400A90BC22E2108F8002208F9002308FA0052 :100D94002408FB000708F400F501F601F701C32756 :100DA4007408A5007508A6007608A7007708A800AF :100DB400E830F8000330F900FA01FB012530840023 :100DC4008313B7273F3083120313B2000030B300FC :100DD4003F252508AA002608AB0050263530B2006E :100DE4000030B3003F25C03067250D30A900A90BA2 :100DF400F92E4730B2000030B3003F250708BC2D60 :100E0400FA01F801F90176087704031D0C2FF401A7 :100E1400F50100341F30FA040310FA0AF60DF70D39 :100E2400031C0F2FF70CF60C77087502031D1C2FFB :100E340076087402031C242F7608F4027708031C36 :100E4400770AF502F80DF90DFA0BFA1A142FFA1FA6 :100E5400302FF809F80A0319F903F9097808F6009C :100E64007908F7007A1F0034F409F40A0319F5032A :100E7400F509003484018312B901FC01FD01FE016E :100E8400FF01780879047A047B0403194C2FC030DD :100E9400B905572FF401F501F601F701F12F0310FD :100EA400F80DF90DFA0DFB0DB90AFB1F512FB90A04 :100EB4000310FC0DFD0DFE0DFF0D7B087702031DD5 :100EC4006D2F7A087602031D6D2F79087502031DB4 :100ED4006D2F78087402031C7F2F7C147808F402A9 :100EE4007908031C790FF5027A08031C7A0FF602BD :100EF4007B08031C7B0FF7020310FB0CFA0CF90CA4 :100F0400F80CB90339083F39031D5A2F391F972F9D :100F14000310FF30F407F409031CF507F509031C5B :100F2400F607F609031CF707F7097408F8007508B3 :100F3400F9007608FA007708FB007C08F4007D08C5 :100F4400F5007E08F6007F08F700B91FF12F0310A3 :100F5400FF30F407F409031CF507F509031CF60731 :100F6400F609031CF707F709F12F0008F400840AB7 :100F74000008F500840A0008F600840A0008F70057 :100F84003D2F84017408FC007508FD007608FE00FE :100F94007708FF00F601F701F401F5010310FF0CD7 :100FA400FE0CFD0CFC0C031CE52F7808F4077908F3 :100FB4000318790FF5077A0803187A0FF6077B08E8 :100FC40003187B0FF7077C087D047E047F04031954 :100FD400F12F0310F80DF90DFA0DFB0DD02F840835 :100FE40003190034770880008403760880008403A2 :0C0FF4007508800084037408800000343D :02400E00713F00 :104200004100440043005F003000380030003400BB :104210004A0055004E005F00320030003000380088 :104220005600450052005F0031002E003000300083 :104230004200520041004E004B004F005F0053000F :1042400054004F004A00490043005F004D00490000 :104250004C0041004E005F00530054004F004900E5 :104260004C004B004F005600490043002E002E002A :00000001FF

Page 138: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 141 -

5.Testiranje AD Konvertora U ovom poglavlju testiraćemo AD konvertor ADC0804, koji spada u

sukcesivne AD konvertore, i snimati njegovu prenosnu karakteristiku. Kao što smo ranije naveli na ulaz AD konvertora možemo dovesti tri interna

jednosmerna napona: -Fiksni napon od 2.49 V, SPAJANJEM PARA CRNIH BUKSNI J4, pri

kojem se na izlazu AD konvertora dobija kôdna reč 10000000, koja se prikazuje na LCD-u.

-Fiksni napon od 2.49 V, SPAJANJEM PARA PLAVIH BUKSNI J5, pri kojem se na izlazu AD konvertora dobija kôdna reč 10101100, koja se prikazuje na LCD-u.

-Promenljivi napon od 0-5 V, SPAJANJEM PARA CRVENIH BUKSNI J6, gde se vrednost napona menja OBRTNIM POTENCIOMETROM R7, pri kojem se na izlazu AD konvertora dobija adekvatna kôdna reč, koja se prikazuje na LCD-u.

Promenljivi napon nam je potreban radi snimanja prenosne karakteristike AD konvertora. Treba izmeriti u što je više moguće tačaka ulazni analogni napon u opsegu od 0 do 5 V i isčitati odgovarajuću digitalnu vrednost sa LCD-a. Merenje analognog napona se vrši nekim od standardnih digimera.

Rezultati probnog merenja i odgovarajuća prenosna karakteristika prikazani u tabeli 5.1. i Sl.5.2.

Po uključivanju uređaja sačekati par sekundi, zatim se pritiskom MIKROPREKIDAČA S3 startuje proces AD konverzije. Ukoliko je potrebno mikrokontroler se resetuje pritiskom MIKROPREKIDAČA S1.

Napomena: LCD pored digitalne reči prikazuje i aproksimativnu vrednost analognog napona, koja je dobijena programskim putem na osnovu digitalne vrednosti. Ova vrednost može da se razlikuje od vrednosti analognog napona koja je merena standardnim digimerom, što je posledica različite rezolucije korišćenog AD konvertora i onog koji se nalazi u digimeru.

Page 139: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 142 -

Sl.5.1. Korišćenje sistema pri testiranju

Testiranje linearnosti

REDNI BROJ MERENJA VUL

8-BITNA KÔDNA REČ NA IZLAZU IZ

ADC-A

DEKADNA VREDNOST

IZLAZNE REČI 1 0.00 00000000 0 2 0.21 00001011 10 3 0.40 00010101 21 4 0.59 00011111 31 5 0.80 00101001 41 6 1.00 00110100 52 7 1.20 00111110 62 8 1.40 01001000 72 9 1.59 01010010 82 10 1.81 01011101 93 11 2.00 01100111 103 12 2.19 01110001 113 13 2.39 01111011 123 14 2.61 10000110 134 15 2.80 10010000 144 16 3.00 10011010 154 17 3.19 10100100 164 18 3.41 10101111 175 19 3.60 10111001 185 20 3.80 11000011 195

Page 140: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 143 -

21 3.99 11001101 205 22 4.21 11011000 216 23 4.41 11100010 226 24 4.60 11101100 236 25 4.80 11110110 246 26 4.96 11111110 254

Tabela 5.1. Rezultati probnog merenja

Sl.5.2. Prenosna karakteristika konvertora ADC0804

Page 141: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 144 -

Greška konverzije

REDNI BROJ

MERENJA

VUL

DIGIMER

VUL

ADC

8-BITNA KÔDNA REČ NA

IZLAZU IZ ADC-A

DEKADNA VREDNOST

IZLAZNE REČI

GRE[KA

1. 0 0 0 0 0 2. 0.04 0.03 10 2 0.01 3. 0.08 0.07 100 4 0.01 4. 0.12 0.11 110 6 0.01 5. 0.16 0.15 1000 8 0.01 6. 0.2 0.19 1010 10 0.01 7. 0.24 0.23 1100 12 0.01 8. 0.28 0.27 1110 14 0.01 9. 0.32 0.33 10001 17 -0.01 10. 0.36 0.37 10011 19 -0.01 11. 0.4 0.41 10101 21 -0.01 12. 0.44 0.44 10111 23 0 13. 0.48 0.48 11001 25 0 14. 0.52 0.52 11011 27 0 15. 0.56 0.56 11101 29 0 16. 0.6 0.6 11111 31 0 17. 0.64 0.64 100001 33 0 18. 0.68 0.68 100011 35 0 19. 0.72 0.72 100101 37 0 20. 0.76 0.76 100111 39 0 21. 0.8 0.8 101001 41 0 22. 0.84 0.83 101011 43 0.01 23. 0.88 0.87 101101 45 0.01 24. 0.92 0.93 110000 48 -0.01 25. 0.96 0.97 110010 50 -0.01 26. 1 1.01 110100 52 -0.01 27. 1.04 1.05 110110 54 -0.01 28. 1.08 1.09 111000 56 -0.01 29. 1.12 1.13 111010 58 -0.01 30. 1.16 1.17 111100 60 -0.01 31. 1.2 1.21 111110 62 -0.01 32. 1.24 1.24 1000000 64 0 33. 1.28 1.28 1000010 66 0 34. 1.32 1.32 1000100 68 0 35. 1.36 1.36 1000110 70 0 36. 1.4 1.4 1001000 72 0 37. 1.44 1.44 1001010 74 0 38. 1.48 1.48 1001100 76 0 39. 1.52 1.52 1001110 78 0 40. 1.56 1.56 1010000 80 0 41. 1.6 1.6 1010010 82 0

Page 142: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 145 -

42. 1.64 1.64 1010100 84 0 43. 1.68 1.67 1010110 86 0.01 44. 1.72 1.71 1011000 88 0.01 45. 1.76 1.75 1011010 90 0.01 46. 1.8 1.79 1011100 92 0.01 47. 1.84 1.85 1011111 95 -0.01 48. 1.88 1.87 1100000 96 0.01 49. 1.92 1.91 1100010 98 0.01 50. 1.96 1.97 1100101 101 -0.01 51. 2 2.01 1100111 103 -0.01 52. 2.04 2.05 1101001 105 -0.01 53. 2.08 2.08 1101011 107 0 54. 2.12 2.12 1101101 109 0 55. 2.16 2.16 1101111 111 0 56. 2.2 2.2 1110001 113 0 57. 2.24 2.24 1110011 115 0 58. 2.28 2.28 1110101 117 0 59. 2.32 2.32 1110111 119 0 60. 2.36 2.36 1111001 121 0 61. 2.4 2.4 1111011 123 0 62. 2.44 2.44 1111101 125 0 63. 2.48 2.49 10000000 128 -0.01 64. 2.52 2.51 10000001 129 0.01 65. 2.56 2.55 10000011 131 0.01 66. 2.6 2.59 10000101 133 0.01 67. 2.64 2.65 10001000 136 -0.01 68. 2.68 2.69 10001010 138 -0.01 69. 2.72 2.73 10001100 140 -0.01 70. 2.76 2.77 10001110 142 -0.01 71. 2.8 2.81 10010000 144 -0.01 72. 2.84 2.85 10010010 146 -0.01 73. 2.88 2.89 10010100 148 -0.01 74. 2.92 2.92 10010110 150 0 75. 2.96 2.96 10011000 152 0 76. 3 3 10011010 154 0 77. 3.04 3.04 10011100 156 0 78. 3.08 3.08 10011110 158 0 79. 3.12 3.12 10100000 160 0 80. 3.16 3.16 10100010 162 0 81. 3.2 3.2 10100100 164 0 82. 3.24 3.24 10100110 166 0 83. 3.28 3.28 10101000 168 0 84. 3.32 3.32 10101010 170 0 85. 3.36 3.37 10101101 173 -0.01 86. 3.4 3.41 10101111 175 -0.01 87. 3.44 3.45 10110001 177 -0.01 88. 3.48 3.49 10110011 179 -0.01 89. 3.52 3.53 10110101 181 -0.01 90. 3.56 3.57 10110111 183 -0.01 91. 3.6 3.61 10111001 185 -0.01

Page 143: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 146 -

92. 3.64 3.65 10111011 187 -0.01 93. 3.68 3.69 10111101 189 -0.01 94. 3.72 3.73 10111111 191 -0.01 95. 3.76 3.76 11000001 193 0 96. 3.8 3.8 11000011 195 0 97. 3.84 3.84 11000101 197 0 98. 3.88 3.88 11000111 199 0 99. 3.92 3.92 11001001 201 0 100. 3.96 3.96 11001011 203 0 101. 4 4 11001101 205 0 102. 4.04 4.04 11001111 207 0 103. 4.08 4.08 11010001 209 0 104. 4.12 4.12 11010011 211 0 105. 4.16 4.17 11010110 214 -0.01 106. 4.2 4.19 11010111 215 0.01 107. 4.24 4.23 11011001 217 0.01 108. 4.28 4.27 11011011 219 0.01 109. 4.32 4.31 11011101 221 0.01 110. 4.36 4.37 11100000 224 -0.01 111. 4.4 4.41 11100010 226 -0.01 112. 4.44 4.45 11100100 228 -0.01 113. 4.48 4.49 11100110 230 -0.01 114. 4.52 4.53 11101000 232 -0.01 115. 4.56 4.57 11101010 234 -0.01 116. 4.6 4.6 11101100 236 0 117. 4.64 4.64 11101110 238 0 118. 4.68 4.68 11110000 240 0 119. 4.72 4.72 11110010 242 0 120. 4.76 4.76 11110100 244 0 121. 4.8 4.8 11110101 245 0 122. 4.84 4.84 11111000 248 0 123. 4.88 4.88 11111010 250 0 124. 4.92 4.92 11111100 252 0 125. 4.96 4.96 11111110 254 0

Tabela 5.2. Rezultati probnog merenja

Na slikama 5.3. i 5.4. data je zavisnost analognog VUL od digitalnog VIZ, za VUL mereno digimerom i za njegovu vrednost očitanu sa LCD-a. Uporedna karakteristika prikazana je na slici 5.5. ali zbog jako malih odstupanja razliku nije moguće uočiti. Razlika između te dve karakteristike predstavlja grešku konverzije i ona je prikazana na slici 5.6.

Page 144: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 147 -

Sl.5.3. Prenosna karakteristika konvertora ADC0804

Sl.5.4. Prenosna karakteristika konvertora ADC0804

Page 145: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 148 -

Sl.5.5. Uporedne prenosne karakteristike

Sl.5.6. Greška konverzije

Page 146: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 149 -

6. Dodatak 1 Specifikacije pojedinih komponenti

Sl.7.1. Fizičke specifikacije ADC0804

Page 147: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 150 -

Sl.7.2. Fizičke specifikacije PIC16F877

Page 148: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 151 -

Sl.7.3. Tehnički parametri i izgled tastera

Sl.7.4. Tehnički parametri i fizičke specifikacije dioda

Page 149: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 152 -

Parametri usmerača

Sl.7.5. Fizičke specifikacije usmerača

Sl.7.6. Fizičke specifikacije stabilizatora

Page 150: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 153 -

7. Dodatak 2

AllPic Programator

Programator je namenjen programiranju većine serijskih PICmikrokontrolera.

Pomenućemo samo neke od najpoznatijih: PIC16F8x, PIC16F62x, PIC16F87x,

PIC12C50x, PIC12F6xx itd. Hardver je zasnovan na već oprobanom i veoma

popularnom serijskom programatoru Pony Prog.

Uređaj se povezuje sa PC računarom putem RS232 serijskog porta, koji

standardno postoji na većini današnjih PC računara. Za rad programatora potreban

je i slabiji izvor napona napajanja oko 15 V. Dioda Dl na ulazu za napajanje je

predviđena kao zaštita od pogrešnog priključenja polariteta izvora za napajanje.

Izvor može biti i naizmenični napon, ukoliko vam je takav pri ruci. Stabilizator

napona 78L05 obezbeđuje 5 V napon potreban za napajanje mikrokontrolera, dok

se Vppnapon (aprox. 13V) generiše pomoću zener diode D3. Ostatak kola čine

tranzistori NPN i PNP, univerzalnog tipa, kao i propratne zener diode D5 i D6 i

otpornici R4 i R5 koji obezbeđuju TTL logičke nivoe (5V) potrebne za

programiranje mikrokontrolera.

Razlika u odnosu na postojeće programatore koji se mogu sresti na internetu

(Pony prog, JDM) je upravo u delu kola koga čine T3, T4 i JPl sa pratećim

elementima.

Kod starih modela programatora (Pony, JDM,...) javlja se problem ako je

potrebno reprogramirati PIC koji je prethodno programiran sa uključenim;

Page 151: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 154 -

INT/RC; i uključenim internim MCLR, u FUSES podešavanjima. U tom slučaju

PONY programator ne može ni da obriše PIC jer nije ispoštovana procedura

preporučena od strane proizvođača mikrokontrolera, koja se odnosi na to da se

Vdd (+5 V) napon sme pojaviti tek nakon uspostavljanja MCLR (+13 V)

programskog napona. Jedino je sa ovakvim sistemom moguće da PIC uđe u

programski mod i da se ponovno reprogramira. Sve navedene osobine poseduje

AllPIC. Međutim stari modeli PIC mikrokontrolera koji nemaju interni oscilator

zahtevaju obrnut proces od gore navedenog tj. prvo Vdd napon pa tek nakon toga

MCLR napon i za takve PIC kontrolere je ubačena podrška u vidu džampera JPl

kojim se bira mod rada; Vdd mode select.

Sl.8.1. Šema veza programatora AllPic

Indikator LED1 nas informiše o prisustvu napona napajanja programatora i

on treba da bude u granicama 14-20V, s tim da treba računati da pri 20V

napajanju grejanje stabilizatora može biti primetno. Indikator LED2 indicira

prisutan napon napajanja (Vdd +5 V ) na čipu koji se programira. Kratkospajač JPl ima funkciju:

Page 152: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 155 -

Ukoliko je spojen, Vdd (+5 V) napon će stalno biti prisutan što će se i videti

upaljenom LED2. Ovaj mod je za sve Microchip PIC mikrokontrolere koji nemaju

interni oscilator (16F84, 16F87x,) kao i eeprome.

Za sve nove mikrokontrolere potrebno je skinuti JPl i u tom modu Vdd

(+5v) se pojavljuje tek po uspostavljanju Vpp (13 V) programskog napona na

početku programiranja. Ovakav način rada je potreban za programiranje sledećih

mikrokontrolera 16F627, 16F628, 12F629, 12F675...

Kratkospajač JP2 služi za izbor Write protect moda za eeprome 24CXX.

Poseban konektor koji je označen na šemi veza kao CON1 koristi se za eksterni

priključak za incircuit programiranje (ICSP).

Napomena: Programator nije predviđen za 16C5x seriju i još neke specifične

Microchip mikrokontrolere.

Komponente koje su upotrebljene u ovom programatoru spadaju u

standardni asortiman ponude svake prodavnice elektro materijala. Iz tog razloga

ne treba očekivati poteškoće oko nabavke delova. Sklapanje treba odraditi

standardnim postupkom, pri čemu treba obratiti pažnju na dva kratkospajača koji

su označeni na montažnoj šemi crnom linijom, a nalaze se ispod podnožja za

mikrokontrolere i pored kondenzatora C4. Njih treba zalemiti pre svih drugih

komponenti. Uređaj sa PC računarom možete povezati i pomoću dodatnog kabla,

ali nije preporučljivo da njegova dužina prelazi 2 m.

Sl.8.2. Komponente koje su upotrebljene u AllPic programatoru

Page 153: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 156 -

8. Dodatak 3 Izgled Realizovanog Uređaja

Page 154: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 157 -

9. Autori Projekta

Branko Stojić Broj indeksa 10990 SSS: Elektrotehničar elekronike ETŠ „Nikola Tesla“, Beograd Student Elekronskog fakulteta u Nišu od 2002 god.

Milan Stojiljković Broj indeksa 10990 SSS:Gimnazija „Svetozar Marković“, Niš Student Elekronskog fakulteta u Nišu od 2002 god.

Page 155: AD konvertor sa integrisanim kolom ADC0804 i PIC16F877 ...es.elfak.ni.ac.rs/Papers/BStojic - MStojiljkovic - ADC0804 Times... · Elektronski fakultet u Nišu Mikroprocesorski sistemi

- 158 -

10. Korišćena Literatura

1. ADC0801/ ADC0802/ ADC0803/ ADC0804/ ADC0805 Data Sheet, National Semiconductor

2. PIC16F87X Data Sheet, Microchip Tecnology Inc 3. AllPic programator, Info Elektronika, Niš 4. Razvojni sistem za mikrokontroler PIC16F877; Branislav Dimirijević,

Slobodan Aleksić, Ivan Antic, seminarski rad, Elektronski fakultet, Niš 5. Sprega mikrokontrolera PIC16F877 sa paralelnim periferijskim

interfejsom D71055C i D/A konvertorom DAC0832LCV; Siniša Stoilković, Mladen Pavlović, Slaviša Popović, seminarski rad, Elektronski fakultet, Niš