안녕하십니까,
MCU 이해하기글을 쓰게된 이유는 실무에서 많은 어려움을 격고 있는 사회 초년생들 또는 MCU에 직접 프로그래밍을 해보고 싶다는 사람들에게 보다 쉽게 접근할수 있도록 하기 위합니다.
우선 저는 전문가는 아닙니다, 다만 다년간의 경험을 누구나 쉽게 이해할수 있도록 눈높이를 낮춰 쉽게 설명하고자 합니다.
MCU가 역사가 어쩌구 저쩌구는 실무에 아무 도움이 안됩니다.
우선 가장 흔희 접할수 있고 쉽게 샘플을 구할수 있는 Microchip사의 제품을 예로 들어 설명하겠습니다.
MCU는 한가지만 제대로 이해하면 나머지는 용어가 다를뿐 사용하는 방법은 거의 비슷합니다.
MCU는 전자 장치를 구동하기 위한 프로그램을 내장하여 프로그래머가 의도한 대로 어떠한 목적을 수행하기 위한 핵심 부품입니다.
예를들어 무선조정 장난감의 경우 사용자가 조정기의 핸들을 왼쪽으로 돌리면 왼쪽으로 가도록 프로그램하면 조정기는 왼쪽으로 가라는 신호를 자동차로 보냅니다. 그 신호를 받은 자동차는 왼쪽으로 가라는 신호를 이해하여 왼쪽으로 움직이게 됩니다.
이러한 명령들을 수행하도록 하는것이 프로그램이고 이프로그램을 이해하여 왼쪽으로 가도록 구동하는것이 MCU라고 생각하시면 됩니다.
MCU는 사람으로 치면 머리 부분에 해당되겠네요. 요즘 한창 이슈가 되고 있는 드론도 이런 MCU를 이해하면 쉽게 스스로 만들고 프로그램할수 있습니다.
또한 프로그램을 열심히 하다보면 논리적인 사고도 기를수 있습니다.
위 그림은 Microchip사의 PIC16F 시리즈의 MCU 내부 블록다이어 그램 입니다.
즉, MCU 내부에 저런 기능들이 있다는것입니다.
- CPU : 기본적인 연산장치및 레지스터 등등이 포함되어 있습니다. 더자세한 것은 도움이 안됩니다.
- Program Flash Memory : 프로그래머가 작성한 프로그램(코드)가 저장되는공간 입니다. 외부 툴을 이용하여 업로드 또는 라이팅 해야 합니다.
- Clock Reference / Timing Generation / INTRC Oscilator : 프로그램을 구동하거나 타이머등과 같이 MCU내부에는 많은 기능들이 존재합니다. 전문용어요 peripheral 이라고 하는데요 그러한 것들을 구동 하기위해서는 클럭이란것이 필요합니다. 일반적으로 외부에 8Mhz를 붙여 사용하거나 내부에 기본적으로 제공되는 클럭을 사용합니다.
어느것을 사용할지는 개발자가 판단해야 합니다만. 일반적인 가정용 수준의 제품이라면 내부 클럭이면 충분합니다.
- RAM : RAM 프로그램을 구동하기 위해서 필요한 공간입니다. 즉, 어떠한 기능을 수행하기위해 필요한 정보들을 잠시동안 보관하는 공간입니다. 스마트폰을 보시면 램이 1기가, 2기가, 요즘엔 3기가 까지 나왔죠? 이 램공간이 많아야 어플실행이나 게임등이 버벅임 없이 잘돌아가는 것을 아실것입니다. 맞습니다. MCU에도 이러한 공간이 RAM입니다.
- EEPROM : MCU에 고유한 비밀번호라든가 어떠한 정보들이 배터리가 나가더라도 유지해야 한다면 필수적으로 필요한것이 EEPROM 입니다. Microchip사는 기본적으로 EEPROM이 내장되어 있습니다.
- PORTA/PORTB/PORTC : 포트라고 합니다. 이포트에 모터라든가 LED등을 연결하여 원하는 기능을 수행하는것입니다. MCU가 왼쪽으로 가라라고 하면 이포트에 연결된 모터를 구동하여 왼쪽으로 가도록하는것입니다.
- ADC 10-Bit : Analog to Digital Convert 입니다. 언제 사용하느냐 건전지를 사용하는 제품에는 건전지가 언제 방전되는지 알 필요가 있습니다. 우리 집에 디지털 도어락 하나쯤은 다 달려있죠? 이런 디지털 도어락은 건전지를 사용합니다. 그런데 언젠가 도어락이 작동이 안되는 날이 있습니다. 원인을 보니 건전지가 다 방전된것이었죠? 건전지가 방전되기 전에 사용자한테 알려주면 사용자가 건전지를 쉽게 새거로 교환할수가 있을것입니다. 이때 사용하는 기능이 ADC 입니다. 현재의 입력 전류를 디지털로 변환하여 몇 볼트인지를 알수가 있는 기능입니다.
- Timer : 타이머는 말그대로 시간을 만들어 내는 기능입니다. 1ms,10ms 등 다양하게 만들어 원하는 시간동안 어떤 기능을 유지 하는데 사용할수 있습니다. 예를들어 LED를 켜라 했는데 난 10초만 켜고 싶어 하면 이 timer를 이용하여 시간을 만든다음 10초동안만 LED를 켤수잇도록 할수있습니다.
- CCP : 다양한 기능으로 사용할수 있는데 대표적인것이 부저의 멜로디를 표현할수 있습니다. 또는 정수기나 냉장고 등의 버튼을 누루면 띵~~ 하면서 부드러운 소리가 나죠 이런것을 구현하는데 사용되는 기능이 바로 CCP 입니다. 다른 MCU에선 PWM이라고도 표현합니다.
- EUSART : RS232를 이용한 통신에 주로 사용됩니다. 요즘엔 USB가 대세인 까닦에 보통 개발자 분들이 PC화면을 이용하여 디버깅하는데도 유용하게 활용할수가 있습니다.
- comparators : 실제 사용할일은 별로 없을것 같습니다.
다음 편에는 MCU 내부에 셋팅을 어떻게 하는지 하나하나 집어보며 진행하도록 하겠습니다.
'개발 > MCU' 카테고리의 다른 글
RA78K0R error E3206: Segment '@@CODEL' can't allocate to memory (0) | 2019.07.24 |
---|---|
르네사스 MCU __near __far (0) | 2019.06.26 |
IAR 내부 명령어 (0) | 2018.08.10 |
[solved]Atmel.VsIde.AvrStudio.Utils.MemoryPressureReliever exception (0) | 2018.04.17 |
IAR 파일 정보 (0) | 2018.04.10 |