본문 바로가기

AVR(ATmega128)로 장난하기

AVR(ATmaga128) 기초지식(5)_AVR ATmega128의 메모리(3)



1. 메모리 lock 비트


메모리의 보호를 위해 설정하는데 사용하는 1바이트 구조의 비트로 디폴트로 비트값이 1로 되어 있고 프로그램하면 0으로 설정되고 chip erase명령에 의해 1로 환원된다. 그림 10은 lock비트의 구성을 보여준다. 그리고 그림1은 lock비트 값에 따른 모드 설정값과 각 모드에 따른 메모리 보호기능을 보여준다.


그림1 Lock 비트의 구성

그림2 Lock 비트설정에 따른 기능


2. 퓨즈 비트


ATmega128의 기본적인 설정용으로 사용되며 Extended Fuse, Fuse High, Fuse Low바이트로 모두 3개의바이트로 구성되어 있다. 디폴트로 비트값이 1로 되어 있고 프로그램하면 0으로 설정되고 chip erase명령에 의해 영향을 받지 않으므로 메모리 Lock비트의 LB1을 0으로 하여 퓨즈 비트를 변경할 수 없도록 할 수 있다. 퓨즈 비

트를 먼저 설정하고 메모리 Lock비트를 설정해야 한다.

  

(1) Extended Fuse Byte


그림3 Extended Fuse Byte

  비트1~0만 사용하여 ATnega103과 호환모드의 설정, Watchdog 타이머 동작의 설정에 사용한다.


● BIT1(M103C) : 

디폴트 상태로는 0으로 설정되어 ATmega13과 호환모드로 되어 있다. 1로 프로그램하면 노말모드로 ATmega128의 고유기능을 전부 활용할 수 있다.

● BIT0(WDTON: WatchDog Timer ON) : 

디폴트 상태로는 1로 설정되어 워치독 타이머 기능이 동작하도록 한다.


(2) Fuse High Byte



● BIT7(OCDEN:On Chip Debug eNable) :디폴트 상태로는 1로 설정되어 On chip debug를 허용한다.

● BIT6(JTAGEN : JTAG ENable) : 

디폴트 상태로는 1로 설정되어 JTAG를 허용한다.

● BIT5(SPIEN : SPI Enable) : 

디폴트 상태로는 1로 설정되어 SPI를 통한 직렬 프로그래밍을 허용한다.

● BIT4(CKOPT) : 

클럭 옵션을 설정한다

● BIT3(EESAVE) : 

디폴트 상태로는 1로 설정되어 Chip Erase할 때 EEPROM의 내용을 보호한다.

● BIT2~1(BOOTSZ1~0) : 

부트 사이즈를 선택하는 데 사용한다(그림12 참조).

● BIT0(BOOTRST) : 

Reset vector의 선택에 사용한다. 디폴트 상태로는 1로 설정되어 0x0000번지를 리셋 주소로 하고 0이면 그림 12에 주어진 값을 리셋 주소로 사용한다.


(2) Fuse Low Byte



● BIT7(BODLEVEL) : 

디폴트 상태로는 1로 설정되어 Brown Out Detector의 기능을 레벨값에 따라 트리거되도록 설정한다.

● BIT6(BODEN: Brown Out Detector ENable) : 

디폴트 상태로는 1로 설정되어 Brown Out Detector의 기능을 허용한다.

● BIT5~4(SUT1~0) : 

Start up 시간을 설정한다(1.6~7절 참조). 디폴트 상태로는 10의 값을 갖는다.

● BIT3~0(CKSEL3~0) : 

클럭 소스를 설정한다(1.6절 참조). 디폴트 상태로는 0001의 값을 갖고 있어 디폴트

상태로는 1MHz의 내부 RC발진기를 통한 클록을 사용하도록 설정되어 있다.