본문 바로가기

AVR/AVR 기초, info

AVR의 퓨즈비트란? 퓨즈비트 옵션 및 설정법 정리 - AVR 기초

퓨즈비트란?


퓨즈비트란 특정 기능을 하는회로에 전원을 공급하는 라인을 끊거나, 연결(퓨징)해서 클럭을 조정하거나, 클럭분주, 부가기능 일정 전압이하로 떨어지면 리셋되도록하는 것, ISP다운로더의 SPI 통신 기능 등을 설정 할 수 있는 컴퓨터에 비유하자면 바이오스 같은 것입니다.

설정을 잘못하게 되면 AVR이 동작하지 않거나, 고장 날 수 있으므로 꼭 자세히 알아보고 설정해야 하고 혹시 고장이 발생했다면 AVR 인공호흡 (강제로 클럭을 입력)시키는 방법을 사용해야 합니다.


퓨즈비트별 옵션


퓨즈비트 설정시에 굉장히 헛갈리는 부분이 있는데요. 그것은 바로

정논리로 퓨즈비트가 프로그래밍 된 상태가 비트1 안된 상태가 비트0 이 아니라...반대입니다.

퓨즈비트 프로그래밍에서프로그래밍 된 상태가 비트0 이고 안된 상태가 비트1 입니다.

헛갈리셔서 잘못 체크하면 AVR을 못쓸 수도 있으니 크게 주의하셔야 합니다.

그럼 실제 퓨즈비트 설정옵션을 볼 텐데요. 

AVR에 퓨즈비트 영역은 약 4가지 High Fuse Byte, Low Fuse Byte, Extanded Fuse Byte, Lock Fuse Byte가 있습니다.

본문의 퓨즈비트들은 Attiny2313 기준이고, 시리즈 별로 이름이나, 기능에 따라 다를수 있습니다.


 Low Fuse Byte


Bit

L_Fuse

CKDIV8 

CKOUT 

SUT1 

SUT0 

CKSEL3 

CKSEL2 

CKSEL1 

CKSEL0 


- CKDIV8 : 입력된 클럭을 내부에서 8분주 후에 이용합니다.

- CKOUT : 클럭을 AVR핀중 CKOUT기능이 있는 핀으로 출력합니다.

- SUT1, 0 : 각각 1, 0은 두 비트의 설정에 따라 변경되고, 옵션은 MCU가 동작하지 않다, 클럭입력후 명령을 수행할 수 있는 상황까지의 지연시간을 결정합니다.

- CKSEL 3, 2, 1, 0 : 각각 3, 2, 1, 0은 네 비트의 설정에 따라 변경되고, 옵션은 어떤 클럭을 동작 메인클럭으로 사용 할것인지 결정지어 줍니다. (설정 주의)


 클럭 선택 옵션

 CKSEL 3~0

 외부클럭으로 설정

 0000

 내부 RC 발진자 4Mhz 사용

 0010

 내부 RC 발진자 8Mhz 사용

 0100

 워치독 발진자 128Khz 사용 (주의 STK500으로 프로그래밍 안될 가능성)

 0110

 외부 크리스탈/세라믹 레조네이터 사용

 1000 ~ 1111

 예약 비트

 0001/0011/0101/0111


외부크리스탈을 사용할 경우에는 1000 ~ 1111까지 크리스탈 주파수에 따라 값이 결정되는데요. CKSEL 3, 2, 1은 주파수를 설정하고 CKSEL 0은 주파수 값과 상호관계에 있는 Start up time을 결정하게 됩니다.

 CKSEL 3~1

 주파수 범위 (Mhz)

 100

 0.4~0.9

 101

 0.9~3.0

 110

 3.0~8.0

 111

 8.0~


Start Up Time은 클럭에 따라서 결정되는 값이 달라집니다. 크리스탈의 경우에는 CKSEL 0번 비트와 상호관계로 시간이 결정되고, 외부클럭이나, RC 클럭에 따라서도 시간이 달라집니다.


- 크리스탈 사용시 Start Up Time -


CKSEL0

SUT 1, 0

파워다운 및 저장시 시동시간 

리셋시 추가 지연시간 

추천 용도

0

00

258 CK

14CK + 4.1 ms

세라믹 레조네이터,

빠른 상승에지 파워

0

01

258 CK

14CK + 65 ms

세라믹 레조네이터,

느린 상승에지 파워

0

10

1K CK

14CK

세라믹 레조네이터,

BOD 설정

0

11

1K CK

14CK + 4.1 ms

세라믹 레조네이터,

빠른 상승에지 파워 

1

00

1K CK

14CK + 65 ms

세라믹 레조네이터,

느린 상승에지 파워

1

01

16K CK

14CK

크리스탈 오실레이터,

BOD 설정 

1

10

16K CK

14CK + 4.1 ms

크리스탈 오실레이터,

빠른 상승에지 파워

1

11 

16K CK

14CK + 65 ms

크리스탈 오실레이터,

느린 상승에지 파워


- 외부클럭, RC클럭, 내부 워치독 128Khz 클럭 사용시 Start Up Time -


SUT 1, 0

파워다운 및 저장시 시동시간

리셋시 추가 지연시간

추천 용도

00

6 CK

14CK

BOD 사용 

01

6 CK

14CK + 4 ms

빠른 상승에지 파워 

10

6 CK

14CK + 64 ms

느린 상승에지 파워

11

예약 비트



 High Fuse Byte


Bit

H_Fuse

DWEN 

EESAVE

SPIEN

WDTON

BODLEVEL2

BODLEVEL1 

BODLEVEL0 

RSTDISBL


- DWEN : JTAG Debug Wire 기능 사용 여부 설정 (설정 주의)

- EESAVE : 칩 Erase시에 EEPROM에 저장된 내용을 보호합니다.

- SPIEN : SPI통신을 설정, ISP로 프로그래밍을 허용합니다. (디폴트 0, 변경불가능)

- WDTON : 워치독 타이머를 항상 ON합니다.

- BODLEVEL 2, 1, 0 : 아직 정확히 사용해 보지는 않았습니다만. 저전압 검출기능으로 설정된 전압 아래이면 내부리셋이 일어나는 퓨즈비트 입니다.


BODLEVEL 2, 1, 0 

최소 Vbot

평균 Vbot

최대 Vbot

단위

111

BOD 기능 사용하지 않음

110

 

1.8

 

V (볼트)

101

 

2.7

 

100

 

4.3

 


- RSTDISBL : AVR의 리셋을 금지시킵니다, ISP모드시 리셋을 해야 하는데 해제할 경우 프로그램 다운로드가 되지 않을 수 있습니다. (설정 주의)


 Extanded Fuse Byte


Bit

E_Fuse

N/A 

N/A

N/A

N/A

N/A

N/A 

N/A 

SELFPRGEN


- SELFPRGEN : 사용해보지는 않았지만, AVR시리즈 중에 TINY2313의 경우에는 부트섹터 영역이 존재하지 않아서 RS232등으로 프로그램 다운로드가 불가능 한데 그것을 가능하게 해주는 퓨즈비트 입니다.


 Lock Fuse Byte


Bit

E_Fuse

N/A 

N/A

N/A

N/A

N/A

N/A 

LB2

LB1


- LB2, 1 : 내부에 프로그래밍된 프로그램을 보호하기 위한 락 보호 퓨즈비트 입니다.


메모리 락 비트

보호 종류

LB Mode

LB2

LB1

 

1

1

1

메모리를 보호하지 않습니다.

2

0

플래시또는 퓨즈비트, EEPROM을 병렬모드나 SPI/JTAG 직렬모드로 프로그래밍하는 것을 금지시킵니다.

3

0

0

플래시또는 퓨즈비트, EEPROM을 병렬모드나 SPI/JTAG 직렬모드로 더 이상 프로그래밍하거나 프로그래밍 한것을 확인 하는 것도 금지시킵니다.



퓨즈비트 설정법



 CodeVisionAVR 에서 퓨즈비트 설정


CodeVisionAVR의 경우 프로그래머 창에서 위에 표에 맞게 필요한 부분에 퓨즈비트를 체크 Fuse Bit를 프로그램해주시면 됩니다.

예제로 내부RC 발진자 8Mhz를 설정해봤는데 이 값은 CKSEL3부터 CKSEL0 순으로  0100입니다.

따라서 0이 되어야 하는 부분인 CKSEL3, CKSEL1, CKSEL0을 체크하고 프로그래밍 해주시면 AVR은 내부 RC클럭을 메인 클럭으로 사용 하게 됩니다.





 AVR Studio 4 에서 퓨즈비트 설정


AVR Studio 에서의 퓨즈비트 설정은 좀더 간단한데요. 먼저 Main에서 사용하는 AVR 장치를 먼저 선택해줍니다. Read Signature를 누른후에 정상적으로 인식했다면..



상단에 Fuses를 눌러 퓨즈비트 설정창으로 넘어갈텐데요.

CodeVisionAVR에 비해 쉬운점은 클럭 옵션의 경우 SUT_CKSEL 에서 그냥 원하는 옵션을 눌러 선택해주시면 자동으로 해당 비트가 0또는 1로 설정되게 되고 Program만 눌러주시면 정상적으로 퓨즈비트가 설정되게 됩니다.



이외에도 AVR에 퓨즈비트 설정과 락비트 설정, 프로그램을 넣어주는 프로그램은 PonyProg, ToastProg, IAR컴파일러 등에 포함되어있는 것 등 다양하게 많으므로 본인이 사용하시기에 편한 것으로 골라 사용하시면 됩니다.^