Bity blokujące i bezpieczniki konfiguracji w mikrokontrolerach AVR.pdf

(136 KB) Pobierz
Bity blokujące i bezpieczniki konfiguracji w mikrokontrolerach AVR
P O D Z E S P O Ł Y
Bity blokujące i bezpieczniki
konfiguracji w mikrokontrolerach A
konfiguracji w mikrokontrolerach A VR
V VR
Wprowadzenie
Nowoczesne mikrokontrolery
oferuj¹ wiele opcji, ktÛre usta-
wiane s¹ w†zaleønoúci od
potrzeb konkretnej aplika-
cji. Umoøliwia to produ-
centom wytwarzanie jed-
nego mikrokontrolera
o†nazwie np. ATMe-
ga103 maj¹cego moøli-
woúÊ pracy zarÛwno
z†generatorem zegaro-
wym w†postaci zewnÍt-
rznych elementÛw RC
ustalaj¹cych czÍstotli-
woúÊ jego pracy, jak
i†wewnÍtrznych, nie wyklu-
czaj¹c rÛwnieø moøliwoúci
zastosowania oscylatora kwarco-
wego. Jest to sytuacja diametral-
nie inna od tej spotykanej
w†przesz³oúci, gdy dla przyk³adu
niektÛre mikrokontrolery wyposa-
øone by³y w†uk³ad watchdog
ustawiany albo programowo, albo
dzia³aj¹cy bez wzglÍdu na to, czy
by³ potrzebny, czy teø nie
i†wrÍcz przeszkadza³ w†popra-
wnym funkcjonowaniu aplikacji.
Czasami takie mikrokontrolery
rÛøni³y siÍ tylko obecnoúci¹ lub
brakiem pewnej literki w†nazwie
wyrobu i†nie maj¹c úwiadomoúci
tego, co siÍ kupuje, moøna by³o
zap³aciÊ za rzecz, ktÛrej zupe³nie
Jaka jest rÛønica pomiÍdzy
tzw. lock bit (bit zamykaj¹cy,
blokuj¹cy dostÍp) a†fuse
(bezpiecznikiem)? Jakie s¹
konsekwencje ich ustawiania
czy teø kasowania? Czym
rÛøni¹ siÍ miÍdzy sob¹ i†czy
ich ustawienia s¹ odwracalne?
W†artykule postaram siÍ
odpowiedzieÊ na takie pytania.
MyúlÍ, øe ta wiedza bardzo
przyda siÍ zw³aszcza
stawiaj¹cym pierwsze kroki
w†dziedzinie mikrokontrolerÛw
i†pos³uøy lepszemu
zrozumieniu podstawowych
zasad korzystania z†dostÍpnych
zabezpieczeÒ.
Tab. 1. Możliwe nastawy bitów
blokujących oraz konsekwencje ich
ustawienia
Stan bitów Rodzaj włączonego
blokujących zabezpieczenia
Tryb LB1 LB2
(Mode)
1 1 1 Niezaprogramowane,
zabezpieczenie wyłączone
2 0 1 Zapis programu zabroniony,
odczyt jest dozwolony
3 0 0 Zapis i odczyt programu
są zabronione
nie dawa³o siÍ uøyÊ. MoøliwoúÊ
konfiguracji mikrokontrolera jest
wiÍc wygodna zarÛwno dla pro-
ducenta, jak i†dla konstruktorÛw.
W†niektÛrych modelach mikro-
kontrolerÛw zasadnicza rÛønica
pomiÍdzy lock bit a† fuse czÍsto
Tab. 2. Dostępność bezpieczników w trybach programowania
Mikrokontroler
RCEN SPIEN RSTDISBL FSTRT BODEN BODLEVEL CKSEL EESAVE SUT BOOTRST BOOTSZ INTCAP
n..0
n..0
n..0
AT90S1200
R
R
AT90S2313
R
R
AT90S/LS2323
R
R/S
AT90S/LS2343
R
AT90S/LS2333
R/S
R
R/S R/S R/S
AT90S/LS4433
R
R/S R/S R/S
AT90S8515
R
R
AT90S/LS8535
R
R/S
ATtiny11
H/S H/S
ATtiny12
H/S 1
H/S 2
H/S H/S H/S
ATtiny15
H/S 1
H/S 2
H/S H/S H/S
ATtiny28
R
ATmega103
R
R/S R/S
ATmega161
R
P/S P/S P/S
R/S
ATmega163
R
P/S P/S P/S
R/S
R/S
R − programator równoległy, S − programator szeregowy (również programowanie in−system ),
H − programowanie w trybie High Voltage Serial Programming (HVSP)
1 Bezpiecznik jest dostępny w trybie programowania przez SPI, jednak jego wyzerowanie spowoduje, że dostęp w trybie programowania przez SPI nie będzie
możliwy.
2 Bezpiecznik jest dostępny w trybie programowania przez SPI, jednak jego ustawienie spowoduje, że dostęp w trybie programowania przez SPI nie będzie
możliwy.
Elektronika Praktyczna 9/2002
89
Bity blokujące i bezpieczniki
konfiguracji w mikrokontrolerach A
32276594.002.png 32276594.003.png
P O D Z E S P O Ł Y
Tab. 3. Funkcje bezpieczników
Nazwa
Opis funkcji
bezpiecznika
RCEN RC Oscillator Enable
Poprzez ustawienie tego bezpiecznika wewnętrzny oscylator RC może być włączony
jako główny zegar mikrokontrolera. Niektóre AVR są dostarczane z tym bezpiecznikiem
ustawionym, inne nie. Dlatego też należy zawsze sprawdzać domyślny stan tego
bezpiecznika w odpowiedniej karcie katalogowej albo też ustawiać go tuż po zakupie.
SPIEN Serial Programming Interface Enable
Ustawienie bezpiecznika umożliwia programowanie układu poprzez interfejs SPI. Jeśli
bezpiecznik jest skasowany, interfejs SPI nie funkcjonuje i nie jest możliwe programo−
wanie układu „in−system”.
RSTDISBL Reset Disable
Ustawienie powoduje zmianę funkcji wyprowadzenia RESET. W niektórych AVR
wyprowadzenie RESET zmieniane jest w typową linię wejścia / wyjścia odpowiedniego
portu, w innych w linię tylko wyjściową. Szczegóły zawsze podane są w odpowiedniej
karcie katalogowej.
FSTRT Fast Start
Bezpiecznik kontroluje czas, po jakim startuje CPU mikrokontrolera od momentu startu
oscylatora. Jeśli używany jest rezonator ceramiczny lub szybko uruchamiany zewnęt−
rzny generator zegarowy, można ustawić ten bit. Umożliwi to CPU szybsze uruchomie−
nie programu.
BODEN Brown−Out Detection Enable
Poprzez ustawienie zezwala się na pracę wewnętrznego układu kontroli napięcia
zasilania. Jeśli napięcie nie mieści się w granicach określonych jako właściwe dla
poprawnej pracy układu, generowany jest wewnętrzny sygnał reset .
BODLEVEL Brown−Out Detection Level
Bezpiecznik ten zmienia napięcie zadziałania układu kontroli napięcia zasilania oraz
czas startu CPU. Oba te parametry są zależne od typu układu − szczegółów dotyczących
działania należy szukać w danych katalogowych konkretnego mikrokontrolera.
CKSEL n..0 Clock Select
Stan bezpieczników CKSEL kontroluje ustawienia rodzaju oscylatora, a w niektórych
AVR również czas startu CPU. Rolę tych bezpieczników dla danego modelu mikrokont−
rolera opisuje jego karta katalogowa.
EESAVE EEprom Save
Ustawienie bezpiecznika powoduje, że zawartość pamięci EEPROM nie jest kasowana
w momencie programowania układu. W przypadku ustawienia tego bezpiecznika, aby
skasować EEPROM, konieczne jest jego wyzerowanie.
SUT n..0 Start−Up Time
Stan bezpiecznika umożliwia nastawę opóźnienia pomiędzy zanikiem zewnętrznego
sygnału reset a załączeniem CPU mikrokontrolera. Ten czas może być wybrany
w zależności np. od rodzaju użytego generatora zegarowego. Jeśli dla przykładu
używany jest zewnętrzny generator zegarowy, który uruchamia się bardzo szybko −
czas ten może być bardzo krótki. Gdy natomiast stosuje się rezonator kwarcowy −
wymagany jest dłuższy czas na stabilizację generowanej częstotliwości.
BOOTRST Boot Reset
Ustawienie bezpiecznika decyduje, pod który adres wykona skok CPU mikrokontrolera
po sygnale reset − czy wykona skok do fragmentu kodu umieszczonego w tablicy
wektorów przerwań jako wektor 0, czy też do umieszczonego w obszarze tak zwanego
Boot Loadera. Stan logiczny wysoki powoduje umieszczenie wektora przerwania po
reset w obszarze sekcji Boot Loadera: będzie on wskazywał adres zależny od stanu
BOOTSZ.
Niektóre z mikrokontrolerów AVR mają możliwość umieszczenia wektora przerwania
po reset zarówno w obszarze Boot Loadera, jak również pamięci aplikacji. Lokalizacja
tego wektora zależna jest od stanu bitu IVSEL w rejestrze GICR.
BOOTSZ n..0 Boot Size
Stan bezpieczników określa rozmiar i adres startowy bloku Boot Loadera. Sekcja Boot
jest dostępna tylko i wyłącznie w mikrokontrolerach AVR, które mają w swojej liście
rozkazów instrukcję SPM.
Fot. 1
polega na zupe³nie odmiennym
wykonaniu. Na przyk³ad bezpiecz-
niki ( fuse ) s¹ wykonywane jako
mikropo³¹czenia w†strukturze
uk³adu scalonego ( fot. 1 ) albo teø
do struktury uk³adu scalonego
i†fizycznie uszkadzane przy po-
mocy pr¹du elektrycznego w†cza-
sie programowania. Takie przepa-
lone po³¹czenie juø nie daje siÍ
odtworzyÊ - uk³ad nie nadaje siÍ
do ponownej zmiany danej nasta-
wy czy teø zmiany zawartoúci pa-
miÍci programu.
Inaczej jest z†bitami blokuj¹cymi
( lock bits ). Ich ustawianie czy teø
kasowanie przypomina w³¹czanie
i†wy³¹czanie opcji w†programie -
aplikacji. Wykonane s¹ one naj-
czÍúciej w†technologii EEPROM,
moøliwa jest wiÍc modyfikacja
ich stanu. A†jak to jest w†przy-
padku mikrokontrolerÛw z†rodzi-
ny AVR?
Mikrokontrolery AVR
Kaødy mikrokontroler z†tej ro-
dziny posiada dwie grupy usta-
wianych bitÛw. S¹ to bity bloku-
j¹ce i†bezpieczniki. Nazwa bez-
piecznik jest w†przypadku AVR
bardzo myl¹ca, poniewaø usta-
wienie bezpiecznika jest odwra-
calne. Daje siÍ nim manipulowaÊ
podobnie jak nastawami bitÛw
blokuj¹cych.
W†momencie zakupu uk³adu od
producenta zarÛwno bezpieczni-
ki, jak i†bity blokuj¹ce znajduj¹
siÍ w†stanie logicznym wysokim
(1). Programowanie ich polega na
zmianie stanu z†wysokiego na
niski (0). ZarÛwno jedna, jak
i†druga grupa opcji nie jest
umieszczona w†normalnie dostÍp-
nym obszarze pamiÍci EEPROM
czy teø Flash. Mog¹ one byÊ jed-
nak ustawiane z†poziomu aplika-
cji, za wyj¹tkiem bitÛw odpowia-
INTCAP
Internal Capacitors
Gdy INTCAP jest ustawiony, nie jest konieczne stosowanie zewnętrznych kondensato−
rów dołączanych do rezonatora kwarcowego. Obniża to koszt systemu i upraszcza
płytkę drukowaną.
daj¹cych za w³¹czenie opcji tzw.
Boot Loader w†mikroprocesorach,
gdzie jest moøliwe ìsamoprogra-
mowanieî. Jednak dla praktycz-
nych zastosowaÒ najwiÍksze zna-
czenie bÍdzie mia³o to, øe nasta-
wy bitÛw blokuj¹cych i†bezpiecz-
nikÛw mog¹ byÊ zmieniane
w†czasie programowania, przy
pomocy programatora szeregowe-
go albo rÛwnoleg³ego. Ten drugi
oferuje jednak dostÍp do wiÍk-
szej liczby nastaw.
Bity blokuj¹ce lock bits
Wszystkie mikrokontrolery
AVR posiadaj¹ dwa bity bloku-
j¹ce o†nazwie LB1 i†LB2. Zmia-
90
Elektronika Praktyczna 9/2002
32276594.004.png 32276594.005.png
P O D Z E S P O Ł Y
na stanu tych bitÛw powoduje
zabezpieczenie zawartoúci pa-
miÍci EEPROM i†Flash. Zabez-
pieczenie podzielone jest na trzy
poziomy (Mode 1...3), gdzie po-
ziom 1†wy³¹cza zabezpieczenia,
natomiast poziom 3†oferuje mak-
symalny jego stopieÒ dla danego
modelu. Moøliwa jest zmiana
poziomu zabezpieczenia poprzez
zmianÍ stanÛw lock bits . I†tu
jedna bardzo waøna uwaga:
w†obrÍbie rodziny mikrokontrole-
rÛw AVR moøliwa jest wy³¹cznie
zmiana stanu bitu zabezpiecze-
nia z†wysokiego na niski, nigdy
zaú odwrotnie. Przejúcie na niø-
szy poziom zabezpieczenia za-
wsze wi¹øe siÍ ze skasowaniem
pamiÍci programu (Flash) uk³a-
du. W†ten prosty sposÛb moøli-
we jest zwiÍkszanie poziomu za-
bezpieczeÒ, nigdy zaú zmniejsza-
nie - wi¹øe siÍ to bowiem
z†utrat¹ danych.
Dodatkowo mikrokontrolery
AVR, maj¹ce moøliwoúÊ samopro-
gramowania, posiadaj¹ jeszcze
cztery dodatkowe bity zabezpie-
czeÒ BLB01, BLB02, BLB11
i†BLB12. Ich ustawienie/kasowa-
nie wi¹øe siÍ z†pewnymi restryk-
cjami dla instrukcji LPM ( Load
Program Memory ) i†SPM ( Store
Program Memory ), jednak w†przy-
padku specyficznych nastaw tych
bitÛw proszÍ odnieúÊ siÍ do kon-
kretnych kart katalogowych dane-
go modelu mikrokontrolera.
bezpiecznika bÍdzie odczuwalna
dopiero po wykonaniu przez mik-
rokontroler wewnÍtrznej procedu-
ry obs³ugi sygna³u reset genero-
wanego po w³¹czeniu zasilania
( power on reset ). Bardzo waøn¹
informacj¹ jest, øe po ustawieniu
bitÛw LB w†trybie 2 lub 3 nie jest
moøliwa zmiana stanu øadnego
z†bezpiecznikÛw, zabroniony jest
bowiem zapis do pamiÍci mikro-
kontrolera.
W† tab. 2 zawarto informacje
o†tym, jakie bezpieczniki i†bity
blokuj¹ce dostÍpne s¹ w†rÛønych
mikrokontrolerach z†rodziny AVR.
Informuje rÛwnieø, w†jakim trybie
programowania moøliwa jest
zmiana ich nastaw. Tab. 3 †podaje
natomiast, jaka jest rola ustawieÒ
poszczegÛlnych bezpiecznikÛw.
Jacek Bogusz, AVT
jacek.bogusz@ep.com.pl
Bezpieczniki fuses
Bity blokuj¹ce dostÍpne s¹ we
wszystkich trybach programowa-
nia. W†przypadku bezpiecznikÛw
jest inaczej. WiÍkszoúÊ z†nich jest
dostÍpna we wszystkich trybach
programowania, natomiast niektÛ-
re z†nich tylko w†wybranych.
RÛwnieø inaczej niø w†przypadku
lock bits , stan bezpiecznikÛw nie
ulega zmianie po instrukcji kaso-
wania uk³adu. Aby zmieniÊ stan
bezpiecznika, wymagane jest za-
programowanie logicznego stanu
wysokiego we w³aúciwej lokaliza-
cji pamiÍci. Taka zmiana stanu
Dodatkowe informacje
- http://www.avrfreaks.net/
- http://www.atmel.com/
Elektronika Praktyczna 9/2002
91
32276594.001.png
Zgłoś jeśli naruszono regulamin