pic18fx525/x620 data sheet -...

422
2010 Microchip Technology Inc. Preliminary DS41350D_JP PIC18F/LF1XK50 データシート 20 ピン USB フラッシュ マイクロコントローラ nanoWatt XLP テクノロジ対応 ご注意:この日本語版ドキュメントは、参考資料としてご使用の上、最新情報に つきましては、必ず英語版オリジナルをご参照いただきますようお願い します。

Upload: phungnhu

Post on 30-Aug-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

2010 Microchip Technology Inc. Preliminary DS41350D_JP

PIC18F/LF1XK50データシート

20ピンUSBフラッシュ

マイクロコントローラ

nanoWatt XLPテクノロジ対応

ご注意:この日本語版ドキュメントは、参考資料としてご使用の上、 新情報につきましては、必ず英語版オリジナルをご参照いただきますようお願いします。

Page 2: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

マイクロチップ社製デバイスのコード保護機能について以下の点にご注意ください。

• マイクロチップ社製品は、該当するマイクロチップ社データシートに記載の仕様を満たしています。

• マイクロチップ社では、通常の条件ならびに仕様に従って使用した場合、マイクロチップ社製品のセキュリティ レベルは、

現在市場に流通している同種製品の中でも も高度であると考えています。

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

はマイクロチップ社データシートにある動作仕様書以外の方法でマイクロチップ社製品を使用する事になります。このような

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

• マイクロチップ社は、コードの保全性に懸念を抱くお客様と連携し、対応策に取り組んでいきます。

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

ド保護機能とは、マイクロチップ社が製品を「解読不能」として保証するものではありません。

コード保護機能は常に進歩しています。マイクロチップ社では、常に製品のコード保護機能の改善に取り組んでいます。マイクロ

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

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

ります。

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

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

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

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

にあります。マイクロチップ社は、明示的、暗黙的、書面、

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

る情報に関して、状態、品質、性能、商品性、特定目的への

適合性をはじめとする、いかなる類の表明も保証も行いませ

ん。マイクロチップ社は、本書の情報およびその使用に起因

する一切の責任を否認します。マイクロチップ社の明示的な

書面による承認なしに、生命維持装置あるいは生命安全用途

にマイクロチップ社の製品を使用する事は全て購入者のリス

クとし、また購入者はこれによって発生したあらゆる損害、

クレーム、訴訟、費用に関して、マイクロチップ社は擁護さ

れ、免責され、損害をうけない事に同意するものとします。

暗黙的あるいは明示的を問わず、マイクロチップ社が知的財

産権を保有しているライセンスは一切譲渡されません。

DS41350D_JP - p. 2 Prelimin

商標

マイクロチップ社の名称と Microchip ロゴ、dsPIC、

KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、UNI/O は、米国およびその

他の国におけるマイクロチップ・テクノロジー社の登録商標

です。

FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MXDEV、MXLAB、SEEVAL、Embedded Control Solutions Company は、米国におけるマイクロチッ

プ・テクノロジー社の登録商標です。

Analog-for-the-Digital Age、Application Maestro、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPLAB Certified ロゴ、MPLIB、MPLINK、mTouch、Octopus、Omniscient Code Generation、PICC、

PICC-18、PICDEM、PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、Total Endurance、TSHARC、

UniWinDriver、WiperLock、ZENA は、米国およびその他の

国におけるマイクロチップ・テクノロジー社の商標です。

SQTP は、米国におけるマイクロチップ・テクノロジー社の

サービス マークです。

その他、本書に記載されている商標は各社に帰属します。

© 2010, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved.

本書は再生紙を使用しています。

ISBN: 978-1-60932-380-6

マイクロチップ社では、Chandler および Tempe ( アリゾナ州 )、

ary 2010 Microchip Technology Inc.

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

Page 3: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50nanoWatt XLP テクノロジ採用 20 ピン USB フラッシュ マイクロコントローラ

USB (Universal Serial Bus) 機能 : • USB V2.0 準拠の SIE• フルスピード(12 Mb/s)およびロースピード(1.5 Mb/s)• コントロール、インタラプト、アイソクロナス、 バルク転送をサポート

• 大16個(双方向8個)のエンドポイントをサポート• 256 バイトの USB 用デュアルアクセス RAM• D+/D- の入力変化割り込みにより、USB ホストへの

物理的接続を検出

高性能 RISC CPU: • C コンパイラ向けに 適化されたアーキテクチャ

- リエントラント コードを 適化するために設計された、オプションの拡張命令セット

- 256 バイトのデータ EEPROM- 大16 KBのリニアなプログラム メモリ アドレス構成

- 大768バイトのリニアなデータメモリ アドレス構成

• 優先度付きの割り込み• 8 x 8 シングルサイクル ハードウェア乗算器

柔軟なオシレータ構造 : • USBモジュールよりも低速でコアを駆動するための

CPU クロック分周器• 16 MHz の内部オシレータ ブロック :

- ソフトウェアによって選択可能な周波数 : 31 kHz~ 16 MHz

- PLL を併用する事で 31 kHz ~ 32 MHz の幅広いクロック速度に対応

- 周波数ドリフトを補償するユーザ調整機能• 4 種類の水晶振動子モード : 大 48 MHz• 外部クロックモード : 大 48 MHz• 4X PLL (Phase Lock Loop)• 32 kHz 動作の Timer1 によるセカンダリ オシレータ• フェイルセーフ クロック モニタ :

- プライマリまたはセカンダリ オシレータが停止した場合にも安全なシャットダウンが可能

• オシレータの 2 段階起動

特殊なマイクロコントローラ機能 :

• 5.5 V 動作 – PIC18F1XK50• 1.8 ~ 3.6 V 動作 – PIC18LF1XK50• ソフトウェア制御による自己プログラム可能• プログラム可能なブラウンアウト リセット (BOR)

- ソフトウェアによるイネーブルが可能なオプション• 拡張ウォッチドッグ タイマ (WDT)

- 周期をプログラム可能 : 4 ms ~ 131 s• 2 本のピンを使用する、3 V 単一電源インサーキットシリアル プログラミング (ICSP)

nanoWatt XLP による PIC18LF1XK50 の超低消費電力管理 : • スリープモード : 24 nA• ウォッチドッグ タイマ : 450 nA• Timer1 オシレータ : 790 nA @ 32 kHz

アナログ機能 :

• A/D コンバータ (ADC) モジュール : - 分解能 : 10 ビット、外部チャンネル数 : 9- 自動アクイジション機能- スリープ時も変換可能- 1.024 V の内部固定電圧リファレンス (FVR) チャンネル

- 独立した入力マルチプレクサ• デュアル アナログ コンパレータ

- レールツーレール動作- 独立した入力マルチプレクサ

• 電圧リファレンス モジュール : - 16段階のプログラム可能 (VDDに対する%を指定)- VREF ピンによる 2 つの 16 レベル電圧レンジ- 3 つのレベルにプログラム可能な固定電圧リファレンス (FVR)

• 内蔵の 3.2 V LDO レギュレータ – (PIC18F1XK50)

周辺機能の特長 : • 14 本の I/O ピンおよび 1 本の入力専用ピン :

- 高電流シンク / ソース : 25 mA/25 mA- 7 つのプログラム可能なウィーク プルアップ- 7 本のプログラム可能な状態変化割り込みピン- 3 つのプログラム可能な外部割り込み- プログラム可能なスルーレート

• 拡張キャプチャ/コンペア/PWM (ECCP)モジュール: - 1、2、3、4 ついずれかの PWM 出力- 選択可能な極性- プログラム可能なデッドタイム- 自動シャットダウンおよび自動再起動

• MSSP (Master Synchronous Serial Port)モジュール :- 3 線式 SPI (4 つのモードを全てサポート )- I2C™ マスタおよびスレーブモード ( スレーブモード アドレス マスキング )

• 拡張 USART (Enhanced Universal Synchronous Asynchronous Receiver Transmitter) モジュール :- RS-485、RS-232、LIN 2.0 をサポート- 内部オシレータによる RS-232 動作- 自動 baud レート検出- ブレークによる自動ウェイクアップ

• SR ラッチモード

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 3

Page 4: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

-

ピン配置図

ピン配置図

デバイス

プログラムメモリ データメモリ

I/O(1)

10ビ

ット

A/D

(チャ

ンネ

ル数

)(2)

ECCP(PWM)

MSSP

EU

SA

RT

コンパ

レー

タイマ

8/16

ビッ

USB

フラッ

シュ

(バイ

ト)

シングルワード命令数 S

RA

M(バイ

ト)

EEPROM( バイト )

SPI マスタI2C™

PIC18F13K50/PIC18LF13K50

8 K 4096 512(3) 256 15 11 1 Y Y 1 2 1/3 Y

PIC18F14K50/PIC18LF14K50

16 K 8192 768(3) 256 15 11 1 Y Y 1 2 1/3 Y

Note 1: 1 本は入力専用です。

2: 内部固定電圧リファレンス (FVR) とプログラマブル電圧リファレンス (CVREF) を含むチャンネル数です。

3: USB モジュールが使用するデュアルポート RAM を含むバイト数です。この RAM はデータメモリとしても使われます。

20-pin PDIP, SSOP, SOIC (300 MIL)

10

2

345

6

1

87

9

111213

141516

1920

1817

VDD

RA5/IOCA5/OSC1/CLKINRA4/AN3/IOCA3/OSC2/CLKOUT

RA3/IOCA3/MCLR/VPP

RC5/CCP1/P1A/T0CKIRC4/P1B/C12OUT/SRQ

RC3/AN7/P1C/C12IN3-/PGMRC6/AN8/SS/T13CKI/T1OSCI

RC7/AN9/SDO/T1OSCO

RB7/IOCB7/TX/CK

VSS

RA0/IOCA0/D+/PGDRA1/IOCA1/D-/PGCVUSBRC0/AN4/C12IN+/INT0/VREF+RC1/AN5/C12IN1-/INT1/VREF-RC2/AN6/P1D/C12IN2-/CVREF/INT2RB4/AN10/IOCB4/SDI/SDARB5/AN11/IOCB5/RX/DTRB6/IOCB6/SCK/SCLP

IC18

F/L

F1X

K5

0

20-pin QFN (5x5)

8 9

23

11415

16

10

11

6

1213

17181920

7

54

PIC18F1XK50/PIC18LF1XK50

RA3/MCLR/VPP

RC5/CCP1/P1A/T0CKIRC4/P1B/C12OUT/SRQ

RC3/AN7/P1C/C12IN3-/PGMRC6/AN8/SS/T13CKI/T1OSCI

RC

7/A

N9

/SD

O/T

1O

SC

OR

B7/

TX

/CK

RB

4/A

N10

/SD

I/S

DA

RB

5/A

N11

/RX

/DT

RB

6/S

CK

/SC

L

RC2/AN6/P1D/C12IN2-/CVREF/INT2RC1/AN1/C12IN1-/INT1/VREF-RC0/AN4/C12IN+/INT0/VREF+VUSBRA1/D-/PGC

RA

0/D

+/P

GD

Vss

VD

D

RA

4/A

N3

/OS

C2

/CL

KO

RA

5/O

SC

1/C

LK

I

DS41350D_JP - p. 4 Preliminary 2010 Microchip Technology Inc.

Page 5: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 1: PIC18F/LF1XK50 のピンアサイン概要

ピン

I/O

アナ

ログ

コンパ

レータ

基準

EC

CP

EU

SA

RT

MS

SP

タイマ

割り

込み

プル

アッ

US

B

基本

19 RA0 IOCA0 D+ PGD

18 RA1 IOCA1 D- PGC

4 RA3(1) IOCA3 Y MCLR/VPP

3 RA4 AN3 IOCA4 Y OSC2/CLKOUT

2 RA5 IOCA5 Y OSC1/CLKIN

13 RB4 AN10 SDI/SDA IOCB4 Y

12 RB5 AN11 RX/DT IOCB5 Y

11 RB6 SCL/SCK IOCB6 Y

10 RB7 TX/CK IOCB7 Y

16 RC0 AN4 C12IN+ VREF+ INT0

15 RC1 AN5 C12IN1- VREF- INT1

14 RC2 AN6 C12IN2- CVREF P1D INT2

7 RC3 AN7 C12IN3- P1C PGM

6 RC4 C12OUT P1B SRQ

5 RC5 CCP1/P1A T0CKI

8 RC6 AN8 SS T13CKI/T1OSCI

9 RC7 AN9 SDO T1OSCO

17 VUSB

1 VDD

20 VSS

Note 1: 入力専用

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 5

Page 6: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

目次

1.0 デバイスの概要 ............................................................................................................................................................................ 92.0 オシレータ モジュール .............................................................................................................................................................. 153.0 メモリ構成 ................................................................................................................................................................................. 294.0 フラッシュ プログラムメモリ.................................................................................................................................................... 515.0 データ EEPROM メモリ ............................................................................................................................................................ 616.0 8 x 8 ハードウェア乗算器 .......................................................................................................................................................... 657.0 割り込み ..................................................................................................................................................................................... 678.0 低ドロップアウト (LDO) 電圧レギュレータ .............................................................................................................................. 819.0 I/O ポート ................................................................................................................................................................................... 8310.0 Timer0 モジュール ................................................................................................................................................................... 10111.0 Timer1 モジュール ................................................................................................................................................................... 10512.0 Timer2 モジュール ................................................................................................................................................................... 11113.0 Timer3 モジュール ................................................................................................................................................................... 11314.0 拡張キャプチャ / コンペア /PWM (ECCP) モジュール ............................................................................................................ 11715.0 マスタ同期シリアルポート (MSSP) モジュール ...................................................................................................................... 13916.0 拡張 USART (EUSART: Enhanced Universal Synchronous Asynchronous Receiver Transmitter)......................................... 18317.0 A/D コンバータ (ADC) モジュール........................................................................................................................................... 21118.0 コンパレータ モジュール ......................................................................................................................................................... 22519.0 電力管理モード ........................................................................................................................................................................ 23720.0 SR ラッチ................................................................................................................................................................................. 24321.0 電圧リファレンス..................................................................................................................................................................... 24722.0 USB (Universal Serial Bus) ...................................................................................................................................................... 25323.0 リセット ................................................................................................................................................................................... 27924.0 CPU の特殊機能 ....................................................................................................................................................................... 29325.0 命令セットの概要..................................................................................................................................................................... 31126.0 開発サポート ............................................................................................................................................................................ 36127.0 電気的仕様 ............................................................................................................................................................................... 36528.0 DC 特性と AC 特性のグラフと表 ............................................................................................................................................. 39929.0 パッケージ情報 ........................................................................................................................................................................ 401補遺 A: 改訂履歴 ............................................................................................................................................................................. 407補遺 B: デバイス間の違い ............................................................................................................................................................... 408索引 ................................................................................................................................................................................................... 409マイクロチップ社のウェブサイト ..................................................................................................................................................... 419お客様向け変更通知サービス ............................................................................................................................................................ 419お客様サポート .................................................................................................................................................................................. 419読者アンケート .................................................................................................................................................................................. 420製品識別システム .............................................................................................................................................................................. 421

DS41350D_JP - p. 6 Preliminary 2010 Microchip Technology Inc.

Page 7: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

大切なお客様へ

マイクロチップ社では、お客様にマイクロチップ社製品を効果的にお使いいただくために、わかりやすい文書を提供するよう努

めています。このため、弊社はお客様のニーズにさらに的確に応えられるように、出版物の改善を続けていきます。弊社は新刊、

更新版を発表する毎に内容の見直しと充実を図っています。

本書に関してご質問、ご意見をお持ちのお客様は、メールまたはファックスで弊社のマーケティング コミュニケーション部門に

ご連絡ください。メールアドレスは [email protected]、ファックス番号は 1-480-792-4150 ( 国際電話 ) です。

ファックスの場合には、本書の巻末に用意されている「読者アンケート」のページをご利用ください。お客様からのご感想をお

待ちしております。

新のデータシート

このデータシートの 新版を入手するには、以下のウェブサイトから登録手続きを行ってください。

http://www.microchip.com

各ページのフッタに記載されている文書番号をご覧になると、データシートのリビジョンを確認できます。文書番号の 後の文字がリビジョン番号です ( 例 : DS30000A は文書 DS30000 のリビジョン A)。

エラッタ

デバイスには、データシートとの動作上の微妙な相違点や推奨できる暫定的な対策を記したエラッタが存在する事があります。弊社では、デバイスや文書に関する問題を認識した時点でエラッタを発行します。エラッタには、該当するシリコンと文書のリビジョンを明記します。

特定のデバイスに関してエラッタの有無を確認するには、以下のいずれかをご利用ください。

• マイクロチップ社のウェブサイト : http://www.microchip.com• 寄のマイクロチップ社営業所 ( 終ページ参照 )• Microchip Corporate Literature Center ( 米国 - FAX: (480) 792-7277)営業所または米国の Microchip Corporate Literature Center にお問い合わせになる場合、ご使用のデバイス、シリコンのバージョン、データシートのバージョン ( 文書番号を含む ) をお伝えください。

お客様通知システム

マイクロチップ社のウェブサイト (www.microchip.com/cn) で登録手続きを行うと、マイクロチップ社の全ての製品に関する

新情報を受信できるようになります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 7

Page 8: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 8 Preliminary 2010 Microchip Technology Inc.

Page 9: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

1.0 デバイスの概要

このデータシートには、以下のデバイスに固有の情報が記載されています。

このファミリは、全ての PIC18 マイクロコントローラに共通する、低価格で高い計算能力を持つという特長に加えて、高い書き換え耐性を実現したフラッシュ プログラム メモリを搭載しています。その他にも、PIC18F/LF1XK50ファミリには設計上の改良が加えられ、高い性能と低消費電力が求められる多くのアプリケーションに 適なマイクロコントローラに仕上がっています。

1.1 新しいコア機能

1.1.1 nanoWatt XLP テクノロジ

PIC18F/LF1XK50 ファミリの全デバイスは、動作時の消費電力を大幅に低減できる各種機能を搭載しています。主な機能は以下の通りです。

• 代替実行モード : 本コントローラのクロックをTimer1 ソースまたは内部オシレータ ブロックから駆動する事により、コード実行時の消費電力を大 90% 低減できます。

• 複数のアイドルモード : 本コントローラは、周辺モジュールをアクティブにしたまま、CPU コアを無効にして動作させる事ができます。この状態では消費電力がさらに低減され、通常動作時に必要な電力のわずか 4% になります。

• 動作中のモード切り換え : 電源管理モードは、動作中にユーザコードによって起動します。このためユーザは、ソフトウェア設計に省電力化のアイデアを組み込む事ができます。

• 主要モジュールの低消費電力化 : Timer1 とウォッチドッグ タイマの消費電力は 小限に抑えました。具体的な値は 27.0「電気的仕様」を参照してください。

1.1.2 複数のオシレータ オプションと機能

PIC18F/LF1XK50 ファミリは、全デバイスに 10 種類のオシレータ オプションを用意しており、アプリケーション ハードウェアを開発するユーザにとっては幅広い選択が可能となります。使用できるオプションは以下の通りです。

• 水晶 / セラミック振動子を用いる 4 種類の水晶振動子モード

• 外部クロックモード : 2 ピン ( オシレータ入力と4 分周クロック出力 ) または 1 ピン ( オシレータ入力、2 本目のピンは汎用 I/O として再アサイン )を選択可能

• 外部 RC オシレータモード : 外部クロックモードと同じピンオプションを選択可能

• 内部オシレータ ブロック : 16 MHz の HFINTOSCオシレータと 31 kHz の LFINTOSC オシレータがあり、これらを組み合わせる事で、31 kHz ~16 MHz で 8 通りの周波数を選択できます。このオプションを選択した場合に不要となる 2 本のオシレータピンは、汎用 I/O ピンとして使用できます。

• PLL (Phase Lock Loop) 周波数マルチプライヤ : 高速の水晶振動子モードと内部オシレータモードでは、PLL を使用して 大 48 MHz のクロック速度を実現できます。内部オシレータと PLL を使用した場合、31 kHz ~ 32 MHz という、広いレンジのクロック速度が得られます。しかも外付けの水晶振動子やクロック回路は不要です。

内部オシレータ ブロックは、クロック源としてだけでなく安定した基準クロック源としても使用でき、このファミリの動作信頼性をさらに高めます。

• フェイルセーフ クロック モニタ : このオプションでは、メイン クロック源を、LFINTOSC による基準信号に対して常時監視します。クロックに障害が発生すると、コントローラは内部オシレータ ブロックに切り換えられ、動作を継続するかアプリケーションを安全にシャットダウンする事ができます。

• 2 段階起動 : このオプションでは、パワーオン リセットまたはスリープモードからのウェイクアップ時に、プライマリ クロック源が使用可能になるまで内部オシレータをクロック源として使用します。

• PIC18F13K50 • PIC18F14K50

• PIC18LF13K50 • PIC18LF14K50

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 9

Page 10: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

1.2 その他の特殊機能

• メモリの書き換え耐性 : プログラムメモリおよびデータ EEPROM のフラッシュセルは数千回の消去 / 書き込みサイクルに対する耐性を備えています。プログラムメモリは 1 K サイクル、EEPROM は 100 K サイクルです。リフレッシュなしのデータ保持期間は控えめに見積もっても40 年以上です。

• 自己書き込み機能 : これらのデバイスは、内部ソフトウェアによって、デバイス自体のプログラムメモリ空間に書き込む事ができます。コード保護ブートブロックに格納されたブートローダ ルーチンを使用する事により、フィールドで自己更新が可能なアプリケーションの作成が可能です。

• 拡張命令セット : PIC18F/LF1XK50 ファミリでは、PIC18 命令セットにオプションの拡張命令を導入しました。8 つの新しい命令とインデックス付きアドレッシング モードです。これらの拡張命令は、もともと C 等の高級言語向けに開発されたリエントラント アプリケーション コードを 適化するために実装しました。

• 拡張 CCP モジュール : PWM モードでは、このモジュールはハーフブリッジおよびフルブリッジ ドライバを制御する 1 つ、2 つ、4 つのいずれかの変調信号を出力します。その他にも以下のような機能があります。

- 自動シャットダウン ― 割り込みやその他の条件により PWM 出力を無効にします。

- 自動再起動 ― 上記の条件がクリアされた後に出力を再度有効にします。

- 出力ステアリング ― 4つの出力のうちの1つまたは複数を有効にして PWM 信号を提供します。

• 拡張アドレサブル USART: このシリアル通信モジュールは標準的な RS-232 動作が可能であり、LIN バスプロトコルをサポートします。その他に強化された項目として、 baud レートの自動検出や、分解能を向上するための 16 ビットの baudレート ジェネレータがあります。

• 10 ビット A/D コンバータ : このモジュールはアクイジション時間をプログラムできる機能を搭載し、チャンネルを選択したり、サンプリング期間の終了を待たずに変換を開始したりできるため、コードのオーバーヘッドが低減されます。

• 拡張ウォッチドッグ タイマ (WDT): この拡張バージョンでは 16 ビットのポストスケーラを採用する事でタイムアウト時間のレンジが広がり、動作電圧および温度の全レンジで安定した動作が確保されます。タイムアウト時間の詳細は 27.0「電気的仕様」を参照してください。

1.3 ファミリに含まれる各製品の詳細

PIC18F/LF1XK50 ファミリのデバイスは 20 ピンパッケージで提供しております。図 1-1 に 2 つのグループのブロック図を示します。

デバイスは、以下の項目で 2 種類に大別されます。

1. フラッシュ プログラム メモリの容量 :

• 8 KB を搭載する PIC18F13K50/PIC18LF13K50

• 16 KB を搭載する PIC18F14K50/PIC18LF14K50

2. 内蔵 3.2 V LDO レギュレータの有無 : PIC18F13K50 と PIC18F14K50 に搭載

その他の機能はファミリ内の全デバイスで共通です。それらの機能を表 1-1 にまとめました。

表 1 と表 1-2 に全デバイスのピンと I/O を示します。

DS41350D_JP - p. 10 Preliminary 2010 Microchip Technology Inc.

Page 11: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 1-1: PIC18F/LF1XK50 (20 ピンデバイス ) の機能

機能 PIC18F13K50 PIC18LF13K50 PIC18F14K50 PIC18LF14K50

LDO レギュレータ あり なし あり なし

プログラムメモリ ( バイト ) 8K 16K

プログラムメモリ ( 命令 ) 4096 8192

データメモリ ( バイト ) 512 768

動作周波数 DC ~ 48 MHz

割り込み要因 30

I/O ポート ポート A、B、C

タイマ 4

拡張キャプチャ / コンペア /PWM モジュール 1

シリアル通信 MSSP、拡張 USART、USB

10 ビット A/D コンバータ モジュール 9 入力チャンネル

リセット ( および遅延 ) POR、BOR、RESET命令、スタックフル、スタック アンダーフロー、MCLR、WDT (PWRT、OST)

命令セット 75 命令、拡張命令セットを有効にした場合は 83 命令

パッケージ 20 ピン PDIP、SSOP、SOIC (300 mil)、QFN (5x5)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 11

Page 12: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 1-1: PIC18F/LF1XK50 のブロック図

InstructionDecode and

Control

PORTA

PORTB

PORTC

RA1RA0

Data Latch

Data Memory

Address Latch

Data Address<12>

12

AccessBSR FSR0FSR1FSR2

inc/declogic

Address

4 12 4

PCH PCL

PCLATH

8

31-Level Stack

Program Counter

PRODLPRODH

8 x 8 Multiply

8

BITOP88

ALU<8>

20

8

8

Table Pointer<21>

inc/dec logic

21

8

Data Bus<8>

Table Latch8

IR

12

3

ROM Latch

PCLATU

PCU

Note 1: RA3 を使用できるのは、MCLR 機能を無効にした場合のみです。

2: OSC1/CLKIN と OSC2/CLKOUT は、特定のオシレータモードにおいて、これらのピンをデジタル I/O として使用していない場合にのみ使用可能です。詳細は、2.0「オシレータ モジュール」を参照してください。

3: PIC18F13K50/PIC18F14K50 のみ

EUSARTComparator MSSP10-bit ADC

Timer2Timer1 Timer3Timer0

ECCP1

BORData

EEPROM

W

Instruction Bus <16>

STKPTR Bank

8

State machinecontrol signals

Decode

8

8

Power-upTimer

OscillatorStart-up Timer

Power-onReset

WatchdogTimer

OSC1(2)

OSC2(2)

VDD,

InternalOscillator

Fail-SafeClock Monitor

Precision

ReferenceBand GapVSS

MCLR(1)

Block

LFINTOSCOscillator

16 MHzOscillator

Single-SupplyProgramming

T1OSO

T1OSI

FVR

FVRFVR

CVREF

Address Latch

Program Memory

Data Latch

CVREF

RA3RA4RA5

RB4RB5RB6RB7

RC0RC1RC2RC3RC4RC5RC6RC7

(512/768 bytes)

VUSB USBModule

USB

LDO(3)

Regulator

DS41350D_JP - p. 12 Preliminary 2010 Microchip Technology Inc.

Page 13: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 1-2: PIC18F/LF1XK50 のピンと入出力の説明

ピン名ピン

番号

ピン

タイプ

バッファ

タイプ説明

RA0/D+/PGDRA0D+PGD

19I

I/OI/O

TTLXCVR

ST

デジタル入力

USB 差動入出力 (+)ICSP™ プログラミング データピン

RA1/D-/PGCRA1D-PGC

18I

I/OI/O

TTLXCVR

ST

デジタル入力

USB 差動入出力 (-)ICSP™ プログラミング クロックピン

RA3/MCLR/VPP

RA3MCLRVPP

4IIP

STST—

マスタクリア ( 入力 ) またはプログラミング電圧 ( 入力 )デジタル入力

アクティブ Low のマスタクリア ( 内部プルアップ付 )高電圧プログラミング入力

RA4/AN3/OSC2/CLKOUTRA4AN3OSC2

CLKOUT

3I/OIO

O

TTLAnalogXTAL

CMOS

デジタル I/OADC チャンネル 3オシレータ水晶振動子出力。水晶振動子またはセラミック

振動子に接続 ( 水晶振動子オシレータモードの場合 )RC モードの場合、OSC2 ピンは CLKOUT を出力します。

その周波数は OSC1 の 1/4 で、

これが命令サイクルの速度です。

RA5/OSC1/CLKINRA5OSC1

CLKIN

2I/OI

I

TTLXTAL

CMOS

デジタル I/ORC モードの場合はオシレータの

水晶振動子入力または外部クロック入力の ST バッファ。

その他の場合はアナログ

外部クロック源入力 常にピン機能 OSC1 に関連付け ( 関連する OSC1/CLKIN、OSC2、CLKOUT ピン参照 )

RB4/AN10/SDI/SDARB4AN10SDISDA

13I/OII

I/O

TTLAnalog

STST

デジタル I/OADC チャンネル 10SPI データ入力

I2C™ データ I/O

RB5/AN11/RX/DTRB5AN11RXDT

12I/OII

I/O

TLLAnalog

STST

デジタル I/OADC チャンネル 11EUSART 非同期受信

EUSART 同期データ ( 関連する RX/TX 参照 )

RB6/SCK/SCIRB6SCKSCI

11I/OI/OI/O

TLLSTST

デジタル I/OSPI モードの同期シリアルクロック入出力

I2C™ モードの同期シリアルクロック入出力

RB7/TX/CKRB7TXCK

10I/OO

I/O

TLLCMOS

ST

デジタル I/OEUSART 非同期送信

EUSART 同期クロック ( 関連する RX/DT 参照 )

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = シュミットトリガ入力 I = 入力

O = 出力 P = 電源

XTAL= 水晶振動子オシレータ XCVR = USB 差動トランシーバ

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 13

Page 14: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

RC0/AN4/C12IN+/INT0/VREF+RC0AN4C12IN+INT0VREF+

16I/OIIII

STAnalogAnalog

STAnalog

デジタル I/OADC チャンネル 4コンパレータ C1 および C2 の非反転入力

外部割り込み 0コンパレータ基準電圧 (High) 入力

RC1/AN5/C12IN-/INT1/VREF-RC1AN5C12IN-INT1VREF-

15I/OIIII

STAnalogAnalog

STAnalog

デジタル I/OADC チャンネル 5コンパレータ C1 および C2 の非反転入力

外部割り込み 0コンパレータ基準電圧 (Low) 入力

RC2/AN6/P1D/C12IN2-/CVREF/INT2RC2AN6P1DC12IN2-CVREF

INT2

14I/OIOIOI

STAnalogCMOSAnalogAnalog

ST

デジタル I/OADC チャンネル 6拡張 CCP1 PWM 出力

コンパレータ C1 および C2 の反転入力

コンパレータの基準電圧出力

外部割り込み 0

RC3/AN7/P1C/C12IN3-/PGMRC3AN7P1CC12IN3-PGM

7I/OIOI

I/O

STAnalogCMOSAnalog

ST

デジタル I/OADC チャンネル 7拡張 CCP1 PWM 出力

コンパレータ C1 および C2 の反転入力

低電圧 ICSP プログラミングのイネーブルピン

RC4/P1B/C12OUT/SRQRC4P1BC12OUTSRQ

6I/OOOO

STCMOSCMOSCMOS

デジタル I/O拡張 CCP1 PWM 出力

コンパレータ C1 および C2 の出力

SR ラッチ出力

RC5/CCP1/P1A/T0CKIRC5CCP1P1AT0CKI

5I/OI/OOI

STST

CMOSST

デジタル I/Oキャプチャ 1 入力 / コンペア 1 出力 /PWM 1 出力

拡張 CCP1 PWM 出力

Timer0 外部クロック入力

RC6/AN8/SS/T13CKI/T1OSCIRC6AN8SST13CKIT1OSCI

8I/OIIII

STAnalog

TTLST

XTAL

デジタル I/OADC チャンネル 8SPI スレーブ選択入力

Timer0 および Timer3 外部クロック入力

Timer1 オシレータ入力

RC7/AN9/SDO/T1OSCORC7AN9SDOT1OSCO

9I/OIOO

STAnalogCMOSXTAL

デジタル I/OADC チャンネル 9SPI データ出力

Timer1 オシレータ出力

VSS 20 P — ロジックと I/O ピンのグランド リファレンス

VDD 1 P — ロジックと I/O ピンの正電源

VUSB 17 P — USB トランシーバの正電源

表 1-2: PIC18F/LF1XK50 のピンと入出力の説明 ( 続き )

ピン名ピン

番号

ピン

タイプ

バッファ

タイプ説明

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = シュミットトリガ入力 I = 入力

O = 出力 P = 電源

XTAL= 水晶振動子オシレータ XCVR = USB 差動トランシーバ

DS41350D_JP - p. 14 Preliminary 2010 Microchip Technology Inc.

Page 15: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

2.0 オシレータ モジュール

2.1 概要

オシレータ モジュールは各種クロック源による駆動が可能です。様々なアプリケーションに適用可能であり、性能を 大限に高め、消費電力を 小限に抑えることが可能です。図 2-1 にオシレータ モジュールのブロック図を示します。

オシレータ モジュールの主な特長 :

• システムクロックの選択

- プライマリ外部オシレータ

- セカンダリ外部オシレータ

- 内部オシレータ

• オシレータ起動タイマ

• システムクロックの選択

• クロックの切り換え

• 4x PLL 周波数マルチプライヤ

• CPU クロック分周器

• USB 動作

- ロースピード

- フルスピード

• 2 段階起動モード

• フェイルセーフ クロック モニタ

2.2 システムクロックの選択

OSCCON レジスタの SCS ビットによって以下のクロック源のいずれかを選択します。

• プライマリ外部オシレータ

• セカンダリ外部オシレータ

• 内部オシレータ

表 2-1: システムクロックの選択

既定状態の SCS ビットは、システムクロックとして、コンフィグレーション レジスタ CONFIG1H の FOSCビットで定義するオシレータを選択します。システムクロックはSCSビットがソフトウェアによって変更されない限り、常に FOSC ビットによって定義されます。

システムクロックとして内部オシレータを選択した場合、OSCCONレジスタのIRCFビットおよびOSCTUNEレジスタの INTSRCビットによってLFINTOSCまたはHFINTOSC のいずれかが選択されます。IRCF<2:0> =000かつ INTSRC ビットがクリアされていると、システムクロックとして LFINTOSC が選択されます。これ以外の IRCF ビットと INTSRC ビットの組み合わせでは HFINTOSC が選択されます。

2.3 プライマリ外部オシレータ

プライマリ外部オシレータの動作モードを選択するには、コンフィグレーション レジスタ CONFIG1H のFOSC<3:0> ビットをセットします。オシレータは以下のモードに設定できます。

• LP: 低消費電力水晶振動子

• XT: 水晶 / セラミック振動子

• HS: 高速水晶振動子

• RC: 外部 RC オシレータ

• EC: 外部クロック

また消費電力を低減するために、ファームウェア制御によりプライマリ外部オシレータをシャットダウンする事ができます。

Note: 本書では全体を通してシステムクロックの周波数を FOSC と表記します。

コンフィグレーション 選択

SCS <1:0> システムクロック

1x 内部オシレータ

01 セカンダリ外部オシレータ

00( リセット後の既定値 )

FOSC<3:0> によって定義するオシレータ

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 15

Page 16: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 2-1: PIC® MCU のクロック源ブロック図

4 x PLL

FOSC<3:0>

OSC2

OSC1Sleep

CPU

Peripherals

IDLEN

Pos

tsca

ler

MU

X

MU

X

16 MHz

8 MHz

4 MHz

2 MHz

1 MHz

250 kHz

500 kHz

IRCF<2:0>

111

110

101

100

011

010

001

00031 kHz

31 kHzLFINTOSC

InternalOscillator

Block

ClockControl SCS<1:0> HFINTOSC

16 MHz

01

INTSRC

Primary

PIC18F/LF1XK50

Sleep

Sleep

System

Secondary

T1OSCENEnableOscillator

T1OSI

T1OSO

PCLKENPRI_SD

2

CPUDivider0

1

1

0

USBDIV

FOSC<3:0>

Low Speed USB

High Speed USB

PLLENSPLLEN

Oscillator

WatchdogTimer

Oscillator

Fail-SafeClock

Two-SpeedStart-up

Clock

00

1x

01

DS41350D_JP - p. 16 Preliminary 2010 Microchip Technology Inc.

Page 17: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

2.3.1 プライマリ外部オシレータのシャットダウン

プライマリ外部オシレータはソフトウェアによって有効 / 無効を切り換える事ができます。このソフトウェア制御を可能とするには、コンフィグレーション レジスタ CONFIG1H の PCLKEN ビットをセットします。PCLKEN ビットがセットされている場合、プライマリ外部オシレータはOSCCON2レジスタのPRI_SDビットによって制御されます。PRI_SD ビットがセットされるとプライマリ外部オシレータが有効になり、クリアされると無効になります。

2.3.2 LP、XT、HS オシレータモード

LP、XT、HS モードでは、水晶振動子またはセラミック振動子をOSC1とOSC2に接続します (図 2-2)。モードごとに内部インバータアンプのゲインが低 /中 /高に設定され、様々な種類や速度の振動子に対応します。

LP オシレータモードでは、内部インバータアンプのゲインが も低く設定されます。3 つのモードのうち消費電流が も少ないのが LP モードです。このモードは、音叉タイプの水晶等、駆動レベルの仕様が低い振動子に適しています。

XT オシレータモードでは、内部インバータアンプのゲインが中間に設定されます。消費電流も 3 つのモードの中間になります。このモードは、駆動レベルの仕様が中程度の振動子に適しています。

HS オシレータモードでは、内部インバータアンプのゲインが 大に設定されます。消費電流も 3 つのモードのうち 大になります。このモードは、駆動レベルの仕様が高い振動子に適しています。

図 2-2 と図 2-3 に、それぞれ水晶振動子とセラミック振動子を使用した代表的な回路を示します。

図 2-2: 水晶振動子による動作 (LP、XT、HSモード )

Note: ただし、プライマリ外部オシレータをシステムクロックに指定している場合はシャットダウンできません。オシレータをシャットダウンするには、システム クロック源がセカンダリ オシレータか内部オシレータのいずれかである必要があります。

Note 1: 水晶振動子の特性は、種類、パッケージ、メーカーにより異なります。仕様と推奨アプリケーションについてはメーカーのデータシートを参照してください。

2: アプリケーションで予測されるVDDと温度のレンジ全体でオシレータの性能を必ず検証してください。

3: オシレータ設計時の参考として、マイクロチップ社の以下のアプリケーション ノートを参照してください。

• AN826『水晶振動子の基礎と rfPIC®

と PIC® 向けの水晶振動子の選択』(DS00826)

• AN849『PIC® オシレータの基礎設計』(DS00849)

• AN943『PIC® オシレータの実用的解析と設計』(DS00943)

• AN949『オシレータの使い方』(DS00949)

Note 1: 駆動レベルの低い水晶振動子の場合、直列抵

抗 (RS) が必要になる場合があります。

2: RF の値は、選択したオシレータモードによっ

て異なります ( 通常は 2 ~ 10 M)。

C1

C2

Quartz

RS(1)

OSC1/CLKIN

RF(2) Sleep

To Internal Logic

PIC® MCU

Crystal

OSC2/CLKOUT

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 17

Page 18: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 2-3: セラミック振動子の動作(XT、HS モード )

2.3.3 外部 RC モード

外部 RC ( 抵抗 / コンデンサ ) モードでは、外付けの RC回路を使用します。クロック精度がそれほど必要ない場合、コストを 小限に抑えつつ、 も柔軟な周波数の選択が可能です。RC モードでは RC 回路を OSC1に接続するため、OSC2 を I/O または CLKOUT として設定できます。CLKOUT 機能はコンフィグレーションレジスタ CONFIG1H の FOSC ビットによって選択します。CLKOUT として設定した OSC2 ピンからは RCオシレータ周波数を4分周した周波数が出力されます。図 2-4 に、外部 RC モードの接続を示します。

図 2-4: 外部 RC モード

RC オシレータの周波数は、電源電圧、抵抗 (REXT)、コンデンサ (CEXT) の値および動作温度の関数です。これら以外にも以下のような要因がオシレータ周波数に影響を与えます。

• 入力しきい値電圧のばらつき

• 部品許容差

• パッケージングによるピン静電容量のばらつき

2.3.4 外部クロックモード

外部クロック (EC) モードでは、システム クロック源として外部で発生したロジックレベルのクロックを使用します。このモードで動作させる場合、外部クロック源を OSC1 に接続するため、OSC2 は I/O またはCLKOUT として設定できます。CLKOUT 機能はコンフィグレーション レジスタ CONFIG1H の FOSC ビットによって選択します。CLKOUT として設定したOSC2 ピンからは EC オシレータ周波数を 4 分周した周波数が出力されます。

EC モードでは 3 種類の電力設定が使用可能です。ECクロックの周波数レンジが既知の場合、適切な設定によりデバイスの IDD を低減できます。予測される ECクロックの周波数に幅がある場合、 大周波数に基づいて電力モードを選択します。

EC 低電力モード 0 – 250 kHz

EC 中電力モード 250 kHz – 4 MHz

EC 大電力モード 4 – 48 MHz

2.4 セカンダリ外部オシレータ

セカンダリ外部オシレータは、外付けの 32.768 kHz 水晶振動子を駆動するために設計されています。このオシレータの有効/無効は、T1CONレジスタのT1OSCENビットによって切り換えます。詳細は、11.0「Timer1モジュール」を参照してください。

Note 1: 駆動レベルの低いセラミック振動子の場合、直

列抵抗 (RS) が必要になる場合があります。

2: RF の値は、選択したオシレータモードによっ

て異なります ( 通常は 2 ~ 10 M)。

3: セラミック振動子を適切に動作させるために、

並列フィードバック抵抗 (RP) の追加が必要に

なる場合があります。

C1

C2 Ceramic RS (1)

OSC1/CLKIN

RF(2) Sleep

To Internal Logic

PIC® MCU

RP(3)

Resonator

OSC2/CLKOUT

OSC2/CLKOUT(1)

CEXT

REXT

PIC® MCU

OSC1/CLKIN

FOSC/4 or

InternalClock

VDD

VSS

推奨値 : 10 k REXT 100 kCEXT > 20 pF

Note 1: ピンの代替機能については、1.0「デバイスの

概要」の一覧表を参照してください。

2: 出力は RC と RCIO クロックモードで異なり

ます。

I/O(2)

DS41350D_JP - p. 18 Preliminary 2010 Microchip Technology Inc.

Page 19: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

2.5 内部オシレータ

内部オシレータ モジュールには、以下の 2 つの独立したオシレータがあります。

• LFINTOSC: 低周波内部オシレータ

• HFINTOSC: 高周波内部オシレータ

いずれのオシレータを動作させる場合も、OSC1 はI/O、OSC2 は I/O または CLKOUT のいずれかになります。CLKOUT 機能はコンフィグレーション レジスタ CONFIG1H の FOSC ビットによって選択します。OSC2 ピンを CLKOUT として設定した場合、OSC2 ピンの周波数は内部オシレータ周波数の 1/4 です。

2.5.1 LFINTOSC

低周波内部オシレータ (LFINTOSC) は 31 kHz の内部クロック源です。LFINTOSC オシレータは、以下の回路のクロック源として使用します。

• パワーアップ タイマ

• ウォッチドッグ タイマ

• フェイルセーフ クロック モニタ

LFINTOSC は、以下の条件のいずれか 1 つが真の場合に有効になります。

• パワーアップ タイマが有効な場合 (PWRTEN = 0)

• ウォッチドッグ タイマが有効な場合 (WDTEN = 1)

• ウォッチドッグ タイマがソフトウェアによって有効にされた場合 (WDTEN = 0かつ SWDTEN = 1)

• フェイルセーフ クロック モニタが有効な場合(FCMEM = 1)

• SCS1 = 1かつ IRCF<2:0> = 000かつ INTSRC = 0の場合

• FOSC<3:0> が内部オシレータをプライマリ クロックとして選択し、さらに IRCF<2:0> = 000かつINTSRC = 0の場合

• IESO = 1 (2 段階起動 ) かつ IRCF<2:0> = 000かつINTSRC = 0の場合

2.5.2 HFINTOSC

高周波内部オシレータ (HFINTOSC) は、16 MHz で動作するように工場出荷時に校正済みの高精度オシレータです。HFINTOSC の出力は、ポストスケーラとマルチプレクサに接続されています ( 図 2-1 参照 )。OSCCON レジスタの IRCF<2:0> ビットによって、8 つの周波数から 1 つを選択します。HFINTOSC で使用できる周波数は以下の通りです。

• 16 MHz

• 8 MHz

• 4 MHz

• 2 MHz

• 1 MHz ( リセット後の既定値 )• 500 kHz

• 250 kHz

• 31 kHz

OSCCON レジスタの HFIOFS ビットは、HFINTOSCの動作が安定しているかどうかを示します。

HFINTOSC は、以下の条件のいずれか 1 つが真の場合に有効になります。

• SCS1 = 1 かつ IRCF<2:0> 000の場合

• SCS1 = 1 かつ IRCF<2:0> = 000かつ INTSRC = 1の場合

• FOSC<3:0> が内部オシレータをプライマリ クロックとして選択し、さらに

- IRCF<2:0> 000または

- IRCF<2:0> = 000かつ INTSRC = 1の場合

• IESO = 1 (2 段階起動 ) かつ

- IRCF<2:0> 000または

- IRCF<2:0> = 000かつ INTSRC = 1の場合

• FCMEM = 1 ( フェイルセーフ クロック モニタ使用 )かつ

- IRCF<2:0> 000または

- IRCF<2:0> = 000かつ INTSRC = 1の場合

Note 1: HFINTOSC オシレータの周波数として31 kHz を選択するには、IRCF<2:0> = 000に設定し、さらに OSCTUNE レジスタのINTSRC ビットをセットする必要があります。INTSRC ビットをクリアすると、システムクロックは LFINTOSC から供給されます。

2: HFINTOSC の周波数は、OSCTUNE レジスタによってさらに調整できます。詳細はレジスタ 2-3 を参照してください。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 19

Page 20: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

2.6 オシレータ制御

オシレータ制御レジスタ (OSCCON) (レジスタ 2-1)とオシレータ制御レジスタ2 (OSCCON2) (レジスタ 2-2)は、システムクロックと周波数の選択オプションを制御します。

レジスタ 2-1: OSCCON: オシレータ制御レジスタ

R/W-0 R/W-0 R/W-1 R/W-1 R-q R-0 R/W-0 R/W-0

IDLEN IRCF2 IRCF1 IRCF0 OSTS(1) HFIOFS SCS1 SCS0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し q = 条件による

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 IDLEN: アイドル イネーブル ビット1 = SLEEP命令によってデバイスがアイドルモードに移行0 = SLEEP命令によってデバイスがスリープモードに移行

bit 6-4 IRCF<2:0>: 内部オシレータ周波数選択ビット111 = 16 MHz110 = 8 MHz 101 = 4 MHz 100 = 2 MHz011 = 1 MHz(3)

010 = 500 kHz001 = 250 kHz000 = 31 kHz(2)

bit 3 OSTS: オシレータ起動タイムアウト ステータス ビット (1)

1 = デバイスは CONFIG1 レジスタの FOSC<2:0> が定義するクロックによって動作中0 = デバイスは内部オシレータ (HFINTOSC または LFINTOSC) によって動作中

bit 2 HFIOFS: HFINTOSC 周波数安定状態ビット 1 = HFINTOSC の周波数が安定している0 = HFINTOSC の周波数が安定していない

bit 1-0 SCS<1:0>: システムクロック選択ビット1x = 内部オシレータ ブロック01 = セカンダリ (Timer1) オシレータ00 = プライマリ クロック (CONFIG1H[FOSC<3:0>] によって決定 )

Note 1: リセット時の状態は、コンフィグレーション ビット IESO の状態によって異なります。2: クロック源は OSCTUNE レジスタの INTSRC ビットによって選択します ( 本文参照 )。3: リセット時の HFINTOSC の既定出力周波数

DS41350D_JP - p. 20 Preliminary 2010 Microchip Technology Inc.

Page 21: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 2-2: OSCCON2: オシレータ制御レジスタ 2

U-0 U-0 U-0 U-0 U-0 R/W-1 R/W-0 R-x

— — — — — PRI_SD HFIOFL LFIOFS

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し q = 条件による

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-3 未実装 : 「0」として読み出し

bit 2 PRI_SD: プライマリ オシレータ駆動回路シャットダウン ビット

1 = オシレータ駆動回路を ON0 = オシレータ駆動回路を OFF ( 消費電力ゼロ )

bit 1 HFIOFL: HFINTOSC 周波数ロック完了ビット

1 = HFINTOSC がロック状態0 = HFINTOSC はまだロックされていない

bit 0 LFIOFS: LFINTOSC 周波数安定状態ビット

1 = LFINTOSC は安定している0 = LFINTOSC は安定していない

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 21

Page 22: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

2.6.1 OSCTUNE レジスタ

HFINTOSCは工場出荷時に校正済みですが、OSCTUNEレジスタの TUN<5:0> ビットに書き込む事でソフトウェアによる調整が可能です ( レジスタ 2-3)。

TUN<5:0> の既定値は「000000」です。値は 6 ビットの 2 の補数です。

OSCTUNE レジスタを変更すると、HFINTOSC の周波数が変化しはじめます。周波数の変化は明示されませんが、変化中もコードの実行は継続します。

OSCTUNEはLFINTOSCの周波数には影響を与えません。パワーアップ タイマ (PWRT)、ウォッチドッグ タイマ (WDT)、フェイルセーフ クロック モニタ (FSCM)

等のクロック源LFINTOSCの周波数の影響を受ける機能や、周辺回路の動作は、周波数変化の影響を受けません。

OSCTUNE レジスタは INTSRC および SPLLEN ビットも実装しています。これらのビットは内部オシレータ ブロックの機能の一部を制御します。

INTSRC ビットは、31 kHz の周波数オプションが選択された場合、どの内部オシレータをクロック源とするかを選択します。詳細は、2.5.1「LFINTOSC」で解説します。

SPLLEN は周波数マルチプライヤの動作を制御するビットです。SPLLEN ビットの機能の詳細は、2.9「4xPLL 周波数マルチプライヤ」を参照してください。

レジスタ 2-3: OSCTUNE: オシレータ調整レジスタ

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

INTSRC SPLLEN TUN5 TUN4 TUN3 TUN2 TUN1 TUN0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 INTSRC: 内部オシレータ低周波ソース選択ビット

1 = 31.25 kHz のデバイスクロック、16 MHz の HFINTOSC ソースから生成 (512 分周回路が有効 )0 = 31 kHz のデバイスクロック、内部オシレータ LFINTOSC から直接生成

bit 6 SPLLEN: ソフトウェア制御による周波数マルチプライヤ PLL ビット

1 = PLL が有効 (HFINTOSC の 8 MHz 動作時のみ )0 = PLL が無効

bit 5-0 TUN<5:0>: 周波数調整ビット

011111 = 大周波数011110 = • • •000001 = 000000 = オシレータ モジュールは工場出荷時に校正された周波数で動作111111 = • • •100000 = 小周波数

DS41350D_JP - p. 22 Preliminary 2010 Microchip Technology Inc.

Page 23: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

2.7 オシレータ起動タイマ

プライマリ外部オシレータを LP、XT、HS モードに設定した場合、オシレータ起動タイマ (OST) が動作します。これはオシレータが確実に起動し、オシレータ モジュールに安定したクロックが供給されるようにするタイマです。OST は、OSC1 の発振を 1024 回カウントするとタイムアウトします。システムクロックがプライマリ外部オシレータに設定されている場合、OSTがタイムアウトするまでの期間はプログラム カウンタがインクリメントせず、プログラム実行は一時停止します。OST は、以下のイベント発生後にカウントを始めます。

• パワーオン リセット (POR)

• ブラウンアウト リセット (BOR)

• スリープからのウェイクアップ

• オシレータを ON

• パワーアップ タイマ (PWRT) のタイムアウト

外部オシレータの起動からコード実行までのレイテンシを 小限に抑えるには、2 段階起動モードを選択します。詳細は、2.12「2 段階起動モード」を参照してください。

2.8 クロックの切り換え

デバイスには、システム クロック源の変更によって生ずるクロックの「グリッチ」を防ぐ回路が搭載されています。この回路は、クロックを切り換える間システムクロックを短期間停止する事でグリッチを予防します。切り換え先のクロック源が安定していない場合( 例えば OST がカウント中 )、安定するまでデバイスは元のクロック源によって動作を続けます。クロック切り換えのタイミングは以下の通りです。

1. OSCCONレジスタのSCS<1:0>ビットが変わる。

2. 切り換え先のクロックの準備が整うまで、システムクロックは元のクロックで動作を続ける。

3. クロック切り換え回路は、新しいクロックの準備が整った時点から、元のクロックで連続する 2 つの立ち上がりエッジが検出されるのを待つ。

4. 元のクロックの次の立ち下がりエッジから、システムクロックを Low に保持する。

5. クロック切り換え回路は、さらに切り換え先のクロックの立ち上がりエッジを 2 回待つ。

6. 切り換え先のクロックの次の立ち下がりエッジで、システムクロックの Low 保持を解除し、切り換え先のクロックがシステムクロックを駆動しはじめる。

7. クロックの切り換えが完了する。

詳細は図 2-5 を参照してください。

図 2-5: クロック切り換えのタイミング

Old Clock

New Clock

IRCF <2:0>

System Clock

Start-up Time(1) Clock Sync Running

High Speed Low Speed

Select Old Select New

New Clk Ready

Low Speed High Speed

Old Clock

New Clock

IRCF <2:0>

System Clock

Start-up Time(1) Clock Sync Running

Select Old Select New

New Clk Ready

Note 1: Start-up Time は、外部クロックの TOST (1024 TOSC) と HSPLL モードの TPLL ( 約 2 ms) を含みます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 23

Page 24: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 2-2: クロック切り換えによる遅延の例

2.9 4x PLL 周波数マルチプライヤ

PLL ( 位相ロックループ ) 回路は、低周波外部オシレータを使用するか、HFINTOSC を 32 MHz で動作させる必要のあるユーザ向けのオプションです。この PLL は入力周波数 4 ~ 12 MHz に対して設計されています。PLL を有効にすると、入力周波数が 4 倍されます。この機能は高周波の水晶振動子によるEMIが懸念される場合に効果があります。

PLL は、コンフィグレーション レジスタ CONFIG1HのPLLENビットおよびOSCTUNEレジスタのSPLLENビットによって制御されます。PLLEN ビットをセットすると PLL が有効になり、PLLEN ビットをクリアするとソフトウェア制御になります。

表 2-3: PLL の設定

2.10 CPU クロック分周器

CPU クロック分周器を使用すると、同じクロック源を共用していながら、システムクロックだけをロースピード /フルスピードUSBモジュールのクロックよりも低速で駆動する事ができます。CPU クロック分周器を適用できるのは、コンフィグレーション レジスタCONFIG1H の FOSC ビットが定義するオシレータだけです。CPU クロック分周器は、コンフィグレーション レジスタ CONFIG1L の CPUDIV ビットによって 以下のように設定されます。

• USB モジュールと同じクロック速度

• USB モジュールの半分のクロック速度

• USB モジュールの 1/3 のクロック速度

• USB モジュールの 1/4 のクロック速度

CPU クロック分周器の詳細は、図 2-1 とレジスタ 24-1CONFIG1L を参照してください。

2.11 USB 動作

USBモジュールは以下の2つのモードで動作するように設計されています。

• ロースピード

• フルスピード

USB の仕様によって決まるタイミング要件から、USBモジュールにはプライマリ外部オシレータが必要になります。コンフィグレーション レジスタ CONFIG1Hの FOSC ビットは、周波数 6/12/48 MHz の外部クロック (EC) 大電力モードまたは HS モードに設定します。

2.11.1 ロースピード動作

ロースピード動作では、USB モジュールに 6 MHz のクロックが必要になります。6 MHz のクロックを発生するには、以下の 2 つのオシレータモードしか使用できません。

• EC 大電力モード

• HS モード

表 2-4 に、ロースピード動作時の推奨クロックモードを示します。

2.11.2 フルスピード動作

フルスピード動作では、USB モジュールに 48 MHz のクロックが必要です。48 MHz のクロックを生成するには、以下の 2 つのオシレータモードしか使用できません。

• EC 大電力モード

• HS モード

表 2-5 に、フルスピード動作時の推奨クロックモードを示します。

切り換え元 切り換え先 オシレータの遅延

スリープ /POR LFINTOSCHFINTOSC

オシレータのウォームアップ遅延(TWARM)

スリープ /POR LP、XT、HS 1024 クロックサイクル

スリープ /POR EC、RC 8 クロックサイクル

PLLEN SPLLEN PLL の状態

1 x PLL が有効

0 1 PLL が有効

0 0 PLL が無効

Note: HFINTOSC に対して PLL を適用できるのは、ポストスケーラを 8 MHz に設定し、コンフィグレーション レジスタCONFIG1H の FOSC<3:0> ビットによって内部オシレータ動作が選択されている場合です。

Note: USB をロースピードで動作させるには、CPU クロック周波数を 24 MHz 以下にする必要があります (6 MHz が 適 )。24 MHz よりも高い周波数を使用する場合、14 命令サイクル以上のファームウェア遅延が必要です。

DS41350D_JP - p. 24 Preliminary 2010 Microchip Technology Inc.

Page 25: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 2-4: ロースピード USB のクロック設定

表 2-5: フルスピード USB のクロック設定

クロックモード クロック周波数 USBDIV 4x PLL ON/OFF CPUDIV<1:0> システムクロック周波数(MHz)

EC 大電力 /HS

12 MHz 1

ON

00 48

01 24

10 16

11 12

OFF

00 12

01 6

10 4

11 3

6 MHz 0

ON

00 24

01 12

10 8

11 6

OFF

00 6

01 3

10 2

11 1.5

Note: 表 2-4 のシステムクロック周波数は、OSCCON レジスタのビット、SCS<1:0> = 00 の場合にのみ適用される値です。これらのビットを変更する事により、システムクロックを 31 kHz まで落とす事ができます。

クロックモード クロック周波数 4x PLL ON/OFF CPUDIV<1:0> システムクロック周波数(MHz)

EC 大電力 48 MHz OFF

00 48

01 24

10 16

11 12

EC 大電力 /HS 12 MHz ON

00 48

01 24

10 16

11 12

Note: 上記のシステムクロック周波数は、OSCCON レジスタのビット、SCS<1:0> = 00 の場合にのみ適用される値です。これらのビットを変更する事により、システムクロックを 31 kHz まで落とす事ができます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 25

Page 26: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

2.12 2 段階起動モード

2 段階起動モードは、オシレータ起動タイマ (OST) からコード実行までのレイテンシを 小限に抑える事で、さらなる消費電力低減を実現します。スリープモードを多用するアプリケーションでは、2 段階起動を使用する事で OST のタイムアウト待ちがなくなり、デバイス全体の消費電力が低減できます。

2 段階起動モードは、コンフィグレーション レジスタCONFIG1Hの IESOビットをセットすると有効になります。2 段階起動モードを有効に設定すると、プライマリ外部オシレータの OST がタイムアウトするまで、デバイスは内部オシレータを使用して命令を実行します。

システムクロックがプライマリ外部オシレータに設定され、オシレータが LP、XT、HS モードに設定されている場合、OST の期間はコードが実行されません。OST は発振を 1024 回カウントするまでプログラム実行を一時停止します。2 段階起動モードは、OST のカウント中に内部オシレータによって動作する事でコード実行の遅延を 低限に抑えます。OST のタイムアウト後、システムクロックはプライマリ外部オシレータに戻ります。

2 段階起動は、以下のイベント発生後にアクティブになります。

• パワーオン リセット (POR)

• パワーアップ タイマ (PWRT) ( 有効な場合 )

• スリープからのウェイクアップ

OSCCON レジスタの OSTS ビットには、デバイスが現在どのオシレータを使用して動作しているかが表示されます。OSTS ビットがセットされている場合、デバイスはコンフィグレーション レジスタ CONFIG1HのFOSCビットが定義するオシレータによって動作中です。OSTS ビットがクリアされている場合、内部オシレータによって動作しています。

2.13 フェイルセーフ クロック モニタ

フェイルセーフ クロック モニタ (FSCM) により、外部オシレータに障害が発生してもデバイスは動作を続ける事ができます。FSCM はオシレータ起動タイマ(OST) のタイムアウト後のあらゆる時点で発生するオシレータ障害を検出します。FSCM は、コンフィグレーション レジスタ CONFIG1H の FCMEN ビットをセットすると有効になります。FSCM は、全ての外部オシレータモード (LP、XT、HS、EC、RC) に適用できます。

図 2-6: FSCM のブロック図

2.13.1 フェイルセーフ検出

FSCM モジュールは、外部オシレータの障害を FSCMサンプルクロックと比較する事で検出します。サンプルクロックは LFINTOSC を 64 分周して生成します( 図 2-6 参照 )。障害検出ブロックにはラッチがあります。このラッチは、外部クロックの立ち下がりエッジでセットされ、 サンプルクロックの立ち上がりエッジでクリアされます。サンプルクロックの半サイクルが完了するまでにプライマリ クロックが Low にならないと、障害が発生したと見なされます。

2.13.2 フェイルセーフ動作

外部クロックに障害が発生すると、FSCM はデバイスクロックを内部クロック源に切り換え、PIR2 レジスタのビットフラグ OSCFIF をセットします。PIE2 レジスタの OSCFIE ビットがセットされている場合、OSCFIF フラグにより割り込みが生成されます。この割り込みによって、デバイスのファームウェアはクロック障害によって発生する問題を軽減する手順を実行できます。デバイスのファームウェアが外部オシレータを正常に再起動し、動作を再度外部に切り換えるまで、システムクロックは引き続き内部クロック源によって駆動されます。障害が発生したクロック源に自動的に復帰する事はありません。

FSCM が使用する内部クロック源は、OSCCON レジスタの IRCF<2:0> ビットによって決まります。従って、あらかじめ内部オシレータを設定しておく事ができます。

External

LFINTOSC÷ 64

S

R

Q

31 kHz(~32 s)

488 Hz(~2 ms)

Clock MonitorLatch

ClockFailure

Detected

Oscillator

Clock

Q

Sample Clock

DS41350D_JP - p. 26 Preliminary 2010 Microchip Technology Inc.

Page 27: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

2.13.3 フェイルセーフ状態の解除

フェイルセーフ状態は、以下のいずれかの方法によって解除できます。

• 全てのリセット

• OSCCON レジスタの SCS1 ビットのトグル

いずれの条件でも OST が再起動します。OST のカウント中、デバイスは OSCCON によって選択されたINTOSC による動作を続けます。OST がタイムアウトすると、フェイルセーフ状態が解除され、デバイスは外部クロック源に自動的に切り換わります。OSCFIFフラグがクリアされるまで、フェイルセーフ状態を解除する必要はありません。

2.13.4 リセットまたはスリープからのウェイクアップ

FSCMはオシレータ起動タイマ (OST)のタイムアウト後に発生するオシレータ障害を検出できるように設計されています。OST はスリープ後のウェイクアップお

よび全種類のリセット後に動作しますが、 EC またはRCクロックモードでは使用されません。これらのモードでは、リセットまたはウェイクアップの完了後ただちに FSCM がアクティブになります。FSCM が有効な場合、2 段階起動も有効です。従って、OST のカウント中デバイスは常時コードを実行します。

図 2-7: FSCM のタイミング チャート

表 2-6: クロック源に関連するレジスタの要約

Note: オシレータの起動時間には大きな幅があるため、オシレータの起動中 ( つまり、リセットまたはスリープ状態が完了するまで )はフェイルセーフ回路はアクティブになりません。適当な時間が経過したら、ユーザはOSCCONレジスタのOSTSビットを調べ、オシレータが起動してシステムクロックの切り換えが正常に完了している事を確認する必要があります。

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 リセット値の掲載ページ

CONFIG1H IESO FCMEN PCLKEN PLLEN FOSC3 FOSC2 FOSC1 FOSC0 296

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

OSCCON IDLEN IRCF2 IRCF1 IRCF0 OSTS HFIOFS SCS1 SCS0 288

OSCTUNE INTSRC SPLLEN TUN5 TUN4 TUN3 TUN2 TUN1 TUN0 290

PIE2 OSCFIE C1IE C2IE EEIE BCLIE USBIE TMR3IE — 290

PIR2 OSCFIF C1IF C2IF EEIF BCLIF USBIF TMR3IF — 290

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 105

凡例 : x = 未知、u = 変化なし、– = 未実装 (「0」として読み出し )、 網掛けの部分はオシレータでは使用しません。Note 1: その他のリセット ( パワーアップ以外 ) には、通常動作中の MCLR リセットやウォッチドッグ タイマ リセット

があります。

OSCFIF

SystemClock

Output

Sample Clock

FailureDetected

OscillatorFailure

Note: 通常、システムクロックはサンプルクロックよりもはるかに高い周波数で動作します。上記の例では、図を

わかりやすくするために周波数比を小さくしてあります。

(Q)

Test Test Test

Clock Monitor Output

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 27

Page 28: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 28 Preliminary 2010 Microchip Technology Inc.

Page 29: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.0 メモリ構成

PIC18 拡張マイクロコントローラは、以下の 3 種類のメモリを搭載しています。

• プログラムメモリ

• データ RAM

• データ EEPROM

ハーバード アーキテクチャのデバイスとして、データメモリとプログラムメモリは独立したバスを使用します。このため 2 つのメモリ空間に同時にアクセスできます。データ EEPROM には、一連の制御レジスタによってアドレスを指定してアクセスします。このため、実用上は一種の周辺デバイスと見なす事ができます。

フラッシュ プログラムメモリの動作の詳細は 4.0「フラッシュ プログラムメモリ」に記載されています。また、データ EEPROM については、別途 5.0「データEEPROM メモリ」で説明します。

3.1 プログラムメモリの構成

PIC18 マイクロコントローラには 21 ビットのプログラム カウンタが実装され、2 MB のプログラムメモリ空間に対してアドレスを指定できます。物理的に実装されたメモリの上限と 2 MB のアドレスの間のメモリ位置にアクセスすると、常に「0」(NOP 命令 ) が返されます。

このファミリに属するデバイスは、以下のプログラムメモリを搭載しています。

• PIC18F13K50: 8 KB のフラッシュメモリ、 大4,096 のシングルワード命令

• PIC18F14K50: 16 KB のフラッシュメモリ、 大8,192 のシングルワード命令

PIC18 には、1 つのリセットベクタと 2 つの割り込みベクタがあります。リセットベクタのアドレスは0000h、割り込みベクタのアドレスは 0008h と 0018hです。

図 3-1にPIC18F/LF1XK50のプログラムメモリ マップを示します。メモリブロックの詳細は、図 24-2 に示します。

図 3-1: PIC18F/LF1XK50 のプログラムメモリ マップとスタック

PC<20:0>

Stack Level 1

Stack Level 31

Reset Vector

Low Priority Interrupt Vector

CALL,RCALL,RETURNRETFIE,RETLW

21

0000h

0018h

High Priority Interrupt Vector 0008h

Use

r M

emor

y S

pace

1FFFFFh

4000h3FFFh

200000h

On-ChipProgram Memory

Read ‘0’

1FFFh

2000h

On-ChipProgram Memory

Read ‘0’

PIC18F14K50

PIC18F13K50

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 29

Page 30: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.1.1 プログラム カウンタ

プログラム カウンタ (PC) は、フェッチして実行する命令のアドレスを指定します。PC は 21 ビット幅で、3 つの独立した 8 ビット レジスタから構成されます。PCLレジスタと呼ばれる下位バイトは読み書き可能です。上位バイトの PCH レジスタには PC<15:8> のビットが含まれ、直接読み書きはできません。PCH レジスタは、PCLATH レジスタを介して更新します。 上位バイトは PCU と呼ばれます。このレジスタには、PC<20:16> のビットが含まれ、PCH と同様に直接読み書きする事はできません。PCUレジスタは、PCLATUレジスタを介して更新します。

PCL への書き込み動作を実行するたびに、PCLATH および PCLATU の内容がプログラム カウンタに転送されます。同様に、PCL からの読み出し動作を実行するたびに、プログラム カウンタの上位 2 バイトがPCLATH および PCLATU に転送されます。この機能は、計算によって PC をオフセットさせる場合に便利です (3.1.4.1「計算型 GOTO」参照 )。

PC はバイト単位でプログラムメモリのアドレスを指定します。ワード単位の命令と PC の間で不整合が生じないように、PCL の 下位ビット (LSb) は「0」に固定されています。従って、プログラムメモリ内の連続する命令に対して順にアドレスを指定していく場合、PC は 2 ずつインクリメントします。

CALL、RCALL、GOTO、プログラム分岐命令は、プログラム カウンタに直接書き込みます。これらの命令では、PCLATH や PCLATU の内容がプログラム カウンタに転送されません。

3.1.2 リターンアドレス スタック

リターンアドレス スタックは、任意の組み合わせのプログラムコールと割り込みに対して 大 31 個まで対応できます。CALL または RCALL 命令を実行するか、割り込みに対して肯定応答 (ACK) すると、スタックにPC の値がプッシュされます。RETURN、RETLW、RETFIE 命令を実行すると、スタックから PC の値がポップされます。PCLATU および PCLATH は、RETURN系命令または CALL 系命令のいずれからも影響を受けません。

スタックは、31 ワード x21 ビットの RAM、5 ビットのスタックポインタSTKPTRによって動作します。スタック空間は、プログラムおよびデータ空間のいずれにも属しません。スタックポインタは読み書き可能です。また、スタックの 上位 TOS (Top-of-Stack) に格納されているアドレスは、TOS 特殊ファイルレジスタを介して読み書きできます。スタックのデータは、これらのレジスタによってプッシュまたはポップできます。

CALL 系の命令を実行すると、スタックへのプッシュが実行されます。実際の動作は、まずスタックポインタがインクリメントされ、スタックポインタが指し示す位置に PC ( 既に CALLの次の命令を指しています )の内容が書き込まれます。RETURN 系の命令を実行すると、スタックからのポップが実行されます。実際の動作は、STKPTR が指し示す位置の内容が PC に転送されてからスタックポインタの値がデクリメントします。

全てのリセット動作は、スタックポインタを「00000」に初期化します。RAM 上にスタックポインタの値「00000」に対応する位置は存在しません。これは単なるリセット値です。スタックフルまたはオーバーフロー / アンダーフローの状態は、ステータスビットによって示します。

3.1.2.1 Top-of-Stack へのアクセス

リターンアドレス スタックの読み書きは 上位 (TOS)に対してのみ実行できます。STKPTR レジスタが指し示すスタック位置の内容は、3 つのレジスタセットTOSU:TOSH:TOSL に保持されます ( 図 3-2)。これにより、必要に応じてソフトウェア スタックを実装できます。CALL、RCALL、または割り込みの発生後、ソフトウェアは TOSU:TOSH:TOSL レジスタを読み出す事でプッシュされた値を取得できます。取得した値は、ユーザ定義のソフトウェア スタックに格納できます。リターンする時は、これらの値を TOSU:TOSH:TOSL に返します。

スタックにアクセスする場合、ユーザはグローバル割り込みイネーブルビットを無効にして、不慮のスタック破損を防ぐ必要があります。

図 3-2: リターンアドレス スタックと関連するレジスタ

00011001A34h

111111111011101

000100000100000

00010

Return Address Stack <20:0>

Top-of-Stack000D58h

TOSLTOSHTOSU34h1Ah00h

STKPTR<4:0>

Top-of-Stack Registers Stack Pointer

DS41350D_JP - p. 30 Preliminary 2010 Microchip Technology Inc.

Page 31: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.1.2.2 リターン スタックポインタ(STKPTR)

STKPTR レジスタ ( レジスタ 3-1) には、スタックポインタの値、STKFUL ( スタックフル ) ビット、STKUNF( スタック アンダーフロー) ビットが格納されます。スタックポインタが取る事のできる値は 0 ~ 31 です。スタックポインタは、値をスタックにプッシュする前にインクリメントされ、スタックからポップした後にデクリメントされます。リセットするとスタックポインタの値はゼロになります。スタックポインタの値は、ユーザによる読み書きが可能です。この機能は、リアルタイム オペレーティング システム(RTOS)におけるリターンスタックの管理に使用できます。

スタックに PC が 31 回プッシュされると ( その間、スタックから値を一切ポップしなかった場合 )、STKFULビットがセットされます。STKFUL ビットは、ソフトウェアまたは POR によってクリアされます。

スタックフルが発生した場合の動作は、コンフィグレーション ビットSTVREN (スタック オーバーフローリセット イネーブル ) の状態によって決まります ( デバイス コンフィグレーション ビットの詳細は 24.1「コンフィグレーション ビット」を参照してください )。STVREN がセットされている場合 ( 既定値 )、31 回目のプッシュが実行されると、(PC + 2) の値がスタックに格納され、STKFUL ビットのセット後、デバイスがリセットされます。STKFUL ビットはセットされたまま、スタックポインタはゼロにリセットされます。

一方、STVREN がクリアされている場合、31 回目のプッシュによって STKFUL ビットがセットされ、スタックポインタは 31 にインクリメントされます。その後は、プッシュ動作を実行しても 31 回目にプッシュされた値が上書きされる事はなく、STKPTR の値も 31に保たれます。

スタックが完全に空になるまでポップすると、次のポップでは PC にゼロが返され、STKUNF ビットがセットされます。スタックポインタの値はゼロのままです。STKUNF ビットは、ソフトウェアによってクリアされるか POR が発生するまで、セットされた状態を維持します。

3.1.2.3 PUSHおよび POP命令

Top-of-Stack (TOS) は読み書き可能であるため、通常のプログラム実行を妨げる事なく、スタックとの間で値をプッシュ / ポップできる機能があると便利です。PIC18 の命令セットには、ソフトウェアによるこのような TOS 操作を可能とする 2 つの命令、PUSHと POPがあります。これらの命令によって TOSU、TOSH、TOSL を変更して、スタックにデータまたはリターンアドレスを格納できます。

PUSH 命令は現在の PC の値をスタックにプッシュします。つまり、スタックポインタをインクリメントして、現在の PC の値をスタックに格納します。

POP命令はスタックポインタをデクリメントして、現在の TOS の値を破棄します。そして、破棄された値より前にスタックにプッシュされた値が、新たな TOSの値になります。

Note: アンダーフローが発生してPCに値ゼロが返されると、プログラムはリセットベクタに分岐します。分岐先でスタックの状態を確認して適切な措置を講ずる事ができます。この動作は特殊機能レジスタ(SFR) の内容には影響を与えない事から、リセットとは異なります。

レジスタ 3-1: STKPTR: スタックポインタ レジスタ

R/C-0 R/C-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

STKFUL(1) STKUNF(1) — SP4 SP3 SP2 SP1 SP0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット C = クリアのみ可能ビット

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 STKFUL: スタックフル フラグ ビット (1)

1 = スタックがフルまたはオーバーフローした 0 = スタックはフルではなく、オーバーフローもしていない

bit 6 STKUNF: スタック アンダーフロー フラグ ビット (1)

1 = スタック アンダーフローが発生した 0 = スタック アンダーフローは発生していない

bit 5 未実装ビット : 「0」として読み出し

bit 4-0 SP<4:0>: スタックポインタの位置を表すビット

Note 1: bit 7 と bit 6 は、ユーザ ソフトウェアまたは POR によってクリアされます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 31

Page 32: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.1.2.4 スタックフルおよびスタック アンダーフローによるリセット

スタック オーバーフローおよびスタック アンダーフロー状態によるデバイスのリセットは、コンフィグレーション レジスタCONFIG4LのSTVRENビットをセットすると有効になります。STVREN がセットされている場合、スタックフルまたはアンダーフローによってそれぞれSTKFULまたはSTKUNFビットがセットされたのち、デバイスがリセットされます。STVREN がクリアされている場合、スタックフルまたはアンダーフローによってそれぞれ STKFUL またはSTKUNF ビットがセットされますが、デバイスはリセットされません。STKFUL および STKUNF ビットは、ユーザ ソフトウェアまたはパワーオン リセットによってクリアされます。

3.1.3 高速レジスタスタック

ステータス、WREG、BSR の各レジスタには高速レジスタスタックが装備され、割り込み処理後の「高速リターン」機能を提供します。各レジスタのスタックは1 レベルの深さしかなく、読み出しも書き込みもできません。これらのスタックには、割り込みによってプロセッサ動作が分岐すると、対応するレジスタの現在値が格納されます。いずれの割り込み要因も値をスタックレジスタにプッシュします。その後、RETFIE,FAST命令によって割り込み処理から戻る際に、スタックレジスタ内の値は対応するレジスタに返されます。

低優先度および高優先度の割り込みが両方とも有効に設定されている場合、低優先度の割り込みからのリターンに対しては、スタックレジスタ動作の信頼性を確保できません。低優先度の割り込み処理中に高優先度の割り込みが発生した場合、低優先度割り込みがスタックレジスタに保存した値が上書きされてしまうためです。ユーザはこのような場合に備えて、低優先度割り込みが発生したら主要レジスタの値をソフトウェアによって保存しておく必要があります。

割り込みの優先度を使用しない場合、全ての割り込みからのリターンに高速レジスタスタックを使用できます。また、割り込みを一切使用しない場合でも、サブルーチン コールの終わりに高速レジスタスタックを使用してステータス、WREG、BSR の各レジスタの値をリストアできます。サブルーチン コールで高速レジスタスタックを使用するには、CALL label, FAST命令を実行してステータス レジスタ、WREG、BSR の値を高速レジスタスタックに保存する必要があります。その後、RETURN, FAST 命令を実行して、これらのレジスタの値を高速レジスタスタックからリストアします。

例 3-1 に、サブルーチンのコールおよびリターン時に高速レジスタスタックを使用するサンプルコードを示します。

例 3-1: 高速レジスタスタックを使用するサンプルコード

3.1.4 プログラムメモリ内のルックアップ テーブル

プログラミングにおいて、プログラムメモリ内にデータ構造、つまりルックアップ テーブルの作成が必要となる場合があります。PIC18 では、以下の 2 つの方法でルックアップ テーブルを実装できます。

• 計算型 GOTO

• テーブル読み出し

3.1.4.1 計算型 GOTO

計算型 GOTOは、プログラム カウンタにオフセット値を加算する事で実現します。例 3-2 にサンプルコードを示します。

ルックアップ テーブルは ADDWF PCL命令と、一連のRETLW nn命令によって構成します。W レジスタ(WREG) には、そのテーブルルーチンを呼び出す前に、テーブル内のオフセットを格納しておきます。呼び出されるルーチンの 初の命令は ADDWF PCLです。その次に実行される命令は、RETLW nn命令の中の 1 つで、呼び出し元の関数に値「nn」を返します。

WREG 内のオフセット値は、プログラム カウンタを進めるバイト数を表し、2 の倍数である必要があります (LSb = 0)。

この方法では、命令の各位置に 1 バイトのデータしか保存できず、リターンアドレス スタックに空きが必要です。

例 3-2: オフセット値を使用する計算型GOTO

3.1.4.2 テーブルへの読み書き

プログラムメモリ内にデータを保存する方法では、命令の各位置に 2 バイトのデータを保存できます。

テーブルへの読み書きを使用して、ルックアップ テーブルのデータをプログラムワード 1 つあたり 2 バイト保存できます。テーブルポインタ (TBLPTR) レジスタでバイトアドレスを指定し、テーブルラッチ (TABLAT)レジスタにプログラムメモリに対して読み書きするデータが格納されます。データはプログラムメモリの間で一度に 1 バイトずつ転送されます。

テーブルへの読み書きの動作は、4.1「テーブル読み出し / 書き込み」で詳しく説明します。

CALL SUB1, FAST ;STATUS, WREG, BSR;SAVED IN FAST REGISTER;STACK

SUB1

RETURN, FAST ;RESTORE VALUES SAVED;IN FAST REGISTER STACK

MOVF OFFSET, WCALL TABLE

ORG nn00hTABLE ADDWF PCL

RETLW nnhRETLW nnhRETLW nnh...

DS41350D_JP - p. 32 Preliminary 2010 Microchip Technology Inc.

Page 33: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.2 PIC18 の命令サイクル

3.2.1 クロック方式

マイクロコントローラへのクロック入力は、それが内部クロック源と外部クロック源のいずれから供給されたものであれ、内部で 4 分周されて 4 つのオーバーラップのない直角位相クロック (Q1、Q2、Q3、Q4) が生成されます。チップ内部では、Q1 ごとにプログラム カウンタがインクリメントされ、Q4 の期間にプログラムメモリから命令がフェッチされ、命令レジスタにラッチされます。次の Q1 から Q4 の期間に命令がデコードされ実行されます。図 3-3 にクロックと命令実行のフローを示します。

3.2.2 命令のフロー / パイプライン処理

「命令サイクル」は 4 つの Q サイクル Q1 ~ Q4 より構成されます。命令のフェッチと実行には、フェッチに1 命令サイクル、デコードと実行にもう 1 命令サイクルを使用するパイプライン方式が採用されています。パイプライン方式により、各命令は実効的には 1 サイクルで処理されます。命令がプログラム カウンタを変更する場合 (GOTO等 )、命令が完了するまでに 2 サイクル必要です ( 例 3-3)。

フェッチサイクルは Q1 のプログラム カウンタ (PC)のインクリメントから始まります。

実行サイクルでは、フェッチされた命令がサイクルQ1で命令レジスタ (IR) にラッチされます。続くサイクルQ2、Q3、Q4 で命令がデコードされ実行されます。データメモリからの読み出し ( オペランドの読み出し ) はQ2 で、データメモリへの書き込み ( 結果格納先への書き込み ) は Q4 で実行されます。

図 3-3: クロック /命令サイクル

例 3-3: 命令パイプライン フロー

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

OSC1

Q1

Q2

Q3

Q4

PC

OSC2/CLKOUT(RC mode)

PC PC + 2 PC + 4

Fetch INST (PC)Execute INST (PC – 2)

Fetch INST (PC + 2)Execute INST (PC)

Fetch INST (PC + 4)Execute INST (PC + 2)

InternalPhaseClock

プログラム分岐以外の全ての命令はシングルサイクルで完了します。プログラム分岐の場合、フェッチ済みの命令をパイプラインから「破棄」して新しい命令をフェッチ / 実行するため、2 サイクル必要です。

TCY0 TCY1 TCY2 TCY3 TCY4 TCY5

1. MOVLW 55h Fetch 1 Execute 1

2. MOVWF PORTB Fetch 2 Execute 2

3. BRA SUB_1 Fetch 3 Execute 3

4. BSF PORTA, BIT3 (Forced NOP) Fetch 4 Flush (NOP)

5. Instruction @ address SUB_1 Fetch SUB_1 Execute SUB_1

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 33

Page 34: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.2.3 プログラムメモリ内の命令

プログラムメモリのアドレスはバイト単位で指定します。命令は、2 バイトまたは 4 バイトのいずれかでプログラムメモリに格納されます。命令ワードの 下位バイト (LSB) は、必ずプログラムメモリ内の偶数アドレス位置 (LSb = 0) に保存されます。各命令の区切り方に不整合が生じないように、PC は 2 ずつインクリメントし、LSb からは常に「0」が読み出されます(3.1.1「プログラム カウンタ」参照 )。

図 3-4 に、プログラムメモリへの命令ワードの格納例を示します。

CALLおよび GOTO命令には、プログラムメモリの絶対アドレスが埋め込まれています。命令は全てワード境界に沿って格納されるため、これらの命令に含まれるデータもワードのアドレスです。ワードアドレスをPC<20:1> に書き込み、プログラムメモリ内のバイトアドレスにアクセスします。図 3-4 の Instruction 2 は、GOTO 0006hという命令がプログラムメモリ内にどのようにエンコードされるかを示します。相対アドレスオフセットをエンコードするプログラム分岐命令も同様に動作します。分岐命令に保存されるオフセット値は、PC をオフセットさせる量をシングルワード命令の数として表します。命令セットの詳細は、25.0「命令セットの概要」で説明します。

図 3-4: プログラムメモリ内の命令

3.2.4 2 ワード命令

標準の PIC18 命令セットには、4 つの 2 ワード命令があります。CALL、MOVFF、GOTO、LSFRです。いずれの命令も 2 ワード目の 上位 (MSb) の 4 ビットは常に

「1111」であり、残りの 12 ビットはリテラルデータ( 通常はデータメモリのアドレス ) を収めます。

2 ワード目の 上位 4 ビットの値「1111」は、特殊なNOP 動作を規定します。2 ワード命令が正常なシーケンスで実行された場合、1 ワード目の直後に 2 ワード

目のデータにアクセス、実行されます。しかし、何らかの理由で 1 ワード目がスキップされ、2 ワード目だけが実行された場合、NOPが実行されます。このような仕組みは、2 ワード命令の前に PC を変更する条件分岐命令が存在する場合に必要です。例 3-4 に、動作例を示します。

例 3-4: 2 ワード命令

Word AddressLSB = 1 LSB = 0

Program MemoryByte Locations

000000h000002h000004h000006h

Instruction 1: MOVLW 055h 0Fh 55h 000008hInstruction 2: GOTO 0006h EFh 03h 00000Ah

F0h 00h 00000ChInstruction 3: MOVFF 123h, 456h C1h 23h 00000Eh

F4h 56h 000010h000012h000014h

Note: 拡張命令セットの 2 ワード命令については、3.6「PIC18 命令の実行と拡張命令セット」を参照してください。

例 1:

オブジェクト コード ソースコード

0110 0110 0000 0000 TSTFSZ REG1 ; is RAM location 0?

1100 0001 0010 0011 MOVFF REG1, REG2 ; No, skip this word

1111 0100 0101 0110 ; Execute this word as a NOP

0010 0100 0000 0000 ADDWF REG3 ; continue code

例 2:

オブジェクト コード ソースコード

0110 0110 0000 0000 TSTFSZ REG1 ; is RAM location 0?

1100 0001 0010 0011 MOVFF REG1, REG2 ; Yes, execute this word

1111 0100 0101 0110 ; 2nd word of instruction

0010 0100 0000 0000 ADDWF REG3 ; continue code

DS41350D_JP - p. 34 Preliminary 2010 Microchip Technology Inc.

Page 35: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.3 データメモリの構成

PIC18 のデータメモリは SRAM として実装しています。データメモリの各レジスタは 12 ビットのアドレスを持ち、 大 4096 バイトのデータメモリを使用できます。メモリ空間は、それぞれが 256 バイトの 大16 個のバンクに分割されます。図 3-5 と図 3-6 に、PIC18F/LF1XK50 のデータメモリ構成を示します。

データメモリには特殊機能レジスタ (SFR)と汎用レジスタ (GPR) が含まれます。SFR はコントローラや周辺機能の制御やステータス表示に、GPR はデータの格納やユーザ アプリケーションの一時格納動作 ( スクラッチパッド動作 ) に使います。未実装のメモリ位置を読み出すと、常に「0」が返されます。

命令セットとアーキテクチャは、全てのバンク範囲に対応できます。直接、間接、インデックス付きのアドレッシング モードによって、データメモリの全空間にアクセスできます。アドレッシング モードについては、このセクションの後半で説明します。

頻繁に使われるレジスタ (SFR や一部の GPR) にシングルサイクルでアクセスできるように、PIC18 はアクセスバンクを実装しています。これは、SFR およびGPR バンク 0 の下位部分に、バンク セレクト レジスタ (BSR) を使用しないで高速にアクセスできるようにする 256 バイトのメモリ空間です。アクセス RAM については、3.3.3「アクセスバンク」で詳細に説明します。

3.3.1 USB RAM

データメモリの一部は、特殊なデュアルアクセス RAMにマッピングされています。USB モジュールが無効な場合、これらのバンクの GPR もデータメモリ空間内の他の GPR と同じように使用できます。

USB モジュールが有効な場合、これらのバンクのメモリは USB 動作のバッファ RAM に割り当てられます。この領域はマイクロコントローラ コアと USB シリアル インターフェイス エンジン(SIE)との間で共有され、両者の間でデータを直接転送するために使われます。

原理的には、USB バッファに割り当てられていないUSB RAM の領域を、スクラッチパッド メモリやその他の可変ストレージとして使用する事は可能です。しかし、実際にはバッファ割り当ての動的な性質を考えると、このような使用方法はリスクを伴います。USBRAM とバッファ動作の詳細は、22.0「USB (UniversalSerial Bus)」で説明します。

3.3.2 バンク セレクト レジスタ (BSR)

大きなデータメモリの空間に対しては、全てのアドレスに高速にアクセスできるように、効率的なアドレッシング方式が必要です。このため、読み書き動作ごとにアドレス全体を指定する必要がない事が理想です。PIC18 では、RAM のバンク方式によってこれを実現しています。この方式は、メモリ空間をそれぞれ 256 バイトの連続する 16 個のバンクに分割します。メモリ位置は、命令に応じて 12 ビットのアドレス全体で指定するか、8 ビットの下位アドレスと 4 ビットのバンクポインタに分けて指定します。

PIC18 命令セットのほとんどの命令は、バンク セレクト レジスタ(BSR)と呼ばれるバンクポインタを使用します。この SFR にメモリ位置アドレスの 上位 4 ビットが格納され、下位 8 ビットは命令自体に埋め込まれます。BSR は下位 4 ビット (BSR<3:0>) のみが実装されています。上位 4 ビットは未使用です。常に「0」が読み出され、書き込む事はできません。BSR には、MOVLB命令によって値を直接格納できます。

BSR の値はデータメモリ内のバンクを表し、命令に含まれる 8 ビットはバンク内の位置を示します。この値は、バンクの下限からのオフセットと考える事もできます。図 3-5 と図 3-6 に、BSR の値とデータメモリのバンク分割の関係を示します。

大 16 個のレジスタに同一の下位アドレスが存在するため、ユーザはデータの読み書きを実行する前に適切なバンクが選択されている事を確認する必要があります。例えば、プログラムデータを書き込むつもりで8 ビットアドレスに F9h を指定した場合、BSR の値に0Fhが指定されているとプログラム カウンタがリセットされてしまいます。

バンクは任意に指定できますが、読み書きを実行できるのは、実際に実装されているバンクに対してのみです。実装されていないバンクに対する書き込みは無視され、読み出しでは「0」が返されます。そのような場合でも、ステータス レジスタには動作が正常に実行されたかのような値が設定されます。図 3-5 と図 3-6のデータ メモリ マップに、どのバンクが実装されているかを示します。

PIC18 のコア命令セットの中では、MOVFF 命令のみが、移動元および移動先レジスタのアドレス全 12ビットを指定します。この命令は BSR を無視します。その他の命令は、いずれもオペランドとして下位アドレスのみを指定するため、対象のレジスタ位置を指定するには、BSR またはアクセスバンクを使用する必要があります。

Note: PIC18 の拡張命令セットを有効にした場合、データメモリの動作の一部が変更されます。詳細は、3.5「データメモリと拡張命令セット」を参照してください。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 35

Page 36: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 3-5: PIC18F13K50/PIC18LF13K50 のデータ メモリ マップ

Bank 0

Bank 1

Bank 14

Bank 15

Data Memory MapBSR<3:0>

= 0000

= 0001

= 1111

060h05Fh

F60hFFFh

00h

5Fh60h

FFh

Access Bank

When ‘a’ = 0:

The BSR is ignored and theAccess Bank is used.

The first 96 bytes are general purpose RAM (from Bank 0).

The second 160 bytes areSpecial Function Registers(from Bank 15).

When ‘a’ = 1:

The BSR specifies the Bankused by the instruction.

F5Fh

F00hEFFh

1FFh

100h0FFh

000hAccess RAM

FFh

00h

FFh

00h

FFh

00h

GPR

GPR

SFR

Access RAM High

Access RAM Low

Bank 2

= 0110

= 0010

(SFRs)

2FFh

200h

3FFh

300h

4FFh

400h

5FFh

500h

6FFh

600h

7FFh

700h

8FFh

800h

9FFh

900h

AFFh

A00h

BFFh

B00h

CFFh

C00h

DFFh

D00h

E00h

Bank 3

Bank 4

Bank 5

Bank 6

Bank 7

Bank 8

Bank 9

Bank 10

Bank 11

Bank 12

Bank 13

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

= 0011

= 0100

= 0101

= 0111

= 1000

= 1001

= 1010

= 1011

= 1100

= 1101

= 1110

UnusedRead 00h

Unused

UnusedRead 00h

F53hSFR(1)

Note 1: F53h ~ F5Fh のアドレス空間を占める SFR は仮想バンクに含まれません。

(DPRAM)

DS41350D_JP - p. 36 Preliminary 2010 Microchip Technology Inc.

Page 37: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 3-6: PIC18F14K50/PIC18LF14K50 のデータ メモリ マップ

Bank 0

Bank 1

Bank 14

Bank 15

Data Memory MapBSR<3:0>

= 0000

= 0001

= 1111

060h05Fh

00h

5Fh60h

FFh

Access Bank

When ‘a’ = 0:

The BSR is ignored and theAccess Bank is used.

The first 96 bytes are general purpose RAM (from Bank 0).

The second 160 bytes areSpecial Function Registers(from Bank 15).

When ‘a’ = 1:

The BSR specifies the Bankused by the instruction.

F00hEFFh

1FFh

100h0FFh

000hAccess RAM

FFh

00h

FFh

00h

GPR

GPR

Access RAM High

Access RAM Low

Bank 2

= 0110

= 0010

(SFRs)

2FFh

200h

3FFh

300h

4FFh

400h

5FFh

500h

6FFh

600h

7FFh

700h

8FFh

800h

9FFh

900h

AFFh

A00h

BFFh

B00h

CFFh

C00h

DFFh

D00h

E00h

Bank 3

Bank 4

Bank 5

Bank 6

Bank 7

Bank 8

Bank 9

Bank 10

Bank 11

Bank 12

Bank 13

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

GPR

FFh

00h

= 0011

= 0100

= 0101

= 0111

= 1000

= 1001

= 1010

= 1011

= 1100

= 1101

= 1110

UnusedRead 00h

Note 1: F53h ~ F5Fh のアドレス空間を占める SFR は仮想バンクに含まれません。

F60hFFFh

F5Fh

FFh

00h

SFR

Unused

F53hSFR(1)

(DPRAM)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 37

Page 38: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 3-7: バンク セレクト レジスタの使用方法 ( 直接アドレッシング )

Note 1: 命令のアクセス RAM ビットを設定すると、選択されたバンク (BSR<3:0>) ではなく、アクセス バンク レジスタが優先してアクセスされます。

2: MOVFF 命令には、アドレスの全 12 ビットが埋め込まれています。

Data Memory

Bank Select(2)

7 0From Opcode(2)

0 0 0 0

000h

100h

200h

300h

F00h

E00h

FFFh

Bank 0

Bank 1

Bank 2

Bank 14

Bank 15

00h

FFh00h

FFh00h

FFh

00h

FFh00h

FFh

00h

FFh

Bank 3throughBank 13

0 0 1 1 1 1 1 1 1 1 1 1

7 0BSR(1)

DS41350D_JP - p. 38 Preliminary 2010 Microchip Technology Inc.

Page 39: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.3.3 アクセスバンク

ユーザは、BSR および命令に埋め込まれた 8 ビットのアドレスによってデータメモリの全アドレス範囲を指定できますが、これは同時に、正しいバンクが選択されているかどうかユーザが常に確認する必要がある事を意味します。この確認を怠ると、誤ったメモリ位置に対する読み書きが実行されるおそれがあります。例えば、演算結果を GPR ではなく SFR に書き込んでしまった場合の影響は深刻です。しかし、データメモリの読み書きごとに BSR を確認、変更する事は非常に非効率的です。

も頻繁に使用されるデータメモリ位置へのアクセスを効率化するために、データメモリの一部に対してアクセスバンクが設定されています。これにより、BSRを指定せずにアクセスできます。アクセスバンクは、バンク 0 のメモリの先頭 96 バイト (00h-5Fh) とバンク 15 の末尾 160 バイト (60h-FFh) で構成されます。下位の半分は「アクセス RAM」と呼ばれ、GPR で構成されます。上位の半分にはデバイスの SFR もマッピングされます。これら 2 つの領域は、アクセスバンク内では連続してマッピングされており、8 ビットでリニアにアドレスを指定できます ( 図 3-5 および図 3-6)。

アクセスバンクは、PIC18 のコア命令セットのうち、アクセス RAM ビット ( 命令内の「a」パラメータ ) を含むものが使用します。「a」が「1」の場合、命令はデータメモリのアドレスとして、BSR とオペコードに含まれる 8 ビットのアドレスを使用します。一方、「a」が「0」の場合、命令は BSR の現在値を無視し、アクセスバンクのアドレスマップを使用します。

この「強制」アドレッシングを使用する事で、命令は初に BSR を更新する事なく、シングルサイクルで

データアドレスに対する演算を実行できます。これによって、アクセスバンク内の 60h 以上については、8ビットアドレスによってSFRに対する評価や演算をより効率的に実行できる事になります。60h よりも下位のアクセス RAM は、直近の計算結果や頻繁に使用されるプログラム変数等、高速のアクセスが必要なデータ値の格納に適しています。また、アクセス RAMを使用する事で、変数の内容に応じた保存と切り換えを、より高速で効率的なコードによって実装できます。

拡張命令セットが有効な場合 ( コンフィグレーションビット XINST = 1)、アクセスバンクのマッピングは若干異なります。これについては、3.5.3「インデックス付きリテラル オフセット モードにおけるアクセスバンクのマッピング」で詳細に説明します。

3.3.4 汎用レジスタファイル

PIC18 は、GPR 領域内にバンク分けされたメモリを設定できます。これは、全命令で使用できるデータ RAMです。GPR はバンク 0 の下端 ( アドレス 000h) から始まり、上位にある SFR 領域の下端に向けて並びます。GPR はパワーオン リセットによって初期化されず、その他のいずれのリセットが発生しても変化しません。

3.3.5 特殊機能レジスタ

特殊機能レジスタ (SFR) は、CPU と周辺モジュールがデバイスの動作を制御するために使うレジスタです。これらのレジスタは SRAM として実装されています。SFR はデータメモリの上端 (FFFh) から下位に向かって並び、バンク 15 の上部 (F60h ~ FFFh) を占有します。表 3-1 と表 3-2 にこれらのレジスタ一覧を示します。

SFR は、デバイスの「コア」機能 (ALU、リセット、割り込み ) に関連するものと、周辺機能に関連するものの 2 つに分類できます。リセットおよび割り込みのレジスタは、それぞれ独立した章で説明しますが、ALUのステータス レジスタについては、このセクションの後半で説明します。また、周辺機能の動作に関連するレジスタについては、その周辺機能の章の中で説明します。

通常 SFR は、その制御対象となる周辺機能に分散して配置されます。未使用の SFR 位置にはメモリが実装されておらず、「0」が読み出されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 39

Page 40: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 3-1: PIC18F/LF1XK50 の特殊機能レジスタマップ

アドレス レジスタ名 アドレス レジスタ名 アドレス レジスタ名 アドレス レジスタ名 アドレス レジスタ名

FFFh TOSU FD7h TMR0H FAFh SPBRG F87h —(2) F5Fh UEIR

FFEh TOSH FD6h TMR0L FAEh RCREG F86h —(2) F5Eh UFRMH

FFDh TOSL FD5h T0CON FADh TXREG F85h —(2) F5Dh UFRML

FFCh STKPTR FD4h —(2) FACh TXSTA F84h —(2) F5Ch UADDR

FFBh PCLATU FD3h OSCCON FABh RCSTA F83h —(2) F5Bh UEIE

FFAh PCLATH FD2h OSCCON2 FAAh — F82h PORTC F5Ah UEP7

FF9h PCL FD1h WDTCON FA9h EEADR F81h PORTB F59h UEP6

FF8h TBLPTRU FD0h RCON FA8h EEDATA F80h PORTA F58h UEP5

FF7h TBLPTRH FCFh TMR1H FA7h EECON2(1) F7Fh ANSELH F57h UEP4

FF6h TBLPTRL FCEh TMR1L FA6h EECON1 F7Eh ANSEL F56h UEP3

FF5h TABLAT FCDh T1CON FA5h —(2) F7Dh —(2) F55h UEP2

FF4h PRODH FCCh TMR2 FA4h —(2) F7Ch —(2) F54h UEP1

FF3h PRODL FCBh PR2 FA3h —(2) F7Bh —(2) F53h UEP0

FF2h INTCON FCAh T2CON FA2h IPR2 F7Ah IOCB

FF1h INTCON2 FC9h SSPBUF FA1h PIR2 F79h IOCA

FF0h INTCON3 FC8h SSPADD FA0h PIE2 F78h WPUB

FEFh INDF0(1) FC7h SSPSTAT F9Fh IPR1 F77h WPUA

FEEh POSTINC0(1) FC6h SSPCON1 F9Eh PIR1 F76h SLRCON

FEDh POSTDEC0(1) FC5h SSPCON2 F9Dh PIE1 F75h —(2)

FECh PREINC0(1) FC4h ADRESH F9Ch —(2) F74h —(2)

FEBh PLUSW0(1) FC3h ADRESL F9Bh OSCTUNE F73h —(2)

FEAh FSR0H FC2h ADCON0 F9Ah —(2) F72h —(2)

FE9h FSR0L FC1h ADCON1 F99h —(2) F71h —(2)

FE8h WREG FC0h ADCON2 F98h —(2) F70h —(2)

FE7h INDF1(1) FBFh CCPR1H F97h —(2) F6Fh SSPMASK

FE6h POSTINC1(1) FBEh CCPR1L F96h —(2) F6Eh —(2)

FE5h POSTDEC1(1) FBDh CCP1CON F95h —(2) F6Dh CM1CON0

FE4h PREINC1(1) FBCh REFCON2 F94h TRISC F6Ch CM2CON1

FE3h PLUSW1(1) FBBh REFCON1 F93h TRISB F6Bh CM2CON0

FE2h FSR1H FBAh REFCON0 F92h TRISA F6Ah —(2)

FE1h FSR1L FB9h PSTRCON F91h —(2) F69h SRCON1

FE0h BSR FB8h BAUDCON F90h —(2) F68h SRCON0

FDFh INDF2(1) FB7h PWM1CON F8Fh —(2) F67h —(2)

FDEh POSTINC2(1) FB6h ECCP1AS F8Eh —(2) F66h —(2)

FDDh POSTDEC2(1) FB5h —(2) F8Dh —(2) F65h —(2)

FDCh PREINC2(1) FB4h —(2) F8Ch —(2) F64h UCON

FDBh PLUSW2(1) FB3h TMR3H F8Bh LATC F63h USTAT

FDAh FSR2H FB2h TMR3L F8Ah LATB F62h UIR

FD9h FSR2L FB1h T3CON F89h LATA F61h UCFG

FD8h STATUS FB0h SPBRGH F88h —(2) F60h UIE

Note 1: これは物理レジスタではありません。

2: 未実装のレジスタからは「0」が読み出されます。

DS41350D_JP - p. 40 Preliminary 2010 Microchip Technology Inc.

Page 41: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 3-2: レジスタファイルの要約 (PIC18F/LF1XK50)

ファイル名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 POR、BOR時の値

詳細ページ

TOSU — — — Top-of-Stack の 上位バイト (TOS<20:16>) ---0 0000 287, 30

TOSH Top-of-Stack の上位バイト (TOS<15:8>) 0000 0000 287, 30

TOSL Top-of-Stack の下位バイト (TOS<7:0>) 0000 0000 287, 30

STKPTR STKFUL STKUNF — SP4 SP3 SP2 SP1 SP0 00-0 0000 287, 31

PCLATU — — — PC<20:16> の保持レジスタ ---0 0000 287, 30

PCLATH PC<15:8> の保持レジスタ 0000 0000 287, 30

PCL PC の下位バイト (PC<7:0>) 0000 0000 287, 30

TBLPTRU — — — プログラムメモリ テーブル ポインタの 上位バイト (TBLPTR<20:16>) ---0 0000 287, 54

TBLPTRH プログラムメモリ テーブル ポインタの上位バイト (TBLPTR<15:8>) 0000 0000 287, 54

TBLPTRL プログラムメモリ テーブル ポインタの下位バイト (TBLPTR<7:0>) 0000 0000 287, 54

TABLAT プログラムメモリ テーブル ラッチ 0000 0000 287, 54

PRODH 積レジスタ、上位バイト xxxx xxxx 287, 65

PRODL 積レジスタ、下位バイト xxxx xxxx 287, 65

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 0000 000x 287, 69

INTCON2 RABPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RABIP 1111 -1-1 287, 70

INTCON3 INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF 11-0 0-00 287, 71

INDF0 FSR0 の内容が指すデータメモリのアドレスにアクセスします。FSR0 の値は変化しません( 物理レジスタではありません )

N/A 287, 47

POSTINC0 FSR0 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR0 の値がインクリメントされます ( 物理レジスタではありません )

N/A 287, 47

POSTDEC0 FSR0 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR0 の値がデクリメントされます ( 物理レジスタではありません )

N/A 287, 47

PREINC0 FSR0 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR0 の値がインクリメントされます ( 物理レジスタではありません )

N/A 287, 47

PLUSW0 FSR0 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR0 の値が W レジスタの値だけオフセットされます ( 物理レジスタではありません )

N/A 287, 47

FSR0H — — — — 間接データ メモリ アドレス ポインタ 0、上位バイト ---- 0000 287, 47

FSR0L 間接データ メモリ アドレス ポインタ 0、下位バイト xxxx xxxx 287, 47

WREG ワーキング レジスタ xxxx xxxx 287

INDF1 FSR1 の内容が指すデータメモリのアドレスにアクセスします。FSR1 の値は変化しません( 物理レジスタではありません )

N/A 287, 47

POSTINC1 FSR1 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR1 の値がインクリメントされます ( 物理レジスタではありません )

N/A 287, 47

POSTDEC1 FSR1 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR1 の値がデクリメントされます ( 物理レジスタではありません )

N/A 287, 47

PREINC1 FSR1 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR1 の値がインクリメントされます ( 物理レジスタではありません )

N/A 287, 47

PLUSW1 FSR1 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR1 の値が W レジスタの値だけオフセットされます ( 物理レジスタではありません )

N/A 287, 47

FSR1H — — — — 間接データ メモリ アドレス ポインタ 1、上位バイト ---- 0000 288, 47

FSR1L 間接データ メモリ アドレス ポインタ 1、下位バイト xxxx xxxx 288, 47

BSR — — — — バンク セレクト レジスタ ---- 0000 288, 35

INDF2 FSR2 の内容が指すデータメモリのアドレスにアクセスします。FSR2 の値は変化しません( 物理レジスタではありません )

N/A 288, 47

POSTINC2 FSR2 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR2 の値がインクリメントされます ( 物理レジスタではありません )

N/A 288, 47

POSTDEC2 FSR2 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR2 の値がデクリメントされます ( 物理レジスタではありません )

N/A 288, 47

PREINC2 FSR2 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR2 の値がインクリメントされます ( 物理レジスタではありません )

N/A 288, 47

PLUSW2 FSR2 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR2 の値が W レジスタの値だけオフセットされます ( 物理レジスタではありません )

N/A 288, 47

凡例 : x = 未知、u = 変化なし、— = 未実装、q = 条件による

Note 1: SBOREN ビットを使用できるのはコンフィグレーション ビット BOREN<1:0> = 01の場合のみです。それ以外の場合は無効となり、「0」が読み出されます (23.4「ブラウンアウト リセット (BOR)」参照 )。

2: RA3 ビットを使用できるのはマスタ クリア リセットが無効に設定されている場合 ( コンフィグレーション ビット MCLRE = 0) のみです。それ以外の場合、RA3 からは「0」が読み出されます。このビットは読み出し専用です。

3: RA0 および RA1 ビットは、USB が無効な場合のみ使用できます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 41

Page 42: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

FSR2H — — — — 間接データ メモリ アドレス ポインタ 2、上位バイト ---- 0000 288, 47

FSR2L 間接データ メモリ アドレス ポインタ 2、下位バイト xxxx xxxx 288, 47

STATUS — — — N OV Z DC C ---x xxxx 288, 45

TMR0H Timer0 レジスタ、上位バイト 0000 0000 288, 103

TMR0L Timer0 レジスタ、下位バイト xxxx xxxx 288, 103

T0CON TMR0ON T08BIT T0CS T0SE PSA T0PS2 T0PS1 T0PS0 1111 1111 288, 101

OSCCON IDLEN IRCF2 IRCF1 IRCF0 OSTS HFIOFS SCS1 SCS0 0011 qq00 288, 20

OSCCON2 — — — — — PRI_SD HFIOFL LFIOFS ---- -10x 288, 21

WDTCON — — — — — — — SWDTEN --- ---0 288, 305

RCON IPEN SBOREN(1) — RI TO PD POR BOR 0q-1 11q0 279, 286, 78

TMR1H Timer1 レジスタ、上位バイト xxxx xxxx 288, 110

TMR1L Timer1 レジスタ、下位バイト xxxx xxxx 288, 110

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 288, 105

TMR2 Timer2 レジスタ 0000 0000 288, 112

PR2 Timer2 周期レジスタ 1111 1111 288, 112

T2CON — T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 288, 111

SSPBUF SSP 受信バッファ / 送信レジスタ xxxx xxxx 288, 147, 148

SSPADD I2C™ スレーブモードの SSP アドレスレジスタ。 I2C マスタモードの SSP ボーレート再読み込みレジスタ 0000 0000 288, 148

SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000 288, 141, 150

SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 288, 141, 150

SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000 288, 151

ADRESH A/D 変換結果レジスタ、上位バイト xxxx xxxx 289, 223

ADRESL A/D 変換結果レジスタ、下位バイト xxxx xxxx 289, 223

ADCON0 — — CHS3 CHS2 CHS1 CHS0 GO/DONE ADON --00 0000 289, 217

ADCON1 — — — — PVCFG1 PVCFG0 NVCFG1 NVCFG0 ---- 0000 289, 218

ADCON2 ADFM — ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0 0-00 0000 289, 219

CCPR1H キャプチャ / コンペア /PWM レジスタ 1、上位バイト xxxx xxxx 289, 138

CCPR1L キャプチャ / コンペア /PWM レジスタ 1、下位バイト xxxx xxxx 289, 138

CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 289, 117

REFCON2 — — — DAC1R4 DAC1R3 DAC1R2 DAC1R1 DAC1R0 ---0 0000 289, 250

REFCON1 D1EN D1LPS DAC1OE --- D1PSS1 D1PSS0 — D1NSS 000- 00-0 289, 250

REFCON0 FVR1EN FVR1ST FVR1S1 FVR1S0 — — — — 0001 00-- 289, 249

PSTRCON — — — STRSYNC STRD STRC STRB STRA ---0 0001 289, 134

BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 0100 0-00 289, 194

PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 289, 133

ECCP1AS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 0000 0000 289, 129

TMR3H Timer3 レジスタ、上位バイト xxxx xxxx 289, 115

TMR3L Timer3 レジスタ、下位バイト xxxx xxxx 289, 115

T3CON RD16 — T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 0-00 0000 289, 113

表 3-2: レジスタファイルの要約 (PIC18F/LF1XK50) ( 続き )

ファイル名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 POR、BOR時の値

詳細ページ

凡例 : x = 未知、u = 変化なし、— = 未実装、q = 条件による

Note 1: SBOREN ビットを使用できるのはコンフィグレーション ビット BOREN<1:0> = 01の場合のみです。それ以外の場合は無効となり、「0」が読み出されます (23.4「ブラウンアウト リセット (BOR)」参照 )。

2: RA3 ビットを使用できるのはマスタ クリア リセットが無効に設定されている場合 ( コンフィグレーション ビット MCLRE = 0) のみです。それ以外の場合、RA3 からは「0」が読み出されます。このビットは読み出し専用です。

3: RA0 および RA1 ビットは、USB が無効な場合のみ使用できます。

DS41350D_JP - p. 42 Preliminary 2010 Microchip Technology Inc.

Page 43: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

SPBRGH EUSART baud レート ジェネレータ レジスタ、上位バイト 0000 0000 289, 183

SPBRG EUSART baud レート ジェネレータ レジスタ、下位バイト 0000 0000 289, 183

RCREG EUSART 受信レジスタ 0000 0000 289, 184

TXREG EUSART 送信レジスタ 0000 0000 289, 183

TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010 289, 192

RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 289, 193

EEADR EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 0000 0000 289, 52, 61

EEDATA EEPROM データレジスタ 0000 0000 289, 52, 61

EECON2 EEPROM 制御レジスタ 2 ( 物理レジスタではありません ) 0000 0000 289, 52, 61

EECON1 EEPGD CFGS — FREE WRERR WREN WR RD xx-0 x000 289, 53, 61

IPR2 OSCFIP C1IP C2IP EEIP BCLIP USBIP TMR3IP – 1111 111- 290, 77

PIR2 OSCFIF C1IF C2IF EEIF BCLIF USBIF TMR3IF – 0000 000- 290, 73

PIE2 OSCFIE C1IE C2IE EEIE BCLIE USBIE TMR3IE – 0000 000- 290, 75

IPR1 – ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP -111 1111 290, 76

PIR1 – ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF -000 0000 290, 72

PIE1 – ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE -000 0000 290, 74

OSCTUNE INTSRC SPLLEN TUN5 TUN4 TUN3 TUN2 TUN1 TUN0 0000 0000 22, 290

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 290, 94

TRISB TRISB7 TRISB6 TRISB5 TRISB4 – – – – 1111 ---- 290, 89

TRISA – – TRISA5 TRISA4 – – – – --11 ---- 290, 83

LATC LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0 xxxx xxxx 290, 94

LATB LATB7 LATB6 LATB5 LATB4 – – – – xxxx ---- 290, 89

LATA – – LATA5 LATA4 – – – – --xx ---- 290, 83

PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx 290, 94

PORTB RB7 RB6 RB5 RB4 – – – – xxxx ---- 290, 89

PORTA – – RA5 RA4 RA3(2) – RA1(3) RA0(3) --xx x-xx 290, 83

ANSELH — — — — ANS11 ANS10 ANS9 ANS8 ---- 1111 290, 99

ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 — — — 1111 1--- 290, 98

IOCB IOCB7 IOCB6 IOCB5 IOCB4 — — — — 0000 ---- 290, 89

IOCA — — IOCA5 IOCA4 IOCA3 — IOCA1 IOCA0 --00 0-00 290, 83

WPUB WPUB7 WPUB6 WPUB5 WPUB4 — — — — 1111 ---- 290, 89

WPUA — — WPUA5 WPUA4 WPUA3 — — — --11 1--- 290, 89

SLRCON — — — — — SLRC SLRB SLRA ---- -111 290, 100

SSPMSK MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0 1111 1111 290, 158

CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0 0000 1000 290, 231

CM2CON1 MC1OUT MC2OUT C1RSEL C2RSEL C1HYS C2HYS C1SYNC C2SYNC 0000 0000 290, 232

CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0 0000 1000 290, 232

SRCON1 SRSPE SRSCKE SRSC2E SRSC1E SRRPE SRRCKE SRRC2E SRRC1E 0000 0000 290, 245

SRCON0 SRLEN SRCLK2 SRCLK1 SRCLK0 SRQEN SRNQEN SRPS SRPR 0000 0000 290, 244

UCON — PPBRST SE0 PKTDIS USBEN RESUME SUSPND — -0x0 000- 291, 254

USTAT — ENDP3 ENDP2 ENDP1 ENDP0 DIR PPBI — -xxx xxx- 291, 258

表 3-2: レジスタファイルの要約 (PIC18F/LF1XK50) ( 続き )

ファイル名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 POR、BOR時の値

詳細ページ

凡例 : x = 未知、u = 変化なし、— = 未実装、q = 条件による

Note 1: SBOREN ビットを使用できるのはコンフィグレーション ビット BOREN<1:0> = 01の場合のみです。それ以外の場合は無効となり、「0」が読み出されます (23.4「ブラウンアウト リセット (BOR)」参照 )。

2: RA3 ビットを使用できるのはマスタ クリア リセットが無効に設定されている場合 ( コンフィグレーション ビット MCLRE = 0) のみです。それ以外の場合、RA3 からは「0」が読み出されます。このビットは読み出し専用です。

3: RA0 および RA1 ビットは、USB が無効な場合のみ使用できます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 43

Page 44: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

UIR — SOFIF STALLIF IDLEIF TRNIF ACTVIF UERRIF URSTIF -000 0000 291, 268

UCFG UTEYE — — UPUEN — FSEN PPB1 PPB0 0--0 -000 291, 256

UIE — SOFIE STALLIE IDLEIE TRNIE ACTVIE UERRIE URSTIE -000 0000 291, 270

UEIR BTSEF — — BTOEF DFN8EF CRC16EF CRC5EF PIDEF 0--0 0000 291, 271

UFRMH — — — — — FRM10 FRM9 FRM8 ---- -xxx 291, 254

UFRML FRM7 FRM6 FRM5 FRM4 FRM3 FRM2 FRM1 FRM0 xxxx xxxx 291, 254

UADDR — ADDR6 ADDR5 ADDR4 ADDR3 ADDR2 ADDR1 ADDR0 -000 0000 291, 260

UEIE BTSEE — — BTOEE DFN8EE CRC16EE CRC5EE PIDEE 0--0 0000 291, 272

UEP7 – – – EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL ---0 0000 291, 259

UEP6 – – – EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL ---0 0000 291, 259

UEP5 – – – EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL ---0 0000 291, 259

UEP4 – – – EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL ---0 0000 291, 259

UEP3 – – – EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL ---0 0000 291, 259

UEP2 – – – EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL ---0 0000 291, 259

UEP1 – – – EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL ---0 0000 291, 259

UEP0 – – – EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL ---0 0000 291, 259

表 3-2: レジスタファイルの要約 (PIC18F/LF1XK50) ( 続き )

ファイル名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 POR、BOR時の値

詳細ページ

凡例 : x = 未知、u = 変化なし、— = 未実装、q = 条件による

Note 1: SBOREN ビットを使用できるのはコンフィグレーション ビット BOREN<1:0> = 01の場合のみです。それ以外の場合は無効となり、「0」が読み出されます (23.4「ブラウンアウト リセット (BOR)」参照 )。

2: RA3 ビットを使用できるのはマスタ クリア リセットが無効に設定されている場合 ( コンフィグレーション ビット MCLRE = 0) のみです。それ以外の場合、RA3 からは「0」が読み出されます。このビットは読み出し専用です。

3: RA0 および RA1 ビットは、USB が無効な場合のみ使用できます。

DS41350D_JP - p. 44 Preliminary 2010 Microchip Technology Inc.

Page 45: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.3.6 ステータス レジスタ

レジスタ 3-2 に示すステータス レジスタには、ALU による算術演算の状況が格納されます。他の SFR と同様、このレジスタも全命令のオペランドとして指定できます。

Z、DC、C、OV、N ビットに影響を与える命令の結果格納先にステータス レジスタを指定した場合、命令の結果は書き込まれず、実行した命令に応じてステータス レジスタが更新されます。従って、ステータス レジスタを格納先とした命令の実行結果は、意図したものと異なる場合があります。例えば、CLRF STATUSでは Z ビットがセットされますが、他のステータスビットは変化しません (「000u u1uu」)。

ステータス レジスタの値を変更する時は、BCF、BSF、SWAPF、MOVFF、MOVWF命令のみを使用する事を推奨します。これらの命令はステータス レジスタの Z、C、DC、OV、N ビットに影響を与えないからです。

ステータスビットに影響を与えないその他の命令については、表 25-2 と表 25-3 の命令セットの要約を参照してください。

Note: C および DC ビットは、それぞれ減算におけるボローおよびデジットボロー ビットとして機能します。

レジスタ 3-2: STATUS: ステータス レジスタ

U-0 U-0 U-0 R/W-x R/W-x R/W-x R/W-x R/W-x

— — — N OV Z DC(1) C(1)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-5 未実装ビット : 「0」として読み出し

bit 4 N: 負号ビット このビットは符号付き算術演算に使用されます (2 の補数 )。結果が負 (ALU MSB = 1) であるかどうかを示します。

1 = 結果が負 0 = 結果が正

bit 3 OV: オーバーフロー ビット このビットは符号付き算術演算に使用されます (2 の補数 )。結果が 7 ビットで表せる値を超え、オーバーフローによって符号ビット ( 結果の bit 7) の状態が変化した事を示します。

1 = 符号付き算術演算においてオーバーフローが発生した ( 今回実行した算術演算 ) 0 = オーバーフローは発生していない

bit 2 Z: ゼロビット

1 = 算術演算または論理演算の結果がゼロである0 = 算術演算または論理演算の結果がゼロではない

bit 1 DC: デジットキャリー / ボロービット (ADDWF、ADDLW、SUBLW、SUBWF命令 )(1)

1 = 結果の 下位から 4 ビット目でキャリーアウトが発生した0 = 結果の 下位から 4 ビット目でキャリーアウトが発生していない

bit 0 C: キャリー / ボロービット (ADDWF、ADDLW、SUBLW、SUBWF命令 )(1)

1 = 結果の 上位ビットでキャリーアウトが発生した0 = 結果の 上位ビットでキャリーアウトが発生していない

Note 1: ボローの場合、極性が反転します。減算では、第 2 オペランドの 2 の補数を加算します。ローテート命令 (RRF、RLF) の場合、このビットにはソースレジスタの上位または下位ビットが格納されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 45

Page 46: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.4 データ アドレッシング モード

プログラムメモリのアドレス指定には唯一の方法、すなわちプログラム カウンタを用いる方法しかありませんが、データメモリ空間のアドレス指定にはいくつかの方法があります。ほとんどの命令では、アドレッシング モードが固定されています。しかし一部の命令では、どのオペランドを使用するか、拡張命令セットを使用するかどうかに応じて、 大 3 つのモードでアドレスを指定できます。

アドレッシング モードには以下の種類があります。

• 含意

• リテラル

• 直接

• 間接

拡張命令セットを有効にした場合 ( コンフィグレーション ビット XINST = 1)、さらにインデックス付きリテラル オフセット アドレッシング モードも使用できます。その動作については、3.5.1「リテラル オフセットを使うインデックス付きアドレッシング」で詳細に説明します。

3.4.1 含意およびリテラル アドレッシング

PIC18 の制御命令の多くは引数を必要としません。これらの命令はデバイス全体に作用するものか、命令に暗黙的に指定された 1 つのレジスタに対して作用するもののいずれかです。このようなアドレッシング モードは含意アドレッシングと呼ばれます。例えば、SLEEP、RESET、DAW等の命令です。

これ以外に、同様に動作しますが、オペコード内で明示的に引数を指定する必要のある命令があります。これはリテラル アドレッシング モードと呼ばれます。引数として何らかのリテラル値を必要とするためです。例えば、ADDLW、MOVLW 等の命令で、それぞれ W レジスタ (WREG)に対してリテラル値を加算または移動します。また、20 ビットのプログラムメモリ アドレスを指定する CALLや GOTO命令があります。

3.4.2 直接アドレッシング

直接アドレッシングでは、演算のソースアドレスおよび結果の格納先アドレス ( またはそのいずれか一方 )の、アドレス全体またはその一部をオペコード自体の中で指定します。オプションは命令の引数として指定します。

PIC18 コア命令セットでは、ビット / バイト指向命令が既定値で直接アドレッシングを使用します。これらの命令は、いずれも 下位バイトに 8 ビットのリテラルアドレスを含みます。このアドレスは、データ RAM(3.3.4「汎用レジスタファイル」) のいずれかのバンクにおけるレジスタアドレスか、アクセスバンク (3.3.3

「アクセスバンク」) 内の位置を表し、命令のデータソースとして参照されます。

アクセス RAM ビット「a」の値に応じて、アドレスの解釈方法が異なります。「a」が「1」の場合、BSR (3.3.2

「バンク セレクト レジスタ (BSR)」) の内容とオペコード内のアドレスによって全 12 ビットのレジスタアドレスが決まります。「a」が「0」の場合、アクセス バンク レジスタを指定したものと見なされます。アクセス RAM を使用するアドレッシングは、直接強制アドレッシング モードと呼ばれる事もあります。

MOVFF 等少数の命令は、オペコードに全 12 ビットのアドレス ( ソースまたは結果格納先 ) を含みます。この場合、BSR は無視されます。

演算結果の格納先は、格納先ビット「d」によって決まります。「d」が「1」の場合、結果はソースレジスタに上書きの形で書き戻されます。「d」が「0」の場合、結果は W レジスタに格納されます。引数「d」のない命令の結果格納先は、命令自体によって暗黙的に指定されており、演算の対象レジスタまたは W レジスタのいずれかです。

3.4.3 間接アドレッシング

間接アドレッシングでは、命令内で固定アドレスを指定する事なく、データメモリ内の指定した位置にアクセスできます。このアクセスは、ファイル セレクト レジスタ (FSR) を、読み書き対象のメモリ位置に対するポインタとして使用する事で実現します。FSR 自体も特殊ファイルレジスタとしてRAM内に存在するため、プログラム制御のもと直接操作できます。このような特徴からFSRはデータメモリ内にテーブルや配列等のデータ構造を実装する時に非常に便利です。

間接アドレッシング用のレジスタには間接ファイルオペランド (INDF) も実装されています。このオペランドはポインタ値を自動インクリメント、自動デクリメント、オフセットさせる等の自動操作を可能とします。この機能により、ループを使った効率の良いコードを作成できます。例 3-5 に RAM バンク全体をクリアするサンプルコードを示します。

例 3-5: 間接アドレッシングによるRAM ( バンク 1) のクリア

Note: PIC18 拡張命令セットを有効にした場合、一部の PIC18 コア命令セットの動作が変化します。詳細は、3.5「データメモリと拡張命令セット」を参照してください。

LFSR FSR0, 100h ; NEXT CLRF POSTINC0 ; Clear INDF

; register then ; inc pointer

BTFSS FSR0H, 1 ; All done with; Bank1?

BRA NEXT ; NO, clear next CONTINUE ; YES, continue

DS41350D_JP - p. 46 Preliminary 2010 Microchip Technology Inc.

Page 47: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.4.3.1 FSR レジスタと INDF オペランド

間接アドレッシングの中心となるのが、3 つのレジスタセット、FSR0、FSR1、FSR2 です。各セットは、1 対の 8 ビットレジスタ FSRnH と FSRnL からなります。FSR の各ペアには 12 ビットの値が格納されます。従って、FSRnH レジスタの上位 4 ビットは使われません。12 ビットの FSR 値は、データメモリのアドレス全範囲をリニアに指定します。これらの FSR レジスタペアは、データメモリ位置を示すポインタとして機能します。

間接アドレッシングには、間接ファイル オペランドINDF0 ~ INDF2 を使用します。これらは「仮想」レジスタと考える事ができます。SFR 空間にマッピングされているものの、物理的には実装されていないためです。特定の INDF レジスタに対する読み書きは、実際には対応する FSR レジスタペアへのアクセスです。例えば、INDF1 からの読み出しの場合、データはFSR1H:FSR1L が示すアドレスから読み出されます。オペランドとして INDF レジスタを指定した命令は、実際には対応するFSRの内容を命令対象へのポインタとして使用します。INDF オペランドは、ポインタを使いやすくする機能です。

間接アドレッシングでは、アドレスの全 12 ビットを使用するため、データ RAM のバンク指定は不要です。従って、BSR の内容やアクセス RAM ビットはアドレスの決定に一切影響しません。

3.4.3.2 FSR レジスタと POSTINC、POSTDEC、PREINC、PLUSW

INDF オペランドの他に、各 FSR レジスタペアには4 つの間接オペランドがあります。これらは INDF と同じ「仮想」レジスタであるため、直接の読み書きは不可能です。これらのレジスタにアクセスすると、対応するFSRレジスタペアが指す位置を参照すると同時に、FSR の値に対して下記の操作を実行します。

• POSTDEC: FSR が指す位置にアクセスした後、FSR を 1 デクリメントします。

• POSTINC: FSR が指す位置にアクセスした後、FSR を 1 インクリメントします。

• PREINC: FSR を 1 インクリメントした後、FSRが指す位置の内容を演算に使用します。

• PLUSW: W レジスタ内の符号付きの値 (-127 ~128) を FSR に加算した後、その結果が指す位置の内容を演算に使用します。

INDF レジスタへのアクセスでは、対応する FSR レジスタの値を使用しますが、FSR レジスタ内の値自体は変更しません。同様に、PLUSW レジスタへのアクセスの場合も、FSR の値を W レジスタの値だけオフセットして使用しますが、W レジスタと FSR の値はいずれも変更しません。しかし、これら以外の仮想レジスタへのアクセスは、FSR レジスタの値を変更します。

図 3-8: 間接アドレッシング

FSR1H:FSR1L

07

Data Memory

000h

100h

200h

300h

F00h

E00h

FFFh

Bank 0

Bank 1

Bank 2

Bank 14

Bank 15

Bank 3throughBank 13

ADDWF, INDF1, 1

07

間接アドレッシング レジスタのい

ずれかをオペランドとして指定し

た命令では…

そのレジスタに対応する FSR ペア

内の 12 ビットのアドレスを使用し

て…

演算に使用するデータメモリ内の

位置を決定します。

この例ではFSR1ペアにECChが格

納されています。これは、メモリ位

置 ECCh の内容が、W レジスタの

値に加算され、結果が ECCh に書き

戻される事を意味します。

x x x x 1 1 1 0 1 1 0 0 1 1 0 0

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 47

Page 48: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

POSTDEC、POSTINC、PREINC による FSR に対する操作は、レジスタペア全体に作用します。つまり、FSRnL レジスタの FFh から 00h へのロールオーバーによって、FSRnH レジスタへのキャリーオーバーが発生するという事です。一方これらの操作の結果は、ステータス レジスタのいずれのフラグ (Z、N、OV 等 ) の値にも影響を与えません。

PLUSW レジスタは、データメモリ空間内にインデックス付きアドレッシングのデータ構造を実装する時に使用できます。W レジスタの値を操作する事で、ポインタアドレスから一定の値だけオフセットしたアドレスにアクセスできます。アプリケーションによっては、この機能でデータメモリ内にソフトウェア スタック等の強力なプログラム制御構造を実装できます。

3.4.3.3 FSR による FSR に対する操作

他の FSR または仮想レジスタを対象として間接アドレッシングの動作を実行すると特殊な挙動を示します。例えば、FSR を使って仮想レジスタのアドレスを指定すると失敗します。例えば、INDF1 のアドレスFE7h が FSR0H:FSR0L に格納されている場合を考えます。この場合、INDF0 をオペランドとして INDF1 の値を読み出そうとすると、00h が返されます。INDF0をオペランドとして INDF1 に書き込もうとすると、NOPとなります。

一方、仮想レジスタによって FSR ペアに書き込むと、意図した結果が得られない場合があります。このような場合、値は FSR ペアに書き込まれますが、インクリメント/デクリメントは実行されません。従って、INDF2レジスタと POSTDEC2 レジスタのいずれかに書き込むと、同じ値が FSR2H:FSR2L に書き込まれます。

FSR は SFR 空間にマッピングされた物理レジスタであるため、全ての直接演算で操作できます。従って、ユーザはこれらのレジスタを使用するにあたって、特にコードに間接アドレッシングを採用する場合、十分な注意を払う必要があります。

同様に、通常は全ての SFR を間接アドレッシングによって操作できます。このため、SFR による設定を誤って変更してデバイス動作に影響を与えないように注意する必要があります。

3.5 データメモリと拡張命令セット

PIC18 拡張命令セットを有効にすると ( コンフィグレーション ビット XINST = 1)、データメモリとそのアドレス方法の一部が大きく変わります。具体的には、PIC18 コア命令セットの多くについてアクセスバンクの使用方法が変わります。これは、データメモリ空間に対する新しいアドレッシング モードの導入に伴うものです。

変更のない点を把握しておく事も同様に重要です。まず、データメモリ空間のサイズと、リニア アドレッシングである事は変わりません。SFR のマップも変わりません。PIC18 コア命令セットは、引き続き直接および間接アドレッシング モードの両方で動作します。含意およびリテラル命令には一切変更はありません。FSR0 および FSR1 による間接アドレッシングも以前のままです。

3.5.1 リテラル オフセットを使うインデックス付きアドレッシング

PIC18 拡張命令セットを有効にする事で変化するのは、FSR2 レジスタペアをアクセス RAM 内で使用する場合の間接アドレッシング動作です。適切な条件のもとでは、アクセスバンクを使用する命令、つまりほとんどのビット / バイト指向命令において、オフセット値を命令に含めるインデックス付きアドレッシング方式を使用できます。この特殊なアドレッシング モードは、リテラル オフセットを使うインデックス付きアドレッシング、またはインデックス付きリテラル オフセット モードと呼ばれます。

拡張命令セットを使用する場合、このアドレッシングモードでは以下の2つの条件を満たす必要があります。

• 必ずアクセスバンクを使用する事 (「a」 = 0)

• ファイルアドレス引数が 5Fh 以下である事

これらの条件のもとでは、命令のファイルアドレス引数の解釈は、アドレスの下位バイト ( 直接アドレッシングにおいて BSR と共に使用する値 ) でも、アクセスバンク内の 8 ビットアドレスでもありません。ファイルアドレスの値は、FSR2 が指定するアドレスポインタからのオフセット値と見なされます。つまり、このオフセット値と FSR2 の内容を加算したものが、演算の対象アドレスになります。

3.5.2 インデックス付きリテラル オフセットモードの影響を受ける命令

直接アドレッシングを使用可能な PIC18 コア命令は、いずれもインデックス付きリテラル オフセット アドレッシング モードの影響を受ける可能性があります。これには、全てのバイト / ビット指向の命令、つまり PIC18 標準命令セットのほぼ半数が含まれます。含意またはリテラル アドレッシング モードのみ使用する命令は影響を受けません。

また、バイト / ビット指向命令であってもアクセスバンクを使用しない場合 ( アクセス RAM ビットが「1」)、または 60h 以上のファイルアドレスを含む場合、影響を受けません。これらの条件を満たす命令は、以前と同様に実行されます。図 3-9 に、拡張命令セットを有効にした場合に差異を生ずる可能性があるアドレッシング モードの比較を示します。

インデックス付きリテラル オフセット モードでバイト / ビット指向命令を使用する場合、アセンブラ構文の変更に注意してください。これについては、25.2.1「拡張命令の構文」で詳細に説明します。

DS41350D_JP - p. 48 Preliminary 2010 Microchip Technology Inc.

Page 49: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 3-9: ビット / バイト指向命令に対するアドレッシング オプションの比較 ( 拡張命令セットが有効な場合 )

When ‘a’ = 0 and f 60h:

命令は直接強制モードで実行されます。「f」はアクセス RAM 内の060h~0FFhの間のメモリ位置と見なされます。これは、データメモリ内の F60h ~ FFFh ( バンク 15) の位置を指定した場合と同じです。

60h よりも下位のメモリ位置は、このアドレッシング モードでは使用できません。

When ‘a’ = 0 and f5Fh:

命令はインデックス付きリテラル オフセット モードで実行されます。「f」は FSR2 内のアドレス値に対するオフセットと見なされます。両者を加算する事で命令の対象レジスタのアドレスが得られます。アドレスとしては、データメモリ空間内の任意の位置を指定できます。

このモードにおける正しい構文は、以下のようになる事に注意してください。ADDWF [k], dwhere ‘k’ is the same as ‘f’.

When ‘a’ = 1 (all values of f):

命令は直接モード ( 直接ロングモードとも呼ばれます ) で実行されます。「f」は、データメモリ空間の16バンクのうちの1つにおける位置と見なされます。バンクは、バンク セレクト レジスタ (BSR) によって指定します。データメモリ空間内に実装された全てのバンク内のアドレスを指定できます。

000h

060h

100h

F00h

F60h

FFFh

Valid range

00h

60h

FFh

Data Memory

Access RAM

Bank 0

Bank 1throughBank 14

Bank 15

SFRs

000h

060h

100h

F00h

F60h

FFFhData Memory

Bank 0

Bank 1throughBank 14

Bank 15

SFRs

FSR2H FSR2L

ffffffff001001da

ffffffff001001da

000h

060h

100h

F00h

F60h

FFFhData Memory

Bank 0

Bank 1throughBank 14

Bank 15

SFRs

for ‘f’

BSR00000000

EXAMPLE INSTRUCTION: ADDWF, f, d, a (Opcode: 0010 01da ffff ffff)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 49

Page 50: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

3.5.3 インデックス付きリテラル オフセットモードにおけるアクセスバンクのマッピング

インデックス付きリテラル オフセット アドレッシング モードでは、アクセス RAM (00h ~ 5Fh) の先頭 96アドレスのマッピングが実質的に変更されます。このモードでは、アクセス RAM の先頭の内容が、バンク 0の下位部分に限定されず、データメモリ空間内にユーザが任意に定義した「ウィンドウ」内の内容に対応付けられます。FSR2 の値がこのウィンドウにマッピングされるデータ メモリ アドレスの下限を決め、上限はFSR2 に 95 (5Fh) を加えた値です。アクセス RAM 内の5Fh よりも上位のアドレスは、前述のようにマッピングされます (3.3.3「アクセスバンク」参照 )。図 3-10に、このアドレッシング モードでアクセスバンクのマッピングがどのように変わるかの例を示します。

アクセスバンクのマッピング変更は、インデックス付きリテラル オフセット モードを使用する演算のみに適用されます。BSR を使用する演算 ( アクセス RAMビットが「1」) には、引き続き通常の直接アドレッシングが適用されます。

3.6 PIC18 命令の実行と拡張命令セット

拡張命令セットを有効にすると、既存の PIC18 命令セットに新たに 8 個のコマンドが追加されます。これらの命令は、25.2「拡張命令セット」で説明する方法によって実行されます。

図 3-10: インデックス付きリテラル オフセット アドレッシングにおけるアクセスバンクのマッピング変更

Data Memory

000h

100h

200h

F60h

F00h

FFFh

Bank 1

Bank 15

Bank 2throughBank 14

SFRs

ADDWF f, d, a

FSR2H:FSR2L = 120h

FSR2ポインタが指すアド

レス (120h) から、これに

05Fh を足したアドレス

(17Fh) までが、アクセス

RAMの下位(000h~05Fh)に対応付けられます。

特殊ファイルレジスタの

F60h ~ FFFh までは、従

来通り 60h ~ FFh に対応

付けられます。

バンク 0 の 5Fh より下位

のアドレスには、BSR を

使用すれば引き続きアク

セスできます。Access Bank

00h

60h

FFh

SFRs

Bank 1 “Window”

Bank 0

Window

Example Situation:

120h17Fh

5Fh

Bank 1

DS41350D_JP - p. 50 Preliminary 2010 Microchip Technology Inc.

Page 51: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

4.0 フラッシュ プログラムメモリ

フラッシュ プログラムメモリは、通常動作中 VDD の全レンジで読み出し、書き込み、消去動作が可能です。

プログラムメモリからの読み出しは、一度に 1 バイトずつ実行されます。プログラムメモリへの書き込みは、一度に 16 または 8 バイトのブロックごとに実行されます。ブロックの大きさはデバイスごとに異なります( 表 4-1 参照 )。プログラムメモリの消去は、一度に 64バイトのブロック単位で実行されます。書き込みと消去のブロックサイズが異なる事から、1 回のブロック消去によって消去された内容をリストアするには 1 ~8 回のブロック書き込みが必要です。バルク消去動作はユーザコードからは実行できません。

表 4-1: 書き込み / 消去ブロックサイズ

プログラムメモリに対する書き込みまたは消去動作が完了するまで、命令のフェッチは中止されます。書き込みまたは消去中はプログラムメモリにアクセスできないため、コードを実行できません。プログラムメモリの書き込みおよび消去は、内部のプログラミング タイマによって終了します。

プログラムメモリに書き込む値は、有効な命令である必要はありません。無効な命令を含むプログラムメモリ位置の実行は、NOPになります。

4.1 テーブル読み出し / 書き込み

プログラムメモリの読み書き時に、プロセッサがプログラムメモリ空間とデータRAM間でデータバイトを移動する方法には、以下の 2 つの動作があります。

• テーブル読み出し (TBLRD)

• テーブル書き込み (TBLWT)

プログラムメモリ空間は 16 ビット幅であるのに対し、データ RAM 空間は 8 ビット幅です。テーブルに対する読み書きは、8 ビットのレジスタ (TABLAT) を介して、これら 2 つのメモリ空間の間でデータを移動します。

テーブル読み出し動作では、1 バイトのデータをプログラムメモリから直接取得し、TABLAT レジスタに格納します。図 4-1 に、テーブル読み出しの動作を示します。

テーブル書き込み動作では、1 バイトのデータをTABLAT レジスタから書き込みブロック保持レジスタに転送します。保持レジスタの内容をプログラムメモリに書き込む手順の詳細は、4.5「フラッシュ プログラムメモリへの書き込み」で説明します。図 4-2 に、プログラムメモリとデータ RAM 間のテーブル書き込み動作を示します。

テーブル動作はバイト単位で実行されます。プログラム命令ではなくデータを格納するテーブルの場合、ワード境界でアライメントする必要はありません。従って、テーブルは任意のバイトアドレスから開始し、終了する事ができます。テーブル書き込みによって実行可能コードをプログラムメモリに書き込む場合、プログラム命令をワード境界でアライメントする必要があります。

図 4-1: テーブル読み出し動作

デバイス書き込み

ブロックサイズ ( バイト )

消去ブロックサイズ

( バイト )

PIC18F13K50 8 64

PIC18F14K50 16 64

Table Pointer(1)

Table Latch (8-bit)Program Memory

TBLPTRH TBLPTRLTABLAT

TBLPTRU

Instruction: TBLRD*

Note 1: テーブルポインタ レジスタはプログラムメモリ内の 1 バイトを指します。

Program Memory(TBLPTR)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 51

Page 52: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 4-2: テーブル書き込み動作

4.2 制御レジスタ

TBLRD および TBLWT 命令では、以下を含む制御レジスタを使用します。

• EECON1 レジスタ

• EECON2 レジスタ

• TABLAT レジスタ

• TBLPTR レジスタ

4.2.1 EECON1 および EECON2 レジスタ

EECON1 レジスタ (レジスタ 4-1)は、メモリアクセスを制御するレジスタです。EECON2 レジスタは物理レジスタではなく、メモリの書き込みおよび消去シーケンス専用です。EECON2 を読み出すと、常に「0」が返されます。

制御ビット EEPGD は、アクセスがプログラムメモリに対するものか、データ EEPROM に対するものかを決定します。EEPGD をクリアすると、後続の動作は全てデータ EEPROM に対して実行されます。EEPGDをセットすると、後続の動作は全てプログラムメモリに対して実行されます。

制御ビット CFGS は、アクセスがコンフィグレーション / 校正レジスタに対するものか、プログラムメモリ/データEEPROMに対するものかを決定します。CFGSをセットすると、後続の動作は EEPGD の状態に関係なく、コンフィグレーション レジスタに対して作用します (24.0「CPU の特殊機能」参照 )。CFGS をクリアすると、アクセスするメモリは EEPGD によって選択されます。

FREE ビットは、プログラムメモリの消去動作を可能にします。FREE をセットすると、次の WR コマンドで消去動作が開始されます。FREE をクリアすると、書き込みだけが有効になります。

WREN ビットをセットすると、書き込み動作が許可されます。WREN ビットはパワーアップ時にクリアされます。

WR ビットをセットし、その後内部プログラミング タイマがタイムアウトして書き込み動作が完了する事でWR ビットがクリアされると、WRERR ビットがハードウェアによってセットされます。

書き込み動作は、制御ビット WR によって開始されます。WR ビットはファームウェアによるセットのみが可能で、クリアはできません。WR ビットは、書き込み動作が終了した時点でハードウェアによってクリアされます。

Table Pointer(1)Table Latch (8-bit)

TBLPTRH TBLPTRL TABLAT

Program Memory(TBLPTR<MSBs>)

TBLPTRU

Instruction: TBLWT*

Note 1: テーブル書き込みを実行する時、テーブルポインタはプログラムメモリのアドレスを直接指している

わけではありません。TBLPRTL の LSb は、実際には書き込みブロック保持レジスタ内のアドレスを

指しています。書き込みブロックが 終的に書き込まれる位置は、テーブルポインタの MSb によって

決まります。保持レジスタの内容をプログラムメモリ アレイに書き込むプロセスについては、4.5「フ

ラッシュ プログラムメモリへの書き込み」で説明します。

Holding Registers Program Memory

Note: 通常動作中、WRERR からは「1」が読み出されます。これは、書き込み動作がリセットによって不完全なまま中止されたか、不適切な方法で実行された事を示している可能性があります。

Note: PIR2 レジスタの割り込みフラグビットEEIF は、書き込みが終了した時点でセットされます。EEIF フラグは、ファームウェアによってクリアされるまで、セットされた状態を維持します。

DS41350D_JP - p. 52 Preliminary 2010 Microchip Technology Inc.

Page 53: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 4-1: EECON1: データ EEPROM 制御 1 レジスタ

R/W-x R/W-x U-0 R/W-0 R/W-x R/W-0 R/S-0 R/S-0

EEPGD CFGS — FREE WRERR WREN WR RD

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット

S = ソフトウェアによってセットできるがクリアできないビット

U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 EEPGD: フラッシュ プログラムメモリまたはデータ EEPROM 選択ビット

1 = フラッシュ プログラムメモリにアクセス0 = データ EEPROM にアクセス

bit 6 CFGS: フラッシュ プログラムメモリ / データ EEPROM またはコンフィグレーション レジスタ選択ビット

1 = コンフィグレーション レジスタにアクセス0 = フラッシュ プログラムメモリまたはデータ EEPROM にアクセス

bit 5 未実装ビット : 「0」として読み出し

bit 4 FREE: フラッシュ ロウ ( ブロック ) 消去イネーブルビット

1 = TBLPTRによってアドレスを指定されたプログラムメモリ ブロックを次のWRコマンドで消去 ( 消去動作の完了時点でクリアされる )

0 = 書き込み動作のみ実行

bit 3 WRERR: フラッシュ プログラムメモリ / データ EEPROM エラーフラグ ビット (1)

1 = 書き込み動作が不完全なまま中止された ( 通常動作時の内部タイマによるプログラミング中にいずれかのリセット動作が実行されたか、不適切な書き込みを実行しようとした )

0 = 書き込み動作が完了した

bit 2 WREN: フラッシュ プログラムメモリ / データ EEPROM 書き込みイネーブルビット

1 = フラッシュ プログラムメモリ / データ EEPROM への書き込みサイクルを許可0 = フラッシュ プログラムメモリ / データ EEPROM への書き込みサイクルを禁止

bit 1 WR: 書き込み制御ビット

1 = データ EEPROM の消去 / 書き込みサイクル、またはプログラムメモリの消去サイクルまたは書き込みサイクルを開始 ( 動作は内部タイマによって制御され、ビットは書き込みが完了するとハードウェアがクリアする。ソフトウェアでは、WR ビットのセットのみ可能 ( クリアは不可 ))

0 = EEPROM に対する書き込みサイクルが完了

bit 0 RD: 読み出し制御ビット

1 = EEPROM の読み出し動作を開始 ( 読み出しは 1 サイクルで完了する。RD はハードウェアによってクリアされる。ソフトウェアでは、RD ビットのセットのみ可能 ( クリアは不可 ) である。ただし、EEPGD = 1または CFGS = 1の場合、RD ビットはセット不可 )

0 = EEPROM 読み出しを開始しない

Note 1: WRERR が発生した場合、EEPGD および CFGS ビットはクリアされません。このため、エラー状態を追跡できます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 53

Page 54: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

4.2.2 TABLAT – テーブル ラッチ レジスタ

テーブルラッチ (TABLAT) は、SFR 空間にマッピングされた 8 ビットのレジスタです。テーブルラッチ レジスタは、プログラムメモリとデータ RAM 間でデータを転送する時に 8 ビットのデータを保持します。

4.2.3 TBLPTR – テーブルポインタ レジスタ

テーブルポインタ (TBLPTR) レジスタは、プログラムメモリ内の 1 バイトのアドレスを指します。TBLPTRは 3 つの SFR レジスタから構成されます。テーブルポインタ 上位バイト、テーブルポインタ上位バイト、テーブルポインタ下位バイト (TBLPTRU:TBLPTRH:TBLPTRL) の 3 つです。これら 3 つを結合して、22ビット幅のポインタを構成します。下位 21 ビットによって、 大 2 MB のプログラムメモリ空間に対するアドレスを指定できます。22 番目のビットでは、デバイス ID、ユーザ ID、コンフィグレーション ビットにアクセスできます。

テーブルポインタ レジスタ TBLPTR は、TBLRD および TBLWT命令で使用します。これらの命令は、テーブルポインタに対する操作に基づく 4 つの方法のいずれかによって TBLPTR を更新します。表 4-2 にこれらの操作を示します。これらの TBLPTR に対する操作は、下位 21 ビットに対してのみ影響します。

4.2.4 テーブルポインタの境界

TBLPTR はフラッシュ プログラムメモリの読み出し、書き込み、消去に使用します。

TBLRDでは、TBLPTR の全 22 ビットによってプログラムメモリのどのバイトを読み出すかを判断し、読み出したデータを直接 TABLAT レジスタに格納します。

TBLWT を実行すると、TABLAT レジスタ内のバイトデータが、フラッシュメモリではなく保持レジスタに書き込まれます。このデータは、プログラムメモリへの書き込みの準備が整うまで保持されます。保持レジスタは、デバイスの種類ごとにサイズが異なる書き込みブロックを構成します ( 表 4-1 参照 )。TBLPTRL レジスタの下位 3、4、5 ビットによって、保持レジスタブロック内のどのアドレスに書き込むかが決まります。テーブルポインタの上位ビットは、TBLWT動作に対しては何も影響しません。

これらの上位ビットは、フラッシュ プログラムメモリへの書き込みを実行する際のフラッシュメモリ内のアドレスを指定します。この位置に保持レジスタブロック全体が一括して書き込まれます。フラッシュメモリへの書き込みでは、下位 3、4、5 ビットは無視されます。詳細は、4.5「フラッシュ プログラムメモリへの書き込み」を参照してください。

プログラムメモリ消去を実行する場合、消去対象となる 64 バイトのブロックは、テーブルポインタ レジスタの上位 16 ビット (TBLPTR<21:6>) によって指定されます。LSb (TBLPTR<5:0>) は無視されます。

図 4-3 に、フラッシュ プログラムメモリ動作に対応する TBLPTR の境界を示します。

表 4-2: TBLRDおよび TBLWT命令に伴うテーブルポインタに対する操作

例 テーブルポインタに対する操作

TBLRD*TBLWT* TBLPTR は変化しません。

TBLRD*+TBLWT*+ 読み出し / 書き込みの後に TBLPTR がインクリメントされます。

TBLRD*-TBLWT*- 読み出し / 書き込みの後に TBLPTR がデクリメントされます。

TBLRD+*TBLWT+* 読み出し / 書き込みの前に TBLPTR がインクリメントされます。

DS41350D_JP - p. 54 Preliminary 2010 Microchip Technology Inc.

Page 55: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 4-3: 動作ごとのテーブルポインタの境界

4.3 フラッシュ プログラムメモリの読み出し

TBLRD命令は、プログラムメモリからデータを取得して、データ RAM に格納します。プログラムメモリからのテーブル読み出しは、一度に 1 バイトずつ実行されます。

TBLPTR はプログラム空間内の 1 バイトのアドレスを指します。TBLRDを実行すると、TBLPTR が指すバイトが TABLAT に格納されます。さらに、次のテーブル読み出し動作に備えて、TBLPTR の値を自動的に変更する事ができます。

内部プログラムメモリの内容は通常ワード単位で並んでいます。アドレスの LSb が、ワードの上位バイトと下位バイトを区別します。図 4-4 に、内部プログラムメモリと TABLAT 間のインターフェイスを示します。

図 4-4: フラッシュ プログラムメモリからの読み出し

21 16 15 8 7 0

TABLE ERASE/WRITE TABLE WRITE

TABLE READ – TBLPTR<21:0>

TBLPTRLTBLPTRHTBLPTRU

TBLPTR<n:0>(1)TBLPTR<21:n+1>(1)

Note 1: ブロックサイズが 8、16、32、64 バイトの場合、n の値はそれぞれ 3、4、5、6 になります。

(Even Byte Address)

Program Memory

(Odd Byte Address)

TBLRD TABLAT

TBLPTR = xxxxx1

FETCHInstruction Register

(IR) Read Register

TBLPTR = xxxxx0

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 55

Page 56: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

例 4-1: フラッシュ プログラムメモリ ワードの読み出し MOVLW CODE_ADDR_UPPER ; Load TBLPTR with the baseMOVWF TBLPTRU ; address of the wordMOVLW CODE_ADDR_HIGHMOVWF TBLPTRHMOVLW CODE_ADDR_LOWMOVWF TBLPTRL

READ_WORDTBLRD*+ ; read into TABLAT and incrementMOVF TABLAT, W ; get dataMOVWF WORD_EVENTBLRD*+ ; read into TABLAT and incrementMOVFW TABLAT, W ; get dataMOVF WORD_ODD

DS41350D_JP - p. 56 Preliminary 2010 Microchip Technology Inc.

Page 57: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

4.4 フラッシュ プログラムメモリの消去

消去ブロックの 小単位は 32 ワードつまり 64 バイトです。より大きなプログラムメモリ ブロックを対象とするバルク消去を使用できるのは、外部プログラマを使用するか、ICSP™ 制御による場合のみです。フラッシュアレイは、ワード単位の消去に対応していません。

マイクロコントローラから消去シーケンスを開始する場合、プログラムメモリは 64 バイトのブロック単位で消去されます。消去するブロックは、TBLPTR<21:6>の 上位16ビットによって指定します。TBLPTR<5:0>ビットは無視されます。

消去動作はEECON1 レジスタによって制御します。フラッシュ プログラムメモリを選択するには EEPGDビットをセットします。書き込み動作を有効にするには、WREN ビットをセットする必要があります。消去動作を選択するには、FREE ビットをセットします。

4.4.1「フラッシュ プログラムメモリの消去シーケンス」のステップ 4 ~ 6 に示した EECON2 による書き込み開始シーケンスが、偶発的な書き込みを防止します。この動作をロングライトと呼ぶことがあります。

内部フラッシュを消去するには、ロングライトが必要です。ロングライト サイクル中は、命令の実行が一時停止されます。ロングライトは、内部のプログラミング タイマによって終了します。

4.4.1 フラッシュ プログラムメモリの消去シーケンス

内部プログラムメモリのブロック消去動作のシーケンスは以下の通りです。

1. 消去するブロックのアドレスをテーブルポインタレジスタに格納します。

2. EECON1レジスタに対して消去動作を設定します。

• EEPGD ビットをセットして、プログラムメモリを選択

• CFGS ビットをクリアして、プログラムメモリへのアクセスを選択

• WREN ビットをセットして、書き込みを有効に設定

• FREE ビットをセットして、消去を有効に設定

3. 割り込みを禁止します。

4. EECON2 に 55h を書き込みます。

5. EECON2 に 0AAh を書き込みます。

6. WR ビットをセットします。これによってブロック消去サイクルが開始されます。

7. 消去中はCPUが一時停止します (内部タイマによる約 2 ms)。

8. 割り込みを再度許可します。

例 4-2: フラッシュ プログラムメモリのブロック消去 MOVLW CODE_ADDR_UPPER ; load TBLPTR with the baseMOVWF TBLPTRU ; address of the memory blockMOVLW CODE_ADDR_HIGHMOVWF TBLPTRH MOVLW CODE_ADDR_LOWMOVWF TBLPTRL

ERASE_BLOCK BSF EECON1, EEPGD ; point to Flash program memoryBCF EECON1, CFGS ; access Flash program memoryBSF EECON1, WREN ; enable write to memoryBSF EECON1, FREE ; enable block Erase operationBCF INTCON, GIE ; disable interrupts

Required MOVLW 55hSequence MOVWF EECON2 ; write 55h

MOVLW 0AAhMOVWF EECON2 ; write 0AAhBSF EECON1, WR ; start erase (CPU stall)BSF INTCON, GIE ; re-enable interrupts

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 57

Page 58: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

4.5 フラッシュ プログラムメモリへの書き込み

フラッシュメモリへの書き込みは、デバイスの種類に応じて 8 バイトまたは 16 バイト単位で実行されます( 表 4-1 参照 )。ワードまたはバイト単位のプログラミングには対応していません。

フラッシュメモリのプログラミング時に必要となる保持レジスタへのデータ読み込みには、デバイス内部でテーブル書き込みを使用します。保持レジスタは、そのデバイスの書き込みブロックのバイト数と同数しか用意されていません ( 表 4-1 参照 )。

テーブルラッチ (TABLAT) には 1 バイトしか格納できないため、プログラミング動作のたびに 8 回または 16回の TBLWT命令 ( 回数はデバイスの種類による ) が必要になる可能性があります。テーブル書き込み動作は保持レジスタに対する書き込みであるため、全てショートライトです。保持レジスタの全てに対する書き込みが完了したら、このメモリブロックに対するプログラミング動作を開始します。それには、EECON1レジスタをプログラムメモリの書き込み用に設定して、ロングライトのシーケンスを実行します。

内部フラッシュのプログラミングには、ロングライトが必要です。ロングライト サイクル中は、命令の実行が一時停止されます。ロングライトは、内部のプログラミング タイマによって終了します。

書き込み時間は EEPROM 内蔵タイマが制御します。書き込み / 消去用の電圧は、デバイスの動作電圧よりも高い値で、内蔵チャージポンプによって生成されます。

図 4-5: フラッシュ プログラムメモリに対するテーブル書き込み

4.5.1 フラッシュ プログラムメモリの書き込みシーケンス

内部プログラムメモリに対するプログラミング動作のシーケンスは以下の通りです。

1. 64 バイトを RAM に読み出します。2. RAM 内のデータ値を必要に応じて更新します。

3. 消去するアドレスをテーブルポインタ レジスタに格納します。

4. ブロック消去手順を実行します。5. 書き込む 初のバイトのアドレスをテーブルポイ

ンタ レジスタに格納します。

6. 自動インクリメントにより、保持レジスタに 8 バイトまたは16バイトのブロックを書き込みます。

7. EECON1 レジスタに対して書き込み動作を設定します。• EEPGD ビットをセットして、プログラムメモリを選択

• CFGS ビットをクリアして、プログラムメモリへのアクセスを選択

• WREN ビットをセットして、バイト書き込みを有効に設定

8. 割り込みを禁止します。

9. EECON2 に 55h を書き込みます。

10. EECON2 に 0AAh を書き込みます。

11. WR ビットをセットします。これによって書き込みサイクルが開始します。

12. 書き込み中はCPUが一時停止します (内部タイマで約 2 ms)。

13. 割り込みを再度許可します。

14. 64 バイトが全て書き込まれるまで、各ブロックに対してステップ 6 ~ 13 を繰り返します。

15. メモリ内容を検証します ( テーブル読み出し )。

以上の手順では、メモリの書き込みブロックあたりの更新に約 6 ms を必要とします。例 4-3 に、必要なコードの例を示します。

Note: デバイスリセット時および書き込み動作後の保持レジスタの既定値は FFh です。保持レジスタ中の FFh を書き込まれたバイトは、プログラミングによって値が変化しません。これは、いずれのビットも「1」から「0」にしか変更しないという前提を守るならば、プログラムメモリをバイト単位で変更できる事を意味します。このように個々のバイトを変更する場合、ロングライトの実行前に保持レジスタ全体にデータを格納する必要はありません。

TABLAT

TBLPTR = xxxxYY(1)TBLPTR = xxxx01TBLPTR = xxxx00

Write Register

TBLPTR = xxxx02

Program Memory

Holding Register Holding Register Holding Register Holding Register

8 8 8 8

Note 1: 8、16、32 バイトの書き込みブロックに対して、YY の値はそれぞれ x7、xF、1F です。

Note: WR ビットをセットする前に、テーブルポインタのアドレスを保持レジスタ内の該当するバイトのアドレスレンジ内に設定しておく必要があります。

DS41350D_JP - p. 58 Preliminary 2010 Microchip Technology Inc.

Page 59: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

例 4-3: フラッシュ プログラムメモリへの書き込み

MOVLW D'64’ ; number of bytes in erase blockMOVWF COUNTERMOVLW BUFFER_ADDR_HIGH ; point to bufferMOVWF FSR0HMOVLW BUFFER_ADDR_LOWMOVWF FSR0LMOVLW CODE_ADDR_UPPER ; Load TBLPTR with the baseMOVWF TBLPTRU ; address of the memory blockMOVLW CODE_ADDR_HIGHMOVWF TBLPTRHMOVLW CODE_ADDR_LOWMOVWF TBLPTRL

READ_BLOCKTBLRD*+ ; read into TABLAT, and incMOVF TABLAT, W ; get dataMOVWF POSTINC0 ; store dataDECFSZ COUNTER ; done?BRA READ_BLOCK ; repeat

MODIFY_WORDMOVLW BUFFER_ADDR_HIGH ; point to bufferMOVWF FSR0HMOVLW BUFFER_ADDR_LOWMOVWF FSR0LMOVLW NEW_DATA_LOW ; update buffer wordMOVWF POSTINC0MOVLW NEW_DATA_HIGHMOVWF INDF0

ERASE_BLOCKMOVLW CODE_ADDR_UPPER ; load TBLPTR with the baseMOVWF TBLPTRU ; address of the memory blockMOVLW CODE_ADDR_HIGHMOVWF TBLPTRH MOVLW CODE_ADDR_LOWMOVWF TBLPTRL BSF EECON1, EEPGD ; point to Flash program memoryBCF EECON1, CFGS ; access Flash program memoryBSF EECON1, WREN ; enable write to memoryBSF EECON1, FREE ; enable Erase operationBCF INTCON, GIE ; disable interruptsMOVLW 55h

Required MOVWF EECON2 ; write 55hSequence MOVLW 0AAh

MOVWF EECON2 ; write 0AAhBSF EECON1, WR ; start erase (CPU stall)BSF INTCON, GIE ; re-enable interruptsTBLRD*- ; dummy read decrementMOVLW BUFFER_ADDR_HIGH ; point to bufferMOVWF FSR0HMOVLW BUFFER_ADDR_LOWMOVWF FSR0L

WRITE_BUFFER_BACKMOVLW BlockSize ; number of bytes in holding registerMOVWF COUNTERMOVLW D’64’/BlockSize ; number of write blocks in 64 bytesMOVWF COUNTER2

WRITE_BYTE_TO_HREGSMOVF POSTINC0, W ; get low byte of buffer dataMOVWF TABLAT ; present data to table latchTBLWT+* ; write data, perform a short write

; to internal TBLWT holding register.

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 59

Page 60: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

例 4-3: フラッシュ プログラムメモリへの書き込み ( 続き )

4.5.2 書き込みの検証

アプリケーションによっては、メモリに書き込まれた値を元の値と比較して検証する事が望ましい場合があります。例えば、仕様限界近くまで頻繁に書き込みを実行するようなアプリケーションです。

4.5.3 書き込み動作の予期せぬ中断

電源遮断や予期しないリセット等、予定外の事象によって書き込みが中止された場合、必要に応じて、その時点でプログラミングしていたメモリ位置の検証と再プログラミングを実行してください。書き込み動作がMCLRリセットまたはWDTタイムアウト リセットによって中断された場合、WRERR ビットがセットされます。これによって、ユーザはそのメモリ位置への再書き込み必要かどうかを判断できます。

4.5.4 誤書き込み防止

フラッシュ プログラムメモリへの誤書き込みを防止するため、書き込み開始シーケンスを遵守する必要があります。詳細は 24.0「CPU の特殊機能」を参照してください。

4.6 コード保護中のフラッシュ プログラムメモリの動作

フラッシュ プログラムメモリのコード保護に関する詳細は、24.3「プログラムの検証とコード保護」を参照してください。

表 4-3: プログラム フラッシュメモリに関連するレジスタ

DECFSZ COUNTER ; loop until holding registers are fullBRA WRITE_WORD_TO_HREGS

PROGRAM_MEMORYBSF EECON1, EEPGD ; point to Flash program memoryBCF EECON1, CFGS ; access Flash program memoryBSF EECON1, WREN ; enable write to memoryBCF INTCON, GIE ; disable interruptsMOVLW 55h

Required MOVWF EECON2 ; write 55hSequence MOVLW 0AAh

MOVWF EECON2 ; write 0AAhBSF EECON1, WR ; start program (CPU stall)DCFSZ COUNTER2 ; repeat for remaining write blocksBRA WRITE_BYTE_TO_HREGS ;BSF INTCON, GIE ; re-enable interruptsBCF EECON1, WREN ; disable write to memory

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

TBLPTRU — — bit 21 プログラムメモリ テーブル ポインタの 上位バイト(TBLPTR<20:16>)

287

TBPLTRH プログラムメモリ テーブル ポインタの上位バイト (TBLPTR<15:8>) 287

TBLPTRL プログラムメモリ テーブル ポインタの下位バイト (TBLPTR<7:0>) 287

TABLAT プログラムメモリ テーブル ラッチ 287

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

EECON2 EEPROM 制御レジスタ 2 ( 物理レジスタではありません ) 289

EECON1 EEPGD CFGS — FREE WRERR WREN WR RD 289

IPR2 OSCFIP C1IP C2IP EEIP BCLIP USBIP TMR3IP — 290

PIR2 OSCFIF C1IF C2IF EEIF BCLIF USBIF TMR3IF — 290

PIE2 OSCFIE C1IE C2IE EEIE BCLIE USBIE TMR3IE — 290

凡例 : — = 未実装ビット、「0」として読み出し。網掛けの部分はフラッシュ /EEPROM へのアクセスには使用しません。

DS41350D_JP - p. 60 Preliminary 2010 Microchip Technology Inc.

Page 61: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

5.0 データ EEPROM メモリ

データ EEPROM はデータ RAM やプログラムメモリからは独立した不揮発性メモリアレイで、プログラムデータを長期間保存するために使用します。レジスタファイルとプログラム メモリ空間のどちらににも直接マッピングされてはいませんが、特殊機能レジスタ(SFR) を介して間接的にアドレスを指定できます。EEPROM は、通常動作の全 VDD レンジにおいて読み書きが可能です。

データ EEPROM の読み書きにはプログラムメモリ同様、以下の 4 つの SFR を使用します。

• EECON1

• EECON2

• EEDATA

• EEADR

データEEPROMはバイト単位の読み書きが可能です。データメモリ ブロックとインターフェイスする際、EEDATA は 8 ビットの読み書きデータを格納し、EEADR レジスタペアはアクセス先 EEPROM アドレスを格納します。

EEPROM データメモリは、高い消去 / 書き込み耐性を誇ります。バイト書き込みでは、自動的に対象メモリ位置を消去し、新しいデータを書き込みます (Erase-before-Write)。書き込み時間は内蔵タイマが制御します。この時間は電圧、温度、チップ間のばらつきで変わります。正確な限界値は、パラメータ D133 (27.0「電気的仕様」の表 27-4) を参照してください。

5.1 EEADR レジスタ

読み書き動作時のデータ EEPROM のアドレス指定には、EEADR レジスタを使用します。8 ビットのレジスタにより、256 バイト (00h ~ FFh) のメモリ範囲に対してアドレス指定できます。

5.2 EECON1 および EECON2 レジスタ

データ EEPROM へのアクセスは、EECON1 およびEECON2 レジスタにより制御します。これらのレジスタはプログラムメモリへのアクセスを制御するものと同じであり、その使用方法はデータ EEPROM の場合も同様です。

EECON1レジスタ (レジスタ 5-1)は、データおよびプログラムメモリに対するアクセスを制御するレジスタです。制御ビット EEPGD は、アクセスがプログラムメモリに対するものか、データ EEPROM に対するものかを決定します。EEPGD ビットがクリアされているとデータ EEPROM にアクセスします。EEPGD ビットがセットされているとプログラムメモリにアクセスします。

制御ビット CFGS は、アクセスがコンフィグレーション レジスタに対するものか、プログラムメモリ / データEEPROMに対するものかを決定します。CFGSビットをセットすると、後続の動作はコンフィグレーション レジスタに対して実行されます。CFGS ビットをクリアすると、EEPGD ビットによってプログラム フラッシュまたはデータ EEPROM のいずれかが選択されます。

WRENビットをセットすると書き込み動作が許可されます。WREN ビットは電源投入時にクリアされます。

WR ビットをセットし、その後内部プログラミング タイマがタイムアウトして書き込み動作が完了する事でWR ビットがクリアされると、WRERR ビットがハードウェアによってセットされます。

書き込み動作は、制御ビット WR によって開始されます。このビットはソフトウェアによってセットできますが、クリアはできません。書き込み終了時にハードウェアによってクリアされます。

制御ビットの RD および WR をセットすると、それぞれ読み出しおよび消去 / 書き込み動作が開始します。これらのビットはファームウェアによってセットし、動作終了時にハードウェアによってクリアします。

プログラムメモリ アクセス時 (EEPGD = 1) は、RDビットをセットできません。プログラムメモリを読み出すには、テーブル読み出し命令を使用します。テーブル読み出しについては、4.1「テーブル読み出し / 書き込み」を参照してください。

EECON2 レジスタは物理レジスタではありません。このレジスタは、メモリの書き込みおよび消去シーケンス専用です。EECON2 を読み出すと、常に「0」が返されます。

Note: 通常動作中、WRERR からは「1」が読み出される事があります。このような場合、書き込み動作がリセットによって不完全なまま中止されたか、不適切な方法で実行された事を示している可能性があります。

Note: PIR2 レジスタの割り込みフラグビットEEIF は、書き込み終了時にセットされます。このビットは、ソフトウェアによってクリアする必要があります

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 61

Page 62: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 5-1: EECON1: データ EEPROM 制御 1 レジスタ

R/W-x R/W-x U-0 R/W-0 R/W-x R/W-0 R/S-0 R/S-0

EEPGD CFGS — FREE WRERR WREN WR RD

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット

S = ソフトウェアによってセットできるがクリアできないビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 EEPGD: フラッシュ プログラムメモリ / データ EEPROM 選択ビット

1 = フラッシュ プログラムメモリにアクセス0 = データ EEPROM にアクセス

bit 6 CFGS: フラッシュ プログラムメモリ / データ EEPROM またはコンフィグレーション レジスタ選択ビット

1 = コンフィグレーション レジスタにアクセス0 = フラッシュ プログラムメモリまたはデータ EEPROM にアクセス

bit 5 未実装ビット : 「0」として読み出し

bit 4 FREE: フラッシュ ロウ ( ブロック ) 消去イネーブルビット

1 = TBLPTRによってアドレスを指定されたプログラムメモリ ブロックを次のWRコマンドで消去 ( 消去動作の完了時点でクリアされる )

0 = 書き込み動作のみ実行

bit 3 WRERR: フラッシュ プログラムメモリ / データ EEPROM エラーフラグ ビット (1)

1 = 書き込み動作が不完全なまま中止された ( 通常動作時の内部タイマによるプログラミング中に何らかのリセット動作が実行されたか、不適切な書き込みを実行しようとした )

0 = 書き込み動作が完了した

bit 2 WREN: フラッシュ プログラムメモリ / データ EEPROM 書き込みイネーブルビット

1 = フラッシュ プログラムメモリ / データ EEPROM への書き込みサイクルを許可0 = フラッシュ プログラムメモリ / データ EEPROM への書き込みサイクルを禁止

bit 1 WR: 書き込み制御ビット

1 = データ EEPROM またはプログラムメモリの消去 / 書き込みサイクルを開始 ( 動作は内部タイマによって制御され、ビットは書き込み完了時にハードウェアがクリアする。ソフトウェアではセットのみ可能 ( クリア不可 ))

0 = EEPROM に対する書き込みサイクルが完了

bit 0 RD: 読み出し制御ビット

1 = EEPROM の読み出し動作を開始 (1 サイクルで完了する。RD はハードウェアがクリアする。ソフトウェアではセットのみ可能 ( クリア不可 )。ただし、EEPGD = 1または CFGS = 1の場合、RD ビットはセット不可 )

0 = EEPROM 読み出しを開始しない

Note 1: WRERR が発生した場合、EEPGD および CFGS ビットはクリアされません。これにより、エラー条件を追跡できます。

DS41350D_JP - p. 62 Preliminary 2010 Microchip Technology Inc.

Page 63: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

5.3 データ EEPROM メモリの読み出し

データメモリ内のある位置を読み出すには、EEADRレジスタにアドレスを書き込み、EECON1 レジスタの制御ビットEEPGDをクリアした上で、制御ビットRDをセットします。データは次のサイクルで利用可能となるため、EEDATA レジスタは次の命令サイクルで読み出せます。次の読み出し動作が実行されるかユーザが新しい値を書き込むまで、EEDATA はこの値を保持します。

例 5-1 に、基本的なプロセスを示します。

5.4 データEEPROMメモリへの書き込み

EEPROM 内のあるメモリ位置に書き込むには、はじめに EEADR レジスタにアドレスを書き込み、続いてEEDATA レジスタにデータを書き込みます。書き込みサイクルを開始するには、例 5-2 に示すシーケンスを実行する必要があります。

各バイトについてこのシーケンス (EECON2 に 55h、次に 0AAh を書き込み、次に WR ビットをセット ) を厳密に遵守しないと、書き込みは開始しません。このコードセグメントの実行中は割り込みを禁止する事を強く推奨します。

さらに、EECON1 の WREN ビットをセットして書き込みを有効にする必要があります。これにより、プログラムの暴走等予測外のコード実行による偶発的なデータ EEPROM への書き込みを防止します。WRENビットは、EEPROM を更新する場合以外は、常にクリアしておきます。WREN ビットはハードウェアによってクリアされません。

書き込みシーケンスの開始後は、EECON1、EEADR、EEDATA を変更できません。WREN ビットがセットされていない限り、WR ビットのセットは禁止されます。WR と WREN は、同じ命令サイクルではセットできません。

書き込みサイクルが完了すると、ハードウェアによって WR ビットがクリアされ、EEPROM 割り込みフラグビット EEIF がセットされます。ユーザはこの割り込みを許可するか、このビットをポーリングする事ができます。EEIF は、ソフトウェアによってクリアする必要があります

5.5 書き込みの検証

アプリケーションによっては、メモリに書き込まれた値を元の値と比較して検証する事が望ましい場合があります。例えば、仕様限界近くまで頻繁に書き込みを実行するようなアプリケーションです。

例 5-1: データ EEPROM の読み出し

例 5-2: データ EEPROM への書き込み

MOVLW DATA_EE_ADDR ;MOVWF EEADR ; Data Memory Address to readBCF EECON1, EEPGD ; Point to DATA memoryBCF EECON1, CFGS ; Access EEPROMBSF EECON1, RD ; EEPROM ReadMOVF EEDATA, W ; W = EEDATA

MOVLW DATA_EE_ADDR_LOW ;MOVWF EEADR ; Data Memory Address to writeMOVLW DATA_EE_DATA ;MOVWF EEDATA ; Data Memory Value to writeBCF EECON1, EEPGD ; Point to DATA memoryBCF EECON1, CFGS ; Access EEPROMBSF EECON1, WREN ; Enable writesBCF INTCON, GIE ; Disable InterruptsMOVLW 55h ;

Required MOVWF EECON2 ; Write 55hSequence MOVLW 0AAh ;

MOVWF EECON2 ; Write 0AAhBSF EECON1, WR ; Set WR bit to begin writeBSF INTCON, GIE ; Enable Interrupts

; User code executionBCF EECON1, WREN ; Disable writes on write complete (EEIF set)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 63

Page 64: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

5.6 コード プロテクト時の動作

データ EEPROM は、コンフィグレーション ワードにコード プロテクト ビットを備えています。コード プロテクト有効時、外部からの読み書き動作は無効になります。

ただし、MCU はコード プロテクト コンフィグレーション ビットの状態に関わらず、いつでも内部データEEPROM に読み書きが可能です。詳細は、24.0「CPUの特殊機能」を参照してください。

5.7 誤書き込み防止

ユーザが意図せずにデータEEPROMメモリに書き込んでしまう状況があります。本デバイスは、そのような誤書き込みを防止する仕組みを実装済みです。電源投入時には WREN ビットをクリアします。また、パワーアップタイマのカウント中 (パラメータ33、TPWRT)は、EEPROM への書き込みを阻止します。

書き込み開始シーケンスと WREN ビットの両方が、ブラウンアウト、パワーグリッチ、ソフトウェアの誤動作による誤書き込みを防止します。

5.8 データ EEPROM の使用方法

データ EEPROM は高い書き込み耐性を有し、バイト単位のアドレス指定が可能なメモリアレイです。頻繁に変更される情報 ( 例 : プログラム変数等 ) を格納する場所として 適化されています。メモリの一部の領域に格納された変数が頻繁に変更され、他の領域の変数はそれほど変更されない場合、特定のバイトへの総書き込みサイクル数は制限を超えていなくとも、EEPROM 全体に対する総書き込みサイクル数が制限を超える場合があります。このような場合、アレイのリフレッシュを実行する必要があります。このため、頻繁には変更されない変数 ( 定数、ID、校正値等 ) は、フラッシュ プログラムメモリに保存するようにしてください。

例 5-3 に、簡単な EEPROM リフレッシュ ルーチンを示します。

例 5-3: データ EEPROM リフレッシュ ルーチン

表 5-1: データ EEPROM に関連するレジスタ

Note: データEEPROMを定数あるいはほとんど変更されないデータの保存にしか使用しない場合、アレイ リフレッシュは不要な場合がほとんどです。詳細は仕様を参照してください。

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

EEADR EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 289

EEDATA EEPROM データレジスタ 289

EECON2 EEPROM 制御レジスタ 2 ( 物理レジスタではありません ) 289

EECON1 EEPGD CFGS — FREE WRERR WREN WR RD 289

IPR2 OSCFIP C1IP C2IP EEIP BCLIP USBIP TMR3IP — 290

PIR2 OSCFIF C1IF C2IF EEIF BCLIF USBIF TMR3IF — 290

PIE2 OSCFIE C1IE C2IE EEIE BCLIE USBIE TMR3IE — 290

凡例 : — = 未実装ビット、「0」として読み出し。網掛けの部分はフラッシュ /EEPROM へのアクセスには使用しません。

CLRF EEADR ; Start at address 0BCF EECON1, CFGS ; Set for memoryBCF EECON1, EEPGD ; Set for Data EEPROMBCF INTCON, GIE ; Disable interruptsBSF EECON1, WREN ; Enable writes

Loop ; Loop to refresh arrayBSF EECON1, RD ; Read current addressMOVLW 55h ;MOVWF EECON2 ; Write 55hMOVLW 0AAh ;MOVWF EECON2 ; Write 0AAhBSF EECON1, WR ; Set WR bit to begin writeBTFSC EECON1, WR ; Wait for write to completeBRA $-2INCFSZ EEADR, F ; Increment addressBRA LOOP ; Not zero, do it again

BCF EECON1, WREN ; Disable writesBSF INTCON, GIE ; Enable interrupts

DS41350D_JP - p. 64 Preliminary 2010 Microchip Technology Inc.

Page 65: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

6.0 8 x 8 ハードウェア乗算器

6.1 はじめに

全ての PIC18 は、ALU の一部として 8 x 8 のハードウェア乗算器を搭載しています。この乗算器は符号なし演算を実行し、16 ビットの演算結果を生成します。結果は積レジスタペア PRODH:PRODL に格納されます。乗算器による演算は、ステータス レジスタののフラグを変化させません。

ハードウェアによる乗算を利用する事で、1 命令サイクルで演算が完了します。これには、計算のスループットが向上すると同時に、乗算アルゴリズムのコードサイズを削減できるという利点があり、以前はデジタル信号プロセッサを使用せざるを得なかった多くのアプリケーションに PIC18 を適用できるようになりました。表 6-1 に、ハードウェアとソフトウェアによる乗算を比較し、それぞれのメモリと実行時間を示します。

6.2 動作

例 6-1 に、8 x 8 符号なし乗算の命令シーケンスを示します。引数の一方が WREG レジスタにあらかじめ格納されていれば、乗算には 1 命令しか必要ありません。

例 6-2 に、8 x 8 符号付き乗算のシーケンスを示します。引数の符号ビットを適切に処理するために、各引数の 上位ビット (MSb) の値を調べ、必要な減算を実行しています。

例 6-1: 8 x 8 符号なし乗算のルーチン

例 6-2: 8 x 8 符号付き乗算のルーチン

表 6-1: 各種乗算における性能比較

MOVF ARG1, W ; MULWF ARG2 ; ARG1 * ARG2 ->

; PRODH:PRODL

MOVF ARG1, W MULWF ARG2 ; ARG1 * ARG2 ->

; PRODH:PRODL BTFSC ARG2, SB ; Test Sign Bit SUBWF PRODH, F ; PRODH = PRODH

; - ARG1 MOVF ARG2, WBTFSC ARG1, SB ; Test Sign Bit SUBWF PRODH, F ; PRODH = PRODH

; - ARG2

ルーチン 乗算の方法プログラムメモリ

( ワード )

サイクル数( 大 )

時間

@ 40 MHz @ 10 MHz @ 4 MHz

8 x 8 符号なしハードウェア乗算なし 13 69 6.9 s 27.6 s 69 s

ハードウェア乗算 1 1 100 ns 400 ns 1 s

8 x 8 符号付きハードウェア乗算なし 33 91 9.1 s 36.4 s 91 s

ハードウェア乗算 6 6 600 ns 2.4 s 6 s

16 x 16 符号なしハードウェア乗算なし 21 242 24.2 s 96.8 s 242 s

ハードウェア乗算 28 28 2.8 s 11.2 s 28 s

16 x 16 符号付きハードウェア乗算なし 52 254 25.4 s 102.6 s 254 s

ハードウェア乗算 35 40 4.0 s 16.0 s 40 s

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 65

Page 66: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

例 6-3 に、16 x 16 符号なし乗算のシーケンスを示します。式 6-1 に、適用されるアルゴリズムを示します。32 ビットの演算結果は 4 つのレジスタ (RES<3:0>) に格納されます。

式 6-1: 16 x 16符号なし乗算のアルゴリズム

例 6-3: 16 x 16 符号なし乗算のルーチン

例 6-4 に、16 x 16 符号付き乗算のシーケンスを示します。式 6-2 に、適用されるアルゴリズムを示します。32 ビットの演算結果は 4 つのレジスタ (RES<3:0>) に格納されます。引数の符号ビットを適切に処理するために、各引数ペアの 上位ビット (MSb) の値を調べ、必要な減算を実行しています。

式 6-2: 16 x 16符号付き乗算のアルゴリズム

例 6-4: 16 x 16 符号付き乗算のルーチン

RES3:RES0 = ARG1H:ARG1L ARG2H:ARG2L= (ARG1H ARG2H 216) +

(ARG1H ARG2L 28) +(ARG1L ARG2H 28) +(ARG1L ARG2L)

MOVF ARG1L, WMULWF ARG2L ; ARG1L * ARG2L->

; PRODH:PRODL MOVFF PRODH, RES1 ; MOVFF PRODL, RES0 ;

; MOVF ARG1H, W MULWF ARG2H ; ARG1H * ARG2H->

; PRODH:PRODL MOVFF PRODH, RES3 ; MOVFF PRODL, RES2 ;

; MOVF ARG1L, W MULWF ARG2H ; ARG1L * ARG2H->

; PRODH:PRODL MOVF PRODL, W ; ADDWF RES1, F ; Add cross MOVF PRODH, W ; products ADDWFC RES2, F ; CLRF WREG ; ADDWFC RES3, F ;

; MOVF ARG1H, W ; MULWF ARG2L ; ARG1H * ARG2L->

; PRODH:PRODL MOVF PRODL, W ; ADDWF RES1, F ; Add cross MOVF PRODH, W ; products ADDWFC RES2, F ; CLRF WREG ; ADDWFC RES3, F ;

RES3:RES0 = ARG1H:ARG1L ARG2H:ARG2L= (ARG1H ARG2H 216) +

(ARG1H ARG2L 28) +(ARG1L ARG2H 28) +(ARG1L ARG2L) +(-1 ARG2H<7> ARG1H:ARG1L 216) +(-1 ARG1H<7> ARG2H:ARG2L 216)

MOVF ARG1L, W MULWF ARG2L ; ARG1L * ARG2L ->

; PRODH:PRODL MOVFF PRODH, RES1 ; MOVFF PRODL, RES0 ;

; MOVF ARG1H, W MULWF ARG2H ; ARG1H * ARG2H ->

; PRODH:PRODL MOVFF PRODH, RES3 ; MOVFF PRODL, RES2 ;

; MOVF ARG1L, W MULWF ARG2H ; ARG1L * ARG2H ->

; PRODH:PRODL MOVF PRODL, W ; ADDWF RES1, F ; Add cross MOVF PRODH, W ; products ADDWFC RES2, F ; CLRF WREG ; ADDWFC RES3, F ;

; MOVF ARG1H, W ; MULWF ARG2L ; ARG1H * ARG2L ->

; PRODH:PRODL MOVF PRODL, W ; ADDWF RES1, F ; Add cross MOVF PRODH, W ; products ADDWFC RES2, F ; CLRF WREG ; ADDWFC RES3, F ;

; BTFSS ARG2H, 7 ; ARG2H:ARG2L neg? BRA SIGN_ARG1 ; no, check ARG1 MOVF ARG1L, W ; SUBWF RES2 ; MOVF ARG1H, W ; SUBWFB RES3

; SIGN_ARG1

BTFSS ARG1H, 7 ; ARG1H:ARG1L neg? BRA CONT_CODE ; no, done MOVF ARG2L, W ; SUBWF RES2 ; MOVF ARG2H, W ; SUBWFB RES3

; CONT_CODE

:

DS41350D_JP - p. 66 Preliminary 2010 Microchip Technology Inc.

Page 67: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

7.0 割り込み

PIC18F/LF1XK50 には複数の割り込み要因があり、そのほとんどに高 / 低優先度を設定できます。高優先度割り込みのベクタは 0008h、低優先度割り込みのベクタは 0018h です。高優先度の割り込みイベントは、低優先度割り込みを処理中でも割り込む事ができます。

割り込み動作の制御には、以下 10 個のレジスタを使用します。

• RCON

• INTCON

• INTCON2

• INTCON3

• PIR1、PIR2

• PIE1、PIE2

• IPR1、IPR2

これらのレジスタ内のビットに対応するシンボル名を使用するために、MPLAB® IDE に付属するマイクロチップ社のヘッダファイルの使用を推奨します。このヘッダファイルによって、アセンブラやコンパイラは指定されたレジスタ内のこれらのビットの配置を自動的に管理できます。

通常、各割り込み要因には、その動作を制御する以下の 3 つのビットが実装されています。

• フラグビット : 割り込みイベントが発生した事を示します。

• イネーブルビット : フラグビットがセットされた場合に、実行中のプログラムが割り込みベクタアドレスに分岐する事を許可します。

• 優先度ビット : 割り込みの高優先度と低優先度を選択します。

7.1 ミッドレンジ デバイスとの互換性

IPEN ビットがクリアされている場合 ( 既定値 )、割り込み優先度機能は無効となり、PIC® MCU ミッドレンジ デバイスとの互換性が保たれます。この互換モードでは、IPRx レジスタの割り込み優先度ビットは無視されます。INTCON レジスタの PEIE ビットは、周辺機能のグローバル割り込みを許可します。PEIE ビットをクリアした場合、周辺機能の割り込み要因のみが禁止されます。周辺機能の割り込みを許可するには、PEIEビットおよび GIE ビットを両方ともセットする必要があります。INTCON レジスタの GIE ビットは、周辺機能以外の全てのグローバル割り込みを許可、または周辺機能も含む全ての割り込み要因を禁止します。互換モードの場合、全ての割り込みはアドレス 0008h に分岐します。

7.2 割り込み優先度

割り込みの優先度機能は、RCONレジスタのIPENビットをセットすると有効になります。割り込み優先度を有効にした場合、互換モードにおけるGIEおよびPEIEのグローバル割り込みイネーブルビットは、高優先度グローバル割り込みイネーブルビット GIEH と、低優先度グローバル割り込みイネーブルビット GIEL に置

き換えられます。INTCON レジスタの GIEH ビットをセットすると、対応するIPRxレジスタまたはINTCONxレジスタ内で優先度ビットがセットされている ( 高優先度 ) 割り込みが全て許可されます。GIEH ビットをクリアすると、低優先度に設定されたものを含む全ての割り込み要因が禁止されます。INTCON レジスタのGIEL ビットをクリアすると、優先度ビットがクリアされている ( 低優先度 ) 割り込みのみが無効になります。低優先度の割り込み要因が許可されるのは、GIELビットと GIEH ビットの両方がセットされている場合です。

割り込みフラグ、割り込みイネーブルビット、対応するグローバル割り込みイネーブルビットが全てセットされている場合、割り込みが発生すると、その要因に設定されている優先度ビットのレベルに応じて、高優先度割り込みは 0008h に、低優先度割り込みは 0018hに分岐します。各割り込みは、対応する割り込みイネーブルビットによって個別に禁止できます。

7.3 割り込み処理

割り込みの処理が開始すると、グローバル割り込みイネーブルビットがクリアされ、以降の割り込みが禁止されます。IPEN ビットがクリアされている場合、GIEビットがグローバル割り込みイネーブルビットになります。IPEN ビットがセットされ割り込み優先度機能が有効な場合、GIEH ビットが高優先度、GIEL が低優先度のグローバル割り込みを許可します。高優先度の割り込み要因は、低優先度の割り込み処理に割り込む事ができます。高優先度割り込み処理の実行中は、低優先度の割り込みは処理されません。

割り込み処理からのリターンアドレスはスタックにプッシュされ、PCには割り込みベクタアドレス(0008hまたは 0018h) が読み込まれます。割り込みサービスルーチンへの移行後に割り込み要因を判断するには、INTCONxおよびPIRxレジスタの割り込みフラグビットをポーリングします。同じ割り込みが繰り返さないように、割り込みを再度許可する前に、割り込みフラグビットをクリアする必要があります。

「割り込みからの戻り」命令 RETFIE は割り込みルーチン終了時 GIE ビット ( 優先度機能有効時は GIEH または GIEL) をセットして割り込みを再度許可します。

INT ピンや PORTB の状態変化割り込み等の外部割り込みイベントの場合、割り込みのレイテンシは 3 ~ 4命令サイクルです。このレイテンシは、1 サイクル命令と 2 サイクル命令のどちらでも同じです。各割り込み要因のフラグビットは、対応するイネーブルビットまたはグローバル割り込みイネーブルビットの状態に関わらずセットされます。

Note: 任意の割り込みが許可されている場合、その割り込み制御レジスタの変更にMOVFF 命令を使用しないでください。マイクロコントローラの挙動が不安定になります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 67

Page 68: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 7-1: PIC18 の割り込みロジック

TMR0IE

GIEH/GIE

GIEL/PEIE

Wake-up if in

Interrupt to CPUVector to Location0008h

INT2IFINT2IEINT2IP

INT1IFINT1IEINT1IP

TMR0IFTMR0IETMR0IP

RABIFRABIERABIP

IPEN

TMR0IF

TMR0IP

INT1IFINT1IEINT1IPINT2IFINT2IEINT2IP

RABIFRABIERABIPINT0IFINT0IE

GIEL/PEIE

Interrupt to CPUVector to Location

IPEN

IPEN

0018h

SSPIFSSPIESSPIP

SSPIFSSPIE SSPIP

ADIFADIEADIP

RCIFRCIERCIP

Additional Peripheral Interrupts

ADIFADIEADIP

High Priority Interrupt Generation

Low Priority Interrupt Generation

RCIFRCIERCIP

Additional Peripheral Interrupts

Idle or Sleep modes

GIEH/GIE

Note 1: RABIF 割り込みを使用するには、IOCA および IOCB ピンも有効にしておく必要があります。

(1)

(1)

DS41350D_JP - p. 68 Preliminary 2010 Microchip Technology Inc.

Page 69: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

7.4 INTCON レジスタ

INTCON は、各種割り込みの許可、優先度、フラグビットを格納する読み書き可能なレジスタです。

Note: 割り込み条件が発生すると、各割り込みのフラグビットは、対応するイネーブルビットまたはグローバル イネーブルビットの状態に関わらずセットされます。ユーザソフトウェアでは、割り込みを許可する前に、対応する割り込みフラグビットを確実にクリアしてください。上記の機能によって、ソフトウェア ポーリングが可能になります。

レジスタ 7-1: INTCON: 割り込み制御レジスタ

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x

GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 GIE/GIEH: グローバル割り込みイネーブルビット

IPEN = 0の場合 : 1 = マスクされていない全ての割り込みを許可

0 = 周辺機能を含む全ての割り込みを禁止

IPEN = 1の場合 : 1 = 高優先度の割り込みを全て許可 0 = 低優先度を含む全ての割り込みを禁止

bit 6 PEIE/GIEL: 周辺割り込みイネーブルビット

IPEN = 0の場合 : 1 = マスクされていない全ての周辺割り込みを許可 0 = 全ての周辺割り込みを禁止 IPEN = 1の場合 : 1 = 低優先度の割り込みを全て許可 0 = 低優先度の割り込みを全て禁止

bit 5 TMR0IE: TMR0 オーバーフロー割り込みイネーブルビット 1 = TMR0 オーバーフロー割り込みを許可 0 = TMR0 オーバーフロー割り込みを禁止

bit 4 INT0IE: INT0 外部割り込みイネーブルビット 1 = INT0 外部割り込みを許可 0 = INT0 外部割り込みを禁止

bit 3 RABIE: RA および RB ポート状態変化割り込みイネーブルビット (2) 1 = RA および RB ポートの状態変化割り込みを許可 0 = RA および RB ポートの状態変化割り込みを禁止

bit 2 TMR0IF: TMR0 オーバーフロー割り込みフラグビット 1 = TMR0 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 ) 0 = TMR0 レジスタはオーバーフローしていない

bit 1 INT0IF: INT0 外部割り込みフラグビット 1 = INT0 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT0 外部割り込みは発生していない

bit 0 RABIF: RA および RB ポート状態変化割り込みフラグビット (1) 1 = RA<5:3> または RB<7:4> ピンのいずれか 1 つ以上の状態が変化した ( ソフトウェアによるクリアが必要 ) 0 = RA<5:3> または RB<7:4> ピンのいずれも状態が変化していない

Note 1: 条件が不一致のままである場合、RABIF ビットもセットされたままです。PORTA および PORTB を読み出す事で、

この条件が解除され、ビットをクリアできるようになります。

2: RA および RB ポートの状態変化割り込みを使用するには、IOCA と IOCB 両方も有効にしておく必要があります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 69

Page 70: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 7-2: INTCON2: 割り込み制御 2 レジスタ

R/W-1 R/W-1 R/W-1 R/W-1 U-0 R/W-1 U-0 R/W-1

RABPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RABIP

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 RABPU: PORTA および PORTB プルアップ イネーブルビット

1 = PORTA と PORTB の全てのプルアップを無効にする 0 = ピンが入力に設定され、対応する WPUA および WPUB ビットがセットされている場合に限り、

PORTA と PORTB のプルアップを有効にする

bit 6 INTEDG0: 外部割り込み 0 エッジ選択ビット

1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み

bit 5 INTEDG1: 外部割り込み 1 エッジ選択ビット

1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み

bit 4 INTEDG2: 外部割り込み 2 エッジ選択ビット

1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み

bit 3 未実装ビット : 「0」として読み出し

bit 2 TMR0IP: TMR0 オーバーフロー割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 1 未実装ビット : 「0」として読み出し

bit 0 RABIP: RA および RB ポート状態変化割り込み優先度ビット

1 = 高優先度 0 = 低優先度

Note: 割り込み条件が発生すると、各割り込みのフラグビットは、対応するイネーブルビットまたはグローバル イネーブルビットの状態に関わらずセットされます。ユーザ ソフトウェアでは、割り込みを許可する前に、対応する割り込みフラグビットを確実にクリアしてください。上記の機能によって、ソフトウェア ポーリングが可能になります。

DS41350D_JP - p. 70 Preliminary 2010 Microchip Technology Inc.

Page 71: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 7-3: INTCON3: 割り込み制御 3 レジスタ

R/W-1 R/W-1 U-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0

INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 INT2IP: INT2 外部割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 6 INT1IP: INT1 外部割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 5 未実装ビット : 「0」として読み出し

bit 4 INT2IE: INT2 外部割り込みイネーブルビット

1 = INT2 外部割り込みを許可 0 = INT2 外部割り込みを禁止

bit 3 INT1IE: INT1 外部割り込みイネーブルビット

1 = INT1 外部割り込みを許可 0 = INT1 外部割り込みを禁止

bit 2 未実装ビット : 「0」として読み出し

bit 1 INT2IF: INT2 外部割り込みフラグビット

1 = INT2 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT2 外部割り込みは発生していない

bit 0 INT1IF: INT1 外部割り込みフラグビット

1 = INT1 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT1 外部割り込みは発生していない

Note: 割り込み条件が発生すると、各割り込みのフラグビットは、対応するイネーブルビットまたはグローバル イネーブルビットの状態に関わらずセットされます。ユーザ ソフトウェアでは、割り込みを許可する前に、対応する割り込みフラグビットを確実にクリアしてください。上記の機能によって、ソフトウェア ポーリングが可能になります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 71

Page 72: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

7.5 PIR レジスタ

PIR レジスタには、各種周辺割り込みのフラグビットを格納します。周辺割り込み要因の数は多いため、割り込み要求フラグレジスタは 2 つ用意されています(PIR1 と PIR2)。

Note 1: 割り込み条件が発生すると、各割り込みフラグビットは、対応するイネーブルビットまたはグローバル割り込みイネーブルビット (INTCON レジスタの GIE) の状態に関わらずセットされます。

2: ユーザ ソフトウェアでは、割り込みを許可する前、および割り込み処理の完了後に、対応する割り込みフラグビットを確実にクリアしてください。

レジスタ 7-4: PIR1: 周辺割り込み要求 ( フラグ ) レジスタ 1

U-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0

— ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 未実装ビット : 「0」として読み出し

bit 6 ADIF: A/D コンバータ割り込みフラグビット

1 = A/D 変換が完了した ( ソフトウェアによるクリアが必要 ) 0 = A/D 変換が完了していない、または開始していない

bit 5 RCIF: EUSART 受信割り込みフラグビット

1 = EUSART 受信バッファ RCREG がフル (RCREG を読み出すとクリアされる ) 0 = EUSART 受信バッファがエンプティ

bit 4 TXIF: EUSART 送信割り込みフラグビット

1 = EUSART 送信バッファ TXREG がエンプティ (TXREG に書き込むとクリアされる ) 0 = EUSART 送信バッファがフル

bit 3 SSPIF: マスタ同期シリアルポート割り込みフラグビット

1 = 送信 / 受信が完了した ( ソフトウェアによるクリアが必要 )0 = 送信 / 受信待ち

bit 2 CCP1IF: CCP1 割り込みフラグビット

キャプチャモード : 1 = TMR1 レジスタのキャプチャが発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1 レジスタのキャプチャは発生していない

コンペアモード : 1 = TMR1 レジスタのコンペア一致が発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1 レジスタのコンペア一致は発生していないPWM モード : このモードでは未使用

bit 1 TMR2IF: TMR2/PR2 一致割り込みフラグビット

1 = TMR2 と PR2 が一致した( ソフトウェアによるクリアが必要 ) 0 = TMR2 と PR2 は一致していない

bit 0 TMR1IF: TMR1 オーバーフロー割り込みフラグビット

1 = TMR1 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 )0 = TMR1 レジスタはオーバーフローしていない

DS41350D_JP - p. 72 Preliminary 2010 Microchip Technology Inc.

Page 73: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 7-5: PIR2: 周辺割り込み要求 ( フラグ ) レジスタ 2

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0

OSCFIF C1IF C2IF EEIF BCLIF USBIF TMR3IF —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 OSCFIF: オシレータ障害割り込みフラグビット

1 = デバイス オシレータに障害が発生し、クロック入力が HFINTOSC に変更された ( ソフトウェアによるクリアが必要 )

0 = デバイスクロックが動作中

bit 6 C1IF: コンパレータ C1 割り込みフラグビット

1 = コンパレータ C1 の出力が変化した ( ソフトウェアによるクリアが必要 )0 = コンパレータ C1 の出力は変化していない

bit 5 C2IF: コンパレータ C2 割り込みフラグビット

1 = コンパレータ C2 の出力が変化した ( ソフトウェアによるクリアが必要 )0 = コンパレータ C2 の出力は変化していない

bit 4 EEIF: データ EEPROM/ フラッシュ書き込み動作割り込みフラグビット

1 = 書き込み動作が完了した ( ソフトウェアによるクリアが必要 )0 = 書き込み動作が完了していない、または開始していない

bit 3 BCLIF: バスコリジョン割り込みフラグビット

1 = バスコリジョンが発生した ( ソフトウェアによるクリアが必要 )0 = バスコリジョンは発生していない

bit 2 USBIF: USB 割り込みフラグビット

1 = USB が割り込みを要求した ( ソフトウェアによるクリアが必要 )0 = USB 割り込み要求は発生していない

bit 1 TMR3IF: TMR3 オーバーフロー割り込みフラグビット

1 = TMR3 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 )0 = TMR3 レジスタはオーバーフローしていない

bit 0 未実装ビット : 「0」として読み出し

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 73

Page 74: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

7.6 PIE レジスタ

PIEレジスタには、各種周辺割り込みのイネーブルビットが含まれます。周辺割り込み要因の数は多いため、割り込みイネーブル レジスタは 2 つ用意されています(PIE1 と PIE2)。IPEN = 0の場合、これらの周辺割り込みを許可するには PEIE ビットをセットする必要があります。

レジスタ 7-6: PIE1: 周辺割り込みイネーブル ( フラグ ) レジスタ 1

U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 未実装ビット : 「0」として読み出し

bit 6 ADIE: A/D コンバータ割り込みイネーブルビット

1 = A/D 割り込みを許可する 0 = A/D 割り込みを禁止する

bit 5 RCIE: EUSART 受信割り込みイネーブルビット

1 = EUSART 受信割り込みを許可する 0 = EUSART 受信割り込みを禁止する

bit 4 TXIE: EUSART 送信割り込みイネーブルビット

1 = EUSART 送信割り込みを許可する 0 = EUSART 送信割り込みを禁止する

bit 3 SSPIE: マスタ同期シリアルポート割り込みイネーブルビット

1 = MSSP 割り込みを許可する 0 = MSSP 割り込みを禁止する

bit 2 CCP1IE: CCP1 割り込みイネーブルビット

1 = CCP1 割り込みを許可する 0 = CCP1 割り込みを禁止する

bit 1 TMR2IE: TMR2/PR2 一致割り込みイネーブルビット

1 = TMR2/PR2 一致割り込みを許可する 0 = TMR2/PR2 一致割り込みを禁止する

bit 0 TMR1IE: TMR1 オーバーフロー割り込みイネーブルビット

1 = TMR1 オーバーフロー割り込みを許可する 0 = TMR1 オーバーフロー割り込みを禁止する

DS41350D_JP - p. 74 Preliminary 2010 Microchip Technology Inc.

Page 75: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 7-7: PIE2: 周辺割り込みイネーブル ( フラグ ) レジスタ 2

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0

OSCFIE C1IE C2IE EEIE BCLIE USBIE TMR3IE —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 OSCFIE: オシレータ障害割り込みイネーブルビット

1 = 許可0 = 禁止

bit 6 C1IE: コンパレータ C1 割り込みイネーブルビット

1 = 許可0 = 禁止

bit 5 C2IE: コンパレータ C2 割り込みイネーブルビット

1 = 許可0 = 禁止

bit 4 EEIE: データ EEPROM/ フラッシュ書き込み動作割り込みイネーブルビット

1 = 許可0 = 禁止

bit 3 BCLIE: バスコリジョン割り込みイネーブルビット

1 = 許可0 = 禁止

bit 2 USBIE: USB 割り込みイネーブルビット

1 = 許可0 = 禁止

bit 1 TMR3IE: TMR3 オーバーフロー割り込みイネーブルビット

1 = 許可0 = 禁止

bit 0 未実装ビット : 「0」として読み出し

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 75

Page 76: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

7.7 IPR レジスタ

IPR レジスタは、各種周辺割り込みの優先度ビットを格納します。周辺割り込み要因の数は多いため、割り込み優先度レジスタは 2 つ用意されています (IPR1 とIPR2)。優先度ビットを使用するには割り込み優先度イネーブルビット (IPEN) をセットする必要があります。

レジスタ 7-8: IPR1: 周辺割り込み優先度レジスタ 1

U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

— ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 未実装ビット : 「0」として読み出し

bit 6 ADIP: A/D コンバータ割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 5 RCIP: EUSART 受信割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 4 TXIP: EUSART 送信割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 3 SSPIP: マスタ同期シリアルポート割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 2 CCP1IP: CCP1 割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 1 TMR2IP: TMR2/PR2 一致割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 0 TMR1IP: TMR1 オーバーフロー割り込み優先度ビット

1 = 高優先度 0 = 低優先度

DS41350D_JP - p. 76 Preliminary 2010 Microchip Technology Inc.

Page 77: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 7-9: IPR2: 周辺割り込み優先度レジスタ 2

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 U-0

OSCFIP C1IP C2IP EEIP BCLIP USBIP TMR3IP —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 OSCFIP: オシレータ障害割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 6 C1IP: コンパレータ C1 割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 5 C2IP: コンパレータ C2 割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 4 EEIP: データ EEPROM/ フラッシュ書き込み動作割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 3 BCLIP: バスコリジョン割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 2 USBIP: USB 割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 1 TMR3IP: TMR3 オーバーフロー割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 0 未実装ビット : 「0」として読み出し

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 77

Page 78: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

7.8 RCON レジスタ

RCON レジスタには、直近のリセット、アイドル、スリープモードからのウェイクアップの原因を判断するために使用するフラグビットを格納します。さらに、割り込み優先度機能を有効にする IPEN ビットも格納します。

SBOREN ビットとリセット フラグビットの動作は、23.1「RCON レジスタ」で詳細に説明します。

レジスタ 7-10: RCON: リセット制御レジスタ

R/W-0 R/W-1 U-0 R/W-1 R-1 R-1 R/W-0 R/W-0

IPEN SBOREN(1) — RI TO PD POR(2) BOR

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 IPEN: 割り込み優先度イネーブルビット

1 = 割り込みに対する優先度レベルの設定を有効にする0 = 割り込みに対する優先度レベルの設定を無効にする (PIC16CXXX 互換モード )

bit 6 SBOREN: ソフトウェア BOR イネーブルビット (1)

BOREN<1:0> = 01の場合 :1 = BOR を有効にする0 = BOR を無効にする

BOREN<1:0> = 00、10、または 11の場合 :ビットは無効、「0」として読み出し

bit 5 未実装ビット : 「0」として読み出し

bit 4 RI: RESET命令フラグビット

1 = RESET 命令は実行されていない ( ファームウェアまたはパワーオンリセットによってセットされる )

0 = RESET命令が実行され、デバイスがリセットされた (コードによってリセットされた後はファームウェアによってセットする必要がある )

bit 3 TO: ウォッチドッグ タイムアウト フラグビット

1 = 電源投入、CLRWDT命令または SLEEP命令によってセット 0 = WDT タイムアウトが発生した

bit 2 PD: パワーダウン検出フラグビット

1 = 電源投入または CLRWDT命令によってセット0 = SLEEP命令の実行によってセット

bit 1 POR: パワーオンリセット ステータス ビット (2)

1 = パワーオンリセットは発生していない0 = パワーオンリセットが発生した ( パワーオンリセット後、ソフトウェアによってセットする必要

がある )

bit 0 BOR: ブラウンアウト リセット ステータス ビット (3)

1 = ブラウンアウト リセットは発生していない ( ファームウェアによってのみセットできる )0 = ブラウンアウト リセットが発生した (POR またはブラウンアウト リセットの発生後、ファーム

ウェアによってセットする必要がある )

Note 1: SBOREN が有効に設定されている場合、リセット状態は「1」になります。それ以外の場合は「0」です。

2: POR 時の実際のリセット値は、デバイスリセットの種類によって決まります。詳細は、23.6「レジスタのリセット状態」を参照してください。

3: 表 23-3 を参照してください。

DS41350D_JP - p. 78 Preliminary 2010 Microchip Technology Inc.

Page 79: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

7.9 INTn ピン割り込み

RC0/INT0、RC1/INT1、RC2/INT2 ピンによる外部割り込みは、エッジによってトリガされます。INTCON2レジスタの対応する INTEDGx ビットがセットされている場合 (= 1)、割り込みは立ち上がりエッジでトリガされます。クリアされている場合、立ち下がりエッジでトリガされます。RCx/INTx ピンで有効なエッジが発生すると、対応するフラグビット INTxF がセットされます。この割り込みは、対応するイネーブルビットINTxE をクリアする事で禁止できます。フラグビットの INTxF は、再度この割り込みを許可する前に、ソフトウェアの割り込みサービスルーチン内でクリアしておく必要があります。

全ての外部割り込み (INT0、INT1、INT2) は、アイドルまたはスリープモードからプロセッサをウェイクアップできます。ただし、これらのモードに移行する前に INTxE をセットしておいた場合に限ります。グローバル割り込みイネーブルビットGIEをセットすると、プロセッサはウェイクアップ後に割り込みベクタに分岐します。

INT1 と INT2 の割り込み優先度は、INTCON3 レジスタの割り込み優先度ビット INT1IP と INT2IP の値によって決まります。INT0 には優先度ビットが実装されていません。INT0 は常に高優先度の割り込み要因として処理されます。

7.10 TMR0 割り込み

8 ビットモードの場合 ( 既定値 )、TMR0 レジスタでオーバーフローが発生すると (FFh 00h)、フラグビット TMR0IF がセットされます。16 ビットモードの場合、TMR0H:TMR0L レジスタペアでオーバーフローが発生すると(FFFFh 0000h)、フラグビットTMR0IFがセットされます。これらの割り込みは、INTCON レジスタのイネーブルビット TMR0IE をセット / クリアする事によって許可 / 禁止できます。Timer0 の割り込み優先度は、INTCON2レジスタの割り込み優先度ビット TMR0IP の値によって決まります。Timer0 モジュールの詳細は、10.0「Timer0 モジュール」を参照してください。

7.11 PORTA と PORTB の状態変化割り込み

PORTA または PORTB の入力が変化すると、INTCONレジスタのフラグビット RABIF がセットされます。この割り込みは、INTCON レジスタのイネーブルビットRABIE をセット / クリアする事によって許可 / 禁止できます。同時に各ピンも IOCA および IOCB レジスタによって個別に有効にしておく必要があります。PORTA および PORTB 状態変化割り込みの優先度は、INTCON2 レジスタの割り込み優先度ビット RABIP の値によって決まります。

7.12 割り込み処理中のコンテキスト保存

割り込みの処理中、PC のアドレスはスタックに保存されます。さらに、WREG、STATUS、BSR レジスタの値が高速リターンスタックに保存されます。割り込みからの高速リターンを使用しない場合 (3.3「データメモリの構成」参照 )、ユーザが割り込みサービスルーチンの入り口で WREG、STATUS、BSR レジスタの値を保存する必要がある場合があります。ユーザ アプリケーションによっては、その他のレジスタの保存も必要です。例 7-1 では、割り込みサービスルーチン内でWREG、STATUS、BSR レジスタの値を保存およびリストアしています。

例 7-1: ステータス、WREG、BSR レジスタ値の RAM への保存 MOVWF W_TEMP ; W_TEMP is in virtual bankMOVFF STATUS, STATUS_TEMP ; STATUS_TEMP located anywhereMOVFF BSR, BSR_TEMP ; BSR_TMEP located anywhere;; USER ISR CODE;MOVFF BSR_TEMP, BSR ; Restore BSRMOVF W_TEMP, W ; Restore WREGMOVFF STATUS_TEMP, STATUS ; Restore STATUS

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 79

Page 80: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 80 Preliminary 2010 Microchip Technology Inc.

Page 81: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

8.0 低ドロップアウト (LDO) 電圧レギュレータ

PIC18F1XK50 と PIC18LF1XK50 は、内部低ドロップアウト (LDO) 電圧レギュレータの点で異なります。PIC18F1XK50が LDOレギュレータを内蔵している一方、PIC18LF1XK50 は内蔵していません。

ダイのリソグラフィにより、チップ内部のデジタルロジックの 大動作電圧は 3.6 V ( 定格 ) です。引き続き5.0 V設計にも対応できるように、LDO電圧レギュレータをダイに統合しました。LDO 電圧レギュレータによって、内部デジタルロジックを 3.3 V で動作させる一方、I/O は 5.0 V (VDD) で動作させる事ができます。

LDO 電圧レギュレータには、安定性を確保するために外付けのバイパス コンデンサが必要です。VUSB ピンにも、外付けのバイパス コンデンサが必要です。0.22~ 0.47 µF のセラミック コンデンサを推奨します。

電源投入時、外付けコンデンサは LDO 電圧レギュレータに対しては大きな負荷となってしまいます。誤動作を防ぐために、定電流源によって外付けコンデンサが充電されるまで、デバイスはリセット状態に保たれます。コンデンサが完全に充電されたら、リセットは解除されます。詳細は、27.0「電気的仕様」を参照してください。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 81

Page 82: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 82 Preliminary 2010 Microchip Technology Inc.

Page 83: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

9.0 I/O ポート

大 3 つのポートを使用できます。I/O ポートピンの一部は代替機能と多重化されており、デバイスの周辺機能を割り当てる事ができます。通常、周辺機能を有効にしている時には、これらのピンを汎用 I/O ピンとして使用する事はできません。

各ポートの動作には以下の 3 個のレジスタを使用します。

• TRIS レジスタ ( データ方向レジスタ )

• PORTレジスタ (デバイスピンのレベル読み取り )

• LAT レジスタ ( 出力ラッチ )

PORTA データラッチ (LATA レジスタ ) は、I/O ピンが駆動している値に対して Read-Modify-Write 動作を実行する際に便利です。

図 9-1 に、他の周辺機能へのインターフェイスを省略した、汎用 I/O ポートの簡易モデルを示します。

図 9-1: 汎用 I/O ポートの動作

9.1 PORTA、TRISA、LATA レジスタ

PORTA は 5 ビット幅です。PORTA<5:4> ビットは双方向ポート、PORTA<3,1:0> ビットは入力専用ポートです。PORTAに対応するデータ方向レジスタはTRISAです。TRISA ビットをセットすると (= 1)、対応するPORTA のピンが入力になります ( すなわち、出力ドライバが無効になります )。TRISA ビットをクリアすると (= 0)、対応する PORTA のピンが出力になります( すなわち、出力ドライバが有効になり、出力ラッチの内容が選択したピンに出力されます )。

PORTA レジスタを読み出すと、ピンの状態が出力されるのに対し、PORTA レジスタに書き込むと、PORTラッチにデータが格納されます。

PORTA データラッチ (LATA) レジスタはメモリにもマッピングされています。LATA レジスタに対するRead-Modify-Write 動作は、PORTA にラッチされた出力値を読み出した上で、書き戻します。

PORTA の全てのピンは、個別に状態変化割り込みピンとして設定できます。IOCA レジスタの制御ビットによって、各ピンの割り込み機能が有効 ( セット時 )または無効 ( クリア時 ) に設定されます。

INTCON レジスタの RABIE ビットをセットすると、IOCA ビットをセットされているピンの全てで状態変化割り込みが許可されます。RABIE ビットをクリアすると、状態変化割り込みは全て禁止されます。

この割り込みを生成できるのは、入力として設定されているピンだけです ( 出力として設定されたピンがある場合、それらは状態変化割り込みの比較動作から除外されます )。

状態変化割り込みを有効に設定されたピンでは、前回の PORTA 読み出しでラッチされた値と、現在の値が比較されます。各ピンの前回読み出し値との「不一致」出力に対して PORTA 全体の論理和を取り、INTCONレジスタの PORTA 状態変化割り込みフラグビット(RABIF) をセットします。

この割り込みによって、デバイスをスリープモードまたは全てのアイドルモードからウェイクアップできます。ユーザは、割り込みサービスルーチン内で、以下のようにして割り込みをクリアできます。

a) PORTA に対する読み書き動作で不一致の状態を解消する ( ただし、PORTA が MOVFF 命令のソースまたは格納先ではない場合 )。

b) フラグビット RABIF をクリアする。

不一致状態が存在する限り、フラグビットRABIFはセットされたままになります。PORTA に対する読み出しまたは書き込みによって、この条件を解消すれば、RABIFビットをクリアできるようになります。前回の読み出し値を保持するラッチは、MCLR およびブラウンアウトのいずれのリセットからも影響を受けません。これらのリセットのいずれが発生しても、不一致状態が存在する限り、RABIF フラグはセットされたままになります。

DataBus

WR LAT

WR TRIS

RD Port

Data Latch

TRIS Latch

RD TRIS

InputBuffer

I/O pin(1)

QD

CK

QD

CK

EN

Q D

EN

RD LAT

or Port

Note 1: I/O ピンには VDD および VSS との間にダイオード保護回路が挿入されています。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 83

Page 84: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

状態変化割り込みは、キー押下操作によるウェイクアップ等、PORTA を状態変化割り込み機能のみに使用する場合に推奨します。状態変化割り込み機能の使用中に PORTA のポーリングはお勧めできません。

PORTA の各ピンには、個別に制御された弱い内部プルアップが接続されています。WPUA レジスタの各ビットをセットする事で、対応するピンのプルアップが有効になります。INTCON2 レジスタの RABPU ビットをクリアすると、対応する WPUA ビットがセットされている全てのピンでプルアップが有効になります。RABPUビットをセットすると、弱プルアップが全て無効になります。ポートピンを出力として設定すると、弱プルアップは自動的に OFF になります。パワーオンリセットによってもプルアップは無効になります。

RA0 および RA1 は USB モジュール機能と多重化され

ています。USB 機能が有効な場合、内蔵 USB トラン

シーバの差動データラインとして動作します。

RA0 および RA1 には対応する TRISA ビットがありま

せん。デジタルポート ピンとしての機能はデジタル入

力に限られます。USB 動作用に設定した場合のデータ

方向は、その時点での USB モジュールの設定と状態

によって決まります。

RA3 は入力専用ピンです。その動作は、CONFIG3H レジスタの MCLRE ビットによって制御されます。ポートピンとしての機能を選択した場合 (MCLRE = 0)、デ

ジタル入力専用のピンになります。従って、このピンの動作に対応する TRIS または LAT ビットは設けられていません。

RA4 および RA5 ピンはメインオシレータ ピンと多重化されています。コンフィグレーション レジスタ内のメインオシレータ選択に応じて、オシレータまたは I/Oピンとして設定されます ( 詳細は、24.1「コンフィグレーション ビット」を参照してください )。RA4 および RA5 をポートピンとして使用しない場合、対応するTRIS および LAT ビットからは「0」が読み出されます。

RA4 ピンはアナログ入力と多重化されています。RA4ピンのアナログ動作は、ANSEL レジスタの ANS3 ビットをセット ( パワーオン リセット後の既定の設定 ) すると有効になります。

例 9-1: PORTA の初期化

Note 1: 読み出し動作の実行中 (Q2 サイクルの開始時 ) に I/O ピンが変化する可能性がある場合、割り込みフラグビット RABIF がセットされない恐れがあります。また、ポートに対する読み書きは、そのポートの全てのビットに影響を与えるため、状態変化割り込みモードで複数のピンを使用する場合には注意が必要です。あるピンの変化を処理している間に別のピンの変化を見逃す可能性があります。

2: USB 動作用の設定では、RA0 および RA1の状態変化割り込み機能は自動的に無効になります。

3: RA<1:0>ポートピンのデジタル入力機能を使用するには、状態変化割り込みピンを有効にして (IOCA <1:0> = 11)、さらにUSBモジュールを無効にする必要があります (USBEN = 0)。

Note: パワーオン リセット時にRA4は既定ではアナログ入力として設定され、「0」が読み出されます。また、RA<1:0> およびRA<5:3> はデジタル入力として設定されます。

Note: パワーオン リセット時に RA3 のデジタル入力機能が有効になるのは、マスタクリア機能を無効に設定している場合だけです。

Note: パワーオン リセット時、RA4 はアナログ入力として設定され、「0」が読み出されます。

CLRF PORTA ; Initialize PORTA by; clearing output; data latches

CLRF LATA ; Alternate method; to clear output; data latches

MOVLW 030h ; Value used to ; initialize data ; direction

MOVWF TRISA ; Set RA<5:4> as output

DS41350D_JP - p. 84 Preliminary 2010 Microchip Technology Inc.

Page 85: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 9-1: PORTA: PORTA レジスタ

U-0 U-0 R/W-x R/W-x R-x U-0 R/W-x R/W-x

— — RA5 RA4 RA3 — RA1 RA0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-6 未実装ビット : 「0」として読み出し

bit 5-3 RA<5:3>: PORTA I/O ピンビット (1)

1 = ポートピンが > VIH

0 = ポートピンが < VIL

bit 2 未実装ビット : 「0」として読み出し

bit 1-0 RA<1:0>: PORTA I/O ピンビット1 = ポートピンが > VIH

0 = ポートピンが < VIL

Note 1: RA3 ビットを使用できるのはマスタ クリア リセットが無効に設定されている場合 ( コンフィグレーション ビット MCLRE = 0) のみです。それ以外の場合、RA3 からは「0」が読み出されます。このビットは読み出し専用です。

レジスタ 9-2: TRISA: PORTA 3 ステート レジスタ

U-0 U-0 R/W-1 R/W-1 U-0 U-0 U-0 U-0

— — TRISA5 TRISA4 — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-6 未実装ビット : 「0」として読み出し

bit 5-4 TRISA<5:4>: PORTA 3 ステート制御ビット1 = PORTA のピンを入力として設定 (3 ステート入力 )0 = PORTA のピンを出力として設定

bit 3-0 未実装ビット : 「0」として読み出し

Note 1: XT、HS、LP オシレータモードの場合、TRISA<5:4> からは常に「1」が読み出されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 85

Page 86: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 9-3: WPUA: PORTA 弱プルアップ レジスタ

U-0 U-0 R/W-1 R/W-1 R/W-1 U-0 U-0 U-0

— — WPUA5 WPUA4 WPUA3 — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-6 未実装ビット : 「0」として読み出し

bit 5-3 WPUA<5:3>: 弱プルアップ イネーブルビット

1 = プルアップを有効に設定

0 = プルアップを無効に設定

bit 2 未実装ビット : 「0」として読み出し

bit 1-0 WPUA<1:0>: 弱プルアップ イネーブルビット

1 = プルアップを有効に設定

0 = プルアップを無効に設定

レジスタ 9-4: IOCA: PORTA 状態変化割り込みレジスタ

U-0 U-0 R/W-0 R/W-0 R-0 U-0 R/W-0 R/W-0

— — IOCA5 IOCA4 IOCA3 — IOCA1 IOCA0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-6 未実装ビット : 「0」として読み出し

bit 5-3 IOCA<5:3>: PORTA I/O ピンビット

1 = 状態変化割り込みを許可

0 = 状態変化割り込みを禁止

bit 2 未実装ビット : 「0」として読み出し

bit 1-0 IOCA<1:0>: PORTA I/O ピンビット

1 = 状態変化割り込みを許可

0 = 状態変化割り込みを禁止

レジスタ 9-5: LATA: PORTA データ ラッチ レジスタ

U-0 U-0 R/W-x R/W-x U-0 U-0 U-0 U-0

- - LATA5 LATA4 - - - -

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-6 未実装ビット : 「0」として読み出し

bit 5-4 LATA<5:4>: RA<5:4> ポート I/O 出力ラッチレジスタ ビット

bit 3-0 未実装ビット : 「0」として読み出し

DS41350D_JP - p. 86 Preliminary 2010 Microchip Technology Inc.

Page 87: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 9-1: PORTA I/O の要約

ピン 機能TRIS設定

I/OI/O

タイプ説明

RA0/IOCA0/D+/PGD

RA0 —(1) I TTL PORTA<0> のデータ入力です。USB を有効にした場合、無効になり

ます。

IOCA0 —(1) I TTL ピン状態変化割り込みです。USB を有効に設定した場合、無効にな

ります。

D+ —(1) I XCVR USB バス差動入力ライン (+) ( 内部トランシーバ ) です。

—(1) O XCVR USB バス差動出力ライン (+) ( 内部トランシーバ ) です。

PGD —(1) O DIG ICSP™ のシリアル実行データ出力です。

—(1) I ST ICSP™ のシリアル実行データ入力です。

RA1/IOCA1/D-/PGC

RA1 —(1) I TTL PORTA<1> のデータ入力です。USB を有効にした場合、無効になり

ます。

IOCA1 —(1) I TTL ピン状態変化割り込みです。USB を有効に設定した場合、無効にな

ります。

D- —(1) I XCVR USB バス差動入力ライン (-) ( 内部トランシーバ ) です。

—(1) O XCVR USB バス差動出力ライン (-) ( 内部トランシーバ ) です。

PGC —(1) O DIG ICSP™ のシリアル実行クロック出力です。

—(1) I ST ICSP™ のシリアル実行クロック入力です。

RA3/IOCA3/MCLR/VPP

RA3 —(2) I ST PORTA<3> データ入力です。コンフィグレーション ビット MCLREをクリアすると有効になります。プログラム可能な弱プルアップがあ

ります。

IOCA3 —(1) I TTL ピン状態変化割り込み

MCLR — I ST 外部マスタクリア入力です。コンフィグレーション ビット MCLREをセットすると有効になります。

VPP — I ANA 高電圧検出です。ICSP™ モードへの移行を検出するために使用しま

す。ピンのモードに関わらず、常に使用可能です。

RA4/IOCA4/AN3/OSC2/CLKOUT

RA4 0 O DIG LATA<4> データ出力です。RCIO、INTIO2、ECIO モードのみで有効

になります。

1 I TTL PORTA<4> データ入力です。プログラム可能な弱プルアップがあり

ます。RCIO、INTIO2、ECIO モードのみで有効になります。

IOCA4 1 I TTL ピン状態変化割り込み

AN3 1 I ANA A/D 入力チャンネル 3 です。POR 時の既定の設定です。

OSC2 x O ANA メインオシレータのフィードバック出力接続 (XT、HS、LP モード )です。

CLKOUT x O DIG RC、INTIO1、EC オシレータモードのシステム サイクルクロック出

力 (FOSC/4) です。

RA5/IOCA5/OSC1/CLKIN

RA5 0 O DIG LATA<5>データ出力です。外部オシレータモードでは無効になります。

1 I TTL PORTA<5> データ入力です。外部オシレータモードでは無効になり

ます。プログラム可能な弱プルアップがあります。

IOCA5 1 I TTL ピン状態変化割り込み

OSC1 x I ANA メインオシレータの入力接続です。

CLKIN x I ANA メインクロックの入力接続です。

凡例 : DIG = デジタルレベル出力、TTL = TTL 入力バッファ、ST = シュミットトリガ入力バッファ、ANA = アナログレベル入力 / 出力

x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの方向に影響を与えません。)

Note 1: RA0 および RA1 には、対応する TRISA ビットがありません。ポートモードでは、これらのピンは入力専用です。

USB のデータ方向は、USB のコンフィグレーションによって決まります。

2: RA3 には対応する TRISA ビットがありません。このピンは、モードに関わらず常に入力になります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 87

Page 88: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 9-2: PORTA に関連するレジスタの要約

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

PORTA — — RA5(1) RA4(1) RA3(2) — RA1(3) RA0(3) 290

LATA — — LATA5(1) LATA4(1) — — — — 290

TRISA — — TRISA5(1) TRISA4(1) — — — — 290

ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 — — — 290

SLRCON — — — — — SLRC SLRB SLRA 290

IOCA — — IOCA5 IOCA4 IOCA3(2) — IOCA1(3) IOCA0(3) 290

WPUA — — WPUA5 WPUA4 WPUA3(2) — — — 290

UCON — PPBRST SE0 PKTDIS USBEN RESUME SUSPND — 290

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

INTCON2 RABPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RABIP 287

凡例 : — = 未実装ビット、「0」として読み出し。網掛けの部分は PORTA では使用しません。

Note 1: RA<5:4> および対応するラッチやデータ方向ビットでは、オシレータのコンフィグレーションに応じてI/O ピンとしての機能が有効になります。それ以外の場合、「0」として読み出されます。

2: マスタクリア機能が無効に設定されている ( コンフィグレーション ビット MCLRE = 0) 場合にのみ実装されます。

3: RA1 および RA0 をポートピンとして使用できるのは、USB モジュールが無効に設定されている(UCON<3> = 0) 場合のみです。

DS41350D_JP - p. 88 Preliminary 2010 Microchip Technology Inc.

Page 89: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

9.2 PORTB、TRISB、LATB レジスタ

PORTB は 4 ビット幅の双方向ポートです。PORTB に対応するデータ方向レジスタは TRISB です。TRISBビットをセットすると (= 1)、対応する PORTB のピンが入力になります ( すなわち、出力ドライバが無効になります )。TRISB ビットをクリアすると (= 0)、対応する PORTB のピンが出力になります ( すなわち、出力ドライバが有効になり、出力ラッチの内容が選択したピンに出力されます )。

PORTBデータラッチ (LATB)レジスタはメモリにも対応付けられています。LATB レジスタに対する Read-Modify-Write 動作は、PORTB にラッチされた出力値を読み出した上で、書き戻します。

例 9-2: PORTB の初期化

PORTB の全てのピンは、個別に状態変化割り込みピンとして設定できます。IOCB レジスタの制御ビットによって、各ピンの割り込み機能が有効 ( セット時 )または無効 ( クリア時 ) に設定されます。

INTCON レジスタの RABIE ビットをセットすると、IOCB ビットをセットされているピンの全てで状態変化割り込みが許可されます。RABIE ビットをクリアすると、状態変化割り込みは全て禁止されます。

この割り込みを生成できるのは、入力として設定されているピンだけです ( 出力として設定されたピンがある場合、それらは状態変化割り込みの比較動作から除外されます )。

状態変化割り込みを有効に設定されたピンでは、前回の PORTB 読み出しでラッチされた値と、現在の値が比較されます。各ピンの前回読み出し値との「不一致」出力に対して PORTB 全体の論理和を取り、INTCONレジスタの PORTB 状態変化割り込みフラグビット(RABIF) をセットします。

この割り込みによって、デバイスをスリープモードまたは全てのアイドルモードからウェイクアップできます。ユーザは、割り込みサービスルーチン内で、以下のようにして割り込みをクリアできます。

a) PORTB に対する、なんらかの読み書き動作は不一致の状態を解消します ( ただし、PORTB が MOVFF命令のソースまたは格納先ではない場合 )。

b) フラグビット RABIF をクリアします。

不一致状態が存在する限り、フラグビットRABIFはセットされたままになります。PORTB に対する読み出しまたは書き込みによって、この条件を解消すれば、RABIFビットをクリアできるようになります。前回の読み出し値を保持するラッチは、MCLR とブラウンアウトのいずれのリセットからも影響を受けません。これらのリセットのいずれが発生しても、不一致状態が存在する限り、RABIF フラグはセットされたままになります。

状態変化割り込みは、キー押下操作によるウェイクアップ等、PORTB を状態変化割り込み機能のみに使用する場合に推奨します。状態変化割り込み機能の使用中に PORTB のポーリングはお勧めできません。

PORTB の各ピンには、個別に制御された弱い内部プルアップが接続されています。WPUB レジスタの各ビットをセットする事で、対応するピンのプルアップが有効になります。INTCON2 レジスタの RABPU ビットをクリアすると、対応する WPUB ビットがセットされている全てのピンでプルアップが有効になります。RABPUビットをセットすると、弱プルアップが全て無効になります。ポートピンを出力として設定すると、弱プルアップは自動的に OFF になります。パワーオンリセットによってもプルアップは無効になります。

CLRF PORTB ; Initialize PORTB by; clearing output; data latches

CLRF LATB ; Alternate method; to clear output; data latches

MOVLW 0F0h ; Value used to; initialize data ; direction

MOVWF TRISB ; Set RB<7:4> as outputs

Note: 読み出し動作の実行中 (Q2 サイクルの開始時 ) に I/O ピンが変化する可能性がある場合、割り込みフラグビットRABIFがセットされない恐れがあります。また、ポートに対する読み書きは、そのポートの全てのビットに影響を与えるため、状態変化割り込みモードで複数のピンを使用する場合には注意が必要です。あるピンの変化を処理している間に別のピンの変化を見逃す可能性があります。

Note: パワーオン リセット時にRB<5:4>は既定ではアナログ入力として設定され、「0」として読み出されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 89

Page 90: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 9-6: PORTB: PORTB レジスタ

R/W-x R/W-x R/W-x R/W-x U-0 U-0 U-0 U-0

RB7 RB6 RB5 RB4 — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-4 RB<7:4>: PORTB I/O ピンビット1 = ポートピンが > VIH

0 = ポートピンが < VIL

bit 3-0 未実装ビット : 「0」として読み出し

レジスタ 9-7: TRISB: PORTB 3 ステート レジスタ

R/W-1 R/W-1 R/W-1 R/W-1 U-0 U-0 U-0 U-0

TRISB7 TRISB6 TRISB5 TRISB4 — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-4 TRISB<7:4>: PORTB 3 ステート制御ビット1 = PORTB のピンを入力として設定 (3 ステート入力 )0 = PORTB のピンを出力として設定

bit 3-0 未実装ビット : 「0」として読み出し

DS41350D_JP - p. 90 Preliminary 2010 Microchip Technology Inc.

Page 91: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 9-8: WPUB: PORTB 弱プルアップ レジスタ

R/W-1 R/W-1 R/W-1 R/W-1 U-0 U-0 U-0 U-0

WPUB7 WPUB6 WPUB5 WPUB4 — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-4 WPUB<7:4>: 弱プルアップ イネーブルビット1 = プルアップを有効に設定0 = プルアップを無効に設定

bit 3-0 未実装ビット : 「0」として読み出し

レジスタ 9-9: IOCB: PORTB 状態変化割り込みレジスタ

R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0

IOCB7 IOCB6 IOCB5 IOCB4 — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-4 IOCB<7:4>: 状態変化割り込みビット1 = 状態変化割り込みを許可0 = 状態変化割り込みを禁止

bit 3-0 未実装ビット : 「0」として読み出し

レジスタ 9-10: LATB: PORTB データラッチ レジスタ

R/W-x R/W-x R/W-x R/W-x U-0 U-0 U-0 U-0

LATB7 LATB6 LATB5 LATB4 — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-4 LATB<7:4>: RB<7:4> ポート I/O 出力ラッチ レジスタ ビット

bit 3-0 未実装ビット : 「0」として読み出し

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 91

Page 92: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 9-3: PORTB I/O の要約

ピン 機能TRIS設定

I/OI/O

タイプ説明

RB4/IOCB4/AN10/SDI/SDA

RB4 0 O DIG LATB<4> データ出力です。アナログ入力の影響は受けません。

1 I TTL PORTB<4> データ入力です。プログラム可能な弱プルアップがあり

ます。

IOCB4 1 I TTL ピン状態変化割り込み

AN10 1 I ANA ADC 入力チャンネル 10

SDI 1 I ST SPI データ入力 (MSSP モジュール )

SDA 1 I DIG I2C™ データ出力 (MSSP モジュール ) です。ポートデータよりも優先

されます。

1 O I2C I2C™ データ入力 (MSSP モジュール ) です。入力タイプはモジュール

の設定によって決まります。

RB5/IOCB5/AN11/RX/DT

RB5 0 O DIG LATB<5> データ出力です。

1 I TTL PORTB<5> データ入力です。プログラム可能な弱プルアップがあり

ます。

IOCB5 1 I TTL ピン状態変化割り込み

AN11 1 I ANA ADC 入力チャンネル 11

RX 1 I ST 非同期シリアル受信データ入力 (USART モジュール ) です。

DT 1 O DIG 同期シリアルデータ出力 (USART モジュール )。ポートデータよりも

優先されます。

1 I ST 同期シリアルデータ入力 (USART モジュール ) です。ユーザが入力と

して設定する必要があります。

RB6/IOCB6/SCK/SCL

RB6 0 O DIG LATB<6> データ出力です。

1 I TTL PORTB<6> データ入力です。プログラム可能な弱プルアップがあり

ます。

IOCB6 1 I TTL ピン状態変化割り込み

SCK 0 O DIG SPI クロック出力 (MSSP モジュール ) です。ポートデータよりも優

先されます。

1 I ST SPI クロック入力 (MSSP モジュール )

SCL 0 O DIG I2C™ クロック出力 (MSSP モジュール ) です。ポートデータよりも優

先されます。

1 I I2C I2C™ クロック入力 (MSSP モジュール ) です。入力タイプはモジュー

ルの設定によって決まります。

RB7/IOCB7/TX/CK RB7 0 O DIG LATB<7> データ出力です。

1 I TTL PORTB<7> データ入力です。プログラム可能な弱プルアップがあり

ます。

IOCB7 1 I TTL ピン状態変化割り込み

TX 1 O DIG 非同期シリアル送信データ出力 (USART モジュール ) です。

ポートデータよりも優先されます。ユーザが出力として設定する必要

があります。

CK 1 O DIG 同期シリアルクロック出力 (USART モジュール ) です。ポートデータ

よりも優先されます。

1 I ST 同期シリアルクロック入力 (USART モジュール ) です。

凡例 : DIG = デジタルレベル出力、TTL = TTL 入力バッファ、ST = シュミットトリガ入力バッファ、ANA = アナログレベル入力 / 出力

x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの方向に影響を与えません。)

DS41350D_JP - p. 92 Preliminary 2010 Microchip Technology Inc.

Page 93: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 9-4: PORTB に関連するレジスタの要約

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

PORTB RB7 RB6 RB5 RB4 — — — — 290

LATB LATB7 LATB6 LATB5 LATB4 — — — — 290

TRISB TRISB7 TRISB6 TRISB5 TRISB4 — — — — 290

WPUB WPUB7 WPUB6 WPUB5 WPUB4 — — — — 290

IOCB IOCB7 IOCB6 IOCB5 IOCB4 290

SLRCON — — — — — SLRC SLRB SLRA 290

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

INTCON2 RABPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RABIP 287

ANSELH — — — — ANS11 ANS10 ANS9 ANS8 290

TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 289

RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 289

SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 288

凡例 : — = 未実装ビット、「0」として読み出し。網掛けの部分は PORTB では使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 93

Page 94: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

9.3 PORTC、TRISC、LATC レジスタ

PORTC は 8 ビット幅の双方向ポートです。PORTC に対応するデータ方向レジスタは TRISC です。TRISCビットをセットすると (= 1)、対応する PORTC のピンが入力になります ( すなわち、出力ドライバが無効になります )。TRISC ビットをクリアすると (= 0)、対応する PORTC のピンが出力になります ( すなわち、出力ドライバが有効になり、出力ラッチの内容が選択したピンに出力されます )。

PORTCデータラッチ (LATC)レジスタはメモリにも対応付けられています。LATC レジスタに対する Read-Modify-Write 動作は、PORTC にラッチされた出力値を読み出した上で、書き戻します。

PORTCでは、全てのピンにシュミットトリガ入力バッファが実装されています。各ピンは、個別に入力または出力として設定できます。

例 9-3: PORTC の初期化

Note: パワーオン リセット時、RC<7:6> およびRC<3:0> はアナログ入力として設定され、「0」が読み出されます。

CLRF PORTC ; Initialize PORTC by; clearing output; data latches

CLRF LATC ; Alternate method; to clear output; data latches

MOVLW 0CFh ; Value used to ; initialize data ; direction

MOVWF TRISC ; Set RC<3:0> as inputs; RC<5:4> as outputs; RC<7:6> as inputs

レジスタ 9-11: PORTC: PORTC レジスタ

R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x

RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-0 RC<7:0>: PORTC I/O ピンビット1 = ポートピンが > VIH

0 = ポートピンが < VIL

レジスタ 9-12: TRISC: PORTC 3 ステート レジスタ

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-0 TRISC<7:0>: PORTC 3 ステート制御ビット1 = PORTC を入力として設定 (3 ステート入力 )0 = PORTC を出力として設定

DS41350D_JP - p. 94 Preliminary 2010 Microchip Technology Inc.

Page 95: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 9-13: LATC: PORTC データラッチ レジスタ

R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x

LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-0 LATC<7:0>: RB<7:0> ポート I/O 出力ラッチ レジスタ ビット

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 95

Page 96: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 9-5: PORTC I/O の要約

ピン 機能TRIS設定

I/OI/O

タイプ説明

RC0/AN4/C12IN+/VREF+/INT0

RC0 0 O DIG LATC<0> データ出力

1 I ST PORTC<0> データ入力

AN4 1 I ANA A/D 入力チャンネル 4

C12IN+ 1 I ANA コンパレータ C1 および C2 の非反転入力です。アナログ選択レジスタ

は ADC と共用です。

VREF+ 1 I ANA ADC およびコンパレータの電圧リファレンス High 入力

INT0 1 I ST 外部割り込み 0 入力

RC1/AN5/C12IN1-/VREF-/INT1

RC1 0 O DIG LATC<1> データ出力

1 I ST PORTC<1> データ入力

AN5 1 I ANA A/D 入力チャンネル 5

C12IN1- 1 I ANA コンパレータ C1 および C2 の反転入力です。アナログ選択レジスタは

ADC と共用です。

VREF- 1 I ANA ADC およびコンパレータの電圧リファレンス Low 入力

INT1 1 I ST 外部割り込み 1 入力

RC2/AN6/C12IN2-/CVREF/P1D/INT2

RC2 0 O DIG LATC<2> データ出力

1 I ST PORTC<2> データ入力

AN6 1 I ANA A/D 入力チャンネル 6

C12IN2- 1 I ANA コンパレータ C1 および C2 の反転入力、チャンネル 2 です。アナログ

選択レジスタは ADC と共用です。

CVREF x O ANA 電圧リファレンス出力です。この機能を有効にすると、デジタル I/O は

無効になります。

P1D 0 O DIG ECCP1 拡張 PWM 出力、チャンネル D です。拡張 PWM シャットダ

ウン時に 3 ステートに設定する事も可能です。ポートデータよりも優

先されます。

INT2 1 I ST 外部割り込み 2 入力

RC3/AN7/C12IN3-/P1C/PGM

RC3 0 O DIG LATC<3> データ出力

1 I ST PORTC<3> データ入力

AN7 1 I ANA A/D 入力チャンネル 7

C12IN3- 1 I ANA コンパレータ C1 および C2 の反転入力、チャンネル 3 です。アナログ

選択レジスタは ADC と共用です。

P1C 0 O DIG ECCP1 拡張 PWM 出力、チャンネル C です。拡張 PWM シャットダ

ウン時に 3 ステートに設定する事も可能です。ポートデータよりも優

先されます。

PGM x I ST 単一電源プログラミング モード エントリ (ICSP™) です。コンフィグ

レーション ビット LVP によって有効に設定されます。

その他のピン機能は全て無効になります。

RC4/C12OUT/P1B

RC4 0 O DIG LATC<4> データ出力

1 I ST PORTC<4> データ入力

C12OUT 0 O DIG コンパレータ1および2の出力です。ポートデータよりも優先されます。

P1B 0 O DIG ECCP1 拡張 PWM 出力、チャンネル B です。拡張 PWM シャットダ

ウン時に 3 ステートに設定する事も可能です。ポートデータよりも優

先されます。

凡例 : DIG = デジタルレベル出力、TTL = TTL 入力バッファ、ST = シュミットトリガ入力バッファ、ANA = アナログレベル入力 / 出力

I2C/SMB = I2C/SMBus 入力バッファ、x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの方向に影

響を与えません。)

DS41350D_JP - p. 96 Preliminary 2010 Microchip Technology Inc.

Page 97: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 9-6: PORTC に関連するレジスタの要約

RC5/CCP1/P1A/T0CKI

RC5 0 O DIG LATC<5> データ出力

1 I ST PORTC<5> データ入力

CCP1 0 O DIG ECCP1 のコンペアまたは PWM 出力です。ポートデータよりも優先

されます。

1 I ST ECCP1 キャプチャ入力

P1A 0 0 DIG ECCP1 拡張 PWM 出力、チャンネル A です。拡張 PWM シャットダウ

ン時に 3 ステートに設定する事も可能です。ポートデータよりも優先

されます。

T0CKI 1 I ST Timer0 カウンタ入力

RC6/AN8/SS/T13CKI/T1OSCI

RC6 0 O DIG LATC<6> データ出力

1 I ST PORTC<6> データ入力

AN8 1 I ANA A/D 入力チャンネル 8

SS 1 I TTL SSP のスレーブ選択入力 (MSSP モジュール )

T13CKI 1 I ST Timer1 および Timer3 カウンタ入力

T1OSCI x O ANA Timer1 オシレータ入力です。Timer1 オシレータが有効な場合に、有効

になります。

デジタル I/O は無効になります。

RC7/AN9/SDO/T1OSCO

RC7 0 O DIG LATC<7> データ出力

1 I ST PORTC<7> データ入力

AN9 1 I ANA A/D 入力チャンネル 9

SDO 0 I DIG SPI データ出力 (MSSP モジュール ) です。ポートデータよりも優先さ

れます。

T1OSCO x O ANA Timer1 オシレータ出力です。Timer1 オシレータが有効な場合に、有効

になります。

デジタル I/O は無効になります。

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット

値の掲載

ページ

PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 290

LATC LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0 290

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 — — — 290

ANSELH — — — — ANS11 ANS10 ANS9 ANS8 290

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 288

T3CON RD16 — T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 289

SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 288

CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 289

ECCP1AS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 289

PSTRCON — — — STRSYNC STRD STRC STRB STRA 289

SLRCON — — — — — SLRC SLRB SLRA 290

REFCON1 D1EN D1LPS DAC1OE --- D1PSS1 D1PSS0 --- D1NSS 289

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

INTCON2 RABPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RABIP 287

INTCON3 INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF 287

表 9-5: PORTC I/O の要約 ( 続き )

ピン 機能TRIS設定

I/OI/O

タイプ説明

凡例 : DIG = デジタルレベル出力、TTL = TTL 入力バッファ、ST = シュミットトリガ入力バッファ、ANA = アナログレベル入力 / 出力

I2C/SMB = I2C/SMBus 入力バッファ、x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの方向に影

響を与えません。)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 97

Page 98: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

9.4 ポートのアナログ制御

ポートピンの中には、A/D コンバータやコンパレータ等のアナログ機能と多重化されているものがあります。これらの I/O ピンをアナログ入力として使用する場合、デジタル入力バッファを無効にして、デジタル入力への不適切なバイアスによって過大電流が流れないようにする必要があります。アナログ機能共用ピンに接続されたデジタル入力バッファを個別に制御するために、ANSEL および ANSELH レジスタがあります。

ANSx ビットを High にセットすると、対応するデジタル入力バッファが無効になり、そのピンを読み出すと常に「0」が返されるようになります。そして、その状態のままアナログピンとしても適切に機能します。

また、ANSx ビットの状態は、デジタル出力機能に対しては何の影響も与えません。対応する TRISx ビットをクリアし、ANSx ビットをセットしたピンは、デジタル出力として通常通り機能しますが、入力モードはアナログになります。

レジスタ 9-14: ANSEL: アナログ選択レジスタ 1

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 U-0 U-0 U-0

ANS7 ANS6 ANS5 ANS4 ANS3 — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 ANS7: RC3 アナログ選択制御ビット

1 = RC3 のデジタル入力バッファを無効に設定0 = RC3 のデジタル入力バッファを有効に設定

bit 6 ANS6: RC2 アナログ選択制御ビット

1 = RC2 のデジタル入力バッファを無効に設定0 = RC2 のデジタル入力バッファを有効に設定

bit 5 ANS5: RC1 アナログ選択制御ビット

1 = RC1 のデジタル入力バッファを無効に設定0 = RC1 のデジタル入力バッファを有効に設定

bit 4 ANS4: RC0 アナログ選択制御ビット

1 = RC0 のデジタル入力バッファを無効に設定0 = RC0 のデジタル入力バッファを有効に設定

bit 3 ANS3: RA4 アナログ選択制御ビット

1 = RA4 のデジタル入力バッファを無効に設定0 = RA4 のデジタル入力バッファを有効に設定

bit 2-0 未実装ビット : 「0」として読み出し

DS41350D_JP - p. 98 Preliminary 2010 Microchip Technology Inc.

Page 99: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 9-15: ANSELH: アナログ選択レジスタ 2

U-0 U-0 U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1

— — — — ANS11 ANS10 ANS9 ANS8

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-4 未実装ビット : 「0」として読み出し

bit 3 ANS11: RB5 アナログ選択制御ビット

1 = RB5 のデジタル入力バッファを無効に設定0 = RB5 のデジタル入力バッファを有効に設定

bit 2 ANS10: RB4 アナログ選択制御ビット

1 = RB4 のデジタル入力バッファを無効に設定0 = RB4 のデジタル入力バッファを有効に設定

bit 1 ANS9: RC7 アナログ選択制御ビット

1 = RC7 のデジタル入力バッファを無効に設定0 = RC7 のデジタル入力バッファを有効に設定

bit 0 ANS8: RC6 アナログ選択制御ビット

1 = RC6 のデジタル入力バッファを無効に設定0 = RC6 のデジタル入力バッファを有効に設定

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 99

Page 100: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

9.5 ポートのスルーレート制御

各ポートの出力スルーレートをプログラムできます。標準的な遷移、あるいは EMI を 小限に抑えるために標準の 0.1 倍に低速化した遷移のいずれかを選択できます。既定のスルーレートは、全てのポートで低速に設定されます。

レジスタ 9-16: SLRCON: スルーレート制御レジスタ

U-0 U-0 U-0 U-0 U-0 R/W-1 R/W-1 R/W-1

— — — — — SLRC SLRB SLRA

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-3 未実装ビット : 「0」として読み出し

bit 2 SLRC: PORTC スルーレート制御ビット

1 = PORTC の全出力のスルーレートを標準レートの 0.1 倍に設定0 = PORTC の全出力のスルーレートを標準に設定

bit 1 SLRB: PORTB スルーレート制御ビット

1 = PORTB の全出力のスルーレートを標準レートの 0.1 倍に設定0 = PORTB の全出力のスルーレートを標準に設定

bit 0 SLRA: PORTA スルーレート制御ビット

1 = PORTA の全出力のスルーレートを標準レートの 0.1 倍に設定 (1)

0 = PORTA の全出力のスルーレートを標準に設定

Note 1: RA4 のピンを CLKOUT として使用する場合、その既定のスルーレートは標準になります。

DS41350D_JP - p. 100 Preliminary 2010 Microchip Technology Inc.

Page 101: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

10.0 TIMER0 モジュール

Timer0 モジュールには以下の機能があります。

• 8/16 ビットモードのタイマまたはカウンタ動作をソフトウェアによって選択可能

• 読み書き可能なレジスタ

• 専用の 8 ビット ソフトウェア プログラマブル プリスケーラ

• 選択可能なクロック源 ( 内部または外部 )

• 外部クロックのエッジ選択

• オーバーフロー割り込み

T0CON レジスタ ( レジスタ 10-1) は、プリスケール値の選択を含むモジュールのあらゆる機能を制御します。このレジスタは読み書きの両方が可能です。

図 10-1 に、Timer0 モジュールの 8 ビットモードの概略ブロック図を示します。図 10-2 に、16 ビットモードの概略ブロック図を示します。

レジスタ 10-1: T0CON: TIMER0 制御レジスタ

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

TMR0ON T08BIT T0CS T0SE PSA T0PS2 T0PS1 T0PS0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 TMR0ON: Timer0 ON/OFF 制御ビット

1 = Timer0 を ON にする0 = Timer0 を OFF にする

bit 6 T08BIT: Timer0 8 ビット /16 ビット制御ビット

1 = Timer0 を 8 ビットのタイマ / カウンタとして設定する0 = Timer0 を 16 ビットのタイマ / カウンタとして設定する

bit 5 T0CS: Timer0 クロック源選択ビット

1 = T0CKI ピンの遷移0 = 内部命令サイクルクロック (CLKOUT)

bit 4 T0SE: Timer0 ソースエッジ選択ビット

1 = T0CKI ピンの High から Low への遷移時にインクリメントする0 = T0CKI ピンの Low から High への遷移時にインクリメントする

bit 3 PSA: Timer0 プリスケーラ割り当てビット

1 = Timer0 プリスケーラを割り当てない。Timer0 クロック入力はプリスケーラをバイパスする0 = Timer0 プリスケーラを割り当てる。Timer0 クロック入力はプリスケーラを経由して供給される

bit 2-0 T0PS<2:0>: Timer0 プリスケーラ選択ビット

111 = 1:256 のプリスケール値を選択する110 = 1:128 のプリスケール値を選択する101 = 1:64 のプリスケール値を選択する100 = 1:32 のプリスケール値を選択する011 = 1:16 のプリスケール値を選択する010 = 1:8 のプリスケール値を選択する001 = 1:4 のプリスケール値を選択する000 = 1:2 のプリスケール値を選択する

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 101

Page 102: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

10.1 Timer0 の動作

Timer0 はタイマまたはカウンタのいずれかのモードによる動作が可能です。モードは T0CON レジスタのT0CSビットによって選択します。タイマモード(T0CS= 0) の既定値設定では、異なるプリスケール値を選択していない限り、モジュールがクロックごとにインクリメントします (10.3「プリスケーラ」参照 )。ただし、TMR0 レジスタへの書き込み後の 2 命令サイクルの間は、Timer0 のインクリメントが禁止されます。この制約に対処するには、TMR0 レジスタに書き込む値をあらかじめ調整して、インクリメントされない回数を補います。

カウンタモードは T0CS ビットをセット (= 1) する事で選択します。このモードでは、T0CKI ピンの立ち上がりまたは立ち下がりエッジで Timer0 をインクリメントします。インクリメントするエッジは T0CON レジスタのTimer0ソースエッジ選択ビットT0SEによって決まります。このビットをクリアすると立ち上がりエッジが選択されます。次に、外部クロック入力を使用する場合の制約について説明します。

Timer0 の駆動には外部クロック源を使用できます。ただし、外部クロックが内部の位相クロック (TOSC) と確実に同期できるように、いくつかの要件(表 27-6参照)を満たす必要があります。同期確立からタイマ / カウンタのインクリメント開始までには遅延があります。

10.2 16 ビットモードにおける Timer0 の読み書き

16 ビットモード動作時の TMR0H は Timer0 の実際の上位バイトではなく、バッファを介した値です。実際の Timer0 上位バイトは、直接読み書きできません( 図 10-2 参照 )。TMR0H は TMR0L の読み出し時にTimer0 の上位バイトの内容によって更新されます。この動作により、上位バイトと下位バイトの読み出しが有効であったかどうか検証する事なく、Timer0の全16ビットを一括して読み出す事ができます。上位バイトと下位バイトを別々に連続して読み出す場合、2 つの読み出しの間でロールオーバーが発生して無効な値が得られる恐れがあります。

読み出しと同様に Timer0 の上位バイトへの書き込みも、TMR0H のバッファレジスタを介して実行する必要があります。TMR0H に書き込んでも Timer0 には直接影響を与えません。Timer0 の上位バイトは、TMR0L への書き込みが実行された時点で TMR0H の内容によって更新されます。これによって、Timer0 の全 16 ビットを同時に更新できます。

図 10-1: TIMER0 のブロック図 (8 ビットモード )

T0CKI pin

T0SE

0

1

0

1

T0CS

FOSC/4

ProgrammablePrescaler

Sync withInternalClocks

TMR0L

(2 TCY Delay)

Internal Data BusPSA

T0PS<2:0>

Set TMR0IFon Overflow

3 8

8

Note: リセット時に Timer0 は、クロックを T0CKI から入力し、 大のプリスケール値を適用した 8 ビットモードに設定されます。

DS41350D_JP - p. 102 Preliminary 2010 Microchip Technology Inc.

Page 103: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 10-2: TIMER0 のブロック図 (16 ビットモード )

10.3 プリスケーラ

Timer0 モジュールのプリスケーラとして 8 ビットのカウンタを使用できます。プリスケーラを直接読み書きする事はできません。値はT0CONレジスタのPSAビットと T0PS<2:0> ビットによって設定します。これらの値は、プリスケーラの割り当てと比率を決定します。

PSA ビットをクリアすると、Timer0 モジュールにプリスケーラが割り当てられます。その場合、1:2 ~ 1:256の範囲の2のべき乗でプリスケール値を選択できます。

Timer0 モジュールにプリスケーラを割り当てた場合、TMR0 レジスタに書き込む命令 ( 例 : CLRF TMR0、MOVWF TMR0、BSF TMR0等 ) は、いずれもプリスケーラのカウントをクリアします。

10.3.1 プリスケーラ割り当ての切り換え

プリスケーラの割り当てはソフトウェアによって完全に制御でき、プログラム実行時に変更が可能です。

10.4 Timer0 割り込み

TMR0 レジスタが、FFh から 00h (8 ビットモード ) または FFFFh から 0000h (16 ビットモード ) にオーバーフローすると TMR0 割り込みが発生します。このオーバーフローはフラグビット TMR0IF をセットします。INTCON レジスタの TMR0IE ビットをクリアすると、この割り込みをマスクできます。この割り込みを再度有効にする前に、ソフトウェアの割り込みサービスルーチン内で TMR0IF ビットをクリアしておく必要があります。

Timer0 はスリープモードでシャットダウンされるため、TMR0 の割り込みによってプロセッサをスリープからウェイクアップさせる事はできません。

表 10-1: TIMER0 に関連するレジスタ

T0CKI pin

T0SE

0

1

0

1

T0CS

FOSC/4

ProgrammablePrescaler

Sync withInternalClocks

TMR0L

(2 TCY Delay)

Internal Data Bus

8

PSA

T0PS<2:0>

Set TMR0IFon Overflow

3

TMR0

TMR0H

High Byte

88

8

Read TMR0L

Write TMR0L

8

Note: リセット時に Timer0 は、クロックを T0CKI から入力し、 大のプリスケール値を適用した 8 ビットモードに設定されます。

Note: Timer0 にプリスケーラを適用した場合、TMR0 への書き込みによってプリスケーラのカウントはクリアされますが、プリスケーラの割り当て自体は変わりません。

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

TMR0L Timer0 レジスタ、下位バイト 288

TMR0H Timer0 レジスタ、上位バイト 288

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

T0CON TMR0ON T08BIT T0CS T0SE PSA T0PS2 T0PS1 T0PS0 288

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

凡例 : 網掛けの部分は Timer0 では使用しません。

Note 1: プライマリ オシレータの各種モードに応じて、PORTA<7:6> とこれらの方向ビットは、ポートピンとして個別に設定されます。無効時、これらのビットからは「0」が読み出されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 103

Page 104: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 104 Preliminary 2010 Microchip Technology Inc.

Page 105: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

11.0 TIMER1 モジュール

Timer1タイマ /カウンタ モジュールには以下の機能があります。

• 16 ビットのタイマまたはカウンタ動作をソフトウェアによって選択可能

• 読み書き可能な 8 ビットのレジスタ (TMR1H とTMR1L)

• 内部または外部のクロック源と Timer1 オシレータのオプションを選択可能

• オーバーフロー割り込み

• CCP 特殊イベントトリガによるリセット

• デバイスクロックのステータスフラグ (T1RUN)

図 11-1 に、Timer1 モジュールの概略ブロック図を示します。図 11-2 に、モジュールの読み書きモードの動作を説明する概略ブロック図を示します。

このモジュールは低消費電力オシレータを備えており、クロック駆動の選択肢を追加します。Timer1 オシレータは、電源管理動作時にマイクロコントローラにクロックを供給する、低電力のクロック源としても使用できます。

また、Timer1を使うと外付け部品とコード オーバーヘッドをほとんど増やす事なく、アプリケーションにリアルタイム クロック (RTC) 機能を持たせる事ができます。

Timer1はT1CON制御レジスタ(レジスタ 11-1)によって制御します。このレジスタは、Timer1 オシレータ イネーブルビット (T1OSCEN)も格納します。Timer1は、T1CON レジスタの制御ビット TMR1ON をセット / クリアする事で有効 / 無効に設定します。

レジスタ 11-1: T1CON: TIMER1 制御レジスタ

R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 RD16: 16 ビット読み書きモード イネーブルビット

1 = 1 回の 16 ビット動作による Timer1 のレジスタ読み書きを有効に設定する0 = 2 回の 8 ビット動作による Timer1 のレジスタ読み書きを有効に設定する

bit 6 T1RUN: Timer1 システムクロック ステータス ビット

1 = メイン システムクロックを Timer1 オシレータから供給する0 = メイン システムクロックを他のソースから供給する

bit 5-4 T1CKPS<1:0>: Timer1 入力クロック プリスケール値選択ビット

11 = 1:8 のプリスケール値を選択する 10 = 1:4 のプリスケール値を選択する 01 = 1:2 のプリスケール値を選択する 00 = 1:1 のプリスケール値を選択する

bit 3 T1OSCEN: Timer1 オシレータ イネーブルビット

1 = Timer1 オシレータを有効にする 0 = Timer1 オシレータを無効にする オシレータのインバータとフィードバック抵抗を遮断して消費電力を低減する

bit 2 T1SYNC: Timer1 外部クロック入力同期選択ビット

TMR1CS = 1の場合 : 1 = 外部クロック入力を同期させない 0 = 外部クロック入力を同期させる

TMR1CS = 0の場合 : このビットは無視される。TMR1CS = 0の場合、Timer1 は内部クロックを使用する

bit 1 TMR1CS: Timer1 クロック源選択ビット

1 = T13CKI ピンに入力される外部クロック ( 立ち上がりエッジ ) 0 = 内部クロック (FOSC/4)

bit 0 TMR1ON: Timer1 ON/OFF 制御ビット

1 = Timer1 を ON にする 0 = Timer1 を OFF にする

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 105

Page 106: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

11.1 Timer1 の動作

Timer1 は以下のいずれかのモードで動作します。

• タイマ

• 同期カウンタ

• 非同期カウンタ

動作モードは T1CON レジスタのクロック選択ビットTMR1CS によって決まります。TMR1CS をクリア (= 0)すると、Timer1 は内部命令サイクル (FOSC/4) ごとにイ

ンクリメントします。TMR1CS をセットすると、Timer1は外部クロック入力またはオシレータのいずれかの立ち上がりエッジごとにインクリメントします。

Timer1 オシレータが有効の時、T1OSI と T1OSO ピンに関連したデジタル回路は無効です。これはTRISC<1:0> の値が無視され、ピンが「0」として読み出される事を意味します。

図 11-1: TIMER1 のブロック図

図 11-2: TIMER1 のブロック図 (16 ビット読み書きモード )

T1SYNC

TMR1CS

T1CKPS<1:0>

Sleep InputT1OSCEN(1)

FOSC/4InternalClock

On/Off

Prescaler1, 2, 4, 8

Synchronize

Detect

1

0

2

T1OSI/T13CKI

T1OSO

1

0

TMR1ON

TMR1LSet

TMR1IFon Overflow

TMR1 High ByteClear TMR1

(CCP Special Event Trigger)

Timer1 Oscillator

On/OffTimer1

Timer1 Clock Input

Note 1: Timer1 オシレータのイネーブルビット T1OSCEN をクリアすると、インバータとフィードバック抵抗が OFF となり

消費電力が低減します。

T1SYNC

TMR1CS

T1CKPS<1:0>

Sleep InputT1OSCEN(1)

FOSC/4InternalClock

Prescaler1, 2, 4, 8

Synchronize

Detect

1

0

2

T1OSI/T13CKI

T1OSO

1

0

TMR1L

Internal Data Bus

8

Set TMR1IF

on Overflow

TMR1

TMR1H

High Byte

88

8

Read TMR1L

Write TMR1L

8

TMR1ON

Clear TMR1(CCP Special Event Trigger)

Timer1 Oscillator

On/OffTimer1

Timer1 Clock Input

Note 1: Timer1 オシレータのイネーブルビット T1OSCEN をクリアすると、インバータとフィードバック抵抗が OFF となり

消費電力が低減します。

DS41350D_JP - p. 106 Preliminary 2010 Microchip Technology Inc.

Page 107: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

11.2 Timer1 の 16 ビット読み書きモード

Timer1は、16ビットの読み書きが可能な設定 (図 11-2参照 ) にする事ができます。T1CON レジスタの制御ビット RD16 をセットすると、TMR1H のアドレスがTimer1 上位バイトのバッファレジスタにマッピングされます。TMR1L を読み出す事で、Timer1 の上位バイトの内容が Timer1 上位バイトバッファに格納されます。この動作により、Timer1 の全 16 ビットを正確に読み出すことができます。下位バイトの前に読み出された上位バイトが、2 回の読み出しの間のロールオーバーまたはキャリーによって無効になっていないかを検証する必要がありません。

TMR1Hへの書き込みはTimer1には直接の影響を与えません。Timer1 の上位バイトは、TMR1L への書き込みを実行した時点で TMR1H の内容によって更新されます。これによって、Timer1 の全 16 ビットを同時に更新できます。

このモードでは Timer1 の上位バイトを直接読み書きできません。読み書きは全て Timer1 上位バイト バッファレジスタを介して実行する必要があります。TMR1H に書き込んでも、Timer1 のプリスケーラはクリアされません。Timer1 のプリスケーラがクリアされるのは、TMR1L に書き込んだ場合だけです。

11.3 Timer1 オシレータ

T1OSI ( 入力 ) と T1OSO ( アンプ出力 ) ピンの間には、内蔵の水晶振動子オシレータ回路が接続されています。このオシレータは、T1CON レジスタの Timer1 オシレータ イネーブルビットT1OSCENをセットすると有効になります。定格 32 kHz の水晶振動子によって低消費電力で動作します。電源管理モードのいずれに移行しても、このオシレータは動作を続けます。図 11-3に代表的な LP オシレータの回路を示します。表 11-1に、Timer1 オシレータ用コンデンサを選定する際の指針を示します。

ユーザは、Timer1オシレータが確実に起動するように、ソフトウェアによる遅延を確保する必要があります。

図 11-3: TIMER1 の LP オシレータに必要な外付け部品

表 11-1: TIMER1 オシレータ用コンデンサの選定

11.3.1 クロック源としての TIMER1 の使用

Timer1 オシレータは、電源管理モードのクロック源としても使用できます。OSCCON レジスタのクロック選択ビット SCS<1:0> を「01」に設定すると、デバイスは SEC_RUN モードに移行します。このモードでは、CPU と周辺機能のクロックを Timer1 オシレータから供給します。OSCCON レジスタの IDLEN ビットをクリアして SLEEP 命令を実行すると、デバイスはSEC_IDLE モードに移行します。詳細は、19.0「電力管理モード」を参照してください。

Timer1 オシレータをクロック源として使用する場合は常に、T1CON レジスタの Timer1 システムクロックステータス フラグ T1RUN がセットされます。従って、このフラグによってコントローラの現在のクロック供給モードを判断できます。このビットからは、フェイルセーフ クロックモニタが現在使用しているクロック源もわかります。クロックモニタが有効で、クロック供給中の Timer1 オシレータに障害が発生した場合、T1RUN ビットをポーリングすれば、クロックの供給源が Timer1 オシレータか他のクロック源かを判断できます。

Note: コンデンサの選定に関する詳細は、表 11-1 の

Note を参照してください。

C1

C2

XTAL

T1OSI

T1OSO

32.768 kHz

27 pF

27 pF

PIC® MCU

タイプ 周波数 C1 C2

LP 32 kHz 27 pF(1) 27 pF(1)

Note 1: マイクロチップ社は、オシレータ回路の設計に際して上記の値を初期値として推奨します。

2: 静電容量を大きくするとオシレータの安定性は増すものの、起動に要する時間が長くなります。

3: 振動子 / 水晶振動子は製品ごとに固有の特性を持つため、外付け部品の適切な数値は振動子 / 水晶振動子のメーカーに問い合わせてください。

4: ここに示すコンデンサの値は設計上の指針に過ぎません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 107

Page 108: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

11.3.2 TIMER1 オシレータのレイアウト上の考慮事項

Timer1 オシレータ回路は、動作中にごくわずかな電力しか消費しません。低消費電力であるという事は、高速で変化する近傍の信号から影響を受けやすい事を意味します。

このため、図 11-3 に示したオシレータ回路は、マイクロコントローラのできるだけ近くに配置してください。また、オシレータ回路のレイアウト領域を横切る配線は VSS または VDD のみとしてください。

オシレータのそばに高速の回路を配置せざるを得ない場合 (出力コンペアまたはPWMモードのCCP1ピン、OSC2ピンを使用するプライマリ オシレータ)、図 11-4に示すようにオシレータ回路の周りに接地されたガードリングを設けるとよいでしょう。この方法は、片面のみの PCB またはグランド プレーンで使用する場合に適用されます。

図 11-4: 接地されたガードリングで囲まれたオシレータ回路

11.4 Timer1 割り込み

TMR1 レジスタペア (TMR1H:TMR1L) は 0000h からFFFFh までインクリメントした後、0000h にロールオーバーします。Timer1 割り込みを有効にしている場合、オーバーフローが発生した時点で割り込みが発生し、PIR1 レジスタの割り込みフラグビット TMR1IF がラッチされます。この割り込みは、PIE1 レジスタの割り込みイネーブルビットTMR1IEをセットまたはクリアする事で、有効または無効にできます。

11.5 CCP 特殊イベントトリガによるTimer1 のリセット

CCP モジュールのいずれかが Timer1 を使用し、コンペアモードで特殊イベントトリガを生成する設定になっている場合 (CCP1M<3:0> または CCP2M<3:0> =1011)、この信号は Timer1 をリセットします。A/D モジュールを有効にしている場合、CCP2 によるトリガはA/D変換も開始します (14.3.4「特殊イベントトリガ」参照 )。

この機能を使用するには、モジュールをタイマまたは同期カウンタのいずれかに設定する必要があります。この方法で使用する場合、CCPRH:CCPRL レジスタペアは実質 Timer1 の周期レジスタとして機能します。

Timer1 が非同期カウンタモードで動作している場合、特殊イベントトリガによるリセットが動作しない可能性があります。

Timer1 への書き込みと特殊イベントトリガが同時に発生した場合、書き込みが優先されます。

VDD

OSC1

VSS

OSC2

RC0

RC1

RC2

Note: 図の縮尺比は不定です。

Note: CCP2 モジュールによる特殊イベントトリガは、PIR1 レジスタの割り込みフラグビット TMR1IF をセットしません。

DS41350D_JP - p. 108 Preliminary 2010 Microchip Technology Inc.

Page 109: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

11.6 リアルタイム クロックとしてのTimer1 の使用法

Timer1に外部LPオシレータを接続すると(例えば11.3「Timer1 オシレータ」で示した回路 )、アプリケーションに RTC 機能を実装できます。正確なクロック周期を供給する腕時計用の安価な水晶振動子と、時間を計算する数行のアプリケーション コードがあれば実現できます。スリープモードで動作し、電源として電池またはスーパー キャパシタを使用している場合、外付けの RTC デバイスやバッテリ バックアップは一切必要ありません。

例 11-1 に示すアプリケーション コード ルーチンRTCisr は、割り込みサービスルーチンによって 1 秒間隔でカウンタをインクリメントする簡単な方法を示したものです。TMR1 レジスタペアがインクリメントしてオーバーフローすると割り込みが発生し、このルーチンをコールします。ルーチンは秒のカウンタを1 つ進め、これとは別に実装された分と時間のカウンタも、より下位のカウンタのオーバーフローによって順にインクリメントします。

レジスタペアは 16 ビット幅であるため、32.768 kHzのクロック源によってカウンタをオーバーフローさせるには 2 秒必要です。従って、所定の 1 秒間隔で強制的にオーバーフローを発生させるには、あらかじめカウンタにこの値を読み込んでおく必要があります。も簡単な方法は、BSF命令によって TMR1H の MSb を設定する事です。TMR1L レジスタには、あらかじめ値を格納したり変更できないことに注意してください。このような操作を実行すると、サイクル数が増えるとともに誤差が累積する場合があります。

この方法で正確な RTC を実現するには、RTCinitルーチンにも示した通り、Timer1 を非同期モードで動作させ、Timer1 オーバーフロー割り込みを有効に (PIE1<0>= 1) しておく必要があります。また、Timer1 オシレータを有効に設定し、常時動作させておく必要もあります。

例 11-1: TIMER1 割り込みサービスによるリアルタイム クロックの実装RTCinit

MOVLW 80h ; Preload TMR1 register pairMOVWF TMR1H ; for 1 second overflowCLRF TMR1LMOVLW b」00001111」 ; Configure for external clock,MOVWF T1CON ; Asynchronous operation, external oscillatorCLRF secs ; Initialize timekeeping registersCLRF mins ; MOVLW .12MOVWF hoursBSF PIE1, TMR1IE ; Enable Timer1 interruptRETURN

RTCisrBSF TMR1H, 7 ; Preload for 1 sec overflowBCF PIR1, TMR1IF ; Clear interrupt flagINCF secs, F ; Increment secondsMOVLW .59 ; 60 seconds elapsed?CPFSGT secsRETURN ; No, doneCLRF secs ; Clear secondsINCF mins, F ; Increment minutesMOVLW .59 ; 60 minutes elapsed?CPFSGT minsRETURN ; No, doneCLRF mins ; clear minutesINCF hours, F ; Increment hoursMOVLW .23 ; 24 hours elapsed?CPFSGT hoursRETURN ; No, doneCLRF hours ; Reset hoursRETURN ; Done

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 109

Page 110: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 11-2: TIMER1 のタイマ / カウンタ動作に関連するレジスタ

レジスタ名

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

TMR1L Timer1 レジスタ、下位バイト 288

TMR1H Timer1 レジスタ、上位バイト 288

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 288

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

ANSELH — — — — ANS11 ANS10 ANS9 ANS8 290

SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 288

凡例 : — = 未実装ビット、「0」として読み出し。網掛けの部分は Timer1 モジュールでは使用しません。

DS41350D_JP - p. 110 Preliminary 2010 Microchip Technology Inc.

Page 111: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

12.0 TIMER2 モジュール

Timer2 モジュールには以下の機能があります。

• 8 ビットのタイマと周期レジスタ (TMR2 と PR2)

• 読み書き可能なレジスタ ( 上記の 2 つ )

• ソフトウェア プログラマブル プリスケーラ(1:1、1:4、1:16)

• ソフトウェア プログラマブル ポストスケーラ(1:1 ~ 1:16)

• TMR2/PR2 一致割り込み

• MSSP モジュールのシフトクロックとして使用するオプション

モジュールはT2CONレジスタ(レジスタ 12-1)によって制御します。このレジスタによって、タイマの有効 /無効を設定、プリスケーラ / ポストスケーラを設定します。T2CON レジスタの制御ビット TMR2ON をクリアして Timer2 回路を遮断する事で消費電力を低減できます。

図 12-1 にモジュールの概略ブロック図を示します。

12.1 Timer2 の動作

通常動作時、TMR2 は 00h からクロックごと (FOSC/4)にインクリメントされます。クロック入力に接続された 4 ビットのカウンタ / プリスケーラには、直接入力、4 分周、16 分周のオプションがあります。これらは、T2CON レジスタのプリスケーラ制御ビットT2CKPS<1:0> によって選択します。クロックサイクルごとに、TMR2 の値と周期レジスタ PR2 の値が比較されます。両者が一致すると、コンパレータがタイマの出力として一致信号を生成します。この信号は、次のサイクルで TMR2 の値を 00h にリセットし、出力カウンタ / ポストスケーラを駆動します (12.2「Timer2割り込み」参照 )。

TMR2 と PR2 レジスタは、いずれも直接読み書きできます。TMR2レジスタは全てのデバイスリセットによってクリアされますが、PR2 レジスタは FFh に初期化されます。以下の操作を実行すると、プリスケーラとポストスケーラ カウンタが両方ともクリアされます。

• TMR2 レジスタへの書き込み

• T2CON レジスタへの書き込み

• 何らかのデバイスリセット ( パワーオン リセット、MCLR リセット、ウォッチドッグ タイマ リセット、ブラウンアウト リセット )

T2CON レジスタに書き込んでも TMR2 はクリアされません。

レジスタ 12-1: T2CON: TIMER2 制御レジスタ

U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 未実装ビット : 「0」として読み出し

bit 6-3 T2OUTPS<3:0>: Timer2 出力ポストスケール値選択ビット

0000 = 1:1 のポストスケール値を選択する 0001 = 1:2 のポストスケール値を選択する • • • 1111 = 1:16 のポストスケール値を選択する

bit 2 TMR2ON: Timer2 ON/OFF 制御ビット

1 = Timer2 を ON にする 0 = Timer2 を OFF にする

bit 1-0 T2CKPS<1:0>: Timer2 クロック プリスケール値選択ビット

00 = 1:1 のプリスケール値を選択する 01 = 1:4 のプリスケール値を選択する 1x = 1:16 のプリスケール値を選択する

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 111

Page 112: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

12.2 Timer2 割り込み

Timer2 には、デバイス割り込みを生成するオプションもあります。Timer2 の出力信号 (TMR2/PR2 一致 ) は、4 ビットの出力カウンタ / ポストスケーラに入力されます。このカウンタが一致割り込みを生成し、PIR1 レジスタのTMR2一致割り込みフラグTMR2IFにラッチされます。割り込みは、PIE1 レジスタの TMR2 一致割り込みイネーブルビットTMR2IEをセットする事で有効にします。

T2CON レジスタのポストスケーラ制御ビットT2OUTPS<3:0>によって 16通りのポストスケール オプション (1:1 ~ 1:16) を選択できます。

12.3 Timer2 の出力

TMR2 の分周していない出力は、主に CCP モジュールでPWMモード動作のタイム ベースとして使われます。

Timer2 には、SPI モードで動作する MSSP モジュールのシフトクロック源として使用するオプションもあります。詳細は、15.0「マスタ同期シリアルポート(MSSP) モジュール」を参照してください。

図 12-1: TIMER2 のブロック図

表 12-1: TIMER2 のタイマ / カウンタ動作に関連するレジスタ

レジスタ名

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

TMR2 Timer2 レジスタ 288

T2CON — T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 288

PR2 Timer2 周期レジスタ 288

凡例 : — = 未実装ビット、「0」として読み出し。網掛けの部分は Timer2 モジュールでは使用しません。

Comparator

TMR2 Output

TMR2

Postscaler

PrescalerPR2

2

FOSC/4

1:1 to 1:16

1:1, 1:4, 1:16

4T2OUTPS<3:0>

T2CKPS<1:0>

Set TMR2IF

Internal Data Bus8

ResetTMR2/PR2

88

(to PWM or MSSP)

Match

DS41350D_JP - p. 112 Preliminary 2010 Microchip Technology Inc.

Page 113: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

13.0 TIMER3 モジュール

Timer3タイマ /カウンタ モジュールには以下の機能があります。

• 16 ビットのタイマまたはカウンタ動作をソフトウェアによって選択可能

• 読み書き可能な 8 ビットのレジスタ (TMR3H とTMR3L)

• 内部または外部のクロック源と、デバイスクロックまたは Timer1 オシレータの内部オプションを選択可能

• オーバーフロー割り込み

• CCP 特殊イベントトリガによるモジュール リセット

図 13-1 に、Timer3 モジュールの概略ブロック図を示します。図 13-2 に、モジュールの読み書きモードの動作を説明する概略ブロック図を示します。

Timer3モジュールはT3CONレジスタ(レジスタ 13-1)によって制御します。このレジスタは CCP モジュールのクロック源オプションを選択する時にも使用します (14.1.1「CCP モジュールとタイマリソース」参照 )。

レジスタ 13-1: T3CON: TIMER3 制御レジスタ

R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

RD16 — T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 RD16: 16 ビット読み書きモード イネーブルビット

1 = 1 回の 16 ビット動作による Timer3 のレジスタ読み書きを有効に設定する0 = 2 回の 8 ビット動作による Timer3 のレジスタ読み書きを有効に設定する

bit 6 未実装ビット : 「0」として読み出し

bit 5-4 T3CKPS<1:0>: Timer3 入力クロック プリスケール値選択ビット

11 = 1:8 のプリスケール値を選択する10 = 1:4 のプリスケール値を選択する01 = 1:2 のプリスケール値を選択する00 = 1:1 のプリスケール値を選択する

bit 3 T3CCP1: CCP1 の Timer3/Timer1 イネーブルビット

1 = ECCP1 コンペア / キャプチャのクロック源に Timer3 を使用する0 = ECCP1 コンペア / キャプチャのクロック源に Timer1 を使用する

bit 2 T3SYNC: Timer3 外部クロック入力同期制御ビット ( デバイスクロックを Timer1/Timer3 から供給している場合は使用不可 )

TMR3CS = 1の場合 :1 = 外部クロック入力に同期しない0 = 外部クロック入力に同期する

TMR3CS = 0の場合 :このビットは無視される。TMR3CS = 0の場合、Timer3 は内部クロックを使用する。

bit 1 TMR3CS: Timer3 クロック源選択ビット

1 = Timer1 オシレータまたは T13CKI からの外部クロック入力 ( 初の立ち下がりエッジ後の、立ち上がりエッジごと )

0 = 内部クロック (FOSC/4)

bit 0 TMR3ON: Timer3 ON/OFF 制御ビット

1 = Timer3 を ON にする 0 = Timer3 を OFF にする

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 113

Page 114: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

13.1 Timer3 の動作

Timer3 は以下のいずれかのモードで動作します。

• タイマ

• 同期カウンタ

• 非同期カウンタ

動作モードは T3CON レジスタのクロック選択ビットTMR3CS によって決まります。TMR3CS をクリア(= 0) すると、Timer3 は内部命令サイクル (FOSC/4) ごとにインクリメントします。TMR3CS をセットすると、Timer3 は、Timer1 外部クロック入力または Timer1オシレータ ( 有効時 ) のいずれかの立ち上がりエッジごとにインクリメントします。

Timer1 の場合と同様、Timer1 オシレータを有効にすると、RC1/T1OSI と RC0/T1OSO/T13CKI ピンに関連するデジタル回路は無効になります。これはTRISC<1:0> の値が無視され、ピンが「0」として読み出される事を意味します。

図 13-1: TIMER3 のブロック図

T3SYNC

TMR3CS

T3CKPS<1:0>

Sleep InputT1OSCEN(1)

FOSC/4InternalClock

Prescaler1, 2, 4, 8

Synchronize

Detect

1

02

T1OSO/T13CKI

T1OSI

1

0

TMR3ON

TMR3LSet

TMR3IFon Overflow

TMR3 High Byte

Timer1 Oscillator

On/OffTimer3

CCP1 Special Event TriggerCCP1 Select from T3CON<3>

Clear TMR3

Timer1 Clock Input

Note 1: Timer1 オシレータのイネーブルビット T1OSCEN をクリアすると、インバータとフィードバック抵抗が遮断され消費電力が低減します。

DS41350D_JP - p. 114 Preliminary 2010 Microchip Technology Inc.

Page 115: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 13-2: TIMER3 のブロック図 (16 ビット読み書きモード )

13.2 Timer3 (16 ビット読み書きモード )

Timer3は、16ビットの読み書きが可能な設定 (図 13-2参照 ) にする事ができます。T3CON レジスタの制御ビット RD16 をセットすると、TMR3H のアドレスがTimer3 上位バイトのバッファレジスタにマッピングされます。TMR3L を読み出す事で、Timer3 の上位バイトの内容が Timer3 上位バイト バッファレジスタに格納されます。この動作により、Timer3 の全 16 ビットを正確に読み出すことができます。下位バイトの前に読み出された上位バイトが、2 回の読み出しの間のロールオーバーまたはキャリーによって無効になっていないかを検証する必要がありません。

読み出しと同様に、Timer3 の上位バイトへの書き込みも TMR3H のバッファレジスタを介して実行する必要があります。Timer3 の上位バイトは、TMR3L への書き込みを実行した時点で TMR3H の内容によって更新されます。これによって、ユーザは Timer3 の上位バイトと下位バイト両方の 16 ビットを一括して書き込む事ができます。

このモードでは Timer3 の上位バイトを直接読み書きできません。読み書きは全て Timer3 上位バイト バッファレジスタを介して実行する必要があります。

TMR3H に書き込んでも、Timer3 のプリスケーラはクリアされません。Timer3 のプリスケーラがクリアされるのは、TMR3L に書き込んだ場合だけです。

13.3 Timer3 クロック源としての Timer1オシレータの使用法

Timer3 のクロック源として Timer1 内部オシレータを使用できます。Timer1 オシレータは、T1CON レジスタのT1OSCENビットをセットする事で有効にします。Timer3 のクロック源として使用するには、TMR3CSビットもセットする必要があります。前述の通り、この設定によってTimer3はオシレータソースの立ち上がりエッジごとにインクリメントします。

Timer1 オシレータについては、11.0「Timer1 モジュール」で説明しています。

13.4 Timer3 割り込み

TMR3 レジスタペア (TMR3H:TMR3L) は 0000h からFFFFh までインクリメントした後、0000h にオーバーフローします。Timer3 割り込みを有効にしている場合、オーバーフローが発生した時点で割り込みが発生し、PIR2 レジスタの割り込みフラグビット TMR3IF にラッチされます。この割り込みは、PIE2 レジスタのTimer3割り込みイネーブルビットTMR3IEをセットまたはクリアする事で、有効または無効にできます。

T3SYNC

TMR3CS

T3CKPS<1:0>

Sleep InputT1OSCEN(1)

FOSC/4InternalClock

Prescaler1, 2, 4, 8

Synchronize

Detect

1

02

T13CKI/T1OSI

T1OSO

1

0

TMR3L

Internal Data Bus

8

Set TMR3IF

on Overflow

TMR3

TMR3H

High Byte

88

8

Read TMR1L

Write TMR1L

8

TMR3ON

CCP1 Special Event Trigger

Timer1 Oscillator

On/OffTimer3

Timer1 Clock Input

CCP1 Select from T3CON<3>Clear TMR3

Note 1: Timer1 オシレータのイネーブルビット T1OSCEN をクリアすると、インバータとフィードバック抵抗が遮断され消費電力が低減します。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 115

Page 116: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

13.5 CCP 特殊イベントトリガによるTimer3 のリセット

CCP1 モジュールが Timer3 を使用し、コンペアモードで特殊イベントトリガを生成するように設定されている場合 (CCP1M<3:0>)、このトリガによって Timer3 がリセットされます。A/D モジュールを有効にしている場合、A/D 変換も開始します (17.2.8「特殊イベントトリガ」参照 )。

この機能を使用するには、モジュールをタイマまたは同期カウンタのいずれかに設定する必要があります。この方法で使用する場合、CCPR1H:CCPR1L レジスタペアは実質 Timer3 の周期レジスタとして機能します。

Timer3 が非同期カウンタモードで動作している場合、特殊イベントトリガによるリセットが動作しない可能性があります。

Timer3 への書き込みと CCP モジュールからの特殊イベントトリガが同時に発生した場合、書き込みが優先されます。

表 13-1: TIMER3 のタイマ / カウンタ動作に関連するレジスタ

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR2 OSCFIF C1IF C2IF EEIF BCLIF USBIF TMR3IF CCP2IF 290

PIE2 OSCFIE C1IE C2IE EEIE BCLIE USBIE TMR3IE CCP2IE 290

IPR2 OSCFIP C1IP C2IP EEIP BCLIP USBIP TMR3IP CCP2IP 290

TMR3L Timer3 レジスタ、下位バイト 289

TMR3H Timer3 レジスタ、上位バイト 289

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 288

T3CON RD16 — T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 289

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

ANSELH — — — — ANS11 ANS10 ANS9 ANS8 290

凡例 : — = 未実装ビット、「0」として読み出し。網掛けの部分は Timer3 モジュールでは使用しません。

DS41350D_JP - p. 116 Preliminary 2010 Microchip Technology Inc.

Page 117: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.0 拡張キャプチャ / コンペア /PWM (ECCP) モジュール

PIC18F/LF1XK50 は、ECCP ( キャプチャ / コンペア /PWM)モジュールを1つ搭載しています。このモジュールは、16 ビットのキャプチャ レジスタ、16 ビットのコンペアレジスタまたはPWMマスタ/スレーブ デューティ サイクル レジスタとして動作する、16 ビットレジスタを 1 つ収めます。

CCP1 は標準的な CCP モジュールとして実装され、以下の拡張 PWM 機能を備えています。

• 2 つまたは 4 つの出力チャンネル

• 出力ステアリング

• 極性をプログラム可能 • デッドバンド制御をプログラム可能

• 自動シャットダウンと自動再起動

拡張機能については、14.4「PWM ( 拡張モード )」で詳細に説明します。

レジスタ 14-1: CCP1CON: 拡張キャプチャ / コンペア /PWM 制御レジスタ

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-6 P1M<1:0>: 拡張 PWM 出力コンフィグレーション ビット

CCP1M<3:2> = 00、01、10の場合 :xx = P1A にキャプチャ / コンペア入力 / 出力、P1B、P1C、P1D にポートピンを割り当てる。

CCP1M<3:2> = 11の場合 :00 = シングル出力 : P1A、P1B、P1C、P1D がステアリングによって制御される (14.4.7「パルス ステア

リング モード」参照 )。01 = フルブリッジ順方向出力 : P1D に変調信号を出力、P1A をアクティブ、P1B、P1C を非アクティブ

に駆動する。10 = ハーフブリッジ出力 : P1A、P1B にデッドバンド制御された変調信号を出力、P1C、P1D をポート

ピンに割り当てる。11 = フルブリッジ逆方向出力 : P1B に変調信号を出力、P1C をアクティブ、P1A、P1D を非アクティブ

に駆動する。

bit 5-4 DC1B<1:0>: PWM デューティ サイクル bit 1 と bit 0キャプチャモード :未使用

コンペアモード : 未使用

PWM モード : これらのビットは、10 ビットの PWM デューティ サイクル値の 下位 2 ビットである。デューティ サイクルの上位 8 ビットは CCPR1L 内で設定する。

bit 3-0 CCP1M<3:0>: 拡張 CCP モード選択ビット

0000 = キャプチャ / コンペア /PWM を OFF にする (ECCP モジュールをリセット )0001 = 予約 0010 = コンペアモード、一致時に出力をトグル0011 = 予約0100 = キャプチャモード、立ち下がりエッジごと 0101 = キャプチャモード、立ち上がりエッジごと0110 = キャプチャモード、立ち上がりエッジ 4 回ごと 0111 = キャプチャモード、立ち上がりエッジ 16 回ごと1000 = コンペアモード、CCP1 ピンを Low に初期化しコンペアの一致時に出力をセットする (CCP1IF を

セット )1001 = コンペアモード、CCP1 ピンを High に初期化しコンペアの一致時に出力をクリアする (CCP1IF

をセット )1010 = コンペアモード、ソフトウェア割り込みのみを生成し CCP1 ピンは I/O ポートの状態に戻す1011 = コンペアモード、特殊イベントトリガを生成する (ECCP によって TMR1 または TMR3 をリセッ

ト、A/D 変換を開始、CC1IF ビットをセット )1100 = PWM モード、P1A、P1C をアクティブ High、P1B、P1D をアクティブ High1101 = PWM モード、P1A、P1C をアクティブ High、P1B、P1D をアクティブ Low1110 = PWM モード、P1A、P1C をアクティブ Low、P1B、P1D をアクティブ High1111 = PWM モード、P1A、P1C をアクティブ Low、P1B、P1D をアクティブ Low

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 117

Page 118: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

CCP1CON レジスタと ECCP1AS レジスタにより使用可能なモードが拡張されたのに加えて、ECCPモジュールには拡張 PWM 動作と自動シャットダウン機能に関連する、以下の 2 つのレジスタが追加されました。

• PWM1CON ( デッドバンド遅延 )

• PSTRCON ( 出力ステアリング )

14.1 ECCPの出力とコンフィグレーション

拡張 CCP モジュールは、選択した動作モードに応じて 大 4 つの PWM 信号を出力できます。P1A ~ P1Dと名前の付いたこれらの出力は、PORTC の I/O ピンと多重化されています。アクティブとなる出力は、選択した CCP 動作モードによって決まります。表 14-2にピン割り当てをまとめました。

I/O ピンを PWM 出力として設定するには、P1M<1:0>ビットとCCP1M<3:0>ビットを設定して適切なPWMモードを選択する必要があります。また、各ポートピンに対するTRISC方向ビットも出力として設定する必要があります。

14.1.1 CCP モジュールとタイマリソース

CCP モジュールは、選択したモードに応じて、Timer1、2、3 のいずれかを使用します。Timer1 と Timer3 はキャプチャまたはコンペアモードに設定したモジュールで使用できます。一方、Timer2 は PWM モードのモジュールで使用できます。

表 14-1: CCP モード - タイマリソース

特定のタイマをモジュールに割り当てるには、T3CONレジスタ ( レジスタ 13-1) のタイマ /CCP イネーブルビットを設定します。図 14-1 に、2 つのモジュール間の相互作用を示します。非同期カウンタモードでは、キャプチャ動作の信頼性を確保できません。

CCP/ECCP モード タイマリソース

キャプチャ Timer1 または Timer3

コンペア Timer1 または Timer3

PWM Timer2

DS41350D_JP - p. 118 Preliminary 2010 Microchip Technology Inc.

Page 119: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.2 キャプチャモード

キャプチャモードでは、対応する CCP1 ピンでイベントが発生すると、TMR1 または TMR3 レジスタの 16ビットの値が CCPR1H:CCPR1L レジスタペアにキャプチャされます。イベントとしては、以下のいずれか1 つを指定します。

• 立ち下がりエッジごと

• 立ち上がりエッジごと

• 立ち上がりエッジ 4 回ごと

• 立ち上がりエッジ 16 回ごと

このイベントはCCP1CONレジスタのモード選択ビット CCP1M<3:0> によって指定します。キャプチャが実行されると、割り込み要求フラグビットCCP1IFがセットされます。このフラグは、ソフトウェアによってクリアする必要があります。CCPR1 レジスタの値を読み出す前に再度キャプチャ イベントが発生した場合、前回キャプチャされた値は新しい値によって上書きされます。

14.2.1 CCP のピン設定

キャプチャモードで使用する CCP1 ピンは、方向ビットTRISを設定し、入力として設定する必要があります。

14.2.2 TIMER1/TIMER3 モード選択

キャプチャ機能で使用するタイマ (Timer1 およびTimer3 またはどちらか一方 ) は、タイマモードまたは同期カウンタモードで動作させておく必要があります。非同期カウンタモードでは、キャプチャ機能が動作しない可能性があります。各 CCP モジュールで使用するタイマは、T3CON レジスタで選択します (14.1.1「CCP モジュールとタイマリソース」参照 )。

14.2.3 ソフトウェア割り込み

キャプチャモードを変更すると、誤ったキャプチャ割り込みが発生する恐れがあります。このような誤った割り込みの発生を避けるために、ユーザは割り込みイネーブルビット CCP1IEをクリアしておく必要があります。また、このような動作モードの変更後は、割り込みフラグビット CCP1IF もクリアする必要があります。

14.2.4 CCP プリスケーラ

キャプチャモードには 4 つのプリスケーラ設定があります。いずれを選択するかは、動作モード選択の一部としてモード選択ビット (CCP1M<3:0>)によって指定します。CCP モジュールを OFF、またはキャプチャモードを無効に設定すると、プリスケーラ カウンタがクリアされます。これは、全てのリセットでプリスケーラ カウンタがクリアされる事を意味します。

あるキャプチャ プリスケーラから他のプリスケーラに切り換えると割り込みが発生する場合があります。また、切り換え時にはプリスケーラ カウンタがクリアされないため、変更後の 初のキャプチャがゼロ以外からカウントを開始したプリスケーラによって発生する恐れもあります。例 14-1 に、キャプチャ プリスケーラを切り換える場合の推奨される方法を示します。この例ではプリスケーラ カウンタをクリアし、「誤った割り込み」を発生させません。

例 14-1: キャプチャ プリスケーラの変更

図 14-1: キャプチャモード動作のブロック図

Note: CCP1 ピンを出力として設定すると、ポートへの書き込みによってキャプチャ条件が満たされてしまう可能性があります。

CLRF CCP1CON ; Turn CCP module offMOVLW NEW_CAPT_PS ; Load WREG with the

; new prescaler mode; value and CCP ON

MOVWF CCP1CON ; Load CCP1CON with; this value

CCPR1H CCPR1L

TMR1H TMR1L

Set CCP1IF

TMR3Enable

Q1:Q4

CCP1CON<3:0>

CCP1 pinPrescaler 1, 4, 16

andEdge Detect

TMR1Enable

T3CCP1

T3CCP1

TMR3H TMR3L

4

4

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 119

Page 120: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.3 コンペアモード

コンペアモードでは、CCPR1 レジスタの 16 ビットの値を、TMR1 または TMR3 レジスタペアのいずれかの値と常時比較しつづけます。2 つの値が一致すると、CCP1 ピンは以下のいずれかの動作を示します。

• High に駆動

• Low に駆動

• トグル(HighからLowへ、またはLowからHighへ)

• 変化なし (= I/O ラッチの状態を反映 )

ピンの動作はモード選択ビット (CCP1M<3:0>)の値によって決まります。上記の動作と共に、割り込みフラグビット CCP1IF がセットされます。

14.3.1 CCP のピン設定

ユーザは、対応する TRIS ビットをクリアして、CCP1ピンを出力として設定する必要があります。

14.3.2 TIMER1/TIMER3 モード選択

CCP モジュールでコンペア機能を使用する場合、Timer1 および Timer3 ( またはどちらか一方 )はタイマモードまたは同期カウンタモードで動作している必要があります。非同期カウンタモードでは、コンペア動作の信頼性を確保できません。

14.3.3 ソフトウェア割り込みモード

ソフトウェア割り込み生成モードを選択した場合(CCP1M<3:0> = 1010)、CCP1 ピンの動作に変化はありません。割り込みフラグ CCP1IF の動作のみが変わります。

14.3.4 特殊イベントトリガ

CCP モジュールには特殊イベントトリガが実装されています。これは、他のモジュールの動作をトリガするために使用する、コンペアモードによって生成される内部ハードウェア信号です。特殊イベントトリガは、コンペア特殊イベント トリガ モードを選択(CCP1M<3:0> = 1011) する事で有効になります。

特殊イベントトリガは、モジュールにクロック周期を供給しているタイマリソースの種類に関わらず、タイマ レジスタ ペアをリセットします。このため、全てのタイマで CCPR1 レジスタをプログラム可能な周期レジスタとして使用できます。

特殊イベントトリガによってA/D変換を開始する事もできます。それには、あらかじめ A/D コンバータを有効にしておく必要があります。

図 14-2: コンペアモード動作のブロック図

Note: CCP1CON レジスタをクリアすると、CCP1コンペア出力ラッチ (デバイスの設定による ) が強制的に既定値の Low レベルに設定されます。こ のラッチは、PORTC の I/O データラッチとは別のラッチです。

TMR1H TMR1L

TMR3H TMR3L

CCPR1H CCPR1L

Comparator

T3CCP1

Set CCP1IF

1

0

QS

R

OutputLogic

Special Event Trigger

CCP1 pin

TRIS

CCP1CON<3:0>

Output Enable4

(Timer1/Timer3 Reset, A/D Trigger)

CompareMatch

DS41350D_JP - p. 120 Preliminary 2010 Microchip Technology Inc.

Page 121: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4 PWM ( 拡張モード )

拡張 PWM モードでは、 大 4 本のピン 大分解能 10ビットの PWM 信号を生成できます。PWM 出力モードには、以下の 4 種類があります。

• シングル PWM

• ハーフブリッジ PWM

• フルブリッジ PWM、順方向モード

• フルブリッジ PWM、逆方向モード

拡張 PWM モードを選択するには、CCP1CON レジスタの P1M ビットを適切に設定する必要があります。

PWM 出力は、I/O ピンと多重化されており、P1A、P1B、P1C、P1D という名称が付いています。PWM ピンの極性はユーザ設定可能です。CCP1CON レジスタのCCP1M ビットで設定できます。

表 14-1 に、各拡張 PWM モードにおけるピン割り当てを示します。

図 14-3 に、拡張 PWM モジュールの概略ブロック図の例を示します。

図 14-3: 拡張 PWM モードの概略ブロック図の例

表 14-2: 各 PWM 拡張モードにおけるピン割り当ての例

Note: PWMを有効化した直後に不完全な波形が発生する事を防ぐために、ECCPモジュールは新しいPWM周期の開始を待ってからPWM 信号を生成します。

CCPR1L

CCPR1H (Slave)

Comparator

TMR2

Comparator

PR2

(1)

R Q

S

Duty Cycle RegistersDC1B<1:0>

Clear Timer2,toggle PWM pin and latch duty cycle

Note 1: 8 ビットのタイマレジスタ TMR2 と、2 ビットの内部 Q クロックまたはプリスケーラの 2 ビットを結合して 10 ビットのクロック周期を生成します。

TRIS

CCP1/P1A

TRIS

P1B

TRIS

P1C

TRIS

P1D

OutputController

P1M<1:0>2

CCP1M<3:0>4

PWM1CON

CCP1/P1A

P1B

P1C

P1D

Note 1: PWM の各出力に対して TRIS レジスタの値を適切に設定する必要があります。

2: 拡張 PWM モードで使用しないピンには、別のピン機能に利用できます。

ECCP モード P1M<1:0> CCP1/P1A P1B P1C P1D

シングル 00 あり (1) あり (1) あり (1) あり (1)

ハーフブリッジ 10 あり あり なし なし

フルブリッジ、順方向 01 あり あり あり あり

フルブリッジ、逆方向 11 あり あり あり あり

Note 1: 各出力は、シングルモードのパルス ステアリングによって有効になります。レジスタ 14-4 参照

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 121

Page 122: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 14-4: PWM ( 拡張モード ) 出力間の関係の例 ( アクティブ HIGH 状態 )

0

Period

00

10

01

11

SignalPR2+1

P1M<1:0>

P1A Modulated

P1A Modulated

P1B Modulated

P1A Active

P1B Inactive

P1C Inactive

P1D Modulated

P1A Inactive

P1B Modulated

P1C Active

P1D Inactive

PulseWidth

(Single Output)

(Half-Bridge)

(Full-Bridge,Forward)

(Full-Bridge,Reverse)

Delay(1) Delay(1)

Relationships:• Period = 4 * TOSC * (PR2 + 1) * (TMR2 Prescale Value)• Pulse Width = TOSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 Prescale Value)• Delay = 4 * TOSC * (PWM1CON<6:0>)

Note 1: デッドバンド遅延はPWM1CONレジスタによってプログラムします (14.4.6「プログラム可能なデッドバンド遅延モード」)。

DS41350D_JP - p. 122 Preliminary 2010 Microchip Technology Inc.

Page 123: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 14-5: 拡張 PWM 出力間の関係の例 ( アクティブ LOW 状態 )

0

Period

00

10

01

11

SignalPR2+1

P1M<1:0>

P1A Modulated

P1A Modulated

P1B Modulated

P1A Active

P1B Inactive

P1C Inactive

P1D Modulated

P1A Inactive

P1B Modulated

P1C Active

P1D Inactive

Pulse

Width

(Single Output)

(Half-Bridge)

(Full-Bridge,

Forward)

(Full-Bridge,

Reverse)

Delay(1) Delay(1)

Relationships:• Period = 4 * TOSC * (PR2 + 1) * (TMR2 Prescale Value)• Pulse Width = TOSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 Prescale Value)• Delay = 4 * TOSC * (PWM1CON<6:0>)

Note 1: デッドバンド遅延はPWM1CONレジスタによってプログラムします (14.4.6「プログラム可能なデッドバンド遅延モード」)。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 123

Page 124: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4.1 ハーフブリッジ モード

ハーフブリッジ モードでは、プッシュプル型の負荷を駆動するために出力として 2 つのピンを使用します。PWM 出力信号が CCP1/P1A ピンに出力される一方、P1Bピンにはその相補信号が出力されます(図 14-6参照 )。このモードは図 14-7 に示すような、2 つの PWM信号によって 4 つのパワースイッチを変調するハーフブリッジまたはフルブリッジのアプリケーションに適用できます。

ハーフブリッジ モードでは、ハーフブリッジ パワーデバイスの貫通電流を防止するために、デッドバンド遅延をプログラムできます。PWM1CON レジスタのPDC<6:0> ビットによって、出力をアクティブに駆動するまでの遅延を命令サイクル数として設定します。この値がデューティ サイクルよりも大きい場合、対応する出力は 1 サイクルの全期間、非アクティブのままです。デッドバンド遅延動作の詳細は、14.4.6「プログラム可能なデッドバンド遅延モード」を参照してください。

P1A 出力と P1B 出力は PORT データラッチと多重化されているため、対応する TRIS ビットをクリアして、P1A と P1B を出力として設定する必要があります。

図 14-6: ハーフブリッジ PWM 出力の例

図 14-7: ハーフブリッジ アプリケーションの例

Period

Pulse Width

td

td

(1)

P1A(2)

P1B(2)

td = Dead-Band Delay

Period

(1) (1)

Note 1: この時点でTMR2レジスタとPR2レジスタの

値が等しくなります。

2: 出力信号はアクティブHighとして示してあり

ます。

P1A

P1B

FETDriver

FETDriver

Load

+

-

+

-

FETDriver

FETDriver

V+

Load

FETDriver

FETDriver

P1A

P1B

Standard Half-Bridge Circuit (“Push-Pull”)

Half-Bridge Output Driving a Full-Bridge Circuit

DS41350D_JP - p. 124 Preliminary 2010 Microchip Technology Inc.

Page 125: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4.2 フルブリッジ モード

フルブリッジ モードでは出力として4つのピンを全て使用します。図 14-8 に、フルブリッジ アプリケーションの例を示します。

図 14-9 に示した順方向モードでは、CCP1/P1A ピンがアクティブ状態に駆動され、ピン P1D を変調信号で駆動し、P1B と P1C は非アクティブ状態になります。

図 14-9に示した逆方向モードでは、P1Cがアクティブ状態に駆動され、P1B を変調信号で駆動し、P1A とP1D は非アクティブ状態になります。

P1A、P1B、P1C、P1D 出力は PORT データラッチと多重化されています。P1A、P1B、P1C、P1D ピンを出力として設定するために、対応する TRIS ビットをクリアする必要があります。

図 14-8: フルブリッジ アプリケーションの例

P1A

P1C

FETDriver

FETDriver

V+

V-

Load

FETDriver

FETDriver

P1B

P1D

QA

QB QD

QC

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 125

Page 126: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 14-9: フルブリッジ PWM 出力の例

Period

Pulse Width

P1A(2)

P1B(2)

P1C(2)

P1D(2)

Forward Mode

(1)

Period

Pulse Width

P1A(2)

P1C(2)

P1D(2)

P1B(2)

Reverse Mode

(1)

(1)(1)

Note 1: この時点で TMR2 レジスタと PR2 レジスタの値が等しくなります。

2: 出力信号はアクティブ High として示してあります。

DS41350D_JP - p. 126 Preliminary 2010 Microchip Technology Inc.

Page 127: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4.2.1 フルブリッジ モードにおける方向の変更

フルブリッジ モードでは、CCP1CON レジスタのP1M1 ビットによって、ユーザが順方向 / 逆方向を制御できます。アプリケーション ファームウェアによってこの方向制御ビットを変更すると、モジュールの動作は次の PWM サイクルで新しい方向に変化します。

方向の変更は、ソフトウェア内で CCP1CON レジスタの P1M1 ビットを変更した時点で開始します。以下のシーケンスが、現在の PWM 周期が終了するまでに実行されます。

• 変調出力 (P1B と P1D) を、非アクティブ状態にする

• 対応する非変調出力 (P1A と P1C) の駆動方向を逆向きに切り換える

• 次の周期の先頭から PWM 変調を再開する

図 14-10 に、このシーケンスを図示します。

フルブリッジ モードにはデッドバンド遅延の機能がありません。このモードでは出力が都度変調されるため、通常デッドバンド遅延は不要であるためです。ただし、以下の条件が両方とも満たされる場合にはデッドバンド遅延が必要です。

1. 出力のデューティ サイクルが100%またはそれに近い状態で PWM 出力の方向が変化する

2. パワーデバイスと駆動回路を含むパワースイッチ回路のターンオフ時間がターンオン時間よりも長い

図 14-11 に、デューティ サイクルが 100% 近い状態で、PWM の方向が順方向から逆方向に変化する場合の例を示します。この例の t1 の時点で、出力 P1A とP1D は非アクティブに、出力 P1C がアクティブになります。パワーデバイスのターンオフ時間がターンオン時間よりも長いため、パワーデバイス QC と QD ( 図 14-8 参照 ) に「T」の時間だけ貫通電流が流れます。PWM の方向が逆方向から順方向に変わる場合も、パワーデバイス QA と QB に同じ事が起きます。

デューティ サイクルが大きい時にPWMの方向を変える事が必要なアプリケーションでこの貫通電流を防止するには、以下の 2 つの方法があります。

1. 方向を変える前に、1周期だけPWMデューティサイクルを小さくする

2. ターンオフ時間がターンオン時間よりも短いスイッチドライバを使用する

貫通電流を防止する方法は上記の 2 つ以外にも考えられます。

図 14-10: PWM 方向切り換えの例

Pulse Width

Period(1)Signal

Note 1: CCP1CON レジスタの方向ビット P1M1 には、PWM サイクル中いつでも書き込む事ができます。

Period

P1A (Active-High)

P1B (Active-High)

P1C (Active-High)

P1D (Active-High)

Pulse Width

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 127

Page 128: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 14-11: デューティ サイクルがほぼ 100% の場合に PWM の方向を変える例

14.4.3 起動に関する考慮事項

いずれの PWM モードを使用する場合も、アプリケーション ハードウェアではPWM出力ピンに適切な外部プルアップまたはプルダウン抵抗 ( あるいは両方 ) を接続する必要があります。

CCP1CON レジスタの CCP1M<1:0> ビットによって、ユーザは各PWM出力ピンのペア(P1A/P1CとP1B/P1D)のからの信号を、アクティブ High とアクティブ Low のどちらにするかを選択できます。PWM 出力の極性は、PWM ピンの出力ドライバを有効にする前に選択しておく必要があります。PWM ピン出力ドライバを駆動したまま極性を変える事は推奨しません。アプリケーション回路を損傷する恐れがあります。

PWM モジュールを初期化後、P1A、P1B、P1C、P1Dの出力ラッチは適正な状態でない可能性があります。PWM ピンの出力ドライバと拡張 PWM モードを同時に有効にすると、アプリケーション回路を損傷する恐れがあります。従って、まず拡張 PWM モードを適切な出力モードで有効にしてから、PWM サイクルが1 サイクル経過後に、PWM ピン出力ドライバを有効にします。PWM サイクルが完了したかどうかは、PIR1レジスタの TMR2IF ビットが 2 サイクル目の開始時にセットされる事から判断できます。

Forward Period Reverse Period

P1A

TON

TOFF

T = TOFF – TON

P1B

P1C

P1D

External Switch D

PotentialShoot-Through Current

Note 1: 信号は全てアクティブ High として示してあります。

2: TON はパワースイッチ QC とそのドライバのターンオン遅延時間です。

3: TOFF はパワースイッチ QD とそのドライバのターンオフ遅延時間です。

External Switch C

t1

PW

PW

Note: マイクロコントローラのリセット終了時、全 I/O ピンはハイインピーダンス状態です。マイクロコントローラが適切な信号レベルで I/O ピンを駆動し始めるまで、あるいはPWM出力をアクティブにするまで、外部回路はパワースイッチ デバイスを OFF 状態に保つ必要があります。

DS41350D_JP - p. 128 Preliminary 2010 Microchip Technology Inc.

Page 129: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4.4 拡張 PWM の自動シャットダウン モード

PWM モードは、外部でシャットダウン イベントが発生した時に PWM 出力を無効にする、自動シャットダウン モードに対応しています。自動シャットダウンモードは、PWM 出力ピンをあらかじめ指定した状態に遷移させます。このモードは、PWM によるアプリケーション回路の損傷を予防するのに有効です。

自動シャットダウンのソースは、ECCPAS レジスタのECCPAS<2:0> ビットによって選択します。シャットダウン イベントは以下の状態で発生します。

• INT0 ピンのロジック「0」

• コンパレータ (Cx) 出力のロジック「1」

シャットダウン状態は、ECCPAS レジスタの自動シャットダウン イベント ステータスビットECCPASEで示します。このビットが「0」の場合、PWM ピンは正常に動作中です。このビットが「1」の場合、PWM出力はシャットダウン状態です。

シャットダウン イベント発生時、2 つの動作が実行されます。

第一に、ECCPASE ビットが「1」にセットされます。ECCPASEはファームウェアによってクリアされるか、自動再起動 (14.4.5「自動再起動モード」参照 ) が実行されるまでセットされた状態を維持します。

第二に、有効に設定されている PWM ピンが非同期でシャットダウン状態に移行します。PWM 出力ピンは2 つのペア、[P1A/P1C] と [P1B/P1D] にグループ化されます。各ペアの状態は、ECCPAS レジスタの PSSACビットと PSSBD ビットによって決まります。その状態は、以下の 3 つのいずれかです。

• ロジック「1」を駆動

• ロジック「0」を駆動

• 3 ステート ( ハイインピーダンス )

レジスタ 14-2: ECCP1AS: 拡張キャプチャ / コンペア /PWM 自動シャットダウン制御レジスタ

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 ECCPASE: ECCP 自動シャットダウン イベント ステータスビット

1 = シャットダウン イベントが発生し、ECCP 出力がシャットダウン状態にある0 = ECCP 出力は動作中である

bit 6-4 ECCPAS<2:0>: ECCP 自動シャットダウン ソース選択ビット

000 = 自動シャットダウンを無効に設定する001 = コンパレータ出力 C1OUT が High である010 = コンパレータ出力 C2OUT が High である011 = コンパレータ出力 C1OUT または C2OUT が High である100 = INT0 ピンが VIL である101 = INT0 ピンが VIL またはコンパレータ出力 C1OUT が High である110 = INT0 ピンが VIL またはコンパレータ出力 C2OUT が High である111 = INT0 ピンが VIL またはコンパレータ出力 C1OUT または C2OUT が High である

bit 3-2 PSSACn: P1A ピンと P1C ピンのシャットダウン状態制御ビット

00 = P1A ピンと P1C ピンを「0」に駆動する01 = P1A ピンと P1C ピンを「1」に駆動する1x = P1A ピンと P1C ピンを 3 ステートに設定する

bit 1-0 PSSBDn: P1B ピンと P1D ピンのシャットダウン状態制御ビット

00 = P1B ピンと P1D ピンを「0」に駆動する01 = P1B ピンと P1D ピンを「1」に駆動する1x = P1B ピンと P1D ピンを 3 ステートに設定する

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 129

Page 130: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 14-12: PWM 自動シャットダウンとファームウェアによる再起動 (PRSEN = 0)

Note 1: 自動シャットダウン条件はエッジではなくレベルによって判定される信号です。レベルが保たれている限り、自動シャットダウン状態は続きます。

2: 自動シャットダウン状態が続く限り、ECCPASE ビットへの書き込みは禁止されます。

3: 自動シャットダウンの条件が解消され、PWMが再起動されると (ファームウェアまたは自動再起動による )、PWM 信号の生成は常に次の PWM 周期の先頭から再開します。

4: CCPxASE ビットを「1」に設定すると、コンパレータ出力または INT ピンの状態による自動シャットダウン イベントが発生する前に、ファームウェア内でソフトウェア シャットダウンをトリガできます。デバイスの自動再起動機能は、コンパレータ出力または INT ピンのイベントによって発生したシャットダウンのアクティブ状態のみを追跡します。この時、自動再起動機能が有効な場合、このビットをただちにクリアし、次の PWM 周期の先頭からECCPモジュールを再起動します。

Shutdown

PWM

ECCPASE bit

Activity

Event

ShutdownEvent Occurs

ShutdownEvent Clears

PWMResumes

Normal PWM

Start ofPWM Period

ECCPASECleared byFirmware

PWM Period

DS41350D_JP - p. 130 Preliminary 2010 Microchip Technology Inc.

Page 131: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4.5 自動再起動モード

拡張 PWM 機能を、自動シャットダウン条件が解消された場合に PWM 信号生成を自動的に再開するように設定できます。この自動再起動機能は、PWM1CON レジスタの PRSEN ビットをセットする事で有効になります。

自動再起動が有効な場合、ECCPASE ビットは自動シャットダウン条件が続く限りセットされたままです。自動シャットダウン条件が解消すると、ハードウェアが ECCPASE ビットをクリアし、通常動作が再開します。

図 14-13: 自動再起動が有効な場合 (PRSEN = 1) の PWM 自動シャットダウン

Shutdown

PWM

ECCPASE bit

Activity

Event

ShutdownEvent Occurs

ShutdownEvent Clears

PWMResumes

Normal PWM

Start ofPWM Period

PWM Period

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 131

Page 132: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4.6 プログラム可能なデッドバンド遅延モード

全てのパワースイッチが PWM 周波数で変調されるハーフブリッジ アプリケーションでは、通常パワースイッチのターンオフにはターンオンより長い時間を要します。上側のパワースイッチと下側のパワースイッチが同時に切り換えられた場合 ( 一方がターンオン、他方がターンオフ )、一方が完全にターンオフになるまでの短い期間、両方のスイッチがオン状態になる可能性があります。この間ブリッジの電源が短絡するため、きわめて大きな電流 ( 貫通電流 ) が両方のパワースイッチを通して流れます。回路に損傷を与えかねないこのスイッチング時の貫通電流を防止するために、通常パワースイッチのターンオンを遅延させ、その間にもう一方のスイッチが完全にターンオフになるようにします。

ハーフブリッジ モードでは、貫通電流がブリッジのパワースイッチを破壊するのを防ぐため、デジタル プログラムが可能なデッドバンド遅延を使用できます。信号の非アクティブ状態からアクティブ状態への遷移を遅延させます。図 14-14 にこの動作を図示します。遅延時間は、対応する PWM1CON ( レジスタ 14-3) レジスタの下位 7 ビットを使って、マイクロコントローラの命令サイクル数 (TCYまたは 4 TOSC)単位で指定します。

図 14-14: ハーフブリッジ PWM 出力の例

図 14-15: ハーフブリッジ アプリケーションの例

Period

Pulse Width

td

td

(1)

P1A(2)

P1B(2)

td = Dead-Band Delay

Period

(1) (1)

Note 1: この時点で TMR2 レジスタと PR2 レジスタ

の値が等しくなります。

2: 出力信号はアクティブ High として示してあ

ります。

P1A

P1B

FETDriver

FETDriver

V+

V-

Load

+V-

+V-

Standard Half-Bridge Circuit (“Push-Pull”)

DS41350D_JP - p. 132 Preliminary 2010 Microchip Technology Inc.

Page 133: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 14-3: PWM1CON: 拡張 PWM 制御レジスタ

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 PRSEN: PWM 再起動イネーブルビット

1 = 自動シャットダウン後、シャットダウン条件が解消されると自動的に ECCPASE ビットがクリアされ、PWM 信号の生成が再開される。

0 = 自動シャットダウン後、PWM を再起動するにはソフトウェアによって ECCPASE をクリアする必要がある。

bit 6-0 PDC<6:0>: PWM 遅延カウントビット

PDCn = PWM 信号が遷移する予定の時点と、実際に遷移する時点の間の FOSC/4 サイクル数(4 * TOSC)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 133

Page 134: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4.7 パルス ステアリング モード

シングル出力モードでは、パルス ステアリング機能によって任意のPWMピンから変調信号を出力できます。さらに、同じ PWM 信号を複数のピンから同時に出力する事も可能です。

シングル出力モードを選択 (CCP1CON レジスタのCCP1M<3:2> = 11 および P1M<1:0> = 00) した上で、PSTRCONレジスタの該当するSTR<D:A>ビットを設定する事で、ユーザ ファームウェアは同じ PWM 信号を1~4本の出力ピンに出力できます (表 14-2参照 )。

PWM ステアリング モードの動作中は、CCP1CON レジスタのCCP1M<1:0>ビットをP1<D:A>ピンのPWM出力極性の選択に使用します。

PWM の自動シャットダウンは、PWM ステアリングモードにおいても 14.4.4「拡張 PWM の自動シャットダウン モード」の説明と同様に動作します。自動シャットダウン イベントはPWM出力を有効にしているピンにだけ作用します。

Note: PWM 信号をピンに出力するには、対応する TRIS ビットで出力を選択し (「0」)、ピンの出力ドライバを有効にする必要があります。

レジスタ 14-4: PSTRCON: パルス ステアリング制御レジスタ (1)

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1

— — — STRSYNC STRD STRC STRB STRA

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-5 未実装ビット :「0」として読み出し

bit 4 STRSYNC: ステアリング同期ビット

1 = 出力ステアリングを次の PWM 周期で更新する0 = 出力ステアリングを命令サイクルの境界の先頭で更新する

bit 3 STRD: ステアリング イネーブルビット D

1 = P1D ピンに CCP1M<1:0> で指定した極性に従って PWM 波形を出力する

0 = P1D ピンをポートピンに割り当てる

bit 2 STRC: ステアリング イネーブルビット C

1 = P1C ピンに CCP1M<1:0> で指定した極性に従って PWM 波形を出力する

0 = P1C ピンをポートピンに割り当てる

bit 1 STRB: ステアリング イネーブルビット B

1 = P1B ピンに CCP1M<1:0> で指定した極性に従って PWM 波形を出力する

0 = P1B ピンをポートピンに割り当てる

bit 0 STRA: ステアリング イネーブルビット A

1 = P1A ピンに CCP1M<1:0> で指定した極性に従って PWM 波形を出力する

0 = P1A ピンをポートピンに割り当てる

Note 1: PWM ステアリング モードを使用できるのは、CCP1CON レジスタのビットが CCP1M<3:2> = 11および P1M<1:0> = 00の場合のみです。

DS41350D_JP - p. 134 Preliminary 2010 Microchip Technology Inc.

Page 135: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 14-16: ステアリング動作の概略ブロック図

1

0TRIS

P1A pin

PORT Data

P1A Signal

STRA

1

0TRIS

P1B pin

PORT Data

STRB

1

0TRIS

P1C pin

PORT Data

STRC

1

0TRIS

P1D pin

PORT Data

STRD

Note 1: 図のようにポート出力が設定されるのは、

CCP1CON レジスタのビットを

P1M<1:0> = 00 および CCP1M<3:2> = 11 に

設定した場合です。

2: PWM のシングル出力モードを使用する場合、

STRx ビットのうち少なくとも 1 つをセット

する必要があります。

CCP1M1

CCP1M0

CCP1M1

CCP1M0

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 135

Page 136: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4.7.1 ステアリングの同期

PSTRCON レジスタの STRSYNC ビットにより、ユーザはステアリング イベントが発生するタイミングを以下の 2 つのうちから選択できます。STRSYNC ビットを「0」とした場合、ステアリング イベントはPSTRCONレジスタへの書き込み命令の終了時に発生します。この方法は、P1<D:A> ピンに出力される信号が不完全な PWM 波形になる可能性があります。この動作は、ユーザ ファームウェアがピンからただちにPWM 信号を除去する必要がある場合に役立ちます。

一方、STRSYNC ビットを「1」とした場合、ステアリングは次の PWM 周期の先頭で更新されます。従って、PWM ステアリングの ON/OFF 出力は常に完全なPWM 波形を生成します。

図 14-17 と 14-18 に、STRSYNC 設定に応じた PWMステアリング動作のタイミング チャートを示します。

図 14-17: 命令終了時に発生するステアリング イベントの例 (STRSYNC = 0)

図 14-18: 命令開始時に発生するステアリング イベントの例 (STRSYNC = 1)

PWM

P1n = PWM

STRn

P1<D:A> PORT Data

PWM Period

PORT Data

PWM

PORT Data

P1n = PWM

STRn

P1<D:A> PORT Data

DS41350D_JP - p. 136 Preliminary 2010 Microchip Technology Inc.

Page 137: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

14.4.8 電源管理モードにおける動作

スリープモードでは、全てのクロック源が停止します。Timer2 はインクリメントせず、モジュールの状態は変化しません。値を駆動している ECCP ピンは、引き続きその値を駆動します。デバイスがウェイクアップした場合、動作はこの状態から継続します。2 段階起動モードが有効な場合、HFINTOSC の初期の起動周波数とポストスケーラの動作がすぐに安定しない事があります。

PRI_IDLEモードの場合、プライマリ クロックがECCPモジュールの駆動を継続します。その他全ての電源管理モードでは、選択した電源管理モードのクロックがTimer2 にクロック信号を供給します。PRI_IDLE 以外の電源管理モードのクロック周波数は、多くの場合、プライマリ クロックの周波数とは異なります。

14.4.8.1 フェイルセーフ クロックモニタとECCP

フェイルセーフ クロックモニタが有効な場合、クロック障害が発生すると、デバイスは強制的に RC_RUN電源管理モードに移行し、PIR2 レジスタの OSCFIFビットがセットされます。そのモードでは ECCP が内部オシレータ クロック源によって駆動されます。このクロックの周波数はプライマリ クロックとは異なる場合があります。

詳細は、前のセクションを参照してください。

14.4.9 リセットの影響

パワーオン リセットおよびそれ以降のリセットは、いずれも全ポートを入力モードに設定し、CCP レジスタをリセット状態に移行させます。

これによって拡張 CCP モジュールは、標準 CCP モジュールと互換性のある状態にリセットされます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 137

Page 138: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 14-3: ECCP1 モジュールと TIMER1 ~ 3 に関連するレジスタ

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

RCON IPEN SBOREN — RI TO PD POR BOR 286

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

PIR2 OSCFIF C1IF C2IF EEIF BCLIF USBIF TMR3IF — 290

PIE2 OSCFIE C1IE C2IE EEIE BCLIE USBIE TMR3IE — 290

IPR2 OSCFIP C1IP C2IP EEIP BCLIP USBIP TMR3IP — 290

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

TMR1L Timer1 レジスタ、下位バイト 288

TMR1H Timer1 レジスタ、上位バイト 288

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 288

TMR2 Timer2 レジスタ 288

T2CON — T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 288

PR2 Timer2 周期レジスタ 288

TMR3L Timer3 レジスタ、下位バイト 289

TMR3H Timer3 レジスタ、上位バイト 289

T3CON RD16 — T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 289

CCPR1L キャプチャ / コンペア /PWM レジスタ 1、下位バイト 289

CCPR1H キャプチャ / コンペア /PWM レジスタ 1、上位バイト 289

CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 289

ECCP1AS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 289

PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 289

凡例 : — = 未実装ビット、「0」として読み出し。網掛けの部分は ECCP 動作には使用しません。

DS41350D_JP - p. 138 Preliminary 2010 Microchip Technology Inc.

Page 139: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.0 マスタ同期シリアルポート(MSSP) モジュール

15.1 MSSP モジュールの概要

マスタ同期シリアルポート (MSSP) モジュールとは、他の周辺モジュールまたはマイクロコントローラとの通信に便利なシリアル インターフェイスです。通信する周辺モジュールは、シリアル EEPROM、シフトレジスタ、ディスプレイ ドライバ、A/D コンバータ等です。MSSP モジュールは、以下の 2 つのモードのいずれかで動作します。

• シリアル ペリフェラル インターフェイス (SPI)• I2C™ (Inter-Integrated Circuit)

- フルマスタモード

- スレーブモード ( ジェネラルコール アドレス機能使用 )

I2C インターフェイスは、ハードウェアによって以下のモードをサポートします。

• マスタモード

• マルチマスタ モード

• スレーブモード

15.2 SPI モード

SPI モードでは、8 ビットのデータの送受信を同期方式により同時に実行できます。SPI の 4 つのモードに全て対応しています。通信を確立するために、通常以下の 3 つのピンを使用します。

• シリアルデータ出力 – SDO

• シリアルデータ入力 – SDI

• シリアルクロック – SCK

さらに、スレーブモードの動作では 4 本目のピンを使用する場合があります。

• スレーブ選択 – SS

図 15-1 に、SPI モードで動作する MSSP モジュールのブロック図を示します。

図 15-1: MSSP のブロック図 (SPI モード )

( )

Read Write

InternalData Bus

SSPSR Reg

SSPM<3:0>

bit 0 ShiftClock

SS ControlEnable

EdgeSelect

Clock Select

TMR2 Output

TOSCPrescaler4, 16, 64

2EdgeSelect

2

4

TRIS bit

SDO

SSPBUF Reg

SDI/SDA

SS

SCK/SCL

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 139

Page 140: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.2.1 レジスタ

MSSP モジュールには、SPI モードの動作用に以下の4 つのレジスタがあります。

• SSPCON1 – 制御レジスタ

• SSPSTAT – ステータス レジスタ

• SSPBUF – シリアル送受信バッファ

• SSPSR – シフトレジスタ ( 直接アクセス不可 )

SSPCON1 と SSPSTAT は、SPI モード動作時の制御レジスタとステータス レジスタです。SSPCON1 レジスタは、読み書き可能です。SSPSTAT の下位 6 ビットは読み出し専用です。SSPSTAT の上位 2 ビットは読み書き可能です。

SSPSR はデータをシフト入出力するためのシフトレジスタです。SSPBUF は、SSPSR レジスタに間接的にアクセスするためのバッファです。SSPBUFは、データバイトを読み書きするバッファレジスタです。

受信動作の場合、SSPSR と SSPBUF が連動して、ダブルバッファ レシーバを構成します。SSPSR が 1 バイト分のデータを全て受信すると、そのバイトはSSPBUFに転送され、SSPIF 割り込みがセットされます。

送信時の SSPBUF はダブルバッファを構成しません。SSPBUF への書き込み動作は、SSPBUF と SSPSR の両方に書き込みます。

レジスタ 15-1: SSPSTAT: MSSP ステータス レジスタ (SPI モード )

R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0

SMP CKE D/A P S R/W UA BF

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 SMP: サンプルビット

SPI マスタモード :1 = データ出力期間の 後に入力データをサンプリングする0 = データ出力期間の途中に入力データをサンプリングする

SPI スレーブモード :SPI をスレーブモードで使用する場合、SMP をクリアする必要がある。

bit 6 CKE: SPI クロック選択ビット (1)

1 = クロック状態がアクティブからアイドルに遷移する時に送信する0 = クロック状態がアイドルからアクティブに遷移する時に送信する

bit 5 D/A: データ / アドレスビット

I2C モードでのみ使用する。

bit 4 P: ストップビット

I2C モードでのみ使用する。SSPEN をクリアして MSSP モジュールが無効に設定されると、このビットはクリアされる。

bit 3 S: スタートビット

I2C モードでのみ使用する。

bit 2 R/W: 読み出し / 書き込み情報ビット

I2C モードでのみ使用する。

bit 1 UA: 更新アドレスビット

I2C モードでのみ使用する。

bit 0 BF: バッファフル ステータスビット ( 受信モードのみ )

1 = 受信が完了し、SSPBUF がフルである 0 = 受信が未完、SSPBUF が空である

Note 1: クロック状態の極性は、SSPCON1 レジスタの CKP ビットによって設定します。

DS41350D_JP - p. 140 Preliminary 2010 Microchip Technology Inc.

Page 141: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 15-2: SSPCON1: MSSP 制御 1 レジスタ (SPI モード )

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 WCOL: 書き込みコリジョン検出ビット ( 送信モードのみ )

1 = 前回のワードを送信中の SSPBUF レジスタに対して書き込みを実行した( ソフトウェアによるクリアが必要 )

0 = コリジョンは発生していない

bit 6 SSPOV: 受信オーバーフロー インジケータ ビット (1)

SPI スレーブモード : 1 = SSPBUF レジスタがまだ前回のデータを保持している間に、新しいバイトを受信した。オーバー

フローが発生すると、SSPSR 内のデータは失われる。オーバーフローが発生する可能性があるのは、スレーブモードのみである。データ送信しか実行しない場合でも、オーバーフロー ビットがセットされるのを防ぐには (セットされたビットはソフトウェアによるクリアが必要 )、ユーザが SSPBUF を読み出す必要がある。

0 = オーバーフローは発生していない

bit 5 SSPEN: 同期シリアルポート イネーブルビット (2)

1 = シリアルポートを有効にし、シリアルポート ピンとして SCK、SDO、SDI、SS を設定する 0 = シリアルポートを無効にし、上記のピンを I/O ポートピンとして設定する

bit 4 CKP: クロック極性選択ビット

1 = クロックのアイドル状態を High レベルに設定する 0 = クロックのアイドル状態を Low レベルに設定する

bit 3-0 SSPM<3:0>: 同期シリアルポート モード選択ビット (3)

0101 = SPI スレーブモード、クロック = SCK ピン、SS ピン制御無効、SS を I/O ピンとして使用可能 0100 = SPI スレーブモード、クロック = SCK ピン、SS ピン制御有効0011 = SPI マスタモード、クロック = TMR2 出力 /2 0010 = SPI マスタモード、クロック = FOSC/64 0001 = SPI マスタモード、クロック = FOSC/16 0000 = SPI マスタモード、クロック = FOSC/4

Note 1: マスタモードではオーバーフロー ビットがセットされません。新たな受信 ( と送信 ) は毎回 SSPBUF レジスタへの書き込みによって開始されるためです。

2: 有効にする場合、これらのピンを入力または出力として適切に設定する必要があります。

3: ここに具体的に値を示していないビットの組み合わせは、予約済みか、I2C モードでのみ使用するものです。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 141

Page 142: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.2.2 動作

SPI を初期化する場合、いくつかのオプションを指定する必要があります。それには、該当する制御ビット(SSPCON1<5:0> と SSPSTAT<7:6>) をプログラムします。これらの制御ビットによって、以下のオプションを指定できます。

• マスタモード (SCK からクロックを出力 )

• スレーブモード (SCK にクロックを入力 )

• クロック極性 (SCK のアイドル状態 )

• データ入力をサンプリングするタイミング ( データ出力期間の途中または 後 )

• クロックエッジ (SCK の立ち上がり / 立ち下がりエッジでデータを出力 )

• クロック速度 ( マスタモードのみ )

• スレーブ選択モード ( スレーブモードのみ )

MSSP は送信 / 受信シフトレジスタ (SSPSR) とバッファレジスタ (SSPBUF) から構成されます。SSPSRは MSb を先頭に、デバイスにデータをシフト入力またはシフト出力します。SSPBUF は受信データが揃うまで、SSPSR に書き込まれたデータを保持します。8 ビットのデータの受信が完了すると、受信したバイトは SSPBUF レジスタに転送されます。そしてSSPSTAT レジスタのバッファフル検出ビット BF と、割り込みフラグビット SSPIF がセットされます。このようなダブル バッファリング方式(SSPBUF)でデータを受信する事で、今受信したデータを読み出す前に、次のバイトの受信を開始できます。データ送受信中のSSPBUF レジスタへの書き込みは全て無視され、実行した場合はSSPCON1レジスタの書き込みコリジョン検出ビット WCOL がセットされます。コリジョン発生後にSSPBUFレジスタへの書き込みが適切に実行されるように、ユーザ ソフトウェアは WCOL ビットをクリアする必要があります。

アプリケーション ソフトウェアが有効なデータを受信する事が予想される場合、次に転送するデータバイトが SSPBUF に書き込まれる前に、SSPBUF を読み出します。SSPSTAT レジスタのバッファフル ビットBF が、SSPBUF に受信データが読み込まれた事 ( 送信が完了した事 ) を知らせます。BF ビットは SSPBUFを読み出すとクリアされます。読み出されたデータは、SPI をトランスミッタとしてしか使用しない場合は特に意味のないものかも知れません。通常、MSSP 割り込みは、いつ送受信が完了したかを判断するために使用します。割り込みによる方法を使用せずに書き込みコリジョンを避けるには、ソフトウェア ポーリングを実行します。例 15-1 に、送信データを SSPBUF(SSPSR) に読み込むサンプルコードを示します。

SSPSR は直接読み書きできません。アクセスするには SSPBUF レジスタのアドレスを指定します。この他にも MSSP ステータス レジスタ (SSPSTAT) は、様々な状態を示します。

例 15-1: SSPBUF (SSPSR) レジスタの読み込み LOOP BTFSS SSPSTAT, BF ;Has data been received (transmit complete)?

BRA LOOP ;No MOVF SSPBUF, W ;WREG reg = contents of SSPBUF

MOVWF RXDATA ;Save in user RAM, if data is meaningful

MOVF TXDATA, W ;W reg = contents of TXDATA MOVWF SSPBUF ;New data to xmit

DS41350D_JP - p. 142 Preliminary 2010 Microchip Technology Inc.

Page 143: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.2.3 SPI I/O の有効化

シリアルポートを有効にするには、SSPCON1 レジスタのSSPイネーブルビットSSPENをセットする必要があります。SPI モードをリセットまたは再設定するには、SSPEN ビットをクリアし、SSPCON レジスタを再初期化してから、SSPEN ビットをセットします。これによって、SDI、SDO、SCK、SS ピンがシリアルポート ピンとして設定されます。さらに、以下のように各ピンに対応するデータ方向ビット (TRISレジスタ内 ) の一部を設定する必要があります。

• SDI: SPI モジュールによって自動制御される

• SDO: 対応する TRIS ビットをクリアする

• SCK ( マスタモード ): 対応する TRIS ビットをクリアする

• SCK ( スレーブモード ): 対応する TRIS ビットをセットする

• SS: 対応する TRIS ビットをセットする

シリアルポート機能が不要の場合、対応するデータ方向レジスタ(TRIS)を逆の値にプログラムする事で可能です。

15.2.4 代表的な接続

図 15-2 に、2 つのマイクロコントローラ間の代表的な接続方法を示します。マスタ コントローラ ( プロセッサ 1) が、SCK 信号を送信してデータ転送を開始します。データは、プログラムされたクロックエッジごとに両方のシフトレジスタからシフト出力され、逆のクロックエッジごとにラッチされます。両方のプロセッサには、同じクロック極性 (CKP) を設定します。これによって、両方のコントローラが同時にデータを送受信できます。データが有効なものか(またはダミーデータか ) は、アプリケーション ソフトウェアによって決まります。従って、データ送信には以下の 3 つのシナリオが考えられます。

• マスタはデータを送信–スレーブはダミーデータを送信

• マスタはデータを送信–スレーブもデータを送信

• マスタはダミーデータを送信–スレーブはデータを送信

図 15-2: 代表的な SPI マスタ / スレーブ接続

Serial Input Buffer(SSPBUF)

Shift Register(SSPSR)

MSb LSb

SDO

SDI

Processor 1

SCK

SPI Master SSPM<3:0> = 00xx

Serial Input Buffer(SSPBUF)

Shift Register(SSPSR)

LSbMSb

SDI

SDO

Processor 2

SCK

SPI Slave SSPM<3:0> = 010x

Serial Clock

SSSlave Select

General I/O(optional)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 143

Page 144: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.2.5 マスタモード

マスタは SCK を制御する側であるため、いつでもデータ転送を開始できます。スレーブ ( 図 15-2 のプロセッサ 2) がいつデータをブロードキャストするかは、ソフトウェア プロトコルに基づいてマスタが決定します。

マスタモードでは、SSPBUFレジスタへの書き込み後、ただちにデータを送受信します。SPI を受信のみに使用する場合、SDO 出力を無効に ( 入力としてプログラム ) してもかまいません。SSPSR レジスタは、プログラムされたクロック速度でSDIピンの信号のシフト入力を継続します。1 バイト受信するごとに、通常の受信バイトと同じようにSSPBUFレジスタに読み込みます ( 割り込みとステータスビットも必要に応じてセットされます )。

SSPCON1レジスタのCKPビットを適切にプログラムする事でクロックの極性を選択します。これによって図 15-3、図 15-5、図 15-6 に示す、SPI 通信の波形が得られます。この波形では、MSb が 初に送信されています。マスタモードでは、SPI のクロック速度 ( ビットレート ) を以下のいずれかにプログラムできます。

• FOSC/4 ( または TCY)

• FOSC/16 ( または 4 • TCY)

• FOSC/64 ( または 16 • TCY)

• Timer2 出力 /2

従って、 大データレートは 16.00 Mbps (@ 64 MHz)です。

図 15-3 にマスタモードの波形を示します。CKE ビットをセットした場合、SDO のデータは SCK にクロックエッジが現れる前に有効になります。この図には、SMP ビットの状態に応じた入力サンプリング位置の変化も示してあります。また、受信データが SSPBUFに読み込まれるタイミングも示しました。

図 15-3: SPI モードの波形 ( マスタモード )

SCK(CKP = 0

SCK(CKP = 1

SCK(CKP = 0

SCK(CKP = 1

4 ClockModes

InputSample

InputSample

SDI

bit 7 bit 0

SDO bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7

SDI

SSPIF

(SMP = 1)

(SMP = 0)

(SMP = 1)

CKE = 1)

CKE = 0)

CKE = 1)

CKE = 0)

(SMP = 0)

Write toSSPBUF

SSPSR toSSPBUF

SDO bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

(CKE = 0)

(CKE = 1)

bit 0

DS41350D_JP - p. 144 Preliminary 2010 Microchip Technology Inc.

Page 145: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.2.6 スレーブモード

スレーブモードでは、SCK に外部クロックパルスが印加されるとデータが送受信されます。 後のビットがラッチされた時点で割り込みフラグビット SSPIF がセットされます。

モジュールをSPIスレーブモードで動作させる前に、クロックラインのアイドル状態を一致させておく必要があります。クロックラインの状態は SCK ピンを読み出す事で調べられます。アイドル状態は、SSPCON1 レジスタの CKP ビットによって決まります。

スレーブモードでは、SCK ピンに外部クロック源からのクロックが供給されます。この外部クロックは、電気的仕様に規定された High 期間と Low 期間の 小値を満たす必要があります。

スリープモードでも、スレーブはデータを送受信できます。バイトデータを受信すると、デバイスはスリープからウェイクアップします。

15.2.7 スレーブ選択の同期

SS ピンを使って、同期スレーブモードを実現できます。これには SPI を SS ピン制御を有効にしたスレーブモードに設定する必要があります (SSPCON1<3:0>= 0100)。SS ピンを Low にすると、送受信が有効になり、SDO ピンが駆動されます。SS ピンを High にすると、たとえ送信バイトの途中であっても SDO ピンの駆動は中断され、出力はフローティング状態になります。従って、アプリケーションによっては外付けのプルアップ / プルダウン抵抗の接続が望ましい場合があります。

SPI モジュールがリセットされると、ビットカウンタは強制的に「0」に設定されます。これは SS ピンを強制的に High レベルにするか、SSPEN ビットをクリアする事で可能です。

図 15-4: スレーブの同期波形

Note 1: SPI を、SS ピン制御を有効にしたスレーブモードに設定した場合 (SSPCON<3:0>= 0100)、SSピンをVDDに設定するとSPIモジュールがリセットされます。

2: CKEビットをセットしたスレーブモードで SPI を使用する場合、SS ピンによる制御も有効に設定する必要があります。

SCK(CKP = 1

SCK(CKP = 0

InputSample

SDI

bit 7

SDO bit 7 bit 6 bit 7

SSPIFInterrupt

(SMP = 0)

CKE = 0)

CKE = 0)

(SMP = 0)

Write toSSPBUF

SSPSR toSSPBUF

SS

Flag

bit 0

bit 7

bit 0

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 145

Page 146: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-5: SPI モードの波形 (CKE = 0のスレーブモード )

図 15-6: SPI モードの波形 (CKE = 1のスレーブモード )

SCK(CKP = 1

SCK(CKP = 0

InputSample

SDI

bit 7

SDO bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

SSPIFInterrupt

(SMP = 0)

CKE = 0)

CKE = 0)

(SMP = 0)

Write toSSPBUF

SSPSR toSSPBUF

SS

Flag

Optional

bit 0

SCK(CKP = 1

SCK(CKP = 0

InputSample

SDI

bit 7 bit 0

SDO bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

SSPIFInterrupt

(SMP = 0)

CKE = 1)

CKE = 1)

(SMP = 0)

Write toSSPBUF

SSPSR toSSPBUF

SS

Flag

Not Optional

DS41350D_JP - p. 146 Preliminary 2010 Microchip Technology Inc.

Page 147: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.2.8 電力管理モードにおける動作

SPI のマスタモードで電力管理モードに移行した場合、モジュール クロックがフルパワーモードとは異なる速度で動作する可能性があります。スリープモードでは全てのクロックが停止します。

いずれのアイドルモードも、周辺モジュールにはクロックが供給されます。このクロックはプライマリ クロック源から供給される場合もあれば、セカンダリ クロック (32.768 kHz で動作する Timer1 オシレータ ) または INTOSC ソースから供給される場合もあります。詳細は、19.0「電力管理モード」を参照してください。

ほとんどの場合、マスタが SPI データをクロッキングする速度はそれほど重要ではないものの、システムごとに評価しておくべきです。

MSSP 割り込みを有効化している場合、マスタがデータ送信を完了すると、MSSP 割り込みによってコントローラが以下のようにウェイクアップされます。

• スリープモードからはスレーブモードに

• アイドルモードからはスレーブまたはマスタモードに

スリープまたはアイドルモードを終了させたくない場合、MSSP 割り込みを無効にします。

SPI マスタモードでスリープモードを選択すると全てのモジュール クロックが停止し、デバイスがウェイクアップするまで送受信はその時点の状態を保ちます。デバイスがランモードに復帰すると、モジュールはデータの送受信を再開します。

SPI スレーブモードにおける SPI 送受信シフトレジスタはデバイスとは非同期に動作します。従って、デバイスがいずれの電力管理モードに移行しても、SPI 送受信シフトレジスタへのデータのシフト入力は継続で

きます。8 ビットを全て受信すると、MSSP 割り込みフラグビットがセットされ、割り込みを有効化している場合はデバイスがウェイクアップします。

15.2.9 リセットの影響

リセットは MSSP モジュールを無効にし、現在の転送は中止されます。

15.2.10 バスモード互換性

表 15-1 に、標準 SPI モードと、制御ビット CKP とCKE の状態の関係を示します。

表 15-1: SPI バスモード

データ サンプリングのタイミングを制御する SMPビットもあります。

表 15-2: SPI 動作に関連するレジスタ

標準 SPI モードの表現

制御ビットの状態

CKP CKE

0, 0 0 1

0, 1 0 0

1, 0 1 1

1, 1 1 0

レジスタ名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

TRISB TRISB7 TRISB6 TRISB5 TRISB4 — — — — 290

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

SSPBUF SSP 受信バッファ / 送信レジスタ 288

SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 288

SSPSTAT SMP CKE D/A P S R/W UA BF 288

凡例 : 網掛けの部分は SPI モードの MSSP では使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 147

Page 148: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3 I2C モード

I2C モードの MSSP モジュールは、全てのマスタ / スレーブ機能 ( ジェネラルコールのサポートを含む ) を実装しており、空いているバスを判断するためのハードウェアによるスタート / ストップビット割り込みを生成できます ( マルチマスタ機能 )。MSSP モジュールは標準モードの仕様を実装すると共に、7 ビットと 10ビットのアドレッシングにも対応しています。

データ転送には以下の 2 つのピンを使用します。

• シリアルクロック – SCL

• シリアルデータ – SDA

図 15-7: MSSP のブロック図 (I2C™ モード )

15.3.1 レジスタ

MSSP モジュールには、I2C 動作用に以下の 7 つのレジスタがあります。

• MSSP 制御レジスタ 1 (SSPCON1)

• MSSP 制御レジスタ 2 (SSPCON2)

• MSSP ステータス レジスタ (SSPSTAT)

• シリアル受信 / 送信バッファレジスタ (SSPBUF)

• MSSPシフトレジスタ(SSPSR) – 直接アクセスは不可

• MSSP アドレスレジスタ (SSPADD)

• MSSP アドレスマスク (SSPMSK)

SSPCON1、SSPCON2、SSPSTAT は、I2C モード動作時の制御レジスタとステータス レジスタです。SSPCON1 と SSPCON2 は読み書き可能なレジスタです。SSPSTAT の下位 6 ビットは読み出し専用です。SSPSTAT の上位 2 ビットは読み書き可能です。

SSPSR はデータをシフト入出力するためのシフトレジスタです。SSPBUF はデータバイトの読み書き用バッファレジスタです。

MSSP をマスタモードに設定した場合、SSPADD レジスタの値は baud レート ジェネレータの再読み込み値です。MSSP を I2C スレーブモードに設定した場合、SSPADDレジスタはスレーブデバイスのアドレスを保持します。SSPMSK レジスタによってアドレスレジスタのビットの一部だけを選択的に比較する事で、一定範囲のアドレスにだけ応答するようにMSSPを設定できます。

受信動作の場合、SSPSR と SSPBUF が連動して、ダブルバッファ レシーバを構成します。SSPSR が 1 バイト分のデータを全て受信すると、そのバイトはSSPBUFに転送され、SSPIF 割り込みがセットされます。

送信時の SSPBUF はダブルバッファを構成しません。SSPBUF への書き込み動作は、SSPBUF と SSPSR の両方に書き込みます。

Note: ユーザは対応するTRISビットによってこれらのピンを入力として設定する必要があります。

Read Write

SSPSR Reg

Match Detect

SSPADD Reg

Start andStop bit Detect

SSPBUF Reg

InternalData Bus

Addr Match

Set, ResetS, P bits

(SSPSTAT Reg)

SCK/SCL

SDI/SDA

ShiftClock

MSb LSb

SSPMSK Reg

DS41350D_JP - p. 148 Preliminary 2010 Microchip Technology Inc.

Page 149: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 15-3: SSPSTAT: MSSP ステータス レジスタ (I2C モード )

R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0

SMP CKE D/A P(1) S(1) R/W(2, 3) UA BF

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 SMP: スルーレート制御ビット

マスタまたはスレーブモード : 1 = スルーレート制御の標準速度モード (100 kHz と 1 MHz) を無効に設定する 0 = スルーレート制御の高速モード (400 kHz) を有効に設定する

bit 6 CKE: SMBus 選択ビットマスタまたはスレーブモード :1 = SMBus 指定の入力を有効に設定する 0 = SMBus 指定の入力を無効に設定する

bit 5 D/A: データ / アドレスビット

マスタモード :予約済み

スレーブモード :1 = 後に送受信したバイトがデータであった事を示す0 = 後に受信したバイトがアドレスであった事を示す

bit 4 P: ストップビット (1)

1 = 後にストップビットが検出された事を示す0 = 後にストップビットが検出されなかった事を示す

bit 3 S: スタートビット (1)

1 = 後にスタートビットが検出された事を示す0 = 後にスタートビットが検出されなかった事を示す

bit 2 R/W: 読み出し / 書き込み情報ビット (I2C モードのみ )(2、3)

スレーブモード :1 = 読み出し0 = 書き込み

マスタモード :1 = 送信中0 = 送信中ではない

bit 1 UA: 更新アドレスビット (10 ビットのスレーブモードのみ )

1 = ユーザが SSPADD レジスタ内のアドレスを更新する必要がある事を示す 0 = アドレスの更新は不要である

bit 0 BF: バッファフル ステータスビット

送信モード : 1 = SSPBUF がフル 0 = SSPBUF が空

受信モード :1 = SSPBUF がフル (ACK とストップビットを除く )0 = SSPBUF が空 (ACK とストップビットを除く )

Note 1: このビットは、リセット時と SSPEN のクリア時にクリアされます。

2: このビットは、 後のアドレス一致後の R/W ビット情報を保持します。このビットが有効な期間は、アドレス一致から次のスタートビット、ストップビットまたは非 ACK ビットまでです。

3: このビットと、SEN、RSEN、PEN、RCEN、または ACKEN との論理和を取ると、マスタモードがアクティブかどうかを判断できます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 149

Page 150: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 15-4: SSPCON1: MSSP 制御レジスタ 1 (I2C モード )

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 WCOL: 書き込みコリジョン検出ビット

マスタ送信モード :1 = 送信を開始するための I2C 条件が有効でない状態で SSPBUF レジスタへの書き込みを試みた

( ソフトウェアによるクリアが必要 )0 = コリジョンは発生していない

スレーブ送信モード :1 = 前回のワードを送信中の SSPBUF レジスタに対して書き込みが実行された

( ソフトウェアによるクリアが必要 )0 = コリジョンは発生していない

受信モード ( マスタまたはスレーブモード ):ドントケアビット

bit 6 SSPOV: 受信オーバーフロー インジケータ ビット

受信モード :1 = SSPBUF レジスタが、まだ前回のバイトを保持している間にバイトを受信した

( ソフトウェアによるクリアが必要 )0 = オーバーフローは発生していない

送信モード : 送信モードではドントケアビット

bit 5 SSPEN: 同期シリアルポート イネーブルビット

1 = シリアルポートを有効に設定し、SDA ピンと SCL ピンをシリアルポートとして設定する 0 = シリアルポートを無効にし、上記のピンを I/O ポートピンとして設定するシリアルポートを有効にする場合、SDA ピンと SCL ピンを入力として適切に設定する必要がある。

bit 4 CKP: SCK 解放制御ビット

スレーブモード : 1 = クロックを解放する 0 = クロックを Low に保持 ( クロック ストレッチ ) してデータ セットアップ時間を確保する

マスタモード : このモードでは未使用

bit 3-0 SSPM<3:0>: 同期シリアルポート モード選択ビット

1111 = I2C スレーブモード、10 ビットアドレス、スタートビットとストップビットの割り込みを有効にする

1110 = I2C スレーブモード、7 ビットアドレス、スタートビットとストップビットの割り込みを有効にする

1011 = I2C ファームウェア制御マスタモード ( スレーブアイドル )1000 = I2C マスタモード、クロック = FOSC/(4 * (SSPADD + 1)) 0111 = I2C スレーブモード、10 ビットアドレス0110 = I2C スレーブモード、7 ビットアドレスここに具体的に値を示していないビットの組み合わせは、予約済みか、SPI モードでのみ使用するものです。

DS41350D_JP - p. 150 Preliminary 2010 Microchip Technology Inc.

Page 151: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 15-5: SSPCON2: MSSP 制御レジスタ (I2C モード )

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

GCEN ACKSTAT ACKDT(2) ACKEN(1) RCEN(1) PEN(1) RSEN(1) SEN(1)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 GCEN: ジェネラルコール イネーブルビット ( スレーブモードのみ )

1 = SSPSR にジェネラルコール アドレス 0x00 または 00h を受信した時に割り込みを発生させる0 = ジェネラルコール アドレスを無効にする

bit 6 ACKSTAT: 肯定応答 (ACK) ステータスビット ( マスタ送信モードのみ )

1 = スレーブから ACK を受信していない 0 = スレーブから ACK を受信した

bit 5 ACKDT: 肯定応答 (ACK) データビット ( マスタ受信モードのみ )(2)

1 = 肯定応答しない 0 = 肯定応答する

bit 4 ACKEN: ACK シーケンス イネーブルビット ( マスタ受信モードのみ )(1)

1 = SDA ピンと SCL ピンで ACK シーケンスを開始し、ACKDT データビットを送信するハードウェアによって自動的にクリアされる。

0 = ACK シーケンスをアイドルにする

bit 3 RCEN: 受信イネーブルビット ( マスタモードのみ )(1)

1 = I2C の受信モードを有効に設定0 = 受信をアイドル

bit 2 PEN: ストップ条件イネーブルビット ( マスタモードのみ )(1)

1 = SDA ピンと SCL ピンでストップ条件を開始する。ハードウェアによって自動的にクリアされる。0 = ストップ条件をアイドルにする

bit 1 RSEN: リピートスタート条件イネーブルビット ( マスタモードのみ )(1)

1 = SDA ピンと SCL ピンでリピートスタート条件を開始する。ハードウェアによって自動的にクリアされる。

0 = リピートスタート条件をアイドルにする

bit 0 SEN: スタート条件イネーブル / ストレッチ イネーブルビット (1)

マスタモード :1 = SDA ピンと SCL ピンでスタート条件を開始する。ハードウェアによって自動的にクリアされる。0 = スタート条件をアイドルにする

スレーブモード :1 = スレーブ送信とスレーブ受信の両方でクロック ストレッチを有効に設定する0 = クロック ストレッチを無効に設定する

Note 1: ACKEN、RCEN、PEN、RSEN、SEN ビットについて : I2C モジュールがアイドル以外のモードにある場合、これらのビットがセットされない可能性があり ( スプーリングなし )、SSPBUF への書き込みが実行されない (SSPBUF への書き込みが無効である ) 場合があります。

2: ユーザが、受信終了時に ACK シーケンスを開始する時に送信される値です。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 151

Page 152: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.2 動作

MSSP モジュールの動作は、SSPCON1 レジスタのSSPEN ビットをセットすると有効になります。

SSPCON1 レジスタにより、I2C 動作を制御できます。SSPCON1 レジスタの 4 つのモード選択ビットによって、以下の I2C モードのいずれか 1 つを選択します。

• I2C マスタモード、クロック = (FOSC/(4*(SSPADD + 1))

• I2C スレーブモード、7 ビットアドレス

• I2C スレーブモード、10 ビットアドレス

• I2C スレーブモード、7 ビットアドレス、スタートビットとストップビットの割り込み有効化

• I2C スレーブモード、10 ビットアドレス、スタートビットとストップビットの割り込み有効化

• I2C ファームウェア制御マスタモード ( スレーブはアイドル )

SSPEN ビットをセットして、さらに I2C モードを選択した場合、いずれのモードでも SCL ピンと SDA ピンは強制的にオープンドレインに設定されます。ただし、対応する TRIS ビットによってこれらのピンを入力として設定している場合に限ります。

15.3.3 スレーブモード

スレーブモードでは SCL ピンと SDA ピンを入力として設定する必要があります。MSSP モジュールは必要に応じて、出力データによって入力状態を無効にします ( スレーブ トランスミッタ )。

I2C スレーブモードのハードウェアは、常時アドレス一致割り込みを発生させます。モード選択ビットを設定する事で、スタートビットとストップビットによる割り込みも選択できます。

アドレスが一致した場合、またはアドレス一致後に転送データの受信が完了した時点で、ハードウェアは自動的に肯定応答 (ACK) パルスを生成すると共に、直前にSSPSRレジスタで受信した値をSSPBUFレジスタに読み込みます。

以下の条件が 1 つでも満たされると、MSSP モジュールは上記の ACK パルスを発生しません。

• 転送データを受信する前に SSPSTAT レジスタのバッファフル ビット BF がセットされる。

• 転送データを受信する前にSSPCON1レジスタのオーバーフロー ビット SSPOV がセットされる。

この場合、SSPSR レジスタの値は SSPBUF に読み込まれませんが、PIR1 レジスタの SSPIF ビットはセットされます。BF ビットは SSPBUF レジスタを読み出す事でクリアされますが、SSPOVビットはソフトウェアによるクリアが必要です。

適切に動作させるには、SCL クロック入力の High 期間とLow期間が 小値の仕様を満たしている必要があります。I2C仕様のHigh期間とLow期間の規定、MSSPモジュールに関する要件は、27.0「電気的仕様」に記載されています。

15.3.3.1 アドレッシング

有効に設定された MSSP モジュールは、スタート条件が発生するのを待ちます。スタート条件が発生すると、8ビットがSSPSRレジスタにシフト入力されます。受信ビットは、全てクロックライン (SCL) の立ち上がりエ ッ ジ で サ ン プ リ ン グ さ れ ま す。レ ジ ス タSSPSR<7:1> の値が、SSPADD レジスタの値と比較されます。アドレスは、8 番目のクロックパルス (SCL)の立ち下がりエッジで比較されます。アドレスが一致し、BF ビットと SSPOV ビットがクリアされている場合、以下のように動作します。

1. SSPSR レジスタの値が SSPBUF レジスタに読み込まれる。

2. バッファフル ビット BF がセットされる。

3. ACK パルスが生成される。

4. 9 番目の SCL パルスの立ち下がりエッジで、PIR1 レジスタの MSSP 割り込みフラグビットSSPIFがセットされる(有効化されている場合、割り込みを発生させる )。

10 ビット アドレスモードの場合、スレーブは 2 バイトのアドレスを受信する必要があります。1 バイト目のアドレスバイトの上位 5 ビット (MSb) が、10 ビットアドレスであるかどうかを示します。スレーブデバイスがアドレスの 2 バイト目を受信するように、SSPSTATレジスタのR/Wビットでは書き込みを指定しておく必要があります。10 ビットアドレスの場合、1 バイト目の値は「11110 A9 A8 0」です。この「A9」と「A8」はアドレスの上位 2 ビット (MSb) です。10 ビットアドレス モードの動作シーケンスは以下の通りです。ただし、ステップ 7 ~ 9 はスレーブ トランスミッタの場合に実行されます。

1. アドレスバイトの 1 バイト目 ( 上位バイト ) を受信する (SSPSTAT レジスタの SSPIF、BF、UAビットがセットされる )。

2. SSPBUFレジスタを読み出し (BFビットがクリアされる )、フラグビット SSPIF をクリアする。

3. SSPADDレジスタをアドレスバイトの2バイト目( 下位バイト ) によって更新する (UA ビットがクリアされ SCL ラインが解放される )。

4. アドレスの 2 バイト目を受信する (SSPIF、BF、UA ビットがセットされる )。アドレスが一致した場合、次のステップまで SCL を保持する。それ以外の場合は SCL ラインを保持しない。

5. SSPBUFレジスタを読み出し (BFビットがクリアされる )、フラグビット SSPIF をクリアする。

6. SSPADD レジスタをアドレスの 1 バイト目 ( 上位バイト ) によって更新する。(UA ビットがクリアされ、保持されていた SCL ラインが解放される。)

7. リピートスタート条件を受信する。

8. R/Wビットがセットされたアドレスの 1バイト目( 上位バイト ) を受信する (SSPIF、BF、R/W ビットがセットされる )。

9. SSPBUFレジスタを読み出し (BFビットがクリアされる )、フラグビット SSPIF をクリアする。

10. スレーブが送信するバイトを SSPBUF に読み込み、BF ビットがセットされる。

11. CKP ビットをセットして、SCL を解放する。

Note: モジュールが適切に動作するように、SCLピンと SDA ピンに外部プルアップ抵抗の接続が必要となる場合があります。

DS41350D_JP - p. 152 Preliminary 2010 Microchip Technology Inc.

Page 153: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.3.2 受信

R/Wビットがクリアされた状態のアドレスバイトが一致した場合、SSPSTAT レジスタの R/W ビットがクリアされます。受信したアドレスは SSPBUF レジスタに読み込まれ、SDAラインがLowに保持されます (ACK)。

アドレスバイトのオーバーフロー条件が真の場合、ACK パルス (ACK) が生成されません。オーバーフロー条件の定義は、SSPSTAT レジスタの BF ビット、またはSSPCON1 レジスタのSSPOV ビットのいずれかがセットされている事です。

転送データのバイトごとにMSSP割り込みが発生します。PIR1レジスタのフラグビットSSPIFはソフトウェアによってクリアする必要があります。

SSPCON2 レジスタの SEN ビットがセットされている場合、各データの転送が完了するごとに、SCL がlowに保持(クロック ストレッチ)されます。SSPCON1レジスタの CKP ビットをセットしてクロックを解放する必要があります。詳細は 15.3.4「クロック ストレッチ」を参照してください。

15.3.3.3 送信

受信アドレスバイトのR/Wビットがセットされた状態でアドレスが一致すると、SSPSTAT レジスタの R/Wビットがセットされます。受信したアドレスはSSPBUF レジスタに読み込まれます。9 番目のビットで ACK パルスが送信され、SEN の状態にかかわらずSCK/SCL ピンが Low に保持されます (15.3.4「クロック ストレッチ」参照 )。このクロック ストレッチ動作によって、マスタはスレーブが送信データの準備を整えるまで、次のクロックパルスをアサートできなくなります。送信データは SSPBUF レジスタに読み込まれます。データはさらに SSPSR レジスタにも読み込まれます。次に、SSPCON1 レジスタの CKP ビットをセットして SCK/SCL ピンを解放します。8 ビットのデータがSCL入力の立ち下がりエッジでシフト出力されます。これによって、必ず SCL の High 期間に SDA信号が有効になります ( 図 15-9)。

マスタレシーバからの ACK パルスが 9 番目の SCL 入力パルスの立ち上がりエッジでラッチされます。SDAラインが High ( 非 ACK) の場合、データ送信は完了です。この場合、スレーブが ACK をラッチすると、スレーブのロジックはリセットされ (SSPSTAT レジスタをリセット )、次のスタートビットの監視を開始します。SDA ラインが Low (ACK) の場合、次の送信データを SSPBUF レジスタに読み込む必要があります。この場合も、CKP ビットをセットして SCK/SCL ピンを解放する必要があります。

転送データのバイトごとにMSSP割り込みが発生します。SSPIF ビットはソフトウェアによってクリアする必要があり、バイトの状態を判断するには SSPSTATレジスタを使用します。SSPIF ビットは 9 番目のクロックパルスの立ち下がりエッジでセットされます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 153

Page 154: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-8: SEN = 0の場合の I2C™ スレーブモードのタイミング (7 ビットアドレス モードの受信 )

SD

A

SC

L

SS

PIF

BF

(S

SP

STA

T<

0>

)

SS

PO

V (

SS

PC

ON

1<6>

)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

A7

A6

A5

A4

A3

A2

A1

D7

D6

D5

D4

D3

D2

D1

D0

D7

D6

D5

D4

D3

D1

D0

AC

KR

ece

ivin

g D

ata

AC

KR

ecei

ving

Dat

aR

/W =

0 AC

K

Re

ceiv

ing

Add

ress

Cle

ared

by

softw

are

SS

PB

UF

is r

ea

d

Bu

s m

ast

erte

rmin

ate

str

ans

fer

SS

PO

V is

se

tb

eca

use

SS

PB

UF

isst

ill fu

ll. A

CK

is n

ot s

ent.

D2 6

(PIR

1<

3>

)

CK

P(C

KP

doe

s no

t re

set

to ‘0

’ wh

en

SE

N =

0)

DS41350D_JP - p. 154 Preliminary 2010 Microchip Technology Inc.

Page 155: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-9: I2C™ スレーブモードのタイミング (7 ビットアドレス モードの送信 )

SD

A

SC

L

SS

PIF

(P

IR1<

3>)

BF

(S

SP

STA

T<

0>)

A6

A5

A4

A3

A2

A1

D6

D5

D4

D3

D2

D1

D0

12

34

56

78

23

45

67

89

SS

PB

UF

is w

ritte

n by

sof

twar

e

Cle

ared

by

softw

are

Fro

m S

SP

IF IS

R

Dat

a in

sa

mpl

ed

S

AC

KT

rans

mitt

ing

Dat

aR

/W =

0

AC

K

Rec

eivi

ng A

ddre

ss

A7

D7

91

D6

D5

D4

D3

D2

D1

D0

23

45

67

89

SS

PB

UF

is w

ritte

n by

sof

twar

e

Cle

ared

by

softw

are

Fro

m S

SP

IF IS

R

Tra

nsm

ittin

g D

ata

D7 1

CK

P

P

AC

K

CK

P is

set

by

softw

are

CK

P is

set

by

softw

are

SC

L he

ld lo

ww

hile

CP

Ure

spon

ds to

SS

PIF

SS

PB

UF

is r

ead

by s

oftw

are

Bus

mas

ter

term

inat

es s

oftw

are

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 155

Page 156: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-10: SEN = 0の場合の I2C™ スレーブモードのタイミング (10 ビットアドレス モードの受信 )

SD

A

SC

L

SS

PIF

BF

(S

SP

STA

T<

0>

)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

11

11

0A

9A

8A

7A

6A

5A

4A

3A

2A

1A

0D

7D

6D

5D

4D

3D

1D

0

Rec

eiv

e D

ata

Byt

e

AC

K

R/W

= 0 AC

K

Rec

eiv

e F

irst B

yte

of A

ddre

ss

Cle

are

d b

y so

ftwa

re

D2

6

(PIR

1<

3>

)

Cle

are

d b

y so

ftwa

re

Rec

eiv

e S

eco

nd

Byt

e o

f Add

ress

Cle

are

d b

y h

ardw

are

wh

en S

SP

AD

D is

upd

ate

dw

ith lo

w b

yte

of a

ddre

ss

UA

(S

SP

STA

T<

1>

)

Clo

ck is

he

ld lo

w u

ntil

upd

ate

of S

SP

AD

D h

as

take

n pl

ace

UA

is s

et in

dica

ting

that

the

SS

PA

DD

ne

eds

to b

eu

pda

ted

UA

is s

et in

dica

ting

that

SS

PA

DD

ne

eds

to b

eu

pda

ted

Cle

are

d by

har

dwa

re w

hen

SS

PA

DD

is u

pda

ted

with

hig

hb

yte

of a

ddre

ss

SS

PB

UF

is w

ritte

n w

ithco

nten

ts o

f SS

PS

RD

um

my

read

of

SS

PB

UF

to c

lear

BF

fla

g

AC

K

CK

P

12

34

57

89

D7

D6

D5

D4

D3

D1

D0

Rec

eiv

e D

ata

Byt

e

Bu

s m

aste

rte

rmin

ate

str

ansf

er

D2 6

AC

K

Cle

are

d b

y so

ftwa

reC

lear

ed

by

softw

are

SS

PO

V (

SS

PC

ON

1<6>

)

SS

PO

V is

se

tb

eca

use

SS

PB

UF

isst

ill fu

ll. A

CK

is n

ot s

ent.

(CK

P d

oe

s n

ot r

ese

t to

‘0’ w

he

n S

EN

= 0

)

Clo

ck is

hel

d lo

w u

ntil

up

date

of

SS

PA

DD

ha

s ta

ken

pla

ce

DS41350D_JP - p. 156 Preliminary 2010 Microchip Technology Inc.

Page 157: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-11: I2C™ スレーブモードのタイミング (10 ビットアドレス モードの送信 )

SD

A

SC

L

SS

PIF

BF

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

11

11

0A

9A

8A

7A

6A

5A

4A

3A

2A

1A

01

11

10

A8

R/W

=1 A

CK

AC

K

R/W

= 0

AC

K

Rec

eive

Firs

t B

yte

of A

ddre

ss

Cle

are

d in

sof

twa

re

Bus

Mas

ter

send

s S

top

cond

ition

A9

6

Rec

eiv

e S

eco

nd

Byt

e o

f A

ddre

ss

Cle

are

d b

y ha

rdw

are

wh

enS

SP

AD

D is

upd

ate

d w

ith lo

wby

te o

f ad

dres

s.

UA

Clo

ck is

hel

d lo

w u

ntil

up

date

of

SS

PA

DD

ha

s ta

ken

pla

ce

UA

is s

et in

dica

ting

that

the

SS

PA

DD

ne

eds

to b

eu

pda

ted

UA

is s

et in

dica

ting

that

SS

PA

DD

ne

eds

to b

eu

pdat

ed

Cle

are

d b

y h

ardw

are

whe

nS

SP

AD

D is

up

date

d w

ith h

igh

byt

e o

f add

ress

.

SS

PB

UF

is w

ritte

n w

ithco

nte

nts

of S

SP

SR

Du

mm

y re

ad o

f S

SP

BU

Fto

cle

ar B

F f

lag

Rec

eive

Firs

t B

yte

of

Add

ress

12

34

57

89

D7

D6

D5

D4

D3

D1

AC

K

D2

6

Tra

nsm

ittin

g D

ata

Byt

e

D0

Du

mm

y re

ad o

f S

SP

BU

Fto

cle

ar B

F f

lag

Sr

Cle

are

d in

so

ftwa

re

Writ

e o

f S

SP

BU

F

Cle

ared

in s

oftw

are

Com

ple

tion

of

clea

rs B

F fl

ag

CK

P

CK

P is

se

t in

softw

are,

initi

ate

s tr

an

smis

sio

n

CK

P is

au

tom

atic

ally

cle

are

d in

har

dw

are

hol

din

g S

CL

low

Clo

ck is

he

ld lo

w u

ntil

up

date

of

SS

PA

DD

ha

sta

ken

pla

ce

data

tran

smis

sion

Clo

ck is

hel

d lo

w u

ntil

CK

P is

set

to 「

1」

Bu

s M

aste

rse

nds

Res

tart

sco

ndi

tion

Dum

my

rea

d o

f SS

PB

UF

to c

lea

r B

F fl

ag

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 157

Page 158: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.3.4 SSP マスクレジスタ

I2C スレーブモードのアドレス比較動作において、SSPSR レジスタに保持されている値を SSP マスクレジスタ (SSPMSK) によってマスクできます。SSPMSKレジスタ内のゼロ (「0」) のビットは、SSPSR レジスタ内の対応するビットを「ドントケア」にする効果があります。

このレジスタは、全てのリセット条件で全ビットが「1」にリセットされるため、ユーザがマスク値を書き込まない限り、標準のSSP動作には影響を与えません。

このレジスタの設定は、SSPM<3:0> ビットをセットして I2C スレーブモード (7 ビットまたは 10 ビットアドレス)を選択する前に完了しておく必要があります。

SSP マスクレジスタは以下の場合に適用されます。

• 7 ビットアドレス モード : アドレス A<7:1> を比較する。

• 10 ビットアドレス モード : アドレス A<7:0> のみを比較する。アドレスの 1 バイト目 ( 上位バイト ) の受信時は、SSP マスクが適用されない。

レジスタ 15-6: SSPMSK: SSP マスクレジスタ

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0(1)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-1 MSK<7:1>: マスクビット

1 = 受信アドレス bit n を SSPADD<n> と比較して I2C アドレス一致を検出する0 = 受信アドレス bit n を I2C アドレス一致の検出に使用しない

bit 0 MSK<0>: 10 ビットアドレスの I2C スレーブモードに使用するマスクビット (1)

I2C スレーブモード、10 ビットアドレス (SSPM<3:0> = 0111):1 = 受信アドレス bit 0 を SSPADD<0> と比較して I2C アドレス一致を検出する0 = 受信アドレス bit 0 を I2C アドレス一致の検出に使用しない

Note 1: MSK0 ビットは 10 ビットのスレーブモードでのみ使用します。その他の全てのモードでは、このビットは無視されます。

DS41350D_JP - p. 158 Preliminary 2010 Microchip Technology Inc.

Page 159: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 15-7: SSPADD: MSSP アドレス /baud レート レジスタ (I2C モード )

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

ADD7 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

マスタモード :

bit 7-0 ADD<7:0>: baud レート クロック分周ビットSCL ピンクロック周期 = ((ADD<7:0> + 1) *4)/FOSC

10 ビット スレーブモード - 上位アドレスバイト :

bit 7-3 未使用 : 上位アドレスバイトとしては使用しません。このレジスタのビット状態は「ドントケア」です。マスタが送信するビットパターンは I2C 仕様によって「11110」に固定されているためです。これらのビットに対してもハードウェアによる比較は実行されますが、このレジスタの値は比較結果に影響を与えません。

bit 2-1 ADD<9:8>: 10 ビットアドレスの上位 2 ビット

bit 0 未使用 : このモードでは使用しません。ビット状態は「ドントケア」です。

10 ビット スレーブモード - 下位アドレスバイト :

bit 7-0 ADD<7:0>: 10 ビットアドレスの下位 8 ビット

7 ビット スレーブモード :

bit 7-1 ADD<6:0>: 7 ビットのアドレス

bit 0 未使用 : このモードでは使用しません。ビット状態は「ドントケア」です。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 159

Page 160: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.4 クロック ストレッチ

7 ビットと 10 ビットの両スレーブモードは、送信シーケンス実行中の自動クロック ストレッチ機能を実装します。

SSPCON2 レジスタの SEN ビットによって、受信時のクロック ストレッチが有効になります。SEN ビットをセットすると、データ受信シーケンスが終了するごとに SCL ピンが Low に保持されます。

15.3.4.1 7 ビットスレーブ受信モードのクロック ストレッチ (SEN = 1)

7 ビットスレーブ受信モードでは、ACK シーケンスの後、9 番目のクロックの立ち下がりエッジで BF ビッ

トがセットされている場合、SSPCON1 レジスタのCKP ビットが自動的にクリアされます。これによって、SCL 出力が強制的に Low に保持されます。CKPを「0」にクリアすると、SCL ラインが Low にアサートされます。受信を継続するには、ユーザ割り込みサービスルーチン (ISR)内でCKPビットをセットする必要があります。SCL ラインを Low に保持する事で、マスタデバイスが次のデータ転送シーケンスを開始する前に、ユーザ ISR の処理と SSPBUF の内容読み出しの時間を確保できます。これによって、バッファ オーバーランを防止します ( 図 15-13 参照 )。

15.3.4.2 10 ビットスレーブ受信モードのクロック ストレッチ (SEN = 1)

10 ビットスレーブ受信モードのアドレス シーケンスでは、クロック ストレッチが自動的に実行されますが、CKP はクリアされません。この場合、もし 9 番目のクロック後に UA ビットがセットされていると、クロック ストレッチが開始されます。UA ビットがセットされるのは、10 ビットアドレスの上位バイトを受信した後に、R/W ビットが「0」にクリアされている下位バイトを受信した後です。クロックラインは SSPADD を更新した時点で解放されます。クロック ストレッチは、7 ビットモードと同様に、データ受信のシーケンスごとに発生します。

15.3.4.3 7 ビットスレーブ送信モードのクロック ストレッチ

7 ビットスレーブ送信モードでは、9 番目のクロックの立ち下がりエッジ後に CKP ビットをクリアする事でクロック ストレッチを実現します。この動作は、SEN ビットの状態にかかわらず実行されます。

送信を継続するには、ユーザ ISR によって CKP ビットをセットする必要があります。SCL ラインを Low に保持する事で、マスタデバイスが次のデータ転送シーケンスを開始する前に、ユーザ ISR の処理と SSPBUFの内容読み込みの時間を確保できます(図 15-9参照)。

15.3.4.4 10 ビットスレーブ送信モードのクロック ストレッチ

10 ビットスレーブ送信モード開始後、 初の 2 つのアドレスのシーケンスにおけるクロック ストレッチは、10ビットスレーブ受信モードの場合と同様に、UAビットの状態によって制御されます。これに続く 3 番目のアドレス シーケンスには、10 ビットアドレスの上位ビットと「1」にセットされた R/W ビットが含まれます。3番目のアドレス シーケンス以降UAビットはセットされず、モジュールが送信モードに設定されて、クロック ストレッチは7ビットスレーブ送信モードと同様に、ハードウェアが CKP をクリアする自動実行に切り換わります ( 図 15-11 参照 )。

Note 1: ユーザが 9 番目のクロックの立ち下がりエッジよりも前にSSPBUFの内容を読み出したために BF ビットがクリアされた場合、CKP ビットはクリアされず、クロック ストレッチは実行されません。

2: CKP ビットは、BF ビットの状態にかかわらずソフトウェアによってセットできます。ユーザ ISR 内で次の受信シーケンスの前に BF ビットをクリアする場合、オーバーフロー条件を生じないように慎重にコードを実装する必要があります。

Note 1: ユーザが 9 番目のクロックの立ち下がりエッジよりも前にSSPBUFの内容を読み込んだために BF ビットがセットされた場合、CKP ビットはクリアされず、クロック ストレッチは実行されません。

2: CKP ビットは、BF ビットの状態にかかわらずソフトウェアによってセットできます。

DS41350D_JP - p. 160 Preliminary 2010 Microchip Technology Inc.

Page 161: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.4.5 クロック同期と CKP ビット

CKP ビットがクリアされると、SCL 出力は強制的に「0」になります。ただし、CKP ビットをクリアしても、SCL 出力が Low にサンプリングされるまで、SCL出力の Low はアサートされません。従って、外部のI2CマスタデバイスがSCLラインをアサートするまで、CKP ビットは SCL ラインをアサートしません。CKPビットがセットされ、かつ I2C バス上の他のデバイスの SCL が全てデアサートされるまで SCL 出力は Lowのままです。このため、CKP ビットへの書き込みによって SCL の High 期間が規格下限を下回る事を防止できます ( 図 15-12 参照 )。

図 15-12: クロック同期のタイミング

SDA

SCL

DX – 1DX

WR

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

SSPCON1

CKP

Master devicedeasserts clock

Master deviceasserts clock

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 161

Page 162: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-13: SEN = 1の場合の I2C™ スレーブモードのタイミング (7 ビットアドレス モードの受信 )

SD

A

SC

L

SS

PIF

BF

(S

SP

STA

T<

0>)

SS

PO

V (

SS

PC

ON

1<6>

)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

A7

A6

A5

A4

A3

A2

A1

D7

D6

D5

D4

D3

D2

D1

D0

D7

D6

D5

D4

D3

D1

D0

AC

KR

ece

ivin

g D

ata

AC

KR

ece

ivin

g D

ata

R/W

= 0 AC

K

Re

ceiv

ing

Ad

dres

s

Cle

are

d b

y so

ftwa

re

SS

PB

UF

is r

ead

Bu

s m

aste

rte

rmin

ate

str

an

sfe

r

SS

PO

V is

set

beca

use

SS

PB

UF

isst

ill fu

ll. A

CK

is n

ot s

ent

.

D2 6

(PIR

1<3>

)

CK

P

CK

Pw

ritte

nto

‘1’ i

nIf

BF

is c

lear

ed

prio

r to

the

falli

ng

edg

e o

f th

e 9

th c

lock

,C

KP

will

no

t be

res

et

to ‘0

’ and

no

clo

ckst

retc

hing

will

occ

ur

soft

war

e

Clo

ck is

he

ld lo

w u

ntil

CK

P is

se

t to

‘1’

Clo

ck is

no

t hel

d lo

wbe

cau

se b

uffe

r fu

ll b

it is

cl

ear

prio

r to

fal

ling

ed

ge

of 9

th c

lock

Clo

ck is

not

he

ld lo

wbe

cau

se A

CK

= 1

BF

is s

et a

fter

falli

ng

ed

ge o

f th

e 9

th c

lock

,C

KP

is r

ese

t to

‘0’ a

nd

cloc

k st

retc

hing

occ

urs

DS41350D_JP - p. 162 Preliminary 2010 Microchip Technology Inc.

Page 163: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-14: SEN = 1の場合の I2C™ スレーブモードのタイミング (10 ビットアドレス モードの受信 )

SD

A

SC

L

SS

PIF

BF

(S

SP

STA

T<

0>)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

11

11

0A

9A

8A

7A

6A

5A

4A

3A

2A

1A

0D

7D

6D

5D

4D

3D

1D

0

Rec

eiv

e D

ata

Byt

e

AC

K

R/W

= 0

AC

K

Rec

eive

Fir

st B

yte

of A

ddre

ss

Cle

ared

by

softw

are

D2 6

(PIR

1<3>

)

Cle

ared

by

softw

are

Rec

eiv

e S

eco

nd

Byt

e o

f A

ddre

ss

Cle

are

d by

har

dwa

re w

hen

SS

PA

DD

is u

pda

ted

with

low

byt

e of

add

ress

afte

r fa

lling

ed

ge

UA

(S

SP

STA

T<

1>)

Clo

ck is

hel

d lo

w u

ntil

upda

te o

f SS

PA

DD

ha

s ta

ken

plac

e

UA

is s

et in

dica

ting

that

the

SS

PA

DD

ne

eds

to b

eu

pda

ted

UA

is s

et in

dica

ting

that

SS

PA

DD

nee

ds t

o b

eup

date

d

Cle

are

d b

y h

ardw

are

whe

nS

SP

AD

D is

up

date

d w

ith h

igh

byt

e o

f ad

dre

ss a

fter

falli

ng

ed

ge

SS

PB

UF

is w

ritte

n w

ithco

nte

nts

of

SS

PS

RD

um

my

read

of

SS

PB

UF

to c

lear

BF

fla

g

AC

K

CK

P

12

34

57

89

D7

D6

D5

D4

D3

D1

D0

Re

ceiv

e D

ata

Byt

e

Bus

mas

ter

term

inat

es

tra

nsfe

r

D2 6

AC

K

Cle

are

d b

y so

ftwa

reC

lea

red

by

softw

are

SS

PO

V (

SS

PC

ON

1<6>

)

CK

P w

ritte

n to

「1」

No

te:

9番目のクロックの立ち下がりエ

ッジよりも前に

SS

PA

DDレジスタを更新した場合、

UAは変化せ

ずセットされたままになります。

No

te:

9番目のクロックの立ち下が

りエッジよりも前に

SS

PA

DD

レジスタを更新した場合、

UA

は変

化せ

ずセ

ット

され

たま

まになります。

BY

SO

FT

WA

RE

Clo

ck is

hel

d lo

w u

ntil

upda

te o

f SS

PA

DD

ha

s ta

ken

plac

e of n

inth

clo

cko

f nin

th c

lock

SS

PO

V is

se

tbe

caus

e S

SP

BU

F is

still

full.

AC

K is

no

t se

nt.

Du

mm

y re

ad o

f S

SP

BU

Fto

cle

ar B

F f

lag

Clo

ck is

he

ld lo

w u

ntil

CK

P is

set

to 「1」

Clo

ck is

no

t he

ld lo

wb

eca

use

AC

K =

1

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 163

Page 164: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.5 ジェネラルコール アドレスのサポート

通常の I2C バスアドレッシング手順では、スタート条件後の最初のバイトは、マスタがスレーブとするデバイスのアドレスを指定します。例外は、全てのデバイスのアドレスを指定するジェネラルコール アドレスです。このアドレスが使用された場合、理論上、全てのデバイスが ACK を返す必要があります。

I2C プロトコルでは、特定の目的のために 8 つのアドレスが予約されています。ジェネラルコール アドレスは、そのうちの 1 つです。そのアドレス値は、R/W = 0 も含め、全て「0」です。

ジェネラルコール アドレスが認識されるのは、SSPCON2 レジスタの GCEN ビットがセットされている場合です。スタートビットの検出に続き、8 ビットが SSPSR にシフト入力され、アドレスが SSPADDと比較されます。値はジェネラルコール アドレスとも比較され、ハードウェア内に固定されます。

ジェネラルコール アドレスに一致した場合、SSPSR がSSPBUF に転送され、フラグビット BF がセットされた後 (8 番目のビット )、9 番目のビット (ACK ビット )の立ち下がりエッジで割り込みフラグビット SSPIF がセットされます。

割り込みを処理する場合、割り込み要因は SSPBUF の内容を読み出す事で確認できます。値は、アドレスがデバイス固有か、ジェネラルコール アドレスのいずれであるかの判断に使用できます。

10 ビットモードでは、アドレスの後半部分も比較するために SSPADD を後半部分によって更新する必要があり、SSPSTAT レジスタの UA ビットがセットされます。スレーブが 10 ビットアドレス モードで設定されていて、GCEN ビットがセットされた状態でジェネラルコール アドレスがサンプリングされた場合、アドレスの後半部分は不要です。UA ビットはセットされず、スレーブは ACK 送信後、データの受信を開始します ( 図 15-15)。

図 15-15: スレーブモードのジェネラルコール アドレス シーケンス (7 または 10 ビットアドレスモード )

SDA

SCL

S

SSPIF

BF (SSPSTAT<0>)

SSPOV (SSPCON1<6>)

Cleared by software

SSPBUF is read

R/W = 0

ACKGeneral Call Address

Address is compared to General Call Address

GCEN (SSPCON2<7>)

Receiving Data ACK

1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9

D7 D6 D5 D4 D3 D2 D1 D0

after ACK, set interrupt

‘0’

‘1’

DS41350D_JP - p. 164 Preliminary 2010 Microchip Technology Inc.

Page 165: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.6 マスタモード

マスタモードは、SSPCON1 の該当する SSPM ビットをセットまたはクリアし、SSPEN ビットをセットする事で有効になります。マスタモードでは、SCL ラインと SDA ラインが MSSP ハードウェアによって制御されます。

マスタモードは、スタート条件とストップ条件検出時に発生する割り込みに基づいて動作します。ストップビット (P) とスタートビット (S) は、リセット時または MSSP モジュールが無効になるとクリアされます。I2C バスの制御権は、P ビットがセットされた場合、またはSビットとPビットの両方がクリアされてバスがアイドル状態になった場合に取得できます。

ファームウェア制御マスタモードの場合、ユーザコードが全ての I2C バス動作をスタートビット条件とストップビット条件に基づいて制御します。

マスタモードを有効にした上で、ユーザは以下の 6 つの動作を選択できます。

1. SDAとSCL上にスタート条件をアサートする。

2. SDA と SCL 上にリピートスタート条件をアサートする。

3. SSPBUF レジスタに書き込み、データ / アドレスの送信を開始する。

4. I2C ポートをデータ受信モードに設定する。

5. 受信データバイトの終端に ACK 条件を生成する。

6. SDAとSCL上にストップ条件をアサートする。

以下のイベントは SSP 割り込みフラグビット SSPIFをセットします (有効化されていればSSP割り込みが実行されます )。

• スタート条件

• ストップ条件

• データ転送バイトの送信 / 受信

• ACK の送信

• リピートスタート

図 15-16: MSSP のブロック図 (I2C™ マスタモード )

Note: I2Cマスタモードに設定したMSSPモジュールではイベントをキューに入れる事ができません。例えばスタート条件を開始した後、その完了を待たずに SSPBUF レジスタに書き込んで送信を開始する事はできません。この場合 SSPBUF に値は書き込まれず、その事を示すWCOLビットがセットされます。

Read Write

SSPSR

Start bit, Stop bit,

SSPBUF

InternalData Bus

Set/Reset, S, P, WCOL

ShiftClock

MSb LSb

SDA

AcknowledgeGenerate

Stop bit DetectWrite Collision Detect

Clock ArbitrationState Counter forend of XMIT/RCV

SCL

SCL In

Bus Collision

SDA In

Rec

eive

Ena

ble

Clo

ck C

ntl

Clo

ck A

rbitr

ate/

WC

OL

Det

ect

(ho

ld o

ff cl

ock

sou

rce

)

SSPADD<6:0>

Baud

Set SSPIF, BCLIFReset ACKSTAT, PEN

RateGenerator

SSPM<3:0>

Start bit Detect

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 165

Page 166: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.6.1 I2C マスタモード動作

マスタデバイスは、シリアルクロック パルス、スタート条件、ストップ条件の全てを生成します。転送は、ストップ条件またはリピートスタート条件によって終了します。リピートスタート条件では、次のシリアル転送も開始されるため I2C バスは解放されません。

マスタ トランスミッタ モードでは、SCL に出力されるシリアルクロックと共に、SDA からシリアルデータが出力されます。送信される 初のバイトには、受信デバイスのスレーブアドレス(7ビット)と、Read/Write(R/W) ビットが含まれます。この場合、R/W ビットの値はロジック「0」です。シリアルデータは一度に 8ビットずつ送信されます。各バイトの送信後は、ACKビットを受信します。スタート条件とストップ条件とは、シリアル転送の開始と終了を示す出力です。

マスタ受信モードの場合、バスに送信される 初のバイトには、送信デバイスのスレーブアドレス (7 ビット ) とR/W ビットが含まれます。この場合、R/W ビットの値はロジック「1」です。従って、先頭バイトとして、7ビットのスレーブアドレスの後に受信ビットを示す「1」が付加された値が送信されます。SDA からシリアルデータを受信しながら、SCL からはシリアルクロックを出力します。シリアルデータは一度に 8 ビットずつ受信されます。1 バイトを受信するごとに、ACKビットを送信します。スタート条件とストップ条件は、送信の開始と終了を示します。

SCL に出力されるクロックの周波数は baud レートジェネレータによって設定します。詳細は15.3.7「baudレート」を参照してください。

代表的な送信シーケンスは、以下のように進行します。

1. ユーザが SSPCON2 レジスタの SEN ビットをセットしてスタート条件を生成する。

2. SSPIF がセットされる。MSSP モジュールは、必要なスタート時間が経過するまで待機してから、他の動作を実行する。

3. ユーザが、送信するスレーブアドレスをSSPBUF に読み込む。

4. アドレスの8ビットが全て送信されるまでSDAピンからシフト出力する。

5. MSSP モジュールがスレーブデバイスからのACK ビットをシフト入力し、SSPCON2 レジスタの ACKSTAT ビットにその値を書き込む。

6. MSSP モジュールが、9 番目のクロックサイクルの終端でSSPIFビットをセットして割り込みを生成する。

7. ユーザが SSPBUF に 8 ビットのデータを読み込む。

8. データの8ビットが全て送信されるまでSDAピンからシフト出力する。

9. MSSP モジュールがスレーブデバイスからのACK ビットをシフト入力し、SSPCON2 レジスタの ACKSTAT ビットにその値を書き込む。

10. MSSP モジュールが、9 番目のクロックサイクルの終端でSSPIFビットをセットして割り込みを生成する。

11. ユーザが SSPCON2 レジスタの PEN ビットをセットしてストップ条件を生成する。

12. ストップ条件が完了すると割り込みが生成される。

DS41350D_JP - p. 166 Preliminary 2010 Microchip Technology Inc.

Page 167: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.7 baud レート

I2C マスタモードでは、SSPADD レジスタに baud レート ジェネレータ (BRG) の再読み込み値が格納されます(図 15-17)。SSPBUFへの書き込みが実行されると、baud レート ジェネレータが自動的にカウントを開始します。

一定の動作が完了すると(すなわち、 後のデータビットに続いて ACK が送信されると )、内部クロックが自動的にカウントを停止し、SCL ピンは 後の状態を保持します。

表 15-3 に、命令サイクルに基づくクロック速度とSSPADD に読み込まれる BRG の値を示します。

式 15-1:

図 15-17: baud レート ジェネレータのブロック図

表 15-3: I2C™ クロック速度と BRG

FSCLFOSC

SSPADD 1+ 4 ----------------------------------------------=

SSPM<3:0>

BRG Down CounterCLKOUT FOSC/2

SSPADD<7:0>

SSPM<3:0>

SCL

Reload

Control

Reload

FOSC FCY BRG 時の値FSCL

(BRG のロールオーバー 2 回 )

48 MHz 12 MHz 0Bh 1 MHz(1)

48 MHz 12 MHz 1Dh 400 kHz

48 MHz 12 MHz 77h 100 kHz

40 MHz 10 MHz 18h 400 kHz(1)

40 MHz 10 MHz 1Fh 312.5 kHz

40 MHz 10 MHz 63h 100 kHz

16 MHz 4 MHz 09h 400 kHz(1)

16 MHz 4 MHz 0Ch 308 kHz

16 MHz 4 MHz 27h 100 kHz

4 MHz 1 MHz 02h 333 kHz(1)

4 MHz 1 MHz 09h 100 kHz

4 MHz 1 MHz 00h 1 MHz(1)

Note 1: この I2C インターフェイスは、400 kHz I2C 仕様 (100 kHz よりも高速のバスに適用される仕様 ) に厳密には準拠していません。ただし、アプリケーションがより高速のクロックを必要としている場合、十分な注意を払う事で使用できる可能性があります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 167

Page 168: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.7.1 クロック アービトレーション

全ての送受信またはリピートスタート / ストップ条件の処理中に、マスタがSCLピンをデアサートする (SCLのフローティング High を許可する ) と、クロック アービトレーションが発生します。SCL ピンのフローティング High が許可されても、実際に High がサンプリングされるまで baud レート ジェネレータ (BRG) のカウントは中断されます。SCL ピンで High がサンプリングされると、baud レート ジェネレータに SSPADD<6:0>の内容が再度読み込まれ、カウントが始まります。外部デバイスによってクロックが Low に保持されていたとしても、上記の動作によって、SCL の High 期間が短でも BRG のロールオーバー 1 回分確保されます( 図 15-18)。

図 15-18: クロック アービトレーションを伴う baud レート ジェネレータのタイミング

SDA

SCL

SCL deasserted but slave holds

DX – 1DX

BRG

SCL is sampled high, reload takesplace and BRG starts its count

03h 02h 01h 00h (hold off) 03h 02h

Reload

BRGValue

SCL low (clock arbitration)SCL allowed to transition high

BRG decrements onQ2 and Q4 cycles

DS41350D_JP - p. 168 Preliminary 2010 Microchip Technology Inc.

Page 169: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.8 I2C マスタモードのスタート条件のタイミング

スタート条件を開始するには、SSPCON2 レジスタのスタート イネーブルビットSENをセットします。SDAピンとSCLピンでHighがサンプリングされると、baudレート ジェネレータにSSPADD<6:0>の内容が再度読み込まれ、カウントが始まります。baud レート ジェネレータがタイムアウトした時に (TBRG)、SCLとSDAの両方で High がサンプリングされると、SDA ピンがLow に駆動されます。SCL が High の間に SDA を Lowに駆動する動作はスタート条件となり、SSPSTAT1 レジスタの S ビットがセットされます。続いて、baudレート ジェネレータにSSPADD<7:0>の内容が再度読み込まれ、カウントが再開します。baud レート ジェネレータがタイムアウトすると (TBRG)、SSPCON2 レジスタの SEN ビットがハードウェアによって自動的にクリアされ、baud レート ジェネレータが一時停止状態になります。これによって SDA ラインが Low に保持されスタート条件が終了します。

15.3.8.1 WCOL ステータスフラグ

スタート シーケンスの実行中にユーザが SSPBUF に書き込むと、WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

図 15-19: 初のスタートビットのタイミング

Note: スタート条件の開始時に既に SDA ピンとSCL ピンで Low がサンプリングされていた場合、あるいはスタート条件で SDA ラインが Low に駆動される前に SCL ラインで Low がサンプリングされた場合、バスコリジョンが発生します。その場合、バスコリジョン割り込みフラグ BCLIF がセットされて、スタート条件は中止され、I2Cモジュールはアイドル状態にリセットされます。

Note: イベントをキューに保存する事はできないため、スタート条件が終了するまで、SSPCON2 の下位 5 ビットには書き込む事ができません。

SDA

SCL

S

TBRG

1st bit 2nd bit

TBRG

SDA = 1, At completion of Start bit,SCL = 1

Write to SSPBUF occurs hereTBRG

hardware clears SEN bit

TBRG

Write to SEN bit occurs hereSet S bit (SSPSTAT<3>)

and sets SSPIF bit

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 169

Page 170: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.9 I2C マスタモードのリピートスタート条件のタイミング

リピートスタート条件は、SSPCON2 レジスタのRSEN ビットが High にプログラムされ、I2C ロジックモジュールがアイドル状態の場合に発生します。RSEN ビットがセットされると、SCL ピンが Low にアサートされます。SCL ピンで Low がサンプリングされると、baud レート ジェネレータに値が読み込まれカウントが始まります。baud レート ジェネレータの 1 ロールオーバー カウントの間 (TBRG)、SDA ピンは解放されます (High になります )。baud レート ジェネレータがタイムアウトした時に SDA で High がサンプリングされると、SCL ピンがデアサートされます(High になります )。SCL ピンで High がサンプリングされると、baud レート ジェネレータに値が読み込まれカウントが始まります。SDA と SCL は TBRG の 1回分の間、High をサンプリングする必要があります。この動作に続いて、SCL が high の間に、SDA ピンをTBRG の 1 回分の間アサート (SDA = 0) します。続いて SSPCON2 レジスタの RSEN ビットが自動的にクリアされる事で、baud レート ジェネレータには値が再度読み込まれず、SDA ピンが Low に保持されます。SDAピンとSCLピンのスタート条件が検出されると、ただちに SSPSTAT レジスタの S ビットがセットされます。SSPIF ビットは、baud レート ジェネレータがタイムアウトするまでセットされません。

SSPIF ビットがセットされた後、ユーザはすぐにSSPBUF に対して、7 ビットモードでは 7 ビットのアドレスを、10 ビットモードでは既定値の 1 番目のアドレスを書き込む事ができます。 初の 8 ビットを送信し ACK を受信したら、ユーザはアドレスの残り 8 ビット (10 ビットモード ) または 8 ビットのデータ (7 ビットモード ) を送信できます。

15.3.9.1 WCOL ステータスフラグ

リピートスタート シーケンスの実行中にユーザがSSPBUF に書き込むと、WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

図 15-20: リピートスタート条件の波形

Note 1: 他のイベントの発生中に RSEN をプログラムしても効果はありません。

2: 以下のような方法でリピートスタート条件が発生すると、バスコリジョンが発生します。

• SCL が Low から High に遷移する時にSDA で Low がサンプリングされる。

• SDA で Low がアサートされる前にSCL が Low に遷移する。これは、他のマスタがデータ「1」を送信しようとしている可能性を示している。

Note: イベントをキューに保存する事はできないため、リピートスタート条件が終了するまで、SSPCON2 の下位 5 ビットには書き込む事ができません。

SDA

SCL

Sr = Repeated Start

Write to SSPCON2

Write to SSPBUF occurs hereon falling edge of ninth clock,end of Xmit

At completion of Start bit, hardware clears RSEN bit

1st bit

S bit set by hardware

TBRG

TBRG

SDA = 1,

SDA = 1,

SCL (no change).

SCL = 1occurs here.

TBRG TBRG TBRG

and sets SSPIF

RSEN bit set by hardware

DS41350D_JP - p. 170 Preliminary 2010 Microchip Technology Inc.

Page 171: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.10 I2C マスタモード送信

データバイト、7 ビットアドレス、10 ビットアドレスの後半の値は、単に SSPBUF レジスタに書き込むだけで送信できます。書き込み動作によってバッファフルフラグビット BF がセットされ、baud レート ジェネレータのカウントと共に次の送信が開始されます。SCLの立ち下がりエッジのアサート後、アドレス /データの各ビットはSDAピンにシフト出力されます (データホールド時間仕様のパラメータ SP106 参照 )。SCLは baudレート ジェネレータのロールオーバー カウント 1 回分の間 (TBRG)、Low に保持されます。データはSCLがHighに解放されるまでは有効です(データ セットアップ時間仕様のパラメータ SP107 参照 )。SCL ピンは High に解放された後、TBRG の間、その状態を保持します。SDA ピン上のデータは、この期間と、SCLの次の立ち下がりエッジから一定のホールド時間の間、安定に保つ必要があります。8 番目のビットのシフト出力後(8番目のクロックの立ち下がりエッジ後)、BF フラグがクリアされマスタは SDA を解放します。SDA が解放されたため、アドレスを指定されたスレーブデバイスは 9 番目のビット期間に ACK ビットを返す事ができます ( このビットを返すのは、アドレスが一致するかデータが適切に受信された場合です )。ACKの状態は、9 番目のクロックの立ち下がりエッジでACKDT ビットに書き込まれます。マスタが ACK を受信すると、ACK ステータスビット ACKSTAT がクリアされます。ACK を受信しなかった場合、このビットがセットされます。9 番目のクロックの後、SSPIF ビットがセットされ、マスタクロック (baud レート ジェネレータ )は次のデータバイトがSSPBUFに読み込まれるまで一時停止し、SCL は Low、SDA はそのままの状態を保持します ( 図 15-21)。

SSPBUF に書き込むと、アドレスの各ビットが SCLの立ち下がりエッジでシフト出力されます。シフト動作は、7 ビットのアドレスと R/W ビットが全て出力されるまで続きます。8 番目のクロックの立ち下がりエッジでマスタは SDA ピンをデアサートし、スレーブが ACK を返せるようにします。9 番目のクロックの立ち下がりエッジでマスタは SDA ピンをサンプリングし、スレーブがアドレスを認識できたかどうかを確認します。ACK ビットの状態は、SSPCON2 レジスタのステータスビット ACKSTAT に読み込まれます。アドレス送信の9番目のクロックが立ち下がると、SSPIFがセットされ、BF フラグがクリアされます。これによって次に SSPBUF への書き込みが実行されるまでbaud レート ジェネレータが OFF になり、SCL が Lowに保持され、SDA はフローティング状態になります。

15.3.10.1 BF ステータスフラグ

送信モードの場合、SSPSTAT レジスタの BF ビットは、CPU が SSPBUF に書き込むとセットされ、8 ビットが全てシフト出力された時点でクリアされます。

15.3.10.2 WCOL ステータスフラグ

送信が既に開始された状態で(すなわち、SSPSRがデータバイトをシフト出力している間に )、ユーザがSSPBUF に書き込むと、WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

WCOLは次の送信を実行する前にソフトウェアによってクリアする必要があります。

15.3.10.3 ACKSTAT ステータスフラグ

送信モードの場合、SSPCON2 レジスタの ACKSTATビットは、スレーブが肯定応答 (ACK = 0) を送信するとクリアされ、肯定応答しない場合 (ACK = 1) にセットされます。スレーブは自分のアドレス ( またはジェネラルコール ) を検出するか、自分宛のデータを正常に受信した時に ACK を送信します。

15.3.11 I2C マスタモード受信

マスタモードの受信は、SSPCON2 レジスタの受信イネーブルビットRCENをプログラムすると有効になります。

baud レート ジェネレータがカウントを開始すると、ロールオーバーするごとにSCLピンの状態が変化して(High から Low/Low から High)、データが SSPSR にシフト入力されます。8 番目のクロックの立ち下がりエッジで受信イネーブルフラグが自動的にクリアされます。これによって、SSPSR の内容が SSPBUF に読み込まれ、フラグビットの BF と SSPIF がセットされる事で baud レート ジェネレータがカウントを停止して SCL が Low に保持されます。MSSP はアイドル状態となり、次のコマンドを待ちます。CPU がバッファを読み出すと、フラグビット BF は自動的にクリアされます。クリア後、ユーザは SSPCON2 レジスタのACK シーケンス イネーブルビット ACKEN をセットする事で、受信終了時に ACK ビットを送信できます。

15.3.11.1 BF ステータスフラグ

受信動作では、SSPSR から SSPBUF にアドレスまたはデータバイトが読み込まれた時点で BF ビットがセットされます。このビットは SSPBUF レジスタを読み出すとクリアされます。

15.3.11.2 SSPOV ステータスフラグ

受信動作では、BFフラグ ビットが前の受信で既にセットされている場合にSSPSRに8ビットを受信すると、SSPOV ビットがセットされます。

15.3.11.3 WCOL ステータスフラグ

受信が既に開始された状態で(すなわち、SSPSRがデータバイトをシフト入力している間に )、ユーザがSSPBUF に書き込むと、WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

Note: RCEN ビットをセットする前に MSSP モジュールをアイドル状態にする必要があります。アイドル状態にない場合、RCENビットは無視されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 171

Page 172: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-21: I2C™ マスタモードの波形 (7 ビットまたは 10 ビットアドレス モードの送信 )

SD

A

SC

L

SS

PIF

BF

(S

SP

STA

T<

0>)

SE

N

A7

A6

A5

A4

A3

A2

A1

AC

K =

0D

7D

6D

5D

4D

3D

2D

1D

0

AC

KT

ran

smitt

ing

Da

ta o

r S

eco

nd H

alf

R/W

= 0

Tra

nsm

it A

ddr

ess

to

Sla

ve

12

34

56

78

91

23

45

67

89

P

Cle

are

d b

y so

ftwar

e s

ervi

ce r

ou

tine

SS

PB

UF

is w

ritte

n b

y so

ftwa

re

fro

m S

SP

inte

rru

pt

Afte

r S

tart

co

nditi

on

, SE

N c

lea

red

by h

ard

wa

re

S

SS

PB

UF

wri

tten

with

7-b

it a

ddre

ss a

nd

R/W

star

t tr

an

smit

SC

L h

eld

low

wh

ile C

PU

resp

on

ds

to S

SP

IF

SE

N =

0

of 1

0-b

it A

dd

ress

Writ

e S

SP

CO

N2<

0> S

EN

= 1

Sta

rt c

on

ditio

n b

eg

ins

Fro

m s

lave

, cl

ea

r A

CK

STA

T b

it S

SP

CO

N2<

6>

AC

KS

TAT

in

SS

PC

ON

2 =

1

Cle

are

d b

y so

ftwa

re

SS

PB

UF

wri

tten

PE

N

R/W

Cle

are

d b

y so

ftwa

re

DS41350D_JP - p. 172 Preliminary 2010 Microchip Technology Inc.

Page 173: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-22: I2C™ マスタモードの波形 (7 ビットアドレス モードの受信 )

P9

87

65

D0

D1

D2

D3

D4

D5

D6

D7

S

A7

A6

A5

A4

A3

A2

A1

SD

A

SC

L1

23

45

67

89

12

34

56

78

91

23

4

Bus

mas

ter

term

ina

tes

tra

nsf

er

AC

K

Rec

eiv

ing

Da

ta fr

om S

lave

Re

ceiv

ing

Dat

a fr

om

Sla

ve

D0

D1

D2

D3

D4

D5

D6

D7

AC

K

R/W

= 0

Tra

nsm

it A

ddr

ess

to S

lave

SS

PIF

BF

AC

K is

not

se

nt

Wri

te to

SS

PC

ON

2<

0>

(SE

N =

1),

Wri

te t

o S

SP

BU

F o

ccu

rs h

ere

,A

CK

fro

m S

laveM

ast

er c

onf

igu

red

as

a r

ece

ive

rb

y p

rogr

amm

ing

SS

PC

ON

2<

3>

(R

CE

N =

1)

PE

N b

it =

1w

ritte

n h

ere

Da

ta s

hift

ed

in o

n fa

lling

ed

ge o

f CL

K

Cle

are

d by

so

ftwa

re

star

t XM

IT

SE

N =

0

SS

PO

V

SD

A =

0, S

CL

= 1

wh

ile C

PU

(SS

PS

TAT

<0

>)

AC

K

Cle

are

d b

y so

ftwar

eC

lear

ed b

y so

ftwar

e

Se

t S

SP

IF in

terr

upt

at e

nd

of

rece

ive

Set

P b

it (S

SP

STA

T<

4>

)an

d S

SP

IFC

lear

ed in

softw

are

AC

K f

rom

Ma

ste

r

Set

SS

PIF

at

end

Se

t SS

PIF

inte

rrup

tat

en

d o

f Ack

now

led

gese

quen

ce

Set

SS

PIF

inte

rru

pt

at e

nd

of A

ckno

w-

led

ge s

eq

uenc

e

of r

ecei

ve

Se

t A

CK

EN

, sta

rt A

ckno

wle

dge

sequ

ence

SS

PO

V is

se

t bec

aus

eS

SP

BU

F is

stil

l fu

ll

SD

A =

AC

KD

T =

1

RC

EN

cle

are

dau

tom

atic

ally

RC

EN

= 1

, sta

rtne

xt r

ecei

ve

Writ

e to

SS

PC

ON

2<4>

to s

tart

Ack

now

ledg

e se

quen

ceS

DA

= A

CK

DT

(S

SP

CO

N2<

5>)

= 0

RC

EN

cle

ared

auto

mat

ical

ly

resp

onds

to

SS

PIF

AC

KE

Nbeg

in S

tart

con

diti

on

Cle

are

d b

y so

ftwa

re

SD

A =

AC

KD

T =

0

Last

bit

is s

hifte

d in

to S

SP

SR

and

con

ten

ts a

re u

nloa

ded

into

SS

PB

UF

RC

EN

Ma

ste

r co

nfig

ured

as

a re

ceiv

erby

pro

gra

mm

ing

SS

PC

ON

2<3>

(R

CE

N =

1)

RC

EN

cle

are

dau

tom

atic

ally

AC

K fr

om M

aste

rS

DA

= A

CK

DT

= 0

R

CE

N c

lear

eda

uto

ma

tica

lly

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 173

Page 174: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.12 ACK シーケンスのタイミング

ACK シーケンスは、SSPCON2 レジスタの ACK シーケンス イネーブルビット ACKEN をセットすると有効になります。このビットをセットすると SCL ピンがLow にプルされ、ACK データビットの内容が SDA ピンに出力されます。ACK 信号を生成する必要がある場合、ACKDT ビットをクリアします。ACK 送信が必要ない場合、ACK シーケンスの開始前に ACKDT ビットをセットします。続いて baud レート ジェネレータがロールオーバー1 周期 (TBRG) をカウントし、SCL ピンがデアサート (Highにプル )されます。SCLピンでHighがサンプリングされた場合 ( クロック アービトレーション )、baud レート ジェネレータは TBRG の期間カウントします。この時点で、SCL が Low にプルされます。続いてACKENビットが自動的にクリアされてbaudレート ジェネレータが OFF になり、MSSP モジュールはアイドルモードに移行します ( 図 15-23)。

15.3.12.1 WCOL ステータスフラグ

ACK シーケンスの実行中にユーザが SSPBUF に書き込むと、WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

15.3.13 ストップ条件のタイミング

SSPCON2 レジスタのストップ シーケンス イネーブルビット PEN をセットすると、送受信の 後に SDAピンに対してストップビットがアサートされます。送受信が完了する 9 番目のクロックの立ち下がりエッジ後、SCL ラインは Low に保持されます。PEN ビットがセットされると、マスタは SDA ラインを Low にアサートします。SDA ラインに Low がサンプリングされると、baud レート ジェネレータが再度読み込まれ「0」へのカウントダウンが始まります。baud レートジェネレータがタイムアウトすると、SCL ピンが Highになり、TBRG の 1 周期 (baud レート ジェネレータのロールオーバー カウント ) の間、SDA ピンがデアサートされます。SCL が High の間に SDA ピンに High がサンプリングされると、SSPSTAT レジスタの P ビットがセットされます。TBRG の経過後、PEN ビットがクリアされ、SSPIF ビットがセットされます ( 図 15-24)。

15.3.13.1 WCOL ステータスフラグ

ストップ シーケンスの実行中にユーザが SSPBUF に書き込むと、WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

図 15-23: ACK シーケンスの波形

図 15-24: 受信または送信モードのストップ条件

Note: TBRG = one Baud Rate Generator period.

SDA

SCL

SSPIF set at

Acknowledge sequence starts here,write to SSPCON2

ACKEN automatically cleared

Cleared in

TBRG TBRG

the end of receive

8

ACKEN = 1, ACKDT = 0

D0

9

SSPIF

software SSPIF set at the endof Acknowledge sequence

Cleared insoftware

ACK

SCL

SDA

SDA asserted low before rising edge of clock

Write to SSPCON2,set PEN

Falling edge of

SCL = 1 for TBRG, followed by SDA = 1 for TBRG

9th clock

SCL brought high after TBRG

Note: TBRG = one Baud Rate Generator period.

TBRG TBRG

after SDA sampled high. P bit (SSPSTAT<4>) is set.

TBRG

to setup Stop condition

ACK

P

TBRG

PEN bit (SSPCON2<2>) is cleared by hardware and the SSPIF bit is set

DS41350D_JP - p. 174 Preliminary 2010 Microchip Technology Inc.

Page 175: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.14 スリープ動作

スリープモードに移行した後も、I2C スレーブ モジュールはアドレスまたはデータを受信可能であり、アドレスが一致した場合またはバイト転送が完了した場合、プロセッサをスリープからウェイクアップさせる事ができます (MSSP 割り込み有効時 )。

15.3.15 リセットの効果

リセットは MSSP モジュールを無効にし、現在の転送は中止されます。

15.3.16 マルチマスタ モード

マルチマスタ モードでは、スタート条件とストップ条件の検出によって発生する割り込みに基づいて、バスが空いている期間を判断します。ストップビット (P)とスタートビット (S) は、リセット時または MSSP モジュールが無効になるとクリアされます。I2C バスの制御権は、SSPSTAT レジスタの P ビットがセットされた場合、または S ビットと P ビットの両方がクリアされてバスがアイドル状態になった場合に取得できます。バスがビジーの場合、SSP 割り込みが有効であれば、ストップ条件が発生した時に割り込みが生成されます。

マルチマスタ動作では、信号レベルが期待される出力レベルに変化したかどうかを確認して、バス アービトレーション動作を実行できるように、SDA ラインを監視する必要があります。ハードウェアが SDA ラインの状態を確認し、その結果を BCLIF ビットに格納します。

以下の状態では、アービトレーションが失われる可能性があります。

• アドレス転送

• データ転送

• スタート条件

• リピートスタート条件

• ACK 条件

15.3.17 マルチマスタ通信、バスコリジョンとバス アービトレーション

マルチマスタ モードのサポートは、バス アービトレーションによって実現します。マスタが SDA ピンにアドレス / データビットを出力する場合、マスタが SDAに「1」を出力し、SDA をフローティング High のままにして、別のマスタが「0」をアサートすると、バスアービトレーションが行われます。SCL ピンがフローティング High の時、データは安定している必要があります。SDA で予測される値が「1」であるのに、サンプリングされた SDA ピンの値が「0」の場合、バスコリジョンが発生しています。マスタはバスコリジョン割り込みフラグ BCLIF をセットし、I2C ポートをアイドル状態にリセットします ( 図 15-25)。

バスコリジョンの発生時に送信中だった場合、その送信は中断され、BF フラグがクリアされて SDA ラインと SCL ラインがデアサートされて、SSPBUF への書き込みが可能になります。ユーザが割り込みサービスルーチンによってバスコリジョンを処理する場合、I2Cバスが空いていれば、スタート条件をアサートする事で通信を再開できます。

バスのコリジョン時にスタート、リピートスタート、ストップ、ACK 条件の処理を実行中だった場合、動作は中断され SDA ラインと SCL ラインがデアサートされます。さらに、SSPCON2 レジスタのそれぞれの条件に対応する制御ビットがクリアされます。ユーザが割り込みサービスルーチンによってバスコリジョンを処理する場合、I2C バスが空いていれば、スタート条件をアサートする事で通信を再開できます。

マスタは SDA ピンと SCL ピンの監視を続けます。ストップ条件が発生すると、SSPIF ビットがセットされます。

SSPBUF に書き込むと、バスコリジョン発生時にトランスミッタがどこまで送信を完了していたかにかかわらず、データの先頭ビットから送信が開始されます。

マルチマスタ モードでは、スタート条件とストップ条件の検出によって発生する割り込みに基づいて、バスが空いている期間を判断します。I2C バスの制御権は、SSPSTAT レジスタの P ビットがセットされた場合、またはSビットとPビットの両方がクリアされてバスがアイドル状態になった場合に取得できます。

図 15-25: 送信時と ACK 送信時のバスコリジョン タイミング

SDA

SCL

BCLIF

SDA released

SDA line pulled lowby another source

Sample SDA. While SCL is high,data doesn」t match what is driven

Bus collision has occurred.

Set bus collisioninterrupt (BCLIF)

by the master.

by master

Data changeswhile SCL = 0

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 175

Page 176: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.17.1 スタート条件実行中のバスコリジョン

スタート条件の実行中は、以下の場合にバスコリジョンが発生します。

a) スタート条件の開始時に SDA または SCL でLow がサンプリングされる ( 図 15-26)。

b) SDA が Low にアサートされる前に SCL で Lowがサンプリングされる ( 図 15-27)。

スタート条件の実行中、SDA ピンと SCL ピンは両方とも監視されています。

SDA ピンが既に Low だった場合、または SCL ピンが既に Low だった場合、以下の全てが実行されます。

• スタート条件を中止する。

• BCLIF フラグをセットする。

• MSSPモジュールをアイドル状態にリセットする( 図 15-26)。

スタート条件は、SDA ピンと SCL ピンのデアサートから始まります。SDA ピンで High がサンプリングされると、baud レート ジェネレータに値が読み込まれカウントダウンが始まります。SDA が High の間に、SCL ピンで Low がサンプリングされると、バスコリジョンが発生します。これは、他のマスタがスタート条件の実行中にデータ「1」の駆動を試みていると考えられるためです。

上記の BRG カウント中に SDA ピンで Low がサンプリングされると、BRG はリセットされ、SDA ラインは BRG のタイムアウトを待たずにアサートされます( 図 15-28)。ただし、SDA ピンで「1」がサンプリングされた場合、SDA ピンは BRG カウントの完了時にLow にアサートされます。続いて baud レート ジェネレータが再度読み込まれ、0 へのカウントダウンを開始します。この間に SCL ピンで「0」がサンプリングされた場合、バスコリジョンは発生しません。BRG のカウント終了時点で SCL ピンが Low にアサートされます。

図 15-26: スタート条件実行中のバスコリジョン (SDA のみ )

Note: スタート条件中にバスコリジョンが問題にならないのは、2 つのバスマスタが全く同じタイミングでスタート条件をアサートする事があり得ないためです。必ず、どちらか一方のマスタが他方よりも先にSDA をアサートします。そのような状態ではバスコリジョンは発生しません。2 つのマスタはスタート条件に続く 初のアドレスでバス アービトレーションを行うはずだからです。アドレスが同じだった場合、引き続きデータ部分、リピートスタートまたはストップ条件におけるアービトレーションが可能なはずです。

SDA

SCL

SEN

SDA sampled low before

SDA goes low before the SEN bit is set.

S bit and SSPIF set because

SSP module reset into Idle state.SEN cleared automatically because of bus collision.

S bit and SSPIF set because

Set SEN, enable Startcondition if SDA = 1, SCL = 1

SDA = 0, SCL = 1.

BCLIF

S

SSPIF

SDA = 0, SCL = 1.

SSPIF and BCLIF arecleared by software

SSPIF and BCLIF arecleared by software

Set BCLIF,

Start condition. Set BCLIF.

DS41350D_JP - p. 176 Preliminary 2010 Microchip Technology Inc.

Page 177: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 15-27: スタート条件実行中のバスコリジョン (SCL = 0の場合 )

図 15-28: スタート条件実行中の SDA アービトレーションによる BRG のリセット

SDA

SCL

SENbus collision occurs. Set BCLIF.SCL = 0 before SDA = 0,

Set SEN, enable Startsequence if SDA = 1, SCL = 1

TBRG TBRG

SDA = 0, SCL = 1

BCLIF

S

SSPIF

Interrupt clearedby software

bus collision occurs. Set BCLIF.SCL = 0 before BRG time-out,

‘0’ ‘0’

‘0’‘0’

SDA

SCL

SEN

Set SLess than TBRG

TBRG

SDA = 0, SCL = 1

BCLIF

S

SSPIF

S

Interrupts clearedby softwareset SSPIF

SDA = 0, SCL = 1,

SCL pulled low after BRGtime-out

Set SSPIF

‘0’

SDA pulled low by other master.Reset BRG and assert SDA.

Set SEN, enable STARTsequence if SDA = 1, SCL = 1

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 177

Page 178: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.17.2 リピートスタート条件実行中のバスコリジョン

リピートスタート条件の実行中は、以下の状態でバスコリジョンが発生します。

a) SCL が Low から High に遷移する時に SDA でLow がサンプリングされる。

b) SDA で Low がアサートされる前に SCL が Lowに遷移する。これは、他のマスタがデータ「1」を送信しようとしている可能性を示している。

SDA がユーザによってデアサートされ、ピンのフローティング High が許可されると、BRG に SSPADD の内容が読み込まれ、0 へのカウントダウンが始まります。続いて SCL ピンがデアサートされた後、High をサンプリングした時点で、SDA ピンをサンプリングします。

この時 SDA が Low ならば、バスコリジョンが発生しています ( すなわち、他のマスタがデータ「0」を送信しようとしています。図 15-29)。SDA で High がサンプリングされた場合、BRG が再度読み込まれカウントが始まります。BRG がタイムアウトする前に SDA がHigh から Low に遷移した場合、バスコリジョンは発生しません。2 つのマスタが全く同時に SDA をアサートする事はあり得ないからです。

BRG がタイムアウトする前に SCL が High から Lowに遷移し、SDA がまだアサートされていない場合はバスコリジョンが発生します。この場合、リピートスタート条件実行中に、他のマスタがデータ「1」を送信しようとしています ( 図 15-30 参照 )。

BRGのタイムアウト時点でSCLとSDAの両方が依然として High の場合、SDA ピンが Low に駆動され、BRG の再読み込み後にカウントを開始します。カウントが終了すると、SCL ピンはその状態に関係なく Lowに駆動され、リピートスタート条件が終了します。

図 15-29: リピートスタート条件実行中のバスコリジョン ( 例 1)

図 15-30: リピートスタート条件実行中のバスコリジョン ( 例 2)

SDA

SCL

RSEN

BCLIF

S

SSPIF

Sample SDA when SCL goes high.If SDA = 0, set BCLIF and release SDA and SCL.

Cleared by software

‘0’

‘0’

SDA

SCL

BCLIF

RSEN

S

SSPIF

Interrupt clearedby software

SCL goes low before SDA,set BCLIF. Release SDA and SCL.

TBRG TBRG

‘0’

DS41350D_JP - p. 178 Preliminary 2010 Microchip Technology Inc.

Page 179: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

15.3.17.3 ストップ条件実行中のバスコリジョン

ストップ条件の実行中は、以下の場合にバスコリジョンが発生します。

a) SDA ピンがデアサートされてフローティングHigh が許可された後、BRG のタイムアウト後に SDA で Low がサンプリングされる。

b) SCL ピンがデアサートされた後、SDA が Highに遷移する前に SCL で Low がサンプリングされる。

ストップ条件は、SDA の Low アサートから開始されます。SDA で Low がサンプリングされると、SCL ピンをフローティング状態にする事ができます。SCL ピンで High がサンプリングされると ( クロック アービトレーション )、baud レート ジェネレータに SSPADD の値が読み込まれ 0 へのカウントダウンが始まります。BRG のタイムアウト後、SDA がサンプリングされます。この時 Low がサンプリングされた場合、バスコリジョンが発生しています。これは、他のマスタがデータ「0」を駆動しようとしているためです ( 図 15-31)。SDA のフローティング High が許可される前に、SCLピンで Low がサンプリングされると、バスコリジョンが発生します。これは、他のマスタがデータ「0」を駆動しようとしている、もう 1 つの例です ( 図 15-32)。

図 15-31: ストップ条件実行中のバスコリジョン ( 例 1)

図 15-32: ストップ条件実行中のバスコリジョン ( 例 2)

SDA

SCL

BCLIF

PEN

P

SSPIF

TBRG TBRG TBRG

SDA asserted low

SDA sampledlow after TBRG,set BCLIF

‘0’

‘0’

SDA

SCL

BCLIF

PEN

P

SSPIF

TBRG TBRG TBRG

Assert SDA SCL goes low before SDA goes high,set BCLIF

‘0’

‘0’

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 179

Page 180: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 15-4: I2C™ に関連するレジスタの要約

レジスタ名

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の掲載ページ

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR2 OSCFIP C1IP C2IP EEIP BCLIP USBIP TMR3IP — 290

PIR2 OSCFIF C1IF C2IF EEIF BCLIF USBIF TMR3IF — 290

PIE2 OSCFIE C1IE C2IE EEIE BCLIE USBIE TMR3IE — 290

SSPADD I2C スレーブモードの SSP アドレスレジスタ、 I2C マスタモードの SSP baud レート再読み込みレジスタ

288

SSPBUF SSP 受信バッファ / 送信レジスタ 288

SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 288

SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 288

SSPMSK MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0 290

SSPSTAT SMP CKE D/A P S R/W UA BF 288

TRISB TRISB7 TRISB6 TRISB5 TRISB4 — — — — 290

凡例 : — = 未実装ビット、「0」として読み出し。網掛けの部分は I2C™ では使用しません。

DS41350D_JP - p. 180 Preliminary 2010 Microchip Technology Inc.

Page 181: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 181

Page 182: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

DS41350D_JP - p. 182 Preliminary 2010 Microchip Technology Inc.

Page 183: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.0 拡張 USART (EUSART: ENHANCED UNIVERSAL SYNCHRONOUS ASYNCHRONOUS RECEIVER TRANSMITTER)

拡張 USART (EUSART: Enhanced Universal Synchronous Asynchronous Receiver Transmitter) モジュールは、シリアル I/O 通信用の周辺モジュールです。このモジュールは、デバイスのプログラム実行から独立してシリアルデータの送受信を実行するために必要なクロック ジェネレータ、シフトレジスタ、データバッファを全て備えています。EUSART は SCI(Serial Communications Interface) とも呼ばれ、全二重非同期システムまたは半二重同期システムとして構成できます。全二重モードは、CRT 端末やパーソナル コンピュータ等の周辺システムとの通信に便利です。半二重同期モードは、A/D または D/A IC、シリアルEEPROM、その他のマイクロコントローラ等の周辺デバイスとの通信向けです。これらのデバイスは通常、baud レート生成用の内部クロックを持たないため、マスタ同期デバイスから外部クロック信号を供給する必要があります。

EUSART モジュールには以下の機能があります。

• 全二重非同期の送受信

• 2 文字の入力バッファ

• 1 文字の出力バッファ

• 文字長を 8 ビットまたは 9 ビットにプログラム可能

• アドレス検出 (9 ビットモード )

• 入力バッファ オーバーラン エラー検出

• 受信文字のフレーミング エラー検出

• 半二重同期マスタ

• 半二重同期スレーブ

• クロックとデータの極性をプログラム可能

EUSART モジュールは以下の機能も実装しているため、LIN (Local Interconnect Network) バスシステムでの使用にも 適です。

• baud レートの自動検出および校正

• ブレーク受信によるウェイクアップ

• 13 ビットのブレーク文字送信

図 16-1 と図 16-2 に、EUSART トランスミッタとレシーバのブロック図を示します。

図 16-1: EUSART トランスミッタのブロック図

TXIF

TXIE

Interrupt

TXEN

TX9D

MSb LSb

Data Bus

TXREG Register

Transmit Shift Register (TSR)

(8) 0

TX9

TRMT SPEN

TX/CK pin

Pin Bufferand Control

8

SPBRGSPBRGH

BRG16

FOSC÷ n

n

+ 1 Multiplier x4 x16 x64

SYNC 1 X 0 0 0

BRGH X 1 1 0 0

BRG16 X 1 0 1 0

Baud Rate Generator

• • •

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 183

Page 184: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 16-2: EUSART レシーバのブロック図

EUSART モジュールの動作は、以下の 3 つのレジスタで制御します。

• TXSTA ( 送信状態 / 制御 ) レジスタ

• RCSTA ( 受信状態 / 制御 ) レジスタ

• BAUDCTL (baud レート制御 ) レジスタ

これらのレジスタの詳細は、レジスタ 16-1、レジスタ 16-2、レジスタ 16-3 をそれぞれ参照してください。

EUSART の動作モードにかかわらず、RX/DT およびTX/CK ピンに対応する TRIS 制御ビットは「1」にセットしてください。EUSART の制御により、ピン設定は必要に応じて入力から出力に自動的に変更されます。

RX/DT pin

Pin Bufferand Control

SPEN

DataRecovery

CREN OERR

FERR

RSR RegisterMSb LSb

RX9D RCREG RegisterFIFO

InterruptRCIFRCIE

Data Bus8

Stop START(8) 7 1 0

RX9

• • •

SPBRGSPBRGH

BRG16

RCIDL

FOSC÷ n

n+ 1 Multiplier x4 x16 x64

SYNC 1 X 0 0 0

BRGH X 1 1 0 0

BRG16 X 1 0 1 0

Baud Rate Generator

DS41350D_JP - p. 184 Preliminary 2010 Microchip Technology Inc.

Page 185: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.1 EUSART 非同期モード

EUSART は、標準の NRZ (Non-Return-to-Zero) 方式でデータを送受信します。NRZ は、2 つのレベルで実装されています。データビット「1」を表す VOH マーク状態と、データビット「0」を表す VOL スペース状態です。NRZ で同じ値のデータビットを連続して送信すると、出力レベルはそのビットのレベルのまま変化しません(1ビットを送信するたびにニュートラル レベルに戻るのではない )。NRZ 送信ポートのアイドル状態はマーク状態です。各送信文字は、1 ビットのスタートビットの後に 8 ビットまたは 9 ビットのデータビットを送信し、 後は必ず 1 つ以上のストップビットで終了します。スタートビットは常にスペースで、ストップビットは常にマークです。データ フォーマットは8 ビットが一般的です。1 ビットの送信にかかる時間は、1/(baud レート ) です。標準 baud レート周波数は、内蔵の専用8ビット /16ビットbaudレート ジェネレータを使用してシステム オシレータから生成します。baud レートの構成例は、表 16-5 を参照してください。

EUSART は LSb から順に送受信します。EUSART のトランスミッタとレシーバは独立して動作しますが、データ フォーマットと baud レートは共通です。パリティはハードウェア レベルではサポートされていませんが、ソフトウェアで実装して 9 番目のデータビットとして格納されます。

16.1.1 EUSART 非同期トランスミッタ

図 16-1 に、EUSART トランスミッタのブロック図を示します。トランスミッタの中心となるのがシリアルトランスミット シフト レジスタ (TSR) で、このレジスタにはソフトウェアから直接はアクセスできません。TSR は、送信バッファ (TXREG レジスタ ) からデータを取得します。

16.1.1.1 トランスミッタの有効化

EUSART トランスミッタを非同期モードとして有効化するには、3 つの制御ビットを以下のように設定します。

• TXEN = 1

• SYNC = 0

• SPEN = 1

その他の EUSART 制御ビットは全て既定値のままと仮定します。

TXSTA レジスタの TXEN ビットをセットすると、EUSART のトランスミッタ回路が有効になります。TXSTA レジスタの SYNC ビットをクリアすると、EUSART が非同期モードになります。RCSTA レジスタの SPEN をセットすると EUSART が有効になり、TX/CK I/O ピンが自動的に出力に設定されます。TX/CKピンをアナログ周辺モジュールと共用している場合、対応するANSELビットをクリアしてアナログ I/O機能を無効にする必要があります。

16.1.1.2 データの送信

TXREG レジスタに文字を書き込むと送信が開始します。これが 初の文字の場合、または TSR 内に以前の文字が全く残っていない場合、TXREG のデータがただちに TSR レジスタに転送されます。TSR 内に以前の文字が一部でも残っている場合、その文字のストップビットが送信されるまで新しい文字データは TXREGに保持されます。TXREG 内に残っている文字は、ストップビット送信直後の 1 TCY の期間に TSR に転送されます。TXREG から TSR にデータが転送されると、その直後にスタートビット、データビット、ストップビットのシーケンスの送信が開始します。

16.1.1.3 送信データの極性

送信データの極性は、BAUDCON レジスタの CKTXPビットで制御できます。このビットが既定値「0」の場合、送信アイドル / データビットは正論理です。CKTXP ビットを「1」にセットすると送信データが反転し、送信アイドル / データビットは負論理になります。CKTXP ビットで送信データの極性を制御できるのは、非同期モードの場合のみです。同期モードでは、CKTXP ビットの機能は異なります。

Note 1: SPEN ビットをセットすると、対応するTRISビットの状態やEUSARTレシーバが有効か無効かにかかわらず、RX/DT I/O ピンは自動的に入力として設定されます。RX/DT ピンのデータは通常の PORT 読み出しで読み出す事ができますが、PORTラッチのデータ出力は禁止されます。

2: TXEN イネーブルビットをセットすると、TXIF トランスミッタ割り込みフラグがセットされます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 185

Page 186: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.1.1.4 送信割り込みフラグ

EUSART トランスミッタが有効で、かつ送信する文字が TXREG に格納されていない場合は常に、PIR1 レジスタの TXIF 割り込みフラグビットがセットされます。つまり、TXIF ビットがクリアされるのは、TSR に何らかの文字がある時に新しい送信文字が TXREG に格納された場合のみです。TXIF フラグビットは、TXREGへの書き込みの直後にはクリアされません。TXIF は、書き込みを実行してから 2 つ目の命令サイクルで有効になります。TXREG への書き込み直後に TXIF をポーリングすると、正しい結果が得られません。TXIF ビットは読み出し専用で、ソフトウェアでセットまたはクリアする事はできません。

PIE1 レジスタの TXIE 割り込みイネーブルビットをセットすると、TXIF 割り込みが許可されます。ただし、TXREG が空になると TXIE イネーブルビットの状態に関係なく TXIF フラグビットがセットされます。

データの送信時に割り込みを使用するには、引き続きデータを送信する場合のみ TXIE ビットをセットします。送信する 後の文字を TXREG に書き込んだら、TXIE 割り込みイネーブルビットをクリアします。

16.1.1.5 TSR のステータス

TXSTA レジスタの TRMT ビットが TSR レジスタの状態を示します。このビットは読み出し専用です。TRMTビットは、TSR レジスタが空になるとセットされ、TXREGから TSRレジスタに文字が転送されるとクリアされます。TRMT ビットは、TSR レジスタから全てのビットがシフト出力されるまでクリアされたままです。このビットには割り込みロジックが接続されていないため、TSR の状態を調べるにはユーザが明示的にこのビットをポーリングする必要があります。

16.1.1.6 9 ビット文字の送信

EUSART は 9 ビット文字の送信をサポートしています。TXSTA レジスタの TX9 ビットをセットすると、EUSARTは1文字の送信につき 9ビットをシフト出力します。TXSTA レジスタの TX9D ビットには、 上位(9 ビット目 ) のデータビットを格納します。9 ビットのデータを送信する場合、まず TX9D ビットに 上位データビットを書き込んでから TXREG に下位 8 ビットを書き込む必要があります。TXREG への書き込みが完了したら、ただちに 9 ビット全てのデータが TSRシフトレジスタに転送されます。

複数のレシーバを使用する場合、9 ビット目を特別にアドレスモードとして使用する事ができます。アドレスモードの詳細は、16.1.2.8「アドレス検出」を参照してください。

16.1.1.7 非同期送信の実行手順 :

1. 目標のbaudレートに合わせて、SPBRGH:SPBRGレジスタペア、BRGH ビット、BRG16 ビットを初期化する (16.3「EUSART baud レート ジェネレータ (BRG)」参照 )。

2. SYNC ビットをクリアし、SPEN ビットをセットして非同期シリアルポートを有効にする。

3. 9 ビット送信を行う場合、TX9 制御ビットをセットする。レシーバ側でアドレス検出を有効に設定している場合、9 ビット目をセットすると下位 8ビットはアドレスと見なされる。

4. 送信データの極性を反転する場合、CKTXP 制御ビットをセットする。

5. TXEN 制御ビットをセットして、送信を有効にする。これにより、TXIF 割り込みビットがセットされる。

6. 割り込みを使用する場合、TXIE 割り込みイネーブルビットをセットする。INTCON レジスタの GIEおよび PEIE ビットもセットされていれば、割り込みがただちに発生する。

7. 9 ビット送信を選択した場合、9 ビット目を TX9Dデータビットに格納する。

8. TXREG レジスタに 8 ビットのデータを書き込むと、 送信が開始する。

Note: TSR レジスタはデータメモリにマッピングされていないため、ユーザからはアクセスできません。

DS41350D_JP - p. 186 Preliminary 2010 Microchip Technology Inc.

Page 187: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 16-3: 非同期送信

図 16-4: 非同期送信 ( 連続 )

表 16-1: 非同期送信に関連するレジスタ

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 289

TXREG EUSART 送信レジスタ 289

TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 289

BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 289

SPBRGH EUSART baud レート ジェネレータ レジスタ、上位バイト 289

SPBRG EUSART baud レート ジェネレータ レジスタ、下位バイト 289

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットは非同期送信には使用しません。

Word 1Stop bit

Word 1Transmit Shift Reg

Start bit bit 0 bit 1 bit 7/8

Write to TXREGWord 1

BRG Output(Shift Clock)

RB7/TX/CK

TXIF bit(Transmit Buffer

Reg. Empty Flag)

TRMT bit(Transmit Shift

Reg. Empty Flag)

1 TCY

pin

Transmit Shift Reg

Write to TXREG

BRG Output(Shift Clock)

RB7/TX/CK

TXIF bit(Interrupt Reg. Flag)

TRMT bit(Transmit Shift

Reg. Empty Flag)

Word 1 Word 2

Word 1 Word 2

Start bit Stop bit Start bit

Transmit Shift Reg

Word 1 Word 2bit 0 bit 1 bit 7/8 bit 0

Note: このタイミング チャートには、2 つの連続する送信を示しています。

1 TCY

1 TCY

pin

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 187

Page 188: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.1.2 EUSART 非同期レシーバ

通常、RS-232 システムでは非同期モードを使用します。図 16-2 に、レシーバのブロック図を示します。RX/DTピンで受信したデータでデータ復元ブロックを駆動します。データ復元ブロックの実体は、baud レートの 16 倍の速度で動作する高速シフタです。一方、シリアル受信シフトレジスタ (RSR: Receive Shift Register) はビットレートで動作します。文字を構成する8ビットまたは9ビット全てがシフト入力されたら、ただちに 2 文字の FIFO (First-In-First-Out) メモリに転送されます。この FIFO がバッファの役割を果たすため、2 文字までは完全に受信が可能で、3 文字目の受信が完了するまでにソフトウェアで EUSART レシーバへのサービスを開始すれば良い事になります。FIFOと RSR レジスタは、ソフトウェアから直接アクセスする事はできません。受信データへのアクセスには、RCREG レジスタを使用します。

16.1.2.1 レシーバの有効化

EUSART レシーバを非同期モードとして有効化するには、3 つの制御ビットを以下のように設定します。

• CREN = 1

• SYNC = 0

• SPEN = 1

その他の EUSART 制御ビットは全て既定値のままと仮定します。

RCSTA レジスタの CREN ビットをセットすると、EUSART のレシーバ回路が有効になります。TXSTA レジスタの SYNC ビットをクリアすると、EUSART が非同期モードになります。RCSTA レジスタの SPEN ビットをセットすると EUSART が有効になります。RX/DTI/O ピンは、対応する TRIS 制御ビットをセットして入力として設定しておく必要があります。RX/DT ピンをアナログ周辺モジュールと共用している場合、対応するANSELビットをクリアしてアナログ I/O機能を無効にする必要があります。

16.1.2.2 データの受信

レシーバのデータ復元回路は、 初のビットの立ち下がりエッジで文字の受信を開始します。 初のビット( スタートビット ) は常に「0」です。データ復元回路はスタートビットの中央まで 1/2 ビットの期間をカウントし、そのビットがまだ「0」かどうかをチェックします。「0」でない場合、データ復元回路はエラーを生成せずに文字の受信を中止し、スタートビットの立ち下がりエッジの検出を再開します。スタートビット「0」のチェックに成功した場合、データ復元回路は次のビットの中央までさらに 1 ビットの期間をカウントします。次にこのビットを多数決回路でサンプリングし、その結果 (「0」または「1」) を RSR にシフトします。以後、この動作を繰り返して全てのデータビットをサンプリングし、RSR にシフトします。 後の1 ビットの期間を計測して、そのレベルをサンプリングします。これはストップビットで、常に「1」です。ストップビットの位置でデータ復元回路が「0」をサンプリングした場合、この文字に対するフレーミングエラーがセットされます。それ以外の場合、この文字のフレーミング エラーはクリアされます。フレーミング エラーの詳細は、16.1.2.5「受信フレーミング エラー」 を参照してください。

全てのデータビットとストップビットを受信したら、その直後に RSR 内の文字を EUSART 受信 FIFO に転送し、PIR1 レジスタの RCIF 割り込みフラグビットをセットします。RCREG レジスタを読み出すと、FIFOから先頭の文字が出力されます。

16.1.2.3 受信データの極性

受信データの極性は、BAUDCON レジスタの DTRXPビットで制御できます。このビットが既定値「0」の場合、受信アイドル / データビットは正論理になります。DTRXP ビットを「1」にセットすると受信データが反転し、送信アイドル / データビットは負論理になります。DTRXP ビットで受信データの極性を制御できるのは、非同期モードの場合のみです。同期モードでは、DTRXP ビットの機能は異なります。

Note: SPEN ビットをセットすると、対応するTRISビットの状態やEUSARTトランシーバが有効か無効かにかかわらず、TX/CKI/Oピンは自動的に出力として設定されます。PORT ラッチは出力ドライバから切断されるため、TX/CK ピンを汎用出力として使用する事はできません。

Note: 受信 FIFO がオーバーランした場合、オーバーラン条件が解消されるまで、それ以降の文字は受信されません。オーバーランエラーの詳細は、16.1.2.6「受信オーバーランエラー」を参照してください。

DS41350D_JP - p. 188 Preliminary 2010 Microchip Technology Inc.

Page 189: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.1.2.4 受信割り込み

EUSART レシーバが有効で、受信 FIFO 内に読み出していない文字がある場合は常に、PIR1 レジスタのRCIF 割り込みフラグビットがセットされます。RCIF割り込みフラグビットは読み出し専用で、ソフトウェアでセットまたはクリアする事はできません。

RCIF 割り込みを許可するには、以下のビットをセットします。

• PIE1 レジスタの RCIE 割り込みイネーブルビット

• INTCON レジスタの PEIE 周辺割り込みイネーブルビット

• INTCONレジスタのGIEグローバル割り込みイネーブルビット

FIFO 内に読み出していない文字が残っている場合、これらの割り込みイネーブルビットの状態に関係なくRCIF 割り込みフラグビットがセットされます。

16.1.2.5 受信フレーミング エラー

受信 FIFO バッファ内の各文字には、対応するフレーミング エラー ステータス ビットがあります。フレーミング エラーは、ストップビットが本来の位置で正しく検出されなかった場合に発生します。フレーミングエラー ステータスは、RCSTA レジスタの FERR ビットで調べる事ができます。FERR ビットは、受信 FIFOの先頭にある、読み出されていない文字のステータスを示します。このため、RCREG を読み出す前に FERRビットを読み出す必要があります。

FERR ビットは読み出し専用で、受信 FIFO の先頭にある、読み出されていない文字にのみ適用されます。フレーミング エラーが発生しても (FERR = 1)、後続文字の受信が禁止される事はありません。FERR ビットはクリアする必要がありません。FIFO バッファから次の文字を読み出すと、FIFO は次の文字に進み、FERR ビットにはその文字のフレーミング エラー ステータスが格納されます。

RCSTA レジスタの SPEN ビットをクリアしてEUSART をリセットすると、FERR ビットは強制的にクリアされます。RCSTA レジスタの CREN ビットをクリアしても FERR ビットには影響しません。フレーミング エラー自体は、割り込みを生成しません。

16.1.2.6 受信オーバーランエラー

受信FIFOバッファには2文字まで格納できます。FIFOにアクセスする前に 3 文字目の受信が完了してしまうと、オーバーランエラーが発生します。オーバーランエラーになると、RCSTA レジスタの OERR ビットがセットされます。この場合、既に FIFO バッファ内にある文字は読み出す事ができますが、それ以降の文字はオーバーランエラーが解消されるまで受信できません。オーバーランエラーを解消するには、RCSTA レジスタのCRENビットをクリアするか、またはRCSTAレジスタの SPEN ビットをクリアして EUSART をリセットする必要があります。

16.1.2.7 9 ビット文字の受信

EUSART は 9 ビット文字の受信をサポートしています。RCSTA レジスタの RX9 ビットをセットすると、EUSART は 1 文字の受信につき 9 ビットを RSR にシフト入力します。RCSTA レジスタの RX9D ビットには、受信 FIFO の先頭にある、読み出されていない文字の 9 ビット目 ( 上位データビット ) を格納します。受信 FIFO バッファから 9 ビットデータを読み出す場合、RCREG の下位 8 ビットより前に RX9D データビットを読み出す必要があります。

16.1.2.8 アドレス検出

RS-485 システムのように 1 つの送信ラインを複数のレシーバが共用している場合、特別なアドレス検出モードを利用できます。アドレス検出を有効にするには、RCSTAレジスタのADDENビットをセットします。

アドレス検出モードを利用するには、9 ビット文字を受信する必要があります。アドレス検出を有効にすると、9 番目のデータビットがセットされた文字のみが受信 FIFO バッファに転送され、これによって RCIF 割り込みビットがセットされます。これ以外の文字は全て無視されます。

アドレス文字を受信したら、そのアドレスが自分のアドレスと一致するかどうかをユーザ ソフトウェアで判定します。アドレスが一致したら、次のストップビットが発生する前にユーザ ソフトウェアでADDENビットをクリアしてアドレス検出を無効にする必要があります。使用しているメッセージ プロトコルに基づいてメッセージの終了を検出したら、ユーザ ソフトウェアで ADDEN ビットをセットして、レシーバを再びアドレス検出モードに戻します。

Note: 受信FIFO内の全ての受信文字にフレーミング エラーがある場合、RCREG の読み出しを繰り返しても FERR ビットはクリアされません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 189

Page 190: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.1.2.9 非同期受信の実行手順 :

1. 目標のbaudレートに合わせて、SPBRGH:SPBRGレジスタペア、BRGH ビット、BRG16 ビットを初期化する (16.3「EUSART baud レート ジェネレータ (BRG)」参照 )。

2. SPEN ビットおよび RX/DT ピンの TRIS ビットをセットして、シリアルポートを有効にする。非同期モードの場合、SYNC ビットをクリアする。

3. 割り込みを使用する場合、RCIE 割り込みイネーブルビットをセットし、INTCON レジスタの GIEおよび PEIE ビットもセットする。

4. 9ビット受信を行う場合、RX9ビットをセットする。

5. 受信データの極性を反転する場合、DTRXP ビットをセットする。

6. CREN ビットをセットして、受信を有効にする。

7. RSR から受信バッファに文字が転送されると、RCIF 割り込みフラグビットがセットされる。RCIE 割り込みイネーブルビットもセットしている場合、割り込みが発生する。

8. RCSTA レジスタを読み出してエラーフラグを取得する。9 ビットデータ受信を有効にしている場合、9 ビット目のデータビットも読み出す。

9. RCREG レジスタを読み出し、受信バッファから受信済みデータの下位 8 ビットを取得する。

10. オーバーランが発生した場合、CREN レシーバ イネーブルビットをクリアしてOERRフラグをクリアする。

16.1.2.10 9 ビットアドレス検出モードの実行手順

通常、このモードは RS-485 システムで使用します。非同期受信でアドレス検出を有効にするには、以下の手順を実行します。

1. 目標のbaudレートに合わせて、SPBRGH:SPBRGレジスタペア、BRGH ビット、BRG16 ビットを初期化する (16.3「EUSART baud レート ジェネレータ (BRG)」参照 )。

2. SPEN ビットをセットしてシリアルポートを有効にする。非同期モードの場合、SYNC ビットをクリアする。

3. 割り込みを使用する場合、RCIE 割り込みイネーブルビットをセットし、INTCON レジスタの GIEおよび PEIE ビットもセットする。

4. RX9 ビットをセットして 9 ビット受信を有効にする。

5. ADDEN ビットをセットしてアドレス検出を有効にする。

6. 受信データの極性を反転する場合、DTRXP ビットをセットする。

7. CREN ビットをセットして、受信を有効にする。

8. RSRから9ビット目をセットした文字が受信バッファに転送されると、RCIF 割り込みフラグビットがセットされる。RCIE割り込みイネーブルビットもセットしている場合、割り込みが発生する。

9. RCSTA レジスタを読み出してエラーフラグを取得する。9 ビット目のデータビットは常にセットされる。

10. RCREG レジスタを読み出し、受信バッファから受信済みデータの下位 8 ビットを取得する。これがデバイスのアドレスかどうかをソフトウェアで判定する。

11. オーバーランが発生した場合、CREN レシーバ イネーブルビットをクリアしてOERRフラグをクリアする。

12. デバイスのアドレスと一致した場合、ADDENビットをクリアして全ての受信データを受信バッファに取り込み、割り込みを生成する。

DS41350D_JP - p. 190 Preliminary 2010 Microchip Technology Inc.

Page 191: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 16-5: 非同期受信

表 16-2: 非同期受信に関連するレジスタ

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 289

RCREG EUSART 受信レジスタ 289

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 289

BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 289

SPBRGH EUSART baud レート ジェネレータ レジスタ、上位バイト 289

SPBRG EUSART baud レート ジェネレータ レジスタ、下位バイト 289

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットは非同期受信には使用しません。

Startbit bit 7/8bit 1bit 0 bit 7/8 bit 0Stop

bit

Startbit

Startbitbit 7/8 Stop

bitRX/DT pin

RegRcv Buffer Reg

Rcv Shift

Read RcvBuffer RegRCREG

RCIF(Interrupt Flag)

OERR bit

CREN

Word 1RCREG

Word 2RCREG

Stopbit

Note: このタイミング チャートでは、3 つのワードが RX 入力に現れています。3 つ目のワードの後に RCREG ( 受信バッファ ) を読み出しているため、OERR ( オーバーランエラー ) ビットがセットされています。

RCIDL

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 191

Page 192: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.2 非同期モードのクロック精度

内部オシレータ ブロックの出力 (HFINTOSC) は工場で校正済みです。しかし HFINTOSC の周波数は VDD

や温度の変化によってドリフトする事があり、これによって非同期 baud レートが直接影響を受けます。baud レート クロックを調整するには 2 つの方法がありますが、いずれの場合も何らかの基準となるクロック源が必要です。

1 つは OSCTUNE レジスタを使用して HFINTOSC 出力を調整する方法で、通常こちらの方法を推奨します。OSCTUNEレジスタの値を調整すると、システム クロック ソースを微調整できます。詳細は、2.6.1「OSCTUNEレジスタ」を参照してください。

もう 1 つは、baud レート ジェネレータの値を調整する方法です。これは、自動 baud レート検出機能によって自動的に実行できます (16.3.1「自動 baud レート検出」参照 )。ただし、baud レート ジェネレータを調整して周辺クロック周波数の緩慢な変化を補正する場合、分解能が不十分である事があります。

レジスタ 16-1: TXSTA: 送信状態 / 制御レジスタ

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-1 R/W-0

CSRC TX9 TXEN(1) SYNC SENDB BRGH TRMT TX9D

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 CSRC: クロック源選択ビット

非同期モード : ドントケア

同期モード : 1 = マスタモード ( クロックを内部の BRG から生成 )0 = スレーブモード ( 外部クロック ソースを使用 )

bit 6 TX9: 9 ビット送信イネーブルビット

1 = 9 ビット送信を選択

0 = 8 ビット送信を選択

bit 5 TXEN: 送信イネーブルビット (1)

1 = 送信を有効にする

0 = 送信を無効にする

bit 4 SYNC: EUSART モード選択ビット 1 = 同期モード 0 = 非同期モード

bit 3 SENDB: ブレーク文字送信ビット

非同期モード :1 = 次の送信で同期ブレークを送信 ( 完了時にハードウェアによってクリア )0 = 同期ブレークの送信完了

同期モード :ドントケア

bit 2 BRGH: 高 baud レート選択ビット

非同期モード : 1 = 高速 0 = 低速

同期モード : 使用しない

bit 1 TRMT: 送信シフトレジスタ ステータスビット

1 = TSR が空 0 = TSR がフル

bit 0 TX9D: 送信データの 9 ビット目

アドレス / データビットまたはパリティビットとして使用可能

Note 1: 同期モードでは、SREN/CREN の設定が TXEN よりも優先されます。

DS41350D_JP - p. 192 Preliminary 2010 Microchip Technology Inc.

Page 193: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 16-2: RCSTA: 受信状態 / 制御レジスタ (1)

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-0 R-x

SPEN RX9 SREN CREN ADDEN FERR OERR RX9D

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 SPEN: シリアルポート イネーブルビット

1 = シリアルポートを有効にする (RX/DT および TX/CK ピンをシリアルポート ピンに設定 )0 = シリアルポートを無効にする ( リセットに保持 )

bit 6 RX9: 9 ビット受信イネーブルビット

1 = 9 ビット受信を選択0 = 8 ビット受信を選択

bit 5 SREN: シングル受信イネーブルビット

非同期モード :

ドントケア同期モード – マスタ :

1 = シングル受信を有効にする0 = シングル受信を無効にするこのビットは、受信完了後にクリアされる同期モード – スレーブ :

ドントケア

bit 4 CREN: 連続受信イネーブルビット

非同期モード :

1 = レシーバを有効にする0 = レシーバを無効にする同期モード :

1 = イネーブルビット CREN がクリアされるまで連続受信を有効にする(CREN の設定は SREN より優先 )

0 = 連続受信を無効にする

bit 3 ADDEN: アドレス検出イネーブルビット

非同期モード 9 ビット (RX9 = 1):

1 = アドレス検出を有効にし、割り込みを有効にする。RSR<8> がセットされたら受信バッファに転送する

0 = アドレス検出を無効にする。全てのバイトが受信され、9 ビット目はパリティビットとして使用可能

非同期モード 8 ビット (RX9 = 0):

ドントケア

bit 2 FERR: フレーミング エラー ビット

1 = フレーミング エラー (RCREG レジスタを読み出すと更新され、次の有効なバイトを受信する )0 = フレーミング エラーなし

bit 1 OERR: オーバーランエラー ビット

1 = オーバーランエラー (CREN ビットをクリアするとクリアされる ) 0 = オーバーランエラーなし

bit 0 RX9D: 受信データの 9 ビット目

アドレス / データビットまたはパリティビットとして使用可能。ユーザ ファームウェアでの計算が必要

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 193

Page 194: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 16-3: BAUDCON: baud レート制御レジスタ

R-0 R-1 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0

ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 ABDOVF: 自動 baud レート検出オーバーフロー ビット

非同期モード :1 = 自動 baud レートタイマがオーバーフローした0 = 自動 baud レートタイマがオーバーフローしていない同期モード :ドントケア

bit 6 RCIDL: 受信アイドル フラグビット

非同期モード :1 = レシーバがアイドル0 = スタートビットが検出され、レシーバがアクティブ同期モード :ドントケア

bit 5 DTRXP: データ / 受信極性選択ビット

非同期モード :1 = 受信データ (RX) を反転する ( 負論理 )0 = 受信データ (RX) を反転しない ( 正論理 )同期モード :1 = データ (DT) を反転する ( 負論理 )0 = データ (DT) を反転しない ( 正論理 )

bit 4 CKTXP: クロック / 送信極性選択ビット

非同期モード :1 = 送信 (TX) のアイドル状態を low にする0 = 送信 (TX) のアイドル状態を high にする

同期モード :1 = クロックの立ち下がりエッジでデータが変化し、クロックの立ち上がりエッジでデータを

サンプリングする0 = クロックの立ち上がりエッジでデータが変化し、クロックの立ち下がりエッジでデータを

サンプリングする

bit 3 BRG16: 16 ビット baud レート ジェネレータ ビット

1 = 16 ビット baud レート ジェネレータを使用する (SPBRGH:SPBRG)0 = 8 ビット baud レート ジェネレータを使用する (SPBRG)

bit 2 未実装ビット : 「0」として読み出し

bit 1 WUE: ウェイクアップ イネーブルビット

非同期モード :1 = レシーバが立ち下がりエッジの検出を待機中。文字は受信されないが、立ち下がりエッジで

RCIF がセットされる。WUE は立ち上がりエッジで自動的にクリアされる0 = レシーバは通常の動作中同期モード :ドントケア

bit 0 ABDEN: 自動 baud レート検出イネーブルビット

非同期モード :1 = 自動 baud レート検出モードが有効である ( 自動 baud レート検出の完了時にクリアされる )0 = 自動 baud レート検出モードが無効である同期モード :ドントケア

DS41350D_JP - p. 194 Preliminary 2010 Microchip Technology Inc.

Page 195: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.3 EUSART baud レート ジェネレータ(BRG)

baud レート ジェネレータ (BRG) は、EUSART の非同期および同期モードをサポートするための専用の 8ビットまたは 16 ビットのタイマです。既定値では、BRG は 8 ビットモードで動作します。BAUDCON レジスタの BRG16 ビットをセットすると、16 ビットモードを選択できます。

baud レート タイマはフリーラン動作で、その周期はSPBRGH:SPBRG レジスタペアで決定します。非同期モードでは、TXSTA レジスタの BRGH ビットとBAUDCON レジスタの BRG16 ビットによって baudレート周期の乗数が決まります。同期モードでは、BRGH ビットは無視されます。

表 16-3 に、baud レートの計算式を示します。例 16-1に、baud レートおよび baud レートエラーの計算例を示します。

参考までに、各種非同期モードにおける代表的な baudレートとbaudレートエラーの計算値を表 16-5にまとめます。高 baud レート (BRGH = 1) または 16 ビットBRG (BRG16 = 1) を使用すると、baud レートエラーの低減に効果があります。16 ビット BRG モードを使用すると、オシレータ周波数が高い場合でも低速のbaud レートが得られます。

SPBRGH:SPBRGレジスタペアに新しい値を書き込むと、BRG タイマがリセット ( クリア ) されます。これにより、BRG はタイマ オーバーフローを待たずに新しい baud レートを出力できるようになっています。

レシーバの受信動作中にシステムクロックを変更すると、レシーバエラーまたはデータロスが発生します。この問題を防ぐには、システムクロックを変更する前に RCIDL ビットの状態をチェックして、受信動作がアイドルである事を確認してください。

例 16-1: baud レートエラーの計算

表 16-3: baud レートの計算式

表 16-4: baud レート ジェネレータに関連するレジスタ

FOSC = 16 MHz、目標の baud レートが 9600、非同期モード、8 ビット BRG のデバイスの場合 :

SPBRGH:SPBRG について解くと :

Desired Baud Rate FOSC

64 [SPBRGH:SPBRG] 1+ ---------------------------------------------------------------------=

25.042 25= =

Calculated Baud Rate 1600000064 25 1+ ---------------------------=

9615=

Error Calc. Baud Rate Desired Baud Rate –Desired Baud Rate

--------------------------------------------------------------------------------------------=

9615 9600– 9600

---------------------------------- 0.16%= =

FOSCX = 64 * (Desired Baud Rate)

-1( )16,000,000

= 64 * 9600-1( )

コンフィグレーション ビットBRG/EUSART モード baud レートの計算式

SYNC BRG16 BRGH

0 0 0 8 ビット / 非同期 FOSC/[64 (n+1)]

0 0 1 8 ビット / 非同期FOSC/[16 (n+1)]

0 1 0 16 ビット / 非同期

0 1 1 16 ビット / 非同期

FOSC/[4 (n+1)]1 0 x 8 ビット / 同期

1 1 x 16 ビット / 同期

凡例 : x = ドントケア、n = SPBRGH:SPBRG レジスタペアの値

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 リセット値の記載ページ

TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 289

RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 289

BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 289

SPBRGH EUSART baud レート ジェネレータ レジスタ、上位バイト 289

SPBRG EUSART baud レート ジェネレータ レジスタ、下位バイト 289

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットは BRG には使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 195

Page 196: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 16-5: 各種非同期モードにおける baud レート

baudレート

SYNC = 0、BRGH = 0、BRG16 = 0

FOSC = 48.000 MHz FOSC = 18.432 MHz FOSC = 12.000 MHz FOSC = 11.0592 MHz

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

300 — — — — — — — — — — — —

1200 — — — 1200 0.00 239 1202 0.16 155 1200 0.00 143

2400 — — — 2400 0.00 119 2404 0.16 77 2400 0.00 71

9600 9615 0.16 77 9600 0.00 29 9375 -2.34 19 9600 0.00 17

10417 10417 0.00 71 10286 -1.26 27 10417 0.00 17 10165 -2.42 16

19.2k 19.23k 0.16 38 19.20k 0.00 14 18.75k -2.34 9 19.20k 0.00 8

57.6k 57.69k 0.16 12 57.60k 0.00 7 — — — 57.60k 0.00 2

115.2k — — — — — — — — — — — —

baudレート

SYNC = 0、BRGH = 0、BRG16 = 0

FOSC = 8.000 MHz FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

300 — — — 300 0.16 207 300 0.00 191 300 0.16 51

1200 1202 0.16 103 1202 0.16 51 1200 0.00 47 1202 0.16 12

2400 2404 0.16 51 2404 0.16 25 2400 0.00 23 — — —

9600 9615 0.16 12 — — — 9600 0.00 5 — — —

10417 10417 0.00 11 10417 0.00 5 — — — — — —

19.2k — — — — — — 19.20k 0.00 2 — — —

57.6k — — — — — — 57.60k 0.00 0 — — —

115.2k — — — — — — — — — — — —

baudレート

SYNC = 0、BRGH = 1、BRG16 = 0

FOSC = 48.000 MHz FOSC = 18.432 MHz FOSC = 12.000 MHz FOSC = 11.0592 MHz

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

300 — — — — — — — — — — — —

1200 — — — — — — — — — — — —

2400 — — — — — — — — — — — —

9600 — — — 9600 0.00 119 9615 0.16 77 9600 0.00 71

10417 — — — 10378 -0.37 110 10417 0.00 71 10473 0.53 65

19.2k 19.23k 0.16 155 19.20k 0.00 59 19.23k 0.16 38 19.20k 0.00 35

57.6k 57.69k 0.16 51 57.60k 0.00 19 57.69k 0.16 12 57.60k 0.00 11

115.2k 115.38k 0.16 25 115.2k 0.00 9 — — — 115.2k 0.00 5

DS41350D_JP - p. 196 Preliminary 2010 Microchip Technology Inc.

Page 197: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

baudレート

SYNC = 0、BRGH = 1、BRG16 = 0

FOSC = 8.000 MHz FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

実際の

レート

%誤差

SPBRGの値

(10 進数 )

300 — — — — — — — — — 300 0.16 207

1200 — — — 1202 0.16 207 1200 0.00 191 1202 0.16 51

2400 2404 0.16 207 2404 0.16 103 2400 0.00 95 2404 0.16 25

9600 9615 0.16 51 9615 0.16 25 9600 0.00 23 — — —

10417 10417 0.00 47 10417 0.00 23 10473 0.53 21 10417 0.00 5

19.2k 19231 0.16 25 19.23k 0.16 12 19.2k 0.00 11 — — —

57.6k 55556 -3.55 8 — — — 57.60k 0.00 3 — — —

115.2k — — — — — — 115.2k 0.00 1 — — —

baudレート

SYNC = 0、BRGH = 0、BRG16 = 1

FOSC = 48.000 MHz FOSC = 18.432 MHz FOSC = 12.000 MHz FOSC = 11.0592 MHz

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

300 300.0 0.00 9999 300.0 0.00 3839 300 0.00 2499 300.0 0.00 2303

1200 1200.1 0.00 2499 1200 0.00 959 1200 0.00 624 1200 0.00 575

2400 2400 0.00 1249 2400 0.00 479 2404 0.16 311 2400 0.00 287

9600 9615 0.16 311 9600 0.00 119 9615 0.16 77 9600 0.00 71

10417 10417 0.00 287 10378 -0.37 110 10417 0.00 71 10473 0.53 65

19.2k 19.23k 0.16 155 19.20k 0.00 59 19.23k 0.16 38 19.20k 0.00 35

57.6k 57.69k 0.16 51 57.60k 0.00 19 57.69k 0.16 12 57.60k 0.00 11

115.2k 115.38k 0.16 25 115.2k 0.00 9 — — — 115.2k 0.00 5

baudレート

SYNC = 0、BRGH = 0、BRG16 = 1

FOSC = 8.000 MHz FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

300 299.9 -0.02 1666 300.1 0.04 832 300.0 0.00 767 300.5 0.16 207

1200 1199 -0.08 416 1202 0.16 207 1200 0.00 191 1202 0.16 51

2400 2404 0.16 207 2404 0.16 103 2400 0.00 95 2404 0.16 25

9600 9615 0.16 51 9615 0.16 25 9600 0.00 23 — — —

10417 10417 0.00 47 10417 0.00 23 10473 0.53 21 10417 0.00 5

19.2k 19.23k 0.16 25 19.23k 0.16 12 19.20k 0.00 11 — — —

57.6k 55556 -3.55 8 — — — 57.60k 0.00 3 — — —

115.2k — — — — — — 115.2k 0.00 1 — — —

表 16-5: 各種非同期モードにおける baud レート ( 続き )

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 197

Page 198: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

baudレート

SYNC = 0、BRGH = 1、BRG16 = 1または SYNC = 1、BRG16 = 1

FOSC = 48.000 MHz FOSC = 18.432 MHz FOSC = 12.000 MHz FOSC = 11.0592 MHz

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

300 300 0.00 39999 300.0 0.00 15359 300 0.00 9999 300.0 0.00 9215

1200 1200 0.00 9999 1200 0.00 3839 1200 0.00 2499 1200 0.00 2303

2400 2400 0.00 4999 2400 0.00 1919 2400 0.00 1249 2400 0.00 1151

9600 9600 0.00 1249 9600 0.00 479 9615 0.16 311 9600 0.00 287

10417 10417 0.00 1151 10425 0.08 441 10417 0.00 287 10433 0.16 264

19.2k 19.20k 0.00 624 19.20k 0.00 239 19.23k 0.16 155 19.20k 0.00 143

57.6k 57.69k 0.16 207 57.60k 0.00 79 57.69k 0.16 51 57.60k 0.00 47

115.2k 115.38k 0.16 103 115.2k 0.00 39 115.38k 0.16 25 115.2k 0.00 23

baudレート

SYNC = 0、BRGH = 1、BRG16 = 1または SYNC = 1、BRG16 = 1

FOSC = 8.000 MHz FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

実際の

レート

%誤差

SPBRGH:SPBRG(10 進数 )

300 300.0 0.00 6666 300.0 0.01 3332 300.0 0.00 3071 300.1 0.04 832

1200 1200 -0.02 1666 1200 0.04 832 1200 0.00 767 1202 0.16 207

2400 2401 0.04 832 2398 0.08 416 2400 0.00 383 2404 0.16 103

9600 9615 0.16 207 9615 0.16 103 9600 0.00 95 9615 0.16 25

10417 10417 0.00 191 10417 0.00 95 10473 0.53 87 10417 0.00 23

19.2k 19.23k 0.16 103 19.23k 0.16 51 19.20k 0.00 47 19.23k 0.16 12

57.6k 57.14k -0.79 34 58.82k 2.12 16 57.60k 0.00 15 — — —

115.2k 117.6k 2.12 16 111.1k -3.55 8 115.2k 0.00 7 — — —

表 16-5: 各種非同期モードにおける baud レート ( 続き )

DS41350D_JP - p. 198 Preliminary 2010 Microchip Technology Inc.

Page 199: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.3.1 自動 baud レート検出

EUSART モジュールは baud レートの自動検出 / 校正をサポートしています。

自動 baud レート検出 (ABD) モードでは、BRG へのクロックが逆方向になります。BRG が入力 RX 信号にクロックを供給するのではなく、RX 信号が BRG のタイミングを生成します。baud レート ジェネレータを使用して、LIN バスの同期文字である 55h (ASCII「U」)の周期を計測します。この文字は、ストップビットのエッジを含め 5 つの立ち上がりエッジがあるのが特長です。

BAUDCONレジスタのABDENビットをセットすると、自動 baudレート校正シーケンスが開始します(図 16-6)。ABD シーケンスの実行中、EUSART ステートマシンはアイドルのまま保持されます。スタートビット直後の受信ラインの 初の立ち上がりエッジで、SPBRGが BRG カウンタクロックを使用してカウントを開始します ( 表 16-6 参照 )。5 つ目の立ち上がりエッジは、8番目のビット周期の 後にRXピンで発生します。この時点で、SPBRGH:SPBRG レジスタペア内には正しい BRG 周期を累計した値が格納されており、ABDENビットは自動的にクリアされ、RCIF 割り込みフラグがセットされます。RCIF 割り込みをクリアするには、RCREG に対して読み出しを実行する必要があります。RCREG の内容は破棄します。SPBRGH レジスタを使用しないモードで校正を行う場合、SPBRGH レジスタの 00h をユーザがチェックすれば、SPBRG レジスタがオーバーフローしていない事を確認できます。

BRG の自動 baud レート クロックは、BRG16 ビットと BRGH ビットによって決まります ( 表 16-6 参照 )。ABD モードでは、SPBRGH および SPBRG レジスタはBRG16 ビットの設定に関係なく 16 ビットカウンタとして使用します。baud レート周期の校正時、SPBRGHおよび SPBRG レジスタは BRG ベース クロックレー

トの 1/8 のクロックで動作します。こうして得られたバイトの計測値は、 高クロック時の平均ビット時間に等しくなります。

表 16-6: BRG カウンタのクロックレート

図 16-6: 自動 baud レート校正

Note 1: ABDENビットとWUEビットを両方セットした場合、自動 baud レート検出はブレーク文字直後のバイトで実行されます(16.3.3「ブレークによる自動ウェイクアップ」参照 )。

2: 入力文字の baud レートが選択した BRGクロック源のレンジ内となるように、ユーザの責任で設定する必要があります。オシレータ周波数と EUSART の baud レートの組み合わせによっては、使用できないものもあります。

3: 自動baudレート プロセスでは、自動baudレート カウンタが 1 からカウントを開始します。精度を重視する場合、自動 baudレート シーケンスの完了時にSPBRGH:SPBRG レジスタペアから 1 を引いてください。

BRG16 BRGH BRG ベースクロック

BRG ABDクロック

0 0 FOSC/64 FOSC/512

0 1 FOSC/16 FOSC/128

1 0 FOSC/16 FOSC/128

1 1 FOSC/4 FOSC/32

Note: ABD シーケンスでは、SPBRG およびSPBRGHレジスタはBRG16ビットの設定に関係なく 16 ビットカウンタとして使用します。

BRG Value

RX pin

ABDEN bit

RCIF bit

bit 0 bit 1

(Interrupt)

ReadRCREG

BRG Clock

Start

Auto ClearedSet by User

XXXXh 0000h

Edge #1

bit 2 bit 3Edge #2

bit 4 bit 5Edge #3

bit 6 bit 7Edge #4

Stop bit

Edge #5

001Ch

Note 1: ABD シーケンスを実行するには、EUSART モジュールを非同期モードに設定する必要があります。

SPBRG XXh 1Ch

SPBRGH XXh 00h

RCIDL

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 199

Page 200: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.3.2 自動 baud レートのオーバーフロー

自動 baud レート検出時、RX ピンで 5 つ目の立ち上がりエッジを検出する前に baud レート カウントがオーバーフローすると、BAUDCON レジスタの ABDOVFビットがセットされます。ABDOVF ビットは、カウンタの値が SPBRGH:SPBRG レジスタペアの 16 ビットに格納できる 大カウントを超えた事を示します。ABDOVF がセットされた後も、カウンタは RX ピンで5 つ目の立ち上がりエッジを検出するまでカウントを継続します。RX ピンで 5 つ目の立ち上がりエッジを検出すると、ハードウェアが RCIF 割り込みフラグをセットし、BAUDCON レジスタの ABDEN ビットをクリアします。その後、RCREG レジスタを読み出すとRCIF フラグをクリアできます。BAUDCON レジスタの ABDOVF フラグは、ソフトウェアで直接クリアできます。

RCIFフラグがセットされる前に自動baudレート検出を終了するには、ABDEN ビットをクリアしてからBAUDCON レジスタの ABDOVF ビットをクリアします。ABDEN ビットを先にクリアしないと、ABDOVFビットはセットされたままとなります。

16.3.3 ブレークによる自動ウェイクアップ

スリープモード中は、EUSART へのクロックは全て停止されます。このため、baud レート ジェネレータもアクティブでなくなり、文字を正しく受信できなくなります。自動ウェイクアップ機能を利用すると、RX/DTラインのアクティビティによってコントローラをウェイクアップできます。この機能は、非同期モードでのみ使用できます。

自動ウェイクアップ機能を有効にするには、BAUDCONレジスタの WUE ビットをセットします。このビットをセットすると RX/DT での通常の受信シーケンスは無効になり、EUSART はアイドル状態のまま、CPU のモードとは関係なくウェイクアップ イベントの発生を監視します。RX/DT ラインが high から low に遷移するとウェイクアップ イベントとなります ( これは、LIN プロトコルの同期ブレークまたはウェイクアップ信号文字の開始に相当します )。

ウェイクアップ イベントが発生すると同時に、EUSARTモジュールは RCIF 割り込みを生成します。この割り込みは、CPU が通常の動作モードの場合は Q クロックに同期して発生し ( 図 16-7)、デバイスがスリープモードの場合は非同期に発生します (図 16-8)。RCREGレジスタを読み出すと、割り込み条件がクリアされます。

ブレークの 後に RX ラインが low から high に遷移すると、WUE ビットは自動的にクリアされます。これにより、ユーザはブレークイベントの終了を知る事ができます。この時点で EUSART モジュールはアイドルモードになり、次の文字の受信を待ちます。

16.3.3.1 特別な注意事項

ブレーク文字

ウェイクアップ イベント時の文字エラーや文字フラグメントを防止するため、ウェイクアップ文字は全て「0」とする必要があります。

ウェイクアップを有効にすると、データストリームのlow 時間とは関係なくこの機能が働きます。WUE ビットをセットした場合に「0」以外の有効な文字を受信すると、スタートビットから 初の立ち上がりエッジまでの low 時間がウェイクアップ イベントとして解釈されます。文字の残りのビットはフラグメント文字として受信され、後続の文字によってフレーミング エラーまたはオーバーランエラーが発生する事があります。

このため、 初に送信する文字は全て「0」である必要があります。この状態を 10 ビット以上の期間持続する必要があります。LIN バスでは 13 ビット期間を推奨しますが、標準の RS-232 デバイスでは任意のビット期間でかまいません。

オシレータのスタートアップ時間

LP、XT、HS/PLL モード等、特に起動時間の長いオシレータを使用しているアプリケーションでは、オシレータの起動時間を考慮する必要があります。十分な長さの同期ブレーク文字 (またはウェイクアップ信号 )を送信したら、選択したオシレータが起動するまで十分な間隔を置いてからEUSARTを適切に初期化するようにしてください。

WUE ビット

ウェイクアップ イベントが発生すると、RCIF ビットのセットによって受信割り込みが発生します。WUEビットは、RX/DT の立ち上がりエッジでハードウェアによってクリアされます。その後、RCREG レジスタを読み出してその内容を破棄すると、割り込み条件はソフトウェアによってクリアされます。

実際のデータが失われないようにするには、WUEビットをセットする前に RCIDL ビットをチェックして、受信動作中でない事を確認します。受信動作中でなければ、スリープモードに移行する直前に WUE ビットをセットします。

DS41350D_JP - p. 200 Preliminary 2010 Microchip Technology Inc.

Page 201: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 16-7: 通常動作時の自動ウェイクアップ ビット (WUE) のタイミング

図 16-8: スリープ時の自動ウェイクアップ ビット (WUE) のタイミング

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4

OSC1

WUE bit

RX/DT Line

RCIF

Bit set by user Auto Cleared

Cleared due to User Read of RCREG

Note 1: WUE ビットをセットしている間は、EUSART はアイドルのままです。

Q1Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2Q3 Q4 Q1Q2 Q3Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4

OSC1

WUE bit

RX/DT Line

RCIF

Bit Set by User Auto Cleared

Cleared due to User Read of RCREGSleep Command Executed

Note 1

Note 1: ウェイクアップ イベントの際にオシレータの起動に長い時間がかかる場合、stposc信号がまだアクティブな間に WUE ビットが自動的にクリアされる事があります。このシーケンスは Q クロックの有無の影響は受けません。

2: WUE ビットをセットしている間は、EUSART はアイドルのままです。

Sleep Ends

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 201

Page 202: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.3.4 ブレーク文字のシーケンス

EUSART モジュールには、LIN バス規格で必須とされる特殊なブレーク文字シーケンスを送信する機能があります。ブレーク文字は、スタートビット、12 ビットの「0」、ストップビットの順で構成されます。

ブレーク文字を送信するには、まず TXSTA レジスタの SENDB および TXEN ビットをセットします。次に、TXREG に書き込みを実行するとブレーク文字の送信が開始します。TXREG に書き込んだデータの値は無視され、全て「0」として送信されます。

対応するストップビットを送信したら、SENDB ビットはハードウェアによって自動的にリセットされます。このため、ブレーク文字の後に送信するバイト(LIN 規格の場合は主に同期文字 ) を送信 FIFO にあらかじめ読み込んでおく事が可能です。

TXSTA レジスタの TRMT ビットは、通常の送信時と同様に、送信動作がアクティブかアイドルかを示します。ブレーク文字シーケンスのタイミングについては、図 16-9 を参照してください。

16.3.4.1 ブレークおよび同期文字の送信シーケンス

以下のシーケンスにより、メッセージ フレーム ヘッダ (ブレーク文字+自動 baudレート同期バイト )が開始します。このシーケンスは、LIN バスマスタの代表的なものです。

1. EUSART を任意のモードに設定する。

2. TXEN および SENDB ビットをセットしてブレーク シーケンスを有効にする。

3. TXREG にダミー文字を読み込んで送信を開始する ( 読み込んだ値は無視される )。

4. TXREG に「55h」を書き込んで送信 FIFO バッファに同期文字を読み込む。

5. ブレークの送信が完了したら、SENDB ビットがハードウェアによってリセットされ、同期文字が送信される。

TXREG が空になった事が TXIF によって示されると、次のデータバイトをTXREGに書き込む事ができます。

16.3.5 ブレーク文字の受信

拡張 EUSART モジュールには、ブレーク文字の受信方法が 2 通りあります。

1 つは、RCSTA レジスタの FERR ビットと RCREGが示す受信データを使用してブレーク文字を検出する方法です。baud レート ジェネレータは、目標の baudレートに初期化されているものと仮定します。

以下の条件が揃うと、ブレーク文字を受信した事になります。

• RCIF ビットがセット

• FERR ビットがセット

• RCREG = 00h

もう 1 つの方法は、自動ウェイクアップ機能 (16.3.3「ブレークによる自動ウェイクアップ」参照 ) を使用します。自動ウェイクアップ機能を有効にすると、EUSART は RX/DT の次の 2 つの遷移をサンプリングし、RCIF 割り込みを生成して、次のデータバイトとその後の割り込みを受信します。

通常は、ブレーク文字の後に自動 baud レート検出機能を有効にします。どちらの方法の場合も、ユーザはEUSART をスリープモードにする前に BAUDCON レジスタの ABDEN ビットをセットできます。

図 16-9: ブレーク文字シーケンスの送信

Write to TXREGDummy Write

BRG Output(Shift Clock)

Start bit bit 0 bit 1 bit 11 Stop bit

Break

TXIF bit(Transmit

interrupt Flag)

TX (pin)

TRMT bit(Transmit Shift

Reg. Empty Flag)

SENDB(send Break

control bit)

SENDB Sampled Here Auto Cleared

DS41350D_JP - p. 202 Preliminary 2010 Microchip Technology Inc.

Page 203: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.4 EUSART 同期モード

一般に、同期シリアル通信は 1 つのマスタと 1 つまたは複数のスレーブで構成されるシステムで使用します。マスタデバイスは baud レート生成に必要な回路を持ち、システム内の全てのデバイスにクロックを供給します。スレーブデバイスは内部クロック生成回路を持たず、マスタから供給されるクロックを使用します。

同期モードでは、双方向データラインとクロックラインの 2 本の信号線を使用します。スレーブは、マスタから供給される外部クロックを使用して受信 / 送信用のシフトレジスタに対してシリアルデータのシフト入力 / 出力を実行します。データラインは双方向であるため、同期動作は半二重のみです。半二重では、マスタとスレーブのどちらからもデータを送受信できますが、両方が同時に送信する事はできません。EUSARTモジュールはマスタデバイスとしてもスレーブデバイスとしても動作が可能です。

同期送信では、スタートビットとストップビットは使用しません。

16.4.1 同期マスタモード

EUSART モジュールを同期マスタモードとするには、以下のようにビットを設定します。

• SYNC = 1

• CSRC = 1

• SREN = 0 ( 送信の場合 )、SREN = 1 ( 受信の場合 )

• CREN = 0 ( 送信の場合 )、CREN = 1 ( 受信の場合 )• SPEN = 1

TXSTA レジスタの SYNC ビットをセットすると、デバイスが同期モードになります。TXSTA レジスタのCSRC ビットをセットすると、デバイスがマスタになります。RCSTA レジスタの SREN および CREN ビットをクリアするとデバイスが送信モードになり、それ以外の設定では受信モードになります。RCSTA レジスタのSPENビットをセットするとEUSARTが有効になります。RX/DT または TX/CK ピンをアナログ周辺モジュールと共用している場合、対応する ANSEL ビットをクリアしてアナログI/O機能を無効にする必要があります。

RX/DT および TX/CK ピンに対応する TRIS ビットはセットしておく必要があります。

16.4.1.1 マスタクロック

同期データ転送には、データと同期した専用のクロックラインを使用します。マスタとしてコンフィグレーションされたデバイスが、TX/CK ラインでクロックを送信します。EUSART を同期送信または同期受信モードに設定すると、TX/CK ピン出力ドライバが自動的に有効になります。シリアル データ ビットはリーディング エッジで変化し、そのクロックのトレーリング エッジでデータ ビットが有効になります。各データビットで 1 クロックサイクルが生成されます。データビットの数だけクロックサイクルが生成されます。

16.4.1.2 クロック極性

Microwire との互換性を維持するために、クロック極性は選択可能になっています。クロック極性はBAUDCON レジスタの CKTXP ビットで選択します。CKTXP ビットをセットするとクロックのアイドル状態が high になります。CKTXP ビットをセットした場合、データは各クロックの立ち下がりエッジで変化し、各クロックの立ち上がりエッジでサンプリングされます。CKTXP ビットをクリアするとクロックのアイドル状態が low になります。この場合、データは各クロックの立ち上がりエッジで変化し、各クロックの立ち下がりエッジでサンプリングされます。

16.4.1.3 同期マスタ送信

データはデバイスの RX/DT ピンから送信されます。EUSART を同期マスタ送信モードに設定すると、RX/DT および TX/CK ピン出力ドライバが自動的に有効になります。

TXREG レジスタに文字を書き込むと送信が開始します。TSR 内に以前の文字が一部でも残っている場合、その文字の 後のビットが送信されるまで新しい文字データは TXREG に保持されます。これが 初の文字の場合、または TSR 内に以前の文字が全く残っていない場合、TXREG のデータがただちに TSR レジスタに転送されます。TXREG から TSR にデータが転送されたら、その直後に文字の送信が開始します。

各データビットはマスタクロックのリーディングエッジで変化し、次のクロックのリーディング エッジまで有効です。

16.4.1.4 データ極性

送受信データの極性は、BAUDCONレジスタのDTRXPビットで制御できます。このビットが既定値「0」の場合、送受信データは正論理になります。DTRXP ビットを「1」にセットするとデータが反転し、送受信データは負論理になります。

Note: TSR レジスタはデータメモリにマッピングされていないため、ユーザからはアクセスできません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 203

Page 204: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.4.1.5 同期マスタ送信の実行手順 :

1. 目標のbaudレートに合わせて、SPBRGH:SPBRGレジスタペア、BRGH ビット、BRG16 ビットを初期化する (16.3「EUSART baud レート ジェネレータ (BRG)」参照 )。

2. SYNC、SPEN、CSRC ビットをセットして同期マスタ シリアルポートを有効にする。RX/DT およびTX/CK I/Oピンに対応するTRISビットをセットする。

3. SRENおよびCRENビットをクリアして受信モードを無効にする。

4. TXEN ビットをセットして、送信モードを有効にする。

5. 9ビット送信を行う場合、TX9ビットをセットする。

6. 割り込みを使用する場合、TXIE、GIE、PEIE 割り込みイネーブルビットをセットする。

7. 9 ビット送信を選択した場合、TX9D ビットに 9ビット目を読み込む。

8. TXREG レジスタにデータを読み込むと送信が開始する。

図 16-10: 同期送信

図 16-11: 同期送信 (TXEN を利用 )

bit 0 bit 1 bit 7

Word 1

bit 2 bit 0 bit 1 bit 7RX/DT

Write toTXREG Reg

TXIF bit(Interrupt Flag)

TXEN bit‘1’ ‘1’

Word 2

TRMT bit

Write Word 1 Write Word 2

Note: 同期マスタモード、SPBRG = 0、2 つの 8 ビットワードを連続送信

pin

TX/CK pin

TX/CK pin

(SCKP = 0)

(SCKP = 1)

RX/DT pin

TX/CK pin

Write toTXREG reg

TXIF bit

TRMT bit

bit 0 bit 1 bit 2 bit 6 bit 7

TXEN bit

DS41350D_JP - p. 204 Preliminary 2010 Microchip Technology Inc.

Page 205: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 16-7: 同期マスタ送信に関連するレジスタ

16.4.1.6 同期マスタ受信

データは RX/DT ピンで受信します。EUSART を同期マスタ受信モードに設定した場合、RX/DT ピンに対応する TRIS ビットをセットしてこのピンの出力ドライバを無効にする必要があります。

同期モードでは、シングル受信イネーブルビット(RCSTA レジスタの SREN ビット ) または連続受信イネーブルビット (RCSTA レジスタの CREN ビット ) のいずれかをセットすると受信が有効になります。

SREN をセットして CREN をクリアすると、1 文字のデータビットの数だけクロックサイクルが生成されます。1 文字の受信が完了したら SREN ビットは自動的にクリアされます。CREN をセットすると、CREN をクリアするまでクロックが連続生成されます。1 文字の受信中にCREN をクリアするとCKクロックがただちに停止し、一部のみ受信した文字は破棄されます。SREN と CREN を両方セットすると、 初の文字の受信が完了した時点で SREN がクリアされ、以後はCREN が使用されます。

受信を開始するには、SREN または CREN のいずれかをセットします。TX/CK クロックピンのトレーリングエッジで RX/DT ピンのデータをサンプリングし、受信シフトレジスタ (RSR) にシフト入力します。1 文字全体を RSR に受信したら RCIF ビットがセットされ、この文字が 2 文字受信 FIFO に自動的に転送されます。受信 FIFO の先頭文字の下位 8 ビットが RCREG に格納されます。受信 FIFO 内に読み出していない文字が残っている間は、RCIF ビットはセットされたままです。

16.4.1.7 スレーブクロック

同期データ転送には、データと同期した専用のクロックラインを使用します。スレーブとしてコンフィグレーションされたデバイスが、TX/CK ラインでクロックを受信します。デバイスを同期スレーブ送信または受信モードに設定した場合、TX/CK ピンに対応するTRIS ビットをセットしてこのピンの出力ドライバを無効にする必要があります。シリアル データ ビットはリーディング エッジで変化し、そのクロックのトレーリング エッジでデータ ビットが有効になります。1 クロックサイクルで1ビットのデータを転送します。データビットの数だけクロックサイクルを受信します。

16.4.1.8 受信オーバーランエラー

受信 FIFO バッファには 2 文字まで格納できます。RCREG を読み出して FIFO にアクセスする前に 3 文字目を 後まで受信すると、オーバーランエラーが発生します。オーバーランエラーになると、RCSTA レジスタの OERR ビットがセットされます。FIFO 内の以前のデータが上書きされる事はありません。既にFIFO バッファ内にある 2 文字は読み出す事ができますが、それ以降の文字はオーバーランエラーが解消されるまで受信できません。OERR ビットは、オーバーラン条件を解消する事によってのみクリアできます。SREN ビットがセット、CREN ビットがクリアの時にオーバーランエラーが発生した場合、RCREG を読み出すとエラーが解消されます。CREN ビットがセットされている時にオーバーランエラーが発生した場合、RCSTA レジスタの CREN ビットをクリアするか、SPEN ビットをクリアして EUSART をリセットするとエラー条件が解消されます。

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 289

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

TXREG EUSART 送信レジスタ 289

TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 289

BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 289

SPBRGH EUSART baud レート ジェネレータ レジスタ、上位バイト 289

SPBRG EUSART baud レート ジェネレータ レジスタ、下位バイト 289

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットは同期マスタ送信には使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 205

Page 206: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

16.4.1.9 9 ビット文字の受信

EUSART は 9 ビット文字の受信をサポートしています。RCSTA レジスタの RX9 ビットをセットすると、EUSART は 1 文字の受信につき 9 ビットを RSR にシフト入力します。RCSTA レジスタの RX9D ビットには、受信 FIFO の先頭にある、読み出されていない文字の 9 ビット目 ( 上位データビット ) を格納します。受信 FIFO バッファから 9 ビットデータを読み出す場合、RCREG の下位 8 ビットより前に RX9D データビットを読み出す必要があります。

16.4.1.10 同期マスタ受信の実行手順 :

1. 適切なbaudレートに合わせて、SPBRGH:SPBRGレジスタペアを初期化する。必要に応じて BRGHおよびBRG16ビットをセットまたはクリアして、目標の baud レートに設定する。

2. SYNC、SPEN、CSRC ビットをセットして同期マスタ シリアルポートを有効にする。RX/DT およびTX/CKピンに対応するTRISビットをセットして、これらのピンの出力ドライバを無効にする。

3. CRENおよびSRENビットがクリアされている事を確認する。

4. 割り込みを使用する場合、INTCON レジスタのGIE および PEIE ビットをセットし、RCIE ビットをセットする。

5. 9ビット受信を行う場合、RX9ビットをセットする。

6. SREN ビットをセットするか、連続受信の場合はCREN ビットをセットすると受信が開始する。

7. 1 文字の受信が完了すると、割り込みフラグビット RCIF がセットされる。RCIE 割り込みイネーブルビットもセットしている場合、割り込みが発生する。

8. 9 ビット受信が有効な場合は RCSTA レジスタを読み出して 9 ビット目を取得し、受信中にエラーが発生したかどうかを確認する。

9. RCREG レジスタを読み出して、8 ビットの受信データを読み出す。

10. オーバーランエラーが発生した場合、RCSTA レジスタの CREN ビットをクリアするか、SPENビットをクリアして EUSART をリセットしてエラーを解消する。

図 16-12: 同期受信 ( マスタモード、SREN)

CREN bit

RX/DT

Write tobit SREN

SREN bit

RCIF bit(Interrupt)

ReadRXREG

‘0’

bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7

‘0’

Note: このタイミング チャートは、同期マスタモードで SREN = 1、BRGH = 0とした場合を示しています。

TX/CK pin

TX/CK pin

pin

(SCKP = 0)

(SCKP = 1)

DS41350D_JP - p. 206 Preliminary 2010 Microchip Technology Inc.

Page 207: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 16-8: 同期マスタ受信に関連するレジスタ

16.4.2 同期スレーブモード

EUSART モジュールを同期スレーブモードとして設定するには、以下のようにビットを設定します。

• SYNC = 1

• CSRC = 0

• SREN = 0 ( 送信の場合 )、SREN = 1 ( 受信の場合 )

• CREN = 0 ( 送信の場合 )、CREN = 1 ( 受信の場合 )• SPEN = 1

TXSTA レジスタの SYNC ビットをセットすると、デバイスが同期モードになります。TXSTAレジスタのCSRCビットをクリアすると、デバイスがスレーブになります。RCSTA レジスタの SREN および CREN ビットをクリアするとデバイスが送信モードになり、それ以外の設定では受信モードになります。RCSTA レジスタのSPEN ビットをセットすると EUSART が有効になります。RX/DT または TX/CK ピンをアナログ周辺モジュールと共用している場合、対応する ANSEL ビットをクリアしてアナログ I/O 機能を無効にする必要があります。

RX/DT および TX/CK ピンに対応する TRIS ビットをセットして、これらのピンの出力ドライバを無効にします。

16.4.2.1 EUSART 同期スレーブ送信

同期マスタモードと同期スレーブモードの送信動作は基本的に共通です ( 16.4.1.3「同期マスタ送信」参照 )が、スリープモードの場合のみ異なります。

TXREG に 2 ワードを書き込んだ後に SLEEP命令を実行すると、以下の動作となります。

1. 初の 1 文字がただちに TSR レジスタに転送され、送信される。

2. 2 番目の文字は TXREG レジスタに残る。

3. TXIF ビットはセットされない。

4. 初の 1 文字が TSR からシフト出力されると、TXREG レジスタから TSR に 2 番目の文字が転送され、この時点で TXIF ビットがセットされる。

5. PEIEおよびTXIEビットが両方ともセットされている場合、割り込みによってデバイスがスリープからウェイクアップし、次の命令を実行する。GIEビットもセットされている場合、プログラムが割り込みサービスルーチンを呼び出す。

16.4.2.2 同期スレーブ送信の実行手順 :

1. SYNC および SPEN ビットをセットし、CSRCビットをクリアする。RX/DT および TX/CK I/O ピンに対応する TRIS ビットをセットする。

2. CREN および SREN ビットをクリアする。

3. 割り込みを使用する場合、INTCON レジスタのGIE および PEIE ビットをセットし、TXIE ビットをセットする。

4. 9ビット送信を行う場合、TX9ビットをセットする。

5. TXEN ビットをセットして、送信を有効にする。

6. 9ビット送信を選択した場合、 上位ビット(MSb)を TX9D ビットに読み込む。

7. 下位 8 ビットを TXREG レジスタに書き込むと送信が開始する。

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 289

RCREG EUSART 受信レジスタ 289

TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 289

BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 289

SPBRGH EUSART baud レート ジェネレータ レジスタ、上位バイト 289

SPBRG EUSART baud レート ジェネレータ レジスタ、下位バイト 289

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットは同期マスタ受信には使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 207

Page 208: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 16-9: 同期スレーブ送信に関連するレジスタ

16.4.2.3 EUSART 同期スレーブ受信

同期マスタモードと同期スレーブモードの受信動作は基本的に共通です (16.4.1.6「同期マスタ受信」) が、以下の例外があります。

• スリープ

• CREN ビットは常にセットされるため、レシーバがアイドルにならない

• SREN ビットはスレーブモードでは使用しない

スリープモードに移行する前にCRENビットをセットしておくと、スリープモード時でも文字を受信できます。文字を受信すると、RSR レジスタから RCREG レジスタへデータが転送されます。RCIEイネーブルビットがセットされている場合、割り込みによってデバイスがスリープからウェイクアップし、次の命令を実行します。GIE ビットもセットされている場合、プログラムが割り込みベクタに分岐します。

16.4.2.4 同期スレーブ受信の実行手順 :

1. SYNC および SPEN ビットをセットし、CSRCビットをクリアする。RX/DT および TX/CK I/Oピンに対応する TRIS ビットをセットする。

2. 割り込みを使用する場合、INTCON レジスタのGIE および PEIE ビットをセットし、RCIE ビットをセットする。

3. 9 ビット受信を行う場合、RX9 ビットをセットする。

4. CREN ビットをセットして受信を有効にする。

5. 受信が完了すると、RCIF ビットがセットされる。RCIE ビットをセットしている場合、割り込みが発生する。

6. 9 ビットモードを有効にしている場合、RCSTAレジスタの RX9D ビットから 上位ビット(MSb) を取得する。

7. RCREG レジスタを読み出し、受信 FIFO から下位 8 ビットを取得する。

8. オーバーランエラーが発生した場合、RCSTAレジスタの CREN ビットをクリアするか、SPENビットをクリアして EUSART をリセットしてエラーを解消する。

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 289

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

TXREG EUSART 送信レジスタ 289

TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 289

BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 289

SPBRGH EUSART baud レート ジェネレータ レジスタ、上位バイト 289

SPBRG EUSART baud レート ジェネレータ レジスタ、下位バイト 289

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットは同期スレーブ送信には使用しません。

DS41350D_JP - p. 208 Preliminary 2010 Microchip Technology Inc.

Page 209: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 16-10: 同期スレーブ受信に関連するレジスタ

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 289

RCREG EUSART 受信レジスタ 289

TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 289

BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 289

SPBRGH EUSART baud レート ジェネレータ レジスタ、上位バイト 289

SPBRG EUSART baud レート ジェネレータ レジスタ、下位バイト 289

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットは同期スレーブ受信には使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 209

Page 210: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 210 Preliminary 2010 Microchip Technology Inc.

Page 211: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

17.0 A/Dコンバータ (ADC)モジュール

A/D コンバータは、アナログ入力信号を 10 ビットのバイナリ値に変換します。本デバイスで使用するアナログ入力は、多重化して 1 つのサンプルホールド回路に入力します。サンプルホールド回路の出力をADC の入力に接続します。ADC は逐次比較方式によって 10ビットのバイナリ値を生成し、この変換結果を A/D 変換結果レジスタ (ADRESL および ADRESH) に格納します。

ADC の電圧リファレンスは、VDD または外部リファレンスピンに印加された電圧のいずれかをソフトウェアで選択できます。

ADC は変換完了時に割り込みを生成できます。この割り込みを使用して、デバイスをスリープモードからウェイクアップできます。

図 17-1 に、ADC のブロック図を示します。

図 17-1: ADC のブロック図

ADC

AN4

AVDD

VREF+

ADON

GO/DONE

CHS<3:0>

ADRESH ADRESL

10

10

ADFM

VSS

AN5

AN6

AN7

AN3

AN8

AN9

AN10

AN11

AVSS

VREF-

NVCFG[1:0] = 00

FVR

0000

0001

0010

0011

0100

0101

0111

0110

1000

1001

1010

1011

1100

1101

1110

1111

Unused

Unused

0 = Left Justify1 = Right Justify

Unused

Unused

Unused

DAC

NVCFG[1:0] = 01

FVR

PVCFG[1:0] = 00

PVCFG[1:0] = 01

PVCFG[1:0] = 10

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 211

Page 212: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

17.1 ADC の設定

ADC の設定と使用に際しては、以下の機能を考慮する必要があります。

• ポートの設定

• チャンネル選択

• ADC 電圧リファレンスの選択

• ADC のクロック源

• 割り込み制御

• 変換結果のフォーマット

17.1.1 ポートの設定

A/D ポートピンは ANSEL、ANSELH、TRISA、TRISB、TRISE レジスタで設定します。ポートピンをアナログ入力として使用する場合、対応する ANSx ビットをセットしてデジタル入力バッファを無効にし、TRISxビットをセットしてデジタル出力ドライバを無効にする必要があります。TRISx ビットをクリアした場合、デジタル出力レベル(VOHまたはVOL)が変換されます。

A/D 変換処理は、ANSx ビットおよび TRIS ビットの状態とは無関係に実行されます。

17.1.2 チャンネル選択

サンプルホールド回路にどのチャンネルを接続するかは、ADCON0 レジスタの CHS ビットで設定します。

チャンネルを変更したら、次に変換を開始するまでに遅延が必要です。詳細は、17.2「ADC の動作」を参照してください。

17.1.3 ADC 電圧リファレンス

ADCON1レジスタのPVCFGおよびNVCFGビットで正電圧リファレンスと負電圧リファレンスをそれぞれ個別に制御できます。正電圧リファレンスは、VDD、FVR、外部電圧ソースのいずれかに設定できます。負電圧リファレンスは、VSS または外部電圧ソースのいずれかに設定できます。

17.1.4 アクイジション時間の選択と設定

GO/DONE ビットがセットされるたびに発生するアクイジション時間は、ADCON2 レジスタを使ってユーザが設定できます。

アクイジション時間は、ADCON2 レジスタのACQT<2:0> ビットで設定します。アクイジション時間は、2 ~ 20 TAD の間で設定できます。GO/DONEビットをセットすると、ADC モジュールはここで指定したアクイジション時間入力のサンプリングを継続した後、自動的に変換を開始します。アクイジション時間はプログラミング済みであるため、チャンネルを選択後アクイジション時間の経過を待たずに GO/DONEビットをセットできます。

ACQT<2:0> = 000の場合、アクイジションを手動で実行します。GO/DONE ビットをセットすると、サンプリングが停止し、変換が開始します。入力チャンネルを選択してからGO/DONEビットをセットするまでの間、ユーザの責任で適切なアクイジション時間を確保する必要があります。アクイジション時間をプログラミングできないデバイスとの互換性を維持するため、ACQT<2:0> ビットのリセット時の既定値はこの設定です。

いずれの場合も、変換が完了すると GO/DONE ビットがクリアされ、ADIF フラグがセットされ、ADC は現在選択されているチャンネルのサンプリングを再開します。アクイジション時間をプログラミングした場合、アクイジション時間が終了して変換が開始するタイミングを知る方法はありません。

17.1.5 変換クロック

ADCのクロック源は、ADCON2レジスタのADCSビットを使用してソフトウェアで選択できます。クロックは以下の 7 種類から選択できます。

• FOSC/2

• FOSC/4

• FOSC/8

• FOSC/16

• FOSC/32

• FOSC/64

• FRC ( 専用の内部オシレータ )

1 ビットの変換に必要な時間を TAD と定義します。図 17-3 に示すように、10 ビット全体の変換には11 TAD が必要です。

正しく変換を行うには、TAD の仕様を正しく満たす必要があります。詳細は、表 27-9「A/D 変換の条件」を参照してください。表 17-1 に、正しい ADC クロックの選択例を示します。

Note 1: PORT レジスタを読み出すと、対応するANSx ビットがセットされたピンは全てクリア (low レベル ) として読み出されます。ただし、デジタル入力として設定されたピン (ANSx ビットをクリアしてTRISx ビットをセットしたピン ) のアナログ変換は正確に実行されます。

2: 対応する ANSx ビットをクリアしたピンにアナログ電圧を印加すると、デジタル入力バッファにデバイスの仕様上限を超える電流が流れる事があります。

Note: FRC を使用する場合を除き、システムクロック周波数を変更するとADCクロック周波数も変化するため、ADC の結果に悪影響を与える可能性があります。

DS41350D_JP - p. 212 Preliminary 2010 Microchip Technology Inc.

Page 213: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

17.1.6 割り込み

ADC モジュールは、A/D 変換完了時に割り込みを生成できます。PIR1 レジスタの ADIF ビットが ADC 割り込みフラグビットで、 PIE1 レジスタの ADIE ビットがADC 割り込みイネーブルビットです。ADIF ビットはソフトウェアでクリアする必要があります。

この割り込みは、デバイスが動作中でもスリープ時でも生成できます。デバイスがスリープ時には、割り込みによってデバイスがウェイクアップします。スリープからウェイクアップすると、SLEEP命令の次の命令が必ず実行されます。スリープからウェイクアップ後にインラインコード実行を再開させたい場合、グローバル割り込みを無効にしておく必要があります。グローバル割り込みを有効にしている場合、実行は割り込みサービスルーチンに切り換わります。詳細は、17.1.6「割り込み」を参照してください。

表 17-1: ADC クロック周期 (TAD) とデバイスの動作周波数の関係

17.1.7 変換結果のフォーマット

10 ビット A/D 変換の結果は、右詰めまたは左詰めのいずれかのフォーマットで出力できます。出力フォーマットは ADCON2 レジスタの ADFM ビットで設定します。

図 17-2 に、2 つの出力フォーマットを示します。

図 17-2: 10 ビット A/D 変換結果のフォーマット

Note: ADC 割り込みの状態にかかわらず、変換完了時には必ずADIFビットがセットされます。

ADC クロック周期 (TAD) デバイスの動作周波数 (FOSC)

ADC クロック源 ADCS<2:0> 48 MHz 16 MHz 4 MHz 1 MHz

FOSC/2 000 41.67 ns(2) 125 ns(2) 500 ns(2) 2.0 s

FOSC/4 100 83.33 ns(2) 250 ns(2) 1.0 s 4.0 s

FOSC/8 001 167 ns(2) 500 ns(2) 2.0 s 8.0 s(3)

FOSC/16 101 333 ns(2) 1.0 s 4.0 s 16.0 s(3)

FOSC/32 010 667 ns(2) 2.0 s 8.0 s(3) 32.0 s(3)

FOSC/64 110 1.33 s 4.0 s 16.0 s(3) 64.0 s(3)

FRC x11 1-4 s(1,4) 1-4 s(1,4) 1-4 s(1,4) 1-4 s(1,4)

凡例 : 網掛けの値は推奨レンジ外

Note 1: FRC ソースの TAD 時間は 1.7 s (typ.) です。

2: これらの値は TAD 時間の 小要件を満たしていません。

3: より高速の変換を実行するには、他のクロック源の選択を推奨します。

4: デバイスの周波数が 1 MHz より高い場合、スリープ時に変換を実行する場合のみ FRC クロック源を使用してください。

ADRESH ADRESL

(ADFM = 0) MSB LSB

bit 7 bit 0 bit 7 bit 0

10 ビット A/D 変換結果 未実装ビット : 「0」として読み出し

(ADFM = 1) MSB LSB

bit 7 bit 0 bit 7 bit 0

未実装ビット :「0」として読み出し 10 ビット A/D 変換結果

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 213

Page 214: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

17.2 ADC の動作

17.2.1 変換の開始

ADC モジュールを有効にするには、ADCON0 レジスタの ADON ビットを「1」にセットする必要があります。ADCON0 レジスタの GO/DONE ビットを「1」にセットすると、ADCON2 レジスタの ACQT ビットの設定に応じて、A/D 変換がただちに開始するか、アクイジション時間が経過してから A/D 変換が開始します。

図 17-3 に、GO ビットをセットして ACQT<2:0> ビットをクリアした後の ADC の動作を示します。SLEEPモードへの移行を可能にするため変換は次の命令の後に開始します。

図 17-4 には、GO ビットをセットして ACQT<2:0>ビットを「010」( 変換開始前のアクイジション時間 =4 TAD) に設定した場合の ADC の動作を示します。

図 17-3: A/D 変換の TAD サイクル (ACQT<2:0> = 000、TACQ = 0)

図 17-4: A/D 変換の TAD サイクル (ACQT<2:0> = 010、TACQ = 4 TAD)

Note: ADC を ON にする命令と同じ命令で GO/DONEビットをセットしないでください。詳細は、17.2.9「A/D 変換の手順」を参照してください。

TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD11

Set GO bit

Holding capacitor is disconnected from analog input (typically 100 ns)

TAD9 TAD10TCY - TAD

ADRESH:ADRESL is loaded, GO bit is cleared, ADIF bit is set, holding capacitor is connected to analog input.

Conversion starts

b0b9 b6 b5 b4 b3 b2 b1b8 b7

On the following cycle:

2 TAD

Discharge

1 2 3 4 5 6 7 8 11

Set GO bit

(Holding capacitor is disconnected from analog input)

9 10

Conversion starts

1 2 3 4

(Holding capacitor continuesacquiring input)

TACQT Cycles TAD Cycles

AutomaticAcquisition

Time

b0b9 b6 b5 b4 b3 b2 b1b8 b7

ADRESH:ADRESL is loaded, GO bit is cleared, ADIF bit is set, holding capacitor is connected to analog input.

On the following cycle:

2 TAD

Discharge

DS41350D_JP - p. 214 Preliminary 2010 Microchip Technology Inc.

Page 215: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

17.2.2 変換の完了

変換が完了すると、ADC モジュールは以下の動作を実行します。

• GO/DONE ビットをクリアする

• ADIF フラグビットをセットする

• ADRESH:ADRESL レジスタに新しい変換結果を書き込む

17.2.3 放電

放電フェイズは、コンデンサアレイの値を初期化するために使用します。コンデンサアレイは、毎サンプル後に放電されます。この回路は直前の計測値に基づいて充電 / 放電を行うのではなく常にコンデンサアレイを充電するため、この機能はユニティゲイン アンプの適化に役立ちます。

17.2.4 変換の中止

変換を完了前に中止するには、GO/DONE ビットをソフトウェアでクリアします。ADRESH:ADRESL レジスタには、途中まで完了した A/D 変換サンプルが書き込まれます。変換が完了していないビットには、前回の変換結果のビットがそのまま残ります。

17.2.5 次の変換開始までの遅延

A/D 変換が完了または中止してから次のアクイジションを開始するまでには 2 TAD の待ち時間が必要です。この待ち時間の後、現在選択しているチャンネルがサンプルホールド コンデンサに再び接続され、次のアクイジションが開始します。

17.2.6 電力管理モード時の ADC の動作

自動アクイジション時間と A/D 変換クロックを選択する際は、電力管理モードでのクロック源と周波数も考慮に入れる必要があります。

デバイスが電力管理モードの時も ADC を動作させたい場合、そのモードで使用するクロック源に合わせてADCON2 レジスタの ACQT<2:0> および ADCS<2:0>ビットを更新する必要があります。電力管理モードになると、A/D アクイジションまたは変換を開始できます。変換が開始したら、処理が完了するまでデバイスは同じクロック源で動作を継続する必要があります。

必要なら、変換中にデバイスを対応するアイドルモードに移行する事もできます。デバイスのクロック周波数が 1 MHz 未満の場合、ADC のクロック源に FRC を選択してください。

17.2.7 スリープ時の ADC の動作

ADC モジュールはスリープ時にも動作できます。そのためには、ADC クロック源を FRC に設定する必要があります。クロック源に FRC を選択した場合、ADC が変換を開始するまでの待ち時間は通常より 1 命令サイクル分だけ長くなります。これは SLEEP命令の実行を可能にし、変換時のシステムノイズが軽減されます。ADC 割り込みを有効にしている場合、A/D 変換が完了するとデバイスはスリープモードからウェイクアップします。ADC 割り込みを無効にしている場合、変換が完了すると ADON ビットがセットされたまま ADC モジュールは OFF になります。

ADCクロック源がFRC以外の場合、SLEEP命令によって現在の変換が中断され、ADON ビットがセットされたまま ADC モジュールは OFF になります。

17.2.8 特殊イベントトリガ

CCP1 の特殊イベントトリガを使用すると、ソフトウェアを使用しなくても定期的な ADC 計測を実行できます。このトリガが発生すると、GO/DONE ビットがハードウェアによってセットされ、Timer1 またはTimer3 カウンタが 0 にリセットされます。

特殊イベントトリガを使用しても、A/D 変換のタイミングが保証される訳ではありません。ADC のタイミング条件を満たしているかどうかはユーザの責任において確認してください。

詳細は、14.3.4「特殊イベントトリガ」を参照してください。

Note: デバイスをリセットすると、全てのレジスタがリセット状態となります。従って、ADC モジュールは OFF になり、未実行の変換は全て中止されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 215

Page 216: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

17.2.9 A/D 変換の手順

以下は ADC を使って A/D 変換を行う手順の例です。

1. ポートを設定する :

• ピン出力ドライバを無効にする (TRISレジスタ参照 )

• ピンをアナログに設定する

2. ADC モジュールを設定する :

• ADC 変換クロックを選択する

• 電圧リファレンスを設定する

• ADC 入力チャンネルを選択する

• 変換結果のフォーマットを選択する

• アクイジション遅延を選択する

• ADC モジュールを ON にする

3. ADC 割り込みを設定する ( オプション ):

• ADC 割り込みフラグをクリアする

• ADC 割り込みを有効にする

• 周辺割り込みを有効にする

• グローバル割り込みを有効にする (1)

4. 必要なアクイジション時間が経過するまで待つ(2)

5. GO/DONE ビットをセットして変換を開始する

6. 以下のいずれかの方法で、ADC変換の完了を待つ:

• GO/DONE ビットをポーリングする

• ADC 割り込みを待つ ( 割り込みが許可されている場合 )

7. A/D 変換結果を読み出す

8. ADC割り込みフラグをクリアする (割り込みが有効の場合は必須 )

例 17-1: A/D 変換

Note 1: スリープからウェイクアップ後にインラインコード実行を再開させたい場合、グローバル割り込みを禁止しておく必要があります。

2: ACQT ビットで遅延を 0 に設定している場合、ソフトウェア遅延が必要です。17.3

「A/D アクイジションの要件」を参照してください。

;This code block configures the ADC;for polling, Vdd and Vss as reference, Frc clock and AN4 input.;;Conversion start & polling for completion ; are included.;MOVLW B’10101111’ ;right justify, Frc,MOVWF ADCON2 ; & 12 TAD ACQ timeMOVLW B’00000000’ ;ADC ref = Vdd,VssMOVWF ADCON1 ;BSF TRISC,0 ;Set RC0 to inputBSF ANSEL,4 ;Set RC0 to analogMOVLW B’00010001’ ;AN4, ADC onMOVWF ADCON0 ;BSF ADCON0,GO ;Start conversionADCPoll:BTFSC ADCON0,GO ;Is conversion done?BRA ADCPoll ;No, test again; Result is complete - store 2 MSbits in; RESULTHI and 8 LSbits in RESULTLOMOVFF ADRESH,RESULTHIMOVFF ADRESL,RESULTLO

DS41350D_JP - p. 216 Preliminary 2010 Microchip Technology Inc.

Page 217: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

17.2.10 ADC 関連レジスタの定義

ADC の動作設定には以下のレジスタを使用します。

Note: アナログピンの制御は ANSEL およびANSELH レジスタで行います。ANSEL および ANSELH レジスタの詳細は、レジスタ 9-14 とレジスタ 9-15 を参照してください。

レジスタ 17-1: ADCON0: A/D 制御レジスタ 0

U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— — CHS3 CHS2 CHS1 CHS0 GO/DONE ADON

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-6 未実装 : 「0」として読み出し

bit 5-2 CHS<3:0>: アナログチャンネル選択ビット

0000 = 予約0001 = 予約0010 = 予約0011 = AN30100 = AN40101 = AN50110 = AN60111 = AN71000 = AN81001 = AN91010 = AN101011 = AN111100 = 予約1101 = 予約1110 = DAC1111 = FVR

bit 1 GO/DONE: A/D 変換ステータスビット

1 = A/D 変換サイクルが進行中。このビットをセットすると A/D 変換サイクルが開始する。 このビットは、A/D 変換が完了するとハードウェアによって自動的にクリアされる。0 = A/D 変換サイクルが完了 ( 進行中でない )

bit 0 ADON: ADC イネーブルビット

1 = ADC を有効にする0 = ADC を無効にし、消費電流をゼロにする

Note 1: 未実装の入力チャンネルはフローティング状態であるため、予約チャンネルを選択すると予期しない結果となります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 217

Page 218: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 17-2: ADCON1: A/D 制御レジスタ 1

U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0

— — — — PVCFG1 PVCFG0 NVCFG1 NVCFG0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-4 実装なし : 「0」として読み出し

bit 3-2 PVCFG<1:0>: 正電圧リファレンス選択ビット

00 = 正電圧リファレンスを VDD から内部供給する01 = 正電圧リファレンスを VREF+ ピンから外部供給する10 = 正電圧リファレンスを FVR から内部供給する11 = 予約

bit 1-0 NVCFG<1:0>: 負電圧リファレンス選択ビット

00 = 負電圧リファレンスを VSS から内部供給する01 = 負電圧リファレンスを VREF- ピンから外部供給する10 = 予約11 = 予約

DS41350D_JP - p. 218 Preliminary 2010 Microchip Technology Inc.

Page 219: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 17-3: ADCON2: A/D 制御レジスタ 2

R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

ADFM — ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 ADFM: A/D 変換結果フォーマット選択ビット

1 = 右詰め0 = 左詰め

bit 6 実装なし : 「0」として読み出し

bit 5-3 ACQT<2:0>: A/D アクイジション時間選択ビット : アクイジション時間とは、GO/DONE ビットがセットされてから変換が開始するまでの間、A/D サンプルホールド コンデンサが A/D チャンネルに接続されている時間

000 = 0(1)

001 = 2 TAD

010 = 4 TAD

011 = 6 TAD

100 = 8 TAD

101 = 12 TAD

110 = 16 TAD

111 = 20 TAD

bit 2-0 ADCS<2:0>: A/D 変換クロック選択ビット

000 = FOSC/2001 = FOSC/8010 = FOSC/32011 = FRC(1) ( 専用の内部オシレータのクロック、公称 600 kHz)100 = FOSC/4101 = FOSC/16110 = FOSC/64111 = FRC(1) ( 専用の内部オシレータのクロック、公称 600 kHz)

Note 1: ADC のクロック源に FRC を選択した場合、GO/DONE ビットをセットしてから変換を開始するまでの遅延が 1 命令サイクル分だけ長くなり、SLEEP命令の実行を可能にします。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 219

Page 220: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 17-4: ADRESH: ADC 変換結果レジスタ HIGH (ADRESH) ADFM = 0

R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x

ADRES9 ADRES8 ADRES7 ADRES6 ADRES5 ADRES4 ADRES3 ADRES2

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-0 ADRES<9:2>: A/D 変換結果レジスタビット

10 ビット変換結果の上位 8 ビット

レジスタ 17-5: ADRESL: ADC 変換結果レジスタ LOW (ADRESL) ADFM = 0

R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x

ADRES1 ADRES0 — — — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-6 ADRES<1:0>: A/D 変換結果レジスタビット

10 ビット変換結果の下位 2 ビット

bit 5-0 予約 : 使用不可

レジスタ 17-6: ADRESH: ADC 変換結果レジスタ HIGH (ADRESH) ADFM = 1

R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x

— — — — — — ADRES9 ADRES8

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-2 予約 : 使用不可

bit 1-0 ADRES<9:8>: A/D 変換結果レジスタビット

10 ビット変換結果の上位 2 ビット

レジスタ 17-7: ADRESL: ADC 変換結果レジスタ LOW (ADRESL) ADFM = 1

R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x

ADRES7 ADRES6 ADRES5 ADRES4 ADRES3 ADRES2 ADRES1 ADRES0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-0 ADRES<7:0>: A/D 変換結果レジスタビット

10 ビット変換結果の下位 8 ビット

DS41350D_JP - p. 220 Preliminary 2010 Microchip Technology Inc.

Page 221: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

17.3 A/D アクイジションの要件

ADC の仕様上の精度を実現するには、サンプルホールド コンデンサ(CHOLD)を入力チャンネルの電圧レベルまで完全に充電する必要があります。図 17-5 に、アナログ入力モデルを示します。ソース インピーダンス(RS)と内部サンプリング スイッチ (RSS)インピーダンスは、コンデンサ CHOLD の充電時間に直接影響します。サンプリング スイッチ (RSS) インピーダンスはデバイス電圧 (VDD) により変化します ( 図 17-5 参照 )。アナログソースの 大推奨インピーダンスは 10 kです。ソース インピーダンスが低下すると、アクイジション時間が短くなります。アナログ入力チャンネル

を選択 ( または変更 ) したら、変換開始前に A/D アクイジションを実行する必要があります。 小アクイジション時間は、式 17-1 で求める事ができます。この式では、1/2 LSb 誤差の適用を前提としています (ADCは 1024 ステップ )。1/2 LSb の誤差は、仕様上の分解能を ADC で実現できる 大許容誤差です。

式 17-1: アクイジション時間の例

TACQ Amplifier Settling Time Hold Capacitor Charging Time Temperature Coefficient+ +=

TAMP TC TCOFF+ +=

13.5pF 1k 700 10k+ + – ln(0.0004885)=

1.20= µs

;[1] VCHOLD charged to within 1/2 lsb

;[2] VCHOLD charge response to VAPPLIED

;combining [1] and [2]

The value for TC can be approximated with the following equations:

Solving for TC:

Therefore:

Assumptions: Temperature = 50C and external impedance of 10k 3.0V VDD

= 5µs + TC + [(Temperature - 25C)(0.05µs/C)]

TACQ = 5µs + 1.20µs + [(50C - 25C)(0.05µs/C)]

= 7.45µs

VAPPLIED 1 e

Tc–RC---------

VAPPLIED 1 12047------------–

=

VAPPLIED 1 12047------------–

VCHOLD=

VAPPLIED 1 e

TC–RC----------

VCHOLD=

TC CHOLD RIC RSS RS+ + ln(1/2047)–=

Note 1: 基準電圧 (VREF) は自己相殺されるため、上式には影響しません。

2: サンプルホールド コンデンサ (CHOLD) は変換完了のたびに放電されます。

3: アナログソースの 大推奨インピーダンスは10 kです。これは、ピンのリーク電流仕様を満たすために 必要です。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 221

Page 222: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 17-5: アナログ入力モデル

図 17-6: ADC の伝達関数

CPINVA

Rs ANx

5 pF

VD

D

VT = 0.6V

VT = 0.6V I LEAKAGE(1)

RIC 1k

SamplingSwitch

SS Rss

CHOLD = 13.5 pF

VSS/VREF-

2.5V

Rss (k)

2.0V1.5V

.1 1 10

VDD

DischargeSwitch

3.0V3.5V

100

Note 1: 27.0「電気的仕様」参照

凡例 : CPIN = 入力静電容量

VT = しきい値電圧

ILEAKAGE = 各種接合によるピン部位のリーク電流

RIC = 配線抵抗

SS = サンプリング スイッチ

CHOLD = サンプル / ホールド静電容量

3FFh

3FEh

AD

C O

utpu

t C

ode

3FDh

3FCh

004h

003h

002h

001h

000h

Full-Scale

3FBh

1/2 LSB ideal

VSS/VREF- Zero-ScaleTransition

VDD/VREF+

Transition

1/2 LSB ideal

Full-Scale Range

Analog Input Voltage

DS41350D_JP - p. 222 Preliminary 2010 Microchip Technology Inc.

Page 223: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 17-2: ADC に関連するレジスタ

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR1 — ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 290

PIE1 — ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 290

IPR1 — ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 290

ADRESH A/D 変換結果レジスタ、上位バイト 289

ADRESL A/D 変換結果レジスタ、下位バイト 289

ADCON0 — — CHS3 CHS2 CHS1 CHS0 GO/DONE ADON 289

ADCON1 — — — — PVCFG1 PVCFG0 NVCFG1 NVCFG0 289

ADCON2 ADFM — ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0 289

ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 — — — 290

ANSELH — — — — ANS11 ANS10 ANS9 ANS8 290

TRISA – – TRISA5 TRISA4 – – – – 290

TRISB TRISB7 TRISB6 TRISB5 TRISB4 – – – – 290

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットは A/D 変換には使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 223

Page 224: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 224 Preliminary 2010 Microchip Technology Inc.

Page 225: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

18.0 コンパレータ モジュール

コンパレータは、2 つのアナログ電圧を比較してその相対的な大きさをデジタル値で表現する事によって、2 つのアナログ回路を 1 つのデジタル回路に接続する役割を果たします。コンパレータが提供するアナログ機能はプログラム実行から独立しているため、ミクストシグナル ( アナログ信号とデジタル信号が混在する環境 ) において、きわめて有用な構成要素です。アナログ コンパレータ モジュールには、以下の機能があります。

• 独立したコンパレータ制御

• 入力選択をプログラム可能

• コンパレータ出力を内部 / 外部で利用可能

• 出力極性をプログラム可能

• 入力状態変化時割り込み

• スリープからのウェイクアップ

• 速度 / 電力をプログラミングにより 適化可能

• PWM シャットダウン

• プログラマブルおよび固定の電圧リファレンス

18.1 コンパレータの概要

図 18-1 に、シングル コンパレータの構成およびアナログ入力レベルとデジタル出力の関係を示します。VIN+ のアナログ電圧が VIN- のアナログ電圧よりも低い場合、コンパレータ出力はデジタル low レベルです。VIN+ のアナログ電圧が VIN- のアナログ電圧よりも高い場合、コンパレータ出力はデジタルhighレベルです。

図 18-1: シングル コンパレータ

+VIN+

VIN-出力

出力

VIN+VIN-

Note: コンパレータ出力の黒い部分は、入力オフセットと応答時間によって変動する範囲を表しています。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 225

Page 226: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 18-2: コンパレータ C1 の概略ブロック図

Note 1: C1ON = 0の場合、C1 コンパレータは XOR ゲートに「0」を出力します。

2: Q1 と Q3 は、4 相システムクロック (FOSC) の位相です。

3: スリープモードでは Q1 は high に保持されます。

4: 正方向のパルスがビットの立ち下がりおよび立ち上がりエッジの両方で発生します。

MUX

C1

C1POL

C1OUT To PWM Logic

0

1

2

3

C1ON(1)

C1CH<1:0>2

0

1

C1R

MUX

RD_CM1CON0

Set C1IF

To

C1VIN-

C1VIN+

AGND

C12IN1-

C12IN2-

C12IN3-

C1IN+

D Q

ENQ1

Data Bus

D Q

ENCL

Q3*RD_CM1CON0

NReset

+

-

0

1MUX

VREF

C1RSEL

FVR

C1SP

C1VREF C1OE

C12OUT

0

1

C1SYNC

From TMR1L[0](4)

D Q

SYNCC1OUT

C2OE

DS41350D_JP - p. 226 Preliminary 2010 Microchip Technology Inc.

Page 227: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 18-3: コンパレータ C2 の概略ブロック図

MUXC2

C2POL

C2OUT To PWM Logic

0

1

2

3

C2ON(1)

C2CH<1:0>2 D Q

EN

D Q

EN

CL

RD_CM2CON0

Q3*RD_CM2CON0

Q1

Set C2IF

To

NRESETC2VIN-

C2VIN+

C12OUT pin

AGND

C12IN1-

C12IN2-

C12IN3-

Data Bus

Note 1: C2ON = 0の場合、C2 コンパレータは XOR ゲートに「0」を出力します。

2: Q1 と Q3 は、4 相システムクロック (FOSC) の位相です。

3: スリープモードでは Q1 は high に保持されます。

4: 正方向のパルスがビットの立ち下がりおよび立ち上がりエッジの両方で発生します。

0

1

C2R

MUXC2IN+

0

1MUX

VREF

C2RSEL

FVR

C2SP

C2VREF

0

1

C2SYNCC20E

D Q

SYNCC2OUTFrom TMR1L[0](4)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 227

Page 228: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

18.2 コンパレータの制御

コンパレータ C1 は CM1CON0 レジスタ、コンパレータ C2 は CM2CON0 レジスタを使用してそれぞれ個別に構成、制御できます。コンパレータC2にはCM2CON1制御レジスタもあり、これを使用して Timer1 との連動を制御したり、2 つのコンパレータ出力を同時に読み出したりできます。

CM1CON0 および CM2CON0 レジスタ (18-1、18-2 参照 ) には、以下の制御ビットとステータスビットがあります。

• 有効化

• 入力選択

• リファレンス選択

• 出力選択

• 出力極性

• 速度選択

18.2.1 コンパレータの有効化

CMxCON0 レジスタの CxON ビットをセットすると、コンパレータの動作が有効になります。CxON ビットをクリアするとコンパレータが無効になり、消費電流は 小になります。

18.2.2 コンパレータ入力の選択

コンパレータの反転入力は、CMxCON0 レジスタのCxCH<1:0> ビットを使用して 4 つのアナログ入力ピンから選択します。

18.2.3 コンパレータのリファレンスの選択

コンパレータの非反転入力に内部電圧リファレンスとアナログ入力ピンのどちらを接続するかをCMxCON0レジスタの CxR ビットで設定します。内部電圧リファレンス モジュールの詳細は、21.0「電圧リファレンス」を参照してください。

18.2.4 コンパレータ出力の選択

コンパレータの出力は、CMxCON0レジスタのCxOUTビットまたは CM2CON1 レジスタの MCxOUT ビットを読み出す事によって観察する事ができます。出力を外部に接続して使用するには、以下の条件を満たす必要があります。

• CMxCON0 レジスタの CxOE ビットがセットされている

• 対応する TRIS ビットがクリアされている

• CMxCON0 レジスタの CxON ビットがセットされている

コンパレータ出力ピン (C12OUT) は 2 つのコンパレータで共用します。優先順位は、C1OE および C2OEビットの状態で決定します。

表 18-1: コンパレータ出力の優先順位

18.2.5 コンパレータ出力の極性

コンパレータの出力を反転する事は、コンパレータの入力を入れ換える事と機能的に等価です。コンパレータ出力の極性を反転するには、CMxCON0 レジスタのCxPOL ビットをセットします。CxPOL ビットをクリアすると、非反転の出力になります。

表 18-2 に、入力条件と極性設定の組み合わせに対する出力状態を示します。

18.2.6 コンパレータ速度の選択

コンパレータの動作速度と消費電力のバランスは、プログラム実行中に CxSP 制御ビットで 適化できます。このビットの既定値「1」では、通常速度のモードが選択されます。CxSP ビットを「0」にクリアすると、コンパレータの伝搬速度を引き下げてデバイスの消費電力を抑える事ができます。

18.3 コンパレータの応答時間

コンパレータの入力ソースまたは基準電圧を切り換えた後、コンパレータ出力が不定となる期間があります。この期間を応答時間と呼びます。コンパレータの応答時間は、電圧リファレンスのセトリング タイムとは別のものです。このため、コンパレータの入力が変化した時の総応答時間を求めるには、これら 2 つの時間を両方とも考慮する必要があります。詳細は、27.0「電気的仕様」のコンパレータおよび電圧リファレンスの仕様を参照してください。

Note: CxIN+ ピンと C12INx- ピンをアナログ入力として使用するには、ANSEL レジスタの該当するビットをセットすると共に、対応するTRISビットもセットして出力ドライバを無効にする必要があります。

C1OE C2OE C12OUT

0 0 I/O

0 1 C2OUT

1 0 C1OUT

1 1 C2OUT

Note 1: CxOE ビットは PORT データラッチよりも優先されます。CxON をセットしただけではポートの設定は影響を受けません。

2: コンパレータの内部出力は各命令サイクルでラッチされます。特に指定のない限り、外部出力はラッチされません。

表 18-2: コンパレータの入力条件に対する出力状態

入力条件 CxPOL CxOUT

CxVIN- > CxVIN+ 0 0

CxVIN- < CxVIN+ 0 1

CxVIN- > CxVIN+ 1 1

CxVIN- < CxVIN+ 1 0

DS41350D_JP - p. 228 Preliminary 2010 Microchip Technology Inc.

Page 229: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

18.4 コンパレータ割り込みの動作

コンパレータの出力値が変化した時はいつでもコンパレータ割り込みフラグをセットできます。出力値の変化は、2 つのラッチと 1 つの XOR ゲートで構成された不一致回路で検出します ( 図 18-2、図 18-3 参照 )。CMxCON0 レジスタを読み出した時に、片方のラッチがコンパレータ出力レベルに更新されます。このラッチの値は、次に CMxCON0 レジスタを読み出すか、リセットが発生するまで保持されます。不一致回路のもう一方のラッチは、Q1 システムクロックごとに更新します。コンパレータ出力の変化が、Q1 クロックサイクルで動作するもう一方のラッチを経由して出力されると、不一致条件が発生します。この時点で不一致回路の 2 つのラッチの出力レベルが反対になり、これが XOR ゲートで検出されて割り込み回路に送られます。不一致条件は、CMxCON0 レジスタを読み出すか、コンパレータ出力が元の状態に戻るまで続きます。

コンパレータ割り込みは、不一致回路のレベルではなくエッジによってセットされます。つまり、CMxCON0レジスタへの読み出し / 書き込みを実行して不一致レジスタをクリアしなくても割り込みフラグをリセットできます。不一致レジスタがクリアされると、コンパレータが元の状態に戻った時だけ割り込みが発生し、それ以外では割り込みは発生しません。

実際にどのような変化が起こったかを判断するには、CMxCON0レジスタまたはCM2CON1レジスタからコンパレータ出力の状態に関する情報をソフトウェアで読み出して保持しておく必要があります。詳細は、図 18-4 と図 18-5 を参照してください。

PIR2 レジスタの CxIF ビットがコンパレータ割り込みフラグです。このビットは、ソフトウェアで「0」にクリアしてリセットする必要があります。このレジスタに「1」を書き込んで割り込みを発生させる事もできます。

ミッドレンジ互換モードでコンパレータ割り込みを有効にするにはPIE2レジスタのCxIEビットと INTCONレジスタの PEIE および GIE ビットをいずれもセットする必要があります。これらのビットのいずれかがクリアの場合、割り込み条件の発生時に PIR2 レジスタの CxIF ビットはセットされますが、割り込みは有効になりません。

18.4.1 不一致ラッチのプリセット

コンパレータ不一致ラッチは、コンパレータを有効にする前に任意の状態にプリセットしておく事ができます。コンパレータが OFF の時には、CxPOL ビットでCxOUT のレベルを制御します。CxON ビットをクリアした状態で、CxOUT のレベルが非割り込みレベルとなるようにCxPOLビットを設定します。次に、CxONビットをセットするのと同じ命令で任意の CxPOL レベルに設定します。レジスタへの書き込みは全てRead-Modify-Write 形式で実行されるため、不一致回路のラッチは命令の Read サイクルでクリアされ、CxONおよびCxPOLビットは 後のWriteサイクルで実際に設定されます。

図 18-4: コンパレータ割り込みのタイミング(CMxCON0 を読み出さない場合 )

図 18-5: コンパレータ割り込みのタイミング(CMxCON0 を読み出す場合 )

Note 1: CMxCON0 レジスタに対して書き込みを行っても、不一致条件は解消されます。これは、書き込みサイクルの先頭では必ず読み出し動作が実行されるためです。

2: コンパレータ割り込みは、CxOE の状態に関係なく正しく動作します。

Note 1: 読み出しを実行中 (Q2 サイクルの開始時点 ) に CMxCON0 レジスタ (CxOUT) が変化した場合、PIR2 レジスタの CxIF 割り込みフラグがセットされない事があります。

2: どちらかのコンパレータを 初に有効にした際、コンパレータ モジュールのバイアス回路が安定するまでは正しいコンパレータ出力が得られない事があります。バイアス回路が安定するまで約 1 s 待ち、不一致条件と割り込みフラグをクリアしてからコンパレータ割り込みを有効にしてください。

Q1

Q3

CxIN+

CxOUT

Set CxIF (edge)

CxIF

TRT

Reset by Software

Q1

Q3

CxIN+

CxOUT

Set CxIF (edge)

CxIF

TRT

Reset by SoftwareCleared by CMxCON0 Read

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 229

Page 230: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

18.5 スリープ時の動作

スリープモードになる前にコンパレータを有効にした場合、スリープ時もコンパレータが動作します。コンパレータ モジュールのみの消費電流は、27.0「電気的仕様」に記載してあります。コンパレータを使用してデバイスをウェイクアップしない場合、コンパレータをOFFにするとスリープモードの消費電力を 小にできます。CMxCON0 レジスタの CxON ビットをクリアすると、コンパレータを個別に OFF にできます。

コンパレータの出力変化によりデバイスをスリープからウェイクアップできます。コンパレータを使用してデバイスをスリープからウェイクアップするには、PIE2 レジスタの CxIE ビットと INTCON レジスタのPEIE ビットをセットする必要があります。スリープからウェイクアップすると、デバイスは必ず SLEEP命令の次の命令を実行します。INTCON レジスタの GIEビットもセットしている場合、デバイスは次に割り込みサービスルーチンを実行します。

18.6 リセットの影響

デバイスをリセットすると、CMxCON0 およびCM2CON1 レジスタがリセット状態に戻ります。これにより、両方のコンパレータと電圧リファレンスはOFF になります。

DS41350D_JP - p. 230 Preliminary 2010 Microchip Technology Inc.

Page 231: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 18-1: CM1CON0: コンパレータ 1 制御レジスタ 0

R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 C1ON: コンパレータ C1 イネーブルビット

1 = コンパレータ C1 を有効にする0 = コンパレータ C1 を無効にする

bit 6 C1OUT: コンパレータ C1 出力ビット

C1POL = 1 ( 極性反転 ) の場合 :C1VIN+ > C1VIN- なら C1OUT = 0C1VIN+ < C1VIN- なら C1OUT = 1C1POL = 0 ( 極性非反転 ) の場合 :C1VIN+ > C1VIN- なら C1OUT = 1C1VIN+ < C1VIN- なら C1OUT = 0

bit 5 C1OE: コンパレータ C1 出力イネーブルビット

C2OE = 0 (C2 出力が無効 ) の場合

0 = C1OUT は内部のみ1 = C1OUT を C12OUT ピンに出力 (1) C2OE = 1 (C2 出力が有効 ) の場合

0 = C1OUT は内部のみ1 = C2OUT を C12OUT ピンに出力 (1)

bit 4 C1POL: コンパレータ C1 出力極性選択ビット

1 = C1OUT の論理を反転する0 = C1OUT の論理を反転しない

bit 3 C1SP: コンパレータ C1 速度 / 電力選択ビット

1 = C1 は通常電力の高速モードで動作0 = C1 は低消費電力の低速モードで動作

bit 2 C1R: コンパレータ C1 リファレンス選択ビット ( 非反転入力 )

1 = C1VIN+ に C1VREF 出力を接続0 = C1VIN+ に C1IN+ ピンを接続

bit 1-0 C1CH<1:0>: コンパレータ C1 チャンネル選択ビット

00 = C1VIN- に AGND を接続01 = C1VIN- に C1 の C12IN1- ピンを接続10 = C1VIN- に C1 の C12IN2- ピンを接続11 = C1VIN- に C1 の C12IN3- ピンを接続

Note 1: コンパレータ出力を有効にするには、C1OE = 1、C1ON = 1、対応するポートの TRIS ビット = 0の3 つの条件を全て満たす必要があります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 231

Page 232: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 18-2: CM2CON0: コンパレータ 2 制御レジスタ 0

R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 C2ON: コンパレータ C2 イネーブルビット

1 = コンパレータ C2 を有効にする0 = コンパレータ C2 を無効にする

bit 6 C2OUT: コンパレータ C2 出力ビット

C2POL = 1 ( 極性反転 ) の場合 :C2VIN+ > C2VIN- なら C2OUT = 0C2VIN+ < C2VIN- なら C2OUT = 1C2POL = 0 ( 極性非反転 ) の場合 :C2VIN+ > C2VIN- なら C2OUT = 1C2VIN+ < C2VIN- なら C2OUT = 0

bit 5 C2OE: コンパレータ C2 出力イネーブルビット

1 = C2OUT を C12OUT ピンに出力 (1)

0 = C2OUT は内部のみ

bit 4 C2POL: コンパレータ C2 出力極性選択ビット

1 = C2OUT の論理を反転する0 = C2OUT の論理を反転しない

bit 3 C2SP: コンパレータ C2 速度 / 消費電力選択ビット

1 = C2 は通常消費電力の高速モードで動作0 = C2 は低消費電力の低速モードで動作

bit 2 C2R: コンパレータ C2 リファレンス選択ビット ( 非反転入力 )

1 = C2VIN+ に C2VREF を接続0 = C2VIN+ に C2IN+ ピンを接続

bit 1-0 C2CH<1:0>: コンパレータ C2 チャンネル選択ビット

00 = C2VIN- に AGND を接続01 = C2VIN- に C2 の C12IN1- ピンを接続10 = C2VIN- に C2 の C12IN2- ピンを接続11 = C2VIN- に C2 の C12IN3- ピンを接続

Note 1: コンパレータ出力を有効にするには、C2OE = 1、C2ON = 1、対応するポートの TRIS ビット = 0の3 つの条件を全て満たす必要があります。

DS41350D_JP - p. 232 Preliminary 2010 Microchip Technology Inc.

Page 233: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

18.7 アナログ入力接続に関する注意事項

図 18-6 に、アナログ入力回路の概略図を示します。アナログ入力ピンはデジタル入力と同じ接続を共用しているため、VDD と VSS には逆バイアスの ESD 保護ダイオードが接続されています。従って、アナログ入力は VSS と VDD の間の値である事が必要です。入力電圧がこのレンジから± 0.6 V を越えて逸脱すると、片方のダイオードに順バイアスがかかり、ラッチアップが発生する事があります。

アナログソースの 大ソース インピーダンスは 10 kを推奨します。また、アナログ入力ピンにコンデンサやツェナー ダイオード等の外付け部品を接続する場合、精度の低下を 小限に抑えるためになるべくリーク電流の小さいものを使用するようにしてください。

図 18-6: アナログ入力モデル

Note 1: PORT レジスタを読み出す場合、アナログ入力として設定したピンは全て「0」として読み出されます。デジタル入力として設定したピンは、入力仕様に基づいてアナログ入力に変換されます。

2: デジタル入力として指定したピンにアナログ電圧を印加すると、入力バッファに仕様を超える電流が流れる場合があります。

VA

Rs < 10K

CPIN5 pF

VDD

VT 0.6V

VT 0.6V

RIC

ILEAKAGE(1)

Vss

AIN

凡例 : CPIN = 入力静電容量ILEAKAGE = 各種接合によるピン部位のリーク電流RIC = 配線抵抗RS = ソース インピーダンスVA = アナログ電圧VT = しきい値電圧

Note 1: 27.0「電気的仕様」参照

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 233

Page 234: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

18.8 コンパレータのその他の機能

コンパレータには、上記以外にも 4 つの機能があります。

• 2 つのコンパレータ出力の同時読み出し

• 内部リファレンスの選択

• ヒステリシスの選択

• 出力の同期

18.8.1 2つのコンパレータ出力の同時読み出し

CM2CON1レジスタのMC1OUTおよびMC2OUTビットには、2 つのコンパレータ出力がそのままミラーコピーされます。2 つのレジスタを読み出さなくても 1つのレジスタから 2 つの出力を同時に読み出せるため、タイミング スキューの問題が発生しません。

18.8.2 内部リファレンスの選択

各コンパレータの非反転入力に接続する内部電圧リファレンスは、固定電圧リファレンス (FVR) と可変コンパレータ電圧リファレンス (CVREF)のいずれかを選択できます。どちらのリファレンスをコンパレータ電圧リファレンス出力 (CXVREF) に接続するかは、CM2CON レジスタの CxRSEL ビットで選択します。選択したリファレンスは、さらに CMxCON0 レジスタのCxRビットによる選択を経てコンパレータに接続されます。詳細は、21.1「電圧リファレンス」および図 18-2、図 18-3 を参照してください。

18.8.3 コンパレータのヒステリシス

コンパレータ Cx には選択可能なヒステリシスがあります。CM2CON1 レジスタの CxHYS ビットをセットすると、ヒステリシスが有効になります。詳細は、27.0「電気的仕様」を参照してください。

18.8.4 コンパレータ出力と TIMER1 の同期

CM2CON1 レジスタの CxSYNC ビットをセットすると、コンパレータ Cx の出力が Timer1 と同期します。Cx 出力を有効にすると、Timer1 ソースクロックの立ち上がりエッジで Cx 出力がラッチします。Timer1 でプリスケーラを使用している場合、プリスケーラ適用後のクロックに対してコンパレータ出力がラッチします。競合状態を防ぐため、コンパレータ出力は Timer1クロック源の立ち上がりエッジでラッチされ、Timer1はクロック源の立ち上がりエッジでインクリメントします。詳細は、コンパレータのブロック図 ( 図 18-2、図 18-3) およびTimer1のブロック図 (図 18-2)を参照してください。

Note 1: CM2CON1レジスタを読み出してC1OUTまたは C2OUT の状態を取得しても、コンパレータ割り込みの不一致レジスタには影響しません。

DS41350D_JP - p. 234 Preliminary 2010 Microchip Technology Inc.

Page 235: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 18-3: CM2CON1: コンパレータ 2 制御レジスタ 1

R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

MC1OUT MC2OUT C1RSEL C2RSEL C1HYS C2HYS C1SYNC C2SYNC

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 MC1OUT: C1OUT ミラーコピー ビット

bit 6 MC2OUT: C2OUT ミラーコピー ビット

bit 5 C1RSEL: コンパレータ C1 リファレンス選択ビット

1 = C1VREF 入力に FVR を接続

0 = C1VREF 入力に CVREF を接続

bit 4 C2RSEL: コンパレータ C2 リファレンス選択ビット

1 = C2VREF 入力に FVR を接続

0 = C2VREF 入力に CVREF を接続

bit 3 C1HYS: コンパレータ C1 ヒステリシス イネーブルビット

1 = コンパレータ C1 のヒステリシスを有効にする0 = コンパレータ C1 のヒステリシスを無効にする

bit 2 C2HYS: コンパレータ C2 ヒステリシス イネーブルビット

1 = コンパレータ C2 のヒステリシスを有効にする0 = コンパレータ C2 のヒステリシスを無効にする

bit 1 C1SYNC: C1 出力同期モードビット

1 = C1 出力を TMR1 クロックの立ち上がりエッジに同期させる0 = C1 出力を非同期とする

bit 0 C2SYNC: C2 出力同期モードビット

1 = C2 出力を TMR1 クロックの立ち上がりエッジに同期させる0 = C2 出力を非同期とする

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 235

Page 236: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 18-3: コンパレータ モジュールに関連するレジスタ

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0 290

CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0 290

CM2CON1 MC1OUT MC2OUT C1RSEL C2RSEL C1HYS C2HYS C1SYNC C2SYNC 290

REFCON0 FVR1EN FVR1ST FVR1S1 FVR1S0 — — — — 289

REFCON1 D1EN D1LPS DAC1OE --- D1PSS1 D1PSS0 — D1NSS 289

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 287

PIR2 OSCFIF C1IF C2IF EEIF BCLIF USBIF TMR3IF — 290

PIE2 OSCFIE C1IE C2IE EEIE BCLIE USBIE TMR3IE — 290

IPR2 OSCFIP C1IP C2IP EEIP BCLIP USBIP TMR3IP — 290

PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 290

LATC LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0 290

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 — — — 290

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットはコンパレータ モジュールには使用しません。

DS41350D_JP - p. 236 Preliminary 2010 Microchip Technology Inc.

Page 237: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

19.0 電力管理モード

PIC18F/LF1XK50 には合計 7 つの動作モードがあり、効率よく電力を管理できるようになっています。これらのモードを使い分ける事によって、リソースに制約のあるアプリケーション ( バッテリ駆動の機器等 ) において選択的に消費電力を節減する事ができます。

電力管理モードは、以下の 3 つに大別できます。

• ランモード

• アイドルモード • スリープモード

これらのモードは、デバイスのどの部分にクロックを供給するか、場合によってはそのクロックの速度を定義します。ランモードとアイドルモードでは 3 つのクロック源 ( プライマリ、セカンダリ、内部オシレータブロック)のいずれかを使用できますが、スリープモードではクロック源を使用しません。

これらの電力管理モードには、従来の PIC® マイクロコントローラ デバイスに搭載されていたいくつかの省電力機能が含まれています。例えば、コントローラのクロック源をプライマリ オシレータから Timer1 オシレータに切り換える機能もその 1 つです。また、従来の全ての PIC® マイクロコントローラ デバイスに含まれていたスリープモードも、本デバイスに搭載されています。このモードではデバイスクロックが全て停止します。

19.1 電力管理モードの選択

電力管理モードを選択するには、以下の 2 つの点を考慮する必要があります。

• CPU にクロックを供給するかどうか

• どのクロック源を選択するか

CPUへのクロック供給はOSCCONレジスタの IDLENビットで、クロック源の選択は OSCCON レジスタのSCS<1:0> ビットでそれぞれ選択します。各モードのビット設定、クロック源、影響を受けるモジュールを表 19-1 にまとめます。

19.1.1 クロック源

電力管理モードで使用するクロック源は、SCS<1:0>ビットを使用して以下の 3 つから選びます。

• FOSC<3:0> コンフィグレーション ビットで設定したプライマリ クロック

• セカンダリ クロック (Timer1 オシレータ )• 内部オシレータ ブロック

19.1.2 電力管理モードへの移行

電力管理モードを切り換えるには、まず OSCCON レジスタに値を書き込みます。SCS<1:0> ビットでクロック源を選択し、どのランモード / アイドルモードを使用するかを決定します。これらのビットを変更すると、新しいクロック源が既に動作している場合はただちにクロック源が切り換わります。切り換え時にも、クロック遷移の遅延が発生します。詳細は、2.8「クロックの切り換え」を参照してください。

アイドル / スリープモードへは SLEEP 命令の実行によって移行します。どちらのモードに移行するかは、OSCCON レジスタの IDLEN ビットの設定によって決まります。

切り換え前後のモードの組み合わせによっては、これら全てのビットを変更しなくてもモードを切り換えられる場合があります。多くの場合、SLEEP 命令を発行する前にオシレータ選択ビットまたは IDLEN ビットを変更するだけでモードを切り換える事ができます。IDLENビットが既に正しく設定されていれば、SLEEP 命令を実行するだけでモードを切り換える事ができます。

表 19-1: 電力管理モード

モード

OSCCON ビットモジュールへのクロック供給

利用可能なクロック / オシレータソース

IDLEN(1) SCS<1:0> CPU 周辺モジュール

スリープ 0 N/A OFF OFF なし – 全てのクロックが停止

PRI_RUN N/A 00 クロック供給あり

クロック供給あり

プライマリ – LP、XT、HS、RC、EC、内部オシレータ ブロック (2)

( 省電力機能を使用しない通常の実行モード )

SEC_RUN N/A 01 クロック供給あり

クロック供給あり

セカンダリ – Timer1 オシレータ

RC_RUN N/A 1x クロック供給あり

クロック供給あり

内部オシレータ ブロック (2)

PRI_IDLE 1 00 OFF クロック供給あり

プライマリ – LP、XT、HS、HSPLL、RC、EC

SEC_IDLE 1 01 OFF クロック供給あり

セカンダリ – Timer1 オシレータ

RC_IDLE 1 1x OFF クロック供給あり

内部オシレータ ブロック (2)

Note 1: IDLEN は、SLEEP命令実行時の値です。

2: HFINTOSC および HFINTOSC ポストスケーラ、LFINTOSC ソースを含みます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 237

Page 238: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

19.1.3 SLEEP 命令の複数の機能

SLEEP 命令によってどの電力管理モードになるかは、命令実行時のOSCCONレジスタの IDLENビットの設定によって決まります。IDLEN ビットがクリアの時にSLEEP 命令を実行すると、全てのクロックが停止し、消費電力は 小になります。IDLEN ビットをセットした状態で SLEEP命令を実行すると、システムクロックから周辺モジュールへのクロック供給は継続しますが、CPU へのクロック供給は停止します。

19.2 ランモード

ランモードでは、コアと周辺モジュールの両方にクロックを供給します。ランモードには、クロック源の違いによって 3 つの種類があります。

19.2.1 PRI_RUN モード

PRI_RUN は、省電力機能を使用しない通常の実行モードです。デバイスのリセット時には、2 段階起動が有効でない限り、既定でこのモードになります (詳細は、2.12「2 段階起動モード」参照 )。このモードでは、CONFIGHコンフィグレーション レジスタの FOSC ビットで設定したオシレータでデバイスが動作します。

19.2.2 SEC_RUN モード

SEC_RUN モードでは、外部セカンダリ オシレータがCPU と周辺モジュールにクロックを供給します。このモードでは、高精度のクロック源を使用しながら消費電力を低減できます。

OSCCON レジスタの SCS<1:0> ビットを「01」にセットすると、SEC_RUN モードに移行します。SEC_RUNモードになると、以下の動作が実行されます。

• メイン クロック源が外部セカンダリ オシレータに切り換わる

• 外部プライマリ オシレータは停止する

• T1CON レジスタの T1RUN ビットがセットされる

• OSTS ビットがクリアされる

19.2.3 RC_RUN モード

RC_RUN モードでは、内部オシレータが CPU と周辺モジュールにクロックを供給します。このモードでは、外部プライマリ オシレータは停止します。RC_RUN モードでシステムクロックに LFINTOSC を選択した場合、消費電力は全てのランモードの中で 小となります。

SCS1 ビットをセットすると、RC_RUN モードに移行します。クロック源をプライマリ オシレータから内部オシレータに切り換えると、プライマリ オシレータは停止し、OSTS ビットがクリアされます。IRCF ビットは随時変更が可能で、この値を書き換えるとただちにクロック速度が変化します。

Note: SEC_RUN モードに移行するには、外部セカンダリ オシレータが動作開始済みである事が必要です。SCS<1:0> を「01」にセットしても、T1OSCEN ビットがセットされていないと SEC_RUN モードに切り換わりません。T1OSCEN ビットをセットして外部セカンダリ オシレータが動作を開始すると SEC_RUN モードに切り換わります。

DS41350D_JP - p. 238 Preliminary 2010 Microchip Technology Inc.

Page 239: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

19.3 スリープモード

PIC18F/LF1XK50 の電力管理モードの 1 つであるスリープモードは、従来の全ての PIC® マイクロコントローラに搭載されていたスリープモードと同じものです。OSCCON レジスタの IDLEN ビットをクリアした状態で SLEEP命令を実行すると、このモードに移行します。スリープモードになると現在選択中のオシレータは停止し ( 図 19-1 参照 )、全てのクロック源ステータスビットがクリアされます。

ランモードまたはアイドルモードからスリープモードに移行する場合、クロックの切り換えは不要です。これは、コントローラがスリープモードに移行するとクロックを必要としないためです。WDT を有効にした場合、LFINTOSC ソースは動作を継続します。Timer1オシレータを有効に設定している場合、Timer1 オシレータも動作を継続します。

スリープモードで ( 割り込み、リセット、WDT タイムアウト等の要因によって ) ウェイクアップ イベントが発生しても、SCS<1:0> ビットで選択したクロック源が動作を開始するまでデバイスにはクロックが供給されません ( 図 19-2 参照 )。ただし、2 段階起動またはフェイルセーフ クロック モニタ (FSCM) のいずれか(24.0「CPU の特殊機能」参照 ) を有効にしている場合、内部オシレータ ブロックからクロックが供給されます。どちらの場合も、プライマリ クロックがデバイスにクロックを供給している場合は OSTS ビットがセットされます。IDLEN および SCS ビットは、ウェイクアップの影響を受けません。

19.4 アイドルモード

アイドルモードでは CPU へのクロック供給のみが選択的に停止し、周辺モジュールは動作を継続します。3 つのアイドルモードを使い分ける事によって、消費電力をさらに細かく管理する事ができます。

IDLEN ビットを「1」にセットした状態で SLEEP命令を実行すると、周辺モジュールは SCS<1:0> ビットで選択したクロック源で動作しますが、CPU へのクロック供給は停止します。クロック源ステータスビットは影響を受けません。IDLEN をセットして SLEEP 命令を実行すると、現在のランモードと同じクロック源を使用したアイドルモードへ簡単に切り換える事ができます。

WDT を有効にした場合、LFINTOSC ソースは動作を継続します。Timer1 オシレータを有効に設定している場合、Timer1 オシレータも動作を継続します。

CPU による命令実行は停止しているため、アイドルモードから復帰するには割り込み、WDT タイムアウト、リセットのいずれかを必要とします。これらのウェイクアップ イベントが発生すると、TCSD の遅延時間の後、CPU はコード実行を開始します。CPU は、現在のアイドルモードと同じクロック源でコード実行を再開します。例えば、RC_IDLE モードからウェイクアップすると RC_RUN モードになり、内部オシレータ ブロックが CPU と周辺モジュールにクロックを供給します。ウェイクアップ後も、IDLEN および SCSビットは変化しません。

アイドルモードまたはスリープモードの時に WDT がタイムアウトになると WDT ウェイクアップとなり、SCS<1:0> ビットの現在の設定に基づいたランモードに復帰します。

図 19-1: スリープモードへの移行時の遷移タイミング

図 19-2: スリープからのウェイクアップ時の遷移タイミング (HSPLL)

Q4Q3Q2

OSC1

Peripheral

Sleep

Program

Q1Q1

Counter

Clock

CPUClock

PC + 2PC

Q3 Q4 Q1 Q2

OSC1

Peripheral

Program PC

PLL Clock

Q3 Q4

Output

CPU Clock

Q1 Q2 Q3 Q4 Q1 Q2

Clock

Counter PC + 6PC + 4

Q1 Q2 Q3 Q4

Wake Event

Note1: TOST = 1024 TOSC、TPLL = 約 2 ms。図に示したこれら 2 つの時間の長さの比は、実際とは異なります。

TOST(1)TPLL(1)

OSTS bit set

PC + 2

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 239

Page 240: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

19.4.1 PRI_IDLE モード

このモードは、他の 2 つの低消費電力アイドルモードとは異なり、プライマリ クロックが停止しません。このため、クロック源の「ウォームアップ」や他のオシレータからの切り換えなしに高精度なプライマリ クロック源を使用して高速にデバイスの動作を再開でき、高いタイミング精度が要求されるアプリケーションに適しています。

PRI_RUN モードにおいて、IDLEN ビットをセットした状態でSLEEP命令を実行するとPRI_IDLEモードに移行します。その他のランモードから PRI_IDLE モードに移行するには、まず IDLEN ビットをセットし、SCS ビットをクリアした後に SLEEP 命令を実行します。このモードでは CPU は動作を停止しますが、周辺モジュールには FOSC<3:0> コンフィグレーションビットで指定したプライマリ クロック源からのクロック供給が継続します。OSTS ビットはセットされたままです ( 図 19-3 参照 )。

ウェイクアップ イベントが発生すると、CPU はプライマリ クロック源で動作を再開します。ウェイクアップ イベントが発生してからコード実行が開始するまでの間には、TCSD の遅延時間が必要です。これは、CPUが命令を実行できるようになるまでに必要な時間です。ウェイクアップ後も、OSTS ビットはセットされたままです。IDLEN および SCS ビットは、ウェイクアップの影響を受けません ( 図 19-4 参照 )。

19.4.2 SEC_IDLE モード

SEC_IDLE モードでは、CPU は動作を停止しますが、周辺モジュールには Timer1 オシレータからのクロック供給が継続します。SEC_RUN モードにおいて、IDLEN ビットをセットした状態で SLEEP 命令を実行すると SEC_IDLE モードに移行します。その他のランモードから SEC_IDLE モードに移行するには、まずIDLEN ビットをセットし、SCS<1:0> ビットを「01」にセットしてから SLEEP命令を実行します。クロック源が Timer1 オシレータに切り換わるとプライマリ オシレータは停止し、OSTS ビットがクリア、T1RUNビットがセットされます。

ウェイクアップ イベントが発生しても、周辺モジュールは Timer1 オシレータで動作を継続します。ウェイクアップ イベントの発生からTCSDの遅延時間の後、CPUは Timer1 オシレータでコード実行を開始します。IDLENおよびSCSビットはウェイクアップの影響を受けず、Timer1 オシレータは動作を継続します ( 図 19-4参照 )。

図 19-3: アイドルモードへの移行時の遷移タイミング

図 19-4: アイドルモードからランモードへのウェイクアップ時の遷移タイミング

Note: SEC_IDLEモードに移行するには、Timer1オシレータが動作を開始開始済みである事が必要です。SLEEP 命令の実行時にT1OSCEN ビットがセットされていない場合、メイン システム クロックはそれ以前に選択したモードのまま動作を継続し、対応するアイドルモード (PRI_IDLEまたは RC_IDLE) に移行します。

Q1

Peripheral

Program PC PC + 2

OSC1

Q3 Q4 Q1

CPU Clock

Clock

Counter

Q2

OSC1

Peripheral

Program PC

CPU Clock

Q1 Q3 Q4

Clock

Counter

Q2

Wake Event

TCSD

DS41350D_JP - p. 240 Preliminary 2010 Microchip Technology Inc.

Page 241: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

19.4.3 RC_IDLE モード

RC_IDLE モードでは、CPU の動作は停止しますが、周辺モジュールには内部オシレータ ブロックのHFINTOSC のマルチプレクサから出力されるクロックが供給されます。このモードでは、アイドル期間中の消費電力を制御できます。

RC_RUN モードにおいて、IDLEN ビットをセットした状態で SLEEP命令を実行すると RC_IDLE モードになります。その他のランモードから RC_IDLE モードに移行するには、まず IDLEN ビットをセットし、SCS1ビットをセットした後に SLEEP命令を実行します。なお、将来のデバイスとソフトウェア互換性を確保するため、SCS0 もクリアしておく事を推奨します ( 現状値は無視されます )。SLEEP命令を実行する前に IRCFビットを変更し、HFINTOSC のマルチプレクサから高いクロック周波数を選択して使用する事もできます。クロック源を HFINTOSC のマルチプレクサに切り換えると、プライマリ オシレータは停止し、OSTS ビットがクリアされます。

IRCF ビットをゼロ以外の値にセットするか、またはINTSRC ビットをセットすると、HFINTOSC 出力が有効になります。HFINTOSC 出力が安定した後、TIOBST

の遅延時間が経過すると IOSF ビットがセットされます。HFINTOSC ソースが安定するまでの間も、周辺モジュールへのクロック供給は継続します。SLEEP命令を実行する前に IRCF ビットがゼロ以外の値だった場合、または INTSRC がセットされていた場合、HFINTOSCソースが既に安定していればHFIOFSビットはセットされたままとなります。IRCF ビットとINTSRC ビットが全てクリアの場合は HFINTOSC 出力は有効にならず、HFIOFS ビットもクリアのままとなります。

ウェイクアップ イベントが発生しても、周辺モジュールは HFINTOSC のマルチプレクサから出力されるクロックで動作を継続します。ウェイクアップ イベントの発生から TCSD の遅延時間の後、CPU は HFINTOSCのマルチプレクサからのクロックでコード実行を開始します。ウェイクアップ後も、IDLEN および SCS ビットは変化しません。WDTまたはフェイルセーフ クロック モニタ (FSCM) のいずれかが有効な場合、LFINTOSC ソースは動作を継続します。

19.5 アイドル / スリープモードの終了

スリープモードまたはアイドルモードは、以下のいずれかのトリガによって終了します。

• 割り込み

• リセット

• ウォッチドッグ タイマのタイムアウト

ここでは、アイドル / スリープモードを終了させるトリガについて説明します。クロック供給サブシステムの動作については、各電力管理モードの説明 (19.2「ランモード」、19.3「スリープモード」 、 19.4「アイドルモード」) を参照してください。

19.5.1 割り込みによる終了

利用可能な全ての割り込みは、デバイスをアイドルまたはスリープモードからランモードに移行させる事ができます。この機能を使用するには、INTCON またはPIE レジスタで割り込み要因のイネーブルビットをセットしておく必要があります。その割り込みイネーブルビットが PIE レジスタに含まれる場合、PEIE ビットも必ずセットしておきます。これで、対応する割り込みフラグビットがセットされるとアイドル / スリープモード終了シーケンスが開始します。

割り込みによってアイドル / スリープモードが終了した場合、必ず SLEEP 命令の直後の命令が実行されます。INTCON レジスタの GIE/GIEH ビットがセットされている場合、コード実行は次に割り込みベクタに分岐します。それ以外の場合、コード実行は分岐せずに継続します (7.0「割り込み」参照 )。

スリープ /アイドルモードを終了してCPUがコード実行を開始できるようになるまでには、ウェイクアップイベントの後に TCSD の遅延時間が必要です。この遅延時間が経過した後の 初のクロックサイクルで命令実行が再開します。

19.5.2 WDT タイムアウトによる終了

WDT タイムアウト後の動作は、どの電力管理モードでWDT タイムアウトが発生したかによって異なります。

デバイスがコードを実行していない時 ( アイドルまたはスリープモード ) に WDT タイムアウトになると、これらのモードが終了します (19.2「ランモード」、19.3「スリープモード」参照 )。コード実行中 ( ランモード )に WDT タイムアウトになると、WDT リセットとなります (24.2「ウォッチドッグ タイマ (WDT)」参照 )。

WDT タイマとポストスケーラは、以下のいずれかの動作によってクリアされます。

• SLEEP命令の実行

• CLRWDT命令の実行

• フェイルセーフ クロック モニタ (FSCM) 有効時に、現在選択中のクロック源が失われた場合

• 内部オシレータをデバイスのクロック源に使用している時に OSCCON レジスタの IRCF ビットを変更した場合

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 241

Page 242: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

19.5.3 リセットによる終了

リセットによってスリープ / アイドルモードが終了すると、コード実行はアドレス 0 から再開します。詳細は、23.0「リセット」を参照してください。

リセットからコード実行開始までの遅延時間は、ウェイクアップ前後のクロック源およびオシレータの種類によって異なります。これらの遅延を表 19-2 にまとめます。

19.5.4 オシレータ スタートアップ遅延を伴わないアイドル / スリープモードの終了

OST を一切起動せずにアイドル / スリープモードを終了できる場合もあります。これには、以下の 2 つの場合があります。

• PRI_IDLE モード ( プライマリ クロック源が停止していない ) の場合

• プライマリ クロック ソースが LP、XT、HS、HSPLL モード以外の場合

これらの場合には、プライマリ クロック源が既に動作している (PRI_IDLE モード ) か、または元々オシレータ スタートアップ遅延を必要としない (RC、EC、INTOSC、INTOSCIO モード ) ため、オシレータ スタートアップ遅延も発生しません。ただし、スリープ / アイドルモードを終了する際は、ウェイクアップ イベントが発生してから CPU がコード実行を開始できるようになるまでに TCSD の遅延時間が必要である事には変わりありません。命令実行は、この遅延が経過した後の 初のクロックサイクルで再開されます。

表 19-2: リセットによるスリープ / アイドルモードからのウェイクアップに必要な遅延時間( クロック源別に分類 )

ウェイクアップ前のクロック源

ウェイクアップ後の クロック源

モード終了時の遅延時間

クロック レディ ステータス ビット

(OSCCON)

デバイスのプライマリ クロック(PRI_IDLE モード )

LP、XT、HS

TCSD(1) OSTSHSPLL

EC、RC

HFINTOSC(2) IOSF

T1OSC または LFINTOSC(1)

LP、XT、HS TOST(3)

OSTSHSPLL TOST + tPLL(3)

EC、RC TCSD(1)

HFINTOSC(1) TIOBST(4) IOSF

HFINTOSC(2)

LP、XT、HS TOST(4)

OSTSHSPLL TOST + tPLL(3)

EC、RC TCSD(1)

HFINTOSC(1)なし IOSF

なし( スリープモード )

LP、XT、HS TOST(3)

OSTSHSPLL TOST + tPLL(3)

EC、RC TCSD(1)

HFINTOSC(1) TIOBST(4) IOSF

Note 1: TCSD はスリープ / アイドルモードからのウェイクアップ時に必要な遅延時間ですが、他の必要な遅延時間と並行して経過します (19.4「アイドルモード」参照 )。リセット時の HFINTOSC の既定値は 1 MHzです。

2: HFINTOSC の 16 MHz ソースとポストスケーラによって生成された周波数の両方を含みます。

3: TOST はオシレータ スタートアップ タイマです。tPLL は PLL ロックアウト タイマ ( パラメータ F12) です。

4: HFINTOSC が安定化するまでの期間 TIOBST の間も、コード実行は継続されます。

DS41350D_JP - p. 242 Preliminary 2010 Microchip Technology Inc.

Page 243: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

20.0 SR ラッチ

このモジュールには、複数のセット / リセット入力と選択可能なラッチ出力を備えた SR ラッチが 1 つ用意されています。SR ラッチモジュールには以下の機能があります。

• 入力選択をプログラム可能

• SR ラッチ出力を内部 / 外部で利用可能

• Q および Q 出力を選択可能

• ファームウェアによるセット / リセット

20.1 ラッチの動作

このラッチは、クロック源に依存しない SR ラッチです。セット / リセット入力はいずれも正論理です。ラッチのセット / リセットには、CxOUT、INT1 ピン、可変クロックを使用できます。この他、SRCON0 レジスタの SRPS および SRPR ビットを使用して SR ラッチをセットまたはリセットする事もできます。ラッチはリセットを優先するため、セット入力とリセット入力がどちらもhighの場合はリセット状態になります。SRPSビットと SRPR ビットはどちらも自己リセット型であるため、これらのビットのいずれかに 1 回書き込みを実行するだけでラッチのセットまたはリセットが完了します。

20.2 ラッチ出力

ラッチ出力は、SRCON0 レジスタの SRQEN およびSRNQEN ビットで選択します。SR ラッチの出力をI/O ピンに直接出力できるのは、同時に 1 つまでです。出力の優先度は、SRCON0 レジスタの SRQEN およびSRNQEN ビットの状態で決定します。

表 20-1: SR ラッチ出力の制御

対応するポートの TRIS ビットをクリアして、ポートピンの出力ドライバを有効にしておく必要があります。

20.3 リセットの影響

デバイスにどのようなリセットが発生しても、SRラッチは初期化されません。ラッチ出力をピンに出力する前に、ユーザのファームウェアでラッチ出力を初期化する必要があります。

図 20-1: SR ラッチの概略ブロック図

SRLEN SRQEN SRNQEN ポート I/O に出力される SR ラッチ

0 X X I/O

1 0 0 I/O

1 0 1 Q

1 1 0 Q

1 1 1 Q

SRPS

S

R

Q

Q

Note 1: R = 1かつ S = 1の場合、Q = 0、Q = 12: パルス ジェネレータは、2 Q ステートのパルス幅を生成します。

3: 出力は単なる参考用として記載したものです。詳細は、I/O ポートピンのブロック図を参照してください。

4: これらの名前は、コンパレータ出力の接続元を表しています。

PulseGen(2)

SRLATCH(1)

SRNQEN

SRQ pin(3)

SRQENSRNQEN

SRSPE

SRSC2E

INT1

SRSCKESRCLK

SYNCC2OUT(4)

SRSC1ESYNCC1OUT(4)

SRPR PulseGen(2)

SRRPE

SRRC2E

INT1

SRRCKESRCLK

SYNCC2OUT(4)

SRRC1ESYNCC1OUT(4)

SRLEN

SRLEN

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 243

Page 244: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 20-2: SRCLK の周波数一覧

SRCLK 分周比 FOSC = 20 MHz FOSC = 16 MHz FOSC = 8 MHz FOSC = 4 MHz FOSC = 1 MHz

111 512 25.6 s 32 s 64 s 128 s 512 s

110 256 12.8 s 16 s 32 s 64 s 256 s

101 128 6.4 s 8 s 16 s 32 s 128 s

100 64 3.2 s 4 s 8 s 16 s 64 s

011 32 1.6 s 2 s 4 s 8 s 32 s

010 16 0.8 s 1 s 2 s 4 s 16 s

001 8 0.4 s 0.5 s 1 s 2 s 8 s

000 4 0.2 s 0.25 s 0.5 s 1 s 4 s

レジスタ 20-1: SRCON0: SR ラッチ制御レジスタ

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

SRLEN SRCLK2 SRCLK1 SRCLK0 SRQEN SRNQEN SRPS SRPR

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット C = クリアのみ可能ビット

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 SRLEN: SR ラッチ イネーブルビット (1)

1 = SR ラッチを有効にする0 = SR ラッチを無効にする

bit 6-4 SRCLK<2:0>(1): SR ラッチ クロック分周ビット

000 = 周辺サイクルクロックを 1/4 分周001 = 周辺サイクルクロックを 1/8 分周010 = 周辺サイクルクロックを 1/16 分周011 = 周辺サイクルクロックを 1/32 分周100 = 周辺サイクルクロックを 1/64 分周101 = 周辺サイクルクロックを 1/128 分周110 = 周辺サイクルクロックを 1/256 分周111 = 周辺サイクルクロックを 1/512 分周

bit 3 SRQEN: SR ラッチ Q 出力イネーブルビット

SRNQEN = 0の場合

1 = Q を RC4 ピンに出力する0 = Q を内部のみで使用する

bit 2 SRNQEN: SR ラッチ Q 出力イネーブルビット

1 = Q を RC4 ピンに出力する0 = Q を内部のみで使用する

bit 1 SRPS: SR ラッチのパルスセット入力

1 = パルス入力0 = 常に「0」として読み出し

bit 0 SRPR: SR ラッチのパルスリセット入力

1 = パルス入力0 = 常に「0」として読み出し

Note 1: SR ラッチを有効にした状態で SRCLK ビットを変更すると、ラッチのセット / リセット入力のトリガが誤って発生する事があります。

DS41350D_JP - p. 244 Preliminary 2010 Microchip Technology Inc.

Page 245: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 20-3: SR ラッチに関連するレジスタ

レジスタ 20-2: SRCON1: SR ラッチ制御レジスタ 1

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

SRSPE SRSCKE SRSC2E SRSC1E SRRPE SRRCKE SRRC2E SRRC1E

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット C = クリアのみ可能ビット

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 SRSPE: SR ラッチ ペリフェラル セット イネーブルビット

1 = INT1 ピンのステータスで SR ラッチをセット0 = INT1 ピンのステータスは SR ラッチに影響しない

bit 6 SRSCKE: SR ラッチ セット クロック イネーブルビット

1 = SR ラッチのセット入力を SRCLK のパルスと同期する 0 = SR ラッチのセット入力を SRCLK のパルスと同期しない

bit 5 SRSC2E: SR ラッチ C2 セット イネーブルビット

1 = C2 コンパレータの出力で SR ラッチをセット0 = C2 コンパレータの出力は SR ラッチに影響しない

bit 4 SRSC1E: SR ラッチ C1 セット イネーブルビット

1 = C1 コンパレータの出力で SR ラッチをセット0 = C1 コンパレータの出力は SR ラッチに影響しない

bit 3 SRRPE: SR ラッチ ペリフェラル リセット イネーブルビット

1 = INT1 ピンで SR ラッチをリセット0 = INT1 ピンは SR ラッチに影響しない

bit 2 SRRCKE: SR ラッチ リセット クロック イネーブルビット

1 = SR ラッチのリセット入力を SRCLK のパルスと同期する 0 = SR ラッチのリセット入力を SRCLK のパルスと同期しない

bit 1 SRRC2E: SR ラッチ C2 リセット イネーブルビット

1 = C2 コンパレータの出力で SR ラッチをリセット0 = C2 コンパレータの出力は SR ラッチに影響しない

bit 0 SRRC1E: SR ラッチ C1 リセット イネーブルビット

1 = C1 コンパレータの出力で SR ラッチをリセット0 = C1 コンパレータの出力は SR ラッチに影響しない

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

SRCON0 SRLEN SRCLK2 SRCLK1 SRCLK0 SRQEN SRNQEN SRPS SRPR 290

SRCON1 SRSPE SRSCKE SRSC2E SRSC1E SRRPE SRRCKE SRRC2E SRRC1E 290

CM2CON1 MC1OUT MC2OUT C1RSEL C2RSEL C1HYS C2HYS C1SYNC C2SYNC 290

INTCON3 INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF 287

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

凡例 : 網掛けのビットは SR ラッチには使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 245

Page 246: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 246 Preliminary 2010 Microchip Technology Inc.

Page 247: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

21.0 電圧リファレンス

以下の 2 つの独立した電圧リファレンスを使用できます。

• プログラマブルな電圧リファレンス

• 1.024 V の固定電圧リファレンス

21.1 電圧リファレンス

電圧リファレンス モジュールは、コンパレータおよびDACモジュール用の電圧リファレンスを内部で生成します。このモジュールには、以下の特長があります。

• コンパレータの動作から独立

• 32 レベルの電圧レンジ

• VSS にクランプした出力

• VDD に比例した電圧

• 1.024 V の固定基準電圧 (FVR)

電圧リファレンス モジュールの設定は、REFCON1 レジスタ (レジスタ 21-2)で行ないます (図 21-1参照 )。

21.1.1 独立動作

電圧リファレンス モジュールは、コンパレータの構成から独立して動作します。REFCON1レジスタのD1ENビットをセットすると、VREF 分圧器に電流が流れ、電圧リファレンスが有効になります。D1EN ビットをクリアすると VREF 分圧器に電流が流れなくなり、電圧リファレンス モジュールの消費電力が 小限に抑えられます。

21.1.2 出力電圧の選択

VREF 電圧リファレンスは32レベルの電圧レンジから選択できます。32 のレベルは、REFCON2 レジスタのDAC1R<4:0> ビットで設定します。

VREF 出力電圧は以下の式で求めます。

式 21-1: VREF 出力電圧

21.1.3 VDD に比例した出力

コンパレータ電圧リファレンスはVDDから生成されるため、VREF 出力は VDD の変動に合わせて変化します。コンパレータ電圧リファレンスの試験済み絶対精度は、27.0「電気的仕様」を参照してください。

21.1.4 電圧リファレンスの出力

REFCON1 レジスタの DAC1OE ビットを「1」にセットすると、VREF電圧リファレンスをデバイスのCVREF

ピンに出力できます。基準電圧を VREF ピンに出力するように設定すると、そのピンのデジタル出力バッファおよびデジタル入力しきい値検出器は自動的に無効になります。基準電圧出力として設定された CVREF

ピンを読み出すと、常に「0」が返されます。

CVREF ピンを外部に接続し基準電圧を出力する場合、電流駆動能力に制約があるため、バッファを使用する必要があります。図 21-2 に、バッファの使用例を示します。

21.1.5 スリープ時の動作

割り込みまたはウォッチドッグ タイマのタイムアウトによってデバイスがウェイクアップしても、RECON1 レジスタの内容は変化しません。スリープモード時の消費電流を 小にするには、電圧リファレンスを無効にします。

21.1.6 リセットの影響

デバイスをリセットすると、以下のような影響があります。

• 電圧リファレンスが無効になる

• 固定電圧リファレンスが無効になる

• CVREF ピンから VREF が出力されなくなる

• 電圧レンジ選択ビット (DAC1R<4:0>) がクリアされる

VOUT VSOURCE VSOURCE – x DAC1R[4:0]

25

-------------------------------- VSOURCE+

= -

IF D1EN = 1

IF D1EN = 0 & D1LPS = 1 & DAC1R[4:0] = 11111:

VOUT VSOURCE = +

IF D1EN = 0 & D1LPS = 1 & DAC1R[4:0] = 00000:

VOUT VSOURCE = -

+ -

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 247

Page 248: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

21.2 FVR リファレンス モジュール

FVR リファレンスは、VDD から独立した安定な固定電圧リファレンスで、公称出力電圧は 1.024 V です。REFCON0 レジスタの FVR1EN ビットを「1」にセットすると、FVR リファレンスが有効になります。FVR電圧リファレンスは、コンパレータまたは ADC の入力チャンネルに接続できます。

21.2.1 FVR の安定化期間

固定電圧リファレンス モジュールを有効にしても、リファレンスと増幅回路はすぐには安定しません。従って、モジュールが安定するまでユーザプログラムで若干の遅延を確保する必要があります。FVR リファレンスが安定したかどうかは、REFCON0 レジスタのFVR1ST ビットの状態で知る事ができます。 小遅延の要件については、27.0「電気的仕様」を参照してください。

図 21-1: 電圧リファレンスのブロック図

16

-to

-1 M

UX

DAC1R<4:0>

R

VDD

VREF+

D1PSS<1:0> = 00

D1NSS = 0

VREF- D1NSS = 1

R

R

R

R

R

R

32 STEPS

VREF

FVR1

D1PSS<1:0> = 01

D1PSS<1:0> = 10

CVREF pin

DAC1OE

FVR1S<1:0>

X1X2X4

2

FVR

+

_FVR1ENFVR1ST

1.024V FixedReference

D1EN

D1LPS

R

D1EN

D1LPS

DS41350D_JP - p. 248 Preliminary 2010 Microchip Technology Inc.

Page 249: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 21-2: 電圧リファレンスの出力バッファの例

レジスタ 21-1: REFCON0: リファレンス制御レジスタ 0

R/W-0 R-0 R/W-0 R/W-1 U-0 U-0 U-0 U-0

FVR1EN FVR1ST FVR1S1 FVR1S0 — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 FVR1EN: 固定電圧リファレンス 1 イネーブルビット

0 = FVR を無効にする

1 = FVR を有効にする

bit 6 FVR1ST: 固定電圧リファレンス 1 安定状態ビット

0 = FVR が安定していない

1 = FVR が安定している

bit 5-4 FVR1S<1:0>: 固定電圧リファレンス 1 電圧選択ビット

00 = 予約 ( 使用不可 )01 = 1.024 V (x1)10 = 2.048 V (x2)11 = 4.096 V (x4)

bit 3-0 未実装ビット :「0」として読み出し

Buffered CVRef Output+–

CVREF

Module

Voltage Reference

Output Impedance

R(1)

CVREF

Note 1: R は、電圧リファレンスのコンフィグレーション ビット CVR<3:0> と CVRR によって決まります。

PIC18F1XK50/PIC18LF1XK50

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 249

Page 250: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 21-2: REFCON1: リファレンス制御レジスタ 1

R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 U-0 R/W-0

D1EN D1LPS DAC1OE --- D1PSS1 D1PSS0 --- D1NSS

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 D1EN: DAC 1 イネーブルビット

0 = DAC 1 を無効にする

1 = DAC 1 を有効にする

bit 6 D1LPS: DAC 1 ローパワー電圧ステート選択ビット

0 = VDAC = DAC1 の負リファレンス ソースを選択

1 = VDAC = DAC1 の正リファレンス ソースを選択

bit 5 DAC1OE: DAC 1 電圧出力イネーブルビット

1 = DAC 1 の電圧レベルを RC2/AN6/P1D/C12IN2-/CVREF/INT2 ピンにも出力

0 = DAC 1 の電圧レベルを RC2/AN6/P1D/C12IN2-/CVREF/INT2 ピンから切断

bit 4 未実装ビット : 「0」として読み出し

bit 3-2 D1PSS<1:0>: DAC 1 正入力選択ビット00 = VDD

01 = VREF+10 = FVR 出力

11 = 予約 ( 使用不可 )

bit 1 未実装ビット : 「0」として読み出し

bit 0 D1NSS: DAC1 負入力選択ビット0 = VSS

1 = VREF-

レジスタ 21-3: REFCON2: リファレンス制御レジスタ 2

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

--- --- --- DAC1R4 DAC1R3 DAC1R2 DAC1R1 DAC1R0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-5 未実装ビット : 「0」として読み出し

bit 4-0 DAC1R<4:0>: DAC1 電圧出力選択ビット

VOUT = ((VSOURCE+) - (VSOURCE-))*(DAC1R<4:0>/(2^5)) + VSOURCE-

Note 1: 共通のレジスタ レイアウトで任意のビット数を使用できるようにするため、出力選択ビットは常に右詰めとします。

DS41350D_JP - p. 250 Preliminary 2010 Microchip Technology Inc.

Page 251: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 21-1: 電圧リファレンスに関連するレジスタ

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

REFCON0 FVR1EN FVR1ST FVR1S1 FVR1S0 — — — — 289

REFCON1 D1EN D1LPS DAC1OE --- D1PSS1 D1PSS0 — D1NSS 289

REFCON2 — — — DAC1R4 DAC1R3 DAC1R2 DAC1R1 DAC1R0 289

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 290

凡例 : 網掛けのビットはコンパレータ電圧リファレンスには使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 251

Page 252: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 252 Preliminary 2010 Microchip Technology Inc.

Page 253: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.0 USB (UNIVERSAL SERIAL BUS)

本セクションでは、USB モジュールについて詳しく説明します。このモジュールの性質上、USB の知識が必要です。USB の概要については 22.10「USB の概要」でも説明しますが、これはアプリケーション設計のための参考情報として記載したものに過ぎません。設計者の方は、USB Implementers Forum (USB-IF) が正式に公開している 新の USB 仕様を参照するようにしてください。本書執筆時点での 新 USB 仕様はリビジョン 2.0 です。

22.1 USB モジュールの概要

PIC18F1XK50/PIC18LF1XK50 は、フルスピードおよびロースピード互換の USB シリアル インターフェイス エンジン (SIE)を内蔵しており、USBホストとPIC®

MCU の間で高速通信を行う事ができます。SIE は、内部トランシーバを利用して USB に直接接続できます。

性能を改善すめるための特別なハードウェアを装備しています。まず、デバイスのデータメモリ空間には、マイクロコントローラ コアと SIE の両方から DMA アクセスが可能なデュアルアクセス ポート メモリ (USBRAM) があります。また、USB RAM 空間におけるエンドポイントのメモリ使用方法をユーザが自由にプログラムできるように、バッファ ディスクリプタも提供されます。図 22-1 に、USB モジュールとその機能概要を示します。

図 22-1: USB モジュールとオプション

256 byteUSB RAM

USBSIE

USB Control and

Transceiver

P

P

D+D-

Internal Pull-ups

External 3.3VSupply

FSENUPUEN

USB Clock from theOscillator Module

OptionalExternal

Pull-ups(1)

(Low(Full

PIC18F1XK50/PIC18LF1XK50 Family

USB BusFS

Speed) Speed)

Note 1: 外付けのプルアップ抵抗を使用する場合は内部プルアップ抵抗を無効にします (UPUEN = 0)。

2: PIC18F13K50/PIC18F14K50 のみ

Configuration

VUSB

3.3V LDO Regulator(2)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 253

Page 254: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.2 USB のステータスと制御

USB モジュールの動作は、3 つの制御レジスタにより設定、管理します。さらに、以下 14 個のレジスタを使用して USB トランザクションを管理します。

• USB 制御レジスタ (UCON)• USB コンフィグレーション レジスタ (UCFG)• USB 転送ステータス レジスタ (USTAT)• USB デバイスアドレス レジスタ (UADDR)• フレーム番号レジスタ (UFRMH:UFRML)• エンドポイント イネーブル レジスタ 0 ~ 7 (UEPn)

22.2.1 USB 制御レジスタ (UCON)

USB 制御レジスタ ( レジスタ 22-1) は、転送実行中のUSBモジュールの挙動を制御するためのビットを格納します。これらのビットで制御できる挙動には、以下のものがあります。

• USB モジュール イネーブル

• ピンポンバッファ ポインタ リセット

• サスペンドモードの制御

• パケット転送ディセーブル

さらに USB 制御レジスタは、バスにシングルエンド ゼロが発生した事を知らせるステータスビット「SE0」(UCON<5>) も格納します。USB モジュールを有効にしたら、このビットを監視して差動データラインにシングルエンド ゼロが発生していないかどうかを確認するようにしてください。これにより、 初のパワーアップ状態と USB リセット信号を区別する事ができます。

USB モジュール全体の動作は、USBEN ビット(UCON<3>) で制御します。このビットをセットするとUSB モジュールが有効になり、バッファ ディスクリプタ テーブル (BDT) 内の PPBI ビットは全て「0」にリセットされます。また、内部プルアップ抵抗を使用する場合、USBEN ビットをセットすると内部プルアップが有効になります。このため、USBEN ビットは USB バスへの接続 / 切断をソフトウェアで切り換える手段として使用できます。USBEN ビットをクリアするとステータスビットと制御ビットの設定は全て無視されますが、USBEN ビットをセットして USB モジュールを有効にする前にこれらのビットを完全に設定しておく必要があります。USBEN ビットは、アクティブなクロック源から USB モジュールにクロックを供給するまではセットできません。クロック源に PLL を使用する場合、PLLを有効にして2 ms以上 (PLLがロックするまでの時間 )経過してからUSBENビットをセットしてください。

レジスタ 22-1: UCON: USB 制御レジスタ

U-0 R/W-0 R-x R/C-0 R/W-0 R/W-0 R/W-0 U-0

— PPBRST SE0 PKTDIS USBEN(1) RESUME SUSPND —

bit 7 bit 0

凡例 : C = クリア可能ビット

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 未実装ビット : 「0」として読み出し

bit 6 PPBRST: ピンポンバッファ リセット ビット

1 = バッファ ディスクリプタ (BD) の偶数バンクに対するピンポンバッファ ポインタを全てリセットする0 = ピンポンバッファ ポインタをリセットしない

bit 5 SE0: ライブ シングルエンド ゼロ フラグビット

1 = USB バスでシングルエンド ゼロを検出0 = シングルエンド ゼロの検出なし

bit 4 PKTDIS: パケット転送ディセーブルビット

1 = SIEトークンおよびパケットの処理を無効にする(SETUPトークンを受信すると自動的にセットされる)0 = SIE トークンおよびパケットの処理を有効にする

bit 3 USBEN: USB モジュール イネーブルビット (1)

1 = USB モジュールおよび周辺回路を有効にする ( デバイスを接続状態にする )0 = USB モジュールおよび周辺回路を無効にする ( デバイスを切断状態にする )

bit 2 RESUME: レジューム シグナリング イネーブルビット

1 = レジューム信号を送出する0 = レジューム 信号を送出しない

bit 1 SUSPND: サスペンド USB ビット

1 = USB モジュールと周辺回路を省電力モードにして SIE のクロックを停止する0 = USB モジュールと周辺回路を通常動作にし、SIE のクロックを設定済みのレートにする

bit 0 未実装ビット : 「0」として読み出し

Note 1: 適切なクロック源から USB モジュールにクロックが供給されていない場合、このビットはセットできません。

DS41350D_JP - p. 254 Preliminary 2010 Microchip Technology Inc.

Page 255: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

PPBRST ビット (UCON<6>) は、ダブル バッファリング モード ( ピンポンバッファ ) を使用する場合のリセット状態を制御します。PPBRST ビットをセットすると、ピンポンバッファ ポインタは全て偶数バッファに設定されます。PPBRST ビットはファームウェアでクリアする必要があります。このビットは、ピンポンバッファを使用しないバッファリング モードでは無視されます。

PKTDIS ビット (UCON<4>) は、SIE がパケットの送受信を無効にした事を示すフラグビットです。SETUPトークンを受信してセットアップ処理が許可されると、SIE はこのビットをセットします。マイクロコントローラはこのビットをクリアできますが、セットはできません。このビットをクリアすると、SIE はパケットの送受信を再開できます。バッファ ディスクリプタテーブル内に未処理のイベントが残っている場合、これらが利用可能である事が USTAT レジスタの FIFOバッファ内に示されます。

RESUME ビット (UCON<2>) を使用すると、USB モジュールからレジューム信号を送出してリモートウェイクアップを実行できます。有効なリモート ウェイクアップを生成するには、ファームウェアでRESUME ビットを 10 ms の間セットしてからクリアする必要があります。レジューム信号送出の詳細は、「Universal Serial Bus Specification Revision 2.0」を参照してください。

SUSPND ビット (UCON<1>) をセットすると、USB モジュールと周辺回路が低消費電力モードに移行します。SIE への入力クロックも停止します。IDLEIF 割り込みが発生したらソフトウェアでこのビットをセットする必要があります。ACTVIF 割り込みが発生したら、マイクロコントローラのファームウェアでこのビットをリセットします。このビットがセットされている間、デバイスは USB バスに接続したままですが、トランシーバ出力はアイドルです。VUSB ピンにかかる電圧は、このビットの値で決まります。IDLEIF 要求の前にこのビットをセットすると、バスの挙動は予測不能になります。

22.2.2 USB コンフィグレーション レジスタ(UCFG)

USB バスの通信を開始する前に、USB モジュールに関連する内部 / 外部ハードウェアを正しく設定しておく必要があります。この設定は、主に UCFG レジスタ( レジスタ 22-2) で行います。UFCG レジスタには以下のビットが含まれ、USB モジュールのシステムレベルの挙動のほとんどをこのレジスタで制御します。

• バス速度 ( フルスピード / ロースピード )• 内蔵プルアップ抵抗イネーブル

• ピンポンバッファの使用

UTEYE ビット (UCFG<7>) は、USB モジュールのテストとデバッグ、USB 認証に使用するアイパターン生成を有効化します

22.2.2.1 内部トランシーバ

USB モジュールは、USB 2.0 フルスピード / ロースピード互換のトランシーバを内蔵しており、内部でSIE に接続しています。この特長は、低コストシングルチップ アプリケーションに適しています。USB モジュールを有効にすると (USBEN = 1)、内部トランシーバも有効になります。トランシーバの速度はFSEN ビット (UCFG<2>) で制御します。このビットをセットするとフルスピード動作となります。

内蔵 USB プルアップ抵抗は、UPUEN ビット(UCFG<4>) で制御します。内蔵プルアップ抵抗は、内蔵トランシーバが有効な場合のみ使用できます。

内部 USB トランシーバには、VUSB ピンから電力を供給します。USB シグナリング レベルの仕様に適合するため、VUSB には 3.0 ~ 3.6 V の電源から電力を供給する必要があります。3.3 V 電源を使用し、パスコンに高品質のセラミック コンデンサを使用すると、電気的信号品質は 高となります。このコンデンサは、パッケージの同じ側にある VUSB ピンと VSS ピンのなるべく近くに配置する必要があります (20 ピン PDIP、SOIC、SSOP、QFN パッケージではコンデンサのグランドを VSS ピン 20 に接続 )。

D+ および D- 信号ラインは、USB コネクタまたはケーブル ( ハードワイヤ アプリケーションの場合 ) のそれぞれのピンに直接接続できます。D+ および D- ドライバはスルーレートが制御されており、出力インピーダンスが USB ケーブルの特性 インピーダンスと整合するように設計されているため、外付けの抵抗、コンデンサ、磁気部品は一切必要ありません。

USB 仕様に適合するため、配線パターンの長さは30 cm 未満とします。また、この配線パターンを USBケーブルの特性インピーダンスに整合するように設計する事が理想的です。

Note: サスペンドモード中は、バスパワー USBデバイスの消費電流は 500 A (typ.) に制限されます。PIC デバイスと周辺回路の消費電流の合計をこの範囲内に抑える必要があります。デバイスがサスペンドモードに移行したら、消費電流を 小限に抑えるように注意します。

Note: USB の速度、トランシーバ、プルアップ抵抗の設定は、USB モジュールのセットアップ フェイズでのみ行うべきです。USB モジュールを有効にしたまま、これらの設定を変更すべきではありません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 255

Page 256: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 22-2: UCFG: USB コンフィグレーション レジスタ

R/W-0 U-0 U-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0

UTEYE — — UPUEN(1) — FSEN(1) PPB1 PPB0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 UTEYE: USB アイパターン テスト イネーブルビット

1 = アイパターン テストを有効にする0 = アイパターン テストを無効にする

bit 6-5 未実装ビット : 「0」として読み出し

bit 4 UPUEN: USB 内蔵プルアップ イネーブルビット (1)

1 = 内蔵プルアップ抵抗を有効にする (FSEN = 1の場合は D+ のプルアップ、FSEN = 0の場合はD- のプルアップ )

0 = 内蔵プルアップ抵抗を無効にする

bit 3 未実装ビット : 「0」として読み出し

bit 2 FSEN: フルスピード イネーブルビット (1)

1 = フルスピード デバイス : トランシーバのエッジレートを制御、48 MHz の入力クロックが必要0 = ロースピード デバイス : トランシーバのエッジレートを制御、6 MHz の入力クロックが必要

bit 1-0 PPB<1:0>: ピンポンバッファ コンフィグレーション ビット

11 = エンドポイント 1 ~ 15 で偶数 / 奇数ピンポンバッファを有効にする10 = 全てのエンドポイントで偶数 / 奇数ピンポンバッファを有効にする01 = OUT エンドポイント 0 で偶数 / 奇数ピンポンバッファを有効にする00 = 偶数 / 奇数ピンポンバッファを無効にする

Note 1: USB モジュールを有効にした状態で UPUEN および FSEN ビットを変更しないでください。これらの値は、USB モジュールを有効にする前に設定しておく必要があります。

DS41350D_JP - p. 256 Preliminary 2010 Microchip Technology Inc.

Page 257: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.2.2.2 内部プルアップ抵抗

PIC18F1XK50/PIC18LF1XK50 は、ロースピード / フルスピード USB の要件を満たしたプルアップ抵抗を内蔵しています。内部プルアップ抵抗は、UPUEN ビット (UCFG<4>) を使って有効にします。内部プルアップ抵抗とその制御方法については、図 22-1 を参照してください。

22.2.2.3 外付けプルアップ抵抗

外付けのプルアップ抵抗も使用できます。この場合、VUSB ピンを使用して D+ または D- をプルアップします。使用するプルアップ抵抗の値は、USB仕様で1.5 k(±5%) と規定されています。図 22-2 に例を示します。

図 22-2: 外部回路

22.2.2.4 ピンポンバッファの設定

ピンポンバッファをどのように使用するかは、PPB<1:0> ビットで設定します。ピンポンバッファの詳細は、22.4.4「ピンポン バッファリング」を参照してください。

22.2.2.5 アイパターン テスト イネーブル

UCFG<7> ビットをセットすると、USB モジュールで自動アイパターン テストを生成できます。アイパターン出力は、USB モジュールの設定に基づいて観察します。つまり SIE のクロック設定、プルアップ抵抗、トランシーバのモードをあらかじめ設定しておく必要があります。また、USB モジュールも有効にしておく必要があります。

UTEYE ビットをセットすると、USB モジュールは受信から送信への切り換え状態をエミュレートし、J-K-J-K ビットシーケンス ( フルスピードの場合はK-J-K-J) の送信を開始します。アイパターン テストモードを有効にしている間、このシーケンスが繰り返し生成されます。

UTEYE ビットは、USB モジュールを実際の USB システムに接続した状態では決してセットしないでください。このテストモードは、USB 認証テスト前のボード検証用に用意されたものです。基板パターン、インピーダンス不整合、近接する他のシステム部品等の要因がUSB 信号にどう影響するかをシステム設計者が評価するための機能です。このテストは、受信から送信への遷移を適切にテストするためのものではありません。アイパターン テストは複雑な USB 認証テストの代用にはなりませんが、初期のシステムデバッグには役立ちます。

Note: 正式な USB 仕様では、USB ケーブルの+5 V VBUS ラインに電流を供給してはならない事になっています。また、+5 VVBUS ラインが 1.17 V 未満の時、USB デバイスが D+ および D- データラインに電流を供給する事も禁止されています。従って、完全にバスパワー方式のアプリケーション以外では、VBUS が 1.17 V を超えるまで USB モジュールおよび D+ または D- データラインのプルアップ抵抗を有効にしないよう、VBUS ラインを監視しておく必要があります。VBUS ラインを任意の5 V耐性I/Oピンに接続して監視します。

PIC®

MicrocontrollerHost

Controller/HUB

VUSB

D+

D-

Note: 上図は、内蔵レギュレータと外付けプルアップ

抵抗を使用したフルスピード構成の代表的な

接続例です。

1.5 k

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 257

Page 258: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.2.3 USB ステータス レジスタ (USTAT)

USTAT レジスタは SIE 内のトランザクション ステータスを通知します。SIE が USB 転送完了割り込みを生成したら、USTAT を読み出して転送の状態を確認する必要があります。USTAT には、転送エンドポイント番号、方向、ピンポンバッファ ポインタ値 ( ピンポンバッファを使用している場合のみ ) が含まれます。

USTAT レジスタは、SIE が管理する 4 バイトのステータス FIFO の読み出し用のウィンドウです。マイクロコントローラが転送を処理している間に、SIE は別のエンドポイントを処理する事ができます ( 図 22-3)。SIE は、バッファを使用したデータの読み書き処理を完了すると、USTAT レジスタを更新します。トランザクション完了割り込みを処理する前に別の USB 転送が実行された場合、SIE は次の転送のステータスをステータス FIFO に格納します。

転送完了フラグビット TRNIF をクリアすると、SIE はFIFO を 1 つ前に進めます。FIFO 保持レジスタにある次のデータが有効な場合、SIE は TRNIF をクリアしてから 6 TCY 以内に再び割り込みをアサートします。それ以上データがない場合、TRNIF はクリアされたままとなり、USTAT のデータは信頼できなくなります。

図 22-3: USTAT FIFO

Note: USTAT レジスタの値は、TRNIF 割り込みフラグがアサートされてから2 SIEクロック後に有効になります。

システムクロックが48 MHzでロースピード動作の場合、TRNIF 割り込みを受信してからUSTATレジスタのデータを処理するまでの間に遅延時間が必要な場合があります。

Note: USTAT FIFO がフルの時にエンドポイントのリクエストを受信したら、SIE は自動的に NAK をホストに返します。

Data Bus

USTAT from SIE

4-Byte FIFOfor USTAT

Clearing TRNIFAdvances FIFO

レジスタ 22-3: USTAT: USB ステータス レジスタ

U-0 U-0 R-x R-x R-x R-x R-x U-0

— — ENDP2 ENDP1 ENDP0 DIR PPBI(1) —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-6 未実装 : 「0」として読み出し

bit 5-3 ENDP<2:0>: 後にアクティビティのあったエンドポイントの符号化番号ビット( 後の USB 転送によって更新された BDT の番号を表す )

111 = エンドポイント 7110 = エンドポイント 6....001 = エンドポイント 1000 = エンドポイント 0

bit 2 DIR: 後の BD 方向インジケータ ビット

1 = 後のトランザクションが IN トークン0 = 後のトランザクションが OUT または SETUP トークン

bit 1 PPBI: ピンポン BD ポインタ インジケータ ビット (1)

1 = 後のトランザクションを奇数 BD バンクに対して実行0 = 後のトランザクションを偶数 BD バンクに対して実行

bit 0 未実装 : 「0」として読み出し

Note 1: このビットは、偶数および奇数 BD レジスタが使用可能なエンドポイントでのみ有効です。

DS41350D_JP - p. 258 Preliminary 2010 Microchip Technology Inc.

Page 259: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.2.4 USB エンドポイント制御

USBモジュールには双方向のエンドポイントが8つあり、それぞれに個別の制御レジスタ UEPn (「n」はエンドポイント番号 ) があります。UEPn レジスタに含まれる制御ビットの内容は、エンドポイント番号にかかわらず共通です。レジスタ 22-4 に、UEPn レジスタの内容を示します。

EPHSHK ビット (UEPn<4>) はエンドポイントのハンドシェイクを制御し、このビットをセットすると USBハンドシェイクが有効になります。通常、このビットはアイソクロナス エンドポイントを使用する場合を除き、常にセットされます。

EPCONDIS ビット (UEPn<3>) は、そのエンドポイントでの USB コントロール転送 (SETUP) を有効または無効に設定します。このビットをクリアするとSETUPトランザクションが有効になります。INおよびOUTトランザクションも有効にするには、対応する EPINEN

および EPOUTEN ビットをセットする必要があります。USB 仕様はエンドポイント 0 を既定のコントロール エンドポイントと定義しており、エンドポイント 0の EPCONDIS ビットは常にクリアしておく必要があります。

EPOUTEN ビット (UEPn<2>) は、ホストからの USBOUT トランザクションを有効または無効に設定します。このビットをセットすると OUT トランザクションが有効になります。同様に、EPINEN ビット (UEPn<1>)はホストからの USB IN トランザクションの有効または無効を設定します。

EPSTALL ビット (UEPn<0>) は、エンドポイントのSTALL 状態を示します。あるエンドポイントで STALLが発行されると、そのエンドポイント ペアの EPSTALLビットが SIE によってセットされます。このビットは、ファームウェアでクリアするか SIE がリセットされるまでセットされたままとなります。

レジスタ 22-4: UEPn: USB エンドポイント n 制御レジスタ (UEP0 ~ UEP7)

U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— — — EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL(1)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-5 未実装ビット : 「0」として読み出し

bit 4 EPHSHK: エンドポイント ハンドシェイク イネーブルビット

1 = エンドポイントのハンドシェイクを有効にする0 = エンドポイントのハンドシェイクを無効にする (主にアイソクロナス エンドポイント用の設定 )

bit 3 EPCONDIS: 双方向エンドポイント制御ビット

EPOUTEN = 1かつ EPINEN = 1の場合 :1 = エンドポイント n のコントロール転送を無効にする。IN および OUT 転送のみを許可0 = エンドポイント n のコントロール (SETUP) 転送を有効にする、IN および OUT 転送も許可

bit 2 EPOUTEN: エンドポイント送信イネーブルビット

1 = エンドポイント n の送信 (OUT) を有効にする0 = エンドポイント n の送信 (OUT) を無効にする

bit 1 EPINEN: エンドポイント受信イネーブルビット

1 = エンドポイント n の受信 (IN) を有効にする0 = エンドポイント n の受信 (IN) を無効にする

bit 0 EPSTALL: エンドポイント ストール イネーブルビット (1)

1 = エンドポイント n をストールする 0 = エンドポイント n をストールしない

Note 1: エンドポイント n が有効な場合のみ有効。無効な場合、ビットは無視される

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 259

Page 260: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.2.5 USB アドレス レジスタ (UADDR)

USB アドレスレジスタは一意の USB アドレスを格納し、USB モジュールがアクティブになるとこのアドレスをデコードします。URSTIF による USB リセットを受信した場合、またはマイクロコントローラからリセットを受信した場合、UADDR は 00h にリセットされます。USB アドレスは、USB セットアップ フェイズ ( エニュメレーション ) でマイクロチップ社の USBファームウェア サポートの一部としてマイクロコントローラによって書き込まれます。

22.2.6 USB フレーム番号レジスタ(UFRMH:UFRML)

フレーム番号レジスタは、11 ビットのフレーム番号を格納します。下位 8 ビットは UFRML レジスタに格納し、上位 3 ビットは UFRMH レジスタに格納します。SOF トークンを受信すると、このレジスタペアに現在のフレーム番号が格納されます。これらのレジスタは、マイクロコントローラからは読み出し専用です。フレーム番号レジスタは主にアイソクロナス転送で使用します。UFRMH:UFRML レジスタペアの内容は、48 MHz のSIE クロックがアクティブな時のみ有効です (SUSPND(UCON<1>) ビット = 1の時は内容が不正確 )。

22.3 USB RAM

USB データは、USB RAM と呼ばれるメモリ空間を利用してマイクロコントローラ コアとSIEの間を移動します。USB RAM は、通常のデータメモリ空間のバンク 2 (200h ~ 2FFh) にマッピングされた特別なデュアルアクセス メモリで、合計 256 バイトです ( 図 22-4)。

バンク 2 (200h ~ 27Fh) はエンドポイント バッファ

制御専用です。使用するバッファリングの種類によっ

ては、8 バイト分を残してバンク 2 の全てのバイトを

USB バッファ空間としても使用できます。

USB RAM は、マイクロコントローラからデータメモリとして利用できますが、SIE がアクセス中のアドレスはマイクロコントローラからアクセスできません。マイクロコントローラとSIEが同じバッファに同時にアクセスしないように、セマフォ メカニズムによる調停機能が用意されています。詳細は、22.4.1.1「バッファのオーナーシップ」を参照してください。

図 22-4: データメモリ空間への USB RAM の実装

200h

2FFh

Buffer Descriptors,

USB Data or User Data

SFRs

1FFh

000h

F60h

FFFh

Banks 2

(USB RAM)

F5FhF53hF52h

300h

Banks 3to 14

User Data

Unused

Banks 15

USB Data or User Data

27Fh

280h

Banks 0to 1

DS41350D_JP - p. 260 Preliminary 2010 Microchip Technology Inc.

Page 261: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.4 バッファ ディスクリプタとバッファ ディスクリプタ テーブル

バンク 2 のレジスタは、バッファ ディスクリプタ テーブル (BDT)と呼ばれる構造体を使用してエンドポイント バッファを制御する目的でのみ使用します。BDT により、ユーザは長さや構成の異なる各種エンドポイント バッファを柔軟に設定、制御する事ができます。

BDT は複数のバッファ ディスクリプタ (BD) で構成され、これらを用いて USB RAM 空間内の実際のバッファを定義および制御します。BD は以下の 4 つのレジスタで構成されます (「n」は BD の番号で、0 ~ 31)。

• BDnSTAT: BD ステータス レジスタ

• BDnCNT: BD バイトカウント レジスタ

• BDnADRL: BD 下位アドレスレジスタ

• BDnADRH: BD 上位アドレスレジスタ

BD は常に、BDnSTAT:BDnCNT:BDnADRL:BDnADRHの順に並んだ 4 バイトのブロックとして構成されます。BDnSTAT のアドレスは、常に 200h からのオフセット(4n – 1) (16 進数、n は BD 番号 ) となります。

使用するバッファリング構成に応じて (22.4.4「ピンポン バッファリング」)、バッファ ディスクリプタは大で 16 組、17 組、32 組のいずれかとなります。BDTの長さは 低でも 8 バイト必要です。これは、全てのデバイスが初期設定用に双方向 ( 入力 / 出力 ) のエンドポイント0を持つ事がUSB仕様で定められているためです。エンドポイントとバッファリングの構成にもよりますが、BDT の長さは 大 128 バイトまでです。

バッファ ディスクリプタのステータスおよびアドレスレジスタは特殊機能レジスタ (SFR) と見なす事もできますが、通常のマイクロコントローラの SFR がバンク15 にマッピングされているのに対し、これらはハードウェアにマッピングされていません。特定の BD に対応するエンドポイントが有効になっていない場合、そのレジスタは使用されません。その場合、これらのレジスタは未実装アドレスとしてではなく、利用可能なRAM に見えます。UEPn<1> ビットをセットしてエンドポイントを有効にした場合のみ、これらのアドレスのメモリは BD レジスタとして機能します。データメモリ空間のアドレス全般に共通する事ですが、デバイスに何らかのリセットが発生すると BD レジスタも不定値となります。

図 22-5 に、280h から開始する 64 バイトバッファのBD の例を示します。BD レジスタセットは、対応するエンドポイントがUEPn レジスタで有効に設定されている場合のみ有効です。BD レジスタは全て USB RAM内にあります。各エンドポイントの BD は、エンドポイントを有効にする前に正しく設定しておく必要があります。

22.4.1 BD のステータスと設定

バッファ ディスクリプタはエンドポイント バッファのサイズを定義するだけでなく、バッファの設定と制御も行ないます。バッファの設定は、主に BD ステータス (BDnSTAT) レジスタで行ないます。各 BD には、それぞれの BD 番号に対応した専用の BDnSTAT レジスタがあります。

図 22-5: バッファ ディスクリプタの例

他の制御レジスタとは異なり、BDnSTAT レジスタのビット構成はコンテクストによって異なります。つまり、マイクロコントローラと USB モジュールのどちらが現在 BD とバッファの更新を行えるかによって、2 種類のビット構成が存在します。両者で共通するビット定義は 3 つのみです。

22.4.1.1 バッファのオーナーシップ

CPU と USB モジュールがバッファと BD を共用するため、メモリ内の BD と関連するバッファをどちらが更新するかをシンプルなセマフォ メカニズムで区別しています。

この役割を果たすのが UOWN ビット (BDnSTAT<7>)で、メモリ内の BD と関連するバッファをどちらが更新可能かを区別するセマフォとして機能します。BDnSTATの2つのビット構成で共通するのは、UOWNビットのみです。

UOWN ビットをクリアすると、マイクロコントローラコアがBDエントリのオーナーになります。UOWNビットをセットすると、USB モジュールが BD エントリとバッファメモリのオーナーになります。この時、マイクロコントローラ コアは BD または対応するデータバッファを変更する事はできません。ただし、SIE がバッファのオーナーの時もマイクロコントローラはBDnSTAT を読み出す事はできます ( 逆に、マイクロコントローラがオーナーの時にSIEが読み出す事も可能)。

バッファ ディスクリプタの意味は、現在のオーナーがどちらかによって異なります。USB モジュールをオーナーに設定する前に、ユーザはBDnSTATビットでUSBモジュールの基本動作を設定できます。この時、バイトカウントとバッファアドレスのレジスタも設定できます。

UOWNビットをセットしたらSIEがBDの値を上書きする可能性があるため、以前 BD に書き込んだ値は使用できなくなります。トークン PID と転送カウントBDnCNT が更新されると、BDnSTAT レジスタも SIEによって更新されます。

200h

USB Data

Buffer

Buffer

BD0STAT

BD0CNT

BD0ADRL

BD0ADRH

201h

202h

203h

280h

2BFh

Descriptor

Note: 上図はメモリ空間の縮尺比が一定ではあり

ません。

40h

00h

05hStarting

Size of Block

(xxh)

RegistersAddress Contents

Address

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 261

Page 262: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

エンドポイントの設定を行う際は、BDT の中でもBDnSTAT バイトを必ず 後に設定します。トランザクションが完了すると UOWN ビットは SIE によってクリアされます。

UOWN ビットがセットされている時にアクセスをブロックするメカニズムは、ハードウェアとして実装されていません。従って、SIE がオーナーの時にマイクロコントローラがメモリを書き換えようとすると予期しない挙動をすることがあります。同様に、SIE がオーナーの時にマイクロコントローラからメモリを読み出すと、不正確なデータとなります。

22.4.1.2 BDnSTAT レジスタ (CPU モード )

UOWN = 0の時は、マイクロコントローラ コアが BDのオーナーとなります。この時、BDnSTAT レジスタの他の 7 つのビットは制御ビットとして機能します。

データトグル同期イネーブルビット DTSEN (BDnSTAT<3>) は、データトグルのパリティチェックを制御します。DTSEN ビットをセットすると、SIE によるデータトグル同期が有効になります。データトグル同期を有効にすると、SIE はデータパケットのパリティと DTS (BDnSTAT<6>) の値を照合します。到着時にパケットの同期が正しくないデータは無視されます。このデータは USB RAM には書き込まれず、USB転送完了割り込みフラグもセットされません。ただし、受信の確認応答として SIE からホストに ACK トークンが返されます。表 22-1 に DTSEN ビットが SIE に与える影響をまとめます。

バッファストール ビットBSTALL (BDnSTAT<2>)はコントロール転送をサポートします ( 通常は、エンドポイント 0 で 1 回のストール )。また、このビットは USB仕様書の第 9 章で定義されている SET_FEATURE/CLEAR_FEATURE コマンド ( 主に、既定のコントロール エンドポイント以外のエンドポイントに対する連続ストール ) もサポートします。

BSTALL ビットはバッファストールの有効と無効を切り換えます。BSTALL ビットをセットすると、SIE は受信したトークンがそのアドレスの BD を使用する場合にホストに STALL トークンを返します。ホストに対して STALL が発行されると、対応する UEPn 制御レジスタの EPSTALL ビットがセットされ、STALL 割り込みが発生します。SETUP トークンを受信するまでUOWN ビットはセットされたままで、BD も変化しません。SETUP トークンを受信すると STALL 条件がクリアされ、BDのオーナーシップがマイクロコントローラ コアに返されます。

BD<9:8>ビット (BDnSTAT<1:0>)にはSIEバイトカウントの 上位 2 ビットを格納し、下位 8 ビットは対応する BDnCNT レジスタに格納します。詳細は、22.4.2

「BD バイトカウント」を参照してください。

表 22-1: DTSEN ビットが奇数 / 偶数 (DATA0/DATA1) パケットの受信に与える影響

ホストからのOUT パケット

BDnSTAT の設定 パケット受信後のデバイスの応答

DTSEN DTS ハンドシェイク UOWN TRNIF BDnSTAT と USTAT の状態

DATA0 1 0 ACK 0 1 更新される

DATA1 1 0 ACK 1 0 更新されない

DATA0 1 1 ACK 1 0 更新されない

DATA1 1 1 ACK 0 1 更新される

DATA0 または DATA1 0 x ACK 0 1 更新される

DATA0 または DATA1 ( エラーあり )

x x NAK 1 0 更新されない

凡例 : x = ドントケア

DS41350D_JP - p. 262 Preliminary 2010 Microchip Technology Inc.

Page 263: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 22-5: BDnSTAT: バッファ ディスクリプタnステータス レジスタ(BD0STAT~ BD31STAT)、CPU モード ( データをサイドに書き込み )

R/W-x R/W-x U-0 U-0 R/W-x R/W-x R/W-x R/W-x

UOWN(1) DTS(2) —(3) —(3) DTSEN BSTALL BC9 BC8

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 UOWN: USB オーナービット (1)

0 = マイクロコントローラ コアが BD および対応するバッファのオーナー

bit 6 DTS: データトグル同期ビット (2)

1 = データ 1 パケット0 = データ 0 パケット

bit 5-4 未実装ビット : これらのビットは常に「0」にプログラミングしておく必要があります (3)。

bit 3 DTSEN: データトグル同期イネーブルビット

1 = データトグル同期を有効にする。同期の値が不正なデータパケットは無視される(ただしSETUPトランザクションは例外で、データトグル ビットが一致しなくても許可される )

0 = データトグル同期を実行しない

bit 2 BSTALL: バッファストール イネーブルビット

1 = バッファストールを有効にする。特定位置のBDを使用するようなトークンを受信するとSTALLハンドシェイクが発行される (UOWN ビットはセットされたままで、BD の値は変化しない )

0 = バッファストールを無効にする

bit 1-0 BC<9:8>: バイトカウント 9、8 ビット

バイトカウント ビットは、IN トークンで送信するバイト数、または OUT トークンで受信するバイト数を表します。BC<7:0> の値と組み合わせて、0 ~ 1023 の範囲の有効なバイトカウントを表現します。

Note 1: このビットは、USB モジュールを有効にする前にユーザが任意の値に初期化しておく必要があります。

2: このビットは、DTSEN = 1以外では無視されます。

3: これらのビットがセットされていると、USB 通信は動作しません。従って、これらのビットは常に「0」のままにしておく必要があります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 263

Page 264: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.4.1.3 BDnSTAT レジスタ (SIE モード )

SIE が BD およびバッファのオーナーになると、BDnSTAT のほとんどのビットが別の意味を持つようになります。レジスタ 22-6 にこの時のレジスタの設定を示します。UOWN ビットをセットすると、それ以前にこのレジスタにユーザが書き込んだデータや制御設定は、SIE からのデータによって上書きされます。

SIE は、BDnSTAT<5:3> に格納されたトークンパケット ID (PID) の値で BDnSTAT レジスタを更新します。対応するBDnCNTレジスタの転送カウントも更新されます。8 ビットレジスタからオーバーフローした値は転送カウントの上位 2 ビットにキャリーオーバーし、BDnSTAT<1:0> に格納されます。

22.4.2 BD バイトカウント

バイトカウントは、IN 転送で送信されるバイトの総数を表します。IN 転送が終了したら、SIE はホストに送信済みバイト数を返します。

OUT 転送の場合、バイトカウントは受信および USBRAM に保存が可能な 大バイト数を表します。OUT転送が終了したら、SIE は実際に受信したバイト数を返します。受信バイト数が対応するバイトカウントを上回る場合、データパケットは拒否され、NAK ハンドシェイクが開始されます。この場合、バイトカウントは更新されません。

10 ビットのバイトカウントは 2 つのレジスタにまたがって格納されます。バイトカウントの下位 8 ビットは BDnCNT レジスタに格納します。上位 2 ビットをBDnSTAT<1:0> に格納します。これにより、有効範囲0 ~ 1023 のバイトカウントを表現します。

22.4.3 BD アドレスのチェック

BD アドレス レジスタ ペアには、対応するエンドポイント バッファの開始 RAM アドレスを格納します。BDのアドレスの正しさを確認するハードウェアのメカニズムは実装していません。

BD アドレスの値が USB RAM 内のアドレスを指し示していない場合、または他のエンドポイントのバッファ内のアドレスを指し示している場合、データは失われるか上書きされます。同様に、使用中の BD のアドレスが受信バッファ (OUT エンドポイント ) と重複した場合、予期しない結果となる事があります。USBアプリケーションを開発する際は、ユーザコードの中にソフトウェア ベースのアドレスチェック ルーチンを組み込んでください。

レジスタ 22-6: BDnSTAT: バッファ ディスクリプタnステータス レジスタ(BD0STAT ~ BD31STAT)、SIE モード ( サイドから MCU にデータを返送 )

R/W-x U-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x

UOWN: — PID3 PID2 PID1 PID0 BC9 BC8

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 UOWN: USB オーナービット

1 = SIE が BD および対応するバッファのオーナー

bit 6 予約 : SIE はこのビットに書き込みを行わない

bit 5-2 PID<3:0>: パケット ID ビット

後の転送で受信したトークン PID の値 (IN、OUT、SETUP トランザクションのみ )

bit 1-0 BC<9:8>: バイトカウント 9、8 ビット

OUT 転送で実際に受信したバイト数、または IN 転送で実装に送信したバイト数を SIE がこれらのビットに書き込みます。

DS41350D_JP - p. 264 Preliminary 2010 Microchip Technology Inc.

Page 265: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.4.4 ピンポン バッファリング

1 つのエンドポイントで 2 つの BD エントリ ( 偶数転送用の BD エントリと奇数転送用の BD エントリ ) を使用する場合、これをピンポンバッファと呼びます。ピンポンバッファを使用すると、CPU が BD を処理中に SIE が別の BD を処理できます。このように BD をダブル バッファリングする事により、USB バスにおける送受信のスループットが 大限に向上します。

USBモジュールは以下の4つの動作モードをサポートしています。

• ピンポンバッファを使用しない

• OUT エンドポイント 0 のみピンポンバッファを使用する

• 全てのエンドポイントでピンポンバッファを使用する

• エンドポイント 0 以外の全てのエンドポイントでピンポンバッファを使用する

ピンポンバッファの設定は、UCFG レジスタのPPB<1:0> ビットで行います。

USB モジュールは、各エンドポイントのピンポンポインタを個別に追跡管理します。USB モジュールを有効にすると、全てのポインタが偶数 BD にリセットされます。転送が完了して SIE が UOWN ビットをクリアしたら、ポインタが奇数 BD に切り換わります。次にトランザクションが完了したら、ポインタは再び偶数 BD に切り換わり、以後同様に切り換えが繰り返されます。

後のトランザクションの偶数 / 奇数ステータスは、USTAT レジスタの PPBI ビットに格納されます。PPBRST ビットを使用すると、全てのピンポンポインタを偶数にリセットできます。

図 22-6 に、4 つの動作モードと USB RAM におけるBD のマッピングを示します。

BD と各エンドポイントの関係は、バッファリングの設定で固定されています。BD とエンドポイントの対応関係の詳細は、表 22-2 を参照してください。このような固定関係となっているため、エンドポイントを連続して有効にしないと BDT にすき間が発生します。理論上は、無効なエンドポイントの BD はバッファ空間として使用できます。ただし実際には、何らかの方法で BD のアドレスチェックを行わない限り、このようにして生じた BDT のすき間は使用しないことを推奨します。

図 22-6: 各バッファリング モードにおけるバッファ ディスクリプタ テーブルのマッピング

EP1 IN Even

EP1 OUT Even

EP1 OUT Odd

EP1 IN Odd

Descriptor

Descriptor

Descriptor

Descriptor

EP1 IN

EP7 IN

EP1 OUT

EP0 OUT

PPB<1:0> = 00

EP0 IN

EP1 IN

No Ping-Pong

EP7 IN

EP0 IN

EP0 OUT Even

PPB<1:0> = 01

EP0 OUT Odd

EP1 OUT

Ping-Pong Buffer

EP7 IN Odd

EP0 IN Even

EP0 OUT Even

PPB<1:0> = 10

EP0 OUT Odd

EP0 IN Odd

Ping-Pong Buffers

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

200h

2FFh 2FFh 2FFh

200h 200h

23Fh

243h

Availableas

Data RAM Availableas

Data RAM

Maximum Memory Used: 64 bytesMaximum BDs: 16 (BD0 to BD15)

Maximum Memory Used: 68 bytesMaximum BDs: 17 (BD0 to BD16)

Maximum Memory Used: 128 bytesMaximum BDs: 32 (BD0 to BD31)

Note: 上図メモリ空間の縮尺比は不定です。

Descriptor

Descriptor

Descriptor

Descriptor

Buffers on EP0 OUT on all EPs

EP1 IN Even

EP1 OUT Even

EP1 OUT Odd

EP1 IN Odd

Descriptor

Descriptor

Descriptor

Descriptor

EP7 IN Odd

EP0 OUT

PPB<1:0> = 11

EP0 IN

Ping-Pong Buffers

Descriptor

Descriptor

Descriptor

2FFh

200h

Maximum Memory Used: 120 bytesMaximum BDs:

30 (BD0 to BD29)

on all other EPsexcept EP0

Availableas

Data RAM

277h27Fh

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 265

Page 266: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 22-2: 各バッファリング モードにおけるバッファ ディスクリプタの割り当て

表 22-3: USB バッファ ディスクリプタ テーブルのレジスタ一覧

エンド

ポイント

エンドポイントに割り当てられる BD

モード 0( ピンポンなし )

モード 1(EP0 OUT のみピンポン )

モード 2( 全ての EP でピンポン )

モード 3(EP0 以外の全ての EP で

ピンポン )

Out In Out In Out In Out In

0 0 1 0 (E)、1 (O) 2 0 (E)、1 (O) 2 (E)、3 (O) 0 1

1 2 3 3 4 4 (E)、5 (O) 6 (E)、7 (O) 2 (E)、3 (O) 4 (E)、5 (O)

2 4 5 5 6 8 (E)、9 (O) 10 (E)、11 (O) 6 (E)、7 (O) 8 (E)、9 (O)

3 6 7 7 8 12 (E)、13 (O) 14 (E)、15 (O) 10 (E)、11 (O) 12 (E)、13 (O)

4 8 9 9 10 16 (E)、17 (O) 18 (E)、19 (O) 14 (E)、15 (O) 16 (E)、17 (O)

5 10 11 11 12 20 (E)、21 (O) 22 (E)、23 (O) 18 (E)、19 (O) 20 (E)、21 (O)

6 12 13 13 14 24 (E)、25 (O) 26 (E)、27 (O) 22 (E)、23 (O) 24 (E)、25 (O)

7 14 15 15 16 28 (E)、29 (O) 30 (E)、31 (O) 26 (E)、27 (O) 28 (E)、29 (O)

凡例 : (E) = 偶数トランザクション バッファ、(O) = 奇数トランザクション バッファ

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

BDnSTAT(1) UOWN DTS(4) PID3(2) PID2(2) PID1(2)

DTSEN(3)PID0(2)

BSTALL(3)BC9 BC8

BDnCNT(1)バイトカウント

BDnADRL(1)バッファ下位アドレス

BDnADRH(1)バッファ上位アドレス

Note 1: バッファ ディスクリプタ レジスタ名の「n」は 0 ~ 31 の値をとります。ここでは、32 個のレジスタを総称して「n」と簡単に表記しています。これらのレジスタのリセット値は全て不定 (xxxx xxxx) です。

2: SIE がレジスタのオーナーになったら (UOWN ビットをセット )、SIE は BDnSTAT レジスタの bit 5 ~ 2を使用して PID<3:0> の値を返します。SIE がレジスタのオーナーになると、それまでに DTSEN およびBSTALL ビットに書き込んだ値は無効になります。

3: SIE がバッファ ディスクリプタのオーナーになる前 (UOWN ビットがクリアの時 ) は、BDnSTAT レジスタの bit 5 ~ 2 を使用して DTSEN と BSTALL を設定します。

4: DTSEN = 1以外では、このビットは無視されます。

DS41350D_JP - p. 266 Preliminary 2010 Microchip Technology Inc.

Page 267: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.5 USB 割り込み

USB モジュールは複数の割り込みを生成できます。これら全ての割り込み要因に対処するため、USB モジュールにはマイクロコントローラの割り込みロジック構造に似た、専用の割り込みロジック構造が用意されています。USB 割り込みには、有効と無効を切り換えるための制御レジスタと、割り込みをトラップするためのフラグレジスタがそれぞれ 1 つずつあります。全ての割り込み要因は、マイクロコントローラの割り込みロジックで 1 つの USB 割り込み要求 USBIF (PIR2<2>) に集約されます。

図 22-7 に、USB モジュールの割り込みロジックを示します。USB モジュールでは、割り込みレジスタが2 つの階層に分かれています。上位レベルは全体的な

USB ステータス割り込みで構成されており、これらはUIE レジスタにイネーブルビット、UIR レジスタにフラグビットがあります。下位レベルは USB エラー条件で構成されており、これらはUEIRレジスタにイネーブルビット、UEIE レジスタにフラグビットがあります。これらのいずれか 1 つでも割り込みが発生すると、上位レベルでUSBエラー割り込みフラグ (UERRIF)がセットされます。

割り込みを使用すると、USB トランザクションで発生する所定のイベントをトラップできます。図 22-8 に、USB フレーム内の一般的なイベントとそれに対応する割り込みを示します。

図 22-7: USB 割り込みロジックの構造

図 22-8: USB トランザクションと割り込みイベントの例

BTSEFBTSEE

BTOEFBTOEE

DFN8EFDFN8EE

CRC16EFCRC16EE

CRC5EFCRC5EE

PIDEFPIDEE

SOFIFSOFIE

TRNIFTRNIE

IDLEIFIDLEIE

STALLIFSTALLIE

ACTVIFACTVIE

URSTIFURSTIE

UERRIF

UERRIE

USBIF

Second Level USB Interrupts(USB Error Conditions)

UEIR (Flag) and UEIE (Enable) Registers

Top Level USB Interrupts(USB Status Interrupts)

UIR (Flag) and UIE (Enable) Registers

USB Reset

SOFRESET SETUP DATA STATUS SOF

SETUPToken Data ACK

OUT Token Empty Data ACKStart-of-Frame (SOF)

IN Token Data ACK

SOFIF

URSTIF

1 ms Frame

Differential Data

From Host From Host To Host

From Host To Host From Host

From Host From Host To Host

Transaction

Control Transfer(1)

TransactionComplete

Note 1: ここに示したコントロール転送は単なる例であり、これらのイベントは全てのトランザクションで発生する可能性があります。通常、コントロール転送は複数のフレームにまたがります。

Set TRNIF

Set TRNIF

Set TRNIF

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 267

Page 268: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.5.1 USB 割り込みステータス レジスタ(UIR)

UIR レジスタ ( レジスタ 22-7) は、各 USB ステータス割り込み要因のフラグビットで構成されます。これらの各割り込み要因に対応する割り込みイネーブルビットは、UIE レジスタにあります。全ての USB ステータスフラグの論理和が取られ、マイクロコントローラの割り込み用の USBIF 割り込みフラグが生成されます。

SIE によってセットされた割り込みフラグビットは、ソフトウェアで「0」を書き込んでクリアする必要があります。ファームウェアのデバッグ時には、フラグビットをソフトウェアでセットする事もできます。

レジスタ 22-7: UIR: USB 割り込みステータス レジスタ

U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R/W-0

— SOFIF STALLIF IDLEIF(1) TRNIF(2) ACTVIF(3) UERRIF(4) URSTIF

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 未実装ビット : 「0」として読み出し

bit 6 SOFIF: SOF (Start-of-Frame) トークン割り込みビット

1 = SIE が SOF トークンを受信した0 = SIE が SOF トークンを受信していない

bit 5 STALLIF: STALL ハンドシェイク割り込みビット

1 = SIE が STALL ハンドシェイクを送信した0 = STALL ハンドシェイクが送信されていない

bit 4 IDLEIF: アイドル検出割り込みビット (1)

1 = アイドル状態 (3 ms 以上アイドル状態が持続 ) を検出0 = アイドル状態の検出なし

bit 3 TRNIF: トランザクション完了割り込みビット (2)

1 = 未処理トランザクションの処理が完了、USTAT レジスタからエンドポイントの情報を読み出す0 = 未処理トランザクションの処理が完了していない、または未処理トランザクションが存在しない

bit 2 ACTVIF: バス アクティビティ検出割り込みビット (3)

1 = D+/D- ラインでアクティビティを検出した0 = D+/D- ラインでアクティビティを検出していない

bit 1 UERRIF: USB エラー条件割り込みビット (4)

1 = マスクされていないエラー条件が発生した0 = マスクされていないエラー条件は発生していない

bit 0 URSTIF: USB リセット割り込みビット

1 = 有効な USB リセットが発生した。UADDR レジスタに 00h を読み込み0 = USB リセットが発生していない

Note 1: アイドル状態を検出したら、USB モジュールをサスペンドモードに移行する事ができます。

2: このビットをクリアすると USTAT FIFO が前に進みます (IN、OUT、SETUP トークンでのみ有効 )。

3: 通常、このビットは UIDLE 割り込みイベントを検出した後のみマスクが解除されます。

4: このビットは、UEIE レジスタで有効に設定したエラー条件でのみセットされます。このビットはステータスビット専用であり、ユーザがセット / クリアする事はできません。

DS41350D_JP - p. 268 Preliminary 2010 Microchip Technology Inc.

Page 269: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.5.1.1 バス アクティビティ検出割り込みビット (ACTVIF)

USB モジュールがサスペンド状態の場合、またはサスペンドからウェイクアップした直後は ACTVIF ビットをクリアできません。内部ハードウェア ステートマシンが同期するまで数クロックサイクル待ってから、ファームウェアで ACTVIF ビットをクリアする必要があります。内部ハードウェアが同期する前に ACTVIFビットをクリアしても、ACTVIF ビットの値が変化しない事があります。また、USB モジュールがクロック源に 48 MHz PLL を使用している場合、SUSPND ビッ

トをクリアしても 48 MHz PLL がロックするまでUSBモジュールは動作しません。例 22-1 に ACTVIF フラグをアプリケーション コードでクリアする方法を示します。

USB バス アイドル状態からレジュームする際は、ACTVIF 割り込みが 1 回しか発生しません。ユーザファームウェアで ACTVIF ビットをクリアした場合、バストラフィックが継続していてもこのビットはすぐにセット状態には戻りません。バストラフィックのない状態が持続してもう一度 IDLEIF状態にならないと、再び ACTVIF 割り込みを生成する事はできません。

例 22-1: ACTVIF ビット (UIR<2>) のクリア方法

アセンブリ :

BCF UCON, SUSPNDLOOP:

BTFSS UIR, ACTVIFBRA DONEBCF UIR, ACTVIFBRA LOOP

DONE:

C:

UCONbits.SUSPND = 0;

while (UIRbits.ACTVIF) { UIRbits.ACTVIF = 0; }

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 269

Page 270: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.5.2 USB 割り込みイネーブル レジスタ(UIE)

UIE レジスタ ( レジスタ 22-8) は、USB ステータス割り込み要因に対応したイネーブルビットを格納します。これらのビットをセットすると、UIR レジスタの対応する割り込み要因が有効になります。

このレジスタのビット値は、割り込み条件の発生をマイクロコントローラの割り込みロジックに伝達するかどうかのみを制御します。割り込み条件が成立するとイネーブルビットの設定にかかわらず割り込みフラグビットがセットされるため、フラグビットをポーリングすれば割り込みを生成せずにサービスルーチンを実行する事ができます。

レジスタ 22-8: UIE: USB 割り込みイネーブル レジスタ

U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

— SOFIE STALLIE IDLEIE TRNIE ACTVIE UERRIE URSTIE

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 未実装ビット : 「0」として読み出し

bit 6 SOFIE: SOF (Start-of-Frame) トークン割り込みイネーブルビット

1 = SOF トークン割り込みを許可する0 = SOF トークン割り込みを禁止する

bit 5 STALLIE: STALL ハンドシェイク割り込みイネーブルビット

1 = STALL 割り込みを許可する0 = STALL 割り込みを禁止する

bit 4 IDLEIE: アイドル検出割り込みイネーブルビット

1 = アイドル検出割り込みを許可する0 = アイドル検出割り込みを禁止する

bit 3 TRNIE: トランザクション完了割り込みイネーブルビット

1 = トランザクション割り込みを許可する0 = トランザクション割り込みを禁止する

bit 2 ACTVIE: バス アクティビティ検出割り込みイネーブルビット

1 = バス アクティビティ検出割り込みを許可する0 = バス アクティビティ検出割り込みを禁止する

bit 1 UERRIE: USB エラー割り込みイネーブルビット

1 = USB エラー割り込みを許可する0 = USB エラー割り込みを禁止する

bit 0 URSTIE: USB リセット割り込みイネーブルビット

1 = USB リセット割り込みを許可する0 = USB リセット割り込みを禁止する

DS41350D_JP - p. 270 Preliminary 2010 Microchip Technology Inc.

Page 271: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.5.3 USB エラー割り込みステータス レジスタ (UEIR)

UEIR レジスタ ( レジスタ 22-9) は、USB モジュール内のエラー割り込み要因のフラグビットを格納します。これらの割り込み要因は、UEIE レジスタの対応する割り込みイネーブルビットで制御します。全てのUSB エラーフラグの論理和が取られ、割り込みロジックの 上位レベルで USB エラー割り込みフラグ(UERRIF) が生成されます。

各エラービットは、エラー条件が検出されるとただちにセットされます。このため、通常割り込みはトークンの処理終了に対応しません。

SIE によってセットされた割り込みフラグビットは、ソフトウェアで「0」を書き込んでクリアする必要があります。

レジスタ 22-9: UEIR: USB エラー割り込みステータス レジスタ

R/C-0 U-0 U-0 R/C-0 R/C-0 R/C-0 R/C-0 R/C-0

BTSEF — — BTOEF DFN8EF CRC16EF CRC5EF PIDEF

bit 7 bit 0

凡例 :

R = 読み出し可能ビット C = クリア可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 BTSEF: ビットスタッフ エラー フラグビット

1 = ビットスタッフ エラーを検出した0 = ビットスタッフ エラーを検出しない

bit 6-5 未実装ビット : 「0」として読み出し

bit 4 BTOEF: バス ターンアラウンド タイムアウト エラー フラグビット

1 = バス ターンアラウンド タイムアウトが発生した ( 直前の EOP からアイドル状態が 16 ビット時間を超過 )

0 = バス ターンアラウンド タイムアウトが発生していない

bit 3 DFN8EF: データフィールド サイズ エラー フラグビット

1 = データフィールドのバイト数が整数でない0 = データフィールドのバイト数が整数である

bit 2 CRC16EF: CRC16 エラー フラグビット

1 = CRC16 のチェックに失敗した0 = CRC16 のチェックに合格した

bit 1 CRC5EF: CRC5 ホストエラー フラグビット

1 = CRC5 エラーにより、トークンパケットが拒否された0 = トークンパケットが正しく受信された

bit 0 PIDEF: PID チェックエラー フラグビット

1 = PID チェックに失敗した0 = PID チェックに合格した

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 271

Page 272: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.5.4 USB エラー割り込みイネーブル レジスタ (UEIE)

UEIE レジスタ ( レジスタ 22-10) は、USB エラー割り込み要因のイネーブルビットを格納します。これらのビットをセットすると、UEIR レジスタ内のエラー割り込み要因を個別に有効にして、割り込みロジック上位レベルの UERR ビットに伝達する事ができます。

UIE レジスタ同様、これらのイネーブルビットは、割り込み条件の発生をマイクロコントローラの割り込みロジックに伝達するかのみを制御します。割り込み条件が成立するとイネーブルビットの設定にかかわらずフラグビットがセットされるため、フラグビットをポーリングすれば割り込みを発生させずにサービスルーチンを実行する事ができます。

レジスタ 22-10: UEIE: USB エラー割り込みイネーブル レジスタ

R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BTSEE — — BTOEE DFN8EE CRC16EE CRC5EE PIDEE

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 BTSEE: ビットスタッフ エラー割り込みイネーブルビット

1 = ビットスタッフ エラー割り込みを許可する0 = ビットスタッフ エラー割り込みを禁止する

bit 6-5 未実装ビット : 「0」として読み出し

bit 4 BTOEE: バス ターンアラウンド タイムアウト エラー割り込みイネーブルビット

1 = バス ターンアラウンド タイムアウト エラー割り込みを許可する0 = バス ターンアラウンド タイムアウト エラー割り込みを禁止する

bit 3 DFN8EE: データフィールド サイズ エラー割り込みイネーブルビット

1 = データフィールド サイズ エラー割り込みを許可する0 = データフィールド サイズ エラー割り込みを禁止する

bit 2 CRC16EE: CRC16 エラー割り込みイネーブルビット

1 = CRC16 エラー割り込みを許可する0 = CRC16 エラー割り込みを禁止する

bit 1 CRC5EE: CRC5 ホストエラー割り込みイネーブルビット

1 = CRC5 ホストエラー割り込みを許可する0 = CRC5 ホストエラー割り込みを禁止する

bit 0 PIDEE: PID チェックエラー割り込みイネーブルビット

1 = PID チェックエラー割り込みを許可する0 = PID チェックエラー割り込みを禁止する

DS41350D_JP - p. 272 Preliminary 2010 Microchip Technology Inc.

Page 273: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.6 USB 電源モード

電源の要件や構成は USB アプリケーションによって様々です。一般的な電源モードとしては、バスパワーのみ、セルフパワーのみ、セルフパワー主体のデュアルパワーがあります。ここでは、ごく一般的なケースについて説明します。また、USB トランシーバの消費電流の推定方法についても説明します。

22.6.1 バスパワーのみ

バスパワーのみのモードでは、アプリケーションで必要な電源は全て USB バスから供給します ( 図 22-9)。これは、デバイスの電源モードとして もシンプルな方式です。

USB 2.0 仕様の突入電流の条件を満たすには、VBUS とグランド間の総実効静電容量を 10 µF 以下とする必要があります。この条件を満たさない場合、何らかの突入電流制限が必要になります。詳細は、USB 2.0 仕様書のセクション 7.2.4 を参照してください。

USB 2.0 仕様では、全ての USB デバイスが低消費電力サスペンドモードをサポートする事も必要です。USB サスペンドモードでは、デバイスが USB ケーブルの 5 V VBUS ラインから消費できる電流は 500 A 以下 (リモート ウェイクアップに対応したハイパワー デバイスでは 2.5 mA 以下 ) と定められています。

ホストは USB デバイスに対する全ての USB トラフィックを 3 ms 以上停止し、USB デバイスをサスペンド モードに移行させます。この時、UIR レジスタのIDLEIF ビットがセットされます。

USB サスペンドモード中も D+ または D- のプルアップ抵抗はアクティブにしておく必要があるため、その消費電流も含めてサスペンドモード時の消費電流を500 A/2.5 mA 以内に抑える必要があります。

図 22-9: バスパワーのみ

22.6.2 セルフパワーのみ

セルフパワーのみのモードでは、USB アプリケーションは外部電源で動作するため、USB バスからの電力はほとんど消費しません。図 22-10 に例を示します。

USB 仕様の条件を満たすには、ホストが VBUS を highに駆動するまでUSBモジュール (およびD+またはD-のプルアップ抵抗 ) を有効にしてはなりません。

アプリケーションから USB ケーブルの 5 V VBUS ピンには決して電流を供給しないでください。

図 22-10: セルフパワーのみ

VDD

VUSB

VSS

VBUS

VDD

VUSB

VSS

VSELF

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 273

Page 274: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.6.3 セルフパワー主体のデュアルパワー

アプリケーションによっては、デュアルパワー動作が必要です。デュアルパワー モードでは、アプリケーションは通常セルフパワーで動作し、自己給電が不可能な場合のみ USB からの給電に切り換えます。図 22-11 に、セルフパワー モードと USB バスパワーモードを自動的に切り換えるセルフパワー主体のデュアルパワーの簡単な例を示します。

デュアルパワー デバイスは、突入電流とサスペンドモード電流に関する要件も全て満たす必要があります。また、VBUSがhighに駆動される前にUSBモジュールを有効にしてはなりません。これらの要件の詳細は、22.6.1「バスパワーのみ」と 22.6.2「セルフパワーのみ」を参照してください。また、デュアルパワー デバイスから USB ケーブルの 5 V VBUS ピンには決して電流を供給しないでください。

図 22-11: デュアルパワーの例

22.6.4 USB トランシーバの消費電流

USB トランシーバの消費電流は、USB ケーブルの特性インピーダンス、ケーブルの長さ、VUSB 供給電圧、USB ケーブルを流れる実際のデータパターンによって変化します。ケーブルが長いほど静電容量が大きくなり、出力状態をスイッチングする際の消費電力は全体的に大きくなります。

「IN」トラフィック データパターンの方が「OUT」トラフィック データパターンよりも消費電流ははるかに大きくなります。これは、OUT トラフィックではホスト側が USB ケーブルを駆動するのに対し、IN トラフィックではPIC® デバイスがUSBケーブルを駆動する必要があるためです。

USB ケーブルで転送されるデータは、NRZI で符号化されます。NRZI 符号化方式では、ビットが「0」の時にトランシーバの出力状態 (「J」状態または「K」状態 ) が反転します。NRZI で符号化したビットが「1」の場合、トランシーバの出力状態は変化しません(ビット スタッフィングで変化する場合を除く )。従って、データ ビットの値が「0」の IN トラフィックの場合は出力状態を変化させるためにトランシーバが USBケーブルを充放電する必要があるため、消費電流はも大きくなります。

NRZI 符号化およびビット スタッフィングの詳細はUSB 2.0 仕様書のセクション 7.1 に記載されています。ただし、PIC18F1XK50/PIC18LF1XK50を使用してUSBアプリケーションを設計するには、そこまで詳細な知識は不要です。特に、ビット スタッフィング / アンスタッフィング、NRZI 符号化 / 復号化、CRC生成 / チェックについては SIE がハードウェアで処理します。

トランシーバの総消費電流はアプリケーションによって異なります。式 22-1 を使うと、フルスピード アプリケーションの消費電流を予測できます。

例 22-2 に、この式を理論上のアプリケーションに使用した例を示します。

Note: USB バスからデバイスに供給できる電流には制限があるため、注意が必要です。USB 2.0 仕様では、ローパワー デバイスの場合 100 mA まで、ハイパワー デバイスの場合 500 mA までと制限されています。

VDD

VUSB

VSS

VBUS

VSELF~5V

~5V

100 k

DS41350D_JP - p. 274 Preliminary 2010 Microchip Technology Inc.

Page 275: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

式 22-1: USB トランシーバ消費電流の予測

例 22-2: USB トランシーバの消費電流の計算方法

IXCVR = + IPULLUP(60 mA • VUSB • PZERO • PIN • LCABLE)

(3.3V • 5m)

凡例 : VUSB: VUSB ピンに印加される電圧 (V) (3.0 ~ 3.6 V)

PZERO: PIC® デバイスが送信する IN トラフィックのうち、値が「0」のビットの割合 (10 進数 )

PIN: バス帯域幅全体のうち、IN トラフィックに使用する帯域幅の割合 (10 進数 )

LCABLE: USB ケーブルの長さ ( 単位 : m)USB 2.0 仕様では、フルスピード アプリケーションで使用できるケー

ブルは 5 m 以内と規定されています。

IPULLUP: 定格 1.5 k のプルアップ抵抗 ( 有効にした場合 ) が USB ケーブルに供給する必要のある電流。USBケーブルのホストまたはハブ側には定格 15 kの抵抗 (14.25 ~ 24.8 k) があり、D+ および D- ライン

を両方共グランドにプルダウンします。このため、バス アイドル状態 ( パケット転送の合間や USB サ

スペンド モード時等 ) でも最大 218 A の静止電流が流れます (3.3 V 時 )。

また、IPULLUP はバス トラフィックの状態によっても変化します。USB 帯域幅を最大限に利用した場合

(IN/OUT トラフィックに関わらずラインをほぼ常時「K」ステートに駆動するようなデータの場合 )、最

大 2.2 mA に達します。

ここでは、以下の条件を仮定したアプリケーションを例に、USB トランシーバの消費電流を計算します。

• VUSB と VDD には 3.3 V を印加し、コア電圧レギュレータを有効にする。

• このアプリケーションはフルスピード アプリケーションで、1 つの割り込み IN エンドポイントを使用する。このエンドポイントから 1 ms ごとに 64 バイトのパケットを送信する。送信バイト数は制限しない。このアプリケーションで OUT エンドポイントへのトラフィックがあるかどうかは問わない。

• アプリケーションの回路基板では標準の USB「タイプ B」または「ミニ B」コネクタを使用する。

この場合、IN エンドポイントを流れるデータの値に制約がないため、PZERO = 100% = 1 とします。これは、理論上 64 kBps のデータのバイト値が全て 00h となる可能性があるためです。「0」ビットでは USB トランシーバの出力状態が切り換わるため、ケーブルの充放電に必要な消費電流が多くなります。今回の例では、理論上送信データビットの値が全て「0」となる可能性があります。通常は「1」と「0」が混ざって現れるため、これが理論上の最大値です。

このアプリケーションでは、1.5 MBps (12 Mbps) の全帯域幅のうち 64 kBps を IN トラフィックに使用するため、以下の式が成り立ちます。

また、このアプリケーションでは標準の「タイプ B」または「ミニ B」コネクタを採用しているため、エンドユーザは最長 5 m のケーブルを使用できます。従って、ワーストケースのケーブル長は以下の通りです。

LCABLE = 5 m

IPULLUP = 2.2 mA と仮定します。IPULLUP の実際の値は 218 A 程度と予測されますが、ここでは最悪値を想定しておきます。USB 帯域幅は、ハブを経由してルートポートに接続している全てのデバイスで共有します。このアプリケーションを接続した USB 1.1 ハブに他のデバイスが接続されている場合、バス上を流れるホストから他のデバイス宛てのトラフィックもこのアプリケーションから見える可能性があります。ソースに関係なく、何らかのトラフィックが存在すると IPULLUP の値はベース値の 218 A より大きくなるため、最悪値の 2.2 mA を想定しておきます。

従って、以下の式で消費電流を求める事ができます。

この式で求めた値は近似値であり、実際にはガードバンドを追加するか、実際のアプリケーションでテストする事を推奨します。PIC18F1XK50/PIC18LF1XK50 のその他の消費電流 ( コアの動作、他の I/O ラインの駆動、各種モジュールの動作に必要な消費電流の合計 ) にトランシーバの消費電流を加算したものが全体の消費電流となります。

Pin =64 kBps

1.5 MBps = 4.3% = 0.043

IXCVR = + 2.2 mA = 4.8 mA(60 mA • 3.3V • 1 • 0.043 • 5m)

(3.3V • 5m)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 275

Page 276: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.7 オシレータ

USB モジュールにはクロックに関するいくつかの要件があります。フルスピード動作の場合、48 MHz のクロック源が必要です。ただしその場合でも、マイクロコントローラ コアやその他の周辺モジュールは48 MHz クロックで動作する必要はありません。利用可能なクロック オプションの詳細は、2.11「USB 動作」を参照してください。

22.8 D+/D- ピンの状態変化割り込み

PIC18F/LF1XK50 は、D+ および D- データピンの両方で状態変化割り込み機能をサポートしています。この機能を利用すると、デバイスを USB ホスト / ハブに接続した時に電圧レベルの変化を検出する事ができます。

USB ホスト / ハブは、D+ および D- ピンに 15 Kのプルダウン抵抗があります。PIC18F/LF1XK50 をバスに接続すると、D+ および D- ピンは電圧の変化を検出できます。バスから切断した際にピンの状態を high に維持するには、各ピンに外付け抵抗が必要です。

状態変化割り込み機能を利用するには、USB モジュールを無効 (USBEN = 0) にしておく必要があります。USB モジュールを有効にすると (USBEN = 1)、D+ および D- ピンの状態変化割り込みは自動的に無効になります。詳細は、7.11「PORTA と PORTB の状態変化割り込み」を参照してください。

22.9 USB ファームウェアとドライバ

マイクロチップ社は、USB ファームウェアやドライバサポート等、アプリケーション固有のリソースを数多く提供しています。 新のファームウェアとドライバサポートについては、www.microchip.com を参照してください。

表 22-4: USB モジュールの動作に関連するレジスタ (1)

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 詳細ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RABIE TMR0IF INT0IF RABIF 69

IPR2 OSCFIP C1IP C2IP EEIP BCL1IP USBIP TMR3IP — 77

PIR2 OSCFIF C1IF C2IF EEIF BCL1IF USBIF TMR3IF — 73

PIE2 OSCFIE C1IE C2IE EEIE BCL1IE USBIE TMR3IE — 75

UCON — PPBRST SE0 PKTDIS USBEN RESUME SUSPND — 254

UCFG UTEYE — — UPUEN — FSEN PPB1 PPB0 256

USTAT — ENDP3 ENDP2 ENDP1 ENDP0 DIR PPBI — 258

UADDR — ADDR6 ADDR5 ADDR4 ADDR3 ADDR2 ADDR1 ADDR0 260

UFRML FRM7 FRM6 FRM5 FRM4 FRM3 FRM2 FRM1 FRM0 254

UFRMH — — — — — FRM10 FRM9 FRM8 254

UIR — SOFIF STALLIF IDLEIF TRNIF ACTVIF UERRIF URSTIF 268

UIE — SOFIE STALLIE IDLEIE TRNIE ACTVIE UERRIE URSTIE 270

UEIR BTSEF — — BTOEF DFN8EF CRC16EF CRC5EF PIDEF 271

UEIE BTSEE — — BTOEE DFN8EE CRC16EE CRC5EE PIDEE 272

UEP0 — — — EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL 259

UEP1 — — — EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL 259

UEP2 — — — EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL 259

UEP3 — — — EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL 259

UEP4 — — — EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL 259

UEP5 — — — EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL 259

UEP6 — — — EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL 259

UEP7 — — — EPHSHK EPCONDIS EPOUTEN EPINEN EPSTALL 259

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットは USB モジュールには使用しません。

Note 1: この表には、データメモリ空間のバンク 15 にハードウェア マッピングされた SFR のみを記載しています。バンク 4にマッピングされたバッファ ディスクリプタ レジスタは厳密には SFR と異なるため、別の表 22-3 にまとめています。

DS41350D_JP - p. 276 Preliminary 2010 Microchip Technology Inc.

Page 277: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

22.10 USB の概要

ここでは USB の基本的な概念と、USB デバイスの設計に役立つ情報を紹介します。ただし、USB 仕様およびクラス仕様に関する膨大な情報をここに掲載することはできません。詳細については必ず www.usb.org で公開されている USB 仕様を確認してください。既にUSB の詳細を把握している方も、USB の基礎と概要を再確認する意味でこのセクションを一読する事をお勧めします。

22.10.1 階層型フレームワーク

図 22-12 に示すように、USB デバイスの機能は階層型フレームワークで構成されます。各階層は、デバイス内の機能レベルに対応しています。デバイス以外で上位の階層となるのがコンフィグレーションです。1 つのデバイスに複数のコンフィグレーションを設定する事もできます。例えば、デバイスによってはセルフパワーのみのモードとバスパワーのみのモードに基づいて複数の電力要件を定義する事もあります。

各コンフィグレーションには複数のインターフェイスを設定できます。各インターフェイスでそのコンフィグレーションの特定のモードをサポートできます。

インターフェイスの下の階層がエンドポイントです。データのやりとりはこの階層で直接行います。エンドポイントは双方向で 大 16 個まで持つ事ができます。エンドポイント0は常にコントロール エンドポイントです。既定値ではデバイスをバスに接続した際、エンドポイント 0 を使用してデバイスのコンフィグレーションを行ないます。

22.10.2 フレーム

USB バスでは、情報をフレームと呼ばれる 1 ms のタイムスロットにグループ化して通信を行ないます。1 つのフレームには、複数のデバイスとエンドポイントに対するトランザクションを混載できます。図 22-8にフレーム内のトランザクションの例を示します。

22.10.3 転送

USB仕様では、以下4種類の転送が定義されています。

• アイソクロナス転送 : 大量のデータ ( 大1023バイト ) をリアルタイムに転送するのに適した方式です。ただし、データのエラーチェックは行いません。音声信号等、わずかなデータロスであれば問題にならないストリーミング アプリケーションに適しています。

• バルク転送 : バルク転送も大量のデータ転送に使用するモードですが、転送のリアルタイム性が保証されない代わりにデータのエラーチェックを行う点がアイソクロナス転送と異なります。

• インタラプト転送 : 少量のデータブロックをリアルタイムに転送でき、データのエラーチェックも行われる転送モードです。

• コントロール転送 : デバイスのセットアップ制御に使用する転送モードです。

フルスピード デバイスではこれら4つの転送モードを全てサポートしますが、ロースピード デバイスで使用できるのはインタラプト転送とコントロール転送のみです。

22.10.4 電源

電源は USB バスから供給されます。USB 仕様はバスパワーの要件を定義しています。デバイスはセルフパワーまたはバスパワーで動作します。セルフパワー デバイスは外部電源で動作し、バスパワー デバイスはUSB バスから供給される電力で動作します。

図 22-12: USB の階層

Device

Configuration

Interface

Endpoint

Interface

Endpoint Endpoint Endpoint Endpoint

To other Configurations (if any)

To other Interfaces (if any)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 277

Page 278: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

USB 仕様はバスから供給できる電力の上限を定義しています。各デバイスに対しては、約 5 V で 100 mAの供給を保証します (1 単位負荷 )。さらに電力が必要な場合、 大 500 mA まで要求できます。ただし 1 単位負荷を超える電力は単なるリクエストであり、ホストやハブから必ず要求通りの電流が供給されるとは限りません。このため、消費電流が 1 単位負荷を超えるデバイスは、必要に応じて 1 単位負荷以下のローパワー コンフィグレーションを備えておく必要があります。

USB 仕様はサスペンドモードも定義しています。サスペンド時の消費電流は、1 秒当たり平均 500 A 以内に抑える必要があります。バス アクティビティのない( すなわち SOF トークンのない ) 状態が 3 ms 継続したら、デバイスはサスペンド状態に移行する必要があります。サスペンドモードに移行したら、10 ms 以内にデバイスの消費電流を引き下げる必要があります。同様に、デバイスがウェイクアップ信号を送出する場合、消費電流がサスペンド時の上限を超えてから10 ms以内にウェイクアップ信号を送出する必要があります。

22.10.5 エニュメレーション

デバイスを 初にバスに接続すると、ホストはデバイスを識別するためにエニュメレーション処理を開始します。これは、ホストからデバイスに問い合わせを実行し、消費電力、データレートおよびサイズ、プロトコル等、デバイスに関する情報を取得し、これらの情報をディスクリプタに格納するというものです。代表的なエニュメレーションの流れは以下の通りです。

1. USB リセット : デバイスをリセットする。この状態では、デバイスはコンフィグレーションが行われておらず、アドレスもない ( アドレス 0)。

2. デバイス ディスクリプタの取得 : ホストがデバイス ディスクリプタの一部を要求する。

3. USBリセット : もう一度デバイスをリセットする。

4. アドレスの設定 : ホストがデバイスにアドレスを割り当てる。

5. デバイス ディスクリプタの取得 : ホストがデバイス ディスクリプタを取得し、メーカー、デバイスの種類、コントロール パケットの 大サイズ等の情報を収集する。

6. コンフィグレーション ディスクリプタを取得する。

7. その他のディスクリプタを取得する。

8. コンフィグレーションを実行する。

実際のエニュメレーション処理の内容はホストによって異なります。

22.10.6 ディスクリプタ

標準ディスクリプタには全部で 8種類がありますが、このデバイスで特に重要なのは以下に説明する 5 つです。

22.10.6.1 デバイス ディスクリプタ

デバイス ディスクリプタには、メーカー名、製品番号、シリアル番号、デバイスクラス、コンフィグレーションの数等、全般的な情報を記述します。デバイス ディスクリプタは、各デバイスに 1 つのみです。

22.10.6.2 コンフィグレーション ディスクリプタ

コンフィグレーション ディスクリプタには、デバイスの電力消費量や、このコンフィグレーションでサポートするインターフェイスの数等の情報を記述します。1 つのデバイスで複数のコンフィグレーションを持つ事ができます ( 低消費電力用と通常の消費電力用等 )。

22.10.6.3 インターフェイス ディスクリプタ

インターフェイス ディスクリプタには、このインターフェイスで使用するエンドポイントの数とインターフェイスのクラスを記述します。1 つのコンフィグレーションに複数のインターフェイスを設定する事ができます。

22.10.6.4 エンドポイント ディスクリプタ

エンドポイント ディスクリプタには、転送の種類(22.10.3「転送」) と方向、エンドポイントに関するその他の情報を記述します。1 つのデバイスに多数のエンドポイントを設定できる他、同じエンドポイントを複数のコンフィグレーションで共用する事もできます。

22.10.6.5 ストリング ディスクリプタ

上述のディスクリプタの多くは、1 つまたは複数のストリング ディスクリプタを参照します。ストリングディスクリプタには、それぞれの階層 (22.10.1「階層型フレームワーク」) に関する情報を自然言語の文字列で記述します。しばしば、これらの文字列をホストに表示する事で、ユーザがデバイスを識別できるようにします。ストリング ディスクリプタは Unicode 形式でエンコードされます。また、メモリを節約するためにストリング ディスクリプタを省略する事もできます。

22.10.7 バス速度

USB デバイスは、バスへの接続状態と動作速度をホストに通知する必要があります。そこで、バスアタッチイベントの際に 1.5 k の抵抗をバスに接続する事によってこの通知を行うようにしています。

D+ ラインと D- ラインのどちらを 3.3 V にプルアップするかは、デバイスの動作速度によって異なります。ロースピード デバイスの場合、プルアップ抵抗を D-ラインに接続します。フルスピード デバイスの場合、プルアップ抵抗を D+ ラインに接続します。

22.10.8 クラス仕様とドライバ

USB 仕様にはクラス仕様が含まれており、これらのサポートはオペレーティング システム ベンダによるオプションです。クラスには、オーディオ、マスストレージ、コミュニケーション、ヒューマン インターフェイス (HID) 等があります。ほとんどの場合、USB デバイスと「対話」するにはホスト側にドライバが必要です。カスタム アプリケーションでは、ドライバの新規開発が必要となる事もあります。しかし一般的なデバイスクラスに対しては、一般的なホストシステム向けのドライバが提供されている場合がほとんどです。そのようなドライバがあれば、再利用が可能です。

DS41350D_JP - p. 278 Preliminary 2010 Microchip Technology Inc.

Page 279: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

23.0 リセット

PIC18F/LF1XK50 のリセットには、以下の種類があります。

a) パワーオン リセット (POR) b) 通常動作時の MCLR リセット

c) 電源管理モード時の MCLR リセット d) コード実行中のウォッチドッグ タイマ (WDT)

リセット

e) プログラム可能なブラウンアウト リセット (BOR)f) RESET命令

g) スタックフル リセット

h) スタック アンダーフロー リセット

ここでは、MCLR、POR、BOR によって発生するリセット、および各種スタートアップ タイマの動作について説明します。スタックリセット イベントについては 3.1.2.4「スタックフルおよびスタック アンダーフローによるリセット」で説明しています。WDT リセットについては 24.2「ウォッチドッグ タイマ (WDT)」で説明します。

図 23-1 に、内蔵リセット回路の概略ブロック図を示します。

23.1 RCON レジスタ

デバイスリセット イベントは、RCON レジスタ ( レジスタ 23-1) を使って監視します。このレジスタの下位5 ビットは、発生したリセットイベントの種類を示します。ほとんどの場合、これらのビットはイベントによってのみクリアされ、イベント発生後にアプリケーションでセットする必要があります。これらのフラグビットの状態を全て読み出す事によって、発生したリセットの種類を特定できます。詳細は、23.6「レジスタのリセット状態」で説明します。

RCONレジスタは、割り込みの優先度を設定する IPENビットと、BOR をソフトウェア制御するためのSBOREN ビットという 2 つの制御ビットも格納します。割り込みの優先度については 7.0「割り込み」で説明します。BOR については 23.4「ブラウンアウトリセット (BOR)」で説明します。

図 23-1: 内蔵リセット回路の概略ブロック図

External Reset

MCLR

VDD

OSC1

WDTTime-out

VDD RiseDetect

OST/PWRT

LFINTOSC

POR Pulse

OST(2)

10-bit Ripple Counter

PWRT(2)

11-bit Ripple Counter

Enable OST(1)

Enable PWRT

Note 1: 各種状態におけるタイムアウトは、表 23-2 を参照してください。

2: PWRT および OST カウンタは POR と BOR によってリセットされます (23.3、23.4 参照 )。

Brown-outReset

BOREN

RESETInstruction

StackPointer

Stack Full/Underflow Reset

Sleep( )_IDLE

1024 Cycles

65.5 ms32 s

MCLRE

S

R QChip_Reset

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 279

Page 280: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 23-1: RCON: リセット制御レジスタ

R/W-0 R/W-1 U-0 R/W-1 R-1 R-1 R/W-0 R/W-0

IPEN SBOREN(1) — RI TO PD POR(2) BOR

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7 IPEN: 割り込み優先度イネーブルビット

1 = 割り込みに対する優先度レベルの設定を有効にする0 = 割り込みに対する優先度レベルの設定を無効にする

bit 6 SBOREN: ソフトウェア BOR イネーブルビット (1)

BOREN<1:0> = 01の場合 :1 = BOR を有効にする0 = BOR を無効にする

BOREN<1:0> = 00、10、または 11の場合 :ビットは無効、「0」として読み出し

bit 5 未実装ビット : 「0」として読み出し

bit 4 RI: RESET命令フラグビット

1 = RESET命令は実行されていない ( ファームウェアまたはパワーオン リセットによってセットされる )

0 = RESET命令が実行され、デバイスがリセットされた (コードによってリセットされた後はファームウェアによってセットする必要がある )

bit 3 TO: ウォッチドッグ タイムアウト フラグビット

1 = パワーアップ、CLRWDT命令または SLEEP命令によってセット 0 = WDT タイムアウトが発生した

bit 2 PD: パワーダウン検出フラグビット

1 = パワーアップまたは CLRWDT命令によってセット0 = SLEEP命令の実行によってセット

bit 1 POR: パワーオン リセット ステータス ビット (2)

1 = パワーオン リセットは発生していない0 = パワーオン リセットが発生した ( パワーオン リセットの発生後、ソフトウェアによってセット

する必要がある )

bit 0 BOR: ブラウンアウト リセット ステータス ビット (3)

1 = ブラウンアウト リセットは発生していない ( ファームウェアによってのみセットできる )0 = ブラウンアウト リセットが発生した (POR またはブラウンアウト リセットの発生後、ファーム

ウェアによってセットする必要がある )

Note 1: SBOREN が有効に設定されている場合、リセット状態は「1」になります。それ以外の場合は「0」です。

2: POR 時の実際のリセット値は、デバイスリセットの種類によって決まります。詳細は、このレジスタの注記および 23.6「レジスタのリセット状態」を参照してください。

3: 表 23-3 を参照してください。

DS41350D_JP - p. 280 Preliminary 2010 Microchip Technology Inc.

Page 281: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

23.2 マスタクリア (MCLR)

MCLR ピンは、デバイスを外部からリセットする際に使用します。このピンを low に保持すると、リセットが発生します。このデバイスの MCLR リセット回路はノイズフィルタを備え、微小パルスを無視します。

WDT を含めいずれの内部リセットも、MCLR ピンをlow に駆動する事はありません。

PIC18F/LF1XK50 では、コンフィグレーション ビットMCLRE で MCLR 入力を無効にできます。MCLR を無効にすると、このピンはデジタル入力になります。詳細は、9.1「PORTA、TRISA、LATA レジスタ」を参照してください。

23.3 パワーオン リセット (POR)

VDD が一定のしきい値を超えると、デバイス内部でパワーオン リセット パルスが生成されます。これにより、デバイスは VDD が十分に立ち上がってから起動できます。

POR 回路を使用するには、VDD と MCLR ピンの間に抵抗 (1 ~ 10 k) を挟みます。これにより、外付けのRC 部品を使用せずにパワーオン リセット遅延を確保できます。

デバイスがリセット状態を終了して通常動作を開始する際、デバイスの動作パラメータ ( 電圧、周波数、温度等 ) は正常動作の要件を満たす必要があります。これらの条件を満たさない場合、動作条件が満たされるまでデバイスをリセット状態に維持する必要があります。

POR イベントが発生すると、RCON レジスタの PORビットに記録されます。このビットは、POR イベントが発生すると「0」になりますが、他のリセットイベントでは変化しません。また、POR ビットはいかなるハードウェア イベントによっても「1」になる事はありません。POR イベントを繰り返し検出するには、POR 発生後にこのビットをソフトウェアで「1」にセットする必要があります。

図 23-2: 外部パワーオン リセット回路(VDD 電源の立ち上がりが遅い場合 )

Note 1: 外部パワーオン リセット回路が必要になるの

は、VDD 電源の立ち上がりが極端に遅い場合

のみです。VDD 降下時にコンデンサを急速に

放電できるよう、ダイオード D を使用します。

2: R の電圧降下がデバイスの電気的仕様に違反

しないよう、R < 40 kとする事を推奨します。

3: R1 1 kとすると、静電気放電 (ESD) や電気

的オーバーストレス(EOS)によってMCLR/VPP

ピンの絶縁破壊が発生した場合に、外付けコン

デンサ C から MCLR に流れこむ電流を制限で

きます。

C

R1RD

VDD

MCLR

VDD

PIC® MCU

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 281

Page 282: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

23.4 ブラウンアウト リセット (BOR)

PIC18F/LF1XK50 の BOR 回路では、様々な設定や省電力オプションを利用できます。BOR は、コンフィグレーション レジスタ CONFIG2L の BORV<1:0> および BOREN<1:0> ビットで制御します。BOR の設定は全部で 4 通りあります ( 表 23-1 参照 )。

BORのしきい値電圧はBORV<1:0>ビットで設定します。BOR が有効な場合 (BOREN<1:0> が「00」以外の場合 )、VDD が VBOR を下回る状態が TBOR より長く続くとデバイスはリセットされます。VDD が VBOR を下回る時間が TBOR より短い場合、リセットが発生するかどうかは確定しません。VDD が VBOR を上回るまで、デバイスはブラウンアウト リセット状態のままとなります。

パワーアップ タイマが有効な場合、VDD が VBOR を上回った時点からカウントを開始し、TPWRT の間デバイスをリセット状態に保ちます。パワーアップ タイマの動作中に VDD が VBOR を下回ると、デバイスは再びブラウンアウト リセット状態に戻り、パワーアップ タイマは初期化されます。次に VDD が VBOR を上回った時点からパワーアップ タイマによる遅延が再び加算されます。

BOR とパワーアップ タイマ (PWRT) は別々に設定します。BOR リセットを有効にしても、PWRT は自動的には有効になりません。

23.4.1 ソフトウェア制御による BOR

BOREN<1:0> = 01の場合、BOR の有効 / 無効をユーザ ソフトウェアで制御できます。この切り換えは、RCON レジスタの制御ビット SBOREN で行います。SBOREN をセットすると、上述の BOR 機能が有効になります。SBOREN をクリアすると BOR は完全に無効になります。SBOREN ビットはこのモードでのみ有効で、それ以外のモードでは常に「0」として読み出されます。

BOR をソフトウェアで制御できれば、BOR の設定を変更するためにデバイスを再プログラムしなくても環境に合わせてユーザ アプリケーションを柔軟に調整できます。また、BOR 回路の消費電流もなくす事ができるため、ソフトウェアでデバイスの消費電力を調整できる利点もあります。一般に、BOR 回路の消費電流はごくわずかですが、ローパワー アプリケーションでは問題となる場合もあります。

23.4.2 BOR の検出

BOR 有効時、BOR または POR イベントが発生するとBOR ビットは常に「0」にリセットされます。このため、BOR の状態を読み出して BOR イベントが発生したかどうかを判断するのは困難です。POR と BOR の状態を同時に確認する方がより確実です。POR イベント発生直後はPORとBORビットの両方がソフトウェアによって「1」にリセットされます。それに対して、BOR が「0」で POR が「1」の場合、BOR イベントが発生したと判断できます。

23.4.3 スリープモード時の BOR の無効化

BOREN<1:0> = 10 の場合、BOR はハードウェアによって制御され、動作も前述の通りです。デバイスがスリープモードに移行すると BOR は自動的に無効になります。その後、デバイスがスリープモードからその他の動作モードに戻ると、BOR は自動的に有効な状態に戻ります。

こうする事で、(BOR をもっとも必要とする ) コード実行中にブラウンアウト状態からデバイスを保護できます。しかも、スリープモード時に BOR 回路が消費する電流もなくす事ができます。

表 23-1: BOR の設定

Note: BORをソフトウェアで制御する場合でも、BOR リセットのしきい値電圧はコンフィグレーション ビットBORV<1:0>で設定します。ソフトウェアでしきい値を変更する事はできません。

BOR の設定 SBOREN の状態

(RCON<6>)BOR の動作

BOREN1 BOREN0

0 0 利用不可 BOR は無効です。有効にするにはコンフィグレーション ビットの再プログラミングが必要です。

0 1 利用可 BOR の有効 / 無効をソフトウェアで切り換えます。SBOREN ビットで制御します。

1 0 利用不可 BOR をハードウェアで制御し、実行モードとアイドルモードで有効化します。スリープモードで無効化します。

1 1 利用不可 BOR は有効です。無効にするにはコンフィグレーション ビットの再プログラミングが必要です。

DS41350D_JP - p. 282 Preliminary 2010 Microchip Technology Inc.

Page 283: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

23.5 デバイスリセット タイマ

PIC18F/LF1XK50には3種類のタイマを内蔵しており、これらを使い分ける事でパワーオン リセット プロセスを制御します。これらのタイマは、コード実行前にデバイスのクロックを安定させる事を主な目的としています。タイマの種類は、以下の通りです。

• パワーアップ タイマ (PWRT)

• オシレータ スタートアップ タイマ (OST)

• PLL ロック タイムアウト

23.5.1 パワーアップ タイマ (PWRT)

PIC18F/LF1XK50のパワーアップ タイマ (PWRT)は、LFINTOSCをクロック源とする 11ビットのカウンタです。このタイマにより、約 2048 x 32 s = 65.6 msの遅延を確保します。PWRT がカウント中は、デバイスはリセット状態のままとなります。

PWRT による遅延時間は、LFINTOSC のクロックによって変化する他、温度やプロセスばらつきの影響も受けるため、チップごとに異なります。詳細は、27.0「電気的仕様」を参照してください。

PWRT は、コンフィグレーション ビット PWRTEN をクリアすると有効になります。

23.5.2 オシレータ スタートアップ タイマ(OST)

オシレータ スタートアップ タイマ (OST) は、PWRTタイマの遅延時間が終了後、さらにオシレータ (OSC1入力 )1024 サイクル分の遅延を追加します。これにより、水晶またはセラミック振動子が起動して安定するまでの時間を確保します。

OST による遅延が確保されるのは XT、LP、HS、HSPLLモードのいずれかにおいて、パワーオン リセットが発生した場合、または外部オシレータが停止する電源管理モードから復帰した場合のみです。

23.5.3 PLL ロック タイムアウト

PLL モードで PLL を有効にした場合、パワーオン リセット後のタイムアウト シーケンスは他のオシレータ モードとは若干異なります。PLL がメイン オシレータ周波数にロックするのに十分な時間を確保できるよう、専用のタイマを使用して固定の遅延時間を生成します。この PLL ロック タイムアウト (TPLL) は 2 ms(typ.) で、オシレータ スタートアップ タイムアウトの後に追加します。

23.5.4 タイムアウト シーケンス

パワーアップ後のタイムアウト シーケンスは以下の通りです。

1. POR パルスがクリアになった後、PWRT タイムアウトが開始する ( 有効時 )。

2. 続いて、OST が開始する。

タイムアウトの合計時間は、オシレータの設定とPWRT の状態によって異なります。図 23-3、図 23-4、図 23-5、図 23-6、図 23-7 はいずれもパワーアップ タイマを有効にし、デバイスが HS オシレータ モードの時のパワーアップ後のタイムアウト シーケンスを示しています。図 23-3 ~ 23-6 は、XT および LP モード時のタイムアウト シーケンスでもあります。RC モードで PWRT を無効にしたデバイスの場合、パワーアップ後のタイムアウトはゼロです。

タイムアウトは POR パルスを起点に発生するため、MCLRを十分長い時間lowに維持すると、その間に全てのタイムアウト シーケンスが終了し、その後で MCLRをhighにするとただちにプログラム実行が開始します( 図 23-5)。この方法は、テスト時や並列に動作する複数の PIC18F1XK50/PIC18LF1XK50を同期させる場合に便利です。

表 23-2: 各種状態におけるタイムアウト

オシレータ設定

パワーアップ (2) およびブラウンアウト 電源管理モード終了時PWRTEN = 0 PWRTEN = 1

HSPLL 66 ms(1) + 1024 TOSC + 2 ms(2) 1024 TOSC + 2 ms(2) 1024 TOSC + 2 ms(2)

HS、XT、LP 66 ms(1) + 1024 TOSC 1024 TOSC 1024 TOSC

EC、ECIO 66 ms(1) — —

RC、RCIO 66 ms(1) — —

INTIO1、INTIO2 66 ms(1) — —

Note 1: パワーアップ タイマ (PWRT) の遅延時間は 66 ms (65.5 ms) ( 定格 ) です。2: PLL のロックに必要な時間は 2 ms ( 定格 ) です。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 283

Page 284: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 23-3: パワーアップ後のタイムアウト シーケンス(MCLRをVDDに接続、VDD立ち上がり時間 < TPWRT)

図 23-4: パワーアップ後のタイムアウト シーケンス (MCLR を VDD に接続しない ): 例 1

図 23-5: パワーアップ後のタイムアウト シーケンス (MCLR を VDD に接続しない ): 例 2

TPWRT

TOST

VDD

MCLR

INTERNAL POR

PWRT TIME-OUT

OST TIME-OUT

INTERNAL RESET

TPWRT

TOST

VDD

MCLR

INTERNAL POR

PWRT TIME-OUT

OST TIME-OUT

INTERNAL RESET

VDD

MCLR

INTERNAL POR

PWRT TIME-OUT

OST TIME-OUT

INTERNAL RESET

TPWRT

TOST

DS41350D_JP - p. 284 Preliminary 2010 Microchip Technology Inc.

Page 285: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 23-6: 立ち上がり時間が遅い場合 (MCLR を VDD に接続、VDD 立ち上がり時間 > TPWRT)

図 23-7: PLL を有効にした場合の POR 後のタイムアウト シーケンス (MCLR を VDD に接続 )

VDD

MCLR

INTERNAL POR

PWRT TIME-OUT

OST TIME-OUT

INTERNAL RESET

0V

5V

TPWRT

TOST

TPWRT

TOST

VDD

MCLR

INTERNAL POR

PWRT TIME-OUT

OST TIME-OUT

INTERNAL RESET

PLL TIME-OUT

TPLL

Note: TOST = 1024 クロックサイクル

TPLL 2 ms (max.)。PWRT タイマの先頭から 3 段分

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 285

Page 286: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

23.6 レジスタのリセット状態

レジスタの中には、リセットによって値が変化しないものもあります。そのようなレジスタは POR 時の状態が不明であり、その他のリセットによって状態が変化する事もありません。それ以外のレジスタは、発生したリセットの種類に応じた「リセット状態」に戻ります。

WDT ウェイクアップは通常動作の再開と見なされるため、ほとんどのレジスタが影響を受けません。RCONレジスタのステータス ビット RI、TO、PD、POR、BOR がセットされるかクリアされるかは、リセットの発生状況によって異なります ( 表 23-3 参照 )。これらのビットを使用すると、リセットの種類をソフトウェアで判定できます。

表 23-4 に、全ての特殊機能レジスタのリセット状態を示します。この表では、「パワーオン リセット / ブラウンアウト リセット時」、「マスタクリア /WDT リセット時」、「WDT ウェイクアップ時」の 3 種類に分けてリセット状態を示します。

表 23-3: RCON レジスタのステータスビットの意味と初期化状態

リセットの種類プログラム カウンタ

RCON レジスタ STKPTR レジスタ

SBOREN RI TO PD POR BOR STKFUL STKUNF

パワーオン リセット 0000h 1 1 1 1 0 0 0 0

RESET命令 0000h u(2) 0 u u u u u u

ブラウンアウト リセット 0000h u(2) 1 1 1 u 0 u u

電源管理実行モード時の MCLR 0000h u(2) u 1 u u u u u

電源管理アイドル / スリープモード時の MCLR

0000h u(2) u 1 0 u u u u

フルパワーまたは電源管理ランモード時の WDT タイムアウト

0000h u(2) u 0 u u u u u

フルパワー実行時の MCLR 0000h u(2) u u u u u u u

スタックフル リセット(STVREN = 1)

0000h u(2) u u u u u 1 u

スタック アンダーフロー リセット (STVREN = 1)

0000h u(2) u u u u u u 1

スタック アンダーフロー エラー(STVREN = 0 でリセットでない場合 )

0000h u(2) u u u u u u 1

電源管理アイドル / スリープモード時の WDT タイムアウト

PC + 2 u(2) u 0 0 u u u u

割り込みによる電源管理モードの終了時

PC + 2(1) u(2) u u 0 u u u u

凡例 : u = 不変

Note 1: GIEH または GIEL ビットがセットされている状態で割り込みによってウェイクアップした場合、PC には割り込みベクタ (008h または 0018h) が読み込まれます。

2: ソフトウェア BOR が有効な場合 ( コンフィグレーション ビット BOREN<1:0> = 01かつ SBOREN = 1)、リセットの種類が POR の場合のみリセット状態は「1」となり、それ以外のリセットの場合は不変です。ソフトウェア BOR が無効な場合、リセット状態は常に「0」です。

DS41350D_JP - p. 286 Preliminary 2010 Microchip Technology Inc.

Page 287: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 23-4: 全レジスタの初期化状態

レジスタ アドレスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、WDT リセット、RESET命令、

スタックリセット

WDT ウェイクアップ、 割り込みによるウェイク

アップ

TOSU FFFh ---0 0000 ---0 0000 ---0 uuuu(3)

TOSH FFEh 0000 0000 0000 0000 uuuu uuuu(3)

TOSL FFDh 0000 0000 0000 0000 uuuu uuuu(3)

STKPTR FFCh 00-0 0000 uu-0 0000 uu-u uuuu(3)

PCLATU FFBh ---0 0000 ---0 0000 ---u uuuu

PCLATH FFAh 0000 0000 0000 0000 uuuu uuuu

PCL FF9h 0000 0000 0000 0000 PC + 2(2)

TBLPTRU FF8h ---0 0000 ---0 0000 ---u uuuu

TBLPTRH FF7h 0000 0000 0000 0000 uuuu uuuu

TBLPTRL FF6h 0000 0000 0000 0000 uuuu uuuu

TABLAT FF5h 0000 0000 0000 0000 uuuu uuuu

PRODH FF4h xxxx xxxx uuuu uuuu uuuu uuuu

PRODL FF3h xxxx xxxx uuuu uuuu uuuu uuuu

INTCON FF2h 0000 000x 0000 000u uuuu uuuu(1)

INTCON2 FF1h 1111 -1-1 1111 -1-1 uuuu -u-u(1)

INTCON3 FF0h 11-0 0-00 11-0 0-00 uu-u u-uu(1)

INDF0 FEFh N/A N/A N/A

POSTINC0 FEEh N/A N/A N/A

POSTDEC0 FEDh N/A N/A N/A

PREINC0 FECh N/A N/A N/A

PLUSW0 FEBh N/A N/A N/A

FSR0H FEAh ---- 0000 ---- 0000 ---- uuuu

FSR0L FE9h xxxx xxxx uuuu uuuu uuuu uuuu

WREG FE8h xxxx xxxx uuuu uuuu uuuu uuuu

INDF1 FE7h N/A N/A N/A

POSTINC1 FE6h N/A N/A N/A

POSTDEC1 FE5h N/A N/A N/A

PREINC1 FE4h N/A N/A N/A

PLUSW1 FE3h N/A N/A N/A

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による網掛けのセルは、本デバイスにその条件が適用されない事を示します。

Note 1: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( ウェイクアップを実行するため )。

2: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または 0018h) が読み込まれます。

3: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には 新の PC の値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに更新されます。

4: 各条件下でのリセット値は、表 23-3 を参照してください。5: CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタのビットは全て「0」に初期化されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 287

Page 288: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

FSR1H FE2h ---- 0000 ---- 0000 ---- uuuu

FSR1L FE1h xxxx xxxx uuuu uuuu uuuu uuuu

BSR FE0h ---- 0000 ---- 0000 ---- uuuu

INDF2 FDFh N/A N/A N/A

POSTINC2 FDEh N/A N/A N/A

POSTDEC2 FDDh N/A N/A N/A

PREINC2 FDCh N/A N/A N/A

PLUSW2 FDBh N/A N/A N/A

FSR2H FDAh ---- 0000 ---- 0000 ---- uuuu

FSR2L FD9h xxxx xxxx uuuu uuuu uuuu uuuu

STATUS FD8h ---x xxxx ---u uuuu ---u uuuu

TMR0H FD7h 0000 0000 0000 0000 uuuu uuuu

TMR0L FD6h xxxx xxxx uuuu uuuu uuuu uuuu

T0CON FD5h 1111 1111 1111 1111 uuuu uuuu

OSCCON FD3h 0011 qq00 0011 qq00 uuuu uuuu

OSCCON2 FD2h ---- -10x ---- -10x ---- -uuu

WDTCON FD1h ---- ---0 ---- ---0 ---- ---u

RCON(4)FD0h 0q-1 11q0 0q-q qquu uq-u qquu

TMR1H FCFh xxxx xxxx uuuu uuuu uuuu uuuu

TMR1L FCEh xxxx xxxx uuuu uuuu uuuu uuuu

T1CON FCDh 0000 0000 u0uu uuuu uuuu uuuu

TMR2 FCCh 0000 0000 0000 0000 uuuu uuuu

PR2 FCBh 1111 1111 1111 1111 1111 1111

T2CON FCAh -000 0000 -000 0000 -uuu uuuu

SSPBUF FC9h xxxx xxxx uuuu uuuu uuuu uuuu

SSPADD FC8h 0000 0000 0000 0000 uuuu uuuu

SSPSTAT FC7h 0000 0000 0000 0000 uuuu uuuu

SSPCON1 FC6h 0000 0000 0000 0000 uuuu uuuu

SSPCON2 FC5h 0000 0000 0000 0000 uuuu uuuu

表 23-4: 全レジスタの初期化状態 ( 続き )

レジスタ アドレスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、WDT リセット、RESET命令、

スタックリセット

WDT ウェイクアップ、 割り込みによるウェイク

アップ

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による網掛けのセルは、本デバイスにその条件が適用されない事を示します。

Note 1: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( ウェイクアップを実行するため )。

2: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または 0018h) が読み込まれます。

3: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には 新の PC の値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに更新されます。

4: 各条件下でのリセット値は、表 23-3 を参照してください。5: CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタのビットは全て「0」に初期化されます。

DS41350D_JP - p. 288 Preliminary 2010 Microchip Technology Inc.

Page 289: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

ADRESH FC4h xxxx xxxx uuuu uuuu uuuu uuuu

ADRESL FC3h xxxx xxxx uuuu uuuu uuuu uuuu

ADCON0 FC2h --00 0000 --00 0000 --uu uuuu

ADCON1 FC1h ---- 0000 ---- 0000 ---- uuuu

ADCON2 FC0h 0-00 0000 0-00 0000 u-uu uuuu

CCPR1H FBFh xxxx xxxx uuuu uuuu uuuu uuuu

CCPR1L FBEh xxxx xxxx uuuu uuuu uuuu uuuu

CCP1CON FBDh 0000 0000 0000 0000 uuuu uuuu

REFCON2 FBCh ---0 0000 ---0 0000 ---u uuuu

REFCON1 FBBh 000- 00-0 000- 00-0 uuu- uu-u

REFCON0 FBAh 0001 00-- 0001 00-- uuuu uu--

PSTRCON FB9h ---0 0001 ---0 0001 ---u uuuu

BAUDCON FB8h 0100 0-00 0100 0-00 uuuu u-uu

PWM1CON FB7h 0000 0000 0000 0000 uuuu uuuu

ECCP1AS FB6h 0000 0000 0000 0000 uuuu uuuu

TMR3H FB3h xxxx xxxx uuuu uuuu uuuu uuuu

TMR3L FB2h xxxx xxxx uuuu uuuu uuuu uuuu

T3CON FB1h 0000 0000 uuuu uuuu uuuu uuuu

SPBRGH FB0h 0000 0000 0000 0000 uuuu uuuu

SPBRG FAFh 0000 0000 0000 0000 uuuu uuuu

RCREG FAEh 0000 0000 0000 0000 uuuu uuuu

TXREG FADh 0000 0000 0000 0000 uuuu uuuu

TXSTA FACh 0000 0010 0000 0010 uuuu uuuu

RCSTA FABh 0000 000x 0000 000x uuuu uuuu

EEADR FAAh 0000 0000 0000 0000 uuuu uuuu

EEDATA FA8h 0000 0000 0000 0000 uuuu uuuu

EECON2 FA7h 0000 0000 0000 0000 0000 0000

EECON1 FA6h xx-0 x000 uu-0 u000 uu-0 u000

表 23-4: 全レジスタの初期化状態 ( 続き )

レジスタ アドレスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、WDT リセット、RESET命令、

スタックリセット

WDT ウェイクアップ、 割り込みによるウェイク

アップ

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による網掛けのセルは、本デバイスにその条件が適用されない事を示します。

Note 1: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( ウェイクアップを実行するため )。

2: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または 0018h) が読み込まれます。

3: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には 新の PC の値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに更新されます。

4: 各条件下でのリセット値は、表 23-3 を参照してください。5: CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタのビットは全て「0」に初期化されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 289

Page 290: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

IPR2 FA2h 1111 111- 1111 111- uuuu uuu-

PIR2 FA1h 0000 000- 0000 000- uuuu uuu-(1)

PIE2 FA0h 0000 000- 0000 000- uuuu uuu-

IPR1 F9Fh -111 1111 -111 1111 -uuu uuuu

PIR1 F9Eh -000 0000 -000 0000 -uuu uuuu(1)

PIE1 F9Dh -000 0000 -000 0000 -uuu uuuu

OSCTUNE F9Bh 0000 0000 0000 0000 uuuu uuuu

TRISC F95h 1111 1111 1111 1111 uuuu uuuu

TRISB F94h 1111 ---- 1111 ---- uuuu ----

TRISA F93h --11 ---- --11 ---- --uu ----

LATC F8Bh xxxx xxxx uuuu uuuu uuuu uuuu

LATB F8Ah xxxx ---- uuuu ---- uuuu ----

LATA F89h --xx ---- --uu ---- --uu ----

PORTC F82h xxxx xxxx uuuu uuuu uuuu uuuu

PORTB F81h xxxx ---- uuuu ---- uuuu ----

PORTA F80h --xx x-xx --xx x-xx --uu u-uu

ANSELH(5)F7Fh ---- 1111 ---- 1111 ---- uuuu

ANSEL F7Eh 1111 1--- 1111 1--- uuuu u---

IOCB F7Ah 0000 ---- 0000 ---- uuuu ----

IOCA F79h --00 0-00 --00 0-00 --uu u-uu

WPUB F78h 1111 ---- 1111 ---- uuuu ----

WPUA F77h --11 1--- --11 1--- --uu u---

SLRCON F76h ---- -111 ---- -111 ---- -uuu

SSPMSK F6Fh 1111 1111 1111 1111 uuuu uuuu

CM1CON0 F6Dh 0000 0000 0000 0000 uuuu uuuu

CM2CON1 F6Ch 0000 0000 0000 0000 uuuu uuuu

CM2CON0 F6Bh 0000 0000 0000 0000 uuuu uuuu

SRCON1 F69h 0000 0000 0000 0000 uuuu uuuu

SRCON0 F68h 0000 0000 0000 0000 uuuu uuuu

表 23-4: 全レジスタの初期化状態 ( 続き )

レジスタ アドレスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、WDT リセット、RESET命令、

スタックリセット

WDT ウェイクアップ、 割り込みによるウェイク

アップ

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による網掛けのセルは、本デバイスにその条件が適用されない事を示します。

Note 1: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( ウェイクアップを実行するため )。

2: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または 0018h) が読み込まれます。

3: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には 新の PC の値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに更新されます。

4: 各条件下でのリセット値は、表 23-3 を参照してください。5: CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタのビットは全て「0」に初期化されます。

DS41350D_JP - p. 290 Preliminary 2010 Microchip Technology Inc.

Page 291: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

UCON F64h -0x0 000- -0x0 000- -uuu uuu-

USTAT F63h -xxx xxx- -xxx xxx- -uuu uuu-

UIR F62h -000 0000 -000 0000 -uuu uuuu

UCFG F61h 0--0 -000 0--0 -000 u--u -uuu

UIE F60h -000 0000 -000 0000 -uuu uuuu

UEIR F5Fh 0--0 0000 0--0 0000 u--u uuuu

UFRMH F5Eh ---- -xxx ---- -xxx ---- -uuu

UFRML F5Dh xxxx xxxx xxxx xxxx uuuu uuuu

UADDR F5Ch -000 0000 -000 0000 -uuu uuuu

UEIE F5Bh 0--0 0000 0--0 0000 u--u uuuu

UEP7 F5Ah ----0 0000 ----0 0000 ----u uuuu

UEP6 F59h ----0 0000 ----0 0000 ----u uuuu

UEP5 F58h ----0 0000 ----0 0000 ----u uuuu

UEP4 F57h ----0 0000 ----0 0000 ----u uuuu

UEP3 F56h ----0 0000 ----0 0000 ----u uuuu

UEP2 F55h ----0 0000 ----0 0000 ----u uuuu

UEP1 F54h ----0 0000 ----0 0000 ----u uuuu

UEP0 F53h ----0 0000 ----0 0000 ----u uuuu

表 23-4: 全レジスタの初期化状態 ( 続き )

レジスタ アドレスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、WDT リセット、RESET命令、

スタックリセット

WDT ウェイクアップ、 割り込みによるウェイク

アップ

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による網掛けのセルは、本デバイスにその条件が適用されない事を示します。

Note 1: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( ウェイクアップを実行するため )。

2: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または 0018h) が読み込まれます。

3: 割り込みによってウェイクアップし、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には 新の PC の値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに更新されます。

4: 各条件下でのリセット値は、表 23-3 を参照してください。5: CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタのビットは全て「0」に初期化されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 291

Page 292: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 292 Preliminary 2010 Microchip Technology Inc.

Page 293: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

24.0 CPU の特殊機能

PIC18F/LF1XK50 は、外付け部品を省いて 小限のコストで 大限の信頼性を実現するために、以下の機能を備えています。

• オシレータの選択

• リセット :

- パワーオン リセット (POR)

- パワーアップ タイマ (PWRT)

- オシレータ スタートアップ タイマ (OST)

- ブラウンアウト リセット (BOR)

• 割り込み

• ウォッチドッグ タイマ (WDT)

• コード保護機能

• ID ロケーション

• インサーキット シリアル プログラミング ™

オシレータは、アプリケーションの周波数、電力、精度、コストに合わせて柔軟に構成できます。これらのオプションの詳細は、2.0「オシレータ モジュール」で説明しています。

デバイスのリセットと割り込みの詳細は、本データシートの別のセクションで詳しく説明します。

リセット用のパワーアップ タイマとオシレータ スタートアップ タイマに加えて、PIC18F/LF1XK50 はウォッチドッグ タイマを備えています。このタイマはコンフィグレーション ビットで常時有効にできる他、ソフトウェアで有効 / 無効を制御する事もできます。

また、内部 RC オシレータによりフェイルセーフ クロック モニタ (FSCM) と 2 段階起動も実現しています。FSCM は外部クロックをバックグラウンドで監視し、障害発生時に自動的に内部RCオシレータのクロックに切り換える機能です。2 段階起動とは、プライマリ クロック源がスタートアップ遅延中に、内部 RC オシレータを使用する事でほぼ瞬時にコード実行を開始する機能です。

これらの機能は全てコンフィグレーション レジスタのビットで有効 / 無効の切り換え、設定を行います。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 293

Page 294: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

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

コンフィグレーション ビットをプログラムする (「0」として読み出し ) か、プログラムしない (「1」として読み出し ) 事によって、デバイスを様々に設定できます。これらのビットは、プログラム メモリの 300000hから始まるアドレスにマッピングされています。

アドレス 300000h は、ユーザプログラム メモリ空間外です。このアドレスはコンフィグレーション メモリ空間 (300000h ~ 3FFFFFh) に属しており、テーブルの読み書きによってのみアクセスできます。

コンフィグレーション レジスタのプログラミングは、フラッシュメモリのプログラミングと同様の方法で行います。EECON1 レジスタの WR ビットをセットすると、自己タイマによるコンフィグレーション レジスタへの書き込みが開始します。通常動作モードでは、TBLWT 命令で TBLPTR ポインタの参照先をコンフィグレーション レジスタに指定して、コンフィグレーション レジスタへの書き込み用アドレスとデータを設定します。WR ビットをセットすると、コンフィグレーション レジスタへのロング ライトが開始します。コンフィグレーション レジスタへの書き込みは1バイト単位で実行されます。コンフィグレーション セルへの書き込みまたは消去を行うには、TBLWT命令を使用してセルに「1」または「0」を書き込みます。フラッシュ プログラミングの詳細は、4.5「フラッシュ プログラムメモリへの書き込み」を参照してください。

表 24-1: コンフィグレーション ビットとデバイス ID

ファイル名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0既定値 /

未プログラミング

時の値

300000h CONFIG1L — — USBDIV CPUDIV1 CPUDIV0 — — — --00 0---

300001h CONFIG1H IESO FCMEN PCLKEN PLLEN FOSC3 FOSC2 FOSC1 FOSC0 0010 0111

300002h CONFIG2L — — — BORV1 BORV0 BOREN1 BOREN0 PWRTEN ---1 1111

300003h CONFIG2H — — — WDTPS3 WDTPS2 WDTPS1 WDTPS0 WDTEN ---1 1111

300005h CONFIG3H MCLRE — — — HFOFST — — — 1--- 1---

300006h CONFIG4L BKBUG(2) ENHCPU — — BBSIZ LVP — STVREN -0-- 01-1

300008h CONFIG5L — — — — — — CP1 CP0 ---- --11

300009h CONFIG5H CPD CPB — — — — — — 11-- ----

30000Ah CONFIG6L — — — — — — WRT1 WRT0 ---- --11

30000Bh CONFIG6H WRTD WRTB WRTC — — — — — 111- ----

30000Ch CONFIG7L — — — — — — EBTR1 EBTR0 ---- --11

30000Dh CONFIG7H — EBTRB — — — — — — -1-- ----

3FFFFEh DEVID1(1) DEV2 DEV1 DEV0 REV4 REV3 REV2 REV1 REV0 qqqq qqqq(1)

3FFFFFh DEVID2(1) DEV10 DEV9 DEV8 DEV7 DEV6 DEV5 DEV4 DEV3 0000 1100

凡例 : x = 未知、u = 変化なし、– = 未実装、q = 条件による 網掛けの欄は未実装、「0」として読み出し

Note 1: DEVID1 の値は、レジスタ 24-13 を参照してください。DEVID レジスタは読み出し専用で、ユーザは書き込みできません。

2: BKBUG は ICD デバイスでのみ使用します。それ以外の場合、このビットは未実装で「1」として読み出されます。

DS41350D_JP - p. 294 Preliminary 2010 Microchip Technology Inc.

Page 295: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 24-1: CONFIG1L: コンフィグレーション レジスタ 1 LOW U-0 U-0 R/P-0 R/P-0 R/P-0 U-0 U-0 U-0

— — USBDIV CPUDIV1 CPUDIV0 — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット P = プログラム可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 x = ビットは未知

bit 7-6 未実装ビット : 「0」として読み出し

bit 5 USBDIV: USB クロック選択ビットロースピード USB 動作時のクロック源を選択1 = OSC1/OSC2 を 2 分周した USB クロックを供給0 = OSC1/OSC2 オシレータ ブロックから分周なしで USB クロックを直接供給

bit 4-3 CPUDIV<1:0>: CPU システムクロック選択ビット11 = CPU システムクロックを 4 分周する10 = CPU システムクロックを 3 分周する01 = CPU システムクロックを 2 分周する00 = CPU システムクロックを分周しない

bit 2-0 未実装ビット : 「0」として読み出し

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 295

Page 296: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 24-2: CONFIG1H: コンフィグレーション レジスタ 1 HIGH

R/P-0 R/P-0 R/P-1 R/P-0 R/P-0 R/P-1 R/P-1 R/P-1

IESO FCMEN PCLKEN PLLEN FOSC3 FOSC2 FOSC1 FOSC0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット P = プログラム可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 x = ビットは未知

bit 7 IESO: 内部 / 外部オシレータ切り換えビット1 = オシレータ切り換えモードを有効にする0 = オシレータ切り換えモードを無効にする

bit 6 FCMEN: フェイルセーフ クロック モニタ イネーブルビット1 = フェイルセーフ クロック モニタを有効にする0 = フェイルセーフ クロック モニタを無効にする

bit 5 PCLKEN: プライマリ クロック イネーブルビット1 = プライマリ クロックを有効にする0 = プライマリ クロックをソフトウェアで制御する

bit 4 PLLEN: 4 X PLL イネーブルビット1 = オシレータの周波数を 4 逓倍する0 = PLL をソフトウェアで制御する

bit 3-0 FOSC<3:0>: オシレータ選択ビット1111 = 外部 RC オシレータ (OSC2 は CLKOUT 機能 )1110 = 外部 RC オシレータ (OSC2 は CLKOUT 機能 )1101 = EC ( 低電力 )1100 = EC ( 低電力、OSC2 は CLKOUT 機能 )1011 = EC ( 中電力 )1010 = EC ( 中電力、OSC2 は CLKOUT 機能 )1001 = 内部 RC オシレータ (OSC2 は CLKOUT 機能 )1000 = 内部 RC オシレータ0111 = 外部 RC オシレータ0110 = 外部 RC オシレータ (OSC2 は CLKOUT 機能 )0101 = EC ( 高電力 )0100 = EC ( 高電力、OSC2 は CLKOUT 機能 )0011 = 外部 RC オシレータ (OSC2 は CLKOUT 機能 )0010 = HS オシレータ0001 = XT オシレータ0000 = LP オシレータ

DS41350D_JP - p. 296 Preliminary 2010 Microchip Technology Inc.

Page 297: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 24-3: CONFIG2L: コンフィグレーション レジスタ 2 LOW

U-0 U-0 U-0 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1

— — — BORV1(1) BORV0(1) BOREN1(2) BOREN0(2) PWRTEN(2)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット P = プログラム可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 x = ビットは未知

bit 7-5 未実装ビット :「0」として読み出し

bit 4-3 BORV<1:0>: ブラウンアウト リセット電圧ビット (1)

11 = VBOR を 1.9 V ( 定格 ) に設定10 = VBOR を 2.2 V ( 定格 ) に設定01 = VBOR を 2.7 V ( 定格 ) に設定00 = VBOR を 3.0 V ( 定格 ) に設定

bit 2-1 BOREN<1:0>: ブラウンアウト リセット イネーブルビット (2)

11 = ブラウンアウト リセットをハードウェアのみで有効にする (SBOREN は無効 )10 = ブラウンアウト リセットをハードウェアのみで有効にし、スリープモードで無効にする

(SBOREN は無効 ) 01 = ブラウンアウト リセットを有効にし、ソフトウェアで制御する (SBOREN が有効 ) 00 = ブラウンアウト リセットをハードウェアでもソフトウェアでも無効にする

bit 0 PWRTEN: パワーアップ タイマ イネーブルビット (2)

1 = PWRT を無効にする 0 = PWRT を有効にする

Note 1: 仕様は、表 27-5 を参照してください。2: パワーアップ タイマはブラウンアウト リセットから独立しているため、これらの機能は個別に制御でき

ます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 297

Page 298: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 24-4: CONFIG2H: コンフィグレーション レジスタ 2 HIGH

U-0 U-0 U-0 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1

— — — WDTPS3 WDTPS2 WDTPS1 WDTPS0 WDTEN

bit 7 bit 0

凡例 :

R = 読み出し可能ビット P = プログラム可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 x = ビットは未知

bit 7-5 未実装ビット :「0」として読み出し

bit 4-1 WDTPS<3:0>: ウォッチドッグ タイマ ポストスケーラ選択ビット1111 = 1:32,7681110 = 1:16,3841101 = 1:8,1921100 = 1:4,0961011 = 1:2,0481010 = 1:1,0241001 = 1:5121000 = 1:2560111 = 1:1280110 = 1:640101 = 1:320100 = 1:160011 = 1:80010 = 1:40001 = 1:20000 = 1:1

bit 0 WDTEN: ウォッチドッグ タイマ イネーブルビット1 = WDT を常に有効にする。SWDTEN ビットは無効となる0 = WDT を WDTCON レジスタの SWDTEN ビットで制御する

DS41350D_JP - p. 298 Preliminary 2010 Microchip Technology Inc.

Page 299: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 24-5: CONFIG3H: コンフィグレーション レジスタ 3 HIGH

R/P-1 U-0 U-0 U-0 R/P-1 U-0 U-0 U-0

MCLRE — — — HFOFST — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット P = プログラム可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 x = ビットは未知

bit 7 MCLRE: MCLR ピン イネーブルビット 1 = MCLR ピンを有効にし、RA3 入力ピンを無効にする0 = RA3 入力ピンを有効にし、MCLR を無効にする

bit 6-4 未実装ビット :「0」として読み出し

bit 3 HFOFST: HFINTOSC 高速起動ビット1 = オシレータが安定するのを待たずに HFINTOSC が CPU へのクロック供給を開始する0 = HFINTOSC が安定してからシステムクロックを供給する

bit 2-0 未実装ビット :「0」として読み出し

レジスタ 24-6: CONFIG4L: コンフィグレーション レジスタ 4 LOW

R/W-1(1) R/W-0 U-0 U-0 R/P-0 R/P-1 U-0 R/P-1

BKBUG ENHCPU — — BBSIZ LVP — STVREN

bit 7 bit 0

凡例 :

R = 読み出し可能ビット P = プログラム可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 x = ビットは未知

bit 7 BKBUG: バックグラウンド デバッガ イネーブルビット (1)

1 = バックグラウンド デバッガを無効にする 0 = バックグラウンド デバッガを有効にする

bit 6 ENHCPU: 拡張 CPU イネーブルビット1 = 拡張 CPU を有効にする 0 = 拡張 CPU を無効にする

bit 5-4 未実装ビット :「0」として読み出し

bit 3 BBSIZ: ブートブロック サイズ選択ビット1 = PIC18F14K50/PIC18LF14K50 のブートブロック サイズを 2 kW にする

(PIC18F13K50/PIC18LF13K50 は 1 kW)0 = PIC18F14K50/PIC18LF14K50 のブートブロック サイズを 1 kW にする

(PIC18F13K50/PIC18LF13K50 は 512 W)

bit 2 LVP: 単電源 ICSP™ イネーブルビット1 = 単電源 ICSP を有効にする 0 = 単電源 ICSP を無効にする

bit 1 未実装ビット :「0」として読み出し

bit 0 STVREN: スタックフル / アンダーフロー リセット イネーブルビット1 = スタックフル / アンダーフローでリセットする 0 = スタックフル / アンダーフローでリセットしない

Note 1: BKBUG は ICD デバイスでのみ使用します。それ以外の場合、このビットは未実装で「1」として読み出されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 299

Page 300: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 24-7: CONFIG5L: コンフィグレーション レジスタ 5 LOW

U-0 U-0 U-0 U-0 U-0 U-0 R/C-1 R/C-1

— — — — — — CP1 CP0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 C = クリアのみ可能ビット

bit 7-2 未実装ビット :「0」として読み出し

bit 1 CP1: コード保護ビット1 = ブロック 1 のコードを保護しない 0 = ブロック 1 のコードを保護する

bit 0 CP0: コード保護ビット1 = ブロック 0 のコードを保護しない 0 = ブロック 0 のコードを保護する

レジスタ 24-8: CONFIG5H: コンフィグレーション レジスタ 5 HIGH

R/C-1 R/C-1 U-0 U-0 U-0 U-0 U-0 U-0

CPD CPB — — — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 C = クリアのみ可能ビット

bit 7 CPD: データ EEPROM コード保護ビット1 = データ EEPROM のコードを保護しない0 = データ EEPROM のコードを保護する

bit 6 CPB: ブートブロック コード保護ビット1 = ブートブロックのコードを保護しない0 = ブートブロックのコードを保護する

bit 5-0 未実装ビット :「0」として読み出し

DS41350D_JP - p. 300 Preliminary 2010 Microchip Technology Inc.

Page 301: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 24-9: CONFIG6L: コンフィグレーション レジスタ 6 LOW

U-0 U-0 U-0 U-0 U-0 U-0 R/C-1 R/C-1

— — — — — — WRT1 WRT0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 C = クリアのみ可能ビット

bit 7-2 未実装ビット :「0」として読み出し

bit 1 WRT1: 書き込み保護ビット1 = ブロック 1 を書き込み保護しない0 = ブロック 1 を書き込み保護する

bit 0 WRT0: 書き込み保護ビット1 = ブロック 0 を書き込み保護しない0 = ブロック 0 を書き込み保護する

レジスタ 24-10: CONFIG6H: コンフィグレーション レジスタ 6 HIGH

R/C-1 R/C-1 R-1 U-0 U-0 U-0 U-0 U-0

WRTD WRTB WRTC(1) — — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 C = クリアのみ可能ビット

bit 7 WRTD: データ EEPROM 書き込み保護ビット1 = データ EEPROM を書き込み保護しない0 = データ EEPROM を書き込み保護する

bit 6 WRTB: ブートブロック書き込み保護ビット1 = ブートブロックを書き込み保護しない0 = ブートブロックを書き込み保護する

bit 5 WRTC: コンフィグレーション レジスタ書き込み保護ビット (1)

1 = コンフィグレーション レジスタを書き込み保護しない0 = コンフィグレーション レジスタを書き込み保護する

bit 4-0 未実装ビット :「0」として読み出し

Note 1: このビットは、通常の実行モード時には読み出し専用で、プログラムモード時のみ書き込みが可能です。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 301

Page 302: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 24-11: CONFIG7L: コンフィグレーション レジスタ 7 LOW

U-0 U-0 U-0 U-0 U-0 U-0 R/C-1 R/C-1

— — — — — — EBTR1 EBTR0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 C = クリアのみ可能ビット

bit 7-2 未実装ビット :「0」として読み出し

bit 1 EBTR1: テーブル読み出し保護ビット1 = ブロック 1 を他のブロックで実行されるテーブル読み出しから保護しない 0 = ブロック 1 を他のブロックで実行されるテーブル読み出しから保護する

bit 0 EBTR0: テーブル読み出し保護ビット1 = ブロック 0 を他のブロックで実行されるテーブル読み出しから保護しない 0 = ブロック 0 を他のブロックで実行されるテーブル読み出しから保護する

レジスタ 24-12: CONFIG7H: コンフィグレーション レジスタ 7 HIGH

U-0 R/C-1 U-0 U-0 U-0 U-0 U-0 U-0

— EBTRB — — — — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 C = クリアのみ可能ビット

bit 7 未実装ビット :「0」として読み出し

bit 6 EBTRB: ブートブロック テーブル読み出し保護ビット1 = ブートブロックを他のブロックで実行されるテーブル読み出しから保護しない0 = ブートブロックを他のブロックで実行されるテーブル読み出しから保護する

bit 5-0 未実装ビット :「0」として読み出し

DS41350D_JP - p. 302 Preliminary 2010 Microchip Technology Inc.

Page 303: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

レジスタ 24-13: DEVID1: PIC18F1XK50/PIC18LF1XK50 デバイス ID レジスタ 1

R R R R R R R R

DEV2 DEV1 DEV0 REV4 REV3 REV2 REV1 REV0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 C = クリアのみ可能ビット

bit 7-5 DEV<2:0>: デバイス ID ビット010 = PIC18F13K50011 = PIC18F14K50

bit 4-0 REV<4:0>: リビジョン ID ビットデバイスのリビジョンを示す

レジスタ 24-14: DEVID2: PIC18F1XK50/PIC18LF1XK50 デバイス ID レジスタ 2

R R R R R R R R

DEV10 DEV9 DEV8 DEV7 DEV6 DEV5 DEV4 DEV3

bit 7 bit 0

凡例 :

R = 読み出し可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 C = クリアのみ可能ビット

bit 7-0 DEV<10:3>: デバイス ID ビットDEVID1 レジスタの DEV<2:0> ビットと合わせてデバイスの製品番号を表す0010 0000 = PIC18F1XK50/PIC18LF1XK50

Note 1: DEV<10:3>は他のデバイスでも同じ事があります。DEV<10:0>ビット全体で一意のデバイスを表します。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 303

Page 304: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

24.2 ウォッチドッグ タイマ (WDT)

PIC18F/LF1XK50 では、WDT のクロック源にはLFINTOSC を使用します。WDT を有効にするとLFINTOSC も有効になります。WDT の周期は 4 ms (定格)で、安定性はLFINTOSCオシレータと同じです。

WDT の周期 4 ms を 16 ビット ポストスケーラで逓倍します。WDT ポストスケーラの出力は、CONFIG2Hレジスタのビットでマルチプレクサを制御して選択します。出力可能な周期は、4 ms ~ 131.072 s (2.18 min)の範囲です。WDT とポストスケーラがクリアされるのは、SLEEP または CLRWDT 命令を実行した場合、OSCCON レジスタの IRCF ビットを変更した場合、クロック障害が発生した場合です。

図 24-1: WDT のブロック図

Note 1: CLRWDTおよびSLEEP命令を実行した時点で WDT とポストスケーラ値がクリアされます。

2: OSCCONレジスタの IRCFビットの設定を変更すると、WDT とポストスケーラ値がクリアされます。

3: CLRWDT命令を実行すると、ポストスケーラ値がクリアされます。

LFINTOSC Source

WDT

Wake-up

Reset

WDT Counter

Programmable Postscaler1:1 to 1:32,768

Enable WDT

WDTPS<3:0>

SWDTENWDTEN

CLRWDT

4

from Power

Reset

All Device Resets

Sleep

128

Change on IRCF bitsManaged Modes

DS41350D_JP - p. 304 Preliminary 2010 Microchip Technology Inc.

Page 305: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

24.2.1 制御レジスタ

レジスタ 24-15 に、WDTCON レジスタを示します。このレジスタは読み書き可能で、コンフィグレーション ビットで WDT を無効にしている場合に限り、このレジスタの制御ビットを利用して WDT の有効 / 無効をソフトウェアで切り換える事ができます。

表 24-2: ウォッチドッグ タイマ関連レジスタ一覧

24.3 プログラムの検証とコード保護

PIC18 フラッシュ デバイスのコード保護の全体構造は、他の PIC® MCU とは大きく異なります。

ユーザ プログラムメモリは5つのブロックに分かれています。そのうちの 1 つが、0.5 KB または 2 KB ( デバイスにより異なる ) のブートブロックです。残りのメモリは、バイナリ境界で個々のブロックに分割されています。

5 つのブロックには、それぞれコード保護に関する以下の 3 つのビットがあります。

• コード保護ビット (CPn)

• 書き込み保護ビット (WRTn)

• 外部ブロック テーブル読み出しビット (EBTRn)

図 24-2 に、8、16、32 KB の各デバイスのプログラムメモリ構成、各ブロックに対応するコード保護ビットを示します。表 24-3 に、各ビットの実際の位置を示します。

レジスタ 24-15: WDTCON: ウォッチドッグ タイマ制御レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0

— — — — — — — SWDTEN(1)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

-n = POR 時の値 「1」 = ビットをセット 「0」 = ビットをクリア x = ビットは未知

bit 7-1 未実装ビット :「0」として読み出し

bit 0 SWDTEN: WDT ソフトウェア イネーブル / ディセーブルビット (1) 1 = WDT を有効にする0 = WDT を無効にする ( リセット値 )

Note 1: コンフィグレーション ビット WDTEN をセットしている場合、このビットは無効です。

名称 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0リセット値の記載ページ

RCON IPEN SBOREN — RI TO PD POR BOR 280

WDTCON — — — — — — — SWDTEN 288

CONFIG2H WDTPS3 WDTPS2 WDTPS1 WDTPS0 WDTEN 298

凡例 : — = 未実装ビット、「0」として読み出し。網掛けのビットはウォッチドッグ タイマには使用しません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 305

Page 306: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 24-2: PIC18F/LF1XK50 のプログラムメモリとコード保護

デバイス

アドレス( 開始 / 終了 )

14K50 13K50

BBSIZ = 1 BBSIZ = 0 BBSIZ = 1 BBSIZ = 0

0000h01FFh

ブートブロック、2 KW CPB、WRTB、EBTRB

ブートブロック、1 KW CPB、WRTB、EBTRB

ブートブロック、1 KW CPB、WRTB、EBTRB

ブートブロック、0.512 KW CPB、WRTB、

EBTRB

0200h03FFh

ブロック 01.512 KW

CP0、WRT0、EBTR00400h05FFh

ブロック 03 KW

CP0、WRT0、EBTR0

ブロック 01 KW

CP0、WRT0、EBTR00600h07FFh

0800h0FFFh

ブロック 02 KW

CP0、WRT0、EBTR0

ブロック 12 KW

CP1、WRT1、EBTR1

ブロック 12 KW

CP1、WRT1、EBTR1

1000h1FFFh

ブロック 14 KW

CP1、WRT1、EBTR1

ブロック 14 KW

CP1、WRT1、EBTR1

全て「0」として読み出し

全て「0」として読み出し

2000h27FFh

全て「0」として読み出し

全て「0」として読み出し

2800h2FFFh

3000h37FFh

3800h3FFFh

4000h47FFh

4800h4FFFh

5000h57FFh

5800h5FFFh

6000h67FFh

6800h6FFFh

7000h77FFh

7800h7FFFh

8000hFFFFh

Note: テスト メモリマッピングの要件については、テストのセクションを参照してください。

DS41350D_JP - p. 306 Preliminary 2010 Microchip Technology Inc.

Page 307: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 24-3: コード保護関連レジスタ一覧

24.3.1 プログラムメモリのコード保護

プログラムメモリは、テーブル読み出し / テーブル書き込み命令を使用してどのアドレスからでも読み書きが行えます。デバイス ID は、テーブル読み出し命令による読み出しが可能です。コンフィグレーション レジスタは、テーブル読み出し / テーブル書き込み命令を使って読み書きが行えます。

通常の実行モードでは、CPn ビットは意味を持ちません。CPn ビットは、外部からの読み書きを禁止します。コンフィグレーション ビット WRTn を 「0」にすると、ユーザ メモリブロックをテーブル書き込みから保護できます。テーブル読み出しは、EBTRn ビットで制御します。ユーザ メモリブロックの EBTRn ビットを「0」にクリアすると、そのブロック内で実行される TBLRD

命令は許可されます。ブロック外部で実行されるテーブル読み出し命令は禁止され、「0」として読み出されます。図 24-3 ~図 24-5 に、テーブル読み書きの保護について示します。

図 24-3: テーブル書き込み (WRTn) 禁止

ファイル名 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

300008h CONFIG5L — — — — — — CP1 CP0

300009h CONFIG5H CPD CPB — — — — — —

30000Ah CONFIG6L — — — — — — WRT1 WRT0

30000Bh CONFIG6H WRTD WRTB WRTC — — — — —

30000Ch CONFIG7L — — — — — — EBTR1 EBTR0

30000Dh CONFIG7H — EBTRB — — — — — —

凡例 : 網掛けのビットは未実装です。

Note: コード保護ビットは、「1」の状態から「0」への書き込みのみ可能です。「0」の状態のビットに「1」を書き込む事はできません。コード保護ビットが「1」になるのは、チップ全体の消去またはブロック消去を実行した場合のみです。チップ全体の消去とブロック消去はICSPまたは外部プログラマからのみ実行できます。

000000h

0007FFh000800h

001FFFh002000h

003FFFh004000h

005FFFh006000h

007FFFh

WRTB, EBTRB = 11

WRT0, EBTR0 = 01

WRT1, EBTR1 = 11

WRT2, EBTR2 = 11

WRT3, EBTR3 = 11

TBLWT*

TBLPTR = 0008FFh

PC = 001FFEh

TBLWT*PC = 005FFEh

Register Values Program Memory Configuration Bit Settings

結果 : WRTn = 0の場合、ブロック n に対するテーブル書き込みは全て禁止されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 307

Page 308: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 24-4: 外部ブロックからのテーブル読み出し (EBTRn) 禁止

図 24-5: 外部ブロックからのテーブル読み出し (EBTRn) 許可

WRTB, EBTRB = 11

WRT0, EBTR0 = 10

WRT1, EBTR1 = 11

WRT2, EBTR2 = 11

WRT3, EBTR3 = 11

TBLRD*

TBLPTR = 0008FFh

PC = 003FFEh

結果 : EBTRn = 0の場合、ブロック n に対する外部ブロックからのテーブル読み出しは全て禁止されます。TABLAT レジスタは、「0」の値を返します。

Register Values Program Memory Configuration Bit Settings

000000h

0007FFh000800h

001FFFh002000h

003FFFh004000h

005FFFh006000h

007FFFh

WRTB, EBTRB = 11

WRT0, EBTR0 = 10

WRT1, EBTR1 = 11

WRT2, EBTR2 = 11

WRT3, EBTR3 = 11

TBLRD*

TBLPTR = 0008FFh

PC = 001FFEh

Register Values Program Memory Configuration Bit Settings

結果 : EBTRBn = 0でも、ブロック n 内部で実行したテーブル読み出しは許可されます。TABLAT レジスタは、TBLPTR のアドレスのデータ値を返します。

000000h

0007FFh000800h

001FFFh002000h

003FFFh004000h

005FFFh006000h

007FFFh

DS41350D_JP - p. 308 Preliminary 2010 Microchip Technology Inc.

Page 309: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

24.3.2 データ EEPROM のコード保護

データ EEPROM 全体を外部からの読み書きから保護するには、CPD ビットと WRTD ビットを使用します。CPD ビットは、データ EEPROM に対する外部からの読み書きを禁止します。WRTD ビットは、データEEPROM に対する内部および外部からの書き込みを禁止します。保護ビットの設定にかかわらず、通常の動作時にはCPUは常にデータEEPROMを読み出す事ができます。

24.3.3 コンフィグレーション レジスタの保護

コンフィグレーション レジスタは書き込み保護が可能です。コンフィグレーション レジスタの書き込み保護は WRTC ビットで制御します。通常の実行モードでは、WRTC ビットは読み出し専用です。WRTC への書き込みは、ICSP または外部プログラマからのみ可能です。

24.4 ID ロケーション

ユーザがチェックサムやその他のコード識別番号を格納する領域として、8 つのメモリ位置 (200000h ~200007h)が IDロケーションとして確保されています。これらのロケーションは、通常の実行モード時 (TBLRDおよび TBLWT 命令を使用 ) およびプログラム / ベリファイ時に読み書きが可能です。デバイスのコード保護が有効な場合も、ID ロケーションを読み出す事ができます。

24.5 インサーキット シリアル プログラミング

PIC18F/LF1XK50 は、実際のアプリケーション回路に実装した状態でシリアル プログラミングが可能です。ICSP は、クロックとデータの 2 本のライン、および電源、グランド、書き込み電圧の 3 本のラインのみで簡単に利用できます。この機能を利用すると、未プログラムのデバイスを実装したボードを製造し、製品の出荷直前にマイクロコントローラへの書き込みを実行する事ができます。また、ファームウェアの 新バージョンへの更新、カスタマイズも可能です。

24.6 インサーキット デバッガ

DEBUGコンフィグレーション ビット (BKBUG)に「0」を書き込むと、インサーキット デバッガ機能が有効になります。この機能を利用すると、MPLAB® IDE を使用して簡単なデバッグが実行できます。マイクロコントローラでこの機能を有効にすると、一部の汎用リソースが使用できなくなります。表 24-4 に、バックグラウンド デバッガで必要になるリソースを示します。

表 24-4: デバッガで使用するリソース

マイクロコントローラのインサーキット デバッグ機能を利用するには、以下のピンに ICSP 接続を実装する必要があります。

• MCLR/VPP/RA3

• VDD

• VSS

• RA0

• RA1

これらのピンに、マイクロチップ社または他の開発ツールベンダから提供されるインサーキット デバッガ モジュールを接続します。

24.7 単電源 ICSP プログラミング

コンフィグレーション ビット LVP を使用すると、単電源 ICSP プログラミング ( 以前は低電圧 ICSP プログラミング、LVP と呼ばれていたもの ) を有効にできます。単電源 ICSP プログラミングを有効にすると、MCLR/VPP/RA3 ピンに高い電圧を印加しなくてもマイクロコントローラへの書き込みが行えます。ただし、RC3/PGM ピンはプログラミング モードへの切り換え制御に使用するため、汎用 I/O ピンとしては使用できなくなります。

単電源 ICSP プログラミング モードで書き込みを実行中は、MCLR/VPP/RA3 ピンに通常の実行モードと同様に VDD を印加します。プログラミング モードに移行するには、PGM ピンに VDD を印加します。

単電源 ICSP プログラミング モードを使用しない場合、LVP ビットをクリアできます。クリアすると、RC3/PGM がデジタル I/O ピンの RC3 として利用できるようになります。LVP ビットは、標準の高電圧プログラミング (MCLR/VPP/RA3 ピンに VIHH を印加 ) によってのみセットまたはクリアできます。LVP を無効にしたらデバイスへの書き込みは標準の高電圧プログラミングでしか実行できなくなります。

コード保護が有効になっていないメモリは、ブロック消去または行単位の消去を実行した後、所定の VDD で書き込みができます。コード保護を有効にしているメモリを消去するには、ブロック消去を使用する必要があります。

I/O ピン : RA0、RA1

スタック : 2 段

プログラムメモリ : 512 バイト

データメモリ : 10 バイト

Note 1: LVP ビットや PGM ピンの状態に関係なく、MCLR ピンに VIHH を印加すると高電圧のプログラミングをいつでも実行できます。

2: 工場出荷時の未プログラム デバイスおよび消去済みデバイスでは、既定値で単電源 ICSP が有効になっています。

3: 単電源 ICSP プログラミングを有効にすると、RC3 ピンは汎用 I/O ピンとして使用できなくなります。

4: LVP を有効にした場合、PGM ピンを外部で VSS にプルダウンすると通常のプログラム実行モードになります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 309

Page 310: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 310 Preliminary 2010 Microchip Technology Inc.

Page 311: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

25.0 命令セットの概要

PIC18F/LF1XK50 は、75 個の PIC18 コア標準命令セットに加えて、再帰コードやソフトウェア スタックを利用するコード向けに 適化済みの 8 つの新しい拡張命令をサポートします。この拡張命令セットについては、本セクション後半で説明します。

25.1 標準命令セット

PIC18標準命令セットは以前のPIC® MCUの命令から大幅に強化されていますが、これらの PIC® MCU から容易に移行できるよう互換性も維持しています。ほとんどの命令は 1 プログラムメモリ ワード (16 ビット )ですが、2 プログラムメモリ ワードを必要とする命令が 4 つあります。

1 ワード命令は、命令の種類を表す 1 つのオペコードと、命令の動作を詳しく指定する 1 つまたは複数のオペランドから成り、全体で 16 ビットワードです。

この命令セットは非常に高い直交性があり、以下の 4種類があります。

• バイト指向命令

• ビット指向命令

• リテラル命令

• 制御命令

表 25-2 に、PIC18 命令セットをバイト指向命令、ビット指向命令、リテラル命令、制御命令の順に示します。表 25-1には、オペコード フィールドの説明を示します。

バイト指向命令の多くは、以下の 3 つのオペランドを使用します。

1. ファイルレジスタ (「f」と表記 )

2. 結果格納先 (「d」と表記 )

3. アクセス先メモリ (「a」と表記 )

ファイルレジスタ「f」には、命令で使用するファイルレジスタを指定します。結果格納先「d」は、演算の結果を格納する場所を指定します。「d」 = 0 の場合は演算結果を WREG レジスタに格納します。「d」 = 1 の場合は演算結果を「f」で指定したファイルレジスタに格納します。

ビット指向命令は必ず以下の 3 つのオペランドを使用します。

1. ファイルレジスタ (「f」と表記 )

2. ファイルレジスタ内のビット (「b」と表記 )

3. アクセス先メモリ (「a」と表記 )

ビットフィールド「b」は演算の対象となるビットの番号を指定し、ファイルレジスタ「f」はそのビットが存在するファイルの番号を表します。

リテラル命令で使用するオペランドには、以下の種類があります。

• ファイルレジスタに読み込むリテラル値 (「k」と表記 )

• リテラル値を読み込む FSR レジスタ (「f」と表記 )

• オペランド不要 (「—」と表記 )

制御命令で使用するオペランドには、以下の種類があります。

• プログラム メモリのアドレス (「n」と表記 )

• CALLまたは RETURN命令のモード (「s」と表記 )

• テーブル読み書き命令のモード (「m」と表記 )

• オペランド不要 (「—」と表記 )

命令は基本的には 1 ワードですが、2 ワード命令が4 つだけあります。これらの命令は、32 ビットの情報を収めるため 2 ワードです。2 ワード目の上位 4 ビットは「1」です。このため、2 ワード目のみを単独の命令として実行すると、NOPとして実行されます。

1 ワード命令は、基本的には全て 1 命令サイクルで実行されます。ただし、条件付きテストの結果が真の場合または命令実行の結果プログラム カウンタが変化した場合は 2 命令サイクルかかり、2 サイクル目の命令は NOPとして実行されます。

2 ワード命令の実行には 2 命令サイクルが必要です。

1 命令サイクルは、オシレータの 4 周期に相当します。従って、オシレータの周波数が 4 MHz なら、命令実行時間は標準で 1 s です。条件付きテストの結果が真の場合、または命令実行の結果プログラム カウンタが変化した場合の命令実行時間は 2 s です。2 ワードの分岐命令に必要な時間は 3 s です ( 条件付きテストの結果が真の場合 )。

図 25-1 に、命令の全般的な形式を示します。この例では、16 進数を全て「nnh」と表記しています。

表 25-2に、マイクロチップ社のアセンブラ(MPASMTM)で認識できる標準命令セットの一覧を示します。

各命令については、25.1.1「標準命令セット」で詳しく説明します。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 311

Page 312: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 25-1: オペコードのフィールドの説明

フィールド 説明

a RAM アクセスビット

a = 0: アクセス RAM 内の RAM アドレス (BSR レジスタは無視 )a = 1: BSR レジスタで RAM バンクを指定

bbb 8 ビット ファイルレジスタ内のビットアドレス (0 ~ 7)BSR バンク セレクト レジスタです。RAM バンクを選択します。

C、DC、Z、OV、N ALU ステータスビット : C (CARRY)、DC (DIGIT CARRY)、Z (ZERO)、OV (OVERFLOW)、N (NEGATIVE)d 格納先選択ビット

d = 0: 結果を WREG に格納

d = 1: 結果をファイルレジスタ f に格納

dest 格納先 : WREG レジスタまたは指定したレジスタファイルのアドレス

f 8 ビット レジスタファイルのアドレス (00h ~ FFh) または 2 ビットの FSR 指示子 (0h ~ 3h)fs コピー元の 12 ビット レジスタファイルのアドレス (000h ~ FFFh) fd コピー先の 12 ビット レジスタファイルのアドレス (000h ~ FFFh) GIE グローバル割り込みイネーブルビット

k リテラル フィールド、定数データ、ラベル (8/12/20 ビットのいずれか )label ラベル名

mm テーブルの読み書き命令の TBLPTR レジスタのモードです。

テーブルに対する読み書き命令でのみ使用します。

* レジスタ変更なし ( テーブル読み書きの場合の TBLPTR 等 )*+ 命令実行後にレジスタをインクリメントする ( テーブル読み書きの場合の TBLPTR 等 )*- 命令実行後にレジスタをデクリメントする ( テーブル読み書きの場合の TBLPTR 等 )+* 命令実行前にレジスタをインクリメントする ( テーブル読み書きの場合の TBLPTR 等 )n 相対分岐命令の相対アドレス (2 の補数 ) または

CALL/BRANCHおよび RETURN命令の直接アドレス

PC プログラム カウンタ

PCL プログラム カウンタ下位バイト

PCH プログラム カウンタ中位バイト

PCLATH プログラム カウンタ中位バイト用ラッチ

PCLATU プログラム カウンタ 上位バイト用ラッチ

PD パワーダウン ビット

PRODH 乗算命令の結果の上位バイト

PRODL 乗算命令の結果の下位バイト

s 高速コール / リターン モード選択ビット

s = 0: シャドウレジスタへの保存、復元を行わない

s = 1: 特定レジスタの値をシャドウレジスタに保存、復元する ( 高速モード )TBLPTR 21 ビット テーブルポインタ ( プログラムメモリのアドレスを指し示す )TABLAT 8 ビット テーブルラッチ

TO タイムアウト ビット

TOS Top-of-Stack

u 未使用または変化なし

WDT ウォッチドッグ タイマ

WREG ワーキング レジスタ ( アキュムレータ )x ドントケア (「0」または「1」) です。アセンブラは x = 0でコードを生成します。マイクロチップ社の

ソフトウェア ツール全般との互換性のために、この値を推奨します。

zs レジスタファイル ( ソース ) の間接アドレッシングに使用する 7 ビットのオフセット値

zd レジスタファイル ( 格納先 ) の間接アドレッシングに使用する 7 ビットのオフセット値

{ } オプションの引数

[text] インデックス付きアドレス

(text) textの内容

[expr]<n> ポインタ exprが指し示すレジスタの bit n 割り当て先

< > レジスタのビットフィールド

左項は右項に属する

italics ユーザ定義語 (Courier フォント )

DS41350D_JP - p. 312 Preliminary 2010 Microchip Technology Inc.

Page 313: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 25-1: 命令の一般的な形式

Byte-oriented file register operations

15 10 9 8 7 0

d = 0 for result destination to be WREG register

OPCODE d a f (FILE #)

d = 1 for result destination to be file register (f)a = 0 to force Access Bank

Bit-oriented file register operations

15 12 11 9 8 7 0

OPCODE b (BIT #) a f (FILE #)

b = 3-bit position of bit in file register (f)

Literal operations

15 8 7 0

OPCODE k (literal)

k = 8-bit immediate value

Byte to Byte move operations (2-word)

15 12 11 0

OPCODE f (Source FILE #)

CALL, GOTO and Branch operations

15 8 7 0

OPCODE n<7:0> (literal)

n = 20-bit immediate value

a = 1 for BSR to select bankf = 8-bit file register address

a = 0 to force Access Banka = 1 for BSR to select bankf = 8-bit file register address

15 12 11 0

1111 n<19:8> (literal)

15 12 11 0

1111 f (Destination FILE #)

f = 12-bit file register address

Control operations

Example Instruction

ADDWF MYREG, W, B

MOVFF MYREG1, MYREG2

BSF MYREG, bit, B

MOVLW 7Fh

GOTO Label

15 8 7 0

OPCODE n<7:0> (literal)

15 12 11 0

1111 n<19:8> (literal)

CALL MYFUNC

15 11 10 0

OPCODE n<10:0> (literal)

S = Fast bit

BRA MYFUNC

15 8 7 0

OPCODE n<7:0> (literal) BC MYFUNC

S

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 313

Page 314: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 25-2: PIC18FXXXX 命令セット

ニーモニック、

オペランド説明 サイクル

16 ビット命令ワード 影響を受ける

ステータスNotes

MSb LSb

バイト指向命令

ADDWFADDWFCANDWFCLRFCOMFCPFSEQCPFSGTCPFSLTDECFDECFSZDCFSNZINCFINCFSZINFSNZIORWFMOVFMOVFF

MOVWFMULWFNEGFRLCFRLNCFRRCFRRNCFSETFSUBFWB

SUBWFSUBWFB

SWAPFTSTFSZXORWF

f, d, af, d, af, d, af, af, d, af, af, af, af, d, af, d, af, d, af, d, af, d, af, d, af, d, af, d, afs, fd

f, af, af, af, d, af, d, af, d, af, d, af, af, d, a

f, d, af, d, a

f, d, af, af, d, a

Add WREG and fAdd WREG and CARRY bit to fAND WREG with fClear fComplement fCompare f with WREG, skip =Compare f with WREG, skip >Compare f with WREG, skip <Decrement fDecrement f, Skip if 0Decrement f, Skip if Not 0Increment fIncrement f, Skip if 0Increment f, Skip if Not 0Inclusive OR WREG with fMove fMove fs (source) to 1st word

fd (destination) 2nd wordMove WREG to fMultiply WREG with fNegate fRotate Left f through CarryRotate Left f (No Carry)Rotate Right f through CarryRotate Right f (No Carry)Set fSubtract f from WREG with borrow Subtract WREG from fSubtract WREG from f with borrowSwap nibbles in fTest f, skip if 0Exclusive OR WREG with f

111111 (2 or 3)1 (2 or 3)1 (2 or 3)11 (2 or 3)1 (2 or 3)11 (2 or 3)1 (2 or 3)112

111111111

11

11 (2 or 3)1

001000100001011000010110011001100000001001000010001101000001010111001111011000000110001101000011010001100101

01010101

001101100001

01da00da01da101a11da001a010a000a01da11da11da10da11da10da00da00daffffffff111a001a110a01da01da00da00da100a01da

11da10da

10da011a10da

ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

ffffffff

ffffffffffff

ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

ffffffff

ffffffffffff

C, DC, Z, OV, NC, DC, Z, OV, NZ, NZZ, NNoneNoneNoneC, DC, Z, OV, NNoneNoneC, DC, Z, OV, NNoneNoneZ, NZ, NNone

NoneNoneC, DC, Z, OV, NC, Z, NZ, NC, Z, NZ, NNoneC, DC, Z, OV, N

C, DC, Z, OV, NC, DC, Z, OV, N

NoneNoneZ, N

1, 21, 21,221, 2441, 21, 2, 3, 41, 2, 3, 41, 21, 2, 3, 441, 21, 21

1, 2

1, 2

1, 2

1, 2

41, 2

Note 1: PORT レジスタの値を同じ PORT レジスタによって変更する場合 ( 例 : MOVF PORTB, 1, 0)、これらのピンの入力レ

ベルが使用されます。例えば、入力ピンのデータラッチが「1」で、そのピンが外部デバイスによって low に駆動され

ている場合、データは「0」として上書きされます。

2: この命令を TMR0 レジスタに対して実行した場合 ( かつ、「d」の指定が可能な場合に「d」 = 1の時 )、TMR0 にプリス

ケーラが割り当てられているとプリスケーラもクリアされます。

3: プログラム カウンタ (PC) が変更された場合、または条件付きテストの結果が真の場合、命令実行には 2 サイクルが

必要です。2 サイクル目は NOPとして実行されます。

4: 一部の命令は、2 ワード命令です。これらの命令の 2 ワード目は、命令の 1 ワード目によって 2 ワード目の 16 ビット

に埋め込まれた情報を読み出す場合を除き、NOPとして実行されます。これにより、全てのプログラムメモリ アドレ

スで命令の有効性が維持されます。

DS41350D_JP - p. 314 Preliminary 2010 Microchip Technology Inc.

Page 315: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

ビット指向命令

BCFBSFBTFSCBTFSSBTG

f, b, af, b, af, b, af, b, af, d, a

Bit Clear fBit Set fBit Test f, Skip if ClearBit Test f, Skip if SetBit Toggle f

111 (2 or 3)1 (2 or 3)1

10011000101110100111

bbbabbbabbbabbbabbba

ffffffffffffffffffff

ffffffffffffffffffff

NoneNoneNoneNoneNone

1, 21, 23, 43, 41, 2

制御命令

BCBNBNCBNNBNOVBNZBOVBRABZCALL

CLRWDTDAWGOTO

NOPNOPPOPPUSHRCALLRESETRETFIE

RETLWRETURNSLEEP

nnnnnnnnnn, s

——n

————n

s

ks—

Branch if CarryBranch if NegativeBranch if Not CarryBranch if Not NegativeBranch if Not OverflowBranch if Not ZeroBranch if OverflowBranch Unconditionally Branch if ZeroCall subroutine 1st word

2nd wordClear Watchdog TimerDecimal Adjust WREGGo to address 1st word

2nd wordNo OperationNo OperationPop top of return stack (TOS)Push top of return stack (TOS)Relative CallSoftware device ResetReturn from interrupt enable

Return with literal in WREG Return from SubroutineGo into Standby mode

1 (2)1 (2)1 (2)1 (2)1 (2)1 (2)1 (2)21 (2)2

112

1111212

221

1110111011101110111011101110110111101110111100000000111011110000111100000000110100000000

000000000000

00100110001101110101000101000nnn0000110skkkk000000001111kkkk0000xxxx000000001nnn00000000

110000000000

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkkkkkkkk00000000kkkkkkkk0000xxxx00000000nnnn11110001

kkkk00010000

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkkkkkkkk01000111kkkkkkkk0000xxxx01100101nnnn1111000s

kkkk001s0011

NoneNoneNoneNoneNoneNoneNoneNoneNoneNone

TO, PDCNone

NoneNoneNoneNoneNoneAllGIE/GIEH, PEIE/GIELNoneNoneTO, PD

4

表 25-2: PIC18FXXXX 命令セット ( 続き )

ニーモニック、

オペランド説明 サイクル

16 ビット命令ワード 影響を受ける

ステータスNotes

MSb LSb

Note 1: PORT レジスタの値を同じ PORT レジスタによって変更する場合 ( 例 : MOVF PORTB, 1, 0)、これらのピンの入力レ

ベルが使用されます。例えば、入力ピンのデータラッチが「1」で、そのピンが外部デバイスによって low に駆動され

ている場合、データは「0」として上書きされます。

2: この命令を TMR0 レジスタに対して実行した場合 ( かつ、「d」の指定が可能な場合に「d」 = 1の時 )、TMR0 にプリス

ケーラが割り当てられているとプリスケーラもクリアされます。

3: プログラム カウンタ (PC) が変更された場合、または条件付きテストの結果が真の場合、命令実行には 2 サイクルが

必要です。2 サイクル目は NOPとして実行されます。

4: 一部の命令は、2 ワード命令です。これらの命令の 2 ワード目は、命令の 1 ワード目によって 2 ワード目の 16 ビット

に埋め込まれた情報を読み出す場合を除き、NOPとして実行されます。これにより、全てのプログラムメモリ アドレ

スで命令の有効性が維持されます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 315

Page 316: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

リテラル命令

ADDLWANDLWIORLWLFSR

MOVLBMOVLWMULLWRETLWSUBLWXORLW

kkkf, k

kkkkkk

Add literal and WREGAND literal with WREGInclusive OR literal with WREGMove literal (12-bit) 2nd word to FSR(f) 1st wordMove literal to BSR<3:0>Move literal to WREGMultiply literal with WREGReturn with literal in WREG Subtract WREG from literalExclusive OR literal with WREG

1112

111211

00000000000011101111000000000000000000000000

11111011100111100000000111101101110010001010

kkkkkkkkkkkk00ffkkkk0000kkkkkkkkkkkkkkkkkkkk

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

C, DC, Z, OV, NZ, NZ, NNone

NoneNoneNoneNoneC, DC, Z, OV, NZ, N

データメモリ プログラムメモリ命令

TBLRD*TBLRD*+TBLRD*-TBLRD+*TBLWT*TBLWT*+TBLWT*-TBLWT+*

Table ReadTable Read with post-incrementTable Read with post-decrementTable Read with pre-incrementTable WriteTable Write with post-incrementTable Write with post-decrementTable Write with pre-increment

2

2

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

10001001101010111100110111101111

NoneNoneNoneNoneNoneNoneNoneNone

表 25-2: PIC18FXXXX 命令セット ( 続き )

ニーモニック、

オペランド説明 サイクル

16 ビット命令ワード 影響を受ける

ステータスNotes

MSb LSb

Note 1: PORT レジスタの値を同じ PORT レジスタによって変更する場合 ( 例 : MOVF PORTB, 1, 0)、これらのピンの入力レ

ベルが使用されます。例えば、入力ピンのデータラッチが「1」で、そのピンが外部デバイスによって low に駆動され

ている場合、データは「0」として上書きされます。

2: この命令を TMR0 レジスタに対して実行した場合 ( かつ、「d」の指定が可能な場合に「d」 = 1の時 )、TMR0 にプリス

ケーラが割り当てられているとプリスケーラもクリアされます。

3: プログラム カウンタ (PC) が変更された場合、または条件付きテストの結果が真の場合、命令実行には 2 サイクルが

必要です。2 サイクル目は NOPとして実行されます。

4: 一部の命令は、2 ワード命令です。これらの命令の 2 ワード目は、命令の 1 ワード目によって 2 ワード目の 16 ビット

に埋め込まれた情報を読み出す場合を除き、NOPとして実行されます。これにより、全てのプログラムメモリ アドレ

スで命令の有効性が維持されます。

DS41350D_JP - p. 316 Preliminary 2010 Microchip Technology Inc.

Page 317: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

25.1.1 標準命令セット

ADDLW ADD literal to W

構文 : ADDLW k

オペランド : 0 k 255

動作 : (W) + k W

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0000 1111 kkkk kkkk

説明 : W の内容を 8 ビットのリテラル「k」に加算し、その結果を W レジスタに格

納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に書き

込み

例 : ADDLW 15h

命令実行前

W = 10h命令実行後

W = 25h

ADDWF ADD W to f

構文 : ADDWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) + (f) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0010 01da ffff ffff

説明 : W をレジスタ「f」に加算する。「d」 = 「0」の場合、結果を W レジスタに格納

する。「d」 = 「1」の場合、結果をレジ

スタ「f」に書き戻す ( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ「f」を読み出し

データを

処理

格納先に

書き込み

例 : ADDWF REG, 0, 0

命令実行前

W = 17hREG = 0C2h

命令実行後

W = 0D9hREG = 0C2h

Note: PIC18 の命令は全て、命令ニーモニックの前にオプションの引数としてラベルを指定する事によってシンボリック アドレッシングが可能です。この場合、命令の形式は「{ ラベル } 命令 引数」です。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 317

Page 318: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

ADDWFC ADD W and CARRY bit to f

構文 : ADDWFC f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) + (f) + (C) dest

影響を受ける

ステータス :N,OV, C, DC, Z

エンコード : 0010 00da ffff ffff

説明 : W レジスタにキャリーフラグとデータ

メモリのアドレス「f」の内容を加算す

る。「d」 = 「0」の場合、結果を W レ

ジスタに格納する。「d」 = 「1」の場

合、結果をデータメモリのアドレス

「f」に格納する。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSRを使用して GPR バンクを選択する

( 既定値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実

行される。詳細は、25.2.3「インデッ

クス付きリテラル オフセット モード

でのバイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : ADDWFC REG, 0, 1

命令実行前CARRY bit = 1REG = 02hW = 4Dh

命令実行後CARRY bit = 0REG = 02hW = 50h

ANDLW AND literal with W

構文 : ANDLW k

オペランド : 0 k 255

動作 : (W) .AND. k W

影響を受ける

ステータス :N, Z

エンコード : 0000 1011 kkkk kkkk

説明 : W レジスタの内容と 8 ビットのリテラ

ル「k」を AND 演算する。結果を W レ

ジスタに格納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 : ANDLW 05Fh

命令実行前

W = A3h命令実行後

W = 03h

DS41350D_JP - p. 318 Preliminary 2010 Microchip Technology Inc.

Page 319: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

ANDWF AND W with f

構文 : ANDWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) .AND. (f) dest

影響を受ける

ステータス :N, Z

エンコード : 0001 01da ffff ffff

説明 : W レジスタの内容とレジスタ「f」を

AND 演算する。「d」 = 「0」の場合、結

果を W レジスタに格納する。「d」 = 「1」の場合、結果をレジスタ「f」に書き戻

す ( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : ANDWF REG, 0, 0

命令実行前

W = 17hREG = C2h

命令実行後

W = 02hREG = C2h

BC Branch if Carry

構文 : BC n

オペランド : -128 n 127

動作 : CARRY ビットが「1」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0010 nnnn nnnn

説明 : CARRY ビットが「1」の場合、プログ

ラムが分岐する。

PC には 2 の補数「2n」を加算する。

PC は次の命令をフェッチするためにイ

ンクリメントしているため、新しいア

ドレスは PC + 2 + 2n となる。この場

合、この命令は 2 サイクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BC 5

命令実行前PC = address (HERE)

命令実行後If CARRY = 1;

PC = address (HERE + 12)If CARRY = 0;

PC = address (HERE + 2)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 319

Page 320: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

BCF Bit Clear f

構文 : BCF f, b {,a}

オペランド : 0 f 2550 b 7a [0,1]

動作 : 0 f<b>

影響を受ける

ステータス :なし

エンコード : 1001 bbba ffff ffff

説明 : レジスタ「f」のビット「b」をクリア

する。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : BCF FLAG_REG, 7, 0

命令実行前FLAG_REG = C7h

命令実行後FLAG_REG = 47h

BN Branch if Negative

構文 : BN n

オペランド : -128 n 127

動作 : NEGATIVE ビットが「1」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0110 nnnn nnnn

説明 : NEGATIVE ビットが「1」の場合、

プログラムが分岐する。

PC には 2 の補数「2n」を加算する。

PC は次の命令をフェッチするためにイ

ンクリメントしているため、新しいア

ドレスは PC + 2 + 2n となる。この場

合、この命令は 2 サイクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BN Jump

命令実行前PC = address (HERE)

命令実行後If NEGATIVE = 1;

PC = address (Jump)If NEGATIVE = 0;

PC = address (HERE + 2)

DS41350D_JP - p. 320 Preliminary 2010 Microchip Technology Inc.

Page 321: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

BNC Branch if Not Carry

構文 : BNC n

オペランド : -128 n 127

動作 : CARRY ビットが「0」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0011 nnnn nnnn

説明 : CARRY ビットが「0」の場合、プログ

ラムが分岐する。

PC には 2 の補数「2n」を加算する。

PC は次の命令をフェッチするためにイ

ンクリメントしているため、新しいア

ドレスは PC + 2 + 2n となる。この場

合、この命令は 2 サイクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BNC Jump

命令実行前PC = address (HERE)

命令実行後If CARRY = 0;

PC = address (Jump)If CARRY = 1;

PC = address (HERE + 2)

BNN Branch if Not Negative

構文 : BNN n

オペランド : -128 n 127

動作 : NEGATIVE ビットが「0」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0111 nnnn nnnn

説明 : NEGATIVE ビットが「0」の場合、

プログラムが分岐する。

PC には 2 の補数「2n」を加算する。

PC は次の命令をフェッチするためにイ

ンクリメントしているため、新しいア

ドレスは PC + 2 + 2n となる。この場

合、この命令は 2 サイクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BNN Jump

命令実行前PC = address (HERE)

命令実行後If NEGATIVE = 0;

PC = address (Jump)If NEGATIVE = 1;

PC = address (HERE + 2)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 321

Page 322: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

BNOV Branch if Not Overflow

構文 : BNOV n

オペランド : -128 n 127

動作 : OVERFLOW ビットが「0」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0101 nnnn nnnn

説明 : OVERFLOW ビットが「0」の場合、

プログラムが分岐する。

PC には 2 の補数「2n」を加算する。

PC は次の命令をフェッチするためにイ

ンクリメントしているため、新しいア

ドレスは PC + 2 + 2n となる。この場

合、この命令は 2 サイクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BNOV Jump

命令実行前PC = address (HERE)

命令実行後If OVERFLOW = 0;

PC = address (Jump)If OVERFLOW = 1;

PC = address (HERE + 2)

BNZ Branch if Not Zero

構文 : BNZ n

オペランド : -128 n 127

動作 : ZERO ビットが「0」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0001 nnnn nnnn

説明 : ZERO ビットが「0」の場合、プログ

ラムが分岐する。

PC には 2 の補数「2n」を加算する。

PC は次の命令をフェッチするためにイ

ンクリメントしているため、新しいア

ドレスは PC + 2 + 2n となる。この場

合、この命令は 2 サイクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BNZ Jump

命令実行前PC = address (HERE)

命令実行後If ZERO = 0;

PC = address (Jump)If ZERO = 1;

PC = address (HERE + 2)

DS41350D_JP - p. 322 Preliminary 2010 Microchip Technology Inc.

Page 323: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

BRA Unconditional Branch

構文 : BRA n

オペランド : -1024 n 1023

動作 : (PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1101 0nnn nnnn nnnn

説明 : PC に 2 の補数「2n」を加算する。PC は

次の命令をフェッチするためにインクリ

メントしているため、新しいアドレスは

PC + 2 + 2n となる。この命令は 2 サイク

ル命令である。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

例 : HERE BRA Jump

命令実行前PC = address (HERE)

命令実行後PC = address (Jump)

BSF Bit Set f

構文 : BSF f, b {,a}

オペランド : 0 f 2550 b 7a [0,1]

動作 : 1 f<b>

影響を受ける

ステータス :なし

エンコード : 1000 bbba ffff ffff

説明 : レジスタ「f」のビット「b」をセット

する。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : BSF FLAG_REG, 7, 1

命令実行前FLAG_REG = 0Ah

命令実行後FLAG_REG = 8Ah

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 323

Page 324: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

BTFSC Bit Test File, Skip if Clear

構文 : BTFSC f, b {,a}

オペランド : 0 f 2550 b 7a [0,1]

動作 : (f<b>) = 0の場合にスキップ

影響を受ける

ステータス :なし

エンコード : 1011 bbba ffff ffff

説明 : レジスタ「f」のビット「b」が「0」の場

合、次の命令をスキップする。ビット

「b」が「0」の場合、現在の命令実行中

にフェッチした次の命令を破棄し、代わ

りに NOP命令を実行して 2 サイクル命

令とする。

「a」 = 「0」の場合、アクセスバンクを選

択する。「a」 = 「1」の場合、BSR を使用

して GPR バンクを選択する ( 既定値 )。「a」 = 「0」で拡張命令セットを有効にし

ている場合、f 95 (5Fh) ならこの命令は

常にインデックス付きリテラル オフセッ

ト アドレッシング モードで実行される。

詳細は、25.2.3「インデックス付きリテ

ラル オフセット モードでのバイト / ビッ

ト指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :

Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HEREFALSETRUE

BTFSC::

FLAG, 1, 0

命令実行前PC = address (HERE)

命令実行後If FLAG<1> = 0;

PC = address (TRUE)If FLAG<1> = 1;

PC = address (FALSE)

BTFSS Bit Test File, Skip if Set

構文 : BTFSS f, b {,a}

オペランド : 0 f 2550 b < 7a [0,1]

動作 : (f<b>) = 1の場合にスキップ

影響を受ける

ステータス :なし

エンコード : 1010 bbba ffff ffff

説明 : レジスタ「f」のビット「b」が「1」の

場合、次の命令をスキップする。ビット

「b」が「1」の場合、現在の命令実行中

にフェッチした次の命令を破棄し、代わ

りに NOP命令を実行して 2 サイクル命

令とする。

「a」 = 「0」の場合、アクセスバンクを選

択する。「a」 = 「1」の場合、BSR を使用

して GPR バンクを選択する ( 既定値 )。「a」 = 「0」で拡張命令セットを有効にし

ている場合、f 95 (5Fh) ならこの命令は

常にインデックス付きリテラル オフセッ

ト アドレッシング モードで実行される。

詳細は、25.2.3「インデックス付きリテ

ラル オフセット モードでのバイト / ビッ

ト指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :

Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HEREFALSETRUE

BTFSS::

FLAG, 1, 0

命令実行前PC = address (HERE)

命令実行後If FLAG<1> = 0;

PC = address (FALSE)If FLAG<1> = 1;

PC = address (TRUE)

DS41350D_JP - p. 324 Preliminary 2010 Microchip Technology Inc.

Page 325: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

BTG Bit Toggle f

構文 : BTG f, b {,a}

オペランド : 0 f 2550 b < 7a [0,1]

動作 : (f<b>) f<b>

影響を受ける

ステータス :なし

エンコード : 0111 bbba ffff ffff

説明 : データ メモリのアドレス「f」のビット

「b」を反転する。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : BTG PORTC, 4, 0

命令実行前PORTC = 0111 0101 [75h]

命令実行後PORTC = 0110 0101 [65h]

BOV Branch if Overflow

構文 : BOV n

オペランド : -128 n 127

動作 : OVERFLOW ビットが「1」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0100 nnnn nnnn

説明 : OVERFLOW ビットが「1」の場合、

プログラムが分岐する。

PC には 2 の補数「2n」を加算する。

PC は次の命令をフェッチするためにイ

ンクリメントしているため、新しいア

ドレスは PC + 2 + 2n となる。この場

合、この命令は 2 サイクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BOV Jump

命令実行前PC = address (HERE)

命令実行後If OVERFLOW = 1;

PC = address (Jump)If OVERFLOW = 0;

PC = address (HERE + 2)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 325

Page 326: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

BZ Branch if Zero

構文 : BZ n

オペランド : -128 n 127

動作 : ZERO ビットが「1」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0000 nnnn nnnn

説明 : ZERO ビットが「1」の場合、プログ

ラムが分岐する。

PC には 2 の補数「2n」を加算する。

PC は次の命令をフェッチするためにイ

ンクリメントしているため、新しいア

ドレスは PC + 2 + 2n となる。この場

合、この命令は 2 サイクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BZ Jump

命令実行前PC = address (HERE)

命令実行後If ZERO = 1;

PC = address (Jump)If ZERO = 0;

PC = address (HERE + 2)

CALL Subroutine Call

構文 : CALL k {,s}

オペランド : 0 k 1048575s [0,1]

動作 : (PC) + 4 TOS,k PC<20:1>,s = 1の場合(W) WS,(Status) STATUSS,(BSR) BSRS

影響を受ける

ステータス :なし

エンコード :1 ワード目 (k<7:0>)2 ワード目 (k<19:8>)

11101111

110sk19kkk

k7kkkkkkk

kkkk0kkkk8

説明 : 2MB のメモリ空間全体を対象に、サブ

ルーチンを呼び出す。まず、リターン

アドレス (PC + 4) をリターンスタック

にプッシュする。「s」 = 1の場合、W、

STATUS、BSR レジスタもそれぞれの

シャドウレジスタの WS、STATUSS、BSRS にプッシュする。「s」 = 0の場

合、これらのレジスタは更新されない

( 既定値 )。次に、20 ビットの値「k」を PC<20:1> に読み込む。CALLは 2サイクル命令である。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」<7:0>を読み出し

PC をス

タックに

プッシュ

リテラル

「k」<19:8>を読み出

し、PC に

書き込み

NOP NOP NOP NOP

例 : HERE CALL THERE, 1

命令実行前PC = address (HERE)

命令実行後PC = address (THERE)TOS = address (HERE + 4)WS = WBSRS = BSRSTATUSS = Status

DS41350D_JP - p. 326 Preliminary 2010 Microchip Technology Inc.

Page 327: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

CLRF Clear f

構文 : CLRF f {,a}

オペランド : 0 f 255a [0,1]

動作 : 000h f1 Z

影響を受ける

ステータス :Z

エンコード : 0110 101a ffff ffff

説明 : 指定したレジスタの値をクリアする。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : CLRF FLAG_REG, 1

命令実行前FLAG_REG = 5Ah

命令実行後FLAG_REG = 00h

CLRWDT Clear Watchdog Timer

構文 : CLRWDT

オペランド : なし

動作 : 000h WDT,000h WDT ポストスケーラ ,1 TO,1 PD

影響を受ける

ステータス :TO, PD

エンコード : 0000 0000 0000 0100

説明 : CLRWDT命令はウォッチドッグ タイマ

をリセットする。WDT のポストスケー

ラも同時にリセットする。ステータス レジスタの TO ビットと PD ビットが

セットされる。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード NOP データを

処理

NOP

例 : CLRWDT

命令実行前WDT Counter = ?

命令実行後WDT Counter = 00hWDT Postscaler = 0TO = 1PD = 1

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 327

Page 328: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

COMF Complement f

構文 : COMF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) dest

影響を受ける

ステータス :N, Z

エンコード : 0001 11da ffff ffff

説明 : レジスタ「f」の内容の補数をとる。

「d」 = 「0」の場合、結果を W レジスタ

に格納する。「d」 = 「1」の場合、結果を

レジスタ「f」に書き戻す ( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : COMF REG, 0, 0

命令実行前REG = 13h

命令実行後REG = 13h

W = ECh

CPFSEQ Compare f with W, skip if f = W

構文 : CPFSEQ f {,a}

オペランド : 0 f 255a [0,1]

動作 : (f) – (W), (f) = (W) の場合スキップ ( 符号なし比較 )

影響を受ける

ステータス :なし

エンコード : 0110 001a ffff ffff

説明 : データメモリのアドレス「f」の内容と

W レジスタの内容を、符号なし減算を

実行して比較する。

「f」 = W ならフェッチした命令を破棄

し、代わりに NOPを実行して 2 サイク

ル命令とする。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE CPFSEQ REG, 0NEQUAL :EQUAL :

命令実行前PC Address = HERE

W = ?REG = ?

命令実行後If REG = W;

PC = Address (EQUAL)If REG W;

PC = Address (NEQUAL)

DS41350D_JP - p. 328 Preliminary 2010 Microchip Technology Inc.

Page 329: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

CPFSGT Compare f with W, skip if f > W

構文 : CPFSGT f {,a}

オペランド : 0 f 255a [0,1]

動作 : (f) –W),(f) > (W) の場合スキップ ( 符号なし比較 )

影響を受ける

ステータス :なし

エンコード : 0110 010a ffff ffff

説明 : データメモリのアドレス「f」の内容と

W レジスタの内容を、符号なし減算を

実行して比較する。

「f」の内容の方が WREG の内容より大

きい場合はフェッチした命令を破棄し、

代わりに NOPを実行して 2 サイクル命

令とする。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE CPFSGT REG, 0NGREATER :GREATER :

命令実行前PC = Address (HERE)

W = ?命令実行後

If REG W;PC = Address (GREATER)

If REG W;PC = Address (NGREATER)

CPFSLT Compare f with W, skip if f < W

構文 : CPFSLT f {,a}

オペランド : 0 f 255a [0,1]

動作 : (f) –W),(f) < (W) の場合スキップ ( 符号なし比較 )

影響を受ける

ステータス :なし

エンコード : 0110 000a ffff ffff

説明 : データメモリのアドレス「f」の内容と

W レジスタの内容を、符号なし減算を

実行して比較する。

「f」の内容の方が W レジスタの内容よ

り小さい場合はフェッチした命令を破

棄し、代わりに NOPを実行して 2 サイ

クル命令とする。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :

Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE CPFSLT REG, 1NLESS :LESS :

命令実行前PC = Address (HERE)W = ?

命令実行後If REG < W;PC = Address (LESS)If REG W;PC = Address (NLESS)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 329

Page 330: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

DAW Decimal Adjust W Register

構文 : DAW

オペランド : なし

動作 : [W<3:0> > 9] または [DC = 1] の場合(W<3:0>) + 6 W<3:0>;それ以外の場合 (W<3:0>) W<3:0>;

[W<7:4> + DC > 9] または [C = 1] の場合(W<7:4>) + 6 + DC W<7:4>;それ以外の場合 (W<7:4>) + DC W<7:4>

影響を受ける

ステータス :C

エンコード : 0000 0000 0000 0111

説明 : DAW命令は、2 つの変数 ( いずれも

パック形式の BCD) を加算して W レジ

スタに格納した 8 ビットの値を調整し、

正しいパック形式の BCD の結果を生

成する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード W レジスタ

を読み出し

データを

処理

W に

書き込み

例 1:DAW

命令実行前

W = A5hC = 0DC = 0

命令実行後

W = 05hC = 1DC = 0

例 2:

命令実行前

W = CEhC = 0DC = 0

命令実行後

W = 34hC = 1DC = 0

DECF Decrement f

構文 : DECF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – 1 dest

影響を受ける

ステータス :C, DC, N, OV, Z

エンコード : 0000 01da ffff ffff

説明 : レジスタ「f」の内容をデクリメントす

る。「d」 = 「0」の場合、結果を W レジ

スタに格納する。「d」 = 「1」の場合、結

果をレジスタ「f」に書き戻す ( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : DECF CNT, 1, 0

命令実行前CNT = 01hZ = 0

命令実行後CNT = 00hZ = 1

DS41350D_JP - p. 330 Preliminary 2010 Microchip Technology Inc.

Page 331: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

DECFSZ Decrement f, skip if 0

構文 : DECFSZ f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – 1 dest,結果 = 0の場合スキップ

影響を受ける

ステータス :なし

エンコード : 0010 11da ffff ffff

説明 : レジスタ「f」の内容をデクリメントす

る。「d」 = 「0」の場合、結果を W レジ

スタに格納する。「d」 = 「1」の場合、結

果をレジスタ「f」に書き戻す ( 既定値 )。結果が「0」の場合、フェッチ済みの

次の命令を破棄し、代わりに NOPを実

行して 2 サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選

択する。「a」 = 「1」の場合、BSR を使

用してGPRバンクを選択する(既定値)。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実

行される。詳細は、25.2.3「インデッ

クス付きリテラル オフセット モード

でのバイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

スキップする場合 :

Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE DECFSZ CNT, 1, 1 GOTO LOOPCONTINUE

命令実行前PC = Address (HERE)

命令実行後CNT = CNT - 1If CNT = 0;

PC = Address (CONTINUE)If CNT 0;

PC = Address (HERE + 2)

DCFSNZ Decrement f, skip if not 0

構文 : DCFSNZ f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – 1 dest,結果 0の場合スキップ

影響を受ける

ステータス :なし

エンコード : 0100 11da ffff ffff

説明 : レジスタ「f」の内容をデクリメントする。

「d」 = 「0」の場合、結果を W レジスタ

に格納する。「d」 = 「1」の場合、結果を

レジスタ「f」に書き戻す ( 既定値 )。結果が「0」でなければフェッチ済み

の次の命令を破棄し、代わりに NOPを

実行して 2 サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選

択する。「a」 = 「1」の場合、BSR を使

用してGPRバンクを選択する (既定値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実

行される。詳細は、25.2.3「インデッ

クス付きリテラル オフセット モード

でのバイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が2ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

スキップする場合 :

Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE DCFSNZ TEMP, 1, 0ZERO : NZERO :

命令実行前TEMP = ?

命令実行後TEMP = TEMP – 1,If TEMP = 0;

PC = Address (ZERO)If TEMP 0;

PC = Address (NZERO)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 331

Page 332: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

GOTO Unconditional Branch

構文 : GOTO k

オペランド : 0 k 1048575

動作 : k PC<20:1>

影響を受ける

ステータス :なし

エンコード :1 ワード目 (k<7:0>)2 ワード目 (k<19:8>)

11101111

1111k19kkk

k7kkkkkkk

kkkk0kkkk8

説明 : GOTOは、2 MB の全メモリ空間の任意

のアドレスへの無条件分岐を実行する。

20 ビットの値「k」を PC<20:1> に読

み込む。GOTOは常に 2 サイクル命令。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」<7:0>を読み出し

NOP リテラル

「k」 <19:8>を読み出

し、PC に

書き込み

NOP NOP NOP NOP

例 : GOTO THERE

命令実行後PC = Address (THERE)

INCF Increment f

構文 : INCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) + 1 dest

影響を受ける

ステータス :C, DC, N, OV, Z

エンコード : 0010 10da ffff ffff

説明 : レジスタ「f」の内容をインクリメント

する。「d」 = 「0」の場合、結果を Wレジスタに格納する。「d」 = 「1」の場

合、結果をレジスタ「f」に書き戻す

( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : INCF CNT, 1, 0

命令実行前CNT = FFhZ = 0C = ?DC = ?

命令実行後CNT = 00hZ = 1C = 1DC = 1

DS41350D_JP - p. 332 Preliminary 2010 Microchip Technology Inc.

Page 333: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

INCFSZ Increment f, skip if 0

構文 : INCFSZ f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) + 1 dest,結果 = 0の場合スキップ

影響を受ける

ステータス :なし

エンコード : 0011 11da ffff ffff

説明 : レジスタ「f」の内容をインクリメントす

る。「d」 = 「0」の場合、結果を W レジ

スタに格納する。「d」 = 「1」の場合、結

果をレジスタ「f」に書き戻す ( 既定値 )。結果が「0」の場合、フェッチ済みの次

の命令を破棄し、代わりに NOPを実行

して 2 サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選

択する。「a」 = 「1」の場合、BSR を使

用してGPRバンクを選択する (既定値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

スキップする場合 :

Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE INCFSZ CNT, 1, 0NZERO : ZERO :

命令実行前PC = Address (HERE)

命令実行後CNT = CNT + 1If CNT = 0;PC = Address (ZERO)If CNT 0;PC = Address (NZERO)

INFSNZ Increment f, skip if not 0

構文 : INFSNZ f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) + 1 dest, skip if result 0

影響を受ける

ステータス :なし

エンコード : 0100 10da ffff ffff

説明 : レジスタ「f」の内容をインクリメントす

る。「d」 = 「0」の場合、結果を W レジ

スタに格納する。「d」 = 「1」の場合、結

果をレジスタ「f」に書き戻す ( 既定値 )。結果が「0」でなければフェッチ済みの

次の命令を破棄し、代わりに NOPを実

行して 2 サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選

択する。「a」 = 「1」の場合、BSR を使

用してGPRバンクを選択する (既定値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

スキップする場合 :

Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE INFSNZ REG, 1, 0ZERONZERO

命令実行前PC = Address (HERE)

命令実行後REG = REG + 1If REG 0;PC = Address (NZERO)If REG = 0;PC = Address (ZERO)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 333

Page 334: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

IORLW Inclusive OR literal with W

構文 : IORLW k

オペランド : 0 k 255

動作 : (W) .OR. k W

影響を受ける

ステータス :N, Z

エンコード : 0000 1001 kkkk kkkk

説明 : W レジスタの内容と 8 ビットのリテ

ラル「k」を OR 演算する。結果を Wレジスタに格納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に書き込

例 : IORLW 35h

命令実行前

W = 9Ah命令実行後

W = BFh

IORWF Inclusive OR W with f

構文 : IORWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) .OR. (f) dest

影響を受ける

ステータス :N, Z

エンコード : 0001 00da ffff ffff

説明 : W レジスタとレジスタ「f」の内容を OR演算する。「d」 = 「0」の場合、結果を

W レジスタに格納する。「d」 = 「1」の

場合、結果をレジスタ「f」に書き戻す

( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : IORWF RESULT, 0, 1

命令実行前RESULT = 13h

W = 91h命令実行後

RESULT = 13h

W = 93h

DS41350D_JP - p. 334 Preliminary 2010 Microchip Technology Inc.

Page 335: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

LFSR Load FSR

構文 : LFSR f, k

オペランド : 0 f 20 k 4095

動作 : k FSRf

影響を受ける

ステータス :なし

エンコード : 11101111

11100000

00ffk7kkk

k11kkkkkkk

説明 : 12 ビットのリテラル「k」を、「f」が

指し示す FSR に読み込む。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」の MSBを読み出し

データを

処理

FSRfH にリ

テラル「k」の MSB を

書き込み

デコード リテラル

「k」の LSBを読み出し

データを

処理 FSRfL にリ

テラル「k」を書き込み

例 : LFSR 2, 3ABh

命令実行後FSR2H = 03hFSR2L = ABh

MOVF Move f

構文 : MOVF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : f dest

影響を受ける

ステータス :N, Z

エンコード : 0101 00da ffff ffff

説明 : レジスタ「f」の内容を、「d」のステー

タスに応じて格納先に移動する。「d」 = 「0」の場合、結果を W レジスタに格納

する。「d」 = 「1」の場合、結果をレジ

スタ「f」に書き戻す ( 既定値 )。「f」の

アドレスは、256 バイト バンクの任意

の場所を指定できる。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

W に

書き込み

例 : MOVF REG, 0, 0

命令実行前REG = 22h

W = FFh命令実行後

REG = 22h

W = 22h

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 335

Page 336: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

MOVFF Move f to f

構文 : MOVFF fs,fd

オペランド : 0 fs 40950 fd 4095

動作 : (fs) fd

影響を受ける

ステータス :なし

エンコード :1 ワード目 ( ソース )2 ワード目 ( 格納先 )

11001111

ffffffff

ffffffff

ffffsffffd

説明 : ソースレジスタ「fs」の内容を格納先

レジスタ「fd」に移動する。

ソース「fs」と格納先「fd」のアドレス

はいずれも 4096 バイトのデータ空間

(000h ~ FFFh) の任意の場所を指定で

きる。

ソースと格納先のいずれかを W レジス

タとする事も可能 (特別な場合 )である。

MOVFFは、特にデータメモリのアド

レスを周辺レジスタ ( 送信バッファや

I/O ポート等 ) に移す際に使用する。

MOVFF命令では、PCL、TOSU、

TOSH、TOSL を格納先レジスタには使

用できない。

ワード数 : 2

サイクル数 : 2 (3)

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」 ( ソース ) を読み出し

データを

処理

NOP

デコード NOP

ダミー読み

出しなし

NOP レジスタ「f」 ( 格納先 ) に書き込み

例 : MOVFF REG1, REG2

命令実行前REG1 = 33hREG2 = 11h

命令実行後REG1 = 33hREG2 = 33h

MOVLB Move literal to low nibble in BSR

構文 : MOVLB k

オペランド : 0 k 255

動作 : k BSR

影響を受ける

ステータス :なし

エンコード : 0000 0001 kkkk kkkk

説明 : 8 ビットのリテラル「k」をバンク セレ

クト レジスタ (BSR) に読み込む。

k7:k4 の値にかかわらず、BSR<7:4> の

値は常に「0」である。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

BSR にリテ

ラル「k」を

書き込み

例 : MOVLB 5

命令実行前BSR Register = 02h

命令実行後BSR Register = 05h

DS41350D_JP - p. 336 Preliminary 2010 Microchip Technology Inc.

Page 337: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

MOVLW Move literal to W

構文 : MOVLW k

オペランド : 0 k 255

動作 : k W

影響を受ける

ステータス :なし

エンコード : 0000 1110 kkkk kkkk

説明 : 8 ビットのリテラル「k」を W レジス

タに読み込む。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 : MOVLW 5Ah

命令実行後

W = 5Ah

MOVWF Move W to f

構文 : MOVWF f {,a}

オペランド : 0 f 255a [0,1]

動作 : (W) f

影響を受ける

ステータス :なし

エンコード : 0110 111a ffff ffff

説明 : W レジスタからレジスタ「f」へデー

タを移動する。

「f」のアドレスは、256 バイト バンク

の任意の場所を指定できる。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : MOVWF REG, 0

命令実行前

W = 4FhREG = FFh

命令実行後

W = 4FhREG = 4Fh

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 337

Page 338: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

MULLW Multiply literal with W

構文 : MULLW k

オペランド : 0 k 255

動作 : (W) x k PRODH:PRODL

影響を受ける

ステータス :なし

エンコード : 0000 1101 kkkk kkkk

説明 : W レジスタの内容と 8 ビットのリテ

ラル「k」とで符号なし乗算を実行す

る。16 ビットの結果を

PRODH:PRODL レジスタペアに格納

する。PRODH には上位バイトを格納

する。

W レジスタの内容は変化しない。

ステータスフラグは一切変化しない。

この演算では、オーバーフローもキャ

リーも不可能。結果がゼロになる事は

あっても、検出されない。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

PRODH:PRODLレジスタ

に書き込み

例 : MULLW 0C4h

命令実行前

W = E2hPRODH = ?PRODL = ?

命令実行後

W = E2hPRODH = ADhPRODL = 08h

MULWF Multiply W with f

構文 : MULWF f {,a}

オペランド : 0 f 255a [0,1]

動作 : (W) x (f) PRODH:PRODL

影響を受ける

ステータス :なし

エンコード : 0000 001a ffff ffff

説明 : W レジスタの内容とアドレス「f」の

レジスタファイルとで符号なし乗算

を実行する。16 ビットの結果を

PRODH:PRODL レジスタペアに格納

する。PRODH には上位バイトを格納

する。W と「f」の内容はどちらも変

化しない。

ステータスフラグは一切変化しない。

この演算では、オーバーフローも

キャリーも不可能。結果がゼロにな

る事はあっても、検出されない。

「a」 = 「0」の場合、アクセスバンク

を選択する。「a」 = 「1」の場合、

BSR を使用して GPR バンクを選択

する ( 既定値 )。「a」 = 「0」で拡張命令セットを有効

にしている場合、f 95 (5Fh) ならこ

の命令は常にインデックス付きリテ

ラル オフセット アドレッシング モー

ドで実行される。詳細は、25.2.3「イ

ンデックス付きリテラル オフセット モードでのバイト / ビット指向命令」

参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

PRODH:PRODLレジスタ

に書き込み

例 : MULWF REG, 1

命令実行前

W = C4hREG = B5hPRODH = ?PRODL = ?

命令実行後

W = C4hREG = B5hPRODH = 8AhPRODL = 94h

DS41350D_JP - p. 338 Preliminary 2010 Microchip Technology Inc.

Page 339: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NEGF Negate f

構文 : NEGF f {,a}

オペランド : 0 f 255a [0,1]

動作 : ( f ) + 1 f

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0110 110a ffff ffff

説明 : 2 の補数を使用してアドレス「f」の符

号を反転する。結果をデータメモリの

アドレス「f」に格納する。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSRを使用して GPR バンクを選択する

( 既定値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実

行される。詳細は、25.2.3「インデッ

クス付きリテラル オフセット モード

でのバイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : NEGF REG, 1

命令実行前REG = 0011 1010 [3Ah]

命令実行後REG = 1100 0110 [C6h]

NOP No Operation

構文 : NOP

オペランド : なし

動作 : No operation

影響を受ける

ステータス :なし

エンコード : 00001111

0000xxxx

0000xxxx

0000xxxx

説明 : 何も行わない。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード NOP NOP NOP

例 :

なし

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 339

Page 340: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

POP Pop Top of Return Stack

構文 : POP

オペランド : なし

動作 : (TOS) bit bucket

影響を受ける

ステータス :なし

エンコード : 0000 0000 0000 0110

説明 : TOS の値をリターンスタックから取り

出して破棄する。これにより、その前

にリターンスタックにプッシュした値

が TOS の値になる。

この命令は、ユーザがリターンスタッ

クを適切に管理してソフトウェア スタックを実装するためのものである。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード NOP TOS の値を

ポップ

NOP

例 : POPGOTO NEW

命令実行前TOS = 0031A2hStack (1 level down) = 014332h

命令実行後TOS = 014332hPC = NEW

PUSH Push Top of Return Stack

構文 : PUSH

オペランド : なし

動作 : (PC + 2) TOS

影響を受ける

ステータス :なし

エンコード : 0000 0000 0000 0101

説明 : PC + 2 をリターンスタックの先頭に

プッシュする。それまでの TOS 値はス

タックの次の位置にプッシュされる。

この命令を使用して TOS を変更し、リ

ターンスタックにプッシュする事で、

ソフトウェア スタックを実装できる。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード PC + 2 を

リターン

スタックに

プッシュ

NOP NOP

例 : PUSH

命令実行前TOS = 345AhPC = 0124h

命令実行後PC = 0126hTOS = 0126hStack (1 level down) = 345Ah

DS41350D_JP - p. 340 Preliminary 2010 Microchip Technology Inc.

Page 341: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

RCALL Relative Call

構文 : RCALL n

オペランド : -1024 n 1023

動作 : (PC) + 2 TOS,(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1101 1nnn nnnn nnnn

説明 : 現在のアドレスから 大 1K までの範

囲でサブルーチンへジャンプする。

まず、リターンアドレス (PC + 2) をス

タックにプッシュする。次に、PC に

2 の補数「2n」を足す。PC は次の命令

をフェッチするためにインクリメント

しているため、新しいアドレスは

PC + 2 + 2n となる。この命令は 2 サ

イクル命令である。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

PC を

スタックに

プッシュ

データを

処理

PC に

書き込み

NOP NOP NOP NOP

例 : HERE RCALL Jump

命令実行前PC = Address (HERE)

命令実行後PC = Address (Jump)TOS = Address (HERE + 2)

RESET Reset

構文 : RESET

オペランド : なし

動作 : MCLR リセットの影響を受ける全ての

レジスタとフラグをリセットする。

影響を受ける

ステータス :全て

エンコード : 0000 0000 1111 1111

説明 : この命令は、MCLR リセットを

ソフトウェアで実行する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リセットを

開始

NOP NOP

例 : RESET

命令実行後Registers = Reset ValueFlags* = Reset Value

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 341

Page 342: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

RETFIE Return from Interrupt

構文 : RETFIE {s}

オペランド : s [0,1]

動作 : (TOS) PC,1 GIE/GIEH or PEIE/GIEL,s = 1の場合(WS) W,(STATUSS) Status,(BSRS) BSR,PCLATU, PCLATH は変更されない

影響を受ける

ステータス :GIE/GIEH, PEIE/GIEL.

エンコード : 0000 0000 0001 000s

説明 : 割り込みから戻る。スタックをポップ

して、TOS を PC に読み込む。割り込

みを有効にするには、高優先度または

低優先度のグローバル割り込みイネー

ブルビットをセットする。「s」 = 1の場

合、シャドウレジスタ WS、STATUSS、BSRS の内容をそれぞれ W、STATUS、BSR の各レジスタに読み込む。「s」 = 0の場合、これらのレジスタは更新され

ない ( 既定値 )。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード NOP NOP スタック

から PC を

ポップ

GIEH または

GIEL を

セット

NOP NOP NOP NOP

例 : RETFIE 1

割り込み後PC = TOSW = WSBSR = BSRSStatus = STATUSSGIE/GIEH, PEIE/GIEL = 1

RETLW Return literal to W

構文 : RETLW k

オペランド : 0 k 255

動作 : k W,(TOS) PC,PCLATU, PCLATH は変更されない

影響を受ける

ステータス :なし

エンコード : 0000 1100 kkkk kkkk

説明 : W レジスタに 8 ビットのリテラル

「k」を読み込む。TOS ( リターンアド

レス ) を PC に読み込む。上位アドレ

スラッチ (PCLATH) は変化しない。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

スタック

から PC を

ポップし、

W に

書き込み

NOP NOP NOP NOP

例 :

CALL TABLE ; W contains table; offset value; W now has ; table value

:TABLE

ADDWF PCL ; W = offsetRETLW k0 ; Begin tableRETLW k1 ;

: :

RETLW kn ; End of table

命令実行前

W = 07h命令実行後

W = value of kn

DS41350D_JP - p. 342 Preliminary 2010 Microchip Technology Inc.

Page 343: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

RETURN Return from Subroutine

構文 : RETURN {s}

オペランド : s [0,1]

動作 : (TOS) PC,s = 1の場合(WS) W,(STATUSS) Status,(BSRS) BSR,PCLATU, PCLATH は変更されない

影響を受ける

ステータス :なし

エンコード : 0000 0000 0001 001s

説明 : サブルーチンから戻る。スタックを

ポップし、TOS を PC に読み込む。

「s」 = 1の場合、シャドウレジスタ

WS、STATUSS、BSRS の内容をそれ

ぞれ W、STATUS、BSR の各レジスタ

に読み込む。「s」 = 0の場合、これらの

レジスタは更新されない ( 既定値 )。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード NOP データを

処理

スタック

から PC を

ポップ

NOP NOP NOP NOP

例 : RETURN

命令実行後PC = TOS

RLCF Rotate Left f through Carry

構文 : RLCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<n>) dest<n + 1>,(f<7>) C,(C) dest<0>

影響を受ける

ステータス :C, N, Z

エンコード : 0011 01da ffff ffff

説明 : レジスタ「f」の内容を、CARRY フラ

グを含めて左へ 1 ビットローテートシ

フトする。「d」 = 「0」の場合、結果

を W レジスタに格納する。「d」 = 「1」の場合、結果をレジスタ「f」に

書き戻す ( 既定値 )。「a」 = 「0」の場合、アクセスバンク

を選択する。「a」 = 「1」の場合、

BSR を使用して GPR バンクを選択す

る ( 既定値 )。「a」 = 「0」で拡張命令セットを有効

にしている場合、f 95 (5Fh) ならこ

の命令は常にインデックス付きリテラ

ル オフセット アドレッシング モード

で実行される。詳細は、25.2.3「イン

デックス付きリテラル オフセット モードでのバイト / ビット指向命令」

参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : RLCF REG, 0, 0

命令実行前REG = 1110 0110C = 0

命令実行後REG = 1110 0110

W = 1100 1100C = 1

C register f

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 343

Page 344: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

RLNCF Rotate Left f (No Carry)

構文 : RLNCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<n>) dest<n + 1>,(f<7>) dest<0>

影響を受ける

ステータス :N, Z

エンコード : 0100 01da ffff ffff

説明 : レジスタ「f」の内容を 1 ビット左へ

ローテートシフトする。「d」 = 「0」の

場合、結果を W レジスタに格納する。

「d」 = 「1」の場合、結果をレジスタ

「f」に書き戻す ( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSRを使用して GPR バンクを選択する

( 既定値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの

命令は常にインデックス付きリテラル オフセット アドレッシング モードで

実行される。詳細は、25.2.3「イン

デックス付きリテラル オフセット モードでのバイト / ビット指向命令」

参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : RLNCF REG, 1, 0

命令実行前REG = 1010 1011

命令実行後REG = 0101 0111

register f

RRCF Rotate Right f through Carry

構文 : RRCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<n>) dest<n – 1>,(f<0>) C,(C) dest<7>

影響を受ける

ステータス :C, N, Z

エンコード : 0011 00da ffff ffff

説明 : レジスタ「f」の内容を、CARRY フラ

グを含めて右へ 1 ビットローテートシ

フトする。「d」 = 「0」の場合、結果を

W レジスタに格納する。「d」 = 「1」の

場合、結果をレジスタ「f」に書き戻す

( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : RRCF REG, 0, 0

命令実行前REG = 1110 0110C = 0

命令実行後REG = 1110 0110

W = 0111 0011C = 0

C register f

DS41350D_JP - p. 344 Preliminary 2010 Microchip Technology Inc.

Page 345: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

RRNCF Rotate Right f (No Carry)

構文 : RRNCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<n>) dest<n – 1>,(f<0>) dest<7>

影響を受ける

ステータス :N, Z

エンコード : 0100 00da ffff ffff

説明 : レジスタ「f」の内容を 1 ビット右へ

ローテートシフトする。「d」 = 「0」の

場合、結果を W レジスタに格納する。

「d」 = 「1」の場合、結果をレジスタ

「f」に書き戻す ( 既定値 )。「a」 = 「0」の場合、BSR の値にかかわ

らずアクセスバンクを選択する。「a」 = 「1」の場合、BSR の値でバンクを選択

する ( 既定値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 1: RRNCF REG, 1, 0

命令実行前REG = 1101 0111

命令実行後REG = 1110 1011

例 2: RRNCF REG, 0, 0

命令実行前

W = ?REG = 1101 0111

命令実行後

W = 1110 1011REG = 1101 0111

register f

SETF Set f

構文 : SETF f {,a}

オペランド : 0 f 255a [0,1]

動作 : FFh f

影響を受ける

ステータス :なし

エンコード : 0110 100a ffff ffff

説明 : 指定したレジスタの内容を FFh にセッ

トする。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : SETF REG, 1

命令実行前REG = 5Ah

命令実行後REG = FFh

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 345

Page 346: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

SLEEP Enter Sleep mode

構文 : SLEEP

オペランド : なし

動作 : 00h WDT,0 WDT ポストスケーラ ,1 TO,0 PD

影響を受ける

ステータス :TO, PD

エンコード : 0000 0000 0000 0011

説明 : パワーダウン ステータスビット (PD)をクリアする。タイムアウト ステー

タスビット (TO) をセットする。

ウォッチドッグ タイマをポストス

ケーラを含めてクリアする。

オシレータを停止してプロセッサを

スリープモードにする。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード NOP データを

処理

スリープに

移行する

例 : SLEEP

命令実行前TO = ?PD = ?

命令実行後TO = 1 PD = 0

WDT によってウェイクアップした場合、このビットはクリ

アされる。

SUBFWB Subtract f from W with borrow

構文 : SUBFWB f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) – (f) – (C) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0101 01da ffff ffff

説明 : Wレジスタからレジスタ「f」とCARRYフラグ ( ボロー ) を引く (2 の補数法 )。「d」 = 「0」の場合、結果を W レジスタに格納する。「d」 = 「1」の場合、結果をレジスタ「f」に格納する ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択する。「a」 = 「1」の場合、BSR を使用して GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にしている場合、f 95 (5Fh) ならこの命令は常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細は、25.2.3「インデックス付きリテラル オフセット モードでのバイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ「f」を読み出し

データを処理

格納先に書き込み

例 1: SUBFWB REG, 1, 0

命令実行前REG = 3W = 2C = 1

命令実行後REG = FFW = 2C = 0Z = 0N = 1 ; result is negative

例 2: SUBFWB REG, 0, 0

命令実行前REG = 2W = 5C = 1

命令実行後REG = 2W = 3C = 1Z = 0N = 0 ; result is positive

例 3: SUBFWB REG, 1, 0

命令実行前REG = 1W = 2C = 0

命令実行後REG = 0W = 2C = 1Z = 1 ; result is zeroN = 0

DS41350D_JP - p. 346 Preliminary 2010 Microchip Technology Inc.

Page 347: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

SUBLW Subtract W from literal

構文 : SUBLW k

オペランド : 0 k 255

動作 : k – (W) W

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0000 1000 kkkk kkkk

説明 : 8 ビットのリテラル「k」から W レジ

スタの内容を引く。結果を W レジス

タに格納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 1: SUBLW 02h

命令実行前W = 01hC = ?

命令実行後W = 01hC = 1 ; result is positiveZ = 0N = 0

例 2: SUBLW 02h

命令実行前W = 02hC = ?

命令実行後W = 00hC = 1 ; result is zeroZ = 1N = 0

例 3: SUBLW 02h

命令実行前W = 03hC = ?

命令実行後W = FFh ; (2」s complement)C = 0 ; result is negativeZ = 0N = 1

SUBWF Subtract W from f

構文 : SUBWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – (W) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0101 11da ffff ffff

説明 : レジスタ「f」から W レジスタの内容を引く (2 の補数法 )。「d」 = 「0」の場合、結果を W レジスタに格納する。「d」 = 「1」の場合、結果をレジスタ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択する。「a」 = 「1」の場合、BSR を使用して GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にしている場合、f 95 (5Fh) ならこの命令は常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細は、25.2.3「インデックス付きリテラル オフセット モードでのバイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ「f」を読み出し

データを処理

格納先に書き込み

例 1: SUBWF REG, 1, 0

命令実行前REG = 3W = 2C = ?

命令実行後REG = 1W = 2C = 1 ; result is positiveZ = 0N = 0

例 2: SUBWF REG, 0, 0

命令実行前REG = 2W = 2C = ?

命令実行後REG = 2W = 0C = 1 ; result is zeroZ = 1N = 0

例 3: SUBWF REG, 1, 0

命令実行前REG = 1W = 2C = ?

命令実行後REG = FFh ;(2」s complement)W = 2C = 0 ; result is negativeZ = 0N = 1

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 347

Page 348: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

SUBWFB Subtract W from f with Borrow

構文 : SUBWFB f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – (W) – (C) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0101 10da ffff ffff

説明 : レジスタ「f」から W レジスタとCARRY フラグを引く ( ボロー )(2 の補数法 )。「d」 = 「0」の場合、結果を Wレジスタに格納する。「d」 = 「1」の場合、結果をレジスタ「f」に書き戻す( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択する。「a」 = 「1」の場合、BSR を使用して GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にしている場合、f 95 (5Fh) ならこの命令は常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細は、25.2.3「インデックス付きリテラル オフセット モードでのバイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ「f」を読み出し

データを処理

格納先に書き込み

例 1: SUBWFB REG, 1, 0

命令実行前REG = 19h (0001 1001)W = 0Dh (0000 1101)C = 1

命令実行後REG = 0Ch (0000 1011)W = 0Dh (0000 1101)C = 1Z = 0N = 0 ; result is positive

例 2: SUBWFB REG, 0, 0

命令実行前REG = 1Bh (0001 1011)W = 1Ah (0001 1010)C = 0

命令実行後REG = 1Bh (0001 1011)W = 00hC = 1Z = 1 ; result is zeroN = 0

例 3: SUBWFB REG, 1, 0

命令実行前REG = 03h (0000 0011)W = 0Eh (0000 1101)C = 1

命令実行後REG = F5h (1111 0100)

; [2」s comp]W = 0Eh (0000 1101)C = 0Z = 0N = 1 ; result is negative

SWAPF Swap f

構文 : SWAPF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<3:0>) dest<7:4>,(f<7:4>) dest<3:0>

影響を受ける

ステータス :なし

エンコード : 0011 10da ffff ffff

説明 : レジスタ「f」の上位ニブルと下位ニブ

ルを入れ替える。「d」 = 「0」の場合、

結果を W レジスタに格納する。「d」 = 「1」の場合、結果をレジスタ「f」に格

納する ( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : SWAPF REG, 1, 0

命令実行前REG = 53h

命令実行後REG = 35h

DS41350D_JP - p. 348 Preliminary 2010 Microchip Technology Inc.

Page 349: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

TBLRD Table Read

構文 : TBLRD ( *; *+; *-; +*)

オペランド : なし

動作 : if TBLRD *,(Prog Mem (TBLPTR)) TABLAT;TBLPTR – No Change;if TBLRD *+,(Prog Mem (TBLPTR)) TABLAT;(TBLPTR) + 1 TBLPTR;if TBLRD *-,(Prog Mem (TBLPTR)) TABLAT;(TBLPTR) – 1 TBLPTR;if TBLRD +*,(TBLPTR) + 1 TBLPTR;(Prog Mem (TBLPTR)) TABLAT;

影響を受ける

ステータス :なし

エンコード : 0000 0000 0000 10nn nn=0 * =1 *+ =2 *- =3 +*

説明 : この命令は、プログラムメモリ (P.M.) の内

容の読み出しに使用する。プログラムメモリ

のアドレスは、テーブルポインタ (TBLPTR)と呼ぶポインタを使って指定する。

TBLPTR (21 ビットのポインタ ) は、プロ

グラムメモリをバイト単位で指定する。

TBLPTR では、2MB のアドレス範囲を指

定できる。

TBLPTR[0] = 0: プログラムメモリ ワードの LSB

TBLPTR[0] = 1: プログラムメモリ ワードの MSB

TBLRD命令では、TBLPTR の値を以下のよ

うに変更できる。

• 変更なし

• 読み出し後にインクリメントする

• 読み出し後にデクリメントする

• 読み出し前にインクリメントする

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード NOP NOP NOP

NOP NOP( プログラムメモリを読み出し )

NOP NOP(TABLAT に書き込み )

TBLRD Table Read ( 続き )

例 1: TBLRD *+ ;

命令実行前TABLAT = 55hTBLPTR = 00A356hMEMORY (00A356h) = 34h

命令実行後TABLAT = 34hTBLPTR = 00A357h

例 2: TBLRD +* ;

命令実行前TABLAT = AAhTBLPTR = 01A357hMEMORY (01A357h) = 12hMEMORY (01A358h) = 34h

命令実行後TABLAT = 34hTBLPTR = 01A358h

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 349

Page 350: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

TBLWT Table Write

構文 : TBLWT ( *; *+; *-; +*)

オペランド : なし

動作 : if TBLWT*,(TABLAT) Holding Register;TBLPTR – No Change;if TBLWT*+,(TABLAT) Holding Register;(TBLPTR) + 1 TBLPTR;if TBLWT*-,(TABLAT) Holding Register;(TBLPTR) – 1 TBLPTR;if TBLWT+*,(TBLPTR) + 1 TBLPTR;(TABLAT) Holding Register;

影響を受ける

ステータス :なし

エンコード : 0000 0000 0000 11nnnn=0 * =1 *+ =2 *- =3 +*

説明 : この命令は、TBLPTR の下位 3 ビットを

使用して 8 つの保持レジスタのどれに

TABLAT を書き込むかを判断する。保持

レジスタは、プログラムメモリ (P.M.) の内容を書き込むために使用する ( フラッ

シュメモリへの書き込みの詳細は、4.0「フラッシュ プログラムメモリ」を参照 )。TBLPTR (21 ビットのポインタ ) は、プロ

グラムメモリをバイト単位で指定する。

TBLPTR では、2MB のアドレス範囲を指

定できる。TBLPTR の 下位ビットで、

プログラムメモリのどのアドレスのバイ

トにアクセスするかを選択する。

TBLPTR[0] = 0: プログラムメモリ ワードの LSB

TBLPTR[0] = 1: プログラムメモリ ワードの MSB

TBLWT命令では、TBLPTR の値を以下の

ように変更できる。

• 変更なし

• 書き込み後にインクリメントする

• 書き込み後にデクリメントする

• 書き込み前にインクリメントする

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード NOP NOP NOP

NOP NOP

(TABLATを読み

出し )

NOP NOP

( 保持

レジスタに

書き込み )

TBLWT Table Write ( 続き )

例 1: TBLWT *+;

命令実行前TABLAT = 55hTBLPTR = 00A356hHOLDING REGISTER (00A356h) = FFh

命令実行 ( テーブル書き込み完了 ) 後TABLAT = 55hTBLPTR = 00A357hHOLDING REGISTER (00A356h) = 55h

例 2: TBLWT +*;

命令実行前TABLAT = 34hTBLPTR = 01389AhHOLDING REGISTER (01389Ah) = FFhHOLDING REGISTER (01389Bh) = FFh

命令実行 ( テーブル書き込み完了 ) 後TABLAT = 34hTBLPTR = 01389BhHOLDING REGISTER (01389Ah) = FFhHOLDING REGISTER (01389Bh) = 34h

DS41350D_JP - p. 350 Preliminary 2010 Microchip Technology Inc.

Page 351: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

TSTFSZ Test f, skip if 0

構文 : TSTFSZ f {,a}

オペランド : 0 f 255a [0,1]

動作 : f = 0の場合にスキップ

影響を受ける

ステータス :なし

エンコード : 0110 011a ffff ffff

説明 : 「f」 = 0の場合、現在の命令実行中に

フェッチした次の命令を破棄し、NOP命令を実行して 2 サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSRを使用して GPR バンクを選択する ( 既定値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命

令の場合は 3 サイクルになる。

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :

Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE TSTFSZ CNT, 1NZERO :ZERO :

命令実行前PC = Address (HERE)

命令実行後If CNT = 00h,PC = Address (ZERO)If CNT 00h,PC = Address (NZERO)

XORLW Exclusive OR literal with W

構文 : XORLW k

オペランド : 0 k 255

動作 : (W) .XOR. k W

影響を受ける

ステータス :N, Z

エンコード : 0000 1010 kkkk kkkk

説明 : W レジスタの内容と 8 ビットのリテ

ラル「k」を XOR 演算する。結果を

W レジスタに格納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 : XORLW 0AFh

命令実行前

W = B5h命令実行後

W = 1Ah

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 351

Page 352: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

XORWF Exclusive OR W with f

構文 : XORWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) .XOR. (f) dest

影響を受ける

ステータス :N, Z

エンコード : 0001 10da ffff ffff

説明 : W レジスタとレジスタ「f」の内容を

XOR 演算する。「d」 = 「0」の場合、

結果を W レジスタに格納する。「d」 = 「1」の場合、結果をレジスタ「f」に書

き戻す ( 既定値 )。「a」 = 「0」の場合、アクセスバンクを

選択する。「a」 = 「1」の場合、BSR を

使用して GPR バンクを選択する ( 既定

値 )。「a」 = 「0」で拡張命令セットを有効に

している場合、f 95 (5Fh) ならこの命

令は常にインデックス付きリテラル オフセット アドレッシング モードで実行

される。詳細は、25.2.3「インデック

ス付きリテラル オフセット モードでの

バイト / ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : XORWF REG, 1, 0

命令実行前REG = AFh

W = B5h命令実行後

REG = 1Ah

W = B5h

DS41350D_JP - p. 352 Preliminary 2010 Microchip Technology Inc.

Page 353: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

25.2 拡張命令セット

75 命令からなる PIC18 の標準命令セットに加え、PIC18F/LF1XK50 はコア CPU の機能を拡張する命令をサポートしています。間接アドレッシングとインデックス付きアドレッシングを強化する 8 つの拡張命令と、多くの PIC18 標準命令向けのインデックス付きリテラル オフセット アドレッシング モードです。

これらの拡張命令セットは、既定値では無効です。有効にするには、XINST コンフィグレーション ビットをセットする必要があります。

拡張命令セットの命令は全てリテラル命令に分類され、FSR を操作するか、FSR を使用してインデックス付きアドレッシングを行います。拡張命令のうち、ADDFSRと SUBFSRにはそれぞれ FSR2 を使用する命令も用意しています。これらの命令 (ADDULNK とSUBULNK) では、実行後に自動的にリターンできます。

拡張命令は、主に C 言語等の高級言語で作成した再入可能プログラムコード ( すなわち、再帰コードまたはソフトウェア スタックを使用するコード ) を 適化する目的で実装しています。これらの命令を利用すると、データ構造に対する演算を高級言語でも効率的に実行できます。例えば以下のような場合です。

• サブルーチン開始時と終了時における、ソフトウェア スタック空間の動的な割り当てと割り当て解除

• 関数ポインタの呼び出し

• ソフトウェア スタックポインタの操作

• ソフトウェア スタック内の変数の操作

表 25-3 に、拡張命令セットの命令一覧を示します。各命令の詳細は、25.2.2「拡張命令セット」で説明します。オペコード フィールドの説明は、表 25-1 (312ページ ) に示した PIC18 標準命令と共通です。

25.2.1 拡張命令の構文

拡張命令のほとんどはインデックス付き引数を使用し、ファイル セレクト レジスタの 1 つとオフセットを使用してソースまたは格納先のレジスタを指定します。命令の引数をインデックス付きアドレッシングに使用する場合、引数を角カッコ (“[ ]”) で囲みます。これによって、その引数をインデックスまたはオフセットとして使用する事を明示します。インデックスまたはオフセットの値を角カッコで囲まないと、MPASM™アセンブラでエラーが発生します。

拡張命令セットを有効にした場合、バイト指向命令とビット指向命令のインデックス引数を示すためにも角カッコを使用します。これ以外にもいくつかの構文の変更があります。詳細は、25.2.3.1「拡張命令有効時の PIC18 標準コマンドの構文」を参照してください。

表 25-3: PIC18 拡張命令セット

Note: 拡張命令セットとインデックス付きリテラル オフセット アドレッシング モードは C 言語で作成したアプリケーションの

適化を目的としています。これらの命令をアセンブラで直接使用する事は想定していません。ただし、コンパイラが生成したコードをチェックする際の参考として、各命令の構文を説明しています。

Note: 以前のドキュメントでは、PIC18 とそれ以前の命令セットにおけるオプションの引数を角カッコで表していました。今後は、オプションの引数は中カッコ (“{ }”) で表します。

ニーモニック、オペランド

説明 サイクル16 ビット命令ワード 影響を受ける

ステータスMSb LSb

ADDFSRADDULNKCALLWMOVSF

MOVSS

PUSHL

SUBFSRSUBULNK

f, kk

zs, fd

zs, zd

k

f, kk

Add literal to FSRAdd literal to FSR2 and returnCall subroutine using WREGMove zs (source) to 1st word fd (destination) 2nd wordMove zs (source) to 1st word zd (destination) 2nd wordStore literal at FSR2, decrement FSR2Subtract literal from FSRSubtract literal from FSR2 and return

1222

2

1

12

11101110000011101111111011111110

11101110

1000100000001011ffff1011xxxx1010

10011001

ffkk 11kk 00010zzzffff1zzzxzzzkkkk

ffkk11kk

kkkkkkkk0100zzzzffffzzzzzzzzkkkk

kkkkkkkk

NoneNoneNoneNone

None

None

NoneNone

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 353

Page 354: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

25.2.2 拡張命令セット

ADDFSR Add Literal to FSR

構文 : ADDFSR f, k

オペランド : 0 k 63f [ 0, 1, 2 ]

動作 : FSR(f) + k FSR(f)

影響を受ける

ステータス :なし

エンコード : 1110 1000 ffkk kkkk

説明 : 6 ビットのリテラル「k」を、「f」で

指定した FSR の内容に足す。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

FSR に

書き込み

例 : ADDFSR 2, 23h

命令実行前FSR2 = 03FFh

命令実行後FSR2 = 0422h

ADDULNK Add Literal to FSR2 and Return

構文 : ADDULNK k

オペランド : 0 k 63

動作 : FSR2 + k FSR2,

(TOS) PC

影響を受ける

ステータス :なし

エンコード : 1110 1000 11kk kkkk

説明 : 6 ビットのリテラル「k」を FSR2の内容に足す。次に、PC に TOSを読み込んで RETURNを実行する。

この命令の実行は 2 サイクルで、

2 サイクル目には NOPを実行する。

これは、ADDFSR命令で f = 3 (2 進

数「11」) である特殊な場合と考え

る事ができる。この命令は FSR2 に

対してのみ実行できる。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

FSR に

書き込み

NOP NOP NOP NOP

例 : ADDULNK 23h

命令実行前FSR2 = 03FFhPC = 0100h

命令実行後FSR2 = 0422hPC = (TOS)

Note: PIC18 の命令は全て、命令ニーモニックの前にオプションの引数としてラベルを指定する事によってシンボリック アドレス指定が可能です。この場合、命令の構文は「{ ラベル } 命令 引数」です。

DS41350D_JP - p. 354 Preliminary 2010 Microchip Technology Inc.

Page 355: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

CALLW Subroutine Call Using WREG

構文 : CALLW

オペランド : なし

動作 : (PC + 2) TOS,(W) PCL,(PCLATH) PCH,(PCLATU) PCU

影響を受ける

ステータス :なし

エンコード : 0000 0000 0001 0100

説明 : まず、リターンアドレス (PC + 2) をリ

ターンスタックにプッシュする。次に、

W レジスタの内容を PCL に書き込む

( 既存の値は破棄される )。さらに、

PCLATH と PCLATU の内容を PCH と

PCU にそれぞれラッチする。

2 サイクル目は NOP命令として実行さ

れ、その間に次の命令をフェッチする。

CALLとは異なり、W、STATUS、BSR を更新するオプションはない。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード WREG を

読み出し

PC を

スタックに

プッシュ

NOP

NOP NOP NOP NOP

例 : HERE CALLW

命令実行前PC = address (HERE)PCLATH = 10hPCLATU = 00hW = 06h

命令実行後PC = 001006hTOS = address (HERE + 2)PCLATH = 10hPCLATU = 00hW = 06h

MOVSF Move Indexed to f

構文 : MOVSF [zs], fd

オペランド : 0 zs 1270 fd 4095

動作 : ((FSR2) + zs) fd

影響を受ける

ステータス :なし

エンコード :1 ワード目 ( ソース )2 ワード目 ( 格納先 )

11101111

1011ffff

0zzzffff

zzzzsffffd

説明 : ソースレジスタの内容を格納先レジス

タ「fd」に移動する。ソースレジスタ

の実際のアドレスは、1 ワード目にあ

る 7 ビットのリテラル オフセット

「zs」を FSR2 の値に足して求める。格

納先レジスタのアドレスは、2 ワード

目にある 12 ビットのリテラル「fd」で

指定する。どちらのアドレスも、4096バイトのデータ空間 (000h ~ FFFh) の任意の位置を指定できる。

MOVSF命令では、格納先レジスタに

PCL、TOSU、TOSH、TOSL を使用で

きない。

上記で求めたソースアドレスが間接ア

ドレッシング レジスタを指し示してい

る場合、戻り値は 00h となる。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード ソース

アドレスを

求める

ソース

アドレスを

求める

ソース

レジスタを

読み出す

デコード NOP

ダミー読み

出しなし

NOP レジスタ「f」 ( 格納先 ) に書き込み

例 : MOVSF [05h], REG2

命令実行前FSR2 = 80hContents of 85h = 33hREG2 = 11h

命令実行後FSR2 = 80hContentsof 85h = 33hREG2 = 33h

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 355

Page 356: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

MOVSS Move Indexed to Indexed

構文 : MOVSS [zs], [zd]

オペランド : 0 zs 1270 zd 127

動作 : ((FSR2) + zs) ((FSR2) + zd)

影響を受ける

ステータス :なし

エンコード :1 ワード目 ( ソース )2 ワード目 ( 格納先 )

11101111

1011xxxx

1zzzxzzz

zzzzszzzzd

説明 : ソースレジスタの内容を格納先レジス

タに移動する。ソースレジスタと格納

先レジスタのアドレスは、7 ビットの

リテラル オフセット「zs」または「zd」

を FSR2 の値に加えて求める。どちら

のレジスタも、4096 バイトのデータメ

モリ空間 (000h ~ FFFh) の任意の位置

を指定できる。

MOVSS命令では、格納先レジスタに

PCL、TOSU、TOSH、TOSL を使用で

きない。

上記で求めたソースアドレスが間接ア

ドレッシング レジスタを指し示してい

る場合、戻り値は 00h となる。上記で

求めた格納先アドレスが間接アドレッ

シング レジスタを指し示している場

合、この命令は NOPとして実行される。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード ソース

アドレスを

求める

ソース

アドレスを

求める

ソース

レジスタを

読み出す

デコード 格納先

アドレスを

求める

格納先

アドレスを

求める

格納先

レジスタへ

書き込む

例 : MOVSS [05h], [06h]

命令実行前FSR2 = 80hContentsof 85h = 33hContentsof 86h = 11h

命令実行後FSR2 = 80hContentsof 85h = 33hContentsof 86h = 33h

PUSHL Store Literal at FSR2, Decrement FSR2

構文 : PUSHL k

オペランド : 0k 255

動作 : k (FSR2),FSR2 – 1 FSR2

影響を受ける

ステータス :なし

エンコード : 1111 1010 kkkk kkkk

説明 : 8 ビットのリテラル「k」を FSR2 で指定し

たデータメモリ アドレスに書き込む。この

命令を実行後、FSR2 の値をデクリメント

する。

この命令を使用して、ユーザはソフトウェ

ア スタックに値をプッシュできる。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード 「k」を

読み出す

データを

処理

格納先に

書き込み

例 : PUSHL 08h

命令実行前FSR2H:FSR2L = 01EChMemory (01ECh) = 00h

命令実行後FSR2H:FSR2L = 01EBhMemory (01ECh) = 08h

DS41350D_JP - p. 356 Preliminary 2010 Microchip Technology Inc.

Page 357: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

SUBFSR Subtract Literal from FSR

構文 : SUBFSR f, k

オペランド : 0 k 63

f [ 0, 1, 2 ]

動作 : FSR(f) – k FSRf

影響を受ける

ステータス :なし

エンコード : 1110 1001 ffkk kkkk

説明 : 「f」で指定した FSR の内容から

6 ビットのリテラル「k」を引く。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : SUBFSR 2, 23h

命令実行前FSR2 = 03FFh

命令実行後FSR2 = 03DCh

SUBULNK Subtract Literal from FSR2 and Return

構文 : SUBULNK k

オペランド : 0 k 63

動作 : FSR2 – k FSR2

(TOS) PC

影響を受ける

ステータス :なし

エンコード : 1110 1001 11kk kkkk

説明 : FSR2 の内容から 6 ビットのリテラル「k」を引く。次に、PC に TOS を読み込んで

RETURNを実行する。

この命令の実行は 2 サイクルで、2 サイク

ル目には NOPを実行する。

これは、SUBFSR命令で f = 3 (2 進数

「11」) である特殊な場合と考える事がで

きる。この命令は FSR2 に対してのみ実行

できる。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

NOP NOP NOP NOP

例 : SUBULNK 23h

命令実行前FSR2 = 03FFhPC = 0100h

命令実行後FSR2 = 03DChPC = (TOS)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 357

Page 358: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

25.2.3 インデックス付きリテラル オフセットモードでのバイト / ビット指向命令

拡張命令セットを有効にすると、8 つの新命令だけでなく、インデックス付きリテラル オフセット アドレッシングモードも有効になります (3.5.1「リテラル オフセットを使うインデックス付きアドレッシング」参照 )。このモードでは、PIC18 標準命令セットの多くのコマンドの解釈が大きく変化します。

拡張命令セットが無効の場合、オペコードに埋め込んだアドレスはリテラル メモリ アドレスとして、すなわちアクセスバンクのアドレス (「a」 = 0の場合 ) または BSR で指定した GPR バンクのアドレス (「a」 = 1の場合 ) として扱います。しかし拡張命令セットが有効で「a」 = 0の場合、ファイルレジスタの引数が 5Fh未満だとリテラルアドレスではなく FSR2 のポインタ値からのオフセットと解釈されます。つまり、アクセス RAM ビットを引数として使用する全ての命令 ( コア PIC18 命令の約半分に相当する全てのバイト / ビット指向命令 ) の動作が、拡張命令セットを有効にすると変わってしまいます。

FSR2 の内容が 00h であれば、アクセス RAM の境界は実質的に元の値に再マッピングされます。この性質を利用すると、下位互換コードを容易に作成できます。ただしこの方法を使用した場合、C 言語とアセンブリのルーチン間を移動する際に FSR2 の値を保存、復元してスタックポインタを正しく維持する必要があります。また、拡張命令セットの構文要件についても考慮しておく必要があります (25.2.3.1「拡張命令有効時のPIC18 標準コマンドの構文」参照 )。

インデックス付きリテラル オフセット アドレッシング モードはスタックとポインタの動的操作に非常に便利ですが、簡単な算術命令を誤ったレジスタに対して実行する可能性もあるため、注意が必要です。特にPIC18 プログラミングの経験が長い方は、拡張命令セットを有効にすると5Fh以下のレジスタアドレスがインデックス付きリテラル オフセット アドレッシングに使用されるという点に十分注意してください。

次ページでは、インデックス付きリテラル オフセットアドレッシングモードでバイト / ビット指向命令の実行結果がどのように変化するか、代表的な例をいくつか紹介します。これらの例で示すオペランドの条件は、この種の命令全てに当てはまります。

25.2.3.1 拡張命令有効時のPIC18標準コマンドの構文

拡張命令セットを有効にした場合、バイト / ビット指向命令のファイルレジスタ引数「f」は、リテラル オフセット値「k」で置き換えられます。ただし前述の通り、これは「f」が 5Fh 以下の場合に限ります。オフセット値を使用する場合、角カッコ (“[ ]”) で囲んで示す必要があります。拡張命令の場合と同様、コンパイラは角カッコで囲んだ値をインデックスまたはオフセットとして解釈します。角カッコを省略した場合、または角カッコで囲んだ値が 5Fh より大きい場合、MPASM™ アセンブラでエラーとなります。

インデックス引数をインデックス付きリテラル オフセット アドレッシング用に角カッコで囲む場合、アクセス RAM 引数は指定しません。自動的に「0」と見なされます。これは、拡張命令を無効にした標準の動作( ターゲット アドレスに基づいて「a」がセットされる )とは異なりますので注意してください。このモードでアクセス RAM ビットを宣言した場合も、MPASM アセンブラでエラーが発生します。

格納先の引数「d」は、以前と同様の働きをします。

新バージョンの MPASM アセンブラでは、拡張命令セットの言語サポートを明示的に起動する必要があります。これを行うには、コマンドライン オプションの/yを使用するか、ソースリストで PE ディレクティブを使用します。

25.2.4 拡張命令セットを有効にする際の注意事項

拡張命令セットは必ずしも全てのユーザにメリットがあるわけではないので注意が必要です。特に、ソフトウェア スタックを使用するコードを作成するのでなければ、拡張命令セットを使用する意味はあまりありません。

また、インデックス付きリテラル オフセット アドレッシングモードは、PIC18 アセンブラ用に作成したレガシー アプリケーションで問題を起こす事があります。つまり、レガシーコードの中にアクセスバンクの 5Fh未満のレジスタをアドレッシングする命令が含まれていると問題が生じます。拡張命令セットを有効にしていると、これらのアドレスは FSR2 からのリテラル オフセットと解釈されるため、アプリケーションが本来の意図とは異なるデータアドレスに対して読み書きを実行する可能性があります。

アプリケーションを PIC18F/LF1XK50 に移植する際は、コードの性格を見極める事が重要です。C 言語で作成した大規模な再入可能アプリケーションで、コンパイラ 適化が効果を発揮するようなアプリケーションは、拡張命令セットの使用に適しています。一方、アクセスバンクを多用するレガシー アプリケーションでは、拡張命令セットを使用するメリットはほとんどありません。

Note: PIC18 拡張命令セットを有効にすると、レガシー アプリケーションの動作がエラーになったり、全く動作しなくなる場合があります。

DS41350D_JP - p. 358 Preliminary 2010 Microchip Technology Inc.

Page 359: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

ADDWFADD W to Indexed( インデックス付きリテラル オフセット モード )

構文 : ADDWF [k] {,d}

オペランド : 0 k 95d [0,1]

動作 : (W) + ((FSR2) + k) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0010 01d0 kkkk kkkk

説明 : W レジスタの内容と、FSR2 + オフ

セット値「k」が示すレジスタの内容を

加算する。

「d」 = 「0」の場合、結果を W レジスタ

に格納する。「d」 = 「1」の場合、結果

をレジスタ「f」に書き戻す ( 既定値 )。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード 「k」を

読み出す

データを

処理

格納先に

書き込み

例 : ADDWF [OFST] , 0

命令実行前

W = 17hOFST = 2ChFSR2 = 0A00hContentsof 0A2Ch = 20h

命令実行後

W = 37hContentsof 0A2Ch = 20h

BSFBit Set Indexed ( インデックス付きリテラル オフセット モード )

構文 : BSF [k], b

オペランド : 0 f 950 b 7

動作 : 1 ((FSR2) + k)<b>

影響を受ける

ステータス :なし

エンコード : 1000 bbb0 kkkk kkkk

説明 : FSR2 + オフセット値「k」が示すレジ

スタのビット「b」をセットする。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード レジスタ「f」を読み出し

データを処理

格納先に書き込み

例 : BSF [FLAG_OFST], 7

命令実行前FLAG_OFST = 0AhFSR2 = 0A00hContents of 0A0Ah = 55h

命令実行後Contentsof 0A0Ah = D5h

SETFSet Indexed( インデックス付きリテラル オフセット モード )

構文 : SETF [k]

オペランド : 0 k 95

動作 : FFh ((FSR2) + k)

影響を受ける

ステータス :なし

エンコード : 0110 1000 kkkk kkkk

説明 : FSR2 + オフセット値「k」が示すレジ

スタの内容を FFh にセットする。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード 「k」を読み出す

データを処理

レジスタに書き込み

例 : SETF [OFST]

命令実行前OFST = 2ChFSR2 = 0A00hContentsof 0A2Ch = 00h

命令実行後Contentsof 0A2Ch = FFh

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 359

Page 360: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

25.2.5 マイクロチップ社の MPLAB® IDEツールに関する注意事項

マイクロチップ社の 新バージョンのソフトウェアツールは、PIC18F/LF1XK50 ファミリの拡張命令セットを完全にサポートしています。これには、MPLAB®

C18 C コンパイラ、MPASM アセンブリ言語、MPLAB統合開発環境 (IDE) が含まれます。

ソフトウェア開発のターゲット デバイスを選択すると、MPLAB IDE がそのデバイスのコンフィグレーション ビットを自動的に既定値に設定します。XINST コンフィグレーション ビットの既定値は「0」で、拡張命令セットとインデックス付きリテラル オフセット アドレッシングモードは無効です。拡張命令セットを利用して開発したアプリケーションを正しく実行するには、デバイスのプログラミング時に XINST ビットをセットする必要があります。

拡張命令セットを使用してソフトウェアを開発する際は、使用する言語ツールで拡張命令とインデックス付きリテラル オフセット アドレッシングモードのサポートを有効にする必要があります。有効にする方法は、使用する環境に応じて何通りかあります。

• ツール環境内のメニュー オプションまたはダイアログ ボックスで、言語ツールとプロジェクトの設定を指定

• コマンドライン オプション

• ソースコードでディレクティブを使用

どの方法を選択するかは、使用するコンパイラ、アセンブラ、開発環境によって異なります。詳細は、開発システムに付属のマニュアルで確認してください。

DS41350D_JP - p. 360 Preliminary 2010 Microchip Technology Inc.

Page 361: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

26.0 開発サポート

PIC®マイクロコントローラとdsPIC®デジタル シグナル コントローラは、以下に示す各種ソフトウェア/ハードウェア開発ツールで幅広くサポートしています。

• 統合開発環境

- MPLAB® IDE ソフトウェア

• コンパイラ / アセンブラ / リンカ

- 各種デバイスファミリ向け MPLABC コンパイラ

- 各種デバイスファミリ向け HI-TECH C

- MPASMTM アセンブラ

- MPLINKTM オブジェクト リンカ /MPLIBTM オブジェクト ライブラリアン

- 各種デバイスファミリ向け MPLAB アセンブラ /リンカ / ライブラリアン

• シミュレータ

- MPLAB SIM ソフトウェア シミュレータ

• エミュレータ

- MPLAB REAL ICE™ インサーキット エミュレータ

• インサーキット デバッガ

- MPLAB ICD 3

- PICkit 3 Debug Express

• デバイス プログラマ

- PICkit™ 2 プログラマ

- MPLAB PM3 デバイス プログラマ

• 低コストのデモ / 開発ボード、評価キット、スタータキット

26.1 MPLAB 統合開発環境ソフトウェア

MPLAB IDE ソフトウェアを使用すると、従来の 8/16/32 ビット マイクロコントローラ市場では考えられないほどソフトウェア開発が容易になります。MPLABIDEはWindows® オペレーティング システム上で動作するアプリケーションで、以下の機能を備えています。

• 1 つの GUI 環境で全てのデバッグツールを利用可能

- シミュレータ

- プログラマ ( 別売 )

- インサーキット エミュレータ ( 別売 )

- インサーキット デバッガ ( 別売 )

• コンテキスト色分け表示対応のフル機能エディタ

• 複数プロジェクト管理機能

• 内容を直接編集できるカスタマイズ可能なデータウィンドウ

• 高レベルのソースコード デバッグ機能

• マウスオーバーによる変数内容の表示

• ソースウィンドウからウォッチ ウィンドウへの変数のドラッグ & ドロップ

• 充実したオンラインヘルプ

• IAR C コンパイラ等、一部他社製ツールの統合もサポート

MPLAB IDE では以下の操作が行えます。

• ソースファイルの編集 (C 言語またはアセンブリ )

• コンパイル / アセンブルからエミュレータ / シミュレータ ツールへのダウンロードまでをワンタッチで実行 (プロジェクトの全情報を自動更新 )

• 各種レベルでのデバッグ :

- ソースファイル (C 言語またはアセンブリ )

- C 言語とアセンブリの混在

- マシンコード

MPLAB IDE では、コスト効率の高いシミュレータから低コストのインサーキット デバッガ、高機能なエミュレータまで、様々なデバッグツールを共通の開発パラダイムでサポートしています。このため、より柔軟で強力なツールにアップグレードした場合でも短期間で使用方法を習得できます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 361

Page 362: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

26.2 各種デバイスファミリ向け MPLAB C コンパイラ

MPLAB C コンパイラは、マイクロチップ社の PIC18、PIC24、PIC32 マイクロコントローラ ファミリと、dsPIC30、dsPIC33 デジタル シグナル コントローラファミリ向けコード開発に対応した ANSI C コンパイラです。これらのコンパイラは強力な統合機能と優れたコード 適化機能を備えながらも、使いやすい製品です。

また、MPLAB IDE デバッガに 適化したシンボル情報を出力できるため、ソースレベルのデバッグも容易に行えます。

26.3 各種デバイスファミリ向けHI-TECH C

HI-TECH C コンパイラは、マイクロチップ社の PIC マイクロコントローラ ファミリと dsPIC デジタル シグナル コントローラ ファミリ向けのコード開発に対応した ANSI C コンパイラです。これらのコンパイラは強力な統合機能とインテリジェントなコード生成機能を備えながらも、使いやすい製品です。

また、MPLAB IDE デバッガに 適化したシンボル情報を出力できるため、ソースレベルのデバッグも容易に行えます。

このコンパイラは、マクロアセンブラ、リンカ、プリプロセッサ、ワンステップ ドライバを備え、複数のプラットフォーム上で動作します。

26.4 MPASM アセンブラ

MPASM アセンブラは、PIC10/12/16/18 MCU に対応したフル機能のユニバーサル マクロ アセンブラです。

MPASM アセンブラは、MPLINK オブジェクト リンカ用の再配置可能なオブジェクト ファイル、Intel® 標準HEX ファイル、メモリ使用とシンボル参照を詳述するMAP ファイル、ソース行と生成後のマシンコードを含む絶対 LST ファイル、デバッグ用の COFF ファイルを生成します。

MPASM アセンブラには以下の機能があります。

• MPLAB IDE プロジェクトへの統合

• ユーザ定義マクロによるアセンブリコードの適化

• 多用途ソースファイルに対応する条件付きアセンブリ

• アセンブリ プロセスを完全に制御できるディレクティブ

26.5 MPLINK オブジェクト リンカ /MPLIBオブジェクト ライブラリアン

MPLINK オブジェクト リンカは、MPASM アセンブラと MPLAB C18 C コンパイラで生成された再配置可能なオブジェクトを結合します。このオブジェクト リンカは、リンカスクリプトのディレクティブを使用してコンパイル済みライブラリから再配置可能なオブジェクトをリンクできます。

MPLIB オブジェクト ライブラリアンはコンパイル済みコードのライブラリ ファイルの作成と変更を管理します。ライブラリのルーチンがソースファイルから呼び出されると、そのルーチンを含むモジュールのみがアプリケーションにリンクされます。これにより、大規模なライブラリを種類の異なる多くのアプリケーションで効率的に使用できます。

オブジェクト リンカ / ライブラリには以下の機能があります。

• 多数の小さいファイルに代わり、個別のライブラリを効率的にリンク

• 関連モジュールをグループ化する事で、コードの保守性を向上

• モジュールのリスト表示、置換、削除、抽出を容易に行え、ライブラリを柔軟に作成可能

26.6 各種デバイスファミリ向け MPLABアセンブラ、リンカ、ライブラリアン

MPLAB アセンブラは、PIC24、PIC32、dsPIC デバイス用のシンボリック アセンブリ言語から再配置可能なマシンコードを生成します。MPLAB C コンパイラは、このアセンブラを使用してオブジェクト ファイルを生成します。このアセンブラが生成した再配置可能なオブジェクト ファイルをアーカイブまたは他の再配置可能なオブジェクト ファイルとリンクして、実行ファイルを生成します。このアセンブラには、主に以下の機能があります。

• デバイスの命令セットを完全にサポート

• 固定小数点と浮動小数点データをサポート

• コマンドライン インターフェイス

• 豊富なディレクティブ セット

• 柔軟なマクロ言語

• MPLAB IDE との互換性

DS41350D_JP - p. 362 Preliminary 2010 Microchip Technology Inc.

Page 363: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

26.7 MPLAB SIM ソフトウェア シミュレータ

MPLAB SIM ソフトウェア シミュレータには、PICMCU と dsPIC® DSC を命令レベルでシミュレートする機能があり、PC 環境でコード開発が行えます。任意の命令でデータ領域を検証または変更でき、総合的なスティミュラス コントローラから外部信号を加える事ができます。レジスタのログをファイルに出力してさらに詳細なランタイム分析を行う事もできます。また、トレースバッファとロジック アナライザ ディスプレイを使用して、プログラムの実行、I/O アクティビティ、ほとんどの周辺機能と内部レジスタの記録と確認ができるため、シミュレータとしての完成度がより向上しています。

MPLAB SIM ソフトウェア シミュレータは、MPLAB Cコンパイラ、MPASM アセンブラ、MPLAB アセンブラを使用したシンボリック デバッグを完全にサポートしています。このソフトウェア シミュレータによってハードウェア ラボ環境以外でもコードの開発とデバッグを柔軟に行えるため、ソフトウェア開発者は低コストで強力なツールを利用できます。

26.8 MPLAB REAL ICE インサーキット エミュレータ システム

MPLAB REAL ICE インサーキット エミュレータ システムは、マイクロチップ社のフラッシュ DSC と MCUデバイス向けにマイクロチップ社が提供する次世代高速エミュレータです。このエミュレータでは、各キットに付属するMPLAB統合開発環境 (IDE)の強力で使いやすいGUIを利用してPIC®フラッシュMCUとdsPIC®

フラッシュ DSC のデバッグと書き込みが行えます。

このエミュレータをハイスピード USB 2.0 インターフェイスでエンジニアの PC に接続し、ターゲット デバイスとはインサーキット デバッガ システムと共通の RJ-11 コネクタか、高速で耐ノイズ性に優れる 新の LVDS インターフェイス (CAT5) を使用して接続します。

このエミュレータの更新用ファームウェアは、MPLABIDE からダウンロードできます。MPLAB IDE のアップデートに伴って、サポートするデバイスと新機能が常に追加されます。MPLAB REAL ICE は、低コスト、高速エミュレーション、リアルタイム変数ウォッチ、トレース解析、複雑なブレークポイント、高耐久性のプローブ インターフェイス、接続ケーブルの長尺対応( 長 3 m) 等、他のエミュレータに比べ多くの利点があります。

26.9 MPLAB ICD 3インサーキット デバッガ システム

MPLAB ICD 3 インサーキット デバッガ システムは、マイクロチップ社のフラッシュ デジタル シグナル コントローラ (DSC) とマイクロコントローラ (MCU) デバイスに対応した、非常に対費用効果の高い高速ハードウェア デバッガ / プログラマです。このデバッガでは、MPLAB 統合開発環境 (IDE) の強力で使いやすいGUI を利用して PIC® フラッシュ マイクロコントローラと dsPIC® DSC のデバッグと書き込みが行えます。

MPLAB ICD 3 インサーキット デバッガは、PC との接続にハイスピード USB 2.0 インターフェイスを使用し、ターゲットデバイスとの接続には MPLAB ICD 2または MPLAB REAL ICE システムと共通のコネクタ(RJ-11) を使用します。MPLAB ICD 3 は全ての MPLABICD 2 ヘッダをサポートしています。

26.10 PICkit 3 インサーキット デバッガ /プログラマと PICkit 3 Debug Express

MPLAB PICkit 3 は、MPLAB 統合開発環境 (IDE) の強力なGUIを利用してPIC®およびdsPIC®フラッシュ マイクロコントローラをデバッグ / プログラミングできる低価格なツールです。PC との接続にはフルスピード USB インターフェイスを使用し、ターゲットデバイスとの接続には MPLAB ICD 3、MPLAB REAL ICEと共通のコネクタ (RJ-11) を使用します。このコネクタは 2 本のデバイス I/O ピンとリセットラインを使用して、インサーキット デバッグとインサーキット シリアル プログラミングを実現します。

PICkit 3 Debug Express は、PICkit 3、デモボードとマイクロコントローラ、フックアップ ケーブル、CD-ROM( ユーザガイド、レッスン、チュートリアル、コンパイラ、MPLAB IDE ソフトウェアを収録 ) を含みます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 363

Page 364: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

26.11 PICkit 2開発用プログラマ /デバッガと PICkit 2 Debug Express

PICkit™ 2 開発用プログラマ / デバッガは、マイクロチップ社のフラッシュ マイクロコントローラ ファミリの書き込みとデバッグを使いやすいインターフェイスで行える低コストな開発ツールです。Windows®環境でプログラミング機能を実行できる本製品は、ベースライン (PIC10F、PIC12F5xx、PIC16F5xx)、ミッドレンジ (PIC12F6xx、PIC16F)、PIC18F、PIC24、dsPIC30、dsPIC33、PIC32 ファミリを含む 8/16/32 ビット マイクロコントローラ、マイクロチップ社製各種シリアルEEPROM をサポートしています。PICkit™ 2 は、マイクロチップ社の強力なMPLAB統合開発環境 (IDE)を利用してほとんどのPIC®マイクロコントローラに対してインサーキット デバッグを実行できます。インサーキット デバッグでは、PIC マイクロコントローラをアプリケーションに組み込んだままの状態でプログラムの実行 / 停止とシングルステップ実行が行えます。ブレークポイントで停止して、ファイルレジスタを確認 /変更する事もできます。

PICkit 2 Debug Express は、PICkit 2、デモボードとマイクロコントローラ、フックアップ ケーブル、CD-ROM( ユーザガイド、レッスン、チュートリアル、コンパイラ、MPLAB IDE ソフトウェアを収録 ) を含みます。

26.12 MPLAB PM3 デバイス プログラマ

MPLAB PM3 デバイス プログラマは CE 準拠のユニバーサル デバイス プログラマで、VDDMIN と VDDMAX

でのプログラマブル電圧検証によって 大限の信頼性を実現します。このデバイス プログラマにはメニュー/エラーメッセージ表示用の大型LCDディスプレイ(128x 64) が装備されている他、着脱式のモジュラー型ソケット アセンブリで各種パッケージタイプに対応します。ICSP™ ケーブル アセンブリは標準で付属しています。スタンドアロン モードでは、MPLAB PM3 デバイス プログラマをPCに接続せずにPICデバイスの読み出し、検証、書き込みを実行できます。このモードでは、コード保護も設定できます。MPLAB PM3 とホスト PC の接続には、RS-232 または USB ケーブルを使用します。大容量メモリのデバイスを短時間で書き込みできるよう、MPLAB PM3 には高速通信機能と適化したアルゴリズムを採用している他、ファイル

保存とデータ アプリケーション用に MMC カードも内蔵しています。

26.13 デモ / 開発ボード、評価キット、スタータキット

各種 PIC MCU と dsPIC DSC には多彩なデモボード、開発ボード、評価ボードを用意しており、完全に機能するシステム上でアプリケーションを迅速に開発できます。ほとんどのボードには、カスタム回路を追加するためのプロトタイプ領域があります。また、付属のアプリケーション ファームウェアとソースコードは試験と変更が可能です。

これらのボードは、LED、温度センサ、スイッチ、スピーカ、RS-232インターフェイス、LCD ディスプレイ、ポテンショメータ、増設 EEPROM メモリ等幅広い機能をサポートしています。

デモボートと開発ボードは教材として、カスタム回路の試作用として、また各種マイクロコントローラ アプリケーションの学習用として利用できます。

PICDEM™ と dsPICDEM™ デモ / 開発ボードシリーズの回路の他に、マイクロチップ社ではアナログフィルタ設計、KEELOQ® セキュリティ IC、CAN、IrDA®、PowerSmart バッテリ管理、SEEVAL® 評価システム、 ADC、流量感知等、様々なアプリケーションに対応する評価キットとデモ ソフトウェアを取り揃えています。

また、特定のデバイスの評価に必要なツール一式を備えたスタータキットも用意しています。通常、スタータキットは 1 つのアプリケーションとデバッグ機能を1 つのボードに完全に搭載した形で提供します。

デモボード、開発ボード、評価キットの一覧は、マイクロチップ社のウェブページ (www.microchip.com) でご確認ください。

DS41350D_JP - p. 364 Preliminary 2010 Microchip Technology Inc.

Page 365: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.0 電気的仕様

絶対 大定格 (†)

通電中の周囲温度 ................................................................................................................................-40 ~ +125 °C

保管温度.............................................................................................................................................. -65 ~ +150 °C

VSS に対する VDD の電圧 (PIC18F1XK50) ...................................................................................... -0.3 V ~ +6.0 V

VSS に対する VDD の電圧 (PIC18LF1XK50) .................................................................................... -0.3 V ~ +4.0 V

Vss に対する MCLR の電圧 .............................................................................................................. -0.3 V ~ +9.0 V

VSS に対する VUSB ピンの電圧 ........................................................................................................ -0.3 V ~ +4.0 V

VSS に対する D+ ピンと D- ピンの電圧 .............................................................................. -0.3 V ~ (VUSB + 0.3 V)

VSS に対するその他全てのピンの電圧 ................................................................................... -0.3 V ~ (VDD + 0.3 V)

総消費電力 (1) ................................................................................................................................................. 800 mW

VSS ピンからの 大電流.................................................................................................................................. 95 mA

VDD ピンへの 大電流 ..................................................................................................................................... 95 mA

クランプ電流 IK (VPIN < 0 または VPIN > VDD)20 mA

各 I/O ピンの 大出力シンク電流..................................................................................................................... 25 mA

各 I/O ピンの 大出力ソース電流..................................................................................................................... 25 mA

全てのポートの 大シンク電流........................................................................................................................ 90 mA

全てのポートの 大ソース電流....................................................................................................................... 90 mA

Note 1: 消費電力計算式 : PDIS = VDD x {IDD – IOH} + {(VDD – VOH) x IOH} + (VOl x IOL)

2: Vusb は常に VDD + 0.3 V である事が必要です。

† NOTICE: 上記の「絶対 大定格」を超えるストレスを与えると、デバイスに恒久的な損傷を与える可能性があります。これはストレス定格です。本仕様書の動作表に示す条件または上記から外れた条件でのデバイスの運用は想定していません。長期間にわたる 大定格条件での動作と保管は、デバイスの信頼性に影響する可能性があります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 365

Page 366: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.1 DC 特性 : PIC18F/LF1XK50-I/E (I= 工業用温度レンジ、E= 拡張温度レンジ )

PIC18LF1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

PIC18F1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラメータ 番号

記号 特性 小値 代表値 † 大値 単位 条件

D001 VDD 電源電圧

PIC18LF1XK50 1.82.7

——

3.63.6

VV

FOSC < = 20 MHzFOSC < = 48 MHz

D001 PIC18F1XK50 1.82.7

——

5.55.5

VV

FOSC < = 20 MHzFOSC < = 48 MHz

D002* VDR RAM データ保持電圧 (1)

PIC18LF1XK50 1.5 — — V デバイスがスリープモードの場合

D002* PIC18F1XK50 1.7 — — V デバイスがスリープモードの場合

VPOR* パワーオン リセット リリース電圧 — 1.6 — V

VPORR* パワーオン リセット リアーム電圧 — 0.8 — V

VFVR 固定電圧リファレンスの電圧

( 校正済み ) 0.9741.9683.736

1.0242.0484.096

1.0642.1584.226

V FVR1S<1:0> = 00 (1x)FVR1S<1:0> = 01 (2x)FVR1S<1:0> = 10 (4x)、VDD > = 4.75 V

D004* SVDD 内部パワーオン リセット信号を確

実にするための VDD 立ち上がり率

0.05 — — V/ms

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 3.3 V、25 °C 時のものです。これらのパラメータは設計上の目安であり、

テストはしていません。

Note 1: これは、スリープモードで VDD を下げた時に RAM データを失わない 小値です。

DS41350D_JP - p. 366 Preliminary 2010 Microchip Technology Inc.

Page 367: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-1: VDD の立ち上がりが遅い場合の POR と POR リアーム

VDD

VPOR

VPORR

VSS

VSS

NPOR

TPOR(3)

POR REARM

Note 1: NPOR が low の時、デバイスはリセット状態に保持されます。

2: TPOR = 1 s (Typ.)3: TVLOW = 2.7 s (Typ.)

TVLOW(2)

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 367

Page 368: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.2 DC 特性 : PIC18F/LF1XK50-I/E (I= 工業用温度レンジ、E= 拡張温度レンジ )

PIC18LF1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

PIC18F1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラメータ番号

デバイス特性 小値 代表値 † 大値 単位条件

VDD Note

消費電流 (IDD)(1, 2)

D009 LDO レギュレータ — 30 — A —

— 5 — A — LP クロックモードでスリープ時 (FVR と

BOR を無効にする事が必要 )

D010 — 6.0 9 A 1.8 Fosc = 32 kHzLP オシレータ (4)

-40 °C TA +85 °C— 7 12 A 3.0

D010 — 6 11 A 1.8 Fosc = 32 kHzLP オシレータ (4)

-40 °C TA +85 °C— 7 17 A 3.0

— 12 20 A 5.0

D011* — 6.0 12 A 1.8 Fosc = 32 kHzLP オシレータ-40 °C TA +125 °C

— 9.0 16 A 3.0

D011* — 8.0 15 A 1.8 Fosc = 32 kHzLP オシレータ (4)

-40 °C TA +125 °C— 11 25 A 3.0

— 12 35 A 5.0

D011* — 170 220 A 1.8 FOSC = 1 MHzXT オシレータ— 280 370 A 3.0

D011* — 200 250 A 1.8 FOSC = 1 MHzXT オシレータ— 310 400 A 3.0

— 380 490 A 5.0

D011* — 75 110 A 1.8 FOSC = 1 MHzXT オシレータ

CPU アイドル— 130 190 A 3.0

D011* — 90 130 A 1.8 FOSC = 1 MHzXT オシレータ

CPU アイドル— 140 210 A 3.0

— 160 250 A 5.0

* これらのパラメータは特性データであり、テストはしていません。

凡例 : TBD = 未定

Note 1: アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。OSC1 = 外部矩形波 ( レール

ツーレール )、I/O ピンは全て 3 ステートで VDD にプル、MCLR = VDD、WDT 無効

2: 消費電流は主に動作電圧と周波数によって決まります。これ以外にも、I/O ピンの負荷とスイッチング レート、オシ

レータの種類、内部コードの実行パターン、温度等の要因によって変化します。

3: RC オシレータの場合、REXT を流れる電流は含まれていません。この抵抗を流れる電流は、IR = VDD/2REXT (mA) の式で求める事ができます (REXT の単位は k)。

4: FVR と BOR は無効です。

5: VUSB ピンに 330 nF コンデンサを使用します。

DS41350D_JP - p. 368 Preliminary 2010 Microchip Technology Inc.

Page 369: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

消費電流 (IDD)(1, 2)

D012 — 300 700 A 1.8 FOSC = 4 MHzXT オシレータ— 500 1200 A 3.0

D012 — 330 700 A 1.8 FOSC = 4 MHzXT オシレータ — 530 1200 A 3.0

— 730 1400 A 5.0

D012A — 240 300 A 1.8 FOSC = 4 MHz XT オシレータ

CPU アイドル— 440 550 A 3.0

D012A — 230 300 A 1.8 FOSC = 4 MHzXT オシレータ

CPU アイドル— 400 550 A 3.0

— 470 640 A 5.0

D013 — 140 180 A 1.8 FOSC = 1 MHzEC オシレータ ( 中電力 )— 230 300 A 3.0

D013 — 160 210 A 1.8 FOSC = 1 MHzEC オシレータ ( 中電力 )(5)

— 250 310 A 3.0

— 290 380 A 5.0

D013A — 50 64 A 1.8 FOSC = 1 MHzEC オシレータ ( 中電力 )CPU アイドル

— 86 110 A 3.0

D013A — 70 100 A 1.8 FOSC = 1 MHzEC オシレータ ( 中電力 )CPU アイドル (5)

— 100 150 A 3.0

— 120 170 A 5.0

D014 — 500 640 A 1.8 FOSC = 4 MHzEC オシレータ ( 中電力 )— 830 1100 A 3.0

D014 — 520 660 A 1.8 FOSC = 4 MHzEC オシレータ ( 中電力 )(5)

— 860 1100 A 3.0

— 1000 1300 A 5.0

27.2 DC 特性 : PIC18F/LF1XK50-I/E (I= 工業用温度レンジ、E= 拡張温度レンジ ) ( 続き )

PIC18LF1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

PIC18F1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラメータ番号

デバイス特性 小値 代表値 † 大値 単位条件

VDD Note

* これらのパラメータは特性データであり、テストはしていません。

凡例 : TBD = 未定

Note 1: アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。OSC1 = 外部矩形波 ( レール

ツーレール )、I/O ピンは全て 3 ステートで VDD にプル、MCLR = VDD、WDT 無効

2: 消費電流は主に動作電圧と周波数によって決まります。これ以外にも、I/O ピンの負荷とスイッチング レート、オシ

レータの種類、内部コードの実行パターン、温度等の要因によって変化します。

3: RC オシレータの場合、REXT を流れる電流は含まれていません。この抵抗を流れる電流は、IR = VDD/2REXT (mA) の式で求める事ができます (REXT の単位は k)。

4: FVR と BOR は無効です。

5: VUSB ピンに 330 nF コンデンサを使用します。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 369

Page 370: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

消費電流 (IDD)(1, 2)

D014A — 200 250 A 1.8 FOSC = 4 MHzEC オシレータ ( 中電力 )CPU アイドル

— 340 440 A 3.0

D014A — 210 280 A 1.8 FOSC = 4 MHzEC オシレータ ( 中電力 )CPU アイドル (5)

— 360 470 A 3.0

— 430 570 A 5.0

D015 — 820 1000 A 1.8 FOSC = 6 MHzEC オシレータ ( 大電力 )— 1500 1900 A 3.0

D015 — 830 1100 A 1.8 FOSC = 6 MHzEC オシレータ ( 大電力 )(5)

— 1500 1900 A 3.0

— 1700 2300 A 5.0

D015A — 300 370 A 1.8 FOSC = 6 MHzEC オシレータ ( 大電力 )CPU アイドル

— 510 660 A 3.0

D015A — 320 430 A 1.8 FOSC = 6 MHzEC オシレータ ( 大電力 )CPU アイドル (5)

— 530 690 A 3.0

— 640 840 A 5.0

D015B — 4.7 6.0 mA 3.0 FOSC = 24 MHz6 MHz EC オシレータ ( 大電力 )PLL 有効

D015B — 4.7 6.1 mA 3.0 FOSC = 24 MHz6 MHz EC オシレータ ( 大電力 )PLL 有効 (5)

— 5.6 7.4 mA 5.0

D015C — 2.0 2.5 mA 3.0 FOSC = 24 MHz6 MHz EC オシレータ ( 大電力 )PLL 有効、CPU アイドル

D015C — 2.0 2.5 mA 3.0 FOSC = 24 MHz6 MHz EC オシレータ ( 大電力 )PLL 有効、CPU アイドル (5)

— 2.3 3.0 mA 5.0

27.2 DC 特性 : PIC18F/LF1XK50-I/E (I= 工業用温度レンジ、E= 拡張温度レンジ ) ( 続き )

PIC18LF1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

PIC18F1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラメータ番号

デバイス特性 小値 代表値 † 大値 単位条件

VDD Note

* これらのパラメータは特性データであり、テストはしていません。

凡例 : TBD = 未定

Note 1: アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。OSC1 = 外部矩形波 ( レール

ツーレール )、I/O ピンは全て 3 ステートで VDD にプル、MCLR = VDD、WDT 無効

2: 消費電流は主に動作電圧と周波数によって決まります。これ以外にも、I/O ピンの負荷とスイッチング レート、オシ

レータの種類、内部コードの実行パターン、温度等の要因によって変化します。

3: RC オシレータの場合、REXT を流れる電流は含まれていません。この抵抗を流れる電流は、IR = VDD/2REXT (mA) の式で求める事ができます (REXT の単位は k)。

4: FVR と BOR は無効です。

5: VUSB ピンに 330 nF コンデンサを使用します。

DS41350D_JP - p. 370 Preliminary 2010 Microchip Technology Inc.

Page 371: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.2 DC 特性 : PIC18F/LF1XK50-I/E ( 工業用温度レンジ、拡張温度レンジ ) ( 続き )

PIC18LF1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

PIC18F1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラメータ番号

デバイス特性 小値 代表値 † 大値 単位条件

VDD Note

消費電流 (IDD)(1, 2)

D016 — 2.6 3.3 mA 3.0 FOSC = 12 MHzEC オシレータ ( 大電力 )

D016 — 2.6 3.3 mA 3.0 FOSC = 12 MHzEC オシレータ ( 大電力 )(5)

— 3.1 4.1 mA 5.0

D017 — 1.0 1.3 mA 3.0 FOSC = 12 MHzEC オシレータ ( 大電力 )CPU アイドル

D017 — 1.0 1.3 mA 3.0 FOSC = 12 MHzEC オシレータ ( 大電力 )CPU アイドル (5)

— 1.2 1.6 mA 5.0

D017A — 9 12 mA 3.0 FOSC = 48 MHz12 MHz EC オシレータ ( 大電力 )PLL 有効

D017A — 8.9 12 mA 3.0 FOSC = 48 MHz12 MHz EC オシレータ ( 大電力 )PLL 有効 (5)

— 11 14 mA 5.0

D017B — 3.9 5.0 mA 3.0 FOSC = 48 MHz12 MHz EC オシレータ ( 大電力 )PLL 有効、CPU アイドル

D017B — 3.9 5.0 mA 3.0 FOSC = 48 MHz12 MHz EC オシレータ ( 大電力 )PLL 有効、CPU アイドル (5)

— 4.7 6.0 mA 5.0

D018 — 19 38 A 1.8 FOSC = 32 kHzLFINTOSC オシレータ モード (3, 5)

— 23 44 A 3.0

D018 — 21 40 A 1.8 FOSC = 32 kHzLFINTOSC オシレータ モード (3, 5)

— 25 46 A 3.0

— 26 48 A 5.0

D019 — 16 33 A 1.8 FOSC = 32 kHzLFINTOSC オシレータ

CPU アイドル— 18 38 A 3.0

D019 — 18 35 A 1.8 FOSC = 32 kHzLFINTOSC オシレータ

CPU アイドル (5)— 20 40 A 3.0

— 21 42 A 5.0

* これらのパラメータは特性データであり、テストはしていません。

凡例 : TBD = 未定

Note 1: アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。OSC1 = 外部矩形波 ( レール

ツーレール )、I/O ピンは全て 3 ステートで VDD にプル、MCLR = VDD、WDT 無効

2: 消費電流は主に動作電圧と周波数によって決まります。これ以外にも、I/O ピンの負荷とスイッチング レート、オシ

レータの種類、内部コードの実行パターン、温度等の要因によって変化します。

3: RC オシレータの場合、REXT を流れる電流は含まれていません。この抵抗を流れる電流は、IR = VDD/2REXT (mA) の式で求める事ができます (REXT の単位は k)。

4: FVR と BOR は無効です。

5: VUSB ピンに 330 nF コンデンサを使用します。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 371

Page 372: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

消費電流 (IDD)(1, 2)

D020 — 320 430 A 1.8 FOSC = 500 kHzLFINTOSC オシレータ— 460 600 A 3.0

D020 — 350 460 A 1.8 FOSC = 500 kHzLFINTOSC オシレータ (5)

— 490 630 A 3.0

— 540 710 A 5.0

D021 — 380 530 A 1.8 FOSC = 1 MHzHFINTOSC オシレータ— 550 770 A 3.0

D021 — 410 530 A 1.8 FOSC = 1 MHzHFINTOSC オシレータ (5)

— 580 770 A 3.0

— 650 900 A 5.0

D021A — 290 400 A 1.8 FOSC = 1 MHzHFINTOSC オシレータ

CPU アイドル— 410 560 A 3.0

D021A — 320 420 A 1.8 FOSC = 1 MHzHFINTOSC オシレータ

CPU アイドル (5)— 440 570 A 3.0

— 490 680 A 5.0

D022 — 1.2 1.6 mA 1.8 FOSC = 8 MHzHFINTOSC オシレータ— 2.1 2.9 mA 3.0

D022 — 1.2 1.6 mA 1.8 FOSC = 8 MHzHFINTOSC オシレータ (5)

— 2.1 2.9 mA 3.0

— 2.4 3.5 mA 5.0

D023 — 2.0 2.7 mA 1.8 FOSC = 16 MHzHFINTOSC オシレータ— 3.5 4.8 mA 3.0

D023 — 2.0 2.7 mA 1.8 FOSC = 16 MHzHFINTOSC オシレータ (5)

— 3.5 4.8 mA 3.0

— 4.0 6.0 mA 5.0

D023A — 0.9 1.3 mA 1.8 FOSC = 16 MHzHFINTOSC オシレータ

CPU アイドル— 1.5 2.1 mA 3.0

D023A — 0.9 1.3 mA 1.8 FOSC = 16 MHzHFINTOSC オシレータ

CPU アイドル (5)— 1.5 2.1 mA 3.0

— 1.7 2.6 mA 5.0

27.2 DC 特性 : PIC18F/LF1XK50-I/E ( 工業用温度レンジ、拡張温度レンジ ) ( 続き )

PIC18LF1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

PIC18F1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラメータ番号

デバイス特性 小値 代表値 † 大値 単位条件

VDD Note

* これらのパラメータは特性データであり、テストはしていません。

凡例 : TBD = 未定

Note 1: アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。OSC1 = 外部矩形波 ( レール

ツーレール )、I/O ピンは全て 3 ステートで VDD にプル、MCLR = VDD、WDT 無効

2: 消費電流は主に動作電圧と周波数によって決まります。これ以外にも、I/O ピンの負荷とスイッチング レート、オシ

レータの種類、内部コードの実行パターン、温度等の要因によって変化します。

3: RC オシレータの場合、REXT を流れる電流は含まれていません。この抵抗を流れる電流は、IR = VDD/2REXT (mA) の式で求める事ができます (REXT の単位は k)。

4: FVR と BOR は無効です。

5: VUSB ピンに 330 nF コンデンサを使用します。

DS41350D_JP - p. 372 Preliminary 2010 Microchip Technology Inc.

Page 373: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

消費電流 (IDD)(1, 2)

D024 — 0.5 0.7 mA 1.8 FOSC = 4 MHzEXTRC オシレータ モード— 0.9 1.1 mA 3.0

D024 — 0.5 0.7 mA 1.8 FOSC = 4 MHzEXTRC オシレータ モード (5)

— 0.9 1.1 mA 3.0

— 1.0 1.4 mA 5.0

D025 — 1.0 1.1 mA 1.8 FOSC = 6 MHzHS オシレータ— 2.1 2.0 mA 3.0

D025 — 1.0 1.1 mA 1.8 FOSC = 6 MHzHS オシレータ (5)

— 2.1 2.0 mA 3.0

— 3.5 2.5 mA 5.0

D025A — 5.4 6.0 mA 3.0 FOSC = 24 MHz6 MHz HS オシレータ

PLL 有効

D025A — 5.4 6.0 mA 3.0 FOSC = 24 MHz6 MHz HS オシレータ

PLL 有効 (5)— 7.4 7.6 mA 5.0

D026 — 3.2 3.3 mA 3.0 FOSC = 12 MHzHS オシレータ

D026 — 3.2 3.3 mA 3.0 FOSC = 12 MHzHS オシレータ (5)

— 4.8 4.2 mA 5.0

D026A — 10 12 mA 3.0 FOSC = 48 MHz12 MHz HS オシレータ

PLL 有効

D026A — 10 12 mA 3.0 FOSC = 48 MHz12 MHz HS オシレータ

PLL 有効 (5)— 13 15 mA 5.0

27.2 DC 特性 : PIC18F/LF1XK50-I/E ( 工業用温度レンジ、拡張温度レンジ ) ( 続き )

PIC18LF1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

PIC18F1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラメータ番号

デバイス特性 小値 代表値 † 大値 単位条件

VDD Note

* これらのパラメータは特性データであり、テストはしていません。

凡例 : TBD = 未定

Note 1: アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。OSC1 = 外部矩形波 ( レール

ツーレール )、I/O ピンは全て 3 ステートで VDD にプル、MCLR = VDD、WDT 無効

2: 消費電流は主に動作電圧と周波数によって決まります。これ以外にも、I/O ピンの負荷とスイッチング レート、オシ

レータの種類、内部コードの実行パターン、温度等の要因によって変化します。

3: RC オシレータの場合、REXT を流れる電流は含まれていません。この抵抗を流れる電流は、IR = VDD/2REXT (mA) の式で求める事ができます (REXT の単位は k)。

4: FVR と BOR は無効です。

5: VUSB ピンに 330 nF コンデンサを使用します。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 373

Page 374: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.3 DC 特性 : PIC18F/LF1XK50-I/E ( パワーダウン )

PIC18LF1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

PIC18F1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラ

メータ

番号

デバイス特性 小値 代表値 †大値

+85 °C大値

+125 °C 単位

条件

VDD Note

パワーダウン時のベース電流 (IPD)(2)

D027 — 0.024 0.7 6.7 A 1.8 WDT、BOR、FVR、電圧レギュ

レータ、T1OSC は無効。周辺モ

ジュールは全て非アクティブ— 0.078 1.9 8.5 A 3.0

D027 — 6.0 7.0 13 A 1.8 WDT、BOR、FVR、T1OSC は

無効。周辺モジュールは全て非

アクティブ— 7.0 10 15 A 3.0

— 8.0 12 19 A 5.0

パワーダウン時の各モジュールの電流

D028 — 0.45 1.3 4.4 A 1.8 LPWDT の電流 (1)

— 0.75 2.0 6.0 A 3.0

D028 — 6.5 7.0 10.5 A 1.8 LPWDT の電流 (1)

— 9.6 10.6 17.6 A 3.0

— 10.5 16.5 20 A 5.0

D029 — 12 17 23 A 1.8 FVR の電流 (3)

— 22 19 25 A 3.0

D029 — 28 42 50 A 1.8 FVR の電流 (3, 5)

— 35.6 45.6 55 A 3.0

— 38.5 49 60 A 5.0

D030 — — — — A 1.8 BOR の電流 (1, 3)

— — 21 27 A 3.0

D030 — — — — A 1.8 BOR の電流 (1, 3, 5)

— 27 48 51 A 3.0

— 36.5 51 55 A 5.0

D031 — 0.79 3.6 5.3 A 1.8 T1OSC の電流 (1)

— 1.8 2.9 6.9 A 3.0

D031 — 8.0 7.5 10 A 1.8 T1OSC の電流 (1)

— 8.5 10.5 15 A 3.0

— 10.5 12.5 24 A 5.0

凡例 : TBD = 未定

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5.0 V、25 °C 時のものです。これらのパラメータは設計上の目安であ

り、テストはしていません。

Note 1: 周辺モジュールの電流は、その周辺モジュールが有効時に消費する電流とベース IDD または IPD を合計したものです。

周辺モジュールのみの 電流は、この合計値からベース IDD または IPD 電流を引いて求める事ができます。消費電流

の合計を求める際は、 大値を使用してください。

2: スリープモード時のパワーダウン電流は、オシレータの種類にかかわらず一定です。パワーダウン電流は、デバイス

をスリープモードに移行し、全ての I/O ピンをハイインピーダンス状態にして VDD に接続して計測しています。

3: 固定電圧リファレンス (FVR) は、BOR を有効にすると自動的に有効になります。

4: ADC モジュールのクロック源には FRC を使用します。

5: 330 f コンデンサを VUSB ピンに接続します。

DS41350D_JP - p. 374 Preliminary 2010 Microchip Technology Inc.

Page 375: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

パワーダウン時の各モジュールの電流

D032 — — 1.8 8 A 1.8 ADC の電流 (1, 4)、変換停止中

— — 3 10 A 3.0

D032 — — 6 12 A 1.8 ADC の電流 (1, 4)、変換停止中

— — 10 17 A 3.0

— — 11.5 22 A 5.0

D033 — — 38 44 A 1.8 コンパレータの電流 ( 低電力 )

— — 40 47 A 3.0

D033 — 30 40 49 A 2.0 コンパレータの電流 ( 低電力 )

— 34 44 53 A 3.0

— 36 50 60 A 5.0

D033A — — 239 244 A 1.8 コンパレータの電流 ( 大電力 )

— — 242 249 A 3.0

D033A — 144 243 250 A 2.0 コンパレータの電流 ( 大電力 )

— 146 247 256 A 3.0

— 151 253 264 A 5.0

D034 — — 18 23 A 1.8 電圧リファレンスの電流

— — 30 35 A 3.0

D034 — 35 36 44 A 2.0 電圧リファレンスの電流

— 43 44 60 A 3.0

— 55 65 74 A 5.0

27.3 DC 特性 : PIC18F/LF1XK50-I/E ( パワーダウン ) ( 続き )

PIC18LF1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

PIC18F1XK50標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラ

メータ

番号

デバイス特性 小値 代表値 †大値

+85 °C大値

+125 °C 単位

条件

VDD Note

凡例 : TBD = 未定

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5.0 V、25 °C 時のものです。これらのパラメータは設計上の目安であ

り、テストはしていません。

Note 1: 周辺モジュールの電流は、その周辺モジュールが有効時に消費する電流とベース IDD または IPD を合計したものです。

周辺モジュールのみの 電流は、この合計値からベース IDD または IPD 電流を引いて求める事ができます。消費電流

の合計を求める際は、 大値を使用してください。

2: スリープモード時のパワーダウン電流は、オシレータの種類にかかわらず一定です。パワーダウン電流は、デバイス

をスリープモードに移行し、全ての I/O ピンをハイインピーダンス状態にして VDD に接続して計測しています。

3: 固定電圧リファレンス (FVR) は、BOR を有効にすると自動的に有効になります。

4: ADC モジュールのクロック源には FRC を使用します。

5: 330 f コンデンサを VUSB ピンに接続します。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 375

Page 376: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.4 DC 特性 : PIC18F/LF1XK50-I/E

DC 特性

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラ

メータ

番号

記号 特性 小値 代表値 † 大値 単位 条件

VIL Low レベル入力電圧

I/O ポート :D036 TTL バッファ使用 — — 0.8 V 4.5 V VDD 5.5 V

D036A — — 0.15 VDD V 1.8 V VDD 4.5 V

D037 シュミットトリガ バッファ

使用

— — 0.2 VDD V 1.8 V VDD 5.5 V

I2C レベル使用 — — 0.3 VDD V

D038 MCLR、OSC1 (RC モード )(1) — — 0.2 VDD V

D039A OSC1 (HS モード ) — — 0.3 VDD V

VIH High レベル入力電圧

I/O ポート : — —

D040 TTL バッファ使用 2.0 — — V 4.5 V VDD 5.5 V

D040A 0.25 VDD + 0.8

— — V 1.8 V VDD 4.5 V

D041 シュミットトリガ バッファ

使用

0.8 VDD — — V 1.8 V VDD 5.5 V

I2C レベル使用 0.7 VDD — — V

D042 MCLR 0.8 VDD — — V

D043A OSC1 (HS モード ) 0.7 VDD — — V

D043B OSC1 (RC モード ) 0.9 VDD — — V (Note 1)

IIL 入力リーク電流 (2)

D060 I/O ポート — ± 5 ± 100 nA VSS VPIN VDD、ピンは

ハイインピーダンス

D061 MCLR(3) — ± 50 ± 200 nA VSS VPIN VDD

D063 OSC1 — ± 5 ± 100 nA VSS VPIN VDD、XT、HS、LPオシレータ設定

IPUR PORTB の弱プルアップ電流

D070* 50 250 400 A VDD = 5.0 V、VPIN = VSS

VOL Low レベル出力電圧 (4)

D080 I/O ポート— —

VSS+0.6VSS+0.6VSS+0.6

VIOH = 8 mA、VDD = 5 VIOH = 6 mA、VDD = 3.3 VIOH = 3 mA、VDD = 1.8 V

VOH High レベル出力電圧 (4)

D090 I/O ポート VDD-0.7VDD-0.7VDD-0.7

— — VIOL = 3.5 mA、VDD = 5 VIOL = 3 mA、VDD = 3.3 VIOL = 2 mA、VDD = 1.8 V

凡例 : TBD = 未定

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5.0V、25 °C 時のものです。これらのパラメータは設計上の目安であり、

テストはしていません。

Note 1: RC オシレータ設定では、OSC1/CLKIN ピンはシュミットトリガ入力です。RC モードでは外部クロックの使用は推奨

しません。

2: 負の電流はピンからの出力と定義されています。

3: MCLR ピンのリーク電流は、印加する電圧レベルによって大きく変化します。指定したレベルは、通常の動作状態に相

当します。入力電圧が異なると、リーク電流が大きくなる事があります。

4: CLKOUT モードの OSC2 を含みます。

DS41350D_JP - p. 376 Preliminary 2010 Microchip Technology Inc.

Page 377: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

出力ピンに対する容量性負荷の仕様

D101* COSC2 OSC2 ピン — — 15 pF XT、HS、LP モードで外部クロッ

クを使用して OSC1 を駆動してい

る場合

D101A* CIO 全ての I/O ピン — — 50 pF

フラッシュメモリ

D130 EP セル書き換え耐性 10K100K

— — E/W プログラム フラッシュメモリ データ フラッシュメモリ

D131 読み出し用 VDD VMIN — — V

消去 / 書き込み時の

MCLR/VPP の電圧

VDD + 1.5 — 9.0 V 書き込み時の温度 : -40 °C TA 85 °C

バルク消去用 VDD TBD 2.1 — V 書き込み時の温度 : 10 °C TA 40 °C

D132 VPEW 書き込みまたは行消去用 VDD VMIN — — V VMIN = 小動作電圧

VMAX = 大動作電圧

IPPPGM 消去 / 書き込み時の

MCLR/VPP の電流

— — 5.0 mA

IDDPGM 消去 / 書き込み時の VDD の

電流

— 5.0 mA

D133 TPEW 消去 / 書き込みサイクル時間 — 4.0 ms

D134 TRETD 特性保持期間 40 — — 年 他の仕様値に違反していない場合

VUSB コンデンサ充電

D135 充電電流 — 200 — A

D135A 充電完了時のソース / シンク

能力

— 0.0 — mA

27.4 DC 特性 : PIC18F/LF1XK50-I/E ( 続き )

DC 特性

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +85 °C ( 工業用温度レンジ )

-40 °C TA +125 °C ( 拡張温度レンジ )

パラ

メータ

番号

記号 特性 小値 代表値 † 大値 単位 条件

凡例 : TBD = 未定

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5.0V、25 °C 時のものです。これらのパラメータは設計上の目安であり、

テストはしていません。

Note 1: RC オシレータ設定では、OSC1/CLKIN ピンはシュミットトリガ入力です。RC モードでは外部クロックの使用は推奨

しません。

2: 負の電流はピンからの出力と定義されています。

3: MCLR ピンのリーク電流は、印加する電圧レベルによって大きく変化します。指定したレベルは、通常の動作状態に相

当します。入力電圧が異なると、リーク電流が大きくなる事があります。

4: CLKOUT モードの OSC2 を含みます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 377

Page 378: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.5 USB モジュールの仕様

動作条件 -40 °C TA +85 °C ( 別途記載のある場合を除く )

パラメータ番号

記号 特性 小値 代表値 大値 単位 条件

D313 VUSB USB 電圧 3.0 — 3.6 V USB を正常に動作させるには、VUSB ピンにこのレンジの電圧を印加する事が必要

D314 IIL ピンの入力リーク電流 — — ± 1 A VSS VPIN VDD ピン ( ハイインピーダンス時 )

D315 VILUSB USBバッファ用のLowレベル入力電圧

— — 0.8 V VUSB レンジ用

D316 VIHUSB USBバッファ用のHighレベル入力電圧

2.0 — — V VUSB レンジ用

D318 VDIFS 差動入力感度 — — 0.2 V VCM の条件を満たしている時、D+ と D- の差がこの値より大きい事が必要

D319 VCM 差動コモンモード レンジ 0.8 — 2.5 V

D320 ZOUT ドライバ出力インピーダンス(1) 28 — 44 D321 VOL Low レベル出力電圧 0.0 — 0.3 V 1.5 k負荷を 3.6 V に接続

D322 VOH High レベル出力電圧 2.8 — 3.6 V 1.5 k負荷をグランドに接続

Note 1: D+ 信号ラインと D- 信号ラインには、インピーダンス整合用の抵抗が内蔵されています。PIC18F1XK50/PIC18LF1XK50 ファミリと USB ケーブルの間の D+/D- 信号ラインには、外付け抵抗、コンデンサ、磁気部品は一切必要ありません。

DS41350D_JP - p. 378 Preliminary 2010 Microchip Technology Inc.

Page 379: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.6 温度仕様

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラ

メータ

番号

記号 特性 代表値 単位 条件

TH01 JA 接合部 - 大気間熱抵抗 62.4 C/W 20 ピン PDIP パッケージ

85.2 C/W 20 ピン SOIC パッケージ

108.1 C/W 20 ピン SSOP パッケージ

TBD C/W 20 ピン QFN 5x5 mm パッケージ

TH02 JC 接合部 - ケース間熱抵抗 31.4 C/W 20 ピン PDIP パッケージ

24 C/W 20 ピン SOIC パッケージ

24 C/W 20 ピン SSOP パッケージ

TH03 TJMAX 高接合部温度 150 CTH04 PD 消費電力 — W PD = PINTERNAL + PI/O

TH05 PINTERNAL 内部消費電力 — W PINTERNAL = IDD x VDD(1)

TH06 PI/O I/O 消費電力 — W PI/O = (IOL * VOL) + (IOH * (VDD - VOH))

TH07 PDER ディレーティング後電力 — W PDER = PDMAX (TJ - TA)/JA(2)

凡例 : TBD = 未定

Note 1: IDD は、出力ピンの負荷を駆動しないでチップのみを動作させた時の電流です。

2: TA = 周囲温度

3: TJ = 接合部温度

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 379

Page 380: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.7 タイミング パラメータの記号

タイミング パラメータの記号は、以下のいずれかの書式で表します。

図 27-2: 負荷条件

1. TppS2ppS

2. TppS

T

F 周波数 T 時間

小文字 (pp) の種類と意味 :

pp

cc CCP1 osc OSC1

ck CLKOUT rd RD

cs CS rw RD or WR

di SDI sc SCK

do SDO ss SS

dt Data in t0 T0CKI

io I/O PORT t1 T1CKI

mc MCLR wr WR

大文字の種類と意味 :

S

F Fall P Period

H High R Rise

I Invalid (High-impedance) V Valid

L Low Z High-impedance

VSS

CL

凡例 : CL = 50 pF ( 全てのピン )、15 pF (OSC2 出力 )

Load Condition

Pin

DS41350D_JP - p. 380 Preliminary 2010 Microchip Technology Inc.

Page 381: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

27.8 AC 特性 : PIC18F1XK50/PIC18LF1XK50-I/E

図 27-3: クロック タイミング

図 27-4: PIC18F1XK50 の電圧 - 周波数のグラフ、-40 °C TA +85 °C

OSC1/CLKIN

OSC2/CLKOUT

Q4 Q1 Q2 Q3 Q4 Q1

OS02

OS03OS04 OS04

OSC2/CLKOUT(LP,XT,HS Modes)

(CLKOUT Mode)

1.8

0

Frequency (MHz)

VD

D (

V)

Note 1: 網掛けの部分は、電圧と周波数の組み合わせが可能なレンジを表します。

2: 各オシレータモードでサポートされている周波数については、表 27-1 を参照してください。

10 4820 40

5.5

3.6

2.7

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 381

Page 382: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-5: PIC18LF1XK50 の電圧 - 周波数のグラフ、-40 °C TA +125 °C

図 27-6: デバイスの VDD と温度に対する HFINTOSC の周波数精度

1.8

2.7

0

Frequency (MHz)

VD

D (

V)

Note 1: 網掛けの部分は、電圧と周波数の組み合わせが可能なレンジを表します。

2: 各オシレータモードでサポートされている周波数については、表 27-1 を参照してください。

10 4820 40

3.6

125

25

2.0

0

60

85

VDD (V)

4.0 5.04.5

Tem

per

atu

re (

°C)

2.5 3.0 3.5 5.51.8

Note 1: このグラフは、レギュレータを有効にした状態と無効にした状態の両方を表しています。

2: レギュレータの公称電圧

3.3(2)-40

-20

+ 5%

± 2%

± 5%

DS41350D_JP - p. 382 Preliminary 2010 Microchip Technology Inc.

Page 383: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 27-1: クロック オシレータのタイミング要件

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラメータ

番号記号 特性 小値 代表値 † 大値 単位 条件

OS01 FOSC 外部 CLKIN 周波数 (1) DC — 37 kHz EC オシレータモード ( 低電力 )DC — 4 MHz EC オシレータモード ( 中電力 )DC — 48 MHz EC オシレータモード ( 大電力 )

オシレータ周波数 (1) — 32.768 33 kHz LP オシレータモード

0.1 — 4 MHz XT オシレータモード

1 — 20 MHz HS オシレータモード

DC — 4 MHz RC オシレータモード OS02 TOSC 外部 CLKIN 周期 (1) 27 — s LP オシレータモード

250 — ns XT オシレータモード

50 — ns HS オシレータモード

20.80 — ns EC オシレータモード

オシレータ周期 (1) — 30.5 — s LP オシレータモード

250 — 10,000 ns XT オシレータモード

50 — 1,000 ns HS オシレータモード

250 — — ns RC オシレータモード

OS03 TCY 命令サイクル時間 (1) 83 TCY DC ns TCY = 4/FOSC

OS04* TosH,TosL

外部 CLKIN High、外部 CLKIN Low

2 — — s LP オシレータ

100 — — ns XT オシレータ

20 — — ns HS オシレータ

OS05* TosR,TosF

外部 CLKIN 立ち上がり、

外部 CLKIN 立ち下がり

0 — ns LP オシレータ

0 — ns XT オシレータ

0 — ns HS オシレータ

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5 V、25 °C 時のものです。これらのパラメータは設計上の目安であり、

テストはしていません。

Note 1: 命令サイクル周期 (TCY) は、入力オシレータのタイムベース周期の 4 倍です。上記の仕様値は全て、標準の動作条件で

デバイスがコードを実行した場合の各オシレータの特性データに基づいています。これらの仕様の制限値を超えるとオ

シレータの動作が不安定になったり、予想以上の電流を消費する事があります。全てのデバイスは、OSC1 ピンに外部

クロックを入力した状態で「 小値」で動作をテストしています。外部クロック入力を使用した場合、「 大値」のサイ

クル時間の制限値はいずれのデバイスの場合も「DC」( クロックなし ) です。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 383

Page 384: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 27-2: オシレータのパラメータ

表 27-3: PLL クロック タイミング仕様 (VDD = 42.7 ~ 5.5 V)

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラ

メータ

番号

記号 特性周波数

許容誤差小値 代表値 † 大値 単位 条件

OS08 HFOSC 内部校正済み HFINTOSC 周波数 (2) 2% — 16.0 — MHz 0 °C TA +85 °C

5% — 16.0 — MHz -40 °C TA +125 °C

OS10* TIOSC ST HFINTOSCスリープからのウェイクアップ時の

起動時間

— — 5 7 s VDD = 2.0 V、-40 °C ~+85 °C

— — 5 7 s VDD = 3.0 V、-40 °C ~+85 °C

— — 5 7 s VDD = 5.0 V、-40 °C ~+85 °C

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5.0 V、25 °C 時のものです。これらのパラメータは設計上の目安であり、

テストはしていません。

Note 1: 命令サイクル周期 (TCY) は、入力オシレータのタイムベース周期の 4 倍です。上記の仕様値は全て、標準の動作条件で

デバイスがコードを実行した場合の各オシレータの特性データに基づいています。これらの仕様の制限値を超えるとオ

シレータの動作が不安定になったり、予想以上の電流を消費する事があります。全てのデバイスは、OSC1 ピンに外部

クロックを入力した状態で「 小値」で動作をテストしています。外部クロック入力を使用した場合、「 大値」のサ

イクル時間の制限値はいずれのデバイスの場合も「DC」( クロックなし ) です。

2: これらのオシレータ周波数の許容誤差を確保するには、デバイスのなるべく近くで VDD と VSS にデカップリング コン

デンサを接続する必要があります。0.1 F のコンデンサと 0.01 F のコンデンサを並列に接続する事を推奨します。

3: 設計上の仕様

パラメータ 番号

記号 特性 小値 代表値 † 大値 単位 条件

F10 FOSC オシレータ周波数レンジ 4 — 12 MHz

F11 FSYS 内蔵 VCO システム周波数 16 — 48 MHz

F12 trc PLL 起動時間 ( ロック時間 ) — — 2 ms

F13* CLK CLKOUT 安定性 ( ジッタ ) -0.25% — +0.25% %

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5 V、25 C 時のものです。これらのパラメータは設計上

の目安であり、テストはしていません。

DS41350D_JP - p. 384 Preliminary 2010 Microchip Technology Inc.

Page 385: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-7: CLKOUT と I/O タイミング

表 27-4: CLKOUT と I/O のタイミング パラメータ 標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラメータ 番号

記号 特性 小値代表値 †

大値

単位 条件

OS11 TosH2ckL Foscから CLKOUTまでの時間 (1) — — 70 ns VDD = 3.3 ~5.0 V

OS12 TosH2ckH Foscから CLKOUTまでの時間 (1) — — 72 ns VDD = 3.3 ~5.0 V

OS13 TckL2ioV CLKOUTからポート出力確定までの時間 (1)

— — 20 ns

OS14 TioV2ckH ポート入力有効から CLKOUTまでの時間 (1)

TOSC + 200 ns — — ns

OS15 TosH2ioV Fosc (Q1 サイクル ) からポート出力確定までの時間

— 50 70* ns VDD = 3.3 ~5.0 V

OS16 TosH2ioI Fosc (Q2 サイクル ) からポート入力無効までの時間 (I/O のホールドタイム )

50 — — ns VDD = 3.3 ~5.0 V

OS17 TioV2osH ポート入力有効からFosc(Q2サイクル )までの時間 (I/O のセットアップ時間 )

20 — — ns

OS18 TioR ポート出力立ち上がり時間 (2) ——

4015

7232

ns VDD = 2.0 VVDD = 3.3 ~5.0 V

OS19 TioF ポート出力立ち下がり時間 (2) ——

2815

5530

ns VDD = 2.0 VVDD = 3.3 ~5.0 V

OS20* Tinp INT ピン入力の high または low 時間 25 — — ns

OS21* Trbp PORTB状態変化割り込みの新しい入力レベル時間

TCY — — ns

* これらのパラメータは特性データであり、テストはしていません。† 「代表値」欄のデータは、特に記載のない限り 5.0 V、25 C 時のものです。

Note 1: RC モードで CLKOUT 出力を 4 x TOSC として計測しています。

2: CLKOUT モードの OSC2 を含みます。

FOSC

CLKOUT

I/O pin(Input)

I/O pin(Output)

Q4 Q1 Q2 Q3

OS11

OS19

OS13

OS15

OS18, OS19

OS20OS21

OS17

OS16

OS14

OS12

OS18

Old Value New Value

Write Fetch Read ExecuteCycle

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 385

Page 386: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-8: リセット、ウォッチドッグ タイマ、オシレータ起動タイマ、パワーアップ タイマのタイミング

図 27-9: ブラウンアウト リセットのタイミングと特性

VDD

MCLR

InternalPOR

PWRTTime-out

OSCStart-Up Time

Internal Reset(1)

Watchdog Timer

33

32

30

31/34

I/O pins

34

Reset(1)

31A

Note 1: 負論理

VBOR

VDD

(Device in Brown-out Reset) (Device not in Brown-out Reset)

33(1)

37

Reset

(due to BOR)

VBOR and VHYST

TBORREJ

Note 1: コンフィグレーション ワード レジスタの PWRTE ビットを「0」にプログラミングした場合

のみ 64 ms 遅延します。PWRTE = 0の場合の遅延は 2 ms です。

DS41350D_JP - p. 386 Preliminary 2010 Microchip Technology Inc.

Page 387: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 27-5: リセット、ウォッチドッグ タイマ、オシレータ起動タイマ、パワーアップ タイマ、ブラウンアウト リセットのパラメータ

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラメータ 番号

記号 特性 小値 代表値 † 大値 単位 条件

30 TMCL MCLR パルス幅 (low) 2 5

——

——

ss

VDD = 3.3 ~ 5 V、-40 °C ~+85 °CVDD = 3.3 ~ 5 V

31 TWDT 標準ウォッチドッグ タイマ タイムアウト時間 (5)

1010

1717

2730

msms

VDD = 3.3 ~ 5 V、-40 °C ~+85 °CVDD = 3.3 ~ 5 V

31A TWDTLP 低消費電力ウォッチドッグ タイマ タイムアウト時間

1010

1818

2733

msms

VDD = 3.3 ~ 5 V、-40 °C ~+85 °CVDD = 3.3 ~ 5 V

32 TOST オシレータ起動タイマ時間 (1), (2) — 1024 — Tosc (Note 3)

33* TPWRT パワーアップ タイマ時間、PWRTE = 0

40 65 140 ms

34* TIOZ MCLR Low またはウォッチドッグ タイマ リセットから I/O ハイインピーダンスまでの時間

— — 2.0 s

35 VBOR ブラウンアウト リセット電圧 TBDTBDTBDTBD

1.92.22.72.85

TBDTBDTBDTBD

VVVV

BORV = 1.9 VBORV = 2.2 VBORV = 2.7 VBORV = 2.85 V

36* VHYST ブラウンアウト リセットのヒステリシス

25 50 75 mV -40 ~ +85 °C

37* TBORDC ブラウンアウト リセットのDC応答時間

1 3 510

s VDD VBOR、-40 ~ +85 °CVDD VBOR

凡例 : TBD = 未定* これらのパラメータは特性データであり、テストはしていません。† 「代表値」欄のデータは、特に記載のない限り 5 V、25 °C 時のものです。これらのパラメータは設計上の

目安であり、テストはしていません。Note 1: 命令サイクル周期 (TCY) は、入力オシレータのタイムベース周期の 4 倍です。上記の仕様値は全て、標準

の動作条件でデバイスがコードを実行した場合の各オシレータの特性データに基づいています。これらの仕様の制限値を超えるとオシレータの動作が不安定になったり、予想以上の電流を消費する事があります。全てのデバイスは、OSC1 ピンに外部クロックを入力した状態で「 小値」で動作をテストしています。外部クロック入力を使用した場合、「 大値」のサイクル時間の制限値はいずれのデバイスの場合も「DC」( クロックなし ) です。

2: 設計上の仕様3: 遅い方のクロック周期4: これらの電圧の許容誤差を確保するには、デバイスのなるべく近くで VDD と VSS にデカップリング コン

デンサを接続する必要があります。0.1 F のコンデンサと 0.01 F のコンデンサを並列に接続する事を推奨します。

5: 設計上の目標です。この目標を満たす事ができない場合は 大値を大きくできますが、 小値は変更できません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 387

Page 388: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-10: TIMER0 と TIMER1 の外部クロック タイミング

表 27-6: TIMER0 と TIMER1 の外部クロック要件標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラメータ番号

記号 特性 小値 代表値 † 大値 単位 条件

40* TT0H T0CKI High パルス幅 プリスケーラなし 0.5 TCY + 20 — — ns

プリスケーラあり 10 — — ns

41* TT0L T0CKI Low パルス幅 プリスケーラなし 0.5 TCY + 20 — — ns

プリスケーラあり 10 — — ns

42* TT0P T0CKI 周期 以下のいずれか大きい方 :

20 またはTCY + 40

N

— — ns N = プリスケーラの値 (2, 4, ..., 256)

45* TT1H T1CKI High 時間

同期、プリスケーラなし 0.5 TCY + 20 — — ns

同期、プリスケーラあり 15 — — ns

非同期 30 — — ns

46* TT1L T1CKI Low 時間

同期、プリスケーラなし 0.5 TCY + 20 — — ns

同期、プリスケーラあり 15 — — ns

非同期 30 — — ns

47* TT1P T1CKI 入力周期

同期 以下のいずれか大きい方 :

30 またはTCY + 40

N

— — ns N = プリスケーラの値 (1, 2, 4, 8)

非同期 60 — — ns

48 FT1 Timer1 オシレータ入力周波数レンジ (T1OSCEN ビットをセットしてオシレータを有効にした場合 )

32.4 32.768 33.1 kHz

49* TCKEZTMR1 外部クロックエッジからタイマのインクリメントまでの遅延

2 TOSC — 7 TOSC — タイマの動作は同期モード

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5 V、25 °C 時のものです。これらのパラメータは設計上の目安であり、

テストはしていません。

T0CKI

T1CKI

40 41

42

45 46

47 49

TMR0 orTMR1

DS41350D_JP - p. 388 Preliminary 2010 Microchip Technology Inc.

Page 389: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-11: キャプチャ / コンペア /PWM (CCP) のタイミング

表 27-7: キャプチャ / コンペア /PWM (CCP) の要件

表 27-8: PIC18F1XK50/PIC18LF1XK50 の A/D コンバータ (ADC) の特性 :

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラ

メータ 番号

記号 特性 小値 代表値 † 大値 単位 条件

CC01* TccL CCPx 入力 Low 時間 プリスケーラなし 0.5TCY + 20 — — ns

プリスケーラあり 20 — — ns

CC02* TccH CCPx 入力 High 時間 プリスケーラなし 0.5TCY + 20 — — ns

プリスケーラあり 20 — — ns

CC03* TccP CCPx 入力周期 3TCY + 40 N

— — ns N = プリスケーラの値 (1, 4, 16)

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5 V、25 °C 時のものです。これらのパラメータは設計上の目安であり、

テストはしていません。

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラ

メータ 番号

記号 特性 小値 代表値 † 大値 単位 条件

AD01 NR 分解能 — — 10 ビット

AD02 EIL 積分直線性誤差 — — ±2 LSb VREF = 5.0 V

AD03 EDL 微分直線性誤差 — — 1.5 LSb ノーミッシング コードVREF = 5.0 V

AD04 EOFF オフセット誤差 — — ±3 LSb VREF = 5.0 V

AD05 EGN ゲイン誤差 — — ±3 LSb VREF = 5.0 V

AD06 VREF 基準電圧 = VREF+ - VREF-の変化 (3) 1.8 — VDD V 1.8 VREF+ VDD + 0.3 VVSS - 0.3 V VREF- VREF+ - 1.8 V

AD07 VAIN フルスケール レンジ VSS — VREF V

AD08 ZAIN アナログ電圧源の推奨インピーダ

ンス

— — 2.5 k 入力ピンに外付けの 0.01 F コンデンサを

使用した場合、さらに高い値が可能

AD09* IREF VREF 入力電流 (3) 10 — 1000 A VAIN のアクイジション時 VHOLD と VAIN の差に基づく

— — 10 A A/D 変換サイクル中

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5.0 V、25 °C 時のものです。これらのパラメータは設計上の目安であり、

テストはしていません。

Note 1: 総絶対誤差には、積分直線性誤差、微分直線性誤差、オフセット誤差、ゲイン誤差が含まれます。

2: A/D 変換結果は、入力電圧が増大しても減少する事はありません。また、ミッシング コードもありません。

3: ADC の VREF は、外部 VREF、VDD ピン、FVR のうちリファレンス入力として選択したものとなります。

4: ADC モジュールを OFF にした場合、リーク電流以外にモジュールの消費電流は発生しません。パワーダウン電流の仕

様は、この ADC モジュールのリーク電流も含んだ値です。

Note: 負荷条件については、図 27-2 を参照してください。

(Capture mode)

CC01 CC02

CC03

CCPx

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 389

Page 390: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-12: A/D 変換のタイミング

表 27-9: A/D 変換の要件

パラメータ 番号

記号 特性 小値 大値 単位 条件

130 TAD A/D クロック周期 0.7 25.0(1) s TOSC ベース、VREF 3.0 V

TBD 1 s A/D RC モード

131 TCNV 変換時間 ( アクイジション時間を除く )(2)

11 12 TAD

132 TACQ アクイジション時間 (3) 1.4TBD

——

ss

-40 ~ +85C 0 C ~ +85 C

135 TSWC 変換サンプルのスイッチング時間 — (Note 4)

TBD TDIS 放電時間 0.2 — s

凡例 : TBD = 未定

Note 1: A/D クロック周期の時間は、デバイスの周波数と TAD クロックの分周値によって異なります。

2: ADRES レジスタは次の TCY サイクルで読み出しが可能です。

3: 変換後に電圧がフルスケールで変化 (VDD から VSS または VSS から VDD) した場合にホールド コンデンサが「新しい」入力電圧を取得するのにかかる時間です。入力チャンネルのソース インピーダンス (RS)は 50 です。

4: デバイスクロックの次のサイクルです。

131

130

132

BSF ADCON0, GO

Q4

A/D CLK

A/D DATA

ADRES

ADIF

GO

SAMPLE

OLD_DATA

SAMPLING STOPPED

DONE

NEW_DATA

(Note 2)

9 8 7 2 1 0

Note 1: A/D 変換のクロック源に RC を選択した場合、A/D 変換開始前に TCY の遅延が発生します。この遅延により、SLEEP命令の実行が可能になります。

2: これは 小の RC 遅延 ( 代表値は 100 ns) で、この遅延の間にアナログ入力からホールド コンデンサを切断します。

.. . . . .

TCY

DS41350D_JP - p. 390 Preliminary 2010 Microchip Technology Inc.

Page 391: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 27-10: コンパレータの仕様

表 27-11: CVREF 電圧リファレンスの仕様

表 27-12: 固定電圧リファレンス (FVR) の仕様

動作条件 : 1.8 V < VDD < 3.6 V、-40 °C < TA < +125 °C ( 別途記載のある場合を除く )

パラメータ番号

記号 特性 小値 代表値 大値 単位 備考

CM01 VIOFF 入力オフセット電圧 ——

±7.5—

±50±80

mVmV

通常電力モード低電力モード

CM02 VICM 入力コモンモード電圧 0 — VDD V

CM03 CMRR コモンモード除去比 55 — — dB

CM04 TRESP 応答時間 — 150 400 ns Note 1

CM05 TMC2OV コンパレータのモード変更から出力確定までの時間 *

— — 10 s

CM06 CHYSTER コンパレータ ヒステリシス — 65 — mV

* これらのパラメータは特性データであり、テストはしていません。

Note 1: 応答時間は、コンパレータの一方の入力を VDD/2 とし、もう一方の入力を VSS から VDD に遷移させて計測しています。

動作条件 : 1.8 V < VDD < 3.6 V、-40 °C < TA < +125 °C ( 別途記載のある場合を除く )

パラメータ番号

記号 特性 小値 代表値 大値 単位 備考

CV01* CLSB ステップサイズ (2) ——

VDD/24VDD/32

——

VV

ローレンジ (VRR = 1)ハイレンジ (VRR = 0)

CV02* CACC 絶対精度 ——

——

1/41/2

LSbLSb

ローレンジ (VRR = 1)ハイレンジ (VRR = 0)

CV03* CR 単位抵抗値 (R) — 2k —

CV04* CST セトリングタイム (1) — — 10 s

* これらのパラメータは特性データであり、テストはしていません。

Note 1: セトリングタイムは、CVRR = 1とし、CVR3:CVR0 を「0000」から「1111」へ遷移させて計測しています。

動作条件 : 1.8 V < VDD < 3.6 V、-40 °C < TA < +125 °C ( 別途記載のある場合を除く )

VR 電圧リファレンスの仕様標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラメータ 番号

記号 特性 小値 代表値 大値 単位 備考

VR01 VROUT VR 電圧出力 TBD 1.2 TBD V

VR02 TCVOUT 電圧ドリフト温度係数 — TBD TBD ppm/C

VR03 VROUT/VDD

VDD レギュレーションに対する電圧ドリフト

— TBD — V/V

VR04 TSTABLE セトリングタイム — TBD TBD s

凡例 : TBD = 未定

* これらのパラメータは特性データであり、テストはしていません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 391

Page 392: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-13: USART 同期送信 ( マスタ / スレーブ ) のタイミング

表 27-13: USART 同期送信の要件

図 27-14: USART 同期受信 ( マスタ / スレーブ ) のタイミング

表 27-14: USART 同期受信の要件

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラメータ 番号

記号 特性 小値 大値 単位 条件

US120 TCKH2DTV 同期送信 ( マスタとスレーブ )クロック high からデータ出力確定までの時間

3.0 ~ 5.5 V — 80 ns

1.8 ~ 5.5 V — 100 ns

US121 TCKRF クロック出力の立ち上がり / 立ち下がり時間 ( マスタモード )

3.0 ~ 5.5 V — 45 ns

1.8 ~ 5.5 V — 50 ns

US122 TDTRF データ出力の立ち上がり / 立ち下がり時間

3.0 ~ 5.5 V — 45 ns

1.8 ~ 5.5 V — 50 ns

標準動作条件 ( 特に指定のない場合 )動作温度 -40 °C TA +125 °C

パラメータ 番号

記号 特性 小値 大値 単位 条件

US125 TDTV2CKL 同期受信 ( マスタとスレーブ )CK 前のデータホールド (DT ホールドタイム ) 10 — ns

US126 TCKL2DTL CK 後のデータホールド (DT ホールドタイム ) 15 — ns

Note: 負荷条件については、図 27-2 を参照してください。

US121 US121

US120 US122

CK

DT

Note: 負荷条件については、図 27-2 を参照してください。

US125

US126

CK

DT

DS41350D_JP - p. 392 Preliminary 2010 Microchip Technology Inc.

Page 393: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-15: SPI マスタモードのタイミング (CKE = 0、SMP = 0)

図 27-16: SPI マスタモードのタイミング (CKE = 1、SMP = 1)

SS

SCK(CKP = 0)

SCK(CKP = 1)

SDO

SDI

SP70

SP71 SP72

SP73SP74

SP75, SP76

SP78SP79

SP80

SP79SP78

MSb LSbbit 6 - - - - - -1

MSb In LSb Inbit 6 - - - -1

Note: 負荷条件については、図 27-2 を参照してください。

SS

SCK(CKP = 0)

SCK(CKP = 1)

SDO

SDI

SP81

SP71 SP72

SP74

SP75, SP76

SP78SP80

MSb

SP79SP73

MSb In

bit 6 - - - - - -1

LSb Inbit 6 - - - -1

LSb

Note: 負荷条件については、図 27-2 を参照してください。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 393

Page 394: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

図 27-17: SPI スレーブモードのタイミング (CKE = 0)

図 27-18: SPI スレーブモードのタイミング (CKE = 1)

SS

SCK(CKP = 0)

SCK(CKP = 1)

SDO

SDI

SP70

SP71 SP72

SP73

SP74

SP75, SP76 SP77

SP78SP79

SP80

SP79SP78

MSb LSbbit 6 - - - - - -1

MSb In bit 6 - - - -1 LSb In

SP83

Note: 負荷条件については、図 27-2 を参照してください。

SS

SCK(CKP = 0)

SCK(CKP = 1)

SDO

SDI

SP70

SP71 SP72

SP82

SP74

SP75, SP76

MSb bit 6 - - - - - -1 LSb

SP77

MSb In bit 6 - - - -1 LSb In

SP80

SP83

Note: 負荷条件については、図 27-2 を参照してください。

DS41350D_JP - p. 394 Preliminary 2010 Microchip Technology Inc.

Page 395: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 27-15: SPI モードの要件

図 27-19: I2C™ バス スタート / ストップビットのタイミング

パラメータ 番号

記号 特性 小値 代表値 † 大値 単位 条件

SP70* TSSL2SCH, TSSL2SCL

SSから SCKまたは SCK入力までの時間 TCY — — ns

SP71* TSCH SCK 入力 high 時間 ( スレーブモード ) TCY + 20 — — ns

SP72* TSCL SCK 入力 low 時間 ( スレーブモード ) TCY + 20 — — ns

SP73* TDIV2SCH, TDIV2SCL

SDI データ入力から SCK エッジまでのセットアップ時間

100 — — ns

SP74* TSCH2DIL, TSCL2DIL

SDI データ入力から SCK エッジまでのホールドタイム

100 — — ns

SP75* TDOR SDO データ出力の立ち上がり時間

3.0 ~ 5.5 V — 10 25 ns

1.8 ~ 5.5 V — 25 50 ns

SP76* TDOF SDO データ出力の立ち下がり時間

— 10 25 ns

SP77* TSSH2DOZ SSから SDO 出力ハイインピーダンスまでの時間

10 — 50 ns

SP78* TSCR SCK 出力の立ち上がり時間 ( マスタモード )

3.0 ~ 5.5 V — 10 25 ns

1.8 ~ 5.5 V — 25 50 ns

SP79* TSCF SCK 出力の立ち下がり時間 ( マスタモード ) — 10 25 ns

SP80* TSCH2DOV,TSCL2DOV

SCK エッジ後の SDO データ出力有効期間

3.0 ~ 5.5 V — — 50 ns

1.8 ~ 5.5 V — — 145 ns

SP81* TDOV2SCH,TDOV2SCL

SCK エッジ前の SDO データ出力セットアップ時間

Tcy — — ns

SP82* TSSL2DOV SSエッジから SDO データ出力確定までの時間

— — 50 ns

SP83* TSCH2SSH,TSCL2SSH

SCK エッジから SS までの時間 1.5TCY + 40 — — ns

* これらのパラメータは特性データであり、テストはしていません。

† 「代表値」欄のデータは、特に記載のない限り 5.0 V、25 °C 時のものです。これらのパラメータは設計上

の目安として記載してあるだけで、テストはしていません。

SP91

SP92

SP93SCL

SDA

StartCondition

StopCondition

SP90

Note: 負荷条件については、図 27-2 を参照してください。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 395

Page 396: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 27-16: I2C™ バス スタート / ストップビットの要件

図 27-20: I2C™ バスデータのタイミング

パラメータ番号

記号 特性 小値 代表値 大値 単位 条件

SP90* TSU:STA スタート条件 100 kHz モード 4700 — — ns リピートスタート条件の場合のみ該当セットアップ時間 400 kHz モード 600 — —

SP91* THD:STA スタート条件 100 kHz モード 4000 — — ns この期間後、 初のクロックパルスが生成されるホールドタイム 400 kHz モード 600 — —

SP92* TSU:STO ストップ条件 100 kHz モード 4700 — — ns

セットアップ時間 400 kHz モード 600 — —

SP93 THD:STO ストップ条件 100 kHz モード 4000 — — ns

ホールドタイム 400 kHz モード 600 — —

* これらのパラメータは特性データであり、テストはしていません。

SP90

SP91 SP92

SP100SP101

SP103

SP106SP107

SP109SP109

SP110

SP102

SCL

SDAIn

SDAOut

Note: 負荷条件については、図 27-2 を参照してください。

DS41350D_JP - p. 396 Preliminary 2010 Microchip Technology Inc.

Page 397: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

表 27-17: I2C™ バスデータの要件

パラメータ番号

記号 特性 小値大値

単位 条件

SP100* THIGH クロック High 時間 100 kHz モード 4.0 — s デバイスの動作周波数が1.5 MHz 以上である事が必要

400 kHz モード 0.6 — s デバイスの動作周波数が10 MHz 以上である事が必要

SSP モジュール 1.5TCY —

SP101* TLOW クロック Low 時間 100 kHz モード 4.7 — s デバイスの動作周波数が1.5 MHz 以上である事が必要

400 kHz モード 1.3 — s デバイスの動作周波数が10 MHz 以上である事が必要

SSP モジュール 1.5TCY —

SP102* TR SDA および SCL立ち上がり時間

100 kHz モード — 1000 ns

400 kHz モード 20 + 0.1 CB 300 ns CB の仕様は10 ~ 400 pF

SP103* TF SDA および SCL立ち下がり時間

100 kHz モード — 250 ns

400 kHz モード 20 + 0.1 CB 250 ns CB の仕様は10 ~ 400 pF

SP90* TSU:STA スタート条件セットアップ時間

100 kHz モード 4.7 — s リピートスタート条件の場合のみ該当400 kHz モード 0.6 — s

SP91* THD:STA スタート条件ホールド タイム

100 kHz モード 4.0 — s この期間後、 初のクロックパルスが生成される

400 kHz モード 0.6 — s

SP106* THD:DAT データ入力ホールドタイム

100 kHz モード 0 — ns

400 kHz モード 0 0.9 s

SP107* TSU:DAT データ入力セットアップ時間

100 kHz モード 250 — ns (Note 2)

400 kHz モード 100 — ns

SP92* TSU:STO ストップ条件セットアップ時間

100 kHz モード 4.7 — s

400 kHz モード 0.6 — s

SP109* TAA クロックから出力確定までの時間

100 kHz モード — 3500 ns (Note 1)

400 kHz モード — — ns

SP110* TBUF バスフリー時間 100 kHz モード 4.7 — s 新しい送信を開始する前にバスが解放されている必要がある時間

400 kHz モード 1.3 — s

SP CB バス容量性負荷 — 400 pF

* これらのパラメータは特性データであり、テストはしていません。

Note 1: デバイスがトランスミッタの場合、意図しないスタート / ストップ条件の発生を防ぐために SCL の立ち下がりエッジの未定義領域をブリッジする内部 小遅延時間 (min. 300 ns) を確保する必要があります。

2: 高速モード (400 kHz) の I2C バスデバイスを標準モード (100 kHz) の I2C バスシステムで使用する事は可能ですが、その場合も TSU:DAT 250 ns の要件を満たす必要があります。デバイスが SCL 信号の low 期間をストレッチしない場合、自動的にこのケースになります。このようなデバイスが SCL 信号の low 期間をストレッチする場合、標準モードの I2C バス仕様に従い、SCL ラインを解放する TR max. + TSU:DAT = 1000 + 250 = 1250 ns 前に SDA ラインに次のデータビットを出力する必要があります。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 397

Page 398: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 398 Preliminary 2010 Microchip Technology Inc.

Page 399: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

28.0 DC 特性と AC 特性のグラフと表

現時点でグラフと表はありません。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 399

Page 400: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 400 Preliminary 2010 Microchip Technology Inc.

Page 401: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

29.0 パッケージ情報

29.1 パッケージのマーキング情報

凡例 : XX...X お客様固有情報Y 年コード ( 西暦の下 1 桁 )YY 年コード ( 西暦の下 2 桁 )WW 週コード (1 月の第 1 週が「01」)NNN 英数字のトレーサビリティ コード つや消し錫 (Sn) の使用を示す鉛フリーの JEDEC マーク* 本パッケージは鉛フリーです。鉛フリー JEDC マーク ( ) は

外箱に表記しています。

Note: マイクロチップ社の製品番号が 1 行に収まりきらない場合は複数行を使用します。この場合お客様固有情報に使用できる文字数が制限されます。

3e

3e

20-Lead PDIP

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

Example

PICXXFXXXX-I/P0810017

20-Lead SSOP

XXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

Example

PICXXFXXXX-I/SS

0810017

20-Lead SOIC (.300”)

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

Example

PICXXFXXXX-I/SO

0810017

XXXXXXX

20-Lead QFN

XXXXXXXYYWWNNN

18F14K50

Example

-I/ML0810017

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 401

Page 402: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

29.2 パッケージの詳細

ここでは、各パッケージの技術的詳細について説明します。

20 ピン プラスチック デュアル インライン (P) – 300 mil ボディ [PDIP]

Notes:

1. 1 ピンマークの場所にはばらつきがありますが、必ず斜線部分内にあります。

2. § 特記項目

3. D と E1 の寸法はモールドのはみ出しや突出部を含みません。モールドのはみ出しや突出部は側面から .010" を超えません。

4. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、 理論的に正確な値、公差なしで表示Microchip Technology Drawing C04-019B

Note: 新のパッケージ図面は、弊社ウェブサイト (http://www.microchip.com/packaging) で『Microchip Packaging Specification』を参照してください。

単位 インチ

寸法限界 小 公称 大

ピン数 N 20

ピッチ e .100 BSC

トップからシーティングまで A – – .210

モールド パッケージ厚 A2 .115 .130 .195

ベースからシーティングまで A1 .015 – –

ショルダー間幅 E .300 .310 .325

モールド パッケージ幅 E1 .240 .250 .280

全長 D .980 1.030 1.060

先端からシーティング プレーンまで L .115 .130 .150

リード厚 c .008 .010 .015

上側リード幅 b1 .045 .060 .070

下側リード幅 b .014 .018 .022

全幅 § eB – – .430

N

E1NOTE 1

D

1 2 3

A

A1

A2

L

e

b1

b

E

c

eB

DS41350D_JP - p. 402 Preliminary 2010 Microchip Technology Inc.

Page 403: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

20 ピン プラスチック シュリンク スモール アウトライン (SS) – 5.30 mm ボディ [SSOP]

Notes:

1. 1 ピンマークの場所にはばらつきがありますが、必ず斜線部分内にあります。

2. D と E1 の寸法はモールドのはみ出しや突出部を含みません。モールドのはみ出しや突出部は側面から 0.20 mm を超えません。

3. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、 理論的に正確な値、公差なしで表示

REF: 基準寸法、通常は公差を含まない、情報としてのみ使用される値Microchip Technology Drawing C04-072B

Note: 新のパッケージ図面は、弊社ウェブサイト (http://www.microchip.com/packaging) で『Microchip Packaging Specification』を参照してください。

φ

LL1

A2c

eb

A1

A

1 2

NOTE 1

E1

E

D

N

単位 ミリメートル

寸法限界 小 公称 大

ピン数 N 20

ピッチ e 0.65 BSC

全高 A – – 2.00

モールド パッケージ厚 A2 1.65 1.75 1.85

スタンドオフ A1 0.05 – –

全幅 E 7.40 7.80 8.20

モールド パッケージ幅 E1 5.00 5.30 5.60

全長 D 6.90 7.20 7.50

足長 L 0.55 0.75 0.95

フットプリント L1 1.25 REF

リード厚 c 0.09 – 0.25

足角 0° 4° 8°

リード幅 b 0.22 – 0.38

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 403

Page 404: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

20 ピン プラスチック スモール アウトライン (SO) – ワイド、7.50 mm ボディ [SOIC]

Notes:

1. 1 ピンマークの場所にはばらつきがありますが、必ず斜線部分内にあります。

2. § 特記項目

3. D と E1 の寸法はモールドのはみ出しや突出部を含みません。モールドのはみ出しや突出部は側面から 0.15 mm を超えません。

4. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、 理論的に正確な値、公差なしで表示

REF: 参考寸法、通常は公差を含まない、情報としてのみ使用される値Microchip Technology Drawing C04-094B

Note: 新のパッケージ図面は、弊社ウェブサイト (http://www.microchip.com/packaging) で『Microchip Packaging Specification』を参照してください。

単位 ミリメートル

寸法限界 小 公称 大

ピン数 N 20

ピッチ e 1.27 BSC

全高 A – – 2.65

モールド パッケージ厚 A2 2.05 – –

スタンドオフ § A1 0.10 – 0.30

全幅 E 10.30 BSC

モールド パッケージ幅 E1 7.50 BSC

全長 D 12.80 BSC

面取り部 ( オプション ) h 0.25 – 0.75

足長 L 0.40 – 1.27

フットプリント L1 1.40 REF

足角 0° – 8°

リード厚 c 0.20 – 0.33

リード幅 b 0.31 – 0.51

モールドドラフト角トップ 5° – 15°

モールドドラフト角ボトム 5° – 15°

β

D

EE1

eb

1 2 3

NOTE 1

A

A1

A2

hh

c

L1

L

φ

α

N

DS41350D_JP - p. 404 Preliminary 2010 Microchip Technology Inc.

Page 405: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

20 ピン プラスチック クアッド フラット、リードレス パッケージ (MQ) – 5x5x0.9 mm ボディ[QFN]

Notes:

1. 1 ピンマークの場所にはばらつきがありますが、必ず斜線部分内にあります。

2. パッケージは切削切り出しされています。

3. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、 理論的に正確な値、公差なしで表示

REF: 参考寸法、通常は公差を含まない、情報としてのみ使用される値Microchip Technology Drawing C04-139B

Note: 新のパッケージ図面は、弊社ウェブサイト (http://www.microchip.com/packaging) で『Microchip Packaging Specification』を参照してください。

単位 ミリメートル

寸法限界 小 公称 大

ピン数 N 20

ピッチ e 0.65 BSC

全高 A 0.80 0.90 1.00

スタンドオフ A1 0.00 0.02 0.05

コンタクト厚 A3 0.20 REF

全幅 E 5.00 BSC

露出パッド幅 E2 3.15 3.25 3.35

全長 D 5.00 BSC

露出パッド長 D2 3.15 3.25 3.35

コンタクト幅 b 0.25 0.30 0.35

コンタクト長 L 0.35 0.40 0.45

コンタクトから露出パッドまで K 0.20 - -

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 405

Page 406: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NOTES:

DS41350D_JP - p. 406 Preliminary 2010 Microchip Technology Inc.

Page 407: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

補遺 A: 改訂履歴

リビジョン A (2008 年 5 月 )

PIC18F1XK50/PIC18LF1XK50 データシートの初版リリース

リビジョン B (2008 年 6 月 )

27.4 DC 特性の表を改訂しました。

リビジョン C (2009 年 4 月 )

データシートのタイトルを変更しました。製品の機能のページを改訂しました。表 1-2、表 3-1、表 3-2 を改訂しました。セクション 9.1 に Note 3 を追加しました。レジスタ 14-1、例 16-1、セクション 18.8.4、レジスタ 18-3、表 20-2、セクション 22.2.1、22.2.2、22.5.1.1、22.7、表 23-4、27-1、27-2、27-3、27-4、27-8 を改訂しました。

リビジョン D (2010 年 5 月 )

20 ピン PDIP、SSOP、SOIC のパッケージ図を改訂しました。20 ピン QFN のパッケージ図を追加しました。表 1、表 1-1、図 2-1 を改訂しました。セクション 2.11.1( ロースピード動作 ) に Note を追加しました。表 3-1、表 3-2、セクション 4 ( フラッシュ プログラムメモリ )、セクション 5 ( データ EEPROM メモリ )、例 5-2、表 5-1 を改訂しました。レジスタ 7-4、レジスタ 7-8 から Note 1 を削除しました。表 9-1、表 9-3、セクション14.1 (ECCPの出力とコンフィグレーション )、14.4.4(拡張PWMの自動シャットダウン モード )を改訂しました。レジスタ 14-2 に Note 4 を追加しました。図 14-10、式 17-1、表 18-3、表 20-3、式 21-1 を改訂しました。セクション 21.1.3 (VSS にクランプした出力 )を削除しました。図 21-1、表 21-1、表 23-4、表 24-1を改訂しました。表 24-1 に Note 2 を追加しました。レジスタ 24-6 を改訂しました。表 24-3 から Note 1 を削除しました。セクション 27 の表を改訂しました。20 ピン QFN パッケージのマーキング情報と詳細情報を追加しました。製品識別システムのセクションを改訂しました。その他、若干の訂正を加えました。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 407

Page 408: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

補遺 B: デバイス間の違い

表 B-1 に、このデータシートに記載されているデバイス間の違いを示します。

表 B-1: デバイス間の違い

機能 PIC18F13K50 PIC18F14K50 PIC18LF13K50 PIC18F26K20 PIC18LF14K50 PIC18F44K20 PIC18F45K20 PIC18F46K20

プログラムメモリ ( バイト数 )

8192 16384 32768 65536 8192 16384 32768 65536

プログラム命令( 命令数 )

4096 8192 16384 32768 4096 8192 16384 32768

割り込み要因 19 19 19 19 20 20 20 20

I/O ポート ポート A、B、C、(E)

ポート A、B、C、(E)

ポート A、B、C、(E)

ポート A、B、C、(E)

ポート A、B、C、D、E

ポート A、B、C、D、E

ポート A、B、C、D、E

ポート A、B、C、D、E

キャプチャ /コンペア /PWM モジュール

1 1 1 1 1 1 1 1

拡張キャプチャ /コンペア /PWM モジュール

1 1 1 1 1 1 1 1

パラレル通信 (PSP) なし なし なし なし あり あり あり あり

10 ビット ADCモジュール

11 入力チャンネル

11 入力チャンネル

11 入力チャンネル

11 入力チャンネル

14 入力チャンネル

14 入力チャンネル

14 入力チャンネル

14 入力チャンネル

パッケージ 20 ピン PDIP20 ピン SOIC20 ピン SSOP20 ピン QFN

20 ピン PDIP20 ピン SOIC20 ピン SSOP20 ピン QFN

20 ピン PDIP20 ピン SOIC20 ピン SSOP20 ピン QFN

28 ピン PDIP28 ピン SOIC28 ピン SSOP28 ピン QFN

20 ピン PDIP20 ピン SOIC20 ピン SSOP20 ピン QFN

40 ピン PDIP44 ピン TQFP44 ピン QFN

40 ピン PDIP44 ピン TQFP44 ピン QFN

40 ピン PDIP44 ピン TQFP44 ピン QFN

DS41350D_JP - p. 408 Preliminary 2010 Microchip Technology Inc.

Page 409: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

索引

数字

2 段階起動 ........................................................................ 2932 ワード命令

例 ............................................................................... 34

AA/D

アクイジション時間の選択と設定 ........................... 212アナログ ポート ピンのコンフィグレーション ....... 223関連レジスタ ........................................................... 223仕様 .......................................................................... 389変換 .......................................................................... 214放電 .......................................................................... 215

A/D コンバータ→ ADC 参照ACKSTAT ........................................................................ 171ACKSTAT ステータスフラグ ........................................... 171AC 特性

工業用温度レンジと拡張温度レンジ ....................... 381負荷条件 ................................................................... 380

ADC ................................................................................. 211A/D 変換の開始 ........................................................ 213アクイジション時間の計算 ...................................... 221アクイジションの要件 ............................................. 221基準電圧 (VREF) ....................................................... 212スリープ時の動作 .................................................... 215設定 .......................................................................... 212ソース インピーダンス ............................................ 221チャンネル選択 ........................................................ 212電源管理 ................................................................... 215動作 .......................................................................... 214特殊イベントトリガ ................................................. 215内部サンプリング スイッチ (RSS) インピーダンス . 221ブロック図 ............................................................... 211変換クロック ........................................................... 212変換結果のフォーマット ......................................... 213変換手順 ................................................................... 216ポートの設定 ........................................................... 212割り込み ................................................................... 213

ADCON0 レジスタ ........................................................... 217ADCON1 レジスタ ........................................................... 218ADCON2 レジスタ ........................................................... 219ADDFSR .......................................................................... 354ADDLW ............................................................................ 317ADDULNK ........................................................................ 354ADDWF ............................................................................ 317ADDWFC ......................................................................... 318ADRESH レジスタ (ADFM = 0) ....................................... 220ADRESH レジスタ (ADFM = 1) ....................................... 220ADRESL レジスタ (ADFM = 0) ........................................ 220ADRESL レジスタ (ADFM = 1) ........................................ 220ANDLW ............................................................................ 318ANDWF ............................................................................ 319ANSEL ( ポートアナログ制御 ) .......................................... 98ANSELH レジスタ ............................................................. 99ANSEL レジスタ ................................................................ 98

BBAUDCON レジスタ ........................................................ 194baud レート ジェネレータ ............................................... 167BC .................................................................................... 319BCF .................................................................................. 320BF .................................................................................... 171BF ステータスフラグ ....................................................... 171

BN .................................................................................... 320BNC ................................................................................. 321BNN ................................................................................. 321BNOV .............................................................................. 322BNZ ................................................................................. 322BOR →「ブラウンアウト リセット」参照BOV ................................................................................. 325BRA ................................................................................. 323BRG →「baud レート ジェネレータ」参照BSF .................................................................................. 323BTFSC ............................................................................. 324BTFSS ............................................................................. 324BTG ................................................................................. 325BZ .................................................................................... 326

CCALL ................................................................................ 326CALLW ............................................................................ 355CCP1CON レジスタ ........................................................ 117CLRF ............................................................................... 327CLRWDT ......................................................................... 327CM1CON0 レジスタ ........................................................ 231CM2CON0 レジスタ ........................................................ 232CM2CON1 レジスタ ........................................................ 235COMF .............................................................................. 328CONFIG1H レジスタ ............................................... 295, 296CONFIG1L レジスタ ....................................................... 295CONFIG2H レジスタ ....................................................... 298CONFIG2L レジスタ ....................................................... 297CONFIG3H レジスタ ....................................................... 299CONFIG4L レジスタ ....................................................... 299CONFIG5H レジスタ ....................................................... 300CONFIG5L レジスタ ....................................................... 300CONFIG6H レジスタ ....................................................... 301CONFIG6L レジスタ ....................................................... 301CONFIG7H レジスタ ....................................................... 302CONFIG7L レジスタ ....................................................... 302CPFSEQ .......................................................................... 328CPFSGT .......................................................................... 329CPFSLT ........................................................................... 329CPU の特殊機能 .............................................................. 293CVREF 電圧リファレンスの仕様 ..................................... 391C コンパイラ

MPLAB C18 ............................................................. 362

DDAW ................................................................................ 330DCFSNZ .......................................................................... 331DC 特性

拡張温度レンジと工業用温度レンジ ....................... 376工業用温度レンジと拡張温度レンジ ....................... 366

DC 特性と AC 特性

グラフと表 ............................................................... 399DECF ............................................................................... 330DECFSZ .......................................................................... 331DEVID1 レジスタ ............................................................ 303DEVID2 レジスタ ............................................................ 303

EECCPAS レジスタ ........................................................... 129EECON1 レジスタ ....................................................... 53, 62

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 409

Page 410: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

EUSART ........................................................................... 183baud レート ジェネレータ (BRG)

baud レートエラー、計算 ................................ 195baud レート、非同期モード ............................ 196関連レジスタ ................................................... 195計算式 .............................................................. 195高 baud レート選択ビット (BRGH ビット ) .... 195自動 baud レート検出 ...................................... 199

クロック極性

同期モード ....................................................... 203データ極性

同期モード ....................................................... 203非同期受信 ....................................................... 188非同期送信 ....................................................... 185

同期スレーブモード ................................................. 207関連レジスタ、受信 ......................................... 209関連レジスタ、送信 ......................................... 208受信 .................................................................. 208送信 .................................................................. 207

同期マスタモード .................................................... 203関連レジスタ、受信 ......................................... 207関連レジスタ、送信 ......................................... 205受信 .................................................................. 205送信 .................................................................. 203

非同期モード ........................................................... 18512 ビット ブレークの送受信 ........................... 2029 ビットアドレス検出モードの実行手順 ......... 190baud レート ジェネレータ (BRG) .................... 195関連レジスタ、受信 ......................................... 191関連レジスタ、送信 ......................................... 187クロック精度 ................................................... 192トランスミッタ ................................................ 185ブレークによる自動ウェイクアップ ............... 200レシーバ ........................................................... 188

割り込み

非同期受信 ....................................................... 189非同期送信 ....................................................... 186

GGOTO ............................................................................... 332

II/O ポート ........................................................................... 83I2C

関連するレジスタ .................................................... 179I2C モード (MSSP)

ACK シーケンスのタイミング ................................. 174baud レート ジェネレータ ....................................... 167I2C クロック速度と BRG ......................................... 167クロック アービトレーション ................................. 168クロック ストレッチ ................................................ 160

10 ビットスレーブ受信モード (SEN = 1) ........ 16010 ビットスレーブ送信モード ......................... 1607 ビットスレーブ受信モード (SEN = 1) .......... 1607 ビットスレーブ送信モード ........................... 160

クロック同期と CKP ビット (SEN = 1) ................... 161ジェネラルコール アドレスのサポート ................... 164シリアルクロック (RC3/SCK/SCL) ......................... 153ストップ条件のタイミング ...................................... 174スリープ動作 ........................................................... 175スレーブモード ........................................................ 152

アドレッシング ................................................ 152受信 .................................................................. 153送信 .................................................................. 153

動作 .......................................................................... 152

バスコリジョン

ストップ条件実行中 ........................................ 179リピートスタート条件実行中 .......................... 178

マスタモード ........................................................... 165受信 ................................................................. 171スタート条件のタイミング ............................. 169送信 ................................................................. 171動作 ................................................................. 166リピートスタート条件のタイミング ............... 170

マルチマスタ モード ............................................... 175マルチマスタ通信、バスコリジョンと

バス アービトレーション ................................ 175読み / 書きビット情報 (R/W ビット ) ............... 152, 153リセットの効果 ....................................................... 175レジスタ .................................................................. 148

ID ロケーション ....................................................... 293, 309INCF ................................................................................ 332INCFSZ ............................................................................ 333INFSNZ ............................................................................ 333INTCON2 レジスタ ............................................................ 70INTCON3 レジスタ ............................................................ 71INTCON レジスタ ........................................................ 69–71Inter-Integrated Circuit → I2C 参照

INTOSC の仕様 ....................................................... 384, 385IOCA レジスタ ................................................................... 86IOCB レジスタ ................................................................... 91IORLW ............................................................................. 334IORWF ............................................................................. 334IPR1 レジスタ ................................................................... 76IPR2 レジスタ ................................................................... 77IPR レジスタ ..................................................................... 76

LLATA レジスタ .................................................................. 86LATB レジスタ .................................................................. 91LATC レジスタ .................................................................. 95LFSR ................................................................................ 335

MMOVF .............................................................................. 335MOVFF ............................................................................ 336MOVLB ............................................................................ 336MOVLW ........................................................................... 337MOVSF ............................................................................ 355MOVSS ............................................................................ 356MOVWF ........................................................................... 337MPLAB ASM30 アセンブラ、リンカ、ライブラリアン .. 362MPLAB PM3 デバイス プログラマ .................................. 364MPLAB REAL ICE インサーキット エミュレータ

システム .................................................................. 363MPLAB SIM ソフトウェア シミュレータ ........................ 363MPLAB 統合開発環境ソフトウェア ................................. 361MPLINK オブジェクト リンカ /MPLIB オブジェクト

ライブラリアン ....................................................... 362MSSP

ACK パルス ...................................................... 152, 153I2C モード→「I2C モード」参照

SPI モード→「SPI モード」参照

SSPBUF レジスタ ................................................... 144SSPSR レジスタ ..................................................... 144モジュールの概要 .................................................... 139

MULLW ............................................................................ 338MULWF ............................................................................ 338

DS41350D_JP - p. 410 Preliminary 2010 Microchip Technology Inc.

Page 411: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

NNEGF ............................................................................... 339NOP ................................................................................. 339

OOSCCON レジスタ ...................................................... 20, 21OSCTUNE レジスタ .......................................................... 22

PP1A/P1B/P1C/P1D →「拡張キャプチャ / コンペア /PWM

(ECCP)」参照

PIE1 レジスタ .................................................................... 74PIE2 レジスタ .................................................................... 75PIE レジスタ ...................................................................... 74PIR1 レジスタ .................................................................... 72PIR2 レジスタ .................................................................... 73PIR レジスタ ...................................................................... 72POP ................................................................................. 340PORTA

LATA レジスタ ........................................................... 83PORTA レジスタ ....................................................... 83TRISA レジスタ ......................................................... 83関連するレジスタ ...................................................... 88仕様 .......................................................................... 385

PORTA レジスタ ............................................................... 85PORTB

LATB レジスタ ........................................................... 89PORTB レジスタ ....................................................... 89TRISB レジスタ ......................................................... 89関連するレジスタ ...................................................... 93

PORTB レジスタ ......................................................... 90, 94PORTC

LATC レジスタ .......................................................... 94PORTC レジスタ ....................................................... 94RC3/SCK/SCL ピン ................................................. 153TRISC レジスタ ......................................................... 94関連するレジスタ ...................................................... 97仕様 .......................................................................... 385

POR →「パワーオン リセット」参照

PRI_IDLE モード ............................................................. 240PRI_RUN モード .............................................................. 238PSTRCON レジスタ ........................................................ 134PUSH ............................................................................... 340PUSHL ............................................................................. 356PUSH および POP 命令 ..................................................... 31PWM (ECCP モジュール )

ステアリングの同期 ................................................. 136電源管理モードにおける動作 .................................. 137パルス ステアリング ................................................ 134フェイルセーフ クロックモニタと ECCP ............... 137リセットの影響 ........................................................ 137

PWM1CON レジスタ ....................................................... 133PWM モード→「拡張キャプチャ / コンペア /PWM」

参照 .......................................................................... 121

RRAM →「データメモリ」参照

RC_IDLE モード .............................................................. 241RC_RUN モード .............................................................. 238RCALL ............................................................................. 341RCON レジスタ ......................................................... 78, 280

初期化時のビット状態 ............................................. 286RCREG ............................................................................ 190RCSTA レジスタ .............................................................. 193RECON0 ( リファレンス制御 0) レジスタ ....................... 249

RECON1 ( リファレンス制御 1) レジスタ ...................... 250RECON2 ( リファレンス制御 2) レジスタ ...................... 250RESET ............................................................................. 341RETFIE ............................................................................ 342RETLW ............................................................................ 342RETURN .......................................................................... 343RLCF ............................................................................... 343RLNCF ............................................................................. 344RRCF ............................................................................... 344RRNCF ............................................................................ 345

SSCK ................................................................................. 139SDI ................................................................................... 139SDO ................................................................................. 139SEC_IDLE モード ............................................................ 240SEC_RUN モード ............................................................ 238SETF ............................................................................... 345SLEEP ............................................................................. 346SLRCON レジスタ .......................................................... 100SPBRG ............................................................................ 195SPBRGH ......................................................................... 195SPI モード

代表的なマスタ / スレーブ接続 ............................... 143SPI モード (MSSP)

SPI I/O の有効化 ...................................................... 143SPI クロック ........................................................... 144関連するレジスタ .................................................... 147シリアルクロック .................................................... 139シリアルデータ出力 ................................................ 139シリアルデータ入力 ................................................ 139スレーブ選択 ........................................................... 139スレーブ選択の同期 ................................................ 145スレーブモード ....................................................... 145代表的な接続 ........................................................... 143電力管理モードにおける動作 .................................. 147動作 ......................................................................... 142バスモード互換性 .................................................... 147マスタモード ........................................................... 144リセットの影響 ....................................................... 147

SRCON0 レジスタ .......................................................... 244SRCON1 レジスタ .......................................................... 245SR ラッチ ........................................................................ 243

関連レジスタ ........................................................... 245SS .................................................................................... 139SSP

代表的な SPI マスタ / スレーブ接続 ....................... 143SSPADD レジスタ ........................................................... 159SSPCON1 レジスタ ................................................ 141, 150SSPCON2 レジスタ ........................................................ 151SSPMSK レジスタ .......................................................... 158SSPOV ............................................................................ 171SSPOV ステータスフラグ ............................................... 171SSPSTAT レジスタ ................................................. 140, 149

R/W ビット ...................................................... 152, 153STKPTR レジスタ ............................................................. 31SUBFSR .......................................................................... 357SUBFWB ......................................................................... 346SUBLW ............................................................................ 347SUBULNK ........................................................................ 357SUBWF ............................................................................ 347SUBWFB ......................................................................... 348SWAPF ............................................................................ 348

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 411

Page 412: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

TT0CON レジスタ .............................................................. 101T1CON レジスタ .............................................................. 105T2CON レジスタ .............................................................. 111T3CON レジスタ .............................................................. 113TBLRD ............................................................................. 349TBLWT ............................................................................. 350Timer0 .............................................................................. 101

16 ビットモードにおける読み書き .......................... 102オーバーフロー割り込み ......................................... 103関連するレジスタ .................................................... 103仕様 .......................................................................... 388ソースエッジ選択 (T0SE ビット ) ........................... 102ソース選択 (T0CS ビット ) ...................................... 102動作 .......................................................................... 102プリスケーラ ........................................................... 103プリスケーラ選択 (T0PS2:T0PS0 ビット ) ............. 103プリスケーラの割り当て (PSA ビット ) .................. 103プリスケーラ割り当ての切り換え ........................... 103プリスケーラ→「プリスケーラ、Timer0」参照

Timer1 .............................................................................. 10516 ビット読み書きモード ........................................ 107CCP 特殊イベントトリガによるリセット ............... 108TMR1H レジスタ ..................................................... 105TMR1L レジスタ ...................................................... 105オーバーフロー割り込み ......................................... 105オシレータ ....................................................... 105, 107オシレータのレイアウト上の考慮事項 .................... 108関連するレジスタ .................................................... 110仕様 .......................................................................... 388動作 .......................................................................... 106リアルタイム クロックとしての使用法 ................... 109割り込み ................................................................... 108

Timer2 .............................................................................. 111関連するレジスタ .................................................... 112出力 .......................................................................... 112動作 .......................................................................... 111割り込み ................................................................... 112

Timer3 .............................................................................. 11316 ビット読み書きモード ........................................ 115TMR3H レジスタ ..................................................... 113TMR3L レジスタ ...................................................... 113オーバーフロー割り込み ................................. 113, 115オシレータ ....................................................... 113, 115関連するレジスタ .................................................... 116動作 .......................................................................... 114特殊イベントトリガ (CCP) ...................................... 116

Top-of-Stack へのアクセス ................................................ 30TRISA レジスタ ................................................................. 85TRISB レジスタ ........................................................... 90, 94TSTFSZ ............................................................................ 351TXREG ............................................................................. 185TXSTA レジスタ .............................................................. 192

BRGH ビット ........................................................... 195

UUniversal Serial Bus

RAM ......................................................................... 260メモリマップ ................................................... 260

UFRMH:UFRML レジスタ ....................................... 260アイパターン テスト イネーブル ............................. 257アドレス レジスタ (UADDR) ................................... 260エニュメレーション ................................................. 278エンドポイント制御 ................................................. 259オシレータの要件 .................................................... 276

階層型フレームワーク ............................................. 277概要 ................................................................. 253, 277関連レジスタ ........................................................... 276クラス仕様とドライバ ............................................. 278ステータスと制御 .................................................... 254速度 ......................................................................... 278外付けプルアップ抵抗 ............................................. 257ディスクリプタ ....................................................... 278電源 ......................................................................... 277電源モード ............................................................... 273

セルフパワー主体のデュアルパワー ............... 274セルフパワーのみ ............................................ 273バスパワーのみ ............................................... 273

転送の種類 ............................................................... 277内部トランシーバ .................................................... 255内部プルアップ抵抗 ................................................ 257バッファ ディスクリプタ ........................................ 261

BDnSTAT レジスタ (CPU モード ) .................. 262BDnSTAT レジスタ (SIE モード ) ................... 264アドレスのチェック ........................................ 264オーナーシップ ............................................... 261各バッファリング モードにおける割り当て ... 266ステータスと設定 ............................................ 261バイトカウント ............................................... 264ピンポン バッファリング ................................ 265メモリマップ ................................................... 265例 ..................................................................... 261レジスタ一覧 ................................................... 266

バッファ ディスクリプタ テーブル ......................... 261ピンポンバッファの設定 ......................................... 257ファームウェアとドライバ ..................................... 276フレーム .................................................................. 277フレーム番号レジスタ ............................................. 260割り込み .................................................................. 267

USB トランザクション .................................... 267USART

同期マスタモード

タイミング チャート、同期受信 ..................... 392タイミング チャート、同期送信 ..................... 392要件、同期受信 ............................................... 392要件、同期送信 ............................................... 392

USB RAMシリアル インターフェイス エンジン (SIE) .............. 35

USB モジュールの電気的仕様 ......................................... 378USB →「Universal Serial Bus」参照

VVREF →「ADC 基準電圧」を参照

WWCOL ...................................................... 169, 170, 171, 174WCOL ステータスフラグ ........................ 169, 170, 171, 174WDTCON レジスタ ......................................................... 305WPUA レジスタ ................................................................. 86WPUB レジスタ ................................................................. 91WWW アドレス ............................................................... 419WWW、オンライン サポート .............................................. 7

XXORLW ............................................................................ 351XORWF ........................................................................... 352

あアクセスバンク

インデックス付きリテラル オフセット モードの

マッピング ......................................................... 50

DS41350D_JP - p. 412 Preliminary 2010 Microchip Technology Inc.

Page 413: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

アセンブラ

MPASM アセンブラ ................................................. 362アナログ入力接続に関する注意事項 ............................... 233

インサーキット シリアル プログラミング (ICSP) .. 293, 309インサーキット デバッガ ................................................ 309インターネット アドレス ................................................ 419インデックス付きリテラル オフセット アドレッシング

と標準 PIC18 命令 ................................................... 358インデックス付きリテラル オフセット モード ............... 358

ウォッチドッグ タイマ (WDT) ................................. 293, 304関連レジスタ ........................................................... 305仕様 .......................................................................... 387制御レジスタ ........................................................... 305プログラミング時の注意事項 .................................. 304

エラッタ ............................................................................... 7

オシレータ スタートアップ タイマ (OST) ...................... 283オシレータ モジュール ...................................................... 15オシレータ起動タイマ (OST)

仕様 .......................................................................... 387オシレータ仕様 ................................................................ 383オシレータの切り換え

フェイルセーフ クロック モニタ ............................... 26オシレータの選択 ............................................................ 293オシレータのパラメータ ................................................. 384オシレータ、Timer1 ................................................ 105, 115オシレータ、Timer3 ........................................................ 113温度仕様 ........................................................................... 379お客様サポート ................................................................ 419お客様向け通知サービス ................................................. 419お客様向け変更通知サービス .......................................... 419

か改訂履歴 ........................................................................... 407開発サポート ................................................................... 361各種状態におけるタイムアウト ( 表 ) .............................. 283拡張 USART (EUSART: Enhanced Universal

Synchronous Asynchronous Receiver Transmitter) . 183拡張キャプチャ / コンペア /PWM (ECCP) ....................... 117

拡張 PWM モード .................................................... 121貫通電流 .......................................................... 132起動に関する考慮事項 ..................................... 128自動再起動 ....................................................... 131自動シャットダウン ........................................ 129出力間の関係

( アクティブ High とアクティブ Low) ..... 122出力関係図 ....................................................... 123ハーフブリッジ アプリケーション .................. 124ハーフブリッジ アプリケーションの例 ........... 132ハーフブリッジ モード .................................... 124フルブリッジ アプリケーション ..................... 125フルブリッジ モード ....................................... 125フルブリッジ出力モードにおける方向の変更 . 127プログラム可能なデッドバンド遅延 ............... 132

関連するレジスタ .................................................... 138出力とコンフィグレーション .................................. 118仕様 .......................................................................... 389

拡張命令セットADDFSR .................................................................. 354ADDULNK ............................................................... 354CALLW .................................................................... 355MOVSF .................................................................... 355MOVSS .................................................................... 356PUSHL ..................................................................... 356SUBFSR .................................................................. 357SUBULNK ................................................................ 357構文 ......................................................................... 353使用に関する注意事項 ............................................. 358と MPLAB ツールの使用 ......................................... 360

間接アドレッシング .......................................................... 47貫通電流 .......................................................................... 132

キャプチャ (CCP モジュール ) ........................................ 119CCPRxH:CCPRxL レジスタ .................................... 119CCP のピン設定 ...................................................... 119Timer1/Timer3 モード選択 ...................................... 119ソフトウェア割り込み ............................................. 119プリスケーラ ........................................................... 119

キャプチャ / コンペア /PWM (CCP)CCP モードとタイマリソース ................................. 118キャプチャモード→「キャプチャ」参照

コンペアモード→「コンペア」参照

クロック源

外部モードHS ..................................................................... 17LP ...................................................................... 17XT ...................................................................... 17

関連するレジスタ ...................................................... 27

計算型 GOTO .................................................................... 32

こ高精度内部オシレータのパラメータ ............................... 385高速レジスタスタック ....................................................... 32コード保護機能 ............................................................... 293コンパレータ

応答時間 .................................................................. 228関連レジスタ ........................................................... 236スリープ時の動作 .................................................... 230動作 ......................................................................... 225リセットの影響 ....................................................... 230

コンパレータ モジュール ................................................ 225入力条件に対する C1 の出力状態 ........................... 228

コンパレータ電圧リファレンス (CVREF)応答時間 .................................................................. 228概要 ......................................................................... 247関連レジスタ ........................................................... 251スリープ時の動作 .................................................... 247リセットの影響 ............................................... 230, 247

コンパレータの仕様 ........................................................ 391コンフィグレーション ビット ......................................... 294コンフィグレーション レジスタの保護 ........................... 309コンペア (CCP モジュール ) ............................................ 120

CCPRx レジスタ ..................................................... 120Timer1/Timer3 モード選択 ...................................... 120ソフトウェア割り込み ............................................. 120特殊イベントトリガ ........................................ 116, 120ピン設定 .................................................................. 120

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 413

Page 414: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

サンプルコード

16 x 16 符号付き乗算のルーチン ............................... 6616 x 16 符号なし乗算のルーチン ............................... 668 x 8 符号付き乗算のルーチン ................................... 658 x 8 符号なし乗算のルーチン ................................... 65A/D 変換 ................................................................... 216PORTA の初期化 ....................................................... 84PORTB の初期化 ....................................................... 89PORTC の初期化 ....................................................... 94SSPBUF (SSPSR) レジスタの読み込み .................. 142Timer1 リアルタイム クロックの実装 ..................... 109オフセット値を使用する計算型 GOTO ..................... 32間接アドレッシングによる RAM のクリア ................ 46キャプチャ プリスケーラの変更 .............................. 119高速レジスタスタック ............................................... 32ステータス、WREG、BSR レジスタの

RAM への保存 .................................................... 79データ EEPROM の読み出し ..................................... 63データ EEPROM への書き込み ................................. 63データ EEPROM リフレッシュ ルーチン .................. 64フラッシュ プログラムメモリ ワードの読み出し ..... 56フラッシュ プログラムメモリのロウ消去 ................. 57フラッシュ プログラムメモリへの書き込み ........ 59–60

ジェネラルコール アドレスのサポート ........................... 164式

USB トランシーバ消費電流の予測 .......................... 275シリアル ペリフェラル インターフェイス→「SPI モード」参

シリアルクロック、SCK ................................................. 139シリアルデータ出力 (SDO) .............................................. 139シリアルデータ入力 (SDI) ............................................... 139

すスタックフル / アンダーフロー リセット .......................... 32ステータス レジスタ .......................................................... 45スリープモード ................................................................ 239スレーブ選択 (SS) ........................................................... 139スレーブ選択の同期 ......................................................... 145

絶対 大定格 .................................................................... 365全レジスタの初期化状態 .......................................... 287–291

タイミング チャート

A/D 変換 ................................................................... 390ACK シーケンス ....................................................... 174CLKOUT と I/O ........................................................ 385I2C スレーブモード (10 ビット受信、SEN = 0) ...... 156I2C スレーブモード (10 ビット受信、SEN = 1) ...... 163I2C スレーブモード (10 ビット送信 ) ....................... 157I2C スレーブモード (7 ビット受信、SEN = 0) ........ 154I2C スレーブモード (7 ビット受信、SEN = 1) ........ 162I2C スレーブモード (7 ビット送信 ) ......................... 155I2C スレーブモードのジェネラルコール アドレス シー

ケンス (7 または 10 ビットアドレス モード ) . 164I2C バス スタート / ストップビット ........................ 395I2C バスデータ ......................................................... 396I2C マスタモード (7 ビット受信 ) ............................ 173I2C マスタモード (7 ビットまたは 10 ビット送信 ) . 172PLL を有効にした場合の POR 後のタイムアウト

シーケンス (MCLR を VDD に接続 ) ................. 285

PWM 自動シャットダウン

自動再起動有効 ............................................... 131ファームウェア再起動 ..................................... 130

PWM 出力 ( アクティブ High) ................................. 122PWM 出力 ( アクティブ Low) .................................. 123PWM 方向切り換え ................................................. 127SPI スレーブモード (CKE = 0) ................................ 394SPI スレーブモード (CKE = 1) ................................ 394SPI マスタモード (CKE = 1、SMP = 1) .................. 393SPI モード ( スレーブモード、CKE = 0) ................. 146SPI モード ( スレーブモード、CKE = 1) ................. 146SPI モード ( マスタモード ) .................................... 144Timer0 と Timer1 の外部クロック ........................... 388USART 同期受信 ( マスタ / スレーブ ) .................... 392USART 同期送信 ( マスタ / スレーブ ) .................... 392アイドルモードからランモードへの

ウェイクアップ時の遷移タイミング ............... 240アイドルモードへの移行時の遷移タイミング ......... 240拡張キャプチャ / コンペア /PWM (ECCP) .............. 389クロック アービトレーションを伴う baud レート

ジェネレータ ................................................... 168クロック タイミング ............................................... 381クロック / 命令サイクル ............................................ 33クロック同期 ........................................................... 161コンパレータ出力 .................................................... 225

初のスタートビットのタイミング ....................... 169自動 baud レート計算 .............................................. 199受信または送信モードの I2C ストップ条件 ............. 174スタート条件実行中の SDA アービトレーションによる

BRG のリセット .............................................. 177スタート条件実行中のバスコリジョン (SCL = 0) ... 177スタート条件実行中のバスコリジョン (SDA のみ ) 176ストップ条件実行中のバスコリジョン ( 例 1) ......... 179ストップ条件実行中のバスコリジョン ( 例 2) ......... 179スリープからのウェイクアップ時の遷移 (HSPLL) . 239スリープ時の自動ウェイクアップ ビット (WUE) ... 201スリープモードへの移行時の遷移 ........................... 239スレーブの同期 ....................................................... 145送信時と ACK 送信時のバスコリジョン .................. 175立ち上がり時間が遅い場合 (MCLR を VDD に接続、VDD

立ち上がり時間 > TPWRT) ............................... 285通常動作時の自動ウェイクアップ ビット (WUE) ... 201デューティ サイクルがほぼ 100% の場合の

PWM の方向切り換え ...................................... 128同期受信 ( マスタモード、SREN) ........................... 206同期送信 .................................................................. 204同期送信 (TXEN を利用 ) ......................................... 204内部オシレータの切り換えタイミング ...................... 23ハーフブリッジ PWM 出力 .............................. 124, 132パワーアップ後のタイムアウト シーケンス

(MCLR を VDD に接続しない、例 1) ............... 284パワーアップ後のタイムアウト シーケンス

(MCLR を VDD に接続しない、例 2) ............... 284パワーアップ後のタイムアウト シーケンス

(MCLR を VDD に接続、

VDD の立ち上がり時間 < TPWRT) .................... 284非同期受信 ............................................................... 191非同期送信 ............................................................... 187非同期送信 ( 連続 ) .................................................. 187フェイルセーフ クロック モニタ (FSCM) ................. 27ブラウンアウト リセット (BOR) ............................. 386フルブリッジ PWM 出力 ......................................... 126ブレーク文字シーケンスの送信 .............................. 202リセット、WDT、OST、PWRT ............................. 386リピートスタート条件 ............................................. 170

DS41350D_JP - p. 414 Preliminary 2010 Microchip Technology Inc.

Page 415: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

リピートスタート条件実行中のバスコリジョン

( 例 1) ............................................................... 178リピートスタート条件実行中のバスコリジョン

( 例 2) ............................................................... 178タイミング チャートと仕様

A/D 変換の要件 ........................................................ 390PLL クロック ........................................................... 384

タイミング パラメータの記号 ......................................... 380タイミング要件

I2C バス スタート / ストップビット ........................ 396I2C バスデータ ......................................................... 397SPI モード ............................................................... 395

単電源 ICSP プログラミング ........................................... 309

直接アドレッシング ........................................................... 47

低電圧 ICSP プログラミング→「単電源 ICSP プログラミン

グ」参照

データ EEPROMコード保護 ............................................................... 309

データ EEPROM メモリ .................................................... 61EEADR レジスタ ....................................................... 61EECON1 および EECON2 レジスタ ......................... 61書き込み ..................................................................... 63書き込みの検証 .......................................................... 63関連するレジスタ ...................................................... 64コード プロテクト時の動作 ....................................... 64誤書き込み防止 .......................................................... 64使用方法 ..................................................................... 64読み出し ..................................................................... 63

データ アドレッシング モード .......................................... 46インデックス付きリテラル オフセット ..................... 48

影響を受ける命令 .............................................. 48拡張命令セットが有効な場合のアドレッシング モード

の比較 ................................................................ 49含意およびリテラル ................................................... 46間接 ............................................................................ 46直接 ............................................................................ 46

データメモリ ..................................................................... 35PIC18F13K50/PIC18LF13K50 のマップ ................... 36PIC18F14K50/PIC18LF14K50 のマップ ................... 37USB RAM ................................................................... 35アクセスバンク .......................................................... 39と拡張命令セット ...................................................... 48特殊機能レジスタ ...................................................... 39バンク セレクト レジスタ (BSR) ............................... 35汎用レジスタ ............................................................. 39

テーブルへの読み書き ....................................................... 32テーブルポインタに対する操作 ( 表 ) ................................ 54デバイス間の違い ............................................................ 408デバイスの概要 .................................................................... 9

新しいコア機能 ............................................................ 9機能 (20 ピンデバイス ) ............................................. 11その他の特殊機能 ...................................................... 10ファミリに含まれる各製品の詳細 ............................. 10

デバイスリセット タイマ ................................................ 283PLL ロック タイムアウト ........................................ 283オシレータ スタートアップ タイマ (OST) .............. 283タイムアウト シーケンス ........................................ 283パワーアップ タイマ (PWRT) .................................. 283

電圧リファレンス

VR の安定化 ............................................................. 248固定電圧リファレンス (FVR) .................................. 248

電圧リファレンス (VR)仕様 ......................................................................... 391

電圧リファレンス→「コンパレータ電圧リファレンス

(CVREF)」参照

電気的仕様 ....................................................................... 365電源管理モード

と PWM 動作 ........................................................... 137電力管理モード ............................................................... 237

SLEEP 命令の複数の機能 ....................................... 238アイドル / スリープモードの終了 ........................... 241

WDT タイムアウトによる ............................... 241スタートアップ遅延を伴わない ...................... 242リセットによる ............................................... 242割り込みによる ............................................... 241

アイドルモード ....................................................... 239PRI_IDLE ........................................................ 240RC_IDLE ......................................................... 241SEC_IDLE ....................................................... 240

移行 ......................................................................... 237一覧表 ...................................................................... 237スリープモード ....................................................... 239選択 ......................................................................... 237と A/D 変換 .............................................................. 215と SPI の動作 ........................................................... 147ランモード ............................................................... 238

PRI_RUN ......................................................... 238RC_RUN .......................................................... 238SEC_RUN ....................................................... 238

と読者アンケート ............................................................... 420特殊イベントトリガ ........................................................ 215特殊イベントトリガ→「コンペア (ECCP モード )」参照

特殊機能レジスタ .............................................................. 39マップ ........................................................................ 40

内部 RC オシレータ

WDT での使用 ......................................................... 304内部オシレータ ブロック

INTOSC仕様 ......................................................... 384, 385

内部サンプリング スイッチ (RSS) インピーダンス ......... 221

ハードウェア乗算器 .......................................................... 65性能比較 .................................................................... 65動作 ........................................................................... 65はじめに .................................................................... 65

パッケージ情報 ............................................................... 401マーキング ............................................................... 401

パルス ステアリング ....................................................... 134パワーアップ タイマ (PWRT)

仕様 ......................................................................... 387パワーオン リセット (POR) ............................................ 281

タイムアウト シーケンス ........................................ 283パワーアップ タイマ (PWRT) ................................. 283

バンク セレクト レジスタ (BSR) ...................................... 35

ひ非同期モードのクロック精度 .......................................... 192標準 PIC 命令への影響 .................................................... 358標準命令 .......................................................................... 311ピンの説明

PIC18F1XK50/PIC18LF1XK50 .................................. 13

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 415

Page 416: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

ファームウェア命令 ......................................................... 311フェイルセーフ クロック モニタ ............................... 26, 293

フェイルセーフ検出 ................................................... 26フェイルセーフ状態の解除 ........................................ 27フェイルセーフ動作 ................................................... 26リセットまたはスリープからのウェイクアップ ....... 27

負荷条件 ........................................................................... 380ブラウンアウト リセット (BOR) ..................................... 282

検出 .......................................................................... 282仕様 .......................................................................... 387スリープモード時の無効化 ...................................... 282ソフトウェア制御による ......................................... 282タイミングと特性 .................................................... 386

フラッシュ プログラムメモリ ........................................... 51書き込み ..................................................................... 58

書き込みの検証 .................................................. 60誤書き込み防止 .................................................. 60予期せぬ中断 ..................................................... 60

書き込みシーケンス ................................................... 58関連するレジスタ ...................................................... 60コード保護中の動作 ................................................... 60消去 ............................................................................ 57消去シーケンス .......................................................... 57制御レジスタ ............................................................. 52

EECON1 および EECON2 ................................. 52TABLAT ( テーブルラッチ ) レジスタ ................ 54TBLPTR ( テーブルポインタ ) レジスタ ............ 54

テーブルポインタ

動作ごとの境界 .................................................. 55テーブルポインタの境界 ........................................... 54テーブル読み出し / 書き込み ..................................... 51読み出し ..................................................................... 55

プリスケーラ、Timer0 ..................................................... 103ブレークによるウェイクアップ ....................................... 200ブレーク文字 (12 ビット ) の送受信 ................................ 202プログラミング、デバイス命令 ....................................... 311プログラム カウンタ .......................................................... 30

PCLATH および PCLATU レジスタ ........................... 30PCL、PCH、PCU レジスタ ...................................... 30

プログラムの検証とコード保護 ....................................... 305関連レジスタ ........................................................... 307

プログラムメモリ

コード保護 ............................................................... 307と拡張命令セット ...................................................... 50マップとスタック ( 図 ) .............................................. 29命令 ............................................................................ 34

2 ワード ............................................................. 34リセットベクタ .......................................................... 29ルックアップ テーブル .............................................. 32割り込みベクタ .......................................................... 29

ブロック図

16 ビットモードの Timer0 ....................................... 1038 ビットモードの Timer0 ......................................... 102ADC ......................................................................... 211ADC の伝達関数 ....................................................... 222baud レート ジェネレータ ....................................... 167EUSART トランスミッタ ........................................ 183EUSART レシーバ ................................................... 184MSSP (I2C モード ) .................................................. 148MSSP (I2C マスタモード ) ....................................... 165MSSP (SPI モード ) ................................................. 139PIC18F1XK50/PIC18LF1XK50 .................................. 12PWM ( 拡張 ) ............................................................ 121Timer1 ...................................................................... 106

Timer1 (16 ビット読み書きモード ) ........................ 106Timer2 ..................................................................... 112Timer3 ..................................................................... 114Timer3 (16 ビット読み書きモード ) ........................ 115USB モジュールとオプション ................................. 253USB 割り込みロジック ............................................ 267アナログ入力モデル ........................................ 222, 233ウォッチドッグ タイマ ............................................ 304外部 POR 回路

(VDD 電源の立ち上がりが遅い場合 ) ............... 281外部 RC モード .......................................................... 18キャプチャモード動作 ............................................. 119クロック源 ................................................................. 16コンパレータ 1 ........................................................ 226コンパレータ 2 ........................................................ 227振動子の動作 ............................................................. 18水晶振動子による動作 ............................................... 17テーブル書き込み動作 ............................................... 52テーブル読み出し動作 ............................................... 51電圧リファレンス .................................................... 248電圧リファレンスの出力バッファの例 .................... 249内蔵リセット回路 .................................................... 279汎用 I/O ポート .......................................................... 83フェイルセーフ クロック モニタ (FSCM) ................. 26フラッシュ プログラムメモリからの読み出し .......... 55フラッシュ プログラムメモリに対する

テーブル書き込み .............................................. 58割り込みロジック ...................................................... 68

マイクロチップ社のインターネット ウェブサイト ......... 419マスタクリア (MCLR) ...................................................... 281マスタ同期シリアルポート (MSSP) → MSSP 参照

め命令サイクル ..................................................................... 33

クロック方式 ............................................................. 33命令セット ....................................................................... 311

ADDLW .................................................................... 317ADDWF .................................................................... 317ADDWF ( インデックス付きリテラル オフセット

モード ) ............................................................ 359ADDWFC ................................................................. 318ANDLW .................................................................... 318ANDWF .................................................................... 319BC ............................................................................ 319BCF ......................................................................... 320BN ............................................................................ 320BNC ......................................................................... 321BNN ......................................................................... 321BNOV ...................................................................... 322BNZ ......................................................................... 322BOV ......................................................................... 325BRA ......................................................................... 323BSF .......................................................................... 323BSF ( インデックス付きリテラル オフセット

モード ) ............................................................ 359BTFSC ..................................................................... 324BTFSS ..................................................................... 324BTG ......................................................................... 325BZ ............................................................................ 326CALL ........................................................................ 326CLRF ....................................................................... 327CLRWDT ................................................................. 327COMF ...................................................................... 328CPFSEQ .................................................................. 328

DS41350D_JP - p. 416 Preliminary 2010 Microchip Technology Inc.

Page 417: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

CPFSGT .................................................................. 329CPFSLT ................................................................... 329DAW ......................................................................... 330DCFSNZ .................................................................. 331DECF ....................................................................... 330DECFSZ ................................................................... 331GOTO ...................................................................... 332INCF ......................................................................... 332INCFSZ .................................................................... 333INFSNZ .................................................................... 333IORLW ..................................................................... 334IORWF ..................................................................... 334LFSR ........................................................................ 335MOVF ....................................................................... 335MOVFF .................................................................... 336MOVLB .................................................................... 336MOVLW ................................................................... 337MOVWF ................................................................... 337MULLW .................................................................... 338MULWF .................................................................... 338NEGF ....................................................................... 339NOP ......................................................................... 339POP ......................................................................... 340PUSH ....................................................................... 340RCALL ..................................................................... 341RESET ..................................................................... 341RETFIE .................................................................... 342RETLW .................................................................... 342RETURN .................................................................. 343RLCF ........................................................................ 343RLNCF ..................................................................... 344RRCF ....................................................................... 344RRNCF .................................................................... 345SETF ........................................................................ 345SETF ( インデックス付きリテラル オフセット

モード ) ............................................................ 359SLEEP ..................................................................... 346SUBFWB .................................................................. 346SUBLW .................................................................... 347SUBWF .................................................................... 347SUBWFB .................................................................. 348SWAPF .................................................................... 348TBLRD ..................................................................... 349TBLWT ..................................................................... 350TSTFSZ ................................................................... 351XORLW .................................................................... 351XORWF .................................................................... 352一般的な形式 ........................................................... 313オペコードのフィールドの説明 ............................... 312拡張命令セット ........................................................ 353

命令のフロー / パイプライン処理 ...................................... 33メモリ構成 ......................................................................... 29

データメモリ ............................................................. 35プログラムメモリ ...................................................... 29

リセット ................................................................... 279, 293オシレータ スタートアップ タイマ (OST) .............. 293パワーアップ タイマ (PWRT) .................................. 293パワーオン リセット (POR) .................................... 293ブラウンアウト リセット (BOR) ............................. 293

リターン スタックポインタ (STKPTR) ............................. 31リターンアドレス スタック ............................................... 30

レジスタ

ADCON0 (ADC 制御 0) ............................................ 217ADCON1 (ADC 制御 1) ............................................ 218ADCON2 (ADC 制御 2) ............................................ 219ADRESH (ADC 変換結果 High) (ADFM = 0 の場合 ) 220ADRESH (ADC 変換結果 High) (ADFM = 1 の場合 ) 220ADRESL (ADC 変換結果 Low) (ADFM = 0 の場合 ) 220ADRESL (ADC 変換結果 Low) (ADFM = 1 の場合 ) 220ANSEL ( アナログ選択 1) .......................................... 98ANSEL ( ポートアナログ制御 ) ................................. 98ANSELH ( アナログ選択 2) ....................................... 99ANSELH ( ポートアナログ制御 ) ............................... 99BAUDCON (EUSART baud レート制御 ) ................ 194BDnSTAT ( バッファ ディスクリプタ n ステータス、

CPU モード ) ................................................... 263BDnSTAT ( バッファ ディスクリプタ n ステータス、

SIE モード ) ..................................................... 264CCP1CON

( 拡張キャプチャ / コンペア /PWM 制御 ) ....... 117CM1CON0 (C1 制御 ) .............................................. 231CM2CON0 (C2 制御 ) .............................................. 232CM2CON1 (C2 制御 ) .............................................. 235CONFIG1H ( コンフィグレーション 1 High) .. 295, 296CONFIG1L ( コンフィグレーション 1 Low) ............ 295CONFIG2H ( コンフィグレーション 2 High) .......... 298CONFIG2L ( コンフィグレーション 2 Low) ............ 297CONFIG3H ( コンフィグレーション 3 High) .......... 299CONFIG4L ( コンフィグレーション 4 Low) ............ 299CONFIG5H ( コンフィグレーション 5 High) .......... 300CONFIG5L ( コンフィグレーション 5 Low) ............ 300CONFIG6H ( コンフィグレーション 6 High) .......... 301CONFIG6L ( コンフィグレーション 6 Low) ............ 301CONFIG7H ( コンフィグレーション 7 High) .......... 302CONFIG7L ( コンフィグレーション 7 Low) ............ 302DEVID1 ( デバイス ID 1) ......................................... 303DEVID2 ( デバイス ID 2) ......................................... 303ECCPAS ( 拡張 CCP 自動シャットダウン制御 ) .... 129EECON1 ( データ EEPROM 制御 1) ................... 53, 62INTCON ( 割り込み制御 ) .......................................... 69INTCON2 ( 割り込み制御 2) ...................................... 70INTCON3 ( 割り込み制御 3) ...................................... 71IOCA (PORTA 状態変化割り込み ) ........................... 86IOCB (PORTB 状態変化割り込み ) ........................... 91IPR1 ( 周辺割り込み優先度 1) ................................... 76IPR2 ( 周辺割り込み優先度 2) ................................... 77LATA (PORTA データラッチ ) .................................. 86LATB (PORTB データラッチ ) .................................. 91LATC (PORTC データラッチ ) .................................. 95OSCCON ( オシレータ制御 ) .............................. 20, 21OSCTUNE ( オシレータ調整 ) ................................... 22PIE1 ( 周辺割り込みイネーブル 1) ............................ 74PIE2 ( 周辺割り込みイネーブル 2) ............................ 75PIR1 ( 周辺割り込み要求 1) ....................................... 72PIR2 ( 周辺割り込み要求 2) ....................................... 73PORTA ...................................................................... 85PORTB ................................................................ 90, 94PSTRCON ( パルス ステアリング制御 ) ................. 134PWM1CON ( 拡張 PWM 制御 ) ................................ 133RCON ( リセット制御 ) ..................................... 78, 280RCREG レジスタ .................................................... 199RCSTA ( 受信状態 / 制御 ) ....................................... 193REFCON0 ............................................................... 249REFCON1 ............................................................... 250REFCON2 ............................................................... 250

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 417

Page 418: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

SLRCON ( ポートのスルーレート制御 ) .................. 100SRCON0 (SR ラッチ制御 0) .................................... 244SRCON1 (SR ラッチ制御 1) .................................... 245SSPADD (MSSP アドレス /baud レート、

SPI モード ) ..................................................... 159SSPCON1 (MSSP 制御 1、I2C モード ) .................. 150SSPCON1 (MSSP 制御 1、SPI モード ) ................. 141SSPCON2 (MSSP 制御 2、I2C モード ) .................. 151SSPMSK (SSP マスク ) ........................................... 158SSPSTAT (MSSP ステータス、SPI モード ) .. 140, 149STATUS ..................................................................... 45STKPTR ( スタックポインタ ) ................................... 31T0CON (Timer0 制御 ) ............................................. 101T1CON (Timer1 制御 ) ............................................. 105T2CON (Timer2 制御 ) ............................................. 111T3CON (Timer3 制御 ) ............................................. 113TRISA (PORTA 3 ステート ) ..................................... 85TRISB (PORTB 3 ステート ) ............................... 90, 94TXSTA ( 送信状態 / 制御 ) ........................................ 192UCFG (USB コンフィグレーション ) ...................... 256UCON (USB 制御 ) ................................................... 254UEIE (USB エラー割り込みイネーブル ) ................. 272UEIR (USB エラー割り込みステータス ) ................. 271UEPn (USB エンドポイント n 制御 ) ....................... 259UIE (USB 割り込みイネーブル ) .............................. 270UIR (USB 割り込みステータス ) .............................. 268USTAT (USB ステータス ) ....................................... 258WDTCON ( ウォッチドッグ タイマ制御 ) ............... 305WPUA (PORTA 弱プルアップ ) ................................. 86WPUB (PORTB 弱プルアップ ) ................................. 91

レジスタのリセット状態 .................................................. 286レジスタファイル .............................................................. 39レジスタファイルの要約 .................................................... 41

割り込み ............................................................................. 67割り込み処理中のコンテキスト保存 .................................. 79割り込み要因 .................................................................... 293

ADC ......................................................................... 213INTn ピン ................................................................... 79PORTB、状態変化割り込み ...................................... 79TMR0 ......................................................................... 79TMR0 オーバーフロー ............................................. 103TMR1 オーバーフロー ............................................. 105TMR3 オーバーフロー ..................................... 113, 115キャプチャ完了 (CCP) ............................................. 119コンペア完了 (CCP) ................................................. 120状態変化割り込み (RB7:RB4) .............................. 83, 89

DS41350D_JP - p. 418 Preliminary 2010 Microchip Technology Inc.

Page 419: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

マイクロチップ社のウェブサイト

マイクロチップ社は、ウェブサイト (www.microchip.com) でオンラインサポートを提供しています。このウェブサイトを活用する事で、ファイルや情報を簡単に入手できます。ウェブサイトには以下の情報を掲載しています。

• 製品サポート – データシートとエラッタ、アプリケーション ノートとサンプル プログラム、設計リソース、ユーザガイドとハードウェア サポート文書、 新のソフトウェアと過去のソフトウェア

• 技術サポート – よく寄せられる質問 (FAQ)、技術サポート リクエスト、オンライン ディスカッション グループ、マイクロチップ社コンサルタント プログラム メンバーの一覧

• マイクロチップ社の事業 – 製品セレクタと注文のガイド、マイクロチップ社の 新プレスリリース、セミナーとイベントの一覧、マイクロチップ社の各営業所、販売代理店、工場の一覧

お客様向け変更通知サービス

マイクロチップ社のお客様向け通知サービスにて、常にお客様にマイクロチップ社製品の 新情報を提供いたします。この通知サービスを申し込まれたお客様には、特定の製品ファミリまたは開発ツールに関する変更、更新、改訂、エラッタが発表されるとただちにメールにてお知らせいたします。

登録するには、マイクロチップ社のウェブサイトwww.microchip.com にアクセスし、[Customer ChangeNotification] をクリックして登録手順に従ってください。

お客様サポート

マイクロチップ社製品のユーザは、以下の複数のルートでサポートが受けられます。

• 販売代理店

• 各地域の営業所

• フィールド アプリケーション エンジニア (FAE)

• 技術サポート

• 開発システム情報ライン

サポートが必要な場合、製品を購入した販売代理店またはフィールド アプリケーション エンジニア(FAE)にご連絡ください。各地域の営業所でもお客様へのサポートを提供しています。各営業所と所在地の一覧は、本書の巻末に記載してあります。

技術サポートは、ウェブサイト (http://support.microchip.com) にてお受けいただけます。

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 419

Page 420: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

PIC18F/LF1XK50

読者アンケート

マイクロチップ社では、お客様に弊社製品を効果的にお使いいただくために、可能な限り 良の文書を提供するように努めています。文書の構成、明瞭さ、内容等、本文書に改善が必要な点がありましたら、FAX にて弊社のテクニカル パブリケーション マネージャ宛ににてご意見をお送りください。FAX 番号は +1-480-792-4150 です。

以下の欄に必要事項と本書に関するご意見をご記入の上、お送りください。

宛先 : テクニカル パブリケーション マネージャ

件名 : 読者アンケート回答

総送信ページ数 ________

送信者 : お名前

貴社名

住所

郵便番号 / 国名

電話番号 : (_______) _________ - _________

アプリケーション ( 任意 ):

返信要   Y N

デバイス : 文書番号 :

質問 :

FAX: (______) _________ - _________

DS41350D_JPPIC18F/LF1XK50

1. この文書で も良いと感じられたのはどの部分ですか。

2. この文書は、お客様のハードウェアとソフトウェアの開発に役立ちましたか。

3. この文書の構成は分かりやすいですか。分かりにくいと感じた場合、その理由をお書きください。

4. この文書の構成や内容を改善するために追加した方が良いと思われる内容がありましたらお知らせください。

5. この文書から削除しても全体的な利用価値に影響しないと思われる箇所があればお知らせください。

6. この文書に、不正確な情報や誤解を招くような表現がありますか。もしあれば、記載ページと該当箇所をお知らせください。

7. この文書を改善するための具体的なご提案がありましたらお知らせください。

DS41350D_JP - p. 420 Preliminary 2010 Microchip Technology Inc.

Page 421: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

2010 Microchip Technology Inc. Preliminary DS41350D_JP - p. 421

PIC18F/LF1XK50

製品識別システム

ご注文または製品の価格や納期に関するお問い合わせは、弊社または販売代理店までお問い合わせください。

PART NO. X /XX XXX

PatternPackageTemperatureRange

Device

Device: PIC18F13K50(1), PIC18F14K50(1),PIC18LF13K50(1), PIC18LF14K50

Packaging Option: Blank = Standard packaging (tube or tray)T = Tape and Reel(1)

Temperature Range:

E = -40 C to +125 C (Extended)I = -40 C to +85 C (Industrial)

Package: P = PDIPSO = SOICSS = SSOPMQ = QFN

Pattern: QTP, SQTP, Code or Special Requirements (blank otherwise)

例 :

a) PIC18F14K50-E/P 301 = 拡張温度レンジ、PDIP パッケージ、拡張 VDD レンジ、QTP パターン #301

b) PIC18LF14K50-E/SO = 拡張温度レンジ、SOIC パッケージ

c) PIC18LF14K50-E/P = 拡張温度レンジ、PDIP パッケージ

d) PIC18LF14K50-E/MQ = 拡張温度レンジ、QFN パッケージ

e) PIC18F14K50-I/P = 工業用温度レンジ、PDIP パッケージ

Note 1: テープ & リールは、工業用温度レンジのML、MV、PT、SO、SS パッケージのみ対応しています。

X

PackagingOption

Page 422: PIC18FX525/X620 Data Sheet - ww1.microchip.comww1.microchip.com/downloads/jp/DeviceDoc/41350D_JP.pdf · DS41350D_JP - p. 2 Preliminary 2010 Microchip Technology Inc. 本書に記載されているデバイス

DS41350D_JP - p. 422 Preliminary 2010 Microchip Technology Inc.

北米地域本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 480-792-7200 Fax: 480-792-7277技術サポート : http://support.microchip.comURL: www.microchip.com

アトランタDuluth, GA Tel: 678-957-9614 Fax: 678-957-1455

ボストン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

デトロイトFarmington Hills, MITel: 248-538-2250Fax: 248-538-2260

ココモKokomo, INTel: 765-864-8360Fax: 765-864-8387

ロサンゼルスMission Viejo, CATel: 949-462-9523 Fax: 949-462-9608

サンタクララSanta Clara, CATel: 408-961-6444Fax: 408-961-6445

トロントMississauga, Ontario,CanadaTel: 905-673-0699 Fax: 905-673-6509

アジア / 太平洋アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel: 852-2401-1200Fax: 852-2401-3431

オーストラリア - シドニー

Tel: 61-2-9868-6733Fax: 61-2-9868-6755

中国 - 北京

Tel: 86-10-8528-2100 Fax: 86-10-8528-2104

中国 - 成都

Tel: 86-28-8665-5511Fax: 86-28-8665-7889

中国 - 重慶

Tel: 86-23-8980-9588Fax: 86-23-8980-9500

中国 - 香港 SARTel: 852-2401-1200 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-5533 Fax: 86-21-5407-5066

中国 - 瀋陽

Tel: 86-24-2334-2829Fax: 86-24-2334-2393

中国 - 深圳

Tel: 86-755-8203-2660 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-2566-1512Fax: 91-20-2566-1513

日本 - 横浜

Tel: 81-45-471- 6166 Fax: 81-45-471-6122

韓国 - 大邱

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-6578-300Fax: 886-3-6578-370

台湾 - 高雄

Tel: 886-7-536-4818Fax: 886-7-536-4803

台湾 - 台北

Tel: 886-2-2500-6610 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-89-627-144-0 Fax: 49-89-627-144-44

イタリア - ミラノ Tel: 39-0331-742611 Fax: 39-0331-466781

オランダ - ドリューネン

Tel: 31-416-690399 Fax: 31-416-690340

スペイン - マドリッド

Tel: 34-91-708-08-90Fax: 34-91-708-08-91

イギリス - ウォーキンガム

Tel: 44-118-921-5869Fax: 44-118-921-5820

各国の営業所とサービス

01/05/10