


AVRは、1996年からAtmel社(2016年にMicrochip Technology社に買収)によって開発されてきたマイクロコントローラファミリーです。改良されたハーバード・アーキテクチャに基づく8ビットRISCシングルチップ・マイクロコントローラです。AVRは、当時の他のマイクロコントローラが使用していたワンタイム・プログラマブルROM (EPROM) 、またはEEPROMではなく、プログラム保存にオンチップ・フラッシュメモリを採用した最初のマイクロコントローラファミリーの1つでした。
AVRマイクロコントローラは組み込みシステムとして広く利用されています。特に趣味や教育用途の組み込みアプリケーションで広く利用されており、Arduinoシリーズのオープンハードウェア開発ボードの多くに搭載されていることで広く普及しています。
AVR 8ビットマイクロコントローラアーキテクチャは1997年に導入されました。2003年までに、Atmelは5億個のAVRフラッシュマイクロコントローラを出荷しました。[1]
AVRアーキテクチャは、ノルウェー工科大学(NTH)の2人の学生、[2]アルフ・エギル・ボーゲン[3]とベガード・ウォラン[4]によって考案されました。
Atmel社によると、AVRという名称は頭字語ではなく、特定の意味を持つものではないとのことです。AVRの開発元は、「AVR」という用語が何を意味するのか明確な回答を示していません。[4]しかし、AVRはAlfとVegardのR ISCプロセッサの略語であることは広く認められています。[5]なお、この記事で「AVR」という語を使用する場合、通常はAtmel AVRマイクロコントローラの8ビットRISCラインを指します。
オリジナルのAVR MCUは、当時Nordic VLSI(現在のNordic Semiconductor )と呼ばれたノルウェーのトロンハイムの地元のASIC設計会社で開発されました。BogenとWollanはそこで学生として働いていました。[要出典]これはμRISC(Micro RISC)[6]として知られ、Nordic VLSIからシリコンIP /ビルディングブロックとして入手可能でした。[7]この技術がNordic VLSIからAtmelに売却されると、BogenとWollanによってAtmelの子会社であるAtmel Norwayで内部アーキテクチャがさらに開発されました。設計者はIAR Systemsのコンパイラ作成者と緊密に協力し、AVR命令セットが高級言語の効率的なコンパイルを提供できるようにしました。[8]
AVRラインの最初の製品の一つにAT90S8515があり、40ピンDIPパッケージに収められたこの製品は、外部多重化アドレスバスとデータバスを含め、8051マイクロコントローラと同じピン配置を備えています。RESETラインの極性は逆(8051はアクティブハイのRESET、AVRはアクティブローのRESET)ですが、それ以外はピン配置は同じです。
シンプルな電子機器プロジェクト向けに開発されたArduinoプラットフォームは 2005 年にリリースされ、ATmega8 AVR マイクロコントローラを搭載していました。
AVR は改良されたハーバード アーキテクチャ マシンであり、プログラムとデータは異なるアドレス空間に表示される別々の物理メモリ システムに保存されますが、特殊な命令を使用してプログラム メモリからデータ項目を読み取ることができます。
AVR は一般的に次のように分類されます。
tinyAVR – ATtinyシリーズ
ATtinyシリーズは、利用可能なペリフェラルが限られている小型パッケージのマイクロコントローラです。しかし、改良されたtinyAVR 0/1/2シリーズ(2016年リリース)には、以下の機能が搭載されています。
megaAVR – ATmegaシリーズ
ATmegaシリーズは、拡張命令セット(乗算命令や大容量プログラムメモリを扱う命令など)、豊富なペリフェラルセット、十分なプログラムメモリ容量、そして豊富なピン数を備えたマイクロコントローラです。megaAVR 0シリーズ(2016年リリース)は、以下の機能も備えています。
AVR Dx – AVR Dx ファミリには、HCI、アナログ信号処理、機能安全に重点を置いた複数のマイクロコントローラ シリーズが含まれています。
部品番号はAVR ff D xppの形式で表されます。ffはフラッシュメモリサイズ、xはファミリ、ppはピン数です。例:AVR128DA64 – 128kフラッシュメモリ搭載の64ピンDAシリーズ。AVR Dxファミリの全デバイスには以下が含まれます。
XMEGA
ATxmega シリーズは、次のようなさまざまな周辺機器と機能を提供します。
アプリケーション固有のAVR
FPSLIC(FPGA搭載AVR)
32ビットAVR

AVR には 32 個のシングルバイト レジスタがあり、8 ビット RISC デバイスに分類されます。
フラッシュ、EEPROM、SRAMはすべて1つのチップに統合されているため、ほとんどのアプリケーションで外部メモリは不要です。一部のデバイスには、パラレル外部バスオプションが用意されており、追加のデータメモリやメモリマップデバイスを追加できます。ほぼすべてのデバイス(最小サイズのTinyAVRチップを除く)はシリアルインターフェースを備えており、これを使用して大容量のシリアルEEPROMやフラッシュチップを接続できます。
プログラム命令は不揮発性 フラッシュメモリに格納されます。MCUは8ビットですが、各命令は1ワードまたは2ワードの16ビットワードを使用します。プログラムメモリのサイズは通常、デバイス名に示されています(例:ATmega64xシリーズは64KBのフラッシュメモリを搭載し、ATmega32xシリーズは32KBのフラッシュメモリを搭載しています)。オフチッププログラムメモリは用意されておらず、AVRコアによって実行されるすべてのコードはオンチップフラッシュメモリに格納する必要があります。ただし、この制限はAT94 FPSLIC AVR/FPGAチップには適用されません。
データアドレス空間は、レジスタファイル、I/Oレジスタ、およびSRAMで構成されます。一部の小型モデルではプログラムROMもデータアドレス空間にマッピングされますが、大型モデルではマッピングされません。
AVRアーキテクチャのtinyAVRおよびmegaAVRバリアントでは、ワーキングレジスタは最初の32個のデータメモリアドレス(0000 16 –001F 16)にマッピングされ、その後に64個のI/Oレジスタ(0020 16 –005F 16)が続きます。多くの周辺機器を備えたデバイスでは、これらのレジスタの後に160個の「拡張I/O」レジスタが続き、メモリマップドI/Oとしてのみアクセス可能です(0060 16 –00FF 16)。
実際の SRAM は、これらのレジスタ セクションの後のアドレス 0060 16から始まります。または、「拡張 I/O」を備えたデバイスでは、アドレス 0100 16から始まります。
レジスタ ファイルと最初の 64 個の I/O レジスタにアクセスするための個別のアドレス指定スキームと最適化されたオペコードがありますが、すべて SRAM 内にあるかのようにアドレス指定して操作することもできます。
tinyAVR バリアントの最も小型のものは、メモリ位置としてアドレス指定できない 16 個のレジスタ (r0 から r15 は省略) のみの縮小アーキテクチャを使用しています。I/O メモリはアドレス 0000 16から始まり、その後に SRAM が続きます。また、これらのデバイスは標準の AVR 命令セットからわずかに異なります。最も顕著なのは、直接ロード/ストア命令 (LDS/STS) が 2 ワード (32 ビット) から 1 ワード (16 ビット) に縮小されたため、直接アドレス指定可能なメモリの合計 (I/O と SRAM の合計) が 128 バイトに制限されていることです。逆に、間接ロード命令 (LD) の 16 ビット アドレス空間は、フラッシュや構成ビットなどの不揮発性メモリも含むように拡張されているため、ロード プログラム メモリ (LPM) 命令は不要であるため省略されています。(詳細については、Atmel AVR 命令セットを参照してください。)
XMEGA バリアントでは、作業レジスタ ファイルはデータ アドレス空間にマップされません。そのため、XMEGA の作業レジスタを SRAM のように扱うことはできません。代わりに、I/O レジスタは、アドレス空間の先頭からデータ アドレス空間にマップされます。また、I/O レジスタ専用のデータ アドレス空間の量は、4096 バイト (0000 16 –0FFF 16 ) に大幅に増加しました。ただし、以前の世代と同様に、高速 I/O 操作命令は、最初の 64 個の I/O レジスタ位置 (ビット単位の命令の場合は最初の 32 位置) にしか到達できません。I/O レジスタに続いて、XMEGA シリーズは 4096 バイトの範囲のデータ アドレス空間を確保します。この範囲は、オプションで内部 EEPROM をデータ アドレス空間 (1000 16 –1FFF 16 ) にマップするために使用できます。実際の SRAM は、これらの範囲の後、2000 16から始まります。
小型または大型 AVR の各GPIOポートは最大 8 本のピンを駆動し、3 つの 8 ビット レジスタ (DDR x、PORT x、PIN x )によって制御されます。ここで、xはポート識別子です。
ATtiny817 やその兄弟のような新しい ATtiny AVR では、ポート制御レジスタの定義が多少異なります。xmegaAVR には、プッシュ/プル、トーテムポール、プルアップ構成用の追加レジスタがあります。
ほぼすべてのAVRマイクロコントローラは、半永久的なデータ保存のための 内部EEPROMを備えています。フラッシュメモリと同様に、EEPROMは電源を切っても内容を保持できます。
AVRアーキテクチャのほとんどのバリアントでは、この内部EEPROMメモリはMCUのアドレス指定可能なメモリ空間にマッピングされていません。外部周辺機器と同様に、特殊なポインタレジスタと読み書き命令を用いてのみアクセスできるため、EEPROMへのアクセスは他の内部RAMよりもはるかに遅くなります。
ただし、SecureAVR(AT90SC)ファミリ[11]の一部のデバイスでは、構成に応じてデータメモリまたはプログラムメモリへの特別なEEPROMマッピングを使用しています。XMEGAファミリでは、EEPROMをデータアドレス空間にマッピングすることも可能です。
EEPROM への書き込み回数には制限があるため (Atmel はデータシートで 100,000 回の書き込みサイクルを指定しています)、適切に設計された EEPROM 書き込みルーチンでは、EEPROM アドレスの内容を目的の内容と比較し、内容を変更する必要がある場合にのみ実際の書き込みを実行する必要があります。
AtmelのAVRは2段、シングルレベルのパイプライン設計を採用しており、現在のマシン命令の実行中に次のマシン命令がフェッチされます。ほとんどの命令は1~2クロックサイクルで実行されるため、AVRは8ビットマイクロコントローラの中では比較的高速です。
AVR プロセッサは、コンパイルされた Cコードの効率的な実行を念頭に置いて設計されており、タスク用のポインタがいくつか組み込まれています。
AVRの命令セットは、ほとんどの8ビットマイクロコントローラ、特にAVRが競合してきた8051クローンやPICマイクロコントローラの命令セットよりも直交性が高くなっています。しかし、完全に規則的というわけではありません。
チップ固有の違いがコード生成に影響します。コードポインタ(スタック上の戻りアドレスを含む)は、最大128KBのフラッシュメモリを搭載したチップでは2バイト長ですが、それより大きなチップでは3バイト長です。すべてのチップにハードウェア乗算器が搭載されているわけではありません。8KBを超えるフラッシュメモリを搭載したチップでは、分岐命令や呼び出し命令の範囲が広くなります。など、他にも様々な違いがあります。
ほぼ標準的な命令セットを採用しているため、C(そしてAdaでさえも)コンパイラは非常にシンプルで効率的です。GCCはかなり前からAVRサポートを組み込んでおり、広く利用されています。LLVMも基本的なAVRサポートを備えています。実際、 Atmelは小型マイクロコントローラ向けコンパイラの主要開発者から意見を募り、高水準言語向けコンパイラに最も役立つ命令セット機能を決定しました。[8]
AVR製品ラインは通常0~20MHzのクロック速度をサポートし、一部のデバイスは32MHzに達します。低消費電力動作では通常、クロック速度を下げる必要があります。最近のAVR(Tiny、Mega、Xmega、ただし90Sは除く)はすべてオンチップオシレータを搭載しており、外部クロックや共振回路は不要です。一部のAVRには、システムクロックを最大1024分周できるシステムクロックプリスケーラも搭載されています。このプリスケーラは実行時にソフトウェアで再設定できるため、クロック速度を最適化できます。
レジスタR0~R31に対するすべての演算(乗算と16ビット加減算を除く)はシングルサイクルで実行されるため、AVRは1MHzあたり最大1MIPSの性能を実現できます。つまり、8MHzプロセッサでは最大8MIPSの性能を実現できます。メモリへのロードとストアは2サイクル、分岐は2サイクルかかります。ATmega2560などの最新の「3バイトPC」デバイスでは、分岐は以前のデバイスよりも1サイクル遅くなります。
AVRは、手頃な価格の開発ボードや無料開発ソフトウェアなど、無料または安価な開発ツールが利用できることから、多くの支持を得ています。AVRは様々な名称で販売されており、基本的なコアは同じですが、周辺機器とメモリの組み合わせが異なります。各ファミリーのチップ間の互換性は比較的良好ですが、I/Oコントローラの機能は異なる場合があります。
Atmel AVR GNU C/C++クロスコンパイラ「avr-gcc」と「avr-g++」は、WinAVRとAtmel Studioの両方で使用されています。[12] [13] [14] [15] [16] Arduinoチームは、Arduinoソフトウェア のWindowsバージョンにWinAVRから借用しました。[17]
AVR 開発に関連するサイトについては外部リンクを参照してください。
AVR は幅広い機能を提供します:
AVRチップにプログラムコードをロードする方法は数多くあります。AVRチップのプログラミング方法はAVRファミリによって異なります。以下に説明する方法のほとんどは、RESETピンを使用してプログラミングモードに入ります。チップが誤ってこのようなモードに入るのを防ぐため、RESETピンと正電源の間にプルアップ抵抗を接続することをお勧めします。[22]

インシステムプログラミング(ISP)方式は、 SPIを介して実行され、リセットラインを少し操作するだけで動作します。AVRのSPIピンが何らかの障害となるものに接続されていない限り、AVRチップはPCBにハンダ付けされたまま再プログラミングできます。必要なのは6ピンコネクタとプログラミングアダプタだけです。これはAVRを使った開発において最も一般的な方法です。
Atmel-ICE デバイスまたは AVRISP mkII (レガシー デバイス) は、コンピューターの USB ポートに接続し、Atmel のソフトウェアを使用してインシステム プログラミングを実行します。
AVRDUDE(AVR Downloader/UploaDEr)は、Linux、FreeBSD、Windows、Mac OS Xで動作し、Atmel AVRISP mkII、Atmel JTAG ICE、古いAtmelシリアルポートベースのプログラマ、およびさまざまなサードパーティ製および「DIY」プログラマなど、さまざまなインシステムプログラミングハードウェアをサポートしています。[23]
プログラム・デバッグ・インターフェース(PDI)は、XMEGAデバイスの外部プログラミングおよびオンチップデバッグ用のAtmel独自のインターフェースです。PDIは、フラッシュメモリ、EEPROM、ヒューズ、ロックビット、ユーザー署名行など、すべての不揮発性メモリ(NVM)空間の高速プログラミングをサポートします。これは、PDIインターフェースを介してXMEGA NVMコントローラにアクセスし、NVMコントローラのコマンドを実行することで実行されます。PDIは2ピンインターフェースで、クロック入力用のリセットピン(PDI_CLK)と、入出力用の専用データピン(PDI_DATA)を使用します。[24]
統合プログラム・デバッグ・インターフェース(UPDI)は、新しいATtinyおよびATmegaデバイスの外部プログラミングとオンチップデバッグのための単線インターフェースです。UPDIチップは、Atmel-ICE、PICkit 4、Arduino(jtag2updiでフラッシュ)[25] 、またはMicrochipのPythonユーティリティpymcuprogで制御されるUART( TXピンとRXピンの間に1kΩの抵抗を接続)を介してプログラミングできます。[26]
高電圧シリアルプログラミング(HVSP)[27]は、主に小型AVRのバックアップモードとして使用されます。8ピンAVRパッケージでは、AVRをプログラミングモードに移行させるための固有の信号の組み合わせはそれほど多くありません。しかし、12V信号はAVRがプログラミング時にのみ認識するものであり、通常動作時には認識されません。高電圧モードは、リセットピンがヒューズによって無効化されている一部のデバイスでも使用できます。
高電圧パラレルプログラミング (HVPP) は「最終手段」と考えられており、AVR チップの不良ヒューズ設定を修正する唯一の方法である可能性があります。
ほとんどのAVRモデルは、256バイトから4KBのブートローダ領域を予約でき、そこに再プログラミングコードを配置できます。リセット時には、ブートローダが最初に実行され、ユーザーがプログラムした方法で再プログラミングを行うか、メインアプリケーションにジャンプするかを決定します。コードは、利用可能な任意のインターフェースを介して再プログラミングすることも、 PXEなどのイーサネットアダプタを介して暗号化されたバイナリを読み取ることもできます。Atmelは、多くのバスインターフェースに関するアプリケーションノートとコードを提供しています。[28] [29] [30] [31]
AT90SCシリーズのAVRは、フラッシュメモリの代わりに工場出荷時のマスクROMでプログラムメモリとして利用できます。[32]初期費用が高く、最小注文数量が必要なため、マスクROMは大量生産の場合にのみ費用対効果があります。
aWire は、新しい UC3L AVR32 デバイスで利用できる新しい 1 線式デバッグ インターフェイスです。
AVR はデバッグ用にいくつかのオプションを提供しており、そのほとんどはチップがターゲット システム内にある間のオンチップ デバッグを伴います。
debugWIREは、マイクロコントローラの単一ピンを介してオンチップデバッグ機能を提供するAtmelのソリューションです。JTAGに必要な4本の予備ピンを提供できない、ピン数の少ないデバイスに便利です。JTAGICE mkII、mkIII、AVR DragonはdebugWIREをサポートしています。debugWIREはオリジナルのJTAGICEのリリース後に開発され、現在ではクローン製品もサポートしています。
ジョイントテストアクショングループ(JTAG)機能は、チップがターゲットシステムで実行されている間にオンチップデバッグ機能にアクセスできるようにします。[33] JTAGを使用すると、内部メモリとレジスタにアクセスしたり、コードにブレークポイントを設定したり、システムの動作を観察するためにシングルステップ実行したりできます。
Atmel は、AVR 用の JTAG アダプター シリーズを提供しています。
JTAGはバウンダリスキャンテスト[40]にも使用できます。これは、システム内のAVRと他のバウンダリスキャン対応チップ間の電気的接続をテストするものです。バウンダリスキャンは生産ラインに適していますが、趣味でテストする場合は、マルチメーターやオシロスコープを使った方がよいでしょう。

公式 Atmel AVR 開発ツールおよび評価キットには、ほとんどの AVR デバイスをサポートする多数のスターター キットとデバッグ ツールが含まれています。
STK600スターターキットと開発システムは、STK500のアップデート版です。[41] STK600は、ベースボード、信号ルーティングボード、ターゲットボードを使用します。
ベース ボードは STK500 と似ており、電源、クロック、インシステム プログラミング、RS-232 ポート、DE9 コネクタ経由の CAN (コントローラ エリア ネットワーク、自動車規格) ポート、およびターゲット デバイスからのすべての GPIO 信号用のステーク ピンを提供します。
ターゲット ボードには、ボードに応じて、 DIP、SOIC、QFN、またはQFPパッケージ用のZIFソケットがあります。
信号ルーティングボードはベースボードとターゲットボードの間に配置され、デバイスボード上の適切なピンに信号をルーティングします。ZIFソケットに挿入されているデバイスに応じて、1つのターゲットボードで使用できる信号ルーティングボードは複数存在します。
STK600は、PCからUSB経由でインシステムプログラミングを行うことができ、RS-232ポートをターゲットマイクロコントローラ用に使用可能にします。STK600の「RS-232 スペア」と表示された4ピンヘッダーは、チップ上の任意のTTLレベルUSARTポートをオンボードのMAX232チップに接続し、信号をRS-232レベルに変換します。RS-232信号は、DB-9コネクタのRX、TX、CTS、およびRTSピンに接続されます。
STK500スターターキットおよび開発システムは、すべてのAVRデバイスに直接または拡張ボードを介してISPおよび高電圧プログラミング(HVP)機能を提供します。ボードにはDIPパッケージのすべてのAVRに対応するDIPソケットが搭載されています。
STK500 拡張モジュール: STK500 ボードにはいくつかの拡張モジュールが用意されています。
STK200スターターキットおよび開発システムは、40ピン、20ピン、または8ピンパッケージのAVRチップを実装できるDIPソケットを備えています。ボードには、4MHzクロックソース、8個の発光ダイオード(LED)、8個の入力ボタン、RS-232ポート、32KB SRAM用ソケット、そして多数の汎用I/Oが搭載されています。チップは、パラレルポートに接続されたドングルを使用してプログラミングできます。
Atmel ICEは、現在サポートされている、あらゆるAVRデバイスのプログラミングとデバッグに使用できる低価格ツールです(後述のAVRISP/AVRISP mkII、Dragonなどとは異なります)。USB経由でPCに接続し、電源供給を受けます。また、JTAG、PDI、aWire、debugWIRE、SPI、SWD、TPI、UPDI(Microchip Unified Program and Debug Interface)インターフェースをサポートしています。
ICE は、JTAG インターフェイスを介してすべての AVR をプログラムおよびデバッグでき、各デバイスでサポートされている追加のインターフェイスを使用してプログラムできます。
ターゲット動作電圧範囲 1.62V ~ 5.5V と次のクロック範囲がサポートされています。
ICE は、Microchip Studio IDE とコマンド ライン インターフェイス (atprogram) によってサポートされています。
Atmel-ICEは、デバッグおよびプログラミング機能を使用していないときに、データゲートウェイインターフェース(DGI)の限定的な実装をサポートします。データゲートウェイインターフェースは、ターゲットデバイスから接続されたコンピュータにデータをストリーミングするためのインターフェースです。これは、アプリケーション機能のデモンストレーションやアプリケーションレベルのデバッグを支援するための便利な補助機能として設計されています。

AVRISP と AVRISP mkII は、すべての AVR をICSP経由でプログラムできる安価なツールです。
AVRISPはシリアルポートを介してPCに接続し、ターゲットシステムから電源を供給します。AVRISPでは、10ピンまたは6ピンコネクタのいずれかの「標準」ICSPピン配置を使用できます。
AVRISP mkII は USB 経由で PC に接続し、USB から電源を供給します。半透明のケースを通して見えるLED が、対象の電源の状態を示します。
AVRISP mkIIにはドライバ/バッファICがないため[42] 、 SPIラインに複数の負荷を持つターゲットボードのプログラミングに問題が生じる可能性があります。このような場合は、より大きな電流を供給できるプログラマが必要です。あるいは、各周辺機器の前のSPIラインに低抵抗値(約150Ω)の負荷制限抵抗を接続すれば、AVRISP mkIIを使用することができます。
AVRISPとAVRISP mkIIはどちらも現在製造中止となっており、Microchip社のウェブサイトから製品ページが削除されています。2019年7月現在、AVRISP mkIIは複数の販売代理店で在庫が残っています。また、サードパーティ製のクローン製品も多数販売されています。

Atmel Dragonは、USB経由でPCに接続する安価なツールです。Dragonは、JTAG、HVP、PDI、[43]、またはICSPを介してすべてのAVRをプログラムできます。また、DragonはJTAG、PDI、またはdebugWireを介してすべてのAVRをデバッグすることもできます。以前は32KB以下のプログラムメモリを持つデバイスに制限されていましたが、AVR Studio 4.18では解除されました。[44] Dragonには、電源ピンとプログラミングピンへの接続を含め、8ピン、28ピン、または40ピンのAVRを収容できる小さなプロトタイプ領域があります。追加回路用の領域はありませんが、「Dragon Rider」と呼ばれるサードパーティ製品によって追加回路を提供できます。[45]
JTAGインサーキットエミュレータ(JTAGICE)デバッグツールは、 JTAGインターフェースを備えたAVRのオンチップデバッグ(OCD)をサポートします。オリジナルのJTAGICE(JTAGICE mkIと呼ばれることもあります)は、PCとのRS-232インターフェースを使用し、JTAGインターフェースを備えたAVRのみをプログラムできます。JTAGICE mkIは現在は製造中止となっており、JTAGICE mkIIに後継されています。
JTAGICE mkIIデバッグツールは、SPI、JTAG、PDI、およびdebugWIREインターフェースを備えたAVRのオンチップデバッグ(OCD)をサポートします。debugWireインターフェースは、リセットピン1本のみでデバッグを可能にするため、ピン数の少ないマイクロコントローラ上で動作するアプリケーションのデバッグを可能にします。
JTAGICE mkIIはUSB接続ですが、シリアルポート経由の接続も可能です。シリアルポート経由の接続には別途電源が必要です。JTAGに加えて、mkIIはISPプログラミング(6ピンまたは10ピンアダプタを使用)もサポートしています。USBとシリアルの両方のリンクは、STK500プロトコルのバリアントを使用しています。
JTAGICE3は、mkIIをより高度なデバッグ機能と高速プログラミング機能にアップデートしたものです。USB接続で、JTAG、aWire、SPI、PDIインターフェースをサポートします。[46]キットには、ほとんどのインターフェースのピン配置に対応するためのアダプタが複数含まれています。
AVR ONE! は、オンチップデバッグ機能を備えたAtmelのすべての8ビットおよび32ビットAVRデバイス用のプロフェッショナル開発ツールです。SPI、JTAG、PDI、aWireプログラミングモードと、debugWIRE、JTAG、PDI、aWireインターフェースを使用したデバッグをサポートしています。[47]

非常に人気のあるAVR Butterflyデモボードは、Atmel AVR ATmega169Vマイクロコントローラを搭載した、バッテリー駆動の自己完結型コンピュータです。AVRファミリー、特に当時新しかった内蔵LCDインターフェースを披露するために作られました。ボードには、LCDスクリーン、ジョイスティック、スピーカー、シリアルポート、リアルタイムクロック(RTC)、フラッシュメモリチップ、そして温度センサーと電圧センサーが搭載されています。AVR Butterflyの初期バージョンにはCdSフォトレジスタも搭載されていましたが、 RoHS指令に準拠するため、2006年6月以降に製造されたButterflyボードには搭載されていません。[48]この小型ボードの背面にはシャツのピンが付いており、名札として着用できます。
AVR Butterflyには、マイクロコントローラの機能を実証するためのソフトウェアがプリロードされています。工場出荷時のファームウェアでは、名前のスクロール表示、センサーの読み取り値の表示、時刻の表示が可能です。また、AVR Butterflyには、音や音楽を再生するための圧電トランスデューサーも搭載されています。
AVR Butterflyは、14セグメント、6文字の英数字ディスプレイを動作させることでLCD駆動のデモを行います。ただし、LCDインターフェースは多くのI/Oピンを消費します。
ButterflyのATmega169 CPUは最大8MHzの速度で動作しますが、ボタン電池の寿命を延ばすため、工場出荷時にはソフトウェアによって2MHzに設定されています。プリインストールされたブートローダープログラムにより、標準のRS-232シリアルプラグを介してボードを再プログラムすることができ、ユーザーは無料のAtmel IDEツールを使って新しいプログラムを作成できます。
この小型ボードは名刺の半分ほどの大きさで、価格はAVR Butterflyよりわずかに高い程度です。USB On-The-Go (OTG)対応のAT90USB1287、16MBのDataFlashメモリ、LED、小型ジョイスティック、温度センサーを搭載しています。ボードには、USBマスストレージデバイス(ドキュメントはDataFlashメモリに同梱)として動作させるためのソフトウェアや、USBジョイスティックなどが搭載されています。USBホスト機能をサポートするにはバッテリー駆動が必要ですが、USBペリフェラルとして動作させる場合はUSB経由の電力供給のみで動作します。
JTAGポートのみ従来の2.54 mmピン配置を使用します。その他のAVR I/Oポートには、よりコンパクトな1.27 mmヘッダーが必要です。
AVR Dragonは、AVR Studio 4.18で32KBの制限が撤廃されたため、プログラミングとデバッグの両方に対応しています。また、JTAGICE mkIIはプロセッサのプログラミングとデバッグの両方に対応しています。プロセッサは、USB「デバイスファームウェアアップデート」プロトコルを使用して、WindowsまたはLinuxホストからUSB経由でプログラミングすることもできます。Atmelは、独自のサンプルプログラム(ソースコードは含まれていますが、配布は制限されています)とUSBプロトコルスタックをデバイスに同梱しています。
LUFA [49]は、USBKeyやその他の8ビットUSB AVR用の サードパーティ製のフリーソフトウェア(MITライセンス)USBプロトコルスタックです。
RAVENキットは、AtmelのIEEE 802.15.4チップセットを使用したZigbeeなどの無線スタック向け無線開発をサポートします。より高性能なButterflyカード2枚と無線USBキーを組み合わせたようなキットで、価格は約100ドル未満です。これらのボードはすべてJTAGベースの開発をサポートしています。
このキットには2枚のAVR Ravenボードが含まれており、それぞれにIEEE 802.15.4(およびフリーライセンスのZigbeeスタック)をサポートする2.4GHzトランシーバが搭載されています。無線機能はATmega1284pプロセッサで駆動され、ATmega3290pプロセッサで駆動されるカスタムセグメントLCDによってサポートされています。Ravenの周辺機器はButterflyに似ており、ピエゾスピーカー、DataFlash(大容量)、外付けEEPROM、センサー、 RTC用32kHz水晶振動子などが搭載されています。これらは、リモートセンサーノードの開発、リレー制御など、あらゆる用途に使用できます。
このUSBスティックは、USBホストと2.4GHz無線リンクへの接続にAT90USB1287を使用しています。これらのデバイスは、ローカルバッテリーではなくホスト電源を利用してリモートノードを監視および制御することを目的としています。
AVRには、様々なサードパーティ製のプログラミングおよびデバッグツールが利用可能です。これらのデバイスは、RS-232、PCパラレルポート、USBなど、様々なインターフェースを備えています。[50]

AVRは、セキュリティ、安全、パワートレイン、エンターテイメントシステムなど、様々な車載アプリケーションに利用されています。Atmelは最近、車載アプリケーション開発者を支援するための新しい出版物「Atmel Automotive Compilation」をリリースしました。現在、BMW、ダイムラー・クライスラー、TRWなどで採用されています。
Arduinoフィジカルコンピューティングプラットフォームは、 ATmega328マイクロコントローラ(Diecimilaより前のボードバージョンではATmega168またはATmega8)をベースにしています。Arduino Megaプラットフォームの開発には、より多くのピン配置とメモリ容量を備えたATmega1280とATmega2560も採用されています。Arduinoボードは、Arduino独自の言語とIDEを使用することも、標準化され広く普及しているAVRプラットフォームと同様に、より一般的なプログラミング環境(C、アセンブラなど)を使用することもできます。
USBベースのAVRは、Microsoft Xboxハンドコントローラーに使用されています。コントローラーとXbox間の接続はUSBです。
Cubloc、 [51] gnusb、[52] BasicX、[53] Oak Micros、[54] ZX Microcontrollers、 [ 55] myAVRなど、多くの企業が愛好家、ロボットビルダー、実験者、小規模システム開発者向けにAVRベースのマイクロコントローラボードを製造しています。[56]また、同様のユーザーをサポートするArduino互換ボードの大規模なコミュニティもあります。
シュナイダーエレクトリックはかつて、Atmel AVRコアと高度なモーションコントローラを組み込んだM3000モーターおよびモーションコントロールチップを製造していましたが、これはさまざまなモーションアプリケーションでの使用を目的としていました。[57]
オープンソースコミュニティにおけるFPGAの人気が高まるにつれ、AVR命令セットと互換性のあるオープンソースプロセッサの開発が始まっています。OpenCoresのウェブサイトには、以下の主要なAVRクローンプロジェクトがリストされています。
アトメル社製のチップに加え、ロジックグリーン・テクノロジーズ社からもクローン製品が販売されている。[63]これらの製品は完全なクローン製品ではなく、クローン元のチップにはない機能がいくつかあり、最大クロック速度も高いが、プログラミングにはISPではなくSWD(シリアル・ワイヤ・デバッグ、ARM社のJTAGの派生型)を使用するため、異なるプログラミングツールが必要となる。
ATmegaアーキテクチャを採用したマイクロコントローラは、ロシアのヴォロネジにあるNIIETによって、1887シリーズの集積回路の一部として製造されています。これには、 1887VE7T(ロシア語:1887ВЕ7Т )の名称で販売されているATmega128が含まれます。[64]
リセットラインには内部プルアップ抵抗が搭載されていますが、ノイズが多い環境ではプルアップ抵抗が不足し、リセットが散発的に発生する可能性があります。