mir.pe (일반/밝은 화면)
최근 수정 시각 : 2023-12-13 18:37:21

PIC (마이크로컨트롤러)

1. 개요2. 8비트 MCU
2.1. PIC10 시리즈2.2. PIC12 시리즈2.3. PIC16 시리즈2.4. PIC18 시리즈
3. 16비트 MCU/DSP
3.1. PIC24 시리즈3.2. dsPIC 시리즈
4. 32비트 MCU
4.1. PIC32 시리즈
5. 개발 환경6. 여담

1. 개요

Microchip Technology 마이크로컨트롤러 시리즈이다. 8비트 MCU부터 32비트 MCU까지 다양하게 있으며 16비트 제품군에는 DSP인 dsPIC 시리즈도 있다.

2. 8비트 MCU

PIC1X 로 시작하면 8비트 제품군이다. 넘버링은 명령어(Instruction word) 비트 수에 따라 나뉘며 현재 PIC10, 12, 16, 18이 있다. PIC17은 있었으나 폭망하여 단종, 후에 17을 이은 후속작이 PIC18 시리즈였으며 PIC18 시리즈는 대성공을 거두었다. PIC18은 일반 PIC18, PIC18J, PIC18K 총 세가지로 나뉜다.

2.1. PIC10 시리즈

일반적으로 6핀 (SMD) 또는 8핀 (DIP)으로 나오며 12비트 명령어를 사용한다.

2.2. PIC12 시리즈

칩에 따라 12비트 혹은 14비트 명령어를 사용하며, 일반적으로 8핀으로 나오지만 핀배열은 PIC10 8핀 DIP와는 다른 핀배열을 사용한다.

2.3. PIC16 시리즈

일반적으로 14비트 명령어를 사용하고 보통 14핀 이상으로 나온다.

2.4. PIC18 시리즈

16비트 명령어를 사용하며 핀수도 18핀에서 100핀까지 다양하다. 64핀 이상은 모두 SMD 패키징이다. PIC18이 출시된 이후 PIC18-J 시리즈와 K 시리즈를 추가로 내놓았는데, J시리즈는 성능과 주변기기(USB, 터치 스크린, 이더넷 등) 지원을 가성비면에서 타협한 시리즈이고, K 시리즈는 성능에 중점을 두고 내장 EEPROM, 16MIPS, 정격전압 1.8V~5.5V 등을 지원하는 시리즈이다. J 시리즈와 K 시리즈 모두 12비트 ADC를 갖고 있다. 구분법은 모델명 PIC18F 다음에 네자리 숫자가 오면 일반 PIC18 시리즈, 두 자리 숫자가 오면 해당 숫자 뒤에 붙는 알파벳으로 구분한다. 예를 들어 PIC18 시리즈 중 가장 널리 쓰이는 칩 중 하나인 PIC18F4550은 일반 PIC18 시리즈, PIC18F45J50은 PIC18-J 시리즈, PIC18F45K50은 PIC18-K 시리즈이다.

3. 16비트 MCU/DSP

16비트 MCU/DSP로는 PIC24 시리즈와 dsPIC3X 시리즈가 있다. 앞서 말했듯이 dsPIC 시리즈는 PIC의 DSP버전이다. 24비트 명령어를 사용한다.

3.1. PIC24 시리즈

PIC24 시리즈는 F, H, E시리즈로 더 나뉘는데, 세부 시리즈와는 관계 없이 모두 동일한 명령어 세트와 핀배열을 갖고 있다. PIC24 시리즈 최초 발표 당시엔 F 시리즈와 H 시리즈만 있었으며, F 시리즈는 저전력 모델로 최고 16MIPS까지 지원하고 작동 전압은 3V와 5V 둘 다 지원한다. H 시리즈는 고성능용으로 최대 40MIPS까지 지원하고 구동 전압은 3V만 지원한다. 일부 입출력 핀은 5V도 지원하기에 5V를 사용하는 센서 등을 계속 사용할 수는 있다. E 시리즈는 나중에 나온 시리즈로 PIC24H 시리즈보다 더 성능에 중점을 두어 70MIPS까지 지원한다.

3.2. dsPIC 시리즈

마이크로칩의 설명으론 dsPIC 시리즈 칩들은 Digital Signal Controller로, DSP의 성능과 MCU의 간단함을 동시에 제공하는게 목적이라는 듯. 간단히 설명하자면 dsPIC 시리즈는 PIC24 시리즈의 DSP 버전이다. 실제로 데이터시트를 보면 dsPIC33(F)과 PIC24(F), dsPIC33E와 PIC24E가 같은 데이터시트를 이용하는 것을 볼 수 있다. 다만 dsPIC30F 시리즈의 경우 독자 라인업인듯 하다. dsPIC 30F, 33F, 33E 총 세가지 시리즈가 있다.

4. 32비트 MCU

PIC32 계열은 MIPS 기반 32비트 MCU이다. Atmel 인수 후 Atmel에서 생산했던 Arm Cortex-M 기반 ATSAM 계열 및 기타 32비트 MPU 제품군이 편입되었다. 그러나 본 문서는 PIC 마이크로컨트롤러에 대한 문서이므로 PIC32 계열 MCU만 서술한다.

4.1. PIC32 시리즈

PIC32 시리즈는 MK, MM, MX, MZ EF, MZ DA총 5개 세부 시리즈로 나뉘고 주된 차이점은 성능이다. 특이점으로는 MZ DA시리즈의 경우 내장 그래픽 컨트롤러와 그래픽 프로세서를 갖고 있다는 점이다.

5. 개발 환경

PIC MCU 개발시 여러 IDE를 사용할 수 있지만 대체로 개인이 많이 쓰는 것은 Microchip에서 무료로 제공하는 MPLAB과 MPLAB X IDE이다. IDE 자체는 무료지만, 컴파일러인 MPLAB XC 컴파일러는 개인용 무료 라이센스와 개인용 또는 상업용으로 추가 기능을 제공하는 유료 라이센스로 나뉜다. MPLAB 구버전과 MPLAB X를 모두 사용하는 경우 사용하는 둘이 사용하는 컴파일러가 달라 스위칭 기능을 사용해서 사용하고자 하는 IDE에 맞는 컴파일러로 바꿔주는 작업을 해야 한다. 또한 UML과 유사하게 그래픽을 사용해서 핀을 설정할 수 있는 'Harmony'라는 플러그인도 있다.

최근에는 MPLAB Xpress라는 클라우드 기반 IDE를 선보였다. 그 외에 상용 IDE로는 mikroC 등을 사용한다.

디버거는 Microchip에서 자체 개발한 ICD 시리즈와 PICKit 시리즈, 그리고 Snap 시리즈가 있으며 대중적으로 ICD 시리즈와 PICKit 시리즈가 주로 사용된다. Snap은 세 종류의 디버거 중 가장 늦게 출시된 대신, Atmel을 인수한 후에 출시된 제품이라 PIC 이외에도 AVR도 디버깅할 수 있다. MPLAB X IDE 5.05 이상에서만 인식한다. 최신 버전은 ICD와 PICKit 모두 4. ICD 시리즈는 조금 비싸지만 기능이 다양하고 접근 속도가 빠르다. 대표적인 것이 프로그램 디버그 중에 중단점을 마음대로 추가하고 On/Off가 가능하다는 점인데, 같은 회사에서 만든 PICKit은 이 기능을 지원하지 않는다. PICKit 시리즈는 저렴하지만 접근 속도가 조금 느리다. MCU에 따라서 호환되는 디버거가 다르고, 특히 최신 디버거가 구형 MCU를 제대로 인식하지 못하거나 망가뜨릴 수 있으니 자신이 주로 사용하고자 하는 MCU의 제품명과 사양에 맞는 디버거를 선택하는 것이 좋다.

공식 개발환경인 MPLAB X-IDE가 6.x 버전대에 접어들면서 PICKit3과 ICD3 지원이 빠졌다고 한다. PICKit3/ICD3을 지원하는 마지막 버전은 MPLAB X-IDE v5.5라고 하며, 이 5.5 버전을 설치해도 이번에는 MCC(Microchip Code Configurator) 플러그인을 받을 수 없어서 유저가 직접 홈페이지에서 찾아 다운로드하여 설치해 줘야 하도록 바뀌었다. [1] 구버전 디버거와 툴을 버리고 상위 버전으로 옮겨가도록 유도하려는 움직임이라고 볼 수 있는데, 공식 개발환경과 디버거는 가격이 썩 만만치 않으므로 개발자들로부터 볼멘 소리가 나오고 있다.

6. 여담

PIC32 시리즈는 일본의 하드웨어 자작/개조에서 상당히 사랑받는 MCU이다. 'pic32 自作' 등으로 검색해 보면 굉장히 많은 자료와 사례가 쏟아져 나오는 것을 볼 수 있다.

펌웨어 플래싱에는 상술했듯 공식 디버거인 ICD나 PICKit 등을 사용하는게 원칙이나, 개인의 취미 공작 수준에서는 선뜻 구입하기 망설여지는 금액대이기도 하므로 정품을 구입하지 않고 대체 수단을 이용하는 경우도 꽤 빈번하다. PICKit 2나 3 시리즈는 중국제 클론이 엄청나게 풀려 있어, 몇만원 정도에 구입하는 물건은 대부분 중국제 가품이라고 생각해야 한다. 아예 아두이노 라즈베리 파이 #1, #2 등의 기성 하드웨어를 이용해서 롬라이터를 자작하는 경우도 많다.

다이슨의 무선청소기에 사용된 배터리에는 보호 회로가 들어 있는데 여기에 PIC이 사용되었다. 일정 시간 이상 청소기를 사용하면[2] 이 회로가 배터리를 잠가버려 빨간 불이 켜지면서 사용할 수 없게 되는데, 초기에는 배터리를 신품으로 교체하거나[3] 보호 회로를 교체할 수밖에 없었다. 최근에는 보호회로 안에 들어있는 PIC MCU의 데이터를 조작해서 배터리를 복구하는 방법이 알려져서 많이 공유되고 있다. 이 때문에 중고나 가품 PICKit을 찾는 사람들도 늘어나고 있다.


[1] 버전 호환성의 문제가 있을 수 있으므로 이 경우 MCC는 버전 4.21을 받아야만 한다고 함. [2] 주로 맥스 모드의 과용 등으로 배터리 셀 간의 밸런싱이 무너지면 회로가 배터리의 사용을 차단하는 것으로 알려져 있다. [3] 정품은 10만원 이상 하는 가격으로 원성이 높아 가품 배터리를 사서 교체하는 사람도 많다.