MPLAB XC16 User’s Guide for Embedded Engineers

Similar documents
B MPLAB XC HPA Renewal Instructions.book

TB3179 メモリ保護ユニット (MPU) の設定方法 はじめに メモリ保護ユニット (MPU) は Cortex -M7 コアがメモリ保護のために備えているオプションのコンポーネントです MPU はメモリマップを分割し それぞれにアクセス権とルールを設定します 本書では Cortex-M7 ベー

MPLAB XC8 User’s Guide for Embedded Engineers

TB3172 Cortex -M7 マイクロコントローラの XDMAC を使ってオーディオアプリケーションにピンポンバッファリングを実装する方法 はじめに オーディオシステムアプリケーションでは リアルタイムシステムに関する代表的なプロデューサ / コンシューマ問題が発生する可能性があります タイミ

Cortex -M キャッシュコントローラを使って決定論的コード性能を達成する方法 TB3186 はじめに マイクロコントローラベース (MCU) の組み込みアプリケーションでは ソフトウェアは不揮発性メモリに保存して実行します この不揮発性メモリとは 通常はフラッシュメモリです フラッシュメモリは

TB3177 MPLAB Harmony Configurator (MHC) を使った Hello World アプリケーションの作成 はじめに MPLAB Harmony は互換で相互運用可能なライブラリで構成されたソフトウェアフレームワークであり 周辺モジュールドライバ ミドルウェア システム

PIC10(L)F320/322 Product Brief

PIC24F Family Reference Manual, Section 9 Watchdog Timer (WDT)

SMSC LAN8700 Datasheet

MPLAB Code Configurator v3.xx User’s Guide

ヒント 2: CWG を使ったハーフブリッジまたはフルブリッジ回路の駆動 ハーフブリッジまたはフルブリッジモータ回路を駆動するために多ピンマイクロコントローラは必ずしも必要ではありません PWM モジュールと CWG モジュールを組み合わせると 少ピンデバイスでも駆動できます 図 2: CWG によ

AN1019 そのような配慮として 下記の基本的ガイドラインに沿って 可能な限り 環境条件または動作条件を制限する必要があります アプリケーションの温度を可能な限り下げる アプリケーションの電圧 ( または EEPROM の VCC 電圧 ) を可能な限り下げる 書き込みバイト数を可能な限り少なくす

PIC16F18446 Sensor Board User's Guide

実習内容 PIC18C242 のポート B に接続した LED を点滅させます ( 他の実習と同じ内容です ) 8 個の LED に表示される値が +3 ずつインクリメントします MPLAB を使って MPASM アセンブラのソース ファイルをアセンブルします MPLAB とソース ファイルは配布し

XC8 quick start guide.fm

目次 はじめに キャッシュポリシーの概要 サポートされている設定 キャッシュコヒーレンシ問題 キャッシュメンテナンス API を使ったキャッシュコヒーレンシの処理 DMA と CPU が共有するメモリ領域でのキャッシュの無効化..

a.fm

始める スタート > 全てのプログラム > Cypress > PSoC Creator 2.0 > PSoC Creator 2.0 をクリックします プロジェクトを作成する / 開く Start Page の "Create New Project" をクリックし 要求されたプロジェクト情報を入

MPLAB_XC32_UG_EE.fm

Manchester Decoder Using the CLC and NCO

SMSC LAN8700 Datasheet

MSP430 CCSv5 を使い Flash Memory 内容と version 情報を確認する方法 ( テクニック編 ) Rev: PIC Trout 今回は 下記の2 件について説明します 1) CCSv5 を使用して MSP430 の Flash Memory 内容を

Lab GPIO_35 GPIO

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

AN424 Modbus/TCP クイックスタートガイド CIE-H14

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

MPLAB Code Configurator User’s Guide

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

PICF/LF1847 表 1: デバイス PICF/LF1847 ファミリの各製品 プログラムメモリフラッシュ ( ワード ) データ EEPROM ( バイト ) SRAM ( バイト ) I/O 10 ビット A/D (ch) タイマ 8/ ビット EUSART MSSP CCP/ ECCP

DALI App. Note

WAGO / / Modbus/RTU対応 バスカプラ クイックスタートガイド

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

スライド 1

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

AN2754 USB-to-I2C Bridging with USB7002, USB7050, USB7051, and USB7052 Hubs

Eclipse&gcc install and tutorial

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

Microsoft Word - CBSNet-It連携ガイドver8.2.doc

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

PIC

Microchip Capacitive Proximity Design Guide

本日の内容 導入 回路の作製 回路図から配線図へ ブレッドボードを使った試作回路の作製 マイコンへのプログラム書き込み GPIOの実験

Notes and Points for TMPR454 Flash memory

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

Microsoft Word - DWR-S01D_Updater_取扱説明書_120514A.doc

1. 概念 STM32F4 Discovery 基板は Mini USB を接続して デバッグやプログラムの書き込みができるようになっています 通常は CPU の 0x 番地からプログラムを実行します では なぜわざわざこのプロジェクトの雛形を使用して CPU の 0x

Visual DSP++ install and tutorial

USB.mif

Visual DSP++ install and tutorial

[DS50-N A] BIOS マニュアル BIOS セットアップユーティリティとは BIOS セットアップユーティリティとは BIOS の設定を確認 変更するためのツールです セットアップユーティリティは 本体に内蔵されているマザーボード上のフラッシュメモリーに格納されています このユ

SLCONFIG の操作 JF1PYE Ⅰ. PC と slconfig の通信設定 Ⅱ. Slconfig の操作 Ⅲ. 端末ソフトによる Command 機能 Ⅳ. slconfig 実行形式プログラムの作成 Ⅴ. 端末ソフト Tera Term のダウンロード インストー

Flash Loader

ここをクリックしてダウンロードする ダウンロードした zip ファイルを解凍する とインストーラが現れます インストーラを 起動してインストールを開始しましょう イ ンストーラの [ Next > ] ボタンを押してい けばインストールできます ライセンスの画面では I accept the ter

PowerPoint プレゼンテーション

改訂履歴 改訂日付 改訂内容 2014/11/01 初版発行 2017/01/16 Studuino web サイトリニューアルに伴う改訂 2017/04/14 Studuino web サイトリニューアルに伴うアクセス方法の説明変更 2018/01/22 Mac 版インストール手順変更に伴う改訂

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

DWR-S01D Updater 取扱説明書 発行日 :2011/2/28

Nios II Flash Programmer ユーザ・ガイド

VPN 接続の設定

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し

スライド 1

RF2_BIOS一覧

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

HP ThinUpdateを使用したWESシンクライアントイメージリストア手順書

スクールCOBOL2002

SDC_SDIO_STM32F4 の説明 2013/09/17 SDIO インターフェースで SD カードをアクセスするプログラムのプロジェクトサンプルです FAT でファイルアクセスするために FatFs( 汎用 FAT ファイルシステム モジュール ) を使用しています VCP(USB 仮想 C

WAGO PROFIBUS バスカプラ/コントローラと、QJ71PB92Dとのコンフィグレーションマニュアル

Multi-Tool Design Advisory

はじめにお読みください

著作権および商標 この文書には が所有権を持つ機密事項が含まれます この資料のいかなる部分も許 可無く複製 使用 公開することを固く禁じます 本書は の従業員および許可された 取引先だけに使用が認められています 本書で提供されたデータは正確で信頼性の高いものですが このデータの使用について株式会社

Studuinoライブラリ環境設定Mac編

Microsoft Word - MacOSXインストールマニュアル( ).doc

WES7シンクライアントIE11アップデート手順書

DSP5Dアップグレードガイド

Notes and Points for ADuCM320 Internal Flash memory

FT-450D シリーズ MAIN ファームウェアアップデートマニュアル 本ソフトウェアは FT-450D/FT-450DM/FT-450DS の アップデートファームウェアです FT-450 シリーズのアップデートには使用できません 八重洲無線株式会社

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

スライド 1

CrossCore Embedded Studio install and tutorial

Pirates Buster Series Secure Viewer セットアップマニュアル (Web インストーラ)

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

本日の内容 導入 回路の作製 回路図から配線図へ ブレッドボードを使った試作回路の作製 マイコンへのプログラム書き込み GPIOの実験

Transcription:

注意 : この日本語版文書は参考資料としてご利用ください 最新情報は必ずオリジナルの英語版をご参照願います 組み込み技術者のための MPLAB XC16 ユーザガイド 組み込み技術者のための MPLAB XC16 ユーザガイド はじめに 本書には 16 ビットデバイスおよび MPLAB XC16 C コンパイラ向けの 5 つのサンプ ルコードを掲載しています これらを使うにはマイクロコントローラと C 言語プログ ラミングに関するある程度の知識が必要です 1. LED を点灯または消灯させる 2. _delay() 関数を使って LED を点滅させる 3. 遅延用に割り込みを使って LED を点滅させる 4. ADC を使ってポテンショメータの値を LED で表示する 5. LED に EEPROM データ値を表示する A. MPLAB X IDE でのコード実行 B. ソフトウェアとハードウェアの入手先 2017 Microchip Technology Inc. DS50002446B_JP - p.1

1. LED を点灯または消灯させる 以下の例は PIC24FJ128GA010 プラグインモジュール (PIM) を挿した Explorer 16/32 開発ボード上の LED を点灯または消灯します 詳細はセクション B. ソフトウェアとハードウェアの入手先 を参照してください #include <xc.h> セクション 1.1 参照 // PIC24FJ128GA010 Configuration Bit Settings // For more on Configuration Bits, // consult your device data sheet セクション 1.2 参照 // CONFIG2 #pragma config POSCMOD = XT // XT Oscillator mode selected #pragma config OSCIOFNC = ON // OSC2/CLKO/RC15 as port I/O (RC15) #pragma config FCKSM = CSDCMD // Clock Switching and Monitor disabled #pragma config FNOSC = PRI // Primary Oscillator (XT, HS, EC) #pragma config IESO = ON // Int Ext Switch Over Mode enabled // CONFIG1 #pragma config WDTPS = PS32768 // Watchdog Timer Postscaler (1:32,768) #pragma config FWPSA = PR128 // WDT Prescaler (1:128) #pragma config WINDIS = ON // Watchdog Timer Window Mode disabled #pragma config FWDTEN = OFF // Watchdog Timer disabled #pragma config ICS = PGx2 // Emulator/debugger uses EMUC2/EMUD2 #pragma config GWRP = OFF // Writes to program memory allowed #pragma config GCP = OFF // Code protection is disabled #pragma config JTAGEN = OFF // JTAG port is disabled #define LEDS_ON_OFF 0x55 セクション 1.3 参照 int main(void) { // Port A access AD1PCFG = 0xFFFF; TRISA = 0x0000; LATA = LEDS_ON_OFF; セクション 1.4 参照 // set to digital I/O (not analog) // set all port bits to be output // write to port latch } return 0; 1.1 ヘッダファイル <xc.h> このヘッダファイルは ソースファイル内のコードからコンパイラ固有またはデバイス固有の機能を使えるようにします <xc.h> を含む各種ヘッダファイルは MPLAB XC16 インストールディレクトリ内の support サブディレクトリに保存されています 選択したデバイスに基づき コンパイラは xc.h が適切なデバイス固有ヘッダファイルを指定できるようにマクロを設定します デバイス固有ヘッダをユーザコード内でインクルードしない事が重要です そうするとコードの移植性が失われます DS50002446B_JP - p.2 2017 Microchip Technology Inc.

1.2 コンフィグレーションビット Microchip 社製デバイスは 各種デバイス機能の動作を設定または有効化 / 無効化するためのビットを格納したコンフィグレーションレジスタを備えています Note: コンフィグレーションビットを正しく設定しないと デバイスは期待通りに ( あるいは全く ) 機能しません 1.2.1 設定が必要なコンフィグレーションビット特に以下の設定が必要です オシレータの選択 - ハードウェアのオシレータ回路に適合する必要があります 正しく選択しないとデバイスクロックは動作しません 一般的に開発ボードは高速水晶振動子の構成で使います 以下はサンプルコードからの抜粋です #pragma config FNOSC = PRI #pragma config POSCMOD = XT ウォッチドッグタイマ - このタイマは必要になるまで無効にしておく事を推奨します これにより予期せぬリセットを防ぎます 以下はサンプルコードからの抜粋です #pragma config FWDTEN = OFF コード保護 - コード保護は必要になるまで無効にしておきます そうする事でデバイスメモリへのフルアクセスを確保します 以下はサンプルコードからの抜粋です #pragma config GCP = OFF このサンプルコードで使っている MCU とは異なる 16 ビットデバイスを使う場合 上記とは異なるコンフィグレーションビットの設定が必要になる場合があります 対応するコンフィグレーションビットの番号と機能は 各デバイスのデータシートを参照してください データシートは http://www.microchip.com で製品番号を使って検索できます 各デバイスが備えるコンフィグレーションビットの詳細は MPLAB XC16 インストールディレクトリ内の以下の場所に保存されているファイルを参照してください MPLAB XC16 Installation Directory/docs/config_index.html 2017 Microchip Technology Inc. DS50002446B_JP - p.3

1.2.2 コンフィグレーションビットの設定方法 MPLAB X IDE では [Configuration Bits] ウィンドウを使ってコンフィグレーションビットを表示および設定できます このウィンドウは メニューを [Window]>[PIC Memory Views]>[Configuration Bits] と選択すると開きます 図 1: [Configuration Bits] ウィンドウ 設定を済ませたら pragma ディレクティブを挿入したい位置でコードをクリックし [Insert Source Code in Editor] アイコンをクリックします または [Generate Source Code to Output] をクリックして [Output] ウィンドウからコードへ pragma ディレクティブをコピーする事もできます 1.3 LED 値マクロの定義 LED に書き込む値は 次のセクションで説明するように マクロ記述 (LEDS_ON_OFF) に割り当て済みです (LED D3 D5 D7 D9 は ON LED D4 D6 D8 D10 は OFF) デモボード回路図の参照先はセクション B. ソフトウェアとハードウェアの入手先 を参照してください 1.4 ポートアクセス デジタル I/O デバイスピンは周辺モジュール I/O ピンと多重化されている場合があります デジタル I/O のみを使うため 多重化されている周辺モジュールは無効にします これには周辺モジュールレジスタとそれらのビットを表す定義済み C 変数を使います これらの変数は コンパイラの include ディレクトリ内にあるデバイス固有ヘッダファイルに書かれています どの周辺モジュールがどのピンを共有しているかは 各デバイスのデータシートを参照してください このセクションのサンプルコードのデバイス (PIC24FJ128GA010) では ポート A ピンが周辺モジュール ( 既定値では無効 ) と多重化されています 唯一の問題は それらのピンが既定値ではアナログとして設定されているという事です このため デジタル I/O として設定する必要があります AD1PCFG = 0xFFFF; // set to digital I/O (not analog) デバイスピンは デジタル I/O ポート (PORT) またはデバイス内のラッチ (LAT) レジスタのどちらかに接続します このサンプルコードでは LATA を使います マクロ LEDS_ON_OFF をラッチに割り当てます LATA = LEDS_ON_OFF; // write to port latch さらに ピン方向 ( 入力または出力 ) の指定に TRIS レジスタを使います このサンプルコードでは TRISD と TRISB を使います ビットを 0 にクリアすると 対応するピンは出力として 1 にセットすると入力として設定されます 以下に例を示します TRISA = 0x0000; // set all port bits to be output DS50002446B_JP - p.4 2017 Microchip Technology Inc.

2. _delay() 関数を使って LED を点滅させる 以下のサンプルコードでは 最初のサンプルコードの一部を変更しています このサンプルコードは LED を点灯させるだけでなく点滅させます #include <xc.h> #include <libpic30.h> // PIC24FJ128GA010 Configuration Bit Settings // For more on Configuration Bits, consult your device data sheet // CONFIG2 #pragma config POSCMOD = XT // XT Oscillator mode selected #pragma config OSCIOFNC = ON // OSC2/CLKO/RC15 as port I/O (RC15) #pragma config FCKSM = CSDCMD // Clock Switching and Monitor disabled #pragma config FNOSC = PRI // Primary Oscillator (XT, HS, EC) #pragma config IESO = ON // Int Ext Switch Over Mode enabled // CONFIG1 #pragma config WDTPS = PS32768 // Watchdog Timer Postscaler (1:32,768) #pragma config FWPSA = PR128 // WDT Prescaler (1:128) #pragma config WINDIS = ON // Watchdog Timer Window Mode disabled #pragma config FWDTEN = OFF // Watchdog Timer disabled #pragma config ICS = PGx2 // Emulator/debugger uses EMUC2/EMUD2 #pragma config GWRP = OFF // Writes to program memory allowed #pragma config GCP = OFF // Code protection is disabled #pragma config JTAGEN = OFF // JTAG port is disabled #define LEDS_ON_OFF 0x55 #define LEDS_OFF_ON 0xAA #define IC_DELAY 1500000 int main(void) { セクション 2.1 参照 // Port A access AD1PCFG = 0xFFFF; // set to digital I/O (not analog) TRISA = 0x0000; // set all port bits to be output while(1) { セクション 2.2 参照 LATA = LEDS_ON_OFF; // write to port latch // delay value change delay32(ic_delay); セクション 2.3 参照 // delay in instruction cycles LATA = LEDS_OFF_ON; // write to port latch delay32(ic_delay); // delay in instruction cycles } } return -1; 2017 Microchip Technology Inc. DS50002446B_JP - p.5

2.1 ライブラリヘッダファイル この例では libpic30 コンパイラライブラリの delay32 関数を使います このライブラリにアクセスするには libpic30.h が含まれている必要があります 2.2 while() ループと変数値 ポート A の LED の状態 ( 点灯 / 消灯 ) を変化させるため ループの最初の部分にマクロ LEDS_ON_OFF を割り当て 後の部分にマクロ LEDS_OFF_ON を割り当てます ループは while(1) { } を使って実行します 正常動作では while ループは終了しないため main 関数が戻るという事はエラーがあった事を意味しています この場合 -1 が返ります 2.3 _delay() 関数 実行速度が速いため LED は点滅しているように見えません このため実行速度を遅くする必要があります delay32() はコンパイラが使えるライブラリ関数です 遅延関数の詳細は 16-Bit Language Tools Libraries Reference Manual (DS50001456) を参照してください DS50002446B_JP - p.6 2017 Microchip Technology Inc.

3. 遅延用に割り込みを使って LED を点滅させる 以下のサンプルコードでは 最初のサンプルコードの一部を変更しています そこではループの実行を遅らせるために遅延関数を使いましたが それによってプログラムにデッドタイムが生じました これを防ぐため 以下のサンプルコードではタイマ割り込みを使います #include <xc.h> // PIC24FJ128GA010 Configuration Bit Settings // For more on Configuration Bits, consult your device data sheet // CONFIG2 #pragma config POSCMOD = XT // XT Oscillator mode selected #pragma config OSCIOFNC = ON // OSC2/CLKO/RC15 as port I/O (RC15) #pragma config FCKSM = CSDCMD // Clock Switching and Monitor disabled #pragma config FNOSC = PRI // Primary Oscillator (XT, HS, EC) #pragma config IESO = ON // Int Ext Switch Over Mode enabled // CONFIG1 #pragma config WDTPS = PS32768 // Watchdog Timer Postscaler (1:32,768) #pragma config FWPSA = PR128 // WDT Prescaler (1:128) #pragma config WINDIS = ON // Watchdog Timer Window Mode disabled #pragma config FWDTEN = OFF // Watchdog Timer disabled #pragma config ICS = PGx2 // Emulator/debugger uses EMUC2/EMUD2 #pragma config GWRP = OFF // Writes to program memory allowed #pragma config GCP = OFF // Code protection is disabled #pragma config JTAGEN = OFF // JTAG port is disabled // Interrupt function セクション 3.1 参照 void attribute ((interrupt, no_auto_psv)) _T1Interrupt(void){ // static variable for permanent storage duration static unsigned char portvalue = 0; // write to port latch LATA = portvalue++; // clear this interrupt condition _T1IF = 0; } int main(void) { // Port A access AD1PCFG = 0xFFFF; // set to digital I/O (not analog) TRISA = 0x0000; // set all port bits to be output // Timer1 setup セクション 3.2 参照 T1CON = 0x8010; // timer 1 on, prescaler 1:8, internal clock _T1IE = 1; // enable interrupts for timer 1 _T1IP = 0x001; // set interrupt priority (lowest) while(1); } return -1; 2017 Microchip Technology Inc. DS50002446B_JP - p.7

3.1 割り込み関数 isr() interrupt 属性を使う事により 関数を割り込み関数として指定します PSV (Program Space Visibility) も指定する必要があります この簡単な例では PSV は使っていません PSV の詳細は MPLAB XC16 C コンパイラユーザガイド (DS50002071) を参照してください Timer1 専用の主割り込みベクタ _T1Interrupt を使います 各デバイスの割り込みベクタテーブルは インストールしたコンパイラの docs ディレクトリに収められています この割り込み関数では Timer1 が割り込みを生成するとカウンタ portvalue がインクリメントします 3.2 Timer1 の設定 タイマの設定とタイマ割り込みの有効化のためのコードを main ルーチンに追加する必要があります また ラッチへの代入のための変数値の変更は割り込みサービスルーチンで行います DS50002446B_JP - p.8 2017 Microchip Technology Inc.

4. ADC を使ってポテンショメータの値を LED で表示する このサンプルコードでは 前のサンプルコードと同じデバイスとポート A LED を使います しかしこのサンプルコードでは デモボード上のポテンショメータ ( スライダ ) からの値をポート B 経由で ADC に入力し その変換結果を LED で表示します コードは手書きではなく MPLAB Code Configurator (MCC) を使って生成します MCC は MPLAB X IDE の [Available Plugins] タブ ([Tools]>[Plugins] で開く ) を使ってインストールできるプラグインです プラグインのインストール方法は MPLAB X IDE のヘルプを参照してください MCC のインストール情報と MPLAB Code Configurator ユーザガイド (DS40001725) は 以下のMPLAB Code Configuratorウェブページでご覧になれます http://www.microchip.com/mplab/mplab-code-configurator このサンプルコードを生成するために使った MCC の設定を図 2 ~ 図 10 に示します 図 2: ADC プロジェクトのリソース - システムモジュール 2017 Microchip Technology Inc. DS50002446B_JP - p.9

図 3: ADC プロジェクトのシステムモジュール設定 DS50002446B_JP - p.10 2017 Microchip Technology Inc.

図 4: ADC プロジェクトのリソース - ADC モジュール 2017 Microchip Technology Inc. DS50002446B_JP - p.11

図 5: ADC プロジェクトの ADC1 設定 図 6 に 選択後の RB5 から AN5 のマップ表示を示します 図 6: ADC プロジェクトの ADC1 ピンリソース DS50002446B_JP - p.12 2017 Microchip Technology Inc.

図 7: ADC プロジェクトのリソース - ピンモジュール 図 8: ADC プロジェクトの I/O ピン設定 図 9 でピン RA0:7 が選択されている場合 これらのピンは上記ウィンドウに表示されます RB5 は図 6 で既に選択済みです RB6 と RB7 をデバッグ通信のためにあらかじめ選択しておきます ウィンドウ内にピン設定が表示されたら 各ピンに対してピン設定を表示および選択できます 2017 Microchip Technology Inc. DS50002446B_JP - p.13

図 9: ADC プロジェクトの I/O ピンリソース DS50002446B_JP - p.14 2017 Microchip Technology Inc.

図 10: ADC プロジェクトのピンパッケージ 2017 Microchip Technology Inc. DS50002446B_JP - p.15

以上のようにコードを設定した後に [Project Resources] ウィンドウの [Generate] ボタンをクリックします ( 図 7) MCC はモジュール形式のコードを生成します すなわち main システム 周辺モジュールコードは全て別々のファイルです 各周辺モジュールのヘッダファイルも別々です 潜在的なエラーを捉えるためにトラップファイルが生成されます このアプリケーションでは割り込みは使いません しかし 将来用に割り込みマネージャファイルが生成されます プログラムに機能を追加する場合 必ず main.c を編集する必要があります 生成されたファイル内にある関数またはマクロはプログラムコードに必要ですので再確認してください 図 11: MCC によって生成されるコードの ADC プロジェクトツリー DS50002446B_JP - p.16 2017 Microchip Technology Inc.

4.1 変更した main.c コード 編集後の main.c テンプレートファイルを以下に示します 一部のコメントは省略しました ( 省略箇所には < > で囲んだ注釈を記入しています ) main() に追加したコードは赤字で示しています /** Generated Main Source File <See generated main.c file for file information.> /* (c) 2016 Microchip Technology Inc. and its subsidiaries.you may use this software and any derivatives exclusively with Microchip products. <See generated main.c file for additional copyright information.> #include "mcc_generated_files/mcc.h" unsigned int value = 0; /* Main application int main(void) { // initialize the device SYSTEM_Initialize(); while (1) { // Wait for conversion セクション4.2 参照 // and then get result while(!adc1_isconversioncomplete()); value = ADC1_ConversionResultGet(); // Shift for MSb value = value >> 2; // Write to Port Latch/LEDs LATA = value; セクション 4.3 参照 } return -1; } /** End of File 2017 Microchip Technology Inc. DS50002446B_JP - p.17

4.2 ADC 変換および結果 MCC で AD1CON1 ビットをセットする事で ADC の有効化 自動サンプル収集 内部カウンタによるサンプリング終了 / 変換開始が行われます 従って main() コードは変換が終了するのを待ち 結果を取得するだけで済みます adc1.c モジュールから以下の関数を使います bool ADC1_IsConversionComplete(void) uint16_t ADC1_ConversionResultGet(void) その他の ADC 機能の設定の詳細は dspic33/pic24 ファミリリファレンスマニュアル (DS61104) のセクション 17. 10 ビットアナログ / デジタルコンバータ (ADC) を参照してください LED は 8 個しかなく ADC 変換結果は 10 ビットであるため 変数 value 内の変換結果はシフトされ最上位ビットが表示されます 分解能の一部は失われます 4.3 ポートラッチと LED への書き込み ADC 変換結果 value は ポート A の LED に表示されます DS50002446B_JP - p.18 2017 Microchip Technology Inc.

5. LED に EEPROM データ値を表示する このサンプルコードでは これまでとは異なる Microchip 社製デバイス (PIC24F32KA304 MCU) と Explorer 16/32 ボードを使って EEPROM データ (EEData) を読み書きします 読み取った値は 3 つのポートからアクセスされる LED に表示します コードの一部は MPLAB Code Configurator (MCC) で生成します MCC のインストールおよびユーザガイド入手方法は以下を参照してください セクション 4. ADC を使ってポテンショメータの値を LED で表示する このサンプルコードでは システム ( 例 : オシレータ速度 コンフィグレーションビット ) とポート A B C の汎用 I/O (GPIO) を設定するのに MCC GUI を使いました ( 図 12) しかし現時点では 16 ビットデバイスに利用できる EEData デバイスリソースはありません EEData モジュールを使うためのコードは デバイスのデータシートと dspic33/ PIC24 ファミリリファレンスマニュアル のセクション 5. データ EEPROM を参照してください どちらも以下のデバイスウェブページから入手できます http://www.microchip.com/pic24f32ka304 図 12: EEData プロジェクトのリソース - システムモジュール 2017 Microchip Technology Inc. DS50002446B_JP - p.19

図 13: EEData プロジェクトのシステムモジュール設定 DS50002446B_JP - p.20 2017 Microchip Technology Inc.

図 14: EEData プロジェクトのリソース - ピンモジュール 図 15: EEData プロジェクトの I/O ピン設定 図 16 でピン RA9:11 RB2:3 RB12 RC8:9 が選択されている場合 これらのピンは上のウィンドウに表示されます RB6 と RB7 をデバッグ通信のためにあらかじめ選択しておきます ウィンドウ内にピン設定が表示されたら 各ピンの設定を表示および選択できます 2017 Microchip Technology Inc. DS50002446B_JP - p.21

図 16: EEData プロジェクトの I/O ピンリソース 図 17: EEData プロジェクトのピンパッケージ DS50002446B_JP - p.22 2017 Microchip Technology Inc.

以上のようにコードを設定後 [Project Resources] ウィンドウの [Generate] ボタンをクリックします MCC はモジュール形式のコードを生成します すなわち main システム 周辺モジュールコードは全て別々のファイルです 各周辺モジュールのヘッダファイルも別々です 潜在的なエラーを捉えるためにトラップファイルが生成されます このアプリケーションでは割り込みは使いませんが 将来用に割り込みマネージャファイルが生成されます 図 18: MCC によって生成されるコードの EEData プロジェクトツリー 2017 Microchip Technology Inc. DS50002446B_JP - p.23

GPIO の生成ファイルは既定値がアナログ入力であるため pin_manager.c ファイル ( セクション 5.1) でデジタル入力に変更する必要があります さらに LED は 1 つのポートではなく 3 つのポートに接続しているため タイプ定義とコードを追加してポートピンを適切な LED 値に割り当てる必要があります ヘッダファイル LEDs.h( セクション 5.2) と C ファイル LEDs.c ( セクション 5.3) はプロジェクトに追加済みです 前述のように 現時点では 16 ビットデバイスに使える EEData デバイスリソースは MCC にないため コードを手動で追加する必要があります ヘッダファイル eedata.h( セクション 5.4) と C ファイル eedata.c ( セクション 5.5) はプロジェクトに追加済みです 図 19 に 最終的なプロジェクトツリーを示します 図 19: EEData プロジェクトツリー - 最終 プログラムに機能を追加する場合 必ず main.c を編集する必要があります ( セクション 5.6) 生成されたファイルまたは追加ファイル内にある関数またはマクロは プログラムコードに必要ですので再確認してください DS50002446B_JP - p.24 2017 Microchip Technology Inc.

5.1 変更した pin_manager.c コード 編集後の main.c テンプレートファイルを以下に示します 一部のコメントと生成内容は省略しました ( 省略箇所には < > で囲んだ注釈を記入しています ) 変更したコードは赤字で示しています /** System Interrupts Generated Driver File <See generated pin_manager.c for file information.> Copyright (c) 2013-2015 released Microchip Technology Inc. All rights reserved. <See generated pin_manager.c for additional copyright information.> /** Section:Includes #include <xc.h> #include "pin_manager.h" /** void PIN_MANAGER_Initialize(void) void PIN_MANAGER_Initialize(void) { <See generated pin_manager.c for port setup information.> /******************************************************************** * Setting the Analog/Digital Configuration SFR(s) ******************************************************************* ANSA = 0x0; ANSB = 0x0; ANSC = 0x0; } 2017 Microchip Technology Inc. DS50002446B_JP - p.25

5.2 LEDs.h コード 一部のコメントは省略しました ( 省略箇所には < > で囲んだ注釈を記入しています ) /*------------------------------------------------------------------- * PICF32KA304 LEDs header * * (c) Copyright 1999-2015 Microchip Technology, All rights reserved * <See generated header files for additional copyright information.> /******************************************************************** * Union of structures to hold value for display on LEDs * LAT_LEDx - bit fields of value * w - entire value ****************************************************************** typedef union { struct { unsigned LAT_LED0:1; unsigned LAT_LED1:1; unsigned LAT_LED2:1; unsigned LAT_LED3:1; unsigned LAT_LED4:1; unsigned LAT_LED5:1; unsigned LAT_LED6:1; unsigned LAT_LED7:1; }; struct { unsigned w:16; }; } LAT_LEDSBITS; extern volatile LAT_LEDSBITS LAT_LEDSbits; /* LAT_LEDSBITS #define _LED0 LAT_LEDSbits.LAT_LED0 #define _LED1 LAT_LEDSbits.LAT_LED1 #define _LED2 LAT_LEDSbits.LAT_LED2 #define _LED3 LAT_LEDSbits.LAT_LED3 #define _LED4 LAT_LEDSbits.LAT_LED4 #define _LED5 LAT_LEDSbits.LAT_LED5 #define _LED6 LAT_LEDSbits.LAT_LED6 #define _LED7 LAT_LEDSbits.LAT_LED7 #define _LEDS LAT_LEDSbits.w /******************************************************************** * Function:DisplayValueOnLEDs * Precondition:None. * Overview:Display input value on Explorer 16 LEDs * Input:Value to display * Output:None. ****************************************************************** void DisplayValueOnLEDs(unsigned int value); /** End of File DS50002446B_JP - p.26 2017 Microchip Technology Inc.

5.3 LEDs.c コード 一部のコメントは省略しました ( 省略箇所には < > で囲んだ注釈を記入しています ) /** Display on LEDs Source File <See LEDs.c for file description information.> /* Copyright (c) 2013-2015 released Microchip Technology Inc. All rights reserved. <See generated header files for additional copyright information.> #include "mcc_generated_files/mcc.h" #include "LEDs.h" volatile LAT_LEDSBITS LAT_LEDSbits; /******************************************************************** * Function:DisplayValueOnLEDs * Precondition:None. * Overview:Display input value on Explorer 16 LEDs * Input:Value to display * Output:None. ****************************************************************** void DisplayValueOnLEDs(unsigned int value);void DisplayValueOnLEDs(unsigned int value) { } _LEDS = value; _LATA9 = _LED0; _LATA10 = _LED1; _LATA11 = _LED2; _LATC8 = _LED3; _LATC9 = _LED4; _LATB12 = _LED5; _LATB2 = _LED6; _LATB3 = _LED7; /** End of File 2017 Microchip Technology Inc. DS50002446B_JP - p.27

5.4 eedata.h コード 一部のコメントは省略しました ( 省略箇所には < > で囲んだ注釈を記入しています ) /*------------------------------------------------------------------- * PICF32KA304 Data EEPROM header * * (c) Copyright 1999-2015 Microchip Technology, All rights reserved * <See generated header files for additional copyright information.> /******************************************************************** * Function:EEData_WTL * Precondition:None. * Overview:Write one word of EEData * Input:Action to take:erase or Write, Data to write * Output:None. ****************************************************************** void EEData_WTL(unsigned int action, unsigned int data); /******************************************************************** * Function:EEData_Erase * Precondition:None. * Overview:Set up erase of one word of EEData * Input:None. * Output:None. ****************************************************************** void EEData_Erase(void); /******************************************************************** * Function:EEData_Write * Precondition:None. * Overview:Set up write of one word of EEData * Input:Data to write * Output:None. ****************************************************************** void EEData_Write(unsigned int data); /******************************************************************** * Function:EEData_Read * Precondition:None. * Overview:Read one word of EEData * Input:None. * Output:Value read from EEData ****************************************************************** unsigned int EEData_Read(void); /** End of File DS50002446B_JP - p.28 2017 Microchip Technology Inc.

5.5 eedata.c コード 一部のコメントは省略しました ( 省略箇所には < > で囲んだ注釈を記入しています ) /** Data EEPROM Write and Read <See eedata.c for file description information.> /* Copyright (c) 2013-2015 released Microchip Technology Inc. All rights reserved. <See generated header files for additional copyright information.> #include <xc.h> #include "eedata.h" #define ERASE_EEWORD 0x4058 #define WRITE_EEWORD 0x4004 int attribute ((space(eedata))) eedata = 0x0; unsigned int offset = 0x0; /******************************************************************** * Function:EEData_WTL * Precondition:None. * Overview:Write one word of EEData * Input:Action to take:erase or Write, Data to write * Output:None. ****************************************************************** void EEData_WTL(unsigned int action, unsigned int data) { // Set up NVMCON to write one word of data EEPROM NVMCON = action; // Set up a pointer to the EEPROM location to be written TBLPAG = builtin_tblpage(&eedata); offset = builtin_tbloffset(&eedata); builtin_tblwtl(offset, data); // Issue Unlock Sequence & Start Write Cycle builtin_write_nvm(); } // Wait for completion while(nvmconbits.wr); /******************************************************************** * Function:EEData_Erase * Precondition:None. * Overview:Set up erase of one word of EEData * Input:None. * Output:None. ****************************************************************** void EEData_Erase(void) { } EEData_WTL(ERASE_EEWORD, 0); 2017 Microchip Technology Inc. DS50002446B_JP - p.29

/******************************************************************** * Function:EEData_Write * Precondition:None. * Overview:Set up write of one word of EEData * Input:Data to write * Output:None. ****************************************************************** void EEData_Write(unsigned int data) { } EEData_WTL(WRITE_EEWORD, data); /******************************************************************** * Function:EEData_Read * Precondition:None. * Overview:Read one word of EEData * Input:None. * Output:Value read from EEData ****************************************************************** unsigned int EEData_Read(void) { // Set up a pointer to the EEPROM location to be read TBLPAG = builtin_tblpage(&eedata); offset = builtin_tbloffset(&eedata); } // Read the EEPROM data return builtin_tblrdl(offset); /** End of File DS50002446B_JP - p.30 2017 Microchip Technology Inc.

5.6 変更した main.c コード 編集後の main.c テンプレートファイルを以下に示します 一部のコメントは省略しました ( 省略箇所には < > で囲んだ注釈を記入しています ) 追加済みコードは赤字で示しています /** Generated Main Source File <See generated main.c for file information.> /* (c) 2016 Microchip Technology Inc. and its subsidiaries.you may use this software and any derivatives exclusively with Microchip products. <See generated main.c for additional copyright information.> #include "mcc_generated_files/mcc.h" #include "eedata.h" #include "LEDs.h" #include "libpic30.h" #define IC_DELAY 1000000 unsigned int data_write = 0x0; unsigned int data_read = 0x0; /* Main application int main(void) { // initialize the device SYSTEM_Initialize(); while (1) { data_write++; // Erase one word of data EEPROM EEData_Erase(); セクション 5.7 参照 // Write one word of data EEPROM EEData_Write(data_write); // Read one word of data EEPROM data_read = EEData_Read(); // Display result on LEDs DisplayValueOnLEDs(data_read); セクション 5.8 参照 セクション 5.9 参照 // Delay change on LEDs so visible delay32(ic_delay); // delay in instruction cycles } return -1; } /** End of File 2017 Microchip Technology Inc. DS50002446B_JP - p.31

5.7 EEData の消去と書き込み EEData に 1 ワードを書き込む場合 以下のシーケンスを実行する必要があります 1. データ EEPROM 内の 1 ワードを消去する 2. データワードをデータ EEPROM ラッチへ書き込む 3. データワードを EEPROM へ書き込む EEData を 1 ワード消去し 1 ワード書き込むコードは eedata.c 内にあります ( セクション 5.5) PIC24F32KA304 デバイスの場合 EEData の消去と書き込みの前に NVMCON 内の NVMKEY にキーシーケンスを書き込む必要があります コーディングを簡潔にするために以下のビルトイン関数を使います unsigned int builtin_tblpage(const void *p); unsigned int builtin_tbloffset(const void *p); void builtin_tblwtl(unsigned int offset, unsigned int data); void builtin_write_nvm(void); これらの関数の詳細は MPLAB XC16 C コンパイラユーザガイド (DS50002071) の補遺 G. ビルトイン関数 を参照してください 5.8 EEData からの読み出し この例では EEData を書き込んだ後 EEData のワードを読み出します EEData から 1 ワード読み出すコードは eedata.c 内にあります ( セクション 5.5) コーディングを簡潔にするために以下のようなビルトイン関数を使っています unsigned int builtin_tblpage(const void *p); unsigned int builtin_tbloffset(const void *p); unsigned int builtin_tblrdl(unsigned int offset); これらの関数の詳細は MPLAB XC16 C コンパイラユーザガイド (DS50002071) の補遺 G. ビルトイン関数 を参照してください 5.9 LED へのデータ表示と遅延 3 つのポートが LED に接続しているため デモボード LED へのデータ表示は本デバイスの方が複雑です そのため 表示のために適切なポートピンに各ビットを割り当てる事ができるように データ値全体を割り当てる事ができる共用体データタイプ (LAT_LEDSbits.w) と 個々のビットをアクセスして割り当てる事ができる構造体データタイプ ( 例 : LATAbits.LATA9 = LAT_LEDSbits.LAT_LED0) を使っています 共用体と構造体を生成するコードは LEDs.h 内にあります ( セクション 5.2) ポートピンに LED を割り当てるコードは LEDs.c 内にあります ( セクション 5.5) 実行速度が速いため LED は点滅しているように見えません このため セクション 2. と同様に _delay() 関数で実行速度を遅くします DS50002446B_JP - p.32 2017 Microchip Technology Inc.

A. MPLAB X IDE でのコード実行 最初に以下の手順でプロジェクトを作成します 1. MPLAB X IDE を起動する 2. IDE から [New Project] ウィザードを起動する ([File]>[New Project]) 3. 画面の指示に従って以下の手順でプロジェクトを新規作成する a) プロジェクトの選択 : Microchip Embedded を選択し 次に Standalone Project を選択します b) デバイスの選択 : サンプルコードのデバイスを選択します c) ヘッダの選択 : 何も選択しません d) ツールの選択 : 使用中のハードウェア デバッグツールをシリアル番号 (SN) (SNxxxxxx) で選択します デバッグツール名の下に SN が表示されない場合 そのデバッグツールが正しくインストールされているか確認します 詳細は デバッグツールのマニュアルを参照してください e) プラグインボードの選択 : 何も選択しません f) コンパイラの選択 : XC16 ( 最新バージョン番号 ) を選択します ([bin location]) XC16 の下にコンパイラが表示されない場合 コンパイラが正しくインストール されているか および MPLAB X IDE が実行ファイルを検出できているかを確認 します [Tools]>[Options] を選択し [Build Tools] タブの [Embedded] ボタンを クリックして使用中のコンパイラを確認します 詳細はMPLAB XC16とMPLAB X IDE のマニュアルを参照してください g) プロジェクト名とフォルダの選択 : プロジェクト名を指定します 次に サンプルコードを書き込んだファイルを作成します (MCC を使った場合は除き ます ) 1. [Projects] ウィンドウ内でプロジェクト名を右クリックし [New]>[Empty FIle] を 選択する [New Empty File] ダイアログが開く 2. File name に名前を入力する 3. [Finish] をクリックする 4. 本書のサンプルコードを空白のエディタウィンドウにコピー / ペーストし [File]>[Save] を選択する コードのデバッグ実行を選択するとコードがビルドされ デバイスにダウンロード されて実行されます デモボード上の LED が 1 つおきに点灯します 停止アイコン をクリックすると実行は停止します 図 8: ツールバーアイコン デバッグ実行 停止 2017 Microchip Technology Inc. DS50002446B_JP - p.33

B. ソフトウェアとハードウェアの入手先 本書の MPLAB XC16 プロジェクトには PIC24F PIM を挿した Explorer 16/32 ボードを使います ボードには外部電源から 9 V を供給し 標準の (ICSP ) 通信を使います 開発には MPLAB X IDE を使いました B.1 MPLAB X IDE と MPLAB XC16 C コンパイラの入手先 MPLAB X IDE (v3.45 以降 ) は以下で入手できます http://www.microchip.com/mplab/mplab-x-ide MPLAB XC16 C コンパイラ (v1.26 以降 ) は以下で入手できます http://www.microchip.com/mplab/compilers B.2 MPLAB Code Configurator (MCC) の入手先 MCC (v3.25 以降 ) は以下で入手できます http://www.microchip.com/mplab/mplab-code-configurator B.3 PIC MCU プラグインモジュール (PIM) の入手先 サンプルコード向けの PIC MCU PIM は以下の Microchip 社ウェブページで入手できます PIC24FJ128GA010: http://www.microchip.com/ma240011 PIC24F32KA304: http://www.microchip.com/ma240022 B.4 Explorer 16/32 ボードの入手先と設定方法 Explorer 16/32 開発ボード 回路図 文書は以下のウェブページで入手できます http://www.microchip.com/dm240001-2 ジャンパとスイッチは下表のように設定します 表 1-1: プロジェクト向けのジャンパ / スイッチ選択 ジャンパ / スイッチ 選択 ジャンパ / スイッチ 選択 JP2 ショート J37 オープン J19 オープン J38 オープン J22 オープン J39 既定値 J23 既定値 J41 オープン J25 ショート J42 オープン J26 ショート J43 既定値 J27 オープン J44 既定値 J28 オープン J45 既定値 J29 オープン J50 ショート J33 オープン B.5 Microchip 社製デバッグツールの入手先 エミュレータとデバッガは開発ツールのウェブページで入手できます http://www.microchip.com/development-tools DS50002446B_JP - p.34 2017 Microchip Technology Inc.

Microchip 社製デバイスのコード保護機能に関して以下の点にご注意ください Microchip 社製品は 該当する Microchip 社データシートに記載の仕様を満たしています Microchip 社では 通常の条件ならびに仕様に従って使用した場合 Microchip 社製品のセキュリティレベルは 現在市場に流通している同種製品の中でも最も高度であると考えています しかし コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です 弊社の理解では こうした手法は Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事になります このような行為は知的所有権の侵害に該当する可能性が非常に高いと言えます Microchip 社は コードの保全性に懸念を抱いているお客様と連携し 対応策に取り組んでいきます Microchip 社を含む全ての半導体メーカーで 自社のコードのセキュリティを完全に保証できる企業はありません コード保護機能とは Microchip 社が製品を 解読不能 として保証するものではありません コード保護機能は常に進歩しています Microchip 社では 常に製品のコード保護機能の改善に取り組んでいます Microchip 社のコード保護機能の侵害は デジタルミレニアム著作権法に違反します そのような行為によってソフトウェアまたはその他の著作物に不正なアクセスを受けた場合 デジタルミレニアム著作権法の定めるところにより損害賠償訴訟を起こす権利があります 本書に記載されているデバイスアプリケーション等に関する情報は ユーザの便宜のためにのみ提供されているものであり 更新によって無効とされる事があります お客様のアプリケーションが仕様を満たす事を保証する責任は お客様にあります Microchip 社は 明示的 暗黙的 書面 口頭 法定のいずれであるかを問わず 本書に記載されている情報に関して 状態 品質 性能 商品性 特定目的への適合性をはじめとする いかなる類の表明も保証も行いません Microchip 社は 本書の情報およびその使用に起因する一切の責任を否認します 生命維持装置あるいは生命安全用途に Microchip 社の製品を使用する事は全て購入者のリスクとし また購入者はこれによって発生したあらゆる損害 クレーム 訴訟 費用に関して Microchip 社は擁護され 免責され 損害を受けない事に同意するものとします 特に記載のない限り 暗黙的あるいは明示的を問わず Microchip 社が知的財産権を保有しているライセンスは一切譲渡されません Microchip 社では Chandler および Tempe ( アリゾナ州 ) Gresham ( オレゴン州 ) の本部 設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949: 2009 認証を取得しています Microchip 社の品質システムプロセスおよび手順は PIC MCU および dspic DSC KEELOQ コードホッピングデバイス シリアル EEPROM マイクロペリフェラル 不揮発性メモリ アナログ製品に採用されています さらに 開発システムの設計と製造に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得しています 商標 Microchip 社の名称とロゴ Microchip ロゴ AnyRate AVR AVR logo AVR Freaks BeaconThings BitCloud CryptoMemory CryptoRF dspic FlashFlex flexpwr Heldo JukeBlox KEELOQ KEELOQlogo Kleer LANCheck LINK MD maxstylus maxtouch MediaLB megaavr MOST MOST logo MPLAB OptoLyzer PIC picopower PICSTART PIC 32 logo Prochip Designer QTouch RightTouch SAM-BA SpyNIC SST SST Logo SuperFlash tinyavr UNI/O および XMEGA は米国およびその他の国における Microchip Technology Incorporated の登録商標です ClockWorks Embedded Control Solutions Company EtherSynch Hyper Speed Control HyperLight Load IntelliMOS mtouch Precision Edge および Quiet-Wire は米国における Microchip Technology Incorporated の登録商標です Adjacent Key Suppression AKS Analog-for-the-Digital Age Any Capacitor AnyIn AnyOut BodyCom chipkit chipkit logo CodeGuard CryptoAuthentication CryptoCompanion CryptoController dspicdem dspicdem.net Dynamic Average Matching DAM ECAN EtherGREEN In-Circuit Serial Programming ICSP Inter-Chip Connectivity JitterBlocker KleerNet KleerNet logo Mindi MiWi motorbench MPASM MPF MPLAB Certified logo MPLIB MPLINK MultiTRAK NetDetach Omniscient Code Generation PICDEM PICDEM.net PICkit PICtail PureSilicon QMatrix RightTouch logo REAL ICE Ripple Blocker SAM-ICE Serial Quad I/O SMART- I.S. SQI, SuperSwitcher SuperSwitcher II Total Endurance TSHARC USBCheck VariSense ViewSpan WiperLock Wireless DNA および ZENA は米国およびその他の Microchip Technology Incorporated の商標です SQTP は米国における Microchip Technology Incorporated のサービスマークです Silicon Storage Technology は他の国における Microchip Technology Inc. の登録商標です GestIC は Microchip Technology Inc. の子会社である Microchip Technology Germany II GmbH & Co. & KG 社の他の国における登録商標です その他本書に記載されている商標は各社に帰属します 2017, Microchip Technology Incorporated, All Rights Reserved. ISBN: 978-1-5224-1311-0 2017 Microchip Technology Inc. DS50002446B_JP - p. 35

各国の営業所とサービス 北米本社 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 技術サポート : http://www.microchip.com/ support URL: www.microchip.com アトランタ Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455 オースティン TX Tel: 512-257-3370 ボストン Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088 シカゴ Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 ダラス Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 デトロイト Novi, MI Tel: 248-848-4000 ヒューストン TX Tel: 281-894-5983 インディアナポリス Noblesville, IN Tel: 317-773-8323 Fax: 317-773-5453 Tel: 317-536-2380 ロサンゼルス Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 Tel: 951-273-7800 ローリー NC Tel: 919-844-7510 ニューヨーク NY Tel: 631-435-6000 サンノゼ CA Tel: 408-735-9110 Tel: 408-436-4270 カナダ - トロント Tel: 905-695-1980 Fax: 905-695-2078 アジア / 太平洋アジア太平洋支社 Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon 香港 Tel: 852-2943-5100 Fax: 852-2401-3431 オーストラリア - シドニー Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 中国 - 北京 Tel: 86-10-8569-7000 Fax: 86-10-8528-2104 中国 - 成都 Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 中国 - 重慶 Tel: 86-23-8980-9588 Fax: 86-23-8980-9500 中国 - 東莞 Tel: 86-769-8702-9880 中国 - 広州 Tel: 86-20-8755-8029 中国 - 杭州 Tel: 86-571-8792-8115 Fax: 86-571-8792-8116 中国 - 香港 SAR Tel: 852-2943-5100 Fax: 852-2401-3431 中国 - 南京 Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 中国 - 青島 Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 中国 - 上海 Tel: 86-21-3326-8000 Fax: 86-21-3326-8021 中国 - 瀋陽 Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 中国 - 深圳 Tel: 86-755-8864-2200 Fax: 86-755-8203-1760 中国 - 武漢 Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 中国 - 西安 Tel: 86-29-8833-7252 Fax: 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-8631 Fax: 91-11-4160-8632 インド - プネ Tel: 91-20-3019-1500 日本 - 大阪 Tel: 81-6-6152-7160 Fax: 81-6-6152-9310 日本 - 東京 Tel: 81-3-6880-3770 Fax: 81-3-6880-3771 韓国 - 大邱 Tel: 82-53-744-4301 Fax: 82-53-744-4302 韓国 - ソウル Tel: 82-2-554-7200 Fax: 82-2-558-5932 または 82-2-558-5934 マレーシア - クアラルンプール Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 マレーシア - ペナン Tel: 60-4-227-8870 Fax: 60-4-227-4068 フィリピン - マニラ Tel: 63-2-634-9065 Fax: 63-2-634-9069 シンガポール Tel: 65-6334-8870 Fax: 65-6334-8850 台湾 - 新竹 Tel: 886-3-5778-366 Fax: 886-3-5770-955 台湾 - 高雄 Tel: 886-7-213-7830 台湾 - 台北 Tel: 886-2-2508-8600 Fax: 886-2-2508-0102 タイ - バンコク Tel: 66-2-694-1351 Fax: 66-2-694-1350 ヨーロッパオーストリア - ヴェルス Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 デンマーク - コペンハーゲン Tel: 45-4450-2828 Fax: 45-4485-2829 フィンランド - エスポー Tel: 358-9-4520-820 フランス - パリ Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 フランス - サン=クルー Tel: 33-1-30-60-70-00 ドイツ - ガルヒング Tel: 49-8931-9700 ドイツ - ハーン Tel: 49-2129-3766400 ドイツ - ハイルブロン Tel: 49-7131-67-3636 ドイツ - カールスルーエ Tel: 49-721-625370 ドイツ - ミュンヘン Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 ドイツ - ローゼンハイム Tel: 49-8031-354-560 イスラエル - ラーナナ Tel: 972-9-744-7705 イタリア - ミラノ Tel: 39-0331-742611 Fax: 39-0331-466781 イタリア - ヴェニス Tel: 39-049-7625286 オランダ - ドリューネン Tel: 31-416-690399 Fax: 31-416-690340 ノルウェー - トロンハイム Tel: 47-7289-7561 ポーランド - ワルシャワ Tel: 48-22-3325737 ルーマニア - ブカレスト Tel: 40-21-407-87-50 スペイン - マドリッド Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 スウェーデン - ヨーテボリ Tel: 46-31-704-60-40 スウェーデン - ストックホルム Tel: 46-8-5090-4654 イギリス - ウォーキンガム Tel: 44-118-921-5800 Fax: 44-118-921-5820 11/07/16 DS50002446B_JP - p.36 2017 Microchip Technology Inc.