You are on page 1of 20

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U SARAJEVU

PRVI SEMINARSKI RAD IZ RAČUNARSKIH


ARHITEKTURA
Tema : Arhitektura ATMEL Attiny15L mikrokontrolera

Studenti :
Tanović Iban
Tanović Anel
U Sarajevu, 23.11.2006. god. Kopić Edin
Sadržaj

Uvod........................................................................................................... 3
Harvard Arhitektura ................................................................................... 4
Arhitektura ................................................................................................. 5
Programski brojač ........................................................................................................5
Instrukcijski registar ...................................................................................................5
Instrukcijski dekoder ..................................................................................................5
Flash memorija .............................................................................................................6
Statusni registar ...........................................................................................................6
Registar fajl ....................................................................................................................7
Aritmetičko logička jedinica (ALU)..........................................................................7
EEPROM ...........................................................................................................................7
Interapt jedinica (Interrupt Unit)............................................................................8
Kontrolni registri...........................................................................................................9
SPI Unit (Serial Peripheral Interface) ....................................................................9
Tajmer/Brojač ...............................................................................................................9
ADC (Analog-Digital Convertor) ............................................................................ 10
Analogni komparator................................................................................................. 10
Watchdog tajmer........................................................................................................10
I/O portovi .................................................................................................................... 11
Blok dijagram Attiny15L mikrokontrolera ................................................. 12
Načini adresiranja .................................................................................... 13
Direktno adresiranje pojedinačnog registra : ................................................... 13
Indirektno adresiranje pojedinačnog registra ................................................... 13
Direktno adresiranje registara, dva registra : .................................................. 13
Direktno adresiranje ulazno/izlazne memorije ................................................. 14
Relativno adresiranje programske memorije .................................................... 14
Adresiranje konstante koristeći LPM instrukciju .............................................. 14
Princip rada .............................................................................................. 15
Overklokiranje .......................................................................................... 16
Zaštita ...................................................................................................... 16
Praktični dio ............................................................................................. 17
Programski kod u Asembleru ................................................................................. 18
Zaključak .................................................................................................. 19
Literatura .................................................................................................. 20

Arhitektura ATMEL Attiny15L mikrokontrolera 2


Sarajevo, 23.11.2006. god.
Uvod

Mikrokontroleri su jednostavni računari smješteni u jednom čipu koji se koriste za


kontrolisanje elektronskih uređaja. Za razliku od mikroprocesora, mikrokontroler je
integrisano kolo koje sadrži : CPU, ulazno/izlazni interfejs, brojače, watchdog brojač,
registre, ROM, EEPROM, Flash programsku memoriju, oscilator, ali i neke dodatne jedince
koje se nalaze u mikrokontrolerima zavisno od familije mikrokontrolera. Ovakva
integracija kola drastično smanjuje broj čipova i štedi prostor na štampanoj ploči.
Mikroprocesor je CPU na zasebnom čipu i za njegovo funkcionisanje bilo bi potrebno
povezati ga sa ostalim komponentama kao što je memorija.

Mikrokontroleri se nalaze unutar velikog broja proizvoda. Svi savremeni automobili


sadrže najmanje jedan mikrokontroler. Mikrokontroler se nalazi također u svakom
uređaju koji posjeduje daljinski : TV, Video, DVD plejeri itd. Gotovo svaki uređaj koji je u
interakciji sa korisnikom i korsti neki displej posjeduje mikrokontroler. Neki od tih
uređaja su : mašina za veš, trokner, mikrovalna, telefon, laserski štampači, alarmni
sistemi itd. Glavne prednosti mikrokontrolera su mala potrošnja i integracija komponenti
na jednom čipu.

Danas postoji veliki broj proizvođača mikrokontrolera i neki od njih su : Atmel, Microchip,
Motorola, Intel, NEC, Philips, Samsung. Atmel je početkom 1997. godine na tržište
izbacio AVR (Advanced Virtual Risc) familiju mikrokontrolera, koja je predstavljala prvu
novu 8-bitnu arhitekturu koja se pojavila zadnjih godina. Zbog korištenja interne Flash
memorije koju je moguće vrlo jednostavno programirati ISP (In System Programming)
metodom i zbog povoljnog odnosa cijene i performansi, ova Atmel-ova serija
mikrokontrolera postala je sve zastupljenija na tržištu.

AVR je mikrokontroler koji je baziran na RISC (Reduced Instruction Set Computing)


arhitekturi, čiji je glavni cilj bio da instrukcije budu tako jednostavne da se mogu izvršiti
u jednom vremenskom ciklusu. Nakon nastanka AVR mikrokontrolera 1997. godine,
nastavljen je razvoj arhitekture u nekoliko različitih pravaca zbog maksimalnog
prilagođavanja potrebama korisnika. Tako je nastalo nekoliko specifičnih familija AVR
mikrokontrolera : TinyAVR, MegaAVR, LCD AVR, CAN AVR.

TinyAVR familija je namijenjena malim aplikacijama koje zahtjevaju male


mikrokontrolere. Mikrokontroler čija arhitektura je objašnjena u ovome dokumentu je
Attiny15L. Arhitektura je slična i za ostale mikrokontrolere iz ove familije koji nemaju
RAM memoriju, samo što pojedini modeli sadrže više dodatnih mogućnosti.

Arhitektura ATMEL Attiny15L mikrokontrolera 3


Sarajevo, 23.11.2006. god.
Harvard Arhitektura

Mikrokontroler Attiny15L koristi koncept Harvardske arhitekture sa odvojenim


memorijama i sabirnicama za programsku i podatkovnu memoriju.

Pojam potiče od Harvard Mark I računara koji je dizajnirao Howard Aiken sa Harvarda.
Mark I je čitao svoje instrukcije sa bušene trake (širine 24 bita), izvršavao trenutnu
instrukciju i ponovo čitao slijedeću instrukciju, a podaci su se nalazili u elektro-
mehaničkim brojačima (širine 23 bita).

U računaru sa Von Neumann-ovom arhitekruom, CPU može ili čitati instrukciju iz


memorije ili čitati/pisati podatke u/iz memorije. Ne može se izvršavati oboje u isto
vrijeme jer instrukcije i podaci koriste istu memoriju i sabirnice.

Slika 1. Von Neumann-ova arhitektura

U računaru sa Harvard arhitekturom, CPU može čitati instrukciju i podatke iz memorije u


isto vrijeme. Instrukcije i operandi mogu biti dobavljani u isto vrijeme.

Moguće su različite širine programske i podatkovne sabirnice, što omogućava


programskoj i podatkovnoj memoriji da budu bolje optimizovani. Npr. ukoliko format
instrukcije zahtjeva 14 bita, tada programska sabirnica i programska memorija mogu biti
šritoki 14 bita, dok podatkovna sabirnica i podatkovna memorija mogu biti široki 8 bita.

Harvard arhitektura se često koristi u mikrokontrolerima i DSP-ovima (Digital Signal


Processors).

Slika 2. Harvard arhitekura

Arhitektura ATMEL Attiny15L mikrokontrolera 4


Sarajevo, 23.11.2006. god.
Arhitektura

U ovom poglavlju će biti opisani sastavni dijelovi koji čine arhitekturu Attiny15L
mikrokontrolera.

Slika 3. Attiny15L Risc arhitektura

Programski brojač

Programski brojač je registar koji sadrži informaciju o adresi slijedeće instrukcije.


Attiny15L programski brojač je širok 9 bita, zbog adresiranja 512 riječi Flash programske
memorije. PC se inkrementira neposredno nakom dobavljanja programske instrukcije.

Instrukcijski registar

Instrukcijski registar je registar koji čuva instrukciju koja se dobavila iz programske


memorije. Dok se jedna instrukcija izvršava, slijedeća instrukcija se dobavlja iz
programske memorije i smješta u instrukcijski registar.

Instrukcijski dekoder

Instrukcijski dekoder je dio elektronike koji dekodira instrukciju i određuje koja operacija
će se izvršiti. Dakle, sadržaj instrukcijskog registra se interpretira pomoću instrukcijskog
dekodera koji aktivira odgovarajuće kontrolne signale.

Arhitektura ATMEL Attiny15L mikrokontrolera 5


Sarajevo, 23.11.2006. god.
Flash memorija

Attiny15l sadrži 1 Kbyte On-Chip In-System programabilnu flash memoriju za smještanje


programa. S obzirom da su sve instrukcije 16 bitne riječi, flash memorija je organizovana
kao 512 x 16 bita. Ova flash memorija ima izdržljivost od najmanje 1000 ciklusa
pisanja/brisanja. In-System-Programming je tehnologija koja omogućava programiranje
mikrokontrolera bez skidanja mikrokontrolera sa štampane ploče.

Statusni registar

Statusni registar SREG se nalazi u I/O prostoru na adresi (lokaciji) $3F i izgleda ovako :

Slika 4. Statusni registar - SREG

Bit 7 – I : Global Interrupt Enable


Global Interrupt Enable bit mora biti postavljen na 1 da bi se omogućili interapti. I-bit se
postavlja na nulu (0) od strane hardware kada god se desi interapt, a RETI instrukcija ga
postavlja na jedinicu (1) da bi se omogućili naredni interapti.

Bit 6 – T : Bit Copy Storage


Bit Copy instrukcije BLD i BST koriste T-bit kao izvor i odredište za operandni bit. Dakle
bit iz nekog registra može biti kopiran u T-bit sa BST instrukcijom, i bit iz T-bita može biti
kopiran u neki bit u registru sa BLD instrukcijom.

Bit 5 – H : Half Carry Flag


Half Carry Flag H ukazuje da se desio half-carry u nekim aritmetičkim operacijama.

Bit 4 – S : Sign Bit


S-bit je uvijek ekskluzivno ili između Negative Flag N i Overflow Flag V dva komplement
koda.

Bit 3 – V : Dva komplement Overflow Flag


Dva komplement Overflow Flag podržava aritmetiku dva komplementa.

Bit 2 – N : Negative Flag


Negative Flag N ukazuje na negativni rezultat poslije aritmetičkih i logičkih operacija.

Bit 1 – Z : Zero Flag


Zero Flag Z ukazuje da je rezultat nula (0) nakon aritmetičkih i logičkih operacija.

Bit 0 – C : Carry Flag


Carry Flag C ukazuje na Carry u aritmetičkim i logičkim operacijama.

Arhitektura ATMEL Attiny15L mikrokontrolera 6


Sarajevo, 23.11.2006. god.
Registar fajl

Registar fajl sadrži 32 x 8 bitna radna registra opšte namjene, sa vremenom pristupa od
jednog vremenskog ciklusa. S obzirom da ovaj mikrokontroler nema RAM memoriju, ova
32 registra opšte namjene služa za skladištenje i rad sa promjenjivim tokom rada.

Slika 5. 32 registra opšte namjene

Registri 30 i 31 formiraju 16 bitni pokazivač (takozvani Z pointer) koji se koristi za


indirektni pristup Flash memoriji i Register fajlu.

Aritmetičko logička jedinica (ALU)

ALU podržava aritmetičke i logičke funkcije između registara ili između konstante i
registra. Single register operacije se također izvršavaju u ALU. ALU posjeduje direktnu
konekciju sa svim registrima opšte namjene. Tokom jednog vremenskog ciklusa,
izvršavaju se ALU operacije između registara u Register fajlu. ALU operacije su
podjeljenje u 3 glavne kategorije – aritmetičke, logičke i bit-funkcije. Neki
mikrokontroleri iz AVR familije posjeduju hardverski množač u aritmetičkom djelu ALU-a,
ali ne ovaj.

EEPROM

EEPROM je skraćenica od Electrically Erasable Programmable Read-Only Memory, što bi


u prevodu značilo Električno izbrisljiva programabilna memorija samo za čitanje.
Attiny15l sadrži 64 bajta EEPROM memorije, u koju pojedinačni bajti mogu biti upisani ili
isčitani. Memorija je organizovana kao odvojen podatkovni prostor. EEPROM memorija se
obično koristi za smještanje važnih podataka koji prilikom nestanka napajanja ne smiju
biti izgubljeni. Ova EEPROM memorija ima izdržljivost od najmanje 100.000
pisanja/birsanja.

Flash memorija je jefitinija od EEPROM memorije ali se prije istroši, tipično poslije 1,000
- 10,000 pisanja. Drugi razlog zašto je EEPROM efektivnija za smještanje konfiguracionih
podataka je to što Flash memorija mora brisati više memorijskih lokacija odjednom.
Mjenjanje samo pojedinačnog bajta je samo moguće prepisivajući čitav blok, što
uzrokuje da flash memorija bude brže istrošena nego što se očekuje. EEPROM se može
pisati po bajt dok flash memorija zahtjeva da budu izbrisane cijele stranice samo ako se
treba izmejniti jedan bit u bajtu.

Pristupni registri za EEPROM se nalaze u I/O prostoru. Za EEPROM postoje tri registra :
EEPROM adresni registar, EEPROM podatkovni registar i EEPROM kontrolni registar.

EEPROM adresni registar određuje adresu EEPROM-a u 64 bajta EEPROM prostoru.


EEPROM podatkovni bajti su linearno adresirani od 0 do 63. U ovaj registar mora biti
upisana validna vrijednost prije nego sto se može pristupiti EEPROM-u.

Za operaciju pisanja u EEPROM, podatkovni registar EEPROM-a treba da sadrži podatak


koji treba biti upisan u EEPROM, na adresu koja je specifirana sa adresnim registrom

Arhitektura ATMEL Attiny15L mikrokontrolera 7


Sarajevo, 23.11.2006. god.
EEPROM-a. Prilikom operacije čitanja, podatkovni registar sadrži podatak koji je isčitan iz
EEPROM-a sa adrese koja je specifirana sa adresnim registrom EEPROM-a.

EEPROM kontrolni registar sadrži kontrolne bite, kao što su biti koji indiciraju da li je
moguće čitati ili pisati u EEPROM.

Interapt jedinica (Interrupt Unit)

Attiny15l omogućava 8 interapt izvora. Svaki interapt kao i odvojeni reset vektor imaju
odvojeni programski vektor u Programskoj memoriji. Da bi se omogućio interapt, svakom
prekidu su dodjeljeni individualni enable biti koji moraju biti postavljeni na 1 zajedno sa I
- bitom iz statusnog registra.

Najniže adrese u Programskoj memoriji su automatski definirani kao početni i interapt


vektori. Kompletan prikaz vektora prikazan je u donjoj tabeli. Lista također prikazuje
prioritete različitih prekida (interapta). Što je niža adresa to je viši prioritetni nivo. RESET
ima najveći prioritet .

Slika 6. Prikaz interapt vektora

Kada se dogodi prekid, Global Interrupt Enable I bit se postavlja na 0 i svi interapti su
onemogućeni. Korisnički softver može postaviti I bit da dozvoli prekide. I bit se postavlja
na 1 kada se izvršava Interapt instrukcija RETI koja predstavlja povratak iz interapta.

Kada je programski brojač pozicioniran na trenutni Interapt vektor da bi se izvršila


Interapt rutina, tada hardver briše odgovarajući fleg koji generiše interapt.

Ako se interapt stanje dogodi kada je odgovarajući interapt enable bit postavljen na nulu,
odgovarajući interapt fleg će se postaviti i zapamtiti sve dok se interapt ne omogući ili
dok se fleg ne očisti preko softvera.

Arhitektura ATMEL Attiny15L mikrokontrolera 8


Sarajevo, 23.11.2006. god.
Ako se jedno ili više interapt stanja pojavi kada je Globalni Interapt Bit postavljen na
nulu, odgovarajući interapt flegovi će biti postavljeni i zapamćeni sve dok se Globalni
Interapt Bit ne postavi na 1, i oni će se tada izvršavati prema redu prioriteta.

Slika 7. Programski blok dijagram za interapte

Kontrolni registri

Svi ulazno/izlazni registri kod Attiny15l mikrokontrolera su smješteni u ulazno/izlaznom


prostoru. Ulazno/izlaznim registrima sa adresom u opsegu od $00-$1F se može direktno
pristupiti bitu koristeći SBI i CBI instrukcije. U ovim registrima vrijednost pojedinačanih
bita može biti provjerena koristeći SBIS i SBIC instrukcije.

Ulazno/izlazni memorijski prostor sadrži 64 adrese za periferalne funkcije kao što su


kontrolni registri, tajmeri/brojači i druge ulazno/izlazne funkcije.

SPI Unit (Serial Peripheral Interface)

Serial Peripheral Interface je razvijen od strane Motorole i predstavlja sinhroni protokol


pri čemu je svaki prenos referenciran na sat, koji se generiše od strane mastera. Kao što
je već spomenuto u ranijem izlaganju programska Flash memorija je In-System
Programabilna i programira se putem SPI porta, korištenjem SPI sabirnice.

Serijski interfejs se sastoji od pinova : SCK (Serial clock input for Serial Programming),
MOSI (Master Out Slave In) i MISO (Master In Slave Out).

Tajmer/Brojač

Attiny15l sadrži dva 8-bitna brojača. Oba brojača sadrže Prescaler. Prescaling je odabir
veličine koraka pri brojanju u odnosu na CK (Clock Source). Odabiri Tajmer/Brojac0
prescaler-a mogu biti CK/8, CK/64, CK/256 i CK/1024 , dok kod Tajmer/Brojac1 odabiri
su CK/2, CK/4, CK/8, CK/16, CK/32, CK/64, CK/128, CK/256, CK/512 i CK/1024.

Arhitektura ATMEL Attiny15L mikrokontrolera 9


Sarajevo, 23.11.2006. god.
Na slici br. 8 je prikazan blok dijagram Tajmer/Brojača0. Sa dijagrama se može vidjeti da
izlaz iz multipleksera predstavlja sat za brojač. Kada brojač dostigne maksimalnu
vrijednost tada će slijedeća vrijednost pri brojanju biit nula i overflow flag TOV0 će se
postaviti na jedinicu. Ukoliko je i interupt enable bit (TOIE0) za Tajmer/Brojač0
postavljen na jedincu, tada će se desiti interupt koji je prouzrokovao Tajmer/Brojač0.

Slika 8. Brojač/Tajmer0

ADC (Analog-Digital Convertor)

S obzirom da su vanjski signali obično različiti od onih koje mikrokontroler može


razumjeti (logičku jedicinu i logičku nulu), oni moraju biti konvertovani u oblik koji
mikrokontroler može da razumije. Ovaj dio posla obavlja ADC. ADC je odgovoran za
konvertovanje neke analogne vrijednosti u binarni broj. ADC nije sastavni dio svakog
mikrokontrolera. ADC konvertuje analognu ulaz u 10-bitnu digitalnu vrijednost.

Analogni komparator

Analogni komparator poredi dvije ulazne vrijendosti sa pozitivnog PB0 i negativnog PB1
pina. Ako je napon na pozitivnom pinu PB0 veci od napona na negativnom pinu PB1 onda
se ACO (Analog Comparator Output) postavljen na jedan. Ovaj ACO bit može
prouzrokovati neki drugi odvojeni interrupt. Na primjer, moguće je porediti izlaz iz nekog
senzora temperature sa nekim referentnim nivoom, i kada temperatura pređe referentni
nivo, tada se dešava interapt i moguće je poduzeti neku mjeru.

Watchdog tajmer

Watchdog Timer je brojač koji je klokiran od jednog odvojenog oscilatora na čipu, i koji
radi na 1 MHz. Namjena Watchdog tajmera je da resetuje mikrokontroler u slučaju
programske greške, tj. kada mikrokontroler izvršava beskonačnu petlju. Watchdog
tajmer se može resetovati sa WDR instrukcijom.

Arhitektura ATMEL Attiny15L mikrokontrolera 10


Sarajevo, 23.11.2006. god.
Pogledajmo slijedeći dio koda :

uint8_t x;

x = 10;
while (x >= 0)
{
// neki dio koda
x--;
}

Kada malo detaljnije pogledamo ovu petlju možemo primjetiti da se ona nikada neće
završiti, jer je varijabla x deklarisana kao neoznačeni integer koji nikada neće biti manji
od 0. Dakle, program bi vrtio beskonačnu petlju i u ovakvim situacijama nam može
pomoći Watchdog.

Nakon što se aktivira Watchdog, tada se podešavanjem prescalera može podesiti vrijeme
nakon kojeg će se izvršiti reset, a to je između 16 μs i 2,048 ms. Nakon ovoga, brojač
počinje da broji od nule i kada dostigne određenu vrijednost, tada Watchdog Tajmer
izazove reset mikrokontrolera. Dakle, da bi se spriječio reset mikrokontrolera, Watchdog
Tajmer treba redovno resetovat.

Slika 9. Watchdog tajmer

I/O portovi

Port je registar unutar mikrokontrolera, koji je konktovan preko žica na pinove


mikrokontrolera. Svi AVR portovi imaju funkcionalnost čitanja, pisanja i modificiranja. To
znači da se smijer jednog od pinova porta može mijenjati bez da se promjeni smijer
ostalih pinova sa SBI i CBI instrukcijama.

Port B je 6-bitni I/O bidirekcionalni port. Memorijske adrese su alocirane za port B, jedna
za Data Registar PORTB $18, jedna za Data Direction Registar DDRB $17 i jedna za port
B Input pins PINB $16, port B input pin adresa je samo za čitanje dok su DDRB i PORTB
za čitanje i pisanje.

Port B Data Register – PORTB

PORTB registar se koristi da bi se specificirale digitalne vrijednosti koje ce na pinovima


biti viđeni kao naponski nivo, ukoliko je određeni pin definisan kao izlazni. U ovaj registar
se može čitati i pistati. Ukoliko se vrši operacije čitanja dobijamo vrijednosti koje su bile

Arhitektura ATMEL Attiny15L mikrokontrolera 11


Sarajevo, 23.11.2006. god.
upisane u prošlom pisanju. Ukoliko je pin definisan kao ulazni tada naponski nivo na
istom nece biti reflektiran na ovaj registar. Da bi provjerili naponski nivo pinova koristi se
registar PINB.

Port B Data Direction Registar – DDRB

DDR registar se koristi da bi definisao pravac svakog pina koji će on imati ukoliko se oni
koriste kao I/O pinovi opšte namjene. Smijer svakog pojedinačnog pina je izlaz ako je
odgovarajuči bit postavljen na jedinicu ili u suprotnom, postavljen kao ulaz ako je svaki
odgovarajući bit postavljen na nulu.

Port B Input Pins Address – PINB

PinB nije registar nego ova adresa omogučuje pristup fizičkim vrijednostima na svaki
PORTB pin. Kada čitamo PORTB tada čitamo leč, a kada čitamo PINB onda čitamo logičke
vrijednosti koje su prisutne na pinovima.

Blok dijagram Attiny15L mikrokontrolera

Slika br. 10 predstavlja blok dijagram navedenog mikrokontrolera. Na ovom dijagramu


su jasno označeni pinovi mikrokontrolera, hardverski stek, kao i neke dodatne jedinice
koje nisu bile ucrtane na dijagramu sa slike 3. Nakon objašnjenja pojedinih dijelova
mikrokontrolera moguće je sada i vidjeti put podataka, koji bi trebao razjasniti sve što je
napisano u prethodnom poglavlju.

Slika 10. Blok dijagram Attiny15L

Arhitektura ATMEL Attiny15L mikrokontrolera 12


Sarajevo, 23.11.2006. god.
Načini adresiranja

Attiny15l podržava efikasne načine adresiranja. OP znači operacioni kod koji je dio
instrukcijske riječi.

Direktno adresiranje pojedinačnog registra :

Slika 11. Direktno adresiranje pojedinačnog registra

Operand je sadržan u registru d (Rd).

Indirektno adresiranje pojedinačnog registra

Slika 12. Indirektno adresiranje pojedinačnog registra

Registar kome se pristupa je onaj na koji pokazuje niži bajt Z registra R30.

Direktno adresiranje registara, dva registra :

Slika 13. Direktno adresiranje, dva registra

Operandi su sadržani u registru r (Rr) i d (Rd). Rezultat se smješta u registar d (Rd).

Arhitektura ATMEL Attiny15L mikrokontrolera 13


Sarajevo, 23.11.2006. god.
Direktno adresiranje ulazno/izlazne memorije

Slika 14. Direktno adresiranje I/O memorije

Adresa operanda je na 6 bita instrukcijske riječi. n je adresa izvorišnog registra ili


odredišnog registra.

Relativno adresiranje programske memorije

Slika 15. Relativno adresiranje programske memorije

Programsko izvršenje se nastavlja na adresi PC+k+1. Relativna adresa k je od -2048 do


2047.

Adresiranje konstante koristeći LPM instrukciju

Slika 16. Adresiranje konstante LPM instrukcijom

Adresa bajta konstante je određen sadržajem Z registra. 15 ita odabiraju adresu riječi 0-
511 a niži bit odabira niži bajt ako je LSB=0 ili ako je LSB=1 onda se odabira viši bajt.

Arhitektura ATMEL Attiny15L mikrokontrolera 14


Sarajevo, 23.11.2006. god.
Princip rada

Nakon pisanja programa za mikrokontroler, potrebno ga je kompajlirati u hex code. Hex


kod je niz heksadecimalnih brojeva koje mikrokontroler interpretira kao instrukcije. Hex
kod se upisuje u Flash programsku memoriju.

Kada mikrokontroler krene sa radom, Flash programskoj memoriji se pristupa preko


Programskog brojača, čija je inicijalna vrijednost 0. Nakon što se pročita instrukcija sa
adrese na koju pokazuje programski brojač, ona se smješta u Instrukcijski registar.
Instrukcijski dekoder interpretira instrukciju koja se nalazi u instrukcijskom registru i
aktivira odgovarajuće kontrolne signale koji određuju nad kojim registrima će se izvršiti
određena operacija.

Slika 17 prikazuje kako se u jednom vremenskom ciklusu izvršava jedna ALU operacija
sa 2 registar operanda i rezultat pohranjuje u odredišnom registru.

Slika 17. Prikaz izvršenja ALU operacije u jednom ciklusu

Programskoj memoriji se pristupa sa protočnom strukturom od 2 faze. Dok se jedna


instrukcija izvršava, slijedeća instrukcija se dobavlja iz programske memorije. Ovaj
koncept omogućava da uglavnom po jedna instrukcija bude završena u svakom
vremenskom ciklusu.

Slika 18 prikazuje paralelno dobavljanje i izvršavanje instrukcija, što je omogućeno od


strane Harvard arhitekture i protočnoj strukturi. Na ovaj način se pokušava postići do 1
MIPS po MHz.

Slika 18. Paralelno dobavljanje i izvršavanje instrukcija

Tokom interapta i poziva potprograma, povratna adresa PC se smješta na stek. Stek je


hardverski stek dubine 3 nivoa i širok je 9 bita, kao i Programski brojač.

Arhitektura ATMEL Attiny15L mikrokontrolera 15


Sarajevo, 23.11.2006. god.
Kada u našem programskom kodu imamo skokove na labele i instrukcije koje zahtjevaju
više od 1 ciklusa za izvršenje tada očito neće biti moguće završavati instrukcije u jednom
ciklusu. Npr. kada se desi poziv na subrutinu RCALL, tada će prvo biti potrebno staviti
programski brojač (uvećan za 1) na stek, smanjiti stek pointer i promijeniti vrijednost
programskog brojača, što očito zahtjeva 3 ciklusa.

Svaki put kada imamo skok na neku adresu, već dobavljena instrukcija (prefetched) se
neće izvršiti, jer naredna instrukcija nije na adresi PC+1.

Kada AVR završi sa interaptom, on će se uvijek vratiti glavnom programu i izvršiti će još
jednu instrukciju prije nego što se izvrši još jedan interapt koji je u toku.

Overklokiranje

Kao i većina komponenti i ovaj mikrokontroler se može overklokirati. Frekvencija


internog oscilatora je 1.6 MHz, ali ona može biti podešena putem OSCCAL registra.

Slika 19. OSCCAL registar

Kada je OSCCAL nula, što mu je i inicijalna vrijednost, najniža frekvencija je odabrana,


međutim pisanje nenegativnih vrijednosti u ovaj registar, će povećati frekvenciju
internog oscilatora. Pisanjem $FF u registar odabira najveću moguću frekvenciju. Najveća
frekvencija internog oscilatora je 2 MHz.

Navesti korak i otrpilike koliko je max

Zaštita

Ovaj mikrokontroler sadrži mogućnost zaključavanja programske flash memorije. Kada


se Flash programska memorija zaključa, tada se više ne može isčitati hex cod koji je
upisan u programsku memoriju. Zaključavanje se postiže postavljanjem Lock bita na 0,
što se vrši prilikom programiranja. Međutim, to ne znači da kada se jednom zaključa
flash memorija da se više nikada u nju ne može pisati. Chip Erase komanda briše sadržaj
programske flash memorije kao i EEPROM memorije, ali briše i Lock Bit.

Arhitektura ATMEL Attiny15L mikrokontrolera 16


Sarajevo, 23.11.2006. god.
Praktični dio

Rad ovoga mikrokontrolera će se pokazati na jednom praktičnom primjeru. Slijedeća


šema predstavlja sklop koji se sastoji od mikrokontrolera Attiny15L, 3 otpornika od 220
Ω, jedan otpornik od 100 kΩ, te 3 led diode različitih boja. Nakon programiranja
mikrokontrolera, led diode bi trebale da se pale i gase sekvencijalno.

Slika 20. Šema

Arhitektura ATMEL Attiny15L mikrokontrolera 17


Sarajevo, 23.11.2006. god.
Programski kod u Asembleru

Kompajer koji se koristi za kompajliranje ovoga kodan je avr-gcc komapjler.

#include <avr/io.h>

#define LED r16


#define vanjskapetlja r17
#define unutrapetlja r18

#define CRVENA_ON 0x0A


#define ZELENA_ON 0x18
#define ZUTA_ON 0x12

#define CRVENA_OFF 0x10


#define ZELENA_OFF 0x02
#define ZUTA_OFF 0x08

#define SVE_OFF 0x1A


#define SVE_ON 0x00

.global main

main:
ldi LED,0xFF
out _SFR_IO_ADDR(DDRB),LED

petlja:
ldi LED,CRVENA_ON
out _SFR_IO_ADDR(PORTB),LED
rcall cekaj

ldi L,ZUTA_ON
out _SFR_IO_ADDR(PORTB),LED
rcall cekaj

ldi L,ZELENA_ON
out _SFR_IO_ADDR(PORTB),LED
rcall cekaj

rjmp petlja

cekaj:

ldi vanjskapetlja,0xff

napuni:
ldi unutrapetlja,0xff

dekrementiraj:
subi unutrapetlja,0x01
brne dekrementiraj
subi vanjskapetlja,0x01
brne napuni
ret

Arhitektura ATMEL Attiny15L mikrokontrolera 18


Sarajevo, 23.11.2006. god.
Zaključak

Nakon sagledane arhitekture Atmel-ovog mikrokontrolera Attiny15L trebalo bi biti jasno


na kojem principu radi ovaj ali i bilo koji drugi mikrokontroler. Može se reći da RISC
arhitektura i logički instrukcijski set velikim dijelom utiču na performanse
mikrokontrolera.

Cijena ovoga mikrokontrolera u Bosni i Hercegovini je oko 3,5 KM. Uzevši u obzir cijenu,
mogućnosti, veličinu pakovanja i potrošnju ovoga mikrokontrolera može se doći do
zaključka da je mikrokontroler itekako isplativ, s obzirom na pogodnosti koje
mikrokontroler pruža. Upravo zbog tih pogodnosti, mikrokontroler se nalaze u embedded
sistemima. Pored 8-bitnih mikrokontrolera, danas postoje i 16-bitni, 32-bitni kao i 64-
bitni mikrokontroleri. Mikrokontroleri postaju sve popularniji i s obzirom na današnju
tehnologiju izrade, i dalje su nezamjenjiva komponenta u elektronskim uređajima.

Arhitektura ATMEL Attiny15L mikrokontrolera 19


Sarajevo, 23.11.2006. god.
Literatura

1. ATtiny15L Complete, Datasheet


http://atmel.com/dyn/resources/prod_documents/doc1187.pdf

2. AVR Architecture
http://avrbeginners.net/

3. John Catsoulis, “Designing Embedded Hardware”, Chapter 6: The AVR Microcontroller


http://www.oreilly.com/catalog/dbhardware/chapter/ch06.pdf

4. AVR-GCC Tutorial
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

5. Atmel AVR Brings RISC to 8-Bit World


http://atmel.com/dyn/resources/prod_documents/atmelavr.PDF

6. Dr. Tim Margush, AVR Microcontroller Family and AVR Studio


http://www.cs.uakron.edu/~margush/306/ppt/02_avrmicro.ppt

7. Harvard Architecture
http://www.elec.canterbury.ac.nz/PublicArea/Staff/hof/p10-embed/p10-
tutorial/p13.html

8. Flash memory
http://en.wikipedia.org/wiki/Flash_memory

9. Atmel AVR
http://en.wikipedia.org/wiki/Avr

10. Robert G. Fries, Atmel Flash RISC Mikrokontroleri


http://www.mikroelektronika.co.yu/domestic/magazine/magazine/p1broj/1broj3.htm

11. AVR Attiny


http://www.mcumaster.com/AVRTiny/index.html

12. Instrukcijski set


http://atmel.com/dyn/resources/prod_documents/doc0856.pdf

13. Microcontroller
http://en.wikipedia.org/wiki/Microcontroller

Arhitektura ATMEL Attiny15L mikrokontrolera 20


Sarajevo, 23.11.2006. god.

You might also like