{{위키데이터 속성 추적}}
[[파일:Intel 8742 153056995.jpg|right|섬네일|230px|같은 칩에 12Mhz의 [[중앙 처리 장치|CPU]], 128 바이트의 [[램]], 2048 바이트의 [[EPROM]], [[입출력|I/O]]를 장착한 8비트 마이크로 컨트롤러인 [[인텔]] 8742의 [[집적 회로]].]]
'''마이크로컨트롤러'''(microcontroller) 또는 '''MCU'''(microcontroller unit)는 [[마이크로프로세서]]와 입출력 모듈을 하나의 칩으로 만들어 정해진 기능을 수행하는 [[컴퓨터]]를 말한다.<ref name="AVR8">{{웹 인용 |url=http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf |제목=아트멜의 ATmega시리즈 |확인날짜=2015-06-19 |보존url=https://web.archive.org/web/20150724032006/http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf |보존날짜=2015-07-24 |url-status=dead }}</ref><ref name="Intel8051">{{웹 인용 |url=http://web.mit.edu/6.115/www/document/8051.pdf |제목=인텔 8051 |확인날짜=2015-06-19 |보존url=https://web.archive.org/web/20150618100515/http://web.mit.edu/6.115/www/document/8051.pdf |보존날짜=2015-06-18 |url-status=dead }}</ref><ref name="TI_Cortex_M3">{{웹 인용 |url=http://www.ti.com/lsds/ti/arm/arm_cortex_m_microcontrollers/arm_cortex_m3/overview.page?paramCriteria=no |제목=텍사스 인스트루먼트, ARM Cortex-M MCUs |확인날짜=2015-06-19 |archive-date=2015-06-17 |archive-url=https://web.archive.org/web/20150617115755/http://www.ti.com/lsds/ti/arm/arm_cortex_m_microcontrollers/arm_cortex_m3/overview.page?paramCriteria=no |url-status= }}</ref>

CPU 코어, 메모리 그리고 프로그램 가능한 입/출력으로 구성되어 있다.  NOR [[플래시 메모리]]<ref name="AVR8" /><ref name="TI_Cortex_M3" />, [[EPROM]]<ref name="Intel8051" /> 그리고 OTP ROM등의 메모리를 가지고 있어 정해진 기능을 수행하도록 프로그래밍 코딩하고 이 기계어 코드를 써 넣는다. 기계어 코드가 실행되기 위한 변수나 데이터 저장을 위해 적은 용량의 [[정적 램|SRAM]]을 가지고 있다. 기타 칩에 따라 [[EEPROM]]을 내장하기도 한다.

MCU는 임베디드 애플리케이션을 위해 디자인되었으며 임베디드 시스템에 널리 사용된다. 개인용 컴퓨터가 다양한 요구에 따라 동작하는 일반적인 일에 사용된다면, MCU는 기능을 설정하고 정해진 일을 수행하도록 프로그래밍되어 장치 등에 장착되어 동작한다. 따라서 일반적으로 성능이 PC에 비해 낮고 형상도 다르다. 한 번 프로그래밍하면 코드를 나중에 바꿀 일이 거의 없기 때문에 냉장고, 전자레인지 등의 기기에 사용된다.

== 역사 ==
최초의 [[마이크로프로세서]]는 1971년 출시된 [[4비트]] [[인텔 4004]]로 [[인텔 8088]] 및 그 밖의 기능이 더 많은 마이크로프로세서가 이후 수년에 걸쳐 이용이 가능하게 되었다. 그러나 두 프로세서 모두 작동 시스템을 구현하기 위해 외장 칩이 필요했고, 이는 전체 시스템 비용을 증가시켰다.

[[스미스소니언 협회]]는 [[텍사스 인스트루먼트|TI]]의 엔지니어 게리 분(Gary Boone)과 마이클 코치란(Michael Cochran)을 1971년 최초의 마이크로컨트롤러를 성공적으로 만든 것으로 평가하였다. 이들의 노고의 결과물은 TMS 1000으로, 1974년에 상용화되었다. 읽기 전용 메모리, 읽기/쓰기 메모리, 프로세서, 클럭을 한 칩에 합쳤고 임베디드 시스템에 목표를 두었다.<ref>{{서적 인용
|url=http://smithsonianchips.si.edu/augarten/p38.htm
  |title=The Most Widely Used Computer on a Chip: The TMS 1000
  |work=State of the Art: A Photographic History of the Integrated Circuit
  |last=Augarten  |first=Stan
  |publisher=Ticknor & Fields
  |location=New Haven and New York
  |year=1983
  |isbn=0-89919-195-9
  |accessdate=2009-12-23
}}</ref>

== 특징 ==
일부 MCU들은 4KHz이하의 낮은 clock rate에서 동작되며 8비트 ADC/DAC를 가지며 매우 저전력(수mW~수uW)에서 동작한다. 대부분의 MCU들은 기본적인 연산기능과 인터럽트 기능을 가지고 있으며 유휴 상태에서는 수nW의 전력밖에 사용하지 않는다. 이러한 특징으로 인해 저용량의 배터리로 오랜 시간 지속되어야 하는 전자기기에 많이 쓰인다. 대표적인 예로 전자 [[손목시계]]가 있다.

== 응용 ==
MCU는 자동적으로 제품이나 장치를 컨트롤 하는데 사용된다. 그 예로 오토모바일 엔진 컨트롤 시스템, 체내 주입식 혹은 휴대용 의료기기, 리모콘, 프린터 등의 사무기기, 파워서플라이, 장난감 등이 있다. 마이크로프로세서, 메모리, 입/출력 등의 기능을 하나의 칩 위에 구현한 MCU는 제품을 소형화 하거나 단가를 낮추는데 유용하기에 디지털로 제어되는 제품을 만들 때 산업용으로도 많이 쓰인다. ADC와 DAC를 포함한 경우에는 아날로그 입/출력을 가진 시스템에서도 사용될 수 있다.

== 제품군 ==
다양한 종류의 칩과 여러 회사들이 마이크로컨트롤러를 생산 판매하고 있다. 같은 계열의 제품이라도 적용 시 요구되는 사양이 다양하고, 구현하는 기능도 다양하다. 따라서 같은 제품군이라고 하더라도 다양한 모델이 출시되고 있다.

마이크로컨트롤러 제품군 :
* [[인텔 8051|8051]]<ref name="atmel_8051">{{웹 인용 |url=http://www.atmel.com/products/microcontrollers/8051architecture/default.aspx |제목=아트멜 8051 |확인날짜=2015-06-19 |보존url=https://web.archive.org/web/20131015140634/http://www.atmel.com/products/microcontrollers/8051architecture/default.aspx |보존날짜=2013-10-15 |url-status=dead }}</ref><ref name="siliconlabs_8051">[http://www.silabs.com/products/mcu/8-bit/efm8-busy-bee/Pages/efm8-busy-bee.aspx 실리콘 랩 8051]</ref>
* AVR 시리즈<ref name="AVR8" />
* PIC<ref name="pic">{{웹 인용 |url=http://www.microchip.com/pagehandler/en-us/products/picmicrocontrollers |제목=마이크로칩 PIC |확인날짜=2015-06-19 |보존url=https://web.archive.org/web/20150613061134/http://www.microchip.com/pagehandler/en-us/products/picmicrocontrollers |보존날짜=2015-06-13 |url-status=dead }}</ref>
* ARM<ref name="TI_Cortex_M3" /><ref name="siliconlabs_Cortex_M">[http://www.silabs.com/products/mcu/32-bit/Pages/32-bit-microcontrollers.aspx 실리콘 랩 ARM Cortex_M시리즈]</ref>

== 마이크로컨트롤러 구성 요소 ==
마이크로컨트롤러는 CPU 코어 뿐만 아니라, 컴퓨터 시스템에 필요한 다양한 기능이 필요하므로 여러 가지 부가적인 입출력 모듈이 필요하다.

* [[주기적 타이머|타이머]]
* [[시리얼 통신|UART]], [[RS-232]]
* [[직렬 주변기기 인터페이스 버스|SPI]]
* [[I²C]]
* [[아날로그-디지털 변환회로|ADC]]
* [[CAN 버스]]

== 마이크로컨트롤러 프로그래밍 ==
마이크로컨트롤러로 특정 기능을 구현하기 위한 프로그래밍은 대부분의 전용 개발도구를 사용한다.

=== IAR Embedded Workbench[https://www.iar.com/kr/iar-embedded-workbench2/] {{웨이백|url=https://www.iar.com/kr/iar-embedded-workbench2/ |date=20190430032257 }} ===

많은 마이크로컨트롤러의 개발도구를 제공한다.<ref>{{웹 인용 |url=https://www.iar.com/kr/iar-embedded-workbench2/ |제목=보관된 사본 |확인날짜=2019-04-30 |archive-date=2019-04-30 |archive-url=https://web.archive.org/web/20190430032257/https://www.iar.com/kr/iar-embedded-workbench2/ |url-status= }}</ref>

* ARM
* Renesas
* ST: STM8, 32비트
* TI: MSP430, TM4Cx
* NXP: S08, S12, ColdFire
* Mircochip AVR: AVR8, AVR32
* Silicon Labs
* Cypress ARM
* Toshiba ARM


78K, [[인텔 8051|8051]], [[ARM 아키텍처|ARM]], [[Atmel AVR|AVR]], [[AVR32]], CR16C, [[Freescale ColdFire|Coldfire]], H8, HCS12, M16C, M32C, [[TI MSP430|MSP430]], Maxim MAXQ, R32C, R8C, RH850, RL78, RX, S08, SAM8, STM8, [[SuperH]], V850.<ref>[https://www.iar.com/iar-embedded-workbench/All-architectures/ Embedded Workbench targets; IAR.] {{webarchive|url=https://web.archive.org/web/20150220213244/https://www.iar.com/iar-embedded-workbench/All-architectures/ |date=2015-02-20 }}</ref>

ARM 코어 지원: [[ARM7]] / [[ARM9]] / [[ARM10]] / [[ARM11]], Cortex [[ARM Cortex-M0|M0]] / [[ARM Cortex-M0+|M0+]] / [[ARM Cortex-M1|M1]] / [[ARM Cortex-M3|M3]] / [[ARM Cortex-M4|M4]] / [[ARM Cortex-M7|M7]] / [[ARM Cortex-M23|M23]] / [[ARM Cortex-M33|M33]], Cortex [[ARM Cortex-R4|R4]] / [[ARM Cortex-R5|R5]] / [[ARM Cortex-R7|R7]], Cortex [[ARM Cortex-A5|A5]] / [[ARM Cortex-A7|A7]] / [[ARM Cortex-A8|A8]] / [[ARM Cortex-A9|A9]] / [[ARM Cortex-A15|A15]] / [[ARM Cortex-A17|A17]].

=== 소형소자 C 컴파일러 ===
{{본문|소형소자 C 컴파일러}}
SDCC 배포처<ref>{{웹 인용 |url=http://sdcc.sourceforge.net/ |제목=보관된 사본 |확인날짜=2019-04-30 |보존url=https://web.archive.org/web/20190430033914/http://sdcc.sourceforge.net/ |보존날짜=2019-04-30 |url-status=dead }}</ref>

====지원 MCU<ref>{{서적 인용|url=http://sdcc.sourceforge.net/|title=SDCC - Small Device C Compiler|author=|accessdate=2013-01-20|보존url=https://web.archive.org/web/20130117164441/http://sdcc.sourceforge.net/|보존날짜=2013-01-17|url-status=dead}}</ref>====

* [[인텔 8051]]과 파생.
* [[자일로그]] [[자일로그 Z80]]과 [[eZ80]]과 같은 이진 호환.
* 자일로그 [[Z180]].
* Rabbit 2000과  Rabbit 3000과 같은 이진 파생.
* Rabbit 3000A과 Rabbit 4000과 같은 파생.
* [[샤프 (기업)|샤프]] LR35902.
* [[프리스케일 세미컨덕터]] ([[모토로라]]) [[프리스케일 68HC08|HC08]].
* [[프리스케일 세미컨덕터]] [[프리스케일 S08|S08]].
* [[ST마이크로일렉트로닉스]] [[STM8]].
* [[도시바]] [[TLCS-90]].

=== Microchip MPLAB [https://www.microchip.com/development-tools/] ===

IDE
* MPLAB X IDE
* MPLAB Xpress
* Atmel Studio

컴파일러
* MPLAB XC
* AVR GCC
* ARM GCC

== 같이 보기 ==
* [[임베디드 시스템]]
* [[마이크로아키텍처]]

== 각주 ==
<references/>

== 외부 링크 ==
{{위키공용분류}}
* {{dmoz|Business/Electronics_and_Electrical/Control_Systems/Microcontroller}}

{{마이크로컨트롤러}}
{{CPU 기술}}
{{컴퓨터 크기}}
{{전거 통제}}

[[분류:마이크로컨트롤러| ]]
[[분류:중앙 처리 장치]]
[[분류:디지털 전자공학]]