AVRマイクロコントローラ(Atmel)とは — アーキテクチャ・性能・特徴ガイド
AVR(Atmel)マイクロコントローラのアーキテクチャ・性能・特徴を分かりやすく解説。フラッシュ採用のRISCコアや高速動作、実務で使える設計ポイントまで網羅。
AVRマイクロコントローラーのアーキテクチャは、1996年にAtmelが開発しました。ハーバード・マイクロコントローラ・アーキテクチャをベースにしており、当初から命令とデータのバスを分離して高速化を図っています。AVRは、当時広く使われていたワンタイムプログラマブルROMやEPROM、EEPROMではなく、プログラムの保存にオンチップフラッシュメモリを使用した最初期のマイクロコントローラーファミリーの一つであり、これにより開発時の書き換えやフィールドアップデートが容易になりました。
歴史と名称
AVRという名称は、開発者であるAlf-Egil BogenとVegard Wollanの頭文字に由来するとされ、一般には Alf and Vegard's RISC を略したものだと言われています。Atmel(後にMicrochipにより買収)が1990年代中頃に発売して以降、組み込み用途やホビイスト向けに広く普及しました。代表的な製品としては、ATmegaシリーズ(例:ATmega328P)があり、Arduinoプラットフォームで広く使われています。
アーキテクチャの特徴
- ハーバードアーキテクチャ:命令メモリ(Flash)とデータメモリ(SRAM/EEPROM)を独立して持ち、並列アクセスで効率を高めます。
- RISC系命令セット:命令の多くが単純で実行時間が短く、設計が効率的です。命令語長は主に16ビットで、一部32ビット命令も存在します。
- オンチップフラッシュ:プログラム領域として内蔵フラッシュを採用。ISP(In-System Programming)やボートローダで書き換え可能です。
- 1クロックでの多くの命令実行:ほとんどの命令が1クロックサイクルで完了するため、クロック周波数に比例した高い実効性能(おおむね1 MIPS/MHz)を実現します。
メモリとレジスタ構成
AVRコアは32本の汎用8ビットレジスタ(R0〜R31)を持ち、ALUに直結されています。これにより2つのレジスタに対する演算命令を1サイクルで行えるため、高速です。レジスタは一部を組み合わせて16ビットレジスタペアとして使用できます(例:R25:R24 が一般的なワーキングレジスタ対)。
メモリは通常、次の3領域に分かれます:
- Flash(プログラムメモリ)— 不揮発、書き換え可能
- SRAM(データメモリ)— 実行時のスタックや変数用
- EEPROM(オプション)— 長期保存用データ
スタックはSRAM上に置かれ、割り込みや関数呼び出しで使用されます。プログラムカウンタ(PC)はFlashのアドレス幅に合わせて幅が決まります(デバイスにより異なる)。
代表的な周辺機能(ペリフェラル)
AVRはコアだけでなく、多彩な周辺回路を内蔵している点が魅力です。代表的な機能:
- タイマー/カウンター(PWM 出力含む)
- ADC(アナログ–デジタルコンバータ)
- USART/UART、SPI、I2C(TWI)などのシリアル通信
- ウォッチドッグタイマー(WDT)
- アナログコンパレータ
- ブラウンアウト検出(BOD)や各種電源管理、スリープモード
- 一部デバイスはJTAGやPDI/UPDIなどのデバッグ/プログラミングインターフェースをサポート
性能と他アーキテクチャとの比較
従来のMCS-51(8051)アーキテクチャでは、1マシンサイクルが12クロックサイクルに相当し、命令実行に多くのクロックを要する設計のものが多くありました。これに対してAVRは多くの命令を1クロックで実行できるため、クロック周波数あたりの実効性能が高く、理論上は同じクロックで8051系の約12倍に達する場面もあります。実運用では命令の種類や周辺機能の待ち時間などの影響を受けますが、AVRは小規模な組込み用途で高効率を発揮します。
ただし、AVRは基本的に8ビットコアであるため、32ビットARMコアなどに比べると整数演算の幅や大きなメモリ空間、浮動小数点処理で劣る点があります。用途に応じて選択が必要です。
開発環境とプログラミング
AVRはホビーから商用まで幅広く使われているため、ツールチェインも豊富です。代表的なもの:
- コンパイラ/ツール:avr-gcc(GNU)、Atmel/Microchip Studio
- 書き込みツール:avrdude や専用ISPライタ(USBasp、AVRISPなど)
- デバッグ:一部デバイスはオンチップデバッグ(JTAG、PDI、UPDI)対応
- ボード:Arduinoプラットフォーム(ATmega系)で入門が容易
プログラミング方式はISP(SPI経由)、JTAG、UPDI/PDI、ハイボルテージプログラミングなどがあり、デバイスや世代によって対応が異なります。デバイス固有の「フューズビット」や「ロックビット」によってクロック源やブートローダの有効化、メモリ保護が設定できます。
用途・利点・制約
- 用途:家電制御、モータ制御、センサ読み取り、産業機器、教育用途、DIY/プロトタイピングなど
- 利点:高いコストパフォーマンス、豊富な周辺回路とパッケージ、成熟した開発環境、低消費電力設計が可能
- 制約:SRAMやFlash容量が小さい機種が多く、大規模なデータ処理や複雑なOSには向かない。8ビット幅ゆえに大きな数値演算では効率が落ちる
総じて、AVRは学習コストが低く、組み込み入門や小〜中規模の組み込みシステムに最適な選択肢です。最新世代では消費電力や機能も改善されており、現在でも幅広い用途で活用されています。

28ピンDIPのAtmel AVR ATmega8。
基本ファミリー
タイニーAVR
- 0,5-8 kBのプログラムメモリ
- 最大0.5kBのSRAM
- 最大0.5kBのEEPROM
- 最大20MHz
- 6-32ピンパッケージ
メガAVR
- 4-256 kB プログラムメモリ
- 0.5~16kB SRAM
- 0.5~4キロバイトのEEPROM
- 最大20MHz
- 20-100ピンパッケージ
XMEGA
- 16~384kBのプログラムメモリ
- 2-32 kB SRAM
- 最大16MバイトのSDRAM用外部バスインターフェース
- 1~4キロバイトのEEPROM
- 最大32MHz
- 44-100ピンパッケージ
特徴
すべてのAVRには、いくつかの入出力ポートがあります。ポートはそのパッケージ上に最大8本の物理的なピンを持っています。すべてのピンは入力または出力として構成できます。ピンが入力として使用される場合、レジスタPORTxを通じて内蔵のプルアップ抵抗をオンにすることができます。ピンが出力として構成されている場合、ピンごとに最大40mAの負荷を扱うことができ、ポート上のすべてのピンで最大100mAを扱うことができます。
A/Dコンバータ
- 10ビット(tinyAVR、megaAVR)、最大8チャネルの多重化が可能
- 12ビット(XMEGA)、最大16チャネルの多重化が可能
タイマー/カウンター(8ビットまたは16ビット)
- ユーザーは、PWM、カウンター、またはタイマーとして構成することができます。
- シンプルなPWMモードでは,カウントレジスタは停止することなく動作し,別のレジスタと比較されます。カウントレジスタが2番目のレジスタよりも高い場合,ピンOcxは "1 "に設定されます。それ以外の場合、ピンOcxは "0 "になります。
- カウンターはフォトセンサーのような外部ソースを持ち、フォトセンサーを通過した人の数をカウントすることができます。
- タイマーは、正確な時間にパルスを与えるものです。クロックアプリケーションのプログラムに使用されます。
TWI - Two Wire Interface 2ICと同じプロトコルを使用しており、2ICのインターフェースとして使用できる。
UART/USART UARTは、RS232/RS485通信に使用できます。
SPI - シリアル・ペリフェラル・インターフェース
- 機器との通信のためのデータ転送に使用される、非常に高速なシリアルバス。
- このバスを介して、プログラムメモリやEEPROMへのプログラムの書き込み/読み出しが可能です。
USI - ユニバーサル・シリアル・インターフェース
- 2線式または3線式の同期データ転送に使用される
JTAG
- オンラインデバッグ用インターフェース
D/Aコンバーター
- 12ビット(XMEGAのみ)、最大2チャネルの多重化が可能
関連ページ
- Arduino
質問と回答
Q: AVRマイクロコントローラーアーキテクチャはいつ開発されたのですか?
A: AVRマイクロコントローラアーキテクチャは、1996年にAtmel社によって開発されました。
Q: AVRマイクロコントローラはどのようなアーキテクチャをベースにしていますか?
A: AVRマイクロコントローラは、ハーバード・マイクロコントローラ・アーキテクチャをベースにしています。
Q: AVRマイクロコントローラは、開発当時の他のマイクロコントローラと何が違うのですか?
A: AVRマイクロコントローラは、当時の他のマイクロコントローラが使用していたワンタイムプログラマブルROM、EPROM、EEPROMとは異なり、プログラムの保存にオンチップのフラッシュメモリーを使用しています。
Q: AVRという略語の一般的な意味は何ですか?
A: AVRは、Alf(Egil Bogen)とVegard(Wollan)のRiscプロセッサの略であると考える人が多いようです。
Q: AVRマイクロコントローラはどのようなアーキテクチャを置き換えたのですか?
A: AVRマイクロコントローラは、古いMCS-51アーキテクチャを置き換えたものです。
Q: MCS-51の1マシンサイクルは、何クロックサイクルですか?
A: MCS-51の1マシンサイクルは、12クロックサイクルを要します。
Q: AVRマイクロコントローラーはMCS-51に比べて、クロックサイクルあたりの性能でどのような利点がありますか?
A: AVRマイクロコントローラの方が、クロックサイクルあたりの性能は12倍高いです。
百科事典を検索する