8051
AVR
EZLab
PIC
80C196KC
DSP
ARM
VHDL
마이크로마우스
로봇축구
Battle 로봇
로봇대회
휴먼로봇
Embeded Linux
HW/SW 강좌
RTOS
 
 


  CodeVisionAVR C 컴파일러

제1장. CodeVisionAVR 설치 및 사용 방법

(1) CodeVisionAVR C 컴파일러 특징

CodeVisionAVR C 컴파일러는 가격에 비해 성능이 우수한 컴파일러로

다음과 같은 특징이 있다

- 편리한 통합 환경 : 소스 에디터, 컴파일/링크, Flash-ROM/EEPROM 다운로드, 통신 프 로그램 등이 함께 제공 됨.

- 자동 소스 코드 생성 기능(CodeWizardAVR) *1

- 풍부한 라이브러리 함수 제공 : 통신(UART), LCD표시, 온도, 시계, A/D 소자함수 제공.

- 편리한 FLASH, EEPROM, SRAM 변수 관리

- 포트 및 변수의 비트 제어 기능 *1

- 인 라인 어셈 기능 제공 *1

- 저 가격. (20 만원 대)

- 무료 평가 버전 사용 가능(용량 제한 및 일부 함수 사용 제한)

* IAR C 컴파일러에는 없음(또는 불편)

(2). 회로 설치

준비물

- 컴퓨터(PC)

- AVR_테스트 보드

- AVR 다운로드 포드(POD)

- 전원 장치 : 5V 전압 출력

- CodeVisionAVR C 컴파일러

- ICE200 에뮬레이터, AVR Studio S/W : 옵션 에뮬레이션 시 필요

 ㆍ PCB 기판 부품 배치도

    ㉠  12V전원                             ㉡  Servo모터 헤더핀

    ㉢  Lcd 표시                            ㉣  12V전원 입력

    ㉤  스텝모터  커넥터                 ㉥   DC모터 커넥터

    ㉦  모터 전원                           ㉧   ISP케이블 헤더핀

    ㉨  AT90S2313 20핀 소켓          ㉩   RS-232 접속 헤더핀

    ㉪   Led표시                            ㉫  가변저항

    ㉬  점퍼                                  ㉭  Key 입력

    ㉮  7-세그먼트 표시                 ㉯  74HC14 IC

    ㉰  DIP스위치

                                 

 ㆍ 설치사진(ISP케이블)

                                 

 설치 사진 (ICE200 에뮬레이터 접속)

    ㉠   ICE200 본체             ㉡  ICE200 POD

                                 

 회로 연결도

ISP 커넥터(ISP_20P)

6핀으로 되어 있는데, 전원선 2개와 신호선 4개로 구성되어 있다.

AVR의 내부 FLASH나 EEPROM 내용을 다운 로드 하는데 사용한다.

접속 방향(1번 적색 신호)에 유의 한다.

포트 사용

AT90S2313의 경우 B포트는 8개 D포트는 7개의 포트를 사용할 수 있는데, ISP에 사용되는 신호도 일반 포트로 사용할 수 있다. 단 다운 로드 시에 신호에 신호 충돌이 없도록 해야 한다.

동작 클럭:

AT90S2313-10PI의 경우 10MHz까지 사용이 가능하며 4MHz 발진자가 부착되어 있음

(3) CodeVisionAVR C 컴파일러 사용 방법

        Led를 켜는 실험을 하면서 프로그램을 실행시켜 보자.

 1) 프로그램 실행

                                 

 2)프로그램 실행 화면

                                 

 3)File을 클릭한후 New 항목을 클릭한다.

                                 

 4) 자동 소스 코드 생성 기능을 사용할지를 묻는다

     Yes: 프로그램 전체 코드의 골격을 생성시킨다.

     No: 사용자가 처음부터 작성한다.

     이 예제에서는 자동 생성 기능을 사용해 본다. → Yes 선택

                                 

 5) 사용하는 AVR Chip과 동작 클럭을 선택한다.   

                                 

 6) Port를 결정한다.

    ㉠  File을 클릭 → Generate, Save and Exit 실행시킨다.

    ㉡  포트B를 출력으로 하여 LED를 카운트 ON하는 프로그램을 작성하므로 방향을 출력(O)으로 설정한다.

                                

 7) 소스 프로그램 생성

                      

                      

                      

  지금 까지 실행을 시켰으면 소스 파일이 생성되는 것을 볼 수 있을 것이다.

                      

  소스파일을 보면 다음과 같다.

/*********************************************

This program was produced by the

CodeWizardAVR V1.0.1.5g Evaluation

Automatic Program Generator

  Copyright 1998-2001

Pavel Haiduc, HP InfoTech S.R.L.

http://infotech.ir.ro

e-mail:dhptechn@ir.ro , hpinfotech@mail.com

Project :

Version :

Date    : 2001-03-30

Author  : Unknown

Company :

Comments:

Chip type                : AT90S2313

Clock frequency      : 4.000000 MHz

Memory model        : Tiny

Internal SRAM size  : 128

External SRAM size  : 0

Data Stack size      : 32

*********************************************/

#include <90s2313.h>

// Declare your global variables here

void main(void)

{

// Declare your local variables here

// Input/Output Ports initialization

// Port B

DDRB=0xFF;

PORTB=0xFF;

 

// Port D

DDRD=0x00;

PORTD=0x00;

 

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Output Compare

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

 

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Output Compare

// OC1 output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

OCR1H=0x00;

OCR1L=0x00;

 

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

GIMSK=0x00;

MCUCR=0x00;

 

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

 

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

 

while (1)

      {

      // Place your code here

 

      };

}

지금 나타낸 소스는 codeVisionAVR에서 자체적으로 생성 시켜준 것이고 led를 순차적으로 동작 시키기 위한 프로그램은 다음과 같다.

#include <90s2313.h>

// Declare your global variables here

char   m_cnt=0;      // 바이트 크기의 m_cnt 외부 변수 선언

void main(void)

{

 

// Declare your local variables here

long   i;                // 4바이트 크기의 i 자동 변수 선언

// Input/Output Ports initialization

// Port B

DDRB=0xFF;            // PORTB로 출력 방향 결정         

PORTB=0xFF;           // PORTB의 초기치

 

// Port D

DDRD=0x00;

PORTD=0x00;

 

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Output Compare

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

 

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Output Compare

// OC1 output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

 

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

OCR1H=0x00;

OCR1L=0x00;

 

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

while (1)

      {

      // Place your code here

               m_cnt++;               // m_cnt 변수 1 씩 증가

               PORTB = ~m_cnt;   // 반전(1의 보수)하여 포트 B로 출력 함

               for(i=0;i<1000;i++); // 딜레이 루틴

      }

}

 반전(1의 보수)하여 포트 B로 출력하는 이유는 LED가 0일 때 ON이 되므로, For 루틴은 단순 지연 루틴으로 LED 증가 상태를 육안으로 확인 할 수 있도록 하기 위해서 이다.

 8) 컴파일 하기

    ㉠  Project를 클릭 한 후 Compile File을 선택한다.   

    ㉡  아이콘 클릭

                     

       그러면 다음과 같은 창이 뜰 것이다. → 컴파일 정보 표시

                                  

 9) 링크(메이크) 하기

    Project를 클릭 한 후 Make를 클릭한다.

     ㉠  클릭 후 Make 선택                    ㉡  아이콘 클릭

                     

     그러면 다음과 같은 창이 뜰 것이다.

                                   

 10) 플래시 롬에 다운로드 하기

    ㉠  Tool을 클릭 한 후 Chip programmer을 선택한다

    ㉡  아이콘 클릭

                      

        CodeVisionAVR Chip Programmer 창이 나타난다.

    ㉠  File을 클릭하여 Load파일을 불러온다.

      Program을 클릭 하여  Erase Chip 및 Flash을 결정한다.

                             

          File을 클릭 한 후 Load파일을 불러오면 다음과 같은 창이 뜬다.

                     

                            

 11) ICE200을 이용 하여 AVR Studio를 사용하기

 ◆ AVR Studio특징

 AVR Studio는 Atmel사에서 무료로 다운 받아 사용할 수 있는 개발 환경으로 시뮬레이션 과 다양한 에뮬레이터를 지원하는데 여기서는 ICE200과 연결 사용을 중심으로 살펴 본다.

특징:   Asm/C 소스 레벨 디버깅 가능.(Asm/C 절환 사용 가능)

       Single Step, Break Point 동작 사용 가능.

       프로그램, 데이터, I/O 영역 데이터 관찰 및 변경 가능.

       각종 레지스터 모니터 및 변경 가능.

       각종 변수 값 모니터 및 변경 가능.

       시뮬레이터 및 애뮬레이터로 사용.

먼저 AVR Studio를 세팅 한 후 바탕화면에서 아이콘을 클릭 하거나, CodeVisionAVR에서 Tool을 클릭 → Debugger을 선택한다.

    ㉠  Tool을 클릭  → Debugger을 선택

    ㉡  아이콘 클릭

                     

 12) 실행화면

                    

그런데 CodeVisionAVR 링크 동작에서 기본적으로 생성되는 파일은 인텔 HEX 파일이 아니므로 출력 파일 포맷을 Intel HEX로 설정하여 생성해 준다.

    ㉠  Project를 클릭 → Configure를 실행

    ㉡  C Compiler을 클릭

                    

                               

그러면 다음과 강은 창이 뜬다.   

    ㉠  칩 종류 및 동작 속도

    ㉡  스택 영역: 자동 변수 사용량을고려하여 적절히 설정

         스택 영역을 많이 잡으면 외부 변수 영역이 적어 짐

    ㉢  내부 RAM 영역: Chip 종류에 따라 다름

    ㉣  비트 변수영역 최대 112비트

    ㉤  Intel HEX로 설정

    ㉥  생성 코드 최적화 방법 선택

                                

 ◆ 실행화면

                                

 ◆ Intel.HEX 파일

                               

 ◆ 메모리 내용

    ㉠  Eeprom, Program Memory, Data를 결정

                              

 각종 CPU 자원 관찰 가능

                              

13) 직렬 통신형  ISP POD 사용 방법

직렬 통신 포트형 ISP 프로그램은 AVRprog131.exe의 별도의 프로그램으로도 실행이 되는데, AVR Studio의 Tools=>AVR Prog의 메뉴에도 포함되어 있다.

                               

 다음과 같은 창이 뜬다.

    ㉠  파일 선택시 사용

    ㉡  인텔 Hex 형태의 로드 프로그램 파일명

    ㉢  플래쉬 롬 프로그램

    ㉣  Eeprom 프로그램

                               

14) AVRCCC를 이용하여 플래쉬 롬에 다운하기

    ㉠  File 이나 아이콘을 클릭하여 Led. bin 파일을 불러온다

    ㉡  Check 버튼 클릭

    ㉢   WFlash 버튼을 클릭

                                

            

                        Verity 버튼 클릭                                      Button 7버튼 클릭

            

이 과정이 끝나면 AT90S2313의 플래쉬 메모리에 다운 로드가 끝난다.

그러나 CodeVisionAVR 에는 Bin 파일이 생성이 되지 않기 때문에 hex 파일을 bin 파일로 바꾸는 소프트웨어가 필요하므로 필요한 분은 자료실에 다운로드받아 사용하면 된다.

 


상호 : (주) 로보블럭 사업자등록번호:214-86-56219 통신판매업신고19-2544 대표: 신대섭 전화:(02)2679-8556 Fax :(02)2679-8557
본사 : 경기도 부천시 원미구 약대동 부천 테크노파크 401동 502호     서울사무소 : 서울시 영등포구 문래동 4가 8-1 4층
Copyright(C) 2004, (주) 로보블럭 시스템즈 All Rights Reserved E-Mail : WebMaster