マイクロコントローラ

ファイル:ATmega8 01 Pengo.jpg|250px|thumb|right|一般的なマイクロコントローラの外見（Atmel AVR）
マイクロコントローラ (microcontroller) とは、CPUに加えてRAM、ROM、I/Oポートなどを1つの集積回路（IC）にまとめた、いわば極小のコンピュータ。主に機器の制御に使われる。略語は英字ではMCU。日本語ではマイコンとも呼ばれるEfn2|1970年代や1980年代のマイクロコンピュータのほうも、略語ではマイコンと呼ばれた（今もそれなりの頻度で呼ばれている）ので、日本語では両者の名称が衝突してしまっており、文脈がはっきりしていないと使いづらい。特にコンピュータ全体の歴史（コンピュータ史）を俯瞰して話をする状況ではかなり使いづらい。一方、明らかに制御機器についてだけ技術者同士が話している状況などではマイコンと呼んでも誤解は受けないので使える。。
主に機器の制御（コントロール）に使う目的で開発された小さな（"マイクロ" な）集積回路でありコンピュータなので「マイクロコントローラ」と呼ばれるようになった。

**概要**
CPUの機能を備えており1つの集積回路にまとめたものなので、マイクロプロセッサの一種である。ただし、マイクロコントローラは通常、1 MHzから200 MHz（メガヘルツ）程度のクロック周波数で動作しており、マイクロプロセッサの中では比較的動作速度が低いという特徴がある。主な用途として何らかの機器に組み込んで使うこと（組込システム）を想定しているので、電力消費量を減らすためにクロック周波数を抑えてある。よくあるパーソナルコンピュータのマイクロプロセッサのほうは、大量に電力を消費するわけだが、そちらはたいていは1 GHzから3 GHz（ギガヘルツ）ほどで動作しているので、そちらの数分の1から数千分の1程度の動作速度ということになる。マイクロコントローラは消費電力が抑えてあるので組込システムに使いやすい。
また、一般的なマイクロコントローラはCPUに加えて、主メモリ（全体、場合によっては一部）とI/Oポートを内蔵している。コンピュータがコンピュータとして動作するには、CPUだけでは足りず、メモリやI/Oポートも必要であり、PC用マイクロプロセッサの場合はそれらの必須の機能を得るにはそれを提供する集積回路を別途追加しなければならず、基板の上で集積回路の数が増えていってしまい、基板の上の回路のパターンは複雑化し、基板の面積も大きくなっていってしまう。それに対して、マイクロコントローラのほうはコンピュータに必要な集積回路のほとんどをひとつの小さな集積回路にまとめているので、（いくつか集積回路を足す場合でも、全体として）とても小さく、簡潔にまとまるので、組込システムなど特に「コンピュータの物理的な小ささ」が求められる用途に向いている。
マイクロコントローラはさまざまな組み込みシステムで使われている。マイクロコントローラは近年のあらゆる家電製品や電子機器類で使われているので、PCで使われるマイクロプロセッサより遥かに大量に存在している。
電子工作の世界でも、マイクロコントローラを使うと電子部品の数が少なくて済むので非常に便利なパーツである。（自分で多数の電子部品を組み合わせて自作の回路を作る場合と比べて、はんだづけの手間も圧倒的に少なくてすみ、ミスが入り込みにくく、はんだづけ不良や接触不良も減るので動作も安定する。ブレッドボードに挿してわずかな部品数とわずかな手間で制御装置を実現することもできる。）また近年メーカー・ムーブメント（既成品に頼るばかりでなくデジタル技術も使い自分であれこれと自作してみようという潮流）でワンボードマイコンのArduinoも広まったわけだが、ArduinoはAtmel社のマイクロコントローラ :en:ATmega328で動作している。電子工作の世界では(Arduinoを使わずとも）ATmega328や他のマイクロコントローラをブレッドボードに直接挿してリード線を伸ばしてさまざまな小さな機器を制御することも行われる。価格もお手頃のものが多く、たとえばATmega328は（その時々の為替レートや需給関係にもよるが）1個300円から500円ほどととてもお手頃な価格なので、「定番の電子部品」として親しまれている。
2010年代後半からはマイクロコントローラはIoTを実現する集積回路としても評価が高まっている。

**歴史**
マイクロコントローラが登場する以前、電子制御分野における制御シーケンスはアナログ回路や論理回路といったハードウェア的に回路で組まれていたため、手順を一部変更するだけでも回路の変更が必要だった。それら制御シーケンスを、コンピュータシステムを用いたシステムに置き換えた事から始まった。プログラム内蔵方式の特徴を生かしたコンピュータシステムの場合、回路は変更せず内蔵するプログラムを書き換えるだけで制御内容の変更や機能追加が行えるようになった。さらにコンピュータシステムをワンチップにしたものがマイクロコントローラーであった。
世界最初のマイクロコントローラーは、1971年9月に登場したテキサス・インスツルメンツ TMS0100シリーズの TMS1802NC (TMS0102)と言われている。TMS1802NCは、電卓専用だったため汎用性はなかった。
汎用性があって大量に使用された最初のマイクロコントローラーは、1974年に登場したテキサス・インスツルメンツ TMS1000シリーズであった。
マイクロコントローラが進化するにしたがって内蔵する回路が増えていき、外付けにしなければならない部品が減っている。1980年代から1990年代にかけて、マイクロコントローラの中でも最も成功したものは8ビットのインテル8051とザイログZ80の派生品である。
通信機器では1980年代後半から1990年代にかけてMC68000とその派生品も多く使われた。
現在ではARMアーキテクチャとMIPSアーキテクチャの派生製品が、32ビット組み込みプロセッサの大きな割合を占めている マイコミジャーナル 【レポート】ユビキタス時代を担う"Embedded Processor"(1) - 増大する需要 2003/1/1。特に携帯電話端末におけるARMのシェアは高く、2006年の情報では出荷数が年間24億個を超えたとされる ARM社の2006年年間業績発表 2007/2/7。

**構成**
組み込みシステムには4つの基本部品が必要となる。それは、CPUコア、プログラムを格納するメモリ(ROMかフラッシュメモリ)、ひとつ以上のタイマー(設定可能なものとウォッチドッグタイマー)、外部周辺機器などと通信するための入出力部である。マイクロコントローラはこれらが全てひとつの集積回路に組み込まれている。マイクロコントローラは、汎用CPUと比較した場合に周辺部品が少なくて済むため、コンピュータを組み立てるのが容易である。
一般的なマイクロコントローラはクロックジェネレータとRAMおよびROM（EPROMやEEPROM）を内蔵している。これを動作できるようにするには、ソフトウェアをROMに格納して、水晶振動子を接続する。マイクロコントローラは様々な入出力デバイスを内蔵している。アナログ-デジタル変換回路、タイマー、汎用非同期シリアル通信(UART)、またはI2Cバス、SPIバス、CANバスといった特殊なシリアル通信インターフェイスなどである。これらの周辺デバイスは特殊な命令で制御される。
マイクロコントローラと言った場合、一般的にはCPU機能とメモリや各種ペリフェラルを内蔵した集積回路を指すが、CPU機能のみの単機能集積回路（マイクロプロセッサ）でも組み込み用途で用いる場合はマイクロコントローラと呼ばれることがある。これは特にCPU機能が8ビットのローエンド製品に顕著である。逆にペリフェラルを内蔵するプロセッサであっても、特に8ビットより上位のCPU機能を含むものは、マイクロコントローラとは呼ばずにプロセッサと呼ばれることもある。

**開発環境**
当初マイクロコントローラは、搭載メモリの少なさからアセンブリ言語でのみプログラムが組まれていた。メモリ量やCPUの処理能力が向上すると、開発効率の観点からC言語が使われるようになった。
ホビーユースや学習用途では、上記言語より導入がスムーズで初心者にとって理解しやすいBASIC言語インタプリタなどの言語処理系があらかじめROMに書き込まれた半完成製品も存在し、後述のBASIC Stampなどが該当する。

**主なマイクロコントローラ**

**ARM**
 ARM Cortex-M シリーズ

**アプライド・マイクロ・サーキット**
従来IBMが製造販売していたマイクロコントローラシリーズ。このシリーズのライセンスはApplied Micro Circuits Corporation(en)に売却された。- 403 PowerPC CPU
** PPC 403GCX- 405 PowerPC CPU
** PPC 405EP
** PPC 405GP/CR
** PPC 405GPr
** PPC NPe405H/L- 440 PowerPC Book-E CPU
** PPC 440GP
** PPC 440GX
** PPC 440EP/EPx/GRx
** PPC 440SP/SPe

**アトメル**
 Atmel AT91 series (ARM THUMBアーキテクチャ)- AT90, Tiny, Mega, AVR32, and XMEGA シリーズ – AVR (Atmel Norway design)- Atmel AT89 series (Intel 8051/MCS51 アーキテクチャ)- MARC4

**サイプレス・マイクロシステムズ**
 PSoC
** CY8C2xxxx
** CY8C3xxxx
** CY8C5xxxx- AN21xx (EZ-USB)- CY7C68xxx (EZ-USB FX2)

**フリースケール・セミコンダクタ**
モトローラの半導体事業部が分離/独立した会社。現在はNXPに買収されている。- 8ビット
** 68HC05
** 68HC08 (CPU08)
** 68HC11- 16ビット
** 68HC12 (CPU12)
** 68HC16 (CPU16)
** Freescale DSP56800 (DSPcontroller)- 32ビット
** Freescale 683XX (CPU32)
*** 68360 (QUICC)
** ColdFire (68020互換RISC)
** M・CORE
** PowerPCコアファミリ
*** MPC500 (車載向けPowerPC)
*** MPC850/860 (PowerQUICC)
*** MPC8240/8250/8260 (PowerQUICC II)
*** MPC8540/8555/8560 (PowerQUICC III)

**富士通**
スパンションを経て、現在はサイプレスから販売されている。- F2MC ファミリ (8/16ビット)- FR ファミリ (32ビット)
** FR80- Traveo (32ビット)

**Holtek(en)**
 HT8

**インテル**
 8ビット
** 8XC42
** MCS48
** MCS51
** label=8061
** label=8xC251- 16ビット
** 80186/88
** MCS96
** MXS296- 32ビット
** 376
** 386EX
** i960
** StrongARM
** XScale（2006年にマーベル・テクノロジー・グループへ売却）

**Microchip**
 8ビットPIC
** PIC10シリーズ
** PIC12シリーズ
** PIC16シリーズ
** PIC18シリーズ- 16ビットPIC
** PIC24シリーズ- 16ビットdsPIC
** dsPIC30シリーズ
** dsPIC33シリーズ- 32ビットPIC
** PIC32シリーズ

**ナショナル セミコンダクター**
 COP8- CR16

**ルネサス エレクトロニクス**
 Renesas RXファミリ (32ビット)
*Renesas RAファミリ (32ビット)
*Renesas Synergy (32ビット)
*Renesas RL78ファミリ (16ビット)
*μCOMシリーズ (4ビット、8ビット、16ビット)- 17K (4ビット)- 78K0S (8ビット)- 78K0 (8ビット)- 78K0R (16ビット)- 78K4 (16ビット)- Vシリーズ
** V40/V50/V53 (16ビット)- V850 (32ビット)- RH850 (32ビット)- VRシリーズ (MIPS64)
** VR41xx (MIPS64)
** VR5500 (MIPS64)
** VR7700 (MIPS64)- H8
** H8/300H- SuperH
** SH-1
** SH-2- M32R- M16C- R8C/Tiny

**NXP**
フィリップスの半導体事業部がファンドに買収され独立した会社で、NXPに社名が変更。- LPC2000 (ARM7)- LPC900- LPC700

**STマイクロエレクトロニクス**
 ST 62- ST 7

**テキサス・インスツルメンツ**
 TMS370- MSP430- TMS320 (DSP)

**旧・東芝（現・東芝デバイス&ストレージ）**
 TLCS-47 (4ビット)
** TMP47C4xx- TLCS-870 (8ビット)- TLCS-900 (16ビット)- TMPZ84C0xx (Z80互換)- TX19/TX39/TX49 (MIPS32, MIPS64)

**ウェスタンデザインセンター**
 W65C134 (8ビット)W65C02ベースのマイクロコントローラ- W65C265 (16ビット)W65C816ベースのマイクロコントローラ

**Ubicom（en）**
 SX-28, SX-48, SX-54：高性能 8ビットマイクロコントローラ (PIC16互換)- IP2022, IP3023 (マルチスレッド指向の独自アーキテクチャ)

**ザイログ**
 Z80- Z86E02- Z8

**ザイリンクス**
 MicroBlaze FPGA用ソフトコア 32ビットマイクロコントローラ- PicoBlaze FPGA用ソフトコア 8ビットマイクロコントローラ

**アルテラ**
 Nios FPGA用ソフトコア 32ビットマイクロコントローラ- Nios II FPGA用ソフトコア 32ビットマイクロコントローラ

**Raspberry Pi**
 Raspberry Pi Pico シリーズ（ARM Cortex-M）

**マイクロコントローラの半完成応用製品**

**BASIC組み込みマイクロコントローラ**
マイクロコントローラに、BASICインタプリタ、電源装置などを組み合わせたパッケージとして販売している小企業が数多く存在する。PICが使われていることが多い。

**= Parallax, Inc.（en） =**
 BASIC Stamp：有名だが、低速で高価。- SX-Key：プログラマは高価だが、チップ自体は安い。

**= 秋月電子通商 =**
 PIC-BASIC：BASIC Stampの日本版とも言える製品で日本語の資料が充実している。

**= PicAxe（en） =**
PICにBASICをロードするよりも安価であることが特長。内蔵するBASICは機能が豊富だが構造的な制約が多い。

**脚注**

**注釈**

**出典**

**関連項目**
 組み込みシステム- インサーキット・エミュレータ (ICE)- 電子制御