funkcijski generator sa mikrokontrolerom

61
Univerzitet u Nišu Elektronski fakultet Katedra za elektroniku predmet:Mikroprocesorski sistemi Profesor-Mentor: prof.dr Mile Stojčev S S E E M M I I N N A A R R S S K K I I R R A A D D FUNKCISKI GENERATOR PROIZVOLJNIH TALASNIH OBLIKA REALIZOVAN POMOĆU MIKROKONTROLERA I D-LATCH-a kandidati :Bošković Milan br.ind:11042 Aleksandar Petrovic br.ind:10323 NIŠ, 2007

Upload: stankovic-srdjan

Post on 21-Oct-2015

25 views

Category:

Documents


2 download

DESCRIPTION

Primena mikrokontrolera

TRANSCRIPT

Page 1: Funkcijski Generator sa mikrokontrolerom

Univerzitet u Nišu Elektronski fakultet Katedra za elektroniku predmet:Mikroprocesorski sistemi Profesor-Mentor: prof.dr Mile Stojčev

SSEEMMIINNAARRSSKKII RRAADD

FUNKCISKI GENERATOR PROIZVOLJNIH TALASNIH OBLIKA REALIZOVAN POMOĆU MIKROKONTROLERA I D-LATCH-a

kandidati:Bošković Milan br.ind:11042 Aleksandar Petrovic br.ind:10323

NIŠ, 2007

Page 2: Funkcijski Generator sa mikrokontrolerom

- 2 -

SADRŽAJ

1. Sadržaj …………………………………………………………………….………….2 2. Opšti uvod …………………………………………………………………………......3 3. D- leč i D/A konvertor realizovan sa 2R-R otpornom mrežom ......................................5 3.1 D/A konvertor sa otpornim mrežama (sabiranje struja) ...........................................9 4. Uvod mikrokontroler ..................................................................................................14 5. Opis i analiza mikrokontrolera AT 89S8253 …………………………..…………. 15 5.1 O mikrokontroleru (blok dijagram, struktura čipa) ...............................................16 5.2 Opis pinova .......................................................................................................... 18 5.3 Tajmeri i brojači ................................................................................................... 22 5.3.1. Kontrola rada tajmera ................................................................................ 23 5.3.2. Tajmer 2 ......................................................................................................24 5.3.2.1. Korišćenje Tajmera 2 za generisanje brzine bauda ....................... .28

5.3.2.2 Korišćenje Tajmera 2 za programiranje izlaznog takta (clock-out). 29 6. Sistem prekida mikrokontrolera ............................................................................ .31 6.1. Izvori prekida .................................................................................................... 31 6.2. Maskiranje prekida ............................................................................................ 32 7. Napajanje .................................................................................................................... 34 8. Asembler .................................................................................................................... 38 9. Tipični aplikacioni programi .................................................................................. . 43 9.1 Softver (MEC UNP2 univerzalni programator) ................................................. 43 10. Zadaci za studente ................................................................................................... 51 11. Zaključak ..………………………………………………….…………………..... .59 12. Literatura ………………………………………………...……...…………….... . 60 13. Dodaci …………………………………………………………………………….. 61

Page 3: Funkcijski Generator sa mikrokontrolerom

- 3 -

2. OPŠTI UVOD

Cilj ovog projekta je da se generiše signal proizvoljnog talasnog oblika. To se može ostvariti na sledeći način. Naša vežba se sastoji iz dva elementarna bloka: prvi blok čini mikrokontroler firme ATMEL AT89S8253 sa celokupnom svojom strukturom koja će biti obrađena i prikazana u narednim poglavljima, dok drugi blok čini D-leč firme TOSHIBA TC74HC373 sa D/A konvertorom realizovanim sa 2R-R vezom. Komunikacija između ova dva bloka se ostvaruje preko dva porta koji su 8-bitni koji su povezani sa krimp konektorima koji su takođje 8-bitni (slika 1). Port 1.0-1.7 se koristi za slanje 8-bitne digitalne reči na osnovu koje se generiše signal proizvoljnog talasnog oblika, dok se kod porta 2 koristi samo 2.0 za slanje signala dozvole LE (latch enable input). Port za OE (output enable) nam nije poteban jer smo ga uzemljili na samoj pločići. Na koji način i za koje vrednosti sinala LE se šalje digitalna reč na ulaz D-leča će biti kasnije prikazano u tabeli stanja.

Sl. 1. Blok šema

Page 4: Funkcijski Generator sa mikrokontrolerom

- 4 -

Celokupna šema našeg generatora proizvoljnih talasnih oblika je data na slici 2.

2R

2R

2R

2R

2R

2R

2R

2R

2R

R

R

R

R

R

R

R

D/A konvertor

Q0

Q1

Q2

Q3

Q4

Q5

Q6

Q7

MikrokontrolerAT89S8253

D7

D6

D0

D1

D2

D3

D4

D5

LEP2.0

P1.0

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

D LečTC74HC373 AP

Sl. 2. Blok šema sa realizacijom D/A konvertora

Page 5: Funkcijski Generator sa mikrokontrolerom

- 5 -

3.D-LEČ I D/A KONVERTOR REALIZOVAN SA 2R-R OTPORNOM

MREŽOM: D-LEČ: D-leč TC74HC373 je brzi CMOS OCTAL LEČ sa tri nivoa izlaza izrađenih od silikonskog gejta C2MOS tehnologije. Cilj je postici veliku brzinu operativnosti ekvivalentnu LSTTL vremenu podržanu od strane CMOS sa smanjenom portošnjom. Ovi 8-bitni D-tipa lečovi su kontrolisani od stane LE signala dozvole na ulazu, i signala dozvole na izlazi OE. Kada je ulaz OE na visoko, oba izlaza su u stanju visoke inpedanse. Svi ulazi su opremljeni sa zaštitnim kolom zbog statičkog pražnjenja ili transcidentnog napona. Speifikacija leča TC74HC373 je:

Ø Najveca brzina................................... Ø Režim smanjenje potrošnje:.............. Ø Osetljivost na buku:...........................

Ø Simetrična izlazna inpedansa:............ Ø Izlazna kapacitivnost:......................... Ø Ujednačeno propagaciono kašnjenje.. Ø Široki opseg operativnog napona....... Ø Pinovi i funcionalna kompatibilnost odgovaraju 74LS7373/533

Tabela stanja:

Ulazi Izlazi OE LE D Q H X X Z L L X Qn L H L L L H H H

X: ne definisano stanje Z: visoka impeadana Qn: Q izlaz je lečovan u trenutku kada kada je LE kada uzima vrednost niskog nivoa .

Page 6: Funkcijski Generator sa mikrokontrolerom

- 6 -

Razlikujemo nekoliko tipova kućišta koje se koristi da bi se u njega upakovao ovaj D-leč TC74HC373. Ona se koriste u zavisnosti od tipa pločice koja se koristi ili od same tehnologije izrade pločice. One se razlikuju po obliku, težini i po tome da li koriste podnožje ili ne (za SMT tehnologiju). Mi koristimo leč sa kućištem (DIP 20PIN) Najčešce korišcenji tipovi kucista su: DIP 20PIN :

SOP 20PIN:

Page 7: Funkcijski Generator sa mikrokontrolerom

- 7 -

SOP 20PIN:

Page 8: Funkcijski Generator sa mikrokontrolerom

- 8 -

RASPORED PINOVA:

IEC logiški simboli:

Sistemski dijagram D-leča:

Page 9: Funkcijski Generator sa mikrokontrolerom

- 9 -

3.1 D/A konvertor realozovan mrežom 2R-R : D/A konvertori služe za pretvaranje digitalnih u analogne signale. Oni su istovremeno i digitalna i analogna kola, pošto imaju na svojim ulazima i izlazima i digitalne i analogne siganale. Ovi pretvarači se izrađuju kao posebna integralna kola, a mogu da se ostvare i od diskretnih komponenti ili upotrebom drugih integrisanih kola. Digitalno-analogna konverzija je ustvari pretvaranje binarno zapisane brojne vrednosti sa n bita:

u analogni napon čija je vrednost Va u voltima proporcionalno digitalnoj vrednosti Dn:

D/A konvertori se prave sabiranjem struja tako da su doprinosi svake struje srazmerni težini binarnih cifara zapisane digitalne vrednosti. Ako je binarna cifra nula, struja koja odgovara toj binarnoj cifri se množi sa nulom. Ako je binarna cifra L1, odgovarajuća struja se množi sa jedan. D/A konvertor se može praviti i pomoću impulsno širinske modulacije tako da što je trajanje impulsa srazmerno digitalnom broju Dn, a trajanje periode srazmerno maksimalnoj vrednosti digitalnog broja (Dn) max.

Page 10: Funkcijski Generator sa mikrokontrolerom

- 10 -

D/A konvertor sa otpornim mrežama(sabiranje struja): D/A kovertor koji sabira struje sadrži izvor referentnog napona Vr ili Vout, prekidače koji se postavljaju u jedan od od dva moguća položaja pod dejstvom binarne cifre bi i otpornu mrežu koja provodi i sabira konponente struja koje su proporcionalne sa težinama binarnih cifara .

Page 11: Funkcijski Generator sa mikrokontrolerom

- 11 -

Primenom superpozicije, izračunava se napon tevenenovog generatora. Doprinos bita „bi „ tevenonovog generatora je :

gde su:

Napon ekvivalentnog generatora je: Ako su izabrani otpornici u mreži sa odnosom težina binarnih cifara:

onda je:

Page 12: Funkcijski Generator sa mikrokontrolerom

- 12 -

Napon na potrošaču:

Opisana težinska otporna mreža ima nedostatak u velikom rasponu upotrebljenih vrednosti: za n bita , odnos je 2n-1. Pored toga, promene vrednosti otpornosti (tolerancija) sa različitim doprinosima na vrednost izlaznog napona. Prethodni nedostaci se odklanjaju primenom lestvičaste otporne mreže. Lestvičasta otporna mreža: Lestvičasta otporna mreža ima osobinu da je dinamička otpornost između svakog čvora, gde su R i 2R otpornici (slika 3.)

Sl. 3. Lestvičasta otporna mreža za n-bita

Ovaj rezultat važi za lestvičastu otpornu mrežu sa proizvoljnim briojem bita Na osnovu predhodnog rezultata sledi da se svaki napon: biVr polovi kada se prostire po čvorovima R-2R mreže ako je Rp=∞

Page 13: Funkcijski Generator sa mikrokontrolerom

- 13 -

Sledi da napon b0Vr daje doprinos tevenenovom generatoru od

Generalno, napon biVr doprinosi

tevenenovom generatoru vt . Primenom superpozicije, sledi:

Napon na potrošaču je:

Page 14: Funkcijski Generator sa mikrokontrolerom

- 14 -

4.UVOD MIKROKONTROLER

Današnji život je, nezamisliv bez različitih vidova komunikacije, informisanja,

kontrole i dr. Sve više procesi koji mogu da se kontrolišu elektronskim putem, se time i podvrgavaju. Počev od medicine gde se kod dijagnostike bolesti pacijenata sve češće koriste elektronski uređaji koji različite vidove energije koriste za pobuđivanje elektro senzora koji pobuđuju pokazivače za prikazivanje tih kontrolnih pregleda. Ne možemo da ne spomenemo automobilsku industriju gde se pocesi starta, upravljanja, kontrole i drugih procesa takođe sprovode elekronskim uređajima. Uzaludno je pričati o tome koliko je elektronika prodrla u oblast života kad je u pitanju televizija, radio, telefonija, informacione tehnologije, internet, satelitske komunikacije i dr. Podsetiću samo na upotrebu elektronskih uređaja u vojnoj, avionskoj, telekomunikacionoj i drugim oblastima industrije. U novije vreme sve češće se čovek kao aktivni subjekat u izvršenju mnogih procesa, zapostavlja a ostavlja mesto da sami elektronski uređaji upravljaju i kontrolišu neke procese. Kao primer toga u vojnoj avijaciji se sve cešće upotrebljavaju bespilotne letelice koje same kontrolišu, snimaju, izvršavaju zadatke tamo gde je to potrebno. Sve ovo o čemu smo govorili ne može se zamisliti bez sistema kao sto su memorijski prostori, procesori, mikrokontroleri, displeji, senzori i dr. Sa razvojem mikrokontrolera u prošlosti povećavao se broj procesa koji su mogli da se kontrolišu ovim putem. Mikrokontroleri su relativno spori ali sa aspekta iskorišćenja silicijuma po površini-veoma-efikasni procesori, uglavnom namenjeni za upravljačko-intenzivne aplikacije. Karakteriše ih mikroprogramska CISC bazirana arhitektura, što znači da je broj taktnih intervala za izvršenje različitih tipova instrukcija u velikoj meri promenljiv. Moć izračunavanja kao i broj memorijskih resursa je veoma ograničen, a obim reči staze-podataka relativno mali (obično 8 ili 16 bitova). Sa druge strane, kompleksnost skupa instrukcija pruža odgovarajući programski interfejs, uključujući instrukcije za množenje i deljenje kao i veći broj memorijsko adresnih načina rada. Kao rezultat se dobija veoma kompaktan kôd (programi su relativno mali).

S obzirom da su mikrokontroleri namenjeni za upravljačko-orijentisani aplikacioni domen, oni poseduju bogat skup instrukcija za manipulisanje podacima na nivou-bita, kao i periferijskim komponentama kakvi su tajmeri ili serijski U/I portovi. Veoma često jednostavni procesori koji su se ranije koristili kao CPU-ovi u računarskim sistemima (kakvi su, recimo procesori iz familije Intel 8051, Motorola 6502, 6811, i dr., koji su bili popularni kao CPU-ovi u kućnim računarima) danas se ponovo koriste u nešto izmenjenoj formi kao mikrokontroleri kod embedded sistema. Mikrokontrolere delimo na 4-, 8-, 16-, i 32-bitne. Ilustracije radi, 4-bitni mikrokontroleri uglavnom se koriste u automatima za igru, 8-bitni kao programatori u veš mašinama, 16-bitne srećemo u sistemima za upravljanje klimom u kolima, a 32-bitni se primenjuju da obave složene telekomunikacione funkcije u mobilnim bežičnim uredjajima.

Page 15: Funkcijski Generator sa mikrokontrolerom

- 15 -

5.OPIS I ANALIZA MIKROKONTROLERA AT89S8253

- Kompatibilan je sa Microsoft-51 procesorom - 12KB fleš memorija - SPI serijski unos za učitavanje programa - 10 000 ciklusa upis/brisanje - 2KB EEPROM memorija - 100 000 ciklusa upis/brisanje (64-bajtna korisnička matrica) - Napon napajanja od 2.7V do 5.5 V - Frekvencija od 0 do 24 MHz - Memorijsko zaključavanje u 3 nivoa - 256 x 8-bitni unutrašnji RAM - 32 I/O linije za programiranje - Tri 16-bitna Tajmer/Brojač - 9 generatora prekida - Poboljšani UART serijski port sa centriranjem detekcije greške i automatskim prepoznavanjem adrese - Male snage napajanja - Uspostavljanje prekida u niskom režimu rada - Programabilni tajmeri - Dvostruki pokazivač podataka - Isključivanje pomoću znaka (Power-off Flag) - Fleksibilni ISP programator (byte i page modovi) - Page mode: 64 byte/page za kodnu memoriju, 32 byte/page za memoriju podataka - 4-nivo poboljšani kontrolor prekida - Programabilna x2 clock opcije - Unutrašnji Power-on Reset - 42-pin PDIP model kućišta za redukovanje EMS emisije - Zeleni (Pb/Holide-free) opcija kućišta

AT89S8253 je processor visokih performansi, male potrošnje snage. To je CMOS 8-bitni mikrokontroler sa 12 KB fleš memorijom i 2 KB EEPROM memorijom. Mikrokontroler je napravljena u Atmel korporaciji i kompatibilna je sa nadaleko poznatim i popularnim intelovom MCS-51 familijom mikrokontrolera (8052). Reprogramiranje memorije je moguće pomoću SPI serijskog ulaza ili pomoću konvencionalnog programatora memorija. Kombinovanjem različitih 8-bitnih CPU-a sa ugrađenom programibilnom fleš memorijom na monolitnom čipu. FLASH I EEPROM se mogu reprogramirati u sistemu preko SPI-porta.

Atmel AT89S8253 je fleksibilan procesor koji je zahvaljujući niskoj ceni našao veliku primenu kod mnogih kontrolnih aplikacija i programa.

AT89S8253 uključuje standardne osobine poput 12 KB fleš memorije, 2 KB EEPROM, 256 B RAM memorije, 32 I/O linije, programibilni clock/tajmer, dvostruki pokazivač, tri 16 bit-na clock/counter, 6 vektorske arhitekture prekida sa 2 nivoa, potpuni serijski ulaz, eksterni sopstveni oscilator i električno kolo sata. U stvari AT89S8253 (uz

Page 16: Funkcijski Generator sa mikrokontrolerom

- 16 -

pomoć statičke logike) se koristi za operacije niskih frekvencija, potpomognut sa 2 softverska moda. IDLE mod zaustavlja CPU dok dopuštajući RAM, clock/counter, serijski port i sistem prekida se koriste za nastavak funkcionisanja. Niski mod čuva RAM sadržaj ali i zamrzava oscilator isključujući sve ostale funkcije u kolu sve dok naiđe sledeći spoljašnji prekid ili hardverski reset. FLASH memorija se moze menjati pomoću serijskog SPI pristupa. Zadržavanje Reset opcije SPI omogućava da memorija bude upisana ili pročitana od stane bita koji su bili aktivni.

5.1 Blok dijagram AT89S53 jezgra

Sl.5.1. Struktura čipa mikrokontrolera AT89S53

Ovako sintetizovan mikrokontroler umnogome olakšava posao projektanta hardvera, smanjuje ukupno hardversko okruženje i broj spoljašnjih veza i na taj način povećava pouzdanost sistema. Na slici 5.2. prikazana je detaljnija arhitektura mikrokontrolera AT89S53. Ovde se vide komponente kao što su aritmetičko-logička jedinica (ALU) sa parom registara (TMP1, TMP2) za privremeno upisivanje podataka, akumulator (ACC) sa pomoćnim registrom B, statusni registar (PSW), registar naredbi sa dekoderom, programski brojač (PC) i registar za inkrementiranje (povećanje za 1) programskog brojaća (PC-incrementer).

Page 17: Funkcijski Generator sa mikrokontrolerom

- 17 -

Sl.5.2 Detaljna struktura mikrokontrolera AT89S53

Pomoćni registar B, koji se naziva multiplikativnim registrom, s1uži za smeštanje

drugog operanda za aritmetičke operacije množenja i deljenja Posle izvršene operacije množenja iii deljenja u njemu se nalazi viši bajt rezultata množenja ili ostatak deljenja, respektivno Zajedno sa ACC pomoćni registar B čini registarski par. Pokazivač steka (SP-Stack Pointer) s1uži za adresiranje vrha (najviše lokacije) stek memorije Ovaj registar se inkrementira prilikom upisivanja podataka u stek a dekrementira prilikom čitanja podataka iz ove memorije.

DPTR praktično sadrži dva registra: DPH(Data pointer High) i DPL(Data pointer Low). Njegov zadatak je da drži 16-bitnu adresu. Može biti iskorišćen kao 16-bitni registar i kao dva nezavisna 8-bitna registra. Obično se koristi za privremeno pamćenje podataka.

Page 18: Funkcijski Generator sa mikrokontrolerom

- 18 -

Mikrokontroler AT89S53 poseduje 4 prihvatna registra (LATCH-a) za čuvanje stanja izlaza na portovima P0, P1, P2 i P3 . Serial data bufer (SBUF) s1uži za upis podatka koji se ša1je i čitanje podatka koji se prima preko serijske veze. Registarski parovi (TH0,TL0), (TH1,TL1) i (TH2,TL2) su 16-bitni brojački registri za brojač 0,1 i 2 respektivno.

Registarski par (RCAP2H,RCAP2L) su capture registri za Timer 2 capture-mode. U ovom modu u odzivu transmisije AT89S52 T2EX pinu, TH2 i TL2 su kopirani u RCAP2H i RCAP2L. Timer 2 takođe ima 16-bitni auto-reload mode i RCAP2H i RCAP2L zadržavaju reload veličinu za ovaj mod.

Za kontrolu i upisivanje statusa prilikom prekida za tajmere, brojače i za serijski prenos podataka koriste se registri specijalne namene IP, IE, TMOD, TCON, T2CON, T2MOD, SCON i PCON.

5.2 Opis pinova

Page 19: Funkcijski Generator sa mikrokontrolerom

- 19 -

Od 1 do 8 - Port 1: Ovaj port je 8-bitni dvosmerni ulazno-izlazni port sa neprekidnim unutrašnjim

napajanjem. Izlazne posebne memorijske lokacije PORT1 mogu pobuditi 4 TTL logicka kola. Kada je 1 s upisana na port 1 pinovi su na visokom nivou uz pomoć unutrašnjeg neprekidnog napajanja i mogu se koristiti kao ulazi. Početna ulazna struja je Iul=150µA zbog unutrašnjeg neprekidnog napajanja. Neki PORT 1 pinovi mogu imati i druge dodatne funkcije P.1.0 i P.1.1 mogu služiti kao 2 spoljašnja TIMER /COUNTER ulaza (P 1.0/T2) i 2. aktivni ulaz (P 1.1/T2 EX) CLOCK/COUNTER respektivno. Osim toga P 1.4, P 1.5, P 1.6, P 1.7 mogu služiti za pomoćne portove. DATA INPUT/OUTPUT i CLOCK INPUT/OUTPUT pinovi su prikazani u tabeli:

Pin porta Razne funkcije

P1.0 T2 (spoljni brojački ulaz do tajmera/brojača 2), izlaz takta P1.1 T2EX (triger hvatanja/punjenja tajmera/brojača 2 i kontrola smera) P1.5 MOSI (koriste se za programiranje u sistemu) P1.6 MISO (koriste se za programiranje u sistemu) P1.7 SCK (koriste se za programiranje u sistemu)

Ovaj port prihvata adrese niskih nivoa u toku programiranja i verifikacije FLASH

memorije.

9 - Reset: Visok logički nivo na ovom ulazu resetuje sve interne registre (registre dovodi u

stanje 00000000), sa sledećim izuzecima: - P0, P1, P2 i P3 (izlazni registri svih spoljnih portova) se dovode u stanje 11111111

- SBUF se ne menja - SP se dovodi u stanje 00000111 (07h) - Neki bitovi u registrima IP, IE i PCON fizički ne postoje, pa tako ne mogu ni da

se resetuju

od 10 do 17 - Port 3: Ovo je 8 bit-ni dvosmerni I/O dvosmerni port sa neprekidnim unutrašnjim

napajanjem. PORT 3 pomoćne memorije mogu pobuditi 6 TTL ulaza. Kada se upisuju podaci na PORT3 ovaj PORT dosta energije vuče od unutrašnjeg neprekidnog napajanja i tada se mogu koristiti ulazi. Kod ovih ulaza uz pomoć spoljašnjeg napajanja struja je tipično 150 µA zbog slabog unutrašnjeg napajanja. PORT 3 takođe prihvata takođe i pojedine kontrolne signale za programiranje FLASH memorije. PORT3 takođe predstavlja i servis specijalnih promenljivih osobina AT89S 8253 koji su prikazani u tabeli.

Ako se koristi kao univerzalni ulaz ili izlaz, po svemu je sličan portu 1, ali na svakoj nožici ima još po neku specijalnu funkciju:

Page 20: Funkcijski Generator sa mikrokontrolerom

- 20 -

Pin porta Razne funkcije

P3.0 RXD (serijski ulaz za asinhronu komunikaciju (mod 1, 2 i 3) ili serijski izlaz za sinhronu komunikaciju (mod 0))

P3.1 TXD (serijski izlaz za asinhronu komunikaciju (mod 1, 2 i 3) ili taktni (clock) izlaz sa sinhronu komunikaciju (mod 0))

P3.2 INT0 (ulaz za prekid (interapt) 0) P3.3 INT1 (ulaz za prekid (interapt) 1) P3.4 T0 (spoljnji ulaz tajmera 0) P3.5 T1 (spoljnji ulaz tajmera 1) P3.6 WR (signal za upis u spoljnu memoriju) P3.7 RD (signal za čitanje iz spoljne memorije)

18 i 19 - X2 i X1: Izlaz i ulaz internog oscilatora. Ako se koristi kvarc-kristal za stabilizaciju

učestanosti oscilatora (to je najčešći slučaj), on se vezuje za ove dve nožice, s tim što na svaku nožicu (prema masi) treba dodati po jedan kondenzator od 20-40pF. Ovo je potrebno da bi se sprečilo oscilovanje na nekom višem harmoniku. Opseg uëestanosti je od 1 do 12 MHz, a izrađuju se i mikrokontroleri koji rade i na znatno višim frekvencijama.

20 – Masa

Od 21 do 28 - Port 2 ili adrese od A8 do A15: Port 2 je 8 bit-ni dvosmerni I/O port sa unutrašnjim neprestanim napajanjem.

Izlazne pomoćne memorije PORT-a 2 mogu prihvatiti/napajati 6 TTL ulaza. Kada je 1 s na ulazu porta 2 on je na visokom nivou uz pomoć neprekidnog unutrašnjeg napajanja i mogu se koristiti kao ulazi. Kod ovih ulaza tipična ulazna stuja je 150 µA zbog slabog unutrašnjeg neprekidnog napajanja. PORT 2 emituje adrese visokih naredbi u toku donošenja podataka od spoljašnje memorije i u toku prihvatanja podataka iz spoljašnje memorije koje koriste 16-bitne adrese(MOVX i DPTR). U ovom slucaju PORT2 kada emituje 1s koristi jako unutrašnje napajanje .U toku prihvatanja podataka iz spoljašnje memorije tada PORT 2 korist 8bit-ne adrese (MOVX i RI). PORT2 takođe ima i specijalne funkcije registra. PORT 2 takođe prihvata adresne bitove visokog zahteva i neke kontrolne signale u toku programiranja i potvrde FLASH memorije.

Ako se koristi mikrokontroler sa internim ROM-om i nema spoljnjeg ROM-a ili RAM-a, mogu se koristiti sve linije ovog porta kao univerzalni ulazi ili izlazi. Ako se koristi spoljna memorija, onda su ovo visoki adresni izlazi, od A8 do Al 5. U tom slučaju, čak i ako se koriste samo neke adrese, preostale nožice ovog porta ne mogu da se koriste kao ulazi ili izlazi. NAPOMENA: Svi pinovi u PORT 1 i PORT 2 kao i pinovi PORT 3 (izuzev P32 INTO 1 P 3.3 INT 1 imaju sopstveno nepekidno napajanje koje je nedostupno u POWER-DOWN modu. Pinovi P 3. 2 (INTO) i P 3.3 (INT 1) su aktivni podjednako i u POWER –DOWN modu ( da bi mogli da potrazuju prekide za izlaz iz POWER-DOWN modu) uz stalno ukljuceno unutrasnje napajanje.

Page 21: Funkcijski Generator sa mikrokontrolerom

- 21 -

29 - PSEN: Program Store Enable (aktiviranje spoljašnjeg ROM-a): Omogućava čuvanje programa. PSEN čita strobe za programiranje spoljašnje

memorije. Kada AT89S8253 izgubi kod od izlazne memorije programa, PSEN je aktivan dvostruko u toku svakog ciklusa mašine izuzev 2PSEN u toku svakog prihvatanja podataka od spoljašnje memorije.

Normalno se ovaj izlaz spaja sa CS ili OE ulazom na spoljnom EPROM-u, jer ga mikrokontroler aktivira (dovodi na nizak nivo) svaki put kad čita bajt iz programske memorije (za kontrolu spoljašnjeg RAM-a se koriste druge nožice).

30 – ALE/PROG: Address Latch Enable (Upis u adresni registar): Omogućava blokiranje podataka. ALE/PROG je ustvari izlazni koji blokira niske

bajt adrese (u toku opadajuće ivice) u toku prihvatanja spoljašnje memorije. Ovaj pin je takođe ulazni impuls programa u (PROG) u toku programiranja FLASH-a. U normalnom radu ALE traje 1/6 frekvencije oscilovanja i može biti upotrebljen za spoljašnji counter i clock. Važno je međutim da je ALE impuls preskočen u toku svakog prihvatanja podataka iz spoljašnje memorije. ALE operacija može biti onemogućena postavljanjem bita 0 AUX R SFR na lokaciju 8EH.Sa umetanjem bita, ALE je aktivan samo u toku MOVX ili MOVC instrukcije. Postavljanjem ALE disable, bit nema efekta na mikrokontroler u spoljašnjem izvršnom modu.

Da bi se sve funkcije spakovale u standardno kućište od samo 40 nožica, pribegnuto je multipleksiranju nekih signala. Tako je port P0 dobio dve funkcije, izlazne adrese A0-A7 i ulaz/izlaz podataka D0-D7. Pre svakog očitavanja programa iz spoljne memorije ili prozivanja RAM-a mikrokontroler na P0 prosleđuje niži bajt adresnog registra i aktivira izlaz ALE. Spoljni registar na visok nivo ALE memoriše stanje P0, a izlazi ovog registra se koriste kao A0-A7. U drugom delu mašinskog ciklusa mikrokontrolera P0 se koristi kao magistrala podataka (Data Bus).

31 - EA: External Access (Spoljni pristup): Ako je ovaj ulaz nizak, mikrokontroler će sve instrukcije čitati iz spoljnog ROM-a.

od 32 do 39 - Port 0, Adrese A0-A7 ili magistrala podataka: Slično portu P2, i port P0 može da se koristi kao univerzalni ulaz i izlaz samo ako

se ne koristi spoljna memorija Ako se koristi, tada je P0 adresni izlaz za A0-A7 kad je ALE visok, a magistrala podataka (Data Bus) kada je ALE nizak.

40 - Napajanje +5V.

Page 22: Funkcijski Generator sa mikrokontrolerom

- 22 -

5.3 Tajmeri/Brojači

Mikrokonroler AT89S53 sadrži tri tajmersko-brojačka registra. Prva dva

zajednička su za sve modele iz familije 8051, dok je treći dodat modelima 8052. Označavaju se kao tajmeri 0,1 i 2. Sva tri registra se mogu konfigurisati da rade i kao tajmeri i kao brojači.

Tajmer 0 i Tajmer 1

Kao što je pokazano na slici ispod, T0 sadrži dva registra – TH0 i TL0, koji služe za pamćenje višeg i nižeg bajta 16-bitnih binarnih brojeva.

Na primer, ako je T0 = 0, oba registra će imati vrednost 0. Ako T0 ima decimalnu vrednost (1000), TH0 viši bajt imaće vrednost 3, a TL0 (niži bajt) imaće decimalnu vrednost 232. To se vidi na slici ispod.

Formula za računanje vrednosti 16-bitnog registra je vrlo jednostavna:

THO * 256 + TL0 = T Za prethodni primer važi:

3 * 256 + 232 = 1000

Page 23: Funkcijski Generator sa mikrokontrolerom

- 23 -

Tehnički tajmeri su 16-bitni registri, pa prema tome njihova maksimalna vrednost

je 65,535. Ako se ovaj broj prekorači tajmer će se automatski resetovati i njegova vrednost će ponovo biti nula, tj. tajmer nastavlja da broji od nule. Ovo stanje se zove overflow ili prekoračenje.

Ova dva tajmera mogu da rade kao brojački registri, ili registri koji mere zadati vremenski interval. Oba tajmera mogu raditi u četiri radna rezima.

Kada radi kao brojač, sadržaj tajmerskog registra se uvećava za jedan na svaku silaznu ivicu odgovarajućeg ulaza mikrokontrolera (T0 za tajmer 0 i T1 za tajmer 1). Maksimalna frekvencija ulaznog signala koju brojač može da prati je 24 puta manja od radnog takta mikrokontrolera.

Kada radi kao tajmer, sadržaj tajmerskog registra se uvećava za jedan u svakom mašinskom ciklusu. Jedan mašinski ciklus traje 12 perioda radnog takta mikrokontrolera (Ako je radni takt 12MHz, registar se uvećava svake mikrosekunde).

5.3.1. Kontrola rada tajmera

Radom tajmera upravlja se pomoću registara TMOD (sl.5.3.1) i TCON (sl.5.3.2). Gornja četiri bita registra TMOD kontrolišu rad tajmera 1, a donja četiri rad tajmera 0. Bitovi TR1 i TR0 registra TCON određuju da li će odgovarajući tajmer/brojač biti aktivan ili ne. Npr. ako je brojač 0 neaktivan on se neće uvećavati kada na ulazu T0 nastupi prelaz sa visokog na nizak nivo. Ovo je ilustrovano na slikama 5.3.2.1, 5.3.2.2 i 5.3.2.3. Način rada tajmera bira se kombinacijom bitova M1 i M0 registra TMOD.

Sl.5.3.1 Registar TMOD

Page 24: Funkcijski Generator sa mikrokontrolerom

- 24 -

Sl.5.3.2 Registar TCON

Bitovi C/T registra TMOD (u viša ili niža četiri bita u zavisnosti od tajmera)

definišu da li odgovarajući tajmer radi kao tajmer (C/T=0) ili kao brojač (C/T=1). Bitovi GATE svojim stanjem 0 omogućuju odgovarajućem tajmeru da radi uvek kada je odgovarajući TR bit jednak jedinici. Ako je GATE=1, rad tajmera uslovljen je i stanjem na ulazu INT1 odnosno INT0 u zavisnosti od tajmera. Odgovarajući INT ulaz tada mora biti jedinica da bi tajmer radio.

5..2. Timer 2

Tajmer 2 je 16-bitni Tajmer/Brojač koji može podjednako da radi i kao tajmer i kao brojač. Ovo se određuje selekcijom bita 2T/CP u registru specijalne namene T2CON. Tajmer/Brojač registar dat je na sl. 5.3.2.1. Tajmer 2 se razlikuje od prethodna dva tajmera jer ovaj tajmer ima dva 8-bitna registra. TH2 i TL2 su vezana serijski i formiraju 16-bitni brojački registar. Druga dva, RCAP2H i RCAP2L takođe su vezana serijski, i njihova glavna uloga zahvat ’’capture’’ sadržaja brojačkog registra.

Page 25: Funkcijski Generator sa mikrokontrolerom

- 25 -

Sl. 5.3.2.1 Tajmer/Brojač registar

Glavna prednost ove organizacije ogleda se u jednostavnoj zameni mesta

podataka jednostavno instrukcijom i ne zahteva dodatne programske akrobacije. Takođe i ovaj tajmer ima nekoliko različitih modova rada. Tajmer 2 se kontroliše registrom T2CON i u tabeli ispod objašnjen je svaki njegov bit.

Sl. 5.3.2.2 T2CON-Tajmer/Brojač kontrolni registar

Simbol Funkcija

TF2

Indikator stanja prekoračenja tajmera 2 i on se automatski aktivira kada brojač detektuje prekoračenje. Da bi registar mogao da detektuje naredno prekoračenje, ovaj bit se mora izbrisati softverski. Ako su aktivirani bitovi RCLK=1 ili TCLK=1, prekoračenje nema efekta na TF2

EXF2 Ovaj bit se automatski aktivira kada se desi transfer iz brojača u bafer ili obrnuto. Ako je aktiviran, on generiše prekid, ukoliko nije postavlja se bit DCEN u T2MOD-u. EXF2 se briše softverski.

RCLK Prihvatni okidni impuls. Kada je na jedinici koristi impulse prekoračenja Tajmera 2, a kada je na nuli impulse prekoračenja Tajmera 1.

TCLK Prenosni okidni impuls. Takođe kada je na jedinici serijski port koristi impulse prekoračenja Tajmera 2 a kaka je na nuli impulse prekoračenja Tajmera 1.

EXEN2 Spoljašnje aktiviranje tajmera 2. Kada je EXEN2=1 vrši se reloadovanje Tajmera 2 koje može bit ili izazvano opadajućom ivicom na spoljnjem ulazu T2EX. Kada je EXEN2=0 Tajmer 2 ignoriše događaje na T2EX.

TR2 Kontrola start-1/stop-0 za Tajmer 2. Logočka jedinica staruje rad tajmera.

2T/C Selekcija tajmera ili brojača. 02T/C = interni brojač (osc/12), 12T/C = eksterni brojač događaja (okidanje zadnjom ivicom).

Page 26: Funkcijski Generator sa mikrokontrolerom

- 26 -

2RL/CP

Selekcija stanja Capture/Reload. 12RL/CP = javlja se captures stanje pri negativnom prenosu T2EX ako je EXEN2=1. Kada je 02RL/CP = javlja se auto-reload stanje, bez obzira na prekoračenje Tajmera 2 ili negativnom prenosu na T2EX kada EXEN2=1. Kada je bilo koji RCLK=1 ili TCLK=1, ovi bitovi su onemogućeni i Tajmer 2 je prinuđen da auto-reload-uje prekoračenje na Tajmeru 2.

Tajmer 2 ima tri operativna moda: capture, auto-reload i generator brzine bauda

koji su selektovani bitovima u T2CON registru a prikazani su na sl.3.2.2.

RCLK+TCLK 2RL/CP TR2 MODE 0 0 1 16-bit Auto-reload 0 1 1 16-bit Capture 1 X 1 Baud Rate Generator X X 0 (Off)

Sl. 5.3.2.3. Operativni modovi tajmera 2

Tajmer 2 kao izvor taktovanja može da koristi sistemski clock, sistemski clock podeljen sa 12 i opadajuću ivicu na spoljnem ulazu (T2 pin).

U tkz. capture modu (modu 0) negativna ivica na spoljnjem ulaznom pinu T2EX izaziva prepisivanje trenutne vrednosti tajmera 2 (TH2 i TL2) u registre RCAP2H i RCAP2L. Ovaj mod je jako koristan kod aplikacija u kojima je potrebno meriti vremenske intervale do pojave nekog događaja. 16-bitni registri (TH2+TL2) drže broj od koga počinje da se broji. Postavljanjem bita TR2 na jedinici u registru TCON startuje se tajmer, svaki dolazeći impuls povećava vrednost za jedan. Kada se oba registra napune, impulsi prouzokuju prekoračenje (decimalna vrednost 65536), tada se resetuju i počinju da broje od nule. Ovaj mod je opisan na slici 3.2.4.

U modu auto-reload (Up or Down Counter) - (mod 1) Tajmer 2 se može isprogramirati da radi kao up/down brojač ukoliko je konfugurisan u auto-reload režimu. Ovo mogućnost je prozvana DCEN (Down Counter Enable) a ovaj bit se nalazi u specijalnom registru T2MOD. Kada je aktiviran bit DCEN, Tajmer 2 broji gore ili dole zavisno od vrednosti T2EX pina. Kada tajmer odbroji, postavlja se odgovarajući marker, tajmer se reload-uje tako što se u njegove registre prepisuje vrednost iz registara RCAP2H i RCAP2L i automatski restartuje.

U modu 2, tajmer dva određuje brzinu serijskog prenosa podataka preko UART-a, jer on određuje stopu prenosa (baud rate). Naime, Tajmer 2 u ovom modu radi isto kao i u modu auto-reload, stim što po odbrojavanju se ne postavlja fleg niti se generiše zahtev za prekid, već taj događaj služi kao takt za seriski prenos (i za slanje i za prijem nezavisno). U ovom modu opadajuća ivica na spoljnjem ulazu T2EX nema nikakvog uticaja na serijski prenos, već taj pin može biti iskorišćen kao izvor zahteva za dodatni spoljni prekid. Blok dijagrami modova rada Tajmera 2 su prikazani na sledećim slikama:.

Page 27: Funkcijski Generator sa mikrokontrolerom

- 27 -

Sl 5.3.2.4. Tajmer 2 u Capture modu

Sl. 5.3.2.5. Tajmer 2 Auto Reload Mode (DCEN=0)

Page 28: Funkcijski Generator sa mikrokontrolerom

- 28 -

Sl. 5.3.2.6. Tajmer 2 Auto Reload Mode (DCEN=1)

T2EX = 0/1 countin down/up

5.3.2.1.Korišćenje Tajmera 2 za generisanje brzine bauda :

Kod AT89S53, postavljanjem TCLK i/ili RCLK u T2CON selektuje Tajmer 2 kao generator brzine boda (slika 5.3.2.1). Pod ovim uslovima, brzina bauda za prijem i slanje može biti simultano različita. Selektovanjem RCLK i/ili TCLK dovodi Tajmer 2 u njegov režim generatora brzine bauda , što je prikazano na slici ispod.

Režim generatora brzine bauda je sličan auto-reload režimu rada. U ovom slučaju, brzine bauda u režimima 1 i 3 su rešene od strane Tajmera 2 prema sledećoj jednakosti

Page 29: Funkcijski Generator sa mikrokontrolerom

- 29 -

Sl. 5.3.2.1.

Tajmer 2 može biti konfigurisan za tajmer ili brojač operacije. U dosta primera,

on je konfigurisan za tajmer operaciju ( 02T/CP = ). Normalno, tajmer povećava vrednost pri svakom mašinskom ciklusu, ali operacija tajmera je različita za Tajmer 2 kada se koristi kao generator brzine boda. Kao generator brzine bouda, Tajmer 2 povećava vrednost svakog vremenskog stanja. U ovom slučaju jednakost je data kao:

gde je (RCAP2H, RCAP2L) sadržaj registra RCAP2H i RCAP2L uzet kao 16-bitni ceo broj.

5.3.2.2 Korišćenje Tajmera 2 za programiranje izlaznog takta (clock-out):

50% taktovanih ciklusa može biti programirano na izlaz pina P1.0 na portu 1, kao što je pokazano na slici . Ovaj pin, pored toga što je obično I/O pin, ima dve alternativne funkcije. Može biti programiran za ulaz spoljnjeg takta za Tajmer/Brojač 2 ili za izlaz 50% taktovanih ciklusa od 61 Hz do 4MHz (za 16 MHz radnu frekvenciju).

Page 30: Funkcijski Generator sa mikrokontrolerom

- 30 -

Sl. Tajmer 2 u clock-out modu

Da bi konfigurisali Tajmer/Brojač 2 kao generator takta, bit 2T/C (T2CON.1)

mora biti obrisan i bit T2OE (T2MOD.1) mora biti postavljen. Bit TR2 (T2CON.2) startuje i stopira tajmer.

Frekvencija izlaznog takta zavisi od frekvencije oscilatora i reloadovane vrednosti capture registara (RCAP2H, RCAP2L) Tajmera 2, kao što se vidi iz sledeće jednačine.

U režimu izlaznog takta, brojači Tajmera 2 neće generisati prekid. Ovo ponašanje je slično kada se Tajmer 2 koristi kao generator bouda. Moguće je simultano koristiti Tajmer 2 kao generator brzine bauda i kao generator takta. Međutim, frekvencije generatora brzine bauda i generatora izlaznog takta ne mogu biti određene nezavisno jer oba generatora koriste RCAP2H i RCAP2L registre.

Page 31: Funkcijski Generator sa mikrokontrolerom

- 31 -

6. SISTEM PREKIDA MIKROKONTROLERA

U mikroprocesorskim sistemima često je potrebno istovremeno pratiti rad više

perifernih jedinica. To se može postići neprestanim prozivanjem jedne po jedne jedinice, proveravajući njihova stanja. Ako se utvrdi da je došlo do neke promene na nekoj od tih periferija na koju treba reagovati, preduzimaju se odgovarajuće akcije kao odgovor na promene. Na primer, nakon startovanja konverzije A/D konvertora neprekidno se vrši čitanje stanja BUSY nožice konvertora, koje označava da li je konverzija u toku ili je završena. Ako neko očitavanje pokaže da je konverzija završena, tada se učita odgovarajući podatak sa konvertora. U ovom slučaju mikrokontroler je neprestano zauzet proverom stanja na liniji BUSY A/D konvertora.

Drugi način praćenja rada više perifernih jedinica je da same jedinice jave kada je potrebno opsluživanje. Ta metoda se naziva metodom prekida, dok se prethodno opisana naziva metodom prozivanja (pooling). Dakle, kada se koristi metoda prekida, periferna jedinica posebnim signalom javlja kada je neophodna reakcija upravljačkog uređaja tj. mikrokontrolera. Taj signal se zove zahtev za prekidom odnosno interaptom (interrupt request). Slučaj iz prethodnog primera bi se mogao rešiti povezivanjem BUSY nožice konvertora na odgovarajuću INT (spoljašnji prekid) nožicu mikrokontrolera. Kada se BUSY deaktivira izaziva se prekid. Nakon što mikrokontroler uvaži zahtev, prelazi na podprogram za opsluživanje prekida (u ovom slučaju čitanje vrednosti konverzije), a nakon toga nastavlja sa izvršavanjem programa gde je prekinut u trenutku stizanja zahteva za prekidom. U ovom slučaju mikrokontroler se ne opterećuje proverom stanja na periferiji nego samo izvodi odgovarajuću akciju kada je to potrebno. Iz ovoga je jasno da u ovom slučaju mikrokontroler potroši mnogo manje vremena za opsluživanje periferija, zbog čega i program može biti mnogo efikasniji.

6.1.Izvori prekida

Kod ovog mikrokontrolera postoje šest izvora prekida. Dva spoljašnja ( 0INT i 1INT ), tri prekida tajmera (tajmer 0,1 i 2) i prekid serijskog porta.

Sa ciljem da se koriste bilo koji od prekida u flash mikrokontroleru, treba preduzeti sledeća tri koraka.

1. Postaviti EA (bit dozvole) u IE registru na 1. 2. Postaviti odgovarajući pojedinačni bit prekida u IE registru na 1. 3. Započeti prekidnu servisnu rutinu na odgovarajućoj adresi vektora prekida. Videti sledeću tabelu. Izvor prekida Adresa vektora Funkcija

IE0 TF0

0003H 000BH

Spoljašnji prekid 0 Prekid tajmera 0

IE1 TF1

0013H 001BH

Spoljašnji prekid 1 Prekid tajmera 1

R1 i T1 TF2 i EXF2(1)

0023H 002BH

Prekid serijskog porta Prekid tajmera 2

Page 32: Funkcijski Generator sa mikrokontrolerom

- 32 -

Na slici ispod se može videti da se prekid može jednostavno onemogućiti brisanje

bita EA u istom registru.

Kao dodatak, za spoljašnje prekide, pinovi INT0 i INT1 (P3.2 i P3.3) moraju biti

postavljeni na 1, i u zavisnosti od toga da li se prekid aktivira nivoom ili prelazom, bitovi IT0 ili IT1 u TCON registru moraju se postaviti na 1. ITx = 0 okidanje nivoom ITx = 1 okidanje prelazom

6.2 Maskiranje prekida

Svaki od pomenutih prekida se može dozvoliti ili zabraniti tj. maskirati. Kada je prekid maskiran, odgovarajući bitovi (TF0, TF1,TF2, IE0 i IE1) se postavljaju na 1, ali to ne izaziva prelazak na odgovarajući servisni potprogram. Kod AT89S53 svaki od izvora prekida se može maskirati, to se kontroliše preko registra IE (interrupt enable, sl.). Kao što se vidi na sl., postavljanjem određenog bita na 1 odgovarajući prekid biva dozvoljen. U suprotnom je maskiran. Najviši bit EA (enable all) kontroliše maskiranje svih prekida. Ukoliko je on 0, svi prekidi su maskirani bez obzira na stanje bitova istog registra koji kontrolišu maskiranost pojedinačnih izvora prekida.

Page 33: Funkcijski Generator sa mikrokontrolerom

- 33 -

IE: Registar dozvole prekida (bit-adresabilan) Ako je bit 0, odgovarajući prekid je onemogućen. Ako je bit 1, odgovarajući

prekid je dozvoljen

EA — ET2 ES ET1 EX1 ET0 EX0

EA IE.7 Onemogućava sve prekide. Ako je EA=0, nema potvrde prekida. Ako je EA=1, svaki izor prekida se pojedinačnoomogućava ili onemogućava postavljanjem njegovog bita dozvole.

--- IE.6 Nije implementirano, rezervisano za buduću upotrebu.(1) ET2 IE.5 Omogućava ili onemogućava prekoračenjetajmera 2 ili zahtevanje

prekida. ES IE.4 Omogućava ili onemogućava prekid serijskog porta.

ET1 IE.3 Omogućava ili onemogućava prekoračenje tajmera 1. EX1 IE.2 Omogućava ili onemogućava spoljašnji prekid 1. ET0 IE.1 Omogućava ili onemogućava prekoračenje tajmera 0. EX0 IE.0 Omogućava ili onemogućava spoljašnji prekid 0.

Page 34: Funkcijski Generator sa mikrokontrolerom

- 34 -

7. Napajanje

Napajanje mikrokontrolera je ostvareno klasičnom procedurom i komponentama

kao i kod drugih kontrolera. Naizmenični napon napajanja iz mreze 220V se preko transformatora tansformiše na 9V pa zatim ispravlja preko greca i kondenzatora. Posle toga se signal vodi na stabilizator napona realizovan kao IC LM 7805 i takav signal se vodi na procesor i ostale digitalne periferne uredjaje i služi kao napajanje konstantnom vrednošću napona. Električna šema izvora napajanja je data na sledećoj slici:

Električna šema uređaja sa svim detaljno opisanim komponentama kao i izgled štampane veze naše pločice date su na sledećim slikama:

Page 35: Funkcijski Generator sa mikrokontrolerom

- 35 -

Page 36: Funkcijski Generator sa mikrokontrolerom

- 36 -

Page 37: Funkcijski Generator sa mikrokontrolerom

- 37 -

Kao što je već bilo reči, sva digitalna kola se napajaju preko izvora konstantnog

napona +5V i pozitivan kraj ovog napona je doveden na 40-ti pin mokrokontrolera a masa je preko 20-og pina povezana na uzemljenje i zajedničku masu. Kada je reč o oscilatoru konstantne učestanosti ovde je on povezan preko pinova 18 i 19 i ima vrednost 11.059MHz. Povezivanje mikrokontrolera i D-leča ostvarili smo preko porta P1 i P2. Pinove od P1.0 do P1.7 smo iskoristili za povezivanje ulaza od D0 do D7 D-leča. Dok smo pin P2.0 iskoristili za povezivanje ulaza LE na D-leču. Znači, na ulaz D-leča dovodimo 8 bita (D0-D7) koja će služiti za brojanje, dok na ulaz dozvole (LE) dovodimo takt. Iskoristićemo Tajmer 2 mikrokontrolera i njegova dva 8-bitna registra kao tajmer i kao brojač. Kao brojač Tajmer 2 brojaće od 0 do 255 pošto koristimo 8-bitni registar pa je 28=256. Da bi radio kao brojač koristićemo capture režim rada a da bi radio kao tajmer koristićemo clock-out režim rada. Pozitivan kraj napona napajanja, koji smo uzeli sa pločice, je doveden na 20-ti pin D-leča, a masa je dovedena na 10-ti pin.

Page 38: Funkcijski Generator sa mikrokontrolerom

- 38 -

8. ASEMBLER

Asembler smo simulirali i kompajlirali u Keil uVision 3 kompajleru. Na osnovu

asemblera napisanog u Keil-u generisali smo heksadecimalni fajl koji smo kasnije koristili za programiranje našeg mikrokontrolera pomoću univerzalnog programatora, koga će mo opisati malo kasnije.

Da bi konfigurisali Tajmer/Brojač 2 kao generator takta, bit 2T/C (T2CON.1) mora biti obrisan i bit T2OE (T2MOD.1) mora biti postavljen. Frekvencija izlaznog takta se računa po obrascu

Od ove frekvencije zavisi dužina stepenika testerastog napona tj. dužina periode. Što je veća frekvencija to je perioda kraća i odrnuto.

Za primer koji smo odradili koristili smo frekvenciju izlaznog takta od 10 KHz. Vrednosti koje unosimo u registre izračunavaju se iz gornje jednačine i iznose RCAP2H=FEH i RCAP2L=EBH. Vreme trajanja jednog takta je 1/f =1/10 000=0.1 ms, a trajanje periode izlaznog napona je T=256*0.1 ms=25.6 ms. Kao što smo već rekli sa povećavanjem frekvencije veća je brzina rada tajmera a samim tim i perioda je kraća. U startu se uradi deklaracija promenljivih tj. flegova i bajtova. Od 20H do 30H imamo bit adresabilne bajtove i oni se koriste ako imamo kasnije neke flegove tj. markere koje ce mo koristiti da ih tu smestimo. Name DAC Program segment code

Definisali smo konstante koje kasnije koristimo za programiranje sekvenci (komande koje zadajemo) USPON EQU 1 MIRNO EQU 2 DOLE EQU 3 NANULU EQU 4 POCETAK EQU 5 SETTIMER EQU 6 CSEG AT 002BH // Naredba se pozicionira na toj memorijskoj lokaciji (lokacija na koju se postavlja registar programskog brojača kad se javi prekid Tajmera 2), memorijska lokacija koja se odnosi na fleš memoriju JMP Timer_2

Page 39: Funkcijski Generator sa mikrokontrolerom

- 39 -

Potprogram koji definiše prekide kod Tajmera 2 TIMER_2: CLR TF2 // Briše marker za prekid

Generisanje signala za LE kod D-leča SETB P2.0 // Postavlja bit0 na portu P2.0 CLR P2.0 // Odmah se zatim briše bit0 na portu P2.0

Dekrementira i skače ako nije R2=0 (R2 je pomoćni registar i on odbrojava dužinu sekvence) DJNZ R2,S0 // Registar R2 određuje dužinu trajanja deonice u okviru zadate sekvence

Ako je kraj sekvence (R2=0) pozivamo potprogram nova_deonica

CALL NOVA_DEONICA // Kada je R2=0 poziva se čitanje nove deonice RETI // Povratak iz prekida

Nešto nalik case strukturi (u odnosu na R1) kojom se određuje koja je deonica trenutno aktivirana S0: CJNE R1,#USPON, S1 // Skoči ako nije jednako CALL PP1 // Ako jeste izvrši PP1 (potprogram) S1: CJNE R1,#MIRNO, S2 CALL PP2 S2: CJNE R1,#DOLE, S3 CALL PP3 S3: CJNE R1,#NANULU, S4 CALL PP4 S4: CJNE R1,#POCETAK, S5 CALL PP5 S5: CJNE R1,#SETTIMER, RET_I CALL SET_TIMER RET_I: RETI // Završavamo case strukturu i vraćamo se iz prekida

Posle ispitivanja R1 registra izvršava se neki od sledećih potprograma PP1: INC P1 // PP1 rastući RET PP2: RET // PP2 mirno

Page 40: Funkcijski Generator sa mikrokontrolerom

- 40 -

PP3: DEC P1 // PP3 opadajući RET

Dodeljuje portu P1 nulu, vraća ga na nulu PP4: MOV P1,#0 // PP4 vrati na 0 MOV R2,#1 RET

Pošto R0 registar koristimo kao indeksni registar u PP5 vraćamo na početnu lokaciju u memoriju u koju je upisana sekvenca koja se izvršava PP5: MOV R0,#020H // PP5 na sekvenca od početka MOV R2,#1 RET

Potprogram kojim podešavamo trajanje Tajmera 2 tako što u capture registrima upisujemo vrednost od koje Tajmer 2 broji (to smo izračunali iz jednačine gore)

Podešavanje Tajmera 2 SET_TIMER: MOV RCAP2H,@R0 // Iz memorijske lokacije na koju ukazuje registar R0 (indirektno adresiranje)

INC R0 // Pređi na sledeću memorijsku lokaciju MOV RCAP2L,@R0 INC R0 MOV R2,#1 RET // Vrati se iz potprograma

Potprogram koji iščitava podatke o nova_deonica (šta treba sledeće da uradi) NOVA_DEONICA: MOV A,@R0 // Isčitavanje parametara za novu deonicu MOV R1,A // R1 dobija vrednost iz memorijske lokacije R0

U registru R1 se smešta kod stanja sekvence tj. da li je uspon, mirno, opada, vraća na nulu, vrati na početak sekvence ili podesi trajanje Tajmera 2 INC R0 // Registar R0 služi kao indeksni registatr za čitanje zadate sekvence iz RAM-a

Ako je u R1 upisano uspon, mirno ili opada tada treba da se pročita još jedan parametar koji određuje trajanje stanja, zato služi sledeća case struktura kojom se ispituje

Page 41: Funkcijski Generator sa mikrokontrolerom

- 41 -

da li je u R1 upisano jedno od ovih tri stanja, ako jeste onda se vrši čitanje parametara u sledeće memorijske lokacije, ako nije završava se potprogram CJNE R1,#USPON, SD1 // Struktura kojom ispitujemo da li je potrebno iscitati drugi parametar JMP READ_SP // Ako je sekvenca uspon, mirno, dole onda je potrebno pročitati drugi parametar SD1: CJNE R1,#MIRNO, SD2 JMP READ_SP SD2: CJNE R1,#DOLE, RET_ND // Ako nije jedna od tri gore navedene sekvence onda nema drugog parametra pa treba preskočiti njegovo čitanje READ_SP: MOV A,@R0 MOV R2,A INC R0 RET_ND: RET

Sledeći potprogram služi za unošenje sekvence START_V: MOV R0,#020H // U R0 se smešta početna lokacija na kojoj se u RAM-u smešta sekvenca MOV R2,#1 // U R2 se nalazi brojač u ovom slučaju treba da se izrši samo jedna prekidna rutina

Programiranje sekvence koja se izvršava MOV @R0,#SETTIMER // Postavimo vrednost Tajmera INC R0 // Pređi na sledeću mem lokaciju MOV @R0,#0FFH // Prvi parametar za viši registar Tajmera 2 INC R0 // Pređi na sledeću mem lokaciju MOV @R0,#0F0H // Drugi parametar za niži registar Tajmera 2 INC R0 MOV @R0,#USPON INC R0 MOV @R0,#15 // Uspon traje 15 vremenskih intervala INC R0 MOV @R0,#MIRNO INC R0 MOV @R0,#10 // Mirno traje 10 vremenskih intervala

Page 42: Funkcijski Generator sa mikrokontrolerom

- 42 -

INC R0 MOV @R0,#DOLE INC R0

MOV @R0,#12 //Na dole traje 12 vremenskih intervala INC R0 MOV @R0,#NANULU // Traje jedan vremenski interval INC R0 MOV @R0,#POCETAK MOV R0,#020H RET

Potprogram za inicijalizaciju Tajmera 2, upisujemo početne vrednosti u registre Tajmera 2 INIT_TIMER: MOV TH2,#0FEH MOV TL2,#0EBH MOV RCAP2H,#0FEH MOV RCAP2L,#0EBH SETB ET2 // Omogućava prekide Tajmera 2 SETB EA // Omogućava sve prekide SETB TR2 // Start brojača Tajmera 2 RET

RSEG PROGRAM // Segment glavnog programa startuje od nulte memorijske lokacije u memoriji za program (fleš memoriju)

U glavnom programu inicijalizuje se Tajmer 2, postavljaju se početne vrednosti na portovima i upisuje se u RAM memoriju sekvence (poziva se potprogram koji upisuje sekvencu u RAM memoriju), zatim ulazi u beskonačnu petlju i čeka prekid Tajmera 2. MAIN: CALL INIT_TIMER CLR P2.0 // Brisanje bita 0 porta P2 MOV P1,#0 // Postavi port P1 u 00000000 CALL START_V // Programiranje sekvencu JMP $ // Vrti se u beskonačnu petlju END

Page 43: Funkcijski Generator sa mikrokontrolerom

- 43 -

9. Tipični aplikacioni programi

9.1 Softver:

Za programiranje mikrokontrolera AT89S8253 koristili smo Univerzalni programmer UNP2 firme MEC. To je uređaj koji služi za programiranje ražličitih tipova čipova ,tako što već gotov heksadecimalni fajl koji smo dobili u keil-u (asembler) učitava u čip. Ovaj naš pogramator se može koristiti za za različite tipove čipova koji se mogu razlikovati po tipu kućiša ili broju pinova,zato i ima univerzalno podnožje za njih.Ima mogucnost brisanja i upisa odgovarajuceg sadržaja.

Generalni opis UNP2 : Ø Mali, mocni i brzi univerzalni programator. Ø DIL40 ZIF adapter ,uređaji u DIL paketu do 40 pina su podržani bez

adaptera. Ø Konekcija sa PC paralelni port . Ø Visoko brzinski IEEE 1284 izlazni port sa brzinom od 1Mb/s . Ø Lak za korišcenje u DOC i Windows 95/98/Me/NT/200/XP Ø Adapter za napajanje i softver su sastavni delovi paketa.

Uređaj podržava programiranje za: Ø EPROM:NMOS/CMOS,27xxx I 27cxxx serije, sa 8/16 širinom baze

podataka, puna podrška za LV seriju(*1*2) Ø EEPROM:NMOS*CMOS, 28xxx,28Cxxx,27EExxx serije, sa 8/16 bita

širinom baze, puna podrška za LV seriju(*1*2) Ø FLASH EPROM: 28Fxxx, 29Cxxx, 29Bxxx, 29LVxxx,29Wxxx, 49Fxxx

serije sa 8/16 širinom baze podataka, puna podrška za LV seriju(*1*2)

Page 44: Funkcijski Generator sa mikrokontrolerom

- 44 -

Ø SerijaE(E)PROM: 17Cxxx,

24Cxxx,25Cxxx,25Cxxx,59Cxxx,85Cxxx,93Cxxx serije , puna podrška za LV seriju(*1*2)

Ø Konfiguracioni PROM: 17xxx serije i LV serije. Ø NV RAM, PLD serija. Ø Mikrokontroleri MCS51, 87Cxxx,89Cxxx,89Sxxx,89LVxxx serije od

Atmela,Atmel W and M,Intel,Philips,SST,paralelni i seriski(ISP) mod . Ø Mikrokontroleri Scenixs: SX 18xxx, SX20xxx,SX28xxx serije.

Početni korisnički ekran izgleda ovako:

Page 45: Funkcijski Generator sa mikrokontrolerom

- 45 -

Sledeći korak je izbor ATMEL-ovog mikrokontrolera, a kako smo mi koristili AT89S8253 biramo njega. Sto je prikazano na sledećim slikama:

Page 46: Funkcijski Generator sa mikrokontrolerom

- 46 -

Posle izbora komponente sledi brisanje čipa

Page 47: Funkcijski Generator sa mikrokontrolerom

- 47 -

Zatim sledi učitavanje heksadecimalnog zapisa i asemblera u mikrokontroler.

Page 48: Funkcijski Generator sa mikrokontrolerom

- 48 -

Zatim sledi programiranje mikrokontrolera:

Page 49: Funkcijski Generator sa mikrokontrolerom

- 49 -

Page 50: Funkcijski Generator sa mikrokontrolerom

- 50 -

Izgled ekrana posle programiranja mikrokontrolera prikazan je gore na slici. Sada kada smo završili programiranje, vadimo čip iz programatora i stavljamo ga u podnožje na maketi. Pošto smo isprogramirali mikrokontroler uzimamo osciloskop i stavljamo sonde na izlaz D/A konvertora generisani oblik željenog napona izgleda kao na slici:

Page 51: Funkcijski Generator sa mikrokontrolerom

- 51 -

10.ZADACI ZA STUDENTE

PRIMER 1. Generisati signal proizvoljnog talasnog oblika pomocu funkciskog geneartora. Koji ce da ima rastucu ivicu definisanu programskom sekvencom (konstantom) USPON sa naponom od 0.293 V, mirujucu sekvencu definisanu programskom konstantom MIRNO sa naponom od 0.195 V ,opadajucu ivicu definisanu programskom konstantom DOLE sa naponom 0.234 V i ivicu kojom se signal vraća na nulu definisanu programskom konstantom NANULU sa naponom od 0.02V. Frekvencija izlaznog takta CLOCK OUT je 10 KHz. Napomena: Signal realizovati korisćenjem postojeceg asemblera , gde su naponi definisani vremenskim intervalima, a ne voltima. Za programiranje mikokontrolera koristiti unuverzalni programator UNP2 firme MEC. RAD: Name DAC Program segment code USPON EQU 1 MIRNO EQU 2 DOLE EQU 3 NANULU EQU 4 POCETAK EQU 5 SETTIMER EQU 6 CSEG AT 002BH JMP Timer_2 TIMER_2: CLR TF2 SETB P2.0 CLR P2.0 DJNZ R2,S0

CALL NOVA_DEONICA RETI

Page 52: Funkcijski Generator sa mikrokontrolerom

- 52 -

S0: CJNE R1,#USPON, S1 CALL PP1 S1: CJNE R1,#MIRNO, S2 CALL PP2 S2: CJNE R1,#DOLE, S3 CALL PP3 S3: CJNE R1,#NANULU, S4 CALL PP4 S4: CJNE R1,#POCETAK, S5 CALL PP5 S5: CJNE R1,#SETTIMER, RET_I CALL SET_TIMER RET_I: RETI

PP1: INC P1 RET PP2: RET PP3: DEC P1 RET

PP4: MOV P1,#0 MOV R2,#1 RET

PP5: MOV R0,#020H MOV R2,#1 RET

SET_TIMER: MOV RCAP2H,@R0

INC R0 MOV RCAP2L,@R0 INC R0 MOV R2,#1 RET

Page 53: Funkcijski Generator sa mikrokontrolerom

- 53 -

NOVA_DEONICA: MOV A,@R0 MOV R1,A

INC R0 CJNE R1,#USPON, SD1 JMP READ_SP SD1: CJNE R1,#MIRNO, SD2 JMP READ_SP SD2: CJNE R1,#DOLE, RET_ND READ_SP: MOV A,@R0 MOV R2,A INC R0 RET_ND: RET

START_V: MOV R0,#020H MOV R2,#1 MOV @R0,#SETTIMER INC R0 MOV @R0,#0FFH INC R0 MOV @R0,#0F0H INC R0 MOV @R0,#USPON INC R0 MOV @R0,#15 INC R0 MOV @R0,#MIRNO INC R0 MOV @R0,#10 INC R0 MOV @R0,#DOLE INC R0 MOV @R0,#12 INC R0 MOV @R0,#NANULU INC R0 MOV @R0,#POCETAK MOV R0,#020H RET

Page 54: Funkcijski Generator sa mikrokontrolerom

- 54 -

INIT_TIMER: MOV TH2,#0FEH MOV TL2,#0EBH MOV RCAP2H,#0FEH MOV RCAP2L,#0EBH SETB ET2 SETB EA SETB TR2 RET

RSEG PROGRAM MAIN: CALL INIT_TIMER CLR P2.0 MOV P1,#0 CALL START_V JMP $ END

Page 55: Funkcijski Generator sa mikrokontrolerom

- 55 -

PRIMER 2. Generisati signal proizvoljnog talasnog oblika pomocu funkciskog geneartora. Koji ce da ima rastucu ivicu definisanu programskom sekvencom (konstantom) USPON sa naponom od 1.953 V, mirujucu sekvencu definisanu programskom konstantom MIRNO sa naponom od 0.59 V ,ponovo rastucu ivicu sa naponom od 0.977 V ,opadajucu ivicu definisanu programskom konstantom DOLE sa naponom 2.34V i ivicu kojom se signal vraća na nulu definisanu programskom konstantom NANULU sa naponom od 0.59V. Frekvencija izlaznog takta CLOCK OUT je 10 KHz. Napomena: signal realizovati korisćenjem postojeceg asemblera , gde su naponi definisani vremenskim intervalima, a ne voltima. Za programiranje mikokontrolera koristiti unuverzalni programator UNP2 firme MEC. RAD: Name DAC Program segment code USPON EQU 1 MIRNO EQU 2 DOLE EQU 3 NANULU EQU 4 POCETAK EQU 5 SETTIMER EQU 6 CSEG AT 002BH JMP Timer_2 TIMER_2: CLR TF2 SETB P2.0 CLR P2.0 DJNZ R2,S0

CALL NOVA_DEONICA RETI S0: CJNE R1,#USPON, S1 CALL PP1 S1: CJNE R1,#MIRNO, S2 CALL PP2 S2: CJNE R1,#DOLE, S3 CALL PP3

Page 56: Funkcijski Generator sa mikrokontrolerom

- 56 -

S3: CJNE R1,#NANULU, S4 CALL PP4 S4: CJNE R1,#POCETAK, S5 CALL PP5 S5: CJNE R1,#SETTIMER, RET_I CALL SET_TIMER RET_I: RETI

PP1: INC P1 RET PP2: RET PP3: DEC P1 RET PP4: MOV P1,#0 MOV R2,#1 RET

PP5: MOV R0,#020H MOV R2,#1 RET

SET_TIMER: MOV RCAP2H,@R0

INC R0 MOV RCAP2L,@R0 INC R0 MOV R2,#1 RET NOVA_DEONICA: MOV A,@R0 MOV R1,A

INC R0 CJNE R1,#USPON, SD1 JMP READ_SP

Page 57: Funkcijski Generator sa mikrokontrolerom

- 57 -

SD1: CJNE R1,#MIRNO, SD2 JMP READ_SP SD2: CJNE R1,#DOLE, RET_ND READ_SP: MOV A,@R0 MOV R2,A INC R0 RET_ND: RET

START_V: MOV R0,#020H MOV R2,#1 MOV @R0,#SETTIMER INC R0 MOV @R0,#0FFH INC R0 MOV @R0,#0F0H INC R0 MOV @R0,#USPON INC R0 MOV @R0,#100 INC R0 MOV @R0,#MIRNO INC R0 MOV @R0,#30 INC R0 MOV @R0,#USPON INC R0 MOV @R0,#50 INC R0 MOV @R0,#DOLE INC R0 MOV @R0,#120 INC R0 MOV @R0,#NANULU INC R0 MOV @R0,#30 INC R0 MOV @R0,#POCETAK MOV R0,#020H RET INIT_TIMER: MOV TH2,#0FEH MOV TL2,#0EBH MOV RCAP2H,#0FEH

Page 58: Funkcijski Generator sa mikrokontrolerom

- 58 -

MOV RCAP2L,#0EBH SETB ET2 SETB EA SETB TR2 RET

RSEG PROGRAM MAIN: CALL INIT_TIMER CLR P2.0 MOV P1,#0 CALL START_V JMP $ END

Page 59: Funkcijski Generator sa mikrokontrolerom

- 59 -

11. ZAKLJUČAK: Na osnovu svega što je ovde urađeno i prikazano slikama, programom (asemblerom) rečima i blok šemama, može se zaključiti da je generator proizvoljnog talasnog oblika uspešno realizovan, što pokazuju i ponuđena rešenja kao rezultat proteklog rada. Studentima se daje na korišćenje par primera signala proizvoljnog talasnog oblika kod kojih se mogu menjati periode trajanja i izgled po želji, i koji se mogu nadograđivati po potrebi i koristiti u lab. vežbama ili u druge edukativne svrhe.

Page 60: Funkcijski Generator sa mikrokontrolerom

- 60 -

11.LITERATURA:

- RISC i SICS Procesori –Pr.Mile Stojcev

- www.atmel.com Literature

- Atmel AT89S8253 Datasheet

- Atmel Microcontroller Instruction Set

- Toshiba TC74HC373AP Datasheet

- MEC UNP2 details specification

- www.atmel.com

- www.keil.com

- www.mecelectronic.com

Page 61: Funkcijski Generator sa mikrokontrolerom

- 61 -

12. DODACI

Sva literatura koja je korišćena u ovom projektu je data u elektronskoj verziji ovog projekta i dostupna je zainteresovanim kandidatima.