Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
クラス B アプリケーションで拡張コア PIC16F1XXX のハードウェアまたはソフトウェア CRC を使う方法
AN1817
注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジナルの英語版をご参照願います。
1.0 はじめに
安全が重視されるアプリケーションでフォルトを検出するためにマイクロコントローラでクラスB安全規格ライブラリ ルーチンを使う機会が増えています。マイクロコントローラのプログラムメモリのフォルトは、主に IEC 60730規格で定義された巡回冗長検査 (CRC)を使って検出します。
CRC を使って周期的なチェックを実行する事により、プログラムメモリの破損によるアプリケーションフォルトを防止できます。
本書では、クラス B 安全規格ソフトウェア ライブラリに含まれるソフトウェアCRCと一部のマイクロコントローラ ( 本書で取り上げるのは PIC16F161X ファミリ )が内蔵するハードウェア CRC を実装する方法について説明します。
本書で紹介するどちらの方法も IEC 60730 規格H.2.19.3.2 の要件を満たしており、不変メモリのテストで全ての1ビットフォルトを99.6%の網羅率で検出できます。
クラス B の詳細と完全なサンプルコードについては、下記 URL を参照してください。
www.microchip.com/classb
CRCアルゴリズムの詳細は『A Painless Guide on CRCAlgorithms』(Ross N. Williams 著、1993 年 8 月 19 日 )を参照してください。
1.1 巡回冗長検査 (CRC)
CRC は多項式の長除法に似た計算方法を使い、多項式の長除法での剰余にあたるチェック値を求めます。除数には CRC 多項式と呼ばれるものを使います。CRC 多項式には、個々のデータストリームでエラーを最大限検出できるような多項式を選びます。本書では、図 2 に示す CRC-16-ANSI を CRC 多項式として使います。これ以外の有名な CRC アルゴリズムとして、CRC-16-CCITT があります。このアルゴリズムは主に通信用 CRC として使います。
チェック値をクラス B アプリケーションで使う場合、最初に CRC を実行し、その後周期的に CRC を実行してチェック値が変化しない事を確認します。
1.2 CRC の実装
CRC の一般的な実装方法にはいくつか種類があります。CRC のハードウェア実装として最も一般的なのは線形帰還シフトレジスタ (LFSR) です。CRC-16-ANSIの LFSR を図 2 に示します。この実装では CRC アルゴリズムに応じた適切な位置にXORゲートを配置し、データストリームを CRC に入力します。
CRC のソフトウェア実装にはテーブルを使う方法が一般的です。しかしこの手法は多くのメモリを使うため、メモリ容量の小さい PIC16 では効率が良くありません。クラス B 安全規格ソフトウェア ライブラリでは、ソフトウェア CRC を実行するのに並列計算法を使っています。これは、複数形態のパリティによって決まるビットに対して XOR を選択的に実行します。
1.3 CRC エラー検出
CRC 計算に使う多項式は、なるべく多くのビットエラーを検出できるものを選びます。CRC-16-CCITT やCRC-16-ANSI 等の一般的な CRC 多項式は、エラー検出の網羅率が最大となるように設計されています。これらの多項式は 1 ビットエラー、2 ビットエラー、奇数ビットエラー、バーストエラーを全て検出できるように設計されています。
これら以外のエラーに対する有効性についてはまだ結論が出ておらず、本稿では取り上げません。
1.4 CRC の用語
• 多項式 – CRC アルゴリズムで使う除数です。CRCは主に多項式の違いで区別します。
• 初期値 – CRC 計算を開始する値です。エラーを最大限に検出できるようにするため、ほとんどの CRCアルゴリズムには定義済みの初期値があります。
• ゼロ付加 – データシーケンスの末尾にゼロを付加して CRC 計算を行います。
• エンディアン – CRC 計算式に入力するビット順を決定します。MSb ファーストと LSb ファーストがあります。
• チェック値 – CRC 計算で求める値で、チェックサムまたは剰余とも呼びます。
著者 : Corey SimoncicMicrochip Technology Inc.
2015 Microchip Technology Inc. DS00001817A_JP - p.1
AN1817
1.5 クラス B で使う CRC
本書ではCRCで使う用語を以下のように定義します。
• 多項式 : CRC-16-ANSI• 初期値 : 0xFFFF• ゼロ付加 : 使う• エンディアン : MSb ファースト
1.6 クラス B 組み込みアプリケーションでの CRC の利用
PIC16F1613 等を使った組み込みアプリケーションのプログラムメモリを検査する方法として、CRC は高い精度と信頼性を備えます。
図 1 に、代表的なアプリケーションで CRC( およびその他のクラス B テスト ) を使う場合の基本フローを示します。本書と一緒に提供している CRC 計算コードを使ってチェックサムを計算し、デバイスに書き込みます。チェック値はプログラムメモリの最後の 2 つのアドレスに書き込みます。CRC を計算するたびに、このチェック値と比較します。
図 1: クラス B フローチャート
図 2: CRC LFSR
CRC entire Memory Range except last 2
words(1)
Is Check Value
Correct?
No
Yes
CLASS B Start-up Tests
Application Initialization
Is Check Value
Correct?
No
Yes
CLASS B Periodic Tests
Error:Set Application
in controlled state and set appropriate error flags
Application Main Loop
CRC entire Memory Range except last 2
words(1)
Note 1: 最後の2つのアドレスにチェック値を格
納します。
Data in
b0b1b2b3b4b5b6b7b8b9b10b11b12b13b14b15
Linear Feedback Shift Register for CRC-16-ANSI
x16 + x15 + x2 + 1
b0b1b2b3b4b5b6b7b8b9b10b11b12b13b14b15
Data inAugmentation Mode OFF
Augmentation Mode ON
DS00001817A_JP - p.2 2015 Microchip Technology Inc.
AN1817
2.0 クラス B アプリケーションでのCRC モジュールの使い方
PIC16F161X ファミリはハードウェア CRC モジュールを内蔵しています。このセクションでは、クラス BアプリケーションでCRCモジュールを使う方法を、サンプルコードを示しながら手順を追って説明します。
PIC16F161X の CRC モジュールはメモリスキャナを備えています。このメモリスキャナを使うと、デバイスのフラッシュ プログラムメモリから CRC モジュールに直接データを書き込めます。
PIC16F1613 のハードウェア CRC を使うには、まずCRC とメモリスキャナのレジスタを設定する必要があります。詳細は PIC16F1613 のデータシート(DS40001737)、セクション 11.0 を参照してください。
2.1 CRC モジュールの設定
CRC-16 の多項式 :
CRCXORH = 0b10000000;
CRCXORL = 0b00000101;
最上位ビットは必ず「1」であるため、モジュールが自動的に実装します。
初期値 :
CRCACCH = 0b11111111;
CRCACCL = 0b11111111;
ゼロ付加有効 :
CRCCON0bits.ACCM = 1;
エンディアン (MSb から順にシフト ):
CRCCON0bits.SHIFTM = 0;
この CRC モジュールは、多項式の種類とデータストリングの長さを幅広くサポートする柔軟な設計を採用しています。このため、CRC モジュールで使う多項式の長さとデータ長を設定しておく必要があります。
多項式の長さが 16 ビット :
CRCCON1bits.PLEN = 0b1111;
データ長が 16 ビット :
CRCCON1bits.DLEN = 0b1111;
Note: PIC16F1613 のプログラムメモリの実際のデータ長は 14 ビットです。ここで 16ビットの長さを選択しているのは、チェック値をCRCカリキュレータおよびソフトウェアCRCと比較できるようにするためです。このため、プログラムメモリの各ワードに 0を 2つ追加して 16ビットワードとしています。詳細は例 1 を参照してください。
2015 Microchip Technology Inc. DS00001817A_JP - p.3
AN1817
2.2 メモリスキャナの設定
CRC は安全が重視されるタスクであるため、メモリスキャナはバーストモードで使います。つまり、CRC 実行中はCPUの全機能が停止します。例えば8 MHz FOSC
の場合、メモリパネル全体 (2000 プログラムワード ) に対して CRC を実行すると 4.086 ms の間 CPU が停止します。
バーストモード :
SCANCON0bits.MODE = 0b01;
4.086 ms が長過ぎる場合、以下のスキャナ制御ビットをセットすると割り込み中はスキャナが停止します。こうすると、安全に関連する重要な割り込みを処理できます。
オプションの割り込みサービス :
SCANCON0bits.INTM = 1;
メモリスキャナ設定の最後は、開始アドレスと終了アドレスを設定します。SCANLADRH:L レジスタペアがスキャン開始アドレスを格納します。SCANHADRH:Lレジスタペアがスキャン終了アドレスを格納します。スキャン中、SCANLADR レジスタペアがインクリメントして現在取得中のアドレスを示します。例 1 では、最後の 2 つのアドレスに計算で求めたチェック値を格納しています。
開始アドレス :
SCANLADRH = 0x00;
SCANLADRL = 0xFD;
終了アドレス :
SCANHADRH = 0x07;
SCANHADRL = 0xFB;
例 1: CRC モジュールのコード
uint16_t HWCRC (uint16_t lastAddress){ uint16_t HWCRCresult;
CRCACCL = 0xFF; //Seed with 0xFFFF CRCACCH = 0xFF; CRCXORH = 0x80; //using CRC-16-ANSI 0x8005 CRCXORL = 0x05; CRCCON1bits.DLEN = 15; //using 16 bit data length to match the Software CRC //the most-significant 2 bits will be treated as 0. CRCCON1bits.PLEN = 15; //using the maximum 17-bit polynomial (-2) CRCCON0bits.ACCM = 1; //turn on augmented zeros CRCCON0bits.SHIFTM = 0; //MSb-first (normal) SCANCON0bits.MODE = 0b01; //turn on "Burst mode" to stop all //other execution until CRC complete SCANLADRH = 0x00; //set the first address for memory scan SCANLADRL = 0x00; SCANHADRH = lastAddress >> 8; //set the last address for memory scan SCANHADRL = lastAddress; SCANCON0bits.EN = 1; CRCCON0bits.EN = 1; CRCCON0bits.CRCGO = 1; //Turn on the CRC SCANCON0bits.SCANGO = 1; //Turn on the scan to begin the CRC //This should halt CPU Execution until the Scanner is complete and the final //memory location is in the CRC
while(CRCCON0bits.BUSY);
HWCRCresult = ((CRCACCH<<8) | CRCACCL); return HWCRCresult;
}
DS00001817A_JP - p.4 2015 Microchip Technology Inc.
AN1817
2.3 CRC の実行
以上で、CRC とスキャナの両方が指定メモリ領域に対して CRC-16-ANSI アルゴリズムを実行できるように設定しました。次に CRC およびスキャナ モジュールを有効にします。
まず CRCGO ビットをセットして CRC を開始し、次に SCANGO ビットをセットします。スキャナがバーストモードに設定されているため、CPU は通常のコード実行を停止します ( ただし前述のように割り込みを有効にした場合を除く )。
CPU は約 4.086 ms の間シャットダウンします。CRCの動作が完了するとCRCCON0レジスタのBUSYビットがハードウェアによってクリアされます。このビットがクリアされていれば最終的なチェック値がCRCACCH:L レジスタペアに格納されています。
2.4 CRC モジュールのタイミング
CRC モジュールのタイミングは、データ幅、FOSC、スキャン対象のアドレスの数で異なります。
16 ビットデータ幅の場合、CRC はプログラムメモリ1 ワードのテストに 4 命令サイクルを必要とします。フラッシュメモリの2046アドレスをテストする場合、2046*4 命令サイクルに加え、呼び出しとリターンのための命令もいくつか必要です。
本書の例では、8 MHz で 8211 命令サイクルを必要とし、4 ms 強かかります。このタイミングは、デバイス内蔵の信号計測タイマ (SMT) を使って求めました。
SMT を使って CRC またはその他のモジュールのタイミングを取得する方法は補遺 B: 「SMT のタイミング」を参照してください。
2015 Microchip Technology Inc. DS00001817A_JP - p.5
AN1817
3.0 CRC カリキュレータ
本書では、複数の多項式および CRC モジュールの全機能をサポートした使いやすい CRC カリキュレータも取り上げます。このツールを使って、CRC モジュールとクラスB安全規格ソフトウェア ライブラリによるCRC 計算結果を検証します。
3.1 特長
このCRCカリキュレータはCRCモジュールの全機能を備えています。複数の多項式をサポートし、ゼロ付加モードとエンディアンを変更できる他、オプションでデータとアキュムレータの幅も設定できます。CRCカリキュレータにデータを入力する方法は 2 通りあり
ます。1 つは右側の [Data] 列にデータを手入力する方法です。もう 1 つは、MPLAB X IDE 等から 16 進数値ファイルをインポートする方法です (Section 3.3
「MPLAB® X IDE を使ってデータを 入力する」参照 )。
3.2 CRC-16-ANSI 用の設定
CRCカリキュレータをCRC-16-ANSI向けに設定するには、カリキュレータの設定をいくつか既定値から変える必要があります。まず、[Polynomial] プルダウンメニューで「0xC002/0x8005 ANSI-16 16bits」を選択します。次に、[Accumulator] の下の [F] ボタンを押して初期値を 0xFFFFに設定します。最後に [Data Width]を 16 に設定します。その他は既定値のままとします( 図 3 参照 )。
図 3: CRC-16-ANSI 用の CRC カリキュレータの設定
3.3 MPLAB® X IDE を使ってデータを入力する
MPLAB X IDE のプログラムメモリ表示を使うと CRCカリキュレータの [Data] 列に簡単に入力できます。まず MPLAB X IDE でプログラムメモリ表示を開きます( 図 4 参照 )。次に、必要なオペコードを選択し、コピー (Windows の場合は Ctrl+C) します ( 図 5 参照 )。クリップボードにコピーされたオペコードをテキストファイルにペーストします ( 図 6 参照 )。このファイルを保存し、CRC カリキュレータを開いて [File]>[ImportFile] を選択します ( 図 7 参照 )。上で保存したファイルを選択すると、MPLAB X IDE プロジェクトからコピーしたオペコードが [Data] 列に入力されます。
DS00001817A_JP - p.6 2015 Microchip Technology Inc.
AN1817
図 4: プログラムメモリ表示
図 5: プログラムメモリからオペコードをコピー
2015 Microchip Technology Inc. DS00001817A_JP - p.7
AN1817
図 6: オペコードリスト
図 7: ファイルのインポート
DS00001817A_JP - p.8 2015 Microchip Technology Inc.
AN1817
3.4 チェック値の計算
[Data] 列に必要な情報を入力したら、[Accumulate] ボタンをクリックします。すると [Accumulator (hex)] テキストボックスにチェック値が表示されます。[Values] 欄には、CRC を使って計算した総ワード数が表示されます。[Data Entry] セクションの [Accum] 列は、各データワードを CRC に入力した後のアキュムレータの値を表示します。この情報はデバッグ時に便利です ( 図 8 参照 )。
図 8: CRC カリキュレータを使った最終チェック値生成
2015 Microchip Technology Inc. DS00001817A_JP - p.9
AN1817
4.0 クラス B 安全規格ソフトウェア ライブラリの CRC 関数の使い方
このセクションでは、ライブラリからフラッシュ プログラムメモリの CRC 関数を実装する方法について説明します。
クラス B 安全規格ソフトウェア ライブラリは、フラッシュ プログラムメモリと EEPROM をテストするためのソフトウェア実装 CRC 関数を提供しています。
CRC モジュールとは異なり、ソフトウェア CRC はCRC-16-ANSI アルゴリズムのみをサポートします。
クラスB安全規格ソフトウェア ライブラリの使い方はDS00001799 を参照してください。
4.1 API
フラッシュメモリ全体にCRCテストを実行するには、以下の関数を呼び出します。
CLASSB_CRCFlashTest(…);
この関数には 3 つの引数 ( テスト開始アドレス、テスト長、CRC アルゴリズムのシード値 ) があります。
CRC モジュールと同じ動作とするため、引数に以下の値を設定します。
• uint16_t FlashAddress = 0x00
• uint16_t Flashlength = 0x07FC
• uint16_t crcSeed = 0xFFFF
例 2: CRC ライブラリのコード
4.2 ソフトウェア CRC のタイミング
CRC モジュールで 8172 命令サイクルを必要とするメモリ量の場合、ソフトウェア CRC では 216,956 命令サイクルが必要です。これは 108.478 ms に相当します。
Note: テストの長さは、開始アドレスを含む値を指定します。テストの戻り値は 16 ビットのチェック値です。詳細は例 2 を参照してください。
uint16_t flashAddress = 0x00;uint16_t flashLength = 0x07FC;uint16_t crcSeed = 0xFFFF;uint16_t CRC-libraryResult;
CRC_libraryResult = CLASSB_CRCFlashTest(myAddress,length,crcSeed);
DS00001817A_JP - p.10 2015 Microchip Technology Inc.
AN1817
5.0 チェック値を使ったエラーの検出方法
CRC カリキュレータを使うと、参照チェック値をデバイスにプログラミングできます。この参照チェック値を、CRC モジュールまたはクラス B 安全規格ソフトウェア ライブラリの CRC 関数で求めたチェック値と周期的に比較します。これら 2 つの値が一致した場合、プログラムメモリに障害が発生していないと判断できます。これら 2 つの値が一致しなかった場合、メモリが破損した事を意味しており対処が必要です。
校正またはその他のランタイム値がプログラムメモリに格納されていて参照チェック値を使えない場合、2回 CRC を実行して 2 つのチェック値を比較する事もできます。その場合、1 回目のチェック値を PIC® MCUの自己書き込み機能を使ってフラッシュ プログラムメモリまたは SRAM に格納します。
CRC アルゴリズムの性質上、エラー発生箇所は特定できません。アプリケーションに応じて、いくつか対処方法が考えられます。
• エラーフラグをセットして動作を停止する• デバイスをリセット状態に保持する• デバイスを無限ループに移行させてその他全ての動作を停止する
• エラー信号を送信してコンシューマにエラーを通知する
5.1 参照チェック値
CRC カリキュレータを使って求めた参照チェック値(Section 3.0 「CRC カリキュレータ」参照 ) は、プログラミング時にconst変数を使ってプログラムメモリに書き込めます。
例えば、計算で求めた参照チェック値が 0x1234 の場合、以下のように書き込みます。
const uint16_t CRC_checkValue @ 0x7FE =0x1234
これでアドレス 0x7FE に 0x3434、アドレス 0x7FF に0x3412 を書き込みます。MSB に 0x34 が含まれるのは、これが RETLW命令のオペコードであるためです。表 1 にこれを示します。
表 1: プログラムメモリに格納されるチェック値
行番号 アドレス オペコード アセンブリ
2047 7FE 3434 RETLW0x34
2048 7FF 3412 RETLW0x12
2015 Microchip Technology Inc. DS00001817A_JP - p.11
AN1817
次に、この参照チェック値とライブラリまたは CRCモジュールを使って計測したチェック値を比較します( 例 3、例 4 参照 )。
例 3: ライブラリを使って計測したチェック値との比較
例 4: CRC モジュールを使って計測したチェック値との比較
if (CRC_checkValue == CRC_libraryResult)
{
// do nothing, check value matches
}
else
{
ErrorMode();
}
if ((CRC_checkValue >> 8) == CRCACCH)
{
if ((CRC_checkValue & 0x00FF) == CRCACCL)
{
// do nothing, check value matches
}
else
{
ErrorMode();
}
}
else
{
ErrorMode();
}
DS00001817A_JP - p.12 2015 Microchip Technology Inc.
AN1817
補遺 A: ウィンドウ付きウォッチドッグ タイマ (WWDT)
ウィンドウ付きウォッチドッグ タイマはPIC16F161Xファミリが内蔵するモジュールで、通常のウォッチドッグ タイマよりもタイムスロットの監視に適しています。ウィンドウ付きウォッチドッグ タイマは、クロック速度が遅過ぎる場合も早過ぎる場合も検出できます。ウィンドウの前にプログラムがタイマをクリアしようとした場合も、CLRWDT 命令を発行できなかった場合もリセットが発生します。この機能を使うには、実行中のプロセスに正確なタイミングが必要です。CRC モジュールは、正確なタイミングを提供するモジュールの 1 つです (Section 2.4 「CRC モジュールのタイミング」参照 )。
このウィンドウのタイミングを、参照クロック ( この場合は LFINTOSC) の公差に合わせて調整する必要があります。温度と電圧に対する LFINTOSC の仕様上の誤差は +-15% です。つまり、このオシレータ周波数レンジをカバーできるだけのガードバンドをウィンドウに追加する必要があります。
例えばCRCモジュールがPIC16F1613のメモリレンジ全体 (2K ワード ) をテストするには、4 ms が必要です ( バーストモード、8 MHz の場合 )。つまり、CRCモジュールが途中で終了した場合、不正に呼び出された場合、プログラム カウンタに障害が発生した場合にエラーとなるようにウォッチドッグ タイマにウィンドウを追加する必要があります。そのため、WDT 周期を 8 ms として 87.5% のウィンドウを設定します。このようにウィンドウを拡張する事で、LFINTOSC の許容誤差に対して十分なガードバンドを確保しつつ高いエラー検出率を維持できます。
図 A-1: ウォッチドッグ タイマのウィンドウ
Window Period
CLRWDT Instruction (or other WDT reset)
Window Delay(window violation can occur)
Window Closed Window Open
Time-out Event
2015 Microchip Technology Inc. DS00001817A_JP - p.13
AN1817
補遺 B: SMT のタイミング
信号計測タイマ (SMT) を使うと、PIC16F161X ファミリの周辺モジュールまたはその他のソフトウェア イベントに対して正確なタイミングを取得できます。Timer 1 が 16 ビットタイマであるのに対し、SMT モジュールは 24 ビットタイマであるため、特に低速なアプリケーションで便利です。
FOSC/4 クロックを使って動作タイミングを計測する場合の SMT 設定方法は、例 B-1 を参照してください。
例 B-1: SMT の初期化
PR レジスタを最大値に設定すると SMT の 24 ビットレンジ全体を使う事ができます。STP ビット (bit 5) をセットすると、SMTxPRの値でカウンタが停止します。こうすると、オーバーフローを使わなくてもイベントのタイミングを SMT の 24 ビットレンジに制限できます。
例 B-1 に示した方法で SMT の初期化が完了したら、SMTxCON1レジスタのSMTxGOビットを使ってSMTを有効または無効にできます。イベントのタイミング
情報を取得するにはイベント発生前に SMTxGO ビットをセットし、イベント直後に SMTxGO ビットをクリアします。時間は SMTxTMRU:H:L レジスタに格納されます。格納される値の単位は、命令サイクル(FOSC/4) 数です。例 B-2 に、この CRC サンプルコードを示します。
例 B-2: SMT のタイミング
SMT2CON0 = 0b10100000; //SMT enabled, rising edges, prescaler 1:1,
//counter will halt at PR
SMT2CLKbits.CSEL = 0b001; // Fosc/4
SMTxPR = 0xFFFFFF;
SMT2CON1bits.SMT2GO = 1; // start SMT timing
//start the Hardware CRC check here.
HW_CRC(LASTCRCADDRESS);
SMT2CON1bits.SMT2GO = 0; // finish SMT timing
DS00001817A_JP - p.14 2015 Microchip Technology Inc.
Microchip 社製デバイスのコード保護機能に関して以下の点にご注意ください。
• Microchip 社製品は、該当する Microchip 社データシートに記載の仕様を満たしています。
• Microchip 社では、通常の条件ならびに仕様に従って使用した場合、Microchip 社製品のセキュリティ レベルは、現在市場に
流通している同種製品の中でも最も高度であると考えています。
• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解では、こうした手法
は Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事になります。このような行為は知
的所有権の侵害に該当する可能性が非常に高いと言えます。
• Microchip 社は、コードの保全性に懸念を抱いているお客様と連携し、対応策に取り組んでいきます。
• Microchip 社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保
護機能とは、Microchip 社が製品を「解読不能」として保証するものではありません。
コード保護機能は常に進歩しています。Microchip 社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip 社の
コード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著作
物に不正なアクセスを受けた場合、デジタル ミレニアム著作権法の定めるところにより損害賠償訴訟を起こす権利があります。
本書に記載されているデバイス アプリケーション等に関する
情報は、ユーザの便宜のためにのみ提供されているものであ
り、更新によって無効とされる事があります。お客様のアプ
リケーションが仕様を満たす事を保証する責任は、お客様に
あります。Microchip 社は、明示的、暗黙的、書面、口頭、法
定のいずれであるかを問わず、本書に記載されている情報に
関して、状態、品質、性能、商品性、特定目的への適合性を
はじめとする、いかなる類の表明も保証も行いません。
Microchip 社は、本書の情報およびその使用に起因する一切の
責任を否認します。生命維持装置あるいは生命安全用途に
Microchip 社の製品を使用する事は全て購入者のリスクとし、
また購入者はこれによって発生したあらゆる損害、クレーム、
訴訟、費用に関して、Microchip 社は擁護され、免責され、損
害を受けない事に同意するものとします。暗黙的あるいは明
示的を問わず、Microchip 社が知的財産権を保有しているライ
センスは一切譲渡されません。
2015 Microchip Technology Inc.
商標
Microchip 社の名称とロゴ、Microchipロゴ、dsPIC、FlashFlex、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、米
国およびその他の国におけるMicrochip Technology Incorporatedの登録商標です。
FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MTP、SEEVAL、Embedded Control Solutions Company は、
米国におけるMicrochip Technology Incorporatedの登録商標
です。
Silicon Storage Technology は、他の国における Microchip Technology Inc. の登録商標です。
Analog-for-the-Digital Age、Application Maestro、BodyCom、
chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、
FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPF、MPLAB Certified ロゴ、MPLIB、MPLINK、mTouch、Omniscient Code Generation、PICC、
PICC-18、PICDEM、PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、SQl、Serial Quad I/O、Total Endurance、TSHARC、UniWinDriver、WiperLock、ZENA および Z-Scaleは、米国およびその他の Microchip Technology Incorporatedの商標です。
SQTP は、米国における Microchip Technology Incorporatedのサービスマークです。
GestIC および ULPP は、Microchip Technology Inc. の子会社
である Microchip Technology Germany II GmbH & Co. & KG 社
の他の国における登録商標です。
その他本書に記載されている商標は各社に帰属します。
© 2015, Microchip Technology Incorporated, All Rights Reserved.
ISBN: 978-1-63276-863-6
DS00001817A_JP - p.15
Microchip 社では、Chandler および Tempe ( アリゾナ州 )、Gresham ( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を取得しています。Microchip 社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得しています。
DS00001817A_JP - p.16 2015 Microchip Technology Inc.
北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 480-792-7200 Fax: 480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com
アトランタDuluth, GA Tel: 678-957-9614 Fax: 678-957-1455
オースティン、TXTel: 512-257-3370
ボストンWestborough, MATel: 774-760-0087 Fax: 774-760-0088
シカゴItasca, ILTel: 630-285-0071 Fax: 630-285-0075
クリーブランドIndependence, OHTel: 216-447-0464Fax: 216-447-0643
ダラスAddison, TXTel: 972-818-7423 Fax: 972-818-2924
デトロイトNovi, MI Tel: 248-848-4000
ヒューストン、TXTel: 281-894-5983
インディアナポリスNoblesville, INTel: 317-773-8323Fax: 317-773-5453
ロサンゼルスMission Viejo, CATel: 949-462-9523 Fax: 949-462-9608
ニューヨーク、NY Tel: 631-435-6000
サンノゼ、CATel: 408-735-9110
カナダ - トロント
Tel: 905-673-0699 Fax: 905-673-6509
アジア / 太平洋アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel: 852-2943-5100Fax: 852-2401-3431
オーストラリア - シドニー
Tel: 61-2-9868-6733Fax: 61-2-9868-6755
中国 - 北京
Tel: 86-10-8569-7000Fax: 86-10-8528-2104
中国 - 成都
Tel: 86-28-8665-5511Fax: 86-28-8665-7889
中国 - 重慶
Tel: 86-23-8980-9588Fax: 86-23-8980-9500
中国 - 杭州
Tel: 86-571-8792-8115Fax: 86-571-8792-8116
中国 - 香港 SARTel: 852-2943-5100 Fax: 852-2401-3431
中国 - 南京
Tel: 86-25-8473-2460Fax: 86-25-8473-2470
中国 - 青島
Tel: 86-532-8502-7355Fax: 86-532-8502-7205
中国 - 上海
Tel: 86-21-5407-5533Fax: 86-21-5407-5066
中国 - 瀋陽
Tel: 86-24-2334-2829Fax: 86-24-2334-2393
中国 - 深圳
Tel: 86-755-8864-2200 Fax: 86-755-8203-1760
中国 - 武漢
Tel: 86-27-5980-5300Fax: 86-27-5980-5118
中国 - 西安
Tel: 86-29-8833-7252Fax: 86-29-8833-7256
中国 - 厦門
Tel: 86-592-2388138 Fax: 86-592-2388130
中国 - 珠海
Tel: 86-756-3210040 Fax: 86-756-3210049
アジア / 太平洋インド - バンガロール
Tel: 91-80-3090-4444 Fax: 91-80-3090-4123
インド - ニューデリー
Tel: 91-11-4160-8631Fax: 91-11-4160-8632
インド - プネ
Tel: 91-20-3019-1500
日本 - 大阪
Tel: 81-6-6152-7160Fax: 81-6-6152-9310
日本 - 東京
Tel: 81-3-6880-3770 Fax: 81-3-6880-3771
韓国 - 大邱
Tel: 82-53-744-4301Fax: 82-53-744-4302
韓国 - ソウル
Tel: 82-2-554-7200Fax: 82-2-558-5932 または
82-2-558-5934
マレーシア - クアラルンプール
Tel: 60-3-6201-9857Fax: 60-3-6201-9859
マレーシア - ペナン
Tel: 60-4-227-8870Fax: 60-4-227-4068
フィリピン - マニラ
Tel: 63-2-634-9065Fax: 63-2-634-9069
シンガポールTel: 65-6334-8870Fax: 65-6334-8850
台湾 - 新竹
Tel: 886-3-5778-366Fax: 886-3-5770-955
台湾 - 高雄
Tel: 886-7-213-7830
台湾 - 台北
Tel: 886-2-2508-8600 Fax: 886-2-2508-0102
タイ - バンコク
Tel: 66-2-694-1351Fax: 66-2-694-1350
ヨーロッパオーストリア - ヴェルス
Tel: 43-7242-2244-39Fax: 43-7242-2244-393
デンマーク - コペンハーゲン
Tel: 45-4450-2828 Fax: 45-4485-2829
フランス - パリ
Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79
ドイツ - デュッセルドルフ
Tel: 49-2129-3766400
ドイツ - ミュンヘン
Tel: 49-89-627-144-0 Fax: 49-89-627-144-44
ドイツ - プフォルツハイム
Tel: 49-7231-424750
イタリア - ミラノ Tel: 39-0331-742611 Fax: 39-0331-466781
イタリア - ヴェニス
Tel: 39-049-7625286
オランダ - ドリューネン
Tel: 31-416-690399 Fax: 31-416-690340
ポーランド - ワルシャワ
Tel: 48-22-3325737
スペイン - マドリッド
Tel: 34-91-708-08-90Fax: 34-91-708-08-91
スウェーデン - ストックホルム
Tel: 46-8-5090-4654
イギリス - ウォーキンガム
Tel: 44-118-921-5800Fax: 44-118-921-5820
各国の営業所とサービス
03/25/14