• 검색 결과가 없습니다.

FAQ ( 자주 등장하는 질문과 대답 )

문서에서 MR.PIC (페이지 50-58)

ORG 0 ; RESET VECROR GOTO SIJAK ; GOTO TEST

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는 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설치를 참조하십시오.

-50-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 포트 체인지 인터럽트가 지원 안 되는 것 같습니다. 맞나요?

답변 :예, 이 기능은 2004년 1월7일 현재 까지 지원되지 않습니다. 뒤 부분의 Errata 내용을 읽어보세요.

질문 : 현재 877-ME칩이 장착되어 있는데 PIC16C77이 에뮬 레이션 되는 것 같은데 맞습니까?

답변:

PIC16F877

PIC16C77

PIC16C64 PIC16C73

PIC16C65 PIC16C72 PIC16C74

PIC16C63 PIC16C62 PIC16C76 PIC16C67 PIC16C66 PIC16F876 PIC16F874 PIC16F873 PIC16F872

<그림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)하고 라이팅 하면 안됩니다.

질문 : 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비트) 디바이스는 지원하지 않습니다.

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

질문 : SLEEP MODE를 지원 하나요?

답변 : 예. 단, 2004년 현재 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은 지원되지 않습니다. 곧 QFP 타입에서도 SLEEP MODE 지원되게 할 예정입니다.

질문 : PIC16C77-ME CHIP으로 PIC16C74나 그 하위 디바이스를 지원할 수 있습니까?

답변 : PIC16C77과 PIC16C74는 I/O와 기능,메모리 등은 같은데 유저램 영역이 다르며 구조도 다릅니다. PIC16C77은 BANK0, BANK1, BANK2, BANK3까지 존재하며 유저램 사이즈는 368 바이트 입니 다.

반면 PIC16C74는 BANK0과 BANK1 존재하며 유저램 사이즈가 192 바이트 입니다. 또 한 PIC16C77의 각 BANK의 상위 16바이트가 모두 영역으로 취급되는 반면 PIC16C74는 서로 독립된 영역으로 취급됩니다. 그림으로 보면 다음과 같습니다.

같은 -52-

<그림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-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-ME 사용자는 ADCON1 값을 07H로 PIC16C74A-ME 사용자는 ADCON1 값을 07H로

PIC16C711-ME 사용자는 ADCON1 값을 03H로 설정하면 됩니다.

질문 : MR.PIC는 USB를 지원합니까?

답변 : 예, 단, 컴파일에서 공급하는 MR.PIC용 전용 USB 다운로드 컨버터와 MRPIC-IDE V12.6 이상을 설치하여야 합니다.

질문 : 예전에 구매한 MR.PIC 장비에서도 USB를 사용 할 수 있습니까?

답변 : 예.

문서에서 MR.PIC (페이지 50-58)

관련 문서