250px|thumb|right|一般的なマイクロコントローラの外見(Atmel AVR) マイクロコントローラ () とは、CPUに加えてRAM、ROM、I/Oポートなどを1つの集積回路(IC)にまとめた、いわば極小のコンピュータRvelfire, Microcontroller。主に機器の制御に使われる。マイクロな(きわめて小さな)コントローラ(制御装置)なので、マイクロコントローラと命名された。略語はMCU(エムシーユー)Difference between Microprocessor and Microcontroller。

日本語ではマイコンとも呼ばれる。

概要 CPUの機能を備えており1つの集積回路にまとめたものなので、マイクロプロセッサの一種である。ただし、マイクロコントローラは通常、1 MHzから200 MHz(メガヘルツ)程度のクロック周波数で動作しており、マイクロプロセッサの中では比較的動作速度が低いという特徴がある。主な用途として何らかの機器に組み込んで使うこと(組込システム)を想定しているので、電力消費量を減らすためにクロック周波数を抑えてある。よくあるパーソナルコンピュータのマイクロプロセッサのほうは、大量に電力を消費するわけだが、そちらはたいていは1 GHzから3 GHz(ギガヘルツ)ほどで動作しているので、そちらの数分の1から数千分の1程度の動作速度ということになる。マイクロコントローラは消費電力が抑えてあるので組込システムに使いやすい。

また、一般的なマイクロコントローラはCPUに加えて、主メモリ(全体、場合によっては一部)とI/Oポートを内蔵している。コンピュータがコンピュータとして動作するには、CPUだけでは足りず、メモリやI/Oポートも必要であり、PC用マイクロプロセッサの場合はそれらの必須の機能を得るにはそれを提供する集積回路を別途追加しなければならず、基板の上で集積回路の数が増えていってしまい、基板の上の回路のパターンは複雑化し、基板の面積も大きくなっていってしまう。それに対して、マイクロコントローラのほうはコンピュータに必要な集積回路のほとんどをひとつの小さな集積回路にまとめているので、(いくつか集積回路を足す場合でも、全体として)とても小さく、簡潔にまとまるので、組込システムなど特に「コンピュータの物理的な小ささ」が求められる用途に向いている。

マイクロコントローラはさまざまな組み込みシステムで使われている。マイクロコントローラは近年のあらゆる家電製品や電子機器類で使われているので、パソコンで使われるマイクロプロセッサより遥かに大量に存在している。

電子工作の世界でも、マイクロコントローラを使うと電子部品の数が少なくて済むので非常に便利なパーツである。(自分で多数の電子部品を組み合わせて自作の回路を作る場合と比べて、はんだづけの手間も圧倒的に少なくてすみ、ミスが入り込みにくく、はんだづけ不良や接触不良も減るので動作も安定する。ブレッドボードに挿してわずかな部品数とわずかな手間で制御装置を実現することもできる。)また近年メーカー・ムーブメント(既成品に頼るばかりでなくデジタル技術も使い自分であれこれと自作してみようという潮流)でワンボードマイコンのArduinoも広まったわけだが、ArduinoはAtmel社のマイクロコントローラ :en:ATmega328で動作している。電子工作の世界では(Arduinoを使わずとも)ATmega328や他のマイクロコントローラをブレッドボードに直接挿してリード線を伸ばしてさまざまな小さな機器を制御することも行われる。価格もお手頃のものが多く、たとえばATmega328は(その時々の為替レートや需給関係にもよるが)1個300円から500円ほどと秋月電子通商、ATmega328とてもお手頃な価格なので、「定番の電子部品」として親しまれている。

2010年代後半からはマイクロコントローラはIoTを実現する集積回路としても評価が高まっている。

歴史 マイクロコントローラが登場する以前、電子制御分野における制御シーケンスはアナログ回路や論理回路といったハードウェア的に回路で組まれていたため、手順を一部変更するだけでも回路の変更が必要だった。それら制御シーケンスを、コンピュータシステムを用いたシステムに置き換えた事から始まった。プログラム内蔵方式の特徴を生かしたコンピュータシステムの場合、回路は変更せず内蔵するプログラムを書き換えるだけで制御内容の変更や機能追加が行えるようになった。さらにコンピュータシステムをワンチップにしたものがマイクロコントローラーであった。

"世界最初のマイクロコントローラー"は、1971年9月に登場したテキサス・インスツルメンツ TMS0100シリーズの TMS1802NC (TMS0102)と言われているThe Arrival of the "Calculator-on-a-Chip" (Vintage Calculator Web Museum)。だがTMS1802NCは、電卓専用だったため汎用性はなかった。

"汎用性があって大量に使用された最初のマイクロコントローラー"は、1974年に登場したテキサス・インスツルメンツ TMS1000シリーズであった1974: GENERAL-PURPOSE MICROCONTROLLER FAMILY IS ANNOUNCED (Computer History Museum)THE TMS1000: THE FIRST COMMERCIALLY AVAILABLE MICROCONTROLLER (HACKADAY)。1971年ころからテキサス・インスツルメンツが4ビットのMCU、TMS1000の開発に着手。これは当時としては画期的なチップであり、4ビットCPU、1KB ROM、256ビットRAM、および入出力ラインを単一のチップ上に統合したものであった。1974年ころから出荷を開始。当時の低価格帯の電子式卓上計算機や、知育玩具のSpeak & Spellなどの制御装置として使われた。

1976年にインテルが8ビットのIntel 8048の出荷を開始。これはキーボードコントローラ、プリンタ、初期のゲーム機コントローラ、Sequential Circuits社のシンセサイザー Prophet-5などの制御装置として使われた。

1978年にはモトローラがMotorola 6801の出荷を開始。これは8ビットのMotorola 6800をベースに開発されたもので、6800の回路に加えてRAM 128バイト(そのうち64バイトは低電力保持可能)、ROM 2048バイト(2Kバイト)、29本のパラレルI/Oライン(Port 1,2,3,4として利用可)、16ビットのプログラマブル・タイマー、シリアル通信インタフェース、クロックジェネレータ、を内蔵・統合し、MC6800の命令セットに10個の新命令(主に16ビット演算や乗算命令など)を追加したものである。動作モードは2つ用意されており、(1)シングルチップ・モードは、内蔵のRAMとROM、I/Oを使用し、ワンチップMCUとして動作し (2)外部バス拡張モードは、内蔵ROMを無効にし、MC6800と同様に外部メモリや周辺LSIを最大64Kバイトまで接続して動作するMPUとして機能する。Motorola 6801は自動車のエンジン制御や産業用ロボットなど、高度な組み込み制御システムに利用された。

1979年にZilogが8ビットのMCU、Zilog Z8の出荷を開始。モデム、プリンタなどの制御装置のほか、様々な汎用の制御装置として使われるようになった。

マイクロコントローラが進化するにしたがってチップに内蔵する回路が増えていき、外付けにしなければならない部品が減っている。1980年代から1990年代にかけて、マイクロコントローラの中でも最も成功したものは8ビットのインテル8051とザイログZ80の派生品である。通信機器では1980年代後半から1990年代にかけてMC68000とその派生品も多く使われた。

現在ではARMアーキテクチャとMIPSアーキテクチャの派生製品が、32ビット組み込みプロセッサの大きな割合を占めているARM社のセミナーの資料 2005年マイコミジャーナル 【レポート】ユビキタス時代を担う"Embedded Processor"(1) - 増大する需要 2003/1/1。特に携帯電話端末におけるARMのシェアは高く、2006年の情報では出荷数が年間24億個を超えたとされる@IT 頭脳放談 : 第15回 ARMプロセッサを知らずに暮らせない Pentium IIIよりも売れている32bitプロセッサ「ARM」 2001/8/28ARM社の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言語が使われるようになった。

ホビーユースや学習用途では、C言語系の言語でプログラムが書ける開発環境が用意されているもののほか、初心者にとって理解しやすいBASIC言語インタプリタなどの言語処理系があらかじめROMに書き込まれた半完成製品も存在する(後述のBASIC Stampなど)。

主なマイクロコントローラ ARM ARM Cortex-M シリーズ

アプライド・マイクロ・サーキット

従来IBMが製造販売していたマイクロコントローラシリーズ。このシリーズのライセンスはApplied Micro Circuits Corporation(en)に売却されたCNET Japan IBM、PowerPCプロセッサ3種を譲渡 2004/4/14。 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 8061

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) 電子制御