


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人の学生、アルフ=エギル・ボーゲン[3 ]とヴェガード・ウォラン[ 4 ]によって考案されました。
Atmel社は、AVRという名称は頭字語ではなく、特定の何かの略称ではないと述べています。AVRの開発者は、「AVR」という用語が何の略称であるかについて明確な答えを出していません。[ 4 ]しかし、AVRはAlfとVegardのRISCプロセッサの略称であると一般的に受け入れられています。[ 5 ]なお、この記事で使用されている「AVR」は、一般的にAtmel AVRマイクロコントローラの8ビットRISCシリーズを指しています。
オリジナルの AVR MCU は、当時 Nordic VLSI (現在のNordic Semiconductor)と呼ばれていたノルウェーのトロンハイムの地元のASIC設計会社で開発されました。ボーゲンとウォランはそこで学生として働いていました。これは μRISC (Micro RISC) [ 6 ]として知られており、Nordic VLSI からシリコン IP/ビルディング ブロックとして入手可能でした。[ 7 ]この技術が Nordic VLSIから Atmel に売却された後、内部アーキテクチャは Atmel の子会社である Atmel Norway でボーゲンとウォランによってさらに開発されました。設計者は、 AVR 命令セットが高水準言語の効率的なコンパイルを提供するように、 IAR Systemsのコンパイラ開発者と緊密に協力しました。[ 8 ]
AVRシリーズの初期製品の一つであるAT90S8515は、40ピンDIPパッケージで、外部多重化アドレスバスとデータバスを含め、8051マイクロコントローラと同じピン配置を備えています。リセットラインの極性は逆(8051はアクティブハイのリセット、AVRはアクティブローのリセット)でしたが、それ以外はピン配置は同一でした。
シンプルな電子工作プロジェクト向けに開発されたArduinoプラットフォームは、2005年にリリースされ、ATmega8 AVRマイクロコントローラを搭載していた。
AVRは、ハーバードアーキテクチャを改良したマシンであり、プログラムとデータは別々の物理メモリシステムに格納され、異なるアドレス空間に存在するが、特別な命令を使用してプログラムメモリからデータ項目を読み取ることができる。
AVRは一般的に以下のように分類されます。
tinyAVR – ATtinyシリーズ
ATtinyシリーズは、周辺機器が限られた小型パッケージのマイクロコントローラです。しかし、改良されたtinyAVR 0/1/2シリーズ(2016年発売)には、以下の機能が含まれています。
megaAVR – ATmegaシリーズ
ATmegaシリーズは、拡張命令セット(乗算命令と大容量プログラムメモリを扱うための命令)、豊富な周辺機器、十分なプログラムメモリ、そして幅広いピン配置を備えたマイクロコントローラです。2016年にリリースされたmegaAVR 0シリーズには、以下のような機能も搭載されています。
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ビットですが、各命令は16ビットワードを1つまたは2つ使用します。プログラムメモリのサイズは通常、デバイス名に示されています(例: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」レジスタ(0060 16 ~ 00FF 16 )が続き、メモリマップドI/Oとしてのみアクセス可能です。
実際のSRAMはこれらのレジスタセクションの後、アドレス0060 16、または「拡張I/O」を備えたデバイスでは0100 16から始まります。
レジスタファイルと最初の64個のI/Oレジスタにアクセスするためのアドレス指定方式と最適化されたオペコードは別々に用意されているものの、それらはすべてSRAMにあるかのようにアドレス指定および操作することも可能です。
tinyAVRの最小バージョンは、メモリ位置としてアドレス指定できない16個のレジスタ(r0~r15は省略)のみを備えた縮小アーキテクチャを採用しています。I/Oメモリはアドレス000016から始まり、その後に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社のデータシートでは10万回の書き込みサイクルと規定されている)、適切に設計されたEEPROM書き込みルーチンは、EEPROMアドレスの内容と目的の内容を比較し、内容を変更する必要がある場合にのみ実際の書き込みを実行するべきである。
Atmel社のAVRは、2段階1レベルのパイプライン設計を採用しており、現在の命令の実行中に次の命令がフェッチされます。ほとんどの命令は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分の1まで分周できるシステムクロックプリスケーラが搭載されています。このプリスケーラは実行時にソフトウェアで再構成できるため、クロック速度を最適化できます。
レジスタ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 チームは、Windows 版Arduino ソフトウェアのために WinAVR から流用しました。[ 17 ]
AVR開発に関連するサイトについては、外部リンクを参照してください。
AVRは幅広い機能を備えています。
AVRチップにプログラムコードをロードする方法は数多くあります。AVRチップのプログラミング方法は、AVRファミリごとに異なります。以下に説明する方法のほとんどは、RESETラインを使用してプログラミングモードに入ります。チップが誤ってそのようなモードに入るのを防ぐため、RESETピンと正電源の間にプルアップ抵抗を接続することをお勧めします。[ 22 ]

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

Atmelの公式AVR開発ツールおよび評価キットには、ほとんどのAVRデバイスをサポートする多数のスターターキットとデバッグツールが含まれています。
STK600スターターキットと開発システムはSTK500のアップデート版です。[ 41 ] STK600はベースボード、信号ルーティングボード、ターゲットボードを使用します。
ベースボードはSTK500と同様に、DE9コネクタを介して電源、クロック、インシステムプログラミング、RS-232ポート、CAN(Controller Area Network、車載規格)ポートを提供し、ターゲットデバイスからのすべてのGPIO信号用のステークピンを備えています。
対象基板には、基板の種類に応じて、DIP、SOIC、QFN、またはQFPパッケージ用のZIFソケットが搭載されています。
信号ルーティングボードはベースボードとターゲットボードの間に配置され、信号をデバイスボード上の適切なピンにルーティングします。ZIFソケットに挿入されるデバイスの種類に応じて、1枚のターゲットボードで使用できる信号ルーティングボードは複数存在します。
STK600はUSB経由でPCからシステム内プログラミングを行うことができ、RS-232ポートはターゲットマイクロコントローラ用に確保されます。STK600上の「RS-232 spare」とラベル付けされた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は、ICSPを介してすべてのAVRをプログラムできる安価なツールです。
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 のデバッグも許可します。以前は プログラム メモリが 32 KB 以下のデバイスに制限されていましたが、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接続に対応していますが、別個の電源が必要となるシリアルポート経由の接続も可能です。mkIIはJTAGに加え、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よりわずかに高価な価格設定となっています。AT90USB1287(USB On-The-Go(OTG)対応)、16MB のデータフラッシュメモリ、LED、小型ジョイスティック、温度センサーを搭載しています。ボードにはソフトウェアが付属しており、USBマスストレージデバイス(ドキュメントはデータフラッシュメモリに収録)、USBジョイスティックなどとして使用できます。USBホスト機能を使用するにはバッテリー駆動が必要ですが、USB周辺機器として使用する場合はUSB経由で供給される電力のみで動作します。
JTAGポートのみが従来の 2.54mmピッチのピン配列を使用します。その他のAVR入出力ポートはすべて、より小型の1.27mm ピッチのヘッダーが必要です。
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枚と無線USBKeyを組み合わせたような構成で、価格もほぼ同額(100米ドル未満)です。これらのボードはすべてJTAGベースの開発に対応しています。
このキットには、 IEEE 802.15.4(およびフリーライセンスのZigbeeスタック)をサポートする2.4GHzトランシーバーを搭載したAVR Ravenボードが2枚含まれています。無線モジュールはATmega1284pプロセッサで駆動され、ATmega3290pプロセッサで駆動されるカスタムセグメントLCDによってサポートされています。Ravenの周辺機器はButterflyに似ており、ピエゾスピーカー、DataFlash(より大型)、外部EEPROM、センサー、RTC 用の32kHz水晶発振器などを備えています。これらは、リモートセンサーノードの開発、リレーの制御など、必要な用途に使用することを想定しています。
このUSBスティックは、USBホストおよび2.4GHz 無線リンクへの接続にAT90USB1287を使用しています。これらは、ローカルバッテリーではなくホスト電源に依存して、リモートノードの監視と制御を行うことを目的としています。
AVRには、さまざまなサードパーティ製のプログラミングおよびデバッグツールが用意されています。これらのデバイスは、RS-232、PCパラレルポート、USBなどのさまざまなインターフェースを使用します。[ 50 ]

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