1980 년 Intel은 Harvard Architecture 8051을 사용하여 최초의 마이크로 컨트롤러 (8051)를 개발했으며 그 이후로 마이크로 컨트롤러는 전자 및 임베디드 산업에 혁명을 가져 왔습니다. 그리고 시간이 지남에 따라 기술이 발전함에 따라 이제 AVR, PIC, ARM 과 같은 더 효율적이고 저전력 마이크로 컨트롤러가 많이 있습니다. 이 마이크로 컨트롤러는 USB, I2C, SPI, CAN 등과 같은 최신 통신 프로토콜을 사용하여 더 기능적이고 사용하기 쉽습니다. 심지어 Arduino와 Raspberry Pi도 마이크로 컨트롤러에 대한 관점을 완전히 바꾸 었으며 Raspberry Pi는 단순한 마이크로 컨트롤러가 아니라 전체를 갖추고 있습니다. 컴퓨터 내부.
이것은 PIC 마이크로 컨트롤러 를 배우는 데 도움이 될 아직 제공되지 않은 튜토리얼 시리즈의 첫 번째 부분이 될 것 입니다. 전자 공학에 대한 지식이 있고 항상 일부 마이크로 컨트롤러를 배우고 코딩 및 빌드 작업의 세계로 들어가고 싶었다면이 튜토리얼 시리즈가 시작하는 첫 단계가 될 것입니다.
PIC 마이크로 컨트롤러는 우수한 지원 포럼이 있고 아직 배우지 않은 모든 고급 마이크로 컨트롤러를 구축하는 강력한 기반 역할을하기 때문에 마이크로 컨트롤러 프로젝트를 시작하기에 매우 편리한 선택입니다.
이 튜토리얼은 절대 또는 중급 학습자를 위해 만들어졌습니다. 우리는 가장 기본적인 프로젝트부터 고급 프로젝트까지 시작할 계획입니다. 우리 는 모든 수준에서 당신을 돕기 위해 여기에 있기 때문에 학습자로부터 전제 조건 을 기대 하지 않습니다. 모든 튜토리얼에는 이론적 설명과 시뮬레이션이 있으며 실습 튜토리얼이 이어집니다. 이 튜토리얼은 개발 보드를 포함하지 않으며 성능 보드를 사용하여 자체 회로를 만들 것입니다. 그러니 준비하고 매주 시간을내어 마이크로 컨트롤러로 당신을 향상 시키십시오.
이제 PIC 마이크로 컨트롤러에 대한 간단한 소개 와 몇 가지 소프트웨어 설정을 시작하여 다음 튜토리얼을 실행 해 보겠습니다. MPLABX, XC8, Proteus 및 PICkit 3 프로그래머의 빠른 언 박싱을 설치 및 설정하려면 끝에 있는 비디오 를 확인하십시오.
PIC 마이크로 컨트롤러 아키텍처 및 애플리케이션:
PIC 마이크로 컨트롤러는 1993 년 에 Microchip Technologies 에 의해 도입되었습니다. 원래 이러한 PIC는 PDP (Programmed Data Processor) 컴퓨터 의 일부로 개발되었으며 컴퓨터의 각 주변 장치는이 PIC 마이크로 컨트롤러를 사용하여 인터페이스되었습니다. 따라서 PIC는 Peripheral Interface Controller 의 이름을 얻습니다 . 나중에 Microchip은 조명 애플리케이션과 같은 소형 애플리케이션에 고급 애플리케이션까지 사용할 수있는 많은 PIC 시리즈 IC를 개발했습니다.
모든 마이크로 컨트롤러는 일부 아키텍처를 중심으로 구축되어야하며, 가장 유명한 아키텍처 유형은 Harvard 아키텍처이며, 당사의 PIC는 클래식 8051 제품군에 속하는이 아키텍처를 기반으로합니다. PIC 의 Harvard 아키텍처에 대한 간략한 소개를 살펴 보겠습니다.
PIC16F877A 마이크로은 초보자로 시작하도록하게 IC를 강력한 마이크로 수집하는 붙박이의 CPU, I / O 포트, 메모리 구성, A / D 컨버터, 타이머 / 카운터 인터럽트, 직렬 통신, 발진기 및 CCP 모듈로 구성된다. PIC 아키텍처의 일반적인 블록 다이어그램은 다음과 같습니다.
CPU (중앙 처리 장치):
마이크로 컨트롤러에는 산술 연산, 논리 결정 및 메모리 관련 연산을 수행하는 CPU가 있습니다. CPU는 RAM과 마이크로 컨트롤러의 다른 주변 장치를 조정해야합니다.
ALU (Arithmetic Logic Unit) 로 구성되어 산술 연산과 논리 결정을 수행합니다. MU (메모리 유닛) 또한 실행 얻을 후 지침을 저장하는 존재. 이 MU는 MC의 프로그램 크기를 결정합니다. 또한 CPU와 마이크로 컨트롤러의 다른 주변 장치 사이의 통신 버스 역할 을하는 CU (Control Unit) 로 구성됩니다. 이것은 지정된 레지스터에서 처리 된 후 데이터를 가져 오는 데 도움이됩니다.
RAM (Random Access Memory):
랜덤 액세스 메모리는 마이크로 컨트롤러의 속도를 결정하는 메모리입니다. RAM은 그 안에있는 레지스터 뱅크로 구성되며 각 뱅크에는 특정 작업이 할당됩니다. 전체적으로 두 가지 유형으로 분류 할 수 있습니다.
- 범용 레지스터 (GPR)
- 특수 기능 레지스터 (SFR)
이름에서 알 수 있듯이 GPR은 더하기, 빼기 등과 같은 일반 레지스터 기능에 사용됩니다. 이러한 연산은 8 비트 내에서 제한됩니다. GPR 아래의 모든 레지스터는 사용자가 쓰고 읽을 수 있습니다. 소프트웨어가 지정되지 않는 한 자체 기능이 없습니다.
SFR은 일부 16 비트 처리를 포함하는 복잡한 특수 기능을 수행하는 데 사용되는 반면, 레지스터는 읽기 (R) 만 가능하며 아무것도 쓸 (W) 수 없습니다. 따라서 이러한 레지스터에는 수행 할 미리 정의 된 기능이 있습니다.이 기능은 제조시에 설정되며 결과를 표시하기 만하면 관련 작업을 수행 할 수 있습니다.
ROM (읽기 전용 메모리):
읽기 전용 메모리는 프로그램이 저장되는 곳입니다. 이것은 우리 프로그램의 최대 크기를 결정합니다. 따라서 프로그램 메모리 라고도 합니다. MCU가 작동 중일 때 ROM에 저장된 프로그램은 각 명령주기에 따라 실행됩니다. 이 메모리 유닛은 PIC를 프로그래밍하는 동안에 만 사용할 수 있으며 실행 중에는 읽기 전용 메모리가됩니다.
EEPROM (Electrically Erasable Programmable Read Only Memory):
EEPROM은 또 다른 유형의 메모리 유닛입니다. 이 메모리 단위 값은 프로그램 실행 중에 저장 될 수 있습니다. 여기에 저장된 값은 IC가 꺼져도 PIC에 유지되는 전기적 으로 만 지울 수 있습니다. 실행 된 값을 저장하기위한 작은 메모리 공간으로 사용할 수 있습니다. 그러나 메모리 공간은 KB 단위로 매우 적습니다.
플래시 메모리 :
플래시 메모리는 프로그램을 수천 번 읽고 쓰고 지울 수있는 프로그래밍 가능한 읽기 전용 메모리 (PROM)이기도합니다. 일반적으로 PIC 마이크로 컨트롤러는 이러한 유형의 ROM을 사용합니다.
I / O 포트
- PIC16F877A는 포트 A, 포트 B, 포트 C, 포트 D 및 포트 E의 5 개 포트로 구성됩니다.
- 5 개의 모든 포트 중에서 포트 A는 16 비트이고 PORT E는 3 비트입니다. 나머지 PORTS는 8 비트입니다.
- 이 PORTS의 핀은 TRIS 레지스터 구성에 따라 입력 또는 출력으로 사용할 수 있습니다.
- I / O 작업을 수행하는 것 외에도 핀은 SPI, 인터럽트, PWM 등과 같은 특수 기능에도 사용할 수 있습니다.
버스:
버스라는 용어는 입력 또는 출력 장치를 CPU 및 RAM과 연결하는 전선 묶음입니다.
데이터 버스 는 데이터 를 전송하거나 수신하는 데 사용됩니다.
주소 버스 는 주변 장치에서 CPU로 메모리 주소를 전송하는 데 사용됩니다. I / O 핀은 외부 주변 장치와 인터페이스하는 데 사용됩니다. UART 및 USART는 모두 GSM, GPS, Bluetooth, IR 등과 같은 직렬 장치를 인터페이스하는 데 사용되는 직렬 통신 프로토콜입니다.
튜토리얼을위한 PIC 마이크로 컨트롤러 선택:
Microchip Company의 PIC 마이크로 컨트롤러는 4 개의 대규모 제품군으로 나뉩니다. 각 제품군에는 내장 된 특수 기능을 제공하는 다양한 구성 요소가 있습니다.
- 첫 번째 제품군 인 PIC10 (10FXXX)은 Low End라고합니다.
- 두 번째 제품군 인 PIC12 (PIC12FXXX)는 Mid-Range라고합니다.
- 세 번째 제품군은 PIC16 (16FXXX)입니다.
- 네 번째 제품군은 PIC 17/18 (18FXXX)입니다.
PIC에 대해 배우기 시작 했으므로 보편적으로 사용되고 사용 가능한 IC를 선택하겠습니다. 이 IC는 16F 제품군에 속하며 IC의 부품 번호는 PIC16F877A입니다. 첫 번째 튜토리얼부터 끝까지 우리는 이 IC에 SPI, I2C, UART 등과 같은 모든 고급 기능이 장착 된 것과 동일한 IC를 사용할 것입니다. 그러나 지금 이러한 것들을 얻지 못하더라도 완전히 괜찮습니다. 모든 튜토리얼을 진행하고 마지막으로 위에서 언급 한 모든 기능을 사용합니다.
IC가 선택되면 IC의 데이터 시트를 읽는 것이 매우 중요합니다. 이것은 우리가 시도하려는 개념의 첫 번째 단계가되어야합니다. 이제이 PIC16F877A를 선택 했으므로 데이터 시트에서이 IC의 사양을 읽을 수 있습니다.
Peripheral Feature 에는 3 개의 타이머 가 있으며, 그중 2 개는 8 비트이고 1 개는 16 비트 프리스케일러입니다. 이 타이머는 프로그램에서 타이밍 기능을 만드는 데 사용됩니다. 카운터로도 사용할 수 있습니다. 또한 CCP (Capture Compare 및 PWM) 옵션이있어 PWM 신호를 생성하고 수신 주파수 신호를 읽는 데 도움이됩니다. 외부 장치와의 통신을 위해 SPI, I2C, PSP 및 USART가 있습니다. 안전을 위해 BOR (Brown-out Reset) 이 장착 되어 있어 while 프로그램을 재설정하는 데 도움이됩니다.
아날로그 기능, IC에 10 비트 8 채널 ADC 가 있음을 나타냅니다. 즉, 우리의 IC는 10 비트 분해능으로 아날로그 값을 디지털로 변환 할 수 있으며이를 읽을 수있는 8 개의 아날로그 핀이 있습니다. 또한 소프트웨어를 통해 실제로 읽지 않고 들어오는 전압을 직접 비교하는 데 사용할 수있는 두 개의 내부 비교기가 있습니다.
특별 마이크로 컨트롤러는 특징 이있다 의미하는 것으로 , 10 만 지우기 / 쓰기 사이클 은 약 100,000 번을 프로그램 할 수 있습니다 의미합니다. ICSP ™ (In-Circuit Serial Programming ™)는 PICKIT3을 사용하여 IC를 직접 프로그래밍하는 데 도움이됩니다 . In-Circuit Debug (ICD) 를 통해 디버깅 할 수 있습니다. 또 다른 안전 기능은 WDT (Watchdog Timer)로, 필요한 경우 전체 프로그램을 재설정하는 자체 신뢰할 수있는 타이머입니다.
아래 이미지는 PIC16F877A IC 의 핀아웃을 나타냅니다. 이 이미지는 이름 및 기타 기능에 대한 각 핀을 나타냅니다. 데이터 시트에서도 확인할 수 있습니다. 하드웨어 작업 중에 도움이 될 수 있도록이 이미지를 잘 보관하십시오.
튜토리얼을위한 소프트웨어 선택:
PIC 마이크로 컨트롤러는 시중에서 구할 수있는 다른 소프트웨어로 프로그래밍 할 수 있습니다. 여전히 어셈블리 언어를 사용하여 PIC MCU를 프로그래밍하는 사람들이 있습니다. 튜토리얼을 위해 Microchip 자체에서 개발 한 가장 진보 된 소프트웨어와 컴파일러를 선택했습니다.
PIC 마이크로 컨트롤러를 프로그래밍하려면 프로그래밍이 이루어지는 IDE (통합 개발 환경) 가 필요 합니다. 컴파일러, 우리의 프로그램은 MCU 읽을 수있는 형태라는 HEX 파일로 변환됩니다. IPE (통합 프로그래밍 환경) 우리의 PIC 마이크로 컨트롤러에 우리의 진수 파일을 덤프하는 데 사용됩니다.
IDE: MPLABX v3.35
IPE: MPLAB IPE v3.35
컴파일러: XC8
Microchip은이 세 가지 소프트웨어를 모두 무료로 제공했습니다. 공식 페이지에서 직접 다운로드 할 수 있습니다. 편의를 위해 링크도 제공했습니다. 다운로드가 완료되면 컴퓨터에 설치하십시오. 그렇게하는 데 문제가 있으면 마지막에 주어진 비디오를 볼 수 있습니다.
시뮬레이션을 위해 Labcenter에서 제공하는 PROTEUS 8 이라는 소프트웨어를 사용 했습니다. 이 소프트웨어는 MPLABX를 사용하여 생성 된 코드를 시뮬레이션하는 데 사용할 수 있습니다. 링크를 통해 공식 페이지에서 다운로드 할 수있는 무료 데모 소프트웨어가 있습니다.
하드웨어 준비:
모든 튜토리얼은 하드웨어로 끝납니다. 시뮬레이션의 신뢰성이 매우 낮기 때문에 가능한 최상의 방법으로 PIC를 배우려면 하드웨어를 통해 코드와 회로를 테스트하는 것이 좋습니다. 시뮬레이션 소프트웨어에서 작동하는 코드는 하드웨어에서 예상대로 작동하지 않을 수 있습니다. 따라서 우리는 코드를 덤프하기 위해 Perf 보드에 자체 회로를 구축 할 것입니다.
코드를 PIC에 덤프하거나 업로드하려면 PICkit 3 이 필요합니다. PICkit 3 프로그래머 / 디버거는 MPLAB IDE (v8.20 이상) 소프트웨어를 실행하는 PC에 의해 제어되는 단순하고 저렴한 인-서킷 디버거입니다. Windows 플랫폼. PICKIT 3 프로그래머 / 디버거 개발 엔지니어의 도구 제품군의 중요한 부분입니다. 이 외에도 성능 보드, 납땜 스테이션, PIC IC, 수정 발진기, 커패시터 등과 같은 다른 하드웨어도 필요합니다. 그러나 자습서를 진행하면서 목록에 추가 할 것입니다.
아마존에서 PICkit 3을 가져 왔는데, 아래 비디오에서 같은 언 박싱 비디오를 찾을 수 있습니다. PICKIT3에 대한 링크도 제공됩니다. 가격이 약간 높을 수 있지만 투자할만한 가치가 있습니다.