2002 09 28


H
&
PORADNIK ELEKTRONIKA
SPECYFIKA ARCHITEKTURY
MIKROKONTROLERÓW AVR ATMEL
T a b l i c a 1. Realizacja instrukcji logicznej
rzonego w języku C kodu xródłowego jest
Strukturę
B = B OR C na mikrokontrolerze 8051
zazwyczaj objętoSciowo większy od progra-
mikrokontrolerów AVR
mu napisanego bezpoSrednio w asemble- Liczba cykli
firmy ATMEL rze, a jego czas realizacji jest dłuższy od fak- MOV ACC, B 1
tycznie niezbędnego do wykonania zada- ORL ACC, C 1
zoptymalizowano pod
MOV B, ACC 1
nych obliczeń. Program napisany w języku ni-
względem wykonywania SUMA: 3
skiego poziomu, czyli w asemblerze, jest zwy-
programów napisanych
kle bardziej optymalny, zarówno pod wzglę-
syczny już mikrokontroler 8051 wyposażony
dem wielkoSci, jak i czasu realizacji. Niestety,
w języku C. Programy
jest w dzielnik 1:12. Przy tej samej częstotli-
kodowanie w asemblerze jest znacznie tru-
w C, skompilowane na woSci oscylatora mikrokontrolera AVR pracu-
dniejsze niż programowanie w języku C.
je więc dwanaScie razy szybciej niż 8051.
mikrokontrolery AVR,
Idealnym rozwiązaniem dla konstruktorów
Architektura AVR ma za zadanie zaspoka-
zajmują tak samo mało
systemów opartych na mikrokontrolerach
jać specyficzne potrzeby kompilatorów języ-
jednoukładowych byłoby połączenie zalet
miejsca i działają równie
ka C. Poniżej przedstawionych zostało pa-
języka C _ łatwoSci i szybkoSci kodowania,
rę typowych dla kompilatorów C problemów
szybko, jak programy
przejrzystoSci kodu xródłowego, z zaletą
oraz sposoby ich rozwiązania w mikrokon-
kodowane w asemblerze
asemblera, którą jest zwarty i szybki kod
trolerach AVR.
na inne mikrokontrolery. xródłowy. Mikrokontrolery AVR są właSnie
próbą rozwiązania tego trudnego zadania.
Operacje na zmiennych
ednoukładowe 8-bitowe mikrokon- W tym celu w AVR zastosowano architektu-
lokalnych
rę RISC ( In r n S p n )
trolery rodziny AVR firmy ATMEL
z 32 rejestrami uniwersalnymi szybkiego do-
są wyposażone w układy takie
Poprawnie napisany program w języku C ko-
stępu, na których jednostka arytmetyczno-lo-
Jjak: wewnętrzna pamięć Flash,
rzysta z ograniczonej do minimum liczby
EEPROM, wewnętrzny oscylator, kompara- giczna ALU może bezpoSrednio wykonywać
zmiennych globalnych. W razie potrzeby
operacje _ rys. 1. Rejestry te spełniają te
tor analogowy czy r. Interfejs
deklarowane są wewnątrz funkcji zmienne
same funkcje, co tradycyjny akumulator.
In S r r n umożliwia łatwe
lokalne. Dzięki temu obszar pamięci RAM
i szybkie programowanie wewnętrznej pamię- Dla porównania, mikrokontroler 8051 ma
nie jest zajęty przez stale obecne zmienne
również 32 rejestry (4 banki po 8 rejestrów),
ci Flash i EEPROM, bez potrzeby posiadania
globalne. Zmienne lokalne zajmują obszar
odpowiedniego programatora. Mikrokontro- ale dostęp możliwy jest tylko do jednego
RAM tylko do momentu zakończenia reali-
wybranego banku, a więc do 8 rejestrów.
lery AVR potrafią wykonać jeden rozkaz
zacji funkcji, w której zostały zadeklarowa-
Odwołania do danych zapisanych w reje-
w pojedynczym cyklu zegara, co pozwala
ne. Przechowywanie zmiennych lokalnych
strach są dla każdego procesora znacznie
na osiągnięcie szybkoSci przetwarzania do
w rejestrach uniwersalnych umożliwia efek-
1 MIPS na 1 MHz. W skład rodziny mikrokon- szybsze od odwołań do pamięci. Również
tywne i szybkie z nich korzystanie. Mikrokon-
i kod wynikowy operacji na rejestrach jest
trolerów AVR wchodzą trzy linie produktów:
trolery AVR udostępniają aż 32 rejestry.
ATtiny _ najmniejsze pod względem wielko- mniejszy od kodu operującego na pamięci.
W mikrokontrolerach AVR możliwy jest tak-
Architektura RISC to także ograniczona lista
Sci pamięci Flash, EEPROM i liczby linii I/O,
że dostęp w jednym cyklu zegara do dwóch
rozkazów. Mikrokontrolery AVR mają jednak
AT90 i najbardziej rozbudowane ATmega.
rejestrów za pomocą pojedynczej instrukcji,
doSć długą listę instrukcji umożliwiających
Jednak najbardziej charakterystyczną cechą
co zdecydowanie przyspiesza wykonywanie
tworzenie zwartego i szybkiego kodu pro-
mikrokontrolerów AVR jest ich specyficzna
operacji na zmiennych lokalnych. Dla przy-
,
RISC owa architektura wewnętrzna zopty- gramu. Charakterystyczny dla rodziny AVR
kładu, wykonanie na dwóch rejestrach uni-
malizowana pod kątem wykonywania pro- jest brak wewnętrznego dzielnika częstotliwo-
wersalnych B i C instrukcji logicznej
gramów skompilowanych w C. Zalety pro- Sci oscylatora. CzęstotliwoSć pracy zegara
B = B OR C wymaga napisania na mikro-
wewnętrznego jest taka sama, jak częstotli-
gramowania w języku wysokiego poziomu,
kontroler CISC ( p In r n S
jakim jest C, to prostota i szybkoSć kodowa- woSć pracy oscylatora. Dla przykładu, kla-
p r) np. 8051 następującego progra-
nia oraz większa niż w przypadku asemble-
mu _ tablica 1. Z kolei na mikrokontroler
R0
Rys. 1. Architektura
ra przejrzystoSć kodu xródłowego. Dla firm
AVR wystarczy napisać jedną instrukcję _ ta-
R1
wewnętrzna
zajmujących się oprogramowywaniem mi-
.
blica 2. Na powyższym przykładzie widać,
mikrokontrolerów AVR
krokontrolerów oznacza to więc niższe ko-
.
że mikrokontroler AVR wykona powyższe
.
szty projektu, skrócenie czasu wprowadze-
zadanie w jednym cyklu, 8051 potrzebuje
R26
nia produktu na rynek ( - - r ) oraz
X pointer
}
natomiast aż trzech cykli maszynowych.
R27
ułatwia rozwój produktu.
R28 Biorąc pod uwagę, że 8051 wyposażony
Y pointer
}
Tworzenie kodów xródłowych w C na mikro-
R29
jest w dzielnik 1:12 (1 cykl maszynowy na 12
kontrolery ma również i swoje istotne wady. R30
cykli oscylatora), otrzymujemy że przy tej sa-
Z pointer
}
R31
Program powstały w wyniku kompilacji stwo-
mej częstotliwoSci zegara AVR wykona in-
Radioelektronik Audio-HiFi-Video 9/2002
'
Ładowanie programu
wane przez kompilatory języka C. Na liScie
rozkazów mikrokontrolerów AVR znajdują
Dane odniesienia
Pamięć
Szeregowy interfejs
się operacje inkrementacji (INC Rd) i dekre-
pamięci EEPROM
stala
peryferyjny
mentacji (DEC Rd) wskaxników, co ułatwia na
Port
Żródło sygnału przykład poruszanie się po wskazywanych
JTAG
taktującego:
Wewnętrzny
przez nie tablicach. W instrukcje inkrementa-
układ usuwania PLL, oscylator
cji wskaxnikowego rejestru danych DPTR
błędów
(INC DPTR) jest wyposażony także  staru-
Licznik
programu szek 8051.
Rejestr
Do 60 milionów in- UART
Mikrokontrolery AVR zawierają trzy pary 16-
instrukcji
strukcji na sekun-
bitowych wskaxników X, Y, Z (rys. 2), podczas
dę przy 70 MHz
32
gdy 8051 tylko jeden rejestr DPTR. Kompila-
w układzie scalo-
rejestry
tory języka C wykorzystują jeden ze wskaxni-
Przetwornik
nym CMOS o sze-
ogólnego
AC/CA
rokoSci Scieżki ków do obsługi stosu softwarowego, do dys-
przeznaczenia
lub kodek
0,18 m, szybciej
pozycji pozostają więc dwa wskaxniki. Dzię-
niż 8-bitowy układ
ki dostępnoSci dwóch wskaxników możliwe
CISC (komputer
jest na przykład szybkie przenoszenie danych
o rozbudowanym Zegar czasu
Pamięć RAM z jednego obszaru pamięci do drugiego.
zestawie instrukcji) rzeczywistego
Jednostka
danych
Pierwszy wskaxnik wskazuje pozycję odczy-
arytmetyczno-logiczna
przetwarzanych
tu, drugi natomiast pozycję zapisu. W sytua-
Specjalizowane cji, gdy dostępny jest tylko jeden wskaxnik ko-
zespoły
nieczne jest zmienianie ustawienia wskaxni-
logiczne
ka wewnątrz procedury przenoszenia da-
nych (ustawienie wskaxnika na odczyt, odczyt
danej, ustawienie wskaxnika na zapis, zapis
Interfejsy
Kontroler
danej), co jest oczywiScie rozwiązaniem
standardowe: Timer Sledzący Timer/licznik
przerwań
znacznie wolniejszym i zajmującym więcej
CAN, USB, PC
miejsca w pamięci kodu.
Cyfrowe
W mikrokontrolerach AVR zastosowano oczy-
We/Wy
wiScie znacznie więcej interesujących rozwią-
Rys. 2. Położenie trzech par 16-bitowych wskaxników w obszarze rejestrów AVR
danych
zań mających na celu optymalizację czasu
strukcję B = B OR C trzydzieSci szeSć razy osiąganych przez większoSć mikroproceso-
wykonania i objętoSci skompilowanego kodu
szybciej niż klasyczny już 8051. rów 16-bitowych.
programu w C. Przedstawione w artykule
Na przykład w programach w C często są wy-
przykłady są oparte na informacjach poda-
Operacje na zmiennych konywane pętle, które z kolei wymagają ko-
nych w artykułach [1], [2], [3]. Więcej na po-
wielobajtowych rzystania z instrukcji porównania. Porówna-
ruszone w artykule tematy można dowie-
nie dwóch zmiennych x1 i x2 typu integer zaj-
dzieć się na stronie www.atmel.com, a przede
ProgramiSci kodując programy w języku C ko- muje AVR znacznie mniej czasu niż typowym
wszystkim z podanej na końcu literatury. Do-
rzystają bardzo często ze zmiennych i stałych mikrokontrolerom CISC. Niech zmienna x1
stępne od kilku lat na rynku mikrokontrolery
całkowitych int i long. Podstawową wadą zajmuje rejestry R1 i R0, natomiast x2 reje- AVR cieszą się dużą popularnoScią wSród
tych typów całkowitych jest ich nadmierna stry R3 i R2. Instrukcja porównania x1 = x2
projektantów systemów cyfrowych. Zasłu-
długoSć. Zmienna typu integer zajmuje 2 wygląda po kompilacji dla AVR następująco:
gują na zainteresowanie nie tylko ze wzglę-
bajty, long aż 4. Jeszcze więcej miejsca zaj- CP R0, R2 ;porównaj młodsze bajty
du na możliwoSć uzyskania szybkiego i zwar-
mują deklaracje zmiennych i stałych rzeczy- CPC R1, R3 ;porównaj starsze bajty
tego kodu maszynowego dla programu na-
wistych: float _ 4 bajty, double _ 8 bajtów. Na liScie rozkazów mikroprocesora 8051
pisanego w języku C, ale również ze wzglę-
Skompilowane programy operujące na ty- brak jest rozkazu porównania, a więc reali- du na niską cenę oraz wbudowany interfejs
pach wielobajtowych zajmują duże obszary zacja tego działania wymagałaby korzysta- ISP.
pamięci kodu programu i prędkoSć ich dzia- nia z instrukcji odejmowania SUBB oraz Wojciech Nowakowski
łania też nie jest najwyższa. Mikrokontrolery dodatkowych rejestrów do przechowywania wojciech.nowakowski@interia.pl
AVR radzą sobie z realizacją operacji arytme- danych. Ponadto 8051 nie potrafi opero- Opracowano na podstawie:
[1] M. Gaute: The AVR Microcontroller and C Compiler
tycznych na zmiennych wielobajtowych wać w jednej instrukcji na dwóch rejestrach
Co-Design, ATMEL Corporation, ATMEL Development
znacznie lepiej niż typowe mikrokontrolery uniwersalnych.
Center, Trondheim, Norway (www.atmel.com)
CISC. Przechowywanie zmiennych w reje-
[2] W. Vegard: AVR Enhanced RISC Microcontrollers,
Operacje na wskaxnikach
Bogen Alf-Egil, ATMEL Corporation, ATMEL Develop-
strach eliminuje koniecznoSć przesyłania ich
ment Center, Trondheim, Norway (www.atmel.com)
z pamięci RAM do akumulatora i z powrotem.
Wskaxniki, czyli inaczej mówiąc odnoSniki [3] Application Note. AVR035: Efficient C Coding for
Na liScie rozkazów AVR ATMEL znajdują się
AVR (www.atmel.com)
do komórek, w których zapisane są interesu-
instrukcje dodawania i odejmowania operują-
[4] J. Turłey: Atmel AVR Brings RISC to 8-Bit World, Mi-
jące nas dane, bardzo często są wykorzysty-
croprocessor Report, 1997 (www.mpronline.com)
ce na zmiennych 16-bitowych: ADIW oraz
[5] J. Janiczek. A. Stępień: Mikrokontroler 80(C)51/52,
SBIW. Wykonanie operacji arytmetycznych
T a b l i c a 2. Realizacja instrukcji logicznej
Wydawnictwo Elektronicznych Zakładów Naukowych,
i porównania na zmiennych 16-bitowych zaj-
B = B OR C na mikrokontrolerze AVR
Wrocław 1995
muje AVR dwa cykle zegara, natomiast na
[6] A. Zalewski: Programowanie w językach C i C++
Liczba cykli
z wykorzystaniem pakietu Borland C i C++, Wydawnic-
zmiennych 32-bitowych 4 cykle zegara. Jak
OR B, C 1
two Nakom, Poznań 1955
podaje firma ATMEL, są to wyniki lepsze od
Radioelektronik Audio-HiFi-Video 9/2002


Wyszukiwarka

Podobne podstrony:
2002 09 Creating Virtual Worlds with Pov Ray and the Right Front End
łacina podst 2002 3 odp
2002 p3 answers
2002
ISUZU AXIOM 2002 2003
elektronika praktyczna 2002
Dz U 2002 199 1671 o przewozie drogowym towarów niebezpiecznych
2002#
Globo 195 Pensamentos 2002 (datada nao sind)
ABC UE Wspólna polityka transportowa Unii Europejskiej (2002)
2002 11 Wyświetlacz widmowy
Dorst GA the Framework 4 Geom Computing (2002) [sharethefiles com]
2002
20026
Slow start up when using Norton Internet Security 2002 (3)
2002 MAJ OKE II

więcej podobnych podstron