• 검색 결과가 없습니다.

MR.PIC-PGM, PRO ENGINE II

문서에서 MR.PIC (페이지 39-45)

-38-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가 어셈블리어로 컴파일 된 코드가 나타나는데 이곳의 어셈블리어에 브레이크 포인터를 설정할 수 있습니다.

주의: 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를 사용할 수 있습니다.

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

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

본 제품에서 프로그램할 수 있는 디바이스의 종류는 다음과 같습니다.(2004년 2월 기준)

PIC12C508,508A PIC12CE518,519 PIC12C509,509A PIC12C671,672 PIC12CE673,674 PIC12F629,675 PIC16C505 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

PIC16C72,72A,73,73A,73B,73C,74,74A,74B,74C,76,77,77A PIC16C773,774

PIC16C923,924,925,926 PIC16F627,628 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

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 을 참고하십시오.

-42-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 에러

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

-44-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

문서에서 MR.PIC (페이지 39-45)

관련 문서