32비트 Edition MR.PIC-IDE - Comfile

61
32비트 Edition MR.PIC-IDE 통합 개발환경 MR.PIC MR.PIC-PGM PRO ENGINE-II PIC 길라잡이

Transcript of 32비트 Edition MR.PIC-IDE - Comfile

Page 1: 32비트 Edition MR.PIC-IDE - Comfile

32비트 Edition

MR.PIC-IDE 통합 개발환경

MR.PIC

MR.PIC-PGM

PRO ENGINE-II

PIC 길라잡이

Page 2: 32비트 Edition MR.PIC-IDE - Comfile

목차

제 1장 MR.PIC-IDE 설치.......................................................3

MR.PIC-IDE는........................................................................3

MR.PIC-IDE의 특징................................................................3

MR.PIC-IDE 프로그램 설치......................................................3

MR.PIC-IDE 업그레이드 안내..................................................8

제2장 MR.PIC 구성품 및 설치................................................8

주의 사항 및 시스템 사양........................................................8

MR.PIC의 구성품....................................................................8

MR.PIC 구성품에 대하여.........................................................9

MR.PIC 기능 설명.................................................................10

설치에 앞서.........................................................................11

MR.PIC 장비 설치.................................................................12

제3장 MR.PIC-IDE 사용법...................................................16

MR.PIC-IDE에 대하여...........................................................16

메뉴에 대한 설명.................................................................17

제4장 MR.PIC제약 사항 및 엑세서리 보드 사용법..................25

Probe(프로브) 및 I/O 프로텍트 보드 사용법.............................25

PIC12C50X와 PIC16C5X 계열의 차이점...................................26

PIC12C508 에뮬레이션 방법과 제약 사항................................26

PIC12CXXX Filter 보드 사용법.................................................30

PIC12C67X 에뮬레이션 방법과 제약사항................................32

PIC16F877 에뮬레이션 시 제약사항.......................................34

제5장 프로그램 작성 및 사용법...............................................35

프로젝트 파일 작성..................................................................35

ME chip에 따른 지원 가능한 디바이스 리스트.............................35

MR.PIC-IDE 동작 살펴보기.......................................................37

제6장 MR.PIC-PGM(PRO ENGINE-II)........................................40

MR.PIC-PGM소개....................................................................40

PRO ENGINE-II 구성품 .............................................................41

롬 라이팅 지원 디바이스..........................................................42

MR.PIC-PGM 화면 설명............................................................42

롬 라이팅 시 칩의 장착.............................................................44

MR.PIC-PGM 메뉴에 대한 설명.................................................44

MR.PIC-PGM 업그레이드.........................................................48

PRO ENGINE-II 업그레이드.......................................................48

변환 소켓의 종류.....................................................................49

제7장 FAQ ..........................................................................50

에뮬레이터와 칩에서의 동작 차이점에 대하여............................50

FAQ.......................................................................................51

제8장 MR.PIC Errata & Etc ......................................................58

MRPIC-IDE V12.7과 이전 버전의 달라진 점................................58

PIC Micro controller Package Type...............................................59

PIC Family Identification System..................................................60

제품 보증서............................................................................61

32비트 Edition

MR.PIC-IDE

통합 개발환경

WINDOWS는 Microsoft Corporation의 등록상표 입니다. PIC는 Microchip Technology Inc의 등록상표 입니다.

본 책에서 설명하고 있는 내용은 사전 통보 없이 변경될 수 있습니다. 본 책의 어떠한 부분도

사전에 폐사와의 문서 동의 없이 복사되거나 변경, 재 생산할 수 없습니다.

제3판 2007년 3월 Copyright 1997,2007 컴파일 테크놀로지 주식회사

*변경된 내용은 www.comfile.co.kr의 Download 자료실에서 다운 받을 수 있습니다 .또는 www.comfile.co.kr/download/pic/mrpicide127.exe

-2-

Page 3: 32비트 Edition MR.PIC-IDE - Comfile

CHAPTER 1 MR.PIC-IDE 설치

1. MR.PIC-IDE는...

MR.PIC-IDE는 마이크로칩사의 PIC칩 개발을 위한 통합 개발환경

프로그램으로 MR.PIC, PRO ENGINE-II, PRO ENGINE-II LITE 장비와

함께 사용하는 프로그램입니다. MR.PIC-IDE 프로그램 안에는 텍스트

에디터 (문서 크기 제한 없음)와 어셈블러 (마이크로칩의 MPASM)

포함하고 있으며, MR.PIC (인서킷 에뮬레이터), PRO ENGINE-II, PRO

ENGINE-II LITE (프로그래머) 구동 프로그램이 내장 되어 있습니다.

지금부터 설명하는 내용은 MRPIC-IDE V12.7을 기준으로 설명하므로

다른 버전을 사용하고 계시다면 내용이나 기능면에서 약간의 차이가

있을 수 있습니다. MR.PIC-IDE에서 지원 가능한 툴은 다음과

같습니다.

● MR.PIC : 인서키트 에뮬레이터 및 롬 라이터

● PRO ENGINE-II : 롬 라이터

● MPLAB-C : C 컴파일러

● CCS-C PCB, PCM, PCW, PCWH(PIC18계열은 제외)

● HI-TECH PICC(PICC-18은 제외)등을 지원합니다.

* C 컴파일러는 별도로 구매하셔야 합니다.

WINDOWS 9X/ME/2000/NT/XP하에서 운영되며, 한글 윈도우 사용시

한글 입력이 가능합니다. (기타 다른 언어의 윈도우에서도 사용

가능하며, 해당 언어를 입력할 수 있습니다. 일본어 윈도우 사용 시

일본어 입력가능) MR.PIC-IDE는 국내기술로 개발된 프로그램이며

자체 업그레이드와 사용자의 요구로 지속적인 버전 업을 시행하고

있습니다. 사용 중 불편한 점이나 개선 사항이 있으시면 컴파일

테크놀로지 주식회사 홈페이지 (www.comfile.co.kr)로 연락 주시기

바랍니다. 앞으로의 기능향상에 적극 참조하겠습니다. 또한 PRO

ENGINE-II를 구입하신 분은 40페이지의 MR.PIC-PGM (PRO ENGINE-

II)에 관한 설명부터 읽으시면 됩니다.

2. MR.PIC-IDE의 특징

● WINDOWS 9x, ME, 2000, NT, XP지원

● 에디터 포함

(문서 크기 제한 없음, 펑션키 정의, 폰트 설정 및 탭 설정 가능)

● 어셈블러 기본 지원 (MPASM for WINDOWS)

● C컴파일러 지원

(MPLAB-C, CCS-C, HITECH-C 단, PIC18계열은 지원 안 함)

● MR.PIC 구동 프로그램 내장 (에뮬레이터, 프로그래머)

● 실행 상태를 파악할 수 있는 각종 윈도우 지원

(변수 윈도우, 와치 윈도우, 특수 레지스터 윈도우, 레지스터 덤프

윈도우, 프로그램 메모리 윈도우 등등)

● 디버깅 기능 (소스레벨 디버깅, 하드웨어 브레이크 포인트,

레지스터 값의 변경 가능)

● 실행을 제어하는 기능 (스탭 실행, 스탭 오버, 스탭 아웃,

에니메이트, 실시간 실행 기능)

3. MR.PIC-IDE 프로그램 설치 설치 CD를 CD드라이브에 삽입하고 다음과 같은 순서로 인스톨

합니다. 윈도우는 WINDOWS 9x/ME/2000/NT/XP를 사용할 수

있습니다. 인스톨 CD를 넣으면 자동으로 다음과 같은 화면이

표시됩니다. (CD버전에 따라 화면 표시는 다를 수도 있습니다.)

-3-

Page 4: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

<그림1.3-1> CD에서의 setup실행

<그림1.3-2> MR.PIC-IDE 프로그램 설치

-4-

클릭

클릭

Page 5: 32비트 Edition MR.PIC-IDE - Comfile

<그림1.3-3> MR.PIC-IDE 프로그램 설치

다음과 같이 순서대로 진행 아이콘을 클릭하시면

프로그램의 설치가 완료됩니다.

②클릭

①클릭

③ Next 클릭

-5-

Page 6: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

<그림1.3-4> 프로그램의 설치완료

“ Finish “ 버튼을 누르면 프로그램의 설치가 끝이 납니다. 정상적으로 설치가 완료 되었다면 다음과 같이 Program files-> Comfile Technology 폴더에

<그림1.3-5> Comfile Technology 폴더가 생성되고 MRPICIDE 아이콘이 생성된 모습

-6-

④Next 클릭

Page 7: 32비트 Edition MR.PIC-IDE - Comfile

<그림1.3-6> C:\MRPICIDE 폴더 내용

MRPICPGM 아이콘은 이전 버전에서 프로그래머만 단독으로 실행 할

경우 사용했었는데 버전12.6 이상 에서는 MR.PIC-PGM이 MR.PIC-

IDE에 포함 되었기 때문에 프로그래머만 사용할 경우도 MR.PIC-IDE

아이콘을 더블 클릭한 후 MR.PIC-IDE Toolbar에 있는 PGM버튼을 클릭

해야 합니다. 만약 MR.PIC-PGM 아이콘을 더블 클릭하면 다음과 같은

메시지 창이 표시됩니다.

<그림1.3-7> MR.PIC-PGM 아이콘 사용 시 메시지

MRPICIDE 아이콘을 더블 클릭하면 다음과 같은 화면이 나타납니다.

프로그래머를 사용하고자 하는 경우 툴 바에 있는 PGM 버튼을

클릭하거나 메뉴의 Tools-> Programmer(PRO ENGINE-II)를 사용 하면

프로그래머 화면이 표시 됩니다.

<그림1.3-8> MRPICIDE 실행 화면

이상으로 MRPIC-IDE프로그램의 설치가 모두 끝났습니다. 프로그램을

작성하기 전에 다운로드 방식을 USB 또는 LPT(프린터 포트)중 어떤

방식을 사용할지 먼저 선택 해야 합니다. 메뉴->Setup->Pc Interface

Setting… 을 선택하면 다음과 같은 화면이 표시 됩니다.

<그림1.3-9> 인터페이스 설정

MR.PIC용 USB 다운로드 컨버터 사용시는 USB로 선택하고

LPT포트를 사용시는 해당 LPT 포트 어드레스를 선택하면 됩니다.

연결이 안 될 경우는 제2장에 있는 MR.PIC 장비 설치를 참고하십시오.

-7-

PGM 버튼

Page 8: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

4. MR.PIC-IDE 업그레이드 안내 MR.PIC-IDE의 업그레이드된 프로그램은 인터넷상의 컴파일

홈페이지(www.comfile.co.kr)에서 다운 받을 수 있습니다.

<그림1.4-1> 다운로드 사이트

CHAPTER 2 MR.PIC 구성품 및 설치 1. 주의사항 및 시스템 사양 MR.PIC-IDE의 원활한 실행을 위해서 권장하는 최소의 하드웨어

사양은 다음과 같습니다.

▶ 팬티엄 2이상,

▶ 램 8M이상,

▶ 하드디스크의 여유 공간 20M이상,

▶ 한글 윈도우 9X, ME, 2000, NT,XP,

▶ 하나 이상의 프린터 포트 또는 USB 포트와 MR.PIC용 USB

다운로드 케이블

프린터 포트를 추가하여 LPT1, LPT2로 나누어 쓰시면, 훨씬 더 편리한

작업환경을 구축하실 수 있습니다. (프린터포트 카드는 PC용 프린터

공유기기를 취급하는 매장에서 쉽게 구입하실 수 있습니다.) 예를

들어 LPT1에는 MR.PIC을 연결하여 쓰시고, LPT2에는 프린터를

연결하여 쓰실 수 있습니다. 통상적으로 LPT1의 어드레스 는 378H,

LPT2의 어드레스는 278H입니다. 근래에 출시되는 PC에 25핀 프린터

포트가 없이 USB 포트만 있는 경우 MR.PIC용 USB 다운로드 케이블을

구매하셔야 합니다. MR.PIC용 USB 다운로드 케이블은 오직 MR.PIC

장비에만 사용할 수 있고 다른 장비와는 호환성이 없습니다. USB

다운로드 케이블 사용 시 다운로드 속도가 향상됩니다.

2. MR.PIC의 구성 품

MR.PIC 본체

25핀 다운로드 케이블

컨버터 보드 1개(508,509용) 전원용 DC 아답터 16V1A 1개

라이팅 컨버터 소켓 1개((MID, LOW 8핀, 300mil)

PIC16C50X, PIC12C(F)XXX, PIC14C000계열 라이팅

40핀 Probe 1개

28핀 Probe 2개(600mil, 300mil),

18핀 Probe 1개, 8핀 Probe 1개

-8-

Page 9: 32비트 Edition MR.PIC-IDE - Comfile

USB 다운로드 컨버터 (별도 구매)

I/O 프로텍트 보드

매뉴얼

프로그램 CD

<그림2.2-1> 구성 품

3. MR.PIC의 구성품에 대한 설명

MR.PIC: 에뮬레이션 및 PIC칩 롬 라이터

25핀 다운로드 케이블: 다운로드시 사용

MR.PIC용 USB 다운로드 컨버터: USB포트를 사용하여 MR.PIC와

인터페이스(별도 구매)

Probe 40 pin(600mil): MID 40핀

(PIC16C64,65,74/A,77,874/A,877/A) 에뮬레이션용 프로브

Probe 28 pin(300mil): MID 28핀

(PIC16C63,73/A,76,873/A,876/A) 에뮬레이션용 프로브

Probe 28 pin(600mil): LOW28핀

(PIC16C55,57) 에뮬레이션용 프로브

Probe 18 pin(300mil): MID,LOW18핀

(PIC16C54,58,F84/A,711,715,) 에뮬레이션용 프로브

Probe 8 pin(300mil): MID,LOW18핀

(PIC12C508,509,671) 에뮬레이션용 프로브

컨버터 보드 for 508,509: PIC12C508,509 에뮬레이션 시 Probe 18핀

케이블, Probe 8핀과 함께 사용

라이팅 컨버터 소켓 for: PIC16C50X, PIC12C(F)XXX, PIC14C000

계열의 Dip 타입 칩 라이팅 시 이 컨버터 소켓을 써야 합니다.

I/O 프로텍트 보드: ME-CHIP을 보호하기 위한 보드

아답터, 매뉴얼, 프로그램 CD

-9-

Page 10: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

4. MR.PIC 기능 설명

<그림2.4-1> MR.PIC 설명

① PLCC 타입의 ME Chip을 장착하는 소켓으로 만약 이 곳에 ME

Chip이 장착되어 있으면 프로젝트 파일 생성시 ME타입 선택을

PLCC로 해야 합니다.

② QFP 타입의 ME Chip을 장착하는 핀으로 만약 이 곳에 ME Chip이

장착되어 있으면 프로젝트 파일 생성시 ME타입 선택을 QFP로 해야

합니다.

③ DIP 타입의 ME Chip을 장착하는 핀으로 만약 이 곳에 ME Chip이

장착되어 있으면 프로젝트 파일 생성시 ME타입 선택을 DIP로 해야

합니다.

(PIC16CR84,711,715,622,558), 단, 최근 PIC16F84A는 QPF를 선택

④ DIP 타입의 PIC칩을 라이팅 하는 소켓, SMD 타입의 칩 라이팅 시는

별도의 컨버터 소켓이 필요합니다.

⑤ PIC칩을 라이팅해주는 PGM(프로그램머)콘트롤러 펌웨어로 유저가

직접 업그레이드 가능

⑥ MID 40핀 칩 PIC16C64,65,74,77,874/A, 877/A 등을 에뮬레이션 할

때 40핀 프로브를 이곳에 연결하고 반대 쪽은 타겟 보드와 연결

합니다.

⑦ MID 28핀(300mil) 칩 PIC16C62,63,73/A,76,873/A,876/A등을

에뮬레이션 할 때 28핀(300mil) 프로브를 이곳에 연결 하고 반대쪽은

타겟 보드와 연결합니다.

⑧ LOW 28핀(600mil) 칩 PIC16C55,57등을 에뮬레이션 할 때 28핀

(600mil) 프로브를 이곳에 연결하고 반대 쪽은 타겟 보드와 연결

합니다.

⑨ LOW 18핀(300mil) 칩 PIC16C54,56,58등을 에뮬레이션 할 때

18핀(300mil) 프로브를 이곳에 연결하고 반대 쪽은 타겟 보드와

연결합니다.

⑩ PIC MID RANGE 계열의 칩을 에뮬레이션 해주는 칩으로 PORTB을

담당하고 도터 보드에 있는 ME Chip과 함께 동작하여 에뮬레이션 됨

-10-

Page 11: 32비트 Edition MR.PIC-IDE - Comfile

⑪ 현재 동작 중인 상태를 나타냄

LED 녹색 주황색

LOW LOW END 계열의 에뮬레이터 선택 됨 동작 중

MID MID RANGE 계열의

에뮬레이터 선택 됨 동작 중

PGM PGM(프로그램머)이 선택 됨 동작 중

⑫ PIC LOW END 계열의 칩을 에뮬레이션하는 칩으로 도터 보드와는

상관없이 단독으로 에뮬레이션 됨

⑬ 기본으로 지원되는 주파수 이외의 주파수를 사용 하고자 할 때

케이스를 열고 해당 위치에 Full 타입의 OSC를 삽입 후 주파수 선택

DIP 스위치를 “ Internal OSC” 로 선택하면 됩니다.

⑭ 파워 선택 및 주파수 설정

<그림2.4-2> MR.PIC 주파수 선택

주파수 선택: 오른쪽 3개의 DIP스위치로 에뮬레이션 하고자 하는

주파수를 선택합니다.(현재 32KHz는 지원 되지 않습니다.) 만약

4.194304MHz,14.7456MHz등 특정 주파수를 사용하고자 할 경우

케이스를 열고 “ 유저 CLOCK IN” 단자에 사용하고자 하는 FULL

타입의 OSC를 장착한 후 주파수 선택 DIP 스위치를 “ Internal

OSC” 로 선택하면 됩니다.

파워 선택

Int.Power :MR.PIC의 아답터를 연결하고 파워 선택 스위치를

Int.Power로 선택하면 타겟 보드와 연결하는 프로브의 VDD, VSS

단자에서 타겟 보드로 5V와 0V가 공급 됨 (주의: 타겟 보드에서는 5V를

공급하면 안됨)

Int. Power

외부의 전원과 연결 된 상태

(타겟보드와 전원이 연결 된 상태)

<그림2.4-3> 내부 파워 선택 시 타겟 보드와 전원 연결 상태

Ext.Power :MR.PIC의 아답터를 연결하고 파워 선택 스위치를

Ext.Power 로 선택하면 타겟 보드와 연결하는 프로브의 VSS단자만

타겟 보드와 연결 됨. 타겟 보드에 5V 이외의 전원(12V, 24V,,,)이

필요한 경우 또는 Int. Power 사용 시 전류가 충분치 않을 때 사용

(주의: 타겟 보드에서 전원을 별도로 공급해야 함)

Ext. Power

외부의 전원과 분리 된 상태

(타겟보드와는 GND만 연결 된 상태)

<그림2.4-4> 외부 파워 선택 시 타겟 보드와 전원 연결 상태

⑮ MID RANGE 18핀(300mil)칩 PIC16F84/A,711,715,622,558 등을

에뮬레이션 할 때 18핀(300mil) 프로브를 이곳에 연결하고 반대 쪽은

타겟 보드와 연결합니다.

5. 설치에 앞서... 본 제품은 전기적으로 매우 예민한 제품이므로 취급 시 세심한 주의가

필요합니다. 아래에 적힌 전원 ON시 주의사항 및, 취급 시 주의사항을

반드시 지켜주시기 바랍니다.

첫 번째. 전기적으로 접속을 하거나, 연결을 해체할 때에는 반드시

전원을 OFF한 상태에서 조작하여 주시기 바랍니다.

두 번째. 전원을 켤 때는 PC, MR-PIC, 타겟 보드의 순으로 전원을

켜주시기 바랍니다. (이때 프로브의 1번 핀의 위치가 제대로

되었는지를 반드시 확인하시기 바랍니다.) 타겟 보드에 전원이

들어가있는 상태에서 프로브를 장착하면 MR.PIC에 상당한 Damage가

가해질 수 있습니다.

-11-

Page 12: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

세 번째. 타겟 보드의 부품 접속 등을 바꿀 때에는 반드시 타겟 보드의

전원을 OFF한 상태에서 하시기 바랍니다. 대부분의 고장은 전원이

ON된 상태에서 무리한 조작(부품 등을 바꾼다거나 연결을 바꾸는

등)이 원인인 경우가 많습니다.

네 번째. ESD나 정전기로부터 보호하기 위해서는 타겟 보드를

접지(Ground)하는 것이 좋습니다.

6. MR.PIC 장비 설치 ◆ PC와 MR.PIC 연결

PC와 MR.PIC 장비는 두 가지 방식으로 연결 가능합니다. 하나는 USB

포트를 이용하는 방식이고 다른 하나는 LPT(프린터) 포트를 이용하는

방식입니다.

◆ LPT(프린터)포트 이용 시

LTP 포트 이용 시는 제품에 포함 된 25핀 케이블을 사용합니다.

첫 번째. 제공되는 케이블의 한쪽 끝을 PC의 프린터 포트와 연결

하고 다른 한쪽은 MR.PIC과 연결합니다. (참고로 다운로드 시 사용

되는 케이블은 25핀 1:1 케이블을 사용합니다.)

두 번째. 타겟 보드에 별도의 전원이 없으면 제공되는 아답터 (16V1A

DC아답터)를 MR.PIC과 연결합니다. (이때 아답터의 극성은 무관

합니다. MR.PIC 내부에서 한번 더 정류하도록 설계 되어 있습니다.)

아답터는 110V/ 220V겸용 이며 전환 방법은 아답터의 케이스에

설명되어 있습니다

<그림2.6-1> MR.PIC 와 PC의 LPT포트 연결

컴퓨터의 프린트

포트에 연결합니다.

-12-

Page 13: 32비트 Edition MR.PIC-IDE - Comfile

<그림2.6-2> MR.PIC과 MR.PIC USB 다운로드 컨버터 연결

◆ USB포트 이용 시

USB 포트 이용 시 MR.PIC용 USB ↔ LPT 컨버터를 사용해야 합니다.

이 컨버터는 제품에 포함되어 있지 않는 옵션 제품으로 별도로

구매하셔야 합니다. 두 가지 방법 중 한가지로 연결 후 PC와 MR.PIC의

연결 상태를 다음과 같이 확인합니다.

◆ PC와 MR.PIC 통신 검사..

이 검사를 하기 위해서는 MR.PIC-IDE 프로그램이 설치 되어 있어야

하고 모든 설치 과정을 마치신 사용자는 다음 순서대로 따라해

보십시오.

◆ LPT 포트의 경우

① MR.PIC의 전원 스위치를 On 시킵니다.

(타겟 보드는 연결하지 않아도 됩니다.)

② MR.PIC-IDE 프로그램을 실행합니다.

③ MR.PIC-IDE 메뉴에서 다음과 같이 선택합니다.

<그림2.6-3> PC 인터페이스 설정 메뉴

해당 프린터 포트 어드레스를 선택 후 “ Test” 버튼을 클릭합니다.

<그림2.6-4> 프린터 포트 테스트

장비와 PC가 정상적으로 동작하면 다음과 같이 MR.PIC 장비를

찾았다는 메시지를 표시합니다.

<그림2.6-5> MR.PIC 장비 발견

만약 아래와 같이 MR.PIC 장비를 발견 하지 못할 경우에는 FAQ를

읽어보시기 바랍니다.

컴퓨터의 USB

포트에 연결

-13-

Page 14: 32비트 Edition MR.PIC-IDE - Comfile

<그림2.6-6> MR.PIC Error

◆ USB 포트의 경우

MR.PIC용 USB 컨버터 드라이버 COMFILE_USB_DRIVER 가 설치 되어

있지 않거나 설치 했다가 드라이버를 삭제한 경우 다음과 같이 새

하드웨어를 발견 했다고 알려 줍니다.

<그림2.6-7> MR.PIC용 USB 컨버터 발견

<그림2.6-8> 새 하드웨어 검색 마법사 시작

<그림2.6-9> 하드웨어 장치 드라이버 검색

<그림2.6-10> 드라이버 위치 지정

위치 지정(S)을 체크 한 후 다음을 클릭합니다.

<그림2.6-11> 드라이버가 있는 위치 설정

<그림2.6-12> 드라이버 지정

MRPICIDE 프로그램이 설치된 폴더에서 FTD2XX.INF 파일을 선택 후

열기(O) 버튼을 클릭합니다.

<그림2.6-13> 드라이버 검색 완료

클릭

클릭

-14-

Page 15: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

<그림2.6-14> 드라이버 설치

<그림2.6-15> 드라이버 설치 완료

MR.PIC용 USB 컨버터 드라이버가 정상적으로 설치 된 경우 장치

관리자의 범용 직렬 버스 컨트롤러에 COMFILE_ USB_DRIVER가 등록

되어 있습니다.

<그림2.6-16> 드라이버가 장치 관리자에 등록 된 상태

◆ MR.PIC용 USB 드라이버 완전 삭제하기

MRPIC-IDE가 설치 된 폴더에 C:₩MRPICIDE₩Ftd2xxun.exe 파일을

실행하면 완전히 다음과 같은 화면이 표시 되고 제거됩니다.

<그림2.6-17> USB용 드라이버 완전 삭제

클릭

클릭

-15-

Page 16: 32비트 Edition MR.PIC-IDE - Comfile

CHAPTER 3 MR.PIC-IDE 사용법

1. MR.PIC-IDE에 대하여 MR.PIC-IDE 화면

<그림3.1-1> MR.PIC-IDE 창

-16-

Page 17: 32비트 Edition MR.PIC-IDE - Comfile

2. 메뉴에 대한 설명 1. File

◆ New…

새 프로그램을 작성하는 메뉴로 프로그램 소스작성 하기 전 프로젝트

파일을 만들어 정보를 저장합니다. 프로젝트 파일에 대한 설명은

제5장에서 자세하게 다루고 있습니다.

<그림3.2-1> 프로젝트 파일

MRPIC-IDE 프로그램에서의 프로젝트 파일은 비주얼 C++또는 비주얼

베이직의 프로젝트 파일과는 달리 단지 MRPIC-IDE 프로그램의

환경을 설정하기 위한 파일로 INI파일에 저장할 내용을 별도의 파일로

저장하는 용도로 쓰인다고 생각하시면 됩니다.

◆ New Project

프로젝트 파일 및 소스 파일을 새로 작성할 때 사용합니다.

◆ Open Project… Ctrl +O

이미 프로젝트 파일이 작성되어 있는 경우에 사용 합니다.

◆ Edit Project…

이미 작성된 프로젝트 파일의 내용을 수정할 때 사용합니다.

◆ Open ERR File… Ctrl +E

어셈블리시 또는 컴파일시 에러가 발생했을 때 에러의 내용을 확인

하고자 할 때 사용합니다.

◆ Open Listing File… Ctrl +L

리스트 파일을 열 때 사용합니다.

◆ Exit

MR.PIC-IDE 프로그램을 종료합니다.

2. Tools

◆ Auto F9

소스 파일 수정 후 수정된 소스 파일을 저장하고 어셈블리 또는

컴파일 한 후 에러가 없을 때 Download 하고 RUN까지 연속적으로

실행하고자 할 때 사용합니다.

◆ Make

소스 파일 수정 후 어셈블리 또는 컴파일 작업만 할 경우 사용합니다.

◆ Download F4

에뮬레이션을 위해 MR.PIC쪽으로 Download할 때 사용합니다.

◆ Editor F2

소스를 편집하기 위해 에디터를 실행합니다.

◆ Debug Mode

디버깅 모드로 전환

◆ Programmer (PRO ENGINE 2) …

MRPICPGM(Programmer)을 실행합니다.

-17-

Page 18: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

◆ Calculator…

WINDOWS의 보조프로그램에 있는 계산기를 실행합니다.

◆ EmEditor…

EmEditor를 기동합니다. (Em Editor는 MR.PIC-IDE11.X 버전에서

사용하는 내장 에디터 입니다.)

◆ Tools Option Setup …

어셈블러 및 컴파일러 옵션을 설정합니다.

<그림3.2-3> TOOL 옵션 설정

만약 컴파일러가 C:₩Program files₩picc에 설치 되어 있다면

옵션 맨 앞에 Path를 적어 주십시오.

위의 화면은 MR.PIC-IDE 프로그램을 설치 시 기본으로 설정되어

있습니다. 각각의 옵션 설정은 해당 매뉴얼을 참조하시기 바랍니다.

3. Debug

브레이크 포인트는 디버깅 작업에 있어서 없어서는 안될 가장 중요한 기능입니다. 단어가 의미하는 대로 브레이크를 걸 수 있는 포인트를 설정하는 기능입니다. 다시 말해 프로그램 실행 도중 원하는 부분에서 실행을 멈추고 그 당시의 상황(포트의 입출력 상태, 레지스터의 상태,

PC값 각종 플래그)을 볼 수 있도록 하는 기능입니다. 브레이크

포인트를 설정하는 방법 역시 매우 간단합니다. 소스 리스트 윈도우 중

브레이크 포인트를 설정하고 싶은 위치에 마우스 커서를 놓고 마우스

왼쪽 버튼을 더블 클릭하면 됩니다. 그러면 해당 위치가 검은색 바로 반전되어 나타나고 다시 해제하고 싶으면 같은 방법으로 더블 클릭하면

됩니다. 이런 식으로 프로그램 메모리 전 영역에 걸쳐서 브레이크

포인트를 설정/해제할 수 있습니다.

<그림3.2-4> 브레이크 포인트 설정

브레이크 포인트는 주로 프로그램 중 특정부분이 제대로 수행되고

있는지를 확인할 때 사용합니다. 만약 브레이크 포인트를 설정해

놓았는데도 불구하고 실행이 멈추지 않았다면 그 부분은 실행되지

않았다는 것을 의미합니다. 이와는 반대로 실행되면 안 되는 부분에

브레이크 포인트를 설정해놓고 실행하였을 때, 브레이크가 걸리면

잘못 되었다는 것을 의미하기도 합니다. 또 하나의 방법으로는 어떤

액션을 취했을 때 브레이크가 걸리게 하는 방법이 있습니다. 예를

들어 키 입력을 처리하는 루틴의 시작 부분에 브레이크 포인터를

설정해놓고 실행한 다음, 키 입력을 하면 브레이크가 걸리게 됩니다.

브레이크 포인트를 활용하는 경우는 이와 같은 3가지 경우가

대부분입니다. 흔히 초보자는 브레이크 포인트의 활용 방법을 잘

몰라서 못쓰는 경우가 많은데, 위의 3가지 경우가 생겼다면 서슴없이

브레이크 포인트 기능을 활용해 보시기 바랍니다.

◆ Clear All Break Point

현재 선택되어 있는 모든 Break Point를 클리어 합니다. 다른 한 가지

방법이 또 있는데 DownLoad 버튼을 클릭하거나 F4를 누르면 모든

Break Point가 클리어 됩니다.

◆ Clear All Watch List

현재 Watch Window에 등록된 모든 내용을 삭제합니다.

-18-

Page 19: 32비트 Edition MR.PIC-IDE - Comfile

◆ Find Break Point Ctrl +B

현재 선택된 Break Point가 여러 개 있다면 순차적으로 이동하면서

보여줍니다. 설정해 놓은 브레이크 포인트가 있는 곳을 찾아주는 기능으로 Ctrl-B키를 사용해서 쉽게 사용할 수도 있습니다. (MR.PIC-

IDE을 사용하다 보면 브레이크 포인트를 설정해 놓은 곳을 몰라 소스

리스트 윈도우를 한참 동안 뒤지는 경우가 종종 발생하는데 이때 Ctrl-B를 누르면 간단히 브레이크 포인트를 찾을 수 있습니다

◆ Find Label Ctrl +F

프로그램 작성시 사용된 Label을 찾아 줍니다. 이 기능은 Scroll Bar를

사용해서 찾는 방법 보다 빨리 Label을 찾을 수 있습니다.

◆ Modify Register Value

Special Registers및 Variable Registers의 값을 변경합니다. (Special

Registers값 중 사용자가 변경할 수 없는 Register는 변경 불가능합니다)

Special Register의 해당 레지스터를 더블클릭 하거나 메뉴 항목을

선택하면 아래와 같은 창이 나타납니다. 메뉴항목을 선택했을 때는

Register(Variable Name) 텍스트 박스가 공백인 상태입니다. 이곳에

변수 명을 쓰거나 해당 레지스터 번지를 기입합니다. Dec는 10진수

형식으로 값을 입력할 때 사용하며, Hex는 16진수 형식으로 값을

입력할 때 사용합니다. Modify Width옵션 중 Byte는 1Byte를 대상으로

값이 변경됩니다. Word는 현재 변수가 할당된 번지와 연속된 그 다음

번지까지 2바이트를 대상으로 값이 변경됩니다. Double Word는 현재

변수가 할당된 번지와 번지+1, 번지+2, 번지+3까지의 연속된

4바이트를 대상으로 값이 변경됩니다. 다음은 Special Register

PORTB를 더블클릭 한 예입니다. Modify Width 옵션을 Byte로 선택하고

Dec에 255를 입력합니다. TRISB 레지스터 의 값이 0으로 설정되어

있다면 OK를 클릭하면 Special Register의 PORTB 레지스터 값이 255로

변경 됩니다.

<그림3.2-5> 레지스터 값 변경 10진수로

다음 예는 유저 램 영역의 0x20번지 선택 후 Modify Width를 Double

Word로 선택하고 Hex 형식으로 12345678을 입력한 결과 입니다.

<그림3.2-6> 레지스터 값 변경 16진수로

<그림3.2-7> 값이 바뀐 상태

◆ Bookmark 설정

Bookmark를 설정하려면 해당 어드레스 번지에 마우스를 위치시키고

더블클릭을 하면 하늘색 컬러로 반전이 되면서 지정이 됩니다.

◆ Clear All Bookmark

Break Point 기능은 소스를 수정 후 컴파일 하고 다운로드 하면 Break

Point가 모두 클리어 되어 사라집니다. 이 경우는 매번 Break Point를

재설정 해야 하는데 Break Point를 설정하기 원하는 소스위치를

찾기가 쉽지 않습니다. 같은 소스코드 부분을 여러 차례 디버깅할 때

Bookmark를 사용하면 우선 Bookmark 기능으로 소스의 위치를 찾고

그 다음 Break Point를 설정하면 쉽습니다. Clear All Bookmark는 설정된

모든 Bookmark를 클리어 합니다.

<그림3.2-8> BOOK MARK 기능

-19-

Page 20: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

◆ Goto Bookmark F11

현재 선택된 Bookmark가 여러 개 있다면 순차적으로 이동하면서

보여줍니다.

4. Run

◆ Run F5

에뮬레이터 실행

◆ Break F6

에뮬레이션이 중지되고 디버깅 모드로 진입. 에뮬레이션 중에만

활성화 됨

◆ Single Step into F7

현재 PC가 가리키는 명령 실행

◆ Step Over Shift + F7

서브루틴 안에 있는 명령을 모두 처리하고 빠져 나오는 기능으로

서브루틴의 끝은 반드시 RETURN 또는 RETLW 명령으로 되어 있어야

합니다. Single Step into로 처리하면 여러 번 수행 해야 하지만 이

기능을 사용 시 한 번에 서부루틴을 처리하고 탈출할 수 있습니다.

◆ Animate

Run 동작 중에는 에뮬레이터가 실시간으로 동작하고 있기 때문에

현재 어떤 명령을 수행하고 있는지 또는 현재 각종 레지스터의 값이

얼마인지 PC화면으로 볼 수 없습니다. 그렇기 때문에 현재 어떤

명령이 수행되는지 보고자 한다면 Single Step into 명령을 계속

실행해서 구현 해야 하는데 이 경우 매번 클릭을 해야 하는 수고를

감수해야 합니다. 이런 경우 Animate 기능을 사용하면 자동으로

PC(Program Counter)가 100 ~1000ms 시간 단위로 현재 PC가 어떤

명령을 수행하고 있는지 모니터로 확인 할 수 있습니다.

◆ Reset Processor F8

에뮬레이터의 동작을 중지하고 PC(Program Counter)를 리셋 벡터로

이동합니다. 이 동작을 수행한 후 Special Registers값은 리셋 상태의

값으로 설정이고 Variable Registers의 값은 Garbage(쓰레기) 값으로

됩니다.

5. Setup

◆ Use Korean Menu

메뉴를 한글로 나타나게 합니다.

◆ PC Interface Setting…

MR.PIC 또는 PRO ENGINE-II를 PC와 연결할 LPT로 연결 할지 USB로

연결할 것인가를 설정하고 테스트하는 메뉴입니다. 이 책의 6. MR.PIC

장비설치 쪽을 참조 하십시오.

◆ Animate Speed Setting

Animate Speed를 설정하는 기능입니다. 설정 값은 100 ~ 1000ms

입니다.

<그림3.2-9> 에니메이트 속도 조절

-20-

Page 21: 32비트 Edition MR.PIC-IDE - Comfile

6. Window

◆ Default Screen Setup

MR.PIC-IDE 화면 구성을 기본으로 설정합니다. Special Registers

Window,Variable Registers Window, Source Window, Dump Window로

구성됩니다.

◆ Screen Setup for C

MR.PIC-IDE 화면 구성을 Special Registers Window,Variable Registers

Window, Source Window, Dump Window 로 구성합니다. HI-TECH C의

경우 Source Window에 C 코드만 나타나므로 어셈블리어 명령에 직접

Break Point를 설정할 수 없기 때문에 Code Window를 만들어 C언어로

작성된 코드를 모두 어셈블리어로 표시해줍니다.

◆ User Screen Setup

Special Registers Window, Variable Registers Window, Source Window,

Dump Window 를 현재 사용자가 설정한 화면 구성으로 모든 Window

를 로드 합니다.

1 Source Window

소스를 보여주는 Window

2 Special Registers

PIC칩의 Special Register를 보여주는 Window

3 Variable Register

유저사용 변수를 보여주는 Window

4 Dump Window

◆ File Register Dump

Special Register + Variable 내용을 모두 보여주며 오른쪽에 Ascii코드

값으로 표시됩니다.(단, 보여지는 값은 모두 hex로 표시 됩니다.)

<그림3.2-10> File Register Dump

◆ Program Memory Dump

프로그램 메모리의 내용을 보여줍니다. (단, 사용되지 않는 메모리의

내용은 모두 0으로 표시)

<그림3.2-11> Program Memory Dump

◆ Watch List

유저가 등록한 Special Register 및 Variable Register를 보여줍니다.

디버깅을 하다 보면 관심이 집중되는 몇 개의 레지스터가 생기게 됩니다. MR.PIC-IDE의 변수 윈도우나 특수 레지스터 윈도우에는 모든 레지스터의 내용을 표시하고 있기 때문에 별 문제가 없을 것 같지만 작업을 하다 보면 스크롤바를 눌러가면서 찾아 다녀야 하는 불편함이 있다는 사실을 알게 될 것입니다. 그래서 현재 디버깅하는데 집중적

으로 보아야 할 몇몇 레지스터들을 Watch List에 등록해 놓고 이

값들을 살펴 보는 기능으로 값의 변화 상태를 한 눈에 알아 볼 수

있습니다. 그리고 MRPIC-IDE 프로그램이 종료되어도 현재 Watch

List의 내용은 별도의 파일에 저장되기 때문에 프로그램을 기동하고

등록해줄 필요가 없습니다. 프로젝트별로 와치윈도우의 내용을

저장하는 NAME.WCH 파일이 생성됩니다.

<그림3.2-12> Watch List

-21-

Page 22: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

◆ Watch List 에 등록하는 방법

Special Register 또는 Variable Register Window 창에서 등록하고자 하는

Register를 오른쪽 마우스 버튼으로 클릭하면 등록 됩니다.

◆ Watch List 에서 삭제하는 방법

WatchList Window 창에서 삭제 하고자 하는 Register를 오른쪽 마우스

버튼으로 클릭하면 삭제됩니다.

◆ Stack Content

PIC의 Hardware Stack의 내용을 보여줍니다. PIC MID-RANGE 급에는

Stack이 8개 있습니다. PIC BASE-LINE급에는 Stack이 2개 있습니다.

사용되지 않은 Stack값은 Garbage 값이 있습니다.

<그림3.2-13> 현재의 Stack 내용을 보여 줍니다.

◆ Program Memory usage

프로그램 메모리의 사용 현황을 표시해줍니다. 표시 내용 중 “ *” 는

사용된 프로그램 메모리를 의미하고 “ .” 은 사용 되지 않은 프로그램

메모리를 의미합니다. 프로그램 메모리는 연속적으로 사용되는 것이

좋으며,“ *” 와 “ *” 사이에 “ .” 이 많이 있으면 fragment가 많이

발생된 것이므로 프로그램 메모리의 사용 효율이 저하됩니다.

<그림3.2-14> 프로그램 메모리가 사용된 영역을 “ *” 표시

5 MRPIC-IDE Editor

MRPIC-IDE 자체 에디터를 기동합니다. 즉, 편집 모드로 바뀝니다.

7. Help

◆ Release Note…

MR.PIC-IDE 프로그램이 업그레이드 히스토리를 보여줍니다.

<그림3.2-15> MRPIC-IDE 업그레이드 히스토리

◆ Tip & Information for MRPIC-IDE…

MR.PIC-IDE 사용시 도움이 될만한 팁을 표시합니다.

<그림3.2-16> MRPIC-IDE를 실행 시 팁 표시

-22-

Page 23: 32비트 Edition MR.PIC-IDE - Comfile

◆ Tool Bar 커맨드 버튼

<그림3.2-17> Tool Bar 버튼 설명

<그림3.2-18> Tool Bar 버튼 설명

Break 기능을 사용할 것인지 선택하는 체크 박스입니다. (단, BASE LINE은 지원 안 함) Break Enable 이 체크되어 있고 Source Window에 Break

Point가 설정되어 있다면 PC와 Break Point가 일치하면 실행을 멈추게 됩니다. Break Enable가 체크되어 있지 않으면 PC와 Break Point가 일치해도

실행을 멈추지 않습니다.

-23-

Page 24: 32비트 Edition MR.PIC-IDE - Comfile

3. 에디터 사용법

◆ Edit

Tool Bar의 Editor 버튼을 누르게 되면 Menu Bar에 Edit 메뉴가 추가

됩니다.

◆ 에디터에서의 키 사용법

에디터 시 키의 사용법은 다른 에디터의 사용법과 같기 때문에 설명을

생략하고 특정 핫키를 사용하는 방법을 설명 드리겠습니다.

커서키 UP (커서를)위로 이동

커서키 DOWN (커서를)아래로 이동

커서키 LEFT (커서를)좌로 이동

커서키 RIGHT (커서를)우로 이동

HOME (커서를) 한 문장의 제일 처음으로 이동

END 한 문장의 제일 끝으로 이동

CTRL+HOME 문서의 제일 처음으로 이동

CTRL+END 문서의 제일 끝으로 이동

PGUP 한 페이지 위로 이동

PGDN 한 페이지 아래로 이동

CTRL+F 단어 찾기

F3 찾기 반복

SHIFT+F3 뒤로 찾기

CTRL+H REPLACE

CTRL+Z UNDO

◆ 블럭 설정과 관계된 기능키

SHIFT+커서키 블럭을 설정한다.(PGUP등도 사용 가능)

CTRL+X 현재 선택된 영역을 클립보드로 이동

CTRL+C 현재 선택된 영역을 클립보드로 복사

CTRL+V 클립보드의 내용을 커서 위치로 복사

◆ 파일처리와 관계된 기능키

CTRL+O 다른 파일을 오픈

CTRL+S 현재 작업 중인 내용을 세이브

위의 기능키들은 에디팅 작업 중에 자주 사용하게 되는 것이므로

외워두면 편리합니다. Auto를 누르면 자동으로 Save를 하고 컴파일을

진행합니다.

◆ Editor Environment…

<그림3.3-1> Editor Environment 설정

◆ Color/Font

소스의 Color및 폰트 사이즈를 변경합니다.

◆ Language/Tabs

Language에 맞게 에디터가 설정되고 Tab 사이즈 조정하는 메뉴지만,

MR.PIC-IDE에서는 ASM 파일의 경우 8로 C의 경우 4로 자동 설정

됩니다. 그리고, Language 설정은 따로 저장되지 않습니다.

◆ Keyboard

에디터 사용 시 자주 사용하는 키를 사용자가 자기 자신에게 익숙한

KEY로 재정의 할 수 있습니다. 예를 들면 앞에서 F3 키가 Find Next

(찾기 반복)에 설정되어 있었는데 만약 F11로 설정하는 것이

편리하다면 다음과 같이 수정하면 됩니다. (단, V12.6의 경우 키 설정

상태가 프로그램 종료 시 따로 저장되지 않으므로 프로그램 기동 시

마다 다시 설정해 주어야 하는 불편함이 있습니다.)

-24-

Page 25: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

◆ 재 설정순서( F3키를 F10키로 재 정의하는 경우)

<그림3.3-2> F3 Key 제거

<그림3.3-3> F10 등록

<그림3.3-4> F10 등록완료

CHAPTER 4 MR.PIC 제약사항 및 액세서리

1. Probe(프로브) 및 I/0 프로텍트 보드 사용법

◆ I/O프로텍트 보드 사용 시

ME Chip의 해당 포트는 타겟 보드의 해당 포트와 직접 연결 되어

있습니다. 그러므로 과전압 및 과전류 유입으로 인해 I/O포트가 손상

되거나 ME Chip이 완전히 파손 될 수 도 있습니다. 그래서 ME Chip

보호를 위해 포트에 다이오드와 100옴 저항을 직렬로 연결해

놓았습니다. 이로 인해 포트에 입출력 전압에 차이가 있으며,

A/D기능 사용 시 결과 값에 차이가 있을 수 있으니 유의하시기

바랍니다. 연결 방법은 공급되는 I/O 프로텍트 보드의 40핀 케이블의

턱이 있는 부분과 MR.PIC장비의 Mid-40 Pin 박스 콘넥터에 연결하면

됩니다.

<그림4.1-1> MID RANGE 사용 시 I/O 프로텍트 보드 연결 방법

주의 : MR.PIC를 사용 중 특정 포트의 입출력 또는 특수 기능이 동작

안 되거나 다운로드 시 에러가 발생하는 경우 ME칩이 손상을

받은 경우 입니다. ME Chip의 손상에 대해서는 무상 A/S되지

않습니다. 그러므로 MR.PIC 취급 시 각별한 주의가

요망됩니다.

◆ I/O 프로텍트 보드 회로도

PORT

VDD

DIODE

DIODE

100 Ohm

<그림4.1-2> I/O 프로텍트 보드 회로도

-25-

Page 26: 32비트 Edition MR.PIC-IDE - Comfile

2. PIC12C50X와 PIC16C5X 계열의 차이점

프로그램

메모리

유저램 I/O Wake up from

Sleep

내부

RC발진

PIC16C54 512 워드 25 12 /MCLR

WDT Time out 없음

PIC12C508 512 워드 25 6 /MCLR

WDT Time out

GP0,GP1,GP3

핀 체인지

있음

PIC16C56/58 1K 워드

2K워드

25

73

12

12

/MCLR

WDT Time out 없음

PIC12C509 1K 워드 41 6 /MCLR

WDT Time out

GP0,GP1,GP3

핀 체인지

있음

<표 4.2-1> PIC12C54X와 PIC12C50X의 차이점

우선 PIC12C508/509를 에뮬레이션 하기 전에 다음과 같은 특징을

알고 사용해야 합니다. 원래 MR.PIC 장비는 12비트 계열의 PIC

16C54,55, 56, 57, 58만을 지원합니다. 그런데 12비트 계열의 칩에서

8핀 타입의 PIC12C508/509 칩 이라는 I/O및 발진방식(Internal RC),

그리고 포트의 Week pull-ups, Wake-up on pin change등의 기능이

추가된 변형된 칩이 등장했습니다. 그런데 PIC12C508/509칩이

12비트 계열의 칩으로 PIC16C54/56/58로 에뮬레이션 할 수 있는

방법을 생각 끝에 여러 가지 제약은 있지만 추가된 기능 예의 포트

에뮬레이션만 할 수 있도록 필터보드를 만들었습니다.

3. PIC12C508/509 에뮬레이션 방법과 제약사항 제약1. 현재 MR.PIC장비에서 에뮬레이션 시 SLEEP 기능을 실험 할 수

없습니다.

제약2. MR.PIC 장비가 SLEEP모드를 지원하지 않기 때문에

PIC12C508/509칩에서 슬립모드에서 GP0,GP1,GP3의 핀 체인지에

의한 Wake-up기능을 지원하지 않습니다. 또한 PIC12C508/509

칩에서는 핀 체인지에 의한 Wake-up이 기능을 활성화 시키는 비트가

OPTION 레지스터의 bit7(/GPWU)로 되어 있는데 MR.PIC 장의 BASE-

LINE 계열의 칩(PIC16C5X)에는 OPTION 레지스터의 bit7이 사용 할 수

없는 비트로 되어 있기 때문입니다. <표 4.3-2> 참조

제약3. PIC12C508/509칩에서 GP0,GP1,GP3의 Weak pull-ups기능을

설정할 수 없습니다. PIC12C508/509 칩에서는 Weak pull-ups (GP0,

GP1,GP3) 기능을 활성화 시키는 비트가 OPTION 레지스터의

bit6(/GPPU)로 되어 있는데 MR.PIC 장의 BASE-LINE 계열의 칩에는

OPTION 레지스터의 bit6이 사용 할 수 없는 비트로 되어 있기 때문

입니다. <표 4.3-2> 참조

BASE-LINE의 칩과 PIC12C508/509칩의 OPTION 레지스터와 STATUS

레지스터의 구조가 달라서 이 기능들이 지원 안 되는 것입니다.

(다음에 나오는 테이블 참조)

PIC16C5X 계열의 BASE-LINE 칩과 PIC12C508/509칩의 OPTION

레지스터와 STATUS 레지스터의 차이

PIC12C508/509의 STATUS 레지스터

Bit 7 6 5 4 3 2 1 0

GPWUF - PA0 TO PD Z DC C

PIC16C5X 계열의 STATUS 레지스터

Bit 7 6 5 4 3 2 1 0

PA2 PA1 PA0 TO PD Z DC C

<표 4.3-1> PIC12C54X와 PIC12C50X의 STATUS 레지스터의 차이점

PIC12C508/509의 OPTION 레지스터

Bit 7 6 5 4 3 2 1 0

GPWU GPPU T0CS T0SE PSA PS2 PS1 PS0

PIC16C5X 계열의 OPTION 레지스터

Bit 7 6 5 4 3 2 1 0

- - T0CS T0SE PSA PS2 PS1 PS0

<표 4.3-2> PIC12C54X와 PIC12C50X의 OPTION 레지스터의 차이점

위의 표와 같이 PIC12C508/509와 PIC16C5X계열의 STATUS

레지스터의 7번, 6번 비트와 OPTION 레지스터의 7번, 6번 비트의

기능이 서로 다르거나 사용할 수 없는 비트로 되어 있기 때문에

이러한 기능들이 지원되지 않는 것입니다.

제약4. PIC12C508/509를 에뮬레이션 시 GP5를 OSC1/CLKIN 기능

으로 사용할 수 없습니다. MR.PIC은 안정된 동작을 위해서 외부

로부터 클럭을 공급할 수 없게 되어 있습니다. 그러므로 GP5를

OSC1/CLKIN 기능으로 사용할 수 없으며 내부적으로도 OSC1이

연결되어 있지 않습니다. 물론 칩으로 롬 라이팅 시

옵션 중 하나를 체크 한 후 라이팅 하면

GP5를 OSC1/CKIN 핀으로 사용 가능합니다.

-26-

Page 27: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

주의: 칩으로 라이팅 시 XT,LP 모드 사용 시 즉 , GP5를 OSC1/CKIN

으로 사용 시 GP4는 OSC2/CKOUT 으로 사용되므로 포트로 사용할

수 없으며 ExtRC 모드 사용 시 GP4로 사용 가능합니다.

제약 5. MR.PIC는 Internal RC를 지원하지 않습니다. (PIC16C5X계열은

Internal RC 기능이 없으므로) Internal RC는 칩 내부에 저항과 콘덴서에

구성된 발진 방식을 사용하는 것으로 PIC12C50X칩을 사용 시

조금이나마 제품의 가격을 줄일 수 있기 때문에 나온 것입니다.

PIC12C508/509칩에는 OSC1, OSC2단자에 발진소자를 연결하지 않고

칩 내부에 구성된 Internal OSC(RC 4MHz) 발진을 사용할 수 있는데 이

기능을 사용하기 위해서 Internal Clock OSCCAL(Oscillator Calibration

Value: 보정 값)을 참조해야 합니다. 이 값은 각 칩마다 약간의 오차가

있기 때문에 RC 4MHz에 근접하게 보정해주는 역할을 하며 이 값은

리셋 벡터에 위치해 있습니다. 이 기능은 Internal OSC 기능을 사용할

때만 의미가 있습니다.

MR.PIC로 에뮬레이션 할 때는 MR.PIC 측면의 클럭 선택 스위치

중에는 Internal RC모드가 없기 때문에. 이 경우 클럭 선택 스위치를

4MHz로 선택 하시면 됩니다. 어차피 Internal RC 발진을 사용한다는

것은 4MHz를 사용하는 것이기 때문입니다. 물론 칩으로 동작 시에는

휴즈 옵션을 Internal RC로 선택 후 라이팅 하면 외부에 발진 회로를

붙이지 않아도 동작 됩니다.

주의: MR.PIC로는 OSCCAL값을 참조할 수 없습니다. OSCCAL 값은

칩 마다 다르고 공장 출하 시 이미 정해져 있기 때문입니다.

OSCCAL 값이 있는 위치

디바이스 리셋 벡터 비 고

PIC12C508 1FFH 이 번지에 OSCCAL값이 들어 있습니다.

PIC12C509 7FFH 이 번지에 OSCCAL값이 들어 있습니다.

<표 4.3-3> PIC12C50X의 리셋 벡터와 OSCCAL 값

<그림 4.3-1> PIC12C508A Blank칩을 읽었을 때의 내용

<그림4.3-1>의 OSCCAL값이 0C7C인데 OPCODE와

OPERAND로 분리하면 Opcode는 0C Operand는 84가

됩니다. 0C7C는 어셈블리어로 MOVLW 7Ch가 됩니다.

OSCCAL값은 리셋 벡터에 위치해 있으므로 PIC12C508

/509에서 OSCCAL값을 참조하기 위해서는 소스코드를

다음과 같이 코딩해야 합니다.

-27-

Page 28: 32비트 Edition MR.PIC-IDE - Comfile

PIC12C508의 경우

ORG 1FFH

ORG 000H

MOVWF OSCCAL

GOTO STAR_ROUTINE

PIC12C509의 경우

ORG 3FFH

ORG 000H

MOVWF OSCCAL

GOTO STAR_ROUTINE

만약 PIC12C508/509의 Internal OSC 기능을 사용하지 않는다면

MOVWF OSCCAL 명령 대신에 CLRW 명령을 쓰면 됩니다. 앞에서도

언급했지만 지금 설명한 이 내용이 MR.PIC로 PIC12C508/509를

에뮬레이션 할 때는 사용할 수 없습니다. 이유는 실제 에뮬레이션이

되는 PIC16C54/56칩에는 이 기능이 없기 때문입니다. 그렇다면

MR.PIC에는 Internal RC발진이 없는데 어떻게 합니까? 어차피 Internal

RC발진이 4MHz 이므로 MR.PIC 장비 측면에 있는 주파수 선택 딥

스위치를 4MHz로 설정 후 에뮬레이션 하시면 됩니다.

LIST P=12C508 INDF EQU 00H TMR0 EQU 01H PCL EQU 02H STATUS EQU 03H FSR EQU 04H OSCCAL EQU 05H GPIO EQU 06H #DEFINE GP0 GPIO,0 #DEFINE GP1 GPIO,1 #DEFINE GP2 GPIO,2 #DEFINE GP3 GPIO,3 #DEFINE GP4 GPIO,4 #DEFINE GP5 GPIO,5 VARIABLE LOOP_CNT1 = 07H VARIABLE LOOP_CNT2 = 08H ORG 1FFH MOVLW 00H ORG 00H MOVWF OSCCAL GOTO START START

MOVLW B'11000111' ;GP0,GP1,GP3 체인지 ;인터럽트 사용 안 함 ;GP0,GP1,GP3 WEEK ;PULL-UPS 사용 안 함

OPTION MOVLW B'00001000'

; GP3 은 입력 전용 포트임 TRIS GPIO

; define direction CLRF GPIO LOOP BTFSC GP3 GOTO LOOP BSF GP0 CALL DELAY_RTN BCF GP0 CALL DELAY_RTN BSF GP1 CALL DELAY_RTN BCF GP1 CALL DELAY_RTN BSF GP2 CALL DELAY_RTN BCF GP2 CALL DELAY_RTN BSF GP4 CALL DELAY_RTN BCF GP4 CALL DELAY_RTN BSF GP5 CALL DELAY_RTN BCF GP5 CALL DELAY_RTN GOTO LOOP DELAY_RTN MOVLW . 200 MOVWF LOOP_CNT2 CLRF LOOP_CNT1 DL_1 DECFSZ LOOP_CNT1 GOTO DL_1 DECFSZ LOOP_CNT2 GOTO DL_1 RETLW 0 END

칩으로 동작

시에는 이

부분을 주석

처리해야

합니다.

3FFH 번지에는 0CXX(MOVLW XX) 값이 들어 있으므로 000H번지에서는 현재 W값을 OSCCAL레지스터에 넣어 주면

됩니다. 그러므로 000H번지에는 MOVWF OSCCAL 명령을 코딩 해 주면 됩니다.

1FFH 번지에는 0CXX(MOVLW XX) 값이 들어 있으므로 000H번지에서는 현재 W값을 OSCCAL레지스터에 넣어 주면

됩니다. 그러므로 000H번지에는 MOVWF OSCCAL 명령을 코딩 해 주면 됩니다.

-28-

Page 29: 32비트 Edition MR.PIC-IDE - Comfile

제약6. PIC12C509를 에뮬레이션 할 때 PIC16C56으로 하게 되면

프로그램 메모리 사이즈는 같은데 RAM 사이즈에서 차이가 나게

됩니다.

방법1: 램을 많이 사용하지 않는 경우 프로젝트 파일 생성시

디바이스를 PIC16C56으로 설정하시고 LIST P=16C56으로 설정하고,

PIC16C56에는 GPIO레지스터가 없으므로 PORTB를 GPIO로 생각하고

쓰시면 됩니다. (표 4.3-1) 참조 LIST P=16C56 INDF EQU 00H TMR0 EQU 01H PCL EQU 02H STATUS EQU 03H FSR EQU 04H OSCCAL EQU 05H PORTB EQU 06H #DEFINE GP0 PORTB,0 #DEFINE GP1 PORTB,1 #DEFINE GP2 PORTB,2 #DEFINE GP3 PORTB,3 #DEFINE GP4 PORTB,4 #DEFINE GP5 PORTB,5 VARIABLE LOOP_CNT1 = 07H VARIABLE LOOP_CNT2 = 08H ORG 3FFH MOVLW 33H ORG 00h MOVWF OSCCAL GOTO START_ROUTINE START_ROUTINE MOVLW B'11000111' ;GP0,GP1,GP3 핀 체인지 Wake up 사용 안 함 ;GP0,GP1,GP3 WEEK PULL-UPS 사용 안 함 OPTION MOVLW B'00001000' TRIS PORTB CLRF PORTB LOOP BTFSC GP3 GOTO LOOP BSF GP0 CALL DELAY_RTN BCF GP0 CALL DELAY_RTN BSF GP1 CALL DELAY_RTN BCF GP1 CALL DELAY_RTN BSF GP2 CALL DELAY_RTN BCF GP2 CALL DELAY_RTN BSF GP4 CALL DELAY_RTN

BCF GP4 CALL DELAY_RTN BSF GP5 CALL DELAY_RTN BCF GP5 CALL DELAY_RTN GOTO LOOP DELAY_RTN

MOVLW .200 MOVWF LOOP_CNT2 CLRF LOOP_CNT1 DL_1 DECFSZ LOOP_CNT1 GOTO DL_1

DECFSZ LOOP_CNT2 GOTO DL_1 RETLW 0 END

방법2: PIC12C509를 에뮬레이션 할 때 PIC16C58로 하게 되면

프로그램 메모리 사이즈와 램 사이즈가 틀리므로 다음과 같이

수정해서 에뮬레이션 한 후 칩에 라이팅 할 때는 다시 PIC12C509에

맞게 프로그램을 수정 후 어셈블 된 HEX코드로 라이팅 해야 합니다.

LIST P=16C58 INDF EQU 00H TMR0 EQU 01H PCL EQU 02H STATUS EQU 03H FSR EQU 04H OSCCAL EQU 05H PORTB EQU 06H #DEFINE GP0 PORTB,0 #DEFINE GP1 PORTB,1 #DEFINE GP2 PORTB,2 #DEFINE GP3 PORTB,3 #DEFINE GP4 PORTB,4 #DEFINE GP5 PORTB,5 VARIABLE LOOP_CNT1 = 07H VARIABLE LOOP_CNT2 = 08H ORG 7FFH MOVLW 33H ORG 00H MOVWF OSCCAL GOTO START_ROUTINE START_ROUTINE MOVLW B'11000111' OPTION MOVLW B'00001000' TRIS PORTB CLRF PORTB

TRIS GPIO 대신 PORTB

CLRF GPIO 대신 CLRF PORTB

실제 PIC12C509에 라이팅 할 때는

다음과 같이 수정 후 라이팅 해야

합니다.

ORG 3FFH

ORG 00h

MOVWF OSCCAL

GOTO START_ROUTINE

-29-

Page 30: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

4. PIC12CXXX Filter 보드 사용법

MR.PIC로 PIC12C508/509를 에뮬레이션 할 때는 PIC12C508/509와 PIC16C54/56핀 배치 및 구조가 다르고 PIC12C508/509는 순수한 I/O포트의 기능

말고도 특수 기능(Weak pull-ups, Wake-up on pin change)으로 사용 가능하므로 어플리케이션에 따라 설정을 바꿀 수 있어야 합니다. 그렇기 때문에

Filter 보드를 사용해야 합니다. Filter 보드 사용 시 PIC16C5X 계열의 칩과 PIC12C508/509칩의 I/O포트 연결이 다음과 같이 대응 됩니다.

Jumper set to GP2,PG3,GP4,GP5 Jumper set to T0CI,/MCLR,OSC2,OSC1

PIC16C5X PIC12C508/509 PIC16C5X PIC12C508/509

RB0 GP0 RB0 GP0

RB1 GP1 RB1 GP1

RB2 GP2 T0CKI GP2/T0CKI

RB3(입력전용) GP3 /MCLR GP3,/MCLR/Vpp

RB4 GP4 OSC2 GP4/OSC2

RB5 GP5 OSC1 GP5/OSC1/CLKIN (지원 안됨)

<표 4.4-1> PIC12CXXX 필터 보드 점퍼 사용법

◆ MR.PIC와 PIC12CXXX Filter보드 연결 방법

<그림4.4-1> MR.PIC와 PIC12CXXX 필터 보드 연결

-30-

Page 31: 32비트 Edition MR.PIC-IDE - Comfile

PIC12C508/509와 같은 8핀 디바이스를 에뮬레이션 하기 위해서는 별도의 필터보드가 필요합니다. 아래그림과 같이 필터보드의 한쪽 끝은

MR.PIC의 16C54/56/58쪽에 연결하고 한쪽 끝을 타겟 보드와 연결합니다.

OSC1 / GP5

OSC2 / GP4

MCLR / GP3

T0CKI / GP2

<그림4.4-2> MR.PIC와 PIC12CXXX 필터 보드 연결

PIC12C508/509의 I/O포트의 기능 말고도 특수 기능으로 사용 가능하므로 어플리케이션에 따라 설정을 바꿀 수 있어야 합니다. 그렇기 때문에 Filter

보드를 사용해야 합니다. (자세한 내용은 데이터 북 참조) 이 기능은 라이팅 시 퓨즈선택에 의해서 결정되므로, 에뮬레이션 할 때에는 점퍼 셋팅으로

변경 해줘야 합니다. 점퍼의 사용 방법은 다음과 같습니다.

<그림4.4-3> PIC12CXXX 필터 보드 점퍼 사용법

주의 : /MCLR/GP3은 입력 전용 포트입니다.

-31-

Page 32: 32비트 Edition MR.PIC-IDE - Comfile

5. PIC12C67X 에뮬레이션 방법과 제약사항 PIC12C67X를 에뮬레이션 하기 전에 다음과 같은 특징을 알고

사용해야 합니다. 그냥 보기에 PIC12C67X칩과 PIC12C50X칩이

비슷해 보이는데 외형만 같지 근본적으로 완전히 다른 특징을 가지고

있습니다. 자세한 차이점은 아래의 표를 참조하십시오.

차이점 PIC12C50X PIC12C67X

Core 12비트 14비트

Me 칩 따로 없음

(PIC16C01-ME:5X용) PIC12C67X-E(전용)

RAM 사이즈 적다 많다

스택 사이즈 2 Level 8 Level

A/D 기능 없다 있다

Edge 인터럽트 없다 있다

Internal OSCCAL 읽는

방식 MOVWF OSCCAL

PIC12C671의 경우

ORG 00H

CALL 3FFH

BSF STATUS,5

MOVWF OSCCAL

BCF STATUS,5

PIC12C672의 경우

ORG 00H

CALL 7FFH

BSF STATUS,5

MOVWF OSCCAL

BCF STATUS,5

<표 4.5-1> PIC12C50X 와 PIC12C67X 비교표

Jumper set to GP2,PG3,GP4,GP5 Jumper set to T0CK,/MCLR,OSC2,OSC1

GP0/AN0 GP0/AN0

GP1/AN1/VREF GP1/AN1/VREF

GP2/AN2/INT T0CKI

GP3 /MCLR/ VPP

GP4/AN3 OSC2

GP5 OSC1/CLKIN(자원 안 됨)

<표4.5-3> I/O 프로텍트 보드의 PIC12C67X 점퍼 설정

주의 : GP3,/MCLR 핀은 입력 전용 포트입니다.

◆ MR.PIC장비로 PIC12C67X를 에뮬레이션 할 경우 다음과 같은

제약 사항이 있습니다.

제약1. MR.PIC은 안정된 동작을 위해서 외부로부터 클럭을 공급할 수

없게 되어 있습니다. 그러므로 GP5를 OSC1/CLKIN 기능으로 사용할

수 없습니다. 내부적으로 OSC1이 연결되어 있지 않습니다. 물론 롬

라이팅 시 아래의 옵션 중 하나를 체크 한 후 라이팅 하면 GP5를

OSC1/CKIN 핀으로 사용 가능합니다.

주의: XT, HS,LP 모드 사용 시 즉 , GP5를 OSC1/CKIN으로 사용 시

GP4는 OSC2/CKOUT으로 사용되므로 포트로 사용할 수

없습니다.

제약 2. MR.PIC로 PIC12C67X의 PIN CHANGE 인터럽트 기능이

지원되지 않습니다. (2007년 3월 현재 까지는 지원되지 않습니다.)

제약2. MR.PIC은 INTERNAL RC발진을 지원하기 않으므로 에뮬레이션

시 다음과 같이 작성하시고 실제 칩으로 동작 시는 다음과 같이 주석

처리한 후 재 어셈블 하신 후 라이팅 해야 합니다. LIST P=12C671 :생략 ( 뒤에 전체 소스가 있습니다.) ORG 3FFH RETLW 55H ORG 00H CALL 3FFH ;OSCCAL 값 읽기 RETLW XX BSF STATUS,5 MOVWF OSCCAL

◆ MR.PIC와 PIC12C67X 프로브 연결 방법

PIC12C50X 계열은 12XXX FILTER보드를 사용했는데 PIC12C67X

계열은 MID RANGE 계열(14비트 코아)로 I/O 프로텍트 보드에 있는

PIC12C67X전용 8핀 박스 콘넥터에 연결하며 이곳에 있는 점퍼 핀을

사용하여 I/O 컨피큐레이션을 설정합니다.

<그림4.5-1> MR.PIC와 PIC12C67X 프로브 연결도

-32-

Page 33: 32비트 Edition MR.PIC-IDE - Comfile

◆ PIC12C67X I/O 프로텍트 보드에 있는 점퍼 세팅 방법

<그림4.5-2> I/O PROTECT PIC12C67X 필터 보드 점퍼 사용법

모든 포트를 디지털 I/O포트로 설정 시는 모든 점퍼를 GPx쪽으로

설정합니다. IntRC를 사용하고 점퍼 세팅을 모두 GPx쪽으로 설정한

경우 GP0,GP1,GP2,GP4, GP5는 디지털 I/O로 GP3은 입력전용으로

디지털 입력으로만 사용할 수 있습니다. (단, ADCON1레지스터 참조)

다음 예제는 GP0,GP1,GP2,GP4,GP5에 LED를 연결 하고 GP3에는

S/W(Pull-up)를 연결 후 S/W 가 입력되면 LED를 순차적으로 점등하는

단순한 예입니다. 칩으로 실험 시는 아래에 동그라미로 설명된 부분을

주석 처리 후 어셈블 한 후 라이팅 하십시오. 라이팅 시 휴즈 옵션은

다음과 같이 설정하십시오. 다음의 예제를 어셈블 한 후 라이팅 할 때

휴즈 옵션을 다음과 같이 선택하십시오.

<그림4.5-3> 휴즈 설정

VCC

PIC12C67X

U?

VSS8

VDD1

GP5/OSC1/CLKIN2

GP4/OSC2/AN3/CLKOUT3

GP3/MCLR/VPP4

GP0/AN07

GP1/AN1/VREF6

GP2/T0CKI/AN2/INT5

LED4

LED1

LED3

LED0

LED2

10K

S/W

<그림4.5-4> 회로도

LIST P=12C671 INDF EQU 00H TMR0 EQU 01H PCL EQU 02H STATUS EQU 03H FSR EQU 04H GPIO EQU 05H PCLATH EQU 0AH INTCON EQU 0BH PIR1 EQU 0CH ADRES EQU 1EH ADCON0 EQU 1FH OPTIONR EQU 01H TRISR EQU 05H PIE1 EQU 0CH PCON EQU 0EH OSCCAL EQU 0FH ADCON1 EQU 1FH

-33-

Page 34: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

#DEFINE GP0 GPIO,0 #DEFINE GP1 GPIO,1 #DEFINE GP2 GPIO,2 #DEFINE GP3 GPIO,3 #DEFINE GP4 GPIO,4 #DEFINE GP5 GPIO,5 VARIABLE LOOP_CNT1 = 20H VARIABLE LOOP_CNT2 = 21H

ORG 3FFH RETLW 55H

ORG 00H CALL 3FFH BSF STATUS,5 MOVWF OSCCAL START_ROUTINE MOVLW B'11000111' OPTION MOVLW 07H MOVWF ADCON1 MOVLW B'00001000' TRIS GPIO BCF STATUS,5 CLRF GPIO LOOP BTFSC GP3 GOTO LOOP BSF GP0 CALL DELAY_RTN BCF GP0 CALL DELAY_RTN BSF GP1 CALL DELAY_RTN BCF GP1 CALL DELAY_RTN BSF GP2 CALL DELAY_RTN BCF GP2 CALL DELAY_RTN BSF GP4 CALL DELAY_RTN BCF GP4 CALL DELAY_RTN BSF GP5 CALL DELAY_RTN BCF GP5 CALL DELAY_RTN GOTO LOOP DELAY_RTN MOVLW .200 MOVWF LOOP_CNT2 CLRF LOOP_CNT1 DL_1 DECFSZ LOOP_CNT1 GOTO DL_1 DECFSZ LOOP_CNT2 GOTO DL_1 RETLW 0 END

6. PIC16F877에뮬레이션 시 제약사항

FLASH 프로그램 Read/Write 기능이 지원 되지 않습니다. PIC16F87X

계열의 칩은 다른 계열의 칩과는 달리 FLASH 프로그램 메모리

Read/Write 기능이 가능 합니다. 기능은 칩이 동작 중에 프로그램

메모리를 읽고 쓸 수 있는 기능 입니다. 하지만 MR.PIC에서는 이

기능을 지원하지 않기 때문에 이 기능을 이용하려면 실제 칩으로

하셔야 합니다. 이 기능을 이용하면 프로그램하고 남은 영역을

EEPROM처럼 데이터를 저장하는 용도로 사용할 수 있습니다.

PIC16C7X와 PIC16F87X와 PIC16F87XA칩은 다음과 같은 차이점이

있습니다.

<표4.6-1> PIC16C7X, PIC16F87X, PIC16F87XA칩의 비교

PIC16C7X PIC16F87X PIC16F87XA

28/40 28/40 28/40

3 3 3

11 or 12 13 or 14 14 or 15

PSP,USART,SSP

(SPI,I2C Slave)

PSP,USART,SSP

(SPI,I2C Master/Slave)

PSP,USART,SSP

(SPI,I2C Master/Slave)

20MHz 20MHz 20MHz

2.5V – 5.5V 2.2V – 5.5V 2.0V – 5.5V

8bit

4 conversion clock

selects

10bit

4 conversion clock selects 10bit 7 conversion clock selects

2 2 2

- - 2

- - yes

4K,8K EPROM 4K,8K FLASH

(Erase/Write on single word)

4K,8K FLASH

(Erase/Write on four-word blocks)

192,8K EPROM 192,368 bytes 192,368 bytes

None 128,256 bytes 128,256 byte

On/Off Segmented, starting at end

of program memory On/Off

- On/Off Segmented, starting at beginning of program

memory

- In-Circuit Debugger,

Low Voltage Programming In-Circuit Debugger, Low Voltage Programming

-34-

Page 35: 32비트 Edition MR.PIC-IDE - Comfile

CHAPTER 5 프로그램 작성 및 사용법

1. 프로젝트 파일 작성

여기서는 처음 프로그램을 작성하는 순서대로 설명을 하므로 따라해

보시기 바랍니다. 프로그램을 작성하기 위해서는 프로젝트 파일을

먼저 작성해야 합니다. 앞에서 잠깐 언급 했듯이 프로젝트 파일은

단순히 에뮬레이션에 필요한 작업 정보를 저장하는 용도로 사용되는

정보 파일로 생각하시면 됩니다. 우선 File New Project 를

선택합니다. 그러면 다음과 같이 프로젝트 파일이 나타납니다.

<그림5.1-1> 새 프로젝트 파일 생성

Project 파일에는 다음과 같은 내용을 선택하게 되어 있습니다.

Device : 현재 개발 할 칩

Me Type : 장비 안에 내장 된 에뮬레이션 칩의 종류(ME -Chip)로

다음과 같은 타입이 있고 디바이스에 따라 다음과 같이

정해져 있습니다.

주의: ME-Chip Type은 현재 개발 중인 칩의 타입을 묻는 것이 아니라

MR.PIC 장비 안에서 에뮬레이션 되는 칩의 종류를 묻는

것으로 이 설정이 잘못 되었을 경우 기본적인 동작이 되지

않습니다.

현재 사용 중인 ME-Chip의 종류가 어떤 타입인지 모르는 경우 MR.PIC

장비의 케이스를 열고 “ What’s Me type” 을 클릭하면 다음과 같이

MR.PIC 내부의 상태를 볼 수 있는데 ME-Chip이 삽입 되어 있는

상태에 따라

<그림5.1-2> What’s Me type

◆ Socket 1(PLCC type) : PIC16F877-ME/L

◆ Socket 2(DIP type): PIC16CR84-ME/P, PIC16C558-ME/P,

PIC16C622 -ME/P, PIC16C711-ME/P, PIC16C715-ME/P

◆ Socket 3(QFP type) : PIC16C74A-ME, PIC16C77-ME,

PIC6F877-ME/PT, PIC12C67X-ME/PT

칩이 장착되어 있을 경우 각각 해당 소켓을 선택하면 됩니다.

주의: PIC16C5X및 PIC12C50X를 선택 시는 디폴트로 설정되어 있기

때문에 Socket을 선택 할 수 없는 상태로 표시됩니다. 2. ME Chip에 따른 지원 가능한 디바이스 리스트

◆ PIC16C74A-ME/PT인 경우 PIC16C74/A,73/A,72/A,65,64,63, 62 를

지원 하며 이 경우 Socket3를 지정하여 사용합니다.

◆ PIC16C77-ME/인 경우 PIC16C77,76,67,66을 지원하며 이 경우:

Socket3를 지정하여 사용합니다.

◆ PIC16F877A-ME/PT인 경우 PIC16F877A,876A,874A,873A, 872/A

를 지원 하며 이 경우 Socket3를 지정하여 사용합니다.

◆ PIC12C67X-ME/PT 인 경우 PIC12C672,671을 지원하며 이 경우

Socket3를 지정하여 사용합니다.

◆ PIC16F84A-ME/P 인 경우 PIC16F84/A,83/A을 지원하며 이 경우

Socket3 를 지정하여 사용합니다.

◆ PIC16C558-ME/P인 경우 PIC16C554,558을 지원하며 이 경우

Socket2를 지정하여 사용합니다.

◆ PIC16C622-ME/P인 경우 PIC16C622,621,620을 지원하며 이 경우

Socket2를 지정하여 사용합니다.

◆ PIC16C711-ME/P 인 경우 PIC16C711,710을 지원하며 이 경우

Socket2를 지정하여 사용합니다.

-35-

Page 36: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

◆ PIC16C715-ME/P 인 경우 PIC16C715를 지원하며 이 경우

Socket2를 지정하여 사용합니다.

◆ PIC16F877-ME/L 인 경우 PIC16F877,876,874,873,872를 지원하며

이 경우: Socket 1를 지정하여 사용합니다.

PIC16F877A-ME/PL인 경우 PIC16F87XA 를 지원합니다.

주의: MR.PIC 장비를 구입신지 오래 되신 고객 중 “ What’s ME

type” 의 내용과 다른 도터보드(상판 PCB)가 장착되어 있는

경우는 Socket1로 선택 하십시오.

주의: PIC16C877A, 876A, 874A, 873A는 Analog Comparator

module이 2개 있는 칩으로 PIC16F877-ME/L 또는

PIC16F877-ME/PT에서는 지원하지 않고 PIC16F877A-

ME/PL에서만 지원 됩니다.

◆ Compile : 소스 작성시 사용한 언어 선택

MPASM Assembler : 어셈블러로 작성 된 소스(기본제공)

MPLABC C Compiler : MPLABC C로 작성된 소스(옵션)

CCS-C PCB Compiler : BASE-LINE 계열을 칩으로

CCS-C로 작성 된 소스(옵션)

CCS-C PCM Compiler : MID-RANGE 계열의 칩으로

CCS-C로 작성 된 소스(옵션)

HI-TECH C Compiler : HI-TECH C로 작성 된 소스(옵션)

주의: 옵션으로 되어 있는 Compiler들은 별도로 구매 후 설치 되어

있어야 지원 가능합니다.

Clock : 현재는 사용되지 않으므로 아무 값이나 상관 없음

WDT : 에뮬레이션 시 와치독 타이머 사용 여부

On : 에뮬레이션 중 설정 된 와치독 타임 아웃 주기로 MR.PIC장비가

리셋 됨. 그러므로 반드시 소스 코드에서 와치독 타임 아웃 주기 안에

CLRWDT 명령이 수행 되야 MR.PIC 가 정상적으로 동작합니다.

Off : 에뮬레이션 중 와치독 타임 아웃 기능을 사용하지 않음. 이 경우

MRPICPGM 또는 PRO ENGINE-II로 칩을 라이팅 할 때 반드시 휴즈

옵션의 항목이 체크 되어 있지 않은

상태에서 라이팅 되야 칩이 정상 동작합니다.

◆ 프로젝트 파일 작성 예1, 소스파일이 작성되어 있지 않은 상태

Device: PIC16F877

Socket3(QFP type)

Compiler : ASM

WDT = Off인 경우 다음과 같이 선택합니다.

File New 를 선택합니다

<그림5.2-1> 프로젝트 파일 옵션 선택

Ok 버튼을 누르면 다음과 같은 빈 화면이 나타나는데 이곳에 아래의

소스를 어셈블리어로 작성한 후 소스작성이 완료되면 메뉴의 File->

Save As… 버튼을 눌러 소스 파일을 저장할 폴더를 선택 하고

소스파일 이름을 지정합니다. 이 예제에서는 C:₩MRPICIDE₩TEST.

ASM으로 선택 했습니다. Auto 버튼을 누르면 컴파일(어셈블) 되고

에러가 없으면 다운로드 되고 실행까지 됩니다.

<그림5.2-2> 새 프로젝트 파일 작성

주의: 프로젝트 화면에서 DEVICE 항목에 PIC16C877A,876A, 874A,

873A가 없지만 장비안에 PIC16F877A-ME/PT가 장착 된 경우

이들 DEVICE를 지원합니다. 따라서 PIC16F877A-ME/PT가

장착된 경우 DEVICE를 PIC16F877로 선택하면 PIC16F877A를

에뮬레이션 할 수 있습니다.

-36-

Page 37: 32비트 Edition MR.PIC-IDE - Comfile

<그림5.2-3> 폴더 지정 및 파일명 지정

에러가 없이 작성된 소스라면 다음과 같이 화면 중앙에 MPASM

어셈블러가 어셈블하고 에러가 없으면 녹색 바가 끝까지 진행되고

다운로드가 시작 될 것 이고 만약 소스파일에 에러가 있다면

빨강색으로 바뀌고 중간에 어셈블이 정지됩니다.

<그림5.2-4> 소스를 어셈블 중인 화면

<그림5.2-5> 에러가 발생 한 경우 대치 방법

에러가 없을 경우 해당 폴더에 다음과 같은 파일들이 생성됩니다.

TEST.PRJ ,TEST.ASM ,TEST.COD ,TEST.LST ,TEST.HEX ,TEST.$$$ ,TE

ST.$$2 ,TEST.ERR 3. MRPIC-IDE 동작 살펴보기

지금까지 제대로 하셨다면 아래와 같은 상태로 되어 있을 것입니다.

우선 MR.PIC-IDE에 대한 자세한 설명을 하기 전에 지금 작성한

프로그램 코드가 MR.PIC-IDE에서 어떻게 동작되는지 알아보고 이

후에 MR.PIC-IDE의 기능에 대한 자세한 설명을 하도록 하겠습니다.

<그림5.3-1> 리셋 버튼을 누른 후 의 상태

Step into 버튼은 한 명령씩 실행하는 기능입니다.

Reset 버튼을 누른 후 파란색의 직사각형(PC:Program Counter 이하

프로그램 카운터로 명명)이 GOTO SIJAK이라는 어셈블리어 명령어에

위치하고 있을 것입니다.(BASE LINE칩의 경우는 Rest Vector가

다르므로 1FFH, 3FFH, 7FFH 중 하나에 놓이게 됩니다.)

1. 이 상태에서 Step into 버튼을 클릭하면 GOTO SIJAK 명령이

실행되어 프로그램 카운터는 0001번지로 이동하게 됩니다. 좌측의

Special Registers 창의 PCL의 값을 보면 이 값도 01로 바뀌었고

빨강색으로 변해 있을 것입니다.

2. 이 번에 실행될 명령은 SIJAK 라벨에 있는 BSF STATUS,5 입니다.

그럼 다시 Step into 버튼을 클릭해 보십시오. 그러면 프로그램

카운터는 0002가 되고 Special Registers 창의 STATUS 값이

빨강색으로 바뀌고 값은 00111XXX로 됩니다. (여기서 XXX는

0또는1이 될 수 있다는 것입니다.) BSF STATUS, 5 명령은 STATUS

레지스터의 5번 비트를 Set(1) 시키는 명령으로 이 명령 실행 후

실제로 STATUS, 5 비트가 1로 되어 있습니다.

-37-

Page 38: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

3. 다음은 MOVLW 00H, MOVWF TRISB를 실행 할 차례입니다. 다시 한

번 Step into를 클릭하면 Special Register의 W 값이 00000000이 되고

다시 한 번 Step into를 클릭하면 TRISB 레지스터의 값이

00000000으로 변경됩니다.

4. 다음은 0004번지가 실행 될 차례입니다. BCF STATUS,5 명령은

STATUS레지스터의 5번 비트를 Clear(0)하는 명령으로 이 명령 실행 후

값이 00011XXX로 변경 됩니다.

5. 다음 실행될 명령은 0005번지의 CLRF BF로 이 명령은

BF레지스터(유저 램 영역의 20H)를 0으로 초기화 합니다. Step into

실행 후 00000000으로 변경 됩니다.

6. 다음 실행될 명령은 0006번지의 CLRF PORTB로 이 명령은

PORTB레지스터(Special Register 영역의 06H)를 0으로 초기화 합니다.

Step into 실행 후 00000000으로 변경 됩니다.

7. 다음은 0007번지가 실행 될 차례입니다. INCF BF는 BF레지스터

값을 1 증가 시키는 명령입니다. Step into 실행 후 값이 00000001이

됩니다.

8. 다음은 0008번지가 실행 될 차례입니다. INCF PORTB는

PORTB레지스터 값을 1 증가 시키는 명령입니다. Step into 실행 후

값이 00000001이 됩니다.

9. 다음은 0009번지가 실행 될 차례입니다. GOTO MAIN_LOOP는 분기

명령으로 프로그램 카운터를 MAIN_LOOP라는 라벨로 이동시킵니다.

라벨은 실행되는 코드가 아니므로 그 밑에 있는 0007번지로 프로그램

카운터가 옮겨갑니다. 이 후부터는 Step into 버튼을 클릭할 때 마다

프로그램 메모리 번지 0007 ~ 0009 번지를 반복해서 실행하게 되며

BF값과 PORTB값은 INC 명령이 실행 될 때마다 1씩 증가 하게 됩니다.

만약 PORTB에 다음과 같이 LED를 연결하면 출력되는 결과를 볼 수

있습니다.

Run 버튼을 클릭하면 계속해서 동작을 하게 되는데

이때는 속도가 빠르기 때문에 8의 모든 LED가 ON 된 것처럼

보입니다.

RB3

RB1

VCC

RB5RB4

RB7

330 * 8 ea

빨강색

VSS

RB6

RB2

RB0VDD

<그림5.3-2> LED 연결 방법

이상으로 MR.PIC-IDE와 MR.PIC의 간단한 동작을 확인해 보았습니다.

이제 에뮬레이터가 대충 어떤 기능을 하는 장비인가를 이해하셨을

것입니다. 다음 장에서는 MR.PIC 장비와 MR.PIC-IDE사용에 관하여

자세히 설명하겠습니다.

◆ 프로젝트 파일 작성 예2, 소스파일이 이미 작성되어 있는 상태

아래의 소스 내용을 텍스트 에디터를 이용하여 그대로 타이핑

하십시오.

<그림5.3-3> C 소스

Device: PIC16F877

Socket3(QFP type)

Compiler : CCS-C PCM compiler

WDT = Off인 경우 다음과 같이 선택합니다.

File Open을 선택하고 해당 폴더에서 C:₩MRPICIDE₩TESTC.C

파일을 더블 클릭하면 새 프로젝트 파일이 나타나면 위와 같이

프로젝트 내용을 설정한 후 OK버튼을 누르면 다음 화면과 같이 이미

작성된 소스가 나타나게 됩니다.

-38-

Page 39: 32비트 Edition MR.PIC-IDE - Comfile

<그림5.3-4> C로 이미 작성된 소스가 있는 경우

<그림5.3-5> CCS-C PCM Compiler가 컴파일 한 결과

소스가 에러 없이 타이핑 되었다면 에러가 발생하지 않고 컴파일이

완료되고 다운로드 된 후 실행 될 것 입니다. 단, 반드시 CCS-C PCM

Compiler가 설치되어 있어야 합니다. 앞에서 작성한 TEST.ASM 파일과

TESTC.C 파일은 같은 동작을 하는 프로그램 입니다. 다음에서 이

프로그램과 에뮬레이터의 사용법을 설명 드리겠습니다. 아래의

소스는 어셈블리어로 작성했던 예제와 같은 동작을 하는 CCS-C

코드입니다. 이 화면은 컴파일 상태를 알려주는 화면으로 ROM, RAM,

ERROR, WARNING 상태 보여줍니다.

<그림5.3-6> CCS-C로 작성된 프로그램이 동작하는 상태

TEST.ASM을 스텝실행 하면서 확인 했던 것과 똑같이 해보십시오.

CCS-C PCW및 PCWH의 IDE 사용법은 매뉴얼 및 참고 서적을

참고하시기 바랍니다.

◆ 프로젝트 파일 작성 예3 (HI-TECH C )

Device: PIC16F877

Socket3(QFP type)

Compiler : HITECH- C compiler

WDT = Off인 경우 다음과 같이 선택합니다.

<그림5.3-7> HI-TECH C로 작성시 프로젝트 파일

-39-

Page 40: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

HI-TECH 사에서 공급되는 PIC컴파일러는 다음과 같이 크게 2가지로

분류 됩니다.

1. PICC : BASE LINE(12비트),MID RANGE(14비트)계열의 PIC16C5X,

PIC12C50X, PIC16C6X, 7X, F87X, PIC17CXXX등을 지원하며 DOS용

IDE 환경을 지원하는 컴파일러입니다.

2. PICC-18 : HIGH END(16비트) 계열의 PIC18FXXX계열의 칩만

지원하며 WINDOWS IDE 환경을 지원하는 컴파일러입니다.

주의: MR.PIC에서는 PICC컴파일러만 지원합니다. 이 예제의 경우

PIC16F877계열이므로 HITECH-C Compiler를 선택하면

됩니다.

아래의 소스는 TEST.ASM, TESTC.C와 같은 동작을 하는 HI-TECH C

코드입니다.

<그림5.3-8> HI-TECH C로 작성 된 샘플 소스

<그림5.3-9> 컴파일 된 상태

<그림5.3-10> HI-TECH C로 작성된 프로그램이 동작하는 상태

MRPIC-IDE환경에서 HI-TECH C로 에뮬레이션 할 경우 CCS-C

컴파일러와는 달리 Source Windows창에 어셈블리어 코드가 나타나지

않습니다. 그러므로 어셈블리어에 직접 브레이크 포인터를 설정할 수

없습니다. 따라서 이 경우 앞에서 설명했듯이 MRPICIDE 메뉴 중

Windows-> Screen Setup for C를 선택하면 Source Window 오른쪽에

Code Window 가 나타나는데 이 곳에는 HI-TECH C가 어셈블리어로

컴파일 된 코드가 나타나는데 이곳의 어셈블리어에 브레이크

포인터를 설정할 수 있습니다.

CHAPTER 6 MR.PIC-PGM, PRO ENGINE II

1. MR.PIC-PGM 소개

MR.PIC-PGM 프로그램은 컴파일사의 MR.PIC-PGM과 PRO ENGINE-

II, PRO ENGINE-II LITE (PIC16F84전용)전용 롬 라이터 프로그램

입니다. MR.PIC-PGM, PRO ENGINE-II는 MICROCHIP사의 PIC칩을

라이팅 하기 위한 전용 롬 라이터로 타사의 소프트웨어 및 장비와

함께 사용할 수 없으며 지원되는 디바이스는 List에 나타나는 칩만을

지원하며, 현재까지는 PIC17계열과 PIC18계열은 지원하지 않고

있습니다.

참고: Device List에 나타나는 Device의 종류는 현재 매뉴얼과 다소

다를 수 있습니다.

-40-

Page 41: 32비트 Edition MR.PIC-IDE - Comfile

주의: MR.PIC-PGM 또는 PRO ENGINE-II는 개발자용 롬 라이터로서

양산용으로는 부적합하며 조작 잘못으로 인해 휴즈 값 및

버퍼의 내용이 변경 된 상태에서 라이팅 될 경우 칩을 사용할

수 없게 될 수 있으므로 PRO ENGINE-II로 양산 하는 것을

지양해 주시기 바라며 PRO ENGINE-II로 양산 후 발생하는

문제에 대한 책임은 전적으로 사용자에게 있습니다.

주의: PIC칩 중 EPROM(JW)타입의 칩으로 디버깅 중인 경우 Code

Protect를 On하면 사용할 수 없게 될 수 있으므로 디버깅

중에는 Code Protect를 Off로 하고 사용하십시오. On하고

라이팅 한 경우 롬 이레이저로 지워도 지워지지 않습니다.

주의: PIC칩 중 Internal RC를 지원하는 칩의 EPROM(JW)으로 디버깅

하려면 최초 구입시 해당 칩의 OSCCAL 값을 메모해

두십시오. OSCCAL값을 메모하지 않은 상태에서 롬

이레이저로 지웠을 경우 OSCCAL값도 함께 지워지므로 4MHz

클럭으로 동작하지 않습니다.

주의: MR.PIC-PGM또는 PRO ENGINE-II, PRO ENGINE-II LITE를

사용하여 CheckSum을 계산한 내용과 MICROCHIP사 또는 타

회사의 롬 라이터를 사용하여 계산된 CheckSum 값이 다를 수

있습니다.

2. PRO ENGINE-II 구성품

PRO ENGINE-II 본체

다운로드 케이블

매뉴얼

아답터

<그림6.1-1> PRO ENGINE-II 구성 품

PRO ENGINE-II(본체) : 1

MRPIC-IDE 사용 설명서 : 1 MR.PIC-IDE및 PRO ENGINE-II 매뉴얼

프로그램 CD : 1 최신 버전은 www.comfile.co.kr에서 다운 받을 수

있습니다.

아답터(AC to DC18V200mA) : 1

DownLoad Cable : 25Pin : 15Pin

참고: MRPIC-USB 컨버터 케이블을 사용하여 PRO ENGINE-II 또는

PRO ENGINE-II LITE를 사용할 수 있습니다.

-41-

Page 42: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

3. 롬 라이팅 지원 디바이스

본 제품에서 프로그램 할 수 있는 디바이스의 종류는 다음과

같습니다. (2007년 3월 기준)

PIC12C508,508A

PIC12CE518,519

PIC12C509,509A

PIC12C671,672

PIC12CE673,674

PIC12F629,675

PIC16C505,554,558

CF745,775

PIC16C52,54,54A,54C,55,55A,56,56A,57,57C,58A,58B

PIC554,558

PIC14C000

PIC16C62A,62B,63,63A,64,64A,65,65A,65B,66,67

PIC16C620,620A,621,621A,622,622A,

PIC16CE623,624,625

PIC16C642,662

PIC16C71,710,711,712,715,716,745,765,PIC16F716

PIC16C72,72A,73,73A,73B,73C,74,74A,74B,74C,76,77,77A

PIC16C773,774

PIC16C923,924,925,926

PIC16F627,627A,628,628A,630,676

PIC16F72,73,74,76,77

PIC16F83,84,84A

PIC16C84

PIC16F870,871,872,873,874,876,877

PIC16F873A,874A,876A,877A 4. MR.PIC-PGM 화면 설명

<그림6.4-1> MR.PIC-PGM 화면 구성

Configuration Word는 코드 프로텍션, 발진방식, WDT(와치독 타이머),

PWRT(파워업 타이머), BODEN (브라운 아웃 디텍트) 사용 등,,, 칩의

동작과 관련된 중요한 옵션들이 저장된 특정 프로그램 영역(2007h)

입니다. 칩이 라이팅 될 때 유저가 설정한 옵션 값이 반영 되는데 이

설정을 잘 못하게 되면 칩이 동작 하지 않거나 오 동작 하며

프로그램이 노출될 수도 있습니다. 따라서 사용 시 주의가 필요하며

OTP(One Time Programmable)칩의 경우 설정을 잘 못한 후 라이팅 시

휴즈 값을 수정할 수 없는 경우도 있는데 이런 경우 칩을 사용하지

못하게 됩니다. 아래의 표는 PIC16F877의 Configuration Word를

설명하고 있습니다. 칩에 따라 Configuration Word의 내용은 다를 수

있습니다. 다음 PIC16F877의 Configuration Word(Address 2007h)의

내용을 알아보겠습니다.

bit13-12 CP1:CP0 : FLASH Program Memory Code Protection bits

bit5-4 11 = Code protection 해제

10 = 1F00h ~ 1FFFH 영역을 protection(PIC16F877,876)

10 = 0F00h ~ 0FFFH 영역을 protection(PIC16F874,873)

01 = 1000h ~ 1FFFH 영역을 protection(PIC16F877,876)

01 = 0800h ~ 0FFFH 영역을 protection(PIC16F874,873)

00 = 0000h ~ 1FFFH 영역을 protection(PIC16F877,876)

00 = 0000h ~ 0FFFH 영역을 protection(PIC16F874,873)

이 기능은 부분 또는 전체를 protection할 것인가를 선택합니다.

bit11 DEBUG : In-Circuit Debugger Mode

1 = In-Circuit Debugger disable RB6,RB7을 I/O포트로 사용

0 = In-Circuit Debugger enable RB6,RB7을 Debugger포트로 사용

bit10 사용 안 함

bit9 WRT : Flash Program Memory Write Enable

1 : Flash program memory중 protection되지 않은 영역을 동작

중에 R/W 할 수 있게 허가 함

0 : Flash program memory중 protection되지 않은 영역을 동작

중에 R/W 할 수 없게 함

bit8 CPD : Data EEPROM Memory Code Protection

1 : Code protection off

0 : Data EEPROM memory code protection(내부 EEPROM)

bit7 LVP : Low Voltage In-Circuit Serial Programming Enable bit

1 : RB3/PGM을 low voltage programming enable 단자로 사용

0 : RB3을 digital I/O로 사용, In-Circuit Serial Programming 시

/MCLR핀에 HV(12V ~ 14V) 공급

bit6 BODEN : Brown-out Reset Enable(동작 전원이 4.0V 이하로 떨어질

시 칩을 리셋 시키는 기능)

1 : BOR enabled

0 : BOR disabled

-42-

Page 43: 32비트 Edition MR.PIC-IDE - Comfile

bit3 /PWRTE : Power-up Timer Enable(Power-on Reset 시 전원이

안정된 동작을 하기 위해 내부 RC Power-up Timer로부터 72ms의

시간을 지연 하는 기능으로 데이터 북 참조 후 사용하기 바랍니다.)

1 : PWRT disabled

0 : PWRT enabled

bit2 WDT : Watchdog Timer Enable it (칩이 내부 또는 외부의 영향으로

동작 하지 않거나 오동작시 Watchdog Timer의 overflow 발생으로 인해

칩이 리셋 되어 다시 처음부터 실행 되도록 하는 기능으로 데이터 북

참조 후 사용 하기 바랍니다.)

1 : WDT enabled

0 : WDT disabled

bit1-0 FOSC1:FOSC0 : Oscillator Selection bits

11 = RC oscillator

10 = HS oscillator

01 = XT oscillator

00 = LP oscillator

Configuration Word및 프로그램 메모리는 연결 된 fuse를 끊는

방식입니다. 그러므로 한 번 끊어진 비트들은 다시 연결 할 수

없습니다. (OTP의 경우) 만약 Configuration Word 의 bit1-0을 잘 못

선택하여 XT 모드로 선택 해야 하는데, LP 모드로 선택 후 라이팅 한

경우 bit1과 bit0이 모두 끊어진 상태이므로 XT로 다시 선택 하는 것은

불가능하므로 OTP칩 사용 시는 주의해야 합니다.

◆ Device및 Fuse Option 설명

라이팅 하고자 하는 칩을 선택하는 옵션입니다. 리스트에 없는 칩은

현재 지원되지 않는 칩입니다. (단, PIC16LC 타입 또는 /P, /IP등은

주파수, 동작 전압, 온도 범위에 따른 차이이므로 라이팅과는 상관

없기 때문에 타입은 무시하셔도 됩니다. )

예) PIC16C74A-04/P와 PIC16LC74A-20I/P는 모두 PIC16C74A를

선택한 후 라이팅 하면 됩니다.

4자리의 HEX 값을 쓸 수 있습니다. 보통은 Check Sum(체크 섬)

버튼을 눌러 나타난 4자리 값을 저장합니다.

(IC 구분을 위해 사용: “ 0” ~ “ F” ) 예)1234, 90AF,,,

참고: ID CODE 영역에 기입된 값은 타 회사의 롬 라이터로 읽어도

같은 값이 나와야 합니다.

◆ XT : Crystal/Resonator

보통 4MHz Crystal, Resonator 또는 OSC(Oscillator) 사용 시 선택합니다.

◆ HS : High Speed Crystal/Resonator

보통 8MHz 이상의 Crystal, Resonator 또는 OSC사용 시 선택합니다.

◆ LP : Low Power Crystal

발진 주파수가 높으면 그 만큼 소비전류가 많으므로 소비전류를 적게

하려면 주파수를 낮추어야 합니다. 이 경우 사용되는 주파수로는

32kHz, 200kHz를 많이 사용합니다.

◆ RC : Register/Capacitor

저항과 콘덴서를 이용한 발진으로 장난감 또는 정확한 타이밍을

요하지 않는 제품과 원가 절감을 목적으로 하는 경우 많이 선택

합니다. RC는 Internal RC와 External RC 두 가지 방식이 있습니다.

Internal RC는 칩 내부에 R/C로 구성된 4MHz 을 사용하는 방식이고,

External RC는 OSC1에 R/C를 연결하여 발진하는 방식입니다.

◆ IntRC/GP4 : 발진방식을 Internal RC로 사용하고 GP4,GP5는 포트로

사용. 칩 중 IntRC를 지원하는 칩이 있는데 이런 칩은 내부에 있는 RC

4MHz 발진을 사용 할 수 있습니다. HS, XT, LP 모드에서는 GP4,

GP5는 포트로 사용할 수 없습니다.

◆ IntRC/OscOut : 발진방식을 Internal RC로 사용하고 GP5는 포트로

사용. 칩 중 IntRC를 지원하는 칩이 있는데 이런 칩은 내부에 있는 RC

4MHz 발진을 사용 할 수 있습니다. GP5는 OscOut으로 사용합니다.

OSC1의 1/4 출력을 얻을 수 있습니다.

◆ ExtRC/GP4 : External RC로 사용하고 GP4로 사용. 외부 RC

발진회로 구성 시 GP4로 사용합니다. HS,XT,LP 모드에서는 GP4로

사용할 수 없습니다.

◆ ExtRC/OscOut : External RC로 사용하고 OSCOUT으로 사용. 외부

RC 발진회로 구성 시 OSCOUT으로 사용합니다. OSC1의 1/4 출력을

얻을 수 있습니다. 자세한 내용은 PIC 데이터 북 Oscillator

Configurations 을 참고하십시오.

-43-

Page 44: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

5. 롬 라이팅 시 칩의 장착

MR.PIC-PGM은 40핀의 텍스툴 위에 디바이스를 장착하도록 되어

있으며 폭이 좁은 PIC16C54, PIC16C711 등 폭이 좁은 300mil 타입과,

PIC16C55, PIC16F877등 폭이 넓은 600mil 타입도 모두 수용할 수

있습니다. MR.PIC-PGM 프로그램과 본체 케이스에 칩을 장착하는

위치가 표시되어 있습니다.

텍스툴의 윗부분에 장착하는 디바이스

PIC16C72, PIC16C73, 74, 76, 77

PIC16C62, PIC16C63, 64, 65, 66, 67

PIC16F873,874,876,877,,,,

(18핀을 제외한 모든 MID-RANGE패밀리)

텍스툴의 아래부분에 장착하는 디바이스

PIC16C52, 54, 55, 56, 57, 58

PIC16C620, 621, 622

PIC16C61, 71, 84, 711, 710

(모든 5X패밀리와 18핀의 MID-RANGE패밀리)

<그림6.5-1> 칩 장착 위치

MR.PIC-PGM및 PRO ENGINE-II는 기본적으로 DIP 타입만을 지원하며

SOIC, SSOP, QFP, PT 타입은 별도의 SMD용 변환 소켓이 필요합니다.

단, PRO ENGINE-II를 구매하신 고객 중 PIC12C50X, PIC12C67X,

PIC12F67X, PIC16C505, PIC14C000 등의 DIP 타입을 라이팅 할 때는

ENG-DIP1214 라는 별도의 컨버터 소켓을 구매하셔야 합니다.

6. MR.PIC-PGM 메뉴에 대한 설명

1. File

◆ Open Hex File Hex File을 로드 합니다.

◆ Save Hex File

<그림6.6-1> 현재 버퍼의 내용을 파일로 저장

현재 Main Memory 버퍼의 내용을 File로 저장합니다. MR.PIC-PGM의

Main Memory버퍼와 EEPROM(내부 EEPROM이 있는 디바이스) 버퍼는

수정이 가능합니다. 수정 하고자 하는 셀을 마우스로 클릭하면 해당

셀의 테두리가 점선으로 변경됩니다. 이 상태에서 키보드로 값을 입력

후 ENTER 키를 입력 하면 됩니다. 수정한 내용을 저장할 때 Save Hex

File메뉴를 사용하게 됩니다.

◆ Open INHX16 Hex File

OBJ 형식으로 된 파일을 오픈 합니다. 형식에 맞지 않는 파일을 오픈

할 경우 다음과 같은 에러를 발생합니다.

<그림6.6-2> Hex File Format 에러

-44-

Page 45: 32비트 Edition MR.PIC-IDE - Comfile

2. Device

◆ Program F1

모든 메모리의 내용을 칩에 라이팅 합니다. FLASH 타입의 칩은

Erase를 먼저 한 후 라이팅 하므로 Blank 칩이 아니라도 Program을 할

수 있지만 OTP계열의 칩은 Blank 칩이 아닐 경우 에러를 발생합니다.

라이팅이 완료되면 다음과 같이 OK 메시지가 표시됩니다.

<그림6.6-3> STATUS 창

◆ Verify F2

Main Memory의 내용과 칩의 내용을 비교합니다. 서로의 내용 일치 할

경우 Verify. Ok 메시지가 표시됩니다. 만약 틀릴 경우는 어느 부분이

서로 다른지 알려줍니다.

<그림6.6-4> Verify Report

화면의 Main Memory Buffer의 내용 중 001번지 값이 3400 이고

칩(Device)의 001 번지 값은 1683이라고 에러를 발생합니다.

◆ Read F3

칩의 내용을 읽어냅니다. 코드 프로텍션이 걸린 칩은 내용이

0000으로 나타납니다. (예외 적으로 프로그램 메모리 00h ~

3Fh번지가 읽혀지는 디바이스도 있습니다. 그러므로 프로그램의

길이가 작아서 00h ~ 3Fh 번지 안에 있다면 복제 가능하게 되므로

주의하셔야 합니다.)

◆ Blank Check F4

칩이 Blank인가를 체크 합니다. Blank 칩인 경우 다음과 같은 메시지를

출력 합니다.

<그림6.6-5> 프로그램메모리와 컨피규레이션 메모리 모두 클리어된 경우

칩이 Blank가 아닌 경우 다음과 같은 메시지를 출력합니다.

<그림6.6-6> 프로그램 메모리는 99%만 클리어 된 경우

이 경우는 1워드가 사용된 칩입니다.

◆ Fuse Program

Configuration Fuse 부분만을 프로그램 합니다.

◆ Erase(Flash Chip Only)

칩을 Blank 상태로 만듭니다. 이 메뉴는 Flash Type인 경우만 사용할 수

있습니다. 현재 선택된 디바이스가 FLASH 타입이 아닌 경우는 비

활성화되어 선택할 수 없습니다. (단, PIC12F629, 675, PIC16F627,

628칩의 경우도 Flash 타입의 칩인데 이 칩들은 Flash 타입이면서 내부

OSCCAL값을 가지고 있습니다. 그런데 이 칩들이 Erase될 경우

OSCCAL 값도 모두 Erase되므로 이 칩들의 경우 Erase버튼이 Disable

상태로 표시됩니다.)

3. Special

-45-

Page 46: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

◆ PC Interface Setting…

MR.PIC-PGM 또는 PRO ENGINE-II, PRO ENGINE-II LITE 등의 장비를

USB 또는 프린터 포트와 연결 후 점검합니다.

◆ Input Checksum to IDCODE

IDCODE란에 저장할 Checksum을 계산합니다.

◆ Clear Buffer

Fuse Option및 Main Memory Buffer의 내용을 모두 클리어 합니다. 단,

EEPROM 버퍼의 내용은 클리어 되지 않습니다.

◆ View Firmware Version

MR.PIC-PGM 또는 PRO ENGINE-II의 장비 안에서 롬 라이터에 관련된

동작을 수행하는 콘트롤러의 Firmware Version을 보여줍니다.

<그림6.6-7> 현재 MR.PIC-PGM및 PRO ENGINE-II Firmware 버전

◆ Check Sum

Check Sum은 프로그램 메모리의 내용, 휴즈(Configuration Word)값

그리고 기타 Mask value를 사용하여 16진수 4자리의 값을 생성합니다.

앞에서도 언급했지만 MRPICIDE에서의 CheckSum 계산 방과

MICROCHIP사의 CheckSum 계산 방법이 다르므로 CheckSum값이

다를 수 있습니다.

◆ Serialize…

PIC어플리케이션 중에는 리모콘, 자동차 경보기, 보안시스템등과

같이 칩마다 제각기 틀린, 일종의 고유번호를 입력해 놓고 송신부와

수신부가 일치 하는지 확인을 필요로 하는 경우가 있습니다. 리모콘을

예로들면... 1000개의 리모콘용 칩을 라이팅 할 때, 각각의 칩의

특정번지 에 서로 다른 번호를 라이팅 해 두면, 회로 등에서 리모콘을

구분해주는 작업을 하지 않고도 손쉽게 제품을 만들 수 있게 됩니다.

바로 이러한 기능실현을 위해서 MR.PIC-PGM에서는 시리얼

프로그래밍(Serialize Programming) 이라는 기능을 지원하고 있습니다.

어드레스를 부여할 번지와 길이, 증가/감소 등의 몇 가지 옵션을

정해주면, 프로그램 할 때 마다 주어진 조건대로 특정번지의 값이

자동으로 증가 또는 감소 됩니다. PIC의 특성상 데이터는 RETLW명령

형식 (5X 패밀리에서는 기계어로 800H, XX패밀리 에서는 3400H로

시작 합니다.)으로 변환됩니다. 따라서 프로그램에서는 CALL명령을

사용해서 특정 어드레스를 읽어 들일 수 있습니다. 예를 들면 다음과

같습니다. 이 예는 MRPIC-IDE에서 사용했던 TEST.ASM을 약간

수정해서 프로그램 메모리 번지 0002번지와 0003번지 두 개의

프로그램 메모리를 사용하여 16비트 증가 시리얼 프로그래밍을 하는

방법을 소개하겠습니다. Step에 따라 실행하십시오.

Step 1. 새로운 프로젝트 파일을 만든 후 소스 프로그림을 다음과 같이

타이핑 하십시오.

LIST P=PIC16F877 STATUS EQU 03H PORTB EQU 06H TRISB EQU 06H VARIABLE BF = 20H ORG 0 ; RESET VECROR GOTO SIJAK ; GOTO TEST ORG 2 ADDR1 RETLW 00H ; 0 부터 시작하려면 00H 로 합니다. ADDR2 RETLW 00H ; 0 부터 시작하려면 00H 로 합니다. SIJAK BSF STATUS,5 ; BANK1 로 선택 MOVLW 00H MOVWF TRISB BCF STATUS,5 ;BANK0 으로 선택 CLRF BF ; BF 레지스터 클리어 CLRF PORTB MAIN_LOOP CALL ADDR1 MOVWF PORTB CALL ADDR2 MOVWF PORTB MAIN_1 GOTO MAIN_1 END

Step 2. MRPIC-IDE에서 MAKE 버튼을 클릭해서 어셈블 합니다.

Step 3.MRPICIDE에서 PGM 버튼을 눌러 MR.PIC-PGM 으로

전환 합니다.

Step 4. HEX 파일을 오픈 한 후 (그림6.1-12)와 같이 휴즈 옵션을

선택하고 Check Sum 버튼을 클릭 합니다.

Step 5. Special Serialize…를 클릭합니다.

1. Enable Serialize의 체크 박스를 체크합니다.

2. Address에 시작 어드레스를 적습니다.(0x0002)

3. Length 옵션을 2 Byte로 설정합니다.

4. Direction옵션을 Increment로 설정합니다.

-46-

Page 47: 32비트 Edition MR.PIC-IDE - Comfile

◆ Ok 버튼을 클릭합니다.

<그림6.6-8> Serialize 옵션 설정

<그림6.6-9> Serilaize 기능 사용하여 라이팅

◆ Address는 시리얼 넘버가 저장 될 번지의 하위 어드레스를

적습니다. (16진수의 경우” 0x” 를 붙입니다.)

◆ Length 옵션은 시리얼 넘버로 사용할 바이트 수를 지정합니다.

◆ Direction 옵션은 시리얼 넘버를 증가할 것인지 감소할 것인지를

선택합니다.

Length의 길이에 따라 구별 가능한 번호의 수는 다음과 같습니다.

1Byte : 256 개

2Byte : 65536 개

2Byte : 167772156 개

4Byte : 4294967296 개

Length에 따른 시리얼 넘버의 범위

Address = 0002번지,

Length = 2 Byte

Direction = Increment일 경우 다음과 같이 시리얼 넘버가 증가합니다.

Address(0x0002) Address(0x0003)

1회 라이팅 시 3400 3400

2회 라이팅 시 3401 3400

3회 라이팅 시 3402 3400

4회 라이팅 시 3403 3400

:

:

:

:

65535회 라이팅 시 34FE 34FF

65536회 라이팅 시 34FF 34FF

Address = 0002번지,

Length = 2 Byte

Direction = Decrement일 경우 다음과 같이 시리얼 넘버가 감소합니다.

Address(0x0002) Address(0x0003)

1회 라이팅시 34FF 34FF

2회 라이팅시 34FE 34FF

3회 라이팅시 34FD 34FF

4회 라이팅시 34FC 34FF

:

:

:

65535회 라이팅시 3401 3400

65536회 라이팅 시 3400 3400

주의 : 이 기능을 충분히 이해하지 못하고 사용했을 경우 (엉뚱한

번지의 내용을 바꾸어 버리므로) 라이팅 된 칩이 동작하지

않을 수 있습니다. 충분히 검토/실험한 뒤 적용하시는 것이

좋습니다.

② ③ ①

-47-

Page 48: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

<그림6.6-10> 1회 라이팅 후의 버퍼 상태

<그림6.6-11> 2회 라이팅 후의 버퍼 상태

7. MR.PIC-PGM 업그레이드

소프트웨어 업그레이드는

www.comfile.co.kr/download/pic/mrpicide127.exe

방문하셔서 PIC TOOL 다운로드 자료실에서 다운 받을 수

있습니다. Firmware 업그레이드는 소프트웨어 업그레이드를 한 후

MR.PIC-IDE 프로그램이 설치된 폴더에 보면 HEX 파일이 2개 있는데

그 중 c:₩mrpicide ₩fwpgmv34.hex 파일을 라이팅 하면 됩니다.

◆ 업그레이드 순서

1) MR.PIC-PGM 프로그램을 실행합니다.

2) 디바이스를 PIC16C74B 또는 PIC16F74로 선택 후 소켓에 블랭크

칩을 넣습니다.

3) MR.PIC-IDE 프로그램이 설치된 폴더에서 fwpgmv34.hex 파일을

오픈 합니다.

4) 컨피규레이션 휴즈 값을 다음과 같이 설정합니다.

5) 오실레이터 : XT

6) 와치독 타이머 : OFF

7) 파워업타이머 : OFF

8) BOD : OFF

9) Program 버튼을 클릭합니다.

<그림6.7-1> MR.PIC-PGM의 업그레이드 칩 위치

8. PRO ENGINE-II 업그레이드 소프트웨어 업그레이드는

www.comfile.co.kr/download/pic/mrpicide127.exe

방문하셔서 PIC TOOL 다운로드 자료실에서 다운 받을 수

있습니다. Firmware 업그레이드는 소프트웨어 업그레이드를 한 후

MR.PIC-IDE 프로그램이 설치된 폴더 내에 HEX 파일이 2개 있는데 그

중 c:₩mrpicide₩fwengv34.hex 파일을 라이팅 하면 됩니다.

◆ 업그레이드 순서

1) MR.PIC-PGM 프로그램을 실행합니다.

2) 디바이스를 PIC16C74B 또는 PIC16F74로 선택 후 소켓에 블랭크

칩을 넣습니다.

3) MR.PIC-IDE 프로그램이 설치된 폴더에서 fwengv24.hex 파일을

오픈 합니다.

4) 컨피규레이션 휴즈 값을 다음과 같이 설정합니다.

5) 오실레이터 : XT

6) 와치독 타이머 : OFF

7) 파워업타이머 : OFF

8) BOD : OFF

9) Program 버튼을 클릭합니다.

-48-

Page 49: 32비트 Edition MR.PIC-IDE - Comfile

<그림6.8-1> MR.PIC-PGM의 업그레이드 칩 위치

9. 변환 소켓의 종류

MR.PIC-PGM및 PRO ENGINE-II는 기본적으로 DIP 타입만을 지원하며

SOIC, SSOP, QFP, PT 타입은 별도의 SMD용 변환 소켓이 필요합니다.

단 PRO ENGINE-II를 구매하신 고객 중 PIC12C50X, PIC12C67X,

PIC12F67X, PIC16C505, PIC14C000 등의 DIP 타입을 라이팅 할 때는

ENG-DIP1214라는 별도의 컨버터 소켓을 구매하셔야 합니다.

* 참고: COMFILE TECHNOLOGY 사에서 판매되는 변환 소켓은 일부

핀만 연결 되어 있어 타사의 칩을 라이팅 하는 변환 소켓으로 사용 할

수 없습니다.

◆ ENG-SSOP18 변환 소켓

IC16C54,71,711,F84A등 18Pin SSOP 타입의 칩을 라이팅 시

필요합니다.

◆ ENG-SSOP28 변환 소켓

PIC16C55,58과 PIC 14비트 MID-RANGE 계열의 28Pin SSOP 타입의

칩을 라이팅 시 필요 합니다.

◆ ENG-SOIC28 변환 소켓

PIC16C54,55,56,57,58과 PIC14비트 MID-RANGE 계열의 18PIN 또는

28핀 칩을 라이팅 시 필요합니다. 이 소켓은 18Pin, 28Pin을 모두

지원함으로 28Pin을 라이팅 시는 모든 핀을 사용하므로 소켓에 방향만

맞추어 삽입하면 되고, 18Pin 칩을 라이팅 시는 아래를 기준으로 밑

쪽에서부터 칩을 삽입합니다.

◆ ENG-DIP1214 변환 소켓

PIC12C50X/P,PIC12C67X/P,PIC16F629,675/P,PIC16C505/P,PIC14C00

0/P등은 DIP 타입임에도 불구하고 라이팅 시 ENG-DIP1214 변환

소켓이 필요합니다.

◆ ENG-12DIP 변환 소켓

PIC12C50X/P, PIC12C67X/P, PIC12F629, 675/P, PIC16C14C000/P와

PIC14비트 MID RANGE 계열의 44Pin /L(PLCC) 타입의 칩을 라이팅 시

필요합니다.

◆ ENG-TQFP44 변환 소켓

PIC16C74A/PT,F74A/PT,F77/PT,PIC16F877A/PT등 PIC 14비트 MID-

RANGE 계열의 칩 중 /PT타입의 칩을 라이팅 시 필요 합니다.

◆ ENG-QFP44 변환 소켓

PIC16C74A/PQ,F74A/PQ,F77/PQ,PIC16F877A/PQ등 PIC 14비트 MID-

RANGE 계열의 칩 중 /PQ타입의 칩을 라이팅 시 필요 합니다.

◆ ENG-QFP64 변환 소켓

PIC16C923,924/PQ등 64Pin /PQ타입의 칩을 라이팅 시 필요 합니다.

아래의 그림은 MR.PIC사용자가 ENG-DIP1214 변환 소켓을 사용하여

PIC12C50X, PIC12C67X, PIC16C505, PIC14C000 등의 딥 타입의 칩을

라이팅 할 때 소켓과 칩을 장착하는 모습입니다.

ENG-1214 PIC

12C

50 8

16C505와 14C000을 사용 할 때 에는 다음위치에 칩을 장착해야

합니다.

<그림6.9-1> ENG-DIP1214소켓 사용법

-49-

Page 50: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

1. 에뮬레이터와 칩에서의 동작 차이에 대하여

질문 : 에뮬레이터에서는 동작이 되는데 칩에 라이팅 하면 동작 되지

않습니다. 이유는 무엇입니까?

답변 : 기본적으로 몇 가지 점검 포인트가 있습니다. 에뮬레이터

에서는 리셋 (/MCLR)단자에 기본적으로 HIGH가 인가됩니다. 만약

타겟 보드에서 /MCLR 단자에 HIGH를 인가하지 않았다면, 당연히

동작되지 않을 것입니다. MR.PIC, PRO STATION 시리즈는 에뮬레이터

내부에 10K 풀업 저항을 /MCLR단자에 부착해 놓았습니다.

와치독 타이머를 점검해보십시오. 와치독 타이머를 사용하지

않는다면 라이팅 시 와치독 타이머 체크 박스에 체크를 하지

마십시오. 만약 와치독 타이머를 쓰신다면 에뮬레이터에서도 와치독

타이머를 ON시 켜놓은 상태에서 에뮬레이팅을 하시기 바랍니다.

와치독 타이머 사용 시 모든 루프구조에 와치독 타이머 리셋 주기보다

빠른 주기로 CLRWDT명령을 실행하도록 해놓아야 합니다.

기본적으로 에뮬레이터에서는 파워 업 시퀀스가 발생하지 않는다는

것을 항상 염두에 두시기 바랍니다. 에뮬레이터는 항상 전원이 들어가

있는 상태이기 때문에 파워 온 리셋 상황이 발생 하지 않습니다. 이와

반대로 칩에서는 “ 파워 온 리셋” 이라고 불리 우는 상황이

발생합니다. 칩이 장착된 기판에 모든 칩과 PIC칩에 동시에 전원이

인가되면서, PIC칩보다 먼저 동작을 시작하는 칩도 있고, 나중에

동작을 시작하는 칩도 있게 됩니다. 이런 상황을 무시하고 무조건

동작파형 등을 내보낸다면, 다른 칩들이 미쳐 처리를 못하는 상황도

생기게 됩니다. 가장 좋은 방법은 PIC칩 주변의 다른 칩들의 동작

가능여부를 사전에 확인한 후 원하는 파형을 출력하는 방법입니다.

에뮬레이터에서는 파워 온 리셋 상황에서 초기화 과정이 생략됩니다.

위의 상황에서처럼 에뮬레이터에서는 항상 전원이 들어가 있기

때문에, PIC데이터 북에 명시된 파워 온 리셋 초기화 값들이 특수

레지스터 군에 로드 되지 않습니다. 이 때문에 특정 페리퍼럴 들이

엉뚱한 동작을 하게 되는 경우도 있습니다. 이것을 막기 위해서는

파워 온 리셋 값이 있더라도, 프로그램 시작부분에서 강제로 원하는

초기치 값으로 셋팅하는 작업을 해주어야 합니다. 램의 초기값은

불안정 합니다. 에뮬레이터에서는 램의 초기값이 0이나 FF등의 어떤

값으로 클리어 되어 있는 경우가 있습니다. (역시 에뮬레이터에

전원이 항상 들어가 있기 때문에 이런 일이 발생하는데, 먼저

프로그램 수행후의 값이 계속 남아있는 경우입니다.) 이에 반해

PIC칩에서는 파워 온 시 예측할 수 없는 쓰레기 값 (GARBAGE

VALUE)으로 가득 차게 됩니다. 따라서 프로그램 시작부분에

전부0으로 클리어 해주는 램 클리어 루틴이나, 프로그래머가 원하는

특정 값으로 셋트 하는 초기화 부분이 반드시 필요합니다. 이런

부분을 빠뜨렸다면, 매번 전원을 넣을 때 마다 엉뚱한 동작을 하는

불완전한 개발품이 됩니다. 보드의 특성도 고려해야 합니다.

에뮬레이터에서는 매우 안정된 5V가 생성되고, 동작이 보증된

회로에서 동작을 하는 자생력이 있는 상태이지만, PIC칩은 보드의

전원상태에 100% 의존 하는 상태가 됩니다. 보드에 들어가는 전원이

불안하다면 당연히 동작은 보증할 수 없게 됩니다. 이런 보드라

할지라도 에뮬레이터와 연결 시에는 동작이 잘 될 수 있습니다.

에뮬레이터는 여러 가지 전원안정화 대책회로가 내장되어 있기

때문입니다. 리플 (고주파 노이즈 등)이 없는 깨끗한 상태의 전원이

들어가고 있는지 스코프 등으로 확인해 보아야 합니다.

바이패스 콘덴서는 필수입니다. 에뮬레이터를 사용하는 분들이

회로설계에서 빠뜨리기 쉬운 부분이 바로 바이패스 콘덴서입니다.

PIC 칩은 CMOS칩이기 때문에 VDD, VSS단의 가장 가까운 부분에

0.1uF 정도의 모놀리딕(적층 세라믹) 콘덴서가 반드시 부착되어

있어야 합니다. (이 때문에 대부분의 PIC칩은 VDD와 VSS단자가

가까운 곳에 붙어 있습니다.) 바이패스 콘덴서가 없다면 전원을 켤 때

마다, 어떨 때는 동작하고, 어떨 때는 동작하지 않는 등의 불안한

상태를 보이게 됩니다. 바이패스 콘덴서를 VDD, VSS단과 멀리 떨어진

곳에 붙인다면, 이것은 안 붙인 것과 마찬가지 입니다. 바이패스

콘덴서는 반드시 VDD, VSS단 바로 옆에 인접해서 붙여주어야 합니다.

PIC칩으로 들어가는 파형의 전압은 확실한 전압이라야 합니다. 간혹

3V근처에서 왔다 갔다 하는 전압을 인가해서 HIGH-LOW를 판단하는

경우를 보게 됩니다. 이런 경우에는 노이즈 등의 영향에 의해서 HIGH-

LOW를 판단하는 기준이 흔들리게 되므로, 오동작의 원인이 됩니다.

PIC칩에는 일반 TTL과 마찬가지의 인식레벨을 가지고 있는 TTL입력

포트와 쉬미트 트리거 인식레벨을 가지고 있는 쉬미트 트리거 입력

포트가 있습니다. 쉬미트 트리거형 입력포트는 0.4V이하를 LOW로

인식하고 3.4V이상을 HIGH로 인식하므로, 입력신호는 0V, 5V를

FULL로 스윙해주는 것이 바람직합니다. TTL입력 포트는 1.4V를

기준으로 HIGH-LOW를 판단하지만, 이 역시도 정확한 동작을 위해서

0V, 5V의 FULL RANGE로 스윙해주는 것이 좋습니다. 만약 상대 측의

칩에서 이러한 출력이 불가능 하다면 별도의 버퍼나 인버터 (74HC

14등)을 써서 신호를 재정비 해주는 테크닉이 필요합니다. 이러한

부분들이 불완전하다면, 칩마다 동작상황이 틀려지는 잡기 힘든

버그상황이 발생합니다.

CHAPTER 7 FAQ

-50-

Page 51: 32비트 Edition MR.PIC-IDE - Comfile

하드웨어적인 버그도 에뮬레이터와 칩간의 동작차이를 보이는

원인이 됩니다. 예를 들어 풀업 저항은 보통 5K ~ 10K오옴 정도를

사용하는데, 이것을 잘못해서 100옴 정도를 사용했다고 하면, OVER

스팩이 됩니다. OVER 스팩 상에서는 칩의 로트 간에도 동작차이가

발생하므로, 이러한 오버스팩이 발생하지 않는지 유심히 살펴볼

필요가 있습니다.

I/O프로텍트 보드 사용시는 주의해야 합니다. I/O프로텍트 보드는

에뮬레이터의 ME칩을 보호하기 위해서 만든 것입니다. 실제

칩상에서는 존재하지 않는 100옴 저항과 다이오드를 모든 포트마다

부착해 놓은 것입니다. 따라서 I/O프로텍트 보드 장착 시 동작하는

회로와 PIC칩 만으로 동작하는 회로는 분명히 다른 회로인 것입니다.

개발 중에는 I/O프로텍트 보드를 사용 하는 것을 권장하고 있지만,

최종단계 에서는 I/O프로텍트 보드를 제거하고 실제 칩과 비슷한

상황에서 한번 실험해보는 것이 좋습니다. 포트의 안정적인 동작을

위한 마이크로칩의 권장사항도 지켜주는 것이 좋습니다. 출력포트는

같은 값이라 하더라도 주기적으로 반복해서 써주는 것이 좋으며, 각

포트의 입출력 결정 상태 (TRIS레지스터)도 주기적으로 셋트 해주는

것이 좋습니다.

발진회로의 동작여부도 체크 해야 합니다. 에뮬레이터에서는 매우

안정된 발진 파형이 강제적으로 칩에 인가되지만, PIC칩 사용시는

스스로 발진문제를 해결해 주어야 하기 때문입니다. 만약 칩 자체의

발진이 불안정하거나, 외부의 노이즈 영향을 쉽게 받을 수 있도록

설계되어 있다면, 에뮬레이터에서는 동작 되는데 칩에서는 동작하지

않는 전형적인 예가 될 것입니다. 에뮬레이터는 매우 작은 크기의 칩

웨이퍼의 회로를 여러 장의 보드로 풀어놓은 장비이기 때문에

OTP칩의 특성과 100% 일치할 수는 없습니다. 칩과 에뮬레이터의

차이를 인지하고, 문제를 해결해 나가고자 하는 의지가 중요합니다.

분명한 것은 에뮬레이터에서 동작하는데 칩에서 동작하지 않거나 그

반대상황 이 발생하는 프로그램의 경우에는 정답이 없다는 것입니다.

여러 가지 소프트웨어적, 하드웨어적 상황이 복합적으로 작용하여

그런 결과가 나올 수 있으므로, 해당 프로그램을 직접 작성하고,

회로를 꾸민 당사 자가 아니면 해결이 어렵습니다.

주의: PIC칩 중 EPROM(JW)타입의 칩으로 디버깅 중인 경우 Code

Protect를 On하면 사용할 수 없게 될 수 있으므로 디버깅

중에는 Off로 하고 사용하십시오. On하고 라이팅 한 경우 롬

이레이저로 지워도 지워지지 않습니다.

주의: PIC칩 중 Internal RC를 지원하는 칩의 EPROM(JW)으로 디버깅

하려면 최초 구입시 해당 칩의 OSCCAL 값을 메모해 두십시오.

OSCCAL값을 메모하지 않은 상태에서 롬 이레이저로 지웠을

경우 OSCCAL값도 함께 지워지므로 4MHz 클럭으로 동작하지

않습니다.

2. FAQ ( 자주 등장하는 질문과 대답 )

질문 : PIC가 무엇을 의미합니까?

답변 : PIC는 MICROCHIP에서 생산되는 MCU에 붙는 이름으로

Peripheral Interface Controller를 의미합니다.

질문: PIC칩을 12비트(BASE-LINE), 14비트(MID-RANGE), 16비트

(HIGH-END)로 구별 하는데 어떤 의미 입니까?

답변 : 명령어의 워드 길이를 의미합니다. 즉 OP CODE + OPERAND의

길이를 말합니다. MR.PIC-PGM 또는 PRO ENGINE-II로 BLANK 칩을

넣고 읽으면 12비트의 경우는 프로그램 메모리 내용이 FFF로 읽히고,

14비트의 경우는 3FFF로 읽힙니다. (16비트는 현재 지원되지만

FFFF로 나타납니다.)

즉, FFF -> 1111 1111 1111 이므로 12비트 입니다.

3FFF -> 11 1111 1111 1111 이므로 14비트 입니다.

질문 : MR.PIC는 다른 회사의 칩도 에뮬레이션 할 수 있나요?

답변 : 아니오, MR.PIC는 MICROCHIP 전용 에뮬레이터 입니다.

질문 : MR.PIC는 MICROCHIP사의 모든 12비트,14비트 칩의 에뮬

레이션을 지원합니까?

답변 : 아니오, MR.PIC는 ME-CHIP 교환 방식의 에뮬레이터로 ME-

CHIP에 따라 지원 되는 칩이 정해져 있습니다. 그렇기 때문에

에뮬레이션 하기 위해서는 해당 ME-CHIP이 장착이 되어 있어야

합니다. 매뉴얼의 프로젝트 파일작성 편을 참조하십시오.

질문 : Windows XP(NT)를 사용하는데 장비가 인식되지 않습니다.

답변 : 제어판의 프린터 폴더를 선택 후 프린터 추가를 누르고 LOCAL

프린터 LPT1으로 설정 후 HP Laserjet 4를 선택 하십시오. 매뉴얼

MRPIC-IDE설치를 참조하십시오.

질문 : Windows XP(NT)를 사용하는데 동작이 되다가 저절로

멈춥니다.

답변 : 제어판의 프린터 폴더를 선택 후 프린터 추가를 누르고 LOCAL

프린터 LPT1으로 설정 후 HP Laserjet 4를 선택 하십시오. 매뉴얼

MRPIC-IDE설치를 참조하십시오.

-51-

Page 52: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

질문 : Windows XP(NT)를 사용 시 예전에는 Install Port Driver for Nt

프로그램을 설치 후 재 부팅했었는데 지금도 해야 하나요?

답변 : MRPIC-IDE V12.6 이상에서는 설치하실 필요 없습니다.

질문 : MR.PIC에서 /MCLR(외부 리셋) 리셋 기능이 지원 됩니까?

답변 : 예, 단, MID RANGE 계열은 2004년 1월 7일 이 후 생산된

제품부터 지원되고 있으며 이전에 구입하신 장비는 A/S를 받으시면

가능합니다.

질문 : PIC12C671칩에서 RBIF 포트 체인지 인터럽트가 지원 안 되는

것 같습니다. 맞나요?

답변 : 예, 이 기능은 2007년 3월 현재 까지 지원되지 않습니다. 뒤

부분의 Errata 내용을 읽어보세요.

질문 : 현재 877-ME칩이 장착되어 있는데 PIC16C77이 에뮬 레이션

되는 것 같은데 맞습니까?

답변: PIC16F877

PIC16C77

PIC16C64

PIC16C73

PIC16C65

PIC16C72

PIC16C74

PIC16C63

PIC16C62

PIC16C76PIC16C67PIC16C66

PIC16F876PIC16F874PIC16F873PIC16F872

<그림7.2-1> PIC칩의 호환성

PIC칩은 호환성을 유지하기 할 수 있도록 디바이스들이 개발

되었습니다. 예를 들면 PIC16C63을 쓰다 메모리와 I/O가 더 필요할

경우 PIC16C64를 쓰면 되고, 메모리가 더 필요하고 A/D가능까지

필요하다면 PIC16C74를 선택하면 됩니다. 위의 그림은 이런 의미

표현한 것입니다. PIC16F877칩이 PIC16C77칩의 특징을 포함하고

있기 때문에 동작이 되는 것처럼 보이는 것입니다. 실제로

어플리케이션에 따라서는 877-ME칩이 장착 되어 있어도 에뮬레이션

가능할 수도 있습니다. 원칙적으로 모든 칩은 해당 ME-CHIP이

필요합니다. 하지만 모든 ME-CHIP을 구입 하려면 비용이 만만치

않습니다. 비용을 감수하고 구입을 하려 해도 생산되지 않는 ME-

CHIP도 있습니다. 그래서 위와 같이 서로 비슷한 메모리, I/O 핀, 기능

및 비슷한 구조를 갖고 있는 칩 중 제일 기능이 많고 메모리 용량이

크고 I/O가 많은 ME-CHIP을 선택해서 하위 기종의 칩까지 지원하는

방식을 사용하고 있습니다. 다시 말하면 PIC16C74A-ME CHIP이

장착된 장비에서 PIC16C64A를 사용한다고 가정하면 PIC16C64A에는

A/D 기능이 없으므로 ADCON1을 모두 디지털 I/O로 설정 해서

사용하면 됩니다. 즉, 프로그램 메모리가 많으면 조금만 사용하면

되고, 특수 기능이 없는 디바이스의 경우 해당 기능은 Disable시키면

되고, I/O 포트도 서로 같은 기능의 핀만 사용하고 필요하지 않는 핀은

사용하지 않으면 됩니다. 한 가지 주의 할 것은 칩의 메모리 구조가

다르거나 A/D해상도, 칩의 특성 등을 고려해야 합니다.

질문 : PIC16C74A-ME 칩에서 PIC16C711이 지원됩니까?

답변 : 위의 답변대로라면 비슷하기 때문에 PIC16C74A와 PIC16C711

칩의 특징을 알고 장비를 사용하면 비슷하게 사용할 수는 있습니다.

하지만 PIC16C74A칩은 유저램 영역이 20H부터 시작되는 반면

PIC16C711은 0CH부터 시작됩니다. 때문에 PIC16C74A-ME가 장착된

장비에서 PIC16C711을 사용하려면 어셈블리어의 경우 변수 선언을

20H부터 선언해야 합니다. 그런 후 실제 PIC16C711 칩에 라이팅 할

때는 다시 0CH로 선언 후 어셈블을 다시 한 후 생성된 HEX파일로

라이팅 해야 합니다. 간접 번지지정 방식을 사용했다든지 C 언어로

프로그램 작성했을 시는 변수선언과 사용에 더욱 주의 해야 합니다.

질문 : 에뮬레이션은 되는데 일정 주기로 리셋 되는 것 같습니다.

답변 : MRPIC-IDE 프로그램 V12.6 이하 버전을 사용 중인 경우

MRPIC-IDE 프로그램 메뉴 중에서 Setup-> Enable WatchDog Timer가

체크(V)되어 있을 것입니다. 이 경우 프로그램 소스에서 와치독 타임

아웃 주기 내에 와치독 타이머가 클리어 되도 록 CLRWDT 을 삽입해야

합니다. 와치독 타이머를 사용하지 않을 경우 체크(V)를 해제하고

에뮬레이션 하면 됩니다. 이 경우 칩으로 라이팅 시 휴즈 옵션 중

Watch Dog Timer 를 체크(V)하고 라이팅 하면 안됩니다.

MRPIC-IDE V12.7을 사용하시는 유저는 프로젝트 편집화면에서 WDT

옵션을 “ OFF” 로 선택하십시오.

-52-

Page 53: 32비트 Edition MR.PIC-IDE - Comfile

질문 : MR.PIC로는 프로그램이 잘 동작하는데 칩으로 라이팅 해서

실행하면 칩이 일정 시간 간격으로 리셋 되는 것 같습니다.

답변: 이 경우는 MRPIC-IDE 프로그램 메뉴 중 Setup-> Disable

WatchDog Timer가 체크(V)되어 있어 에뮬레이션 시 와치독 타이머가

동작 하지 않고 있으므로 프로그램 소스에서 CLRWDT 명령을 실행

중이라도 효과가 없습니다. 그런데 칩으로 동작 시에는 와치독

타이머를 사용한다고 휴즈를 선택했으므로 와치독 타이머가 동작을

하고 있어 리셋이 되는 것입니다.

그리고 프로그램 소스에 CLRWDT 명령을 삽입 했다고 해도 와치독

타임 아웃 주기 안에 이 명령이 실행 안 되고 있기 때문에 클리어 되는

것입니다. 와치독 타이머를 사용 할 경우 반드시 MRPIC-IDE 프로그램

메뉴 중 Setup-> Enable WatchDog Timer를 체크(V)하고 에뮬레이션

해야 칩으로도 정상 동작합니다. 이런 경우는 상관 없습니다. 즉,

MRPIC-IDE 프로그램 메뉴 중 Setup-> Enable WatchDog Timer를

체크(V)하고 칩으로 라이팅 시 휴즈 옵션에서 와치독 타이를 사용하지

않음을 선택했을 때는 와치독 타이머가 동작하지 않기 때문에 칩은

정상 동작합니다.

질문 : MRPIC-IDE V12.6 이상 사용자는 Watch Dog Timer 사용을

어떻게 합니까?

답변 : 프로젝트 편집 메뉴 옵션 중 WDT On/Off로 제어합니다.

질문 : 에뮬레이션은 잘 되고, 와치독 타이머는 사용하지 않는데도

칩으로 동작 시 리셋 됩니다.

답변 : /MCLR 단자에 5V를 연결하셨는지 확인해 보십시오. MR.PIC는

내부적으로 풀업 되어 있어 리셋이 되지 않지만 칩으로 동작 시는

/MCLR 단자에 5V를 연결해야 합니다. 특히 이런 상황은 브레드보드

이용 시 많이 발생합니다. 다른 원인으로는 롬 라이팅 시 휴즈 옵션 중

Brown Out Detect를 체크(V) 했고 현재 칩의 동작 전원이 4.0V 이하로

동작 중이라면 리셋이 될 수 있습니다. Brown Out Detect 기능은 동작

전원이 4.0V 이하로 떨어지면 칩을 강제로 리셋 하는 기능이기

때문입니다.

질문 : 롬 라이팅 시 칩 내부의 EEPROM에 일일이 데이터를 입력하기

힘듭니다. 쉬운 방법이 있나요?

답변 : 내부 EEPROM의 위치는 2100H 번지입니다. 프로그램 소스에서

다음과 같이 작성하시면 됩니다.

ORG 2100H

DE “ My Program v1.1”

DE 01H,02H,03H,04H,05H,0FFH

이와 같이 하면 순차적으로 내부 EEPROM 번지에 데이터가 할당

됩니다.

주의: 에뮬레이션 할 때 DE 명령을 사용하면 에뮬레이션 되지

않으므로 롬 라이팅 할 때만 사용하십시오.

질문 : 칩이 코드 프로텍션이 걸렸고 여러 개의 칩이 있는데 서로 구분

할 수 있나요?

답변 : 코드 프로텍션이 걸려있어도 ID코드는 읽어 집니다. 그러므로

칩을 읽어서 ID코드를 비교하시면 됩니다. 만약 ID코드 설정하지

않았다면 구분 할 수 없습니다.

질문 : 프로그램 소스에서 ID코드와 컨피규레이션 휴즈 값을 설정할

수 있나요?

답변 : 예, 프로그램 소스에 다음과 같이 삽입하면 됩니다.

__CONFIG 011H 휴즈 값은 칩 마다 다른 비트맵을 가지고 있으므로

자세한 사항은 해당 디바이스의 데이터 북을 참조하십시오.

__IDLOCS 1234H ID코드 영역에 1234를 저장합니다.

질문 : 현재 MR.PIC 장비 안에 어떤 ME칩이 장착 되어 있는지 알 수

있나요?

답변 : 구입할 당시에 포장 박스 측면에 해당 ME칩이 체크되어

있습니다. 또는 케이스를 열고 매뉴얼의 MR.PIC 기능 설명을

참조하십시오.

질문 : MR.PIC-PGM와 PRO ENGINE-II는 MICROCHIP사의 모든

MCU의 라이팅을 지원합니까?

답변 : 아니오, 디바이스 리스트에 나타나는 디바이스만 가능합니다.

현재 등록되어 있지 않은 디바이스는 지속적인 프로그램

업그레이드를 통해 지원하고 있습니다. (현재 PIC17CXXX, PIC18FXXX

등의 HIGH END(16비트) 디바이스는 지원하지 않습니다.

-53-

Page 54: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

질문 : SLEEP MODE를 지원 하나요?

답변 : 예. 단, 2007년 현재 MID RANGE 계열의 ME CHIP Type이

PLCC(PIC16F877-ME/L, PIC16C74A-ME/L, PIC16C77-ME/L)인 것과

ME CHIP Type이 DIP Type인 것은 SLEEP MODE가 지원되며 QFP로

되어 있는 ME CHIP은 2005년부터 지원되고 있습니다.

질문 : PIC16C77-ME CHIP으로 PIC16C74나 그 하위 디바이스를

지원할 수 있습니까?

답변 : PIC16C77과 PIC16C74는 I/O와 기능,메모리 등은 같은데 유저램

영역이 다르며 구조도 다릅니다. PIC16C77은 BANK0, BANK1,

BANK2, BANK3까지 존재하며 유저램 사이즈는 368 바이트 입니 다.

반면 PIC16C74는 BANK0과 BANK1 존재하며 유저램 사이즈가 192

바이트 입니다. 또 한 PIC16C77의 각 BANK의 상위 16바이트가 모두

같은 영역으로 취급되는 반면 PIC16C74는 서로 독립된 영역으로

취급됩니다. 그림으로 보면 다음과 같습니다.

<그림7.2-2> PIC16C77의 레지스터 맵

이 부분들이 모두 같은 영역이라는 뜻입니다. 즉, BANK0 70H 영역에

33H을 썼다고 가정하면 BANK1의 F0H BANK2의 170H, BANK3의

1F0H 영역도 모두 33H로 변하게 됩니다. 그러므로 BANK1과

BANK2와 BANK3의 상위 16바이트는 사용할 수 없다는 뜻입니다.

반면 PIC16C74는 BANK0과 BANK1이 각각 독립된 영역으로 되어

있습니다. 그렇기 때문에 PIC16C77-ME 칩이 장착된 상태에서

PIC16C74를 에뮬레이션 할 경우 다음과 같은 문제가 발생할 수

있습니다. 만약 유저 프로그램에서 RAM을 많이 사용해서 BANK0,

BANK1을 거의 사용한다고 가정하면 어떻게 될까요? BANK1의 0F0H

~ 0FFH 번지의 내용이 모두 같은 값으로 바뀌기 때문에 원하는

동작이 될 수 없습니다.

질문 : PIC16C74A를 에뮬레이션 하는데 BANK0의 070H 내용과

BANK1의 0F0H의 내용이 같이 변합니다. 그리고 칩으로 라이팅해서

동작 시키면 잘 됩니다.

답변 : 위의 답변과 관련된 내용입니다. 칩으로 동작되는 것은

당연합니다. PIC16C74A칩의 BANK0과 BANK1은 서로 다른

영역이므로 같이 변하지 않습니다. 이 증상은 MR.PIC장비 안의

ME칩이 PIC16C77-ME 또는 PIC16F877/A-ME칩이 장착되어 있는 것

같습니다. 이런 경우 해결 방법은 해당 칩의 ME 칩을 장착하거나 또는

BANK1의 F0H ~ 0FFH 영역의 유저 램을 사용하지 않는 것입니다.

질문 : PORTA와 PORTE에 입/출력 되는 내용이 스페셜 레지

스터창에 나타나지 않습니다.

답변 : PIC칩은 POWER ON RESET시 초기값으로 PORTA와 PORTE가

아날로그 포트(ADCON1 레지스터)로 설정되고 TRISA와 TRISE

레지스터도 입력으로 설정 되기 때문에 스페셜 레지스터 창에

나타나지 않습니다. PORTA와 PORTE는 디지털 I/O 또는 ANALOG

입력 포트로 사용할 수 있는데 ADCON1레지스터의 값이 POWER ON

RESET 시 클리어 되기 때문에 디폴트로 ANALOG 포트로 설정이 되는

것입니다. 만약 PORTA와 PORTE의 모든 포트를 디지털 I/O로

사용한다면 다음과 같이 하시면 됩니다.

PIC16F877/A-ME 사용자는 ADCON1 값을 07H로

PIC16C74A-ME 사용자는 ADCON1 값을 07H로

PIC16C711-ME 사용자는 ADCON1 값을 03H로 설정하면 됩니다.

질문 : MR.PIC는 USB를 지원합니까?

답변 : 예, 단, 컴파일에서 공급하는 MR.PIC용 전용 USB 다운로드

컨버터와 MRPIC-IDE V12.6 이상을 설치하여야 합니다.

질문 : 예전에 구매한 MR.PIC 장비에서도 USB를 사용 할 수

있습니까?

답변 : 예.

-54-

Page 55: 32비트 Edition MR.PIC-IDE - Comfile

질문 : PORTA와 PORTE가 디지털 I/O 포트로 설정되어 있지 않은데

출력이 가능합니까?

답변 : 예, PORTA와 PORTE가 아날로그 포트로 설정이 되어 있어도

해당 포트에 HIGH 또는 LOW 출력이 가능합니다. 단, 스페셜

레지스터의 내용은 0으로 되어 있지만 실제로 출력은 이루어 집니다.

그런데 다음의 소스는 PORTA가 아날로그 포트로 설정되어 있기

때문에 제대로 실행 되지 않습니다. 이유는 PORTA,0이 HIGH출력은

되고 있어도 스페셜 레지스터에는 PORTA,0이 클리어 되어 있기

때문입니다. LIST P=16C711 INDF EQU 00H TMR0 EQU 01H PC EQU 02H STATUS EQU 03H FSR EQU 04H PORTA EQU 05H PORTB EQU 06H PCLATH EQU 0AH INTCON EQU 0BH ADRES EQU 09H ADCON0 EQU 08H OPTIONR EQU 01H TRISA EQU 05H TRISB EQU 06H PCON EQU 87H ADCON1 EQU 88H ORG 0 SIJAK BSF STATUS,5 CLRF TRISA ; MOVLW 03H ; MOVWF ADCON1 BCF STATUS,5 CLRF PORTA BSF PORTA,0 MAIN_LOOP BTFSS PORTA,0 GOTO MAIN_LOOP BSF PORTA,1 BSF PORTA,2 BSF PORTA,3 GOTO MAIN_LOOP END

위의 주석을 없애고 실행하면 제대로 실행 됩니다.

질문 : PIC16C711칩으로 PORTA와 PORTE 아날로그와 디지털 I/O로

혼용하여 사용하고 있고 아날로그 입력은 RA0에서만 입력 받고

있는데 RA1은 I/O로 쓰고 싶습니다. 그런데 RA0만 아날로그

입력으로 쓰는 Configuration은 없습니다. 어떻게 해야 하나요?

답변 : 우선 ADCON1 =02H로 설정하여 RA0와 RA1을 아날로그 입력

RA2,RA3은 I/O로 설정하고 모두 출력으로 사용할 경우는

TRISA<3:1>을 모두 출력(000)으로 설정하면 됩니다.만약 입력 포트가

두 개 필요하다면 RA2와 RA3을 입력으로 설정하고 RA1은 출력으로

설정합니다. 반면 네 개 모두 입력 포트로 설정하고자 하는 경우는

RA1포트가 아날로그 입력 포트로 되어 있어 지원되지 않습니다.

질문 : PIC16C74A-ME 칩을 사용하고 있는데 지금 개발하고 있는

칩은 PIC16C64A입니다. 이런 경우 는 어떻게 하나요?

답변 : 앞에서도 PIC16C74A-ME 칩이 65,64,63,62를 지원한다고

했습니다. PIC16C74A-ME 칩이 장착된 에뮬레이터에서 A/D 기능이

없는 디바이스를 사용할 경우 두 가지의 방법이 있습니다. 첫 번째는

MR.PIC 장비의 케이스를 열고 PIC16C74A-ME 보드의 ENAD 점퍼

핀을 L쪽으로 쇼트 시키면 A/D 기능을 사용하지 않게 됩니다. 두

번째는 프로그램 코드에 다음과 같은 명령을 추가 시켜 주면 됩니다.

BSF STATUS,5

MOVLW 07H

MOVWF ADCON1

이 추가 시킨 명령은 에뮬레이터로 개발이 완전히 끝난 후

REMARK(주석) 처리 한 후 다시 한 번 어셈블 한 후 생성된 HEX 파일로

라이팅 하시면 됩니다.

질문 : CCS-C로 PIC16F87X칩을 개발하는데 A/D변환 결과가

10비트가 되지 않는 것 같습니다.

답변 : CCS-C 버전이 3.0 이상으로 바뀌면서 해당 칩의 A/D 해상도를

선언해 주게 되어 있는데 이 선언을 하지 않으면 디폴트로 8비트

해상도로 컴파일 합니다. 만약 사용하는 칩의 해상도가 8비트가

아니라면 다음과 컴파일러에게 알려줘야 합니다. 이것을 선언하는

지시어의 형식입니다. #DEVICE ADC=10 이 지시어는 반드시

#INCLUDE< 해당 디바이스.H> 문 바로 아래에 놓여야 합니다.

PIC16F877 사용자는

#INCLUDE<16F877.H>

#DEVICE ADC=10

PIC16C74 사용자는

#INCLUDE<16C74.H>

#DEVICE ADC=8로 선언하면 됩니다. 또는 선언하지 않으면 디폴트로

8비트 해상도가 선택 됩니다.

-55-

Page 56: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

질문 : PIC16F877/A/876/A, PIC16C77/76, PIC16F77/76을

사용하는데 유저 램 영역이 368 바이트인 것으로 알고 있는데

프로그램 에서는 유저 램을 많이 사용하지 않았는데 “ Not enough

RAM for all variables” 에러가 발생합니다.

답변 : #include<16F877.H> 밑에 다음과 같이 추가해 주시면 됩니다.

#DEVICE *=16을 추가하면 됩니다. 여기서 *=8 또는 *=16 이 의미

하는 것은 스페셜 레지스터의 어드레스를 지정하기 위한 포인터로

8비트를 사용할 것인지 16비트를 사용할 것인지를 의미합니다.

BANK0과 BANK1만 있는 디바이스는 *=8로 BANK0, BANK1, BANK2,

BANK3으로 되어 있는 디바이스는 *=16으로 선언하면 됩니다. 선언이

없을 경우 #DEVICE *=8 이 디폴트가 되므로 PIC16C74, 73, 65, 64, 63,

62, 711, 84등 BANK0, BANK1 만 존재하는 칩들은 생략해도 됩니다.

질문 : PORTA.4에 HIGH(5V)를 출력하려는데 출력이 되지 않습니다.

답변 : 이 포트는 Open Drain Output으로 Full Up 저항을 연결해서 Low

Active로 제어해야 합니다.

질문 : MR.PIC에서 PIC12C508/509의 /GPWU, /GPPU, /GPWUF 이

동작하지 않습니다.

답변 : PIC12C508 에뮬레이션 방법과 제약사항 참조

질문 : PIC12C508/509,671/672의 OSCCAL(Oscillator calibration value)

값이 무엇입니까?

답변 : PIC12C508/509,671/672칩은 외부 발진 소자를 붙이지 않고 칩

내부의 4MHz RC발진 회로를 사용하여 칩을 구동할 수 있습니다. 이

칩들은 프로그램 마지막 번지 PIC12C508(1FFH), 509(3FFH)번지에

OSCCAL값이 들어 있습니다. 이 값은 칩 마다 특성이 조금씩 달라

4MHz 발진을 할 수 있도록 보정해 주는 역할을 합니다. 그러므로

BLANK칩 임에도 불구하고 칩을 읽으면 해당 칩의 마지막 번지에 값이

들어 있습니다. 만약 EPROM(JW)을 사용 후 자외선 소거기로 지울 때

OSCCAL값도 함께 지워지므로 미리 어딘가에 적어두어야 합니다.

만약 값을 확인하지 않고 지웠을 때 OSCCAL값이 사라지기 때문에

4MHz로 동작하지 않을 수 있습니다.

질문 : MR.PIC에서 4.194304MHz를 사용하려는데 어떻게 해야

합니까?

답변 : MR.PIC장비의 측면에 DIP S/W가 있는데 오른쪽 세 개의

스위치를 모두 위로 올려 Internal OSC로 선택 후 케이스의 윗 부분을

열면 Oscillator 빈 소켓이 있는데 이곳에 4.194304 MHz OSC를 꼽으면

됩니다. 매뉴얼 MR.PIC 기능 설명 참조

질문 : 개발하고 있는 타겟 보드에 11.0592MHz OSC가 연결 되어

있습니다. 그런데 제대로 속도가 안나오는 것 같습니다.

답변 : MR.PIC는 안정된 동작을 하기 위해 외부에서 클럭을 공급 할 수

없게 되어 있습니다. 즉, OSC1핀은 타겟 보드와 연결이 되지

않습니다.(OSC2는 연결되어 있음) 그렇기 때문에 타겟보드에 있는

OSC 클럭이 MR.PIC쪽으로 전달되지 않는 것입니다. Internal OSC로

선택 후 OSC를 장착해야 합니다.

매뉴얼 MR.PIC 기능 설명 참조

질문 : MR.PIC-PGM및 PRO ENGINE-II에서 P1C16F87X 칩이 라이팅

되지 않습니다.

답변 : Software 및 Firmware버전이 낮아서 입니다. Software는

www.comfle.co.kr 홈페이지의 다운로드자료실 > PICTools 에서

업그레이드하시고. Firmware는 Readme파일을 읽어 보시거나

매뉴얼의 MR.PIC-PGM 또는 PRO ENGINE-II를 참조하십시오.

질문 : PIC12C67X칩을 에뮬레이션 시 PIN CHANGE 인터럽트가

지원되지 않습니다.

답변 : PIN CHANGE 인터럽트 기능은 MR.PIC장비의 버그로 현재

지원되지 않고 있습니다. 매뉴얼의 PIC12C67X 에뮬레이션 방법과

제약사항 참조

질문 : C 컴파일러 데모 버전을 구할 수 있나요?

답변 : 예.

CCS C: http://www.ccsinfo.com/demo.shtml

HI-TECH C: http://www.htsoft.com의 Jump to에서 PICC Lite Freeware

클릭하시면 됩니다.

질문 : C 컴파일러의 지원 디바이스를 알고 싶습니다.

답변 : CCS-C : http://www.ccsinfo.com/devices.shtml

HI-TECH C : http://www.htsoft.com/에서 Supported devices

질문 : C 컴파일러의 차이점을 알고 싶습니다.

답변 : http://www.ccsinfo.com/compare.shtml

CCS 사에서 비교해 놓은 사이트 입니다.

질문 : CCS-C 정품 구매자입니다. 언제까지 업그레이드 받을 수

있나요?

답변 : CCS-C 본사 사이트에 등록 후 30일 동안만 업그레이드 버전을

다운로드 받을 수 있습니다. 그러므로 컴파일러 구매 후 무조건 등록

하시면 등록 시점부터 30일간 사용할 수 있으므로 바로 등록 하지

마시고 현재 사용하고 있는 버전에서 지원되지 않는 디바이스를

컴파일 한다든지 또는 현재 사용하고 있는 버전에 해당 버그가 있을

-56-

Page 57: 32비트 Edition MR.PIC-IDE - Comfile

경우를 제외하고는 가능한 나중에 등록하는 것이 좋습니다. 정품

구매자는 어제든지 한번은 등록할 수 있으므로 가능한 나중에

등록하면 그 만큼 최종 업그레이드 버전을 다운 받을 수 있기

때문입니다.

* 등록 시 모든 항목을 영문으로 작성해 주시고 Vendor Compiler

Purchased From: 항목은 COMFILE로 작성해 주시면 됩니다. 등록

사이트 http://www.ccsinfo.com/cgi-bin/register.pl

질문 : CCS-C 구입자 입니다. 등록 후 30일간의 사용 기간이 만료

되었습니다. 업그레이드 방법이 있나요?

답변 : 등록 후 30일간의 사용 기간이 지나면 더 이상 다운로드 할 수

없습니다. 이 경우 1년간 다운로드 받을 수 있는 1 Year Maintenance

버전을 구매하셔야 합니다. 이 버전 또한 1년이 지나면 다시

구매하셔야 합니다. 구매는 컴파일로 문의하시면 됩니다.

질문 : HI-TECH C 컴파일러 구매자 입니다. 언제까지 업그레 이드

받을 수 있나요?

답변 : 어제든지 한번은 업그레이드 가능합니다. 그러므로 가능한

나중에 등록하면 그 만큼 최종 업그레이드 버전을 다운 받을 수 있기

때문입니다. 등록 시 http://www.htsoft.com 방문하셔 아래의 항목을

선택 후 나타나는 폼에 정보를 입력하시면 됩니다.

질문 : HI-TECH C 구입자 입니다. 한 번 업그레이드를 했습니다. 다시

업그레이드를 할 수 있는 방법이 있나요?

답변 : 1년간 업그레이드 가능한 Extended Suport Option을 구매하셔야

합니다. 구매는 컴파일로 문의하시면 됩니다.

질문 : MR.PIC 다운로드 케이블을 분실했습니다. 핀 연결도를 알려

주세요.

답변 : 25핀 1:1 케이블을 사용하시면 됩니다.

질문 : PIC12C50X, PIC12C67X, PIC16C505 딥 타입을 라이팅 하려고

하는데 ENG-DIP1214소켓이 없습니다. 임시로 만들어 쓸 방법이

있나요? MR.PIC-PGM 또는 PRO ENGINE-II의 40핀 텍스툴과 해당

칩을 다음과 같이 연결하면 됩니다.

질문 : 에뮬레이터 프로브를 분실했습니다. 핀 연결도를 알려 주세요.

답변 : 플랫트 케이블의 빨강색이 1번 핀인데 콘넥터의 구조상 플랫트

케이블의 1번 핀이 라인이 40번에 2번 라인이 1번 핀에 연결되게 되어

있습니다. MR.PIC장비 내에서 바뀌어 있으므로 그대로 연결하시면

됩니다.

질문 : PIC16F877A로 개발된 제품이 있는데 칩을 라이팅 하지 않은

상태에서 인서트 작업을 하고 나중에 테스트 할 때 라이팅 할 수

있나요?

답변 : 예. 대부분의 MID RANGE 칩과 PIC12C50X칩은 라이팅 시 5개의

핀을 사용해서 라이팅 합니다. 이 방식을 ICSP(In-Circuit Serial

Programming)라하며 다음과 같이 5개의 핀을 사용합니다. MR.PIC-

PGM 또는 PRO ENGINE-II의 텍스 툴의 해당 핀 5개를 케이블로 만들어

아래의 회로도처럼 콘넥터로 처리해서 연결해 주면 됩니다.

PIC12C5XX칩의 경우

Vdd : 5V

Vss : 0V

GP3,/MCLR/Vpp : 13.5V

GP0 : DATA

GP1 : CLOCK

단, 개발 중인 보드에 다음과 같이 회로가 구성되어 있어야 합니다.

<그림7.2-3> ICSP 구성도

-57-

Page 58: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

PIC16CXXX및 PIC16FXXX 칩의 경우

Vdd : 5V

Vss : 0V

/MCLR : 13.5V

RB7 : DATA

RB6 : CLOCK

<그림7.2-4> ICSP 구성도

2003년12월1일 현재 MR.PIC의 Errata 내용 아래에 있으며 현재

Errata는 버전 업 되면서 수정될 수 있습니다.

1. 2004년 1월7일 이전에 구매한 MR.PIC는 외부 /MCLR 리셋을

지원하지 않습니다. (단,BASE LISE 계열은 지원 됨)

2. PIC12C67X 칩을 에뮬레이션 할 경우 GP0,GP1,GP3의 Interrupt-on-

pin change 기능이 지원되지 않습니다.

3. MR.PIC에서 MID-Range 계열의 칩을 에뮬레이션 시 측면에 있는

주파수 선택 딥 스위치의 32kHz 를 지원하지 않습니다.

4. MR.PIC는 PIC16F87X/A계열의 Write Flash Program Memory/Red

Flash Program Memory 기능을 지원하지 않습니다. 이 기능은 칩으로

직접 실험해야 합니다.

5. MR.PIC는 PIC16F87XA계열의 칩을 에뮬레이션 할 때 Comparator

부분은 에뮬레이션 칩이 PIC16F877A-ME/PL인 경우만 지원 됩니다.

이유는 PIC16F877-ME의 경우 Comparator 기능이 없기 때문입니다.

7. MR.PIC는 PIC16C773,774의 RB0, RB1의 A/D입력기능을 지원하지

않습니다.

8. MR.PIC는 3V 에뮬레이션을 지원하지 않습니다.

9. BASE LINE 계열 에뮬레이션 시 STEP OVER 기능이 지원되지

않습니다.

10. MR.PIC에서 프로젝트 작성시 소스 파일의 경로명 가운데 공백이

들어가면 에러가 발생합니다. 예를 들어 C:₩Program file₩test.asm

이라면 “ Program file” 이라는 디랙토리명 가운데에 공백이 들어가

있으므로 아래 그림과 같은 에러가 발생하게 됩니다.

1. MRPIC-IDE V12.7과 이전 버전의 달라진 점

1. EM 에디터를 사용하지 않고 자체 에디터를 사용함

2. MR.PIC-PGM프로그램을 MRPICIDE 프로그램 내에 포함. 따라서

MRPICPGM을 실행하기 위해서는 반드시 MRPICIDE를 실행해야

합니다.

3. 프로젝트 파일 구성이 달라졌습니다.

4. USB포트를 이용한 다운로드가 가능해졌습니다. 단, MR.PIC 전용

USB 다운로드 컨버터를 사용해야 합니다.

USB 다운로드 컨버터 : 44,000원

5. 2004년 1월 5일 이 후 구매 한 MR.PIC는 다운로드 속도 향상을 위해

클럭을 20Mhz를 사용했고 에뮬레이터 쪽 Firmware 가 교체

되었습니다. 이전에 구매하신 사용자가 다운로드 속도 향상을 위해

업그레이드 할 경우 업그레이드 비용 : 22,000원

6. Windows XP,NT 사용 시 Install Port Driver for NT 프로그램 실행 하지

않아도 됨. 단, 제어판 -> 프린터 -> 드라이버 추가 -> Local -> LPT1 -

> HP LaserJet 4를 설치해야 함

CHAPTER 8 MR.PIC Errata & ETC

-58-

Page 59: 32비트 Edition MR.PIC-IDE - Comfile

2. PIC Micro controller Package Type

Ceramic Side Brazed Dual In-Line Family

- 28 (JW) 300mil

Ceramic Dual In-Line(CERDIP) Family

- 18 (JW) 300mil - 28 (JW) 300mil

- 28 (JW) 600mil - 40 (JW) 600mil

Ceramic Chip Carrier Family(CL)

- 68 (CL)

Plastic Dual In-Line(PDIP) Family

- 8 (P) 300mil - 14 (P) 300mil

- 16 (P) 300mil - 18 (P) 300mil

- 22 (P) 400mil - 24 (P) 600mil

- 24 (SP) 300mil - 28 (SP) 300mil

- 28 (P) 600mil - 40 (P) 600mil

- 48 (P) 600mil - 60 (P) 750mil

Plastic Leaded Chip Carrier(PLCC) Family

- 20 (L) square - 28 (L) square

- 32 (L) rectangle - 44 (L) square

- 68 (L) square

Plastic Small Outline (SOIC) Family

- 8 (SN) narrow, 150mil

- 8 (SM) medium, 208mil

- 14 (SL) narrow, 150mil

- 18 (SO) wide, 300mil

- 24 (SO) wide, 300mil

- 28 (SO) wide,300mil

- 28 (SO) wide, 300mil

Plastic Shrink Small Outline (SSOP) family

- 20 (SS) 209mil - 28 (SS) 209mil

Plastic Thin Shrink Small Outline (TSSOP) Family

- 8 (ST) 4.4m - 14 (ST) 4.4m - 20 (ST) 4.4m

Plastic Thin Small Outline(TSOP) & Very Smal Outline(VSOP)

Families

- 28 (TS) 8*20mm - 28 (VS) 8*13.4mm

Plastic Quad Flatpack (QFP) Family

- 44 (PQ) ~

Thin Plastic Quad Flatpack (TQFP) Family

- 44 (PT/TQ) ~ - 64 (PT/TQ) ~

<표7.5-1> Package Type

-59-

Page 60: 32비트 Edition MR.PIC-IDE - Comfile

MR.PIC-IDE 통합 개발 환경 매뉴얼

3. PIC Family Identification System

<표7.6-1> PIC Family Identification System

-60-

Page 61: 32비트 Edition MR.PIC-IDE - Comfile

제품보증서 (WARRANTY CARD)

다음과 같이 보증합니다.

본 제품은 컴파일 테크놀로지㈜의 엄정한 품질관리 및 검사과정을 거쳐서 만든 것입니다.

제품 수리 및 교환에 대한 보상기준은 재정경제원 고시 소비자 피해 보상 규정에 따릅니다.

(단, 사용자 사용 중 부주의로 인하여 생긴 고장은 유상 처리함)

수리를 의뢰할 때에는 꼭 이 보증서를 보여주시기 바랍니다.

제품명 보증기간

모델명

일련번호 1년

고객

성명 전화

주소

구입처

상호 담당

컴파일테크놀로지㈜

서울 구로구 구로5동104-5 컴파일 빌딩

대표전화 : 02-711-2592

-61-