AVR-owe Fusy 2.pdf

(245 KB) Pobierz
podzespoly.indd
P O D Z E S P O Ł Y
AVR-owe
„fusy”
część 2
Artykuł jest przeznaczony
przede wszystkim
dla Czytelników
początkujących
w dziedzinie
mikrokontrolerów.
Opisano w nim różnice
pomiędzy cyklem
zegarowym i cyklem
maszynowym oraz opcje
nastaw źródeł sygnału
zegarowego (sprawiające
często kłopoty
ustawianie bezpieczników
konfigurujących, tzw.
fuse’ów) w procesorach
AVR. Przedstawiono
wady i zalety różnych
rozwiązań, wskazano
także potencjalne
przyczyny problemów
oraz sposoby radzenia
sobie z nimi.
Nastawy bitów kontrolnych
Dla większości mikrokontrolerów
z rodziny AT90 nie ma potrzeby
martwić się o nastawy bitów kontrol-
nych (bezpieczników). Należy po pro-
stu podłączyć zewnętrzny oscylator
kwarcowy lub ceramiczny, ewentual-
nie generator zegarowy i już można
normalnie używać mikrokontrolera.
Inaczej jest w przypadku AVR z se-
rii ATMega.
Właściwy sposób nastawy zależy
od rodzaju używanego programatora
i jego oprogramowania. Nie można
niestety opisać jednej, uniwersalnej
metody dla wszystkich. W artykule
opiszę ogólne zasady wykonywania
nastaw oraz sposoby użycia popular-
nych narzędzi, takich jak AVR Stu-
dio (z dołączonym STK500 lub JTAG
ICE) oraz Bascom AVR (z dołączo-
nym STK300).
Sposób wykonywania nastaw
z dołączonym STK500 jest bardzo
prosty. Z menu wybieramy opcję To-
ols > STK500 / AVRISP / JTAG ICE . Ilustru-
je to rys . 4 .
Wyświetli się okno nastaw, gdzie
po wybraniu typu mikrokontrolera
oraz zakładki Fuses uzyskujemy moż-
liwość nastaw zegara. Pokazano to
na rys . 5 (fragment nastaw mikro-
kontrolera ATMega 128).
Na przykład zaznaczenie zna-
ku wyboru obok Int . RC Osc . 1MHz ;
Start - up time : 6 CK + 0ms , a następ-
nie wybranie przycisku Program powo-
duje załączenie wewnętrznego oscylato-
ra o częstotliwości 1 MHz. Jednostka
centralna zostanie uruchomiona po 6
cyklach zegarowych. Opóźnienie wpro-
wadzane jest w celu ustabilizowania
się częstotliwości generatora po załą-
czeniu napięcia zasilania.
Zupełnie inaczej przeprowadza
się nastawy za pomocą programato-
ra wbudowanego w Bascom AVR. Po
uruchomieniu programatora należy
wybrać zakładkę Lock and Fuse Bits .
Ukaże się okienko, jak na rys . 6 .
W moim przykładzie posłużyłem
się mikrokontrolerem ATMega162.
Wyświetlone na ekranie bity są bar-
dzo podobne. Nastawy dotyczące ze-
gara mikrokontrolera, to:
Fusebit 7 – wartość 1 oznacza wy-
dłużenie cyklu maszynowego do
16x cykl zegarowy,
Fusebit 98 – liczba cykli zegaro-
wych oraz wartość opóźnienia do
uruchomienia CPU,
Fusebit DCBA – nastawa opcji
CKSEL.
Bascom ma rozbudowany sys-
tem podpowiedzi oferując listę opcji
do wyboru po wskazaniu którejś
Rys. 4. Wybór narzędzia STK500
z menu AVR Studio 4
Rys. 5. Okienko nastaw, zakładka Fu-
ses dla mikrokontrolera ATMega 128
94
Elektronika Praktyczna 10/2004
32835118.009.png 32835118.010.png 32835118.011.png 32835118.012.png
P O D Z E S P O Ł Y
Rys. 6. Wygląd zakładki Lock and Fuse Bits aplikacji do obsługi programa-
tora w Bascom AVR
z nich. Na rys . 7 , 8 i 9 pokazano
opcje dostępne dla interesujących
nas nastaw.
Nastawa Fusebit 7 w ATMega-
162 powoduje włączenie preskalera
zegara taktującego pracą procesora.
Dzięki temu możliwe jest obniżenie
szybkości pracy CPU, co może być
potrzebne w pewnych sytuacjach, na
przykład przy zasilaniu bateryjnym.
Stan bezpiecznika Fusebit 98
umożliwia nastawę opóźnienia pomię-
dzy zanikiem zewnętrznego sygnału
zerowania a załączeniem CPU mikro-
kontrolera. Ten czas może być wybra-
ny np. w zależności od rodzaju uży-
tego 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 sto-
suje się rezonator kwarcowy, wyma-
gany jest dłuższy czas na stabilizację
generowanej częstotliwości.
Mimo iż Bascom podpowiada
sposoby nastaw bitów CKSEL, to
jednak każdorazowo należy odnieść
ich nastawę do opisu w nocie kata-
logowej danego typu mikrokontrole-
ra. Stan bezpieczników CKSEL kon-
troluje ustawienia rodzaju oscylatora,
a w niektórych mikrokontrolerach
AVR również czas startu CPU.
Do nastawy bitów bezpieczników
oraz blokujących można również
użyć popularnego i opisywanego
w poprzednich numerach EP pro-
gramatora yaap . Interfejs nie jest aż
tak opisowy jak w Bascom, lecz ma
tę zaletę, że nastawy wszystkich bi-
tów widać jak na dłoni ( rys . 10 ). Tu
niestety należy uzbroić się w kartę
katalogową przed wykonaniem ja-
Rys. 7. Nastawy bitu 7 (dzielnik zegara)
Rys. 8. Nastawy bitów 98 (czas startu)
Rys. 9. Nastawy bitów DCBA (CKSEL)
Rys. 10. Wygląd ekranu programu
YAAP
Elektronika Praktyczna 10/2004
95
32835118.001.png 32835118.002.png 32835118.003.png 32835118.004.png 32835118.005.png 32835118.006.png
P O D Z E S P O Ł Y
Rys. 11. Schemat prostego generatora o częstotliwości stabilizowanej kwarcem
mek TTL) o częstotliwości właściwej
dla danego rodzaju mikrokontrolera
i poprawnie ustawić wartości bitów
bezpieczników. Przykładowy sche-
mat takiego generatora pokazano na
rys . 11 . Oczywiście można użyć do-
wolnego innego obwodu.
Jeśli zasilenie wejścia XTAL1
z zewnętrznego generatora nie przy-
nosi skutku, to być może został
załączony generator pracujący z ze-
wnętrznymi elementami RC. Należy
dołączyć chociażby tymczasowo wy-
magane elementy i spróbować po-
nownie zaprogramować nastawy.
O ewentualnych problemach z po-
jemnościami dołączonymi do XTAL1
i XTAL2 pisałem już wcześniej. Pomi-
nąłem jednak fakt, że bardzo istotna
przy dołączaniu wszelkich źródeł sy-
gnału zegarowego jest również długość
ścieżek łączących oscylator z mikro-
kontrolerem. Projektując płytkę druko-
waną należy zadbać o to, aby ścieżki
były jak najkrótsze, czyli żeby w prak-
tyce ich długość nie przekraczała 1
cm. Jeśli doprowadzenia będą dłuższe,
to może zdarzyć się (o ile oscylator
ze względu na wniesioną indukcyjność
i pojemność w ogóle będzie pracował),
że pracujące urządzenie z mikrokon-
trolerem będzie zakłócać inne, znajdu-
jące się w sąsiedztwie. Długa ścieżka
pracować będzie jak antena, a i am-
plituda sygnału mierzona na doprowa-
dzeniach oscylatora nie jest zbyt mała.
Może nawet oscylować w zakresie po-
ziomów napięć TTL.
Jacek Bogusz
jacek.bogusz@ep.com.pl
kichkolwiek zmian. Program YAAP
współpracuje bardzo dobrze z pro-
gramatorem STK200/STK300. Według
mojej wiedzy jest to interfejs, który
zdecydowanie bardziej odpowiada
profesjonalistom niż amatorom.
wania interfejsu JTAG (oczywiście,
jeśli mikrokontroler jest w ten in-
terfejs wyposażony);
– niewłaściwych nastawach bitów
CKSEL.
Jeśli interfejs umożliwiający pro-
gramowanie szeregowe (SPI lub
JTAG) został wyłączony, to niestety
należy poszukać alternatywnej meto-
dy ustawienia bitów bezpieczników,
czyli najczęściej skorzystać z progra-
matora równoległego dla AVR. Moż-
na to zrobić również za pomocą
zestawu startowego dla AVR pro-
dukowanego przez firmę Atmel pod
oznaczeniem STK500.
Inaczej jest w przypadku złe-
go ustawienia bitów CKSEL (Fuse
DCBA). Niektóre z nastaw mogą wy-
magać podania zewnętrznego sygna-
łu zegarowego. W takim przypadku
należy podać na wejście XTAL1 sy-
gnał zegarowy z dowolnego generato-
ra (zbudowanego na przykład z bra-
Rozwiązywanie problemów
Początkującym programistom czę-
sto zdarza się, że po zaprogramowa-
niu bitów bezpieczników mikrokon-
troler przestaje pracować. Świadczą
o tym chociażby liczne pytania poja-
wiające się na grupach dyskusyjnych
w Internecie. Proszę się nie obawiać
– w normalnych warunkach zasilania
i eksploatacji mikrokontrolera nie da
się zepsuć za pomocą programatora
szeregowego. Przyczyny należy upa-
trywać w błędnie wykonanych nasta-
wach, a zwłaszcza w:
– ustawieniu bitu zabraniającego pro-
gramowania przez interfejs SPI;
– ustawieniu bitu zabraniającego uży-
96
Elektronika Praktyczna 10/2004
32835118.007.png 32835118.008.png
Zgłoś jeśli naruszono regulamin