FuseBit AVR.pdf

(71 KB) Pobierz
77224936 UNPDF
Fuse Bity w mikrokontrolerach AVR
Artykuł ten powstał aby w prosty sposob pokazać jak naleŜy ustawiać bity
konfiguracyjne w mikrokontrolerach AVR. Nie mam zamiaru opisywać dokładnie
kaŜdego bitu ale tylko te ktore są najbardziej istotne i najczęściej uŜywane.
Głownie zajmiemy się konfiguracją źrodła sygnału zegarowego i jego dzielnika.
PoniewaŜ konieczność zmiany wartości Fuse Bitow dla większości początkujących
stanowi ogromne wyzwanie, opis będę się starał przedstawić jak najprościej. Mam
nadzieje Ŝe zawarta tutaj wiedza okaŜe się pomocna i odpowie na szereg
potencjalnych pytań.
Ustawienia bitow konfiguracyjnych moŜemy dokonać w wielu programach, takich
jak: BASCOM, PonyProg, ISPProgrammer itp. W opisie będę uŜywał zapisu
takiego jak w karcie katalogowej, czyli "0" będzie oznaczało bit zaprogramowany a
"1" niezaprogramowany.
ATtiny 2313
Ustawienia fabryczne
Domyślnym (fabrycznym) ustawieniem mikrokontrolera ATtiny2313 są bity CKSEL3..0 = "0010", SUT1..0 =
"10" oraz CKDIV8 = "0". Oznacza to Ŝe fabryczny mikrokontroler, przed zmianą jakichkolwiek "Fusow"
pracuje na wewnętrznym oscylatorze RC z najdłuŜszym czasem startu i dzieleniem częstotliwości przez 8, co
daje w efekcie taktowanie 1MHz.
Zewnętrzny Rezonator Kwarcowy 0,9 16MHz
Gdy chcemy uŜywać zewnętrznego rezonatora kwarcowego to musimy przestawić bity CKSEL3..1 w
zaleŜności od jego częstotliwości. Dla częstotliwości 0,93MHz bity CKSEL3..1 powinny mieć wartość "101",
dla 38MHz powinno być CKSEL3..1 = "110" a dla częstotliwości większych od 8MHz bity CKSEL3..1 mają
być ustawione na "111".
W drugim kroku zajmujemy się ustawieniem bitu CKSEL0 i SUT1..0 ktore razem odpowiadają za czas
powrotu mikrokontrolera do normalnej pracy po resecie lub trybie PowerDown itp. Najczęściej stosowane są
trzy tryby. Pierwszy, wymagany gdy układ BOD jest aktywny uzyskamy dzięki ustawieniu CKSEL0 = "1" i
SUT1..0 = "01". Drugi tryb stosowany jest gdy napięcie zasilające szybko narasta, jest realizowany przez
ustawienie CKSEL0 = "1" i SUT1..0 = "10". Trzeci natomiast uruchamiamy stawiając CKSEL0 = "1" i
SUT1..0 = "11", jest stosowany gdy napięcie zasilające powoli narasta.
Wewnętrzny oscylator 4/8MHz
Wewnętrzny oscylator o częstotliwości 4MHz uruchamiamy ustawiając bity CKSEL3..0 rowne "0010" lub
"0011", dla częstotliwości 8MHz zgodnie z kartą katalogową powinno to być "0100" lub "0101". Czas powrotu
mikrokontrolera do normalnej pracy po resecie lub trybie PowerDown itp. ustawiamy bitami SUT1..0.
Wartość SUT1..0 = "00" stosujemy gdy aktywny jest układ BOD, dla szybko narastającego napięcia
zasilającego wartość SUT1..0 powinna być rowna "01" a dla wolno narastającego zasilania SUT1..0 = "10"
Dzielenie częstotliwości zegara
Za dzielenie częstotliwości zegara przez 8 odpowiada bit CKDIV8, jest on najczęstsza przyczyna problemow z
działaniem mikrokontrolera. Dzielenie jest aktywne jeśli CKDIV8 = "0"
ATMEGA 8
Ustawienia fabryczne
Domyślnym (fabrycznym) ustawieniem mikrokontrolera ATMEGA 8 są bity CKSEL3..0 = "0001" oraz SUT = "10".
Oznacza to Ŝe fabryczny mikrokontroler, przed zmianą jakichkolwiek "Fusow" pracuje na wewnętrznym oscylatorze RC
z najdłuŜszym czasem startu i taktowaniem 1MHz.
Zewnętrzny Rezonator Kwarcowy 0,9 8MHz
W tej wersji ustawień, gdy bit CKOPT= "1" zmniejszony jest pobór prądu przez mikrokontroler ale jednocześnie
ograniczona została maksymalna częstotliwośc pracy. Dla zewnętrznego rezonatora kwarcowego musimy przestawić bity
CKSEL3..1 w zaleŜności od jego częstotliwości. Dla częstotliwości 0,93MHz bity CKSEL3..1 powinny mieć wartość
"110", natomiast dla 38MHz powinno być CKSEL3..1 = "111"
W drugim kroku zajmujemy się ustawieniem bitu CKSEL0 i SUT1..0 ktore razem odpowiadają za czas powrotu
mikrokontrolera do normalnej pracy po resecie lub trybie PowerDown itp. Najczęściej stosowane są trzy tryby.
Pierwszy, wymagany gdy układ BOD jest aktywny uzyskamy dzięki ustawieniu CKSEL0 = "1" i SUT1..0 = "01". Drugi
tryb stosowany jest gdy napięcie zasilające szybko narasta, jest realizowany przez ustawienie CKSEL0 = "1" i SUT1..0 =
"10". Trzeci natomiast uruchamiamy stawiając CKSEL0 = "1" i SUT1..0 = "11", jest stosowany gdy napięcie zasilające
powoli narasta.
Zewnętrzny Rezonator Kwarcowy 1 16MHz
W tej wersji ustawień, gdy bit CKOPT= "0" maksymalna częstotliwośc pracy wynosi 16MHz. Dla zewnętrznego
rezonatora kwarcowego musimy przestawić bity CKSEL3..1 w zaleŜności od jego częstotliwości. Dla częstotliwości 0,9
3MHz bity CKSEL3..1 powinny mieć wartość "110", natomiast dla 316MHz powinno być CKSEL3..1 = "111"
W drugim kroku zajmujemy się ustawieniem bitu CKSEL0 i SUT1..0 ktore razem odpowiadają za czas powrotu
mikrokontrolera do normalnej pracy po resecie lub trybie PowerDown itp. Najczęściej stosowane są trzy tryby.
Pierwszy, wymagany gdy układ BOD jest aktywny uzyskamy dzięki ustawieniu CKSEL0 = "1" i SUT1..0 = "01". Drugi
tryb stosowany jest gdy napięcie zasilające szybko narasta, jest realizowany przez ustawienie CKSEL0 = "1" i SUT1..0 =
"10". Trzeci natomiast uruchamiamy stawiając CKSEL0 = "1" i SUT1..0 = "11", jest stosowany gdy napięcie zasilające
powoli narasta.
Wewnętrzny oscylator 1 8MHz
Dla wewnętrznego oscylatora RC musimy przestawić bity CKSEL3..0 w zaleŜności od częstotliwości jaką chcemy
uzyskać. Dla 1MHz jest to CKSEL3..0="0001", dla 2MHz naleŜy ustawić CKSEL3..0="0010", dla 4MHz ustawiamy
CKSEL3..0="0011", natomiast dla 8MHz wymagana wartość to CKSEL3..0="0100".
W drugim kroku zajmujemy się ustawieniem bitów SUT1..0 które odpowiadają za czas powrotu mikrokontrolera do
normalnej pracy po resecie lub trybie PowerDown itp. Najczęściej stosowane są trzy tryby. Pierwszy, wymagany gdy
układ BOD jest aktywny uzyskamy dzięki ustawieniu SUT1..0 = "00". Drugi tryb stosowany jest gdy napięcie zasilające
szybko narasta, jest realizowany przez ustawienie SUT1..0 = "01". Trzeci natomiast uruchamiamy stawiając SUT1..0 =
"10", jest stosowany gdy napięcie zasilające powoli narasta.
ATMEGA 16(32)
Ustawienia fabryczne
Domyślnym (fabrycznym) ustawieniem mikrokontrolera ATMEGA 16(32) są bity CKSEL3..0 = "0001" oraz SUT =
"10". Oznacza to Ŝe fabryczny mikrokontroler, przed zmianą jakichkolwiek "Fusow" pracuje na wewnętrznym
oscylatorze RC z najdłuŜszym czasem startu i taktowaniem 1MHz.
Zewnętrzny Rezonator Kwarcowy 0,9 8MHz
W tej wersji ustawień, gdy bit CKOPT= "1" zmniejszony jest pobór prądu przez mikrokontroler ale jednocześnie
ograniczona została maksymalna częstotliwośc pracy. Dla zewnętrznego rezonatora kwarcowego musimy przestawić bity
CKSEL3..1 w zaleŜności od jego częstotliwości. Dla częstotliwości 0,93MHz bity CKSEL3..1 powinny mieć wartość
"110", natomiast dla 38MHz powinno być CKSEL3..1 = "111"
W drugim kroku zajmujemy się ustawieniem bitu CKSEL0 i SUT1..0 ktore razem odpowiadają za czas powrotu
mikrokontrolera do normalnej pracy po resecie lub trybie PowerDown itp. Najczęściej stosowane są trzy tryby.
Pierwszy, wymagany gdy układ BOD jest aktywny uzyskamy dzięki ustawieniu CKSEL0 = "1" i SUT1..0 = "01". Drugi
tryb stosowany jest gdy napięcie zasilające szybko narasta, jest realizowany przez ustawienie CKSEL0 = "1" i SUT1..0 =
"10". Trzeci natomiast uruchamiamy stawiając CKSEL0 = "1" i SUT1..0 = "11", jest stosowany gdy napięcie zasilające
powoli narasta.
Zewnętrzny Rezonator Kwarcowy 1 16MHz
W tej wersji ustawień, gdy bit CKOPT= "0" maksymalna częstotliwośc pracy wynosi 16MHz. Dla zewnętrznego
rezonatora kwarcowego musimy przestawić bity CKSEL3..1 w zaleŜności od jego częstotliwości. Dla częstotliwości 0,9
3MHz bity CKSEL3..1 powinny mieć wartość "110", natomiast dla 316MHz powinno być CKSEL3..1 = "111"
W drugim kroku zajmujemy się ustawieniem bitu CKSEL0 i SUT1..0 ktore razem odpowiadają za czas powrotu
mikrokontrolera do normalnej pracy po resecie lub trybie PowerDown itp. Najczęściej stosowane są trzy tryby.
Pierwszy, wymagany gdy układ BOD jest aktywny uzyskamy dzięki ustawieniu CKSEL0 = "1" i SUT1..0 = "01". Drugi
tryb stosowany jest gdy napięcie zasilające szybko narasta, jest realizowany przez ustawienie CKSEL0 = "1" i SUT1..0 =
"10". Trzeci natomiast uruchamiamy stawiając CKSEL0 = "1" i SUT1..0 = "11", jest stosowany gdy napięcie zasilające
powoli narasta .
Wewnętrzny oscylator 1 8MHz
Dla wewnętrznego oscylatora RC musimy przestawić bity CKSEL3..0 w zaleŜności od częstotliwości jaką chcemy
uzyskać. Dla 1MHz jest to CKSEL3..0="0001", dla 2MHz naleŜy ustawić CKSEL3..0="0010", dla 4MHz ustawiamy
CKSEL3..0="0011", natomiast dla 8MHz wymagana wartość to CKSEL3..0="0100".
W drugim kroku zajmujemy się ustawieniem bitów SUT1..0 które odpowiadają za czas powrotu mikrokontrolera do
normalnej pracy po resecie lub trybie PowerDown itp. Najczęściej stosowane są trzy tryby. Pierwszy, wymagany gdy
układ BOD jest aktywny uzyskamy dzięki ustawieniu SUT1..0 = "00". Drugi tryb stosowany jest gdy napięcie zasilające
szybko narasta, jest realizowany przez ustawienie SUT1..0 = "01". Trzeci natomiast uruchamiamy stawiając SUT1..0 =
"10", jest stosowany gdy napięcie zasilające powoli narasta.
Interfejs JTAG
JeŜeli bit JTAGEN="0" (zaprogramowany) wtedy piny PORTC.5 PORTC.2 stanowią wyjście interfejsu JTAG i są na
stałe podciągnięte do +VCC. Nie działaja one wtedy jako zwykłe piny (nie działa konfiguracja w programie ustawiająca
je w roli wejść lub wyjść) i będzie to z pewnością przyczyną problemów, gdy właśnie te wyprowadzenia zostaną uŜyte
jako wejścia lub wyjścia projektowanego systemu mikroprocesorowego. Aby wspomniane wyprowadzenia zachowywały
się jak pozostała część portu C konieczne jest wyłączenie interfejsu JTAG poprzez ustawienie JTAGEN="1"
ATMEGA 162
Ustawienia fabryczne
Domyślnym (fabrycznym) ustawieniem mikrokontrolera ATMEGA 162 są bity CKSEL3..0 = "0010", SUT1..0 = "10"
oraz CKDIV8 = "0". Oznacza to Ŝe fabryczny mikrokontroler, przed zmianą jakichkolwiek "Fusow" pracuje na
wewnętrznym oscylatorze RC z najdłuŜszym czasem startu i dzieleniem częstotliwości przez 8, co daje w efekcie
taktowanie 1MHz.
Zewnętrzny Rezonator Kwarcowy 0,9 16MHz
Gdy chcemy uŜywać zewnętrznego rezonatora kwarcowego to musimy przestawić bity CKSEL3..1 w zaleŜności od jego
częstotliwości. Dla częstotliwości 0,93MHz bity CKSEL3..1 powinny mieć wartość "101", dla 38MHz powinno być
CKSEL3..1 = "110" a dla częstotliwości większych od 8MHz bity CKSEL3..1 mają być ustawione na "111".
W drugim kroku zajmujemy się ustawieniem bitu CKSEL0 i SUT1..0 ktore razem odpowiadają za czas powrotu
mikrokontrolera do normalnej pracy po resecie lub trybie PowerDown itp. Najczęściej stosowane są trzy tryby.
Pierwszy, wymagany gdy układ BOD jest aktywny uzyskamy dzięki ustawieniu CKSEL0 = "1" i SUT1..0 = "01". Drugi
tryb stosowany jest gdy napięcie zasilające szybko narasta, jest realizowany przez ustawienie CKSEL0 = "1" i SUT1..0 =
"10". Trzeci natomiast uruchamiamy stawiając CKSEL0 = "1" i SUT1..0 = "11", jest stosowany gdy napięcie zasilające
powoli narasta.
Wewnętrzny oscylator 8MHz
Wewnętrzny oscylator o częstotliwości 8MHz uruchamiamy ustawiając bity CKSEL3..0 równe "0010". Czas powrotu
mikrokontrolera do normalnej pracy po resecie lub trybie PowerDown itp. ustawiamy bitami SUT1..0. Wartość SUT1..0
= "00" stosujemy gdy aktywny jest układ BOD, dla szybko narastającego napięcia zasilającego wartość SUT1..0 powinna
być rowna "01" a dla wolno narastającego zasilania SUT1..0 = "10"
Dzielenie częstotliwości zegara
Za dzielenie częstotliwości zegara przez 8 odpowiada bit CKDIV8, jest on najczęstsza przyczyna problemow z
działaniem mikrokontrolera. Dzielenie jest aktywne jeśli CKDIV8 = "0"
Interfejs JTAG
JeŜeli bit JTAGEN="0" (zaprogramowany) wtedy piny PORTC.7 PORTC.4 stanowią wyjście interfejsu JTAG i są na
stałe podciągnięte do +VCC. Nie działaja one wtedy jako zwykłe piny (nie działa konfiguracja w programie ustawiająca
je w roli wejść lub wyjść) i będzie to z pewnością przyczyną problemów, gdy właśnie te wyprowadzenia zostaną uŜyte
jako wejścia lub wyjścia projektowanego systemu mikroprocesorowego. Aby wspomniane wyprowadzenia zachowywały
się jak pozostała część portu C konieczne jest wyłączenie interfejsu JTAG poprzez ustawienie JTAGEN="1"
Zgłoś jeśli naruszono regulamin