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

MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための®

注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジナルの英語版をご参照願います。

MPLAB XC16ユーザガイド

組み込み技術者のための MPLAB® XC16 ユーザガイド

はじめに

本書には、CCI (Common Code Interface) を使った 16 ビットデバイスおよび MPLAB® XC16 Cコンパイラ向けの 5 つのサンプルコードを掲載しています。CCI の詳細は『MPLAB XC16 C コンパイラ ユーザガイド』(DS50002071) を参照してください。

これらを使うにはマイクロコントローラとC言語プログラミングに関するある程度の知識が必要です。

1. LED を点灯または消灯させる

2. 遅延関数を使って LED を点滅させる

3. 遅延用に割り込みを使って LED を点滅させる

4. ADC を使ってポテンショメータの値を LED で表示する

5. LED に EEPROM データ値を表示する

A MPLAB X IDEでのコード実行

B ソフトウェアとハードウェアの入手先

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.1

Page 2: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

1. LEDを点灯または消灯させる

以下の例は、PIC24FJ128GA010 プラグイン モジュール (PIM) を挿した Explorer 16/32 開発ボード上のLEDを点灯または消灯します。詳細はセクション B.「ソフトウェアとハードウェアの入手先」を参照してください。

// PIC24FJ128GA010 Configuration Bit Settings

// For more on Configuration Bits, セクション 1.1 参照// 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

// #pragma config statements should precede project file includes.// Use project enums instead of #define for ON and OFF.

#include <xc.h> セクション 1.2 参照

int main(void) {

unsigned char portValue = 0x55; セクション 1.3 参照

// Port A access セクション 1.4 参照

AD1PCFG = 0xFFFF; // set to digital I/O (not analog) TRISA = 0x0000; // set all port bits to be output LATA = portValue; // write to port latch return 0;}

DS50002446C_JP-p.2 2015-2018 Microchip Technology Inc.

Page 3: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

1.1 コンフィグレーション ビット

Microchip 社製デバイスは、各種デバイス機能の動作を設定する ( または有効 / 無効にする ) ためのビットを格納したコンフィグレーション レジスタを備えています。

1.1.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

1.1.2 コンフィグレーション ビットの設定方法

MPLAB X IDE では、[Configuration Bits] ウィンドウを使ってコンフィグレーション ビットを表示 / 設定できます。このウィンドウは、メニューを [Window] > [PIC Memory Views] >[Configuration Bits] と選択すると開きます。

図 1: [CONFIGURATION BITS]ウ ィンドウ

設定を選択した後は、この情報を書き出す先のコードをクリックしてから、[Insert Source Codein Editor] アイコンをクリックして設定を書き出します。結果の例を先のサンプルコードに示しています。このウィンドウの詳細は MPLAB X IDE のマニュアルを参照してください。

Note: コンフィグレーション ビットを正しく設定しないと、デバイスは期待通りに( あるいは全く ) 機能しません。

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.3

Page 4: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

1.2 ヘッダファイル <xc.h>

このヘッダファイルは、ソースファイル内のコードからコンパイラ固有またはデバイス固有の機能を使えるようにします。<xc.h> を含む各種ヘッダファイルは、MPLAB XC16 インストール ディレクトリ内の supportサブディレクトリに保存されています。

選択したデバイスに基づき、コンパイラは xc.h が適切なデバイス固有ヘッダファイルを指定できるようにマクロを設定します。デバイス固有ヘッダをユーザコード内でインクルードしない事が重要です。そうするとコードの移植性が失われます。

1.3 LED 値の変数

LED に書き込む値は、変数 (portValue) も割り当て済みです (LED D3/D5/D7/D9 は ON、LEDD4/D6/D8/D10 は OFF)。デモボード回路図の参照先はセクション B.「ソフトウェアとハードウェアの入手先」を参照してください。

1.4 ポートアクセス

デジタル I/O デバイスピンは周辺モジュール I/O ピンと多重化されている場合があります。デジタル I/O のみを使うため、多重化されている周辺モジュールは無効にします。これには、周辺モジュール レジスタ内のビット値を定義済みの C 変数を使います。これらの変数は、コンパイラの includeディレクトリ内にあるデバイス固有ヘッダファイルに書かれています。どの周辺モジュールがどのピンを共有しているかは、各デバイスのデータシートを参照してください。

「1. LED を点灯または消灯させる」サンプルコードのデバイスでは、ポート 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

DS50002446C_JP-p.4 2015-2018 Microchip Technology Inc.

Page 5: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

2. 遅延関数を使って LEDを点滅させる

以下のサンプルコードでは、前のサンプルコードの一部を変更しています。このサンプルコードは LED を単純に点灯するのではなく、自動的に点滅させます。

// 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

// #pragma config statements should precede project file includes.// Use project enums instead of #define for ON and OFF.

#include <xc.h>#include <libpic30.h> セクション 2.1 参照

int main(void) {

unsigned char portValue;

// 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 参照

portValue = 0x55; LATA = portValue; // write to port latch

// delay value change セクション 2.3 参照

__delay32(1500000); // delay in instruction cycles

portValue = 0xAA; LATA = portValue; // write to port latch

__delay32(1500000); // delay in instruction cycles

} return -1;}

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.5

Page 6: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

2.1 ライブラリ ヘッダファイル

この例では、libpic30 コンパイラ ライブラリの __delay32()関数を使います。このライブラリにアクセスするには、libpic30.hが含まれている必要があります。

2.2 while()ループと変数値

ポート A の LED を点滅させるため、最初に変数 portValue に 0x55 を代入して、その値をポートラッチに書きます (LED 0/2/4/6 が ON)。次にその補数 0xAAを同変数に代入し、ポートラッチに書きます (LED 1/3/5/7 が ON)。ループは while(1) { }を使って実行します。

正常動作では while ループは終了しないため、main 関数が戻るという事はエラーがあった事を意味しています。従って、エラーを示す -1が返ります。

2.3 __delay32()関数

実行速度が速いため、LED は点滅しているように見えません。このため実行速度を遅くする必要があります。__delay32()はコンパイラが使えるライブラリ関数です。

遅延関数の詳細は『16-Bit Language Tools Libraries Reference Manual』(DS50001456) を参照してください。

DS50002446C_JP-p.6 2015-2018 Microchip Technology Inc.

Page 7: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

3. 遅延用に割り込みを使って LEDを点滅させる

以下のサンプルコードでは、最初のサンプルコードの一部を変更しています。そこではループの実行を遅らせるために遅延関数を使いましたが、それによってプログラムにデッドタイムが生じました。これを防ぐため、以下のサンプルコードではタイマ割り込みを使います。

// 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

// #pragma config statements should precede project file includes.// Use project enums instead of #define for ON and OFF.

#include <xc.h>

// Interrupt function (CCI) セクション 3.1 参照

void __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;}

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.7

Page 8: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

3.1 割り込み関数

CCI (Common Code Interface) の __interrupt指定子を属性を使うと、関数を割り込み関数にできます。PSV (Program Space Visibility) も指定する必要があります。この簡単な例ではPSV は使っていません。PSV の詳細は『MPLAB® XC16 C コンパイラ ユーザガイド』(DS50002071) を参照してください。

Timer 1 用の主割り込みベクタ _T1Interrupt() を使います。各デバイスの割り込みベクタテーブルは、インストールしたコンパイラの docsディレクトリに収められています。

この割り込み関数では、Timer1 が割り込みを生成するとカウンタ portValueがインクリメントします。

3.2 Timer1 の設定

タイマの設定とタイマ割り込みの有効化のためのコードを main ルーチンに追加する必要があります。また、ラッチへの代入のための変数値の変更は割り込みサービスルーチンで行います。

DS50002446C_JP-p.8 2015-2018 Microchip Technology Inc.

Page 9: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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 ウェブページでご覧になれます。

https://www.microchip.com/mplab/mplab-code-configurator

このサンプルコードを生成するために使った MCC の設定を以下の図に示します。

図 2: ADCプ ロジェクト リソース - システム モジュール

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.9

Page 10: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 3: ADCプ ロジェクトのシステム モジュール設定

DS50002446C_JP-p.10 2015-2018 Microchip Technology Inc.

Page 11: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 4: ADCプ ロジェクトの ADC1選 択

PIC24/dsPIC33/PIC32MM MCU を選択すると、[Easy Setup] 画面からシステム モジュールの詳細を直接設定できます。

Foundation Services Library はより抽象化されており、通常は周辺モジュール利用の基本機能を提供し、設定プロセスを容易にします。

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.11

Page 12: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 5: ADCプ ロジェクトの ADC1設 定

図 6: ADCプ ロジェクト ADC1ピ ンリソース

図 6 に、選択後の RB5 から AN5 のマップ表示を示します。

DS50002446C_JP-p.12 2015-2018 Microchip Technology Inc.

Page 13: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 7: ADCプ ロジェクトのリソース - ピンモジュール

図 8: ADCプ ロジェクトの I/Oピ ン設定

図 9 でピン RA0:7 が選択されている場合、これらのピンは上図のウィンドウに表示されます。

RB5 は図 6 で選択済みです。

RB6 と RB7 をデバッグ通信のためにあらかじめ選択しておきます。

ウィンドウ内にピン設定が表示されたら、各ピンの設定を表示および選択できます。

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.13

Page 14: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 9: ADCプ ロジェクトの I/Oピ ンリソース

DS50002446C_JP-p.14 2015-2018 Microchip Technology Inc.

Page 15: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 10: ADCプ ロジェクトのピンパッケージ

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.15

Page 16: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

以上のようにコードを設定した後に、[Project Resources] ウィンドウの [Generate] ボタンをクリックします ( 図 7)。MCC はモジュール形式でコードを生成します。すなわち main、システム、周辺モジュール コードは全て別々のファイルです。各周辺モジュールのヘッダファイルも別々です。

潜在的なエラーを捉えるためにトラップファイルが生成されます。このアプリケーションでは割り込みは使いません。しかし、将来用に割り込みマネージャ ファイルが生成されます。

プログラムに機能を追加する場合、必ず main.cを編集する必要があります。また、そのコードに必要な全ての関数またはマクロが生成されたファイル内に含まれているかどうか確認する必要があります。

図 11: MCCが 生成したコードの ADCプ ロジェクト ツリー

DS50002446C_JP-p.16 2015-2018 Microchip Technology Inc.

Page 17: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 12: MCCが 生成した ADCコ ード

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.17

Page 18: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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 セクション 4.3 参照 LATA = value;

} return -1;}/** End of File */

DS50002446C_JP-p.18 2015-2018 Microchip Technology Inc.

Page 19: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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 に表示されます。

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.19

Page 20: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

5. LEDに EEPROMデータ値を表示する

このサンプルコードでは、これまでとは異なる Microchip 社製デバイス (PIC24F32KA304 PIM)と Explorer 16/32 ボードを使って EEPROM データ (EEData) を読み書きします。 #TOIN# 読み取った値は、3 つのポートからアクセスされる LED に表示します。

コードの一部は MPLAB Code Configurator (MCC) で生成します。MCC のインストール方法とユーザガイドの入手方法は以下を参照してください。セクション 4.「ADC を使ってポテンショメータの値を LED で表示する」に設定して無効にできます。

このサンプルコードでは、システム ( 例 : オシレータ速度、コンフィグレーション ビット ) とポート A、B、C の汎用 I/O (GPIO) を設定するのに MCC GUI を使いました ( 図 13)。しかし現時点では、MCC の 16 ビットデバイスに利用できる EEData デバイスリソースはありません。

EEData モジュールを使うためのコードは、デバイスのデータシートと『dsPIC33/PIC24 ファミリ リファレンス マニュアル』のセクション 5.「データ EEPROM」を参照してください。どちらも以下のデバイス ウェブページから入手できます。

https://www.microchip.com/PIC24F32KA304

図 13: EEDATAプ ロジェクトのリソース - システム モジュール

DS50002446C_JP-p.20 2015-2018 Microchip Technology Inc.

Page 21: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 14: EEDATAプ ロジェクトのシステム モジュール設定

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.21

Page 22: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 15: EEDATAプ ロジェクトのリソース - ピンモジュール

図 16: EEDATAプ ロジェクトの I/Oピ ン設定

図 17 でピン RA9:11、RB2:3、RB12、RC8:9 が選択されている場合、これらのピンは上のウィンドウに表示されます。

RB6 と RB7 をデバッグ通信のためにあらかじめ選択しておきます。

ウィンドウ内にピン設定が表示されたら、各ピンに対してピン設定を表示および選択できます。

DS50002446C_JP-p.22 2015-2018 Microchip Technology Inc.

Page 23: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

図 17: EEDATAプ ロジェクトの I/Oピ ンリソース

図 18: EEDATAプ ロジェクトのピンパッケージ

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.23

Page 24: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

以上のようにコードを設定後、[Project Resources] ウィンドウの [Generate] ボタンをクリックします。MCC はモジュール形式のコードを生成します。すなわち main、システム、周辺モジュール コードは全て別々のファイルです。各周辺モジュールのヘッダファイルも別々です。

潜在的なエラーを捉えるためにトラップファイルが生成されます。このアプリケーションでは割り込みは使いません。しかし、将来用に割り込みマネージャ ファイルが生成されます。

図 19: MCCに よって生成されるコードの EEDATAプ ロジェクト ツリー

DS50002446C_JP-p.24 2015-2018 Microchip Technology Inc.

Page 25: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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) はプロジェクトに追加済みです。

図 20 に、最終的なプロジェクト ツリーを示します。

図 20: EEDATAプ ロジェクト ツリー - 最終

プログラムに機能を追加する場合、必ず main.cを編集する必要があります ( セクション 5.6)。生成されたファイルまたは追加ファイル内にある関数またはマクロは、プログラムコードに必要ですので再確認してください。

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.25

Page 26: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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;

}

DS50002446C_JP-p.26 2015-2018 Microchip Technology Inc.

Page 27: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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 */

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.27

Page 28: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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) {

_LEDS = value; _LATA9 = _LED0; _LATA10 = _LED1; _LATA11 = _LED2; _LATC8 = _LED3; _LATC9 = _LED4; _LATB12 = _LED5; _LATB2 = _LED6; _LATB3 = _LED7;

}

/** End of File */

DS50002446C_JP-p.28 2015-2018 Microchip Technology Inc.

Page 29: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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 */

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.29

Page 30: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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);}

DS50002446C_JP-p.30 2015-2018 Microchip Technology Inc.

Page 31: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

/******************************************************************** * 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 */

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.31

Page 32: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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(); // 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); // Delay change on LEDs so visible __delay32(IC_DELAY); // delay in instruction cycles }

return -1;}/** End of File */

セクション 5.7 参照

セクション 5.8 参照

セクション 5.9 参照

DS50002446C_JP-p.32 2015-2018 Microchip Technology Inc.

Page 33: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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()関数で実行速度を遅くします。

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.33

Page 34: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

A. MPLAB X IDEでのコード実行

A.1 プロジェクトの作成

1. MPLAB X IDE を起動します。

2. IDE から [New Project] ウィザードを起動します ([File] > [New Project])。

3. 画面の指示に従って以下の手順で新しいプロジェクトを作成します。

a) プロジェクトの選択 : 「Microchip Embedded」を選択し、次に「Standalone Project」を選択します。

b) デバイスの選択 : サンプルコードのデバイスを選択します。

c) ヘッダの選択 : 何も選択しません。

d) ツールの選択 : 使用するハードウェア デバッグツールのシリアル番号 (SNxxxxxx)を選択します。デバッグツール名の下にシリアル番号 (SN) が表示されない場合、そのデバッグツールが正しくインストールされているか確認します。詳細はデバッグツールのマニュアルを参照してください。

e) プラグインボードの選択 : 何も選択しません。

f) コンパイラの選択 : XC16( 最新バージョン番号 ) を選択します ([bin location])。XC16 の下にコンパイラが表示されない場合、コンパイラが正しくインストールされているか、および MPLAB X IDE が実行ファイルを検出できているかを確認します。[Tools] > [Options] を選択し、[Build Tools] タブの [Embedded] ボタンをクリックして使用中のコンパイラを確認します。詳細は MPLAB XC16 と MPLAB X IDE のマニュアルを参照してください。

g) プロジェクト名とフォルダの選択 : プロジェクト名を指定します。

A.2 CCI (Common Compiler Interface) の選択

プロジェクト作成後、[Projects] ウィンドウでプロジェクト名を右クリックして [Properties] を選択します。開いたダイアログで「xc16-gcc」カテゴリをクリックし、[Preprocessing andmessages] カテゴリを選択して [Use CCI syntax] にチェックを入れます。[OK] ボタンをクリックします。

A.3 サンプルコードのデバッグ

使用中のサンプルコードに基づいて以下のどちらかを行います。

1. 例 1、2、3 の場合、サンプルコードを書き込んだファイルを作成します。

a) [Projects]ウィンドウ内で「Source Files」フォルダを右クリックします。[New] >[main.c]を選択します。[New main.c]ダイアログが開きます。

b) [File name]に名前を入力します。例えばnと入力します(nはサンプル番号)。

c) [Finish]をクリックします。ファイルが[Editor]ウィンドウで開きます。

d) ファイル内のテンプレート コードを削除します。その後、本書のサンプルコードを空白のエディタ ウィンドウにコピー/ペーストし、[File] > [Save]を選択します。

2. 例 4、5 の場合、各セクションの指示に従い MCC でコードを生成し、表示されたコードを使って main.c等のファイルを編集します。

最後に [Debug Run] を選択します。これによりコードをビルドしてデバイスにダウンロードし、実行します。デモボードLEDの出力を確認します。実行を終了するには[Halt]をクリックします。

図 21: ツールバー アイコン

デバッグ実行 停止

DS50002446C_JP-p.34 2015-2018 Microchip Technology Inc.

Page 35: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

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 (v5.10 以降 ) は以下で入手できます。

https://www.microchip.com/mplab/mplab-x-ide

MPLAB XC16 C コンパイラ (v1.35 以降 ) は以下で入手できます。

https://www.microchip.com/mplab/compilers

B.2 MPLAB Code Configurator (MCC) の入手先

MCC (v3.66 以降 ) は以下で入手できます。

https://www.microchip.com/mplab/mplab-code-configurator

B.3 PIC® MCU プラグイン モジュール (PIM) の入手先

サンプルコード向けの PIC MCU PIM は以下の Microchip 社ウェブページで入手できます。

PIC24FJ128GA010: https://www.microchip.com/MA240011

PIC24F32KA304: https://www.microchip.com/MA240022

B.4 Explorer 16/32 ボードの入手先と設定方法

Explorer 16/32 開発ボード、回路図、文書は以下のウェブページで入手できます。

https://www.microchip.com/dm240001-2

ジャンパとスイッチは下表の通りに設定します。

B.5 Microchip 社製デバッグツールの入手先

エミュレータとデバッガは以下の開発ツール ウェブページで入手できます。

https://www.microchip.com/development-tools

表 1-1: プロジェクト向けのジャンパ / スイッチの選択

ジャンパ / スイッチ 選択 ジャンパ / スイッチ 選択

JP2 クローズ J37 オープン

J19 オープン J38 オープン

J22 オープン J39 既定値

J23 既定値 J41 オープン

J25 クローズ J42 オープン

J26 クローズ J43 既定値

J27 オープン J44 既定値

J28 オープン J45 既定値

J29 オープン J50 クローズ

J33 オープン

2015-2018 Microchip Technology Inc. DS50002446C_JP-p.35

Page 36: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

組み込み技術者のための MPLAB® XC16 ユーザガイド

NOTE:

DS50002446C_JP-p.36 2015-2018 Microchip Technology Inc.

Page 37: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

Microchip社製デバイスのコード保護機能に関して以下の点にご注意ください。

• Microchip社製品は、該当するMicrochip社データシートに記載の仕様を満たしています。

• Microchip社では、通常の条件ならびに仕様に従って使用した場合、Microchip社製品のセキュリティ レベルは、現在市場に

流通している同種製品の中でも最も高度であると考えています。

• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解では、こうした手法

は全てMicrochip社データシートにある動作仕様書以外の方法でMicrochip社製品を使用する事になります。このような行為

は知的所有権の侵害に該当する可能性が非常に高いと言えます。

• Microchip社はコードの保全性に懸念を抱いているお客様と連携して対応策に取り組んでいきます。

• Microchip社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保

護機能とは、Microchip社が製品を「解読不能」として保証するものではありません。

コード保護機能は常に進歩しています。Microchip社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip社の

コード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著作

物に不正なアクセスを受けた場合、デジタル ミレニアム著作権法の定める所により損害賠償訴訟を起こす権利があります。

本書に記載されているデバイス アプリケーション等に関する

情報は、ユーザの便宜のためにのみ提供されているものであ

り、更新によって無効とされる事があります。お客様のアプ

リケーションが仕様を満たす事を保証する責任は、お客様に

あります。Microchip 社は、明示的、暗黙的、書面、口頭、法

定のいずれであるかを問わず、本書に記載されている情報に

関して、状態、品質、性能、商品性、特定目的への適合性を

はじめとする、いかなる類の表明も保証も行いません。

Microchip 社は、本書の情報およびその使用に起因する一切の

責任を否認します。Microchip 社の明示的な書面による承認な

しに、生命維持装置あるいは生命安全用途に Microchip 社の製

品を使用する事は全て購入者のリスクとし、また購入者はこ

れによって発生したあらゆる損害、クレーム、訴訟、費用に

関して、Microchip 社は擁護され、免責され、損害をうけない

事に同意するものとします。暗黙的あるいは明示的を問わず、

Microchip社が知的財産権を保有しているライセンスは一切譲

渡されません。

Microchip 社では、Chandler および Tempe( アリゾナ州 )、Gresham

2015-2018 Microchip Technology Inc.

( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザイン センターが ISO/TS-16949:2009 認証を取得しています。Microchip 社の品質システムプロセスおよび手順は、PIC® MCU および dsPIC® DSCs、KEELOQ® コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。 さらに、開発システムの設計と製造に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得しています。

QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV

== ISO/TS 16949 ==

商標

Microchip 社の名称とロゴ、Microchip ロゴ、AnyRate、AVR、

AVR ロゴ、AVR Freaks、BitCloud、chipKIT、chipKIT ロゴ、

CryptoMemory、CryptoRF、dsPIC、FlashFlex、flexPWR、

Heldo、JukeBlox、KeeLoq、Kleer、LANCheck、LINK MD、

maXStylus、maXTouch、MediaLB、megaAVR、MOST、MOST ロゴ、MPLAB、OptoLyzer、PIC、picoPower、PICSTART、PIC32 ロゴ、Prochip Designer、QTouch、SAM-BA、SpyNIC、SST、SST ロゴ、SuperFlash、tinyAVR、UNI/O、XMEGA は米国およびその他の国における Microchip Technology Incorporated の登録商標です。

ClockWorks、The 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、CodeGuard、CryptoAuthentication、CryptoAutomotive、CryptoCompanion、CryptoController、dsPICDEM、dsPICDEM.net、Dynamic Average Matching、DAM、ECAN、EtherGREEN、In-Circuit Serial Programming、ICSP、INICnet、Inter-Chip Connectivity、JitterBlocker、KleerNet、KleerNet ロゴ、memBrain、Mindi、MiWi、motorBench、MPASM、MPF、MPLAB Certified ロゴ、

MPLIB、MPLINK、MultiTRAK、NetDetach、Omniscient Code Generation、PICDEM、PICDEM.net、PICkit、PICtail、PowerSmart、PureSilicon、QMatrix、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の登

録商標です。

その他の商標は各社に帰属します。

© 2018, Microchip Technology Incorporated, All Rights Reserved.

ISBN: 978-1-5224-4999-7

DS50002446C_JP-p.37

Page 38: MPLAB XC16 UG EE - Microchip Technologyww1.microchip.com/downloads/jp/DeviceDoc/50002446C_JP.pdfDS50002446C_JP-p.4 2015-2018 Microchip Technology Inc. 1.2 ヘッダファイル

DS50002446C_JP-p.38 2015-2018 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, 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-8323Fax: 317-773-5453Tel: 317-536-2380

ロサンゼルスMission Viejo, CA Tel: 949-462-9523Fax: 949-462-9608Tel: 951-273-7800

ローリー、NC Tel: 919-844-7510

ニューヨーク、NY Tel: 631-435-6000

サンノゼ、CA Tel: 408-735-9110Tel: 408-436-4270

カナダ - トロントTel: 905-695-1980 Fax: 905-695-2078

アジア/太平洋

オーストラリア - シドニーTel: 61-2-9868-6733

中国 - 北京Tel: 86-10-8569-7000

中国 - 成都Tel: 86-28-8665-5511

中国 - 重慶Tel: 86-23-8980-9588

中国 - 東莞Tel: 86-769-8702-9880

中国 - 広州Tel: 86-20-8755-8029

中国 - 杭州Tel: 86-571-8792-8115

中国 - 香港SARTel: 852-2943-5100

中国 - 南京Tel: 86-25-8473-2460

中国 - 青島Tel: 86-532-8502-7355

中国 - 上海Tel: 86-21-3326-8000

中国 - 瀋陽Tel: 86-24-2334-2829

中国 - 深圳Tel: 86-755-8864-2200

中国 - 蘇州Tel: 86-186-6233-1526

中国 - 武漢Tel: 86-27-5980-5300

中国 - 西安Tel: 86-29-8833-7252

中国 - 厦門Tel: 86-592-2388138

中国 - 珠海Tel: 86-756-3210040

アジア/太平洋

インド - バンガロールTel: 91-80-3090-4444

インド - ニューデリーTel: 91-11-4160-8631

インド - プネTel: 91-20-4121-0141

日本 - 大阪Tel: 81-6-6152-7160

日本 - 東京Tel: 81-3-6880-3770

韓国 - 大邱Tel: 82-53-744-4301

韓国 - ソウルTel: 82-2-554-7200

マレーシア - クアラルンプールTel: 60-3-7651-7906

マレーシア - ペナンTel: 60-4-227-8870

フィリピン - マニラTel: 63-2-634-9065

シンガポールTel: 65-6334-8870

台湾 - 新竹Tel: 886-3-577-8366

台湾 - 高雄Tel: 886-7-213-7830

台湾 - 台北Tel: 886-2-2508-8600

タイ - バンコクTel: 66-2-694-1351

ベトナム - ホーチミンTel: 84-28-5448-2100

ヨーロッパ

オーストリア - ヴェルスTel: 43-7242-2244-39Fax: 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: 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-7288-4388

ポーランド - ワルシャワTel: 48-22-3325737

ルーマニア - ブカレストTel: 40-21-407-87-50

スペイン - マドリッドTel: 34-91-708-08-90Fax: 34-91-708-08-91

スウェーデン - ヨーテボリTel: 46-31-704-60-40

スウェーデン - ストックホルムTel: 46-8-5090-4654

イギリス - ウォーキンガムTel: 44-118-921-5800Fax: 44-118-921-5820

各国の営業所とサービス

2018/08/15