マイクロコントローラ

マイクロコントローラ (英: microcontroller) とは、CPUに加えてRAM、ROM、I/Oポートなどを1つの集積回路（IC）にまとめた、いわば極小のコンピュータ。主に機器の制御に使われる。略語は英字ではMCU。日本語ではマイコンとも呼ばれる。 主に機器の制御（コントロール）に使う目的で開発された小さな（"マイクロ" な）集積回路でありコンピュータなので「マイクロコントローラ」と呼ばれるようになった。 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ビット組み込みプロセッサの大きな割合を占めている。特に携帯電話端末におけるARMのシェアは高く、2006年の情報では出荷数が年間24億個を超えたとされる。 組み込みシステムには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などが該当する。 記事参照 アプライド・マイクロ・サーキット 従来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 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ビット) HT8 記事参照 インテル 8ビット 8XC42 MCS48 MCS51 8061（英語版） 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ベースのマイクロコントローラ 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ビットマイクロコントローラ マイクロコントローラに、BASICインタプリタ、電源装置などを組み合わせたパッケージとして販売している小企業が数多く存在する。PICが使われていることが多い。 BASIC Stamp：有名だが、低速で高価。 SX-Key：プログラマは高価だが、チップ自体は安い。 記事参照 秋月電子通商 PIC-BASIC：BASIC Stampの日本版とも言える製品で日本語の資料が充実している。 PICにBASICをロードするよりも安価であることが特長。内蔵するBASICは機能が豊富だが構造的な制約が多い。