이전 두 개의 튜토리얼에서 MPLABX 및 XC8 컴파일러를 사용하여 PIC를 시작하는 방법에 대해 논의했으며 PIC로 첫 번째 LED 깜박임 프로그램을 만들고 시뮬레이션으로 확인했습니다. 이제 하드웨어를 손에 넣을 시간입니다. 이 튜토리얼에서는 PIC를 사용하여 LED를 깜박이기 위해 Perf Board에 작은 회로를 구축합니다. 프로그램을 PIC 마이크로 컨트롤러에 덤프하고 LED 깜박임을 확인합니다. PIC MCU를 프로그래밍하기 위해 MPLAB IPE를 사용할 것입니다.
필요한 재료:
이전 튜토리얼에서 논의했듯이 다음 자료가 필요합니다.
- PicKit 3
- PIC16F877A IC
- 40-핀 IC 홀더
- 성능 보드
- 20MHz 크리스탈 OSC
- 암컷 및 수컷 Bergstick 핀
- 33pf 커패시터-2Nos, 100uf 및 10uf 캡.
- 680ohm, 10K 및 560ohm 저항
- 모든 색상의 LED
- 1 납땜 키트
- IC 7805
- 12V 어댑터
마이크로 컨트롤러를 "구울"때 어떻게 되나요 !!
코드를 MCU에 업로드하고 MCU 내에서 작동하도록하는 것은 일반적인 관행입니다.
이를 이해하기 위해 프로그램을 살펴 보겠습니다.
보시다시피이 코드는 C-Language로 작성되었으며 MCU에는 의미가 없습니다. 이것이 우리 컴파일러의 일부가 들어오는 곳입니다. 컴파일러는 기계가 읽을 수있는 형태로이 코드를 변환하는 것입니다. 이 기계 판독 가능 형식을 HEX 코드 라고하며 , 우리가 생성하는 모든 프로젝트는 다음 디렉토리에있는 HEX 코드를 갖게됩니다.
** 현재 위치 ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
이 HEX 코드가 어떻게 생겼는지 알고 싶다면 메모장을 사용하여여십시오. Blink 프로그램의 경우 HEX 코드는 다음과 같습니다.
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F000A01400F11F42FF10F100C2130FA007F42FF10F100C2130FA007F42FF10F100C2130F11F00F00B95: 100FAA007F00B95: 100C130F000F00BB1
이것을 읽는 방법과 그것을 이해하고 다시 어셈블리 언어로 되 돌리는 방법이 있지만,이 튜토리얼의 범위를 완전히 벗어납니다. 그래서 간단히 말하자면, HEX는 코딩의 최종 소프트웨어 결과이며 MCU를 레코딩하기 위해 MPLAB IPE에서 전송하는 것입니다.
플래시 메모리:
HEX 코드는 플래시 메모리라는 곳에서 MCU에 저장됩니다. 플래시 메모리는 우리 프로그램이 MCU 내부에 저장되고 거기에서 실행되는 곳입니다. MPLABX에서 프로그램을 컴파일하면 출력 콘솔의 메모리 유형에 대한 다음 정보를 얻게됩니다.
작은 LED 깜박이는 프로그램을 방금 컴파일했기 때문에 메모리 요약은 사용 가능한 프로그램 공간의 0.5 %와 데이터 공간의 1.4 %를 방금 사용했음을 보여줍니다.
PIC16F877 마이크로 컨트롤러의 메모리는 기본적으로 3 가지 유형으로 나뉩니다.
프로그램 메모리: 이 메모리에는 레코딩 한 프로그램 (우리가 작성한 프로그램)이 들어 있습니다. 다시 말해, 프로그램 카운터는 프로그램 메모리에 저장된 명령을 차례로 실행합니다. 아주 작은 프로그램을 작성했기 때문에 전체 공간의 0.5 % 만 소비했습니다. 이것은 비 휘발성 메모리로 전원이 꺼진 후에도 저장된 데이터가 손실되지 않습니다.
데이터 메모리: RAM 메모리 유형으로 Watchdog timer, Brown out Reset 등이 포함 된 SFR (Special Function Register)과 TRIS 및 PORT 등을 포함하는 GPR (범용 레지스터)과 같은 특수 레지스터가 포함되어 있습니다. 저장되는 변수 프로그램 중 데이터 메모리의 데이터는 MCU를 끄면 삭제됩니다. 프로그램에서 선언 된 모든 변수는 데이터 메모리 내에 있습니다. 이것은 또한 휘발성 메모리입니다.
데이터 EEPROM (Electrically Erasable Programmable Read-Only Memory): 작성된 프로그램을 레코딩 한 결과 변수를 저장할 수있는 메모리입니다. 예를 들어 변수 "a"를 할당하여 5의 값을 저장하고 EEPROM에 저장하면 전원이 꺼져도이 데이터가 손실되지 않습니다. 이것은 비 휘발성 메모리입니다.
프로그램 메모리와 EEPROM은 비 휘발성 메모리이며 플래시 메모리 또는 EEPROM이라고 합니다.
ICSP (회로 직렬 프로그래밍):
MCU에서 사용할 수있는 ICSP 옵션을 사용하여 PIC16F877A를 프로그래밍 할 것입니다.
이제 ICSP 란 무엇입니까?
ICSP는 프로젝트 보드 내부에 배치 된 후에도 MCU를 프로그래밍하는 데 도움이되는 간단한 방법입니다. MCU를 프로그래밍하기 위해 별도의 프로그래머 보드가 필요하지 않습니다. 다음과 같이 PicKit3 프로그래머에서 보드까지 6 개의 연결 만 있으면됩니다.
1 |
VPP (또는 MCLRn) |
프로그래밍 모드로 들어갑니다. |
2 |
Vcc |
전원 핀 11 또는 32 |
삼 |
GND |
접지 PIN 12 또는 31 |
4 |
PGD-데이터 |
RB7. PIN40 |
5 |
PGC-시계 |
RB6. 핀 39 |
6 |
PGM-LVP 활성화 |
RB3 / RB4. 필수는 아니다 |
ICSP는 모든 PIC 패키지에 적합합니다. 아래 그림과 같이 MCU에서 Pickit3으로 5 개의 핀 (6 번째 핀 PGM은 선택 사항)을 빼 내면됩니다.
회로 및 하드웨어:
이제 HEX 코드가 준비되었으며 ICSP를 사용하여 PicKit 3를 PIC MCU에 연결하는 방법도 알고 있습니다. 따라서 아래 회로도를 사용하여 회로를 납땜하겠습니다.
위의 회로에서는 7805를 사용하여 출력 5V를 PIC MCU로 조정했습니다. 이 레귤레이터는 12V 월마트 어댑터에 의해 전원 이 공급됩니다. RED Led는 PIC에 전원이 공급되는지를 나타내는 데 사용됩니다. 커넥터 J1은 ICSP 프로그래밍에 사용됩니다. 핀은 위의 표에서 설명한대로 연결됩니다.
첫 번째 핀 MCLR은 기본적으로 10k의 도움으로 높게 유지되어야합니다. 이렇게하면 MCU가 재설정되지 않습니다. MCU를 재설정하려면 MCLR 핀을 접지에 고정해야하며 스위치 SW1을 사용하여 수행 할 수 있습니다.
LED는 560ohm 값의 저항을 통해 핀 RB3에 연결됩니다 (LED 저항 계산기 참조). 프로그램이 업로드 된 후 모든 것이 적절하다면 프로그램에 따라이 LED가 깜박 여야합니다. 전체 회로는 상단 이미지에서 볼 수 있듯이 모든 구성 요소를 납땜하여 Perfboard에 구축됩니다.
MPLAB IPE를 사용하여 코드 굽기:
코드를 구우려면 다음 단계를 따르십시오.
- MPLAB IPE를 시작합니다.
- PicKit 3의 한쪽 끝을 PC에 연결하고 다른 쪽 끝을 성능 보드의 ICSP 핀에 연결합니다.
- 연결 버튼을 클릭하여 PIC 장치에 연결합니다.
- Blink HEX 파일을 찾아 프로그램을 클릭합니다.
모든 것이 계획대로 진행되면 화면에 성공 메시지가 표시됩니다. 전체 데모를 보려면 아래 코드 및 비디오를 확인하고 의심스러운 경우 댓글 섹션을 사용하십시오.
감사합니다!!!
더 많은 LED와 스위치로 플레이 할 다음 튜토리얼에서 만나 보겠습니다.