E N D
AVR Studio 소개 1. AVR Studio의 다운로드 AVR Studio 는 Atmel사의 8bit MCU 인 AVR 용의 통합 개발 환경 툴(Integrated Development Environment (IDE) tool) 이며 프로그램 내부에 어셈블러, 시뮬레이터, 에뮬레이터를 사용한 디버거, AVR 용 개발 툴 용 소프트웨어가 포함되어 있다. AVR Studio 는 3.5x 버전과 4.0x 의 두 가지 버전이 있으며, 개별적으로 설치가 가능하고 Windows95/98/ME/2000/XP 에서 사용 할 수 있다. AVR Studio 3.x 버전은 AVR 초기부터 업그레이드 되어 온 버전으로 현재는 3.56 버전이 가장 최신 버전이며, AVR Studio 4.0x 버전은 3.5x 버전과 호환성은 유지하지만 3.5x 버전의 업그레이드 버전은 아니며 최근에 새로 개발된 새로운 버전이다. 만약 한가지 버전의 AVR Studio 를 사용하고자 한다면, 90S 시리즈 사용자는 3.5x 버전을, 최근에 나온 디바이스를 사용한다면 4.0x 버전을 사용하기 바란다. 두 가지 버전이 개별적으로 설치가 가능하므로 무리가 없다면 두개의 Studio를 설치하여 사용하는 것도 좋다고 본다. AVR Studio는 Atmel 홈페이지의 http://www.atmel.com/products/avr/에 서 Tools & Software에 서 다운 받을 수 있다. 여기에서는 최근 디바이스가 포함된 AVR Studio 4.0x 버전을 사용한 디버깅과 툴 사용법을 소개 하고자 한다. ※ AVR Studio4.0x 버전 설치시에 설치 폴더를 임의로 바꿀 경우 설치한 후에 제대로 동작이 안 될 수가 있습니다. 특히 XP 사용자일 경우 기본 설치 폴더에 설치해 주시기 바랍니다. - AVR Studio 관련 홈페이지 - • Atmel 홈페이지 : http://www.atmel.com • ㈜프로차일드 : http://www.prochild.com • AVR Freaks : http://www.avrfreaks.net
AVR Studio의 실행 1. AVR Studio의 실행 AVR Studio 를 처음 실행시키면 아래와 같은 창이 뜨게 된다. 이 중에서 가운데에 있는 창은 Project Wizard창으로 최근에 작업한 어셈블러 프로젝트나 디버깅 프로젝트의 리스트를 보여 줌으로써 빠른 작업을 가능케 도와준다. 이 창은 매번 AVR Studio를 실행 할 때마다 뜨게 되므로 이것이 귀찮을 경우 왼쪽 하단의 Show this dialog on open 의 체크 박스를 지워주면 된다. 새로운 어셈블러 프로젝트를 만든다 Project Wizard 윈도우 리스트에 없는 디버깅 프로젝트를 열때 사용한다. 지금은 새로운 어셈블러 프로젝트를 만들어서 사용할 것이므로 일단은 을 눌러 창을 종료 시킨다. 만약 C 로 작성된 파일을 가지고 디버깅을 하고자 한다면 10 Page 에 있는 AVR 디버깅을 참고 하시오.
AVR 어셈블러 2. 새 어셈블러 프로젝트 만들기 Project -> New Project를 누르면 아래와 같은 창이 뜨게 된다. Project Type 은 Atmel AVR Assembler 로 고정되어 있다. Project Name : 만들고자 하는 프로젝트 이름을 적는다. Create Initial file : 새로운 프로젝트를 만들 때 프로젝트 이름과 동일한 ASM 파일을 만든다. 만약 기존에 있는 ASM 파일을 사용하고자 한다면 체크하지 않는다. 기본적으로 체크되어 있다. Create Folder : Location에 서 지정한 폴더에 프로젝트 이름과 동일한 폴더를 만든다. 만약 Location에 서 지정한 폴더에 프로젝트를 생성하고자 할 경우 체크하지 않는다. 기본적으로 체크되어 있지 않다. Location : 프로젝트 파일이 위치할 폴더를 선택한다. 되도록 이면 ASM 파일이 있는 폴더에 프로젝트를 만든다.
AVR 어셈블러 새로운 프로젝트를 만들고 새로운 ASM 파일을 작성해야 하므로, Location에 프로젝트를 만들 폴더를 선택하고, 적당한 프로젝트 이름을 적고, Create Initial File에 있는 체크를 지우고, Next를 누른다. 사용하려는 에뮬레이터나 시뮬레이터를 선택한다. 사용하려는 디바이스를 선택한다. 에뮬레이터가 있는 경우: 해당 에뮬레이터의 종류를 선택하고 사용하고자 하는 Device를 선택한다. (예: JTAG ICE가 연결되어 있는 경우 JTAG ICE를 선택한다.) 그 외의 경우: AVR Simulator를 선택하고 사용하고자 하는 Device를 선택한다. 이 경우 시뮬레이터로 동작한다. ※ 만약 Device 창에 ATmega128 하나 밖에 안 뜬다면 AVR Studio를 다시 설치 하여야 한다. 제어판에서 프로그램 추가/삭제에서 AVR Studio4 를 선택하여 제거한 후에 디폴트 폴더에 다시 설치하여야 한다.
AVR 어셈블러 4. 새로운 어셈 파일 만들기 File -> New File을 눌러 새로운 파일을 생성하고, File -> Save file as…를 눌러 확장자가 asm인 어셈 파일로 저장한다. 이때 가급적이면 해당 어셈블러 프로젝트 파일이 있는 폴더에 어셈파일을 저장하도록 한다. 만약 어셈블러 프로젝트 파일과 해당 어셈 파일이 서로 다른 폴더에 있을 경우 hex 파일은 프로젝트 파일이 있는 폴더에 생성된다. Ex) firstasm.asm 가급적이면 어셈블러 프로젝트가 있는 폴더에 어셈블러 파일을 저장한다. 확장자가 asm 인 어셈 파일로 저장한다.
AVR 어셈블러 5. 프로젝트에 어셈블러 파일 등록 OR 메뉴의 Project -> Add existing File 선택 -> 어셈 파일 선택 Workspace -> Assembler -> 마우스 오른쪽 클릭 -> Add existing File 을 누르고 어셈 파일 선택 Workspace -> Project Name -> Assembler ->Assember file 이 등록이 된다.
AVR 어셈블러 6. 어셈 파일 작성하기 일단 다음과 같이 어셈 파일을 작성한 후 저장을 한다. 어셈블러 파일일 경우 약 1000 라인이 넘어가게 되면 사실상 디버깅이 굉장히 힘들어 지므로, 일정한 규칙을 가지고 소스를 작성 하여야 하며, 곳곳에 주석을 달아 어떤 목적으로 사용하였는지 설명해 놓는 것이 좋다. 어셈블러의 경우 일반적으로 TAB 사이즈를 8 로 사용하며 C 의 경우 4를 사용하는데, 특별한 규칙이 있다기 보다는 TAB을 사용하여 띄여쓰기를 할 경우 보기 좋게 하기 위함이다. 소스의 알고리즘이나 내용도 중요하지만 일단은 “ 보기 좋은 소스가 잘 짠 소스이다”
AVR 어셈블러 7. 기본 설정 및 컴파일 소스의 내용은 PORTB에 1 과 0을 반복해서 출력하는 것이다. 일단 소스가 작성 되었으면 AVR Studio 가 설치된 폴더에서 AvrAssembler 폴더-> appnotes 폴더를 찾은 후 그 폴더에서 사용 디바이스의 include 파일을 프로젝트가 있는 폴더로 복사 한다. 기본 설치 폴더는 Program Files -> ATMEL ->AVR Tools 이다. Program Files -> ATMEL -> AVR Tools -> AvrAssembler -> Appnotes m16def.inc, 8535def.inc, t16def.inc …. 예) ATmega16 을 사용하므로 m16def.inc 파일을 복사하여 어셈블러 프로젝트가 있는 폴더에 복사한다. Build(F7) 준비가 되었으면 메뉴 툴바에서Build를 누르거나 메뉴에서Project -> Build를 누른다.
AVR 어셈블러 Start Debugging 컴파일에 에러가 없다면 툴바에 삼각형의 아이콘이 생겨나며 이것을 누르면 Debug 플랫폼에서 설정한 값으로 디버깅을 시작한다. (예, AVR Simurator, ATmega16 을 선택 하였다면 ATmega16 디바이스로 시뮬레이션을 하게 된다.
AVR 디버깅 8. 디버깅 AVR Studio에 서 작성된 어셈블러일 경우 자동으로 디버깅 모드로 들어갈 수 있지만 C로 작성된 파일이나, 기타 외부에서 Assembly된 파일일 경우 디버그 파일(오브젝트 파일)을 불러와서 디버깅 할 수 있다. File -> Open File…을 누르거나 (불러오기) 아이콘을 누른다. *.d90 : IAR C 컴파일러의 AVR 의 디버그 파일 포맷이다. *.cof : Common Object File 포맷 *.obj : 어셈블러 Object File 디버그 파일이 있는 폴더에서 확장자가 *.d90 *.cof *.obj 인 파일을 찾아서 열기 를 누른다.
AVR 디버깅 디버그 플랫폼 셀렉트 윈도우가 열리며, 사용하고자 하는 에뮬레이터와 디바이스를 선택한다. 사용하려는 에뮬레이터나 시뮬레이터를 선택한다. 사용하려는 디바이스를 선택한다. 에뮬레이터가 있는 경우: 해당 에뮬레이터의 종류를 선택하고 사용하고자 하는 Device를 선택한다. (예: JTAG ICE가 연결되어 있는 경우 JTAG ICE를 선택한다.) 그 외의 경우: AVR Simulator를 선택하고 사용하고자 하는 Device를 선택한다. 이 경우 시뮬레이터로 동작한다. ※ 만약 Device 창에 ATmega128 하나 밖에 안 뜬다면 AVR Studio를 다시 설치 하여야 한다. 제어판에서 프로그램 추가/삭제에서 AVR Studio4 를 선택하여 제거한 후에 디폴트 폴더에 다시 설치하여야 한다.
AVR 디버깅 선택한 파일에 이상이 없다면 Workspace 와 Source windows 가 뜨며, AVR Studio 는 디버거로서 동작하게 된다. Workspace I/O 나 Clock 등을 확인할 수 있다. Source Windows 현재 디버깅 하고 있는 파일의 소스를 보여주며 현재 프로그램 카운터가 위치하고 있는 곳을 가리킨다.
AVR 디버깅 이때의 툴바의 아이콘들의 구성은 다음과 같다. Debug 플랫폼에서 설정한 상황으로 디버깅을 시작한다. 디버깅을 멈춤다. 타겟을 Reset 한다. 이때 C 소스라면 Main 함수의 첫번째 라인에, 어셈 소스일 경우 0번지에 커서가 위치한다. 타겟을 Run 시킨다. Break Point가 있을 경우 브레이크 포인트에서 멈추게 되며 소스상에 에러가 없을 경우 완전 동작을 하게 된다. 타겟이 Run 상태일 때 동작을 멈추게 한다. C 나 어셈일 경우 커서가 위치한 라인의 명령을 한 개 수행한다. 만약 명령어가 아닌 함수나 서브루틴 Call 일 경우 함수나 서브루틴으로 들어가게 된다. 수행하고 있는 함수나 서브루틴을 마저 다 실행하고 나온다. 현재 위치(현재의 프로그램카운터) 에서 부터 커서가 있는 위치 까지만 실행을 한다. 중간에 Break Point가 있을 경우 Break Point에서 멈춘다.
AVR 디버깅 C 나 어셈 일 경우 커서가 위치한 라인의 명령을 한 개 수행한다. 만약 명령어가 아닌 함수나 서브루틴 Call 일 경우 함수나 서브루틴을 수행하고 나온다. 순차적으로 명령어들을 자동으로 실행한다. 현재의 프로그램 카운터의 위치를 나타낸다. Break Point 를 Set 하거나 Clear 시킨다. 명령어를 실행하다가 Break Point를 만나면 멈추게 된다. JTAG ICE의 경우 Break Point는 4개 까지만 설정 할 수 있다. 모든 Break Point 를 클리어 시킨다. 변수명을 더블 클릭으로 설정한 후 Quick watch 를 누르면 팝업창이 뜨며 선택한 변수의 값을 보여준다. Watch view 창을 활성화, 비 활성화 시킨다. Watch view 창은 모든 선언된 변수나 상수를 확인할 수 있다. Memory view 창을 활성화, 비 활성화 시킨다. Memory view 창에선 AVR의 모든 내부 및 외부 메모리를 확인할 수 있다.(Ex, Flash, SRAM, EEPROM, I/O, REGISTER ) 프로그램 소스를 Disassembly 된 코드로 보여준다. 소스가 C 일 경우 PC(Program Counter)와 OP code, 어셈블러로 번역된 소스를 보여주고 어셈블러일 경우 PC와 OP code 를 보여준다.
AVR 디버깅 소스창에서 원하는 위치에 커서를 가져간 후 마우스 오른쪽 버튼을 누르면 다음과 같은 팝업 창이 나온다. 이 중에서, 잘 쓰는 것들을 보면, Add to watch : 마우스가 가리키고 있는 위치의 변수를 Watch 윈도우에 등록시킨다. Toggle break : 마우스가 가리키고 있는 위치에 브레이크 포인트를 Set 하거나 Clear 시킨다. Run to cursor : 마우스가 가리키고 있는 위치까지 Run 하고 그 위치가 되면 멈춘다. 물론 이럴 경우 그 위치까지 실행이 되지 않는다면 멈추지 않고 실행이 된다. 등이 있다. 이런 부분들은 세세하기 설명하기 힘드므로, 한번씩 해 보고 익숙해 져야 한다.
AVR Tools 9. AVR Tools AVR Studio에서는 기본적으로 Atmel 에서 AVR 용으로 나온 모든 에뮬레이터와 스타터 킷, ISP 를 지원한다. AVR Prog : AVR Appnote AVR 901: In-System Programming 에 있는 어셈 파일을 지원하는 PC 프로그램이며, AVR109 Self-programming 에서도 AVR Prog를 사용해서 다운로드 한다. STK500, JTAG, AVR ISP 등에서 펌웨어를 수동으로 업그레이드 할 때에도 사용한다. ICE50 Upgrade : ICE40, ICE50 에뮬레이터의 펌웨어를 업그레이드 할 때 사용한다. ICE50 Selftest : ICE40, ICE50 의 자기진단 테스트에서 사용한다. STK500/AVRISP/JTAG ICE : STK500, AVR ISP, JTAG ICE 를 사용하여 타겟 디바이스를 Programming 할 때에 사용한다.
STK500/AVR ISP/JTAG ICE Atmel 사에서 나온 Tool 중에서 STK500, AVR ISP, JTAG ICE등은 디바이스를 라이팅 할 수 있는 ISP 기능을 가지 고 있다. 인터넷에 있는 PC의 프린터 포트를 사용하는 케이블은(KANDA STK200/300 케이블) AVR Studio 에선 지원하지 않으므로 주의 하여야 한다. STK500 AVR ISP JTAG ICE 이 기능을 사용하기 위해서는 메뉴 아이콘 중 을 누르거나, Tools -> STK500/AVRISP/JTAG ICE에서 역시 STK500/AVRISP/JTAG ICE 을 선택해 주면 된다.
STK500/AVR ISP/JTAG ICE Device : 라이팅을 할 디바이스를 선택한다. Erase Device : 디바이스의 메모리를 지운다. Programming mode : ISP : 6 Pin 혹은 10 Pin 케이블을 사용하는 ISP 모드이다. MOSI, MISO, SCK, RESET, VCC, GND 를 연결해서 라이팅 하게 된다. Parallel/High Voltage Serial : Reset 에 12V 를 사용해서 라이팅 하는 모드이다. 일반적인 방법이 아니므로 설명은 STK500의 User Guide를 참고하기 바란다. Erase Device Before Programming : 디바이스를 라이팅 하기 전에 FLASH 와 EEPROM 을 지운다. Verify Device After Programming : 디바이스를 라이팅 한 후에 Verify 동작을 수행한다. 만약 장비가 연결되어 있다면 Detectiong..STK500 found on COM 1:등과 같이 연결된 장비명과 시리얼 포트 명이 나오게 된다. 만약 AVR ISP 나 JTAG ICE 가 연결되어 있다면 STK500 이라고 써 있는 부분에 연결된 장비명이 나온다. 만약 Detecting.. FAILED!라고 나온다면 장비와 연결이 되지 않은 것이므로 PC의 시리얼 포트를 확인해 보거나, 장비의 전원을 확인해 보아야 한다.
STK500/AVR ISP/JTAG ICE Input HEX File : Flash 에 라이팅 하기 위한 *.hex, *.a90 파일을 선택한다. Program : Flash 에 선택한 Hex 파일을 라이팅 한다. Read : Device의 Flash 를 읽어서 파일로 저장한다. Input HEX File : EEOROM 에 라이팅 하기 위한 *.hex, *.a90,*.eep 파일을 선택한다. Program : EEPROM 에 선택한 Hex 파일을 라이팅 한다. Read : Device의 EEPROM 를 읽어서 파일로 저장한다. *.hex : Intel Hex File Format *.a90 : IAR Compiler 에서 생성되는 Intel Hex Format *.eep : AVR 어셈블러에서 생성되는 eeprom 용 hex 파일 ※ Atmel 에서 나온 AVR 장비들은 모두 인텍 헥사 파일 포맷을 사용하므로 AVRGCC 등의 컴파일러에서 출력파일 포맷을 Intel Hex 로 선택하여야 한다.
STK500/AVR ISP/JTAG ICE Fuse 메뉴에서는 디바이스의 동작 환경을 설정할 Fuse bit 를 설정 할 수 있다. 90S 시리즈 와 Mega 시리즈의 Fuse 비트에 상당한 차이가 있으므로 주의 하여야 한다. 디바이스와의 연결이 이상이 없다면 상태창에 현재 디바이스에 설정된 Fuse Bit 값을 읽어오게 된다. Fuse 비트는 한번 라이팅 하면 지워지지 않고 유지 되므로, 다시 설정해 줄 필요는 없지만, 처음에 잘 못 설정되면 ISP로 프로그램 모드로 들어가지 않으므로 주의 하여야 한다.
STK500/AVR ISP/JTAG ICE Fuse Bit의 개별적 설명 (ATmega128 기준) ㅁ ATmega103 Compatibility Model[M103C=0] 기본적으로 체크되어 있으며 ATmega 128 로 사용하고자 할 적엔 체크하지 않는다. 이것은 Mega128이 Mega103의 후속 모델로 나왔기 때문이며, Mega162, Mega8515, Mega8535 등은 각각 161,8515, 8535와 호환 모드를 갖는다. ㅁ Watchdog Timer always on; [WDTON=0] 워치독 타이머를 하드웨어적으로 ON 시킨다. ㅁ On-Chip Debug Enabled; [OCDEN=0] JTAG을 사용한 Debug를 Enable 한다. 체크하지 않는다. ㅁ JTAG Interface Enabled; [JTAGEN=0] JTAG 을 사용해 Debug 나 Writing 을 할 때 체크 한다. JTAG ICE을 사용하지 않는다면 체크하지 않는다. ㅁ Serial program downloading (SPI) enabled; [SPIEN=0] ISP 기능을 사용할 때 체크 한다. 기본적으로 체크되어 있으며, 이 비트가 지워질 경우 ISP로 라이팅이 되지 않으므로 주의 하여야 한다.
STK500/AVR ISP/JTAG ICE ㅁ Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] Device 의 메모리를 Erase 할 때 EEPROM 을 지우지 않는다. Device 를 Erase 할 때에 Flash 와 EEPROM 을 모두 지우므로, EEPROM에 저장되어 있는 데이터를 보존하고 싶을 때 사용한다. 단, Program은 가능하다. ㅁ Boot Flash section size=512 words Boot start address=$FE00; [BOOTSZ=11] …ㅁ Boot Reset vector Enabled (default address=$0000); [BOOTRST=0] Self Programming 을 사용할 때 Boot Loader 가 들어갈 Flash 메모리의 크기와 리셋 번지를 설정한다. 만약, Self Programming 을 사용하지 않는다면 Boot Flash section의 크기는 어느 것이든 상관 없으며 Boot Reset vector Enable 에는 체크하지 않는다. ㅁ Brown-out detection level an VCC=4.0V; [BODLEVEL=0] ㅁ Brown-out detection level an VCC=2.7V; [BODLEVEL=1] default value ㅁ Brown-out detection enabled; [BODEN=0] Brown-out detection 기능을 사용할때 체크한다. Brown-out detection 기능은 VCC가 위에 설정된 레벨 이하로 떨어질 경우 시스템적으로 Reset을 해 주는 기능이다. Brown-out detection enableed 를 체크하지 않으면 레벨은 상관이 없다. ㅁ CKOPT fuse(operation dependent of CKSEL fuses); [CKOPT=0] Clock의 Swing 레벨을 Small 에서 Full Swing 하게 한다. Ext. Crystal/Resonator 를 사용할때 8MHz 보다 클 경우 반드시 체크해 주어야 하며, XTAL2 로 다른 디바이스에 클럭을 주고자 할 때에도 사용한다.
STK500/AVR ISP/JTAG ICE ㅁ Ext. Clock; Start-up time: 6 CK + 0 ms; [CKSEL=0000 SUT=00]… XTAL1 핀으로 외부에서 클럭을 공급 받을 때 사용한다. Oscillator 를 사용할 때 사용한다. 만약 XTAL/Resonator 사용 시 실수로 이 클럭 옵션을 선택하게 되면 발진을 하지 않아 ISP 기능을 사용할 수 없다. 이럴 경우 Oscillator를 연결 하거나, 펑션 제너레이터로 XTAL1 에 클럭을 공급해 주면서 ISP로 클럭 옵션을 바꿔 주어야 한다. ㅁ Int. RC Osc. 1 MHz; Start-up time: 6 CK + 0 ms; [CKSEL=0001 SUT=00] … ㅁ Int. RC Osc. 2 MHz; Start-up time: 6 CK + 0 ms; [CKSEL=0010 SUT=00] … ㅁ Int. RC Osc. 4 MHz; Start-up time: 6 CK + 0 ms; [CKSEL=0011 SUT=00]… ㅁ Int. RC Osc. 8 MHz; Start-up time: 6 CK + 0 ms; [CKSEL=0100 SUT=00] … 내부 RC 발진기를 사용할때 체크한다. 1~8MHz 까지 선택할 수 있으며, 1MHz 를 제외한 2,4,8 MHz 일 경우, 외부 롬라이터에서 Calibration Byte 를 읽어서 OSCCAL 레지스터에 써 넣어 주어야 한다. ㅁ Ext. RC Osc. - 0.9 MHz; Start-up time: 18CK + 0 ms; [CKSEL=0101 SUT=00] …ㅁ Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 18CK + 0 ms; [CKSEL=0110 SUT=00] … ㅁ Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 18CK + 0 ms; [CKSEL=0111 SUT=00] … ㅁ Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18CK + 0 ms; [CKSEL=1000 SUT=00] … 외부 RC 발진기를 사용할때 체크한다.
STK500/AVR ISP/JTAG ICE ㅁ Ext. Low-Freq. Crystal; Start-up tie : 1K CK + 4 ms; [CKSEL= 1001 SUT=00] … 32.768KHz 의 시계 클럭을 사용할 시 사용한다. ㅁ Ext. RC Osc. - 0.9 MHz; Start-up time: 18CK + 0 ms; [CKSEL=0101 SUT=00] …ㅁ Ext. RC Osc. 0.9 MHz - 3.0 MHz; Start-up time: 18CK + 0 ms; [CKSEL=0110 SUT=00] … ㅁ Ext. RC Osc. 3.0 MHz - 8.0 MHz; Start-up time: 18CK + 0 ms; [CKSEL=0111 SUT=00] … ㅁ Ext. RC Osc. 8.0 MHz - 12.0 MHz; Start-up time: 18CK + 0 ms; [CKSEL=1000 SUT=00] … 외부 RC 발진기를 사용할때 체크한다. ㅁ Ext. Crystal/Resonator Low Freq.; Start-up time: 258 CK + 4 ms; [CKSEL= 1010 SUT=00] … 외부 Crystal 이나 Resonator 를 사용할때 사용한다 (Clock Freq : 9 ~ 16MHz) ※ Start-up time : ?? CK + ?? ms 는 시스템이 Reset 되었을 경우 다시 On 되기까지의 리셋 딜레이 이다. 각 클럭 옵션마다 SUT 값에 따라 각각 다른 리셋 딜레이가 있다. AVR Studio 에서는 클럭 옵션에 대한 설명이 나와 있지만 PonyProg2000 등과 같은 프로그램에선 이 부분에 대한 설명이 나와 있지 않으므로, 데이터쉬트에서 System Clock and Clock Options 부분을 잘 읽어 보고 선택해야 한다. 특히 해당 비트를 체크하면 “0” 이므로 이 부분을 주의 해야 한다.
기타사항 ※ 기타 AVR과 관련된 질문 사항은 프로차일드의 홈페이지인 www.prochild.com 의 Question 에 올려 주시면 최대한 답변해 드리겠습니다. 이 문서에 더 추가되거나 수정해야 할 사항이 있으면 wjhong@prochild.com 이나 ragon@prochild.com 으 로 연락 주시면 감사하겠습니다.