日本語版参考資料 本資料は MCM JAPAN が英文技術資料の理解補助のために参考資料として作 成したものです。本資料に記載されている内容は、今後、予告無く変更する ことがあります。量産設計の際には、メーカーの最新資料等をご参照ください。 Atmel AVR4030: Atmel Software Framework - Reference Manual Features アーキテクチャー解説 コードスタイル デザイン スタイル ディレクトリー構造 1 Introduction Atmel Microcontrollers Application Note Rev. 8432B-AVR-03/12 Atmel® Software Framework ( 略号 ASF, www.atmel.com/asf) は、アトメルの megaAVR®, AVR XMEGA®, AVR UC3 及び SAM デバイスのアプリケーションを作るためのソフトウェアドライバーやラ イブラリーを提供します。その ASF は、開発の促進やソフトウェアデザインの異なるコンポーネント の結び付けを助けるように設計されています。簡単にオペレーティングシステム(OS)に統合でき、また、 スタンドアロンの製品として動作します。 開発者は、ASF がどのようにデザインされ、どのルール を適用し、ASF をどのように使ってコード開発を行うかをこのアプリケーションノートを読んで知る ことができます。 この資料はスタートガイドというよりは、むしろ、ASF の基礎をなすアーキテク チャーについて記述したものです。

Atmel AVR4030: Atmel Software Framework - …—¥本語版参考資料 Atmel AVR4030 3 3 ASF directory structure avr32/ common/ mega/ sam/ thirdparty/ xmega/ applications/ boards

Embed Size (px)

Citation preview

日本語版参考資料

本資料は MCM JAPAN が英文技術資料の理解補助のために参考資料として作成したものです。本資料に記載されている内容は、今後、予告無く変更することがあります。量産設計の際には、メーカーの最新資料等をご参照ください。

Atmel AVR4030: Atmel Software Framework - Reference Manual

Features • アーキテクチャー解説• コードスタイル• デザイン スタイル• ディレクトリー構造

1 Introduction

Atmel Microcontrollers

Application Note

Rev. 8432B-AVR-03/12

Atmel® Software Framework ( 略号 ASF, www.atmel.com/asf) は、アトメルの megaAVR®, AVR XMEGA®, AVR UC3 及び SAM デバイスのアプリケーションを作るためのソフトウェアドライバーやライブラリーを提供します。その ASF は、開発の促進やソフトウェアデザインの異なるコンポーネントの結び付けを助けるように設計されています。簡単にオペレーティングシステム(OS)に統合でき、また、スタンドアロンの製品として動作します。 開発者は、ASF がどのようにデザインされ、どのルールを適用し、ASF をどのように使ってコード開発を行うかをこのアプリケーションノートを読んで知ることができます。 この資料はスタートガイドというよりは、むしろ、ASF の基礎をなすアーキテクチャーについて記述したものです。

日本語版参考資料

2 Atmel AVR4030

2 Software installation and setup

2.1 Downloading

2.2 Online API Documentation

2.3 Release notes

2.4 Bug tracker

2.5 Getting started

ASF は Atmel Studio® 6 (http://www.atmel.com/atmelstudio) に含まれています。http://www.atmel.com/asf の中に別個のパッケージが IAR™ ユーザー用、及び AVR32 Studio ユーザー用に有ります。Atmel Studio のユーザーは、既に ASF が統合された形で Atmel Studio に入っているので、このパッケージは不要です。

公式 ASF オンライン API 資料は http://asf.atmel.com にあります。

ASF リリースノート資料は http://www.atmel.com/asf にあり、以下について記述しています :• サポートされているツール• サポートされているデバイス• 新機能• API 変更• バグ修正• 既知の問題

Atmel Software Framework 公式のバグ追跡情報は http://asf.atmel.com/bugzilla/ にあります。このバグトラッカーは ASF に関する全てのバグレポートに対して使用される必要があります。

ア ト メ ル ア プ リ ケ ー シ ョ ン ノ ー ト AVR4029: Atmel Software Framework ‒ Getting Started がhttp://www.atmel.com/asf にありますのでご参照ください。

日本語版参考資料

Atmel AVR4030

3

3 ASF directory structure

avr32/ common/ mega/ sam/ thirdparty/ xmega/

applications/ boards/ components/ drivers/ services/ utils/

Figure 3-1. Atmel Software Framework モジュール構造

Atmel Software Framework は次の 6 つの主要パートに分割されています、すなわち、 avr32/ directory, xmega/ directory, mega/ directory, common/ directory, sam/ directory そしてthirdparty/ directory です。 これらの 6 つのディレクトリーはそれぞれ Atmel AVR UC3 アーキテクチャー , Atmel AVR XMEGA アーキテクチャー , Atmel megaAVR, 全てのアーキテクチャーに共通な部分、 Atmel SAM アーキテクチャー そして最後がサードパーティのライブラリーです。

ASF ルートフォルダーの概要 :

各アーキテクチャー(そして共通ディレクトリー)はいくつかのサブディレクトリーに分割されており、こ れ ら の デ ィ レ ク ト リ ー は 以 下 の 各 種 モ ジ ュ ー ル を 含 ん で い ま す ; boards, drivers, components, services そして utilities. 概要およびそれらのモジュール間のつながりについては、下記のリストとFigure 3-1 をご参照ください。

日本語版参考資料

4 Atmel AVR4030

3.1 Architecture and common directory structure

3.1.1 applications/

3.1.2 boards/

3.1.3 components/

3.1.4 drivers/

3.1.5 services/

3.1.6 utils/

3.2 Third party directory structure

このディレクトリーはアプリケーション例を提供し、それらは services, components そして drivers モジュールに基づいています。それらのアプリケーションはよりハイレベルであり複数のモジュールに多様に依存しているかもしれません、従ってデモとしては先進的アプリケーションで、例えば web server, 各種 USB デモ、 bootloader, audio player, 他があります。

このディレクトリーは所定のアーキテクチャーに対する各種 board の定義を含んでいます。 このboard コードは物理的な配線、I/O の初期化、外部デバイスの初期化等からそのボード上のモジュールを抽出します。また、この board コードは上記モジュールに鑑みてどの board 機能が有効かを特定します。このボードエントリーポイントの board.h ヘッダーファイルは全てのアプリケーションで使用され、複数のアーキテクチャー間で共用されるので、common/boards/board.h の場所にあります。

このディレクトリーは、メモリー(例えば、Atmel DataFlash®, SDRAM, SRAM, そして NAND flash)やディスプレイ、センサー、無線等の外部ハードウェア components にアクセスするためのソフトウェアドライバーを提供しています。これらの components は、もしそれがアーキテクチャー間で共用される場合は common/ directory に置かれ、そうでない場合は適切なアーキテクチャーのディレクトリーの中に置かれます。

各ドライバーは driver.c と driver.h ファイルで構成され、それらのファイルは周辺回路やデバイスに特定の機能にアクセスするための低レベルのレジスターインタフェース機能を提供しています。この services と components はドライバーのインタフェースを行います。

このディレクトリーは、例えば USB クラス , FAT ファイルシステム , 最適化アーキテクチャー DSP ライブラリー , グラフィカルライブラリ等のような、よりアプリケーション志向のソフトウェアを提供します。この services は、もしアーキテクチャー間で共用されるならば common/ directory に置かれ、そうでなければ、適切なアーキテクチャーのディレクトリーの中に置かれます。

このディレクトリーは複数のリンカースクリプトファイル、ビルドシステム用共通ファイル、一般使用定義を有する C/C++ ファイルさらにマクロとファンクションを提供します。また、utils/ directory は、特定のアーキテクチャー用のツールチェイン間の差に対して共通のインタフェースを作成する方法を提供します。 このコードユーティリティはもしアーキテクチャー間で共用されるならば common/ directory に置かれ、そうでなければ、適切なアーキテクチャーのディレクトリーの中に置かれます。

/thirdparty ディレクトリーは、Atmel Corporation のアプリケーションノートライセンステキスト以外のライセンスを有する全てのソフトウェアから出来ています。 その概要は thirdparty/ ディレクトリーの中にあります。

日本語版参考資料

Atmel AVR4030

5

cyberom/ freertos/ qtouch/ …

/thirdparty ディレクトリーの中のこれらの各モジュールは thirdparty/<module>/license.txt のライセンスファイルを指定しなければなりません。

日本語版参考資料

6 Atmel AVR4030

4 Compiler support

4.1 Atmel Studio 6

4.2 GNU compiler collection

xmega/drivers/dma/example/atxmega128a1_xplain/gcc

4.3 IAR Embedded Workbench

avr32/drivers/gpio/peripheral_bus_example/ at32uc3a0512_evk1100/iar

xmega/drivers/dma/example/atxmega128a1_xplain/iar

4.4 Toolchain header files

4.4.1 Bug reporting

Atmel Software Framework は使用するコンパイラからは独立であることを狙っています;従って、コンパイラ間のさまざまな差分はアーキテクチャー特有のヘッダーファイルで吸収されます。

このファイルは、utils/compiler.h の各アーキテクチャーディレクトリーの下に置かれています。現在 ASF は 8-bit と 32-bit の AVR と ARM の両方に対して GCC と IAR をサポートしています。開発には最新のツールチェインバージョンをご使用ください。

ASF ツ ー ル を 使 い 始 め る 際 に は、http://www.atmel.com/asf か ら Atmel application note AVR4029: Atmel Software Framework - Getting Started をご参照ください。

ASF は、GNU GCC コンパイラをベースにして Atmel Studio 6 の中に統合されています。 詳細はhttp://www.atmel.com/atmelstudio をご参照ください。

GNU makefile は全ての ASF プロジェクトに提供されます:• 例えば、32-bit AVR デバイスに関して、Atmel EVK1100 ボード上の Atmel AT32UC3A0512 デバイスの GPIO 周辺バスドライバー例に対する GCC プロジェクトファイルは下記の場所で見つけることができます:

• 例 え ば、Atmel AVR XMEGA デ バ イ ス に 関 し て、Atmel AVR Xplained ボ ー ド 上 の Atmel ATxmega128A1 の DMA ドライバー例に対する GCC プロジェクトファイルは下記の場所で見つけることができます:

avr32/drivers/gpio/peripheral_bus_example/at32uc3a0512_evk1100/gcc

IAR Embedded Workbench® workspace は ASF の為に提供されています。•例えば、32-bit AVR デバイスに関して、IAR プロジェクトファイルは下記の場所で見つけることができます:

• 例えば、AVR XMEGA デバイスに関して、IAR プロジェクトファイルは下記の場所で見つけることができます:

toolchain header files はバグフリーではないので、バグフリーになることを確保するためにいくつかのルーティーンに従わなければなりません。現時点の方法は、Atmel Software Framework と一緒に、更新された toolchain header files を出荷することです。そこでユーザーは、コンパイラーコンパイラが期待通りのファームウェアを生成していることを確実にするこれらの toolchain を使って更新しなければなりません。

現在の toolchain が既に最新の header files を有している中で開発者が toolchain のバグに遭遇したときは、そのバグレポートを作成することが重要です。

日本語版参考資料

Atmel AVR4030

7

4.4.1.1 Temporary workaround for defined symbols

//! \todo Remove workaround for bug in header files.

#undef DMA_CTRL

#define DMA_CTRL _SFR_MEM8(0xCAFE)

4.4.1.2 Temporary workaround for type definitions

//! \todo Remove workaround for bug in header files.

typedef struct avr32_dmaca_tmpfix {

unsigned long sar0;

(...)

} avr32_dmaca_tmpfix_t;

4.4.2 Update of header files

toolchain header file の新たなリリースを待つ間は、暫定回避策がソースコードの中で許されます。その回避策は通常は不正定義を未定義として、開発する特定モジュールのソースコードの中で正しく定義することです。 また、その回避策の手前に、それが回避策であり header files にて修正されたときは削除されるべきであることを述べたドキュメンテーションのラインを入れなければなりません。

#undef ラインは、toolchain header files の更新後に、コードが自動的にフェイルしないことを確実にするものです。Doxygen フォーマットのドキュメンテーションは、そのドキュメンテーションが生成されたときにその回避策をポップアップさせ、開発者に未定義コードについて気付かせます。

toolchain header file の新たなリリースを待つ間は、暫定回避策がソースコードの中で許されます。その回避策は新しいタイプを正しく定義することですが、タイプ定義名の _t part の前にサフィックスとして _tmpfix を追加してネームを変更します。また、その回避策の手前に、それが回避策であり header filesにて修正されたときは削除されるべきであることを述べたドキュメンテーションのラインを入れなければなりません。

Doxygen フォーマットのドキュメンテーションは、そのドキュメンテーションが生成されたときにその回避策をポップアップさせ、開発者に未定義コードについて気付かせます。

ASF 内の各種アーキテクチャーは、utils/header_files/ ディレクトリーの中にヘッダーファイルパッケージを有しています。同じディレクトリー内の readme.txt はユーザーがどのようにして toolchain ヘッダーファイルを更新すればよいかを説明しています。ASF 内のヘッダーファイルを直接編集してはいけません。

日本語版参考資料

8 Atmel AVR4030

5 Code style

5.1 General naming rules

5.2 Function and variable names

5.2.1 Example void this_is_a_function_prototype(void);

5.2.2 Rationale

5.3 Constants

5.3.1 Examples #define BUFFER_SIZE 512

#define WTK_FRAME_RESIZE_WIDTH (WTK_FRAME_RESIZE_RADIUS + 1)

enum buffer_size = {

BUFFER_SIZE_A = 128,

BUFFER_SIZE_B = 512,

};

この章は、Atmel Software Framework. 内の全てのコード上で使用される、ネーミング規則や一般的なコードスタイルへの要求内容を含んでいます。

もしも関数名、変数、定数またはタイプがデータシートあるいは他の仕様書からもたらされるならば、出来る限りそこで用いられているスタイルと一致させるべきです。

例えば、そのコーディングスタイルが本ページの規定からはみ出したとしても、request identifier field の名前を USB setup request bRequest とすることは、 USB 2.0 仕様に精通した人ならばそのフィールドの意味を即座に理解できるので全く OK でありむしろ望ましいことです。

• 関数や変数は全て小文字で命名されます : [a-z] and [0-9]• アンダースコア '_' は関数名や変数名をさらに論理的集合に分ける際に使用されます。• 変数名はタイプ名とは異なるようにしなければなりません(悪い例、 "static name name[2]")。

全て小文字名は目に優しいし、C コードではとても一般的なスタイルです。

• 定数は全て大文字で命名されます : [A-Z] and [0-9]•アンダースコア '_' は定数名をさらに論理的集合に分ける際に使用されます。• 列挙定数はこの規則に従わなければなりません。• 式により作られた定数はその式全体を中括弧で括ります;一価定数はこれをスキップできます。

日本語版参考資料

Atmel AVR4030

9

5.3.2 Rationale

5.4 Type definitions

5.4.1 Example typedef uint8_t buffer_item_t;

5.5 Structures and unions

5.5.1 Examples struct cmd {

uint8_t length;

uint8_t *payload;

};

union cmd_parser {

struct cmd cmd_a;

struct cmd cmd_b;

};

5.6 Function like macro

定数は他のコードから目立つべきで、これは全て大文字名とすることで確保されます。また、全大文字定数は仕様書やデータシートでも大変一般的で、多くのそのような定数がそこからもたらされています。 式の廻りの中括弧は不測の評価を避ける意味で重要です。例えば、加算された二つの変数からなる定数があり、ソースコードの中で後にどちらと乗算するかのような例です。

列挙型もまた定数であり、プリプロセッサー定数と同じルールに従うことが道理にかなっています。

• stdint.h と stdbool.h のタイプは用意されているときは使用されなければなりません。• タイプ定義は全て小文字で命名されます : [a-z] and [0-9]•アンダースコア '_' は名前をさらに論理的集合に分ける際に使用されます。• 全てのタイプ定義は終了文字の '_t' を付けなければなりません。

• 構造体 (Structures) と共用体 (Unions) の命名規則は関数 (functions) や変数 (variables) の場合と同じルールに従います。• どうしても必要でない限りタイプデフは使用しません。タイプデフは以下のケースでのみ OK です。

o そのタイプ定義がアーキテクチャー依存で struct, union または scalar としての定義が許されます。

• 関数形式マクロ (Function like macro) の命名規則は関数 (functions) や変数 (variables) の場合と同じルールに従います。このやり方により、後のステージでのインライン関数でそれらの交換がよりし易くなります。• できれば、関数形式マクロは、do {} while (0) の中にブロックされるべきです。•関数形式マクロは2回以上その引数をアクセスしてはなりません。• 全てのマクロ引数およびマクロ定義そのものは括弧に入れなければなりません。

日本語版参考資料

10 Atmel AVR4030

5.6.1 Example

#define set_io(id) do { \

PORTA |= (1 << (id)); \

} while (0)

5.6.2 Rationale

5.7 Indentation

5.7.1 Example enum scsi_asc_ascq {

[TAB] [spaces]

SCSI_ASC_NO_ADDITIONAL_SENSE_INFO = 0x0000,

SCSI_ASC_LU_NOT_READY_REBUILD_IN_PROGRESS = 0x0405,

SCSI_ASC_WRITE_ERROR = 0x0c00,

SCSI_ASC_UNRECOVERED_READ_ERROR = 0x1100,

SCSI_ASC_INVALID_COMMAND_OPERATION_CODE = 0x2000,

SCSI_ASC_INVALID_FIELD_IN_CDB = 0x2400,

SCSI_ASC_MEDIUM_NOT_PRESENT = 0x3a00,

SCSI_ASC_INTERNAL_TARGET_FAILURE = 0x4400,

};

5.7.2 Rationale

関数形式マクロも出来るだけ通常の関数と同じような振る舞いを持つことが望ましいです。これは single statement として評価されなければならないことを意味しています;"void" マクロに対するdo { } while (0) での囲いやマクロが値をリターンする括弧による囲いがこれらを確実なものとします。 マクロの項は、演算子の優先度に関連した意外さを避ける為に括弧で括る必要があります; その項はマクロ内の式で使用される前に充分に評価されることを望みます。また、マクロ項の評価では思わぬ結果が出るかもしれません;そこで、マクロは一回のみ評価されることを確実にする必要があります(sizeof やtypeof の式はカウントしません )。

• 字下げ (Indentation) は TAB キャラクターを使用して実行されます。 この方法で、異なるエディターコンフィグレーションでもソースコードと配列を乱さないことを確実にします。

• 字下げに対しては、TAB キャラクターは式/テキストの前で使われなければなりません。

• TAB は式/テキストの後では使用できません、その場合はスペースを代わりに使用してください。これにより、TAB サイズに関係なくソースコードの読み易さを確実にします。

• TAB キャラクターのサイズは決まってはいません。とにかく、読み易さを実現するために開発者は充分大きな TAB キャラクターを使用することが推奨されます。 さらに、大きな字下げはコントロールブロックの深いネスティング(入れ子)を避けるための簡易な方法です。

TAB キャラクターのサイズは開発者各自で異なりえますってもかまいません。固定サイズを強要することはできません。 ベストな読み易さを持たせる為に、式やテキストの前に TAB キャラクターのみが使えます。TAB キャラクターは式/やテキストの後では使用できません、スペースを代わりに使用してください。字下げの全部揃ったポイントは、どこがコントロールブロックの開始と終了かを明確に示します。小さな字下げ(2文字の字下げでは些細重要な関数ではないことを理解把握することは殆ど不可能です)よりも大きな字下げのほうがお互いに各字下げレベルを区別し易くなります。 

日本語版参考資料

Atmel AVR4030

11

5.8 Text formatting

5.8.1 Example /* This is a comment which is exactly 80 characters wide for example showing. */ dma_pool_init_coherent(&usbb_desc_pool, addr, size, sizeof(struct usbb_sw_dma_desc), USBB_DMA_DESC_ALIGN); #define unhandled_case(value) \ do { \ if (ASSERT_ENABLED) { \ dbg_printf_level(DEBUG_ASSERT, \ "%s:%d: Unhandled case value %d\n", \ __FILE__, __LINE__, (value)); \ abort(); \ } \ } while (0)

5.8.2 Rationale

5.9 Space

5.9.1 Example fat_dir_current_sect

= ((uint32_t)(dclusters[fat_dchain_index].cluster + fat_dchain_nb_clust - 1)

* fat_cluster_size) + fat_ptr_data + (nb_sect % fat_cluster_size);

大きな字下げのもう一つの優位点として、ネスティング(入れ子)のレベルの増加によりコード記述がますます困難になることに対して、関数を分割して複数のより簡単なユニットにする良い動機づけを与え、さらに読み易さを改善します。これは言うまでもなく、80文字ルールも同様に求められていることが分かります。もし、TAB を使うことでコードが適切に整列しないという懸念をお持ちでしたら、continuation についてのセクションを参照してください。

• コード、ドキュメント、その他の一行は、8スペース TAB 字下げを前提に80文字を超えてはなりません。• 80文字を超えるテキストラインは折り返しとして、ダブルインデントします。

ライン幅を80文字未満に保つことで、ファイルの内容が、例え小さなスクリーンでもラインを分断することなく見えるようになります。 また、それは過度のネスティングレベルを特定する助けになります。 一般に読み易さを改善します。

• 二項および三項演算子の廻りにスペースを入れます。• 式/テキストの後ろには TAB キャラクターの代わりにスペースを使います。• 単項演算子の後ろにはスペースは入れません。• 括弧とその中の表示式の間にはスペースは入れません。• 関数コールと関数定義において、関数名とパラメータの間にはスペースは入れません。

日本語版参考資料

12 Atmel AVR4030

5.10 Continuation

5.10.1 Example static void xmega_usb_udc_submit_out_queue(struct xmega_usb_udc *xudc,

usb_ep_id_t ep_id, struct xmega_usb_udc_ep *ep)

{

(...)

}

#define xmega_usb_read(reg) \

mmio_read8((void *)(XMEGA_USB_BASE + XMEGA_USB_##reg))

5.10.2 Rationale

5.11 Comments

// Comment

(...)

/*

* Long comment that might wrap multiple lines ...

*/

(...)

5.12 Braces

5.12.1 Examples if (byte_cnt == MAX_CNT) {

do_something();

} else {

do_something_else();

}

• 継続 (Continuation) は式が長すぎて一行に収まらないときにそれを分割する為に使用されます。• 継続 (Continuation) は字下げレベルに余分の TAB を加えることで実現されます。

余分の TAB を使って継続 (Continuation) の字下げをすることで、二つが同じ字下げのレベルか次のレベルかをコードから簡単に区別することが常に出来ることになります。 後半の部分は、if, while そして for のステートメントにおいて特に重要です。  また、整列されるようには何も要求しないことで

(それはしばしばブロックがスタートした字下げレベルと結局同じにさせる)、TAB サイズに関わらず等しく整列することになる。

• 短いコメントは以下のように使用できます。

• 長い(複数ライン)のコメントは以下のように使わなければなりません。

• 開始の中括弧は、関数定義を除き、どの場合でもラインの終わりに置かれます。終了の中括弧は、式と同じ字下げのレベルに置かれます。• 中括弧の中のコードは字下げされます。• シングルラインコードブロックもまた中括弧の中に囲まれます。 

日本語版参考資料

Atmel AVR4030

13

5.13 Pointer declaration

5.13.1 Example uint8_t *p1;

5.14 Compound statements

5.14.1 Examples if (byte_cnt == MAX1_CNT) {

do_something();

} else if (byte_cnt > MAX1_CNT) {

do_something_else();

} else {

now_for_something_completely_different();

}

while (i <= 0xFF) {

++i;

}

do {

++i;

} while (i <= 0xFF);

for (i = 0; i < 0xFF; ++i) {

do_something();

}

/* Following example shows how to break a long expression. */

for (uint8_t i = 0, uint8_t ii = 0, uint8_t iii = 0;

(i < LIMIT_I) && (ii < LIMIT_II) && (iii == LIMIT_III);

++i, ++ii, ++iii) {

do_something();

}

ポインターの宣言の際は、変数にスター (*) をリンクします。

• 開始の中括弧はラインの終わりに置かれ、括弧式の直後にきます。• 終了の中括弧はラインの先頭に置かれ、本体の後ろにきます。• 同じステートメントの継続(continuation ) ( 例えば、 'else' または 'else if' ステートメント , または do/while

ステートメントの中の 'while') は中括弧の終了として同じラインに置かれます。• 本体は廻りのコードよりさらに1レベル字下げされます。• 'if', 'else', 'do', 'while' そして 'switch' キーワードの後にスペースが来ます。

日本語版参考資料

14 Atmel AVR4030

5.14.2 Rationale

5.15 “Switch Case” statement

5.15.1 Example switch (byte_cnt) {

case 0:

...

break;

case 1:

case 2:

...

break;

default:

...

}

5.16 Preprocessor directives

5.16.1 Example #if (UART_CONF == UART_SYNC)

# define INIT_CON (UART_EN | UART_SYNC | UART_PAUSE)

#elif (UART_CONF == UART_ASYNC)

# define INIT_CON (UART_EN | UART_ASYNC)

#elif (UART_CONF==UART_PCM)

# define INIT_CON (UART_EN | UART_PCM | UART_NO_HOLE)

#else

# error Unknown UART configuration

#endif

これは標準的な K&R スタイルです。それは読み易くそしてスペースの面で効率的です。中括弧を別のラインに置くことは読み易さの点では貢献しませんが、しかし、 多くの余分な縦のスペースを使うことになるかもしれません。字下げは、そのボディが他から外見上分離されるようにします。

• Switch ブロックは他の複文(compound) ステートメントと同じ規則に従います。• case ラベルは switch キーワードと同じ字下げレベルに置きます。• break は各ラベル内のコードと同じ字下げレベルに置きます。•各ラベル内のコードは字下げされます。

• # オペレーターは常にラインの先頭に置かなければなりません。• この命令 (directives) は(必要であれば)# の後に字下げされます。

日本語版参考資料

Atmel AVR4030

15

5.17 Header files

5.17.1 Include of header files

#include <compiler.h>

#include “adc.h”

5.17.2 Header files guard

#ifndef ADC_H_INCLUDED

#define ADC_H_INCLUDED

#endif // ADC_H_INCLUDED

ヘッダーファイルを取り込むとき、現ファイルパス (current file’ s path) との相対で取り込まれるファイルには “” を使用し、インクルードパス (include path) との相対で取り込まれるファイルには <> を使用します。本質的には、その ASF モジュール自身から取り込まれるファイルに対しては “” を、一方、他の ASF モジュールから取り込まれるファイルに対しては <> を使用することを意味しています。例えば、adc.c においては、然るべく取り込むことができます :

インクルードガード (Include guards) は多重インクルードの問題を避ける為に使用されます。インクルードガードを有するモジュールヘッダーファイルは、MODULE_H_INCLUDED の形式を持たなければなりません。例えば ,  adc.h では :

日本語版参考資料

16 Atmel AVR4030

6 Design style

6.1 Module file name and placement

6.1.1 Exception

6.1.2 Examples

6.1.2.1 Location of a driver

{avr32, common, ...}/drivers/<module>/<module>.{c h}

avr32/drivers/gpio/gpio.c

6.1.2.2 Location of an architecture specific service

{avr32, xmega, ...}/services/<module>/<module>.{c h}

common/services/delay/delay.c

6.1.2.3 Location of an common service with architecture specific parts

common/services/<module>/<module>.{c h}

common/services/<module>/<arch>/<arch_module>.{c h}

common/services/clock/sysclk.h

common/services/clock/xmega/xmega_sysclk.h

6.1.2.4 Location of a component

{avr32, common, ...}/components/<module>/<module>.{c h}

avr32/components/touch/resistive_touch.c

6.1.2.5 Exception when having a sub-structure in a driver

avr32/drivers/usbb/usbb_device.c

avr32/drivers/usbb/usbb_host.c

avr32/drivers/usbb/usbb_otg.c

• モジュールファイル名はモジュール名それ自身と同じであるべきです。• ファイルはモジュールにちなんで命名されたディレクトリー内にグループ化されるべきです。• モジュールディレクトリーは、ディレクトリー構造定義により定められたとおり ASF 内で適切に配置さ

れるべきです。• 新たに top-level のディレクトリーは作成すべきではありません。• 共通モジュール (common module) は common/ directory の中に、また、アーキテクチャー特定のモジュー

ルは適切なアーキテクチャーディレクトリーに置かれるべきです。o 共通モジュールのアーキテクチャー部分は共通モジュールと一緒にグループ化されるべきです。

上記のルールが常に道理にかなうわけではなく、むしろ直接的な解決を妨げる場合もあります。従って、ASF の maintainers が派生を承認する限り、上記のルールを緩和することが可能です。特定のファイルに加えて、conf_*.h, メインアプリケーションファイル , 他はこのルールからの派生が許されています。

日本語版参考資料

Atmel AVR4030

17

6.2 Common application programming interface

6.2.1 Shared services

6.2.2 Shared components

6.2.3 Shared code utilities

6.3 Similar application programming interface

6.3.1 Examples

6.3.1.1 Initialization

Atmel ASF はアーキテクチャー間で共有されるいくつかのサービスやコンポーネントを提供しますが、ドライバーでの共有インタフェースは提供しません。 さらに、top level board.h は , utils/directory 内のコードユーティリティの共通パーツと伴に全てのアーキテクチャー間で共有されます。

全ての共有サービスは common/services/ directory に置かれています。これらの共通サービスは全てのアーキテクチャーに対して同一のインタフェースを有します。

共有されるコンポーネントは common/components/ directory に置かれ、通常、Atmel DataFlash のように、外部デバイスへ共通インタフェースを追加するためにこれらのサービスを使用します。

共有ユーティリティは common/utils/ directory に置かれ、全てのアーキテクチャーに対して同一のインタフェースを有します。 典型的な共有ユーティリティは割り込みコントロールや standard input/output (stdio) モジュールです。

理想的には、全てのモジュールはアーキテクチャー間で同一の API を有するべきですが、常にこれが可能または適応できるという訳ではないので、各モジュールは similar API を求めるべきです。 さらに、上記のレイヤは、適切な時は sub-modules を結びつけることができます。 各種アーキテクチャー間で共有されるモジュールに対しては、開発者は互換性のあるインタフェースをできるだけ求めるべきです。 ここで互換性のあるとは適度な量の glue code ( 少しでも必要であれば ) で共有できるインタフェースのことです。共有 API(shared API) の代わりに類似 API(similar API) を行うのはいくつかの理由があります:

• flash と RAM の footprint 削減• 消費電力低減• 性能改善• 機能サポート改善

ある状態では類似 API(similar API) は全く道理にかなわないかもしれず、その場合は、アーキテクチャー特定モジュールが実装できます。これは、異なるアーキテクチャーはさまざまなアプリケーションセグメントをターゲットにしていることから正当化されます。マルチメディアプレイヤーとインタフェースをとり圧縮された音楽のデコードを行う Atmel tinyAVR® を見つけることは期待できません。

以下の例では、hardware drivers または communication services のような、新しいモジュールに使用される典型的なガイドラインを示します。

モジュールを初期化する為の推奨方法の例を以下に示します;もし、類似 API(similar API) 方法が適用されるならばパラメータはアーキテクチャー間で異なるかもしれません。

日本語版参考資料

18 Atmel AVR4030

<module>_init(...)

adc_init(adc_t *adc, adc_options_t *options)

6.3.1.2 Enable

<module>_enable(...)

adc_enable(adc_t *adc)

6.3.1.3 Disable

<module>_disable(...)

adc_disable(adc_t *adc)

6.3.1.4 Start

<module>_start(...)

adc_start(adc_t *adc)

6.3.1.5 Stop

<module>_stop(...)

adc_stop(adc_t *adc)

6.3.1.6 Write

<module>_write(...)

adc_write(adc_t *adc, uint16_t value)

6.3.1.7 Read

<module>_read(...)

adc_read(adc_t *adc, uint16_t *value)

6.4 Documentation

モジュールを起動する為の推奨方法の例を以下に示します;もし、類似 API(similar API) 方法が適用されるならばパラメータはアーキテクチャー間で異なるかもしれません。

モジュールを無効にする為の推奨方法の例を以下に示します;もし、類似 API(similar API) 方法が適用されるならばパラメータはアーキテクチャー間で異なるかもしれません。

モジュールをスタートする為の推奨方法の例を以下に示します;もし、類似 API(similar API) 方法が適用されるならばパラメータはアーキテクチャー間で異なるかもしれません。

モジュールを停止する為の推奨方法の例を以下に示します;もし、類似 API(similar API) 方法が適用されるならばパラメータはアーキテクチャー間で異なるかもしれません。

モジュールにデータを書き込む為の推奨方法の例を以下に示します;もし、類似 API(similar API) 方法が適用されるならばパラメータはアーキテクチャー間で異なるかもしれません。

モジュールからデータを読み出す為の推奨方法の例を以下に示します;もし、類似 API(similar API) 方法が適用されるならばパラメータはアーキテクチャー間で異なるかもしれません。

Atmel Software Framework は Doxygen ドキュメンテーションツールで読めるインラインドキュメンテーション形式をベースにしています。オープンソースプロジェクト Doxygen の詳細は、http://www.doxygen.org/ を参照してください。Doxygen はソースコード内のコメントブロックをインプットのベースとして、インプットファイルの /** や //! をトリガーにして呼び出されます。全てのソースコードファイルは Atmel Corporation application note license text を記載しなければなりません。それに加えて、そのファイルが何に関してのものかの情報を示す必要があります。

日本語版参考資料

Atmel AVR4030

19

• For example, created in 2008: Copyright (C) 2008 Atmel Corporation. All rights reserved.

• For example, created and changed in 2008: Copyright (C) 2008 Atmel Corporation. All rights reserved.

• For example, created in 2008, changed in 2009: Copyright (C) 2008 - 2009 Atmel Corporation. All rights reserved.

• For example, created in 2008, changed in 2010: Copyright (C) 2008 - 2010 Atmel Corporation. All rights reserved.

• For example, created in 2006, changed in 2009, 2010, and 2012: Copyright (C) 2006 - 2012 Atmel Corporation. All rights reserved.

6.4.1 Examples

6.4.1.1 Doxygen documentation opening tag for multi line comments

/** * <documentation> */

6.4.1.2 Doxygen documentation opening tag for single line comments

//! <documentation>

6.4.1.3 File documentation

/** * \file * * \brief AVR XMEGA Direct Memory Access Controller driver * * Copyright (C) 2011 Atmel Corporation. All rights reserved. * * \page License * * <Atmel Corporation application note license> */

6.4.1.4 Making a Doxygen group

/** * \defgroup sensible_group_name My module (ABBREVIATED) * * This is some contents that will show up within this group. */

注:既存のリリースされたソフトウエアソフトウェアに対しては年号のフィールドはそのファイルが生成された年から開始し、そのファイルが最後に更新された年までを記入します。

生成されたドキュメンテーションにおいて洗練された出力を提供する為に、ドキュメンテーションをモジュールに分類することが推奨されます。 これは Doxygen タグ \defgroup と \ingroup によってなされます。また、Doxygen は生成されたドキュメンテーションのコンテンツやレイアウトを改善するための多くの機能を提供します、さらに詳細を入手するために Doxygen ウエブサイトに行きドキュメンテーションをブラウズしてください。

日本語版参考資料

20 Atmel AVR4030

6.4.1.5 Adding contents to a documentation group

/** * \ingroup sensible_group_name * * The contents written here will be merged with the contents * written in the previously mentioned Doxygen tag. This makes it * possible to split out the documentation between several files. */

6.5 Quick Start guides

6.5.1 Examples

ASF 内のドライバーは API ドキュメンテーションの一部として quick start guides を有しています。そこでは、ステップ バイ ステップ形式で、セットアップに必要なコードやアクション、さらに1回またそれ以上の使用事例におけるドライバー使用を示して説明しています。この quick start guides での doxygen コードは、混乱を避ける為、API ファイルの最後の部分に置かれています。API ドキュメンテーションの中で、この quick start guides は、記述の最初にリンクを示して、そして特定のセクションを示すことで簡単にアクセスできるように作成されています。最も基本的な使用事例が quick start guide の最初のページに示されており、一方で、さらに上級の使用事例が各サブページに示されています。 上級の使用事例のリンクのリストが quick start guide のメインページの下側に示されており、簡単な説明がそれぞれ付与されています。各使用事例に対して詳細が最初に示されます。それから、二つのセクションでその使用事例におけるセットアップ方法 ( “Setup steps” ) と ドライバー使用方法 ( “Usage steps” ) について説明しています。 これらのセクションは以下のサブセクションから成っています:

1. “必要条件”(“Prerequisites”、optional): 使用事例に対する必要条件のリスト - 通常は “Setup steps” セクションの中でのみ必要です。 その使用事例は例えばプロジェクトにマニュアルで加えなければならない secondary driver に依存しているかもしれません、例えば、ADC ベースの割り込みの使用事例は interrupt management driver を必要とするでしょう。

2. “Example code” : その使用事例においてセットアップや各ドライバー使用に必要な complete code です。その example code は必要条件 (prerequisites) が所定場所に有る限り、そのまま変更せずに動作するはずです。

3. “Workflow” : コード構築の為に従うべきステップで、番号付けされたリストとして示され、そこの各ステップは手本とする為の断片コードまたは実行するためのアクションであることを特徴としています。関連するコードはステップの中で繰り返され、そのガイドを読み易くしています。 また、そのステップは追加のノートや注意ポイントを有しているかもしれません、例えばユーザーが気づくべき重要な点の詳細または説明です。

以下のサブセクションでは quick start guide を規定する doxygen コードの例を示します。セクションの “Setup steps” と “Usage steps” は同じ方法で規定されているので、規定されるコードは前のセクションのみに示されています - 単にコードをコピーして他のセクションで setup を usage に置き換えてください。

日本語版参考資料

Atmel AVR4030

21

6.5.1.1 Linking to quick start guide in API documentation

/**

* \defgroup some_group Some Module (SM)

*

* See \ref some_quickstart.

*

* This is a driver for the Some Module. It provides functions for

6.5.1.2 Main quick start guide page definition

/**

* \page some_quickstart Quick start guide for Some Module driver

*

* This is the quick start guide for the \ref some_group "Some Module driver",

* with step-by-step instructions on how to configure and use the driver in a

* selection of use cases.

*

* The use cases contain several code fragments. The code fragments in the

* steps for setup can be copied into a custom initialization function, while

* the steps for usage can be copied into, e.g., the main application function.

*

6.5.1.3 Presenting basic use case

* \section some_basic_use_case Basic use case

* In this basic use case, the SM is configured for:

* - some config detail

* - a second config detail

*

6.5.1.4 Opening a section for use case steps

* \section some_basic_use_case_setup Setup steps

6.5.1.5 Presenting use case prerequisites (optional)

* \subsection some_basic_use_case_setup_prereq Prerequisites

* For the setup code of this use case to work, the following must

* be added to the project:

* -# Another Module (AM) driver

日本語版参考資料

22 Atmel AVR4030

6.5.1.6 Presenting use case code

* \subsection some_basic_use_case_setup_code Example code

* Content of conf_sm.h:

* \code

* #define CONFIG_SM_SOME_FEATURE

* \endcode

*

* Add to application C-file:

* \code

* void some_init(void)

* {

* do_one_thing();

* do_something_else();

* …

* }

* \endcode

6.5.1.7 Presenting use case workflow

* \subsection some_basic_use_case_setup_flow Workflow

* -# Ensure that conf_sm.h is present and contains configuration symbol for some feature:

* - \code #define CONFIG_SM_SOME_FEATURE \endcode

* - \note This configuration file is used by the driver and

* should not be included by the user.

* -# Enable some feature:

* - \code do_one_thing(); \endcode

* - \note This is a detail that the user may find helpful or

* interesting.

* -# Do that other thing:

* - \code do_something_else();

* … \endcode

* - \attention This is a detail that the user should be aware of

* to avoid disaster or common mistakes.

6.5.1.8 Listing advanced use cases

* \section some_use_cases Advanced use cases

* For more advanced use of the SM driver, see the following use cases:

* - \subpage some_use_case_1: list of emphasized features

*/

6.5.1.9 Advanced use case page definition and presentation

/**

* \page some_use_case_1 Use case #1

日本語版参考資料

Atmel AVR4030

23

* In this use case, the SM is configured for:

* - first detail

* - some other detail

6.6 API symbol definitions

6.6.1 Example

#define OSC_MODE_EXTERNAL AVR32_PM_OSCCTRL0_MODE_EXT_CLOCK

#define OSC_MODE_EXTERNAL 0x01234567

6.7 Hardware driver clock management

6.8 Hardware driver sleep management

6.9 Configuration Header File

API symbols を使用するのは結構ですが、それらには toolchain で提供される対応した値を与えてください。

API defines を宣言するための好ましい方法 :

API defines を宣言するために正当でない方法 , 可能な時は避ける :

クロックモジュールは初期化中は殆どの必要でないモジュールへのクロックを無効とします。例えば、Atmel AVR XMEGA デバイスでは全ての PR ビットがセットされることを意味します。従って、ドライバーはそのハードウェアモジュールがそれらとインタフェースする前にクロック供給されていることを確かめる必要があります。 そこで、ドライバーモジュールの為の周辺クロックを有効にするか無効にするかのclock service をドライバーが使用することが好ましいことになります。 その clock service を使うことが可能でないモジュールでは、もちろん、ハードウェアレジスタに直接働きかけることが許容されます。その clock service は、実装とドキュメンテーションの両方が common/services/clock ディレクトリーに有ります。対象となるモジュール関数は sysclk_ を先頭に付けます。

全てのハードウェアドライバーは、現在の活動に対してどのスリープレベルが適当かの観点で sleep manager を更新する必要があります。 各ロックされたスリープモードはそれに対応する unlock call を持っていることが重要です。その sleep manager に関する詳細は common/services/sleepmgr/ ディレクトリーを参照してください、そのモジュール関数は sleepmgr_ を先頭に付けます。

コンパイル時間が設定可能なモジュールに対しては、コンフィグレーションは専用のヘッダーファイルから取り出せる必要があります。モジュールに対するヘッダーファイルは conf_<module>.h の名前を持つ必要があります。全ての取りうるオプションを有するテンプレート コンフィグレーション ヘッダー ファイルは利用できるように作成する必要があり、もしサポートされたデバイスに対するプロジェクト テンプレート モジュールに追加されても build を break しないようにデフォルト値で満たします。

日本語版参考資料

24 Atmel AVR4030

6.10 Hardware driver interrupt level

6.10.1 Examples CONFIG_DMA_INTLVL PMIC_LVL_LOW

CONFIG_USART_DRE_INTLVL PMIC_LVL_MEDIUM

CONFIG_USART_RXC_INTLVL PMIC_LVL_HIGH

ドライバーで使用される割り込みハンドラーは、可能な限り、設定可能な割り込みレベルを有する必要があります。割り込みレベルの設定はそのモジュールのコンフィグレーション ヘッダーファイルを通して実行される必要があります。他のコンフィグレーション オプションとして、そのドライバーはデフォルト値として、もし何も提供されていないならば、良識ある値を定義する必要があります。コンフィグレーション シンボルは CONFIG_<MODULE>_INTLVL 形式である必要があります。 もし、さらに特定の割り込みコンフィグレーションが求められるときは、CONFIG_<MODULE>_<SOURCE>_INTLVL のように表します。

日本語版参考資料

Atmel AVR4030

25

7 Table of contents Features............................................................................................... 1 1 Introduction ...................................................................................... 1 2 Software installation and setup ...................................................... 2

2.1 Downloading........................................................................................................2 2.2 Online API Documentation .................................................................................. 2 2.3 Release notes......................................................................................................2 2.4 Bug tracker ..........................................................................................................2 2.5 Getting started..................................................................................................... 2

3 ASF directory structure................................................................... 3 3.1 Architecture and common directory structure ..................................................... 4

3.1.1 applications/ .............................................................................................................. 4 3.1.2 boards/ ...................................................................................................................... 4 3.1.3 components/.............................................................................................................. 4 3.1.4 drivers/....................................................................................................................... 4 3.1.5 services/ .................................................................................................................... 4 3.1.6 utils/ ........................................................................................................................... 4

3.2 Third party directory structure ............................................................................. 4 4 Compiler support ............................................................................. 6

4.1 Atmel Studio 6 .....................................................................................................6 4.2 GNU compiler collection...................................................................................... 6 4.3 IAR Embedded Workbench................................................................................. 6 4.4 Toolchain header files ......................................................................................... 6

4.4.1 Bug reporting............................................................................................................. 6 4.4.2 Update of header files ............................................................................................... 7

5 Code style......................................................................................... 8 5.1 General naming rules .......................................................................................... 8 5.2 Function and variable names .............................................................................. 8

5.2.1 Example .................................................................................................................... 8 5.2.2 Rationale ................................................................................................................... 8

5.3 Constants ............................................................................................................8 5.3.1 Examples................................................................................................................... 8 5.3.2 Rationale ................................................................................................................... 9

5.4 Type definitions ................................................................................................... 9 5.4.1 Example .................................................................................................................... 9

5.5 Structures and unions ......................................................................................... 9 5.5.1 Examples................................................................................................................... 9

5.6 Function like macro .............................................................................................9 5.6.1 Example .................................................................................................................. 10 5.6.2 Rationale ................................................................................................................. 10

日本語版参考資料

26 Atmel AVR4030

5.7 Indentation.........................................................................................................10

5.7.1 Example .................................................................................................................. 10 5.7.2 Rationale ................................................................................................................. 10

5.8 Text formatting................................................................................................... 11 5.8.1 Example .................................................................................................................. 11 5.8.2 Rationale ................................................................................................................. 11

5.9 Space ................................................................................................................11 5.9.1 Example .................................................................................................................. 11

5.10 Continuation ....................................................................................................12 5.10.1 Example ................................................................................................................ 12 5.10.2 Rationale ............................................................................................................... 12

5.11 Comments .......................................................................................................12 5.12 Braces .............................................................................................................12

5.12.1 Examples............................................................................................................... 12 5.13 Pointer declaration .......................................................................................... 13

5.13.1 Example ................................................................................................................ 13 5.14 Compound statements .................................................................................... 13

5.14.1 Examples............................................................................................................... 13 5.14.2 Rationale ............................................................................................................... 14

5.15 “Switch Case” statement ................................................................................. 14 5.15.1 Example ................................................................................................................ 14

5.16 Preprocessor directives...................................................................................14 5.16.1 Example ................................................................................................................ 14

5.17 Header files .....................................................................................................15 5.17.1 Include of header files ........................................................................................... 15 5.17.2 Header files guard ................................................................................................. 15

6 Design style.................................................................................... 16 6.1 Module file name and placement ...................................................................... 16

6.1.1 Exception................................................................................................................. 16 6.1.2 Examples................................................................................................................. 16

6.2 Common application programming interface ....................................................17 6.2.1 Shared services....................................................................................................... 17 6.2.2 Shared components ................................................................................................ 17 6.2.3 Shared code utilities ................................................................................................ 17

6.3 Similar application programming interface ........................................................ 17 6.3.1 Examples................................................................................................................. 17

6.4 Documentation ..................................................................................................18 6.4.1 Examples................................................................................................................. 19

6.5 Quick Start guides ............................................................................................. 20 6.5.1 Examples................................................................................................................. 20

6.6 API symbol definitions ....................................................................................... 23 6.6.1 Example .................................................................................................................. 23

6.7 Hardware driver clock management.................................................................. 23 6.8 Hardware driver sleep management ................................................................. 23

日本語版参考資料

Atmel AVR4030

27

6.9 Configuration Header File .................................................................................23 6.10 Hardware driver interrupt level ........................................................................ 24

6.10.1 Examples............................................................................................................... 24 7 Table of contents ........................................................................... 25

8432B-AVR-03/12

Atmel Corporation 2325 Orchard Parkway San Jose, CA 95131 USA Tel: (+1)(408) 441-0311 Fax: (+1)(408) 487-2600 www.atmel.com

Atmel Asia Limited Unit 01-5 & 16, 19F BEA Tower, Milennium City 5 418 Kwun Tong Road Kwun Tong, Kowloon HONG KONG Tel: (+852) 2245-6100 Fax: (+852) 2722-1369

Atmel Munich GmbH Business Campus Parkring 4 D-85748 Garching b. Munich GERMANY Tel: (+49) 89-31970-0 Fax: (+49) 89-3194621

Atmel Japan 16F, Shin Osaki Kangyo Bldg. 1-6-4 Osaki Shinagawa-ku Tokyo 104-0032 JAPAN Tel: (+81) 3-6417-0300 Fax: (+81) 3-6417-0370

© 2012 Atmel Corporation. All rights reserved.

Atmel® , Atmel logo and combinations thereof, AVR® , AVR Studio ® , DataFlash ® , megaAVR ® , tinyAVR ® , XMEGA ® , and others are registered trademarks or trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be trademarks of others. Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or imp lied, by estoppel or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN THE ATMEL TERMS AND CONDITIONS OF SALES LOCATED ON THE ATMEL WEBSITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS AND PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive applications. Atmel products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.

20130529-01mcm

〒154-8539 東京都世田谷区三軒茶屋 2-11-22 サンタワーズセンタービル      TE L 03 (3487) 8502 / FAX 03 (3487) 8825  

関西営業所本 社〒540-6313 大阪府大阪市中央区城見 1-3-7 松下IMPビル13階 TE L 06 (6949) 2651 / FAX 06 (6949) 2652

http://www.mcm.co.jp/

■本カタログの掲載内容は、予告無しに変更されることがありますので、弊社営業窓口までお問い合わせください。■記載の社名、およびロゴは、各社の商標または登録商標です。無断転載を禁じます。