Atmega128 퓨즈 비트구성
ATmega128의 기본적인 설정용으로 사용되며 Extended Fuse, Fuse High, Fuse Low바이트로 모두 3개의바이트로 구성되어 있다.
주의 할점은 기본 비트값이 1로 되어 있고 프로그램하면 0으로 설정되고 chip erase명령에 의해 영향을 받지 않으므로 메모리 Lock비트의 LB1을 0으로 하여 퓨즈 비트를 변경할 수 없도록 할 수 있다.
퓨즈 비트를 먼저 설정하고 메모리 Lock비트를 설정해야 한다.
1) Extended Fuse Byte
비트1~0만 사용하여 ATnega103과 호환모드의 설정, Watchdog 타이머 동작의 설정에 사용한다.
- BIT1(M103C) :
기본 0으로 설정되어 ATmega13과 호환모드로 되어 있다. 1로 프로그램하면 노말모드로 ATmega128의 고유기능을 전부 활용할 수 있다.
- BIT0(WDTON: WatchDog Timer ON) :
기본 1로 설정되어 워치독 타이머 기능이 동작하도록 한다.
Normal Mode는 ATmega128의 기능을 모두 사용하는 모드로 4096Bytes의 내부SRAM을 모두 사용할 수 있다.
ATmega103호환모드에선 기능을 모두 사용할 수 없고 내부SRAM도 4000Bytes로 모두 사용하지 못 한다.
2) Fuse High Byte
- BIT7 : 기본 1로 설정되어 있으며 On chip debug를 허용한다.
- BIT6 : 기본 0로 설정되어 JTAG를 허용한다.
- BIT5: 기본 0로 설정되어 SPI를 통한 직렬 프로그래밍을 허용한다.
- BIT4 : 기본1로 설정되어 클럭 옵션을 설정한다
- BIT3 : 기본 1로 설정되어 Chip Erase할 때 EEPROM의 내용을 보호한다.
- BIT2~1: 부트 사이즈를 선택하는 데 사용한다
- BIT0: Reset vector의 선택에 사용한다. 기본 1로 설정되어 0x0000번지를 리셋 주소로 하고 0이면 BIT2~1의 설정을 적용한다.
3) Fuse Low Byte
- BIT7: 기본 1로 설정되어 Brown Out Detector의 기능을 레벨값에 따라 트리거되도록 설정한다.
- BIT6: 기본 1로 설정되어 Brown Out Detector의 기능을 허용한다.
- BIT5~4: Start up 시간을 설정한다(1.6~7절 참조). 기본 상태로는 10의 값을 갖는다.
- BIT3~0(CKSEL3~0) : 클럭 소스를 설정한다. 기본 0001의 값을 갖고 있어 디폴트
상태로는 1MHz의 내부 RC발진기를 통한 클록을 사용하도록 설정되어 있다.
공장초기 상태에서 Atmega128을 처음 프로그램 할 경우 상기에 나와 있는 퓨즈비트 설정을 참고하여 하드웨어 구성에 맞게 설정을 하는 것이 반드시 필요하다.
필자의 경험상 M103C는 Disable로 놓았다.
JTAGEN는 항상 Enable로 놓았다.
CKSEL은 하드웨어에서 설정한 크리스탈로 맞추어 설정 하였다.
EESAVE는 EEPROM을 쓰는 경우라면 Enable로 설정하였다.
댓글