You are on page 1of 6

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,9-3MHz bity CKSEL3..1 powinny mieć wartość "101",
dla 3-8MHz 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 Power-Down 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 Power-Down 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,9-3MHz bity CKSEL3..1 powinny mieć wartość
"110", natomiast dla 3-8MHz 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 Power-Down 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 3-16MHz 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 Power-Down 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 Power-Down 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,9-3MHz bity CKSEL3..1 powinny mieć wartość
"110", natomiast dla 3-8MHz 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 Power-Down 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 3-16MHz 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 Power-Down 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 Power-Down 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,9-3MHz bity CKSEL3..1 powinny mieć wartość "101", dla 3-8MHz 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 Power-Down 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 Power-Down 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"
ATTiny 13

Ustawienia fabryczne

Domyślnym (fabrycznym) ustawieniem mikrokontrolera ATtiny 13 są bity CKSEL1..0 = "10", 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.

Wewnętrzny oscylator 4,8/9,6MHz

Wewnętrzny oscylator o częstotliwości 4,8MHz uruchamiamy ustawiając bity CKSEL1..0 ="01" , dla częstotliwości
9,6MHz zgodnie z kartą katalogową powinno to być CKSEL1..0 ="10". Czas powrotu mikrokontrolera do normalnej
pracy po resecie lub trybie Power-Down 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"

Wewnętrzny oscylator 128kHz

Wewnętrzny oscylator o częstotliwości 128kHz uruchamiamy ustawiając bity CKSEL1..0 ="11". Czas powrotu
mikrokontrolera do normalnej pracy po resecie lub trybie Power-Down 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"

You might also like