본문스크랩 http://worynim.tistory.com/entry/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. 퓨즈비트가 잘못 설정 되어있을 때 
>> 인공호흡을 해서 퓨즈비트를 제대로 설정해 준다.

+ Recent posts