자료실

뒤로가기
제목

[PIC 프로그래밍] 6. PIC용 C 컴파일러: mikroC PRO

작성자 가치창조기술(ip:)

작성일 2011-08-10 14:58:28

조회 2735

평점 0점  

추천 추천하기

내용

 

MCU용 프로그램을 작성하기 위해서는 컴파일러가 필요하고 이 컴파일러는 사용하려는 MCU의 아키텍쳐를 반드시 알고 있어야 합니다. 여기서는 PIC용 mikroC PRO C컴파일러에 대해서 살펴보도록 하겠습니다. 이름에서 알수 있듯이 PIC 마이크로컨트롤러용 컴파일러이며 PIC MCU의 내부 구조에 대한 모든 데이타 및, 특정회로의 연산, 인스트럭션 셋, 레지스터 이름 및 주조, 핀아웃 등의 정보가 제공됩니다. 컴파일러를 실행시키고나서 먼저 해야할 것은 리스트에서 칩의 종류를 선택하고 동작주파수를 설정하여 컴파일러에게 어떤 MCU를 프로그래밍 할 것인지 알려주는 것입니다.

아래는 mikroC PRO 인스톨 화면입니다.

 

 

아래는 PICFlash 프로그래머 인스톨화면입니다. 컴파일러에 의해 생성된 HEX파일을 MCU에 내려주는 프로그램입니다.

 

 

 

다음은 드라이버 설치!

 

 

드라이버는 지금까지 설치한 소프트웨어를 하드웨어인 MCU와 통신할수 있게 만들어 주는 소프트웨어 입니다. 설치하셔야겠죠?

 

 

운영체제에 맞는 드라이버를 폴더에서 찾은 후 설치..

 

 

설치완료.

 

mikroC PRO IDE

 

아래는 mikroC PRO를 설치한 후 실행시켰을때 볼수 있는 IDE화면입니다.

 

 

 

PROJECT MANAGER

PROJECT MANAGER

 

mikroC 컴파일러에서 작성한 프로그램은 hex 코드, 어셈블리코드, 헤더파일 등을 포함하는 project파일의 일부가 자동적으로 됩니다. 작성중인 프로그램과 관련된 파일을 프로젝트 매니저에서 찾아볼수 있습니다.

 

CODE EXPLORER

CODE EXPLORER

 

코드 익스플로러는 함수와 프로시져를 쉽게 찾을 수 있도록 해주는 메뉴입니다. 라인수가 많은 프로그램에서는 특정 함수나 프로시져를 찾기가 어려운데 이럴때 코드 익스플로러에서 원하는 함수를 찾아 더블클릭하면 코드상의 위치로 커서가 이동합니다.

 

 

PROJECT SETTINGS

PROJECT SETTINGS

 

컴파일러가 제대로 동작하게 하기 위해서는 컴파일러에게 필요한 MCU 정보를 알려줘야 합니다.

Device - MCU이름을 선택하여 컴파일러에게 사용해야할 difinition 파일, SFR 레지스터, SFR레지스터 주소 등을 알려줍니다.

Oscillator - 컴파일러에게 MCU의 동작속도를 알려줍니다. 컴파일러는 동작속도에 맞춰 configuration word를 변경합니다.

Build type - Release 컴파일러가 디버깅용이 아닌 릴리즈용 실행파일을 생성합니다. 컴파일을 끝내면 프로그램 실행에 컴파일러는 아무런 영향을 미치지 못하며, 디버깅을 하려면 소프트웨어 시뮬레이터를 사용해야 합니다.

Build type - ICD debug: 컴파일러가 디버깅용 실행파일을 생성합니다. 컴파일을 끝내고 MCU에 프로그램이 올라가도, 컴파일러는 MCU에 여전히 연결된 상태로 있으며 MCU의 연산에 영향을 줄수 있습니다. 이러한 일을 가능하게 만들어주는 소프트웨어를 ICD(In-Circuit Debugger)라 부르며, 프로그램을 step by step으로 실행할 수 있습니다. 또 MCU의 모든 레지스터의 값을 엑세스 할수 있습니다. 시뮬레이터는 수행되지 않으며, 레지스터값은 실제 MCU에서 읽혀지게 됩니다.

 

CODE EDITOR

 

코드 에디터는 프로그램을 작성하는 창입니다.

 

SOFTWARE SIMULATOR

SOFTWARE SIMULATOR

 

시뮬레이터를 시작하기 전에, 프로젝트 셋팅 윈도우에서 빌드타입을 release 타입으로 선택한 후 Run/Start Debugger 옵션을 클릭합니다.

그러면 컴파일러는 시뮬레이션모드로 자동적으로 설정됩니다. 이렇게 하여 모든 레지스터 비트의 상태를 감시 할 수 있습니다. 마이크로컨트롤러의 연산(연산 시뮬레이션)을 화면으로 감시하면서 프로그램을 step by step으로 실행 할수 있습니다.

이 모드로 컴파일러를 셋팅할 경우에는 시뮬레이터 모드에서만 사용되는 몇개의 아이콘이 추가 됩니다.

 

위의 아이콘에 대해 설명하면,

Step Into - 프로그램상에 커서가 위치된 라인을 실행합니다.

Step Over - 프로그램상에 커서가 위치한 다음 라인을 실행합니다. 긴 루프 등을 건너 뛸때 사용합니다.

Run To Cursor - 마지막으로 실행된 부분부터 커서가 위치한 부분까지 실행합니다.

Step out - 프로그램을 현재 실행되고 있는 루틴밖으로 나가게 합니다.

 

WATCH WINDOW

 

시뮬레이터와 디버거는 프로그램 실행동안에 레지스터 상태를 감시하는 같은 기능을 가지고 있지만 큰 차이점이 하나 있습니다. 시뮬레이터는 프로그램을 PC상에서 실행을 하는 반면에 디버거는 실제 MCU를 사용하여 실행합니다. MCU 핀의 로직상태 변화는 상응하는 레지스터(포트)에 반영됩니다. Watch 윈도우를 통해 레지스터의 상태를 감시할수 있어 핀이 0 이나 1로 셋팅되어 있는지 확인할 수 있습니다.

 

STOPWATCH

 

MCU에서 프로그램이 실행되는데 걸리는 시간을 측정하려면 Run/View Stopwatch 옵션을 선택하여 측정할수 있습니다.

 

컴파일러의 툴들

 

mikroC컴파일러는 프로그램 작성을 쉽게 하기 위하여 여러 툴들을 제공하고 있습니다.

 

PICFLASH PROGRAMMER

 

PICFlash 프로그래머는 컴파일러와 독립적으로 동작하는 프로그램이지만 컴파일러에서 프로그래머를 실행할 수 있습니다.

 

 

PICFlash 프로그래머는 컴파일러가 생성한 HEX코드를 MCU에 올리는데 사용이 됩니다.PICFlash프로그래머는 이를 위한 소프트웨어와 하드웨어로 구성이되어 있습니다. 프로그래머의 하드웨어는 프로그래밍에 필요한 전압레벨을 제공하고 MCU를 연결하기 위한 소켓으로 구성이 되어 있습니다. PC에 설치되어 있는 소프트웨어는 USB케이블을 통하여 MCU에 HEX코드를 전달하기 위해 사용됩니다.

 

USART TERMINAL

USART TERMINAL

 

USART 터미널은 윈도의 하이퍼터미널이라고 생각하시면 됩니다. USART통신을 사용하는 MCU를 체크하기 위해 사용합니다. (예. PC와 시리얼통신으로 연결된 MCU장치)

 

EEPROM EDITOR

EEPROM EDITOR

 

위의 툴은 EEPROM에디터로 마이크로컨트롤러 내의 EEPROM이 어떻게 생겼는가를 보여줍니다. MCU에 프로그램을 로딩한후에 그 내용을 바꾸고자 한다면 이 툴을 이용하시면 됩니다. 새로운 내용이 char, int, double등의 데이터 타입이라면, 변경할 내용을 선택한 후에 edit value 항목에서 데이터값을 수정하고 save버튼을 눌러 저장합니다. 프로젝트에서 EEPROM 툴사용을 활성화해놓으셨다면 변경데이터는 자동적으로 칩에 프로그래밍이 될 것입니다.

 

ASCII CHART

 

아스키코드의 2진, 10진, 16진수 값을 확인해 볼수 있는 차트입니다.

 

SEVEN SEGMENT EDITOR

 

세븐 세크먼트 에디터는 원하는 심볼을 디스플레이에 출력하기 위해 풀요한 숫자를 쉽게 알아내기 위한 툴입니다. 에디터에서 원하는 심볼을 클릭하여 만들면 필요한 숫자가 나타납니다.

 

LCD CUSTOM CHARACTER

 

표준문자이외에 마이크로컨트롤러는 사용자가 작성한 문자를 디스플레이에 보낼수 있습니다. LCD custom character툴에서 원하는 심볼을 만들고 위치를 설정한 다음 GENERATE버튼을 클릭하면 필요한 소스코드가 생성됩니다.

 

GRAPHIC LCD BITMAP GENERATOR

 

GLCD를 사용하는 프로그램을 작성하고 있다면 이 툴은 필수적입니다. GLCD에 디스플레이하고자 하는 비트맵 그림을 선택하여 로드하면 비트맵 코드가 생성이 됩니다.

 

 

LCD/GLCD 툴을 사용하여 생성한 코드는 Lcd 라이브러리 함수를 포함하는 경우가 있으므로 라이브러리 매니져에서 Lcd 라이브러리를 추가하는 것을 잊지 마십시오.

 

LIBRARIES

LIBRARIES

 

라이브러는 하이레벨 랭귀지의 장점중에 하나로 다른사람이 작업하여 높은 일과 지식을 사용할 수 있게 하여줍니다. 예를 들어 소리를 연주하는 프로그램을 만들고 싶다고하면 sound 라이브러리를 include하고 관련 함수를 찾아 소리를 연주하여 주면 됩니다.

 

표준 ANSI C 라이브러리

 

Standard ANSI C 라이브러리는 C언어 표준함수를 포함하고 있습니다.:

Library Description
ANSI C Ctype Library 데이터 변환
ANSI C Math Library 플로팅 포인트 수학 연산
ANSI C Stdlib Library 표준 라이브러리 함수
ANSI C String Library 스트링 및 메모리 연산 함수


 



기타 라이브러리

 

일반적으로 사용이 되나 표준C라이브러리에 포함되지 않는 라이브러리

Library Description
Button Library Used for a project development
Conversion Library Used for data type conversion
Sprint Library Used for easy data formatting
PrintOut Library Used for easy data formatting and printing
Time Library Used for time calculations (UNIX time format)
Trigonometry Library Used for fundamental trigonometry functions implementation
Setjmp Library

Used for program jumping



HARDWARE SPECIFIC LIBRARIES

 

특정하드웨어용 라이브러리:

Library Description
ADC Library Used for A/D converter operation
CAN Library Used for operation with CAN module
CANSPI Library Used for operation with external CAN module (MCP2515 or MCP2510)
Compact Flash Library Used for operation with Compact Flash memory cards
EEPROM Library Used for operation with built-in EEPROM memory
EthernetPIC18FxxJ60 Library Used for operation with built-in Ethernet module
Flash Memory Library Used for operation with built-in Flash memory
Graphic Lcd Library Used for operation with graphic LCD module with 128x64 resolution
I2C Library Used for operation with built-in serial communication module I2C
Keypad Library Used for operation with keyboard (4x4 push buttons)
Lcd Library Used for operation with LCD display (2x16 characters)
Manchester Code Library Used for communication using Manchester code
Multi Media Card Library Used for operation with multimedia MMC flash cards
One Wire Library Used for operation with circuits using One Wire serial communication
Port Expander Library Used for operation with port expander MCP23S17
PS/2 Library Used for operation with standard keyboard PS/2
PWM Library Used for operation with built-in PWM module
RS-485 Library Used for operation with modules using RS485 serial communication
Software I2C Library Used for I2C software simulation
Software SPI Library Used for SPI software simulation
Software UART Library Used for UART software simulation
Sound Library Used for audio signal generation
SPI Library Used for operation with built-in SPI module
SPI Ethernet Library Used for SPI communication with ETHERNET module (ENC28J60)
SPI Graphic Lcd Library Used for 4-bit SPI communication with graphic LCD display
SPI Lcd Library Used for 4-bit SPI communication with LCD display (2x16 characters)
SPI Lcd8 Library Used for 8-bit SPI communication with LCD display
SPI 6963C Graphic Lcd Library Used for SPI communication with graphic LCD display
UART Library Used for operation with built-in UART module
USB Hid Library

Used for operation with built-in USB module



ACCESSING INDIVIDUAL BITS

mikroC PRO 컴파일러는 8비트 변수의 각각의 비트에 접근 할 수 있습니다.:

INTCON.B0 = 0;  // Clear bit 0 of the INTCON register
ADCON0.F5 = 1;  // Set bit 5 of the ADCON0 register
INTCON.GIE = 0; // Clear Global Interrupt Bit (GIE)

SBIT TYPE

mikroC PRO 컴파일러는 레지스터, SFR, 변수등에 접근할수 있게 sbit data type을 가지고 있습니다.:

extern sbit Some_Bit;      // Some_Bit is defined
char MyVar;
sbit Some_Bit at MyVar.F0; // This is where Some_Bit is declared
...
void main() {
...
}

sbit 변수를 SFR레지스터를 포인팅하게 하였다면 sfr키워드를 사용하여 선언해주어야 합니다.:

extern sfr sbit Abit;  // Abit is precisely defined
...
sbit Abit at PORTB.F0; // Now, Abit is declared
void main() {
...
}

BIT TYPE

mikroC PRO 컴파일러는 비트 데이터 타입을 제공합니다. argument나 함수의 리턴값으로는 사용할수 없습니다.

bit bf;   // Valid bit variable
bit *ptr; // Invalid bit variable. There are no pointers to bit variables
 
가치창조기술
 
MCU 개발용 보드

제품특징

  • PIC, dsPIC, PIC24, PIC32MX, AVR, PSoC, 8051, ARM 마이크로프로세서 지원
  • 프로그래머 및 ICD 디버거가 개발보드에 내장되어 있어 경제적
  • COG/LCD/GLCD 장착
  • MCU의 모든 핀들은 개발보드상의 인터페이스 핀에 연결되어 있음
  • 개발보드상의 DIP스위치를 이용하여 개발보드를 설정
  • MCU 핀에 LED 및 푸시버튼이 보드상에 연결되어 있음
  • 즉시 사용가능한 다양한 예제 지원
  • 마이크로일렉트로니카 컴파일러 지원
  • 다양한 개발용 악세사리를 개발보드상에 연결하여 사용이 가능

제품군:

제품군 설명
Microchip PIC

Microchip PIC용 개발보드 제품군

Microchip dsPIC Microchip dsPIC용 개발보드 제품군
Microchip dsPIC24-33 Microchip dsPIC24-dsPIC33용 개발보드 제품군
Microchip PIC32MX Microchip PIC32MX용 개발보드 제품군
Atmel AVR 및 XMega Atmel AVR 및 XMega용 개발보드 제품군
Cypress PSoC Cypress PSoC용 개발보드 제품군
Atmel 8051 Atmel 8051용 개발보드 제품군
NXP ARM NXP ARM용 개발보드 제품군
GPS 개발보드 GPS 개발보드 제품군
MCU 컴파일러

제품특징

  • PIC, dsPIC, PIC24, PIC32, AVR, 8051 마이크로프로세서 지원
  • 편리하고 직관적인 IDE환경
  • 500개 이상의 라이브러리 함수지원으로 개발시간 절약
  • 다양한 개발용 툴 지원
  • mikroProg 하드웨어 In-Circuit Debugging 지원
  • 즉시 사용가능한 예제 지원

제품 모델:

제품 설명
PIC용 컴파일러 Microchip PIC용 컴파일러
AVR용 컴파일러 Atmel AVR용 컴파일러
dsPIC30/33 및 PIC24용 컴파일러 Microchip dsPIC30/33 및 PIC24용 컴파일러
PIC32용 컴파일러 Microchip PIC32용 컴파일러
8051용 컴파일러 Atmel 및 Silicon Labs 8051용 컴파일러

개발용 악세사리보드

제품특징

  • 악세사리보드로 다양한 MCU와 주변장치의 기능을 테스트
  • 통신/저장/시간측정/디스플레이/측정/오디오/전원공급/기타 등의 악세사리보드
  • Mikroelektronika 개발보드에 연결하여 사용 가능
  • 즉시 사용 가능한 예제 제공

제품군:

제품군 설명
통신용 보드 통신용 악세사리보드
스토리지 보드 스토리지용 악세사리보드
시간측정용 보드 시간측정용 악세사리보드
디스플레이 보드 디스플레이용 악세사리보드
센서 및 측정보드 센서 및 측정용 악세사리보드
오디오 및 보이스 보드 오디오 및 보이스용 악세사7리보드
전원제어보드 전원제어용 악세사리보드
기타보드 릴레이, RFID, 센서 등의 다양한 악세사리보드

MCU 개발용 키트

제품특징

  • PIC, dsPIC, PIC24, PIC32, AVR, 8051 마이크로프로세서 지원 개발용 키트
  • 개발에 필요한 개발보드, 컴파일러 및 악세사리보드 포함
  • 개발용 키트 묶은 구매로 개별구매보다 저렴

제품군:

Part Number 모델 설명
PIC 개발용 키트 Microchip PIC 개발용 키트
dsPIC30 개발용 키트 Microchip dsPIC30 개발용 키트
dsPIC33-PIC24 개발용키트 Microchip dsPIC33-PIC24 개발용 키트
AVR 및 XMega 개발용키트 Atmel AVR 및 XMega 개발용 키트

8051 개발

용 키트

Atmel 및 Silicon Labs 8051 개발용 키트      

 

첨부파일

비밀번호
수정

비밀번호 입력후 수정 혹은 삭제해주세요.

댓글목록

등록된 댓글이 없습니다.

댓글 수정

이름

비밀번호

내용

/ byte

수정 취소

비밀번호

확인 취소

댓글 입력

이름

비밀번호

내용

/ byte

평점

관리자에게만 댓글 작성 권한이 있습니다.