Professional Documents
Culture Documents
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
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.
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 ovom poglavlju će biti opisani sastavni dijelovi koji čine arhitekturu Attiny15L
mikrokontrolera.
Programski brojač
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.
Statusni registar
Statusni registar SREG se nalazi u I/O prostoru na adresi (lokaciji) $3F i izgleda ovako :
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.
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
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 kontrolni registar sadrži kontrolne bite, kao što su biti koji indiciraju da li je
moguće čitati ili pisati u EEPROM.
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.
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.
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.
Kontrolni registri
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.
Slika 8. Brojač/Tajmer0
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.
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.
I/O portovi
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.
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.
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.
Attiny15l podržava efikasne načine adresiranja. OP znači operacioni kod koji je dio
instrukcijske riječi.
Registar kome se pristupa je onaj na koji pokazuje niži bajt Z registra R30.
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.
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.
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
Zaštita
#include <avr/io.h>
.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
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.
2. AVR Architecture
http://avrbeginners.net/
4. AVR-GCC Tutorial
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
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
13. Microcontroller
http://en.wikipedia.org/wiki/Microcontroller