background image

 

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. 

 

 

 

 

 

 

background image

 

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" 

 

 

 

background image

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. 

background image

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" 

 

background image

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" 

 

 

background image

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"