4. 입출력 I/O

 

4.1 특징 및 기능

1) I/O PORT의 구성

- 8bit, 양방향, 범용, 병렬기능의 I/O 포트는 PORTA ~ F까지 6개가 존재 합니다.

- 5bit, 양방향, 범용, 병렬기능의 I/O 포트는 PORTG 1개가 존재 합니다.

 

2) I/O의 특징

- 입력 또는 출력 모드로 동작합니다.

- 최대 구동 전류는 약 40mA 입니다.

- 입력모드에서 내부 PULL-UP 을 설정 할 수 있습니다.

 

- DDRx 레지스터를 이용해 출력 또는 입력 설정이 가능합니다. (1 : 출력모드, 0 : 입력모드)

- PORTx 레지스터로 출력 모드 일때 출력 값으로 입력 모드 일때 PULLUP 기능으로 사용 합니다.

- PINx 레지스터로 I/O의 입력 상태를 확인합니다. 만약 입력 모드에서 PORTx레지스터가 0으로 선택 되어지면 PULLUP이 되지 않아 Tri-Status(Hi 인피던스) 상태가 됩니다.

- I/O 또는 특수(부가) 기능이 있어서 그 기능을 사용 할 때는 해당 모드로 동작 합니다.

 

 

3.ATmega128 기본 하드웨어

3.1 메모리 LOCK bit, FUSE bit

AVR은 FUSE 라는 특별한 기능이 있습니다. FUSE는 AVR자체의 H/W 적인 스펙을 설정하고 조작하는데 사용되어 집니다. 이 FUSE에 대해 간단한 설명을 하도록 하겠습니다.

-M103C : ATmega103 호환 모드로 선택 합니다.

-WDTON : 자동으로 WDTON이 실행될지 선택 합니다.

-OCDEN : OCD 사용 여부를 설정합니다.

-JTAGEN : JTAG 디버깅 사용 여부를 선택 합니다.

-SPIEN : ISP를 지원할지 선택 합니다.

-CKOPT : 발진레벨을 조절합니다.

-EESAVE : Erase 명령시 EEPROM을 안 지울 것인지 선택 합니다.

-BOOTSZ1,0: 부트 사이즈를 결정합니다.

-BOOTRST : Reset에 의해 BOOT영역으로 이동할지 선택 합니다.

-BODLEVEL : 전압레벨이 어느 이하로 떨어질 경우 Reset 할지 선택 합니다.

-BODEN : 전압레벨 확인을 할지 선택 합니다.

-SUT1,0 : START 할때의 시간을 선택 합니다.

-CKSEL 0,1,2,3 : 클럭 소스를 설정 합니다.

 

 

3.2 시스템 클럭

FUSE 선택에 의해 ATmega128은 다양한 클럭을 선택 할 수 있습니다. 간단하게 보면 아래와 같습니다.

클럭소스

CKSEL 3~0

External Crystal/Ceramic Resonator

1111~1010

External Low-frequency Crystal

1001

External RC Oscillator

8.0~12.0 MHz

1000

3.0~8.0 MHz

0111

0.9~3.0 MHz

0110

0.0~0.9 MHz

0101

Calibrated Internal RC Oscillator

8.0 MHz

0100

4.0 MHz

0011

2.0 MHz

0010

1.0 MHz

0001

External Clock

0000

CKOPT를 이용해 발진 레벨을 조절하여 발진레벨이 작아지도록 해서 소비전력을 적게 할 수도 있으며, 발진레벨을 크게 해서 발진의 외부 노이즈 영향을 적게 받도록 할 수 있습니다.

 

 

3.3 시스템 리셋

ATmega128은 여러가지 Reset 조건이 존재 합니다. 그 내용은 아래와 같습니다.

- Power on Reset : 전원 이 CPU가 안정하게 돌수 있는 전압 이하일 경우 RESET 을 하고 있습니다.

- Watchdog Reset : Watchdog 타이머의 지정된 주기이내에서 재설정을 안하는 경우 Reset 을 합니다.

( 프로그램이 안정하게 돌아가는지 확인할 때 사용합니다.)

- Broen-out Reset: 전원이 일정 시간동안 지정된 전압 이하로 될경우 Reset 이 됩니다.

- JTAG에 의한 Reset : JTAG을 이용해 내부 레지스터를 설정해 Reset 을 할 수 있습니다.

- 외부 Reset : Reset pin 에 입력된 신호에 따라 Reset 을 할 수 있습니다 .

 

 

3.4 Watch-doc타이머

Watch-doc 타이머는 지정된 주기이내에서(타임아웃이 되기전에) S/W 적으로 타이머의 값을 초기화 시켜주지 않으면 정상적으로 동작하지 않는 것으로 판단을 합니다. 이는 CPU의 동작에 대한 신뢰성을 높이는데 사용합니다.

 

 

3.5 SLEEP 모드

저전력 시스템 동작시 사용하지 않을 때 사용하지 않는 모듈들을 정지시켜 소비전력을 낮추도록 하는데 사용 됩니다.

 

 

3.6 BOOT 로드

BOOTSZ1,0 로 부트 사이즈를 결정합니다. 또한 BOOTRST 으로 Reset에 의해 BOOT영역으로 이동할지 선택 합니다. 이 기능을 이용해Main 프로그램 영역을 프로그램적으로 변경할 수 있습니다. 그래서 장비의 문제 발생 또는 기능 추가에 많이 활용되어 집니다.

BOOTSZ1

BOOTSZ0

Boot Size

응용 프로그램 섹션

부트 로더 섹션

1

1

512워드(4page)

0x0000~0xFDFF

0xFE00~0xFFFF

1

0

1024워드(8page)

0x0000~0xFBFF

0xFC00~0xFFFF

0

1

2048워드(16page)

0x0000~0xF7FF

0xF800~0xFFFF

0

0

4096워드(32page)

0x0000~0xEFFF

0xF000~0xFFFF

6) AVRSTUDIO 의 툴바 설명

AVRSTUDIO 는 각종 디버깅을 편리하게 하위 위한 여러가지 버튼이 툴바 형태로 모여 있습니다. 이를 간단하게 정리해 보겠습니다.

- Start Debugging : 설정된 디바이스에 따라 디버깅을 시작한다.

- Stop Debugging : 설정된 디바이스의 디버깅을 종료한다.

- Run : 타겟 CPU를 동작시킨다. 브레이크 포인트, STOP 등의 명령으로 정지가 될수 있다.

- Break : 타겟을 RUN 동작중에 정지하게 한다.

- Reset : 타겟을 Reset 한다. Source 의 초기로 돌아간다.

- Step Into : 현재 함수를 자세하게 살펴본다.

- Step Over : 현재 위치한 명령 한 개만 실행한다.

- Step Out : 함수 와 서브루틴을 전부 수행한다.

- Run to Curser : 현재 선택 되어 있는 커서까지 실행 한다.

- AutoStep : 순차적으로 명령들을 자동으로 실행한다.

- Toggle Breakpoint : Breakpoint를 설정하거나 멈춘다.

- Quick watch : 현재 선택된 변수를 보여준다.

- Toggle Watch Windows : 변수의 상태를 나타내는 Watch Window를 보이거나 안 보이게 한다.

- Toggle Register Window : Register의 상태를 나타내는 Window를 보이거나 안 보이게 한다.

- Toggle Memory Window : Memory의 상태를 나타내는 Window를 보이거나 안 보이게 한다.

- Toggle Disassembler Window : Source 를 ASM 형태로 표현하거나 안한다.

 

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 4. 입출력 I/O  (0) 2012.11.09
[ATMEGA128] 3.ATmega128 기본 하드웨어  (0) 2012.11.09
[ATMEGA128] 2.6통합환경구축(3)  (0) 2012.11.09
[ATMEGA128] 2.6 통합환경구축 (2)  (0) 2012.11.09
[ATMEGA128] 2.6 통합환경 구축 (1)  (0) 2012.11.09

5) ISP로 Flash Writer 하기 (JTAG도 비슷한 방식으로 사용이 가능합니다.)

ISP 선택 및 장비 선택 하기 위해 버튼을 누릅니다.

=>

 

Flash Writer 을 위한 기본 화면이 나옵니다.

- Device : Writer 할 디바이스를 선택 한다.

- Erase Device : Flash, EEPROM을 지운다.

- Erase Device Before Programming : Writer 하기 전에 Flash, EEPROM을 지운다.

- Verify Device After Programming : Writer 후 이상이 없는지 검사한다.

 

해당 CPU를 선택 합니다

 

- CPU는 AVRSTUDIO 버전 별로 지원하는 것이 다르며, 해당 디바이스를 정확하게 선택해주세요

 

파일을 선택 합니다.

- 파일은 hex(intel Hex File format), a90(iar 컴파일러에서 생성된 intel Hex File),eep (eeprom용 hex 파일) 을 사용할 수 있습니다.

 

CPU가 이상이 없는지 확인합니다.

- Advenced 에서 Read 해서 해당 device 가 정확한지 확인한다.

 

 

FUSE bit을 선택 합니다.

- CPU의 내부 기능을 선택 합니다.

- CPU 별로 설정이 틀리기 때문에 필이 확인 하셔야 합니다.

 

Flash Write 합니다.

 

필요시 EEPROM을 설정후 Write 합니다.

 

Lock bit을 선택 합니다.

 

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 3.ATmega128 기본 하드웨어  (0) 2012.11.09
[ATMEGA128] 2.6 통합환경구축 (4)  (0) 2012.11.09
[ATMEGA128] 2.6 통합환경구축 (2)  (0) 2012.11.09
[ATMEGA128] 2.6 통합환경 구축 (1)  (0) 2012.11.09
[ATMEGA128] 2.5 ISP & JTAG  (0) 2012.11.09

4) JTAG으로 디버깅 하기

 

PC에 JTAG을 연결하고 타겟 보드에 JTAG 을 연결한 후 전원을 넣습니다.

 

AVRSTUDIO에서 Start Debugging 을 누릅니다.

 

 

JTAG 종류와 CPU를 설정한 후 JTAG과 CPU가 연결되어진 것을 STUDIO에서 확인할 수 있습니다.

 

RUN,STOP 등을 이용해 디버깅을 할 수 있습니다.

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 2.6 통합환경구축 (4)  (0) 2012.11.09
[ATMEGA128] 2.6통합환경구축(3)  (0) 2012.11.09
[ATMEGA128] 2.6 통합환경 구축 (1)  (0) 2012.11.09
[ATMEGA128] 2.5 ISP & JTAG  (0) 2012.11.09
[ATMEGA128] 2. 개발환경구축  (0) 2012.11.09

 

2.6 통합환경구축

ATmega128을 이용한 보드만 있다고 해서 개발이 가능한 것은 아닙니다. 개발을 위해 어떤 것들이 필요한지현재까지 간단하게 개발에 필요한 컴파일러 S/W 와 각종 툴을 알아 보았습니다. 이제는 이런 툴을 어떻게 연결해서 사용하는지에 대해 간단하게 설명을 하겠습니다. 준비물을 아래와 같습니다.

 

1) 준비물

PC 또는 노트북

ISP 또는 JTAG (WIZ AVRISP 2.0 , WIZ AVRJTAG PRO)

ATmega128이 사용된 보드

WINAVR 최신버젼

AVRSTUDIO 최신버젼

각종 S/W 나 드라이버

전원

매뉴얼

간단한 예제 SORUCE

 

2) 설치 과정

WINAVR 을 인스톨 합니다.

본 문서는 WinAVR-20070525-install.exe 을 사용합니다.

AVRSTUDIO를 인스톨 합니다.

본 문서는 AVRSTUDIO 4.13 서비스팩 1 에서 사용합니다.

AVRSTUDIO4.13을 인스톨 후 AVRSTUDIO 4.13 SP1을 인스톨 하세요

WIZ AVRISP 2.0 , WIZ AVRJTAG PRO을 처음 사용시 USB 드라이버를 찾으므로 해당 파일을 인스톨을 해두셔야 합니다.

 

 

3) 프로젝트 만들어 컴파일 하기

WINAVR 에 들어 있는 demo source를 이용해서 간단한 프로젝트를 만들어 보겠습니다. 먼저 C:\WinAVR-20070525\examples\demo 디렉토리 아래에 있는 파일을 C:\prj\demo 라는 디렉토리를 만들어 그 아래에 복사합니다.

 

New Project 만들기

메뉴에 New Project를 선택 합니다

 

프로젝트 이름과 디렉토리 등을 선택 합니다.

- 프로젝트 name 과 생성되는 파일명이 같아야 합니다.

- 초기화 파일이 존재하므로 Create initial file은 선택하지 않습니다.

- 사용하고자 하는 디렉토리는 선택 합니다.

- Finish 을 눌러 완료합니다.

 

SOURCE 를 합칩니다.

- 프로젝트 창에서 오른쪽 마우스를 누르면 Add Existing File 을 선택 할 수 있습니다.

- 여기서 demo.c 와 iocompat.h 을 선택 합니다.

- 프로젝트에 파일이 추가된 것을 볼 수 있습니다.

 

 

프로젝트의 옵션을 잡습니다.

- 프로젝트 창에서 오른쪽 마우스를 눌러 Edit Configuration Options 을 선택 합니다.

- 먼저 AVRSTUDIO 에서 기본적으로 제공하는 옵션을 선택 해서 사용해 보겠습니다.

- 위 화면과 같이 atmega128을 선택 하고 Optimization 레벨을 0으로 변경합니다.

- 메모리에 관련된 설정이 필요한경우 Memory Settings 에서 설정을 합니다. (현재는 필요가 없기 때문에 넘어가겠습니다.)

- Custom Options에 GCC의 Path가 정확하게 연결이 되어 있는지도 꼭 확인하셔야 합니다.

 

 

컴파일

- 설정이 완료되면 Build 버튼을 눌러 Build 합니다.

- 이상이 없으면 컴파일이 완료된 것을 Build 창에서 확인할수 있습니다.

 

 

Makefile 을 이용한 컴파일

- AVRSTUDIO 는 기존에 GCC컴파일에서 사용하는 make 파일을 선택해서 컴파일 할수도 있습니다.

- 이때는 Options 에서 Use External Makefile 을 선택 하고 사용하고자 하는 Makefile 을 선택합니다.

- 컴파일을 하면 됩니다.

 

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 2.6통합환경구축(3)  (0) 2012.11.09
[ATMEGA128] 2.6 통합환경구축 (2)  (0) 2012.11.09
[ATMEGA128] 2.5 ISP & JTAG  (0) 2012.11.09
[ATMEGA128] 2. 개발환경구축  (0) 2012.11.09
[ATMEGA128] 1. ATmega128의 기본 구조 (4)  (0) 2012.11.09

2.5 ISP & JTAG

개발 환경을 구축하기 위해서는 다시 설명되는 장비 중 하나 또는 다수가 필요 하며 해당하는 S/W또한 필요합니다.

1) ISP

u AVR 시리즈는 모두 ISP 기능을 내장하고 있습니다. ISP 기능이 없는 CPU의 경우 거의 대부분 고가의 롬라이터를 이용해 프로그램을 해야 합니다. 그러나 ISP 기능 지원으로 매우 저렴하고 편리하게 프로그램 할 수 있습니다.

u 현재 ISP 에 사용되는 프로그램 및 툴은 매우 다양하며 그 사용법도 각각입니다. 저의가 추천해 드리는 방식은 STK500 형태의 ISP방식입니다. 이 방식은 FLASH Page 블록을 한번에 메모리에 저장하여 라이트 하는 방식을 사용하여 보다 빠른 속도를 지원합니다. 이런 방식의 제품으로는 대표적인 것이 ATMAL AVRISP MCUWORLD WIZAVRISP 2.0 등이 있습니다. 프로그램은 AVRSTUDIO에서 지원하며 AVR 모든 디바이스를 지원 합니다. 또한 AVRSTUDIO가 업그레이드를 지원 합니다.

 

 

2) JTAGICE

u AVR 의 개발을 더욱 쉽게 하기 위해서는 JTAG 장비가 필수 입니다. 개발시 JTAG포트를 사용하여 인서킷 에뮬레이터를 지원합니다. 지원하는 기능으로는 메모리덤프, 싱글스텝 디버깅, 브레이크 포인트 등이 있습니다. 모든 AVR을 다 지원하는 것은 아니나 ATmega128의 경우 지원을 하고 있습니다.

u Mcuworld WIZ AVRJTAG PRO 의 경우 JTAG 을 지원 하며 ISP도 추가적으로 지원을 하고 있습니다. 이를 이용해 고가의 장비가 지원하는 소스레벨 디버깅이 가능 하며 기타 다양한 기능도 사용이 가능합니다. 단 주의 사항으로 ATmega128 Flash Write 횟수가 10000번으로 제한되어 있어 이 이상 사용시 CPU를 교체해야 할 수도 있습니다.

u 프로그램으로는 AVRSTUDIO를 사용하고 있습니다.

 

 

3) JTAGICE MKII

u JTAGICE와 기능적으로는 비슷합니다. 단 추가적으로 debugWIRE를 지원하며 그 외에 좀더 많은 디바이스를 지원하고 있습니다.

 

2. 개발환경구축

 

2.1 EWAVR

u EWAVR IAR 사에서 ATMEL사의 AVR 시리즈 컴파일러로 출시된 제품이다. AVR 초기 개발시부터 만들어진 컴파일러로 알려져 있으며 Optimization 능력이 뛰어난 컴파일러 이며, 유료의 컴파일러 이나 다양한 기능이 존재 합니다. 자체 디버거인 C-SPY가 있어 시뮬레이션 및 JTAG 포트를 통한 하드웨어 디버깅 까지 가능합니다.

 

 

2.2 WINAVR

u WinAVR GNU에서 개발한 AVR C언어 컴파일러 및 기타 개발도구 패키지이며, 강력한 성능과 무료라는 장점 때문에 세계적으로 널리 사용됩니다. WinAVRAVR-GCC를 내부에 가지고 있으면서 사용자가 쉽게 AVR-GCC를 사용할 수 있도록 IDE 환경을 제공합니다.

u WinAVRhttp://winavr.sourceforge.net/ 에서 최신버전을 다운로드 받을 수 있습니다.

 

 

 

 

u 최신 버전을 다운로드 후에 인스톨을 실시한다. 인스톨 후에 사용하면 됩니다.

 

2.3 기타 컴파일러

u 상용컴파일러는 ImageCraft, Codevision 등이 있습니다.

u 비 상용 컴파일러는 주로 avr-gcc기반에 IDE을 연동하는 방식으로 되어 있습니다.

u 관련자료는 해당사이트를 참조 해주세요

 

2.4 AVRSTUDIO

u ATMEL사에서 무료로 공급하는 IDE 프로그램으로 기본적으로 컴파일러는 ASM 을 제공하며 , 디버깅 환경으로 Simulator/Emulator를 제공해 CPU의 동작상태를 직접 눈으로 확인할 수 있으며, 개발 지원을 위해 각종 개발 툴과 개발장비와 연결해 CPU를 프로그램 할 수 있습니다.

u 상용 컴파일러 등의 디버깅 파일과 연결하여 좀더 원활한 개발을 지원합니다.

u 현재는 avr-gcc와 연동한 컴파일을 지원해 C 언어 사용도 가능합니다.

u AVRSTUDIO http://www.atmel.com/ 에서 다운로드 받으실 수 있습니다.

 

 

u 다운로드 된 파일을 인스톨 합니다.

u 서비스 팩이 있을 경우 해당 파일도 인스톨 합니다.

u 주의사항은 AVRSTUDIO에서 사용 가능한 개발툴일 경우 업그레이드를 해야 할 수도 있으며, 업그레이드를 안 한 경우 원할 한 사용에 제한을 받을 수도 있습니다. 업그레이드 전에 버전에 대한 확인을 꼭 하시길 바랍니다.

u 인스톨이 다 되면 사용을 하시면 됩니다.

+ Recent posts