1.4 PIC 마이크로컨트롤러
PIC MCU 프로그래밍을 설명하기 위해 중상급의 MCU 모델을 하나 선택하여 설명하도록 하겠습니다. 여기서는 PIC18F887을 가지고 설명합니다. 이 모델은 강력한 기능을 가지고 있지만 상대적으로 단순하여 이해하기 좋습니다.
Family |
ROM [Kbytes] |
RAM [bytes] |
Pins |
Clock Freq. [MHz] |
A/D Inputs |
Resolution of A/D Converter |
Compar- ators |
8/16 – bit Timers |
Serial Comm. |
PWM Outputs |
Others |
Base-Line 8 - bit architecture, 12-bit Instruction Word Length |
PIC10FXXX |
0.375 - 0.75 |
16 - 24 |
6 - 8 |
4 - 8 |
0 - 2 |
8 |
0 - 1 |
1 x 8 |
- |
- |
- |
PIC12FXXX |
0.75 - 1.5 |
25 - 38 |
8 |
4 - 8 |
0 - 3 |
8 |
0 - 1 |
1 x 8 |
- |
- |
EEPROM |
PIC16FXXX |
0.75 - 3 |
25 - 134 |
14 - 44 |
20 |
0 - 3 |
8 |
0 - 2 |
1 x 8 |
- |
- |
EEPROM |
PIC16HVXXX |
1.5 |
25 |
18 - 20 |
20 |
- |
- |
- |
1 x 8 |
- |
- |
Vdd = 15V |
Mid-Range 8 - bit architecture, 14-bit Instruction World Length |
PIC12FXXX |
1.75 - 3.5 |
64 - 128 |
8 |
20 |
0 - 4 |
10 |
1 |
1 - 2 x 8 1 x 16 |
- |
0 - 1 |
EEPROM |
PIC12HVXXX |
1.75 |
64 |
8 |
20 |
0 - 4 |
10 |
1 |
1 - 2 x 8 1 x 16 |
- |
0 - 1 |
- |
PIC16FXXX |
1.75 - 14 |
64 - 368 |
14 - 64 |
20 |
0 - 13 |
8 or 10 |
0 - 2 |
1 - 2 x 8 1 x 16 |
USART I2C SPI |
0 - 3 |
- |
PIC16HVXXX |
1.75 - 3.5 |
64 - 128 |
14 - 20 |
20 |
0 - 12 |
10 |
2 |
2 x 8 1 x 16 |
USART I2C SPI |
- |
- |
High-End 8 - bit architecture, 16-bit Instruction Word Length |
PIC18FXXX |
4 - 128 |
256 - 3936 |
18 - 80 |
32 - 48 |
4 - 16 |
10 or 12 |
0 - 3 |
0 - 2 x 8 2 - 3 x 16 |
USB2.0 CAN2.0 USART I2C SPI |
0 - 5 |
- |
PIC18FXXJXX |
8 - 128 |
1024 - 3936 |
28 - 100 |
40 - 48 |
10 - 16 |
10 |
2 |
0 - 2 x 8 2 - 3 x 16 |
USB2.0 USART Ethernet I2C SPI |
2 - 5 |
- |
PIC18FXXKXX |
8 - 64 |
768 - 3936 |
28 - 44 |
64 |
10 - 13 |
10 |
2 |
1 x 8 3 x 16 |
USART I2C SPI |
2 |
- |
모든 PIC 마이크로컨트롤러는 하버드 아키텍쳐를 사용합니다. 먼저 글에서 설명하였듯이 이는 프로그램 메모리가 CPU에 8개 이상의 라인으로 연결되어 있다는 것을 의미합니다. 버스의 너비에 따라 12, 14, 16 비트 마이크로컨트롤러가 존재합니다. 위의 테이블은 제품을 이런 세가지 카테고리에 따라 나눈것을 보여줍니다.
테이블에서 보듯 모든 마이크로컨트롤러(16-bit PIC 24FXXX , PIC 24HXXX 제외)는 8-bit 하버드 아키텍쳐를 가지고 있고 이 세가지중 하나의 카테고리에 속합니다. 다시말하면 프로그램 워드의 크기가 MCU의 카테고리를 결정합니다. 비슷한 8비트 코어를 사용하고 있다면, MCU는 모두 같은 인스트럭셋과 비슷한 하드웨어 구조를 가지고 있고 연결되는 주변기기정도에 차이가 있다고 볼수 있습니다.
INSTRUCTION SET
16F8XX 인스트럭션 셋에는 총 35개의 인스트럭션이 있습니다. 인스트럭션의 숫자는 많지가 않은데요. 이것은 PIC MCU가 RISC 구조를 채택하였기 때문입니다. 때문에 빠른 속도와 간단한 디자인구조, 코드 효율성에 우수함을 보여줍니다. RISC 구조의 단점은 프로그래머가 복잡한 연산을 위해서는 여러개의 인스트럭션을 조합해야 되는 것인데, 이것은 어셈블리 언어를 사용할때만 해당되는 이야기입니다. C와 같은 하이레벨 언어에서는 컴파일러가 대신 그와 같은 작업을 하여줍니다.
INSTRUCTION EXECUTION TIME
모든 인스트럭션은 싱글 싸이클 인스트럭션입니다. (conditional branch 및 program counter상에서 수행되는 인스트럭션은 two cycle임) 싱글 싸이클 인스트럭션은 4개의 클럭 사이클로 구성되어 있습니다. 만약 4Mhz 오실레이터를 사용한다면, 인스트럭션이 실행되는 시간은 1μS 이 됩니다. 점프인스트럭션은 2 cycle이니까 2μS가 되겠군요
아래는 14-bit PIC MCU의 인스트럭션 셋입니다:
Instruction |
Description |
Operation |
Flag |
CLK |
* |
Data Transfer Instructions |
MOVLW k |
Move constant to W |
k -> w |
|
1 |
|
MOVWF f |
Move W to f |
W -> f |
|
1 |
|
MOVF f,d |
Move f to d |
f -> d |
Z |
1 |
1, 2 |
CLRW |
Clear W |
0 -> W |
Z |
1 |
|
CLRF f |
Clear f |
0 -> f |
Z |
1 |
2 |
SWAPF f,d |
Swap nibbles in f |
f(7:4),(3:0) -> f(3:0),(7:4) |
|
1 |
1, 2 |
Arithmetic-logic Instructions |
ADDLW k |
Add W and constant |
W+k -> W |
C, DC, Z |
1 |
|
ADDWF f,d |
Add W and f |
W+f -> d |
C, DC ,Z |
1 |
1, 2 |
SUBLW k |
Subtract W from constant |
k-W -> W |
C, DC, Z |
1 |
|
SUBWF f,d |
Subtract W from f |
f-W -> d |
C, DC, Z |
1 |
1, 2 |
ANDLW k |
Logical AND with W with constant |
W AND k -> W |
Z |
1 |
|
ANDWF f,d |
Logical AND with W with f |
W AND f -> d |
Z |
1 |
1, 2 |
ANDWF f,d |
Logical AND with W with f |
W AND f -> d |
Z |
1 |
1, 2 |
IORLW k |
Logical OR with W with constant |
W OR k -> W |
Z |
1 |
|
IORWF f,d |
Logical OR with W with f |
W OR f -> d |
Z |
1 |
1, 2 |
XORWF f,d |
Logical exclusive OR with W with constant |
W XOR k -> W |
Z |
1 |
1, 2 |
XORLW k |
Logical exclusive OR with W with f |
W XOR f -> d |
Z |
1 |
|
INCF f,d |
Increment f by 1 |
f+1 -> f |
Z |
1 |
1, 2 |
DECF f,d |
Decrement f by 1 |
f-1 -> f |
Z |
1 |
1, 2 |
RLF f,d |
Rotate left f through CARRY bit |
|
C |
1 |
1, 2 |
RRF f,d |
Rotate right f through CARRY bit |
|
C |
1 |
1, 2 |
COMF f,d |
Complement f |
f -> d |
Z |
1 |
1, 2 |
Bit-oriented Instructions |
BCF f,b |
Clear bit b in f |
0 -> f(b) |
|
1 |
1, 2 |
BSF f,b |
Clear bit b in f |
1 -> f(b) |
|
1 |
1, 2 |
Program Control Instructions |
BTFSC f,b |
Test bit b of f. Skip the following instruction if clear. |
Skip if f(b) = 0 |
|
1 (2) |
3 |
BTFSS f,b |
Test bit b of f. Skip the following instruction if set. |
Skip if f(b) = 1 |
|
1 (2) |
3 |
DECFSZ f,d |
Decrement f. Skip the following instruction if clear. |
f-1 -> d skip if Z = 1 |
|
1 (2) |
1, 2, 3 |
INCFSZ f,d |
Increment f. Skip the following instruction if set. |
f+1 -> d skip if Z = 0 |
|
1 (2) |
1, 2, 3 |
GOTO k |
Go to address |
k -> PC |
|
2 |
|
CALL k |
Call subroutine |
PC -> TOS, k -> PC |
|
2 |
|
RETURN |
Return from subroutine |
TOS -> PC |
|
2 |
|
RETLW k |
Return with constant in W |
k -> W, TOS -> PC |
|
2 |
|
RETFIE |
Return from interrupt |
TOS -> PC, 1 -> GIE |
|
2 |
|
Other instructions |
NOP |
No operation |
TOS -> PC, 1 -> GIE |
|
1 |
|
CLRWDT |
Clear watchdog timer |
0 -> WDT, 1 -> TO, 1 -> PD |
TO, PD |
1 |
|
SLEEP |
Go into sleep mode |
0 -> WDT, 1 -> TO, 0 -> PD |
TO, PD |
1 |
|
*1 When an I/O register is modified as a function of itself, the value used will be that value present on the pins themselves. *2 If the instruction is executed on the TMR register and if d=1, the prescaler will be cleared. *3 If the PC is modified or test result is logic one (1), the instruction requires two cycles.
8-bit PIC 마이크로컨트롤러의 구조
가치창조기술
www.ubiquitics.co.kr
www.vctec.co.kr
MCU 개발용 보드
|
제품특징
- PIC, dsPIC, PIC24, PIC32MX, AVR, PSoC, 8051, ARM 마이크로프로세서 지원
- 프로그래머 및 ICD 디버거가 개발보드에 내장되어 있어 경제적
- COG/LCD/GLCD 장착
- MCU의 모든 핀들은 개발보드상의 인터페이스 핀에 연결되어 있음
- 개발보드상의 DIP스위치를 이용하여 개발보드를 설정
- MCU 핀에 LED 및 푸시버튼이 보드상에 연결되어 있음
- 즉시 사용가능한 다양한 예제 지원
- 마이크로일렉트로니카 컴파일러 지원
- 다양한 개발용 악세사리를 개발보드상에 연결하여 사용이 가능
제품군:
|
MCU 컴파일러
|
제품특징
- PIC, dsPIC, PIC24, PIC32, AVR, 8051 마이크로프로세서 지원
- 편리하고 직관적인 IDE환경
- 500개 이상의 라이브러리 함수지원으로 개발시간 절약
- 다양한 개발용 툴 지원
- mikroProg 하드웨어 In-Circuit Debugging 지원
- 즉시 사용가능한 예제 지원
제품 모델:
|
개발용 악세사리보드
|
제품특징
- 악세사리보드로 다양한 MCU와 주변장치의 기능을 테스트
- 통신/저장/시간측정/디스플레이/측정/오디오/전원공급/기타 등의 악세사리보드
- Mikroelektronika 개발보드에 연결하여 사용 가능
- 즉시 사용 가능한 예제 제공
제품군:
|
MCU 개발용 키트
|
제품특징
- PIC, dsPIC, PIC24, PIC32, AVR, 8051 마이크로프로세서 지원 개발용 키트
- 개발에 필요한 개발보드, 컴파일러 및 악세사리보드 포함
- 개발용 키트 묶은 구매로 개별구매보다 저렴
제품군:
|
|
관리자에게만 댓글 작성 권한이 있습니다.