56
Univerzitet u Nišu Elektronski fakultet Katedra za elektroniku Predmet: Arhitekture i programiranje mikrokontrolera ARHITEKTURA I PROGRAMIRANJE MIKROPROCESORA NA ČIPU -seminarski rad- Student postdiplomac:

Povezivanje IP –evaes.elfak.ni.ac.rs/Seminar works MCU/Arhitektura i programiranje...  · Web viewU njega se prilikom čitanja upisuje podatak iz EEPROM sa adrese sadržane u EEAR,

Embed Size (px)

Citation preview

Univerzitet u Nišu Elektronski fakultetKatedra za elektronikuPredmet: Arhitekture i programiranje mikrokontrolera

ARHITEKTURAI

PROGRAMIRANJEMIKROPROCESORA

NAČIPU

-seminarski rad-

Student postdiplomac:

Jovanović Milicabr.ind. 1238/05

SADRŽAJ

1. 8-BITNI MIKRORAČUNARI................................................................................................21.1. Istorijski razvoj.....................................................................................................................21.2. Mikroračunarski sistemi na jednom čipu..............................................................................31.3. Principijelne aplikacije.........................................................................................................31.4. Uticaj Flash memorije...........................................................................................................31.5. Lako programiranje..............................................................................................................42. ARHITEKTURA MIKROKONTROLERA...........................................................................62.1. CPU jezgro............................................................................................................................8

Aritmetičko logička jedinica (ALU)................................................................................9Statusni registar................................................................................................................9Registri opšte namene.......................................................................................................9X, Y i Z registar..............................................................................................................10Pokazivač steka..............................................................................................................10Tajming izvršenja instrukcija.........................................................................................11Obrada reseta i prekida...................................................................................................11

2.2. Sistemski takt......................................................................................................................12Kristalni oscilator...........................................................................................................13Kalibrisani unutrašnji RC oscilator................................................................................14Spoljašnji takt.................................................................................................................15128 kHz unutrašnji oscilator...........................................................................................15Registar preskaler takta (CLKPR)..................................................................................15

2.3. Power management i Sleep modovi...................................................................................162.4. Kontrola sistema i reset......................................................................................................162.5. Watchdog tajmer.................................................................................................................172.6. Prekidi.................................................................................................................................182.7. U/I portovi..........................................................................................................................193. UGRAĐENE MEMORIJE (FLASH, ROM, EPROM).........................................................203.1. Ugrađena reprogramabilna Flash programska memorija...................................................203.2. SRAM memorija podataka.................................................................................................203.3. EEPROM memorija podataka............................................................................................213.4. U/I memorija.......................................................................................................................224. PROGRAMIRANJE..............................................................................................................244.1. Načini adresiranja...............................................................................................................24

Direktno adresiranje.......................................................................................................24Indirektno adresiranje.....................................................................................................24

4.2. Skup instrukcija AVR.........................................................................................................255. PROGRAMSKO OKRUŽENJE ZA PROGRAMIRANJE MIKROPROCESORA.............316. Budućnost 8-bitnih uredjaja...................................................................................................34

1

1. 8-BITNI MIKRORAČUNARI

1.1. Istorijski razvoj

Istorija µR-a je relativno kratka. U 19. veku Charls Babbages je projektovao mašinu koja je vršila izračunavanje po zapamćenom skupu instrukcija. Pomagala mu je Ada, grofica od Lovelace-a, koja je bila prvi programer na svetu. Nažalost, tehnološka ograničenja devetnaestog veka dovela su Babbage-a u nezgodan položaj kada je trebalo da realizuje radni model. U dvadesetom veku, teorija mehaničkih izračunavanja je dalje razvijana od strane John von Neumann-a i Alan Turing-a. Jedan od prvih digitalnih računara realizovan sa relejima projektovao je Howard Aiken. Prvi elektronski digitalni računar napravio je John Atanasoff kasnih 1930. godina. Najpoznatija mašina za računanje ENIAC napravljena je na univrezitetu Pennsylvania u toku II svetskog rata. Završena je 1946. godine koristila je elektronske cevi i mogla je da radi samo nekoliko sati.

Komercijalna primena računar čekala je do pojave tranzistora ranih 1950. godina. Tehnologija integrisanih kola 1960. dramatično smanjenje cenu i veličinu kola i dovodi do pojave miniračunara. Tada su miniračunari odvojeni od računara iz velikih institucija i došli u ruke individualnih korisnika u laboratorijama i ++++++, ali i dalje cena im je bila visoka za prosečnog korisnika.

Nešto revolucionarno u svetu računara dogodilo se 1971. godine. Prvo kolo opšte namene koje je sadržalo sve osnovne delove procesora na jednom čipu – mikroprocesor je rodjen. To je bio Intel-ov 4004, 4-bitni CPU razvijen od strane Intel-ovog tima Ted Hoff, Frederico Faggin i Stan Mazor.

U sledećih nekoliko godina uveden je 8-bitni 8008. Interesantno u vezi ovog čipa je da ga je Intel razvio kao poseban uredjaj za Data Corporation, kao krajnjeg korisnika. Iako korporacija ima specifikovan svoj projekta, Datapoint zatim odlučuje da ne koristi ovaj uredjaj jer im nije odgovarala cena i brzina. Intel je onda je pokušao da proda 8008 kao uredjaj opšte namene i otkrio da je neophodno (kao potencijalnu trgovinu) da zaista postoji potreba za procesorom integrisanih kola. 8080, poboljšana verzija, tako da je pratio i pronašao neposredne aplikacije u širokom opsegu proizvoda. Usledio je ogroman uspeh, 8080 je bio procesor koji je iskorišćen u prvom „kućnom računaru“, koji je bio prodat kao oprema za porudžbinu koja se šalje poštom za $350 od strane kompanije koja se zove MITS. Poboljšana verzija 8080 se pojavila kasnih 1970-tih godina kao 8085.

Drugi proizvodjači poluprovodnika su takodje razvili svoje uredjaje. Kao što je tipično za nove tehnologije, mnogo različitih projekata se pojavilo na tržištu, ali nisu svi bili uspešni. U uspešne se ubrajaju MOS Technologies 6502 (korišćen u AppleII), Motorola 6800 i Zilog Z80. Snaga računara je bila sada dostupna sa jedino „šakom“ čipova sa cenom od nekoliko dolara.

1980-te mikroprocesori rastu u brzini i sposobnosti. Računari na čipu su bili dostupni. Dužina reči raste od 8-bitnih ka 16-bitnim do 32-bitne. Sofisticirani softveri su postali dostupni za relativno malu cenu. Sada je bilo moguće da prosečni korisnik priušti sebi za nekoliko stotina dolara moćan računar koji je koštao nekoliko miliona dolara samo 30 godina ranije. Ali stvarnu revoluciju je predstavljala kompjuterizacija svega i svačega – od automobila do uredjaja u zooloških vrtovima – koju su omogućili mikroprocesori. Danas, kombinacija mikroprocesora sa robotima, telekomunikacijama i veštačkom inteligencijom obećava budućnost uzbudljivih novih aplikacija. Ova knjiga je uvod u takvu budućnost.

2

1.2. Mikroračunarski sistemi na jednom čipu

Broj funkcija koje tranzistori u jednom integrisanom kolu mogu obaviti je u stalnom porastu. Rezultat toga je da se čak i kompletni računari mogu realizovati na jednom chipu (single-chip microcomputers, ili microcontrollers). Ovakvi čipovi sadrže sve elemente mikroračunarskog sistema kombinovane na jednom čipu:

centralna procesorska jedinica CPU oscilator i taktno kolo programska memorija ulazno/izlazne linije tajmeri/brojači događaja Takođe sadrže i dodatne periferne funkcije, ka što

su:prekidna logika D/A konvertori...

Pomoću mikroračunara (MR) na čipu, mogu se realizovati manji kontrolni sistemi i to sa manjom cenom. U idealnom slučaju, ceo kontrolni sistem može sadržati samo jedan MR na čipu i određeni broj interfejsa. Naravno, skup naredbi ovakvih MR-a optimizovan je za primene u kontroli, ali su moguća i proširenja sistema, kada je čak moguće problem rešiti na jednostavniji način nego primenom standardnih mikroprocesora (MP).

1.3. Principijelne aplikacije

Primena mikroračunara na čipu je u rapidnom porastu. Razlozi mogu biti sledeći:

sve povoljniji odnos cena/performanse kontinualno povećanje performansi kola sve veća mogućnos zamene mehaničkih delova standardne elektronike

mikroračunarima rastruća tendencija razdvajanja kompleksnih problema na delove koji se mogu

procesirati posebnim mikroračunarima otvaranje novih oblasti primene

Mikroračunar na čipu se principijelno koriste za rešavanje kontrolno orijentisanih zadataka koji su zahtevali veliku količinu takozvanih „low-power devices“.

Tipične primene su:

komunikaciona i informaciona oprema (printeri, terminali, tastature...) u domaćinstvu (mašine za pranje i sušenje, šporeti, kuhinjske vage, pisaće mašine,

sistemi za regulaciju grejanja...) u komercijalnoj elektronici (televizori, radio, DVD plejeri, elektronske igre...) u automobilskoj tehnologiji (auto računari, kontrola motora i transmisije,

regulacija pritiska u kočnicama, na benzinskim pumpama...) u telekomunikacijama (mobilni telefoni, sateliti, prateća oprema...)

1.4. Uticaj Flash memorije

Uvodjenje i umnožavanje Flash memorije čini 8-bitne uredjaje mnogo fleksibilnijim. Jedinice mogu da se reprogramiraju u toku istraživanja, razvoja, projektovanja i testiranja stepena razvojne aplikacije, što ohrabruje inženjere projektante da eksperimentišu i pokušavaju različite prilaze bez da vode računa o trošenju resursa ili da će da naprave dodatne razvojne

3

troškove. Ove sposobnosti, in turn, omogućile su povećanje funkcionalnosti i proširile opseg periferala dostupnih putem 8-bitne tehnologije.

Flash memorije je tržišni sektor sa najbržim rastom na polju mikrokontrolera, i u okviru sektora, uredjaji sa velikom memorijom imaju najbrži porast. Kao posledica ovog rasta omogućena su mnogo komplikovanija softverska rešenja koja zahtevaju snažnije čipove, što je sve ograničeno cenom. Flash memorije su takodje neophodnost u mnogim savremenim aplikacijama uključujući televizijski set-top boxes (Bilo koji od nekoliko različitih elektronskih uredjaja koji se koriste u domovima radi obezbedjivanja nekih od usluga TV. Ako se koristi „set top“ uredjaj samo za proširenje dostupnih kanala on se zove konvertor. U slučaju da vraća skremblovane ili na drugi način zaštićene signale onda je deskrembler. U budućnosti kombinacija kablovskog modema i TV adaptera obezbediće usluge interaktivne televizije), TV visoke rezolucije (HDTV-High Definition TV), DVD plejere, digitalne kamere, konzole za igranje koje staju u ruku i PDA-ove. Mobilna komunikacija je drugo polje porasta potražnje za Flash memorijama, čime su omogućene funkcije kao što su tekstualne i multumedijlne poruke i video protok.

Povećanje u ceni performanse zajedno sa standardizacijom mnogih komunikacionih standarda dozvoljavaju projektantima sistema da više „pameti“ prenesu dalje od ’hub-središta’ ka ’node-čvora’ - nešto slično kao evoluciji od mainframe računara ka distribuiranim procesorima u personalnim računarima danas. Kako 8-bitni mikrokontroleri postaju pametniji, tako je manje funkcionalnosti potrebno da se smesti u centrali.

Na primer, razmotrimo sistem obezbedjenja. Do sada snaga koja se koristila je bila smeštena u sistemu pristupnog panela, gde korisnik unosi kodove koji aktiviraju ili deaktiviraju sistem ili delove sistema. Kako 8-bitni mikrokontroleri evoluiraju i njihova kompleksnost raste u smislu pameti i aplikacijama upravljanja, samo nekoliko funkcija je smešteno u kontrolnom panelu, a mnogo više se stavlja u spoljašnjim senzorima.

Sada senzori imaju „pamet“ i komuniciraju sa upravljačkim panelom nezavisno jedan od drugog. Napredak kao što je ovaj dozvoljava arhitektama sistema da ugradjuju pouzdanije, inteligentnije sisteme koji povećavaju celokupni korisnički interfejs i funkcionalnost sistema.

Zahtevi da se više pameti nalazi na „čvoru“ dovodi do potrebe za boljim korisničkim interfejsom, sistemima sa tolerancijom na grešku, povećanom tačnošću osetljivosti, i potrebom da bolje upravljamo svim segmentima našeg života što su glavni razlozi zašto 8-bitni mikrokontroler još uvek igra veoma značajnu ulogu u današnjem društvu.

Neki potrošači i industrijske aplikacije su krajnje osetljivi na cenu koštanja, a sa druge strane zahtevaju da uredjaj procesira zadatke širokog spektra. Prema tome osnovno je da projektant optimizuje cenu svojih rešenja sa funkcijama uredjaja primenjenim u aplikaciji.

Upravo 8-bitni mikrokontroleri poseduju ovakav kvalitet. Postoji veća skalabilnost i fleksibilnost i, u zavisnosti od arhitekture, ova se skalabilnost nudi po vrlo pristupačnoj ceni (skalabilnost - više procesora jednako bolje performanse)

1.5. Lako programiranje

Drugi faktor trenutne popularnosti 8-bitne tehnologije leži u činjenici da se 8-bitni uredjaji lako programiraju i da je projektovanje softvera relativno jeftino, oba faktora zadovoljavaju potrebe inženjera projektanta za najeftinijim rešenja. Sve ovo ubrzava vreme do završetka proizvoda za tržište.

Mnogi projektanti inženjeri odrastaju sa programskim jezikom kao što je C korišćenjem 8-bitne arhitekture kao što je ZiLOG Z8. Rad sa njim je uobičajen i ne zahteva posebnu obuku, a jedino minimalno ulaganje je potreba da se podigne brzina na dodatim karakteristikama,

4

funkcijama i periferijama. Komplesnost programiranja je, dakle, krajnje podesna za rukovanje. Ovo, u tandemu sa povećanim performansama i niskom cenom koštanja, čini ga da se kao rešenje sam nameće.

5

2. ARHITEKTURA MIKROKONTROLERA

Za opis arhitekture AVR osmobitnih mikroprocesora može da posluži konfiguracija ATtiny2313, čije su karakteristike:

RISC konfiguracija, visokih performansi i niske potrošnje (118 instrukcija, u glavnom sa izvršenjem u jednom ciklusu; 32x8 radnih registar opšte namene; do 20 MIPS-a pri taktu od 20 MHz)

Memorija podataka i postojana programska memorija (2Kb ugrađene programabilne fleš memorije, trajnosti do 10 000 ciklusa upisa/brisanja; 128 B SRAM; 128 B ugrađene programabilne EEPROM, trajnosti do 100 000 ciklusa upisa/brisanja; programabilno zaključavanje fleš memorije i EEPROM-a)

Periferije: o jedan 8-bitni tajmer/brojač sa odvojenim preskaleromo jedan 16-bitni tajmer/brojač sa odvojenim modovima preskaler, Compare i

Captureo četiri PWM kanala o ugrađeni analogni komparatoro Programabilni Wachdog tajmer sa ugrađenim oscilatoromo SPI serijski interfejs za programiranje u sistemuo Full duplex USART

Specijalne karakteristike mikrokontrolerao debug WIRE, za debagovanje na čipuo SPI port za programiranje u sistemuo spoljašnji i unutrašnji izvori prekidao modovi za malu potrošnju (idle, standby i isključeno)o programabilno kolo za detekciju Brown-out)o unutrašnji kalibrisani oscilator

18 programabilnih U/I linija Napon napajanja 2.7 – 5.5V Brzina rada 0 – 10 MHz na 2.7 – 5.5V i 0 – 20 MHz na 4.5 do 5.5V Mala potrošnja (230µA na 1 MHz i 20µA na 32 kHz, sa napajanjem 1.8V u aktivnom

modu, i <0.1µA na 1.8V isključen)Slika 2.2 prikazuje blok dijagram a Slika 2.1 pakovanje.

6

Slika 2.1 Pakovanje

7

Slika 2.2 Blok dijagram

Opis pinova:

VCC NapajanjeGND MasaPORT B

(PB7..PB0)8-bitni bidirekcioni U/I port. Pinovi portova mogu da obezbede

unutrašnje pull-up otpornike (za svaki bit pojedinačno). PB0 i PB1 služe

8

kao pozitivan (AIN0) i negativan (AIN1) ulaza za Analogni komparator. Izlazni baferi porta B mogu da obezbede 20mA, tako da mogu da direktno napajaju LED displeje. Ako se pinovi koriste kao ulazni i povežu na masu, davaće struju, ako se aktiviraju unutrašnji pull-up otpornici. U trenutku aktivnog reseta, pinovi su trostatički, čak iako takt nije aktivan.

PORT D (PD6..PD0)

7-bitni bidirekcioni U/I port, sa unutrašnjim pull-up otpornicima. Izlazni baferi obezbeđuju struju od 20mA. Ako se pinovi koriste kao ulazni i povežu na masu, daju struju, ako su uključeni unutrašnji pull-up otpornici. U trenutku aktivnog reseta, pinovi su trostatički, čak iako takt nije aktivan.

not (RESET) Ulaz reseta. Nizak nivo na ovom ulazu u trajanju od 50 ns se tretira kao asinhroni reset.

XTAL1 Ulaz u invertujuć pojačavač ostilatora, takođe i ulaz u kolo internog takta

XTAL2 Izlaz iz invertujućeg pojačavača oscilatora

2.1. CPU jezgro

AVR arhitektura koristi Harvardsku arhitekturu, sa odvojenim memorijama i magistralama za program i podatke. Instrukcije se izvršavaju sa jednostepenom protočnošću. Dok se jedna instrukcija izvršava, sledeća se pribavlja iz programske memorije. Ovaj koncept omogućava da se u svakom taktu izvrši po jedna instrukcija. Programska memorija je ugrađena reprogramabilna Fleš memorija.

Koncept brzog pristupa registrima podrazumeva 32 osmobitna registra opšte namene sa pristupom u jednom ciklusu. To znači da u toku jednog ciklusa ALU jednu operaciju: operandi su izlazi registarskog polja, posle obavljanja operacije rezultat se upisuje u registarsko polje, u istom ciklusu.

Radi jednostavnijeg pristupa memoriji podataka (jednostavnijeg izračunavanja adresa), šest od 32 registara mogu da se koriste kao tri 16-bitna registarska pokazivača za indirektno adresiranje. To su X, Y i Z registri. Jedan od regisarskih pokazivača može da se koristi kao pointer na tabelu konstanti pri look-up funkciji.

ALU podržava aritmetičke i logičke funkcije između registara, ili konstante i registra. Takođe izvršava i operacije nad jednim registrom. Na slici je prikazana arhitektura... Pored registarskog adresiranja, registri mogu da se adresiranju i konvencionalnim modovima za adresiranje memorije podataka. Ovo je moguće zbog toga što su registrima dodeljene adrese ($00 - $1F).

U/I memorijski prostor sadrži 64 adrese, za periferijske CPU funkcije, kao što su: kontrolni registri, tajmeri/brojači, A/D konvertori idr. U/I adresnom prostoru može da se pristupi direktno, ili preko adresa, $20 - $5F (adrese odmah posle adresa registara).

AVR ima Harvardsku arhitekturu, tj. odvojene memorije i magistrale za program i podatke. Programska memorija je ugraćena programabilna fleš memorija. Programskoj memoriji se pristupa preko dvostepene protočnosti. Dok se izvršava instrukcija, sledeća instrukcija se pribavlja (pre-fečuje) iz programske memorije.

Većina AVR instrukcija je 16-bitna. Svaka adresa programske memorije sadrži 16-bitnu ili 32-bitnu instrukciju. Pomoću CALL i JUMP instrukcija moguće je adresirati ceo adresni prostor od 1K.

Za vreme poziva prekida ili sabrutina, povratna vrednost PC se čuva u steku. Stek se čuva u SRAM-u, tako da je veličina steka ograničena samo veličinom i trenutnom iskorišćenošću

9

SRAM-a. Procedura je da se inicijalizuje SP (Stack pointer). 8-bitni SP je dostupan za upis i čitanje u U/I memorijskom prostoru.

Memorijski prostori su linearne regularne memorijske mape.Modul prekida ima kontrolni registar u U/I prostoru i dodatni bit Global Interrupt

Enable u Statusnom registru. Svaki prekid ima poseban vektor prekida u tabeli vektora prekida. Prekidi imaju prioritet prema rasporedu u vektoru prekida (što je niža adresa, viši je prioritet).

Aritmetičko logička jedinica (ALU)ALU je u direktnoj vezi sa svih 32 registra opšte namene. Aritmetičke operacije između

registrara, ili između registra i konstante se izvršavaju u jednom taktu.

Statusni registarStatusni registar sadrži informacije o rezultatu najčešće izvršavanih aritmetičkih instrukcija.

Ove informacije mogu da se iskoriste za promenu toka programa, da bi se izvršile uslovne operacije. Statusni registar se osvežava posle svih ALU operacija, pa postojanje ovog registra često uklanja potrebu za postojanjem instrukcija poređanje, što ubrzava izvršenje programa. Statusni registar se ne čuva automatski kad se ulazi u prekidnu rutinu, već to mora da se odradi softverski.

AVR statusni registar se definiše kao:

Bit7 - I GIE - globalna dozvola prekida. Mora da bude postavljen da bi ze omogućili prekidi. Tada se kontrola prekida izvršava u posebnim kontrolnim registrima. Pošto se desi prekid, hardver briše I bit a instrukcija RETI ga ponovo postavlja da bi se omogućili dalji prekidi. Ovaj bit takođe može da se postavi odnosno obriše instrukcijama SEI i CLI

Bit6 - T Bit Copy Storage. bit T se koristi kao izvor i odredište za kopiranje bita pri pozivu instrukcije BLD (Bit LoaD) i BST (Bit STore)

Bit5 – H Half Carry Flag. bit ukazuje na polu prenos kod nekih aritmetičkih operacija. Koristi se kod BCD aritmetike.

Bit4 – S Sign bit. Bit znaka, S = N EXOR VBit3 – V Two’s fouplement overflow flag. bit prekoračenja drugog komplementaBit2 – N Negative flag. bit ukazuje na negativan rezultat kod aritmetičkih i logičkih operacijaBit1 – Z Zero flag. rezultat je nula kod aritmetičkih i logičkih operacijaBit0 - C Carry flag. bit prenosa, ukazuje na prenos kod aritmetičkih i logičkih operacija

Registri opšte nameneRegistarsko polje se sastoji iz 32 registra opšte namene (Slika 2.3). Kao što slika pokazuje,

svakom registru je dodeljena i memorijska adresa. Registrarsko polje podržava sledeće načine pristupa:

1. jedan osmobitni izlaz za operand i jedan osmobitni ulaz za rezultat2. dva osmobitna izlaza za operande i jedan osmobitni ulaz za rezultat3. dva osmobitna izlaza za operande i jedan šesnaestobitni ulaz za rezultat

10

4. jedan šesnaestobitni izlaz za operand i jedan šesnaestobitni ulaz za rezultat

Slika 2.3 Registarsko polje

X, Y i Z registarRegistri R26..R32 mogu da se koriste i kao 16-to bitni registri, kao adresni pokazivači za

indirektno adresiranje podataka. Definišu se kao što pokazuje Slika 2.4.

Slika 2.4 X, Y i Z registar

Pokazivač stekaStek se u glavnom kristi za čuvanje privremenih podataka, kao što su lokalni podaci i adresa

povratka posle prekida i podprograma. Registar SP (Steck Pointer, pokazivač steka) uvek ukazuje na vrh steka. Stek se impementira kao rastući od viših memorijskih lokacija ka nižim (zbog toga operacija PUSH smanjuje vrednost SP za jedan).

SP je implementiran kao dva 8-bitna registra u U/I prostoru. Broj korišćenih bitova zavisi od implementacije. U konkretnoj impementaciji () je potreban samo SPL deo, pa u ovom slučaju SPH ne postoji.

11

Slika 2.5 Izgled pokazivača steka

SP ukazuje na stek u SRAM-u gde se nalazi stek prekida. Oblast steka se definiše programski pre poziva podprograma ili izvršenja prekida. SP se postavlja na vrednost iznad 0x60. SP se smanjuje za jedan kad se upiše podatak (PUSH instrukcijom) a za dva kad se upiše povratna adresa. SP se povećava za jedan kad se iz njega pročita podatak (POP instrukcijom) a za dva kad se pročita povratna adresa (RET ili RETI instrukcija).

Tajming izvršenja instrukcijaSlika 2.6 prikazuje način izvršenja instrukcija, gde se paralelno pribavlja naredna

instrukcija, dok se prethodna izvršava.

Slika 2.6 Paralelno pribavljanje i izvršenje instrukcija

Registarsko polje je organizovano tako da je moguće izvršiti instrukciju sa dva registarska operanda gde se rezultat smešta u registar, u jednom ciklusu ().

Slika 2.7 Izvršenje ALU operacije u jednom taktu

Obrada reseta i prekidaAVR dozvoljava postojanje više različitih izvora prekida. Svaki prekid, kao i poseban Reset

vektor imju poseban programski vektor u programskom memoriji. Da bi se dozvolio prekid, potrebno je postaviti GIE bit u statusnom registru, kao i idividualni enable bit.

Najniže adrese u programskoj memoriji su rezervisane za Reset vektor i Prekidne vektore, njihov redosled definiše i prioritet prekida (što niža adresa, viši je prioritet).

12

Kad nastupi prekid, briše se GIE bit, čime su zabranjeni dalji prekidi (moguće je programski postaviti GIE bit da bi se omogućili ugnježdeni prekidi). Pošto se izvrši prekidna rutina, GIE bit se ponovo postavlja.

Postoji dva tipa prekida. Prvi tip izaziva događaj koji postavlja Interrupt flag. Kad se desi, u PC se postavlja adresa Prekidnog vektora, da bi se izvršio i hardver sam briše odgovarajući prekidni flag. Prekidni flag takođe može da obriše tako što se postavi jedinica ? Ako se desi uslov za prekid dok se obrađuje prekid (ako je obrisan bit dozvole odgovarajućeg prekida ili GIE, pamti se vrednost u prekidnom flag-u, radi kasnije obrade, kad se dozvoli prekid.

Druga vrsta prekida se detektuje ukoliko je prisutan uslov za prekid. Ovi prekidi ne moraju da imaju prekidni flag. Ukoliko uslov za prekid prestane pre nego što se dozvoli prekid, prekid se ne obrađuje.

Kad se obradi prekid, AVR se vraća u glavni program i izvršava se jedna instrukcija pre nego što se eventualno opsluže novi prekidi.

Ako se koristi instrukcija CLI za zabranu prekida, oni su odmah zabranjeni. (prekid se ne obrađuje, čak i ako se desi u isto vreme sa obradom CLI instrukcije).

Vreme odgovora na prekid je najmanje četiri takta. Za ovo vreme se PC stavlja na stek, Posle ovog vremena se izvršava adresa programskog vektora za konkretni prekid. To je obično skok u prekidnu rutinu, za koji je potrebno još tri takta. Ako se prekid desi za vreme izvršenja instrukcije za koji je potrebno više taktova, prvo se ona izvrši pa se opsluži prekid. Ako se prekid desi dok je mikrokontroler u sleep fazi, za izvršenje je potrebno još četiri takta.

Povratak iz prekidne rutine traje četiri takta. Za to vreme se iz steka čita PC, SP se uvećava za jedan i I bit u SREG se postavlja.

2.2. Sistemski takt

Slika 2.8 prikazuje sistem takta i njegovu distribuciju. Da bi se smanjila potrošnja energije, moduli takta koji se ne koriste mogu da se isključe, koristeći različite sleep modove.

Slika 2.8 Distribucija takta

CPU takt (clkCPU) se vodi na delove sistema koji se tiču jezgra sistema (regisarski fajl, SR i memorija podataka koja čuva SP). U/I takt (clkI/O) se koristi za većinu U/I modula, kao što su

13

tajmeri/brojači i USART, eksterni prekidni moduli. Takt flash-a (clkFLASH) kontroliše rad kontrolora flash-a.

Kod mikrokontrolera ATiny2314 moguće je izabrati jedan od 5 različitih izvora takta, kao što prikazuje Tabela 1.

Tabela 1 Izbor takta

Izvor takta CKSEL 3..0Eksterni takt 0000Kalibrisani unutrašnji RC oscilator 4 MHz 0010Kalibrisani unutrašnji RC oscilator 8 MHz 0100Watchdog oscilator 128 kHz 0110Spoljni kristal/keramički rezonator 1000 – 1111Rezervisano 0001/0011/0101/0111

Kristalni oscilatorPinovi XTAL1 i XTAL2 su ulaz i izlaz, respektivno, za invertujući pojačavač koji može da

se konfiguriše da se koristi za oscilator (Slika 2.9). Moguće je koristiti kristal kvarca, ili keramički rezonator. C1 i C2 moraju da imaju istu vrednost. Optimalne vrednosti zavise od kristala (rezonatora) koji se koriste, parazitne kapacitivnosti i elektromagnetnog šuma okoline. Za izbor kapacitivnosti kad se koristi kristal može da pomogne Tabela 2, a za keramičke rezonatore vrednosti kapacitivnosti zadaje proizvođač.

Slika 2.9 Povezivanje kristalnog oscilatora

Oscilator može da radi u jednom od tri moda, zavisno od bitova CKSEL3..1, kao što prikazuje Tabela 2.

Tabela 2 Modovi rada kristalnog oscilatora

CKSEL3..1 Opseg frekvencija [MHz]

Preporučene vrednosti za kondenzatore, ukoliko se koristi kristal [pF]

100 0.4 – 0.9 opcija se ne koristi sa kristalom101 0.9 – 3.0 12 – 22110 3.0 – 8.0 12 – 22111 8.0 12 - 22

CKSEL0 zajedno sa SUT1..0 bira start-up vreme, kao što prikazuje

14

Tabela 3 Start-up vremena za izbor izvora takta

CKSEL0 SUT1..0Start-up vreme, od Power-down

i Power-save

Dodatno kašnjenje od

reseta (Vcc=5V)Preporučena upotreba

0 00 258 CK 14CK + 4.1 ms Keramički rezonatori, brzo rastuća snaga

0 01 258 CK 14CK + 65 ms Keramički rezonatori, sporo rastuća snaga

0 10 1K CK 14CK Keramički rezonatori, dozvoljen BOD

0 11 1K CK 14CK + 4.1 ms Keramički rezonatori, brzo rastuća snaga

1 00 1K CK 14CK + 65 ms Keramički rezonatori, sporo rastuća snaga

1 01 16K CK 14CK Kristalni oscilator, dozvoljen BOD

1 10 16K CK 14CK + 4.1 ms Kristalni oscilator, brzo rastuća snaga

1 11 16K CK 14CK + 65 ms Kristalni oscilator, sporo rastuća snaga

Kalibrisani unutrašnji RC oscilatorKalibrisani unutrašnji RC oscilator obezbeđuje fiksan takt od 8 MHz (nominalna vrednost,

na 3V i 25o). Ukoliko ova frekvencija nadmaši specifikaciju uređaja (zavisno od Vcc), potrebno je postaviti CKDIV8, da bi se frekvencija podelila sa 8 za vreme uključenja uređaja.

Ovaj takt može da se izabere pomoću SCSEL3..0, kao što prikazuje Tabela 1. Ukoliko se izabere, funkcioniše bez spoljnih komponenti. Za vreme reseta, kardver upisuje kalibrirajući bajt u OSCCAL registar (Slika 2.10), čime automatski kalibriše RC oscilator. Ova kalibracija na 25o i 3V daje odstupanje od ± 10% (korišćenjem drugih metoda kalibracije moguće je postići ± 2%). Ako je u OSCCAL registar upisana 0, izabrana je najniža frekvencija, ox7F daja najvišu frekvenciju. Kalibrisani oscilator se koristi za taktovanje pristupa Flash-u i EEPROM-u, tako da ga ne treba kalibrisati na vrednost više od 10% višu od nominalne. Oscilator je predviđen za kalibraciju na 8 i 4 MHz, tako da podešavanje na druge vrednosti nije garantovano.

Slika 2.10 Registar za kalibraciju oscilatora (OSCCAL)

Kada je izabran, start-up vremena određuje SUT1..0, kao što prikazuje

Tabela 4 Start-up vremena za izbor unutrašnjeg RC oscilatora

SUT1..0 Start-up vreme, od Power-down i Power-save

Dodatno kašnjenje od reseta (Vcc=5V)

Preporučena upotreba

00 6 CK 14 CK BOD ugrađen

15

01 6 CK 14 CK + 4.1 ma Brzo rastuća snaga10 6 CK 14 CK + 65 ms Sporo rastuća snaga11 Rezervisano

Spoljašnji taktDa bi se koristio spoljašnji izvor takta, potrebno je CKSEL postaviti na 0000, a takt povezati

kao što prikazuje Slika 2.11. Dozvoljen je izbor takta, frekvencije 0 – 16 MHz.

Slika 2.11 Povezivanje eksternog takta

Kad se koristi eksterni takt, start-up vremena su ista kao kod korišćenja unutrašnjeg RC oscilatora (Tabela 4).

128 kHz unutrašnji oscilator128 kHz (nominalno, na 3V i 25o) unutrašnji oscilator je oscilator male snage. Ovaj mod se bira postavljanjem CKSEL 0110. Kod ovog moda su start-up vremena definisano izborom SUT1..0, isto kao kod spoljašnjeg takta (Tabela 4).

Registar preskaler takta (CLKPR)Slika 2.12 prikazuje registar preskaler takta. Bit 7, CLKPCE, je dozvola promene preskalera takta (bit se menja samo kad se ostali bitovi brišu; briše se četiri ciklusa takta pošto je postavljen, ili kad se upišu CLKPS bitovi). Bitovi 3..0, CLKPS3..0 bitovi selektuju vrednost preskalera. Određuju vrednost deljenja izabranog izvora takta, da bi se dobila željena radna frekvencija (moguće ih je menjati za vreme rada mikrokontrolera). Tabela 5 prikazuje odnos deljenja, zavisno od vrednost CLKPS.

Slika 2.12 Registar preskaler takta

Da bi se izbeglo nenamerno menjanje frekvencije takta, potrebno je ispoštovati specijalnu proceduru za promenu CLKPS bitova (za to vreme onemogućiti prekide):

1. postaviti CLKPCE a obrisati ostale bitove CLKPR2. u narednih četiri takta upisati željenu vrednost u CLKPR, a obrisati CLKPCE

Tabela 5 Izbor preskalera takta

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Vrednost deljenje takta

16

0 0 0 0 10 0 0 1 20 0 1 0 40 0 1 1 80 1 0 0 160 1 0 1 320 1 1 0 640 1 1 1 1281 0 0 0 256

1001 – 1111 Rezervisano

2.3. Power management i Sleep modovi

Sleep modovi dozvoljavaju da se isključe neaktivni moduli mikrokontrolera, da bi se uštedela energija. Da bi se ušlo u sleep mod, potrebno je postaviti SE bit u MCUCR (Slika 2.13Sleep mode kontrolni registarSlika 2.13) i izvršiti instrukciju SLEEP. SM1 i SM0 bitovi u registru MCUCR biraju koji mod aktivira SLEEP naredba (Tabela 6). Ako se desi dozvoljeni prekid dok je mikrokontroler u sleep modu, budi se, čeka još četiri takta, izvršava prekidnu rutinu i nastavlja izvršenje glavnog programa, nakon instrukcije SLEEP.

Slika 2.13 Sleep mode kontrolni registar

U idle modu je zaustavljane CPU, ali rade UART, analogni komparator, ADC, USI, tajmeri/brojači, watchdog i sistem prekida. U power-down modu rade samo asinhroni moduli (spoljni prekidi, USI i watchdog). Standby mod se koristi kad se koristi spoljašnji kristal/rezonator a identičan je power-dawn modu, osim što oscilator radi (iz ovog moda uređaj se budi za šest ciklusa takta).

Tabela 6 izbor sleep moda

SM1 SM0 Sleep mod0 0 idle0 1 power-down1 0 power-down1 1 standby

17

2.4. Kontrola sistema i reset

Za vreme reseta U/I registri se postavljaju na inicijalne vrednosti i program počinje da se izvršava od Reset vektora. Na lokaciji Reset vektora mora da se nađe RJMP instrukcija sa adresom rutine za obradu reseta. U/I portovi se odmah resetuju na inicijalne vrednosti, nezavisno od takta. Kad se iskluče svi izvori reseta aktivira se brojač za kašnjenje, koji pomera unitrašnji reset, da bi se uspostavio nivo energije potreban za normalan rad (vreme kašnjenja brojača se postavlja pomoću SUT i CKSEL bitova.

Mikrokontroler ATiny2313 ima četiri izvora reseta (Slika 2.14):1. Power-on reset (resetuje se kad je napon napajanja ispod VPOT, bit PORF Slika 2.14)2. Spoljašnji reset (kad je prisutna logička nula na RESET ulazu duže od minimalne

širine impulsa, bit EXTRF Slika 2.14)3. Watchdog reset (kad istekne period Watchdog tajmera, Watchdog je uključen a

Watchdog prekid je isključen, bit WDRF Slika 2.14)4. Brown-out reset (kad je napon napajanja ispod VBOT, a uključena je Brown-out

detekcija, bit BORF Slika 2.14)

Slika 2.14 MCU statusni registar

2.5. Watchdog tajmer

Mikrokontroler ATiny2313 ima ugrađen Watchdog tajmer koji se taktuje sa posebnog ugrađenog oscilatora (128 kHz) i može da radi u tri režima rada: prekidi, sistemski reset i kombinovano. Moguće je izabrati Time-out period u rasponu od 16ms do 8 sekundi.

U normalnom režimu rada potrebno je da sistem resetuje WDT instrukcijom WDR pre nego što se dostigne zadata vrednost, u protivnom se inicira prekid ili reset.

Prekidni mod se obično koristi da se probudi MCU iz sleep stanja, ili kao sistemski tajmer. U reset modu sistem se resetuje pošto istekne zadati period. U kombinovanom modu se prvo zada prekid, pa onda reset, što dozvoljava bezbedno isključenje, odnosno da se sačuvaju kritični parametri pre resetovanja.

Ako je postavljen bit WDTON, watchdog tajmer je u reset modu, WDE (sistem reset bit) i WDIE (interrupt enable bit) su postavljeni na 1 i 0, respektivno. Procedura za brisanje WDE je sledeća:

1. U WDCE i WDE se upiše logička jedinica, u okviru jedne instrukcije2. U narednih četiri bita treba upisati WDE i WDP (watchdog preskaler) po želji, sa

obrisanim WDCE, takođe u jednom taktu.

Slika 2.15 Kontrolni registar watchdog tajmera

Slika 2.15 prikazuje kontrolni registar watchdog tajmera.

18

Bit 7, WDIF interapt flag, koji se postavlja kad wdt odbroji i konfigurisan je da generiše prekide. Briše se hardverski pošto je izvršen odgovarajući prekidni vektor.

Bit 6, WDIE dozvola prekidaBit 4, WDCE dozvola promene, koristi se u sekvenci za promenu WDE i bitova

preskalera (mora da bude postavljen)Bit 3, WDE dozvola sistemskig resetaBit 5,2..0, WDP3..0 vrednost preskaliranja, Tabela 8

Tabela 7 Konfiguracija Watchdog tajmera

WDTON WDE WDIE Mod Akcija0 0 0 zaustavljen bez0 0 1 prekidni mod prekid0 1 0 sistemski reset reset0 1 1 prekid i reset prekid, pa zatim prelazak na reset1 x x sistemski reset reset

Tabela 8 Selekcija vrednosti preskaliranja Watchdog tajmera

WDP3 WDP2 WDP1 WDP0 Broj ciklusa WDT oscilatora

Tipično vreme za time-out na Vcc=5V

0 0 0 0 2K (2048) 16 ms0 0 0 1 4K (4096) 32 ms0 0 1 0 8K (8192) 64 ms0 0 1 1 16K (16384) 0.125 s0 1 0 0 32K (32768) 0.25 s0 1 0 1 64K (65536) 0.5 s0 1 1 0 128K (131072) 1 s0 1 1 1 256K (262144) 2 s1 0 0 0 512K (524288) 4 s1 0 0 1 1024K (1048576) 8 s

ostalo rezervisano

2.6. Prekidi

prikazuje reset i prekidne vektoreVektor br.

Programska adresa Izvor Definicija prekida

1 0x0000 RESET Spoljašnji pin, Power-on reset, Brown-out reset i Watchdog reset

2 0x0001 INT0 Spoljni zahtev za prekid 03 0x0002 INT1 Spoljni zahtev za prekid 1

19

4 0x0003 TIMER1 CAPT Tajmer/brojač1 capture događaj5 0x0004 TIMER1 COMPA Tajmer/brojač1 poređenje slaganje A6 0x0005 TIMER1 OVF Tajmer/brojač1 prekoračenje7 0x0006 TIMER0 OVF Tajmer/brojač0 prekoračenje8 0x0007 USART0, RX USART0, završen prijem9 0x0008 USART0, UDRE USART0 prazan registar podataka10 0x0009 USART, TX USART0 završeno slanje11 0x000A ANALOG COMP analogni komparator12 0x000B PCINT prekid, promena pina13 0x000C TIMER1 COMPB Tajmer/brojač1 poređenje, slaganje B14 0x000D TIMER0 COMPA Tajmer/brojač0 poređenje, slaganje A15 0x000E TIMER0 COMPB Tajmer/brojač0 poređenje, slaganje B16 0x000F USI START USI uslov start17 0x0010 USI OVERFLOW USI prekoračenje18 0x0011 EE READY EEPROM spreman

19 0x0012 WDT OVERFLOW prekoračenje watchdog tajmera

2.7. U/I portovi

Svi portovi imaju funkcionalnost Čitanje/Modifikacija/Upis, kad se koriste kao U/I portovi opšte namene, što znači da se direktivnost porta menja instrukcijom SBI i CBI, bez nenamernog menjanja ostalih portova. Isto važi za menjanje izlazne vrednosti (kad je port konfigurisan da radi kao izlaz) i uključivanje/isključivanje pull-up otportnika. Svaki izlazni bafer ima symetrical drive characteristics with

..............

Za svaki port se alociraju tri U/I memorijske adrese, za registar podataka (PORTx), direkcioni registar (DDRx) i ulazne pinove porta (PINx). PINx je

20

3. UGRAĐENE MEMORIJE (FLASH, ROM, EPROM)

AVR arhitektura ima dva glavna memorijska prostora, programsku memoriju i memoriju podataka. Pored toga, ATiny2313 ima i EEPROM za čuvanje podataka. Sva tri memorijska prostora su linearna i regularna.

3.1. Ugrađena reprogramabilna Flash programska memorija

ATiny ima 2K bajtova ugrađene reprogramabilne Flash programske memorije. Pošto su sve instrukcije 16- ili 32-bitne, Flash je organizovan kao 1K x 16. Program Counter (PC) je 10-bitni, tako da može da adresira 1K adresa. Slika 3.16 prikazuje mapu programske memorije.

Slika 3.16 Mapa programske memorije

3.2. SRAM memorija podataka

Slika 3.17 prikazuje organizaciju SRAM memorije podataka. Najnižih 224 adresa su rezervisane na sledeći način: prve 32 lokacije su za registre, naredne 64 za proširenu U/I memoriju i narednih 128 za unutrašnji SRAM podataka.

Slika 3.17 Mapa memorije podataka

Za adresiranje se koristi pet različitih načina adresiranja: direktno, indirektno sa pomerajem, indirektno, indirektno sa predekrementom i indirektno sa postinkrementom. Registri R26 do R31

21

se koriste kao pokazivači kod indirektnog adresiranja.Direktno adresiranje pokriva kompletan adresni prostor. Indirektno adresiranje sa pomerajem obuhvata po 63 adrese zadatih Y ili Z registrom. Kad se koristi registarsko indirektno adresiranje sa automatskim predekrementom ili postinkrementom, koriste se adresni registri X, Y i Z.

Unutrašnjem SRAM-u se prostupa u dva ciklusa takta, kao što prikazuje Slika 3.18.

Slika 3.18 Ciklus pristupa SRAM-u

3.3. EEPROM memorija podataka

Mikrokontroler ATiny2313 ima 128 bajtova EEPROM za podatke, koji je organizovan kao poseban prostor podataka, u okviru koga je moguće pristupati bajtovima. Za pristup se koriste registri EEPROM adresni registar, EEPROM registar podataka i EEPROM kontrolni registar, koji se nalaze u U/I prostoru.

Tabela 1

Kad se čita ih EEPROM-a, CPU se zaustavlja na četiri takta. Prilikom upisa, CPU se zaustavlja na dva takta.

Slika 3.19 prikazuje EEAR (EEPROM adresni registar). Bit 7 je rezervisan i uvek se čita kao nula, dok bitovi 6..0 sadrže adresu.

Slika 3.19 EEPROM adresni registar

Slika 3.20 prikazuje EEPROM regisar podataka. U njega se prilikom čitanja upisuje podatak iz EEPROM sa adrese sadržane u EEAR, dok se prilikom upisa podatak iz njega upisuje na adresu sadržanu u EEAR.

Slika 3.20 EEPROM registar podataka

22

Slika 3.21 prikazuje EEPROM kontrolni registar. Bitovi 7 i 6 su rezervisani i uvek se čitaju kao 0. Bitovi 5 i 4, EEPM1 i EEPM0 su bitovi za programiranje moda (Tabela 1). Bit 3, EERIE, služi za omogućavanje prekida kad je EEPROM spreman, ukoliko je I bit u SREG postavljen. Bit 2, EEMPE (glavna dozvola programiranja)., dozvoljava upotrebu EEPE. Bit 1, EEPE, dozvola programiranja EEPROM-a, je signal za EEPROM. Kad istekne vreme potrebno za upis, bit se briše hardverski. Bit 0, EERE, dozvola čitanja, je signal za čitanje EEPROM-a (za čitanje je potreban jedan ciklus takta i podatak je odmah dostupan)

Slika 3.21 EEPROM kontrolni registar

Tabela 9 EEPROM modovi

EEPM1 EEPM0 Vreme za programiranje Operacija

0 0 3.4 ms brisanje i upis u jednoj operaciji0 1 1.8 ms brisanje0 1 1.8 ms upis1 1 - rezervisano

3.4. U/I memorija

Slika 3.22 U/I registri opšte nameneU U/I memoriji se nalaze sve periferije i ulazi/izlazi. Svim lokacijama je moguće pristupiti

pomoću LD/LDS/LDD i ST/STS/STD instrukcija. Takođe je moguće kopirati sadržaj između U/I i registara opšte namene. I/O registrima sa lokacija 0x00 do 0x1F je moguće pristupiti i bit-po-bit, koristeći instrukcije SBI i CBI, a moguće je proveriti vrednost i pomoću instrukcija SBIS iSBIC. Za U/I specifične komande IN i OUT moraju da se koriste lokacije 0x00 do 0x3F. Kada se U/I registri adresiraju kao prostor podataka, dodaje im se 0x20.

23

Mikrokontroler ATiny2313 sadrži tri U/I registra opšte namene. Oni se koriste za čuvanje raznih informacija, pa se obično koriste za čuvanje globalnih promenljvih i statusnih flegova. To su registri GPIOR2, GPIOR1 i GPIOR0 (Slika 3.22).

24

4. PROGRAMIRANJE

4.1. Načini adresiranja

AVR mikrokontroleri podržavaju različite modove adresiranja za pristup programskoj memoriji (fleš memoriji) i memoriji podataka (SRAM, Registarske banke, U/I Memorija, i proširena U/I memorija). Mogući načini adresiranja su sledeći:

Direct Addressing - direktno adresiranje Indirect Addressing - indirektno adresiranje External Direct -spoljašno direktno adresiranje MOVX A, @DPTR Code Indirect - programsko indirektno adresiranje MOVC A, @A+DPTR

Svaki od navedenih adresnih načina rada obezbedjuje važnu fleksibilnost.

Direktno adresiranjeKod direktnog adresiranja, instrukcija specificira operand 8-bitnim adresnim poljem.

Ovaj način adresiranja je moguć samo kod adresiranja unutrašnjeg RAM-a i SFR registara. Mogući su sledeći slučajevi direktnog adresiranja:

Register direct, single register Rd – direktno adresiranje sa jednim operandom (operand se nalazi u registru Rd)OP Rd

Register direct, two registers Rd and Rr, direktno adresiranje sa dva operanda (operandi se nalaze u registrima Rr i Rd, rezultat operacije se smešta u registar Rd)OP Rd, Rr

U/I direct, direktno adresiranje ulaza/izlaza (adresa ulaza/izlaza se nalazi u šestobitnom delu programske reči A)Op R, A

Data direct – direktno adresiranje podataka (za ovo se koristi instrukcija od dve reči. U nižem delu instrukcije se nalazi 16-to bitna adresa podataka)Op R, A

Direktno programsko adresiranje, JMP i CALL instrukcija (program nastavlja da se izvršava od adrese direktno navedene u programskoj reči)Ind

Indirektno adresiranjeKod indirektnog adresiranja, instrukcija specificira registar koji sadrži adresu operanda.

Na ovaj način se mogu adresirati spoljašnji i unutrašnji RAM. Indirektno adresiranje podataka

adresa operanda se nalazi u registru X, Y ili Z Indirektno adresiranje sa pomerajem

OP R, qadresa operanda se dobija kad se sadržaj registara X, Y ili Z sabere sa pomerajem q

specificiranim u naredbi Indirektno adresiranje sa pre-dekrementom

25

Kod ovog tipa adresiranja adresa operanda se nalazi u X, Y, ili Z registru. Posle dekrementiranja pristupa se memoriji i dekrementirana vrednost se upisuje nazad u registar X, Y ili Z Indirektno adresiranje sa post-inkrementom

Kod ovog tipa adresiranja adresa operanda se nalayi u X, Y, ili Z registru. Posle pristupanja memoriji inkrementira se vrednost i se upisuje nazad u registar X, Y ili Z Konstantno adresiranje memorije korišćenjem LPM, ELPM ili SMP instrukcija Konstantno adresiranje memorije sa post-inkrementom, korišćenjem LPM Z+ i

ELPM Z+ instrukcije Indirektno programsko adresiranje, IJMP i ICALL (program nastavlja da se izvršava

od adrese sadržane u Z registru) Relativno programsko adresiranje, RJMP i RCALL

OP kprogram nastavlja da se izvršava od adrese PC+k+1

4.2. Skup instrukcija AVR

Mnemonik

Operandi Opis Operacija Flegovi Broj

taktova

Aritmetičke operacijeAD

CRd,

Rr sabiranje sa prenosom Rd<-Rd+Rr+C Z, C, N, V, S, H 1

ADD

Rd, Rr sabiranje bez prenosa Rd<-Rd+Rr Z, C, N,

V, S, H 1

ADIW

Rd, K add immediate to word Rd+1:Rd<-

Rd+1:Rd+KZ, C, N,

V, S 2 1

COM Rd jedinični komplement Rd<-$FF – Rd Z, C, N,

V, S 1

DEC Rd dekrement Rd<-Rd-1 Z, N, V, S 1

FMUL

Rd, Rr

fractional množenje neoznačenih brojeva

R1:R0<-(Rd*Rr)<<1 (UU) Z, C

2 Error:Referencesource notfound

FMULS

Rd, Rr

fractional množenje označenih brojeva

R1:R0<-(Rd*Rr)<<1 (SS) Z, C

2 Error:Referencesource notfound

INC Rd inkrement Rd<-Rd+1 Z, N, V, S 1

MUL

Rd, Rr

množenje dva neoznačena broja

R1:R0<-Rd*Rr (UU) Z, C

2 Error:Referencesource notfound

MUL

Rd, Rr

fractional množenje označenog sa neoznačenim brojem

R1:R0<-(Rd*Rr)<<1 (SU) Z, C

2 Error:Referencesource notfound

MU Rd, množenje dva označena R1:R0<-Rd*Rr Z, C

1 Ova instrukcija nije dostupna kod svih tipova uređaja. Proverite skup instrukcija za konkretni uređaj

26

LS Rr broja (SS)

MULSU

Rd, Rr

množenje označenog sa neoznačenim brojem

R1:R0<-Rd*Rr (SU) Z, C

2 Error:Referencesource notfound

NEG Rd dvojični komplement Rd<-$00 – Rd Z, C, N, V, S, H 1

SBC Rd, Rr oduzimanje sa prenosom Rd<-Rd-Rr-C Z, C, N,

V, S, H 1

SBCI

Rd, K

oduzimanje immediate sa prenosom Rd<-Rd-K-C Z, C, N,

V, S, H 1

SBIW

Rd, K

oduzimanje immediate with word

Rd+1:Rd<-Rd+1:Rd-K

Z, C, N, V, S

2Error:Referencesource notfound

SUB Rd, Rr oduzimanje bez prenosa Rd<-Rd-Rr Z, C, N,

V, S, H 1

SUBI

Rd, K oduzimanje immediate Rd<-Rd-K Z, C, N,

V, S, H 1

Logičke instrukcijeAN

DRd,

Rr logičko I Rd<-Rd and Rr Z, N, V, S 1

ANDI

Rd, K logičko I sa immediate Rd<-Rd and K Z, N, V, S 1

CBR Rd, K brisanje bitova u registru Rd<-Rd and K Z, N, V, S 1

CLR Rd brisanje registra Rd<-Rd xor Rd Z, N, V, S 1

EOR Rd, Rr ekskluzivno ili Rd<-Rd xor Rr Z, N, V, S 1

OR Rd, Rr logičko ILI Rd<-Rd or Rr Z, N, V, S 1

ORI Rd, K

logičko ILI sa immediate Rd<-Rd or K Z, N, V, S 1

SBR Rd, K

postavljanje bitova u registru Rd<-Rd or K Z, N, V, S 1

SER Rd postavljanje vrednosti na 1 Rd<- $FF - 1

TST Rd testiranje na nulu ili minus Rd<-Rd and Rd Z, N, V, S 1

Instrukcije grananjaBRB

C s, k grananje ako je statusni flag obrisan

if(SREG(s)=0) PC<-PC+k+1

None 1/2

BRBS s, k grananje ako je statusni

flag postavljenif(SREG(s)=1) PC<-PC+k+1

None 1/2

BRCC k grananje ako je flag

prenos obrisanif(C=0) PC<-

PC+k+1 None 1/2

BRCS k grananje ako je flag

prenos postavljen if(C=1) PC<-

PC+k+1 None 1/2

BREQ k grananje ako je jednako if(Z=1) PC<-

PC+k+1 None 1/2

27

BRGE k grananje ako je veće ili

jednako, za označene brojeveif(N xor V = 0)

PC<-PC+k+1 None 1/2

BRHC k grananje ako je obrisan

flag Hif(H=0) PC<-

PC+k+1 None 1/2

BRHS k grananje ako je

postavljen flag Hif(H=1) PC<-

PC+k+1 None 1/2

BRID k grananje ako je

onemogućen prekidif (I=0) then

PC<-PC+k+1 None 1/2

BRIE k grananje ako je

dozvoljen prekidif(I=1) PC<-

PC+k+1 None 1/2

BRLO k grananje ako je manje if(C=1) PC<-

PC+k+1 None 1/2

BRLT k grananje ako je manje,

za označene brojeveif(N xor V = 1)

PC<-PC+k+1 None 1/2

BRMI k grananje ako je minus if(N=1) PC<-

PC+k+1 None 1/2

BRNE k grananje ako nije

jednakoif(Z=0) PC<-

PC+k+1 None 1/2

BRPL k grananje ako je plus if(N=0) PC<-

PC+k+1 None 1/2

BRSH k grananje ako je isto ili

viseif(C=0) PC<-

PC+k+1 None 1/2

BRTC k grananje ako je obrisan

flag Tif(T=0) PC<-

PC+k+1 None 1/2

BRTS k grananje ako je

postavljen flag Tif(T=1) PC<-

PC+k+1 None 1/2

BRVC k grananje ako je obrisan

flag Vif(V=0) PC<-

PC+k+1 None 1/2

BRVS k grananje ako je

postavljen flag Vif(V=1) PC<-

PC+k+1 None 1/2

CALL k poziv sabrutine PC<-k None

4/5 Error:Referencesource notfound 2

CP Rd, Rr poređenje RD-Rr Z, C, N,

V, S, H 1

CPC Rd, Rr poređenje sa prenosom Rd-Rr-C Z, C, N,

V, S, H 1

CPI Rd, K poređenje sa immediate Rd-K Z, C, N,

V, S, H 1

CPSE

Rd, Rr

poređenje, skip ako je jednako

if(Rd=Rr) PC<-PC+2 or 3 None 1/2/3

EICALL

prošireni indirektni poziv (Z)

PC(15:0)<-Z, PC(21:16)<-EIND

None 4 Error:Referencesource notfound Error:Referencesource not

2 Broj ciklusa za pristup memoriji za podatke podrazumevaju pristup internoj memoriji., i ne važe za pristup preko interfejsa za eksterni RAM. Za instrukcije LD, ST, LDS, STS, PUSH i POP dodajte jedan ciklus, plus jedan ciklus za svako WAIT stanje. Za instrukcije CALL, ICALL, EICALL, RCALL; RET i RETI kod uređaja sa 16-bitnim PC, dodajte tri ciklusa plus dva ciklusa za svako WAIT stane, a kod uređaja sa 22-bitnim PC, dodajte pet ciklusa plus tri za svako WAIT stanje.

28

EIJMP

prošireni indirektni skok na (Z)

PC(15:0)<-Z, PC(21:16)<-EIND None

2 Error:Referencesource notfound

ICALL indirektini poziv (Z) PC(15:0)<-Z,

PC(21:16)<-0 None

3, 4 Error:Referencesource notfound Error:Referencesource notfound

IJMP indirektni skok na (Z) PC(15:0)<-Z,

PC(21:16)<-0 None

2 Error:Referencesource notfound

JMP k skok PC<-k None

3 Error:Referencesource notfound

RCALL k relativni poziv sabrutine PC<-PC+k+1 None 3/4

RET povratak iz sabrutine PC<-STACK None

4/5 Error:Referencesource notfound

RETI

povratak iz obrade prekida PC<-STACK I

4/5 Error:Referencesource notfound

RJMP k relativni skok PC<-PC+Rr None 2

SBIC

A, b

preskoči ako je bit u U/I registru obrisan

if(U/I(A,b)=0) PC<-PC+2 or 3 None 1/2/3

SBIS

A, b

preskoči ako je bit u U/I registru postavljen

if(U/I(A,b)=1) PC<-PC+2 or 3 None 1/2/3

SBRC

Rd, b

preskoči ako je bit u registru obrisan

if(Rr(b)=0) PC<-PC+2 or 3 None 1/2/3

SBRS

Rd, b

preskoči ako je bit u registru postavljen

if(Rr(b)=1) PC<-PC+2 or 3 None 1/2/3

Instrukcije za prenos podataka

ELPM

prošireno učitavanje programske memorije R0<-(RAMPZ:Z) None

3 Error:Referencesource notfound

ELPM

Rd, Z

prišireno učitavanje programske memeorije Rd<-(RAMPZ:Z) None

3 Error:Referencesource notfound

29

ELPM

Rd, Z+

prišireno učitavanje programske memeorije sa postinkrementiranjem

Rd<-(RAMPZ:Z), Z<-Z+1 None

3 Error:Referencesource notfound

IN Rd, A ulaz sa U/I lokacije Rd<-U/I(A) None 1

LD Rd, X indirektno učitavanje Rd<-(X) None

2 3

Error:Referencesource notfound

LD Rd, X+

indirektno učitavanje i postinkrementiranje

Rd<-(X), X<-X+1 None

2 Error: Reference

source not found

Error:Referencesource notfound

LD Rd, -X

indirektno učitavanje i predekrementiranje

X<-X+1, Rd<-(X) None

2 Error: Reference

source not found

Error:Referencesource notfound

LD Rd, Y indirektno učitavanje Rd<-(Y) None

2 Error: Reference

source not found

Error:Referencesource notfound

LD Rd, Y+

indirektno učitavanje i postinkrementiranje

Rd<-(Y), Y<-Y+1 None

2 Error: Reference

source not found

Error:Referencesource notfound

LD Rd, -Y

indirektno učitavanje i predekrementiranje

Y<-Y+1, Rd<-(Y) None

2 Error: Reference

source not found

Error:Referencesource notfound

LD Rd, Z indirektno učitavanje Rd<-(Z) None

2 Error: Reference

source not found

Error:Referencesource notfound

LD Rd, Z+

indirektno učitavanje i postinkrementiranje

Rd<-(Z), Z<-Z+1 None 2 Error: Reference

source not found

Error:

3 Sve varijante ove instrukcije nisu dostupne kod svih uređaja. Proverite skup instrukcija za konkretni uređaj

30

LD Rd, -Z

indirektno učitavanje i predekrementiranje Z<-Z+1, Rd<-(Z) None

2 Error: Reference

source not found

Error:Referencesource notfound

LDD Rd, Y+q

indirektno učitavanje sa pomerajem Rd<-(Y+q) None

2 Error:Referencesource notfound Error:Referencesource notfound

LDD Rd, Z+q

indirektno učitavanje sa pomerajem Rd<-(Z+q) None

2 Error:Referencesource notfound Error:Referencesource notfound

LDI Rd, K učitavanje immediate Rd<-K None 1

LDS Rd, k

direktno učitavanje iz prostora podataka Rd<-(k) None

2 Error:Referencesource notfound Error:Referencesource notfound

LPM učitavanje programske memorije R0<-(Z) None 34

LPM Rd, Z

učitavanje programske memorije Rd<-Z None

3 Error:Referencesource notfound

LPM Rd, Z+

učitavanje programske memorije sa postinkrementiranjem

Rd<-Z, Z<-Z+1 None

3 Error:Referencesource notfound

MOV

Rd, Rr kopiranje registra Rd<-Rr None 1

MOVW

Rd, Rr

kopiranje para registara Rd+1:Rd<-Rr+1:Rr

None 1 Error:Referencesource not

4 Sve varijante instrukcije LPM nisu dostupne kod svih tipova uređaja. Proverite skup instrukcija za konkretni uređaj. Ova instrukcija uopšte nije implementirana kod uređaja AT90S1200.

31

OUT A, Rr izlaz na U/O lokaciju U/I(A)<-Rr None 1

POP Rd POP registar sa steka Rd<-STACK None

2 Error:Referencesource notfound

PUSH Rr PUSH registar na stek STACK<-Rr None

2 Error:Referencesource notfound

SPM čuvanje u programskoj memoriji (Y)<-R1:R0 None

- Error:Referencesource notfound

ST X, Rr indirektno čuvanje (X)<-Rr None

2 Error: Reference

source not found

Error:Referencesource notfound

ST X+, Rr

indirektno čuvanje sa postinkrementiranje (X)<-Rr, X<-X+1 None

2 Error: Reference

source not found

Error:Referencesource notfound

ST -X, Rr

indirektno čuvanje sa predekrementiranjem X<-X-1, (X)<-Rr None

2 Error: Reference

source not found

Error:Referencesource notfound

ST Y, Rr indirektno čuvanje (Y)<-Rr None

2 Error: Reference

source not found

Error:Referencesource notfound

ST Y+, Rr

indirektno čuvanje sa postinkrementiranje (Y)<-Rr, Y<-Y+1 None

2 Error: Reference

source not found

Error:Referencesource notfound

ST -Y, Rr

indirektno čuvanje sa predekrementiranjem

Y<-Y-1, (Y)<-Rr None 2 Error: Reference

source not found

Error:Referencesource not

32

ST Z, Rr indirektno čuvanje (Z)<-Rr None

2 Error: Reference

source not found

Error:Referencesource notfound

ST Z+, Rr

indirektno čuvanje sa postinkrementiranje (Z)<-Rr, Z<-Z+1 None

2 Error: Reference

source not found

Error:Referencesource notfound

ST -Z, Rr

indirektno čuvanje sa predekrementiranjem Z<-Z-1, (Z)<-Rr None

2 Error: Reference

source not found

Error:Referencesource notfound

STD Y+q, Rr

indirektno čuvanje sa pomerajem (Y+q)<-Rr None

2 Error: Reference

source not found

Error:Referencesource notfound

STD Z+q, Rr

indirektno čuvanje sa pomerajem (Z+q)<-Rr None

2 Error: Reference

source not found

Error:Referencesource notfound

STS k, Rr

direktno čuvanje u prostoru podataka (k)<-Rr None

2 Error: Reference

source not found

Error:Referencesource notfound

Instrukcije za manipulaciju bitovimaASR Rd aritmetičko pomeranje

desnoRd(n)<=Rd(n+1),

n=0..6Z, C, N,

V 1

BCLR s brisanje flega SREG(s)<-0 SREG(s) 1

BLD Rd, b

učitavanje bita iz T u registar Rd(b)<-T None 1

BSET s postavljanje flega SREG(s)<-1 SREG(s) 1

BST Rr, b

čuvanje bita iz registrau T T<-Rr(b) T 1

CBI A, b

brisanje bita u U/I registru U/I(A,b)<-0 None 2

CLC brisanje flega C C<-0 C 1

33

CLH brisanje flega H H<-0 H 1CLI brisanje flega I I<-0 I 1CLN brisanje flega N N<-0 N 1CLS brisanje flega S S<-0 S 1CLT brisanje flega T T<-0 T 1CLV brisanje flega V V<-0 V 1CLZ brisanje flega Z Z<-0 Z 1

LSL Rd logičko pomeranje levo Rd(n+1)<-Rd(n), Rd(0)<-0, C<-Rd(7)

Z, C, N, V, H 1

LSR Rd logičko pomeranje desno

Rd(n)<=Rd(n+1), Rd(7)<-0, C<-Rd(0)

Z, C, N, V 1

ROL Rd rotiranje levo kroz carryRd(0)<-C,

Rd(n+1)<-Rd(n), C<-Rd(7)

Z, C, N, V, H 1

ROR Rd rotiranje desno kroz carry

Rd(7)<-C, Rd(n)<-Rd(n+1), C<=Rd(0)

Z, C, N, V 1

SBI A, b

postavljanje bita u U/I registru U/I(A,b)<-1 None 2

SEC postavljanje flega C C<-1 C 1SEH postavljanje flega H H<-1 H 1SEI postavljanje flega I I<-1 I 1SEN postavljanje flega N N<-1 N 1SES postavljanje flega S S<-1 S 1SET postavljanje flega T T<-1 T 1SEV postavljanje flega V V<-1 V 1SEZ postavljanje flega Z Z<-1 Z 1SW

AP Rd zamena nibbles Rd(3..0)<=Rd(7..4) None 1

Instrukcije za kontrolu MCU

BREAK break pogledajte opis

instrukcije None

1 Error:Referencesource notfound

NOP nop pogledajte opis instrukcije None 1

SLEEP sleep pogledajte opis

instrukcije None 1

WDR watchdog reset pogledajte opis

instrukcije None 1

34

5. PROGRAMSKO OKRUŽENJE ZA PROGRAMIRANJE MIKROPROCESORA

Za programiranje mikrokontrolera ATtiny2313 se koristi AVR Studio. AVRStudio je IDE okruženje za pisanje i debagiranje AVR aplikacija. AVR Studio obezbeđuje alate za upravljanje projektom, editor koda i simulator čipa. Takođe može da radi sa emulatorima na čipu i razvojnim pločama za AVR familiju osmobitnih mikrokontrolera.

AVR Studio obezbeđuje kompletan skup funkcija, koje uključuju dibager koji podržava kontrolu toka (ubacivanje prekidnih tačaka i rad korak-po-korak na nivou izvornog koda i instrukcija), pregled registara, memorije i ulaza/izlaza, konfigurisanje i upravljanje ciljnim kontrolerom i punu podršku za programiranje.

AVR Studio sadrži: integrisani asembler integrisani simulator integrisani GCC kompajler podršku za alate za Atmel koji podržavaju osmobitne AVR arhitekture: AVR ONE,

JTAGICE mkI, JTAGICE mkII, AVR Dragon, SVRISP, AVRISP MKII, AVR Butterfly, STK500 i STK600

podršku za AVR RTOS Podršku za AT90PWM1 i Attiny40 podršku za komandnu liniju sa TPI podrškom

online helpKorišćenje AVR Studia može da se opiše sledećim koracima:

Korak 1: Kreiranje novog projektaIz menija Project izabrati New Project.

Korak 2: Navesti ime projekta i lokacijuIzabrati tip projekta (recimo AVR GCC) i upisati ime projekta i lokaciju. Kliknuti dugme

Next.

35

Korak 3: biranje platforme za debagovanje i mikrokontroleraIzabrati platformu za debagovanje (recimo AVR Simulator) i u prozoru za izbor

mikrokontrolera izabrati mikrokontroler (recimo ATtiny2313)

Korak 4: izabrati podešavanja projektaIz menija Project izabrati Configuration Options. Čekirati opciju Create Hex File.

36

Korak 5: Pisanje kodaNapisati kod, koji treba da sadrži hedere, definiciju smera U/I portova (eventualno

korišćenje pull-up otpornika), prekidnu rutinu i ostali potreban kod.

Korak 6: Kompajliranje i buildIz menija Build izabrati Build odnosno Compile opciju, ili izabrati odgovarajuću prečicu na

toolbar-u. Compile (Alt+ F7)Build (F7)

Korak 7: Programiranje mikrokontroleraPre početka programiranja, u BIOS-u konfigurisati paralelni port na „ECP“ mod.Pokrenuti avrdude-gui.exe iz foldera C:\WinAVR\bin. (kod prvog pokretanja softvara

instalirati IO drajver iz menija Install, opcija GiveIO Driver.

Podesiti sledeće opcije: Device- ATtiny2313 Programmer- stk200 Port- lpt1

Izabrati opcije Write i Verify u koloni Flash i navesti lokaciju hex fajla koji treba učitati. Kliknuti dugme Execute. U prozoru Output se može naći izveštaj o uspešnom učitavanju koda.

37

6. Budućnost 8-bitnih uredjaja

Pokretački faktori unepredjene prodaje 8-bitnih uredjaja u 21-om veku su povećanje performansi uredjaja, povećan broj periferala kao i njihove bolje karakteristike, prihvatanje i upotreba komunikacionih standarda, i umnožavanje proizvodnje Flash memorije. Svi ovi faktori dovode do povećanja performansi celokupne ponude, povećanju pameti na samom čipu i rešenjima koja su jeftina kako za proizvodjače tako i projektante sistema.

Ako pogledamo još dalje, videćemo mnoštvo mogućnosti za povećanje tržišta 8-bitnih uredjaja. 8-bitni uredjaji nisu više ograničeni na 128k memorije. Nove arhitekture će dozvoliti pristup spoljašnjoj memoriji do 16MB. Tržište 8-bitnih uredjaja će nastaviti da se razvija, donoseći u sklopu sistema više funkcionalnosti, karakteristika i simulirati zahteve kako se novo tržište otvora. Dodatno, novi analogni i digitalni periferali, kao što su senzori temperature i transimpedansni pojačavači, već se nalaze u ZiLOG-ovom Z8Encore-u ! XP familija, nudi mnoge funkcije koje nisu bile dostupne kod prethodnih 8-bitnih mikrokontrolera.

XP familija, uvedena u martu 2004, može da posluži kao dobar primer sledeće generacije 8-bitnih mikrokontrolera koji nude visok nivo intergacije zajedno sa drugim karakteristikama kao što su analogno digitalna konverzija, serijski interfejs (UART/SPI magistrale), LCD displeji, eMAC interfejs i USB i RF funkcije.

U narednim godinama zaočekivati je da vidimo više elektro-mehaničkih aplikacija, kao što su automati za prodaju, bela tehnika, sistemi za upravljanje procesima i senzori, što izaziva pomeranje ka solid- state. 8-bitna tehnologija će igrati glavnu ulogu u razvoju ovih mogućih prelaza. Verujem da će 8-bitni uredjaji nastaviti da dominiraju u ovom polju, ali takodje da će se povećati njihovo prisustvo i u RC uredjajima kao što su TV, DVD, audio i sistemi kućnog pozorišta, u igračkama (naročito edukacionim, interaktivnim igračkama) i na polju bezičnih prenosa, u aplikacijama kao što su bezično upravljanje garažnim vratima, senzorima, detektorima i u sistemima obezbedjivanja.

Kako saobraćaj postaje pametniji i povećava svoju pouzdanost u centralizovanom računarskom sistemu tržište automobila je drugo polje gde će 8-bitna tehnologija nastaviti da pravi prodor.

U smislu povećanja tržišta 8-bitnih uredjaja u high-end aplikacijama, omogućene tehnologijom, posebno one koje su u vezi sa vezama, as the ones to watch. Kako komunikacije igraju sve veću ulogu u društvu, bežična i TCP/IP tehnologija postaje značajnija. Takav razvoj predstavlja veliku mogućnost za novo umnožavanje 8-bitnih uredjaja to stake a claim as oni ponude veće potencijalne omogućenja i, kao što smo diskutovali, veću funkcionalnost spojenu sa niskom cenom.

Očevidno, tržišta u razvoju kao što su kinesko i kndijsko imaće ogromnu ulogu u povećanju tržišta poluprovodnika i mikrokontrolera, i posebno u sektoru 8-bitnih uredjaja. Sazreli su uslovi da Kina postane velika globalna ekonomska sila. Kineski godišnji rast proizvodnje (GDP) je u porastu u proseku za oko 9% godišnje. U 2002 Kina privlači više direktnih stranih investicija od SAD. Postoje jasni znaci da u 21 veku zemlja ’kulturne revolucije’ zauzeti svoje mesto. Kako bogatstvo raste, tako zahtevi za potrošnjom rastu i za 8-bitnim uredjajima. Saglasno Wall Street Journal-u, na primer, pretplatnici mobilnih telefona, su porasli za pet miliona po mesecu, a tržište telefona je poraslo na 65 miliona jedinica za godinu. Svi ovi uredjaji zahtevaju brojne mikrokontrolere.

Kina nastavlja da se pojavljuje ne samo kao proizvodjač uredjaja za krajnjeg korisnika već i stvara kvalifikovane inženjere projektante i povećava svoju tehničku radnu snagu. Sa kineskih univerziteta godišnje izadje 300 000 diplomiranih inženjera. Sada, većina integrisanih kola koja se koriste u Kini su uvezena. Izazov za prozvodjače 8-bitnih mikrokontrolera je da omoguće

38

razvoj poluprovodničkog „lanca ishrane“ u Kini tako da domaći proizvodjači poluprovodnika mogu da počnu da opslužuju domaće potrebe. ZiLOG je teško investirao u Kini da podstakne razvoj preko brand-a novog projektnog objekta u Shanghai-u koji je otvoren 2004. godine. Pored toga, stvorene su veze sa univerzitetima i podelom znanja i informacija želi se da projektanti inženjeri uče poslednja dostignuća tehnike i ZiLOG arhitekture, alatima i praktičnom radu sa izvornog nivoa.

Kao poslednja, ali važna tačka koja će pomoći da se 8-bitni uredjaji održe cenovno konkurentnim je da kompanije prihvataju prednost globalne ekonomije koja omogućava da se sirovine objedine sa prizvodnjom i tako formiraju najekonomičniji konačan proizvod. ZiLOG, na primer, koristi model tako da je proizvodnja izmeštena van kompanije.

Ovo nudi fleksibilnost da se velika mreža proizvodjača koristi kako i kada je to potrebno, i to po najmanjoj mogućoj ceni, i smanjuje cenu povezanu sa svojinom i održavanjem fabrike.

Ukratko, 8-bitni mikrokontroler je još sa nama zato što on ostaje komercijalno sposoban za život kroz projektantska rešenja za mnoge od današnjih domaćih, komercijalnih i industrijskih aplikacija. Proizvodjači 8-bitnih uredjaja idu u korak sa razvojem tehnologije, dodajući više funkcija i pameti na samom čipu dokle god su u stanju da održe cenu na konkurentnom nivou. Kako su 8-bitni uredjaji idelne platforme za mnoge aplikacije in today’s more ’established’ economies, it logically follows that this will be the case as emerging markets continue to develop.

Kako tehnologija nastavlja da se razvija i dizajn čipa dobija pamet i veću efikasnost, još više moći, memorije, finkcionalnost i performanse će se naći na 8-bitnom uredjaju. Kao posledica svega ovoga 8-bitna tehnologija nudi i nastaviće da nudi potrošačima sledeće prednosti:

Više funkcionalnosti Komotniji sistemski interfejs Bolji sveobuhvatan odnos cena/performanse Veću fleksibilnost sistema Najbolje performanse Najefikasniji ukupna cena svojineSve ovo su razlozi zašto ja verujem da će 8-bitni uredjaj još uvek živeti i uživati.

39

Primer koda (kontolise LED povezan OC1/OC1A, jačina se kontroliše pomoću PWM, koji se inkrementira ili dekrementira posle svakog perioda PWM):

#include <inttypes.h>#include <avr/io.h>#include <avr/interrupt.h>#include <avr/sleep.h>

#include "iocompat.h" enum { UP, DOWN };

ISR (TIMER1_OVF_vect) { static uint16_t pwm; static uint8_t direction;

switch (direction) { case UP: if (++pwm == TIMER1_TOP) direction = DOWN; break;

case DOWN: if (--pwm == 0) direction = UP; break; }

OCR = pwm; }

voidioinit (void) { TCCR1A = TIMER1_PWM_INIT; TCCR1B |= TIMER1_CLOCKSOURCE; #if defined(TIMER1_SETUP_HOOK) TIMER1_SETUP_HOOK();#endif OCR = 0; DDROC = _BV (OC1); TIMSK = _BV (TOIE1); sei ();}intmain (void){ ioinit (); for (;;) sleep_mode();

return (0);}

40