**최신버전을 다운로드 받는 방법**

 위 버전은 2019년 1월 15일 기준 최신 버전이며 이 후 새로운 버전 업데이트가 있는지 확인을 위해서는 아래 링크를 참조하시면 확인하실 수 있습니다.


**MPLAB 최신버전을 다운로드 받는 방법**

 아래 링크 페이지를 열고 Downloads tab을 클릭하면 아래의 파란색으로 표시된 링크에서 MPLAB X IDE v5.10을 다운로드 할 수 있습니다. 만약 Linux 버전이나 Mac용이 필요하신 분은 아래의 링크에서 Linux 또는 Mac용으로 다운로드하여 사용할 수 있습니다.

MPLAB X IDE Page: https://www.microchip.com/mplabx


**XC8 Compiler 최신버전을 다운로드 받는 방법**

 아래 링크 페이지를 열고 Downloads tab을 클릭하면 아래의 파란색으로 표시된 링크에서 MPLAB XC Compiler를 다운로드 할 수 있습니다. 만약 Linux 버전이나 Mac용이 필요하신 분은 아래의 링크에서 Linux 또는 Mac용으로 다운로드하여 사용할 수 있습니다. 

 MPLAB XC8, XC16, XC32 Compiler는 각각 8비트, 16비트, 32비트 마이크로컨트롤러용 컴파일러입니다.

XC8 Compiler: https://www.microchip.com/mplab/compilers

Posted by KennyShin
,

Development Tool: MPLAB X v5.1(MCC v3.66)
Compiler: XC8 v2.0
Device: PIC16F1827

I2C Master: SCL(RB4 - 10pin), SDA(RB1 - 7pin)
I2C Slave:    SCL(RB5 - 11pin), SDA(RB2 - 8pin)


PIC16F1827_I2C.X.zip


void main(void) { // initialize the device SYSTEM_Initialize(); // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits // Use the following macros to: // Enable the Global Interrupts INTERRUPT_GlobalInterruptEnable(); // Enable the Peripheral Interrupts INTERRUPT_PeripheralInterruptEnable(); // Disable the Global Interrupts //INTERRUPT_GlobalInterruptDisable(); // Disable the Peripheral Interrupts //INTERRUPT_PeripheralInterruptDisable(); while (1) { wrBuffer[0] = 0x0A; wrBuffer[1] = 0x0B; wrBuffer[2] = 0x0C; I2C1_MasterWrite( wrBuffer, 1, 0x08, &status); while(status == I2C1_MESSAGE_PENDING); I2C1_MasterRead( rdBuffer, 3, 0x08, &status); while(status == I2C1_MESSAGE_PENDING); __delay_ms(500); } }



I2C Output waveformI2C Output waveform

I2C Output waveform


INTERRUPT_GlobalInterruptEnable() and INTERRUPT_PeripheralInterruptEnable() have to comment out due to I2C Master and I2C Slave are using interrupt service routine

I2C Pin allocation for I2C1, I2C2


Posted by KennyShin
,


Pickit4를 이용한 ICSP 연결방법


Pickit4를 이용하여 MCU에 프로그래밍을 할 때에는 총 5개(MCLR, VDD, GND, PGD, PGC)의 선을 연결해야 합니다. 

전원인 VDD와 기준전압이 되는 GND를 제외하면 실제로 MCU에 프로그래밍을 하는데 사용하는 핀은 MCLR, PGD, PGC로 총 3개 핀입니다.


MPLAB PICkit 4 Debugger User's Guide Figure 2-4 발췌



MCLR Pull-up 저항
 MCLR은 VDD에 Pull-up 저항을 연결해야 하며 10~50kohm 저항을 추천합니다. 

MCLR Internal Pull-up의 사용
 MCU 내부의 Internal Pull-up 저항을 Configuration bit에서 Enable 하여 사용하는 경우도 있습니다. Internal Pull-up 저항을 사용하여도 외부에 저항을 이용하여 Pull-up을 연결하는 경우와 동일한 효과를 가집니다. 단 내부 Internal Pull-up 저항은 1kohm 정도로 낮은 값의 저항이 연결되어 외부 Pull-up을 10~50kohm을 사용하는 경우보다 미세하게나마 전류 소모가 더 발생합니다. Battery를 이용하여 오랜 시간 동작시켜야 하는 Application을 설계하는 경우에는 Internal Pull-up보다 외부에 Pull-up 저항을 사용하는 것을 추천합니다. 

MCLR에 Reset 지연을 위한 Capacitor 사용
 전원이 인가될 때 MCU의 시작을 지연시키기 원할 경우 MCLR에 Capacitor를 VSS와 연결하여 전원 인가 시 MCLR이 High가 되는 시간을 지연시키는 역할로 사용하는 경우가 있지만 지연시간이 필요하지 않을 경우 Capacitor를 추가하지 않아도 됩니다. 

 PGC, PGD 라인에는 저항이나 캐패시터 등 아무것도 연결되지 않도록 해야 합니다. 만약 저항이나 캐패시터가 연결되어 있으면 정상적인 다운로드나 디버깅이 되지 않을 수 있습니다.

MPLAB PICkit 4 Debugger User's Guide Figure 2-7 발췌



Posted by KennyShin
,


Pickit3를 이용한 ICSP 연결방법


Pickit3를 이용하여 MCU에 프로그래밍을 할 때에는 총 5개(MCLR, VDD, GND, PGD, PGC)의 선을 연결해야 합니다. 

전원인 VDD와 기준전압이 되는 GND를 제외하면 실제로 MCU에 프로그래밍을 하는데 사용하는 핀은 MCLR, PGD, PGC로 총 3개 핀입니다.


MPLAB PICkit 3 Debugger User's Guide Figure 2-4 발췌



MCLR Pull-up 저항
 MCLR은 VDD에 Pull-up 저항을 연결해야 하며 10~50kohm 저항을 추천합니다. 

MCLR Internal Pull-up의 사용
 MCU 내부의 Internal Pull-up 저항을 Configuration bit에서 Enable 하여 사용하는 경우도 있습니다. Internal Pull-up 저항을 사용하여도 외부에 저항을 이용하여 Pull-up을 연결하는 경우와 동일한 효과를 가집니다. 단 내부 Internal Pull-up 저항은 1kohm 정도로 낮은 값의 저항이 연결되어 외부 Pull-up을 10~50kohm을 사용하는 경우보다 미세하게나마 전류 소모가 더 발생합니다. Battery를 이용하여 오랜 시간 동작시켜야 하는 Application을 설계하는 경우에는 Internal Pull-up보다 외부에 Pull-up 저항을 사용하는 것을 추천합니다. 

MCLR에 Reset 지연을 위한 Capacitor 사용
 전원이 인가될 때 MCU의 시작을 지연시키기 원할 경우 MCLR에 Capacitor를 VSS와 연결하여 전원 인가 시 MCLR이 High가 되는 시간을 지연시키는 역할로 사용하는 경우가 있지만 지연시간이 필요하지 않을 경우 Capacitor를 추가하지 않아도 됩니다. 

 PGC, PGD 라인에는 저항이나 캐패시터 등 아무것도 연결되지 않도록 해야 합니다. 만약 저항이나 캐패시터가 연결되어 있으면 정상적인 다운로드나 디버깅이 되지 않을 수 있습니다.

MPLAB PICkit3 Debugger User's Guide Figure 2-5 발췌



Posted by KennyShin
,

ARM Cortex Family에 대한 기본 이해


ARM Core라는 용어에 대해 임베디드를 하시는 분이면 많이 들어보셨을 것입니다. 그런데 ARM이 어떤 것의 약자인지 알고 계셨나요? 이번 글에서는 ARM이 의미하는 것이 무엇인지에 대해 알아보겠습니다.


ARM 로고

출처: 위키백과

먼저 Cortex Family는 다음 3가지로 분류합니다.


Cortex-A (Application)

Cortex-R (Real-time)

Cortex-M (MCU)


 위에 파란색으로 표시해 보았는데요. Cortex-A, Cortex-R, Cortex-M Family의 맨 뒤에 글자를 따서 ARM이라는 단어가 탄생했다고 합니다.

 각각의 Family는 위의 분류와 같이 'A'는 Application, 'B'는 Real-time, 'M'은 MCU를 위한 제품군입니다. 이제 ARM Core의 제품 분류만 보셔도 사용하고 있는 제품군이 어떠한 것을 Target 하여 만들어졌는지 한 번에 확인할 수 있겠죠?


조금 더 자세하게 알아볼까요?


Cortex-A (Application)

 리눅스(Linux)와 같은 OS(Operating System)사용이 가능한 제품군입니다. 이 제품군은 디바이스에 Flash memory나 RAM을 별도로 추가하여 사용하는 것이 일반적입니다. 주로 큰 시스템에 사용됩니다. 스마트폰과 같은 것을 만드는데 사용됩니다.


Cortex-R (Real-time)

 Cortex-R은 Cortex-A 와 비슷한 기능으로 사용되지만 Device 내부에 Flash memory나 RAM을 모두 내장하고 있습니다. Cortex-A보다 Flash memory와 RAM의 size를 사용자가 선택하여 설계하는 측면에서는 유연성이 떨어질 수 있지만 한 칩에서 모두 구현할 수 있다는 장점이 있습니다. 주로 하드디스크나 오토모티브 제품군 안에서 빠른 실시간 처리를 하는데 사용됩니다.


Cortex-M (MCU)

Cortex-M MCU 제품군입니다. Cortex-M은 여러 시리즈를 가지고 있습니다. 

M0나 M0+는 32비트 저가형 마이크로컨트롤러 애플리케이션 용도입니다.

M0+는 M0에 비하여 더 빠릅니다. 그리고 M0에 비하여 저전력으로 구동할 수 있습니다. M0 이후버전이라고 생각하셔도 됩니다.

M3는 HW divide와 연산을 위한 파이프라인이 더 추가됩니다.

M4는 floating point(FPU)와 디지털 시그널 프로세싱을 위한 DSP가 포함되어 있습니다.

M7은 멀티로 연산을 하기 위한 daul-precision FPU와 superscalar pipelining 기능을 가지고 있습니다.

Posted by KennyShin
,




MCU의 Unused GPIO(I/O) 핀은 어떻게 처리해야 할까요?

 

 MCU를 사용하다보면 사용하지 않는 핀이 생깁니다. 이 때 사용하지 않는 핀(Unused Pin)을 어떻게 하드웨어나 소프트웨어로 처리해야 하는지 알아 보도록 하겠습니다.




대표적으로 두 가지 방법이 있습니다.


첫 번째 방법은 사용하지 않는 GPIO 핀을 출력(Output mode)로 설정 후 GPIO 를 LOW로 설정하는 것입니다. 

두 번째 방법은 사용하지 않는 GPIO 핀을 출력(Output mode)로 설정 후 1kOhm~10kOhm의 저항을 GND사이에 연결하는 방법입니다. 즉 저항을 이용하여 Pull-down으로 연결하는 것입니다.


Microchip사의 PIC16F18345 MCU에는 아래와 같이 명시되어 있습니다.MCU를 사용하다보면 사용하지 않는 핀이 생깁니다.



Unused I/O 처리방법 출처:

http://ww1.microchip.com/downloads/en/DeviceDoc/PIC16-L-F18325_18345-Data-Sheet-40001795G.pdf



첫 번째 방법과 두 번째 방법에는 장단점이 있습니다.

 첫 번째 방법은 별도의 저항을 추가하지 않아도 되기 때문에 저항 자리만큼 PCB 공간을 확보할 수 있고 하드웨어의 개수가 줄어들기 때문에 양산시에는 불량이 발생할 가능성을 그만큼 줄일 수 있습니다. 그러나 첫 번째 방법은 미사용핀이 외부에 그대로 노출되어 있기 때문에 외부로부터 정전기와 같은 원하지 않는 노이즈로부터 취약합니다. 


 두 번째 방법은 저항을 사용하지 않는 핀마다 추가해야 하지만 첫 번째 방법에서 제시한 단점을 보완할 수 있습니다. 


만약 회로에 여유 공간이 있다면 두 번째 방법을 추천드립니다.


이러한 미사용GPIO 핀 처리 방법은 대부분의 마이크로컨트롤러 미사용핀에 적용할 수 있습니다


Posted by KennyShin
,



 1962년 미국을 배경으로 하는 이 영화는 백인 운전사와 그를 고용한 흑인 피아니스트 사이에서 미국 남부를 투어하면서 벌어지는 이야기를 담고 있습니다. 


 흑인이라는 이유로 미국 남부의 루이지애나에서 12년간 억울하게 노예생활을 담아낸 #솔로몬노섭의 #노예12년이 떠오르게 하는 영화였습니다. "노예 12년"의 배경인 1840년대와 "그린북"의 배경인 1962년은 무려 100년 이상 지났지만 미국 남부의 인종차별은 별다르게 개선된 것은 없어보였습니다. "노예 12년"은 책으로 출판되었고 이후 영화로도 제작되었습니다.



출처: 네이버 지식백과

 

주인공 돈 셜리(흑인)


 주인공 돈 셜리는 흑인 피아니스트로  자메이카 킹스톤에서 태어나 두 살 때부터 피아노를 쳤다고 합니다. 9살부터는 미국 워싱턴의 레닌그라드 음악학교에서 정식으로 공부를 하여 천재 피아니스트로 불릴 만큼 천재적인 소질을 가지고 있었습니다. 흑인이라는 이유만으로 차별을 받는 것에 돌 셜리는 부당한 것에 부당한 방법으로 맞서기보다 예의를 갖추고 정당한 방법으로 대응합니다.


주인공 토니(백인-이탈리아계)

 백인 운전사인 토니는 전형적인 백인 우월주의자로 그려집니다. 그는 영화 초반 집 수리를 위해 방문한 흑인 노동자들이 음료를 마신 유리컵을 그대로 쓰레기통에 버릴 정도로 흑인을 차별하는 인물이었습니다. 이런 성향의 토니가 피아니스트 돈 셜리와 2달간 함께 하며 벌어지는 일들은 상상을 초월합니다.



 

피아노에 대한 천재적인 소질을 가졌으며 부를 가진 흑인과 생계를 간신히 이어나가기 위해 돈벌이를 하는 백인사이에서 벌어지는 일들을 다룬 영화는 세계 최고의 부를 누리는 미국이라는 나라의 또 다른 모습을 보여주는 영화였습니다.


출처: 네이버 영화


 1960년대 당시 미국의 인종차별에도 불구하고 위 사진에서 보는 것처럼 중앙의 피아노를 배경으로 오른쪽의 남자가 높은 위치에서 좋은 의자에 앉아 아래쪽에 앉아 있는 남자를 바라보는 것은 당시로써는 납득할 수 없는 장면이었을 것입니다.

 미국의 인종차별에 대한 역사, 서로 완전히 다른 두 주인공이 서로를 이해하는 과정을 담은 영화 "그린북"은 우리 주변에서 무의식중에 이루어지고 있는 차별에 대해 다시 생각하게 하고 또 서로 완전하게 다른 배경 속에서 자란 두 사람이 어떻게 변화하며 서로를 이해할 수 있는지에 대해 잘 그린 영화라고 생각합니다.

 자녀가 있으시다면 부모님과 함께 또는 연인, 친구끼리 보시면 아주 좋은 영화라고 추천 드리고 싶습니다.

영화 중에 기억에 남는 대사

나는 평생을 그런 취급을 받았는데 당신은 어찌 하루를 못 참습니까?


관련 책 추천

미국의 인종차별에 대한 책을 찾으신다면 아래의 책을 추천드립니다.

- 솔로몬 노섭의 "노예12년"

- 콜슨 화이트헤드의 "언더그라운드 레일로드"


#노예12년 #솔로몬노섭 #그린북

Posted by KennyShin
,

LIN FRAME PID LOOK-UP TABLE

LIN 2019. 1. 11. 11:28

FRAME PID LOOK-UP TABLE

TABLE A-1: PID LOOK-UP TABLE FOR SIGNAL-CARRYING FRAMES

source: http://ww1.microchip.com/downloads/en/AppNotes/00002059B.pdf

'LIN' 카테고리의 다른 글

LIN 소개 (LIN Introduction)  (0) 2019.01.10
린(LIN) 통신의 특징들 알아보기  (0) 2019.01.06
LIN 통신이란? FAQ  (0) 2018.05.17
Posted by KennyShin
,