Fuse bit

퓨즈비트는 시스템의 설정을 하는 비트로 mega128 에서는 3바이트로  되어 있다.
클럭을 설정한다거나 워치독타이머를 허용한다거나. jtag 허용한다거나.. 부트로더 관련 설정을 한다거나.. 등등등의 역할 을 한다.

시중의 여러 책들을 보면 아주 잘 설명이 되어 있으므로 이번 글에서는 간단히 설정하는 법을 알아 보자.

우선.. mega128을 기준으로 한다.
퓨즈비트를 설정할때 가장 중요한 것은.. 클럭이다. 클럭설정을 잘 못하면..  아래와 같은 창이 뜨면서 인공호흡을 해야 하는 상황이 온다.

(연결이나 isp 에 아무 문제가 없는데 아래처럼 뜬다면 아주 귀찮다.)
 



퓨즈비트를 하나하나 보면.. 아래와 같다.
대부분 체크 해제 해 놓고 쓰면 된다.
단 클럭 설정은 꼭 제대로 해야 인식이 안되는 일을 피할 수 있다.

 

여기서 좀더 부연 설명을 하자면..
JTAG 을 사용한다면.. JTAGEN 을 체크 하면 된다.
단 한가지 알고 있어야 할것은 JTAGEN 을 체크 하면 JTAG 핀들은 io핀으로는 사용할 수 없다.
부트로더를 사용한다면 BOOTSZ와 BOOTRST 를 체크 해주자. 부트로더 안쓴다면 체크해제

CKOPT 는 발진회로의 증폭기 동작 모드를 정하는 것인데..
체크하게 되면 발진회로의 출력전압이 커져서 노이즈에 좀더 강해진다. 단 소비전력이 커진다. 잘 모르겠으면 체크해제 하자.

 BOD 설정은 (Brown Out Detector) 간단히 설명해서 리셋이 걸릴때의 전압을 설정 하는 것이다.
2.7V 와 4.0V 로 설정 가능하다
만약 2.7V로 설정하고 BODEN(BOD허용) 체크하면
시스템 전원이2.7V 이하로 떨어지면 리셋이 걸린다. 특별히 BOD 기능을 사용해야 하는 것이 아니면 체크해제 하자.

중요한 클럭 설정...
Int 로 시작하면 내부클럭
Ext 로 시작하면 외부클럭 이다.
초기값은 내부 1MHz 로 되어 있다.
외부에 크리스탈이나 오실레이터 등을 안달았다면..  빨간 박스 안의 부분에서 설정해 주자.
 
Start-up time 시스템 클럭이 안정되게 발생할 수 있도록 CPU 가 명령을 수행하기 전에 기다려주는 클럭이다. 그 다음에 시간은 리셋이 걸렸을때 추가되는 시간이다.
잘 모르겠으면 64ms 를 선택하자.

 

외부에 크리스탈을 달았다면.. Ext. Crystal/Resonator  에서 선택하면 되는데.. 

외부 클럭이
 
0.9Mhz 이하면 Low Freq 을
0.9Mhz~3Mhz 면 Medium 을 선택
3Mhz 이상이면 High 을 선택하고

레조네이터면 Start-up time: 1K CK 를 선택
크리스탈이면 Start-up time: 16K CK 를 선택
추가 지연 시간은 잘 모르겠으면 64ms 를 선택하자.

잘 모르겠으면 3Mhz 이상의 크리스탈을 달았다면 그냥 가장 아래에 있는 것을 고르시면 별 문제 없다.


참고로 아래와 같은 ISP 모드 에러창이 뜨는 상황과 해결책을 알아보자.  

1. ISP 핀 연결이 정확하게 되어 있지 않을때
선을 반대로 꼽았다던가.. 그러면 저런 에러가 뜬다. 
 >>선을 제대로 연결하자

2. AVR 의 ISP핀(SPI핀)들을 다른 디바이스와 공유할때  
ISP로 다운로드 해야 하는데.. 이 핀에 다른 디바이스(다른 IC 나 저항이나 등등등) 이 물려있다면.. 신호가 충돌해서 저런 에러가 뜰 수 있다. 
>> ISP 신호선은 다이렉트로 다른 디바이스로 가는 신호선들은 1K옴 정도의 직렬저항을 달아보자. 안되면 다른 포트로 옮기자.

3. ISP 주파수가  AVR의 시스템주파수(클럭)의 1/4 이상일때
>> 이상이라면 이하로 설정해 주면 됩니다. 컴파일러에서 설정해 주는 옵션이 있다. (230K 정도로 설정해서 해보자.)

4. 퓨즈비트가 잘못 설정 되어있을 때 
>> 인공호흡을 해서 퓨즈비트를 제대로 설정해 준다.