...

PIC18FX525/X620 Data Sheet

by user

on
Category: Documents
64

views

Report

Comments

Transcript

PIC18FX525/X620 Data Sheet
PIC18F23K20/24K20/25K20/26K20/
43K20/44K20/45K20/46K20
データシート
28/40/44 ピン フラッシュ
マイクロコントローラ
nanoWatt XLP™ テクノロジ対応
ご注意:この日本語版ドキュメントは、参考資料としてご使用の上、最新情報に
つきましては、必ず英語版オリジナルをご参照いただきますようお願い
します。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP
マイクロチップ テクノロジー社 ( 以下、マイクロチップ社 ) デバイスのコード保護機能に関する以下の点にご留意ください。
•
マイクロチップ社製品は、その該当するマイクロチップ社データシートに記載の仕様を満たしています。
•
マイクロチップ社では、通常の条件ならびに仕様どおりの方法で使用した場合、マイクロチップ社製品は現在市場に流
通している同種製品としては最もセキュリティの高い部類に入る製品であると考えております。
•
コード保護機能を解除するための不正かつ違法な方法が存在します。マイクロチップ社の確認している範囲では、この
ような方法のいずれにおいても、マイクロチップ社製品をマイクロチップ社データシートの動作仕様外の方法で使用す
る必要があります。このような行為は、知的所有権の侵害に該当する可能性が非常に高いと言えます。
•
マイクロチップ社は、コードの保全について懸念を抱いているお客様と連携し、対応策に取り組んでいきます。
•
マイクロチップ社を含むすべての半導体メーカーの中で、自社のコードのセキュリティを完全に保証できる企業はあり
ません。コード保護機能とは、マイクロチップ社が製品を「解読不能」として保証しているものではありません。
コード保護機能は常に進歩しています。マイクロチップ社では、製品のコード保護機能の改善に継続的に取り組んでいます。
マイクロチップ社のコード保護機能を解除しようとする行為は、デジタルミレニアム著作権法に抵触する可能性があります。
そのような行為によってソフトウェアまたはその他の著作物に不正なアクセスを受けた場合は、デジタルミレニアム著作権
法の定めるところにより損害賠償訴訟を起こす権利があります。
本書に記載されているデバイス アプリケーションなどに
関する情報は、ユーザーの便宜のためにのみ提供されて
いるものであり、更新によって無効とされることがあり
ます。アプリケーションと仕様の整合性を保証すること
は、お客様の責任において行ってください。マイクロチッ
プ社は、明示的、暗黙的、書面、口頭、法定のいずれであ
るかを問わず、本書に記載されている情報に関して、状
態、品質、性能、商品性、特定目的への適合性をはじめと
する、いかなる類の表明も保証も行いません。マイクロ
チップ社は、本書の情報およびその使用に起因する一切の
責任を否認します。マイクロチップ社デバイスを生命維持
および / または保安のアプリケーションに使用することは
デバイス購入者の全責任において行うものとし、デバイス
購入者は、デバイスの使用に起因するすべての損害、請
求、訴訟、および出費に関してマイクロチップ社を弁護、
免責し、同社に不利益が及ばないようにすることに同意す
るものとします。暗黙的あるいは明示的を問わず、マイク
ロチップ社が知的財産権を保有しているライセンスは一
切譲渡されません。
商標
Microchip の社名とロゴ、Microchip ロゴ、dsPIC、
KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、
PICSTART、rfPIC、UNI/O は、米国およびその他の国に
おける Microchip Technology Incorporated の登録商標です。
FilterLab、Hampshire、HI-TECH C、Linear Active
Thermistor、MXDEV、MXLAB、SEEVAL、The Embedded
Control Solutions Company は、米国における Microchip
Technology Incorporated の登録商標です。
Analog-for-the-Digital Age、Application Maestro、
CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、
dsSPEAK、ECAN、ECONOMONITOR、FanSense、HITIDE、In-Circuit Serial Programming、ICSP、ICEPIC、
Mindi、MiWi、MPASM、MPLAB Certified ロゴ、MPLIB、
MPLINK、mTouch、nanoWatt XLP、Omniscient Code
Generation、PICC、PICC-18、PICkit、PICDEM、
PICDEM.net、PICtail、PIC32 ロゴ、Real ICE、rfLAB、
Select Mode、Total Endurance、TSHARC、WiperLock、
ZENA は、米国およびその他の国における Microchip
Technology Incorporated の商標です。
SQTP は米国における Microchip Technology Incorporated
のサービスマークです。
その他、本書に記載されている商標は、各社に帰属します。
© 2009, Microchip Technology Incorporated, Printed in the
U.S.A., All Rights Reserved.
再生紙を使用しています。
マイクロチップ社では、Chandler および Tempe ( アリゾナ州 )、
Gresham ( オレゴン州 ) の本部、設計部およびウエハ製造工場そして
カリフォルニア州とインドのデザイン センターが ISO/TS-16949:2002
認証を取得しています。マイクロチップ社の品質システム プロセス
および手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッ
ピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮
発性メモリ、アナログ製品に採用されています。また、マイクロ
チップ社の開発システムの設計および製造に関する品質システムは、
ISO 9001:2000 の認証を受けています。
DS41303E_JP - ページ ii
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
28/40/44 ピン フラッシュ マイクロコントローラ
nanoWatt XLP™ テクノロジ対応
高性能 RISC CPU:
• Cコンパイラ向けに最適化されたアーキテクチャ:
- 再入可能コードの最適化用に設計されたオプ
ションの拡張命令セット
• 最大 1024 バイトのデータ EEPROM
• 最大 64 KB のリニア プログラム メモリ アドレス
指定
• 最大3936バイトのリニア データ メモリ アドレス
指定
• 最大 16 MIPS の動作
• 16 ビット幅の命令、8 ビット幅のデータ パス
• 優先度が設定可能な割り込み
• ソフトウェアからアクセス可能な 31 レベルの
ハードウェア スタック
• 8 x 8 シングル サイクル ハードウェア乗算器
柔軟性の高いオシレータ構成 :
• 高精度 16 MHz 内部オシレータ ブロック :
- ±1% まで工場較正済み
- 動作周波数はソフトウェアで 31 kHz ~ 16 MHz
の範囲内で選択可能
- PLL の使用により 64 MHz 動作も可能 – 外付け
部品不要
• 4 つの水晶振動子モード ( 最大周波数 64 MHz)
• 2 つの外部クロック モード ( 最大周波数 64 MHz)
• 4X フェーズ ロック ループ (PLL)
• セカンダリ オシレータはタイマ 1 (@ 32 kHz) を
使用
• フェイルセーフ クロック モニタ :
- 周辺クロック停止でも安全なシャットダウン
- 2 段速オシレータ スタートアップ
このマイクロコントローラの機能 :
• 動作電源電圧範囲 : 1.8V ~ 3.6V
• ソフトウェア制御によるセルフ プログラミング
• プログラマブルな 16 レベルの高 / 低電圧検出
(HLVD) モジュール :
- 高 / 低電圧検出時の割り込み
• プログラマブルなブラウンアウト リセット(BOR):
- ソフトウェアによるイネーブル オプション対応
• 拡張ウォッチドッグ タイマ (WDT):
- 4 ms ~ 131s の範囲でプログラマブルな周期
• 3V 単一電源と 2 本のピンを使用したインサー
キット シリアル プログラミング ™ (ICSP™)
• 2 本のピンを使用したインサーキット デバッガ
(ICD)
 2009 Microchip Technology Inc.
nanoWatt XLP™ による超低消費電力電源
管理 :
• スリープ モード : 100 nA
• ウォッチドッグ タイマ : 500 nA
• タイマ 1 オシレータ : 500 nA @ 32 kHz
アナログ機能の特徴 :
• A/D コンバータ (ADC) モジュール :
- 10 ビット分解能および 13 外部チャネル
- 自動取得機能
- スリープ時も変換
- 1.2V 固定電圧リファレンス (FVR) チャネル
- 独立した入力多重化
• アナログ コンパレータ モジュール :
- 2 つのレール トゥ レール アナログ コンパレータ
- 独立した入力多重化
• 電圧リファレンス (CVREF) モジュール
- 16 ステップでプログラマブル (%VDD)
- VREF ピンを使用した 2 つの 16 レベル電圧範囲
周辺機能の特徴 :
• 最大 35 本の I/O ピンおよび 1 本の入力専用ピン :
- 25 mA/25 mA の大電流シンク / ソース
- プログラマブルな 3 つの外部割り込み
- プログラマブルな 4 つの状態変化割り込み
- プログラマブルな 8 つの弱プルアップ
- プログラマブルなスルー レート
• キャプチャ / コンペア /PWM (CCP) モジュール
• 拡張 CCP (ECCP) モジュール :
- 1 つ、2 つ、または 4 つの PWM 出力
- 極性を選択可能
- プログラマブルなデッド タイム
- 自動シャットダウンおよび自動再スタート
• マスター同期シリアル ポート (MSSP) モジュール
- 3 線式 SPI (4 モードすべてをサポート )
- アドレス マスク対応のマスター / スレーブ
モード I2C™
• 拡張 USART (EUSART) モジュール :
- RS-485、RS-232 および LIN に対応
- 内部オシレータを使用した RS-232 動作
- ブレーク時の自動ウェイクアップ
- 自動ボーレート検出
Preliminary
DS41303E_JP - ページ 1
PIC18F2XK20/4XK20
-
Data Memory
MSSP
EUSART
Program Memory
Comp.
PIC18F23K20
8K
4096
512
256
25
11
1/1
Y
Y
1
2
PIC18F24K20
16K
8192
768
256
25
11
1/1
Y
Y
1
2
1/3
PIC18F25K20
32K
16384
1536
256
25
11
1/1
Y
Y
1
2
1/3
PIC18F26K20
64k
32768
3936
1024
25
11
1/1
Y
Y
1
2
1/3
PIC18F43K20
8K
4096
512
256
36
14
1/1
Y
Y
1
2
1/3
PIC18F44K20
16K
8192
768
256
36
14
1/1
Y
Y
1
2
1/3
PIC18F45K20
32K
16384
1536
256
36
14
1/1
Y
Y
1
2
1/3
PIC18F46K20
64k
32768
3936
1024
36
14
1/1
Y
Y
1
2
1/3
Device
注 1:
2:
(1)
Flash # Single-Word SRAM EEPROM I/O
(bytes) Instructions (bytes) (bytes)
10-bit
A/D
(ch)(2)
CCP/
ECCP
(PWM)
SPI
Master
I2C™
Timers
8/16-bit
1/3
ピンの 1 本は読み出し専用です。
チャネル数は内部固定電圧リファレンス チャネルを含んだ値です。
DS41303E_JP - ページ 2
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
ピン配置図
28-pin PDIP, SOIC, SSOP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
RA1/AN1/C12IN1RA0/AN0/C12IN0-
MCLR/VPP/RE3
RA0/AN0/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+
RA3/AN3/VREF+/C1IN+
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
VDD
VSS
OSC1/CLKIN/RA7
OSC2/CLKOUT/RA6
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2(1)
RC2/CCP1/P1A
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1
PIC18F43K20
PIC18F44K20
PIC18F45K20
PIC18F46K20
40-pin PDIP
28-pin QFN
28
27
26
25
24
23
22
21
20
19
18
17
16
15
PIC18F23K20
PIC18F24K20
PIC18F25K20
PIC18F26K20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
RB7/KBI3/PGD
RB6//KBI2/PGC
RB5/KBI1/PGM
RB4/KBI0/AN11/P1D
RB3/AN9/C12IN2-/CCP2(1)
RB2/INT2/AN8/P1B
RB1/INT1/AN10/C12IN3-/P1C
RB0/INT0/FLT0/AN12
VDD
VSS
RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RB7/KBI3/PGD
RB6/KBI2/PGC
RB5/KBI1/PGM
RB4/KBI0/AN11
RB3/AN9/C12IN2-/CCP2(1)
RB2/INT2/AN8
RB1/INT1/AN10/C12IN3RB0/INT0/FLT0/AN12
VDD
VSS
RD7/PSP7/P1D
RD6/PSP6/P1C
RD5/PSP5/P1B
RD4/PSP4
RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RD3/PSP3
RD2/PSP2
MCLR/VPP/RE3
RB7/KBI3/PGD
RB6/KBI2/PGC
RB5/KBI1/PGM
RB4/KBI0/AN11/P1D
MCLR/VPP/RE3
RA0/AN0/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+
RA3/AN3/VREF+/C1IN+
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
VSS
OSC1/CLKIN/RA7
OSC2/CLKOUT/RA6
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2(1)
RC2/CCP1/P1A
RC3/SCK/SCL
28 27 26 25 24 23 22
注
1:
RB3 は CCP2 多重化用の代替ピンです。
 2009 Microchip Technology Inc.
1
2
3
4
5
6
7
PIC18F23K20
PIC18F24K20
PIC18F25K20
PIC18F26K20
8 9 10 11 12 13 14
21
20
19
18
17
16
15
RB3/AN9/C12IN2-/CCP2(1)
RB2/INT2/AN8/P1B
RB1/INT1/AN10/C12IN3-/P1C
RB0/INT0/FLT0/AN12
VDD
VSS
RC7/RX/DT
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2(1)
RC2/CCP1/P1A
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RA2/AN2/VREF-/CVREF/C2IN+
RA3/AN3/VREF+/C1IN+
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
VSS
OSC1/CLKIN/RA7
OSC2/CLKOUT/RA6
Preliminary
DS41303E_JP - ページ 3
PIC18F2XK20/4XK20
44
43
42
41
40
39
38
37
36
35
34
44-pin TQFP
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RD3/PSP3
RD2/PSP2
RD1/PSP1
RD0/PSP0
RC3/SCK/SCL
RC2/CCP1/P1A
RC1/T1OSI/CCP2(1)
NC
ピン配置図 ( 続き )
注
1:
RB3 は CCP2 多重化用の代替ピンです。
DS41303E_JP - ページ 4
12
13
14
15
16
17
18
19
20
21
22
NC
NC
RC6/TX/CK
RB4/KBI0/AN11
RC5/SDO
RB5/KBI1/PGM
RC4/SDI/SDA
RB6/KBI2/PGC
RD3/PSP3
RB7/KBI3/PGD
RD2/PSP2
MCLR/VPP/RE3
RD1/PSP1
RA0/AN0/C12IN0RD0/PSP0
RA1/AN1/C12IN1RC3/SCK/SCL
RA2/AN2/VREF-/CVREF/C2IN+
RC2/CCP1/P1A
RA3/AN3/VREF+/C1IN+
RC1/T1OSI/CCP2(1)
RC0/T1OSO/T13CKI
44
43
42
41
40
39
38
37
36
35
34
RC7/RX/DT
RD4/PSP4
RD5/PSP5/P1B
RD6/PSP6/P1C
RD7/PSP7/P1D
VSS
VDD
VDD
RB0/INT0/FLT0/AN12
RB1/INT1/AN10/C12IN3RB2/INT2/AN8
PIC18F43K20
PIC18F44K20
PIC18F45K20
PIC18F46K20
NC
RC0/T1OSO/T13CKI
OSC2/CLKOUT/RA6
OSC1/CLKIN/RA7
VSS
VDD
RE2/CS/AN7
RE1/WR/AN6
RE0/RD/AN5
RA5/AN4/SS/HLVDIN/C2OUT
RA4/T0CKI/C1OUT
33
32
31
30
29
28
27
26
25
24
23
1
2
3
4
5
6
7
8
9
10
11
PIC18F43K20
PIC18F44K20
PIC18F45K20
PIC18F46K20
33
32
31
30
29
28
27
26
25
24
23
12
13
14
15
16
17
18
19
20
21
22
44-pin QFN
1
2
3
4
5
6
7
8
9
10
11
OSC2/CLKOUT/RA6
OSC1/CLKIN/RA7
VSS
VSS
VDD
VDD
RE2/CS/AN7
RE1/WR/AN6
RE0/RD/AN5
RA5/AN4/SS/HLVDIN/C2OUT
RA4/T0CKI/C1OUT
RB3/AN9/C12IN2-/CCP2(1)
NC
RB4/KBI0/AN11
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
MCLR/VPP/RE3
RA0/AN0/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+
RA3/AN3/VREF+/C1IN+
RC7/RX/DT
RD4/PSP4
RD5/PSP5/P1B
RD6/PSP6/P1C
RD7/PSP7/P1D
VSS
VDD
RB0/INT0/FLT0/AN12
RB1/INT1/AN10/C12IN3RB2/INT2/AN8
RB3/AN9/C12IN2-/CCP2(1)
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
Reference
ECCP
EUSART
MSSP
Timers
Slave
Interrupts
Pull-up
Basic
—
—
—
—
—
—
—
—
—
—
—
—
—
—
C2IN+
VREF-/
CVREF
—
—
—
—
—
—
—
—
—
—
—
—
—
—
T0CKI
SS
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
OSC2/
CLKOUT
Analog
—
—
I/O
—
—
QFN Pin
C12IN0-
TQFP Pin
Comparator
PIC18F4XK20 ピンの要約
DIL Pin
表 1:
2
19
19
RA0
AN0
3
20
20
RA1
AN1
C12IN1-
4
21
21
RA2
AN2
5
22
22
RA3
AN3
6
23
23
RA4
7
24
24
RA5
14
31
33
RA6
13
30
32
33
8
9
34
9
10
35
10
11
RB2
AN8
—
36
11
12
RB3
AN9
C12IN2-
37
14
14
RB4
AN11
38
15
15
RB5
39
16
16
RB6
40
17
17
15
32
34
16
17
35
36
35
36
C1IN+
VREF+
C1OUT
—
AN4
C2OUT
HLVDIN
—
—
—
—
—
—
—
—
—
—
—
RA7
—
AN12
—
—
RB1
AN10
C12IN3-
CCP2(1)
RB7
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
RB0
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
RC0
—
—
—
—
—
—
T1OSO/
T13CKI
—
CCP2(2)
—
—
—
CCP1/
P1A
—
RC1
RC2
—
—
—
—
FLT0
—
—
PGM
PGC
KBI3
Yes
PGD
—
—
—
—
T1OSI
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
23
42
42
RC4
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
SDO
TX/CK
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
26
1
1
RC7
19
38
38
RD0
20
39
39
RD1
21
40
40
RD2
22
41
41
RD3
27
2
2
RD4
28
3
3
RD5
29
4
4
RD6
30
5
5
RD7
—
—
—
—
—
—
—
—
—
—
—
8
25
25
RE0
AN5
9
26
26
RE1
AN6
10
27
27
RE2
AN7
—
—
—
—
—
—
—
—
RC5
1
18
18
RE3(3)
11
7
7
32
28
28
12
6
6
31
29
30
–
NC
8
–
NC
29
–-
NC
31
—
—
—
—
—
—
—
注 1:
2:
3:
P1B
P1C
P1D
—
—
—
—
—
—
—
—
—
—
—
RX/DT
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
Yes
Yes
—
RC6
Yes
—
KBI2
—
43
INT2
Yes
RC3
44
Yes
Yes
37
43
INT1
KBI1
37
44
OSC1/CLKIN
KBI0
18
25
—
Yes
—
—
—
—
—
SCK/
SCL
SDI/
SDA
24
—
INT0
PSP0
PSP1
PSP2
PSP3
PSP4
PSP5
PSP6
PSP7
RD
WR
CS
—
—
—
—
—
—
—
—
MCLR/VPP
VDD
VDD
VSS
VSS
VDD
VDD
VSS
CONFIG3H<0>=0 のとき CCP2 は RB3 と多重化されます。
CONFIG3H<0>=1 のとき CCP2 は RC1 と多重化されます。
入力専用です。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 5
PIC18F2XK20/4XK20
AN2
C2IN+
VREF-/
CVREF
AN3
C1IN+
VREF+
Basic
RA2
Pull-up
1
Interrupts
C12IN1-
4
Slave
C12IN0-
AN1
Timers
AN0
RA1
MSSP
Comparator
RA0
28
EUSART
Analog
27
3
ECCP
I/O
2
Reference
Pin QUAD
PIC18F2XK20 ピンの要約
Pin DIL
表 2:
5
2
RA3
6
3
RA4
7
4
RA5
10
7
RA6
OSC2/
CLKOUT
9
6
RA7
OSC1/
CLKIN
C1OUT
AN4
21
18
RB0
AN12
22
19
RB1
AN10
23
20
RB2
AN8
24
21
RB3
AN9
AN11
C2OUT
T0CKI
HLVDIN
SS
FLT0
INT0
Yes
C12IN3-
P1C
INT1
Yes
P1B
INT2
C12IN2-
CCP2(1)
Yes
Yes
25
22
RB4
KBI0
Yes
26
23
RB5
P1D
KBI1
Yes
27
24
RB6
KBI2
Yes
PGC
28
25
RB7
KBI3
Yes
PGD
11
8
RC0
PGM
T1OSO/
T13CKI
12
9
RC1
CCP2(2)
13
10
RC2
CCP1/
P1A
14
11
RC3
SCK/
SCL
15
12
RC4
SDI/
SDA
T1OSI
16
13
RC5
17
14
RC6
TX/CK
SDO
18
15
RC7
RX/DT
1
26
RE3(3)
MCLR/
VPP
8
5
VSS
19
16
VSS
17
VDD
20
注 1:
2:
3:
CONFIG3H<0>=0 のとき CCP2 は RB3 と多重化されます。
CONFIG3H<0>=1 のとき CCP2 は RC1 と多重化されます。
入力専用です。
DS41303E_JP - ページ 6
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
目次
1.0 デバイス概要 .......................................................................................................................................................................................9
2.0 オシレータ モジュール ( フェイルセーフ クロック モニタ機能付き ).....................................................................................25
3.0 電源管理モード .................................................................................................................................................................................41
4.0 リセット .............................................................................................................................................................................................49
5.0 メモリ構成 .........................................................................................................................................................................................63
6.0 フラッシュ プログラム メモリ .......................................................................................................................................................87
7.0 データ EEPROM メモリ ...................................................................................................................................................................97
8.0 8 x 8 ハードウェア乗算器 ..............................................................................................................................................................103
9.0 割り込み ...........................................................................................................................................................................................105
10.0 I/O ポート .........................................................................................................................................................................................119
11.0 キャプチャ / コンペア /PWM (CCP) モジュール ........................................................................................................................141
12.0 タイマ 0 モジュール .......................................................................................................................................................................153
13.0 タイマ 1 モジュール .......................................................................................................................................................................157
14.0 タイマ 2 モジュール .......................................................................................................................................................................165
15.0 タイマ 3 モジュール .......................................................................................................................................................................167
16.0 拡張キャプチャ / コンペア /PWM (ECCP) モジュール..............................................................................................................171
17.0 マスター同期シリアル ポート (MSSP) モジュール ...................................................................................................................191
18.0 拡張ユニバーサル同期 / 非同期送受信器 (EUSART).................................................................................................................233
19.0 A/D コンバータ (ADC) モジュール ..............................................................................................................................................261
20.0 コンパレータ モジュール ..............................................................................................................................................................275
21.0 電圧リファレンス ...........................................................................................................................................................................285
22.0 高 / 低電圧検知 (HLVD) .................................................................................................................................................................289
23.0 CPU の特殊機能 ..............................................................................................................................................................................295
24.0 命令セットの概要 ...........................................................................................................................................................................311
25.0 開発サポート ...................................................................................................................................................................................361
26.0 電気的特性 .......................................................................................................................................................................................365
27.0 DC 特性と AC 特性のグラフおよび表 .........................................................................................................................................399
28.0 パッケージ情報 ...............................................................................................................................................................................401
付録 A:
改版履歴 ................................................................................................................................................................................413
付録 B:
デバイス間の違い ................................................................................................................................................................414
索引 ............................................................................................................................................................................................................415
マイクロチップ社のウェブ サイト ........................................................................................................................................................427
お客様への変更通知サービス .................................................................................................................................................................427
お客様サポート .........................................................................................................................................................................................427
読者アンケート .........................................................................................................................................................................................428
製品識別システム .....................................................................................................................................................................................429
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 7
PIC18F2XK20/4XK20
大切なお客様へ
マイクロチップ社では、お客様にマイクロチップ社製品を効果的にお使いいただくために、分かりやすい文書を提供するように
努めています。このため、弊社はお客様のニーズに更に的確に応えられるように、出版物の改善を続けていきます。弊社の出版
物は、新しい巻や更新情報の発表に合わせて内容の見直しと充実が図られます。
本書に関してご意見やご質問をお持ちのお客様は、電子メールまたはファクスで弊社のマーケティングコミュニケーション部門
にご連絡ください。電子メールアドレスは [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) で登録手続きを行うと、マイクロチップ社のすべての製品に関する最
新情報を受信できるようになります。
DS41303E_JP - ページ 8
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
1.0
1.1.2
デバイス概要
この文書には、下記のデバイスの特性情報が含まれ
ています。
• PIC18F23K20
• PIC18F43K20
• PIC18F24K20
• PIC18F44K20
• PIC18F25K20
• PIC18F45K20
• PIC18F26K20
• PIC18F46K20
この フ ァミ リ は、低 価格 で 高い 計算 性 能を 誇 る
PIC18 マイクロコントローラの利点をすべて備える
とともに、優れた書き込み耐性のフラッシュ プロ
グラム メモリを搭載しています。そのような機能
に加えて、PIC18F2XK20/4XK20 ファミリは、さま
ざまな高性能省電力アプリケーションに最適なマ
イクロコントローラ向けに設計を強化しています。
1.1
1.1.1
新しいコアの機能
ナノワット テクノロジ
PIC18F2XK20/4XK20 ファミリのすべてのデバイス
は、動作時の電力消費を大幅に低減する、さまざ
まな機能を搭載しています。主な機能は次のとお
りです。
• 代替ラン モード : コントローラに、タイマ 1 ソー
スまたは内部オシレータ ブロックからクロック
を供給することで、コード実行時の電力消費を
90% も低減できます。
• 複数のアイドル モード : このコントローラは、
CPU コアだけをオフにし、周辺回路はアクティブ
に保った状態で動作させることができます。この
状態に移行すると、電力消費は更に低減され、通
常動作に必要とされる電力のわずか 4% で動作し
ます。
• オンザフライ モード スイッチング : 動作中に
ユーザー コードから電源管理モードを起動でき
るため、ユーザーはアプリケーションのソフト
ウェア設計に省電力機能を組み込むことができ
ます。
• 低消費電力の主要モジュール : タイマ 1 および
ウォッチドッグ タイマの電力要件は、いずれも最
低限に抑えられています。値については、26.0 項
「電気的特性」を参照してください。
 2009 Microchip Technology Inc.
複数のオシレータ オプションと機能
PIC18F2XK20/4XK20 ファミリのデバイスには、い
ずれも 10 種類の異なるオシレータ オプションがあ
るため、アプリケーション ハードウェアの開発時
に幅広い選択が可能です。オプションは次のとおり
です。
• 水晶振動子またはセラミック振動子を用いた 4 つ
の水晶振動子モード
• 2 つの外部クロック モード。2 ピン ( オシレータ
入力と 4 分周クロック出力 ) と 1 ピン ( オシレー
タ入力と汎用 I/O に再割り当てされる 2 本目の
ピン ) のオプションがあります。
• 2 つの外部 RC オシレータ モード。ピンのオプ
ションは外部クロック モードと同じです。
• 内部オシレータ ブロックには 16 MHz の
HFINTOSC オシレータと 31 kHz の LFINTOSC オ
シレータがあります。これら 2 つのオシレータ
を組み合わせることで、ユーザーは 31 kHz から
16 MHz までの 8 種類のクロック周波数を選ぶこ
とができます。このオプションによって不要に
なったオシレータ ピン 2 本を、汎用 I/O として
使用できます。
• 高速水晶振動子モードと内部オシレータ モード
の両方で、フェーズ ロック ループ (PLL) 周波数
逓倍器を使用でき、最大 64 MHz のクロック ス
ピードを実現できます。内部オシレータと PLL を
使用すると、ユーザーは外付けの水晶振動子やク
ロック回路を使用せずに、31 kHz から 64 MHz ま
でのあらゆるクロック速度を選択できます。
内部オシレータ ブロックは、クロック ソースとし
て利用する他に、安定したリファレンス ソースに
なります。これは、このファミリの動作の信頼性を
高めるもう一つの特長です。
• フェイルセーフ クロック モニタ : このオプショ
ンはメイン クロック ソースを、LFINTOSC から
のリファレンス信号と継続的に比較、監視しま
す。クロックに障害が発生すると、コントローラ
は内部オシレータ ブロックに切り替えられ、動作
を継続するか、アプリケーションを安全にシャッ
トダウンできます。
• 2 段速スタートアップ : このオプションでは、パ
ワーオン リセットまたはスリープ モードより
ウェイクアップしてから、プライマリ クロック
ソースが使用可能になるまで、クロック ソースと
して内部オシレータを使用します。
Preliminary
DS41303E_JP - ページ 9
PIC18F2XK20/4XK20
1.2
その他の特殊機能
• メモリの書き込み耐性 : プログラム メモリおよび
データ EEPROM のいずれのフラッシュ セルも、
公
称でキロサイクル オーダーの消去 / 書き込み耐性
を保証しています。プログラム メモリは最大 10K
サイクル、EEPROM は 100K サイクルです。リフ
レッシュをしない場合のデータ保持期間は、控え
めに見積もっても 40 年以上です。
• 自己プログラム機能 : これらのデバイスは、内部
のソフトウェア制御によって、デバイス自体のプ
ログラム メモリ空間に書き込むことができます。
プログラム メモリ先頭の保護されたブート ブ
ロックにあるブートローダ ルーチンを使用し、現
場でみずからを更新するアプリケーションを作
成できます。
• 拡張命令セット : PIC18F2XK20/4XK20 ファミリ
では、PIC18 命令セットにオプションの拡張命令
セットを導入しました。この拡張セットによって
8 つの新規命令と、インデックス付きアドレス指
定モードが追加されます。デバイスの構成オプ
ションとして有効化されるこの拡張機能は、元は
C 言語などの高級言語によって開発された再入可
能なアプリケーション コードを最適化するため
に、特別に設計されました。
• 拡張 CCP モジュール : このモジュールは、PWM
モードにおいて、ハーフブリッジおよびフルブ
リッジ ドライバを制御する 1、2、4 系統の変調出
力を供給します。その他にも次のような機能があ
ります。
- 割り込みまたはその他の選択条件によって
PWM 出力をオフにする、自動シャットダウン
- 条件が解除されたときに出力を再度アクティ
ブにする、自動再スタート
- 4 つの出力のうち、1 つまたは複数を選択的に
有効化して、
PWM信号の出力を切り替える機能
• アドレス指定可能な拡張USART:このシリアル通
信モジュールは、標準の RS-232 動作が可能で、
LIN バス プロトコルをサポートします。その他に
強化された機能には、自動ボーレート検出および
分解能を高めた 16 ビットのボーレート ジェネ
レータなどがあります。マイクロコントローラが
内部オシレータ ブロックを使用している場合、外
部と通信するアプリケーションの安定した動作
は、USART が確保します。外付けの水晶振動子
やそれに付随する電力は必要ありません。
• 10 ビット A/D コンバータ : このモジュールでは、
アクイジション時間をプログラムできます。した
がって、サンプリング周期を待たずにチャネルを
選択し、変換を開始できるため、コード オーバー
ヘッドが低減されます。
DS41303E_JP - ページ 10
• 拡張ウォッチドッグ タイマ (WDT): この拡張
バージョンでは、16 ビットのポストスケーラを
採用したことで、動作電圧および温度の全範囲で
安定した拡張タイムアウト範囲が得られます。タ
イムアウト周期については、26.0 項「電気的特
性」を参照してください。
1.3
ファミリの各メンバーに関する詳細
PIC18F2XK20/4XK20 ファミリのデバイスは、28 ピ
ンおよび 40/44 ピンのパッケージで供給されます。
2 つのグループのブロック図を図 1-1 と図 1-2 に示
します。
各デバイスは、次の 5 つの点が異なっています。
1.
2.
3.
4.
フラッシュ プログラム メモリ (PIC18F23K20/
43K20 デバイス : 8 KB、PIC18F24K20/44K20 デ
バイス : 16 KB、PIC18F25K20/45K20 デバイス :
32 KB、PIC18F26K20/46K20 デバイス : 64 KB)
A/D チャネル (28 ピンデバイス : 11 チャネル、
40/44 ピンデバイス : 14 チャネル )
I/O ポート (28 ピンデバイス : 3 つの双方向ポー
ト、40/44 ピンデバイス : 5 つの双方向ポート )
パラレル スレーブ ポート (40/44 ピンデバイス
のみに搭載 )
その他の特徴は、このファミリ内の全デバイスで共
通です。これらを表 1-1 に示します。
すべてのデバイスのピン配置をピンの要約、表 1 と
表 2 に示します。入出力ピンの機能を表 1-2 と表 13 に示します。
Preliminary
 2009 Microchip Technology Inc.
A, B, C, (E)(1)
4
A, B, C, (E)(1)
4
1
1
Timers
Capture/Compare/PWM Modules
Enhanced
Capture/Compare/PWM Modules
 2009 Microchip Technology Inc.
Preliminary
1 internal plus
10 Input
Channels
10-bit Analog-to-Digital Module
Yes
Programmable Brown-out Reset
注 1:
Packages
1
1
4
1
1
4
A, B, C, D, E
20
256
512
4096
8192
DC – 64 MHz
PIC18F43K20
1
1
4
A, B, C, D, E
20
256
768
8192
16384
DC – 64 MHz
PIC18F44K20
1 internal plus
10 Input
Channels
No
1 internal plus
10 Input
Channels
No
1 internal plus
10 Input
Channels
No
1 internal plus
13 Input
Channels
Yes
Yes
1 internal plus
13 Input
Channels
28-pin PDIP
28-pin SOIC
28-pin QFN
28-pin SSOP
75 Instructions;
83 with Extended
Instruction Set
enabled
Yes
Yes
28-pin PDIP
28-pin SOIC
28-pin QFN
28-pin SSOP
75 Instructions;
83 with Extended
Instruction Set
enabled
Yes
Yes
28-pin PDIP
28-pin SOIC
28-pin QFN
28-pin SSOP
75 Instructions;
83 with Extended
Instruction Set
enabled
Yes
Yes
40-pin PDIP
44-pin QFN
44-pin TQFP
75 Instructions;
83 with Extended
Instruction Set
enabled
Yes
Yes
Yes
Yes
40-pin PDIP
44-pin QFN
44-pin TQFP
75 Instructions;
83 with Extended
Instruction Set
enabled
PORTE には読み出し専用の 1 ビット、RE3 しかありません。LATE および TRISE レジスタは実装されていません。
28-pin PDIP
28-pin SOIC
28-pin QFN
28-pin SSOP
75 Instructions;
83 with Extended
Instruction Set
enabled
Yes
Programmable
High/Low-Voltage Detect
Instruction Set
1
1
4
A, B, C, (E)(1)
19
1024
3936
32768
65536
DC – 64 MHz
PIC18F26K20
1
1
4
A, B, C, D, E
20
256
1536
16384
32768
DC – 64 MHz
PIC18F45K20
1
1
4
A, B, C, D, E
20
1024
3936
32768
65536
DC – 64 MHz
PIC18F46K20
1 internal plus
13 Input
Channels
Yes
1 internal plus
13 Input
Channels
Yes
40-pin PDIP
44-pin QFN
44-pin TQFP
75 Instructions;
83 with Extended
Instruction Set
enabled
Yes
Yes
40-pin PDIP
44-pin QFN
44-pin TQFP
75 Instructions;
83 with Extended
Instruction Set
enabled
Yes
Yes
POR, BOR,
POR, BOR,
POR, BOR,
POR, BOR,
POR, BOR,
POR, BOR,
POR, BOR,
POR, BOR,
RESET
RESET
RESET
RESET
RESET
RESET
RESET
RESET
Instruction,
Instruction,
Instruction,
Instruction,
Instruction,
Instruction,
Instruction,
Instruction,
Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack
Underflow
Underflow
Underflow
Underflow
Underflow
Underflow
Underflow
Underflow
(PWRT, OST),
(PWRT, OST),
(PWRT, OST),
(PWRT, OST),
(PWRT, OST),
(PWRT, OST),
(PWRT, OST),
(PWRT, OST),
MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional),
WDT
WDT
WDT
WDT
WDT
WDT
WDT
WDT
No
Resets (and Delays)
1
1
A, B, C, (E)(1)
19
256
1536
16384
32768
DC – 64 MHz
PIC18F25K20
MSSP,
MSSP,
MSSP,
MSSP,
MSSP,
MSSP,
MSSP,
MSSP,
Enhanced USART Enhanced USART Enhanced USART Enhanced USART Enhanced USART Enhanced USART Enhanced USART Enhanced USART
Parallel Communications (PSP)
Serial Communications
I/O Ports
19
19
Interrupt Sources
256
768
512
256
8192
Data EEPROM Memory (Bytes)
4096
Program Memory
(Instructions)
16384
DC – 64 MHz
PIC18F24K20
Data Memory (Bytes)
8192
DC – 64 MHz
PIC18F23K20
表 1-1:
Program Memory (Bytes)
Operating Frequency
Features
PIC18F2XK20/4XK20
デバイスの特徴
DS41303E_JP - ページ 11
PIC18F2XK20/4XK20
図 1-1:
PIC18F2XK20(28 ピン ) ブロック図
Data Bus<8>
Table Pointer<21>
Data Latch
8
8
inc/dec logic
PORTA
Data Memory
PCLATU PCLATH
21
Address Latch
20
PCU PCH PCL
Program Counter
12
Data Address<12>
31-Level Stack
4
BSR
Address Latch
Program Memory
(8/16/32/64 Kbytes)
STKPTR
12
FSR0
FSR1
FSR2
Data Latch
4
Access
Bank
12
PORTB
8
inc/dec
logic
Table Latch
Instruction Bus <16>
Address
Decode
ROM Latch
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
OSC2/CLKOUT(3)/RA6
OSC1/CLKIN(3)/RA7
RB0/INT0/FLT0/AN12
RB1/INT1/AN10/C12IN3RB2/INT2/AN8
RB3/AN9/CCP2(1)/C12IN2RB4/KBI0/AN11
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
IR
Instruction
Decode and
Control
8
State machine
control signals
PRODH PRODL
PORTC
8 x 8 Multiply
3
8
W
BITOP
8
Internal
Oscillator
Block
OSC1(3)
OSC2
(3)
T1OSI
LFINTOSC
Oscillator
T1OSO
16 MHz
Oscillator
Single-Supply
Programming
In-Circuit
Debugger
MCLR(2)
VDD, VSS
BOR
HLVD
FVR
CVREF Comparator
注
1:
2:
3:
Power-up
Timer
8
8
8
8
Oscillator
Start-up Timer
Power-on
Reset
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2(1)
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
ALU<8>
8
Watchdog
Timer
Precision
Band Gap
Reference
Brown-out
Reset
Fail-Safe
Clock Monitor
FVR
PORTE
MCLR/VPP/RE3(2)
Data
EEPROM
Timer0
Timer1
Timer2
Timer3
ECCP1
CCP2
MSSP
EUSART
ADC
10-bit
FVR
CCP2 は、構成ビット CCP2MX がセットされている場合は RC1、セットされていない場合は RB3 と多重化されます。
RE3 を使用できるのは、MCLR 機能が無効になっているときのみです。
OSC1/CLKIN および OSC2/CLKOUT を使用できるのは、オシレータ選択モードの動作時で、これらのピンがデジタル I/O として使用
されていない場合のみです。詳細は、2.0 項「オシレータ モジュール ( フェイルセーフ クロック モニタ機能付き )」を参照してください。
DS41303E_JP - ページ 12
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 1-2:
PIC18F4XK20 (40/44 ピン ) ブロック図
Data Bus<8>
Table Pointer<21>
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/HLVDIN/C2OUT
OSC2/CLKOUT(3)/RA6
OSC1/CLKIN(3)/RA7
Data Latch
8
8
inc/dec logic
PORTA
Data Memory
PCLATU PCLATH
21
Address Latch
20
PCU PCH PCL
Program Counter
12
Data Address<12>
31-Level Stack
4
BSR
Address Latch
Program Memory
(8/16/32/64 Kbytes)
STKPTR
8
FSR0
FSR1
FSR2
12
inc/dec
logic
Table Latch
Instruction Bus <16>
RB0/INT0/FLT0/AN12
RB1/INT1/AN10/C12IN3RB2/INT2/AN8
RB3/AN9/CCP2(1)/C12IN2RB4/KBI0/AN11
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
4
Access
Bank
12
Data Latch
PORTB
PORTC
Address
Decode
ROM Latch
RC0/T1OSO/T13CKI
RC1/T1OSI/CCP2(1)
RC2/CCP1/P1A
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
IR
Instruction
Decode and
Control
8
State machine
control signals
PRODH PRODL
PORTD
8 x 8 Multiply
3
W
BITOP
8
Internal
Oscillator
Block
OSC1(3)
OSC2
(3)
T1OSI
LFINTOSC
Oscillator
T1OSO
16 MHz
Oscillator
Single-Supply
Programming
In-Circuit
Debugger
MCLR(2)
VDD, VSS
BOR
HLVD
Power-up
Timer
8
8
Watchdog
Timer
ALU<8>
8
PORTE
Brown-out
Reset
Fail-Safe
Clock Monitor
Precision
Band Gap
Reference
FVR
Data
EEPROM
Timer0
Timer1
Timer2
Timer3
ECCP1
CCP2
MSSP
EUSART
ADC
10-bit
FVR
CVREF Comparator
注
1:
2:
3:
8
8
Oscillator
Start-up Timer
Power-on
Reset
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5/P1B
RD6/PSP6/P1C
RD7/PSP7/P1D
8
FVR
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
MCLR/VPP/RE3(2)
PSP
CCP2 は、構成ビット CCP2MX がセットされている場合は RC1、セットされていない場合は RB3 と多重化されます。
RE3 を使用できるのは、MCLR 機能が無効になっているときのみです。
OSC1/CLKIN および OSC2/CLKOUT を使用できるのは、オシレータ選択モードの動作時で、これらのピンがデジタル I/O として使用
されていない場合のみです。詳細は、2.0 項「オシレータ モジュール ( フェイルセーフ クロック モニタ機能付き )」を参照してください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 13
PIC18F2XK20/4XK20
表 1-2:
PIC18F2XK20 入出力ピン機能一覧
Pin Name
Pin Number
Pin Buffer
PDIP,
Type
Type
QFN
SOIC
MCLR/VPP/RE3
MCLR
VPP
RE3
1
OSC1/CLKIN/RA7
OSC1
9
26
I
P
I
6
RA7
OSC2/CLKOUT/RA6
OSC2
CLKOUT
RA6
10
ST
Master Clear (input) or programming voltage (input)
Active-low Master Clear (device Reset) input
Programming voltage input
Digital input
Oscillator crystal or external clock input
Oscillator crystal input or external clock source input
ST buffer when configured in RC mode; CMOS otherwise
External clock source input. Always associated with pin
I CMOS
function OSC1. (See related OSC1/CLKIN, OSC2/CLKOUT
pins)
General purpose I/O pin
I/O TTL
I
CLKIN
ST
Description
7
O
O
I/O
ST
Oscillator crystal or clock output
Oscillator crystal output. Connects to crystal or
resonator in Crystal Oscillator mode
In RC mode, OSC2 pin outputs CLKOUT which has 1/4 the
—
frequency of OSC1 and denotes the instruction cycle rate
General purpose I/O pin
TTL
—
記号の説明 : TTL = TTL 互換入力
CMOS = CMOS 互換入力または出力
ST = CMOS レベルのシュミット トリガ入力
I
= 入力
O
= 出力
P
= 電源
注 1: 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
2: 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
DS41303E_JP - ページ 14
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 1-2:
PIC18F2XK20 入出力ピン機能一覧 ( 続き )
Pin Number
Pin Name
Pin Buffer
PDIP,
QFN Type Type
SOIC
Description
PORTA is a bidirectional I/O port.
RA0/AN0/C12IN0RA0
AN0
C12IN0-
2
RA1/AN1/C12IN1RA1
AN1
C12IN1-
3
RA2/AN2/VREF-/CVREF/
C2IN+
RA2
AN2
VREFCVREF
C2IN+
4
RA3/AN3/VREF+/C1IN+
RA3
AN3
VREF+
C1IN+
5
RA4/T0CKI/C1OUT
RA4
T0CKI
C1OUT
6
RA5/AN4/SS/HLVDIN/
C2OUT
RA5
AN4
SS
HLVDIN
C2OUT
7
27
I/O TTL
I Analog
I Analog
Digital I/O
Analog input 0, ADC channel 0
Comparators C1 and C2 inverting input
I/O TTL
I Analog
I Analog
Digital I/O
ADC input 1, ADC channel 1
Comparators C1 and C2 inverting input
I/O
I
I
O
I
Digital I/O
Analog input 2, ADC channel 2
A/D reference voltage (low) input
Comparator reference voltage output
Comparator C2 non-inverting input
28
1
TTL
Analog
Analog
Analog
Analog
2
I/O TTL
I Analog
I Analog
I Analog
Digital I/O
Analog input 3, ADC channel 3
A/D reference voltage (high) input
Comparator C1 non-inverting input
I/O
ST
I
ST
O CMOS
Digital I/O
Timer0 external clock input
Comparator C1 output
I/O TTL
I Analog
I
TTL
I Analog
O CMOS
Digital I/O
Analog input 4, ADC channel 4
SPI slave select input
High/Low-Voltage Detect input
Comparator C2 output
3
4
RA6
See the OSC2/CLKOUT/RA6 pin
RA7
See the OSC1/CLKIN/RA7 pin
記号の説明 : TTL = TTL 互換入力
CMOS = CMOS 互換入力または出力
ST = CMOS レベルのシュミット トリガ入力
I
= 入力
O
= 出力
P
= 電源
注 1: 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
2: 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 15
PIC18F2XK20/4XK20
表 1-2:
PIC18F2XK20 入出力ピン機能一覧 ( 続き )
Pin Number
Pin Name
Pin Buffer
PDIP,
QFN Type Type
SOIC
Description
PORTB is a bidirectional I/O port. PORTB can be software
programmed for internal weak pull-up on each input.
RB0/INT0/FLT0/AN12
RB0
INT0
FLT0
AN12
21
RB1/INT1/AN10/
C12IN3-/P1C
RB1
INT1
AN10
C12IN3P1C
22
RB2/INT2/AN8/P1B
RB2
INT2
AN8
P1B
23
RB3/AN9/C12IN2-/CCP2
RB3
AN9
C12IN2CCP2(2)
24
RB4/KBI0/AN11/P1D
RB4
KBI0
AN11
P1D
25
RB5/KBI1/PGM
RB5
KBI1
PGM
26
RB6/KBI2/PGC
RB6
KBI2
PGC
27
RB7/KBI3/PGD
RB7
KBI3
PGD
28
18
I/O TTL
I
ST
I
ST
I Analog
Digital I/O
External interrupt 0
PWM Fault input for CCP1
Analog input 12, ADC channel 12
I/O TTL
I
ST
I Analog
I Analog
O CMOS
Digital I/O
External interrupt 1
Analog input 10, ADC channel 10
Comparators C1 and C2 inverting input
Enhanced CCP1 PWM output
I/O TTL
I
ST
I Analog
O CMOS
Digital I/O
External interrupt 2
Analog input 8, ADC channel 8
Enhanced CCP1 PWM output
I/O TTL
I Analog
I Analog
I/O
ST
Digital I/O
Analog input 9, ADC channel 9
Comparators C1 and C2 inverting input
Capture 2 input/Compare 2 output/PWM 2 output
I/O TTL
TTL
I
I Analog
O CMOS
Digital I/O
Interrupt-on-change pin
Analog input 11, ADC channel 11
Enhanced CCP1 PWM output
I/O
I
I/O
TTL
TTL
ST
Digital I/O
Interrupt-on-change pin
Low-Voltage ICSP™ Programming enable pin
I/O
I
I/O
TTL
TTL
ST
Digital I/O
Interrupt-on-change pin
In-Circuit Debugger and ICSP™ programming clock pin
I/O
I
I/O
TTL
TTL
ST
Digital I/O
Interrupt-on-change pin
In-Circuit Debugger and ICSP™ programming data pin
19
20
21
22
23
24
25
記号の説明 : TTL = TTL 互換入力
CMOS = CMOS 互換入力または出力
ST = CMOS レベルのシュミット トリガ入力
I
= 入力
O
= 出力
P
= 電源
注 1: 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
2: 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
DS41303E_JP - ページ 16
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 1-2:
PIC18F2XK20 入出力ピン機能一覧 ( 続き )
Pin Number
Pin Name
Pin Buffer
PDIP,
QFN Type Type
SOIC
Description
PORTC is a bidirectional I/O port.
RC0/T1OSO/T13CKI
RC0
T1OSO
T13CKI
11
RC1/T1OSI/CCP2
RC1
T1OSI
CCP2(1)
12
RC2/CCP1/P1A
RC2
CCP1
P1A
13
RC3/SCK/SCL
RC3
SCK
SCL
14
RC4/SDI/SDA
RC4
SDI
SDA
15
RC5/SDO
RC5
SDO
16
RC6/TX/CK
RC6
TX
CK
17
RC7/RX/DT
RC7
RX
DT
18
8
I/O
O
I
ST
—
ST
Digital I/O
Timer1 oscillator output
Timer1/Timer3 external clock input
9
I/O
ST
I Analog
I/O
ST
Digital I/O
Timer1 oscillator input
Capture 2 input/Compare 2 output/PWM 2 output
I/O
ST
I/O
ST
O CMOS
Digital I/O
Capture 1 input/Compare 1 output
Enhanced CCP1 PWM output
10
11
I/O
I/O
I/O
ST
ST
ST
Digital I/O
Synchronous serial clock input/output for SPI mode
Synchronous serial clock input/output for I2C™ mode
I/O
I
I/O
ST
ST
ST
Digital I/O
SPI data in
I2C™ data I/O
I/O
O
ST
—
Digital I/O
SPI data out
I/O
O
I/O
ST
—
ST
Digital I/O
EUSART asynchronous transmit
EUSART synchronous clock (see related RX/DT)
I/O
I
I/O
ST
ST
ST
Digital I/O
EUSART asynchronous receive
EUSART synchronous data (see related TX/CK)
12
13
14
15
RE3
—
—
—
—
VSS
8, 19
5, 16
P
—
See MCLR/VPP/RE3 pin
Ground reference for logic and I/O pins
VDD
20
17
P
—
Positive supply for logic and I/O pins
記号の説明 : TTL = TTL 互換入力
CMOS = CMOS 互換入力または出力
ST = CMOS レベルのシュミット トリガ入力
I
= 入力
O
= 出力
P
= 電源
注 1: 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
2: 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 17
PIC18F2XK20/4XK20
表 1-3:
PIC18F4XK20 入出力ピン機能一覧
Pin Name
Pin Number
PDIP
MCLR/VPP/RE3
MCLR
VPP
RE3
1
OSC1/CLKIN/RA7
OSC1
13
Pin Buffer
Type
Type
QFN TQFP
18
18
I
P
I
32
30
I
CLKIN
I
RA7
I/O
OSC2/CLKOUT/RA6
OSC2
CLKOUT
RA6
14
33
ST
ST
Description
Master Clear (input) or programming voltage (input)
Active-low Master Clear (device Reset) input
Programming voltage input
Digital input
Oscillator crystal or external clock input
Oscillator crystal input or external clock source input
ST buffer when configured in RC mode;
analog otherwise
CMOS
External clock source input. Always associated with
pin function OSC1 (See related OSC1/CLKIN,
OSC2/CLKOUT pins)
General purpose I/O pin
TTL
ST
31
O
—
O
—
I/O
TTL
Oscillator crystal or clock output
Oscillator crystal output. Connects to crystal
or resonator in Crystal Oscillator mode
In RC mode, OSC2 pin outputs CLKOUT which
has 1/4 the frequency of OSC1 and denotes
the instruction cycle rate
General purpose I/O pin
記号の説明 : TTL = TTL 互換入力
ST = CMOS レベルのシュミット トリガ入力
O
= 出力
注 1:
2:
CMOS = CMOS 互換入力または出力
I
= 入力
P
= 電源
構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
DS41303E_JP - ページ 18
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 1-3:
PIC18F4XK20 入出力ピン機能一覧 ( 続き )
Pin Name
Pin Number
PDIP
Pin Buffer
Type
Type
QFN TQFP
Description
PORTA is a bidirectional I/O port.
RA0/AN0/C12IN0RA0
AN0
C12IN0-
2
RA1/AN1/C12IN0RA1
AN1
C12IN0-
3
RA2/AN2/VREF-/
CVREF/C2IN+
RA2
AN2
VREFCVREF
C2IN+
4
RA3/AN3/VREF+/
C1IN+
RA3
AN3
VREF+
C1IN+
5
RA4/T0CKI/C1OUT
RA4
T0CKI
C1OUT
6
RA5/AN4/SS/
HLVDIN/C2OUT
RA5
AN4
SS
HLVDIN
C2OUT
7
19
20
21
22
23
24
19
I/O
I
I
TTL
Analog
Analog
Digital I/O
Analog input 0, ADC channel 0
Comparator C1 and C2 inverting input
I/O
I
I
TTL
Analog
Analog
Digital I/O
Analog input 1, ADC channel 1
Comparator C1 and C2 inverting input
I/O
I
I
O
I
TTL
Analog
Analog
Analog
Analog
Digital I/O
Analog input 2, ADC channel 2
A/D reference voltage (low) input
Comparator reference voltage output
Comparator C2 non-inverting input
I/O
I
I
I
TTL
Analog
Analog
Analog
Digital I/O
Analog input 3, ADC channel 3
A/D reference voltage (high) input
Comparator C1 non-inverting input
I/O
I
O
ST
ST
CMOS
Digital I/O
Timer0 external clock input
Comparator C1 output
I/O
I
I
I
O
TTL
Analog
TTL
Analog
CMOS
Digital I/O
Analog input 4, ADC channel 4
SPI slave select input
High/Low-Voltage Detect input
Comparator C2 output
20
21
22
23
24
RA6
See the OSC2/CLKOUT/RA6 pin
RA7
See the OSC1/CLKIN/RA7 pin
記号の説明 : TTL = TTL 互換入力
ST = CMOS レベルのシュミット トリガ入力
O
= 出力
注 1:
2:
CMOS = CMOS 互換入力または出力
I
= 入力
P
= 電源
構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 19
PIC18F2XK20/4XK20
表 1-3:
PIC18F4XK20 入出力ピン機能一覧 ( 続き )
Pin Name
Pin Number
PDIP
Pin Buffer
Type
Type
QFN TQFP
Description
PORTB is a bidirectional I/O port. PORTB can be
software programmed for internal weak pull-up on each
input.
RB0/INT0/FLT0/AN12
RB0
INT0
FLT0
AN12
33
RB1/INT1/AN10/
C12IN3RB1
INT1
AN10
C12IN3-
34
RB2/INT2/AN8
RB2
INT2
AN8
35
RB3/AN9/C12IN2-/
CCP2
RB3
AN9
C12IN23CCP2(2)
36
RB4/KBI0/AN11
RB4
KBI0
AN11
37
RB5/KBI1/PGM
RB5
KBI1
PGM
38
RB6/KBI2/PGC
RB6
KBI2
PGC
39
RB7/KBI3/PGD
RB7
KBI3
PGD
40
9
10
11
12
14
15
16
17
8
I/O
I
I
I
TTL
ST
ST
Analog
Digital I/O
External interrupt 0
PWM Fault input for Enhanced CCP1
Analog input 12, ADC channel 12
I/O
I
I
I
TTL
ST
Analog
Analog
Digital I/O
External interrupt 1
Analog input 10, ADC channel 10
Comparator C1 and C2 inverting input
I/O
I
I
TTL
ST
Analog
Digital I/O
External interrupt 2
Analog input 8, ADC channel 8
I/O
I
I
I/O
TTL
Analog
Analog
ST
Digital I/O
Analog input 9, ADC channel 9
Comparator C1 and C2 inverting input
Capture 2 input/Compare 2 output/PWM 2 output
I/O
I
I
TTL
TTL
Analog
Digital I/O
Interrupt-on-change pin
Analog input 11, ADC channel 11
I/O
I
I/O
TTL
TTL
ST
Digital I/O
Interrupt-on-change pin
Low-Voltage ICSP™ Programming enable pin
I/O
I
I/O
TTL
TTL
ST
Digital I/O
Interrupt-on-change pin
In-Circuit Debugger and ICSP™ programming
clock pin
I/O
I
I/O
TTL
TTL
ST
Digital I/O
Interrupt-on-change pin
In-Circuit Debugger and ICSP™ programming
data pin
9
10
11
14
15
16
17
記号の説明 : TTL = TTL 互換入力
ST = CMOS レベルのシュミット トリガ入力
O
= 出力
注 1:
2:
CMOS = CMOS 互換入力または出力
I
= 入力
P
= 電源
構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
DS41303E_JP - ページ 20
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 1-3:
PIC18F4XK20 入出力ピン機能一覧 ( 続き )
Pin Name
Pin Number
PDIP
Pin Buffer
Type
Type
QFN TQFP
Description
PORTC is a bidirectional I/O port.
RC0/T1OSO/T13CKI
RC0
T1OSO
T13CKI
15
RC1/T1OSI/CCP2
RC1
T1OSI
CCP2(1)
16
RC2/CCP1/P1A
RC2
CCP1
P1A
17
RC3/SCK/SCL
RC3
SCK
18
34
35
36
37
32
23
RC5/SDO
RC5
SDO
24
RC6/TX/CK
RC6
TX
CK
25
RC7/RX/DT
RC7
RX
DT
26
42
43
44
1
ST
—
ST
Digital I/O
Timer1 oscillator output
Timer1/Timer3 external clock input
I/O
I
I/O
ST
CMOS
ST
Digital I/O
Timer1 oscillator input
Capture 2 input/Compare 2 output/PWM 2 output
I/O
I/O
O
ST
ST
—
Digital I/O
Capture 1 input/Compare 1 output/PWM 1 output
Enhanced CCP1 output
I/O
I/O
ST
ST
I/O
ST
Digital I/O
Synchronous serial clock input/output for
SPI mode
Synchronous serial clock input/output for I2C™ mode
I/O
I
I/O
ST
ST
ST
Digital I/O
SPI data in
I2C™ data I/O
I/O
O
ST
—
Digital I/O
SPI data out
I/O
O
I/O
ST
—
ST
Digital I/O
EUSART asynchronous transmit
EUSART synchronous clock (see related RX/DT)
I/O
I
I/O
ST
ST
ST
Digital I/O
EUSART asynchronous receive
EUSART synchronous data (see related TX/CK)
35
36
37
SCL
RC4/SDI/SDA
RC4
SDI
SDA
I/O
O
I
42
43
44
1
記号の説明 : TTL = TTL 互換入力
ST = CMOS レベルのシュミット トリガ入力
O
= 出力
注 1:
2:
CMOS = CMOS 互換入力または出力
I
= 入力
P
= 電源
構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 21
PIC18F2XK20/4XK20
表 1-3:
PIC18F4XK20 入出力ピン機能一覧 ( 続き )
Pin Name
Pin Number
PDIP
Pin Buffer
Type
Type
QFN TQFP
Description
PORTD is a bidirectional I/O port or a Parallel Slave
Port (PSP) for interfacing to a microprocessor port.
These pins have TTL input buffers when PSP module is
enabled.
RD0/PSP0
RD0
PSP0
19
RD1/PSP1
RD1
PSP1
20
RD2/PSP2
RD2
PSP2
21
RD3/PSP3
RD3
PSP3
22
RD4/PSP4
RD4
PSP4
27
RD5/PSP5/P1B
RD5
PSP5
P1B
28
RD6/PSP6/P1C
RD6
PSP6
P1C
29
RD7/PSP7/P1D
RD7
PSP7
P1D
30
38
39
40
41
2
3
4
5
38
I/O
I/O
ST
TTL
Digital I/O
Parallel Slave Port data
I/O
I/O
ST
TTL
Digital I/O
Parallel Slave Port data
I/O
I/O
ST
TTL
Digital I/O
Parallel Slave Port data
I/O
I/O
ST
TTL
Digital I/O
Parallel Slave Port data
I/O
I/O
ST
TTL
Digital I/O
Parallel Slave Port data
I/O
I/O
O
ST
TTL
—
Digital I/O
Parallel Slave Port data
Enhanced CCP1 output
I/O
I/O
O
ST
TTL
—
Digital I/O
Parallel Slave Port data
Enhanced CCP1 output
I/O
I/O
O
ST
TTL
—
Digital I/O
Parallel Slave Port data
Enhanced CCP1 output
39
40
41
2
3
4
5
記号の説明 : TTL = TTL 互換入力
ST = CMOS レベルのシュミット トリガ入力
O
= 出力
注 1:
2:
CMOS = CMOS 互換入力または出力
I
= 入力
P
= 電源
構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
DS41303E_JP - ページ 22
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 1-3:
PIC18F4XK20 入出力ピン機能一覧 ( 続き )
Pin Name
Pin Number
PDIP
Pin Buffer
Type
Type
QFN TQFP
Description
PORTE is a bidirectional I/O port
RE0/RD/AN5
RE0
RD
8
25
25
I/O
I
ST
TTL
I
Analog
I/O
I
ST
TTL
I
Analog
I/O
I
ST
TTL
I
Analog
—
—
—
6, 29
P
—
See MCLR/VPP/RE3 pin
Ground reference for logic and I/O pins
7, 8, 7, 28
28, 29
P
—
Positive supply for logic and I/O pins
—
—
No connect
AN5
RE1/WR/AN6
RE1
WR
9
26
26
AN6
RE2/CS/AN7
RE2
CS
10
27
—
—
VSS
12, 31 6, 30,
31
VDD
11, 32
NC
—
13
Digital I/O
Write control for Parallel Slave Port
(see related CS and RD pins)
Analog input 6, ADC channel 6
27
AN7
RE3
Digital I/O
Read control for Parallel Slave Port
(see related WR and CS pins)
Analog input 5, ADC channel 5
12, 13,
33, 34
Digital I/O
Chip Select control for Parallel Slave Port
(see related RD and WR)
Analog input 7, ADC channel 7
記号の説明 : TTL = TTL 互換入力
ST = CMOS レベルのシュミット トリガ入力
O
= 出力
注 1:
2:
CMOS = CMOS 互換入力または出力
I
= 入力
P
= 電源
構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。
構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 23
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 24
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
2.0
オシレータ モジュール ( フェイル
セーフ クロック モニタ機能付き )
2.1
オシレータ モジュールは 10 種類あるプライマリ ク
ロック モードのいずれかに設定できます。
1.
2.
3.
4.
LP
XT
HS
HSPLL
低消費電力水晶振動子モード
水晶振動子 / 振動子モード
高速水晶振動子 / 振動子モード
PLL を有効化した高速水晶振動子 /
振動子モード
5. RC
RA6 を Fosc/4 出力に使用する外付け
RC ( 抵抗 / コンデンサ ) モード
6. RCIO
RA6 を I/O に使用する外付け RC ( 抵
抗 / コンデンサ ) モード
7. INTOSC RA6 を FOSC/4 出力、RA7 を I/O に
使用する内部オシレータ モード
8. INTOSCIO RA6 および RA7 を I/O に使用する
内部オシレータ モード
9. EC
FOSC/4 を出力する外部クロック
モード
10. ECIO
RA6 を I/O に使用する外部クロック
モード
概要
オシレータ モジュールにはクロック ソースや選択
機能が幅広く備えられており、多くのアプリケー
ションで消費電力を最小限に抑えながら最大限の
性能を実現できます。
図 2-1 に、
オシレータ モジュー
ルのブロック図を示します。
クロック ソースは、外部オシレータ、水晶振動子、
セラミック振動子、RC ( 抵抗 / コンデンサ ) 回路の
いずれかに設定できます。また、2 種類の内部オシ
レータのいずれかをシステム クロック ソースに設
定でき、動作速度はソフトウェアで選択できます。
この他のクロック機能として、次のものがあります。
• システム クロック ソースには、外部クロックま
たは内部クロックをソフトウェアで選択可能。
• 外部オシレータのスタートアップからコード実
行までの遅延を最小限に抑える 2 段速スタート
アップ モード。
• 外部クロックソース (LP、XT、HS、EC、RC モー
ド ) の障害を検出して自動的に内部オシレータに
切り替えるフェイルセーフ クロック モニタ
(FSCM) 機能。
プライマリ クロック モードは構成レジスタ
CONFIG1H の FOSC<3:0> ビットで設定します。
HFINTOSC と LFINTOSC は、内部クロック ソース
として使用する、工場出荷時に較正済みの、それぞ
れ高周波および低周波のオシレータです。
PIC® MCU のクロック ソースのブロック図
図 2-1:
PIC18F2XK20/4XK20
Primary Oscillator
LP, XT, HS, RC, EC
OSC2
IDLEN
Sleep
4 x PLL
Secondary Oscillator
T1OSC
T1OSO
T1OSCEN
Enable
Oscillator
OSCCON<6:4>
16 MHz
FOSC<3:0> OSCCON<1:0>
31 kHz
Source
4 MHz
16 MHz
(HFINTOSC)
31 kHz (LFINTOSC)
Postscaler
Internal
Oscillator
Block
16 MHz
Source
8 MHz
2 MHz
1 MHz
500 kHz
250 kHz
Main
Peripherals
Internal Oscillator
CPU
111
Sleep
110
101
100
011
MUX
T1OSI
Sleep
OSCTUNE<6>(1)
MUX
OSC1
HSPLL, HFINTOSC/PLL
010
001
1 31 kHz
000
0
Clock
Control
FOSC<3:0> OSCCON<1:0>
Clock Source Option
for other Modules
OSCTUNE<7>
WDT, PWRT, FSCM
and Two-Speed Start-up
注
1:
HFINTOSC がプライマリ オシレータの場合のみ動作します。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 25
PIC18F2XK20/4XK20
2.2
オシレータ制御
OSCCON レジスタ ( レジスタ 2-1) は、フル パワー
動作と電源管理モードの両方で、デバイスのクロッ
ク動作をさまざまな面から制御します。
•
•
•
•
メイン システム クロック選択 (SCS)
内部周波数選択ビット (IRCF)
クロック ステータス ビット (OSTS、IOFS)
電源管理選択 (IDLEN)
2.2.1
2.2.4
メイン システム クロックの選択
システム クロック選択ビット SCS<1:0> により、メ
イン クロックのソースを選択します。選択可能な
クロック ソースは次のとおりです。
• CONFIG1H の FOSC<3:0> ビットで定義されたプ
ライマリ クロック。プライマリ クロックは、プ
ライマリ オシレータ、外部クロック、内部オシ
レータ ブロックのいずれでもかまいません。
• セカンダリ クロック ( タイマ 1 オシレータ )
• 内部オシレータ ブロック (HFINTOSC および
LFINTOSC)
クロック ソースは、1 ビットまたは複数のビットへ
の書き込みが完了すると、短い遷移期間を経てただ
ちに変更されます。リセットは、その種類を問わず
SCS ビットをクリアして、プライマリ クロックが
選択されます。
2.2.2
内部周波数の選択
内部オシレータ周波数選択ビット (IRCF<2:0>) で、
内部オシレータ ブロックの周波数出力を選択しま
す。LFINTOSC ソース (31 kHz)、HFINTOSC ソース
(16 MHz)、または HFINTOSC ポストスケーラから
派生した周波数のいずれか 1 つ (31.25 kHz ~ 8 MHz)
より選択できます。
内部オシレータ ブロックによっ
てメイン クロックを供給している場合、これらの
ビットの状態が変化すると、内部オシレータの出力
もただちに変化します。デバイスをリセットする
と、内部オシレータの出力周波数はデフォルト周波
数の 1 MHz に設定されます。
2.2.3
このオプションでは、クロック速度を非常に低速に
して消費電力を低く抑えると同時に、高精度の調整
が可能な HFINTOSC をクロック ソースとして選択
できます。ウォッチドッグ タイマやフェイルセー
フ クロック モニタなどの機能で使用するクロック
ソースは、INTSRC の設定にかかわらず、常に
LFINTOSC になります。
クロック ステータス
OSCCON レジスタの OSTS および IOFS ビット、
T1CON レジスタの T1RUN ビットは、現在どのク
ロック ソースがメイン クロックを供給しているか
を示します。OSTS ビットは、オシレータ スタート
アップ タイマがタイムアウトし、プライマリ ク
ロックがデバイス クロックを供給していることを
示します。IOFS ビットは、内部オシレータ ブロッ
クが安定し、HFINTOSC クロック モードでデバイ
スのクロックを供給していることを示します。IOFS
お よ び OSTS は、SCS<1:0> = 00 に 設 定 さ れ、
HFINTOSC がプライマリ クロックの場合、両方と
もセットされます。T1RUN ビットは、タイマ 1 オ
シレータが、セカンダリ クロック モードでデバイ
ス の ク ロ ッ ク を 供 給 し て い る こ と を 示 し ま す。
SCS<1:0>  00 の場合、これら 3 つのビットのうち、
常にいずれか 1 つだけがセットされます。これらの
ビ ッ ト の い ず れ も セ ッ ト さ れ て い な い 場 合 は、
LFINTOSC がクロックを供給しているか、
HFINTOSC が起動したばかりでまだ安定化してい
ない状態を示しています。
2.2.5
電源管理
OSCCON レジスタの IDLEN ビットは、SLEEP 命令
を実行したときに、デバイスがスリープ モードま
たは、複数のアイドル モードのうちのどれに移行
するかを決定します。
OSCCON レジスタのフラグおよび制御ビットの使
用方法は、3.0 項「電源管理モード」でより詳細に
検討します。
注 1:
セカンダリ クロック ソースを選択する
には、タイマ 1 オシレータを有効にして
おく必要があります。このオシレータ
は、T1CON レジスタの T1OSCEN ビッ
トをセットすると有効になります。タイ
マ 1 オシレータを有効にしておかない
と、メイン オシレータが以前に選択し
たソースのまま動作を続け、T1OSCEN
ビットがセットされた時点で、セカンダ
リ オシレータに切り替わります。
2:
タイマ1 オシレータの動作が安定してか
らセカンダリ クロック ソースを選択す
ることを推奨します。不安定なまま選択
すると、タイマ 1 オシレータの起動を待
つ間、非常に長い遅延が発生する可能性
があります。
低周波数の選択
公称出力周波数 31 kHz を使用する場合 (IRCF<2:0>
= 000) は、どちらの内部オシレータをソースとして
使用するかを、ユーザーが選択できます。OSCTUNE
レジスタの INTSRC ビットによって設定します。こ
のビットをセットすると、HFINTOSC ポストスケー
ラ出力の 512 分周が有効となり、HFINTOSC が
31.25 kHz のクロック ソースとして選択されます。
INTSRC ビットをクリアすると、LFINTOSC ( 公称
31 kHz) がクロック ソースとして選択されます。
DS41303E_JP - ページ 26
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 2-1:
OSCCON: オシレータ制御レジスタ
R/W-0
R/W-0
IDLEN
IRCF2
R/W-1
IRCF1
R/W-1
IRCF0
R-q
OSTS
(1)
R-0
R/W-0
R/W-0
IOFS
SCS1
SCS0
bit 7
bit 0
記号の説明 :
R = 読み出し可
W = 書き込み可
U = 未実装。
「0」として読み出し
q = 条件によって変化する値
-n = POR 時の値
'1' = セット
'0' = クリア
x = 不明
ビット 7
IDLEN: アイドル イネーブル ビット
1 = SLEEP 命令によってデバイスがアイドル モードに移行します。
0 = SLEEP 命令によってデバイスがスリープ モードに移行します。
ビット 6-4
IRCF<2:0>: 内部オシレータ周波数選択ビット
111 = 16 MHz (HFINTOSC が直接クロックを駆動します )
110 = 8 MHz
101 = 4 MHz
100 = 2 MHz
011 = 1 MHz(3)
010 = 500 kHz
001 = 250 kHz
000 = 31 kHz (HFINTOSC/512 または LFINTOSC が直接クロックを駆動します )(2)
ビット 3
OSTS: オシレータ スタートアップ タイムアウト ステータス ビット (1)
1 = CONFIG1 レジスタの FOSC<2:0> で定義されたクロックでデバイスが動作中
0 = 内部オシレータ (HFINTOSC または LFINTOSC) でデバイスが動作中
ビット 2
IOFS: HFINTOSC 周波数の安定性表示ビット
1 = HFINTOSC の周波数が安定
0 = HFINTOSC の周波数が不安定
ビット 1-0
SCS<1:0>: システム クロック選択ビット
1x = 内部オシレータ ブロック
01 = セカンダリ ( タイマ 1) オシレータ
00 = CONFIG1H[FOSC<3:0>] で定義したプライマリ クロック
注 1:
2:
3:
リセットの状態は、構成ビット IESO の状態に依存します。
OSCTUNE レジスタの INTSRC ビットで選択されたソース。本文を参照してください。
リセット時の HFINTOSC のデフォルト出力周波数
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 27
PIC18F2XK20/4XK20
2.3
2.4
クロック ソース モード
外部クロック モード
クロック ソース モードは外部または内部の 2 つに
分類されます。
2.4.1
• 外部クロック モードでは、クロック ソースに外部
回路を使用します。以下に例を示します。クロッ
ク モジュール (EC モード )、水晶振動子またはセ
ラミック振動子 (LP、XT、HS モード )、抵抗 / コ
ンデンサ回路 (RC モード ) などがあります。
• チップ内のオシレータ ブロックに含まれる内部
クロック ソース。オシレータ ブロックには、
16 MHz の高周波数内部オシレータ (HFINTOSC)
および 31 kHz の低周波数内部オシレータの
(LFINTOSC)、2 つの内部オシレータがあります。
オシレータ モジュールが LP、XT、HS モードのい
ずれかに設定されている場合、オシレータ スター
トアップ タイマ (OST) は OSC1 からの発振を 1024
回カウントします。カウントは、パワーオン リセッ
ト (POR) 後のパワーアップ タイマ (PWRT) のタイ
ムアウト時 ( 設定されている場合 )、またはスリー
プからのウェイクアップ後に実行されます。カウン
ト実行中は、プログラム カウンタはインクリメン
トせず、プログラム実行は一時停止します。水晶振
動子またはセラミック振動子を使用したオシレー
タ回路の場合、OST によって、起動後の動作が安定
したシステム クロックをオシレータ モジュールに
供給できるようになります。クロック ソースを切
り替えた場合は、新しいクロックが安定するまで遅
延が必要です。このようなオシレータの遅延を表 21 に示します。
システム クロックに外部クロック ソースと内部ク
ロック ソースのどちらを使用するかは、OSCCON
レジスタのシステム クロック選択 (SCS<1:0>) ビッ
トで選択します。詳細は、2.9 項「クロックの切り
替え」を参照してください。
オシレータ スタートアップ タイマ
(OST)
外部オシレータのスタートアップからコード実行
までの遅延を最小限に抑えるには、2 段速クロック
スタートアップ モードを選択します (2.10 項「2 段
速クロック スタートアップ モード」参照 )。
表 2-1:
オシレータの遅延の例
Switch From
Switch To
Frequency
Oscillator Delay
Sleep/POR
LFINTOSC
HFINTOSC
31 kHz
250 kHz to 16 MHz
Oscillator Warm-Up Delay (TWARM)
Sleep/POR
EC, RC
DC – 64 MHz
2 instruction cycles
LFINTOSC (31 kHz)
EC, RC
DC – 64 MHz
1 cycle of each
Sleep/POR
LP, XT, HS
32 kHz to 40 MHz
1024 Clock Cycles (OST)
Sleep/POR
HSPLL
32 MHz to 64 MHz
1024 Clock Cycles (OST) + 2 ms
LFINTOSC (31 kHz)
HFINTOSC
250 kHz to 16 MHz
1 s (approx.)
2.4.2
図 2-2:
EC モード
外部クロック (EC) モードでは、外部で生成された
ロジック レベルをシステム クロック ソースとして
使用できます。このモードでの動作中は、外部ク
ロック ソースが OSC1 入力に接続され、OSC2 は汎
用 I/O として使用できます。EC モードにおけるピン
の接続図を図 2-2 に示します。
EC モード選択時は、オシレータ スタートアップ タ
イマ (OST) は無効になります。このため、パワーオ
ン リセット (POR) 後またはスリープからのウェイ
ク ア ップ 後 に 動 作 の 遅 延 は 発 生し ま せ ん。PIC®
MCU は完全スタティック設計であるため、外部ク
ロック入力を停止すると、すべてのデータがそのま
まの状態でデバイスが動作を中断します。外部ク
ロックが再開すると、停止直後の状態からデバイス
は動作を再開します。
DS41303E_JP - ページ 28
外部クロック (EC) モードによる動作
OSC1/CLKIN
Clock from
Ext. System
PIC® MCU
I/O
注 1:
Preliminary
OSC2/CLKOUT(1)
ピンの代替機能は、1.0 項「デバイス概要」の
一覧表を参照してください。
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
2.4.3
LP、XT、HS モード
LP、XT、HS モードでは、水晶振動子またはセラ
ミック振動子を OSC1 と OSC2 に接続して使用でき
ます ( 図 2-3)。使用する振動子の種類や速度に合わ
せてモードを切り替えることにより、内部インバー
タ アンプが高 / 中 / 低ゲインに設定されます。
注 1:
LP オシレータ モードでは、内部インバータ アンプ
のゲインが最も低く設定されます。3 つのモードの
うち、消費電流が最も少ないのがこのモードです。
このモードは、音叉タイプの水晶振動子など駆動レ
ベルの仕様値が低い振動子に最も適しています。
2:
アプリケーションで想定される VDD お
よび温度範囲でオシレータの性能を必
ず検証してください。
3:
オシレータの設計には、マイクロチップ
社の次のアプリケーション ノートを参
照してください。
XT オシレータ モードでは、内部インバータ アンプ
のゲインが中間に設定されます。消費電流も 3 つの
モードの中間となります。このモードは、駆動レベ
ルの仕様値が中程度の振動子に最も適しています。
• AN826『Crystal Oscillator Basics and
Crystal Selection for rfPIC® and PIC®
Devices』(DS00826)
• AN849『Basic PIC® Oscillator Design』
(DS00849)
HS オシレータ モードでは、内部インバータ アンプ
のゲインが最大に設定されます。3 つのモードのう
ち、消費電流が最も大きくなります。このモードは、
駆動レベルを高く設定する必要がある振動子に最も
適しています。
図 2-3 と図 2-4 に、それぞれ水晶振動子とセラミッ
ク振動子を使用した代表的な回路図を示します。
図 2-3:
水晶振動子の特性は、種類、パッケージ、
メーカーにより異なります。仕様および
推奨アプリケーションについては、各
メーカーのデータシートを参照してくだ
さい。
• AN943『Practical PIC® Oscillator
Analysis and Design』(DS00943)
• AN949『Making Your Oscillator Work』
(DS00949)
図 2-4:
水晶振動子による動作
(LP、XT、HS モード )
セラミック振動子による動作
(XT、HS モード )
PIC® MCU
PIC® MCU
OSC1/CLKIN
OSC1/CLKIN
C1
To Internal
Logic
Quartz
Crystal
C2
C1
RS (1)
RF(2)
RP(3)
RF(2)
Sleep
Sleep
C2 Ceramic
RS (1)
Resonator
OSC2/CLKOUT
注 1:
駆動レベルの低い水晶振動子の場合、直列抵抗
(RS) が必要となる場合があります。
2:
RF の値は、選択したオシレータ モードによって
異なります ( 通常は 2 M ~ 10 M。
 2009 Microchip Technology Inc.
To Internal
Logic
OSC2/CLKOUT
注 1:
駆動レベルの低いセラミック振動子の場合、直
列抵抗 (RS) が必要となる場合があります。
2:
RF の値は、選択したオシレータ モードによって
異なります ( 通常は 2 M ~ 10 M。
3:
セラミック振動子を適正に動作させるには、並
列フィードバック抵抗 (RP) の追加が必要となる
場合があります。
Preliminary
DS41303E_JP - ページ 29
PIC18F2XK20/4XK20
2.4.4
2.5
外部 RC モード
外部 RC ( 抵抗 / コンデンサ ) モードでは、外付けの
RC 回路が使用できます。クロックの精度がそれほ
ど必要ない場合は、このモードによってコストを最
小限に抑えながら、周波数選択の自由度を高められ
ます。RC および RCIO の 2 つのモードがあります。
2.4.4.1
図 2-5:
PIC® MCU
REXT
OSC1/CLKIN
Internal
Clock
CEXT
VSS
FOSC/4 or
I/O(2)
OSC2/CLKOUT(1)
推奨値 : 10 k  REXT  100 k
CEXT > 20 pF
2:
2.4.4.2
1.
ピンの代替機能は、1.0 項「デバイス概要」の一
覧表を参照してください。
出力は RC と RCIO の各クロック モードで異なり
ます。
RCIO モード
RCIO モードでは、RC 回路を OSC1 に接続します。
OSC2 は汎用 I/O ピンとして利用できます。
RC オシレータの周波数は、電源電圧、抵抗 (REXT)、
コンデンサ(CEXT)の値と動作温度の関数として決定
されます。これ以外にオシレータの周波数に影響す
る要因として、次のものがあります。
• 入力スレッショルド電圧のばらつき
• 部品の許容誤差
• パッケージ容量のばらつき
使用する外付け RC 部品の許容誤差によるばらつき
も考慮する必要があります。
DS41303E_JP - ページ 30
2.
HFINTOSC ( 高周波数内部オシレータ ) は工場
出荷時に較正されており、16 MHz で動作しま
す。HFINTOSC の周波数は、OSCTUNE レジス
タ ( レジスタ 2-2) を使用して、ユーザーがソフ
トウェアで調整できます。
LFINTOSC ( 低周波数内部オシレータ ) は 31 kHz
で動作します。
システムのクロック速度は、OSCCON レジスタの
内部オシレータ周波数選択ビットIRCF<2:0>を使用
して、ソフトウェアで選択できます。
システム クロックに外部クロック ソースと内部ク
ロック ソースのどちらを使用するかは、OSCCON
レジスタのシステム クロック選択 (SCS<1:0>) ビッ
トで選択します。詳細は、2.9 項「クロックの切り
替え」を参照してください。
外部 RC モード
VDD
注 1:
オシレータ モジュールには 2 つの独立した内部オ
シレータがあり、システム クロック ソースとして
設定 / 選択できます。
RC モード
RC モードでは、RC 回路を OSC1 に接続します。
OSC2/CLKOUT からは 4 分周された RC オシレータ
周波数が出力されます。この信号は、外部回路、同
期、較正、テスト、その他のアプリケーションのク
ロックとして使用できます。外部 RC モードの回路
図を図 2-5 に示します。
内部クロック モード
2.5.1 INTOSC および INTOSCIO モード
INTOSC および INTOSCIO モードでは内部オシレー
タをプライマリ クロック ソースに設定します。構
成レジスタ CONFIG1H の FOSC<3:0> ビットによっ
てモードを選択します。詳細は、23.0 項「CPU の
特殊機能」を参照してください。
INTOSC モードでは、OSC1/CLKIN を汎用 I/O とし
て利用できます。OSC2/CLKOUT からは、選択した
内部オシレータの 4 分周された周波数が出力されま
す。CLKOUT 信号は、外部回路、同期、較正、テス
ト、その他のアプリケーションのクロックとして使
用できます。
INTOSCIO モードでは、OSC1/CLKIN と OSC2/
CLKOUT の両方を汎用 I/O として利用できます。
2.5.2
HFINTOSC
HFINTOSC の出力は、ポストスケーラとマルチプレ
クサに接続されています ( 図 2-1 参照 )。周波数は、
OSCCON レジスタの IRCF<2:0> ビットを使用して、
8 種類のうちいずれか 1 つをソフトウェアで選択で
きます。詳細は、2.5.4 項「周波数選択ビット (IRCF)」
を参照してください。
HFINTOSC は次の場合に有効になります。
• SCS1 = 1 かつ IRCF<2:0>  000
• SCS1 = 1 かつ IRCF<2:0> = 000 かつ INTSRC = 1
• CONFIG1H レジスタの IESO ビット = 1 にする
と、2 段速スタートアップが有効になります。
• CONFIG1H レジスタの FCMEN ビット = 1 にす
ると、2 段速スタートアップおよびフェイルセー
フ モードが有効になります。
• CONFIG1H レジスタの FOSC<3:0> を選択する
と、プライマリ クロックとして内部オシレータ
が選択されます。
OSCCON レジスタの HF 内部オシレータ (IOFS) ビッ
トには、HFINTOSC の状態 ( 安定または不安定 ) が
示されます。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
2.5.2.1
OSCTUNE レジスタ
HFINTOSCは工場で較正されていますが、
OSCTUNE
レジスタのTUN<5:0>ビットへの書き込みによって、
ソフトウェアでも調整できます ( レジスタ 2-2)。
TUN<5:0> のデフォルト値は「000000」です。値
は 6 ビットの 2 の補数です。
(WDT)、フェイルセーフ クロック モニタ (FSCM)、
周辺機能など、LFINTOSC クロック ソースの周波数
に依存する機能の動作は影響を受けません。
OSCTUNE レジスタには内部オシレータ ブロック
の一部の機能を制御するINTSRCおよびPLLENビッ
トが実装されています。
OSCTUNE レジスタを変更すると、HFINTOSC の周
波数は新たに設定した値への移行をただちに開始
します。この移行中も、コード実行は継続されます。
周波数が変化したことを知らせる手段は備えられ
ていません。
INTSRC ビットでは、31 kHz の周波数オプションを
選択したときに、どちらの内部オシレータをクロッ
ク ソースとして使用するかを選択できます。これ
については、2.2.3 項「低周波数の選択」で詳細に
説明しています
OSCTUNE レジスタの設定は、LFINTOSC の周波数
には影響しません。周波数を変更しても、パワー
アップ タイマ (PWRT)、ウォッチドッグ タイマ
PLLEN ビットは、内部オシレータ モードにおける
周波数逓倍器、PLL の動作を制御します。PLLEN
ビットの詳細な機能は、2.6.2 項「HFINTOSC モー
ドの PLL」を参照してください。
レジスタ 2-2:
OSCTUNE: オシレータ調整レジスタ
R/W-0
R/W-0
INTSRC
PLLEN
(1)
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
TUN5
TUN4
TUN3
TUN2
TUN1
TUN0
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
INTSRC: 内部オシレータ低周波数ソース選択ビット
1 = 16 MHz の HFINTOSC ソースから派生 (512 分周 ) した 31.25 kHz のデバイス クロックを
使用
0 = 31 kHz のデバイス クロックを内部オシレータ LFINTOSC から直接供給
ビット 6
PLLEN: HFINTOSC の周波数逓倍 PLL のイネーブル ビット (1)
1 = HFINTOSC (8 MHz および 16 MHz のみ ) に対する PLL を有効化
0 = PLL は無効
ビット 5-0
TUN<5:0>: 周波数調整ビット
011111 =最大周波数
011110 =
•••
000001 =
000000 =オシレータ モジュールは工場出荷時に較正された周波数で動作
111111 =
•••
100000 =最小周波数
注 1:
PLLEN ビットが機能するのは、HFINTOSC がプライマリ クロック ソースで (FOSC<2:0> = 100X)、選
択した周波数が 8 MHz または 16 MHz の場合のみです。それ以外の場合 PLLEN ビットは使用できず、
常に「0」と読み出されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 31
PIC18F2XK20/4XK20
2.5.3
LFINTOSC
低周波数内部オシレータ (LFINTOSC) は、31 kHz の
内部クロック ソースです。
LFINTOSC の出力は、内部オシレータ ブロックの
周波数選択マルチプレクサに接続されています ( 図
2-1 参照 )。OSCCON レジスタの IRCF<2:0> ビット、
および OSCTUNE レジスタの INTSRC ビットを使用
して、ソフトウェアで 31 kHz を選択します。詳細
は、2.5.4 項「周波数選択ビット (IRCF)」を参照し
てください。LFINTOSC は、パワーアップ タイマ
(PWRT)、ウォッチドッグ タイマ (WDT)、フェイル
セーフ クロック モニタ (FSCM) の周波数としても
使用されます。
LFINTOSC は、次のいずれかが有効になると動作し
ます。
• OSCCON レジスタの IRCF<2:0> ビット = 000 かつ
OSCTUNE レジスタの INTSRC ビット = 0
• パワーアップ タイマ (PWRT)
• ウォッチドッグ タイマ (WDT)
• フェイルセーフ クロック モニタ (FSCM)
2.5.4
周波数選択ビット (IRCF)
16 MHz HFINTOSC と 31 kHz LFINTOSC の出力は、
ポストスケーラとマルチプレクサに接続されてい
ます ( 図 2-1 参照 )。OSCCON レジスタの内部オシ
レータ周波数選択ビット IRCF<2:0> で、内部オシ
レータの出力周波数を選択します。周波数は、ソフ
トウェアで次の 8 つのいずれかを選択できます。
• 16 MHz
• 8 MHz
• 4 MHz
• 2 MHz
• 1 MHz ( リセット後のデフォルト )
• 500 kHz
• 250 kHz
• 31 kHz (LFINTOSC または HFINTOSC/512)
注:
2.5.5
何らかのリセットが発生すると、OSCCON
レジスタの IRCF<2:0> ビットが「011」に
セットされ、周波数は 1 MHz が選択され
ます。IRCF ビットを変更すれば、別の周
波数を選択できます。
HFINTOSC の周波数ドリフト
内部オシレータ ブロックの出力 (HFINTOSC) は、工
場出荷時に 16 MHz で較正されます。しかし、この
周波数は VDD や温度の変化によりドリフトする可能
性があり、これがコントローラの動作にさまざまな
影響を与えます。このため OSCTUNE レジスタの
TUN<5:0> ビットの値を変更することで、ソフトウェ
アによる HFINTOSC 周波数の調整が可能になってい
ます。この調整は、LFINTOSC クロック ソースの周
波数には影響を与えません。
DS41303E_JP - ページ 32
HFINTOSC ソースを調整する場合、いつ調整を実行
するのか、調整する方向は正か負か、場合によって
は調整する量まで把握しておく必要があります。以
降の項では可能な補償方法を検討しますが、これら
以外の方法でも調整は可能です。
2.5.5.1
USART による補償
USART でフレーミング エラーが続けて発生した
り、非同期モード時に誤差を含むデータを受信した
りするときは、調整が必要な場合があります。フ
レーミング エラーは、デバイスのクロック周波数
が高すぎることを意味します。したがって、これを
調整するにはOSCTUNEの値をデクリメントしてク
ロック周波数を下げます。一方、データに誤差が含
まれるのはクロック速度が遅すぎる可能性を表し
ています。これを補償するには OSCTUNE の値をイ
ンクリメントしてクロック周波数を高くします。
2.5.5.2
タイマによる補償
この手法では、デバイス クロックの速度を何らかの
リファレンス クロックと比較します。2 つのタイマ
を使用します。1 つは周辺クロックによって動作さ
せ、もう一方はタイマ 1 オシレータなどの固定され
たリファレンス ソースからクロックを供給します。
両方のタイマをクリアしますが、リファレンスから
クロックを供給されているタイマは割り込みを発
生します。割り込みが発生した時点で、内部クロッ
クで動作するタイマの値を読み出し、両タイマをク
リアします。内部クロックで動作するタイマの値が
予想より大きかった場合、内部オシレータ ブロッ
クの動作が速すぎます。したがって、これを調整す
るには OSCTUNE レジスタをデクリメントします。
2.5.5.3
キャプチャ モードを用いた CCP
モジュールによる補償
CCP モジュールで、内部オシレータ ブロックよりク
ロックを供給されたフリー ランニング状態のタイ
マ 1 ( またはタイマ 3) と、周期が既知の外部のイベ
ント (AC 電源の周波数など ) を使用します。第 1 の
イベントの時刻を CCPRxH:CCPRxL レジスタにキャ
プチャし、後ほど使用するために記録します。次に、
第 2 のイベントによるキャプチャが実行されたら、
その時刻から第 1 のイベントの時刻を引きます。外
部イベントの周期は既知であるため、イベント間の
時刻の差を計算できます。
キャプチャされた時刻の差が計算値よりはるかに
大きかった場合は、内部オシレータ ブロックの動作
が速すぎます。OSCTUNE レジスタをデクリメント
して補償してください。逆に計算値よりはるかに小
さかった場合は、内部オシレータ ブロックの動作が
遅すぎます。OSCTUNE レジスタをインクリメント
して補償してください。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
2.6
PLL 周波数逓倍器
2.6.2
より低周波数のオシレータ回路が必要な場合、また
はデバイスを水晶振動子によって最大定格周波数
で駆動する必要がある場合のために、PLL ( フェー
ズ ロック ループ ) 回路が搭載されています。この
回路は高周波の水晶振動子による EMI を懸念する
ユーザー、または内部オシレータによる高速のク
ロックを必要とするユーザーに適しています。PLL
は、次の 3 つの条件で使用できます。
• プライマリ クロック モードが HSPLL
• プライマリ クロックが HFINTOSC で、周波数に
16 MHz を選択
• プライマリ クロックが HFINTOSC で、周波数に
8 MHz を選択
2.6.1
HSPLL オシレータ モード
HSPLL モードでは最大周波数 16 MHz の HS モード
オシレータを使用します。PLL がこのオシレータ出
力周波数を 4 倍して、最大周波数 64 MHz までの内
部クロックを発生します。OSCTUNE レジスタの
PLLEN ビットは、HFINTOSC がプライマリ クロッ
クの場合にのみ機能し、HSPLL オシレータ モード
では使用できません。
HFINTOSC モードの PLL
内部オシレータ ブロックに 4x 周波数逓倍器を適用
して、内部オシレータで通常可能な周波数よりも高
いデバイス クロックを発生できます。PLL を有効
にすると、最大クロック周波数として 64 MHz が得
られます。
HSPLL モードとは異なり、PLL はソフトウェアに
よって制御されます。HFINTOSC を使用している場
合に、OSCTUNE レジスタの制御ビット PLLEN に
よって PLL 動作を有効または無効に設定します。
PLL を使用できるのは、内部オシレータ ブロックを
プライマリ クロック ソースとして使用するように
設定した場合です(FOSC<3:0> = 1001または1000)。
更に、選択した出力周波数が 8 MHz または 16 MHz
のいずれかでなければなりません (OSCCON<6:4> =
111 または 110)。これら両方の条件がともに満たさ
れない限り、PLL は無効となります。
制御ビット PLLEN は、PLL を使用できるこれらの
内部オシレータ モードのみで機能します。その他
のモードではいずれも強制的に「0」となり、実質
的に利用できなくなります。
PLL は、構成ビット FOSC<3:0> を HSPLL モードに
プログラムした場合 (= 0110) に限り、プライマリ
オシレータにのみ適用できます。
図 2-6:
PLL のブロック図 (HS モード )
HS Oscillator Enable
PLL Enable
(from Configuration Register 1H)
OSC2
HS Mode
OSC1 Crystal
Osc
FIN
Phase
Comparator
FOUT
Loop
Filter
VCO
MUX

 2009 Microchip Technology Inc.
SYSCLK
Preliminary
DS41303E_JP - ページ 33
PIC18F2XK20/4XK20
2.7
さまざまなクロック ソースに対する
電源管理モードの影響
この項で述べるモードの詳細は、3.0 項「電源管理
モード」を参照してください。表 3-1 は、電源管理
モードの早見表です。
PRI_IDLE モードを選択した場合、指定されたプラ
イマリ オシレータが中断されることなく動作を続
けます。電源管理のその他のモードでは、いずれも
OSC1 ピンを使用するオシレータが無効になりま
す。OSC1 ピン ( およびオシレータが使用している
場合は OSC2 ピン ) の発振が停止します。
セカ ンダ リ クロ ック モー ド (SEC_RUN およ び
SEC_IDLE) では、タイマ 1 オシレータが動作してデ
バイス クロックを供給します。タイマ 1 またはタ
イマ 3 にクロックを供給する必要がある場合も、タ
イマ 1 のオシレータはすべての電源管理モードで動
作します。
内部オシレータ モード (INTOSC_RUN および
INTOSC_IDLE) では、内部オシレータ ブロックがデ
バイス クロックのソースになります。31 kHz の
LFINTOSC 出力は、そのままクロック ソースとし
て使用でき、電源管理モードの状態にかかわらず各
種特殊機能をサポートします (2 段速スタートアッ
プ、フェイル セーフ クロック モニタ、WDT の詳
細は、2.10 項「2 段速クロック スタートアップ モー
ド」、2.11 項「フェイルセーフ クロック モニタ」、
23.2 項「ウォッチドッグ タイマ (WDT)」を参照し
てください )。16 MHz の HFINTOSC 出力は、デバ
イス クロックとして直接使用するか、
ポストスケー
ラによって分周できます。
クロックが LFINTOSC 出
力から直接供給される場合、HFINTOSC 出力は無効
になります。
スリープ モードを選択すると、すべてのクロック
ソースが停止します。スリープ モードでは、トラ
ンジスタのスイッチング電流が一切流れなくなる
ため、デバイスの消費電流は最低になります ( リー
ク電流のみ )。
スリープ中に動作する何らかのオンチップ機能を
有効にした場合、スリープ モードの消費電流が増
加します。WDT を動作させるには LFINTOSC が必
要です。タイマ 1 オシレータを動作させれば、リア
ルタイム クロックをサポートできます。デバイス
クロック ソースを必要としないその他の機能 (SSP
表 2-2:
2.8
電源投入時の遅延
電源投入時の遅延は 2 つのタイマで制御されるた
め、ほとんどのアプリケーションでは外付けのリ
セット回路は不要です。この遅延は、デバイス電源
が通常の安定状態になり、プライマリ クロックの
安定した動作が得られるまで、デバイスをリセット
状態に保つために設けられています。電源投入時の
遅延に関する詳細は、4.5 項「デバイス リセット タ
イマ」を参照してください。
第 1 のタイマは、電源投入時に一定の遅延を発生さ
せるパワーアップ タイマ (PWRT) です ( 表 26-10 の
パラメータ 33)。
このタイマは、
構成ビット PWRTEN
をクリアする (= 0) と有効になります。
第 2 のタイマは、オシレータ スタートアップ タイ
マ (OST) で、これは水晶振動子が安定するまでチッ
プをリセット状態に維持するためのものです (LP、
XT、HS モード )。オシレータのクロックを 1024 サ
イクル数えることで、デバイスへのクロック供給開
始を遅延させます。
HSPLL オシレータ モードを選択している場合は、
HS モードの OST 遅延の後、更に 2 ms の間リセッ
トを保ち、PLL が入力クロック周波数にロックでき
るようにします。
POR 後、コントローラが命令を実行できるようにな
るまでに TCSD ( 表 26-10 のパラメータ 38) の遅延が
あります。この遅延時間は、他のすべての遅延と並
行して経過します。プライマリ クロック ソースに
EC、RC、INTIO モードのいずれかを使用している
場合は、この遅延だけが発生します。
プライマリ クロックに HFINTOSC を選択した場合
は、HFINTOSC が安定するまでメイン システム ク
ロックを遅延させることができます。遅延の有無
は、構成レジスタ CONFIG3H の HFOFST ビットに
よってユーザーが選択できます。HFOFST ビットを
クリアすると、HFINTOSC が安定するまでメイン
システム クロックが遅延します。HFOFST ビットを
セットした場合、メイン システム クロックはただ
ちに起動します。いずれの場合も、OSCCON レジ
スタの IOFS ビットを読み出すことで、HFINTOSC
の状態 ( 安定または不安定 ) を判断できます。
スリープ モードにおける OSC1 および OSC2 ピンの状態
OSC Mode
RC, INTOSC
RCIO
INTOSCIO
ECIO
EC
LP, XT, HS and HSPLL
注:
スレーブ、PSP、INTn など ) も使用できます。消費
電流を著しく増加させる周辺回路は、26.8 項「DC
特性」を参照してください。
OSC1 Pin
Floating, external resistor should pull high
Floating, external resistor should pull high
Configured as PORTA, bit 7
Floating, pulled by external clock
Floating, pulled by external clock
Feedback inverter disabled at quiescent
voltage level
OSC2 Pin
At logic low (clock/4 output)
Configured as PORTA, bit 6
Configured as PORTA, bit 6
Configured as PORTA, bit 6
At logic low (clock/4 output)
Feedback inverter disabled at quiescent voltage
level
スリープおよび MCLR リセットによるタイムアウトは 4.0 項「リセット」の表 4-2 を参照してください。
DS41303E_JP - ページ 34
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
2.9
クロックの切り替え
システム クロック ソースに外部クロック ソースと
内 部 ク ロ ッ ク ソ ー ス の ど ち ら を 使 用 す る か は、
OSCCON レジスタの シ ス テ ム
クロック選択
(SCS<1:0>) ビットを使用して、ソフトウェアで切り
替えることができます。
PIC18F2XK20/4XK20 デバイスは、クロック ソース
を切り替える際のクロックの「グリッチ」を防止す
る回路を搭載しています。クロック切り替え時に
は、デバイス クロックが短時間停止します。この
一時停止の時間は、切り替える前のクロック ソー
スの 2 サイクルと、切り替え後のクロック ソース
の 3 ~ 4 サイクルの合計になります。ただし、この
式は切り替え後のクロックが安定していることを
前提としています。
クロックの遷移については、3.1.2 項「電源管理モー
ドへの移行」で詳細に検討します。
2.9.1
システム クロック選択 (SCS<1:0>)
ビット
OSCCON レジスタのシステム クロック選択
(SCS<1:0>) ビットで、CPU および周辺機能に使用
するシステム クロック ソースを選択します。
• SCS<1:0> = 00 の場合、システム クロック ソース
は構成レジスタ CONFIG1H の FOSC<2:0> ビット
によって決まります。
• SCS<1:0> = 10 の場合、システム クロック ソース
は、OSCTUNE レジスタの INTSRC ビットおよび
OSCCON レジスタの IRCF<2:0>ビットで選択され
た周波数の内部オシレータになります。
• SCS<1:0> = 01 の場合、システム クロック ソース
はタイマ 1 と共通の 32.768 kHz のセカンダリ オ
シレータになります。
リセット後は、OSCCON レジスタの SCS<1:0> ビッ
トは必ずクリアされます。
注:
2.9.2
2 段速スタートアップまたはフェイルセー
フ クロック モニタにおいて自動的にク
ロックが切り替わった場合も、OSCCON
レジスタの SCS<1:0> ビットが更新される
ことは ありませ ん。現 在のシス テム ク
ロック ソースを判断するには、T1CON レ
ジスタの T1RUN ビットおよび OSCCON
レジスタの IOFS と OSTS ビットをモニタ
します。
プライマリ クロック ソースの場合、LP、XT、ある
いは HS モードでオシレータ スタートアップ タイ
マ (OST) がタイムアウトになったかどうかを OSTS
ビットを参照することで確認できます。
2.9.3
クロック切り替えのタイミング
オシレータを切り替える場合、切り替え先として省
電力動作中のオシレータは選択できません ( 図 2-7
参 照 )。こ の よ う な 場 合、OSCCON レ ジ ス タ の
SCS<1:0> ビットを変更してから実際に周波数が切
り替わるまでに遅延が生じます。OSCCON レジス
タの OSTS ビットと IOFS ビットには、外部および
HFINTOSC のオシレータの現在のアクティブな状
態が示されます。周波数選択のタイミングは次のと
おりです。
1.
2.
3.
4.
5.
6.
7.
OSCCON レジスタの SCS<1:0> ビットが変更さ
れます。
切り替え先のクロックが使用できるようにな
るまで、現在のクロックが動作を継続します。
クロック切り替え回路が、切り替え先のクロッ
クのレディ信号が真になった時点から、現在の
クロックの連続する立ち上がりエッジを 2 回待
ちます。
現在のクロックの次の立ち下がりエッジから、
システム クロックが Low に保持されます。
クロック切り替え回路が、切り替え先のクロッ
クの立ち上がりエッジを 2 回待ちます。
切り替え先のクロックの次の立ち下がりエッジ
で Low に保持されていたシステム クロックが
解放され、新しいクロックに切り替わります。
クロック切り替えが完了します。
詳細は、図 2-1 を参照してください。
切り替え前後の周波数のソースが両方とも
HFINTOSC の場合、新しい周波数が有効になるまで
のスタートアップ遅延はありません。これは、変更
前と変更後のいずれの周波数も、ポストスケーラと
マルチプレクサを経由して HFINTOSC から派生さ
せているためです。
スタートアップ遅延の仕様は、26.0 項「電気的特
性」の AC 仕様 ( オシレータ モジュール ) を参照し
てください。
オシレータ スタートアップ タイム
アウト ステータス (OSTS) ビット
OSCCON レジスタのオシレータ スタートアップ タ
イムアウト ステータス (OSTS) ビットには、現在の
システム クロックが構成レジスタ CONFIG1H の
FOSC<3:0> ビットで定義された外部クロック ソー
スと内部クロック ソースのどちらで動作している
かが示されます。特に、プライマリ オシレータが
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 35
PIC18F2XK20/4XK20
2.10
2段速クロック スタートアップ モード
2 段速スタートアップ モードは、外部オシレータの
スタートアップからコード実行までの遅延を最小
限に抑えることによって、省電力性を更に高める働
きをします。2 段速スタートアップ モードでは外部
オシレータのスタートアップ時間をスリープ期間
に含めることができるため、特にスリープ モード
を多用するアプリケーションにおいてデバイスの
全体的な消費電力を削減できます。
アプリケーションでこのモードを使用すると、少数
の命令を実行するときに、スリープからウェイク
アップし、プライマリのオシレータが安定するのを
待たずに HFINTOSC クロック ソースで実行を完了
し、スリープに戻ることができます。
注:
SLEEP 命令を実行するとオシレータのス
タートアップ時間は中断され、OSCCON レ
ジスタの OSTS ビットはクリアされたまま
になります。
オシレータ モジュールが LP、XT、または HS モー
ドに設定されている場合、
オシレータ スタートアッ
プ タイマ (OST) が有効となります (2.4.1 項「オシ
レータ スタートアップ タイマ (OST)」参照 )。OST
は、1024 回の発振がカウントされるまでプログラ
ム実行を一時停止します。2 段速スタートアップ
モードでは、OST のカウント中は内部オシレータで
動作するため、コード実行までの遅延が最小限に抑
えられます。OSCCON レジスタの OSTS ビットが
セットされている場合、OST のカウント回数が 1024
に達すると、プログラムの実行は外部オシレータに
切り替わります。
2.10.1
外部クロック オシレータが LP、XT、HS 以外のモー
ドに設定されている場合、2 段速スタートアップは
無効となります。これは外部クロック オシレータ
が、POR 後またはスリープからのウェイクアップ後
に安定化の時間を必要としないためです。
2.10.2
1.
2.
3.
4.
5.
6.
2 段速スタートアップのシーケンス
パワーオン リセットまたはスリープからウェイ
アップします。
OSCCON レジスタの IRCF<2:0> ビットで設定し
た周波数の内部オシレータで、命令の実行が開
始されます。
OST が有効になり、外部クロックの 1024 サイ
クルをカウントします。
OST がタイムアウトし、外部クロックを使用で
きるようになります。
OSTS がセットされます。
図 2-7「クロック切り替えタイミング」に従い、
クロックの切り替えが完了します。
2.10.3
2 段速クロック ステータスの確認
OSCCON レジスタの OSTS ビットの状態を参照する
と、マ イ ク ロ コ ン ト ロ ー ラ が 構 成 レ ジ ス タ
CONFIG1H の FOSC<2:0> ビットで定義した外部ク
ロック ソースで動作しているのか、内部オシレー
タで動作しているのかを確認できます。外部オシ
レータの準備が整っていない場合、OSTS = 0 とな
り、これはシステムが内部オシレータで動作してい
ることを意味します。
2 段速スタートアップ モードの設定
2 段速スタートアップ モードは、デバイスが次の設
定条件をすべて満たしている場合にのみ有効とな
ります。
• 構成レジスタ CONFIG1H の IESO ビットがセッ
トされ、2 段速スタートアップ モードが有効に
なっていること。デフォルトでは、フェイル
セーフ モード (FCMEN = 1) でも 2 段速スタート
アップが有効化されます。
• OSCCON レジスタの SCS<1:0> = 00
• 構成レジスタ CONFIG1H の FOSC<2:0> ビット
が LP、XT、HS のいずれかのモードに設定され
ていること。
以上のとおり設定すると、次のいずれかの時点で 2
段速スタートアップ モードに移行します。
• パワーオン リセット (POR) 後。ただしパワー
アップ タイマ (PWRT) が有効な場合は、PWRT
のタイムアウト後
• スリープからのウェイクアップ後
DS41303E_JP - ページ 36
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 2-7:
クロック切り替えタイミング
High Speed
Low Speed
Old Clock
Start-up Time(1)
Clock Sync
Running
New Clock
New Clk Ready
IRCF <2:0> Select Old
Select New
System Clock
Low Speed
High Speed
Old Clock
Start-up Time(1)
Clock Sync
Running
New Clock
New Clk Ready
IRCF <2:0> Select Old
Select New
System Clock
注 1: スタートアップ時間には外部クロックの場合は TOST (1024 x TOSC)、HSPLL モードの場合は TPLL ( 約 2 ms) が含まれます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 37
PIC18F2XK20/4XK20
2.11
フェイルセーフ クロック モニタ
フェイルセーフ クロック モニタ (FSCM) により、外
部オシレータに障害が発生してもデバイスは動作
を継続できます。オシレータ スタートアップ タイ
マ (OST) のタイムアウト後であれば、FSCM は随時
オシレータの障害を検出できます。FSCM を有効に
するには、構成レジスタ CONFIG1H の FCMEN ビッ
トをセットします。FSCM はすべての外部オシレー
タ モード (LP、XT、HS、EC、RC、および RCIO)
に適用されます。
図 2-8:
Clock Monitor
Latch
LFINTOSC
Oscillator
64
31 kHz
(~32 s)
488 Hz
(~2 ms)
S
Q
R
Q
Sample Clock
2.11.1
フェイルセーフ状態の解消
フェイルセーフ状態は、次のいずれかの動作によっ
て解消されます。
• あらゆるリセット
• OSCCON レジスタの SCS1 ビットのトグル
2.11.4
Clock
Failure
Detected
フェイルセーフの検出
FSCM モジュールは、外部オシレータと FSCM サン
プル クロックを比較することで、オシレータの障
害を検出します。サンプル クロックは LFINTOSC
を 64 分周して生成します ( 図 2-8 参照 )。フェイル
検知器ブロックの内部はラッチとなっています。外
部クロックの立ち下がりエッジごとに、ラッチが
セットされます。そして、サンプル クロックの立
ち上がりエッジごとに、ラッチがクリアされます。
サンプル クロックが 1/2 サイクル経過してもプライ
マリ クロックが Low にならない場合に障害として
検出されます。
2.11.2
2.11.3
いずれの条件も OST を再起動します。OST の実行
中、デ バ イ ス は OSCCON レ ジ ス タ で 選 択 し た
INTOSC で動作を継続します。OST がタイムアウト
になると、フェイルセーフ状態が解消され、デバイ
スは自動的に外部クロック ソースに切り替わりま
す。OSCFIF フラグがクリアされる前にフェイル
セーフ状態を解消する必要はありません。
FSCM のブロック図
External
Clock
FSCM によって選択される内部クロック ソースは、
OSCCON レジスタの IRCF<2:0> ビットで決定しま
す。このため、障害が発生する前に内部オシレータ
を設定できます。
リセットまたはスリープからの
ウェイクアップ
FSCM は、オシレータ スタートアップ タイマ (OST)
のタイムアウト後にオシレータの障害を検出でき
るように設計されています。スリープからのウェイ
クアップ後、またはすべての種類のリセット後に、
OST が実行されます。EC または RC クロック モー
ドでは OST が実行されないため、リセットまたは
ウェイアップの完了後、ただちに FSCM がアクティ
ブになります。FSCM が有効になると、2 段速スター
トアップも有効になります。このため、デバイスは
OST の動作中も常にコードを実行できます。
注:
フェイルセーフの動作
オシレータによってスタートアップ時間
が大きく異なるため、オシレータがスター
トアップ中は ( すなわちリセットまたはス
リープからのウェイクアップ後でないと)、
フェイルセーフ回路はアクティブになり
ません。適切な時間の経過後、OSCCON レ
ジスタの OSTS ビットを参照してオシレー
タ スタートアップの状態を確認し、システ
ム クロックのスイッチオーバが正常に終
了したかどうかを確認してください。
外部クロックに障害が発生すると、FSCM によって
デバイスのクロックが内部クロック ソースに切り
替えられ、PIR2 レジスタの OSCFIF フラグ ビット
がセットされます。PIE2 レジスタの OSCFIE ビット
もセットされている場合に OSCFIF フラグがセット
されると、割り込みが発生します。この時点で、デ
バイスのファームウェアはクロック障害の影響を
緩和 す るた めの 対 策を 実 行で きま す。デバ イ ス
ファームウェアが外部オシレータを正常に再起動
し、再び外部クロック動作に切り替えるまでの間、
システムは内部クロック ソースで動作を継続しま
す。障害が発生したクロック ソースに自動的に遷
移することはありません。
DS41303E_JP - ページ 38
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 2-9:
FSCM のタイミング図
Sample Clock
Oscillator
Failure
System
Clock
Output
Clock Monitor Output
(Q)
Failure
Detected
OSCFIF
Test
注:
表 2-3:
Test
Test
通常、システム クロックはサンプル クロックよりもはるかに高周波数です。この図では、わかりやすくするた
めに両者の周波数比を小さくしてあります。
クロック ソース関連レジスタの一覧
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR, BOR
Value on
all other
Resets(1)
CONFIG1H
IESO
FCMEN
—
—
FOSC3
FOSC2
FOSC1
FOSC0
—
—
INTCON
GIE/GIEH PEIE/GIEL TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
0000 000x
0000 000x
OSCCON
IDLEN
IRCF2
IRCF1
IRCF0
OSTS
IOFS
SCS1
SCS0
0011 q000
0011 q000
OSCTUNE
INTSRC
PLLEN
TUN5
TUN4
TUN3
TUN2
TUN1
TUN0
0000 0000
000u uuuu
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
0000 0000
0000 0000
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
0000 0000
0000 0000
IPR2
OSCFIP
—
—
—
—
—
—
—
1111 1111
1111 1111
記号の説明 :
x = 不明。u = 不変。– = 未実装、「0」として読み出し。網掛けのビットはオシレータでは使用しません。
注 1: パワーアップ以外のリセットには、MCLR リセット、および通常動作時のウォッチドッグ タイマ リセットがあります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 39
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 40
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
3.0
電源管理モード
のビット設定、クロック ソース、クロックの供給
対象となるモジュールの一覧を表 3-1 に示します。
PIC18F2XK20/4XK20 デバイスには、より高効率の
電源管理を可能とする 7 つの動作モードがありま
す。これらのモードは、リソースに制約のあるアプ
リケーション ( バッテリ駆動の機器など ) において、
選択的に電力を節減するさまざまなオプションを
提供します。
3.1.1
SCS<1:0> ビットによって、電源管理モードで使用
するクロック ソースを次の 3 つの中から 1 つ選択
します。
• 構成ビットFOSC<3:0>によって定義されるプライ
マリ クロック
• セカンダリ クロック ( タイマ 1 オシレータ )
• 内部オシレータ ブロック
電源管理モードは、次の 3 種類に分類されます。
• ラン モード
• アイドル モード
• スリープ モード
3.1.2
各モードでは、クロックの供給対象となるデバイス
の部分、場合によってはそのクロック速度を規定し
ます。ラン モードおよびアイドル モードでは、3 つ
のクロック ソース ( プライマリ、セカンダリ、また
は内部オシレータ ブロック ) のすべてを使用可能で
す。スリープ モードではクロック ソースを使用しま
せん。
電源管理のアイドルまたはスリープ モードへの移
行は、SLEEP 命令の実行によって開始されます。ど
のモードに移行するかは、OSCCON レジスタの
IDLEN ビットの状態に依存します。
電源管理モードの選択
現在のモードおよび切り替え先のモードによって
は、移行するときにこれらのビットのすべてを変更
しなくてもよい場合があります。SLEEP 命令を発行
する前に、
オシレータ選択ビットまたは IDLEN ビッ
トを変更するだけで移行できる場合も少なくあり
ません。更に、IDLEN ビットも既に適切に設定され
ている場合は、SLEEP 命令を実行するだけで、目的
とするモードに切り替えることができます。
電源管理モードを選択する際は、次の 2 つの項目に
ついて判断する必要があります。
• CPU へのクロック供給の有無
• クロック ソースの選択
OSCCON レジスタの IDLEN ビットが CPU へのク
ロック供給を、OSCCON レジスタの SCS<1:0> ビッ
トがクロック ソース選択を制御します。各モード
表 3-1:
電源管理モードへの移行
電源管理モード間の切り替えでは、まず OSCCON
レジスタをロードします。SCS<1:0> ビットによっ
てクロック ソースが選択され、どのラン モードま
たはアイドル モードを使用するかが決まります。
こ
れらのビットを変更すると、切り替え先のクロック
ソースが動作中ならば、ただちに切り替わります。
切り替え時にクロック遷移のための遅延が発生す
る場合があります。これについては、3.1.3 項「ク
ロック遷移およびステータス インジケータ」以降
で説明しています。
電源管理モードには、以前の PIC® マイクロコント
ローラ デバイスに搭載されていた省電力機能がい
くつか含まれています。その一つが、プライマリ オ
シレータの代わりにタイマ 1 オシレータを使用する
クロック切り替え機能です。また、すべての PIC® マ
イクロコントローラ デバイスに含まれるスリープ
モードは、本デバイスにも搭載されています。この
モードではデバイス クロックをすべて停止します。
3.1
クロック ソース
電源管理モード
Mode
OSCCON Bits
Module Clocking
Available Clock and Oscillator Source
IDLEN(1)
SCS<1:0>
CPU
Peripherals
0
N/A
Off
Off
PRI_RUN
N/A
00
Clocked
Clocked
Primary – LP, XT, HS, HSPLL, RC, EC and
Internal Oscillator Block(2).
This is the normal full power execution mode.
SEC_RUN
N/A
01
Clocked
Clocked
Secondary – Timer1 Oscillator
RC_RUN
N/A
1x
Clocked
Clocked
Internal Oscillator Block(2)
PRI_IDLE
1
00
Off
Clocked
Primary – LP, XT, HS, HSPLL, RC, EC
SEC_IDLE
1
01
Off
Clocked
Secondary – Timer1 Oscillator
RC_IDLE
1
1x
Off
Clocked
Internal Oscillator Block(2)
Sleep
注 1:
2:
None – All clocks are disabled
IDLEN の値は SLEEP 命令を実行する時点のものです。
HFINTOSC、HFINTOSC ポストスケーラ、LFINTOSC の各ソースを含みます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 41
PIC18F2XK20/4XK20
3.1.3
3.2
クロック遷移およびステータス
インジケータ
クロック ソース間の遷移時間は、次の値を合計し
たものになります。
• 切り替え先のクロックのスタートアップ時間
• 現在のクロック ソースの 2.5 サイクル
• 切り替え先のクロック ソースの 2.5 サイクル
• OSTS (OSCCON レジスタ )
• IOFS (OSCCON レジスタ )
• T1RUN (T1CON レジスタ )
通常、特定の電源管理モードに対して、これらの
ビットのうちの 1 つだけがセットされます。表 3-2
に、これらのフラグとアクティブなメイン システ
ム クロック ソースの関係を示します。
表 3-2:
システム クロック インジケータ
OSTS IOFS T1RUN
Main System Clock Source
1
0
0
Primary Oscillator
0
1
0
HFINTOSC
0
0
1
Secondary Oscillator
1
1
0
HFINTOSC as primary clock
0
0
0
LFINTOSC or
HFINTOSC is not yet stable
.
注 1:
3.1.4
ラン モードでは、コアおよび周辺機能へのクロッ
クが両方とも動作します。各モード間の違いは、ク
ロック ソースです。
3.2.1
次の 3 つのフラグ ビットは、現在のクロック ソー
スとその状態を示します。
SLEEP 命令を実行しても、
デバイスがス
リープ モードに移行するとは限りませ
ん。この命令は、IDLEN ビットの設定に
応じて、コントローラをスリープ モー
ドまたは複数のアイドル モードのいず
れかに移行させるトリガとして機能し
ます。
DS41303E_JP - ページ 42
PRI_RUN モード
PRI_RUN モードは、マイクロコントローラの通常
のフル パワー実行モードです。このモードは、2 段
速スタートアップを有効にしている場合を除き、デ
バイス リセット後のデフォルトです。(2 段速スター
トアップの詳細は 2.10 項「2 段速クロック スター
トアップ モード」を参照してください。) このモー
ドでは、OSTS ビットがセットされます。HFINTOSC
がプライマリ クロック ソースで、オシレータが既
に安定に動作している場合は IOFS ビットもセット
されます (2.2 項「オシレータ制御」参照 )。
3.2.2
SEC_RUN モード
SEC_RUN モードは、他の PIC18 デバイスに搭載さ
れた「クロック切り替え」機能とモード互換性があ
ります。このモードでは、CPU および周辺機能への
クロックがタイマ 1 オシレータから供給されます。
このため、ユーザーは高精度のクロック ソースを
使用しながら消費電力を低減できます。
SEC_RUN モードに移行するには、SCS<1:0> ビット
を「01」に設定します。次のすべてが満たされた場
合が SEC_RUN モードです。
• メイン クロック ソースがタイマ 1 オシレータに
切り替えられている
• プライマリ オシレータがシャットダウンされて
いる
• T1CON レジスタの T1RUN ビットがセットされ
ている
• OSTS ビットがクリアされている
注:
スリープ コマンドの複数の機能
SLEEP 命令によって開始される電源管理モードは、
命令実行時の OSCCON レジスタの IDLEN ビットの
設定によって決まります。IDLEN ビットをクリア
した状態で SLEEP を実行すると、すべてのクロッ
クが停止し、消費電力が最小になります。IDLEN
ビットをセットした状態で SLEEP モードを実行す
ると、周辺機能には引き続きクロックを供給します
が、CPU へのクロックは遮断されます。
ラン モード
SEC_RUN モードに移行する前に、タイマ
1 オシレータを動作させておいてくださ
い。SCS<1:0> ビットを「01」に設定して
も、T1OSCEN ビットがセットされ、タイ
マ1オシレータが使用可能な状態になるま
で SEC_RUN モードには移行しません。
SEC_RUN モードから PRI_RUN モードに移行する
場合、プライマリ クロックが起動するまで、周辺
機能と CPU には引き続きタイマ 1 オシレータから
クロックが供給されます。プライマリ クロックが
使用可能になった時点で、クロックが切り替わりま
す ( 図 2-7 参照 )。クロックの切り替えが完了する
と、T1RUN ビットがクリア、OSTS ビットがセット
されて、プライマリ クロック ソースがメイン シス
テム クロックを供給しはじめます。T1OSCEN ビッ
トがセットされている限り、タイマ 1 オシレータは
動作を続けます。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
3.2.3
RC_RUN モード
RC_RUN モードでは、HFINTOSC のマルチプレク
サ出力のいずれか 1 つを使用して、内部オシレータ
ブロックから CPU および周辺機能にクロックを供
給します。このモードでは、プライマリ オシレー
タがシャットダウンされます。LFINTOSC がメイン
クロック ソースの場合、RC_RUN モードはすべて
のラン モードの中で最も消費電力を節減できます。
タイミング精度の影響をそれほど受けず、常時高速
のクロックを必要としないユーザー アプリケー
ションならば、問題なく動作します。
プライマリ クロック ソースが内部オシレータ ブ
ロック (LFINTOSC または HFINTOSC) の場合、動
作中の PRI_RUN モードと RC_RUN モードの間には
判別できる差異はありません。しかし、RC_RUN
モードへの移行または同モードの終了時にはク
ロック遷移の遅延が発生します。したがって、プラ
イマリ クロック ソースが内部オシレータ ブロック
の場合、RC_RUN モードの使用は推奨できません。
クロック切り替えの詳細は、2.9.3 項「クロック切
り替えのタイミング」を参照してください。
RC_RUN モードに移行するには、SCS1 ビットを
「1」に設定します。SCS0 ビットは「0」または「1」
のいずれでもかまいませんが、将来のデバイスとの
ソフトウェア互換性を保つために「0」に設定して
ください。クロック ソースがプライマリ オシレー
タから HFINTOSC のマルチプレクサに切り替わる
と、プライマリ オシレータはシャットダウンされ、
OSTS ビットがクリアされます。IRCF ビットは随時
変更して、クロック速度をただちに変更できます。
RC_RUN モードから PRI_RUN モードに移行する場
合、プライマリ オシレータが起動する間、デバイ
スのクロックは引き続き内部オシレータ ブロック
から供給されます。プライマリ オシレータが使用
可能になった時点で、クロックの切り替えが実行さ
れます。クロックの切り替えが完了すると、IOFS
ビットがクリア、OSTS ビットがセットされて、プ
ライマリ オシレータがメイン システム クロックを
供給しはじめます。2.5.2 項「HFINTOSC」に示す
条件のいずれかが満たされている限り、HFINTOSC
は動作を続けます。また、2.5.3 項「LFINTOSC」に
示 す 条 件 の い ず れ か が 満 た さ れ て い る 限 り、
LFINTOSC ソースは動作を続けます。
3.3
スリープ モード
PIC18F2XK20/4XK20 デバイスの電源管理スリープ
モードは、
他のすべての PIC® マイクロコントローラ
デバイスが提供する従来のスリープ モードとまっ
たく同じです。スリープ モードに移行するには、
IDLEN ビットをクリアして ( デバイス リセット時の
デフォルト状態 )、SLEEP 命令を実行します。これ
によって、選択されているオシレータがシャットダ
ウンされます ( 図 3-1)。更に、すべてのクロック
ソースのステータス ビットがクリアされます。
 2009 Microchip Technology Inc.
他のモードからスリープ モードに移行する場合、
ク
ロックの切り替えは不要です。これは、スリープ状
態に入ったコントローラにはクロックが一切不要
だからです。WDT を選択している場合、LFINTOSC
ソースは引き続き動作します。タイマ 1 オシレータ
も、有効化されている場合は動作を続けます。
通常、スリープ モードでウェイクアップ イベント
( 割り込み、リセット、または WDT タイムアウト )
が発生すると、SCS<1:0> ビットで選択したクロッ
ク ソースが使用可能になるまで ( 図 3-2 参照 )、デ
バイスにはクロックが供給されません。ただし、2
段速スタートアップまたはフェイルセーフ クロッ
ク モニタのいずれかが有効になっている場合は、
内
部オシレータ ブロックがクロックを供給します
(23.0 項「CPU の特殊機能」参照 )。いずれの場合
も、プライマリ クロックがデバイス クロックを供
給している間は OSTS ビットがセットされます。
IDLEN および SCS ビットは、ウェイクアップの影
響を受けません。
3.4
アイドル モード
アイドル モードでは、周辺機能の動作は継続しな
がら、CPU だけを選択的にシャットダウンできま
す。特定のアイドル モードを選択することで、ユー
ザーは消費電力をさらに細かく管理できます。
IDLEN ビットを「1」に設定して SLEEP 命令を実行
すると、周辺回路は SCS<1:0> ビットで選択された
ソースからクロックを供給されますが、CPU へのク
ロックは遮断されます。クロック ソースのステータ
ス ビットは変化しません。IDLEN ビットをセットし
て SLEEP 命令を実行すれば、特定のラン モードか
ら、それに対応するアイドル モードへ簡単に切り替
えることができます。
WDT を選択している場合、LFINTOSC ソースは引
き続き動作します。タイマ 1 オシレータも、有効化
されている場合は動作を続けます。
アイドル モードでは CPU が命令を実行できないた
め、モードから出るには割り込み、WDT タイムア
ウト、リセットによる方法しかありません。ウェイ
クアップ イベントが発生してから、CPU がコード
を実行できるようになるまでに TCSD ( 表 26-10 のパ
ラメータ 38) の時間だけ遅延が発生します。CPU が
コードを実行しはじめる時点では、現在のアイドル
モードと同じクロック ソースで動作を再開します。
例えば、RC_IDLE モードからウェイクアップする
場合、内部オシレータ ブロックが CPU および周辺
機能にクロックを供給します ( つまり RC_RUN モー
ドで動作します )。IDLEN および SCS ビットは、
ウェイクアップの影響を受けません。
いずれのアイドル モードおよびスリープ モードに
おいても、WDT タイムアウトが発生すると、現在
SCS<1:0> ビットによって指定されているラン モー
ドへの WDT ウェイクアップが実行されます。
Preliminary
DS41303E_JP - ページ 43
PIC18F2XK20/4XK20
図 3-1:
スリープ モードに移行するときの遷移タイミング
Q1 Q2 Q3 Q4 Q1
OSC1
CPU
Clock
Peripheral
Clock
Sleep
Program
Counter
PC
図 3-2:
PC + 2
スリープからウェイクアップするときの遷移タイミング (HSPLL)
Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
Q1
OSC1
TOST(1)
PLL Clock
Output
TPLL(1)
CPU Clock
Peripheral
Clock
Program
Counter
PC
Wake Event
注
1:
PC + 2
PC + 4
PC + 6
OSTS bit set
TOST = 1024 X TOSC、TPLL = 約 2 ms 図内のこれらの時間は縮尺どおりには描かれていません。
DS41303E_JP - ページ 44
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
3.4.1
PRI_IDLE モード
3.4.2
PRI_IDLEはプライマリ デバイス クロックを停止し
ないという点で、3 つの低電力アイドル モードの中
では特異です。タイミングが重要なアプリケーショ
ンでは、このモードを使用することで、精度の高い
プライマリ クロック ソースにより、最短の時間で
デバイスの動作を再開できます。クロック ソース
が「ウォームアップ」したり、他のオシレータから
遷移する時間が不要だからです。
PRI_IDLE モードに移行するには、PRI_RUN モード
から IDLEN ビットをセットして、SLEEP 命令を実
行します。デバイスが PRI_RUN 以外のラン モード
にいる場合は、まず IDLEN ビットをセットしてか
ら SCS ビットをクリアして SLEEP を実行します。
CPU は無効化されるものの、周辺機能には構成ビッ
ト FOSC<3:0> によって指定されたプライマリ ク
ロック ソースからクロックが供給され続けます。
OSTS ビットはセットされたままです ( 図 3-3 参照 )。
ウェイクアップ イベントが発生すると、プライマリ
クロック ソースから CPU にクロックが供給されま
す。ウェイクアップ イベントからコードの実行開始
までに TCSD の遅延が必要です。これは、CPU が命
令を実行できるようになるまでに必要な時間です。
ウェイクアップ後も OSTS ビットはセットされたま
まです。IDLEN および SCS ビットは、ウェイクアッ
プの影響を受けません ( 図 3-4 参照 )。
図 3-3:
SEC_IDLE モード
SEC_IDLE モードでは、CPU が無効となり、周辺機
能には引き続きタイマ 1 オシレータからクロックが
供給されます。SEC_IDLE モードに移行するには、
SEC_RUN モードから IDLEN ビットをセットして、
SLEEP 命令を実行します。デバイスが SEC_RUN 以
外のラン モードにいる場合は、まず IDLEN ビット
をセットしてから SCS<1:0> ビットを「01」にセッ
トし、SLEEP を実行します。クロック ソースがタ
イマ 1 オシレータに切り替わると、プライマリ オ
シレータはシャットダウンされ、OSTS ビットがク
リア、T1RUN ビットがセットされます。
ウェイクアップ イベントが発生しても、周辺機能
のクロックは、そのままタイマ 1 オシレータから供
給されます。ウェイクアップ イベントから TCSD の
時間が経過すると、タイマ 1 オシレータからのク
ロックにより CPU がコードを実行しはじめます。
IDLEN および SCS ビットは、ウェイクアップの影
響を受けず、タイマ 1 オシレータは動作を続けます
( 図 3-4 参照 )。
注:
SEC_IDLE モードに移行する前に、タイマ
1 オシレータを動作させておいてくださ
い。
SLEEP命令を実行する時点でT1OSCEN
ビットがセットされていないと、メイン シ
ステム クロックは以前に選択されたモー
ドのまま動作を続け、そのモードに対応す
るアイドル モード (PRI_IDLE や RC_IDLE)
に移行します。
アイドル モードに移行するときの遷移タイミング
Q1
Q3
Q2
Q4
Q1
OSC1
CPU Clock
Peripheral
Clock
Program
Counter
図 3-4:
PC
PC + 2
アイドル モードからラン モードにウェイクアップするときの遷移タイミング
Q1
Q2
Q3
Q4
OSC1
TCSD
CPU Clock
Peripheral
Clock
Program
Counter
PC
Wake Event
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 45
PIC18F2XK20/4XK20
3.4.3
RC_IDLE モード
3.5.1
RC_IDLE モードでは、CPU が無効となりますが、
周辺機能のクロックは HFINTOSC のマルチプレク
サ出力を使用して内部オシレータ ブロックから引
き続き供給されます。このモードでは、アイドル期
間の消費電力を制御できます。
RC_IDLE モードに移行するには、RC_RUN モード
から IDLEN ビットをセットして、SLEEP 命令を実
行します。デバイスが RC_RUN 以外のラン モード
にいる場合は、まず IDLEN ビットをセットしてか
ら SCS1 ビットをセットして SLEEP を実行します。
SCS0 ビットの値は無視されますが、将来のデバイ
スとのソフトウェア互換性を保つためにクリアし
ておくことを推奨します。SLEEP 命令を実行する
前に IRCF ビットを変更することで、HFINTOSC の
マルチプレクサからの高いクロック周波数を選択
することも可能です。
クロック ソースが HFINTOSC
のマルチプレクサに切り替わると、プライマリ オ
シレータはシャットダウンされ、OSTS ビットがク
リアされます。
IRCF ビットがゼロ以外の任意の値にセットされて
いる場合、または INTSRC ビットがセットされてい
る場合に HFINTOSC 出力が有効になります。TIOBST
( 表 26-10 のパラメータ 39) の時間が経過して
HFINTOSC 出力が安定すると、IOFS ビットがセッ
トされます。HFINTOSC ソースが安定するまでの間
も、周辺機能へのクロック供給は継続されます。
SLEEP命令を実行する前に、
既にIRCFビットがゼロ
以外の値に設定されていたか、または INTSRC が
セットされていた場合、HFINTOSC ソースの動作が
安定していれば IOFS ビットはセットされたままに
なります。IRCF ビットおよび INTSRC ビットがす
べてクリアされている場合はHFINTOSC出力が有効
化されず、IOFS ビットはクリアされたままです。現
在のクロック ソースが示されることもありません。
ウェイクアップ イベントが発生すると、周辺機能
のクロックは引き続き HFINTOSC のマルチプレク
サ出力から供給されます。ウェイクアップ イベン
トから TCSD の時間が経過すると、HFINTOSC マル
チプレクサからのクロックにより CPU がコードを
実行しはじめます。IDLEN および SCS ビットは、
ウェイクアップの影響を受けません。WDT または
フェイルセーフ クロック モニタのいずれかが有効
な場合、LFINTOSC ソースは動作を続けます。
3.5
アイドル モードおよびスリープ
モードの終了
スリープ モードまたはアイドル モードは次のイベ
ントのいずれかによって終了します。
• 割り込み
• リセット
• ウォッチドッグ タイマのタイムアウト
ここでは電源管理モードを終了するトリガについ
て説明します。クロック供給サブシステムの動作
は、各電源管理モードの説明を参照してください
(3.2 項「ラン モード」
、3.3 項「スリープ モード」
、
および 3.4 項「アイドル モード」)。
DS41303E_JP - ページ 46
割り込みによる終了
使用可能な割り込みソースは、いずれもデバイスを
アイドルまたはスリープ モードからラン モードに
移行させることができます。この機能を使用するに
は、INTCON または PIE レジスタのいずれかに含ま
れるイネーブル ビットをセットして割り込みソー
スを有効にする必要があります。また、使用する割
り込みのイネーブル ビットが PIE レジスタ内にあ
る場合は、PEIE ビットもセットしてください。モー
ド終了のシーケンスは、対応する割り込みフラグ
ビットがセットされた時点で開始されます。
SLEEP 命令の直後の命令は、割り込みによってア
イドルまたはスリープ モードが終了した時点で実
行されます。INTCON レジスタの GIE/GIEH ビット
がセットされている場合は、コードの実行が割り込
みベクタへと分岐します。それ以外の場合は、分岐
せずに継続されます (9.0 項「割り込み」参照 )。
ウェイクアップ イベントからスリープまたはアイ
ドル モードが終了するまでには一定の遅延 TCSD が
必要です。CPU がコードを実行できる状態になるま
でに必要な時間です。命令の実行は、この遅延経過
後の最初のクロック サイクルから再開されます。
3.5.2
WDT タイムアウトによる終了
WDT タイムアウトは、発生した時点でデバイスが
どの電源管理モードにあったかによって異なる動
作をトリガします。
デバイスがコードを実行していないときに ( すべて
のアイドルおよびスリープ モード )、WDT タイム
アウトが発生すると、電源管理モードが終了します
(3.2 項「ラン モード」および 3.3 項「スリープ モー
ド」参照 )。デバイスがコードを実行中だった場合
は ( すべてのラン モード )、タイムアウトによって
WDT リセットが実行されます (23.2 項「ウォッチ
ドッグ タイマ (WDT)」参照 )。
WDT タイマおよびポストスケーラは、次のいずれ
かの動作によってクリアされます。
• SLEEP 命令の実行
• CLRWDT 命令の実行
• フェイルセーフ クロック モニタが有効な場合
に、
現在選択中のクロック ソースが失われたとき
• デバイス クロック ソースが内部オシレータ ブ
ロックの場合に、OSCCON レジスタの IRCF
ビットが変更されたとき
3.5.3
リセットによる終了
リセットによってスリープまたはアイドル モード
を終了すると、コード実行はアドレス 0 から再起動
されます。詳細は、4.0 項「リセット」を参照して
ください。
リセットからコード実行開始までの遅延は、ウェイ
クアップ前後のクロック ソースおよびオシレータ
のタイプの両方に依存します。これらの遅延を表 33 に示します。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
3.5.4
オシレータ スタートアップ遅延を
伴わない電源管理モードの終了
電源管理モードを終了するときに OST が一切起動
されない場合があります。それは、次の 2 つの場合
です。
• プライマリ クロック ソースが停止しない
PRI_IDLE モード
• プライマリ クロック ソースが LP、XT、HS、
HSPLL モードのいずれでもない場合
表 3-3:
これらの場合、プライマリ クロック ソースは、既
に動作中であるか (PRI_IDLE モード )、通常スター
ト アップ遅延が不要のモード (RC、EC、INTOSC、
INTOSCIO モード ) であることから、オシレータ ス
タートアップ遅延を必要としません。ただし、この
場合もスリープまたはアイドル モードを終了して、
CPU のコード実行準備が整うまでには、ウェイク
アップ イベントから一定の時間 TCSD の遅延が必要
です。命令の実行は、この遅延経過後の最初のク
ロック サイクルから再開されます。
リセットによるスリープまたはアイドル モードからのウェイクアップ時に必要なモード終了
遅延 ( クロック ソースごと )
Clock Source
before Wake-up
Clock Source
after Wake-up
Exit Delay
Clock Ready Status
Bit (OSCCON)
LP, XT, HS
Primary Device Clock
(PRI_IDLE mode)
HSPLL
EC, RC
TCSD(1)
HFINTOSC(2)
T1OSC or LFINTOSC(1)
LP, XT, HS
HSPLL
TOST + tPLL(3)
EC, RC
LP, XT, HS
HFINTOSC(2)
2:
3:
4:
TOST
OSTS
IOFS
(4)
OSTS
EC, RC
TCSD(1)
HFINTOSC(1)
None
IOFS
HSPLL
EC, RC
HFINTOSC(1)
注 1:
TCSD(1)
TIOBST(4)
TOST + tPLL(3)
HSPLL
LP, XT, HS
None
(Sleep mode)
IOFS
TOST(3)
HFINTOSC(1)
OSTS
TOST
(3)
TOST + tPLL(3)
TCSD(1)
TIOBST(4)
OSTS
IOFS
TCSD ( パラメータ 38) は、スリープおよびすべてのアイドル モードからウェイクアップするときに必
要な遅延です。他の必要な遅延と並行して経過します (3.4 項「アイドル モード」参照 )。リセット
時、HFINTOSC はデフォルトの 1 MHz に設定されます。
HFINTOSC の 16 MHz ソースおよびポストスケーラによって派生した周波数の両方を含みます。
TOST はオシレータ スタートアップ タイマ ( パラメータ 32)、tPLL は PLL のロックアウト タイマ
( パラメータ F12) です。
HFINTOSC が安定化するまでの TIOBST ( パラメータ 39) の期間もコード実行は継続されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 47
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 48
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
4.0
リセット
PIC18F2XK20/4XK20 デバイスには、次のような動作
の異なる各種リセットがあります。
a)
b)
c)
d)
e)
f)
g)
h)
パワーオン リセット (POR)
通常動作中の MCLR リセット
電源管理モードの MCLR リセット
ウォッチドッグ タイマ (WDT) リセット
( コード実行中 )
プログラマブルなブラウンアウト リセット
(BOR)
RESET 命令
スタック フル リセット
スタック アンダーフロー リセット
ここでは、MCLR、POR、BOR によって発生するリ
セット、およびさまざまなスタートアップ タイマ
の動作を説明します。スタック リセット イベント
は、5.1.2.4 項「スタック フルおよびアンダーフロー
リセット」に記載されています。WDT リセットは、
23.2 項「ウォッチドッグ タイマ (WDT)」を参照し
てください。
図 4-1:
オンチップ リセット回路の概略ブロック図を図 4-1
に示します。
4.1
RCON レジスタ
デバイスのリセット イベントは RCON レジスタに
よって監視します ( レジスタ 4-1)。このレジスタの
下位 5 ビットが、特定のリセット イベントが発生
したことを示します。ほとんどの場合、これらの
ビットはイベントによってのみクリアされ、イベン
ト後はアプリケーションによってセットする必要
があります。これらのフラグ ビットの状態をまと
めて読み出すことで、いま発生したリセットの種類
を特定できます。これについては、4.6 項「レジス
タのリセット状態」で詳細に説明します。
RCON レジスタには割り込みの優先度を設定する
制御ビット (IPEN) と、BOR をソフトウェア制御す
るための制御ビット (SBOREN) もあります。割り込
み優先度は、9.0 項「割り込み」で検討します。BOR
は、4.4 項「ブラウンアウト リセット (BOR)」で説
明します。
オンチップ リセット回路の概略ブロック図
RESET
Instruction
Stack Full/Underflow Reset
Stack
Pointer
External Reset
MCLR
MCLRE
( )_IDLE
Sleep
WDT
Time-out
VDD
Detect
VDD
POR
Brown-out
Reset
S
BOREN
OST/PWRT
OST(2) 1024 Cycles
Chip_Reset
10-bit Ripple Counter
R
OSC1
32 s
LFINTOSC
Q
PWRT(2) 65.5 ms
11-bit Ripple Counter
Enable PWRT
Enable OST(1)
注 1:
2:
タイムアウト時間は、表 4-2 を参照してください。
PWRT および OST カウンタは POR および BOR によってリセットされます。(4.3 および 4.4 参照 )
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 49
PIC18F2XK20/4XK20
レジスタ 4-1:
RCON: リセット制御レジスタ
R/W-0
R/W-1
U-0
(1)
IPEN
SBOREN
—
R/W-1
RI
R-1
TO
R-1
R/W-0
PD
(2)
POR
bit 7
R/W-0
BOR
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
IPEN: 割り込み優先度イネーブル ビット
1 = 割り込みの優先度設定が有効
0 = 割り込みの優先度設定が無効 (PIC16CXXX 互換モード )
ビット 6
SBOREN: ソフトウェア BOR イネーブル ビット (1)
BOREN<1:0> = 01 の場合 :
1 = ソフトウェア BOR が有効
0 = ソフトウェア BOR が無効
BOREN<1:0> = 00、10、または 11 の場合 :
ビットは使用不可。
「0」として読み出し
ビット 5
未実装 :「0」として読み出し
ビット 4
RI: RESET 命令フラグ ビット
1 = RESET 命令は実行されていない ( ファームウェアまたはパワーオン リセットによって
セット )
0 = RESET 命令が実行されデバイス リセットが発生 ( コードによるリセット動作後はファーム
ウェアによるセットが必要 )
ビット 3
TO: ウォッチドッグ タイムアウト フラグ ビット
1 = 電源投入後に、もしくは CLRWDT または SLEEP 命令によりセット
0 = WDT タイムアウト発生
ビット 2
PD: パワーダウン検出フラグ ビット
1 = 電源投入後に、もしくは CLRWDT 命令によりセット
0 = SLEEP 命令の実行により「0」に設定される
ビット 1
POR: パワーオン リセット ステータス ビット (2)
1 = パワーオン リセットは発生していない
0 = パワーオン リセットが発生した ( パワーオン リセット後はソフトウェアによるセットが
必要 )
ビット 0
BOR: ブラウンアウト リセット ステータス ビット (3)
1 = ブラウンアウト リセットは発生していない ( ファームウェアによってのみセット )
0 = ブラウンアウト リセットが発生した ( パワーオン リセットまたはブラウンアウト リセット
後はファームウェアによるセットが必要 )
注 1:
2:
CONFIG2L[2:1] = 01 の場合、SBOREN のリセット状態は「1」となり、それ以外の場合は「0」です。
デバイス リセット時の POR の実際の値は、実行されたリセットの種類によって変わります。詳細は、
このレジスタ説明の注、および 4.6 項「レジスタのリセット状態」を参照してください。
表 4-3 参照。
3:
注 1:
ブラウンアウト リセットの発生は、BOR =「0」
、POR =「1」によって表示されます (POR と BOR
の両ビットが POR 後すぐに「1」にセットされていることが前提です )。
2:
パワーオン リセット (POR) 後は、それ以降の POR を検出できるように、POR ビットをセットする
ことを推奨します。
DS41303E_JP - ページ 50
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
4.2
マスター クリア (MCLR)
図 4-2:
MCLR ピンによってデバイスの外部リセットが可
能です。このピンを Low に保持することでデバイ
スをリセット状態にできます。MCLR リセット信号
のパスにはデバイス内でノイズ フィルタが接続さ
れており、検出された信号が微小パルスの場合は無
視します。
外部パワーオン リセット回路
(VDD 電源の立ち上がりが遅い場合 )
D
4.3
PIC® MCU
R
R1
WDT を含めいずれの内部リセットも、MCLR ピン
を Low に駆動することはありません。
PIC18F2XK20/4XK20 デ バイ ス では、構 成ビ ッ ト
MCLRE によって MCLR 入力を無効化できます。
MCLR が無効の場合、このピンはデジタル入力にな
ります。詳細は、10.6 項「PORTE、TRISE、LATE
レジスタ」を参照してください。
VDD
VDD
MCLR
C
注 1:
外部パワーオン リセット回路が必要となるの
は VDD 電源の立ち上がりがきわめて遅い場合
のみです。VDD 電源が立ち下がったときは、ダ
イオード D を介して急速にコンデンサを放電
します。
2:
R の値は、電圧降下がデバイスの電気的仕様
に違反しないように、15 k < R < 40 k を推
奨します。
3:
R1  1 k の抵抗は、静電気放電 (ESD) や電
気的オーバーストレス (EOS) によって
外
MCLR/VPP ピンの絶縁破壊が起きた場合に、
付けコンデンサ C から MCLR ピンに流れ込む
電流を制限します。
パワーオン リセット (POR)
VDD が一定のスレッショルドを超えると、チップ内
でパワーオン リセット パルスが発生します。この
パルスによって、デバイスは VDD が動作に適した
状態になったときに、初期化された状態から動作を
開始できます。
POR 回路を使用するには、MCLR ピンを抵抗を介
して VDD に接続します。この方法では、通常パワー
オン リセットの遅延に必要とされる外付けの RC 部
品は不要です。ただし、VDD の立ち上がり速度は最
小値が仕様で規定されています ( パラメータ D004)。
これより立ち上がりが遅い場合は、図 4-2 を参照し
てください。
デバイスが ( リセットを終了して ) 通常動作を開始
する際は、デバイスの動作パラメータ ( 電圧、周波
数、温度など ) が正常動作に必要な範囲になければ
なりません。条件が満たされていない場合、動作条
件がこれを満たすまで、デバイスをリセット状態に
保持する必要があります。
POR イベントは RCON レジスタの POR ビットに
よって検出します。このビットは、POR が発生した
場合に必ず「0」になりますが、その他のリセット
イベントでは変化しません。また、いかなるハード
ウェア イベントによっても、POR が「1」になるこ
とはありません。イベントを複数回検出するには、
POR が発生するたびにソフトウェアによってこの
ビットを「1」にセットする必要があります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 51
PIC18F2XK20/4XK20
4.4
ブラウンアウト リセット (BOR)
PIC18F2XK20/4XK20 デバイスには、構成および省電
力機能に対していくつかのオプションを提供する
BOR 回路が実装されています。
BOR は構成レジスタ
CONFIG2L の BORV<1:0> および BOREN<1:0> ビッ
トによって制御されます。BOR の設定は表 4-1 に示
すとおり、全部で 4 通りあります。
BOR のスレッショルドは BORV<1:0> ビットによっ
て設定します。BOR が有効な場合 (BOREN<1:0> の
値が「00」以外の場合 )、VDD が TBOR ( パラメー
タ 35) より長い時間 VBOR ( パラメータ D005) を下
回った場合、デバイスがリセットされます。VDD が
VBOR を下回る時間が TBOR より短いときは、ブラ
ウンアウト リセットが発生する場合と、発生しな
い場合があります。VDD が上昇して VBOR を上回る
まで、チップはブラウンアウト リセットの状態を
保ちます。
パワーアップ タイマが有効な場合、VDD が VBOR を
超えた時点からカウントを開始し、チップを更に
TPWRT ( パラメータ 33) の時間だけリセット状態に
とどめます。パワーアップ タイマの動作中に VDD
が VBOR を下回った場合、チップはブラウンアウト
リセットに戻り、パワーアップ タイマが初期化さ
れます。VDD が VBOR を上回った時点から、再度パ
ワーアップ タイマによる遅延が加わります。
BOR とパワーアップ タイマ (PWRT) は、独立して
設定します。BOR リセットを有効にしても、PWRT
が自動的に有効になるわけではありません。
BOR 回路の出力が POR 回路に入力され、BOR 回路
の動作範囲内で POR の起動準備を整えます。この
ように早めに POR を準備することにより、VDD が
BOR 回路の動作範囲を下回った場合でも、デバイス
のリセット状態を保持できるようにしてあります。
4.4.1
BOR の検出
BOR が有効な場合、BOR ビットは BOR または POR
イベントが発生すると必ず「0」になります。この
ため、BOR イベントが発生したかどうかを BOR の
状態を読み出すだけで判断するのは困難です。より
信頼性が高いのは、POR と BOR の両方の状態を同
時に確認する方法です。この方法では、POR と BOR
ビットが、すべての POR イベント後にただちにソ
フトウェアによって「1」に強制されることを前提
にしています。この方法を使えば、BOR が「0」に
なり、POR が「1」のままの場合に、BOR イベント
が発生したことを高い信頼度で判定できます。
4.4.2
ソフトウェア制御可能な BOR
BOREN<1:0> = 01 の場合、BOR の有効、無効をユー
ザーがソフトウェアから制御できます。この機能
は、RCON レジスタの制御ビット SBOREN によっ
表 4-1:
て設定します。SBOREN をセットすると、BOR は
前述のとおり動作します。SBOREN をクリアする
と、BOR は一切動作しなくなります。SBOREN ビッ
トは、このモードのみで動作します。それ以外の
モードでは「0」と読み出されます。
BOR をソフトウェアによって制御できれば、その設
定を変更するためにデバイスを再プログラムする
必要がなくなり、環境に合わせてアプリケーション
を調整する柔軟性が得られます。更に、ソフトウェ
アにより BOR 回路起因の消費電流増をなくすこと
で、デバイスの消費電力を調整できます。BOR 回路
は通常ごく小さな電流しか消費しませんが、低電力
アプリケーションにはある程度の影響を及ぼす可
能性があります。
注:
BOR をソフトウェアで制御する場合も、
BOR のリセット電圧レベルは他の場合と
同様、構成ビット BORV<1:0> によって設
定します。この値は、ソフトウェアでは変
更できません。
4.4.3
スリープ モード時の BOR の無効化
BOREN<1:0> = 10 とした場合も BOR はハードウェ
ア制御により、前述のとおり動作します。ただしこ
の設定では、デバイスがスリープ モードに入った
ときに BOR が自動的に無効化されます。そしてデ
バイスが他の動作モードのいずれかに戻ると、再度
自動的に有効化されます。
このモードにより、アプリケーションが活発にコー
ドを実行し、デバイスが BOR 保護を最も必要とし
ている期間は、ブラウンアウト状態からの復帰が可
能となる一方、スリープ モードでは BOR による微
小な電流増がなくなるため、消費電力が更に節減さ
れます。
4.4.4
BOR 有効化の最小時間
BOR を有効化すると、固定電圧リファレンス (FVR)
が、他の周辺機能が必要としていない場合にも有効
化されます。BOR は FVR が安定化してから動作し
ます。したがって確実に BOR 保護を実装するには、
ソフトウェアによって BOR を有効にする場合や、
ス
リープからのウェイクアップ時に自動的に有効化
される場合に、FVR のセトリング タイムを考慮す
る必要があります。FVR が安定する前に、ソフト
ウェアまたはスリープへの移行によって再度 BOR
が無効化されると、BOR 回路が BOR 条件を検出で
きなくなります。FVR が安定しているかどうかは、
CVRCON2 レジスタの FVRST ビットによって判断
できます。
BOR の設定
BOR Configuration
BOREN1
BOREN0
Status of
SBOREN
(RCON<6>)
0
0
Unavailable
0
1
Available
BOR Operation
BOR disabled; must be enabled by reprogramming the Configuration bits.
BOR enabled by software; operation controlled by SBOREN.
1
0
Unavailable
BOR enabled by hardware in Run and Idle modes, disabled during Sleep mode.
1
1
Unavailable
BOR enabled by hardware; must be disabled by reprogramming the Configuration bits.
DS41303E_JP - ページ 52
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
4.5
4.5.3
デバイス リセット タイマ
PIC18F2XK20/4XK20 デバイスは、パワーオン リ
セット プロセスの制御に使用する、3 つの独立した
オンチップ タイマを搭載しています。その主な機
能は、コードを実行する前に、デバイス クロック
が安定しているかどうかを確認することです。次の
3 種類のタイマです。
• パワーアップ タイマ (PWRT)
• オシレータ スタートアップ タイマ (OST)
• PLL ロック タイムアウト
4.5.1
PIC18F2XK20/4XK20 デバイスのパワーアップ タ
イマ (PWRT) は、クロック入力として LFINTOSC
ソースを使用する、11 ビットのカウンタです。こ
のカウンタによって、およそ 2048 x 32 s = 65.6 ms
の時間を計測できます。PWRT のカウント中は、デ
バイスがリセット状態に保たれます。
電源投入時の遅延時間は LFINTOSC クロックに依
存し、温度やプロセスばらつきによってチップごと
に異なります。詳細は、DC パラメータ (33) を参照
してください。
PWRT は構成ビット PWRTEN をクリアすると有効
になります。
オシレータ スタートアップ タイマ
(OST)
オシレータ スタートアップ タイマ (OST) は、
PWRT
遅延の経過後に、OSC1 が入力されるオシレータの
1024 サイクル分だけ遅延を発生します ( パラメータ
32)。この遅延によって、水晶振動子やその他の振
動子が起動し安定するまでの時間を確保します。
OST が起動されるのは、XT、LP、HS、HSPLL モー
ドのパワーオン リセット時、または電源管理モー
ドのうち外部オシレータを停止するものすべての
終了時だけです。
表 4-2:
PLL モードで PLL を有効化した場合、パワーオン
リセット後のタイムアウト シーケンスは他のオシ
レータ モードと若干異なります。PLL がメイン オ
シレータ周波数にロックするのに十分な時間を確
保できるように、他のモードとは別の独立したタイ
マによって一定時間のタイムアウトを設定します。
この PLL ロック タイムアウト (TPLL) は通常 2 ms
で、オシレータ スタートアップ タイムアウトに続
いてカウントされます。
4.5.4
パワーアップ タイマ (PWRT)
4.5.2
PLL ロック タイムアウト
タイムアウト シーケンス
電源投入時のタイムアウト シーケンスは次のとお
りです。
1.
2.
POR パルスのクリア後、PWRT が起動します
( 有効な場合 )
続いて OST が起動します。
タイムアウトの合計時間は、オシレータの設定およ
び PWRT の状態によって異なります。図 4-3、図 4-4、
図 4-5、図 4-6 および図 4-7 は、いずれもパワーアッ
プ タイマが有効、かつデバイスが HS オシレータ
モードによって動作しているときの、電源投入時の
タイムアウト シーケンスを示したものです。図 4-3
~図 4-6 は、XT または LP モードで動作中のデバイ
スにも適用されます。一方、PWRT を無効化した RC
モードのデバイスの場合、タイムアウトは一切使用
しません。
タイムアウトのカウントは POR パルスを起点とす
るため、MCLR を十分長い時間 Low に保つと、そ
の間にすべてのタイマがタイムアウトするので、
MCLR を High に戻した瞬間に、
ただちにプログラム
の実行を開始できます ( 図 4-5)。この方法は、テス
ト時や並列動作する複数の PIC18FXXK20 デバイス
の同期を取るのに有効です。
各種状態におけるタイムアウト
Power-up(2) and Brown-out
Oscillator
Configuration
HSPLL
PWRTEN = 1
Exit from
Power-Managed Mode
1024 TOSC + 2 ms(2)
1024 TOSC + 2 ms(2)
PWRTEN = 0
66
ms(1)
HS, XT, LP
+ 1024 TOSC + 2
ms(2)
66 ms(1) + 1024 TOSC
1024 TOSC
1024 TOSC
EC, ECIO
(1)
66 ms
—
—
RC, RCIO
66 ms(1)
—
—
(1)
—
—
INTIO1, INTIO2
注 1:
2:
66 ms
66 ms (65.5 ms) は、パワーアップ タイマ (PWRT) 遅延の公称値です。
2 ms は PLL ロックに必要な時間の公称値です。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 53
PIC18F2XK20/4XK20
図 4-3:
電源投入時のタイムアウト シーケンス (MCLR は VDD に接続、
VDD の立ち上がり時間 < TPWRT)
VDD
MCLR
INTERNAL POR
TPWRT
PWRT TIME-OUT
TOST
OST TIME-OUT
INTERNAL RESET
図 4-4:
電源投入時のタイムアウト シーケンス (MCLR を VDD に接続しない場合 ): ケース 1
VDD
MCLR
INTERNAL POR
TPWRT
PWRT TIME-OUT
TOST
OST TIME-OUT
INTERNAL RESET
図 4-5:
電源投入時のタイムアウト シーケンス (MCLR を VDD に接続しない場合 ): ケース 2
VDD
MCLR
INTERNAL POR
TPWRT
PWRT TIME-OUT
TOST
OST TIME-OUT
INTERNAL RESET
DS41303E_JP - ページ 54
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 4-6:
立ち上がり時間が長い場合 (MCLR は VDD に接続、VDD の立ち上がり時間 > TPWRT)
5V
VDD
0V
MCLR
INTERNAL POR
TPWRT
PWRT TIME-OUT
TOST
OST TIME-OUT
INTERNAL RESET
図 4-7:
PLL を有効にした場合の POR 時のタイムアウト シーケンス (MCLR は VDD に接続 )
VDD
MCLR
INTERNAL POR
TPWRT
PWRT TIME-OUT
TOST
OST TIME-OUT
TPLL
PLL TIME-OUT
INTERNAL RESET
注:
TOST = 1024 クロック サイクル
TPLL  2 ms(max)(PWRT タイマの先頭から 3 段分 )
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 55
PIC18F2XK20/4XK20
4.6
レジスタのリセット状態
レジスタの中にはリセットによって変化しないも
のがあります。これらのレジスタの POR 後の状態
は不明であり、他のいずれのリセットによっても変
化しません。その他のレジスタは、いずれも発生し
たリセットの種類に応じた「リセット状態」に、強
制的に設定されます。
表 4-4 に、特殊機能レジスタのすべてについて、リ
セット状態を示します。これらは、パワーオンおよ
びブラウンアウト リセット、マスター クリアおよ
び WDT リセット系、WDT ウェイクアップ系の 3 つ
に分類されます。
ほとんどのレジスタは、WDT ウェイクアップの影
響を受けません。これは、WDT ウェイクアップが
通常動作の再開と見なされるためです。RCON レジ
スタのステータス ビット RI、TO、PD、POR、BOR
は、リセットの状況によって異なる値にセット / ク
リアされます ( 表 4-3 参照 )。これらのビットは、リ
セットの種類を判定するためにソフトウェアで使
用されます。
表 4-3:
RCON レジスタのステータス ビットの内容と初期化状態
RCON Register
STKPTR Register
Program
Counter
SBOREN
RI
TO
PD
0000h
1
1
1
1
0
0
0
0
RESET Instruction
0000h
u(2)
0
u
u
u
u
u
u
Brown-out Reset
0000h
u(2)
1
1
1
u
0
u
u
MCLR during Power-Managed
Run Modes
0000h
u
(2)
u
1
u
u
u
u
u
MCLR during Power-Managed
Idle Modes and Sleep Mode
0000h
u(2)
u
1
0
u
u
u
u
WDT Time-out during Full Power
or Power-Managed Run Mode
0000h
u(2)
u
0
u
u
u
u
u
MCLR during Full Power
Execution
0000h
u(2)
u
u
u
u
u
u
u
Stack Full Reset (STVREN = 1)
0000h
u(2)
u
u
u
u
u
1
u
Stack Underflow Reset
(STVREN = 1)
0000h
u(2)
u
u
u
u
u
u
1
Stack Underflow Error (not an
actual Reset, STVREN = 0)
0000h
u(2)
u
u
u
u
u
u
1
WDT Time-out during
Power-Managed Idle or Sleep
Modes
PC + 2
u(2)
u
0
0
u
u
u
u
PC + 2(1)
u(2)
u
u
0
u
u
u
u
Condition
Power-on Reset
Interrupt Exit from
Power-Managed Modes
POR BOR STKFUL STKUNF
記号の説明 : u = 不変
注 1: GIEH または GIEL ビットがセットされた状態で、割り込みによってウェイクアップした場合、
PC ( プログラム カウンタ ) には割り込みベクタ (0008h または 0018h) がロードされます。
2: ソフトウェア BOR が有効な場合 (BOREN<1:0> = 01)、SBOREN のリセット状態は「1」です。この
値は他のどのリセットが発生しても変化しません。それ以外の場合のリセット状態は「0」です。
DS41303E_JP - ページ 56
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 4-4:
全レジスタの初期化状態
Register
Applicable Devices
Power-on Reset,
Brown-out Reset
MCLR Resets,
WDT Reset,
RESET Instruction,
Stack Resets
Wake-up via WDT
or Interrupt
TOSU
PIC18F2XK20
PIC18F4XK20
---0 0000
---0 0000
---0 uuuu(3)
TOSH
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu(3)
TOSL
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu(3)
STKPTR
PIC18F2XK20
PIC18F4XK20
00-0 0000
uu-0 0000
uu-u uuuu(3)
PCLATU
PIC18F2XK20
PIC18F4XK20
---0 0000
---0 0000
---u uuuu
PCLATH
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
PCL
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
TBLPTRU
PIC18F2XK20
PIC18F4XK20
--00 0000
--00 0000
--uu uuuu
0000 0000
uuuu uuuu
PC + 2(2)
TBLPTRH
PIC18F2XK20
PIC18F4XK20
0000 0000
TBLPTRL
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
TABLAT
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
PRODH
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
PRODL
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
INTCON
PIC18F2XK20
PIC18F4XK20
0000 000x
0000 000u
uuuu uuuu(1)
INTCON2
PIC18F2XK20
PIC18F4XK20
1111 -1-1
1111 -1-1
uuuu -u-u(1)
INTCON3
PIC18F2XK20
PIC18F4XK20
11-0 0-00
11-0 0-00
uu-u u-uu(1)
INDF0
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
POSTINC0
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
POSTDEC0
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
PREINC0
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
N/A
N/A
PLUSW0
PIC18F2XK20
PIC18F4XK20
N/A
FSR0H
PIC18F2XK20
PIC18F4XK20
---- 0000
---- 0000
---- uuuu
FSR0L
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
WREG
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
N/A
N/A
INDF1
PIC18F2XK20
PIC18F4XK20
N/A
POSTINC1
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
POSTDEC1
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
PREINC1
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
PIC18F4XK20
N/A
N/A
N/A
PLUSW1
PIC18F2XK20
記号の説明 :
注 1:
2:
3:
4:
5:
6:
u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。
網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。
INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ
(0008h または 0018h) がロードされます。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は
現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。
各条件下でのリセット値は、表 4-3 を参照してください。
選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ
ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。
CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 57
PIC18F2XK20/4XK20
表 4-4:
全レジスタの初期化状態 ( 続き )
Register
FSR1H
Power-on Reset,
Brown-out Reset
MCLR Resets,
WDT Reset,
RESET Instruction,
Stack Resets
Wake-up via WDT
or Interrupt
PIC18F4XK20
---- 0000
---- 0000
---- uuuu
uuuu uuuu
uuuu uuuu
Applicable Devices
PIC18F2XK20
FSR1L
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
BSR
PIC18F2XK20
PIC18F4XK20
---- 0000
---- 0000
---- uuuu
INDF2
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
POSTINC2
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
N/A
N/A
POSTDEC2
PIC18F2XK20
PIC18F4XK20
N/A
PREINC2
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
PLUSW2
PIC18F2XK20
PIC18F4XK20
N/A
N/A
N/A
FSR2H
PIC18F2XK20
PIC18F4XK20
---- 0000
---- 0000
---- uuuu
uuuu uuuu
uuuu uuuu
FSR2L
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
STATUS
PIC18F2XK20
PIC18F4XK20
---x xxxx
---u uuuu
---u uuuu
TMR0H
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
TMR0L
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
1111 1111
uuuu uuuu
T0CON
PIC18F2XK20
PIC18F4XK20
1111 1111
OSCCON
PIC18F2XK20
PIC18F4XK20
0011 qq00
0011 qq00
uuuu uuuu
HLVDCON
PIC18F2XK20
PIC18F4XK20
0-00 0101
0-00 0101
u-uu uuuu
WDTCON
PIC18F2XK20
PIC18F4XK20
---- ---0
---- ---0
---- ---u
0u-q qquu
uu-u qquu
RCON(4)
PIC18F2XK20
PIC18F4XK20
0q-1 11q0
TMR1H
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
TMR1L
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
T1CON
PIC18F2XK20
PIC18F4XK20
0000 0000
u0uu uuuu
uuuu uuuu
0000 0000
uuuu uuuu
TMR2
PIC18F2XK20
PIC18F4XK20
0000 0000
PR2
PIC18F2XK20
PIC18F4XK20
1111 1111
1111 1111
1111 1111
T2CON
PIC18F2XK20
PIC18F4XK20
-000 0000
-000 0000
-uuu uuuu
SSPBUF
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
0000 0000
uuuu uuuu
SSPADD
PIC18F2XK20
PIC18F4XK20
0000 0000
SSPSTAT
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
SSPCON1
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
SSPCON2
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
記号の説明 :
注 1:
2:
3:
4:
5:
6:
u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。
網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。
INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ
(0008h または 0018h) がロードされます。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は
現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。
各条件下でのリセット値は、表 4-3 を参照してください。
選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ
ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。
CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。
DS41303E_JP - ページ 58
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 4-4:
全レジスタの初期化状態 ( 続き )
Register
ADRESH
Applicable Devices
Power-on Reset,
Brown-out Reset
MCLR Resets,
WDT Reset,
RESET Instruction,
Stack Resets
Wake-up via WDT
or Interrupt
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
PIC18F2XK20
PIC18F4XK20
--00 0000
--00 0000
--uu uuuu
ADCON1
PIC18F2XK20
PIC18F4XK20
--00 0qqq
--00 0qqq
--uu uuuu
ADCON2
PIC18F2XK20
PIC18F4XK20
0-00 0000
0-00 0000
u-uu uuuu
uuuu uuuu
uuuu uuuu
ADRESL
ADCON0
PIC18F2XK20
CCPR1H
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
CCPR1L
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
CCP1CON
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
CCPR2H
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
CCPR2L
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
CCP2CON
PIC18F2XK20
PIC18F4XK20
--00 0000
--00 0000
--uu uuuu
PSTRCON
PIC18F2XK20
PIC18F4XK20
---0 0001
---0 0001
---u uuuu
BAUDCON
PIC18F2XK20
PIC18F4XK20
0100 0-00
0100 0-00
uuuu u-uu
0000 0000
uuuu uuuu
PWM1CON
PIC18F2XK20
PIC18F4XK20
0000 0000
ECCP1AS
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
CVRCON
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
CVRCON2
PIC18F2XK20
PIC18F4XK20
00-- ----
00-- ----
uu-- ----
uuuu uuuu
uuuu uuuu
TMR3H
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
TMR3L
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
T3CON
PIC18F2XK20
PIC18F4XK20
0000 0000
uuuu uuuu
uuuu uuuu
SPBRGH
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
0000 0000
uuuu uuuu
SPBRG
PIC18F2XK20
PIC18F4XK20
0000 0000
RCREG
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
TXREG
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
TXSTA
PIC18F2XK20
PIC18F4XK20
0000 0010
0000 0010
uuuu uuuu
0000 000x
uuuu uuuu
RCSTA
PIC18F2XK20
PIC18F4XK20
0000 000x
EEADR
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
EEADRH
PIC18F26K20
PIC18F46K20
---- --00
---- --00
---- --uu
EEDATA
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
0000 0000
0000 0000
uu-0 u000
uu-0 u000
EECON2
PIC18F2XK20
PIC18F4XK20
0000 0000
EECON1
PIC18F2XK20
PIC18F4XK20
xx-0 x000
記号の説明 :
注 1:
2:
3:
4:
5:
6:
u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。
網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。
INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ
(0008h または 0018h) がロードされます。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は
現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。
各条件下でのリセット値は、表 4-3 を参照してください。
選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ
ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。
CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 59
PIC18F2XK20/4XK20
表 4-4:
全レジスタの初期化状態 ( 続き )
Register
IPR2
PIR2
PIE2
Applicable Devices
PIR1
PIE1
MCLR Resets,
WDT Reset,
RESET Instruction,
Stack Resets
Wake-up via WDT
or Interrupt
PIC18F4XK20
1111 1111
1111 1111
uuuu uuuu
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu(1)
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
PIC18F2XK20
PIC18F4XK20
1111 1111
1111 1111
uuuu uuuu
PIC18F2XK20
PIC18F4XK20
-111 1111
-111 1111
-uuu uuuu
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu(1)
PIC18F2XK20
PIC18F4XK20
-000 0000
-000 0000
-uuu uuuu(1)
PIC18F2XK20
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
PIC18F2XK20
PIC18F4XK20
-000 0000
-000 0000
-uuu uuuu
0000 0000
uuuu uuuu
PIC18F2XK20
IPR1
Power-on Reset,
Brown-out Reset
OSCTUNE
PIC18F2XK20
PIC18F4XK20
0000 0000
TRISE
PIC18F2XK20
PIC18F4XK20
---- -111
---- -111
---- -uuu
TRISD
PIC18F2XK20
PIC18F4XK20
1111 1111
1111 1111
uuuu uuuu
TRISC
PIC18F2XK20
PIC18F4XK20
1111 1111
1111 1111
uuuu uuuu
PIC18F4XK20
1111 1111
1111 1111
TRISB
TRISA
PIC18F2XK20
(5)
(5)
1111 1111
uuuu uuuu
(5)
uuuu uuuu(5)
PIC18F2XK20
PIC18F4XK20
1111 1111
LATE
PIC18F2XK20
PIC18F4XK20
---- -xxx
---- -uuu
LATD
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
uuuu uuuu
uuuu uuuu
LATC
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
LATB
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
LATA
(5)
PORTE
xxxx xxxx
---- -uuu
uuuu uuuu
(5)
uuuu uuuu
uuuu uuuu
(5)
uuuu uuuu(5)
PIC18F2XK20
PIC18F4XK20
PIC18F2XK20
PIC18F4XK20
---- x000
---- u000
---- uuuu
---- u---
---- u---
PIC18F2XK20
PIC18F4XK20
---- x---
PORTD
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
PORTC
PIC18F2XK20
PIC18F4XK20
xxxx xxxx
uuuu uuuu
uuuu uuuu
PORTB
PIC18F2XK20
PIC18F4XK20
xxx0 0000
uuu0 0000
uuuu uuuu
PIC18F2XK20
PIC18F4XK20
xx0x 0000(5)
uu0u 0000(5)
uuuu uuuu(5)
PIC18F2XK20
PIC18F4XK20
---1 1111
---1 1111
---u uuuu
ANSEL
PIC18F2XK20
PIC18F4XK20
1111 1111
1111 1111
uuuu uuuu
IOCB
PIC18F2XK20
PIC18F4XK20
0000 ----
0000 ----
uuuu ----
1111 1111
uuuu uuuu
0000 0000
uuuu uuuu
PORTA(5)
ANSELH
(6)
WPUB
PIC18F2XK20
PIC18F4XK20
1111 1111
CM1CON0
PIC18F2XK20
PIC18F4XK20
0000 0000
記号の説明 :
注 1:
2:
3:
4:
5:
6:
u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。
網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。
INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ
(0008h または 0018h) がロードされます。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は
現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。
各条件下でのリセット値は、表 4-3 を参照してください。
選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ
ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。
CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。
DS41303E_JP - ページ 60
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 4-4:
全レジスタの初期化状態 ( 続き )
Register
CM2CON0
CM2CON1
SLRCON
SSPMSK
Applicable Devices
Power-on Reset,
Brown-out Reset
MCLR Resets,
WDT Reset,
RESET Instruction,
Stack Resets
Wake-up via WDT
or Interrupt
PIC18F4XK20
0000 0000
0000 0000
uuuu uuuu
PIC18F2XK20
PIC18F4XK20
0000 ----
0000 ----
uuuu ----
PIC18F2XK20
PIC18F4XK20
---1 1111
---1 1111
---u uuuu
PIC18F2XK20
PIC18F4XK20
1111 1111
1111 1111
uuuu uuuu
PIC18F2XK20
記号の説明 :
注 1:
2:
3:
4:
5:
6:
u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。
網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。
INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ
(0008h または 0018h) がロードされます。
GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は
現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。
各条件下でのリセット値は、表 4-3 を参照してください。
選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ
ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。
CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 61
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 62
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
5.0
ます。物理的に実装されているメモリの上限と 2
MB の間のアドレスにアクセスすると、すべて「0」
(NOP 命令 ) が返されます。
メモリ構成
PIC18 拡張マイクロコントローラ デバイスは、次の
3 種類のメモリを搭載しています。
このファミリのデバイスが搭載しているメモリは
次のとおりです。
• プログラム メモリ
• データ RAM
• データ EEPROM
• PIC18F23K20, PIC18F43K20: 8 KB のフラッシュ
メモリ、最大 4,096 のシングルワード命令を格納
可能
• PIC18F24K20, PIC18F44K20: 16 KB のフラッシュ
メモリ、最大 8,192 のシングルワード命令を格納
可能
• PIC18F25K20, PIC18F45K20: 32 KB のフラッシュ
メモリ、最大 16,384 のシングルワード命令を格
納可能
• PIC18F26K20, PIC18F46K20: 64 KB のフラッシュ
メモリ、最大 37,768 のシングルワード命令を格
納可能
ハ ー バ ー ド ア ー キ テ ク チ ャ の デ バ イ ス と し て、
PIC18 はデータとプログラムのメモリにそれぞれ独
立したバスを用います。これにより、2 つのメモリ
空間に同時にアクセスできます。データ EEPROM
は一連の制御レジスタによってアドレスを指定し
アクセスできることから、実用上、周辺デバイスと
見なすことができます。
フラッシュ プログラム メモリの動作に関する詳細
は、6.0 項「フラッシュ プログラム メモリ」で説明
します。また、データ EEPROM は、別途 7.0 項
「データ EEPROM メモリ」で検討しています。
5.1
PIC18 デバイスには 2 つの割り込みベクタがありま
す。リセット ベクタのアドレスは 0000h、割り込み
ベクタのアドレスは 0008h または 0018h です。
プログラム メモリの構成
PIC18F2XK20/4XK20 デバイスのプログラム メモリ
マップを図 5-1 に示します。メモリ ブロックの詳細
は図 23-2 を参照してください。
PIC18 マイクロコントローラには、21 ビットのプロ
グラム カウンタが実装されているため、2 MB のプ
ログラム メモリ空間に対してアドレスを指定でき
図 5-1:
PIC18F2XK20/4XK20 デバイスのプログラム メモリ マップとスタック
PC<20:0>
21
CALL,RCALL,RETURN
RETFIE,RETLW
Stack Level 1



Stack Level 31
2000h
0000h
High Priority Interrupt Vector
0008h
Low Priority Interrupt Vector
0018h
On-Chip
Program Memory
3FFFh
4000h
PIC18F23K20/
43K20
PIC18F24K20/
44K20
On-Chip
Program Memory
User Memory Space
On-Chip
Program Memory
1FFFh
Reset Vector
On-Chip
Program Memory
7FFFh
8000h
PIC18F25K20/
45K20
Read ‘0’
Read ‘0’
Read ‘0’
FFFFh
10000h
PIC18F26K20/
46K20
Read ‘0’
 2009 Microchip Technology Inc.
Preliminary
1FFFFFh
200000h
DS41303E_JP - ページ 63
PIC18F2XK20/4XK20
5.1.1
プログラム カウンタ
プログラム カウンタ (PC) は実行のためにフェッチ
する命令のアドレスを指定します。PC は 21 ビット
幅で、3 つの独立した 8 ビット レジスタに格納され
ています。PCL レジスタと呼ばれる下位のバイト
は、読み出しと書き込みの両方可能です。上位バイ
トの PCH レジスタには PC<15:8> ビットが格納さ
れ、これらは直接読み出したり書き込んだりするこ
とができません。PCH レジスタは PCLATH レジス
タを介して更新します。最上位バイトは PCU と呼
ばれます。このレジスタには PC<20:16> ビットが格
納され、これらも直接読み出し / 書き込みができま
せん。PCU レジスタは PCLATU レジスタを介して
更新します。
PCL に書き込む動作では、いずれも PCLATH およ
び PCLATU の内容がプログラム カウンタに転送さ
れます。同様に、PCL から読み出す動作では、プロ
グラム カウンタの上位 2 バイトが PCLATH および
PCLATU に転送されます。この動作は PC を計算値
によってオフセットさせる場合に役に立ちます
(5.1.4.1 項「計算型 GOTO」参照 )。
PC はバイト単位でプログラム メモリのアドレスを
指定します。ワード単位で表される命令との不整合
が生ずるのを防ぐために、PCLの最下位ビット(LSb)
の値は「0」に固定されています。したがって、プ
ログラム メモリ内で連続する命令のアドレスを指
定する場合、PC は 2 ずつインクリメントされます。
CALL、RCALL、GOTO、およびプログラム分岐命令
では、プログラム カウンタに直接書き込みます。こ
れらの命令の場合、PCLATH および PCLATU の内
容はプログラム カウンタに転送されません。
5.1.2
リターン アドレス スタック
リターン アドレス スタックは、最大 31 通りのプロ
グラム コールおよび割り込みの組み合わせに対応
できます。CALL または RCALL 命令が実行される
か、割り込みが受信されると PC がスタックにプッ
シュされます。RETURN、RETLW、RETFIE 命令が
実行されると、PC の値がスタックからポップされ
ます。PCLATU および PCLATH は、RETURN または
CALL 命令いずれの影響も受けません。
図 5-2:
スタックは 31 ワード x 21 ビットの RAM および 5
ビットのスタック ポインタ STKPTR によって動作
します。スタック空間は、プログラム空間にもデー
タ空間にも含まれません。スタック ポインタは読
み出し / 書き込み可能です。スタック最上位のアド
レスも、スタック最上位 (TOS) 特殊ファイル レジ
スタによって読み出し、書き込みができます。この
レジスタを用いて、データをスタックにプッシュ /
ポップすることも可能です。
CALL タイプの命令ではスタックへのプッシュが実
行されます。まず、スタック ポインタがインクリ
メントされ、その指す位置に PC の内容 ( 既に CALL
の次の命令を指しています ) が書き込まれます。
RETURN タイプの命令ではスタックからのポップが
実行されます。STKPTR が指す位置の内容が PC に
転送された後、スタック ポインタがデクリメント
されます。
スタック ポインタはすべてのリセット動作後に
00000 に初期化されます。スタック ポインタの値
00000 に相当する位置は RAM 上には存在しませ
ん。これは単なるリセット値です。スタックのフル
状態、オーバーフロー、アンダーフローの発生はス
テータス ビットによって示されます。
5.1.2.1
スタック最上位へのアクセス
リターン アドレス スタックは、
その最上位 (TOS) だ
けを読み出し、書き込むことができます。STKPTR
レジスタが指すスタック位置の内容は、3 つのレジ
スタ TOSU:TOSH:TOSL に格納されます ( 図 5-2)。必
要ならばこれらを用いてユーザーによるソフト
ウェア スタックの実装が可能になります。CALL、
RCALL、または割り込み後に、ソフトウェアによっ
て TOSU:TOSH:TOSL レジスタを読み出せば、プッ
シュされた値がわかるので、これをユーザーが定義
したソフトウェア スタックに格納します。そして、
呼び出し元に戻るときは、ソフトウェアによってこ
れらの値を TOSU:TOSH:TOSL に戻してからリター
ンします。
スタックにアクセスしている間は、誤ってスタック
を破壊しないように、グローバル割り込みのイネー
ブル ビットを無効にしておく必要があります。
リターン アドレス スタックと関連するレジスタ
Return Address Stack <20:0>
11111
11110
11101
Top-of-Stack Registers
TOSU
00h
TOSH
1Ah
STKPTR<4:0>
00010
TOSL
34h
Top-of-Stack
DS41303E_JP - ページ 64
Stack Pointer
001A34h
000D58h
Preliminary
00011
00010
00001
00000
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
5.1.2.2
リターン スタック ポインタ
(STKPTR)
STKPTR レジスタ ( レジスタ 5-1) には、スタック ポ
インタの値、STKFUL ( スタック フル ) ステータス
ビット、
STKUNF ( スタック アンダーフロー) ステー
タス ビットがあります。スタック ポインタが取り
得る値の範囲は 0 ~ 31 です。スタック ポインタは
値がスタックにプッシュされる前にインクリメン
トされ、値がスタックからポップされた後にデクリ
メントされます。リセットが発生すると、スタック
ポインタの値は 0 になります。スタック ポインタ
の値はユーザーによる読み出し / 書き込みが可能で
す。この機能は、リアルタイム オペレーティング
システム (RTOS) のリターン スタック保守に使用で
きます。
PC が 31 回スタックにプッシュされると ( スタック
から一度もポップしていない場合 )、STKFUL ビッ
トがセットされます。STKFUL ビットはソフトウェ
アまたは POR によってクリアされます。
スタックがフルになったときの動作は、構成ビット
STVREN ( スタック オーバーフロー リセット イ
ネーブル ) の状態によって決まります。( デバイス
の構成ビットの説明は、23.1 項「構成ビット」を参
照してください。) STVREN がセットされている場
合 ( デフォルト )、31 回目のプッシュでは (PC+2) の
値がスタックに格納され、STKFUL ビットをセット
してからデバイスがリセットされます。STKFUL
ビットがセットされたまま、スタック ポインタが 0
に初期化されます。
STVREN がクリアされている場合は、31 回目のプッ
シュで STKFUL ビットがセットされ、スタック ポ
インタは 31 にインクリメントされます。それ以上
プッシュしても、31 回目にプッシュされた値は上
書きされず、STKPTR も 31 を維持します。
レジスタ 5-1:
R/C-0
STKFUL(1)
bit 7
スタックが完全に空になるまでポップされると、そ
の次のポップでは PC に 0 が返され、スタック ポイ
ンタは 0 のまま STKUNF ビットがセットされます。
STKUNFビットはソフトウェアまたはPORの発生に
よってクリアされるまで、セットされたままです。
注:
アンダーフロー時に PC に 0 を返す動作は、
プログラムにリセット ベクタを渡すこと
と同じ効果があります。このベクタによ
り、スタックの状態を検証して適切な対策
を講ずる動作を実行できます。これは、
SFR の内容が変化しない点で通常のリ
セットとは異なります。
5.1.2.3
PUSH および POP 命令
スタック最上位が読み出し / 書き込み可能であるこ
とから、通常のプログラム実行を妨げずにスタック
に対して値をプッシュ / ポップできるのは便利な機
能です。PIC18 の命令セットには、ソフトウェア制
御による TOS の操作を可能とする 2 つの命令、PUSH
と POP があります。データまたはリターン アドレ
スをスタックに格納するには、TOSU、TOSH、TOSL
を変更します。
PUSH 命令は現在の PC の値をスタックに格納しま
す。スタック ポインタがインクリメントされ、現
在の PC の値がスタックに格納されます。
POP 命令は、スタック ポインタをデクリメントす
ることで現在の TOS を破棄します。そして前回の
値がスタック最上位に押し上げられ、TOS の値に
なります。
STKPTR: スタック ポインタ レジスタ
R/C-0
STKUNF(1)
U-0
—
R/W-0
SP4
R/W-0
SP3
R/W-0
SP2
R/W-0
SP1
R/W-0
SP0
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
ビット 7
ビット 6
ビット 5
ビット 4-0
注 1:
W = 書き込み可
「1」= セット
U = 未実装
「0」= クリア
C = クリアのみ可
x = 不明
STKFUL: スタック フル フラグ ビット (1)
1 = スタックがフルまたはオーバーフロー
0 = スタックはフルではなく、オーバーフローもしていない
STKUNF: スタック アンダーフロー フラグ ビット (1)
1 = スタック アンダーフローが発生
0 = スタック アンダーフローは発生していない
未実装 :「0」として読み出し
SP<4:0>: スタック ポインタ位置ビット
ビット 7 およびビット 6 はユーザー ソフトウェアまたは POR によってクリアされます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 65
PIC18F2XK20/4XK20
5.1.2.4
スタック フルおよびアンダーフロー
リセット
スタックのオーバーフローおよびアンダーフロー
が発生した場合にデバイスをリセットする機能は、
構成レジスタ 4L の STVREN ビットをセットすると
有効になります。
STVRENがセットされている場合、
スタック フルまたはアンダーフローが発生すると、
STKFUL または STKUNF の該当するビットをセット
してからデバイスがリセットされます。STVREN が
クリアされている場合は、同様に STKFUL または
STKUNF の該当するビットがセットされますが、デ
バイスはリセットされません。STKFUL および
STKUNF ビットは、ユーザー ソフトウェアまたはパ
ワーオン リセットによってクリアされます。
5.1.3
高速レジスタ スタック
STATUS レジスタ、W レジスタ (WREG)、BSR レジ
スタには、割り込みの「高速リターン」オプション
を可能とする高速レジスタ スタックがあります。各
レジスタに備えられたこのスタックは 1 レベルの深
さしかなく、読み出し / 書き込みのいずれも不可で
す。プロセッサが割り込みベクタによる処理を実行
する場合に、対応するレジスタの現在の値を格納し
ます。どの割り込みソースでも、値はスタック レ
ジスタにプッシュされます。その後、RET、FIE、
FAST 命令によって割り込みからリターンするとき
に、これらのスタック レジスタ内の値が対応する
レジスタに戻されます。
優先度の低い割り込みと高い割り込みの両方が有
効な場合に、優先度の低い割り込みからのリターン
にスタック レジスタを使用すると信頼性を確保で
きません。低優先度の割り込みの処理中に、高優先
度の割り込みが発生すると、低優先度の割り込みが
スタック レジスタに保存した値が上書きされてし
まいます。したがって、このような場合には、低優
先度割り込みの処理中に、ユーザーがソフトウェア
によって重要なレジスタを保存しておく必要があ
ります。
割り込みの優先度を使用しない場合は、すべての割
り込みのリターンに高速レジスタ スタックを使用で
きます。また、割り込み動作自体を使用しない場合
は、サブルーチン コールの最後に STATUS、WREG、
BSR の各レジスタをリストアするのに、高速レジス
タ スタックを使用できます。高速レジスタ スタック
を サ ブ ル ー チ ン コ ー ル に 使 用 す る に は、CALL
label, FAST 命令を実行して、STATUS、WREG、
BSR の各レジスタ値を高速レジスタ スタックに保存
する必要があります。その後、RETURN, FAST 命令
を実行して、高速レジスタ スタックからこれらのレ
ジスタに値をリストアします。
例 5-1 に、サブルーチンのコールおよびリターンに
高速レジスタ スタックを使用したソース コードの
例を示します。
DS41303E_JP - ページ 66
例 5-1:
高速レジスタ スタックのコード例
CALL SUB1, FAST
;STATUS, WREG, BSR
;SAVED IN FAST REGISTER
;STACK




RETURN, FAST
SUB1
5.1.4
;RESTORE VALUES SAVED
;IN FAST REGISTER STACK
プログラム メモリ内のルックアップ
テーブル
プログラミングにおいて、プログラム メモリ内に
データ構造あるいはルックアップ テーブルを作成
する必要が生ずる場合があります PIC18 デバイス
では、次の 2 つの方法でルックアップ テーブルを
実装できます。
• 計算型 GOTO
• テーブル読み出し
5.1.4.1
計算型 GOTO
計算型 GOTO は、プログラム カウンタにオフセット
値を加算することで実現します。例を例 5-2 に示し
ます。
ルックアップ テーブルは、ADDWF PCL 命令および
一連の RETLW nn 命令によって作成します。テーブ
ルを呼び出す前に、テーブル内でのオフセット値を
W レジスタにロードします。呼び出されるルーチン
の最初の命令は ADDWF PCL です。次に実行される
命令は、一連の RETLW nn 命令の中の 1 つです。
この命令は呼び出し側の関数に値 nn を返します。
W レジスタ (WREG) 内のオフセット値は、プログ
ラム カウンタをどれだけ進めるかのバイト数で、2
の倍数を指定します (LSb = 0)。
この方法では、各命令の位置に 1 バイトのデータし
か保存できず、更にリターン アドレス スタック上
の空きも必要になります。
例 5-2:
ORG
TABLE
5.1.4.2
オフセット値を用いた計算型 GOTO
MOVF
CALL
nn00h
ADDWF
RETLW
RETLW
RETLW
.
.
.
OFFSET, W
TABLE
PCL
nnh
nnh
nnh
テーブル読み出しおよびテーブル
書き込み
プログラム メモリへのデータ保存により適したこ
の方法では、各命令の位置に 2 バイトのデータを保
存できます。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
5.2.2
テーブル読み出し / 書き込みを使用すると、プログ
ラム ワードあたり 2 バイトのルックアップ テーブ
ル デ ー タ を 保 存 で き ま す。テ ー ブ ル ポ イ ン タ
(TBLPTR) レジスタによってバイト アドレスを指定
し、テーブル ラッチ (TABLAT) レジスタにプログラ
ム メモリに対する読み出し / 書き込みデータを格納
します。プログラム メモリとの間のデータ転送は 1
度に 1 バイトずつです。
1「命令サイクル」は 4 つの Q サイクル Q1 ~ Q4 で
構成されます。命令のフェッチと実行はパイプライ
ン処理されます。フェッチには 1 命令サイクルが必
要であり、デコードおよび実行には更に 1 命令サイ
クルが必要です。しかし、パイプライン処理によ
り、各命令は実質的に 1 サイクルで実行されます。
命令によりプログラム カウンタが変化する場合
(GOTO など )、その命令を完了するには 2 サイクル
が必要になります ( 例 5-3)。
テーブル読み出しおよびテーブル書き込みの動作
は、6.1 項「テーブル読み出しおよびテーブル書き
込み」で詳細に説明します。
5.2
フェッチ サイクルは、Q1 でプログラム カウンタ
(PC) がインクリメントされた時点で開始されます。
PIC18 命令サイクル
5.2.1
実行サイクルでは、フェッチされた命令がサイクル
Q1 で命令レジスタ (IR) にラッチされます。次に、
この命令は Q2、Q3、Q4 のサイクル中にデコードさ
れ実行されます。データ メモリは Q2 サイクル中に
読み出され ( オペランドの読み出し )、Q4 サイクル
中に書き込まれます ( 結果格納先への書き込み )。
クロック方式
マイクロコントローラへのクロック入力は、内部、
外部のソースを問わず、チップ内で 4 分周され、
オーバーラップのない 4 つの矩形波クロック (Q1、
Q2、Q3、Q4) が生成されます。内部では、プログ
ラム カウンタ (PC) が Q1 ごとにインクリメントし
て命令がプログラム メモリからフェッチされ、Q4
で命令レジスタ (IR) にラッチされます。命令は次の
Q1 から Q4 までの間にデコードされ、実行されま
す。図 5-3 にクロックと命令実行フローを示します。
図 5-3:
命令フロー / パイプライン
クロック / 命令サイクル
Q1
Q2
Q3
Q4
Q1
Q2
Q3
Q4
Q1
Q2
Q3
Q4
OSC1
Q1
Q2
Internal
Phase
Clock
Q3
Q4
PC
PC
PC + 2
PC + 4
OSC2/CLKOUT
(RC mode)
Execute INST (PC – 2)
Fetch INST (PC)
例 5-3:
TCY0
TCY1
Fetch 1
Execute 1
2. MOVWF PORTB
4. BSF
Execute INST (PC + 2)
Fetch INST (PC + 4)
命令パイプライン フロー
1. MOVLW 55h
3. BRA
Execute INST (PC)
Fetch INST (PC + 2)
SUB_1
Fetch 2
TCY2
TCY3
TCY4
TCY5
Execute 2
Fetch 3
Execute 3
Fetch 4
PORTA, BIT3 (Forced NOP)
Flush (NOP)
Fetch SUB_1 Execute SUB_1
5. Instruction @ address SUB_1
プログラム分岐以外のすべての命令は 1 サイクルです。プログラム分岐では、新しい命令がフェッチされて実行
される間にフェッチ命令がパイプラインから「消去」されるため、2 サイクルかかります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 67
PIC18F2XK20/4XK20
5.2.3
プログラム メモリ内の命令
プログラム メモリのアドレスはバイト単位で指定
します。命令は、2 バイトまたは 4 バイト単位でプ
ログラム メモリに保存されます。命令ワードの最
下位バイトは常にプログラム メモリ内の偶数アド
レスに保存されます (LSb = 0) 命令の区切りがずれ
ないように、PC は 2 ずつインクリメントされ、LSb
には常に「0」が読み出されます (5.1.1 項「プログ
ラム カウンタ」参照 )。
図 5-4 に、プログラム メモリに保存された命令ワー
ドの例を示します。
図 5-4:
CALL および GOTO 命令には、命令自体にプログラ
ム メモリの絶対アドレスが埋め込まれます。命令は
常にワード境界に沿って保存されるため、命令に含
まれるデータはワード アドレスです。ワード アド
レスは PC<20:1> に書き込まれ、これによってプロ
グラム メモリ内の目的のバイト アドレスにアクセ
スします。図 5-4 の Instruction #2 は、GOTO 0006h
という命令をプログラム メモリにエンコードする
方法を示しています。相対アドレス オフセットをエ
ンコードするプログラム分岐命令の動作も同様で
す。ブランチ命令に埋め込まれたオフセット値は、
PC にオフセットとして加算するシングル ワード命
令の数を表しています。命令セットの詳細は、24.0
項「命令セットの概要」に記載されています。
プログラム メモリ内の命令
LSB = 1
LSB = 0
0Fh
EFh
F0h
C1h
F4h
55h
03h
00h
23h
56h
Program Memory
Byte Locations 
5.2.4
Instruction 1:
Instruction 2:
MOVLW
GOTO
055h
0006h
Instruction 3:
MOVFF
123h, 456h
2 ワード命令
標準の PIC18 命令セットには、CALL、MOVFF、GOTO、
LSFR の 4 つの 2 ワード命令があります。いずれの
場合も命令の 2 番目のワードは最上位 4 ビットが常
に「1111」となり、残りの 12 ビットがリテラル デー
タ、通常はデータ メモリのアドレスになります。
命令の最上位 4 ビットに設定された「1111」は、特
殊な NOP 命令となります。命令が適切なシーケン
スで、つまり 1 番目のワードの実行直後に実行され
た場合、
2 番目のワード内のデータがアクセスされ、
例 5-4:
Word Address

000000h
000002h
000004h
000006h
000008h
00000Ah
00000Ch
00000Eh
000010h
000012h
000014h
命令シーケンスによって使用されます。しかし、何
らかの理由で 1 番目のワードが飛ばされ、2 番目の
ワードだけが実行されると、その命令は NOP にな
ります。このような動作は、2 ワード命令の前に PC
の値を変える条件命令がある場合に必要になりま
す。例 5-4 に、その動作を示します。
注:
拡張命令セット内の 2 ワード命令は、5.6
項「PIC18 命令の実行と拡張命令セット」
を参照してください。
2 ワード命令
CASE 1:
Object Code
0110 0110 0000
1100 0001 0010
1111 0100 0101
0010 0100 0000
0000
0011
0110
0000
Source Code
TSTFSZ
REG1
; is RAM location 0?
MOVFF
REG1, REG2 ; No, skip this word
; Execute this word as a NOP
ADDWF
REG3
; continue code
0000
0011
0110
0000
Source Code
TSTFSZ
REG1
; is RAM location 0?
MOVFF
REG1, REG2 ; Yes, execute this word
; 2nd word of instruction
ADDWF
REG3
; continue code
CASE 2:
Object Code
0110 0110 0000
1100 0001 0010
1111 0100 0101
0010 0100 0000
DS41303E_JP - ページ 68
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
5.3
注:
データ メモリの構成
5.3.1
PIC18 拡張命令セットを使用した場合、
データ メモリの動作の一部が変わりま
す。詳細は、5.5 項「データ メモリと拡張
命令セット」を参照してください。
データ メモリの領域は広いため、すべてのアドレ
スに高速にアクセスするには、効率的なアドレス指
定方式が必要です。読み出しおよび書き込み時に、
すべてのアドレスを指定する必要がないのが理想
と言えます。PIC18 デバイスでは、RAM のバンク
方式によってこれを実現しています。バンク方式で
は、メモリ空間を各 256 バイトの、連続する 16 バ
ンクに分割します。命令に応じて、メモリ内の各位
置は 12 ビットのフル アドレスか、8 ビットの下位
アドレスと 4 ビットのバンク ポインタによって指
定できます。
PIC18 デバイスのデータ メモリは SRAM として実
装されています。データ メモリ内の各レジスタは
12 ビットのアドレスを持つため、最大 4096 バイト
のデータ メモリを使用できます。メモリ空間は、各
256 バイトの 16 バンクに分割されています。図 5-5
~図 5-7 は、PIC18F2XK20/4XK20 デバイスのデー
タ メモリ構成です。
データ メモリには、特殊機能レジスタ (SFR) と汎用
レジスタ (GPR) があります。SFR はコントローラお
よび周辺機能の制御および状態監視に使用し、GPR
はユーザー アプリケーションによるデータ保存や
スクラッチパッド動作に使用します。実装されてい
ないアドレスは、常に「0」と読み出されます。
命令セットおよびアーキテクチャは、すべてのバン
クにわたる動作に対応しています。データ メモリ
全体に対して直接、間接、インデックス付きのアド
レス指定モードでアクセスできます。アドレス指定
モードは、この項の後半で説明します。
頻繁に使用されるレジスタ (SFR および GPR の一部 )
には単一サイクルでアクセスできるように、PIC18
デバイスにはアクセス バンクが実装されています。
これは 256 バイトのメモリ空間で、SFR および GPR
バンク 0 の下位部分に、バンク選択レジスタ (BSR)
を使用せずに、高速にアクセスできます。5.3.2 項
「アクセス バンク」に、アクセス RAM に関する詳
細な説明があります。
バンク選択レジスタ (BSR)
PIC18 命令セットのほとんどの命令は、バンク選択
レジスタ (BSR) と呼ばれるバンク ポインタを使用
しています。この SFR にはアドレスの上位 4 ビッ
トが格納され、下位 8 ビットは命令自体に含まれま
す。BSR は下位 4 ビット (BSR<3:0>) だけが実装さ
れています。上位 4 ビットは未使用で、常に「0」
と読み出され、書き込むことはできません。BSR は
MOVLB 命令によって直接ロードできます。
BSR の値はデータ メモリのバンクを表します。命
令内の 8 ビットはバンク内の位置を表すので、この
値はバンク下限からのオフセットと見なすことが
できます。BSR の値とデータ メモリのバンク分割
の関係を図 5-5 ~図 5-7 に示します。
最大 16 個のレジスタに同じ下位アドレスがあるた
め、ユーザーは、データの読み出しまたは書き込み
を実行する前に十分注意して、適切なバンクが選択
されていることを確認する必要があります。例え
ば、8 ビット アドレス F9h にプログラム データを
書き込むときに、BSR に 0Fh が指定されているとプ
ログラム カウンタがリセットされてしまいます。
バンクは任意に選択できますが、読み出し / 書き込
みを実行できるのは、実際に実装されているバンク
に対してのみです。未実装のバンクに対する書き込
みは無視されます。一方、未実装のバンクからの読
み出しでは常に「0」が返されます。その場合も、
STATUS レジスタの値は、あたかも動作が正常終了
したように変化します。図 5-5 ~図 5-7 のデータ メ
モリ マップには、実装されているバンクを示して
あります。
PIC18 のコア命令セットでは、MOVFF 命令だけが、
読み出し元 / 書き込み先のフル アドレス 12 ビット
を指定します。この命令の実行時には BSR は完全
に無視されます。その他の命令は、すべてオペラン
ドとして下位アドレスしか含んでいないため、目標
とするレジスタの位置を指定するには BSR または
アクセス バンクのいずれかを使用する必要があり
ます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 69
PIC18F2XK20/4XK20
図 5-5:
PIC18F23K20/43K20 デバイスのデータ メモリ マップ
BSR<3:0>
= 0000
= 0001
= 0010
= 0011
= 0100
= 0101
= 0110
= 0111
= 1000
= 1001
= 1010
= 1011
= 1100
= 1101
= 1110
= 1111
DS41303E_JP - ページ 70
「a」= 0 のとき :
Data Memory Map
00h
Access RAM
FFh
00h
GPR
Bank 0
GPR
Bank 1
Bank 2
Bank 3
Bank 4
Bank 5
Bank 6
Bank 7
Bank 8
Bank 9
000h
05Fh
060h
0FFh
100h
FFh
00h
1FFh
200h
FFh
00h
2FFh
300h
FFh
00h
3FFh
400h
FFh
00h
4FFh
500h
FFh
00h
5FFh
600h
FFh
00h
6FFh
700h
7FFh
800h
FFh
00h
FFh
00h
Unused
Read 00h
9FFh
A00h
FFh
00h
AFFh
B00h
FFh
00h
BFFh
C00h
FFh
Bank 13 00h
CFFh
D00h
FFh
00h
DFFh
E00h
Bank 11
Bank 12
Bank 14
FFh
00h
Unused
FFh
SFR
Bank 15
先頭 96 バイトは 汎用 RAM
です ( バンク 0)。
次の160バイトは特殊機能レ
ジスタ ( バンク 15) です。
「a」= 1 のとき :
BSR は命令によって使用さ
れるバンクを指定します。
Access Bank
Access RAM Low
00h
5Fh
Access RAM High 60h
(SFRs)
FFh
8FFh
900h
FFh
00h
Bank 10
BSR は無視され、アクセス
バンクが使用されます。
EFFh
F00h
F5Fh
F60h
FFFh
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 5-6:
PIC18F24K20/44K20 デバイスのデータ メモリ マップ
BSR<3:0>
= 0000
= 0001
= 0010
= 0011
= 0100
= 0101
= 0110
= 0111
= 1000
= 1001
= 1010
= 1011
= 1100
= 1101
= 1110
= 1111
「a」= 0 のとき :
Data Memory Map
00h
Access RAM
FFh
00h
GPR
Bank 0
GPR
Bank 1
Bank 2
Bank 3
Bank 4
Bank 5
Bank 6
Bank 7
Bank 8
Bank 9
000h
05Fh
060h
0FFh
100h
1FFh
200h
FFh
00h
GPR
FFh
00h
2FFh
300h
FFh
00h
3FFh
400h
FFh
00h
4FFh
500h
FFh
00h
5FFh
600h
FFh
00h
6FFh
700h
7FFh
800h
FFh
00h
FFh
00h
Unused
Read 00h
9FFh
A00h
FFh
00h
AFFh
B00h
FFh
00h
BFFh
C00h
FFh
Bank 13 00h
CFFh
D00h
FFh
00h
DFFh
E00h
Bank 11
Bank 12
Bank 14
FFh
00h
Unused
FFh
SFR
Bank 15
 2009 Microchip Technology Inc.
先頭 96 バイトは 汎用 RAM
です ( バンク 0)。
次の160バイトは特殊機能レ
ジスタ ( バンク 15) です。
「a」= 1 のとき :
BSR は命令によって使用さ
れるバンクを指定します。
Access Bank
Access RAM Low
00h
5Fh
Access RAM High 60h
(SFRs)
FFh
8FFh
900h
FFh
00h
Bank 10
BSR は無視され、アクセス
バンクが使用されます。
EFFh
F00h
F5Fh
F60h
FFFh
Preliminary
DS41303E_JP - ページ 71
PIC18F2XK20/4XK20
図 5-7:
PIC18F25K20/45K20 デバイスのデータ メモリ マップ
BSR<3:0>
= 0000
= 0001
= 0010
= 0011
= 0100
= 0101
= 0110
= 0111
= 1000
= 1001
= 1010
= 1011
= 1100
= 1101
= 1110
= 1111
DS41303E_JP - ページ 72
「a」= 0 のとき :
Data Memory Map
00h
Access RAM
FFh
00h
GPR
Bank 0
GPR
Bank 1
Bank 2
Bank 3
Bank 4
Bank 5
Bank 6
Bank 7
Bank 8
Bank 9
Bank 10
000h
05Fh
060h
0FFh
100h
1FFh
200h
FFh
00h
GPR
FFh
00h
2FFh
300h
「a」= 1 のとき :
BSR は命令によって使用さ
れるバンクを指定します。
GPR
4FFh
500h
FFh
00h
GPR
FFh
00h
5FFh
600h
FFh
00h
6FFh
700h
FFh
00h
7FFh
800h
FFh
00h
8FFh
900h
FFh
00h
Unused
Read 00h
BFFh
C00h
FFh
Bank 13 00h
CFFh
D00h
FFh
00h
DFFh
E00h
FFh
00h
Unused
FFh
SFR
Bank 15
Access Bank
Access RAM Low
00h
5Fh
Access RAM High 60h
(SFRs)
FFh
9FFh
A00h
FFh
00h
Bank 14
次の160バイトは特殊機能レ
ジスタ ( バンク 15) です。
3FFh
400h
AFFh
B00h
Bank 12
先頭 96 バイトは 汎用 RAM
です ( バンク 0)。
GPR
FFh
00h
FFh
00h
Bank 11
BSR は無視され、アクセス
バンクが使用されます。
EFFh
F00h
F5Fh
F60h
FFFh
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 5-8:
PIC18F26K20/46K20 デバイスのデータ メモリ マップ
BSR<3:0>
= 0000
= 0001
= 0010
= 0011
= 0100
= 0101
= 0110
= 0111
= 1000
= 1001
= 1010
= 1011
= 1100
= 1101
= 1110
= 1111
「a」= 0 のとき :
Data Memory Map
00h
Access RAM
FFh
00h
GPR
Bank 0
GPR
Bank 1
Bank 2
Bank 3
Bank 4
Bank 5
Bank 6
Bank 7
Bank 8
Bank 9
Bank 10
Bank 11
Bank 12
GPR
FFh
00h
2FFh
300h
BSR は無視され、アクセス
バンクが使用されます。
先頭 96 バイトは 汎用 RAM
です ( バンク 0)。
次の160バイトは特殊機能レ
ジスタ ( バンク 15) です。
「a」= 1 のとき :
BSR は命令によって使用さ
れるバンクを指定します。
GPR
3FFh
400h
FFh
00h
GPR
4FFh
500h
FFh
00h
GPR
5FFh
600h
FFh
00h
GPR
FFh
00h
6FFh
700h
GPR
7FFh
800h
FFh
00h
GPR
FFh
00h
Access Bank
Access RAM Low
00h
5Fh
Access RAM High 60h
(SFRs)
FFh
8FFh
900h
GPR
9FFh
A00h
FFh
00h
GPR
FFh
00h
FFh
00h
FFh
00h
AFFh
B00h
GPR
BFFh
C00h
GPR
CFFh
D00h
GPR
DFFh
E00h
GPR
FFh
00h
GPR
FFh
SFR
Bank 15
 2009 Microchip Technology Inc.
1FFh
200h
FFh
00h
FFh
Bank 13 00h
Bank 14
000h
05Fh
060h
0FFh
100h
EFFh
F00h
F5Fh
F60h
FFFh
Preliminary
DS41303E_JP - ページ 73
PIC18F2XK20/4XK20
図 5-9:
バンク選択レジスタの使用方法 ( 直接アドレス指定 )
BSR(1)
7
0
0
0
0
Bank Select(2)
0
0
0
1
1
000h
Data Memory
Bank 0
100h
Bank 1
200h
300h
Bank 2
00h
FFh
00h
From Opcode(2)
7
1
1
1
1
1
1
0
1
1
FFh
00h
FFh
00h
Bank 3
through
Bank 13
E00h
Bank 14
F00h
FFFh
注 1:
2:
Bank 15
FFh
00h
FFh
00h
FFh
命令のアクセス RAM ビットを使って、選択されたバンク (BSR<3:0>) を、アクセス バンクのレジスタに
よって強制的にオーバーライドできます。
MOVFF 命令には、アドレスの 12 ビットがすべて埋め込まれています。
DS41303E_JP - ページ 74
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
5.3.2
5.3.3
アクセス バンク
BSR と命令に埋め込まれた 8 ビットのアドレスに
よって、データ メモリの全アドレス範囲を指定でき
ますが、同時にこれは、ユーザーが常に正しいバン
クが選ばれているかどうかを確認しなければなら
ないことを意味します。この確認を怠ると、誤った
位置に対して読み出し / 書き込みが実行されます。
動作の書き込み先が GPR であるにもかかわらず、
誤ってSFRに書き込んでしまった場合は重大な障害
を引き起こす可能性があります。しかし、データ メ
モリへの読み出しや書き込みを実行するたびに
BSR を変更または検証するのは、きわめて非効率的
です。
最も頻繁に使われるデータ メモリ位置へのアクセ
スを合理化するために、データ メモリの一部がア
クセス バンクとして構成されています。ユーザー
は、BSR を指定せずに、アクセス バンクに対応づ
けられたメモリ ブロックにアクセスできます。ア
クセス バンクはバンク 0 の先頭 96 バイト (00h ~
5Fh)、およびバンク 15 の末尾 160 バイト (60h ~
FFh) からなります。下位半分は「アクセス RAM」
と呼ばれ、GPR によって構成されます。上位半分は
デバイスの SFR に対応づけられる場所です。これ
ら 2 つの領域は、アクセス バンク内では連続的に
マッピングされ、8 ビットでリニアにアドレスを指
定できます ( 図 5-5 ~図 5-7)。
アクセス バンクは PIC18 コア命令セットのうちア
クセス RAM ビット ( 命令の「a」パラメータ ) を含
む命令が使用します。
「a」が「1」の場合、命令は
BSR とオペコードに埋め込まれた 8 ビットのアドレ
スによってデータ メモリのアドレスを指定します。
一方「a」が「0」の場合、命令はアクセス バンク
のアドレス マップを使用するように強制され、BSR
の現在の値は完全に無視されます。
汎用レジスタ ファイル
PIC18 デバイスには、GPR 領域にバンク分けされた
メモリが実装されているものがあります。これは、
すべての命令が使用できるデータ RAM です。GPR
はバンク 0 の下端 ( アドレス 000h) から始まり、上
位に向けて SFR 領域の下端まで続きます。GPR は
パワーオン リセットでは初期化されず、他のいず
れのリセットでも変化しません。
5.3.4
特殊機能レジスタ
特殊機能レジスタ (SFR) は、CPU と周辺モジュール
によって使用されるレジスタで、デバイスが必要と
するさまざまな動作を制御します。これらのレジス
タはスタティック RAM として実装されています。
SFR の領域はデータ メモリの最上位 (FFFh) から下
位へ向けて広がり、バンク 15 の上半分 (F60h ~
FFFh) を占有します。これらのレジスタの一覧を、
表 5-1 と表 5-2 に示します。
SFR は、デバイスの「コア」機能 (ALU、リセット、
割り込み ) に関連するものと、周辺機能に関連する
ものの 2 種類に分けられます。リセットおよび割り
込みレジスタは、それぞれ章を割いて説明していま
すが、ALU の STATUS レジスタは本項の後半で述
べます。周辺機能の動作に関連するレジスタは、各
周辺機能の章で説明します。
SFR は通常、これらのレジスタが制御する機能を受
け持つ周辺回路間に配分されます。SFR の未使用の
位置は未実装であり「0」と読み出されます。
この「強制的」なアドレス指定により、命令は最初
に BSR を更新する必要がなく、
単一サイクルでデー
タ アドレスに対する処理を実行できます。8 ビット
アドレスとして 60h 以上を指定すれば、ユーザーは
SFR をより効率的に評価および操作できます。ま
た、60h より下位のアクセス RAM は、直近の計算
結果や頻繁に使われるプログラム変数など、高速に
アクセスする必要があるデータ値を保存する場所
として最適です。更に、アクセス RAM を使用する
と、コンテキスト保存や変数を切り替える場合に、
より高速で効率のよいコードを作成できます。
拡張命令セットを有効にしている場合は ( 構成ビッ
ト XINST = 1)、アクセス バンクのマッピングが若
干変わります。これについては、5.5.3 項「インデッ
クス付きリテラル オフセット モードにおけるアク
セス バンクのマッピング」で詳細に説明します。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 75
PIC18F2XK20/4XK20
表 5-1:
PIC18F2XK20/4XK20 デバイスの特殊機能レジスタ マップ
Address
注 1:
2:
3:
4:
Name
Address
Name
Address
Name
Address
Name
FFFh
TOSU
FD7h
TMR0H
FAFh
SPBRG
F87h
—(2)
FFEh
TOSH
FD6h
TMR0L
FAEh
RCREG
F86h
—(2)
FFDh
TOSL
FD5h
T0CON
FADh
TXREG
F85h
—(2)
FFCh
STKPTR
FD4h
—(2)
FACh
TXSTA
F84h
PORTE
FFBh
PCLATU
FD3h
OSCCON
FABh
RCSTA
F83h
PORTD(3)
FFAh
PCLATH
FD2h
HLVDCON
FAAh
EEADRH(4)
F82h
PORTC
FF9h
PCL
FD1h
WDTCON
FA9h
EEADR
F81h
PORTB
FF8h
TBLPTRU
FD0h
RCON
FA8h
EEDATA
F80h
PORTA
FF7h
TBLPTRH
FCFh
TMR1H
FA7h
EECON2(1)
F7Fh
ANSELH
FF6h
TBLPTRL
FCEh
TMR1L
FA6h
EECON1
F7Eh
ANSEL
FF5h
TABLAT
FCDh
T1CON
FA5h
—(2)
F7Dh
IOCB
FF4h
PRODH
FCCh
TMR2
FA4h
—(2)
F7Ch
WPUB
FF3h
PRODL
FCBh
PR2
FA3h
—(2)
F7Bh
CM1CON0
FF2h
INTCON
FCAh
T2CON
FA2h
IPR2
F7Ah
CM2CON0
FF1h
INTCON2
FC9h
SSPBUF
FA1h
PIR2
F79h
CM2CON1
FF0h
INTCON3
FC8h
SSPADD
FA0h
PIE2
F78h
SLRCON
FEFh
INDF0(1)
FC7h
SSPSTAT
F9Fh
IPR1
F77h
SSPMSK
FEEh
POSTINC0(1)
FC6h
SSPCON1
F9Eh
PIR1
F76h
—(2)
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)
F71h
—(2)
FE9h
FSR0L
FC1h
ADCON1
F99h
—(2)
FE8h
WREG
FC0h
ADCON2
F98h
—(2)
F70h
—(2)
FE7h
INDF1(1)
FBFh
CCPR1H
F97h
—(2)
F6Fh
—(2)
FE6h
POSTINC1(1)
FBEh
CCPR1L
F96h
TRISE(3)
F6Eh
—(2)
FE5h
POSTDEC1(1)
FBDh
CCP1CON
F95h
TRISD(3)
F6Dh
—(2)
FE4h
PREINC1(1)
FBCh
CCPR2H
F94h
TRISC
F6Ch
—(2)
FE3h
PLUSW1(1)
FBBh
CCPR2L
F93h
TRISB
F6Bh
—(2)
FE2h
FSR1H
FBAh
CCP2CON
F92h
TRISA
F6Ah
—(2)
F69h
—(2)
FE1h
FSR1L
FB9h
PSTRCON
F91h
—(2)
FE0h
BSR
FB8h
BAUDCON
F90h
—(2)
F68h
—(2)
FDFh
INDF2(1)
FB7h
PWM1CON
F8Fh
—(2)
F67h
—(2)
FDEh
POSTINC2(1)
FB6h
ECCP1AS
F8Eh
—(2)
F66h
—(2)
FDDh
POSTDEC2(1)
FB5h
CVRCON
F8Dh
LATE(3)
F65h
—(2)
FDCh
PREINC2(1)
FB4h
CVRCON2
F8Ch
LATD(3)
F64h
—(2)
FDBh
PLUSW2
(1)
FB3h
TMR3H
F8Bh
LATC
F63h
—(2)
FDAh
FSR2H
FB2h
TMR3L
F8Ah
LATB
F62h
—(2)
FD9h
FSR2L
FB1h
T3CON
F89h
LATA
F61h
—(2)
FD8h
STATUS
FB0h
SPBRGH
F88h
—(2)
F60h
—(2)
物理的なレジスタではありません。
未実装のレジスタは「0」と読み出されます。
このレジスタは、PIC18F2XK20 デバイスでは使用できません。
このレジスタは、PIC18F46K20 および PIC18F26K20 デバイスにのみ実装されています。
DS41303E_JP - ページ 76
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 5-2:
File Name
レジスタ ファイル一覧 (PIC18F2XK20/4XK20)
Bit 7
Bit 6
Bit 5
—
—
—
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Details
on page:
---0 0000
57, 64
TOSH
Top-of-Stack, High Byte (TOS<15:8>)
0000 0000
57, 64
TOSL
Top-of-Stack, Low Byte (TOS<7:0>)
0000 0000
57, 64
00-0 0000
57, 65
---0 0000
57, 64
TOSU
STKPTR
STKFUL
STKUNF
—
PCLATU
—
—
—
Top-of-Stack Upper Byte (TOS<20:16>)
Value on
POR, BOR
SP4
SP3
SP2
SP1
SP0
Holding Register for PC<20:16>
PCLATH
Holding Register for PC<15:8>
0000 0000
57, 64
PCL
PC, Low Byte (PC<7:0>)
0000 0000
57, 64
--00 0000
57, 90
TBLPTRU
—
—
bit 21
Program Memory Table Pointer Upper Byte (TBLPTR<20:16>)
TBLPTRH
Program Memory Table Pointer, High Byte (TBLPTR<15:8>)
0000 0000
57, 90
TBLPTRL
Program Memory Table Pointer, Low Byte (TBLPTR<7:0>)
0000 0000
57, 90
TABLAT
Program Memory Table Latch
0000 0000
57, 90
PRODH
Product Register, High Byte
xxxx xxxx
57, 103
PRODL
Product Register, Low Byte
xxxx xxxx
57, 103
INTCON
GIE/GIEH
PEIE/GIEL
TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
0000 000x
57, 107
INTCON2
RBPU
INTEDG0
INTEDG1
INTEDG2
—
TMR0IP
—
RBIP
1111 -1-1
57, 108
INT2IP
INT1IP
—
INT2IE
INT1IE
—
INT2IF
INT1IF
11-0 0-00
57, 109
INTCON3
INDF0
Uses contents of FSR0 to address data memory – value of FSR0 not changed (not a physical register)
N/A
57, 82
POSTINC0
Uses contents of FSR0 to address data memory – value of FSR0 post-incremented (not a physical register)
N/A
57, 82
POSTDEC0
Uses contents of FSR0 to address data memory – value of FSR0 post-decremented (not a physical register)
N/A
57, 82
PREINC0
Uses contents of FSR0 to address data memory – value of FSR0 pre-incremented (not a physical register)
N/A
57, 82
PLUSW0
Uses contents of FSR0 to address data memory – value of FSR0 offset by W (not a physical register) –
FSR0H
—
—
—
—
Indirect Data Memory Address Pointer 0, High Byte
N/A
57, 82
---- 0000
57, 82
57, 82
FSR0L
Indirect Data Memory Address Pointer 0, Low Byte
xxxx xxxx
WREG
Working Register
xxxx xxxx
57
INDF1
Uses contents of FSR1 to address data memory – value of FSR1 not changed (not a physical register)
N/A
57, 82
POSTINC1
Uses contents of FSR1 to address data memory – value of FSR1 post-incremented (not a physical register)
N/A
57, 82
POSTDEC1
Uses contents of FSR1 to address data memory – value of FSR1 post-decremented (not a physical register)
N/A
57, 82
PREINC1
Uses contents of FSR1 to address data memory – value of FSR1 pre-incremented (not a physical register)
N/A
57, 82
PLUSW1
Uses contents of FSR1 to address data memory – value of FSR1 offset by W (not a physical register) – value of
N/A
57, 82
---- 0000
58, 82
xxxx xxxx
58, 82
FSR1H
FSR1L
BSR
—
—
—
—
Indirect Data Memory Address Pointer 1, High Byte
Indirect Data Memory Address Pointer 1, Low Byte
—
—
—
—
Bank Select Register
---- 0000
58, 69
N/A
58, 82
INDF2
Uses contents of FSR2 to address data memory – value of FSR2 not changed (not a physical register)
POSTINC2
Uses contents of FSR2 to address data memory – value of FSR2 post-incremented (not a physical register)
N/A
58, 82
POSTDEC2
Uses contents of FSR2 to address data memory – value of FSR2 post-decremented (not a physical register)
N/A
58, 82
PREINC2
Uses contents of FSR2 to address data memory – value of FSR2 pre-incremented (not a physical register)
N/A
58, 82
PLUSW2
Uses contents of FSR2 to address data memory – value of FSR2 offset by W (not a physical register) – value of
N/A
58, 82
---- 0000
58, 82
xxxx xxxx
58, 82
---x xxxx
58, 80
FSR2H
FSR2L
STATUS
—
—
—
—
Indirect Data Memory Address Pointer 2, High Byte
Indirect Data Memory Address Pointer 2, Low Byte
—
—
—
N
OV
Z
DC
C
記号の説明 : x = 不明、u = 不変、— = 未実装、q = 条件により変化する値
注 1:
SBOREN ビットを使用できるのは構成ビット BOREN<1:0> = 01 の場合のみです。それ以外の場合は使用不可で「0」と読み出されます
(4.4 項「ブラウンアウト リセット (BOR)」参照 )。
2:
これらのレジスタおよびビット ( または、そのいずれか一方 ) は、28 ピンデバイスには未実装で、「0」と読み出されます。リセット値は
40/44 ピン デバイスのものです。その他の各デバイスの未実装ビットのリセット値は「-」であるものと解釈してください。
3:
PLLEN ビットは特定のオシレータ構成のみで使用でき、その他の場合は無効化され「0」と読み出されます (2.6.2 項「HFINTOSC モード
の PLL」参照 )。
4:
RE3 ビットはマスター クリア リセットが無効 ( 構成ビット MCLRE = 0) の場合のみ使用できます。その他の場合、RE3 は「0」と読み出さ
れます。このビットは読み出し専用です。
5:
RA6/RA7 およびこれらに関連するラッチと方向ビットは、使用する各種プライマリ オシレータ モードに基づいて、個々にポート ピンと
して構成されます。無効の場合は「0」と読み出されます。
6:
CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。
7:
このレジスタは、PIC18F46K20 および PIC18F26K20 デバイスにのみ実装されています。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 77
PIC18F2XK20/4XK20
表 5-2:
File Name
レジスタ ファイル一覧 (PIC18F2XK20/4XK20) ( 続き )
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR, BOR
Details
on page:
TMR0H
Timer0 Register, High Byte
0000 0000
58, 155
TMR0L
Timer0 Register, Low Byte
xxxx xxxx
58, 155
58, 153
T0CON
OSCCON
HLVDCON
WDTCON
RCON
TMR0ON
T08BIT
T0CS
T0SE
PSA
T0PS2
T0PS1
T0PS0
1111 1111
IDLEN
IRCF2
IRCF1
IRCF0
OSTS
IOFS
SCS1
SCS0
0011 qq00
27, 58
VDIRMAG
—
IRVST
HLVDEN
HLVDL3
HLVDL2
HLVDL1
HLVDL0
0-00 0101
58, 289
—
—
—
—
—
—
—
SWDTEN
--- ---0
58, 305
IPEN
SBOREN(1)
—
RI
TO
PD
POR
BOR
0q-1 11q0 49, 56, 116
TMR1H
Timer1 Register, High Byte
xxxx xxxx
58, 163
TMR1L
Timer1 Register, Low Bytes
xxxx xxxx
58, 163
0000 0000
58, 157
T1CON
RD16
T1RUN
T1CKPS1
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS
TMR1ON
TMR2
Timer2 Register
0000 0000
58, 166
PR2
Timer2 Period Register
1111 1111
58, 166
T2CON
—
T2OUTPS3
T2OUTPS2
T2OUTPS1
T2OUTPS0
TMR2ON
T2CKPS1
SSPBUF
SSP Receive Buffer/Transmit Register
SSPADD
SSP Address Register in I2C™ Slave Mode. SSP Baud Rate Reload Register in I2C Master Mode.
T2CKPS0
-000 0000
58, 165
xxxx xxxx
58, 199,
200
0000 0000
58, 200
SSPSTAT
SMP
CKE
D/A
P
S
R/W
UA
BF
0000 0000
58, 192,
202
SSPCON1
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
0000 0000
58, 193,
203
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
RSEN
SEN
0000 0000
58, 204
ADRESH
SSPCON2
A/D Result Register, High Byte
xxxx xxxx
59, 273
ADRESL
A/D Result Register, Low Byte
xxxx xxxx
59, 273
ADCON0
—
—
CHS3
CHS2
CHS1
CHS0
GO/DONE
ADON
--00 0000
59, 267
ADCON1
—
—
VCFG1
VCFG0
—
—
—
—
--00 ----
59, 268
ADFM
—
ACQT2
ACQT1
ACQT0
ADCS2
ADCS1
ADCS0
ADCON2
CCPR1H
Capture/Compare/PWM Register 1, High Byte
CCPR1L
Capture/Compare/PWM Register 1, Low Byte
CCP1CON
P1M1
P1M0
DC1B1
CCPR2H
Capture/Compare/PWM Register 2, High Byte
CCPR2L
Capture/Compare/PWM Register 2, Low Byte
DC1B0
CCP1M3
CCP1M2
CCP1M1
CCP1M0
0-00 0000
59, 269
xxxx xxxx
59, 142
xxxx xxxx
59, 142
0000 0000
59, 171
xxxx xxxx
59, 142
xxxx xxxx
59, 142
CCP2CON
—
—
DC2B1
DC2B0
CCP2M3
CCP2M2
CCP2M1
CCP2M0
--00 0000
59, 141
PSTRCON
—
—
—
STRSYNC
STRD
STRC
STRB
STRA
---0 0001
59, 185
BAUDCON
ABDOVF
RCIDL
DTRXP
CKTXP
BRG16
—
WUE
ABDEN
0100 0-00
59, 244
PWM1CON
PRSEN
PDC6
PDC5
PDC4
PDC3
PDC2
PDC1
PDC0
0000 0000
59, 184
ECCP1AS
ECCPASE
ECCPAS2
ECCPAS1
ECCPAS0
PSSAC1
PSSAC0
PSSBD1
PSSBD0
0000 0000
59, 181
CVRCON
CVREN
CVROE
CVRR
CVRSS
CVR3
CVR2
CVR1
CVR0
0000 0000
59, 287
FVREN
FVRST
—
—
—
—
—
—
CVRCON2
TMR3H
Timer3 Register, High Byte
TMR3L
Timer3 Register, Low Byte
T3CON
RD16
T3CCP2
T3CKPS1
T3CKPS0
T3CCP1
T3SYNC
TMR3CS
TMR3ON
00-- ----
59, 288
xxxx xxxx
59, 170
xxxx xxxx
59, 170
0000 0000
59, 167
記号の説明 : x = 不明、u = 不変、— = 未実装、q = 条件により変化する値
注 1:
SBOREN ビットを使用できるのは構成ビット BOREN<1:0> = 01 の場合のみです。それ以外の場合は使用不可で「0」と読み出されます
(4.4 項「ブラウンアウト リセット (BOR)」参照 )。
2:
これらのレジスタおよびビット ( または、そのいずれか一方 ) は、28 ピンデバイスには未実装で、「0」と読み出されます。リセット値は
40/44 ピン デバイスのものです。その他の各デバイスの未実装ビットのリセット値は「-」であるものと解釈してください。
3:
PLLEN ビットは特定のオシレータ構成のみで使用でき、その他の場合は無効化され「0」と読み出されます (2.6.2 項「HFINTOSC モード
の PLL」参照 )。
4:
RE3 ビットはマスター クリア リセットが無効 ( 構成ビット MCLRE = 0) の場合のみ使用できます。その他の場合、RE3 は「0」と読み出さ
れます。このビットは読み出し専用です。
5:
RA6/RA7 およびこれらに関連するラッチと方向ビットは、使用する各種プライマリ オシレータ モードに基づいて、個々にポート ピンと
して構成されます。無効の場合は「0」と読み出されます。
6:
CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。
7:
このレジスタは、PIC18F46K20 および PIC18F26K20 デバイスにのみ実装されています。
DS41303E_JP - ページ 78
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 5-2:
File Name
レジスタ ファイル一覧 (PIC18F2XK20/4XK20) ( 続き )
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR, BOR
Details
on page:
59, 237
SPBRGH
EUSART Baud Rate Generator Register, High Byte
0000 0000
SPBRG
EUSART Baud Rate Generator Register, Low Byte
0000 0000
59, 237
RCREG
EUSART Receive Register
0000 0000
59, 234
TXREG
EUSART Transmit Register
0000 0000
59, 233
TXSTA
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
0000 0010
59, 242
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
0000 000x
59, 243
EEADR
EEADR7
EEADR6
EEADR5
EEADR4
EEADR3
EEADR2
EEADR1
EEADR0
—
—
—
—
—
—
EEADR9
EEADR8
EEADRH(7)
EEDATA
EEPROM Data Register
EECON2
EEPROM Control Register 2 (not a physical register)
EECON1
EEPGD
CFGS
0000 0000 59, 88, 97
---- --00 59, 88, 97
0000 0000 59, 88, 97
—
0000 0000 59, 88, 97
FREE
WRERR
WREN
WR
RD
xx-0 x000 59, 89, 97
IPR2
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
1111 1111
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
0000 0000
60, 111
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
0000 0000
60, 113
IPR1
PSPIP(2)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
1111 1111
60, 114
PIR1
PSPIF(2)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
0000 0000
60, 110
PIE1
PSPIE(2)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
0000 0000
60, 112
OSCTUNE
INTSRC
PLLEN(3)
TUN5
TUN4
TUN3
TUN2
TUN1
TUN0
0q00 0000
31, 60
IBF
OBF
IBOV
PSPMODE
—
TRISE2
TRISE1
TRISE0
0000 -111
60, 132
TRISE(2)
60, 115
TRISD(2)
PORTD Data Direction Control Register
1111 1111
60, 128
TRISC
PORTC Data Direction Control Register
1111 1111
60, 125
TRISB
PORTB Data Direction Control Register
1111 1111
60, 122
TRISA
TRISA7(5)
TRISA6(5)
LATE(2)
—
—
Data Direction Control Register for PORTA
—
—
—
PORTE Data Latch Register
(Read and Write to Data Latch)
1111 1111
60, 119
---- -xxx
60, 131
LATD(2)
PORTD Data Latch Register (Read and Write to Data Latch)
xxxx xxxx
60, 128
LATC
PORTC Data Latch Register (Read and Write to Data Latch)
xxxx xxxx
60, 125
LATB
PORTB Data Latch Register (Read and Write to Data Latch)
xxxx xxxx
60, 122
LATA7(5)
LATA6(5)
—
—
—
—
RE3(4)
RE2(2)
RE1(2)
RE0(2)
PORTD(2)
RD7
RD6
RD5
RD4
RD3
RD2
RD1
RD0
xxxx xxxx
60, 128
PORTC
RC7
RC6
RC5
RC4
RC3
RC2
RC1
RC0
xxxx xxxx
60, 125
60, 122
LATA
PORTE
PORTA Data Latch Register (Read and Write to Data Latch)
xxxx xxxx
60, 119
---- x000
60, 131
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
xxx0 0000
PORTA
RA7(5)
RA6(5)
RA5
RA4
RA3
RA2
RA1
RA0
xx0x 0000
60, 119
—
—
—
ANS12
ANS11
ANS10
ANS9
ANS8
---1 1111
60, 135
ANSEL
ANS7(2)
ANS6(2)
ANS5(2)
ANS4
ANS3
ANS2
ANS1
ANS0
1111 1111
60, 134
IOCB
IOCB7
IOCB6
IOCB5
IOCB4
—
—
—
—
0000 ----
60, 122
WPUB
60, 122
ANSELH(6)
WPUB7
WPUB6
WPUB5
WPUB4
WPUB3
WPUB2
WPUB1
WPUB0
1111 1111
CM1CON0
C1ON
C1OUT
C1OE
C1POL
C1SP
C1R
C1CH1
C1CH0
0000 0000
60, 280
CM2CON0
C2ON
C2OUT
C2OE
C2POL
C2SP
C2R
C2CH1
C2CH0
0000 0000
61, 281
CM2CON1
MC1OUT
MC2OUT
C1RSEL
C2RSEL
—
—
—
—
0000 ----
61, 283
SLRCON
—
—
—
SLRE(2)
SLRD(2)
SLRC
SLRB
SLRA
---1 1111
61, 136
SSPMSK
MSK7
MSK6
MSK5
MSK4
MSK3
MSK2
MSK1
MSK0
1111 1111
61, 211
記号の説明 : x = 不明、u = 不変、— = 未実装、q = 条件により変化する値
注 1:
SBOREN ビットを使用できるのは構成ビット BOREN<1:0> = 01 の場合のみです。それ以外の場合は使用不可で「0」と読み出されます
(4.4 項「ブラウンアウト リセット (BOR)」参照 )。
2:
これらのレジスタおよびビット ( または、そのいずれか一方 ) は、28 ピンデバイスには未実装で、「0」と読み出されます。リセット値は
40/44 ピン デバイスのものです。その他の各デバイスの未実装ビットのリセット値は「-」であるものと解釈してください。
3:
PLLEN ビットは特定のオシレータ構成のみで使用でき、その他の場合は無効化され「0」と読み出されます (2.6.2 項「HFINTOSC モード
の PLL」参照 )。
4:
RE3 ビットはマスター クリア リセットが無効 ( 構成ビット MCLRE = 0) の場合のみ使用できます。その他の場合、RE3 は「0」と読み出さ
れます。このビットは読み出し専用です。
5:
RA6/RA7 およびこれらに関連するラッチと方向ビットは、使用する各種プライマリ オシレータ モードに基づいて、個々にポート ピンと
して構成されます。無効の場合は「0」と読み出されます。
6:
CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。
7:
このレジスタは、PIC18F46K20 および PIC18F26K20 デバイスにのみ実装されています。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 79
PIC18F2XK20/4XK20
5.3.5
STATUS レジスタ
レジスタ 5-2 に示す STATUS レジスタは、ALU の算
術的状態を表します。他の SFR と同様、すべての命
令のオペランドに指定できます。
Z、DC、C、OV、N ビットに影響を与える命令の出
力先として STATUS レジスタを指定すると、結果が
書き込まれるのではなく、実行された命令に応じて
STATUS レジスタが更新されます。したがって、
STATUS レジスタを出力先として命令を実行した場
合、意図したものと異なる結果が得られる場合があ
ります。例えば、CLRF STATUS は Z ビットのみを
セットして、残りのビットは変更しません (「000u
u1uu」)。
レジスタ 5-2:
STATUS レジスタを変更するときは、Z、C、DC、
OV、N ビットに影響を与えない、BCF、BSF、SWAPF、
MOVFF、MOVWF 命令だけを使用することを推奨し
ます。
ステータス ビットに影響を与えないその他の命令
は、表 24-2 と表 24-3 の命令セット一覧を参照して
ください。
注:
減算では、C ビットがボロー、DC ビットが
デジット ボロービットとして動作します。
STATUS: STATUS レジスタ
U-0
U-0
—
—
U-0
—
R/W-x
N
R/W-x
OV
R/W-x
Z
R/W-x
DC
(1)
bit 7
R/W-x
C(1)
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7-5
未実装 :「0」として読み出し
ビット 4
N: 負号ビット
このビットは符号付き算術演算に使用され (2 の補数 )、結果が負であるかどうかを示します
(ALU MSB = 1)。
1 = 結果は負
0 = 結果は正
ビット 3
OV: オーバーフロー ビット
このビットは符号付き算術演算に使用され (2 の補数 )、絶対値が 7 ビットをオーバーフローし、
符号ビット ( 結果のビット 7) の状態が変わったことを知らせます。
1 = 符号付き演算でオーバーフロー発生 ( この算術演算で )
0 = オーバーフローは発生していない
ビット 2
Z: ゼロ ビット
1 = 算術演算または論理演算の結果がゼロ
0 = 算術演算または論理演算の結果がゼロ以外
ビット 1
DC: デジット キャリー / ボロー ビット (ADDWF、ADDLW、SUBLW、SUBWF 命令用 )(1)
1 = 演算結果の下位 4 ビット目からキャリーが発生した
0 = 演算結果の下位 4 ビット目からキャリーが発生していない
ビット 0
C: キャリー / ボロー ビット (ADDWF、ADDLW、SUBLW、SUBWF 命令用 )(1)
1 = 演算結果の最上位ビットからキャリーが発生した
0 = 演算結果の最上位ビットからキャリーが発生していない
注 1:
ボローの場合は極性が逆になります。減算は、2 番目のオペランドの 2 の補数を加算することによっ
て実行されます。ローテート (RRF、RLF) 命令の場合は、このビットにはソース レジスタの上位ビッ
トまたは下位ビットのいずれかがロードされます。
DS41303E_JP - ページ 80
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
5.4
注:
データのアドレス指定モード
PIC18 コア命令セットの中には、PIC18 拡
張命令セットを有効にすると動作が変わ
るものがあります。詳細は、5.5 項「デー
タ メモリと拡張命令セット」を参照して
ください。
プログラム メモリのアドレスを指定するには、プ
ログラム カウンタを使用する方法しかありません
が、データ メモリ空間内の情報についてはいくつ
かの方法でアドレスを指定できます。ほとんどの命
令ではアドレス指定モードが固定されています。し
かし、使用するオペランドおよび拡張命令セットの
有効 / 無効に応じて最大 3 つのモードを使用できる
命令もあります。
アドレス指定モードは次の 4 種類です。
•
•
•
•
含意
リテラル
直接
間接
拡張命令セットを有効にしている場合は ( 構成ビッ
ト XINST = 1)、もう一つのアドレス指定モードであ
るインデックス付きリテラル オフセット モードを
使用できます。その動作は、5.5.1 項「リテラル オ
フセットによる インデックス付きアドレス指定」で
詳細に検討します。
5.4.1
固有およびリテラル アドレス指定
PIC18 の制御命令の多くが引き数を一切必要としま
せん。それらの命令は、デバイス全体に作用する
か、暗黙のうちに特定の 1 レジスタに作用するため
です。このようなアドレス指定モードは含意アドレ
ス指定と呼ばれます。例えば、SLEEP、RESET、DAW
などがこのモードを使用します。
その他の命令も同様に動作しますが、オペコード内
に更にもう 1 つ明示的な引き数が必要になります。
これは、引き数として何らかのリテラル値を必要と
するため、リテラル アドレス指定モードと呼ばれ
ます。このモードを使用するコマンドの例として
ADDLW、MOVLW などがあります。W レジスタに対
してリテラル値をそれぞれ加算、または移動しま
す。その他には、20 ビットのプログラム メモリ ア
ドレスを含む CALL、GOTO などがあります。
5.4.2
直接アドレス指定
直接アドレス指定では、演算に対する入力元また
は出力先アドレス ( あるいは、その両方 ) のすべて
または一部をオペコード自体の中で指定します。
オプションは命令に付加する引き数によって指定
します。
PIC18 のコア命令セット内のビット指向およびバイ
ト指向の命令は、デフォルトとして複数の種類があ
る直接アドレス指定モードのいずれかを使用しま
す。これらの命令はすべてその最下位バイトに 8
ビットのリテラル アドレスを含みます。このアド
レスは命令のデータ入力元として、データ RAM の
 2009 Microchip Technology Inc.
いずれかのバンク内のレジスタ アドレスか (5.3.3 項
「汎用レジスタ ファイル」参照 )、アクセス バンク
(5.3.2 項「アクセス バンク」参照 ) 内の位置を指定
するものです。
アドレスをどちらに解釈するかはアクセス RAM
ビット「a」によって決まります。
「a」が「1」の場
合、BSR (5.3.1 項「バンク選択レジスタ (BSR)」参
照 ) の内容と、命令内で指定されたアドレスを組み
合わせてレジスタのフル アドレス 12 ビットを判断
します。
「a」が「0」の場合、アドレスはアクセス
バンク内のレジスタを指すものとして解釈されま
す。アクセス RAM を使用するアドレス指定は、直
接強制アドレス指定モードと呼ばれることもあり
ます。
MOVFFなど少数の命令では、
オペコード内に12ビッ
トのアドレス ( 入力元または出力先のいずれか ) の
すべてが埋め込まれています。これらの命令の場
合、BSR は完全に無視されます。
演算結果の出力先は出力先ビット「d」によって決
まります。
「d」が「1」の場合、結果は入力元のレ
ジスタに、元の値を上書きする形で格納されます。
「d」が「0」の場合、結果は W レジスタに書き込ま
れます。引き数「d」を持たない命令では、結果の
出力先が暗黙に指定されており、現在演算対象と
なっているレジスタまたは W レジスタのいずれか
になります。
5.4.3
間接アドレス指定
間接アドレス指定では、命令内で固定アドレスを指
定せずに、データ メモリ内の目的の位置にアクセ
スできます。このモードでは、読み出し / 書き込み
を実行する位置へのポインタとして、ファイル選択
レジスタ (FSR) を使用します。FSR 自体も RAM 内
の特殊ファイル レジスタの 1 つに格納されている
ため、プログラム制御によって直接操作できます。
このため、FSR はデータ メモリ内にテーブルや配
列などのデータ構造を実装するときに非常に便利
です。
間接ファイル オペランド (INDF) を使用する、間接
アドレス指定用のレジスタも実装されています。
INDF には自動インクリメント、自動デクリメント、
任意の値によるオフセットなど、ポインタ値を自動
的に操作する機能があります。この機能を使えば、
RAM バンクの全体をクリアする、例 5-5 のような
ループを用いたコードを効率的に作成できます。
例 5-5:
NEXT
間接アドレス指定による RAM
( バンク 1) のクリア方法
LFSR
CLRF
BTFSS
BRA
CONTINUE
Preliminary
FSR0, 100h;
POSTINC0
;
;
;
FSR0H, 1; All
;
NEXT
;
;
Clear INDF
register then
inc pointer
done with
Bank1?
NO, clear next
YES, continue
DS41303E_JP - ページ 81
PIC18F2XK20/4XK20
5.4.3.1
FSR レジスタと INDF オペランド
5.4.3.2
間接アドレス指定は 3 つのレジスタ セット、FSR0、
FSR1、FSR2 を中心に動作します。各セットは 1 対
の 8 ビット レジスタ FSRnH と FSRnL からなりま
す。各 FSR の対には 12 ビットの値が格納されます。
したがって、FSRnH レジスタの上位 4 ビットは未
使用となります。12 ビットの FSR の値によって、
データ メモリの全範囲に対してリニアにアドレス
を指定できます。FSR レジスタ対は、データ メモ
リ内の位置を指すポインタとして機能します。
INDF オペランドに加えて、各 FSR レジスタ対には
更に 4 つの間接オペランドがあります。INDF 同様、
これらも直接読み出したり書き込んだりすること
ができない「仮想」レジスタです。これらのレジス
タへのアクセスは、実際には対応する FSR レジスタ
対が指す位置へのアクセスとなり、同時に次に示す
ような FSR 値に対する特定の演算を実行できます。
• POSTDEC: FSR が指す位置にアクセスした後、
FSR を自動的に 1 だけデクリメントします。
• POSTINC: FSR が指す位置にアクセスした後、
FSR を自動的に 1 だけインクリメントします。
• PREINC: FSR を自動的に 1 だけインクリメント
した後、FSR が指す位置を演算に使用します。
• PLUSW: W レジスタに格納された符号付きの値
(-127 ~ 128) を FSR の値に加算し、結果が指す
位置を演算に使用します。
間接アドレス指定は、間接ファイル オペランド
INDF0 ~ INDF2 によって実現します。これらのオペ
ランドは「仮想」レジスタと見なすことができます。
SFR の空間に対応づけられてはいますが、物理的に
は実装されていません。特定の INDF レジスタへの
読み出し / 書き込み動作は、実際には対応する FSR
レジスタ対にアクセスしています。例えば、INDF1
からの読み出しの場合、データは FSR1H:FSR1L が
指すアドレスから読み出されます。INDF レジスタ
をオペランドとする命令は、実際には対応する FSR
の内容を、命令対象へのポインタとして使用してい
ます。INDF オペランドは、単にポインタを使いや
すくするために設けられたものです。
このような INDF レジスタへのアクセスでは、対応
する FSR レジスタ内の値を、変更せずに使用して
います。
同様に PLUSW レジスタにアクセスすると、
FSR の値が W レジスタの値だけオフセットされま
すが、W および FSR レジスタの値自体は、いずれ
もこの演算によっては変更されません。他の仮想レ
ジスタへのアクセスでは FSR レジスタの値が変化
します。
間接アドレス指定では 12 ビットのフル アドレスを
使用するため、データ RAM のバンク指定は不要で
す。したがって、BSR の現在の内容やアクセス RAM
ビットは対象アドレスの判断に何の影響も与えま
せん。
図 5-10:
FSR レジスタと POSTINC、
POSTDEC、PREINC、PLUSW
間接アドレス指定
000h
間接アドレス指定用レジスタをオ
ペランドとして指定する命令を使
用します。
Bank 0
ADDWF, INDF1, 1
100h
Bank 1
200h
該当レジスタに関連付けられた
FSR 対に格納された 12 ビットのア
ドレスを使用します。
300h
FSR1H:FSR1L
7
0
x x x x 1 1 1 0
7
0
Bank 2
Bank 3
through
Bank 13
1 1 0 0 1 1 0 0
演算で使用するデータ メモリ位置
を判断します。
E00h
ここでは、FSR1 対に格納されてい
る値は ECCh です。これは、位置
ECCh の内容が W レジスタの内容
に加算され、ECCh に書き戻される
ことを意味します。
Bank 14
F00h
FFFh
Bank 15
Data Memory
DS41303E_JP - ページ 82
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
FSR に対する POSTDEC、POSTINC、PREINC 操作
はレジスタ対の両方に影響を与えます。つまり、
FSRnL レジスタで FFh から 00h へのロールオーバー
が発生すると、FSRnH レジスタにキャリーが送ら
れます。一方、これらの操作の結果では、STATUS
レジスタのフラグ ( 例 : Z、N、OV など ) の値はい
ずれも変化しません。
PLUSW レジスタは、データ メモリ空間に対して一
種のインデックス付きアドレス指定を実装するの
に使用できます。W レジスタ内の値を操作すること
により、ポインタ アドレスから一定の値だけオフ
セットしたアドレスにアクセスできます。アプリ
ケーションによっては、この機能を使用して、ソフ
トウェア スタックなどの強力なプログラム制御構
造をデータ メモリ内に実装できます。
5.4.3.3
FSR による FSR に対する操作
他の FSR や仮想レジスタへの間接アドレス指定の
操作は特殊な状況を招きます。例えば、FSR によっ
て仮想レジスタの 1 つを指すような操作は正常に実
行されません。具体的なケースとして、
FSR0H:FSR0L に INDF1 のアドレス EF7h が格納さ
れている場合を考えます。INDF0 をオペランドとし
て INDF1 の値を読み出そうとすると、00h が返され
ます。また、INDF0 をオペランドとして INDF1 に
書き込もうとすると、NOP が実行されます。
これに対し、仮想レジスタを用いて FSR 対に書き
込みを実行すると、期待された結果が得られない場
合があります。これらの場合、値は FSR 対に書き
込まれますが、インクリメントやデクリメントの操
作は一切実行されません。したがって、INDF2 また
は POSTDEC2 レジスタのいずれに書き込んでも、
FSR2H:FSR2Lに書き込まれる値は同じになります。
FSR は SFR 空間に対応づけられた物理的なレジス
タであるため、すべての直接命令により操作が可能
です。したがって、これらのレジスタを扱う場合、
特にコードで間接アドレス指定を使用している場
合は十分な注意が必要です。
同様に、間接アドレス指定による操作は、通常他の
SFR のすべてに対しても実行可能です。したがって、
デバイスの動作に影響を与える設定を誤って変更し
ないように、適切な注意を払ってください。
5.5
データ メモリと拡張命令セット
PIC18 拡張命令セットを有効にすると ( 構成ビット
XINST = 1)、データ メモリおよびそのアドレス指定
の一部が大きく変わります。具体的には、PIC18 コ
ア命令の多くでアクセス バンクの使用方法が変わ
ります。これは、データ メモリ空間に新しいアド
レス指定モードを導入したためです。
拡張命令セットを使用しても変わらない部分にも
注目しておく必要があります。データ メモリ空間
のサイズおよびリニアなアドレス指定は変わりま
せん。SFR のマップも同じです。PIC18 コア命令
 2009 Microchip Technology Inc.
セットは、直接および間接アドレス指定モードの両
方で同様に動作します。含意およびリテラル命令に
も一切変更はありません。FSR0 および FSR1 によ
る間接アドレス指定も変わりません。
5.5.1
リテラル オフセットによる
インデックス付きアドレス指定
PIC18 拡張命令セットを有効にすると、FSR2 レジ
スタ対をアクセス RAM 内で使用したときの動作が
変わります。一定の条件を満たせば、アクセス バ
ンクを使用する命令、つまりほとんどのビット指向
およびバイト指向命令において、命令内でオフセッ
トを指定する一種のインデックス付きアドレス指
定を利用できます。この特殊なアドレス指定モード
は、リテラル オフセットによるインデックス付き
アドレス指定、
またはインデックス付きリテラル オ
フセット モードと呼ばれます。
拡張命令セットを使用する場合、このアドレス指定
モードでは以下の条件が課されます。
• アクセス バンクの使用が強制される (「a」= 0)
• ファイル アドレスの引き数は 5Fh 以下とする
この場合、命令のファイル アドレスは、アドレス
の下位バイト ( 直接アドレス指定で BSR と併用され
る 8 ビット ) とは解釈されず、アクセス バンク内の
位置を示す 8 ビットとも見なされません。ファイル
アドレスは、FSR2 で指定されたアドレス ポインタ
値に対するオフセットと見なされます。オフセット
と FSR2 の内容が加算され、演算対象のアドレスが
得られます。
5.5.2
インデックス付きリテラル オフセット
モードの影響を受ける命令
直接アドレス指定を使用できるPIC18コア命令セッ
トは、どれもがインデックス付きリテラル オフ
セット アドレス指定モードの影響を受ける可能性
があ ります。これは すべて のバイト 指向およ び
ビット指向の命令、つまり標準の PIC18 命令セッ
トのほぼ半分が含まれることになります。含意ま
たはリテラル アドレス指定モードしか使わない命
令は影響されません。
更に、バイト指向およびビット指向命令であって
も、アクセス バンクを使用しない場合 ( アクセス
RAM ビット =1)、または 60h 以上のファイル アド
レスを指定している場合は影響を受けません。これ
らの基準を満たす命令は、以前と同様に実行されま
す。拡張命令セットを有効にした場合に変化する可
能性があるアドレス指定モードを、図 5-11 で比較
しています。
インデックス付きリテラル オフセット モードでバ
イト指向またはビット指向命令を使用するユー
ザーは、アセンブラ構文の違いに注意してくださ
い。これについては、24.2.1 項「拡張命令のシン
タックス」で詳細に説明します。
Preliminary
DS41303E_JP - ページ 83
PIC18F2XK20/4XK20
図 5-11:
ビット指向およびバイト指向命令のアドレス指定オプションの比較 ( 拡張命令セットを有効に
した場合 )
例の命令 : ADDWF, f, d, a ( オペコード : 0010 01da ffff ffff)
「a」= 0 および f  60h のとき :
000H
命令は直接強制アドレス指定
モードで実行されます。
「f」は
060h ~ 0FFh のアクセス RAM
内の位置として解釈されま
す。こ れ は デ ー タ メ モ リ の
F60h ~ FFFh ( バンク 15) の
位置と同じです。
060H
このアドレス指定モードでは
60h より下位の位置は使用で
きません。
BANK 0
100H
00H
BANK 1
THROUGH
BANK 14
60H
VALID RANGE
FOR ‘F’
ACCESS RAM
F00H
FFH
BANK 15
F60H
SFRS
FFFH
「a」= 0 および f5Fh のとき :
命令はインデックス付きリテ
ラル オフセット モードで実行
されます。
「f」は FSR2 のアド
レス値のオフセットとして解
釈されます。2 つの値を加算し、
命令の演算対象のレジスタの
アドレスを取得します。アドレ
スはデータ メモリ空間内の任
意の位置です。
000H
060H
BANK 0
100H
001001DA FFFFFFFF
BANK 1
THROUGH
BANK 14
FSR2H
FSR2L
F00H
このモードで、正しい構文は次
のとおりです。
ADDWF [k], d
「k」は「f」と同じです。
FFFH
「a」= 1 のとき ( すべての値が f):
000H
命令は直接モード ( 直接長形
式モードとも呼ばれます ) で
実行されます。
「f」は、データ
メモリ空間の16バンクのいず
れか内の位置として解釈され
ます。バンクはバンク選択レ
ジスタ (BSR) によって指定さ
れます。アドレスはデータ メ
モリ空間内に実装されている
任意のバンク内です。
DATA MEMORY
BANK 15
F60H
SFRS
DATA MEMORY
BSR
00000000
060H
BANK 0
100H
BANK 1
THROUGH
BANK 14
001001DA FFFFFFFF
F00H
BANK 15
F60H
SFRS
FFFH
DS41303E_JP - ページ 84
DATA MEMORY
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
5.5.3
インデックス付きリテラル オフセッ
ト モードにおけるアクセス バンクの
マッピング
インデックス付きリテラル オフセット アドレス指
定モードを使用する場合、実効的にアクセス RAM
の先頭 96 アドレス (00h ~ 5Fh) のマッピングが変わ
ります。このモードでは、アクセス RAM に対応づ
けられる内容が、バンク 0 末尾に限られません。
ユーザーがデータ メモリ空間内の任意の位置に定
義した「ウィンドウ」の内容にアクセス RAM を対
応づけることができます。ウィンドウに対応づけら
れるアドレスの下端は FSR2 の値として規定し、上
端は FSR2 に 95 (5Fh) を加えた値になります。アク
セス RAM 内の 5Fh を超えるアドレスは、5.3.2 項
「アクセス バンク」の説明と同様の方法でデータ メ
モリに対応づけられます。このアドレス指定モード
によるアクセス バンクの再マッピングの例を図 512 に示します。
図 5-12:
アクセス バンクの再マッピングは、インデックス
付きリテラル オフセット モードを使用する操作に
のみ適用されます。BSR を使用する動作 ( アクセス
RAM ビット =「1」) では、従来の直接アドレス指
定がそのまま使われます。
5.6
PIC18 命令の実行と拡張命令セット
拡張命令セットを有効にすると、従来の PIC18 命令
セットに 8 つの新しいコマンドが加わります。これ
らの命令は、24.2 項「拡張命令セット」で説明する
方法に従って実行されます。
インデックス付きリテラル オフセット アドレス指定によるアクセス バンクの再マッピング
例の状況 :
ADDWF f, d, a
FSR2H:FSR2L = 120h
000h
FSR2 ポインタ (120h) から、
これに 05Fh を足したアドレ 100h
ス (17Fh) までが、アクセス 120h
RAM の下端 (00h = 05Fh) に 17Fh
対応づけられます。
F60h ~ FFFh の特殊ファイ 200h
ル レジスタは、通常どおり
60h ~ FFh に対応づけられ
ます。
Bank 0
Bank 1
Window
00h
Bank 1
Bank 1 “Window”
5Fh
60h
Bank 2
through
Bank 14
バンク 0 の 5Fh より下位の
アドレスも、BSR を使用し
て従来どおり指定できます。
SFRs
FFh
Access Bank
F00h
Bank 15
F60h
FFFh
SFRs
Data Memory
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 85
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 86
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
6.0
6.1
フラッシュ プログラム メモリ
フラッシュ プログラム メモリは通常動作中、VDD
の全範囲において読み出し、書き込み、消去が可能
です。
プログラム メモリの読み出しは 1 度に 1 バイトず
つです。書き込みは、デバイスの種類に応じて 1 度
に 64、32、8 バイトのブロックごとに実行されます
( 表 6-1 参照 )。一方、消去は 64 バイト単位で実行
されます。書き込みと消去のブロック サイズが異
なるため、1 回ブロック消去を実行すると、そのブ
ロックの内容を回復するには 1 ~ 8 回のブロック書
き込みが必要になります。バルク消去動作はユー
ザー コードからは実行できません。
表 6-1:
書き込み / 消去のブロック サイズ
Write Block
Size (bytes)
Erase Block
Size (bytes)
PIC18F43K20,
PIC18F23K20
16
64
PIC18F24K20,
PIC18F25K20,
PIC18F44K20,
PIC18F45K20
32
64
PIC18F26K20,
PIC18F46K20
64
64
Device
テーブル読み出しおよびテーブル
書き込み
プロセッサは次の 2 つの命令によって、プログラム
メモリ空間とデータ RAM 間でデータを転送して、
プログラム メモリに対して読み出しあるいは書き
込みを実行します。
• テーブル読み出し (TBLRD)
• テーブル書き込み (TBLWT)
プログラム メモリ空間は 16 ビット幅であるのに対
し、データ RAM 空間は 8 ビット幅です。テーブル
読み出しおよびテーブル書き込みでは、これら 2 つ
のメモリ空間の間で、8 ビット幅のレジスタ
(TABLAT) を介してデータを移動します。
テーブル読み出し動作では、プログラム メモリか
ら 1 バイトのデータを直接取得し、TABLAT レジス
タに格納します。図 6-1 に、テーブル読み出しの動
作を示します。
テーブル書き込み動作では、TABLAT レジスタから
1 バイトのデータを書き込みブロック保持レジスタ
へ格納します。保持レジスタの内容をプログラム メ
モリに書き込む手順は、6.5 項「フラッシュ プログ
ラム メモリへの書き込み」で詳細に説明します。
図 6-2 に、プログラム メモリとデータ RAM による
テーブル書き込みの動作を示します。
プログラム メモリに対する書き込みまたは消去を
実行すると、その動作が完了するまで命令のフェッ
チが中断されます。書き込みまたは消去中のプログ
ラム メモリにはアクセスできないため、コードを
実行できないからです。プログラム メモリの書き
込みおよび消去は、内部のプログラミング タイマ
によって終了します。
テーブルはバイト単位で操作します。プログラム命
令ではなく、データを含むテーブルはワード単位で
区切りが揃っている必要はありません。したがっ
て、テーブルは任意のバイト アドレスで開始および
終了することができます。ただしプログラム メモリ
に実行可能なコードを書き込むためにテーブル書
き込みを使用する場合は、ワード単位でプログラム
命令の位置を揃える必要があります。
プログラム メモリに書き込む値は、必ずしも有効
な命令である必要はありません。命令として無効な
値が格納されたプログラム メモリ位置を実行した
場合は、NOP になります。
図 6-1:
テーブル読み出し動作
Instruction: TBLRD*
Program Memory
Table Pointer(1)
TBLPTRU
TBLPTRH
Table Latch (8-bit)
TBLPTRL
TABLAT
Program Memory
(TBLPTR)
注 1:
テーブル ポインタ レジスタはプログラム メモリ内の 1 バイトを指します。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 87
PIC18F2XK20/4XK20
図 6-2:
テーブル書き込み動作
Instruction: TBLWT*
Program Memory
Table Pointer(1)
TBLPTRU
TBLPTRH
Holding Registers
Table Latch (8-bit)
TBLPTRL
TABLAT
Program Memory
(TBLPTR<MSBs>)
注 1:
6.2
テーブル書き込み時にテーブル ポインタは直接プログラム メモリを指すわけではません。TBLPRTL の
下位ビットは、実際には書き込みブロック保持レジスタ内のアドレスを指します。一方、テーブル ポイ
ンタの上位ビットは、最終的に書き込まれるブロックを指定します。保持レジスタの内容をプログラム
メモリ アレイに書き込む手順は、6.5 項「フラッシュ プログラム メモリへの書き込み」で説明します。
制御レジスタ
TBLRDおよびTBLWT命令は、次に示す複数の制御レ
ジスタと組み合わせて使用します。
•
•
•
•
EECON1 レジスタ
EECON2 レジスタ
TABLAT レジスタ
TBLPTR レジスタ
6.2.1
WREN ビットをセットすると、書き込み動作が有効
になります。WREN ビットは、電源投入時にクリア
されます。
EECON1 および EECON2 レジスタ
EECON1 レジスタ ( レジスタ 6-1) は、メモリ アク
セス用の制御レジスタです。EECON2 レジスタは物
理的なレジスタではなく、メモリの書き込みおよび
消去シーケンスのみに使われます。EECON2 を読み
出すと、常に「0」になります。
制御ビット EEPGD は、アクセス対象がプログラム
メモリあるいはデータ EEPROM のどちらであるか
を決定します。EEPGD がクリアされている場合、以
降の動作はすべてデータ EEPROM が対象になりま
す。EEPGD がセットされている場合、以降の動作
ではすべてプログラム メモリにアクセスします。
制御ビット CFGS は、アクセス対象が構成 / 較正レ
ジスタか、あるいはプログラム メモリ / データ
EEPROM のどちらであるかを決定します。CFGS が
セットされている場合、以降の動作は EEPGD の状
態にかかわらず、すべて構成レジスタが対象になり
ます (23.0 項「CPU の特殊機能」参照 )。CFGS がク
リアされている場合は、EEPGD の状態に応じてア
クセスするメモリが選択されます。
DS41303E_JP - ページ 88
FREE ビットはプログラム メモリの消去動作を有効
にします。FREE がセットされている場合、次の WR
コマンドによって消去動作が開始されます。FREE
がクリアされている場合は、書き込みだけが有効に
なります。
WR ビットがセットされ、その後内部プログラミン
グ タイマの時間が経過して書き込み動作が完了し、
WR ビットがクリアされると、ハードウェアによっ
て WRERR ビットが設定されます。
注:
通常の動作中は、WRERR ビットは「1」
と読み出されます。これは、書き込み動作
が完了する前にリセットによって中断さ
れたか、書き込み方法が不適切であったこ
とを示している場合があります。
制御ビット WR によって書き込み動作が開始されま
す。WR ビットはファームウェアによるセットだけ
が可能でクリアはできません。書き込み動作が完了
したときに、ハードウェアによってクリアされます。
注:
Preliminary
書き込みが完了すると、PIR2 レジスタの
割り込みフラグ ビット EEIF がセットされ
ます。このフラグはファームウェアによっ
てクリアされるまで、セットされた状態を
保ちます。
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 6-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 = ソフトウェアによるセット可、クリアは不可
-n = POR 時の値
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
ビット 7
EEPGD: フラッシュ プログラムまたはデータ EEPROM のメモリ選択ビット
1 = フラッシュ プログラム メモリにアクセス
0 = データ EEPROM にアクセス
ビット 6
CFGS: フラッシュ プログラム メモリ / データ EEPROM または構成レジスタの選択ビット
1 = 構成レジスタにアクセス
0 = フラッシュ プログラム メモリまたはデータ EEPROM にアクセス
ビット 5
未実装 :「0」として読み出し
ビット 4
FREE: フラッシュメモリの行 ( ブロック ) 消去イネーブル ビット
1 = 次の WR コマンドで、TBLPTR が指定するアドレスのプログラム メモリ ブロックを消去
( 消去動作の完了によってクリア )
0 = 書き込みのみを実行
ビット 3
WRERR: フラッシュ プログラム メモリ / データ EEPROM のエラー フラグ ビット (1)
1 = 書き込み動作が完了前に中断された ( 内部タイマによる通常のプログラミング中に発生し
た何らかのリセット、または不適切な書き込みによる )
0 = 書き込み動作完了
ビット 2
WREN: フラッシュ プログラム メモリ / データ EEPROM の書き込みイネーブル ビット
1 = フラッシュ プログラム メモリ / データ EEPROM に対する書き込みサイクルを許可
0 = フラッシュ プログラム メモリ / データ EEPROM に対する書き込みサイクルを禁止
ビット 1
WR: 書き込み制御ビット
1 = データ EEPROM またはプログラム メモリの消去 / 書き込みサイクルを開始
( 内蔵タイマで自動的に動作し、書き込み完了時にハードウェアによりクリア。
WR ビットはソフトウェアによるセットのみが可能で、クリアはできません。)
0 = EEPROM への書き込みサイクル完了
ビット 0
RD: 読み出し制御ビット
1 = EEPROM の読み出し開始 ( 読み出しは 1 サイクルで実行されます。
RD ビットはハードウェア
によってクリアされます。RD ビットはソフトウェアによるセットのみが可能で、クリアは
できません。ただし、EEPGD = 1 または CFGS = 1 の場合はセットできません。)
0 = EEPROM の読み出しを開始しない
注 1:
WRERR ( 書き込みエラー ) が発生しても EEPGD および CFGS ビットはクリアされません。これによ
り、エラー状況の追跡が可能になります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 89
PIC18F2XK20/4XK20
6.2.2
TABLAT – テーブル ラッチ レジスタ
TBLRD が実行されると、TBLPTR の 22 ビットすべて
によって、プログラム メモリから直接 TABLAT レ
ジスタに読み出すバイトが指定されます。
テーブル ラッチ (TABLAT) は、SFR 空間に対応づけ
られた 8 ビットのレジスタです。テーブル ラッチ
レジスタはプログラム メモリとデータ RAM 間で
データを転送するときに 8 ビットのデータを保持す
るために使用します。
6.2.3
TBLPTR – テーブル ポインタ レジスタ
テーブル ポインタ (TBLPTR) レジスタはプログラム
メモ リ 内の 1 バ イ トの アド レ スを 指 定し ます。
TBLPTR は、テーブル ポインタ最上位バイト、テー
ブル ポインタ上位バイト、テーブル ポインタ下位
バイト (TBLPTRU:TBLPTRH:TBLPTRL) の 3 つの
SFR から構成されます。これら 3 つのレジスタの内
容を結合して 22 ビット幅のポインタとします。下
位の 21 ビットにより最大 2 MB のプログラム メモ
リ空間内のアドレスを指定できます。22 番目のビッ
トは、デバイス ID、ユーザー ID、および構成ビッ
トへのアクセスを可能にします。
テーブル ポインタ レジスタ TBLPTR は、TBLRD お
よび TBLWT 命令で使用します。
これらの命令はテー
ブル操作に関する 4 種類の方法のいずれかによって
TBLPTR を更新します。これらの操作を表 6-2 に示
します。これらの TBLPTR に対する操作は、下位
21 ビットに対してのみ作用します。
6.2.4
TBLWT が実行されると、TABLAT レジスタ内のバイ
トが、フラッシュ メモリではなく、プログラム メ
モリ書き込みの準備に使用する保持レジスタに書
き込まれます。保持レジスタはデバイスの種類に
よってサイズの異なる書き込みブロックを構成し
ます ( 表 6-1 参照 )。TBLPTRL レジスタの下位 3、
4、5 ビットによって、保持レジスタ ブロック内の
どのアドレスに書き込むかが決まります。テーブル
ポインタの上位ビットは、TBLWT 動作には何の影
響も及ぼしません。
プログラム メモリの書き込みを実行すると、保持レ
ジスタ ブロック全体の内容が、TBLPTR の上位ビッ
トによって決まるフラッシュ メモリのアドレスに
書き込まれます。このとき下位の 3、4、5 ビットは
無視されます。詳細は、6.5 項「フラッシュ プログ
ラム メモリへの書き込み」を参照してください。
プログラム メモリの消去を実行すると、テーブル
ポインタ レジスタの上位 16 ビット (TBLPTR<21:6>)
が指す 64 バイトのブロックが消去されます。下位
ビット (TBLPTR<5:0>) は無視されます。
図 6-3 に、フラッシュ プラグラム メモリに対する
動作ごとの TBLPTR の境界を示します。
テーブル ポインタの境界
TBLPTR はフラッシュ プログラム メモリの読み出
し、書き込み、消去に使用します。
表 6-2:
TBLRD および TBLWT 命令によるテーブル ポインタの操作
Example
Operation on Table Pointer
TBLRD*
TBLWT*
TBLPTR is not modified
TBLRD*+
TBLWT*+
TBLPTR is incremented after the read/write
TBLRD*TBLWT*-
TBLPTR is decremented after the read/write
TBLRD+*
TBLWT+*
TBLPTR is incremented before the read/write
図 6-3:
動作ごとのテーブル ポインタの境界
21
TBLPTRU
16
15
TBLPTRH
8
TABLE ERASE/WRITE
TBLPTR<21:n+1>(1)
7
TBLPTRL
0
TABLE WRITE
TBLPTR<n:0>(1)
TABLE READ – TBLPTR<21:0>
注 1:
ブロック サイズ 8、16、32、64 バイトに対して、それぞれ n = 3、4、5、6
DS41303E_JP - ページ 90
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
6.3
フラッシュ プログラム メモリの
読み出し
内部プログラム メモリの内容は通常ワード単位で
構成されています。アドレスの最下位ビット (LSb)
が、ワードの上位バイトまたは下位バイトを選択し
ます。図 6-4 に、内部プログラム メモリと TABLAT
間のインターフェースを示します。
TBLRD 命令は、プログラム メモリからデータを読
み出し、データ RAM に格納します。プログラム メ
モリは 1 度に 1 バイトずつ読み出されます。
TBLPTRはプログラム空間内の1バイトを指します。
TBLRD を実行すると、TBLPTR が指す 1 バイトが
TABLAT に格納されます。また、次のテーブル読み
出し動作に備えてTBLPTRを自動的に変更すること
も可能です。
図 6-4:
フラッシュ プログラム メモリからの読み出し
Program Memory
(Even Byte Address)
(Odd Byte Address)
TBLPTR = xxxxx0
TBLPTR = xxxxx1
Instruction Register
(IR)
例 6-1:
FETCH
TBLRD
TABLAT
Read Register
フラッシュ プログラム メモリからのワード読み出し
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
CODE_ADDR_UPPER
TBLPTRU
CODE_ADDR_HIGH
TBLPTRH
CODE_ADDR_LOW
TBLPTRL
; Load TBLPTR with the base
; address of the word
READ_WORD
TBLRD*+
MOVF
MOVWF
TBLRD*+
MOVFW
MOVF
TABLAT, W
WORD_EVEN
TABLAT, W
WORD_ODD
 2009 Microchip Technology Inc.
; read into TABLAT and increment
; get data
; read into TABLAT and increment
; get data
Preliminary
DS41303E_JP - ページ 91
PIC18F2XK20/4XK20
6.4
フラッシュ プログラム メモリの消去
消去の最小ブロックは 32 ワード、つまり 64 バイト
です。プログラム メモリのより大きなブロックを
バルク消去するには、外付けのプログラマまたは
ICSP™ 制御を使用する必要があります。
フラッシュ
アレイはワード単位の消去には対応していません。
マイクロコントローラ自体から消去シーケンスを
開始した場合は、プログラム メモリの 64 バイトの
ブロックが消去されます。テーブル ポインタの上
位16ビットTBLPTR<21:6>によって消去するブロッ
クを指定します。TBLPTR<5:0> は無視されます。
消去動作は、EECON1 レジスタによって制御されま
す。動作対象としてフラッシュ プログラム メモリ
を選択するために EEPGD ビットをセットしてくだ
さ い。ま た、書 き 込 み 動 作 を 有 効 に す る た め に
WREN ビットを、消去動作を選択するために FREE
ビットをそれぞれセットします。
6.4.1 項「フラッシュ プログラム メモリの消去シー
ケンス」の手順 4 ~ 6 に示す EECON2 の書き込み開
始シーケンスによって、偶発的な書き込みを防止し
ます。この手順は、長い書き込み ( ロング ライト )
と呼ばれることがあります。
内部フラッシュを消去するには、ロング ライトが
必要です。ロング ライト サイクル中は命令の実行
が一時停止されます。ロング ライトは内部プログ
ラミング タイマによって終了します。
例 6-2:
6.4.1
フラッシュ プログラム メモリの消去
シーケンス
内部プログラム メモリの 1 ブロックを消去する手
順は次のとおりです。
1.
消去するブロックのアドレスをテーブル ポイ
ンタ レジスタに格納します。
EECON1 レジスタを消去動作用に設定します。
• プログラム メモリを選択するために EEPGD
ビットをセットします。
• プログラム メモリにアクセスするために
CFGS ビットをクリアします。
• 書き込みを有効にするために WREN ビット
をセットします。
• 消去を有効にするために FREE ビットをセッ
トします。
割り込みを禁止します。
EECON2 に 55h を書き込みます。
EECON2 に 0AAh を書き込みます。
WR ビットをセットします。これによってブ
ロック消去サイクルが開始されます。
消去中は CPU が停止します ( 内部タイマによる
約 2 ms)。
割り込みを再度許可します。
2.
3.
4.
5.
6.
7.
8.
フラッシュ プログラム メモリのブロック消去
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
CODE_ADDR_UPPER
TBLPTRU
CODE_ADDR_HIGH
TBLPTRH
CODE_ADDR_LOW
TBLPTRL
; load TBLPTR with the base
; address of the memory block
BSF
BCF
BSF
BSF
BCF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
BSF
EECON1,
EECON1,
EECON1,
EECON1,
INTCON,
55h
EECON2
0AAh
EECON2
EECON1,
INTCON,
;
;
;
;
;
ERASE_BLOCK
Required
Sequence
6.5
EEPGD
CFGS
WREN
FREE
GIE
; write 55h
; write 0AAh
; start erase (CPU stall)
; re-enable interrupts
WR
GIE
フラッシュ プログラム メモリへの
書き込み
プログラミングするブロックのサイズはデバイス
によって異なり、8、32、64 バイトのいずれかです
( 表 6-1 参照 )。ワードまたはバイト単位のプログラ
ミングには対応していません。
DS41303E_JP - ページ 92
point to Flash program memory
access Flash program memory
enable write to memory
enable block Erase operation
disable interrupts
フラッシュ メモリのプログラミングに必要となる
保持レジスタに、テーブル書き込みによって書き込
みデータをロードします。各デバイスは、書き込み
ブロックのバイト数と同じサイズの保持レジスタ
を備えています ( 表 6-1 参照 )。
テーブル ラッチ (TABLAT) は 1 バイトしかないた
め、プログラミングの動作ごとに TBLWT 命令を最
大 8、32、64 回実行する必要があります。この回数
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
はデバイスの種類によって決まります。テーブル書
き込み動作は、いずれも保持レジスタへの書き込み
であるため、原理的に短い書き込み ( ショート ライ
ト ) になります。保持レジスタへの書き込みがすべ
て完了したら、そのメモリ ブロックに対するプロ
グラミング動作を開始します。それには、EECON1
レジスタをプログラム メモリへの書き込み用に設
定し、ロング ライトの手順を実行します。
EEPROM のオンチップ タイマが書き込み時間を制
御します。また、書き込み / 消去電圧はオンチップ
のチャージ ポンプによって発生し、その定格はデ
バイスの電圧範囲を超えた値になります。
注:
内部フラッシュをプログラミングするには、ロング
ライトが必要です。ロング ライト サイクル中は命
令の実行が一時停止されます。ロング ライトは内
部プログラミング タイマによって終了します。
図 6-5:
デバイスのリセット時または書き込み動
作後の保持レジスタのデフォルト値はFFh
です。保持レジスタに FFh を書き込んだ場
合、そのバイトの値は変化しません。これ
は、プログラム メモリ内の個々のバイト
を部分的に変更できることを意味します。
ただし、
「0」から「1」に変更するビット
がない場合に限ります。個々のバイトを変
更する場合、ロング ライトを実行する前
に保持レジスタ全体にデータをロードす
る必要はありません。
フラッシュ プログラム メモリへのテーブル書き込み
TABLAT
Write Register
8
8
TBLPTR = xxxx00
TBLPTR = xxxx01
Holding Register
8
TBLPTR = xxxxYY(1)
TBLPTR = xxxx02
Holding Register
8
Holding Register
Holding Register
Program Memory
注 1:
6.5.1
書き込みブロック サイズ 8、16、32 バイトに対して、それぞれ YY=x7、xF、1F
フラッシュ プログラム メモリの
書き込みシーケンス
内部プログラム メモリに書き込む手順は次のとお
りです。
1.
2.
3.
4.
5.
6.
7.
64 バイトを RAM に読み込みます。
必要に応じてRAM内のデータ値を変更します。
消去するアドレスをテーブル ポインタ レジス
タに格納します。
ブロック消去手順を実行します。
書き込む最初のバイトのアドレスをテーブル
ポインタ レジスタに格納します。
自動インクリメント機能を使用して、保持レジ
スタに 8、32、64 バイトのブロックを書き込み
ます。
EECON1 レジスタを書き込み動作用に設定し
ます。
• プログラム メモリを選択するために EEPGD
ビットをセットします。
• プログラム メモリにアクセスするために
CFGS ビットをクリアします。
 2009 Microchip Technology Inc.
8.
9.
10.
11.
12.
13.
14.
15.
• バイト書き込みを有効にするために WREN
ビットをセットします。
割り込みを禁止します。
EECON2 に 55h を書き込みます。
EECON2 に 0AAh を書き込みます。
WR ビットをセットします。これによって書き
込みサイクルが開始されます。
書き込み中は CPU が停止します ( 内部タイマに
よる約 2 ms)。
割り込みを再度許可します。
64 バイトすべての書き込みが終了するまで、各
ブロックに対して手順 6 ~ 13 を繰り返します。
メモリの内容を検証します(テーブル読み出し)。
この手順は、メモリの各書き込みブロックを更新す
るのに約 6 ms を必要とします。例 6-3 に書き込み
に必要なコードの例を示します。
注:
Preliminary
WR ビットをセットする前に、テーブル ポ
インタのアドレスを、保持レジスタ内の目
的とするアドレス範囲内に設定する必要
があります。
DS41303E_JP - ページ 93
PIC18F2XK20/4XK20
例 6-3:
フラッシュ プログラム メモリへの書き込み
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
D'64’
COUNTER
BUFFER_ADDR_HIGH
FSR0H
BUFFER_ADDR_LOW
FSR0L
CODE_ADDR_UPPER
TBLPTRU
CODE_ADDR_HIGH
TBLPTRH
CODE_ADDR_LOW
TBLPTRL
; number of bytes in erase block
TBLRD*+
MOVF
MOVWF
DECFSZ
BRA
TABLAT, W
POSTINC0
COUNTER
READ_BLOCK
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
BUFFER_ADDR_HIGH
FSR0H
BUFFER_ADDR_LOW
FSR0L
NEW_DATA_LOW
POSTINC0
NEW_DATA_HIGH
INDF0
; point to buffer
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
BCF
BSF
BSF
BCF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
BSF
TBLRD*MOVLW
MOVWF
MOVLW
MOVWF
CODE_ADDR_UPPER
TBLPTRU
CODE_ADDR_HIGH
TBLPTRH
CODE_ADDR_LOW
TBLPTRL
EECON1, EEPGD
EECON1, CFGS
EECON1, WREN
EECON1, FREE
INTCON, GIE
55h
EECON2
0AAh
EECON2
EECON1, WR
INTCON, GIE
; load TBLPTR with the base
; address of the memory block
MOVLW
MOVWF
MOVLW
MOVWF
BlockSize
COUNTER
D’64’/BlockSize
COUNTER2
MOVF
MOVWF
TBLWT+*
POSTINC0, W
TABLAT
; point to buffer
; Load TBLPTR with the base
; address of the memory block
READ_BLOCK
;
;
;
;
;
read into TABLAT, and inc
get data
store data
done?
repeat
MODIFY_WORD
; update buffer word
ERASE_BLOCK
Required
Sequence
BUFFER_ADDR_HIGH
FSR0H
BUFFER_ADDR_LOW
FSR0L
;
;
;
;
;
point to Flash program memory
access Flash program memory
enable write to memory
enable Erase operation
disable interrupts
; write 55h
;
;
;
;
;
write 0AAh
start erase (CPU stall)
re-enable interrupts
dummy read decrement
point to buffer
WRITE_BUFFER_BACK
; number of bytes in holding register
; number of write blocks in 64 bytes
WRITE_BYTE_TO_HREGS
DS41303E_JP - ページ 94
Preliminary
;
;
;
;
get low byte of buffer data
present data to table latch
write data, perform a short write
to internal TBLWT holding register.
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
例 6-3:
フラッシュ プログラム メモリへの書き込み ( 続き )
DECFSZ
BRA
COUNTER
WRITE_WORD_TO_HREGS
; loop until holding registers are full
BSF
BCF
BSF
BCF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
DCFSZ
BRA
BSF
BCF
EECON1, EEPGD
EECON1, CFGS
EECON1, WREN
INTCON, GIE
55h
EECON2
0AAh
EECON2
EECON1, WR
COUNTER2
WRITE_BYTE_TO_HREGS
INTCON, GIE
EECON1, WREN
;
;
;
;
PROGRAM_MEMORY
Required
Sequence
6.5.2
;
;
;
;
;
;
write 0AAh
start program (CPU stall)
repeat for remaining write blocks
re-enable interrupts
disable write to memory
誤書き込み防止
フラッシュ プログラム メモリへの誤書き込みを予
防するために、書き込み開始シーケンスに従ってく
ださい。詳細は、23.0 項「CPU の特殊機能」を参
照してください。
6.6
書き込み動作の予期せぬ中断
電源遮断や予期せぬリセットなどにより、予定外の
書き込み中断が発生した場合は、プログラミング中
だったメモリ位置の内容を検証し、必要に応じて再
プログラミングしてください。書き込み動作が、通
常動作中の MCLR リセットまたは WDT タイムアウ
ト リセットによって中断された場合は、WRERR
ビットがセットされます。ユーザーはこのビットを
確認して、対象位置の再書き込みが必要かどうかを
判断できます。
表 6-3:
; write 55h
6.5.4
書き込みの検証
アプリケーションによっては、メモリに書き込んだ
値を元の値と比較検証するプログラミング方法が
推奨される場合があります。特に、仕様限界に近い
回数まで頻繁に書き込みを実行し、ビットにストレ
スを加えるアプリケーションにはこの方法を適用
してください。
6.5.3
point to Flash program memory
access Flash program memory
enable write to memory
disable interrupts
コード プロテクション実行中の
フラッシュ プログラムの動作
フラッシュ プログラム メモリのコード プロテク
ションの詳細は、23.3 項「プログラム検証とコード
プロテクション」を参照してください。
フラッシュ プログラム メモリに関連するレジスタ
Name
Bit 7
Bit 6
Bit 5
TBLPTRU
—
—
bit 21
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Program Memory Table Pointer Upper Byte (TBLPTR<20:16>)
Reset
Values on
page
57
TBPLTRH Program Memory Table Pointer High Byte (TBLPTR<15:8>)
57
TBLPTRL Program Memory Table Pointer Low Byte (TBLPTR<7:0>)
57
TABLAT
57
Program Memory Table Latch
INTCON
GIE/GIEH PEIE/GIEL TMR0IE
EECON2
EEPROM Control Register 2 (not a physical register)
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
59
EECON1
EEPGD
CFGS
—
FREE
WRERR
WREN
WR
RD
59
IPR2
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
60
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
60
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
60
記号の説明 : — = 未実装。
「0」として読み出し。網掛けのビットはフラッシュ /EEPROM へのアクセスでは
使用しません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 95
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 96
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
7.0
データ EEPROM メモリ
データ EEPROM は、データ RAM やプログラム メ
モリとは独立した不揮発メモリ アレイで、プログ
ラム データの長期保存に使用します。このメモリ
は、レジスタ ファイルおよびプログラム メモリ空
間のいずれにも直接は対応づけられていません。ア
ドレスは特殊機能レジスタ (SFR) を介して間接的に
指定します。EEPROM は通常動作中、VDD の全範
囲において読み出し、書き込みが可能です。
データ EEPROM およびプログラム メモリに対する
読み出しおよび書き込みには 5 つの SFR を使用し
ます。
•
•
•
•
•
EECON1
EECON2
EEDATA
EEADR
EEADRH
データ EEPROM では、1 バイト単位で読み出しと
書き込みを実行できます。データ メモリ ブロック
にアクセスする場合、EEDATA に読み出し / 書き込
みのための 8 ビットのデータ、EEADR:EEADRH の
レジスタ ペアに、アクセスする EEPROM 内のアド
レスを格納します。
EEPROM データ メモリは、高い消去 / 書き込み耐
性を保証しています。バイト単位の書き込みでは、
書き込み先の番地が自動的に消去され、新しいデー
タが書き込まれます (Erase-before-Write)。書き込み
時間はオンチップ タイマによって制御され、その
値は電圧、温度、チップ間のばらつきによって変化
します。正確な限界値については、D122 (26.0 項
「電気的特性」の表 26.10) を参照してください。
7.1
EEADR および EEADRH レジスタ
EEADR レジスタは、データ EEPROM の読み出しお
よび書き込み動作時にアドレスを指定するために
使用します。8 ビットのレジスタであるため、256
バイトのメモリ範囲 (00h ~ FFh) に対してアドレス
を指定できます。EEADRH レジスタは、アドレス
ビットを 2 ビット追加し、この範囲を 1024 バイト
にまで拡張します。
7.2
EECON1 および EECON2 レジスタ
データ EEPROM へのアクセスは、EECON1 および
EECON2 の 2 つのレジスタによって制御されます。
これらはプログラム メモリへのアクセスを制御す
るレジスタと同じもので、データ EEPROM に対し
ても使い方は同じです。
EECON1 レジスタ ( レジスタ 7-1) は、データおよび
プログラム メモリへのアクセスに使用する制御レ
ジスタです。制御ビット EEPGD は、アクセス対象
がプログラム メモリあるいはデータ EEPROM のど
ちらであるかを決定します。EEPGD ビットがクリ
アされている場合、データ EEPROM にアクセスし
ます。EEPGD ビットがセットされている場合、プ
ログラム メモリがアクセスされます。
制御ビット CFGS は、アクセス対象が構成レジスタ
か、あるいはプログラム メモリ / データ EEPROM
のどちらであるかを決定します。CFGS ビットが
セットされている場合、以降の動作は構成レジスタ
にアクセスします。CFGS ビットがクリアされてい
る場合は、EEPGD ビットの状態に応じてプログラ
ム フラッシュ メモリか、データ EEPROM のいずれ
かが選択されます。
WREN ビットをセットすると、書き込み動作が有効
になります。WREN ビットは、電源投入時にクリア
されます。
WR ビットがセットされ、その後内部プログラミン
グ タイマの時間が経過して書き込み動作が完了し、
WR ビットがクリアされると、ハードウェアによっ
て WRERR ビットが設定されます。
注:
通常の動作中に、WRERR ビットが「1」
と読み出される場合があります。これは、
書き込み動作が完了する前にリセットに
よって中断されたか、書き込み方法が不適
切であったことを示している場合があり
ます。
制御ビットWRによって書き込み動作が開始されま
す。ソフトウェアによってビットはセットできます
が、クリアはできません。書き込み動作が完了した
ときに、ハードウェアによってクリアされます。
注:
書き込みが完了すると、PIR2 レジスタの
割り込みフラグ ビット EEIF がセットされ
ます。このビットはソフトウェアによって
クリアする必要があります。
制御ビットの RD によって読み出し動作が開始さ
れ、WR によって消去 / 書き込み動作が開始されま
す。これらのビットはファームウェアによってセッ
トされ、動作が完了したときにハードウェアによっ
てクリアされます。
プログラム メモリへのアクセス時は (EEPGD = 1)、
RD ビットをセットできません。プログラム メモ
リの読み出しにはテーブル読み出しを使用します。
テーブル読み出しに関しては、6.1 項「テーブル読
み出しおよびテーブル書き込み」を参照してくだ
さい。
EECON2 レジスタは、物理的には存在しないレジス
タです。メモリの書き込みおよび消去シーケンス専
用です。EECON2 を読み出すと、常に「0」になり
ます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 97
PIC18F2XK20/4XK20
レジスタ 7-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 = ソフトウェアによるセット可、クリアは不可
-n = POR 時の値
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
ビット 7
EEPGD: フラッシュ プログラムまたはデータ EEPROM のメモリ選択ビット
1 = フラッシュ プログラム メモリにアクセス
0 = データ EEPROM にアクセス
ビット 6
CFGS: フラッシュ プログラム メモリ / データ EEPROM または構成レジスタの選択ビット
1 = 構成レジスタにアクセス
0 = フラッシュ プログラム メモリまたはデータ EEPROM にアクセス
ビット 5
未実装 :「0」として読み出し
ビット 4
FREE: フラッシュメモリの行 ( ブロック ) 消去イネーブル ビット
1 = 次の WR コマンドで、TBLPTR が指定するアドレスのプログラム メモリ ブロックを消去
( 消去動作の完了によってクリア )
0 = 書き込みのみを実行
ビット 3
WRERR: フラッシュ プログラム メモリ / データ EEPROM のエラー フラグ ビット (1)
1 = 書き込み動作が完了前に中断された ( 内部タイマによる通常のプログラミング中に発生し
た何らかのリセット、または不適切な書き込みによる )
0 = 書き込み動作完了
ビット 2
WREN: フラッシュ プログラム メモリ / データ EEPROM の書き込みイネーブル ビット
1 = フラッシュ プログラム メモリ / データ EEPROM に対する書き込みサイクルを許可
0 = フラッシュ プログラム メモリ / データ EEPROM に対する書き込みサイクルを禁止
ビット 1
WR: 書き込み制御ビット
1 = データ EEPROM またはプログラム メモリの消去 / 書き込みサイクルを開始
( 内蔵タイマで自動的に動作し、書き込み完了時にハードウェアによりクリア )
WR ビットはソフトウェアによるセットのみが可能で、クリアはできません。
0 = EEPROM への書き込みサイクル完了
ビット 0
RD: 読み出し制御ビット
1 = EEPROM の読み出し開始 ( 読み出しは 1 サイクルで実行されます。
RD ビットはハードウェア
によってクリアされます。RD ビットはソフトウェアによるセットのみが可能で、クリアは
できません。ただし、EEPGD = 1 または CFGS = 1 の場合はセットできません。)
0 = EEPROM の読み出しを開始しない
注 1:
WRERR ( 書き込みエラー ) が発生しても EEPGD および CFGS ビットはクリアされません。
これにより、エラー状況の追跡が可能になります。
DS41303E_JP - ページ 98
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
7.3
データ EEPROM の読み出し
データ メモリを読み出すには、EEADR レジスタに
アドレスを書き込み、EECON1 レジスタの制御ビッ
ト EEPGD をクリアしてから、制御ビット RD をセッ
トします。データは、直後の命令サイクルで取得さ
れるため、EEDATA レジスタは次の命令で読み出す
ことができます。EEDATA レジスタに格納された値
は、次の読み出し動作、またはユーザーが ( 書き込
み動作の際に ) EEDATA レジスタにデータを書き込
むまで保持されます。
基本的なプロセスを例 7-1 に示します。
7.4
データ EEPROM への書き込み
EEPROM にデータを書き込むには、まず書き込み
先のアドレスを EEADR レジスタに、書き込むデー
タを EEDATA レジスタに格納します。書き込みサ
イクルを開始するには、例 7-2 に示す手順に従って
ください。
こ の シ ー ケ ン ス (EECON2 へ の 55h 書 き 込 み、
EECON2 への 0AAh 書き込み、WR ビットのセット )
に正確に従わないと、書き込みは開始されません。
また、このコード セグメントの実行中は、割り込
みを禁止することを強く推奨します。
例 7-1:
書き込みシーケンスの開始後は、EECON1、EEADR、
EEDATA を変更できません。WREN ビットがセッ
トされていなければ、WR ビットはセットできませ
ん。また、WR と WREN の両方を同じ命令でセッ
トすることはできません。
書き込みサイクルが完了するとWRビットがハード
ウェアによってクリアされ、EEPROM 割り込みフ
ラグ ビット EEIF がセットされます。ユーザーは、
この割り込みを許可、またはこのビットをポーリン
グできます。EEIF はソフトウェアによってクリア
する必要があります。
7.5
書き込みの検証
アプリケーションによっては、メモリに書き込んだ
値を元の値と比較検証するプログラミング方法が
推奨される場合があります。特に、仕様限界に近い
回数まで頻繁に書き込みを実行し、ビットにストレ
スを加えるアプリケーションにはこの方法を適用
してください。
データ EEPROM の読み出し
MOVLW
MOVWF
BCF
BCF
BSF
MOVF
例 7-2:
更に、書き込みを有効にするために、EECON1 レジ
スタの WREN ビットもセットしておく必要があり
ます。以上は予期せぬコード実行 ( すなわちプログ
ラムの暴走 ) によるデータ EEPROM への偶発的な
書き込みを回避するための手順です。WREN ビット
は、EEPROM を書き換える場合を除き、常にクリ
アしておいてください。WREN ビットは、ハード
ウェアではクリアされません。
DATA_EE_ADDR
EEADR
EECON1, EEPGD
EECON1, CFGS
EECON1, RD
EEDATA, W
;
;
;
;
;
;
Data Memory Address to read
Point to DATA memory
Access EEPROM
EEPROM Read
W = EEDATA
データ EEPROM への書き込み
Required
Sequence
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
BCF
BCF
BSF
BCF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
BSF
DATA_EE_ADDR_LOW
EEADR
DATA_EE_ADDR_HI
EEADRH
DATA_EE_DATA
EEDATA
EECON1, EEPGD
EECON1, CFGS
EECON1, WREN
INTCON, GIE
55h
EECON2
0AAh
EECON2
EECON1, WR
INTCON, GIE
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
BCF
EECON1, WREN
; User code execution
; Disable writes on write complete (EEIF set)
 2009 Microchip Technology Inc.
Data Memory Address to write
Data Memory Value to write
Point to DATA memory
Access EEPROM
Enable writes
Disable Interrupts
Write 55h
Write 0AAh
Set WR bit to begin write
Enable Interrupts
Preliminary
DS41303E_JP - ページ 99
PIC18F2XK20/4XK20
7.6
コード プロテクション時の動作
データ EEPROM の構成ワード内には、コードを保
護する専用のビットがあります。このビットが有効
な場合、外部からの読み出し、書き込み動作が不可
能になります。
マイクロコントローラ自体は、コード保護の構成
ビットの状態にかかわらず、内部データ EEPROM
を読み出し、書き込むことができます。詳細は、
23.0 項「CPU の特殊機能」を参照してください。
7.7
誤書き込み防止
状況によっては、データ EEPROM への書き込みを
禁止した方が望ましい場合があります。EEPROM へ
の誤書き込みを防止するために、さまざまなメカニ
ズムが実装されています。例えば、WREN ビットは
電源投入時にクリアされます。更に、パワーアップ
タイマがタイムアウトするまで (TPWRT、パラメー
タ 33)、EEPROM への書き込みが阻止されます。
また、書き込み開始シーケンスと WREN ビットの
組み合わせにより、ブラウンアウト、電源グリッ
チ、ソフトウェアの不具合などに起因する偶発的な
書き込みを予防しています。
7.8
データ EEPROM の使用
データ EEPROM は書き込み耐性が高く、バイト単
位のアドレス指定が可能なメモリ アレイで、頻繁に
書き換えが必要な情報 ( プログラム変数や使用頻度
の高いデータなど ) の格納に適しています。データ
EEPROM の中に、頻繁に書き換える変数とそうでな
い変数が混在する場合、バイト単位では最大書き込
みサイクル数 ( 仕様 D120) を超えていなくとも、
EEPROM 全体としての最大書き込みサイクル数 ( 仕
様 D124) を超えてしまうことがあります。このよう
な場合は、アレイをリフレッシュする必要がありま
す。このため、あまり変化しない変数 ( 定数、ID、
較正値など ) は、フラッシュ プログラム メモリに格
納するようにしてください。
EEPROM の簡単なリフレッシュ ルーチンを例 7-3
に示します。
注:
例 7-3:
データ EEPROM を定数やほとんど変更さ
れないデータの保存にしか使わない場合
は、アレイ リフレッシュが必要になる可
能性は低くなります。仕様を参照してくだ
さい。
データ EEPROM のリフレッシュ ルーチン
CLRF
BCF
BCF
BCF
BSF
EEADR
EECON1,
EECON1,
INTCON,
EECON1,
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
BTFSC
BRA
INCFSZ
BRA
EECON1, RD
55h
EECON2
0AAh
EECON2
EECON1, WR
EECON1, WR
$-2
EEADR, F
LOOP
BCF
BSF
EECON1, WREN
INTCON, GIE
CFGS
EEPGD
GIE
WREN
Loop
DS41303E_JP - ページ 100
;
;
;
;
;
;
;
;
;
;
;
;
;
Start at address 0
Set for memory
Set for Data EEPROM
Disable interrupts
Enable writes
Loop to refresh array
Read current address
Write 55h
Write 0AAh
Set WR bit to begin write
Wait for write to complete
; Increment address
; Not zero, do it again
; Disable writes
; Enable interrupts
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 7-1:
データ EEPROM に関連するレジスタ
Name
Bit 7
Bit 6
INTCON
GIE/GIEH
EEADR
EEADR7
EEADR6
—
—
EEADRH
(1)
Bit 5
PEIE/GIEL TMR0IE
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0
—
—
—
—
EEADR9 EEADR8
59
59
EEDATA
EEPROM Data Register
59
EECON2
EEPROM Control Register 2 (not a physical register)
59
EECON1
EEPGD
CFGS
—
FREE
WRERR
WREN
WR
RD
59
IPR2
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
60
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
60
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
60
記号の説明 : — = 未実装。
「0」として読み出し。網掛けのビットはフラッシュ /EEPROM へのアクセスでは
使用しません。
注 1: PIC18F26K20/PIC18F46K20 のみ。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 101
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 102
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
8.0
8 x 8 ハードウェア乗算器
8.1
概要
例 8-1:
MOVF
MULWF
すべての PIC18 デバイスは、ALU の一部として 8 x
8 のハードウェア乗算器を搭載しています。この乗
算器は符号なしの演算を実行し、16 ビットの計算
結果を積レジスタ ペア PRODH:PRODL に格納しま
す。乗算器による演算は、STATUS レジスタ内のい
ずれのフラグにも影響を与えません。
ARG1, W
ARG2
例 8-2:
乗算をハードウェアによって実行すると、1 命令サ
イクルで完了できます。この機能には計算のスルー
プットが向上し、乗算アルゴリズムのコード サイ
ズが小さくなるという利点があり、従来は専らデジ
タル シグナル プロセッサが使われていた多くのア
プリケーションにPIC18デバイスを適用できるよう
になります。ハードウェアおよびソフトウェアによ
るさまざまな乗算を、メモリ使用量と実行時間につ
いて比較した結果を表 8-1 に示します。
8.2
8 x 8 符号なし乗算ルーチン
;
; ARG1 * ARG2 ->
; PRODH:PRODL
8 x 8 符号付き乗算ルーチン
MOVF
MULWF
ARG1, W
ARG2
BTFSC
SUBWF
ARG2, SB
PRODH, F
MOVF
BTFSC
SUBWF
ARG2, W
ARG1, SB
PRODH, F
;
;
;
;
;
ARG1 * ARG2 ->
PRODH:PRODL
Test Sign Bit
PRODH = PRODH
- ARG1
; Test Sign Bit
; PRODH = PRODH
;
- ARG2
動作
例 8-1 に、符号なし 8 x 8 乗算の命令シーケンスを示
します。引数の 1 つが既に W レジスタ (WREG) に格
納されている場合、必要な命令は 1 つだけです。
例 8-2 に、符号付き 8 x 8 乗算のシーケンスを示し
ます。引数の符号ビットを考慮して各引数の最上
位ビット (MSb) を判定し、必要な減算を実行して
います。
表 8-1:
さまざまな乗算の性能比較
Routine
8 x 8 unsigned
8 x 8 signed
16 x 16 unsigned
16 x 16 signed
Multiply Method
Program
Memory
(Words)
Cycles
(Max)
Without hardware multiply
13
Hardware multiply
1
Without hardware multiply
33
Hardware multiply
6
Without hardware multiply
21
Time
@ 40 MHz
@ 10 MHz
@ 4 MHz
69
6.9 s
27.6 s
69 s
1
100 ns
400 ns
1 s
91
9.1 s
36.4 s
91 s
6
600 ns
2.4 s
6 s
242
24.2 s
96.8 s
242 s
Hardware multiply
28
28
2.8 s
11.2 s
28 s
Without hardware multiply
52
254
25.4 s
102.6 s
254 s
Hardware multiply
35
40
4.0 s
16.0 s
40 s
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 103
PIC18F2XK20/4XK20
例 8-3 に、符号なし 16 x 16 乗算のシーケンスを示
します。式 8-1 は、使用したアルゴリズムです。32
ビットの計算結果は 4 つのレジスタ (RES<3:0>) に
格納されます。
式 8-1:
16 x 16 符号なし乗算アルゴリズム
RES3:RES0
例 8-3:
=
=
ARG1H:ARG1L  ARG2H:ARG2L
(ARG1H  ARG2H  216) +
(ARG1H  ARG2L  28) +
(ARG1L  ARG2H  28) +
(ARG1L  ARG2L)
式 8-2:
例 8-4:
16 x 16 符号なし乗算ルーチン
MOVF
MULWF
ARG1L, W
ARG2L
MOVFF
MOVFF
PRODH, RES1
PRODL, RES0
MOVF
MULWF
ARG1H, W
ARG2H
MOVFF
MOVFF
PRODH, RES3
PRODL, RES2
MOVF
MULWF
ARG1L, W
ARG2H
MOVF
ADDWF
MOVF
ADDWFC
CLRF
ADDWFC
PRODL, W
RES1, F
PRODH, W
RES2, F
WREG
RES3, F
MOVF
MULWF
ARG1H, W
ARG2L
MOVF
ADDWF
MOVF
ADDWFC
CLRF
ADDWFC
PRODL, W
RES1, F
PRODH, W
RES2, F
WREG
RES3, F
; ARG1L * ARG2L->
; PRODH:PRODL
;
;
ARG1L * ARG2H->
PRODH:PRODL
Add cross
products
ARG1H * ARG2L->
PRODH:PRODL
Add cross
products
PRODH, RES1
PRODL, RES0
MOVF
MULWF
ARG1H, W
ARG2H
MOVFF
MOVFF
PRODH, RES3
PRODL, RES2
MOVF
MULWF
ARG1L, W
ARG2H
MOVF
ADDWF
MOVF
ADDWFC
CLRF
ADDWFC
PRODL, W
RES1, F
PRODH, W
RES2, F
WREG
RES3, F
MOVF
MULWF
ARG1H, W
ARG2L
MOVF
ADDWF
MOVF
ADDWFC
CLRF
ADDWFC
PRODL, W
RES1, F
PRODH, W
RES2, F
WREG
RES3, F
BTFSS
BRA
MOVF
SUBWF
MOVF
SUBWFB
ARG2H, 7
SIGN_ARG1
ARG1L, W
RES2
ARG1H, W
RES3
; ARG2H:ARG2L neg?
; no, check ARG1
;
;
;
ARG1H, 7
CONT_CODE
ARG2L, W
RES2
ARG2H, W
RES3
; ARG1H:ARG1L neg?
; no, done
;
;
;
; ARG1H * ARG2H ->
; PRODH:PRODL
;
;
;
;
;
;
;
;
;
;
ARG1L * ARG2H ->
PRODH:PRODL
Add cross
products
;
;
;
;
;
;
;
;
;
ARG1H * ARG2L ->
PRODH:PRODL
Add cross
products
;
例 8-4 に、符号付き 16 x 16 乗算のシーケンスを示
します。式 8-2 は、使用したアルゴリズムです。32
ビットの計算結果は 4 つのレジスタ (RES<3:0>) に
格納されます。引数の符号ビットを考慮して各引数
ペアの最上位ビット (MSb) を判定し、必要な減算を
実行しています。
DS41303E_JP - ページ 104
MOVFF
MOVFF
; ARG1L * ARG2L ->
; PRODH:PRODL
;
;
;
;
;
;
;
;
;
;
;
;
;
ARG1L, W
ARG2L
;
;
;
;
;
;
;
;
;
;
16 x 16 符号付き乗算ルーチン
MOVF
MULWF
;
;
; ARG1H * ARG2H->
; PRODH:PRODL
;
;
16 x 16 符号付き乗算アルゴリズム
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)
;
SIGN_ARG1
BTFSS
BRA
MOVF
SUBWF
MOVF
SUBWFB
;
CONT_CODE
:
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
9.0
9.2
割り込み
PIC18F2XK20/4XK20 デバイスには複数の割り込み
要因があり、割り込みの優先度機能により、ほとん
どの割り込み要因に優先度の高低を割り当てるこ
とが で きま す。高い 優先 度 の割 り込 み ベク タ は
0008h、低い優先度の割り込みベクタは 0018h です。
低い優先度の割り込みを処理している間、高い優先
度の割り込みイベントはこの処理に割り込むこと
ができます。
割り込み動作は、次の 10 個のレジスタによって制
御します。
•
•
•
•
RCON
INTCON
INTCON2
INTCON3
• PIR1、PIR2
• PIE1、PIE2
• IPR1、IPR2
これらのレジスタ内のビットのシンボル名には
MPLAB® IDE に付属のマイクロチップ ヘッダ ファ
イル内のものを使用することを推奨します。そうす
れば、アセンブラまたはコンパイラが、規定のレジ
スタ内にこれらのビットを自動的に配置します。
通常、割り込み要因には、その動作を制御する次の
3 つのビットがあります。
• フラグ ビットは、割り込みイベントが発生した
ことを示します。
• イネーブル ビットは、フラグ ビットがセットさ
れたときに、プログラムの実行を割り込みベク
タ アドレスに分岐できるようにします。
• 優先度ビットは、高優先度と低優先度を選択し
ます。
9.1
ミッドレンジ互換性
IPEN ビットがクリアされている場合 ( デフォルト
状態 )、割り込みの優先度機能は無効となり、割り
込み動作は PIC® マイクロコントローラのミッドレ
ンジ デバイス互換になります。互換モードの場合、
IPRx レジスタの割り込み優先度ビットは無視され
ます。INTCON レジスタの PEIE ビットは、周辺機
能によるグローバル割り込みを許可するイネーブ
ル ビットです。PEIE ビットがクリアされていると
周辺機能による割り込みのみが禁止され、セットさ
れている場合は、GIE ビットもセットされている場
合に周辺機能の割り込みが許可されます。INTCON
レジスタの GIE ビットは、周辺機能以外のすべての
割り込みを許可するか、周辺機能を含むすべての割
り込みを禁止するグローバル割り込みのイネーブ
ル ビットです。互換モードでは、すべての割り込
みがアドレス 0008h に分岐します。
 2009 Microchip Technology Inc.
割り込み優先度
RCON レジスタの IPEN ビットをセットすると、割
り込み優先度機能が有効になります。割り込み優先
度を有効にした場合、互換モードのグローバル割り
込みイネーブル ビットである GIE および PEIE は、
高優先度グローバル割り込みイネーブル ビット
GIEH、および低優先度グローバル割り込みイネー
ブル ビット GIEL に置き換わります。INTCON レジ
スタの GIEH ビットをセットすると、関連するレジ
スタまたは INTCONx レジスタの優先度ビットが
セットされている割り込み ( 高優先度割り込み ) が
すべて許可されます。GIEH ビットがクリアされて
いる場合は、低優先度に設定されたものを含め、す
べての割り込みが禁止されます。INTCON レジスタ
の GIEL ビットをクリアすると、対応する優先度
ビットがクリアされている割り込み ( 低優先度割り
込み ) だけが禁止されます。GIEL ビットがセット
されている場合は、GIEH ビットもセットされてい
れば低優先度の割り込みが許可されます。
割り込みフラグ、イネーブル ビットおよび該当す
るグローバル割り込みイネーブル ビットがすべて
セットされている状態で割り込みが発生すると、プ
ログラムは割り込み要因の優先度ビットのレベル
に応じて、高優先度の場合は 0008h、低優先度の場
合は 0018h に即座に分岐します。各割り込みは、対
応する割り込みイネーブル ビットによって個別に
禁止できます。
9.3
割り込み応答
割り込みに応答する場合、更なる割り込みを禁止す
るために、グローバル割り込みイネーブル ビット
がクリアされます。IPEN ビットがクリアされてい
る場合は、GIE ビットがグローバル割り込みのイ
ネーブル ビットになります。IPEN ビットがセット
されていて、割り込みの優先度機能が有効な場合
は、GIEH ビットが高優先度の、GIEL が低優先度の
グローバル割り込みイネーブル ビットになります。
高優先度の割り込み要因は、低優先度の割り込み処
理に割り込むことができます。高優先度の割り込み
処理が実行されている間は、低優先度の割り込みは
処理されません。
リターン アドレスがスタックにプッシュされ、PC
には割り込みベクタ アドレス (0008h または 0018h)
が格納されます。割り込みサービス ルーチン内で
INTCONx および PIRx レジスタの割り込みフラグ
ビットをポーリングすると、割り込み要因を特定で
きます。割り込みを再び許可する前に、割り込みフ
ラグ ビットをソフトウェアでクリアする必要があ
ります。これにより同じ割り込みが繰り返されるこ
とを防止します。
「割り込みからのリターン」命令である RETFIE は、
割り込みルーチンを終了し、GIE ビット ( 優先度レ
ベルを使用している場合は GIEH または GIEL) を
セットして、再度割り込みを許可します。
Preliminary
DS41303E_JP - ページ 105
PIC18F2XK20/4XK20
INT ピン割り込みや PORTB 状態変化割り込みなど
の外部割り込みイベントでは、割り込みレイテンシ
は 3 ~ 4 命令サイクルとなります。1 サイクル命令
も 2 サイクル命令も正確なレイテンシは同じです。
対応するイネーブル ビットやグローバル割り込み
イネーブル ビットの状態にかかわらず、個々の割
り込みフラグ ビットがセットされます。
注:
割り込みが 1 つでも許可されている場合
は、いずれの割り込み制御レジスタも、書
き換えに MOVFF 命令を使わないでくださ
い。マイクロコントローラが不規則な動作
を示す場合があります。
図 9-1:
PIC18 の割り込みロジック
TMR0IF
TMR0IE
TMR0IP
RBIF
RBIE
RBIP
INT0IF
INT0IE
Wake-up if in
Idle or Sleep modes
(1)
Interrupt to CPU
Vector to Location
0008h
INT1IF
INT1IE
INT1IP
INT2IF
INT2IE
INT2IP
SSPIF
SSPIE
SSPIP
GIEH/GIE
ADIF
ADIE
ADIP
IPEN
RCIF
RCIE
RCIP
IPEN
Additional Peripheral Interrupts
High Priority Interrupt Generation
Low Priority Interrupt Generation
SSPIF
SSPIE
SSPIP
ADIF
ADIE
ADIP
RCIF
RCIE
RCIP
Interrupt to CPU
Vector to Location
0018h
TMR0IF
TMR0IE
TMR0IP
RBIF
RBIE
RBIP
(1)
GIEH/GIE
GIEL/PEIE
INT1IF
INT1IE
INT1IP
Additional Peripheral Interrupts
INT2IF
INT2IE
INT2IP
注
1:
RBIF 割り込みでは、個別ピン IOCB もイネーブルする必要があります。
DS41303E_JP - ページ 106
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
9.4
INTCON レジスタ
注:
INTCON レジスタは、さまざまなイネーブル、優先
度、フラグ ビットを含む、読み出し / 書き込み可能
なレジスタです。
レジスタ 9-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
RBIE
TMR0IF
INT0IF
RBIF
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。「0」として読み出し
「1」= セット
「0」= クリア
x = 不明
ビット 7
GIE/GIEH: グローバル割り込みイネーブル ビット
IPEN = 0 のとき :
1 = すべてのマスクされていない割り込みを許可する
0 = 周辺割り込みを含む、すべての割り込みを禁止する
IPEN = 1 のとき :
1 = すべての高優先度割り込みを許可する
0 = 低優先度の割り込みを含む、すべての割り込みを禁止する
ビット 6
PEIE/GIEL: 周辺割り込みイネーブル ビット
IPEN = 0 のとき :
1 = すべてのマスクされていない周辺割り込みを許可する
0 = すべての周辺割り込みを禁止する
IPEN = 1 のとき :
1 = すべての低優先度割り込みを許可する
0 = すべての低優先度割り込みを禁止する
ビット 5
TMR0IE: TMR0 オーバーフロー割り込みイネーブル ビット
1 = TMR0 オーバーフロー割り込みを許可する
0 = TMR0 オーバーフロー割り込みを禁止する
ビット 4
INT0IE: INT0 外部割り込みイネーブル ビット
1 = INT0 外部割り込みを許可する
0 = INT0 外部割り込みを禁止する
ビット 3
RBIE: RB ポート変化割り込みイネーブル ビット (2)
1 = RB ポート変化割り込みを許可する
0 = RB ポート変化割り込みを禁止する
ビット 2
TMR0IF: TMR0 オーバーフロー割り込みフラグ ビット
1 = TMR0 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 )
0 = TMR0 レジスタはオーバーフローしていない
ビット 1
INT0IF: INT0 外部割り込みフラグ ビット
1 = INT0 外部割り込みが発生した ( ソフトウェアによるクリアが必要 )
0 = INT0 外部割り込みは発生していない
ビット 0
RBIF: RB ポート変化割り込みフラグ ビット (1)
1 = RB<7:4> ピンのうち少なくとも 1 つの状態が変化した ( ソフトウェアによるクリアが必要 )
0 = RB<7:4> ピンの状態は、いずれも変化していない
注 1:
2:
不一致状態になるたびに、RBIF がセットされます。
PORTB を読み出すと不一致状態が終了し、このビットをクリアできます。
RB ポート変化割り込みでは、個々のピンに対応する IOCB も有効にしておく必要があります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 107
PIC18F2XK20/4XK20
レジスタ 9-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
RBPU
INTEDG0
INTEDG1
INTEDG2
—
TMR0IP
—
RBIP
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。「0」として読み出し
「1」= セット
「0」= クリア
x = 不明
ビット 7
RBPU: PORTB プルアップ イネーブル ビット
1 = すべての PORTB プルアップを無効にする
0 = ピンが入力であり、対応する WPUB ビットがセットされている場合に、PORTB プルアッ
プを有効にする
ビット 6
INTEDG0: 外部割り込み 0 エッジ選択ビット
1 = 立ち上がりエッジで割り込み
0 = 立ち下がりエッジで割り込み
ビット 5
INTEDG1: 外部割り込み 1 エッジ選択ビット
1 = 立ち上がりエッジで割り込み
0 = 立ち下がりエッジで割り込み
ビット 4
INTEDG2: 外部割り込み 2 エッジ選択ビット
1 = 立ち上がりエッジで割り込み
0 = 立ち下がりエッジで割り込み
ビット 3
未実装 :「0」として読み出し
ビット 2
TMR0IP: TMR0 オーバーフロー割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 1
未実装 :「0」として読み出し
ビット 0
RBIP: RB ポート変化割り込み優先度ビット
1 = 高優先度
0 = 低優先度
注:
割り込み条件が発生すると、対応するイ
ネーブル ビットまたはグローバル イネー
ブル ビットの状態に関係なく割り込みフ
ラグ ビットがセットされます。割り込み
を許可する前に、該当する割り込みフラグ
ビットをユーザー ソフトウェアで必ずク
リアしてください。この機能により、ソフ
トウェア ポーリングが可能になります。
DS41303E_JP - ページ 108
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 9-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 = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。「0」として読み出し
「1」= セット
「0」= クリア
ビット 7
INT2IP: INT2 外部割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 6
INT1IP: INT1 外部割り込み優先度ビット
1 = 高優先度
0 = 低優先度
x = 不明
ビット 5
未実装 :「0」として読み出し
ビット 4
INT2IE: INT2 外部割り込みイネーブル ビット
1 = INT2 外部割り込みを許可する
0 = INT2 外部割り込みを禁止する
ビット 3
INT1IE: INT1 外部割り込みイネーブル ビット
1 = INT1 外部割り込みを許可する
0 = INT1 外部割り込みを禁止する
ビット 2
未実装 :「0」として読み出し
ビット 1
INT2IF: INT2 外部割り込みフラグ ビット
1 = INT2 外部割り込みが発生した ( ソフトウェアによるクリアが必要 )
0 = INT2 外部割り込みは発生していない
ビット 0
INT1IF: INT1 外部割り込みフラグ ビット
1 = INT1 外部割り込みが発生した ( ソフトウェアによるクリアが必要 )
0 = INT1 外部割り込みは発生していない
注:
割り込み条件が発生すると、対応するイ
ネーブル ビットまたはグローバル イネー
ブル ビットの状態に関係なく割り込みフ
ラグ ビットがセットされます。割り込み
を許可する前に、該当する割り込みフラグ
ビットをユーザー ソフトウェアで必ずク
リアしてください。この機能により、ソフ
トウェア ポーリングが可能になります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 109
PIC18F2XK20/4XK20
9.5
PIR レジスタ
注 1:
割り込み条件が発生すると、対応するイ
ネーブル ビットまたはグローバル割り
込みイネーブル ビット (INTCON レジス
タの GIE) の状態に関係なく割り込みフ
ラグ ビットがセットされます。
2:
割り込みに対する処理を完了し、その割
り込みを再び許可する前に、該当する割
り込みフラグ ビットをユーザー ソフト
ウェアで必ずクリアしてください。
PIR レジスタには各種周辺割り込みに対応するフラ
グ ビットが含まれます。周辺割り込み要因の数が
多いことから、周辺割り込み要求フラグ レジスタ
は 2 つ (PIR1 および PIR2) あります。
レジスタ 9-4:
PIR1: 周辺割り込み要求 ( フラグ ) レジスタ 1
R/W-0
PSPIF(1)
bit 7
R/W-0
ADIF
R-0
RCIF
R-0
TXIF
R/W-0
SSPIF
R/W-0
CCP1IF
R/W-0
TMR2IF
R/W-0
TMR1IF
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
PSPIF: パラレル スレーブ ポート読み出し / 書き込み割り込みフラグ ビット (1)
1 = 読み出しまたは書き込み動作が実行された ( ソフトウェアによるクリアが必要 )
0 = 読み出しまたは書き込み動作は実行されていない
ビット 6
ADIF: A/D コンバータ割り込みフラグ ビット
1 = A/D 変換が完了した ( ソフトウェアによるクリアが必要 )
0 = A/D 変換が完了していない、または開始されていない
RCIF: EUSART 受信割り込みフラグ ビット
1 = EUSART 受信バッファの RCREG がフル状態 (RCREG を読み出すことでクリア )
0 = EUSART 受信バッファが空
TXIF: EUSART 送信割り込みフラグ ビット
1 = EUSART 送信バッファの TXREG が空 (TXREG に書き込むことでクリア )
0 = EUSART 送信バッファがフル状態
SSPIF: マスタ同期シリアル ポート割り込みフラグ ビット
1 = 送受信が完了した ( ソフトウェアによるクリアが必要 )
0 = 送受信待ち
CCP1IF: CCP1 割り込みフラグ ビット
キャプチャ モード :
1 = TMR1 レジスタ キャプチャが発生した ( ソフトウェアによるクリアが必要 )
0 = TMR1 レジスタ キャプチャは発生していない
コンペア モード :
1 = TMR1 レジスタ コンペアの一致が発生した ( ソフトウェアによるクリアが必要 )
0 = TMR1 レジスタ コンペアの一致は発生していない
PWM モード :
このモードでは使用しません
TMR2IF: TMR2/PR2 一致割り込みフラグ ビット
1 = TMR2/PR2 一致が発生した ( ソフトウェアによるクリアが必要 )
0 = TMR2/PR2 一致は発生していない
TMR1IF: TMR1 オーバーフロー割り込みフラグ ビット
1 = TMR1 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 )
0 = TMR1 レジスタはオーバーフローしていない
ビット 5
ビット 4
ビット 3
ビット 2
ビット 1
ビット 0
注 1:
PSPIF ビットは 28 ピンデバイスには未実装で「0」として読み出されます。
DS41303E_JP - ページ 110
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 9-5:
PIR2: 周辺割り込み要求 ( フラグ ) レジスタ 2
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
OSCFIF: オシレータ障害割り込みフラグ ビット
1 = デバイス オシレータに障害が発生し、クロック入力が HFINTOSC に変更された
( ソフトウェアによるクリアが必要 )
0 = デバイス クロックが動作中
ビット 6
C1IF: コンパレータ C1 割り込みフラグ ビット
1 = コンパレータ C1 の出力が変化した ( ソフトウェアによるクリアが必要 )
0 = コンパレータ C1 の出力は変化していない
ビット 5
C2IF: コンパレータ C2 割り込みフラグ ビット
1 = コンパレータ C2 の出力が変化した ( ソフトウェアによるクリアが必要 )
0 = コンパレータ C2 の出力は変化していない
ビット 4
EEIF: データ EEPROM/ フラッシュの書き込み動作割り込みフラグ ビット
1 = 書き込み動作が完了した ( ソフトウェアによるクリアが必要 )
0 = 書き込み動作が完了していない、または開始されていない
ビット 3
BCLIF: バス衝突割り込みフラグ ビット
1 = バス衝突が発生した ( ソフトウェアによるクリアが必要 )
0 = バス衝突は発生していない
ビット 2
HLVDIF: 低電圧検出割り込みフラグ ビット
1 = 低電圧状態が発生した ( 電圧遷移の方向は HLVDCON レジスタの VDIRMAG ビットで判定 )
0 = 低電圧状態は発生していない
ビット 1
TMR3IF: TMR3 オーバーフロー割り込みフラグ ビット
1 = TMR3 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 )
0 = TMR3 レジスタはオーバーフローしていない
ビット 0
CCP2IF: CCP2 割り込みフラグ ビット
キャプチャ モード :
1 = TMR1 レジスタ キャプチャが発生した ( ソフトウェアによるクリアが必要 )
0 = TMR1 レジスタ キャプチャは発生していない
コンペア モード :
1 = TMR1 レジスタ コンペアの一致が発生した ( ソフトウェアによるクリアが必要 )
0 = TMR1 レジスタ コンペアの一致は発生していない
PWM モード :
このモードでは使用しません
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 111
PIC18F2XK20/4XK20
9.6
PIE レジスタ
PIE レジスタには各種周辺割り込みに対応するイ
ネーブル ビットが含まれます。周辺割り込み要因の
数が多いことから、周辺割り込みイネーブル レジス
タは 2 つ (PIE1 および PIE2) あります。IPEN = 0 の
とき、これらの周辺割り込みのいずれかを許可する
には PEIE ビットをセットする必要があります。
レジスタ 9-6:
PIE1: 周辺割り込みイネーブル ( フラグ ) レジスタ 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
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
PSPIE: パラレル スレーブ ポート読み出し / 書き込み割り込みイネーブル ビット (1)
1 = PSP 読み出し / 書き込み割り込みを許可する
0 = PSP 読み出し / 書き込み割り込みを禁止する
ビット 6
ADIE: A/D コンバータ割り込みイネーブル ビット
1 = A/D 割り込みを許可する
0 = A/D 割り込みを禁止する
ビット 5
RCIE: EUSART 受信割り込みイネーブル ビット
1 = EUSART 受信割り込みを許可する
0 = EUSART 受信割り込みを禁止する
ビット 4
TXIE: EUSART 送信割り込みイネーブル ビット
1 = EUSART 送信割り込みを許可する
0 = EUSART 送信割り込みを禁止する
ビット 3
SSPIE: マスタ同期シリアル ポート割り込みイネーブル ビット
1 = MSSP 割り込みを許可する
0 = MSSP 割り込みを禁止する
ビット 2
CCP1IE: CCP1 割り込みイネーブル ビット
1 = CCP1 割り込みを許可する
0 = CCP1 割り込みを禁止する
ビット 1
TMR2IE: TMR2/PR2 一致割り込みイネーブル ビット
1 = TMR2/PR2 一致割り込みを許可する
0 = TMR2/PR2 一致割り込みを禁止する
ビット 0
TMR1IE: TMR1 オーバーフロー割り込みイネーブル ビット
1 = TMR1 オーバーフロー割り込みを許可する
0 = TMR1 オーバーフロー割り込みを禁止する
注 1:
PSPIE ビットは 28 ピンデバイスには未実装で「0」として読み出されます。
DS41303E_JP - ページ 112
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 9-7:
PIE2: 周辺割り込みイネーブル ( フラグ ) レジスタ 2
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
OSCFIE: オシレータ障害割り込みイネーブル ビット
1 = 許可
0 = 禁止
ビット 6
C1IE: コンパレータ C1 割り込みイネーブル ビット
1 = 許可
0 = 禁止
ビット 5
C2IE: コンパレータ C2 割り込みイネーブル ビット
1 = 許可
0 = 禁止
ビット 4
EEIE: データ EEPROM/ フラッシュの書き込み動作割り込みイネーブル ビット
1 = 許可
0 = 禁止
ビット 3
BCLIE: バス衝突割り込みイネーブル ビット
1 = 許可
0 = 禁止
ビット 2
HLVDIE: 低電圧検出割り込みイネーブル ビット
1 = 許可
0 = 禁止
ビット 1
TMR3IE: TMR3 オーバーフロー割り込みイネーブル ビット
1 = 許可
0 = 禁止
ビット 0
CCP2IE: CCP2 割り込みイネーブル ビット
1 = 許可
0 = 禁止
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 113
PIC18F2XK20/4XK20
9.7
IPR レジスタ
IPR レジスタには各種周辺割り込みに対応する優先
度ビットが含まれます。周辺割り込み要因の数が多
いことから、周辺割り込み優先度レジスタは 2 つ
(IPR1 および IPR2) あります。優先度ビットを使用す
るには、割り込み優先度イネーブル ビット (IPEN) を
セットする必要があります。
レジスタ 9-8:
IPR1: 周辺割り込み優先度レジスタ 1
R/W-1
PSPIP
(1)
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 = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。「0」として読み出し
「1」= セット
「0」= クリア
x = 不明
ビット 7
PSPIP: パラレル スレーブ ポート読み出し / 書き込み割り込み優先度ビット (1)
1 = 高優先度
0 = 低優先度
ビット 6
ADIP: A/D コンバータ割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 5
RCIP: EUSART 受信割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 4
TXIP: EUSART 送信割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 3
SSPIP: マスタ同期シリアル ポート割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 2
CCP1IP: CCP1 割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 1
TMR2IP: TMR2/PR2 一致割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 0
TMR1IP: TMR1 オーバーフロー割り込み優先度ビット
1 = 高優先度
0 = 低優先度
注 1:
PSPIF ビットは 28 ピンデバイスには未実装で「0」として読み出されます。
DS41303E_JP - ページ 114
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 9-9:
IPR2: 周辺割り込み優先度レジスタ 2
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。「0」として読み出し
「1」= セット
「0」= クリア
x = 不明
ビット 7
OSCFIP: オシレータ障害割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 6
C1IP: コンパレータ C1 割り込み優先度 ビット
1 = 高優先度
0 = 低優先度
ビット 5
C2IP: コンパレータ C2 割り込み優先度 ビット
1 = 高優先度
0 = 低優先度
ビット 4
EEIP: データ EEPROM/ フラッシュの書き込み動作割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 3
BCLIP: バス衝突割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 2
HLVDIP: 低電圧検出割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 1
TMR3IP: TMR3 オーバーフロー割り込み優先度ビット
1 = 高優先度
0 = 低優先度
ビット 0
CCP2IP: CCP2 割り込み優先度ビット
1 = 高優先度
0 = 低優先度
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 115
PIC18F2XK20/4XK20
9.8
RCON レジスタ
RCON レジスタには、直近のリセットまたはアイド
ル / スリープ モードからのウェイクアップの原因を
判断するためのフラグ ビットが含まれています。ま
た、割り込み優先度を有効にする IPEN ビットもこ
のレジスタ内にあります。
SBOREN ビットおよびリセット フラグ ビットの動
作については、4.1 項「RCON レジスタ」に詳細な
説明があります。
レジスタ 9-10:
RCON: リセット制御レジスタ
R/W-0
R/W-1
U-0
(1)
IPEN
SBOREN
—
R/W-1
R-1
RI
TO
R-1
R/W-0
PD
(1)
POR
R/W-0
BOR
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
ビット 7
IPEN: 割り込み優先度イネーブル ビット
1 = 割り込みの優先度設定が有効
0 = 割り込みの優先度設定が無効 ( ミッドレンジ互換モード )
ビット 6
SBOREN: ソフトウェア BOR イネーブル ビット (1)
詳細は、レジスタ 4-1 を参照してください。
ビット 5
未実装 :「0」として読み出し
ビット 4
RI: RESET 命令フラグ ビット
詳細は、レジスタ 4-1 を参照してください。
ビット 3
TO: ウォッチドッグ タイムアウト フラグ ビット
詳細は、レジスタ 4-1 を参照してください。
ビット 2
PD: パワーダウン検出フラグ ビット
詳細は、レジスタ 4-1 を参照してください。
ビット 1
POR: パワーオン リセット ステータス ビット
詳細は、レジスタ 4-1 を参照してください。
ビット 0
BOR: ブラウンアウト リセット ステータス ビット
詳細は、レジスタ 4-1 を参照してください。
注 1:
x = 不明
実際のリセット値は、デバイスの構成およびデバイス リセットの種類によって決まります。
詳細は、レジスタ 4-1 を参照してください。
DS41303E_JP - ページ 116
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
9.9
INTn ピン割り込み
9.10
RB0/INT0、RB1/INT1、RB2/INT2 ピンからの外部割
り込みは、パルスのエッジによってトリガされま
す。INTCON2 レジスタの対応する INTEDGx ビッ
トがセットされている場合 (= 1)、割り込みは立ち
上がりエッジによってトリガされます。ビットがク
リアされている場合は、立ち下がりエッジです。有
効なエッジが RBx/INTx ピンに印加されると、対応
するフラグ ビット INTxF がセットされます。これ
らの割り込みは、
対応するイネーブル ビット INTxE
をクリアすることよって禁止できます。この割り込
みを再び許可する前に、割り込みサービス ルーチ
ン内でフラグ ビット INTxF をクリアしておく必要
があります。
すべての外部割り込み (INT0、INT1、INT2) は、プ
ロセッサをアイドルまたはスリープ モードから
ウェイクアップすることができます。ただし、これ
らのモードに移行する前に INTxE ビットをセット
しておく必要があります。グローバル割り込みイ
ネーブル ビット GIE がセットされている場合、プ
ロセッサはウェイクアップ後に割り込みベクタに
分岐します。
INT1 および INT2 の割り込み優先度は、INTCON3
レジスタの割り込み優先度ビット INT1IP および
INT2IP に含まれる値によって決まります。INT0 に
は優先度ビットが割り当てられていません。この割
り込み要因は常に高優先度として処理されます。
TMR0 割り込み
8 ビット モード ( デフォルト ) では、TMR0 レジス
タがオーバーフローすると (FFh  00h)、フラグ
ビット TMR0IF がセットされます。16 ビット モー
ドの場合は、TMR0H:TMR0L レジスタ ペアがオー
バーフローしたときに (FFFFh 0000h)、TMR0IF
がセットされます。この割り込みは、INTCON レジ
スタのイネーブル ビット TMR0IE をセット / クリア
することによって許可 / 禁止できます。タイマ 0
(TMR0) の割り込み優先度は、INTCON2 レジスタの
割り込み優先度ビットTMR0IPに含まれる値によっ
て決まります。タイマ 0 モジュールの動作について
は、12.0 項「タイマ 0 モジュール」を参照してくだ
さい。
9.11
PORTB 状態変化割り込み
PORTB<7:4> の入力が変化すると、INTCON レジス
タのフラグ ビット RBIF がセットされます。この割
り込みは、INTCON レジスタのイネーブル ビット
RBIE をセット / クリアすることによって許可 / 禁止
できます。また、ピン自体も IOCB レジスタによっ
て 個 々 に 有 効 に 設 定 し て お く 必 要 が あ り ま す。
PORTB 状態変化割り込みの優先度は、INTCON2 レ
ジスタの割り込み優先度ビット RBIP に含まれる値
によって決まります。
9.12
割り込み中のコンテキスト保存
割り込み中は、リターン PC アドレスがスタックに
保存されます。更に、WREG、STATUS、BSR レジ
スタが高速リターン スタックに保存されます。割
り込みからの高速リターンを使用しない場合 (5.1.3
項「高速レジスタ スタック」参照 )、割り込みサー
ビス ルーチンの先頭で WREG、STATUS、BSR の各
レジスタの内容をユーザーが保存しなければなら
ない場合があります。ユーザー アプリケーション
によっては、他のレジスタの保存も必要になること
があります。例 9-1 は、割り込みサービス ルーチン
内で WREG、STATUS、BSR レジスタを保存および
リストアするコードの例です。
例 9-1:
MOVWF
MOVFF
MOVFF
;
; USER
;
MOVFF
MOVF
MOVFF
STATUS、WREG、BSR レジスタの RAM への保存
W_TEMP
STATUS, STATUS_TEMP
BSR, BSR_TEMP
; W_TEMP is in virtual bank
; STATUS_TEMP located anywhere
; BSR_TMEP located anywhere
ISR CODE
BSR_TEMP, BSR
W_TEMP, W
STATUS_TEMP, STATUS
 2009 Microchip Technology Inc.
; Restore BSR
; Restore WREG
; Restore STATUS
Preliminary
DS41303E_JP - ページ 117
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 118
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
10.0
I/O ポート
選択したデバイスおよび有効にした機能に応じて、
最大 5 つのポートを使用できます。I/O ポート ピン
の中には、デバイスの周辺機能に使用する代替ピン
として多重化されているものがあります。通常、周
辺機能を有効にした場合、そのピンは汎用 I/O ピン
としては使用できません。
各ポートの動作は次の 3 つのレジスタによって制御
されます。
• TRIS レジスタ ( データ方向レジスタ )
• PORT レジスタ ( デバイス ピンのレベル読み出し )
• LAT レジスタ ( 出力ラッチ )
データ ラッチ (LAT レジスタ ) は、I/O ピンが駆動
する値に対して Read-Modify-Write 動作を実行する
のに適しています。
他の周辺機能へのインターフェースを除いた汎用
I/O ポートの簡易モデルを図 10-1 に示します。
図 10-1:
汎用 I/O ポートの動作
RD LAT
Data
Bus
D
WR LAT
or Port
Q
I/O pin(1)
CK
WR TRIS
CK
他の PORTA ピンは、アナログ入力、アナログ VREF+
および VREF- 入力、コンパレータ電圧リファレンス
出力の機能が多重化されます。ANSEL レジスタの
ANS<4:0> ビットをセットすることにより、RA<3:0>
および RA5 ピンはアナログ ピンに設定されます。
こ
れはパワーオン リセット後のデフォルト設定です。
RA0 ~ RA5 ピンは、CM1CON0 および CM2CON0
レジスタの該当するビットを設定することで、コン
パレータの入力または出力としても使用できます。
Q
PORTA ピンをアナログ入力として使用する場合も、
そのドライバは TRISA レジスタによって制御され
ます。これらのピンをアナログ入力として使用する
際も、TRISA レジスタのビットをセットしたままに
するよう注意してください。
D
ENEN
RD Port
I/O ピンには、VDD および VSS に対する
保護ダイオードが接続されています。
例 10-1:
PORTA、TRISA、LATA レジスタ
PORTA は 8 ビット幅の双方向ポートです。これに
対応するデータ方向レジスタが TRISA です。TRISA
ビットをセットする (= 1) と、対応する PORTA ピン
が入力になります ( すなわち、出力ドライバが無効
になります )。TRISA ビットをクリアする (= 0) と、
対応する PORTA ピンが出力になります ( すなわち、
出力ドライバが有効になり、出力ラッチの内容が選
択したピンに出力されます )。
 2009 Microchip Technology Inc.
パワーオン リセット時、RA5 および
RA<3:0> ピンはアナログ入力として設定
され、
「0」と読み出されます。RA4 はデ
ジタル入力に設定されます。
RA4/T0CKI/C1OUTピンはシュミット トリガ入力で
す。その他の PORTA ピンはいずれも入力レベルが
TTL で、フル CMOS レベルの出力ドライバが接続
されています。
Input
Buffer
RD TRIS
10.1
RA4 ピンはタイマ 0 モジュールのクロック入力およ
びコンパレータ出力の 1 つと多重化され、RA4/
T0CKI/C1OUT ピンになります。RA6 と RA7 ピンは
メイン オシレータ ピンと多重化されます。構成レ
ジスタ内のメイン オシレータ選択の設定によりオ
シレータ ピンまたは I/O ピンになります ( 詳細は、
23.1 項「構成ビット」を参照してください )。これ
らのピンをポート ピンとして使用しない場合、RA6
と RA7 および対応する TRIS および LAT ビットは
「0」と読み出されます。
Q
TRIS Latch
注 1:
データ ラッチ レジスタ (LATA) はメモリにも対応づ
けられています。LATA レジスタに対する ReadModify-Write 動作は、PORTA のラッチされた出力値
を読み出してから書き込みます。
注:
Data Latch
D
PORTA レジスタを読み出すとピンの状態が読み出
され、PORTA レジスタに書き込むと PORT ラッチ
に書き込まれます。
PORTA の初期化
CLRF
PORTA
CLRF
LATA
MOVLW
MOVWF
MOVLW
E0h
ANSEL
0CFh
MOVWF
TRISA
Preliminary
;
;
;
;
;
;
;
;
;
;
;
;
;
Initialize PORTA by
clearing output
data latches
Alternate method
to clear output
data latches
Configure I/O
for digital inputs
Value used to
initialize data
direction
Set RA<3:0> as inputs
RA<5:4> as outputs
DS41303E_JP - ページ 119
PIC18F2XK20/4XK20
表 10-1:
PORTA I/O 一覧
Pin
RA0/AN0/C12IN0-
RA1/AN1/C12IN1-
RA2/AN2/C2IN+
VREF-/CVREF
Function
TRIS
Setting
I/O
I/O
Type
RA0
0
O
DIG
LATA<0> data output; not affected by analog input.
1
I
TTL
PORTA<0> data input; disabled when analog input enabled.
AN0
1
I
ANA
ADC input channel 0. Default input configuration on POR; does not affect
digital output.
C12IN0-
1
I
ANA
Comparators C1 and C2 inverting input, channel 0. Analog select is shared
with ADC.
RA1
0
O
DIG
LATA<1> data output; not affected by analog input.
1
I
TTL
PORTA<1> data input; disabled when analog input enabled.
AN1
1
I
ANA
ADC input channel 1. Default input configuration on POR; does not affect
digital output.
C12IN1-
1
I
ANA
Comparators C1 and C2 inverting input, channel 1. Analog select is shared
with ADC.
RA2
0
O
DIG
LATA<2> data output; not affected by analog input. Disabled when CVREF
output enabled.
1
I
TTL
PORTA<2> data input. Disabled when analog functions enabled; disabled
when CVREF output enabled.
1
I
ANA
ADC input channel 2. Default input configuration on POR; not affected by
analog output.
AN2
RA3/AN3/C1IN+/
VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/
HLVDIN/C2OUT
OSC2/CLKOUT/
RA6
OSC1/CLKIN/RA7
記号の説明 :
Description
C2IN+
1
I
ANA
Comparator C2 non-inverting input. Analog selection is shared with ADC.
VREF-
1
I
ANA
ADC and comparator voltage reference low input.
CVREF
x
O
ANA
Comparator voltage reference output. Enabling this feature disables digital I/
O.
RA3
0
O
DIG
LATA<3> data output; not affected by analog input.
1
I
TTL
PORTA<3> data input; disabled when analog input enabled.
AN3
1
I
ANA
A/D input channel 3. Default input configuration on POR.
C1IN+
1
I
ANA
Comparator C1 non-inverting input. Analog selection is shared with ADC.
VREF+
1
I
ANA
ADC and comparator voltage reference high input.
RA4
0
O
DIG
LATA<4> data output.
1
I
ST
PORTA<4> data input; default configuration on POR.
Timer0 clock input.
T0CKI
1
I
ST
C1OUT
0
O
DIG
Comparator 1 output; takes priority over port data.
RA5
0
O
DIG
LATA<5> data output; not affected by analog input.
1
I
TTL
PORTA<5> data input; disabled when analog input enabled.
AN4
1
I
ANA
A/D input channel 4. Default configuration on POR.
SS
1
I
TTL
Slave select input for SSP (MSSP module).
HLVDIN
1
I
ANA
Low-Voltage Detect external trip point input.
C2OUT
0
O
DIG
Comparator 2 output; takes priority over port data.
RA6
0
O
DIG
LATA<6> data output. Enabled in RCIO, INTIO2 and ECIO modes only.
1
I
TTL
PORTA<6> data input. Enabled in RCIO, INTIO2 and ECIO modes only.
OSC2
x
O
ANA
Main oscillator feedback output connection (XT, HS and LP modes).
CLKOUT
x
O
DIG
System cycle clock output (FOSC/4) in RC, INTIO1 and EC Oscillator modes.
RA7
0
O
DIG
LATA<7> data output. Disabled in external oscillator modes.
1
I
TTL
PORTA<7> data input. Disabled in external oscillator modes.
OSC1
x
I
ANA
Main oscillator input connection.
CLKIN
x
I
ANA
Main clock input connection.
DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、
ANA = アナログ レベル入出力
x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。)
DS41303E_JP - ページ 120
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 10-2:
PORTA 関連レジスタの一覧
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
RA7(1)
RA6(1)
RA5
RA4
RA3
RA2
RA1
RA0
60
LATA
LATA7(1)
LATA6(1)
TRISA
TRISA7(1) TRISA6(1) PORTA Data Direction Control Register
Name
PORTA
ANSEL
SLRCON
CM1CON0
ANS7
(2)
ANS6
(2)
PORTA Data Latch Register (Read and Write to Data Latch)
ANS5
(2)
60
60
ANS4
ANS3
ANS2
SLRD(2)
SLRC
SLRB
SLRA
61
C1SP
C1R
C1CH1
C1CH0
60
—
—
—
SLRE(2)
C1ON
C1OUT
C1OE
C1POL
ANS1
ANS0
60
CM2CON0
C2ON
C2OUT
C2OE
C2POL
C2SP
C2R
C2CH1
C2CH0
61
CVRCON
CVREN
CVROE
CVRR
CVRSS
CVR3
CVR2
CVR1
CVR0
59
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは PORTA では使用しません。
注 1: オシレータ構成に応じて、RA<7:6> および対応するラッチとデータ方向ビットは I/O ピンとして設定
されます。その他の場合は「0」と読み出されます。
2: PIC18F2XK20 デバイスには実装されていません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 121
PIC18F2XK20/4XK20
10.2
PORTB、TRISB、LATB レジスタ
10.3.2
状態変化割り込み
PORTB は 8 ビット幅の双方向ポートです。これに
対応するデータ方向レジスタが TRISB です。TRISB
ビットをセットする (= 1) と、対応する PORTB ピ
ンが入力になります ( すなわち、出力ドライバが無
効になります )。TRISB ビットをクリアする (= 0)
と、対応する PORTB ピンが出力になります ( すな
わち、出力ドライバが有効になり、出力ラッチの内
容が選択したピンに出力されます )。
PORTB ピンのうち 4 本 (RB<7:4>) は、個別に状態
変化割り込みピンに設定できます。IOCB レジスタ
の制御ビットをセット / クリアすると、各ピンの割
り込み機能が有効 / 無効になります。
データ ラッチ レジスタ (LATB) はメモリにも対応づ
けられています。LATB レジスタに対する ReadModify-Write 動作は、PORTB のラッチされた出力値
を読み出してから書き込みます。
この割り込みが発生するのは、入力として設定した
ピンだけです ( すなわち、出力に設定された RB<7:4>
ピンは、
状態変化割り込みの比較から除外されます)。
例 10-2:
CLRF
CLRF
CLRF
MOVLW
MOVWF
10.3
PORTB の初期化
PORTB
; Initialize PORTB by
; clearing output
; data latches
LATB
; Alternate method
; to clear output
; data latches
ANSELH ; Set RB<4:0> as
; digital I/O pins
;(required if config bit
; PBADEN is set)
0CFh
; Value used to
; initialize data
; direction
TRISB
; Set RB<3:0> as inputs
; RB<5:4> as outputs
; RB<7:6> as inputs
a)
PORTB に対して、任意の読み出しまたは書
き込みを実行すれば不一致状態は解消され
ます (PORTB が MOVFF 命令の入力元または
出力先である場合を除く )。
フラグ ビット RBIF をクリアします。
b)
PORTB ピンのその他の機能
10.3.1
弱プルアップ
各 PORTB ピンには、個別に制御可能な内部弱プル
アップがあります。WPUB レジスタの各ビットを
セットすると、対応するピンのプルアップが有効に
なります。INTCON2 レジスタの RBPU ビットをク
リアすると、WPUB ビットがセットされているピン
のすべてにプルアップが設定されます。RBPU ビッ
トをセットすると、弱プルアップがすべて無効にな
ります。出力として設定したポート ピンの弱プル
アップは自動的にオフになります。プルアップはパ
ワーオン リセットで無効になります。
パワーオン リセット時、デフォルトで
RB<4:0> ピンはアナログ入力として設定
され、
「0」と読み出されます。RB<7:5> は
デジタル入力に設定されます。
構成ビット PBADEN を「1」に設定する
と、RB<4:0> は POR 時にデジタル入力に
設定されます。
DS41303E_JP - ページ 122
状態変化割り込みが許可されたピンでは、PORTB
の最後の読み出し時にラッチされた値と現在の値
が比較されます。最後に実行された読み出しの「不
一致」出力が OR 演算され、INTCON レジスタの
PORTB 状態変化割り込みフラグ ビット (RBIF) が
セットされます。
この割り込みによって、スリープ モードあるいは
すべてのアイドル モードからデバイスをウェイク
アップさせることができます。ユーザーは、割り込
みサービス ルーチン内で以下の方法を使って割り
込みをクリアできます。
PORTB ピン RB<7:4> には状態変化割り込みオプ
ションを設定できます。また、すべての PORTB ピ
ンに弱プルアップ オプションが設けられています。
RB3ではCCP2代替周辺オプションを使用できます。
注:
INTCON レジスタの RBIE ビットをセットすると、
対
応する IOCB ビットをセットされたすべてのピンの
割り込みが許可されます。RBIE ビットをクリアする
と、すべての状態変化割り込みが禁止されます。
RBIF フラグ ビットは、
不一致状態になるたびにセッ
トされます。PORTB に対して読み出し / 書き込みを
実行すると不一致状態が終了し、RBIF ビットをクリ
アできるようになります。最後に読み出した値を保
持するラッチは、MCLR やブラウンアウト リセット
の影響を受けません。いずれのリセット後も、不一
致状態が発生すれば RBIF フラグは引き続きセット
されます。
注:
読み出し動作の実行中 (Q2 サイクルの開始
時 ) に I/O ピンの状態が変化した場合は、
RBIF 割り込みフラグがセットされないこ
とがあります。また、ポートへの読み出し
または書き込み動作は、そのポートの全
ビットに影響を与えるため、状態変化割り
込みモードのピンを複数使用するときは注
意が必要です。あるピンの変化による割り
込みに応答している間に、別のピンが変化
しても検出できない場合があるためです。
状態変化割り込み機能は、キーの押し下げによる
ウェイクアップや、PORTB を状態変化割り込み機
能にしか使わない場合に限って使用することを推
奨します。
状態変化割り込み機能の使用中にPORTB
をポーリングすることは推奨できません。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
10.3.3
CCP2 代替オプション
CONFIG3H の構成ビット CCP2MX をクリアするこ
とで、RB3 を CCP2 モジュールの代替周辺ピンに設
定できます。構成ビット CCP2MX のデフォルト状
態は「1」で、CCP2 の周辺ピンには RC1 が選択さ
れます。
表 10-3:
PORTB I/O 一覧
Pin
RB0/INT0/FLT0/
AN12
RB1/INT1/AN10/
C12IN3-/P1C
RB2/INT2/AN8/P1B
RB3/AN9/C12IN2-/
CCP2
RB4/KBI0/AN11/
P1D
Function
TRIS
Setting
I/O
I/O
Type
RB0
0
O
DIG
LATB<0> data output; not affected by analog input.
1
I
TTL
PORTB<0> data input; Programmable weak pull-up. Disabled when analog
input enabled.(1)
Description
INT0
1
I
ST
External interrupt 0 input.
FLT0
1
I
ST
Enhanced PWM Fault input (ECCP1 module); enabled by software.
AN12
1
I
ANA
RB1
A/D input channel 12.(1)
0
O
DIG
LATB<1> data output; not affected by analog input.
1
I
TTL
PORTB<1> data input; Programmable weak pull-up. Disabled when analog
input enabled.(1)
INT1
1
I
ST
External Interrupt 1 input.
AN10
1
I
ANA
ADC input channel 10.(1)
C12IN3-
1
I
ANA
Comparators C1 and C2 inverting input, channel 3. Analog select is shared
with ADC.
P1C
0
O
DIG
ECCP PWM output (28-pin devices only).
RB2
0
O
DIG
LATB<2> data output; not affected by analog input.
1
I
TTL
PORTB<2> data input; Programmable weak pull-up. Disabled when analog
input enabled.(1)
INT2
1
I
ST
AN8
1
I
ANA
ADC input channel 8.(1)
P1B
0
O
DIG
ECCP PWM output (28-pin devices only).
RB3
0
O
DIG
LATB<3> data output; not affected by analog input.
1
I
TTL
PORTB<3> data input; Programmable weak pull-up. Disabled when analog
input enabled.(1)
AN9
1
I
ANA
ADC input channel 9.(1)
C12IN2-
1
I
ANA
Comparators C1 and C2 inverting input, channel 2. Analog select is shared
with ADC.
CCP2(2)
0
O
DIG
1
I
ST
0
O
DIG
LATB<4> data output; not affected by analog input.
1
I
TTL
PORTB<4> data input; Programmable weak pull-up. Disabled when analog
input enabled.(1)
RB4
External interrupt 2 input.
CCP2 compare and PWM output.
CCP2 capture input
KBI0
1
I
TTL
Interrupt-on-pin change.
AN11
1
I
ANA
ADC input channel 11.(1)
P1D
0
O
DIG
ECCP PWM output (28-pin devices only).
記号の説明 :
注 1:
2:
3:
DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、
ANA = アナログ レベル入出力
x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。)
POR 時の設定は、構成ビット PBADEN によって決まります。PBADEN がセットされている場合、ピンはデフォルトで
アナログ入力に設定されます。PBADEN がクリアされている場合はデジタル入力になります。
構成ビット CCP2MX が「0」の場合の、CCP2 の代替割り当てです。デフォルト割り当ては RC1 です。
ICSP または ICD が有効な場合、その他のピン機能はすべて無効になります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 123
PIC18F2XK20/4XK20
表 10-3:
PORTB I/O 一覧 ( 続き )
Pin
Function
TRIS
Setting
I/O
RB5
0
O
DIG
LATB<5> data output.
1
I
TTL
PORTB<5> data input; Programmable weak pull-up.
KBI1
1
I
TTL
Interrupt-on-pin change.
PGM
x
I
ST
RB6
0
O
DIG
1
I
TTL
PORTB<6> data input; Programmable weak pull-up.
KBI2
1
I
TTL
Interrupt-on-pin change.
PGC
x
I
ST
RB7
0
O
DIG
LATB<7> data output.
1
I
TTL
PORTB<7> data input; Programmable weak pull-up.
KBI3
1
I
TTL
Interrupt-on-pin change.
PGD
x
O
DIG
Serial execution data output for ICSP and ICD operation.(3)
x
I
ST
Serial execution data input for ICSP and ICD operation.(3)
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
I/O
Type
Description
Single-Supply Programming mode entry (ICSP™). Enabled by LVP
Configuration bit; all other pin functions disabled.
LATB<6> data output.
Serial execution (ICSP) clock input for ICSP and ICD operation.(3)
記号の説明 :
注 1:
2:
3:
DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、
ANA = アナログ レベル入出力
x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。)
POR 時の設定は、構成ビット PBADEN によって決まります。PBADEN がセットされている場合、ピンはデフォルトで
アナログ入力に設定されます。PBADEN がクリアされている場合はデジタル入力になります。
構成ビット CCP2MX が「0」の場合の、CCP2 の代替割り当てです。デフォルト割り当ては RC1 です。
ICSP または ICD が有効な場合、その他のピン機能はすべて無効になります。
表 10-4:
Name
PORTB
PORTB 関連レジスタの一覧
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
60
LATB
PORTB Data Latch Register (Read and Write to Data Latch)
60
TRISB
PORTB Data Direction Control Register
60
WPUB
WPUB7
WPUB6
WPUB5
IOCB
IOCB7
IOCB6
IOCB5
IOCB4
—
—
—
—
—
SLRE(1)
SLRD(1)
SLRC
INT0IE
RBIE
TMR0IF
INT0IF
INTEDG0 INTEDG1 INTEDG2
SLRCON
INTCON
GIE/GIEH PEIE/GIEL TMR0IE
WPUB4
WPUB3
WPUB2
WPUB1
WPUB0
60
—
—
60
SLRB
SLRA
61
RBIF
57
INTCON2
RBPU
—
TMR0IP
—
RBIP
57
INTCON3
INT2IP
INT1IP
—
INT2IE
INT1IE
—
INT2IF
INT1IF
57
ANSELH
—
—
—
ANS12
ANS11
ANS10
ANS9
ANS8
60
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは PORTB では使用しません。
注 1: PIC18F2XK20 デバイスには実装されていません。
DS41303E_JP - ページ 124
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
10.4
PORTC、TRISC、LATC レジスタ
PORTC は 8 ビット幅の双方向ポートです。これに
対応するデータ方向レジスタが TRISC です。TRISC
ビットをセットする (= 1) と、対応する PORTC ピ
ンが入力になります ( すなわち、出力ドライバが無
効になります )。TRISC ビットをクリアする (= 0)
と、対応する PORTC ピンが出力になります ( すな
わち、出力ドライバが有効になり、出力ラッチの内
容が選択したピンに出力されます )。
例 10-3:
PORTC の初期化
CLRF
PORTC
CLRF
LATC
MOVLW
0CFh
MOVWF
TRISC
データ ラッチ レジスタ (LATC) はメモリにも対応づ
けられています。LATC レジスタに対する ReadModify-Write 動作は、PORTC のラッチされた出力値
を読み出してから書き込みます。
;
;
;
;
;
;
;
;
;
;
;
;
Initialize PORTC by
clearing output
data latches
Alternate method
to clear output
data latches
Value used to
initialize data
direction
Set RC<3:0> as inputs
RC<5:4> as outputs
RC<7:6> as inputs
PORTCは、複数の周辺機能と多重化されています
( 表 10-5)。各ピンは、シュミット トリガ入力バッ
ファを備えています。CCP2 周辺ピンのデフォルト
設定はRC1です。構成ワードCONFIG3HのCCP2MX
ビットをクリアすることで、CCP2 の機能を RB3 に
切り替えることができます。構成ビットCCP2MXの
デフォルト状態は「1」です。
周辺機能を有効にする場合、PORTC の各ピンに対
する TRIS ビットの定義は慎重に行ってください。
EUSART および MSSP 周辺機能は、ピンの入出力を
設定するため、構成によっては TRIS ビットよりも
優先されます。詳細は、該当する周辺機能の項を参
照してください。
注:
パワーオン リセット時、これらのピンは
デジタル入力に設定されます。
TRISC レジスタの内容は周辺機能による置き換え
の影響を受けます。周辺デバイスが 1 つまたは複数
のピンの機能を置き換えている場合もありますが、
TRISC の読み出し値は常に現在のレジスタ内容に
なります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 125
PIC18F2XK20/4XK20
表 10-5:
PORTC I/O 一覧
Pin
RC0/T1OSO/
T13CKI
RC1/T1OSI/CCP2
RC2/CCP1/P1A
Function
TRIS
Setting
I/O
I/O
Type
RC0
0
O
DIG
1
I
ST
T1OSO
x
O
ANA
T13CKI
1
I
ST
RC1
0
O
DIG
RC6/TX/CK
RC7/RX/DT
Timer1/Timer3 counter input.
LATC<1> data output.
I
ST
x
I
ANA
Timer1 oscillator input; enabled when Timer1 oscillator enabled. Disables
digital I/O.
CCP2(1)
0
O
DIG
CCP2 compare and PWM output; takes priority over port data.
1
I
ST
0
O
DIG
1
I
ST
0
O
DIG
1
I
ST
P1A
0
O
DIG
ECCP1 Enhanced PWM output, channel A. May be configured for
tri-state during Enhanced PWM shutdown events. Takes priority over port
data.
RC3
0
O
DIG
LATC<3> data output.
1
I
ST
0
O
DIG
RC2
SCL
RC5/SDO
PORTC<0> data input.
Timer1 oscillator output; enabled when Timer1 oscillator enabled. Disables
digital I/O.
1
SCK
RC4/SDI/SDA
LATC<0> data output.
T1OSI
CCP1
RC3/SCK/SCL
Description
RC4
1
I
ST
0
O
DIG
1
I
0
O
PORTC<1> data input.
CCP2 capture input.
LATC<2> data output.
PORTC<2> data input.
ECCP1 compare or PWM output; takes priority over port data.
ECCP1 capture input.
PORTC<3> data input.
SPI clock output (MSSP module); takes priority over port data.
SPI clock input (MSSP module).
I2C™ clock output (MSSP module); takes priority over port data.
I2C/SMB I2C clock input (MSSP module); input type depends on module setting.
DIG
LATC<4> data output.
1
I
ST
PORTC<4> data input.
SDI
1
I
ST
SPI data input (MSSP module).
SDA
1
O
DIG
1
I
0
O
DIG
1
I
ST
SDO
0
O
DIG
SPI data output (MSSP module); takes priority over port data.
RC6
0
O
DIG
LATC<6> data output.
RC5
I2C data output (MSSP module); takes priority over port data.
I2C/SMB I2C data input (MSSP module); input type depends on module setting.
LATC<5> data output.
PORTC<5> data input.
1
I
ST
TX
1
O
DIG
Asynchronous serial transmit data output (USART module); takes priority over
port data. User must configure as output.
CK
1
O
DIG
Synchronous serial clock output (USART module); takes priority over port
data.
1
I
ST
0
O
DIG
LATC<7> data output.
1
I
ST
PORTC<7> data input.
RX
1
I
ST
DT
1
O
DIG
1
I
ST
RC7
PORTC<6> data input.
Synchronous serial clock input (USART module).
Asynchronous serial receive data input (USART module).
Synchronous serial data output (USART module); takes priority over port data.
Synchronous serial data input (USART module). User must configure as an
input.
記号の説明 :
注 1:
DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、
ANA = アナログ レベル入出力
I2C/SMB = I2C/SMBus 入力バッファ、x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出
力方向に影響を与えません。)
構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。代替割り当ては RB3 です。
DS41303E_JP - ページ 126
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 10-6:
Name
PORTC
PORTC 関連レジスタの一覧
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
RC7
RC6
RC5
RC4
RC3
RC2
RC1
RC0
Reset
Values
on page
60
LATC
PORTC Data Latch Register (Read and Write to Data Latch)
60
TRISC
PORTC Data Direction Control Register
60
T1CON
RD16
T1RUN
T3CON
RD16
T3CCP2 T3CKPS1 T3CKPS0 T3CCP1
TXSTA
CSRC
TX9
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
TXEN
SYNC
SENDB
T3SYNC TMR3CS TMR3ON
BRGH
TRMT
TX9D
58
59
59
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
59
SSPCON1
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
58
CCP1CON
P1M1
P1M0
DC1B1
DC1B0
CCP1M3 CCP1M2 CCP1M1 CCP1M0
59
CCP2CON
—
—
DC2B1
DC2B0
CCP2M3 CCP2M2 CCP2M1 CCP2M0
59
ECCP1AS
SLRCON
ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1
—
—
—
SLRE(1)
SLRD(1)
PSSAC0
PSSBD1
PSSBD0
59
SLRC
SLRB
SLRA
61
記号の説明 : — = 未実装、「0」として読み出し。網掛けのビットは PORTC では使用しません。
注 1: PIC18F2XK20 デバイスには実装されていません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 127
PIC18F2XK20/4XK20
10.5
注:
PORTD、TRISD、LATD レジスタ
PORTD は、40/44 ピンデバイスにおいての
み使用可能です。
PORTD は 8 ビット幅の双方向ポートです。これに
対応するデータ方向レジスタが TRISD です。TRISD
ビットをセットする (= 1) と、対応する PORTD ピ
ンが入力になります ( すなわち、出力ドライバが無
効になります )。TRISD ビットをクリアする (= 0)
と、対応する PORTD ピンが出力になります ( すな
わち、出力ドライバが有効になり、出力ラッチの内
容が選択したピンに出力されます )。
データ ラッチ レジスタ(LATD)はメモリにも対応づ
けられています。LATD レジスタに対する ReadModify-Write 動作は、PORTD のラッチされた出力
値を読み出してから書き込みます。
PORTD のピンには、すべてにシュミット トリガ入
力バッファが備えられています。各ピンは、個別に
入力または出力に設定できます。
PORTD ピンのうち 3 本は、拡張 CCP モジュールの
P1B、P1C、P1D 出力と多重化されています。これ
らの拡張 PWM 出力ピンの動作については、16.0 項
「拡張キャプチャ/ コンペア /PWM (ECCP) モジュー
ル」で詳細に説明しています。
注:
PORTD は、制御ビット PSPMODE (TRISE<4>) を
セットすることで、8 ビット幅のマイクロプロセッ
サ ポート ( パラレル スレーブ ポート ) として設定
できます。このモードでは入力バッファが TTL に
なります。パラレル スレーブ ポート (PSP) の詳細
は、10.9 項「パラレル スレーブ ポート」を参照し
てください。
注:
例 10-4:
拡張 PWM モードをデュアルまたはクワッ
ド出力で使用する場合、PORTD の PSP 機
能は自動的に無効になります。
PORTD の初期化
CLRF
PORTD
CLRF
LATD
MOVLW
0CFh
MOVWF
TRISD
;
;
;
;
;
;
;
;
;
;
;
;
Initialize PORTD by
clearing output
data latches
Alternate method
to clear output
data latches
Value used to
initialize data
direction
Set RD<3:0> as inputs
RD<5:4> as outputs
RD<7:6> as inputs
パワーオン リセット時、これらのピンは
デジタル入力に設定されます。
DS41303E_JP - ページ 128
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 10-7:
PORTD I/O 一覧
Pin
RD0/PSP0
Function
TRIS
Setting
I/O
I/O
Type
RD0
0
O
DIG
LATD<0> data output.
PORTD<0> data input.
PSP0
RD1/PSP1
RD1
PSP1
RD2/PSP2
RD2
PSP2
RD3/PSP3
RD3
PSP3
RD4/PSP4
RD4
PSP4
RD5/PSP5/P1B
RD5
PSP5
P1B
RD6/PSP6/P1C
RD6
PSP6
P1C
RD7/PSP7/P1D
記号の説明 :
RD7
Description
1
I
ST
x
O
DIG
PSP read data output (LATD<0>); takes priority over port data.
x
I
TTL
PSP write data input.
0
O
DIG
LATD<1> data output.
PORTD<1> data input.
1
I
ST
x
O
DIG
PSP read data output (LATD<1>); takes priority over port data.
x
I
TTL
PSP write data input.
0
O
DIG
LATD<2> data output.
PORTD<2> data input.
1
I
ST
x
O
DIG
PSP read data output (LATD<2>); takes priority over port data.
x
I
TTL
PSP write data input.
0
O
DIG
LATD<3> data output.
PORTD<3> data input.
1
I
ST
x
O
DIG
PSP read data output (LATD<3>); takes priority over port data.
x
I
TTL
PSP write data input.
0
O
DIG
LATD<4> data output.
PORTD<4> data input.
1
I
ST
x
O
DIG
PSP read data output (LATD<4>); takes priority over port data.
x
I
TTL
PSP write data input.
0
O
DIG
LATD<5> data output.
PORTD<5> data input.
1
I
ST
x
O
DIG
PSP read data output (LATD<5>); takes priority over port data.
x
I
TTL
PSP write data input.
0
O
DIG
ECCP1 Enhanced PWM output, channel B; takes priority over port and PSP
data. May be configured for tri-state during Enhanced PWM shutdown events.
0
O
DIG
LATD<6> data output.
1
I
ST
PORTD<6> data input.
x
O
DIG
PSP read data output (LATD<6>); takes priority over port data.
x
I
TTL
PSP write data input.
0
O
DIG
ECCP1 Enhanced PWM output, channel C; takes priority over port and PSP
data. May be configured for tri-state during Enhanced PWM shutdown events.
0
O
DIG
LATD<7> data output.
1
I
ST
PORTD<7> data input.
PSP7
x
O
DIG
x
I
TTL
PSP write data input.
P1D
0
O
DIG
ECCP1 Enhanced PWM output, channel D; takes priority over port and PSP
data. May be configured for tri-state during Enhanced PWM shutdown events.
PSP read data output (LATD<7>); takes priority over port data.
DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、x = ドントケア
( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。)
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 129
PIC18F2XK20/4XK20
表 10-8:
Name
PORTD(1)
PORTD 関連レジスタの一覧
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
RD7
RD6
RD5
RD4
RD3
RD2
RD1
RD0
60
LATD(1)
PORTD Data Latch Register (Read and Write to Data Latch)
60
TRISD(1)
PORTD Data Direction Control Register
60
TRISE
(1)
CCP1CON
SLRCON
IBF
OBF
IBOV
PSPMODE
—
TRISE2
TRISE1
TRISE0
60
P1M1
P1M0
DC1B1
DC1B0
CCP1M3
CCP1M2
CCP1M1
CCP1M0
59
—
SLRE(1)
SLRD(1)
SLRC
SLRB
SLRA
61
—
—
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは PORTD では使用しません。
注 1: PIC18F2XK20 デバイスには実装されていません。
DS41303E_JP - ページ 130
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
10.6
PORTE、TRISE、LATE レジスタ
選択した PIC18F2XK20/4XK20 デバイスの種類に応
じて、PORTEには2通りの機能が実装されています。
10.6.1
PIC18F4XK20 デバイスの PORTE
PIC18F4XK20 デバイスの PORTE は 4 ビット幅の
ポートです。3 本のピン (RE0/RD/AN5、RE1/WR/
AN6、RE2/CS/AN7) は、それぞれ個別に入力または
出力に設定できます。各ピンは、シュミット トリ
ガ入力バッファを備えています。アナログ入力ピン
に設定されている場合、これらのピンは「0」と読
み出されます。
このポートに対応するデータ方向レジスタはTRISE
です。TRISE ビットをセットする (= 1) と、対応す
る PORTE ピンが入力になります ( すなわち、出力
ドライバが無効になります )。TRISE ビットをクリ
アする (= 0) と、対応する PORTE ピンが出力になり
ます ( すなわち、出力ドライバが有効になり、出力
ラッチの内容が選択したピンに出力されます )。
ピンをアナログ入力に使用する場合も、RE ピンの
入出力方向は TRISE レジスタによって制御されま
す。これらをアナログ入力として使用する場合も、
ピンが入力に設定されるようにしてください。
注:
パワーオン リセット時、RE<2:0> はアナ
ログ入力に設定されます。
TRISE レジスタの上位 4 ビットは、
パラレル スレー
ブ ポートの動作も制御します。その動作について
は、レジスタ 10-1 に記載されています。
データ ラッチ レジスタ (LATE) はメモリにも対応づ
けられています。LATE レジスタに対する ReadModify-Write 動作は、PORTE のラッチされた出力値
を読み出してから書き込みます。
 2009 Microchip Technology Inc.
PORTE の 4 番目のピン (MCLR/VPP/RE3) は、入力専
用ピンです。動作は構成ビット MCLRE によって制
御されます。ポート ピンに設定されている場合
(MCLRE = 0) は、デジタル入力専用ピンとして機能
するため、
この動作に関連する TRIS または LAT ビッ
トは無視されます。それ以外の場合はデバイスのマ
スタ クリア入力として動作します。いずれに設定し
てあっても、プログラミング時の RE3 はプログラミ
ング電圧入力になります。
注:
例 10-5:
CLRF
CLRF
MOVLW
ANDWF
MOVLW
MOVWF
10.6.2
マスタ クリア機能が無効の場合、パワー
オン リセット時に RE3 はデジタル入力専
用ピンになります。
PORTE の初期化
PORTE
;
;
;
LATE
;
;
;
1Fh
;
ANSEL,w ;
05h
;
;
;
TRISE
;
;
;
Initialize PORTE by
clearing output
data latches
Alternate method
to clear output
data latches
Configure analog pins
for digital only
Value used to
initialize data
direction
Set RE<0> as input
RE<1> as output
RE<2> as input
PIC18F2XK20 デバイスの PORTE
PIC18F2XK20 デバイスでは、マスタ クリア機能が
無効の場合 (MCLR = 0) のみ PORTE を使用できま
す。その場合、PORTE は RE3 ピンのみの 1 ビット
の入力専用ポートになります。ピンの動作は前述の
とおりです。
Preliminary
DS41303E_JP - ページ 131
PIC18F2XK20/4XK20
レジスタ 10-1:
TRISE: PORTE/PSP 制御レジスタ (PIC18F4XK20 デバイスのみ )
R-0
R-0
R/W-0
R/W-0
U-0
R/W-1
R/W-1
R/W-1
IBF
OBF
IBOV
PSPMODE
—
TRISE2
TRISE1
TRISE0
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
IBF: 入力バッファ フル状態ビット
1 = 1 ワードが受信され CPU による読み出し待ち
0 = 1 ワードも受信されていない
ビット 6
OBF: 出力バッファ フル状態ビット
1 = 前回書き込まれたワードがまだ出力バッファに残っている
0 = 出力バッファは読み出し済み
ビット 5
IBOV: 入力バッファ オーバーフロー検出ビット ( マイクロプロセッサ モードの場合 )
1 = 前回の入力ワードがまだ読み出されていないにもかかわらず、書き込みが実行された
( ソフトウェアによるクリアが必要 )
0 = オーバーフローは発生していない
ビット 4
PSPMODE: パラレル スレーブ ポート モード選択ビット
1 = パラレル スレーブ ポート モード
0 = 汎用 I/O モード
ビット 3
未実装 :「0」として読み出し
ビット 2
TRISE2: RE2 方向制御ビット
1 = 入力
0 = 出力
ビット 1
TRISE1: RE1 方向制御ビット
1 = 入力
0 = 出力
ビット 0
TRISE0: RE0 方向制御ビット
1 = 入力
0 = 出力
DS41303E_JP - ページ 132
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 10-9:
Pin
PORTE I/O 一覧
Function
TRIS
Setting
I/O
I/O
Type
RE0
0
O
DIG
1
I
ST
RE0/RD/AN5
RE1/WR/AN6
MCLR/VPP/
RE3(1,2)
LATE<0> data output; not affected by analog input.
PORTE<0> data input; disabled when analog input enabled.
RD
1
I
TTL
PSP read enable input (PSP enabled).
AN5
1
I
ANA
A/D input channel 5; default input configuration on POR.
RE1
0
O
DIG
LATE<1> data output; not affected by analog input.
1
I
ST
WR
1
I
TTL
PSP write enable input (PSP enabled).
AN6
1
I
ANA
A/D input channel 6; default input configuration on POR.
LATE<2> data output; not affected by analog input.
RE2
RE2/CS/AN7
Description
PORTE<1> data input; disabled when analog input enabled.
0
O
DIG
1
I
ST
PORTE<2> data input; disabled when analog input enabled.
CS
1
I
TTL
PSP write enable input (PSP enabled).
AN7
1
I
ANA
A/D input channel 7; default input configuration on POR.
MCLR
—
I
ST
VPP
—
I
ANA
RE3
—(2)
I
ST
External Master Clear input; enabled when MCLRE Configuration bit is set.
High-voltage detection; used for ICSP™ mode entry detection. Always
available, regardless of pin mode.
PORTE<3> data input; enabled when MCLRE Configuration bit is clear.
記号の説明 :
DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、
ANA = アナログ レベル入出力
x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。)
RE3 は、PIC18F2XK20 および PIC18F4XK20 の両デバイスで使用できます。その他の PORTE ピンは、いずれも
PIC18F4XK20 デバイスにのみ実装されています。
RE3 にはデータ方向を制御する TRIS ビットが対応づけられていません。
注 1:
2:
表 10-10: PORTE 関連レジスタの一覧
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
PORTE
—
—
—
—
RE3(1,2)
RE2
RE1
RE0
60
LATE(2)
—
—
—
—
—
IBF
OBF
IBOV
PSPMODE
—
TRISE2
TRISE1
TRISE0
60
—
—
—
SLRE(3)
SLRD(3)
SLRC
SLRB
SLRA
61
ANS7(3)
ANS6(3)
ANS5(3)
ANS4
ANS3
ANS2
ANS1
ANS0
60
Name
TRISE
(3)
SLRCON
ANSEL
LATE Data Output Register
60
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは PORTE では使用しません。
注 1: マスタ クリア 機能が無効 ( 構成ビット MCLRE = 0) の場合にのみ使用できます。
2: PIC18F2XK20 および PIC18F4XK20 デバイスの両方に実装されている PORTE ビットは RE3 だけです。
その他のビットは、いずれも PORTE が実装されている場合にのみ ( つまり PIC18F4XK20 デバイスの
み ) 実装されます。
3: PIC18F2XK20 デバイスには実装されていません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 133
PIC18F2XK20/4XK20
10.7
ポートのアナログ制御
応するデジタル入力バッファが無効化され、そのピ
ンの読み出し値が常に「0」になると同時に、アナ
ログ機能の適切な動作が可能になります。
ポート ピンの一部は、A/D コンバータやコンパレー
タなどのアナログ機能と多重化されています。これ
らの I/O ピンをアナログ入力として使用する場合
は、デジタル入力バッファを無効化する必要があり
ます。デジタル入力を不適切にバイアスすることで
過剰な電流が流れるのを防ぐためです。アナログ機
能と多重化されたピンのデジタル入力バッファは、
ANSEL および ANSELH レジスタによって個別に制
御できます。ANSx ビットを High に設定すると、対
レジスタ 10-2:
R/W-1
ANS7
ANSEL: アナログ選択レジスタ 1
R/W-1
(1)
ANSx ビットの状態は、デジタル出力機能には影響
を与えません。対応する TRIS ビットをクリアして
ANSx ビットをセットしたピンは、デジタル出力と
して動作しますが、入力モードはアナログになりま
す。このように設定されたポートに対して ReadModify-Write 命令を実行すると予期しない動作とな
ることがあります。
ANS6
(1)
R/W-1
ANS5
(1)
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
ANS4
ANS3
ANS2
ANS1
ANS0
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。
「0」として読み出し
「1」= セット
「0」= クリア
ビット 7
ANS7: RE2 アナログ選択制御ビット (1)
1 = RE2 のデジタル入力バッファが無効
0 = RE2 のデジタル入力バッファが有効
ビット 6
ANS6: RE1 アナログ選択制御ビット (1)
1 = RE1 のデジタル入力バッファが無効
0 = RE1 のデジタル入力バッファが有効
ビット 5
ANS5: RE0 アナログ選択制御ビット (1)
1 = RE0 のデジタル入力バッファが無効
0 = RE0 のデジタル入力バッファが有効
ビット 4
ANS4: RA5 アナログ選択制御ビット
1 = RA5 のデジタル入力バッファが無効
0 = RA5 のデジタル入力バッファが有効
ビット 3
ANS3: RA3 アナログ選択制御ビット
1 = RA3 のデジタル入力バッファが無効
0 = RA3 のデジタル入力バッファが有効
ビット 2
ANS2: RA2 アナログ選択制御ビット
1 = RA2 のデジタル入力バッファが無効
0 = RA2 のデジタル入力バッファが有効
ビット 1
ANS1: RA1 アナログ選択制御ビット
1 = RA1 のデジタル入力バッファが無効
0 = RA1 のデジタル入力バッファが有効
ビット 0
ANS0: RA0 アナログ選択制御ビット
1 = RA0 のデジタル入力バッファが無効
0 = RA0 のデジタル入力バッファが有効
注 1:
x = 不明
これらのビットは PIC18F2XK20 デバイスには実装されていません。
DS41303E_JP - ページ 134
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 10-3:
ANSELH: アナログ選択レジスタ 2
U-0
U-0
U-0
R/W-1(1)
R/W-1(1)
R/W-1(1)
R/W-1(1)
R/W-1(1)
—
—
—
ANS12
ANS11
ANS10
ANS9
ANS8
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。
「0」として読み出し
「1」= セット
「0」= クリア
ビット 7-5
未実装 :「0」として読み出し
ビット 4
ANS12: RB0 アナログ選択制御ビット
1 = RB0 のデジタル入力バッファが無効
0 = RB0 のデジタル入力バッファが有効
ビット 3
ANS11: RB4 アナログ選択制御ビット
1 = RB4 のデジタル入力バッファが無効
0 = RB4 のデジタル入力バッファが有効
ビット 2
ANS10: RB1 アナログ選択制御ビット
1 = RB1 のデジタル入力バッファが無効
0 = RB1 のデジタル入力バッファが有効
ビット 1
ANS9: RB3 アナログ選択制御ビット
1 = RB3 のデジタル入力バッファが無効
0 = RB3 のデジタル入力バッファが有効
ビット 0
ANS8: RB2 アナログ選択制御ビット
1 = RB2 のデジタル入力バッファが無効
0 = RB2 のデジタル入力バッファが有効
注 1:
x = 不明
デフォルト状態は、CONFIG3H の PBADEN ビットによって決まります。PBADEN =「0」の場合の
デフォルト状態は「0」です。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 135
PIC18F2XK20/4XK20
10.8
ポート スルー レート制御
各ポートの出力スルー レートをプログラムできま
す。標準の遷移速度を選択するか、標準の 0.1 倍の
低速遷移を選択して EMI を最小限に抑えることが
できます。すべてのポートのデフォルト スルー
レートは低速遷移です。
レジスタ 10-4:
U-0
SLRCON: スルー レート制御レジスタ
U-0
—
—
U-0
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
—
SLRE(1)
SLRD(1)
SLRC
SLRB
SLRA
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
ビット 7-5
未実装 :「0」として読み出し
ビット 4
SLRE: PORTE スルー レート制御ビット (1)
1 = PORTE の全出力のスルー レートを制限
0 = PORTE の全出力のスルー レートを標準の速度に設定
ビット 3
SLRD: PORTD スルー レート制御ビット (1)
1 = PORTD の全出力のスルー レートを制限
0 = PORTD の全出力のスルー レートを標準の速度に設定
ビット 2
SLRC: PORTC スルー レート制御ビット
1 = PORTC の全出力のスルー レートを制限
0 = PORTC の全出力のスルー レートを標準の速度に設定
ビット 1
SLRB: PORTB スルー レート制御ビット
1 = PORTB の全出力のスルー レートを制限
0 = PORTB の全出力のスルー レートを標準の速度に設定
ビット 0
SLRA: PORTA スルー レート制御ビット
1 = PORTA の全出力のスルー レートを制限 (2)
0 = PORTA の全出力のスルー レートを標準の速度に設定
注 1:
2:
x = 不明
これらのビットは PIC18F2XK20 デバイスには実装されていません。
RA6 を CLKOUT として使用する場合は、このスルー レートがデフォルトで標準速度になります。
DS41303E_JP - ページ 136
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
10.9
注:
パラレル スレーブ ポート
パラレル スレーブ ポートは、
PIC18F4XK20 デバイスにのみ搭載されて
います。
書き込みおよび読み出しモードの制御信号タイミ
ングを、それぞれ図 10-3 および図 10-4 に示します。
図 10-2:
PORTD は汎用 I/O ポートとしての機能に加えて、
8 ビット幅のパラレル スレーブ ポート (PSP)、つま
りマイクロプロセッサ ポートとしても機能します。
PSP の動作は TRISE レジスタ ( レジスタ 10-1) の上
位 4 ビットによって制御されます。制御ビット
PSPMODE (TRISE<4>) をセットすると、拡張 CCP
モジュールがデュアルまたはクワッド出力 PWM
モードとして動作していない場合に限り、PSP 動作
が有効になります。スレーブ モードでは、外部よ
りこのポートに対して非同期で読み出しおよび書
き込みを実行できます。
PSP は 8 ビットのマイクロプロセッサ データ バス
に直接インターフェースを取ることができます。外
付けのマイクロプロセッサはPORTDラッチを8ビッ
トのラッチと見なして読み出し、書き込むことがで
きます。制御ビット PSPMODE をセットすると、
PORTE の I/O ピンがマイクロプロセッサ ポートの
制御入力になります。つまり、ポート ピン RE0 が
RD 入力、RE1 が WR 入力、RE2 が CS ( チップ セ
レクト ) 入力になります。
この機能を使用する場合、
対 応 す る TRISE レ ジ ス タ の デ ー タ 方 向 ビ ッ ト
(TRISE<2:0>) を入力に設定 ( ビットをセット ) し、
ANSEL<7:5> ビットをクリアする必要があります。
One bit of PORTD
Data Bus
D
WR LATD
or
WR PORTD
Q
RDx pin
CK
Data Latch
Q
RD PORTD
TTL
D
ENEN
RD LATD
Set Interrupt Flag
PSPIF (PIR1<7>)
PORTE Pins
Read
PSP への書き込みは、CS および WR が両方とも Low
になると開始され、いずれかが High になった時点
で終了します。書き込みが終了するとフラグ ビッ
ト PSPIF および IBF の両方がセットされます。
PSP からの読み出しは、CS および RD が両方とも
Low になると開始されます。PORTD のデータが読
み出され、OBF ビットがクリアされます。ユーザー
が PORTD に新しいデータを書き込んで OBF をセッ
トした場合、データをすぐに読み出すと、OBF ビッ
トはセットされません。
PORTD および PORTE のブロック図
( パラレル スレーブ ポート )
TTL
RD
Chip Select
TTL
CS
Write
注:
TTL
WR
I/O ピンには、VDD および VSS に対する
保護ダイオードが接続されています。
CSまたはRDのいずれかがHighになると、PORTDピ
ンは入力状態に戻り、PSPIF ビットがセットされま
す。ユーザー アプリケーションでは、PSP の処理を
実行する前にPSPIFがセットされるのを待ってくだ
さい。PSPIF がセットされると、IBF および OBF
ビットをポーリングできるようになり、適切な操作
を実行できます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 137
PIC18F2XK20/4XK20
図 10-3:
パラレル スレーブ ポート書き込み波形
Q1
Q2
Q3
Q4
Q1
Q2
Q3
Q4
Q1
Q2
Q3
Q4
Q2
Q3
Q4
Q1
Q2
Q3
Q4
CS
WR
RD
PORTD<7:0>
IBF
OBF
PSPIF
図 10-4:
パラレル スレーブ ポート読み出し波形
Q1
Q2
Q3
Q4
Q1
CS
WR
RD
PORTD<7:0>
IBF
OBF
PSPIF
DS41303E_JP - ページ 138
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 10-11: パラレル スレーブ ポート関連レジスタ
Name
PORTD(1)
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
RD7
RD6
RD5
RD4
RD3
RD2
RD1
RD0
60
LATD(1)
PORTD Data Latch Register (Read and Write to Data Latch)
TRISD(1)
PORTD Data Direction Control Register
60
PORTE
—
—
—
—
RE3
LATE(1)
—
—
—
—
—
TRISE(1)
IBF
OBF
IBOV
PSPMODE
—
—
SLRE(1)
SLRD(1)
INT0IE
RBIE
SLRCON
INTCON
—
—
GIE/GIEH PEIE/GIEL TMR0IE
60
RE2(1)
RE1(1)
RE0(1)
LATE Data Output bits
TRISE2
60
60
TRISE1
TRISE0
60
SLRC
SLRB
SLRA
61
TMR0IF
INT0IF
RBIF
57
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
ANSEL
ANS7(1)
ANS6(1)
ANS5(1)
ANS4
ANS3
ANS2
ANS1
ANS0
60
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットはパラレル スレーブ ポートでは使用しません。
注 1: PIC18F2XK20 デバイスには実装されていません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 139
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 140
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
11.0
キャプチャ / コンペア /PWM
(CCP) モジュール
ここで説明するキャプチャおよびコンペア動作は、
標準および拡張 CCP モジュールの両方に適用され
ます。
PIC18F2XK20/4XK20 デバイスは、2 つのキャプチャ /
コンペア /PWM (CCP) モジュールを搭載していま
す。各モジュールには 16 ビット キャプチャ レジス
タ、16 ビット コンペア レジスタ、または PWM マ
スタ / スレーブ デューティ サイクル レジスタのい
ずれかとして動作する、16 ビットのレジスタがあ
ります。
注:
CCP1 は、標準のキャプチャとコンペア モード、お
よび拡張 PWM モードを備えた、
拡張 CCP (ECCP) モ
ジュールとして実装されています。ECCP の実装に
ついては、16.0 項「拡張キャプチャ/ コンペア /PWM
(ECCP) モジュール」で説明します。CCP2 は拡張機
能を持たない、標準の CCP モジュールとして実装さ
れています。
レジスタ 11-1:
この章および 16.0 項「拡張キャプチャ / コ
ンペア /PWM (ECCP) モジュール」では、
CCP モジュール用のレジスタやビット名
を、具体的なモジュール番号ではなく、
「x」
または「y」などの一般名を使って呼ぶこ
とにします。例えば、CCP1、CCP2、ECCP1
の制御レジスタは、すべて「CCPxCON」
と呼びます。
実装されている CCP モジュー
ルが標準または拡張のどちらであっても、
そのモジュール制御レジスタ名は
「CCPxCON」に統一します。
CCP2CON: 標準キャプチャ / コンペア /PWM 制御レジスタ
U-0
—
U-0
—
R/W-0
DC2B1
R/W-0
DC2B0
R/W-0
CCP2M3
R/W-0
CCP2M2
R/W-0
CCP2M1
bit 7
R/W-0
CCP2M0
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
ビット 7-6
ビット 5-4
ビット 3-0
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
未実装 :「0」として読み出し
DC2B<1:0>: CCP2 モジュールの PWM デューティ サイクル ビット 1 およびビット 0
キャプチャ モード :
未使用
コンペア モード :
未使用
PWM モード :
10 ビットの PWM デューティ サイクルの下位 2 ビット ( ビット 1 およびビット 0)。
上位 8 ビット (DC2B<9:2>) は、CCPR2L に格納されます。
CCP2M<3:0>: CCP2 モード選択ビット
0000 = キャプチャ / コンペア /PWM は無効 (CCP2 モジュールをリセット )
0001 = 予約
0010 = コンペア モード。一致時に出力をトグル (CCP2IF ビットをセット )
0011 = 予約
0100 = キャプチャ モード。立ち下りエッジごとにキャプチャ
0101 = キャプチャ モード。立ち上がりエッジごとにキャプチャ
0110 = キャプチャ モード。立ち上がりエッジ 4 回ごとにキャプチャ
0111 = キャプチャ モード。立ち上がりエッジ 16 回ごとにキャプチャ
1000 = コンペア モード : CCP2 ピンを Low に初期化し、コンペアが一致した場合に CCP2 ピン
を High に駆動 (CCP2IF ビットをセット )
1001 = コンペア モード : CCP2 ピンを High に初期化し、コンペアが一致した場合に CCP2 ピ
ンを Low に駆動 (CCP2IF ビットをセット )
1010 = コンペア モード : コンペアが一致した場合にソフトウェア割り込みを発生 (CCP2IF ビッ
トをセット。CCP2 ピンは I/O の状態を反映 )
1011 = コンペア モード : CCP2 一致時に、タイマのリセット、A/D 変換開始などの特殊イベン
トをトリガ (CCP2IF ビットをセット )
11xx = PWM モード
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 141
PIC18F2XK20/4XK20
11.1
CCP モジュールの構成
各キャプチャ / コンペア /PWM モジュールには、制
御レジスタ ( 一般名 CCPxCON) とデータ レジスタ
(CCPRx) が対応づけられています。データ レジスタ
は、更に 2 つの 8 ビット レジスタ、CCPRxL ( 下位
バイト ) と CCPRxH ( 上位バイト ) から構成されま
す。いずれのレジスタも読み出しおよび書き込み可
能です。
11.1.1
CCP モジュールとタイマ リソース
CCP モジュールは、選択したモードに応じてタイマ
1、2、または 3 を使用します。キャプチャまたはコ
ンペア モードではタイマ 1 とタイマ 3 が使用可能
です。タイマ 2 は PWM モードで使用します。
表 11-1:
CCP モード – タイマ リソース
CCP/ECCP Mode
Timer Resource
Capture
Timer1 or Timer3
Compare
Timer1 or Timer3
PWM
Timer2
表 11-2:
モジュールへの特定のタイマの割り当ては、T3CON
レジスタ ( レジスタ 15-1) 内のタイマ /CCP イネーブ
ル ビットの設定によって決まります。2 つのモ
ジュールを同じモード ( キャプチャ/ コンペア /PWM)
で動作するように設定すれば、両方のモジュールを
同時に有効にすることができ、同じタイマ リソース
を共有できます。2 つのモジュールのタイマ リソー
スと、両者の動作の相互作用を図 11-1 と図 11-2 に示
します。非同期カウンタ モードの場合、キャプチャ
機能は利用できません。
11.1.2
CCP2 ピン割り当て
CCP2 のピン割り当て ( キャプチャ入力、コンペア
および PWM の出力 ) は、デバイス構成に応じて変
更できます。CCP2 と多重化するピンは、構成ビッ
ト CCP2MX によって決まります。デフォルトでは
RC1 ピンになります (CCP2MX =1)。構成ビットを
クリアした場合、CCP2 は RB3 と多重化されます。
CCP2 のピン割り当てを変更しても、ポート ピンに
必要な設定が自動的に変更されるわけではありま
せん。CCP2 の割り当て先にかかわらず、該当する
TRIS レジスタが CCP2 動作に合わせて正しく設定
されていることを確認してください。
CCP1 および CCP2 のタイマ リソースに関する相互作用
CCP1 Mode CCP2 Mode
Interaction
Capture
Capture
Each module can use TMR1 or TMR3 as the time base. The time base can be different for
each CCP.
Capture
Compare
CCP2 can be configured for the Special Event Trigger to reset TMR1 or TMR3
(depending upon which time base is used). Automatic A/D conversions on trigger event can
also be done. Operation of CCP1 could be affected if it is using the same timer as a time
base.
Compare
Capture
CCP1 can be configured for the Special Event Trigger to reset TMR1 or TMR3
(depending upon which time base is used). Operation of CCP2 could be affected if it is using
the same timer as a time base.
Compare
Compare
Either module can be configured for the Special Event Trigger to reset the time base.
Automatic A/D conversions on CCP2 trigger event can be done. Conflicts may occur if both
modules are using the same time base.
Capture
PWM
None
Compare
PWM
None
Capture
None
Compare
None
PWM
(1)
PWM(1)
PWM
注 1:
(1)
PWM
Both PWMs will have the same frequency and update rate (TMR2 interrupt).
標準および拡張 PWM 動作の両方に適用されます。
DS41303E_JP - ページ 142
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
11.2
キャプチャ モード
キャプチャ モードでは対応するCCPxピンにイベン
トが発生した時点で、TMR1 または TMR3 レジスタ
の 16 ビットの値を CCPRxH:CCPRxL レジスタ ペア
にキャプチャします。イベントとは、次のいずれか
です。
•
•
•
•
すべての立ち下がりエッジ
すべての立ち上がりエッジ
立ち上がりエッジ 4 回ごと
立ち上がりエッジ 16 回ごと
例 11-1:
イベントは、CCPxCON レジスタのモード選択ビッ
ト CCPxM<3:0> によって選択します。キャプチャが
実行されると割り込み要求フラグ ビット CCPxIF が
セットされます。このビットはソフトウェアでクリ
アする必要があります。CCPRx レジスタの値を読
み出す前に再度キャプチャが実行されると、以前に
キャプチャした値が新たにキャプチャした値で上
書きされます。
11.2.1
キャプチャ プリスケーラ間の切り替えによって割
り込みが発生する可能性があります。この場合、プ
リスケーラ カウンタがクリアされないため、切り
替え後最初のキャプチャがゼロ以外のプリスケー
ラによって実行される場合があります。例 11-1 に、
キャプチャ プリスケーラを切り替える際に推奨さ
れる方法を示します。この例では、切り替えと同時
にプリスケーラ カウンタをクリアし、
「誤った」割
り込みを発生しません。
CLRF
MOVLW
MOVWF
キャプチャ プリスケーラの切り替え
(CCP2 の場合 )
CCP2CON
; Turn CCP module off
NEW_CAPT_PS ; Load WREG with the
; new prescaler mode
; value and CCP ON
CCP2CON
; Load CCP2CON with
; this value
CCP ピンの設定
キャプチャ モードでは、対応する方向ビット TRIS
をセットして使用する CCPx ピンを入力に設定して
ください。
注:
11.2.2
CCPx ピンを出力に設定すると、ポートに
対する書き込みでキャプチャ状態が発生
します。
タイマ 1/ タイマ 3 のモード選択
キャプチャ機能で使用するタイマ ( タイマ 1 かタイ
マ 3 または両方 ) の動作モードは、タイマ モードか
同期カウンタ モードでなければなりません。非同
期カウンタ モードの場合、キャプチャ機能は利用
できません。各 CCP モジュールで使用するタイマ
は T3CON レジスタで選択します (11.1.1 項「CCP モ
ジュールとタイマ リソース」参照 )。
11.2.3
ソフトウェア割り込み
キャプチャ モードを変更した場合、誤ってキャプ
チャ割り込みが生成されることがあります。このよ
うな誤動作を防ぐには、CCPxIE 割り込みイネーブ
ル ビットをクリアします。また、動作モードの変
更後は、必ず割り込みフラグ ビット CCPxIF もクリ
アするようにしてください。
11.2.4
CCP プリスケーラ
キャプチャ モードには 4 通りのプリスケーラ設定
があります。これらは動作モードの一部としてモー
ド選択ビット (CCPxM<3:0>) によって指定します。
CCP モジュールがオフされた場合、またはキャプ
チャ モードが無効化された場合、プリスケーラ カ
ウンタはクリアされます。これは、何らかのリセッ
トが発生してもプリスケーラ カウンタがクリアさ
れることを意味します。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 143
PIC18F2XK20/4XK20
図 11-1:
キャプチャ モード動作のブロック図
TMR3H
Set CCP1IF
T3CCP2
CCP1 pin
Prescaler
 1, 4, 16
and
Edge Detect
CCP1CON<3:0>
Q1:Q4
CCP2CON<3:0>
4
4
CCPR1L
TMR1
Enable
TMR1H
TMR1L
TMR3H
TMR3L
Set CCP2IF
4
T3CCP1
T3CCP2
CCP2 pin
Prescaler
 1, 4, 16
TMR3
Enable
CCPR1H
T3CCP2
TMR3L
and
Edge Detect
TMR3
Enable
CCPR2H
CCPR2L
TMR1
Enable
T3CCP2
T3CCP1
DS41303E_JP - ページ 144
Preliminary
TMR1H
TMR1L
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
11.3
11.3.2
コンペア モード
CCP モジュールのコンペア機能を使用している場
合、タイマ 1 およびタイマ 3 はタイマ モードまた
は同期カウンタ モードで動作させる必要がありま
す。非同期カウンタ モードの場合、コンペア機能
は利用できません。
コンペア モードでは、CCPRx レジスタの 16 ビット
値と TMR1 または TMR3 レジスタ ペアの値が継続
的に比較されます。一致した場合、CCPx ピンは次
のように動作します。
•
•
•
•
High に駆動
Low に駆動
トグル (High から Low または Low から High)
変化せず ( すなわち、I/O ラッチの状態を反映 )
11.3.3
11.3.4
CCP ピンの設定
特殊イベント トリガ
両方の CCP モジュールに特殊イベント トリガ機能
があります。これは、コンペア モードで内部ハー
ドウェア信号を発生して、他のモジュールの動作を
トリガする機能です。特殊イベント トリガはコン
ペア特殊イベント トリガ モードを選択すること
で有効になります (CCPxM<3:0> = 1011)。
CCPx ピンは、対応する TRIS ビットをクリアして
出力に設定する必要があります。
注:
ソフトウェア割り込みモード
ソフトウェア割り込み生成モードを選択した場合
(CCPxM<3:0> = 1010)、対応する CCPx ピンは変化
しません。CCPxIF 割り込みフラグだけが影響を受
けます。
ピンの動作は、モード選択ビット (CCPxM<3:0>) の
値によって決まります。一致と同時に割り込みフラ
グ ビット CCPxIF もセットされます。
11.3.1
タイマ 1/ タイマ 3 のモード選択
CCPxCON レジスタをクリアすると、CCPx
コンペア出力ラッチ ( デバイス構成による )
は強制的にデフォルトの Low レベルになり
ます。これは PORTB または PORTC の I/O
データ ラッチではありません。
いずれの CCP モジュールについても、特殊イベント
トリガが発生すると、モジュールのタイム ベースと
してどのようなタイマ リソースを使用中であって
も、タイマ レジスタのペアがリセットされます。こ
の機能により、CCPRx レジスタを両タイマのプログ
ラマブルな周期レジスタとして使用できます。
更に、CCP2 の特殊イベント トリガは A/D 変換を起
動できます。それには、A/D コンバータをあらかじ
め有効にしておく必要があります。
図 11-2:
コンペア モード動作のブロック図
CCPR1H
Set CCP1IF
CCPR1L
Special Event Trigger
(Timer1/Timer3 Reset)
CCP1 pin
Comparator
Output
Logic
Compare
Match
S
Q
R
TRIS
Output Enable
4
CCP1CON<3:0>
0
TMR1H
TMR1L
1
TMR3H
TMR3L
T3CCP1
0
Special Event Trigger
(Timer1/Timer3 Reset, A/D Trigger)
1
T3CCP2
Set CCP2IF
Comparator
CCPR2H
CCP2 pin
Compare
Match
Output
Logic
4
CCPR2L
S
Q
R
TRIS
Output Enable
CCP2CON<3:0>
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 145
PIC18F2XK20/4XK20
表 11-3:
Name
INTCON
キャプチャ、コンペア、タイマ 1、タイマ 3 関連レジスタ
Bit 7
Bit 6
Bit 5
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
IPEN
SBOREN
—
RI
TO
PD
POR
BOR
56
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
60
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
60
IPR2
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
60
RCON
TRISB
PORTB Data Direction Control Register
60
TRISC
PORTC Data Direction Control Register
60
TMR1L
Timer1 Register, Low Byte
58
TMR1H
Timer1 Register, High Byte
58
T1CON
RD16
T1RUN
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
58
TMR3H
Timer3 Register, High Byte
59
TMR3L
Timer3 Register, Low Byte
59
T3CON
RD16
T3CCP2
T3CKPS1 T3CKPS0
T3CCP1
T3SYNC
TMR3CS TMR3ON
59
CCPR1L
Capture/Compare/PWM Register 1, Low Byte
59
CCPR1H
Capture/Compare/PWM Register 1, High Byte
59
CCP1CON
P1M1
P1M0
DC1B1
DC1B0
CCP1M3
CCP1M2
CCP1M1
CCP1M0
59
CCPR2L
Capture/Compare/PWM Register 2, Low Byte
59
CCPR2H
Capture/Compare/PWM Register 2, High Byte
59
CCP2CON
—
—
DC2B1
DC2B0
CCP2M3
CCP2M2
CCP2M1
CCP2M0
59
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットはキャプチャ / コンペア、タイマ 1 または
タイマ 3 では使用しません。
注 1: PIC18F2XK20 デバイスには実装されていません。
DS41303E_JP - ページ 146
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
11.4
PWM モード
PWM モードは、CCP モジュールの場合は CCP2 ピ
ンに、ECCP モジュールの場合は P1A から P1D ピ
ンにパルス幅変調信号を出力します。以下、変調信
号の出力ピンを CCPx ピンと表記します。デュー
ティ サイクル、周期、分解能は次のレジスタで設
定します。
• PR2
• T2CON
• CCPRxL
• CCPxCON
PWM 出力 ( 図 11-4) には、タイム ベース ( 周期 )
および出力が High になる時間 ( デューティ サイク
ル ) の 2 つの要素があります。
図 11-4:
CCP の PWM 出力
Period
Pulse Width
TMR2 = PR2
TMR2 = CCPRxL:DCxB<1:0>
TMR2 = 0
パルス幅変調 (PWM) モードでは、CCP モジュール
が CCPx ピンに最大分解能 10 ビットの PWM 信号
を出力します。CCPx ピンは PORT データ ラッチと
多重化されているため、このピンの TRIS ビットを
クリアして CCPx ピンを出力に設定することができ
ます。
注:
CCPxCON レジスタをクリアすると、CCPx
モジュールによる CCPx ピンの制御が解除
されます。
PWM 動作の概略ブロック図を図 11.1.1 に示します。
PWM 信号の代表的な波形を図 11-4 に示します。
CCP モジュールを PWM モードで動作させる手順に
ついては、11.4.7 項「PWM 動作のセットアップ」
を参照してください。
図 11-3:
PWM 動作の概略ブロック図
DCxB<1:0>
Duty Cycle Registers
CCPRxL
CCPRxH(2) (Slave)
CCPx
R
Comparator
TMR2
(1)
Q
S
TRIS
Comparator
PR2
注 1:
2:
Clear Timer2,
toggle CCPx pin and
latch duty cycle
8 ビットのタイマ レジスタ TMR2 と、2 ビット
の内部システム クロック (FOSC) または 2 ビット
のプリスケーラを連結して 10 ビットのタイム
ベースを生成します。
PWM モードでは、CCPRxH は読み出し専用レジ
スタになります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 147
PIC18F2XK20/4XK20
11.4.1
PWM の周期
11.4.2
PWM の周期は、タイマ 2 の PR2 レジスタで設定し
ます。PWMの周期の計算には、
式11-1を使用します。
式 11-1:
PWM の周期
PWM Period =   PR2  + 1   4  T OSC 
(TMR2 Prescale Value)
注 : TOSC = 1/FOSC
TMR2 と PR2 が等しくなると、直後のインクリメン
ト サイクルで次の 3 つのイベントが発生します。
• TMR2 がクリアされる
• CCPx ピンがセットされる ( 例外 : PWM のデュー
ティ サイクル = 0% の場合、ピンはセットされま
せん。)
• CCPRxL の PWM デューティ サイクルが CCPRxH
にラッチされる
注:
PWM のデューティ サイクル
PWM のデューティ サイクルは複数のレジスタにま
たがる 10 ビットの値を書き込んで指定します。書
き込む場所は、CCPRxL レジスタと CCPxCON レジ
スタの DCxB<1:0> ビットです。CCPRx には上位
8 ビット、CCPxCON レジスタの DCxB<1:0> ビット
には下位 2 ビットを書き込みます。CCPRxL および
CCPxCON レジスタの DCxB<1:0> ビットには、いつ
書き込んでもかまいません。周期が完了するまで
( すなわち PR2 レジスタと TMR2 レジスタが一致す
るまで )、CCPRxH レジスタにはデューティ サイク
ル値がラッチされません。PWM の使用中は、
CCPRxH レジスタは読み出し専用になります。
PWM のパルス幅の計算には、
式 11-2 を使用します。
PWM のデューティ サイクル比の計算には、式 11-3
を使用します。
式 11-2:
パルス幅
Pulse Width =  CCPRxL:DCxB<1:0>  
PWM の周波数は、タイマ 2 のポストス
ケーラ (14.1 項「タイマ 2 の動作」参照 )
に関係なく決まります。
T OSC  (TMR2 Prescale Value)
式 11-3:
デューティ サイクル比
CCPRxL:DCxB<1:0> -
Duty Cycle Ratio = ---------------------------------------------------------4  PR2 + 1 
CCPRxH レジスタと 2 ビットの内部ラッチが PWM
デューティ サイクルの 2 重バッファとして使用さ
れます。この 2 重バッファは、グリッチのない PWM
動作に欠かせません。
8 ビットのタイマ レジスタ TMR2 と、2 ビットの内
部システム クロック (FOSC)、または 2 ビットのプ
リスケーラを連結して 10 ビットのタイム ベースを
生成します。タイマ 2 のプリスケーラが 1:1 に設定
されている場合は、システム クロックが使用され
ます。
10 ビットのタイム ベースが CCPRxH および 2 ビッ
トのラッチと一致すると、CCPx ピンがクリアされ
ます ( 図 11-3 参照 )。
DS41303E_JP - ページ 148
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
11.4.3
PWM の分解能
式 11-4:
分 解 能 は、あ る 一 定 の 周 期 に 対 し て 設 定 可 能 な
デューティ サイクルの数を決定します。例えば分解
能 10 ビットの場合は 1024 通りのデューティ サイク
ル、分解能 8 ビットの場合は 256 通りのデューティ
サイクルを設定できます。
log  4  PR2 + 1  - bits
Resolution = ----------------------------------------log  2 
注:
PR2 が 255 の場合、PWM の最大分解能は 10 ビット
です。式 11-4 に示すように、分解能は PR2 レジス
タの値の関数になります。
表 11-4:
Timer Prescaler (1, 4, 16)
PR2 Value
Maximum Resolution (bits)
2.44 kHz
9.77 kHz
39.06 kHz
156.25 kHz
312.50 kHz
416.67 kHz
16
4
1
1
1
1
FFh
FFh
FFh
3Fh
1Fh
17h
10
10
10
8
7
6.58
19.53 kHz
78.12 kHz
PWM の周波数と分解能の例 (FOSC = 20 MHz)
PWM Frequency
Timer Prescale (1, 4, 16)
PR2 Value
Maximum Resolution (bits)
表 11-6:
パルス幅の値が周期より大きい場合、割
り当てられた PWM ピンは変化しなくな
ります。
PWM の周波数と分解能の例 (40 MHz の場合 )
PWM Frequency
表 11-5:
PWM 分解能
1.22 kHz
4.88 kHz
156.3 kHz
208.3 kHz
16
4
1
1
1
1
0xFF
0xFF
0xFF
0x3F
0x1F
0x17
10
10
10
8
7
6.6
PWM の周波数と分解能の例 (FOSC = 8 MHz)
PWM Frequency
Timer Prescale (1, 4, 16)
PR2 Value
Maximum Resolution (bits)
 2009 Microchip Technology Inc.
1.22 kHz
4.90 kHz
19.61 kHz
76.92 kHz
153.85 kHz
200.0 kHz
16
4
1
1
1
1
0x65
0x65
0x65
0x19
0x0C
0x09
8
8
8
6
5
5
Preliminary
DS41303E_JP - ページ 149
PIC18F2XK20/4XK20
11.4.4
11.4.7
電源管理モード時の動作
スリープ モード時は TMR2 レジスタがインクリメ
ントせず、モジュールの状態は変化しません。CCPx
ピンが値を駆動している場合は、その値が駆動され
たままになります。デバイスがウェイクアップする
と、TMR2 はスリープ前の状態からインクリメント
を再開します。
CCP モジュールを PWM 動作用に設定するには、
次の手順を実行します。
1.
2.
PRI_IDLE モードの場合は、プライマリ クロックが
引き続き CCP モジュールにクロックを供給します。
それ以外の電源管理モードでは、選択した電源管理
モードのクロックによってタイマ 2 が駆動されま
す。これらのモードのクロック周波数は、ほとんど
の場合プライマリ クロック周波数とは異なります。
3.
11.4.5
5.
システム クロック周波数の変更
PWM の周波数はシステム クロック周波数から生成
されます。システム クロック周波数を変更すると、
PWM の周波数も変化します。詳細は、2.0 項「オシ
レータ モジュール ( フェイルセーフ クロック モニ
タ機能付き )」を参照してください。
11.4.6
4.
6.
リセットの影響
何らかのリセットが発生すると、すべてのポートが
強制的に入力モードとなり、CCP レジスタはリセッ
ト状態に戻ります。
7.
DS41303E_JP - ページ 150
PWM 動作のセットアップ
Preliminary
対応する TRIS ビットをセットして PWM ピン
(CCPx) の出力ドライバを無効にします。
ECCP モジュールの場合のみ、PSTRCON レジ
スタの該当する出力先設定ビットをセットし
て、目標とする PWM 出力先 (P1A から P1D) を
選択します。
PR2 レジスタに値を格納して PWM 周期を設定
します。
CCPxCON レジスタに適切な値を格納して、
CCP モジュールを PWM モードに設定します。
CCPRxL レジスタおよび CCPxCON レジスタの
CCPx ビットに値を格納して、PWM のデュー
ティ サイクルを設定します。
タイマ 2 を設定後、起動します。
• PIR1 レジスタの割り込みフラグ ビット
TMR2IF をクリアします。
• T2CON レジスタの T2CKPS ビットに値を格
納してタイマ 2 のプリスケール値を設定し
ます。
• T2CON レジスタの TMR2ON ビットをセット
してタイマ 2 を有効にします。
新しい PWM サイクルの開始後に PWM 出力を
有効にします。
• タイマ 2 がオーバーフローする (PIR1 レジス
タの TMR2IF ビットがセットされる ) まで待
ちます。
• 対応する TRIS ビットをクリアして CCPx ピ
ンの出力ドライバを有効にします。
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 11-7:
Name
INTCON
PWM およびタイマ 2 の関連レジスタ
Bit 7
Bit 6
GIE/GIEH PEIE/GIEL
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
IPEN
SBOREN
—
RI
TO
PD
POR
BOR
56
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
RCON
TRISB
PORTB Data Direction Control Register
60
TRISC
PORTC Data Direction Control Register
60
TMR2
Timer2 Register
58
PR2
Timer2 Period Register
58
T2CON
—
T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0
58
CCPR1L
Capture/Compare/PWM Register 1, Low Byte
59
CCPR1H
Capture/Compare/PWM Register 1, High Byte
59
CCP1CON
P1M1
P1M0
DC1B1
DC1B0
CCPR2L
Capture/Compare/PWM Register 2, Low Byte
CCPR2H
Capture/Compare/PWM Register 2, High Byte
CCP2CON
ECCP1AS
PWM1CON
—
—
ECCPASE ECCPAS2
PRSEN
PDC6
CCP1M3
CCP1M2
CCP1M1
CCP1M0
59
59
59
DC2B1
DC2B0
CCP2M3
CCP2M2
CCP2M1
CCP2M0
59
ECCPAS1
ECCPAS0
PSSAC1
PSSAC0
PSSBD1
PSSBD0
59
PDC5
PDC4
PDC3
PDC2
PDC
PDC0
59
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは PWM またはタイマ 2 では使用しません。
注 1: PIC18F2XK20 デバイスには実装されていません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 151
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 152
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
12.0
タイマ 0 モジュール
T0CON レジスタ ( レジスタ 12-1) は、プリスケーラ
の選択をはじめとするモジュールのあらゆる機能
を制御します。読み出しおよび書き込み可能なレジ
スタです。
タイマ 0 モジュールには以下の機能があります。
• ソフトウェアによって選択可能な、8 ビットおよ
び 16 ビット モードのタイマまたはカウンタ動作
• 読み出しおよび書き込み可能なレジスタ
• ソフトウェアによってプログラム可能な 8 ビット
専用プリスケーラ
• 選択可能なクロック ソース ( 内部または外部 )
• 外部クロック用エッジ選択
• オーバーフロー割り込み
レジスタ 12-1:
8 ビット モードで動作するタイマ 0 モジュールの概
略ブロック図を図 12-1 に示します。図 12-2 は、16
ビット モードで動作するタイマ 0 モジュールの概略
ブロック図です。
T0CON: タイマ 0 制御レジスタ
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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
TMR0ON: タイマ 0 オン / オフ制御ビット
1 = タイマ 0 が有効
0 = タイマ 0 を停止
ビット 6
T08BIT: タイマ 0 8 ビット /16 ビット制御ビット
1 = タイマ 0 を 8 ビット タイマ / カウンタに設定
0 = タイマ 0 を 16 ビット タイマ / カウンタに設定
ビット 5
T0CS: タイマ 0 クロック ソース選択ビット
1 = T0CKI ピンの遷移
0 = 内部命令サイクル クロック (CLKOUT)
ビット 4
T0SE: タイマ 0 ソース エッジ選択ビット
1 = T0CKI ピンの High から Low への遷移でインクリメント
0 = T0CKI ピンの Low から High への遷移でインクリメント
ビット 3
PSA: タイマ 0 プリスケーラ割り当てビット
1 = タイマ 0 プリスケーラを割り当てない。タイマ 0 クロックはプリスケーラを迂回して入力
0 = タイマ 0 プリスケーラを割り当てる。タイマ 0 クロックにはプリスケーラ出力を入力
ビット 2-0
T0PS<2:0>: タイマ 0 プリスケール値 ( 分周比 ) 選択ビット
111 = 1:256
110 = 1:128
101 = 1:64
100 = 1:32
011 = 1:16
010 = 1:8
001 = 1:4
000 = 1:2
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 153
PIC18F2XK20/4XK20
12.1
タイマ 0 の動作
12.2
タイマ 0 はタイマまたはカウンタとして動作しま
す。モードは T0CON レジスタの T0CS ビットによっ
て選択します。タイマ モード (T0CS = 0) のデフォ
ルト設定では、異なるプリスケール値が選択されて
いない限り (12.3 項「プリスケーラ」参照 )、モジュー
ル が ク ロ ッ ク ご と に イ ン ク リ メ ン ト さ れ ま す。
TMR0 レジスタへの書き込み直後の 2 命令サイクル
間はタイマ 0 のインクリメントが禁止されます。こ
の制約を回避するには、TMR0 レジスタに書き込む
値をあらかじめ調整して、スキップされるインクリ
メント回数を補ってください。
T0CS ビットをセットすると (= 1)、カウンタ モード
が選択されます。このモードの場合、RA4/T0CKI ピ
ンの立ち上がりエッジまたは立ち下がりエッジの
いずれかでタイマ 0 がインクリメントします。どち
らのエッジでインクリメントするかは、T0CON レ
ジスタのタイマ 0 ソース エッジ選択ビット T0SE に
よって決まります。このビットをクリアすると、立
ち上がりエッジが選択されます。外部クロック入力
の制限については、この後詳しく説明します。
16 ビット モードにおけるタイマ 0 の
読み出しと書き込み
16 ビット モードで使用する TMR0H はタイマ 0 の
実際の上位バイトではなくバッファを介した値で
す。実際のタイマ 0 上位バイトは、直接読み出しあ
るいは書き込むことができません ( 図 12-2 参照 )。
TMR0H には、TMR0L の読み出しと同時に、タイマ
0 の上位バイトの内容が格納されます。この動作に
より、読み出された上位、下位バイトが有効である
かを検証せずに、タイマ 0 の 16 ビットをすべて読
み出すことができます。このような同時読み出しで
はなく、上位、下位バイトを連続して読み出すと、
その間のロールオーバーによって正しい値が得ら
れない場合があります。
同様に、
タイマ 0 上位バイトへの書き込みも TMR0H
バッファ レジスタを介して実行する必要がありま
す。TMR0H に書き込んでも、直接タイマ 0 が変化
するわけではありません。タイマ 0 の上位バイト
は、TMR0L への書き込みと同時に、TMR0H の内容
によって書き換えられます。これによって、タイマ
0 の全 16 ビットを一度に更新できます。
タイマ 0 は外部クロック ソースによって駆動でき
ます。ただし、外部クロックを内部位相クロック
(TOSC) と確実に同期させるために、いくつかの要件
を満たす必要があります ( 表 26-11 参照 )。同期確立
からタイマ / カウンタのインクリメント開始までに
は遅延があります。
図 12-1:
タイマ 0 のブロック図 (8 ビット モード )
FOSC/4
0
0
1
T0CKI pin
T0SE
T0CS
Programmable
Prescaler
1
Sync with
Internal
Clocks
Set
TMR0IF
on Overflow
(2 TCY Delay)
8
3
T0PS<2:0>
8
PSA
注:
TMR0L
Internal Data Bus
リセット時、タイマ 0 はプリスケール値を最大に設定した、T0CKI をクロック入力とする 8 ビット モードになります。
DS41303E_JP - ページ 154
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 12-2:
タイマ 0 のブロック図 (16 ビット モード )
FOSC/4
0
0
Sync with
Internal
Clocks
1
Programmable
Prescaler
T0CKI pin
T0SE
T0CS
1
TMR0
High Byte
TMR0L
8
Set
TMR0IF
on Overflow
(2 TCY Delay)
3
Read TMR0L
T0PS<2:0>
Write TMR0L
PSA
8
8
TMR0H
8
8
Internal Data Bus
注:
12.3
リセット時、タイマ 0 はプリスケール値を最大に設定した、T0CKI をクロック入力とする 8 ビット モードになります。
12.3.1
プリスケーラ
タイマ 0 モジュールのプリスケーラとして 8 ビット
のカウンタを使用できます。プリスケーラは直接読
み出したり書き込むことができません。プリスケー
ラの割り当てやプリスケール値 ( 分周比 ) は、
T0CON
レジスタの PSA および T0PS<2:0> ビットによって設
定します。
PSA ビットをクリアすると、タイマ 0 モジュールに
プリスケーラが割り当てられます。プリスケーラを
割り当てると、1:2 から 1:256 までのプリスケール
値 ( 分周比 ) を 2 のべき乗の刻みで選択できるよう
になります。
タイマ 0 モジュールにプリスケーラが割り当てられ
る と、TMR0 レ ジ ス タ に 書き 込 む す べ て の 命 令
(CLRF TMR0、MOVWF TMR0、BSF TMR0 など ) で、
プリスケーラのカウントがクリアされます。
注:
タイマ0にプリスケーラを割り当てている
場合に TMR0 への書き込みを実行すると、
プリスケーラのカウントがクリアされま
すが、プリスケーラの割り当ては変更され
ません。
表 12-1:
Name
プリスケーラの割り当てはソフトウェアで完全に
制御されます ( プログラム実行中に「その場」で変
更できます )。
12.4
タイマ 0 割り込み
TMR0 レジスタが、8 ビット モードでは FFh から
00h に、
16 ビット モードでは FFFFh から 0000h モー
ドにオーバーフローすると TMR0 割り込みが発生
します。このオーバーフローによってフラグ ビッ
ト TMR0IF がセットされます。INTCON レジスタの
TMR0IE ビットをクリアすると、この割り込みをマ
スクできます。この割り込みを再び許可する前に、
割り込みサービス ルーチン内で TMR0IF ビットを
クリアしておく必要があります。
スリープ モードではタイマ 0 が停止するため、
TMR0割り込みによってプロセッサをスリープから
ウェイクアップすることはできません。
タイマ 0 関連レジスタ
Bit 7
Bit 6
Bit 5
TMR0L
Timer0 Register, Low Byte
TMR0H
Timer0 Register, High Byte
INTCON
GIE/GIEH PEIE/GIEL TMR0IE
T0CON
TMR0ON
TRISA
プリスケーラ割り当ての切り替え
RA7
(1)
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
58
58
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
T08BIT
T0CS
T0SE
PSA
T0PS2
T0PS1
T0PS0
58
RA6(1)
RA5
RA4
RA3
RA2
RA1
RA0
60
記号の説明 : 網掛けのビットはタイマ 0 では使用しません。
注 1: PORTA<7:6> およびこれらに対応する方向ビットは、使用する各種プライマリ オシレータ モードに基
づいて、個々にポート ピンとして設定します。無効の場合は「0」と読み出されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 155
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 156
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
13.0
タイマ 1 モジュール
タイマ 1 タイマ / カウンタ モジュールには以下の機
能があります。
• ソフトウェアによって選択可能な、16 ビット
モードのタイマまたはカウンタ動作
• 読み出し / 書き込み可能な 8 ビット レジスタ
(TMR1H および TMR1L)
• 選択可能なクロック ソース ( 内部または外部 )、
およびタイマ 1 オシレータに対するオプション
• オーバーフロー割り込み
• CCP 特殊イベント トリガによるリセット
• デバイス クロック ステータス フラグ (T1RUN)
タイマ 1 モジュールの概略ブロック図を図 13-1 に
示します。読み出し / 書き込みモードで動作するモ
ジュールのブロック図を図 13-2 に示します。
レジスタ 13-1:
モジュールにはクロック供給の選択肢を増やすた
めに専用の低消費電力オシレータ ( タイマ 1 オシ
レータ ) が実装されています。タイマ 1 オシレータ
は、電源管理モード動作時に、マイクロコントロー
ラの低消費電力クロック ソースとしても使用でき
ます。
また、最低限の外付け部品およびコードの追加に
よって、アプリケーションにリアルタイム クロッ
ク (RTC) 機能を付加することも可能です。
タイマ 1 は制御レジスタ T1CON ( レジスタ 13-1) に
よって制御します。このレジスタにはタイマ 1 オシ
レータのイネーブル ビット (T1OSCEN) も含まれま
す。タイマ 1 の有効または無効は、T1CON レジス
タの制御ビット TMR1ON をセットまたはクリアす
ることで設定します。
T1CON: タイマ 1 制御レジスタ
R/W-0
R-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
RD16
T1RUN
T1CKPS1
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS
bit 7
R/W-0
TMR1ON
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
ビット 7
ビット 6
ビット 5-4
ビット 3
ビット 2
ビット 1
ビット 0
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
RD16: 16 ビット読み出し / 書き込みモード イネーブル ビット
1 = 1 回の 16 ビット動作によるタイマ 1 レジスタの読み出し / 書き込みが有効
0 = 2 回の 8 ビット動作によるタイマ 1 レジスタの読み出し / 書き込みが有効
T1RUN: タイマ 1 システム クロック ステータス ビット
1 = メイン システム クロックをタイマ 1 オシレータから供給
0 = メイン システム クロックをタイマ 1 オシレータ以外から供給
T1CKPS<1:0>: タイマ 1 入力クロック プリスケール値 ( 分周比 ) 選択ビット
11 = 1:8
10 = 1:4
01 = 1:2
00 = 1:1
T1OSCEN: タイマ 1 オシレータ イネーブル ビット
1 = タイマ 1 オシレータが有効
0 = タイマ 1 オシレータを停止
消費電力低減のため、オシレータのインバータおよびフィードバック抵抗を遮断
T1SYNC: タイマ 1 外部クロック入力同期選択ビット
TMR1CS = 1 のとき :
1 = 外部クロック入力を同期させない
0 = 外部クロック入力を同期させる
TMR1CS = 0 のとき :
このビットは無視。TMR1CS = 0 のとき、タイマ 1 は内部クロックを使用します。
TMR1CS: タイマ 1 クロック ソース選択ビット
1 = RC0/T1OSO/T13CKI ピンから入力される外部クロック ( 立ち上がりエッジ )
0 = 内部クロック (FOSC/4)
TMR1ON: タイマ 1 オン ビット
1 = タイマ 1 が有効
0 = タイマ 1 を停止
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 157
PIC18F2XK20/4XK20
13.1
タイマ 1 の動作
(FOSC/4) ごとにインクリメントされます。セットし
た場合は、タイマ 1 の外部クロック入力またはタイ
マ 1 オシレータ ( 有効にしている場合 ) のいずれかの
立ち上がりエッジごとにインクリメントされます。
タイマ 1 は、次のいずれかのモードで動作します。
• タイマ
• 同期カウンタ
• 非同期カウンタ
タイマ 1 オシレータを有効にした場合、RC1/T1OSI
および RC0/T1OSO/T13CKI ピンに関連するデジタ
ル回路はオフされます。これは、TRISC<1:0> の値
が無視され、ピンが「0」と読まれることを意味し
ます。
動作モードは、T1CON レジスタのクロック選択ビッ
ト TMR1CS によって決まります。TMR1CS をクリア
した場合 (= 0)、タイマ 1 は内部の命令サイクル
図 13-1:
タイマ 1 のブロック図
Timer1 Oscillator
Timer1 Clock Input
1
On/Off
T1OSO/T13CKI
1
FOSC/4
Internal
Clock
T1OSI
Synchronize
Prescaler
1, 2, 4, 8
0
Detect
0
2
T1OSCEN
(1)
Sleep Input
TMR1CS
Timer1
On/Off
T1CKPS<1:0>
T1SYNC
TMR1ON
Clear TMR1
(CCP Special Event Trigger)
注 1:
Set
TMR1IF
on Overflow
TMR1
High Byte
TMR1L
イネーブル ビット T1OSCEN をクリアすると、消費電力低減のため、インバータおよびフィードバック抵抗が
遮断されます。
図 13-2:
タイマ 1 のブロック図 (16 ビット読み出し / 書き込みモード )
Timer1 Oscillator
Timer1 Clock Input
1
T1OSO/T13CKI
1
FOSC/4
Internal
Clock
T1OSI
Synchronize
Prescaler
1, 2, 4, 8
0
Detect
0
2
(1)
T1OSCEN
T1CKPS<1:0>
Sleep Input
TMR1CS
Timer1
On/Off
T1SYNC
TMR1ON
Clear TMR1
(CCP Special Event Trigger)
TMR1
High Byte
TMR1L
8
Set
TMR1IF
on Overflow
Read TMR1L
Write TMR1L
8
8
TMR1H
8
8
Internal Data Bus
注 1:
イネーブル ビット T1OSCEN をクリアすると、消費電力低減のため、インバータおよびフィードバック抵抗が
遮断されます。
DS41303E_JP - ページ 158
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
13.2
13.2.3
クロック ソースの選択
クロック ソースの選択には、T1CON レジスタの
TMR1CS ビットを使用します。TMR1CS = 0 の場合、
クロック ソースは FOSC/4 となります。TMR1CS = 1
の場合、クロック ソースは外部から供給されます。
13.2.1
内部クロック ソース
内部クロック ソースを選択した場合、
TMR1H:TMR1L レジスタ ペアは、タイマ 1 のプリ
スケール値で決まるTCY の倍数単位でインクリメン
トします。
13.2.2
外部クロック ソース
外部クロック ソースを選択した場合、タイマ 1 モ
ジュールをタイマまたはカウンタとして使用でき
ます。
カウンタとして使用する場合、タイマ 1 は外部ク
ロック入力 T1CKI の立ち上がりエッジでインクリ
メントします。また、カウンタ モードのクロック
は、マイクロコントローラのシステム クロックに
同期させることも、非同期で動作させることもでき
ます。
外部クロック オシレータが必要な場合 ( およびマイ
クロコントローラが CLKOUT なしで INTOSC を使
用している場合 )、LP オシレータをタイマ 1 のク
ロック ソースに使用できます。
注:
カウンタ モードでは、次のいずれかの状態
が 1 つ以上発生してからカウンタが立ち下
がりエッジを検出すると、立ち上がりエッ
ジでのインクリメントが開始されます
( 図 13-3 参照 )。
• POR または BOR 後のタイマ 1 有効化
• TMR1H または TMR1L への書き込み
• T1CKI が High の間にタイマ 1 を無効化
し (TMR1ON = 0)、T1CKI が Low の間
にタイマ 1 を有効化 (TMR1ON = 1)
図 13-3:
非同期カウンタ モードにおける
タイマ 1 の読み出し / 書き込み
タイマが外部の非同期クロックで動作している間
は、TMR1H または TMR1L の正しい読み出し動作
が ( ハードウェアによって ) 保証されます。ただし、
16 ビット タイマを 2 つの 8 ビット値として読み出
す場合、2 回の読み出しの間にタイマがオーバーフ
ローする可能性があるため注意が必要です。
書き込みの場合は、タイマを停止してから正しい値
を書き込むことを推奨します。レジスタがインクリ
メントしている間にタイマ レジスタへ書き込むと、
書き込みの競合が発生する場合があります。この場
合、TMR1H:TMR1L レジスタ ペアが予期せぬ値と
なることがあります。
13.3
タイマ 1 プリスケーラ
タイマ 1 のプリスケーラでは、クロック入力の 1/1、
1/2、1/4、1/8 倍の 4 通りの分周比を設定できます。
プリスケール カウンタは、T1CON レジスタの
T1CKPS ビットで制御します。プリスケール カウン
タは直接読んだり書き込むことができませんが、
TMR1H または TMR1L への書き込み時にクリアされ
ます。
13.4
非同期カウンタ モードのタイマ 1 の
動作
T1CON レジスタの制御ビット T1SYNC をセットし
た場合、外部クロック入力は同期化されません。タ
イマは、内部位相クロックに対して非同期にインク
リメントを継続します。タイマはスリープ時にも動
作を継続するため、オーバーフロー割り込みを生成
してプロセッサをウェイクアップできます。ただ
し、タイマの読み出し / 書き込みを実行する場合は、
ソフトウェアに特別な注意を払う必要があります
(13.2.3 項「非同期カウンタ モードにおけるタイマ
1 の読み出し / 書き込み」参照 )。
注 1:
動作を同期モードから非同期モードに
切り替える際は、インクリメントがス
キップされる可能性があります。非同期
モードから同期モードに切り替える際
は、インクリメントが 1 回多く実行され
る場合があります。
タイマ 1 のインクリメント エッジ
T1CKI = 1
when TMR1
Enabled
T1CKI = 0
when TMR1
Enabled
注 1:
2:
矢印は、カウンタがインクリメントする位置を示しています。
カウンタ モードでは、カウンタがクロックの立ち下がりエッジを 1 回検出してから、立ち上がりエッジによる
インクリメントが開始されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 159
PIC18F2XK20/4XK20
13.5
タイマ 1 (16 ビット読み出し /
書き込みモード )
表 13-1:
Osc Type
タイマ 1 には、16 ビットの読み出し / 書き込みを実
行するための設定が可能です ( 図 13-2 参照 )。
T1CON
レ ジ ス タ の 制 御 ビ ッ ト RD16 を セ ッ ト す る と、
TMR1H のアドレスがタイマ 1 の上位バイトを格納
するバッファ レジスタに対応づけられます。
TMR1L を読み出すと、タイマ 1 の上位バイトの内
容が、このタイマ 1 上位バイト バッファに格納さ
れます。この動作により、タイマ 1 の全 16 ビット
を正確に読み出すことができます。下位バイトの前
に読み出された上位バイトが、2 回の読み出しの間
のロールオーバーまたはキャリーによって無効に
なっていないかを検証する必要がありません。
TMR1H に書き込んでも、直接タイマ 1 が変化する
わけではありません。タイマ 1 の上位バイトは、
TMR1L への書き込みと同時に、TMR1H の内容に
よって書き換えられます。これによって、タイマ 1
の全 16 ビットを一度に更新できます。
このモードではタイマ 1 の上位バイトを直接読み出
し / 書き込むことができません。すべての読み出し
/ 書き込み動作は、タイマ 1 上位バイト バッファ レ
ジスタを介して実行します。TMR1H に書き込んで
も、タイマ 1 のプリスケーラはクリアされません。
プリスケーラがクリアされるのは TMR1L に書き込
んだ場合のみです。
13.6
タイマ 1 オシレータ
オンチップの水晶振動子オシレータ回路は、T1OSI
( 入力 ) および T1OSO ( アンプ出力 ) 間に接続され
ています。T1CON レジスタのタイマ 1 オシレータ
イネーブル ビットT1OSCENをセットすると有効に
なります。オシレータは公称周波数 32 kHz の水晶
振動子を用いた低消費電力回路です。すべての電源
管理モードで動作を継続します。代表的な LP オシ
レータ回路を図 13-4 に示します。表 13-1 は、タイ
マ 1 オシレータ用のコンデンサを選択するための表
です。
タイマ 1 オシレータが正常に起動するまで、ソフ
トウェアによって遅延時間を確保する必要があり
ます。
図 13-4:
タイマ1オシレータのコンデンサ選択
LP
Freq
C1
32 kHz
27
pF(1)
C2
27 pF(1)
注 1:
これらの値は、オシレータ回路の有効性
検証に着手する際の、最初の手がかりと
して示したものです。
2:
コンデンサ容量を大きくするとオシ
レータの安定性は増しますが、起動時間
が長くなります。
3:
水晶振動子には、それぞれ固有の特性が
あります。外付け部品の適切な値に関し
ては水晶振動子のメーカーに問い合わ
せてください。
4:
コンデンサの値は、あくまで設計上の参
考値です。
13.6.1
タイマ 1 のクロック ソースとしての
利用
タイマ 1 オシレータは、電源管理モードにおけるク
ロック ソースとしても使用できます。OSCCON レ
ジスタのクロック選択ビット SCS<1:0> を「01」に
設定することで、デバイスは SEC_RUN モードに移
行し、CPU と周辺機能の両方のクロックがタイマ 1
オシレータから供給されます。OSCCON レジスタ
の IDLEN ビットをクリアした状態で SLEEP 命令を
実行すると、デバイスは SEC_IDLE モードに移行し
ます。詳細は、3.0 項「電源管理モード」で説明し
ています。
タイマ 1 オシレータをクロック ソースに使用すると
きは、常に T1CON レジスタのタイマ 1 システム ク
ロック ステータス フラグ T1RUN がセットされま
す。ここからコントローラの現在のクロック供給
モードを判断できます。また、フェイルセーフ ク
ロック モニタが使用しているクロック ソースも知
ることができます。クロック モニタを有効にして
いるときに、クロックを供給中のタイマ 1 オシレー
タに障害が発生した場合、T1RUN ビットをポーリ
ングすれば、クロックがタイマ 1 オシレータあるい
は他のソースのいずれから供給されているかがわ
かります。
タイマ 1LP オシレータの外付け部品
C1
27 pF
PIC® MCU
T1OSI
XTAL
32.768 kHz
T1OSO
C2
27 pF
注:
コンデンサの選択に関する詳細は、表 13-1 の注
を参照してください。
DS41303E_JP - ページ 160
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
13.6.2
13.7
タイマ 1 の低消費電力オプション
タイマ 1 割り込み
タイマ 1 オシレータは、デバイス構成の変更により
2 つの異なる消費電力レベルで動作させることがで
きます。
CONFIG3Hレジスタの構成ビットLPT1OSC
をセットすると、タイマ 1 オシレータは低消費電力
モードで動作します。LPT1OSC がセットされてい
ない場合、タイマ 1 の消費電力レベルが高くなりま
す。特定のモードの消費電力は、デバイスの動作
モードにかかわらずほぼ一定です。タイマ 1 のデ
フォルト設定は、消費電力の大きいモードです。
TMR1 レジスタ ペア (TMR1H:TMR1L) は、0000h か
ら FFFFh までインクリメントすると、0000h にロー
ルオーバーします。タイマ 1 割り込みを許可してい
る場合、オーバーフロー時に割り込みが発生し、
PIR1 レジスタの割り込みフラグ ビット TMR1IF が
ラッチされます。この割り込みは、PIE1 レジスタ
の割り込みイネーブル ビット TMR1IE をセット / ク
リアすることで許可 / 禁止を設定できます。
低消費電力モードは干渉を受けやすいため、ノイズ
の大きい環境ではオシレータが若干不安定になる
可能性があります。したがって、低消費電力オプ
ションは、消費電力が重要な設計課題となる、低ノ
イズのアプリケーションに適しています。
13.8
13.6.3
タイマ 1 オシレータのレイアウト上の
注意点
タイマ 1 オシレータ回路は、動作中にごくわずかし
か電力を消費しません。消費電力が小さいというこ
とは、近接する信号の高速な遷移の影響を受けやす
くなることを意味します。
したがって、図 13-4 に示すオシレータ回路は、マ
イクロコントローラのできるだけ近傍に配置して
ください。また、オシレータ回路の領域を VSS また
は VDD 以外の配線が横切らないようにします。
高速で動作する回路をオシレータのそばに配置し
なければならない場合 ( 出力コンペアまたは PWM
モードでの CCP1 ピン、または OSC2 ピンを使用す
るプライマリ オシレータなど )、図 13-5 に示すよう
にオシレータ回路の周囲にグランドに接続した
ガード リングを設けるとよいでしょう。この方法
は、片面のみの PCB またはグランド プレーンで使
用する場合に適用されます。
図 13-5:
CCP 特殊イベント トリガによる
タイマ 1 のリセット
CCP モジュールのいずれかがタイマ 1 を使用し、コ
ンペア モードで特殊イベント トリガを発生する設
定の場合(CCP1M<3:0>またはCCP2M<3:0> = 1011)、
このトリガ信号によってタイマ 1 がリセットされま
す。また、A/D モジュールが有効な場合、CCP2 か
らのトリガによって A/D 変換を起動することも可能
です (11.3.4 項「特殊イベント トリガ」参照 )。
この機能を使用する場合、モジュールをタイマまた
は同期カウンタのいずれかに設定する必要があり
ます。この機能における CCPRH:CCPRL レジスタ
ペアは、実質的にタイマ 1 の周期レジスタとして機
能します。
タイマ 1 が非同期カウンタ モードで動作している
場合、このリセット機能は利用できません。
タイマ 1 への書き込みと特殊イベント トリガが競
合した場合は、書き込みが優先されます。
注:
CCP2モジュールから特殊イベント トリガ
が発生した場合、PIR1 レジスタの割り込
みフラグ ビット TMR1IF はセットされま
せん。
グランド接続したガードリングで
囲まれたオシレータ回路
VDD
VSS
OSC1
OSC2
RC0
RC1
RC2
注 : 寸法比どおりの図ではありません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 161
PIC18F2XK20/4XK20
13.9
タイマ 1 のリアルタイム クロック
(RTC) としての利用
タイマ1に外部LPオシレータを接続すると(上記13.6
項「タイマ 1 オシレータ」で述べたようなもの )、必
要に応じてアプリケーションに RTC 機能を付加で
きます。安価な腕時計用の水晶振動子から正確なタ
イム ベースを供給し、時間を計算する数行のアプ
リケーションを追加するだけで実現可能です。電源
としてバッテリまたはスーパーキャパシタを用い、
スリープ モード中に動作させる場合は、独立した
RTC デバイスやバッテリ バックアップは一切不要
です。
例 13-1 に示すアプリケーション コード ルーチン
RTCisr は、割り込みサービス ルーチンによって
1 秒間隔でカウンタをインクリメントする簡単な方
法を示したものです。TMR1 レジスタ ペアのインク
リメントによってオーバーフロー割り込みを生成
して、このルーチンを呼び出します。ルーチン内で
は「秒」のカウンタを 1 だけインクリメントしま
す。「分」または「時」のカウンタは、それより下
位のカウンタのオーバーフローによってインクリ
メントします。
例 13-1:
レジスタ ペアは 16 ビット幅であるため、32.768 kHz
のクロック ソースの場合、オーバーフローするま
でに 2 秒かかります。これを必要な 1 秒間隔で強制
的にオーバーフローさせるには、あらかじめカウン
タに一定の値を格納しておく必要があります。最も
簡単な方法は、TMR1H の MSb を BSF 命令で設定
します。TMR1L レジスタは、あらかじめ値を格納
したり変更できないことに注意してください。この
ような操作を実行するとサイクル数が増えるとと
もに誤差が累積する場合があります。
この方法を適切に動作させるには、RTCinit ルー
チンに示したように、タイマ 1 を非同期モードに設
定し、タイマ 1 オーバーフロー割り込みを許可する
(PIE1<0> = 1) 必要があります。更にタイマ 1 オシ
レータを有効にし、常時動作させてください。
タイマ 1 割り込みサービスによるリアルタイム クロックの実装
RTCinit
MOVLW
MOVWF
CLRF
MOVLW
MOVWF
CLRF
CLRF
MOVLW
MOVWF
BSF
RETURN
80h
TMR1H
TMR1L
b’00001111’
T1CON
secs
mins
.12
hours
PIE1, TMR1IE
BSF
BCF
INCF
MOVLW
CPFSGT
RETURN
CLRF
INCF
MOVLW
CPFSGT
RETURN
CLRF
INCF
MOVLW
CPFSGT
RETURN
CLRF
RETURN
TMR1H, 7
PIR1, TMR1IF
secs, F
.59
secs
; Preload TMR1 register pair
; for 1 second overflow
; Configure for external clock,
; Asynchronous operation, external oscillator
; Initialize timekeeping registers
;
; Enable Timer1 interrupt
RTCisr
DS41303E_JP - ページ 162
secs
mins, F
.59
mins
mins
hours, F
.23
hours
hours
;
;
;
;
Preload for 1 sec overflow
Clear interrupt flag
Increment seconds
60 seconds elapsed?
;
;
;
;
No, done
Clear seconds
Increment minutes
60 minutes elapsed?
;
;
;
;
No, done
clear minutes
Increment hours
24 hours elapsed?
; No, done
; Reset hours
; Done
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 13-2:
Name
INTCON
タイマ / カウンタとして使用する場合のタイマ 1 関連レジスタ
Bit 7
Bit 6
Bit 5
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
TMR1L
Timer1 Register, Low Byte
58
TMR1H
Timer1 Register, High Byte
58
T1CON
RD16
T1RUN
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
TMR1CS TMR1ON
58
記号の説明 : 網掛けのビットはタイマ 1 モジュールでは使用しません。
注 1: これらのビットは、28 ピン デバイスには実装されていません。クリアされた状態を保ってください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 163
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 164
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
14.0
タイマ 2 モジュール
14.1
タイマ 2 の動作
• 8 ビット タイマおよび周期レジスタ ( それぞれ
TMR2 および PR2)
• 読み出しおよび書き込み可能 ( 両レジスタとも )
• ソフトウェアでプログラム可能なプリスケーラ
(1:1、1:4、1:16)
• ソフトウェアでプログラム可能なポストスケーラ
(1:1 ~ 1:16)
• TMR2/PR2 一致割り込み
• MSSPモジュールのシフト クロックとしての利用
( オプション )
通常動作では、TMR2 はクロック (FOSC/4) ごとに
00h からインクリメントします。4 ビットカウンタ /
プリスケーラによって直接入力、4 分周、16 分周の
クロック入力オプションを使用できます。これらの
分周比は T2CON レジスタのプリスケール値選択
ビット T2CKPS<1:0> によって選択します。TMR2
の値は、周期レジスタ PR2 の値とクロック サイク
ルごとに比較されます。両者が一致した場合、コン
パレータがタイマ出力として一致信号を生成しま
す。この信号は、次のサイクルで TMR2 の値を 00h
にリセットし、出力カウンタ / ポストスケーラを駆
動します (14.2 項「タイマ 2 割り込み」参照 )。
モジュールは T2CON レジスタ ( レジスタ 14-1) に
よって制御されます。このレジスタはタイマの有効 /
無効、およびプリスケーラやポストスケーラを設定
します。T2CON レジスタの制御ビット TMR2ON を
クリアすればタイマ 2 が停止し、消費電力を最小限
に抑えることができます。
TMR2 レジスタと PR2 レジスタはどちらも直接読み
出し / 書き込み可能です。すべてのデバイス リセッ
トで TMR2 レジスタはクリアされる一方、PR2 レジ
スタは FFh に初期化されます。次のイベントが発生
すると、プリスケーラおよびポストスケーラのカウ
ンタが両方ともクリアされます。
モジュールの概略ブロック図を図 14-1 に示します。
• TMR2 レジスタへの書き込み
• T2CON レジスタへの書き込み
• 何らかのデバイス リセット ( パワーオン リセッ
ト、MCLR リセット、ウォッチドッグ タイマ リ
セット、ブラウンアウト リセット )
タイマ 2 モジュールには以下の機能があります。
T2CONへの書き込みではTMR2はクリアされません。
レジスタ 14-1:
T2CON: タイマ 2 制御レジスタ
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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
未実装 :「0」として読み出し
ビット 6-3
T2OUTPS<3:0>: タイマ 2 出力ポストスケール値 ( 分周比 ) 選択ビット
0000 = 1:1
0001 = 1:2
•
•
•
1111 = 1:16
ビット 2
TMR2ON: タイマ 2 オン ビット
1 = タイマ 2 が有効
0 = タイマ 2 を停止
ビット 1-0
T2CKPS<1:0>: タイマ 2 クロック プリスケール値 ( 分周比 ) 選択ビット
00 = プリスケーラは 1
01 = プリスケーラは 4
1x = プリスケーラは 16
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 165
PIC18F2XK20/4XK20
14.2
タイマ 2 割り込み
14.3
必要に応じてタイマ 2 からもデバイス割り込みを生
成できます。タイマ 2 出力信号 (TMR2/PR2 一致 )
は、4 ビットの出力カウンタ / ポストスケーラに入
力されます。このカウンタが TMR2 一致割り込みフ
ラグを生成し、PIR1 レジスタの TMR2IF ビットを
ラッチします。この割り込みは、PIE1 レジスタの
TMR2 一致割り込みイネーブル ビット TMR2IE を
セットすることで許可します。
タイマ 2 出力
TMR2 の分周していない出力は、
主に CCP モジュー
ルによるPWMモード動作のタイム ベースとして使
われます。
タイマ 2 は SPI モードで動作する MSSP モジュール
のシフト クロックのソースとして使用できます。
詳
細は、
17.0 項
「マスター同期シリアル ポート (MSSP)
モジュール」で説明します。
T2CON レジスタのポストスケール値選択ビット
T2OUTPS<3:0> によって、16 段階のポストスケール
オプション (1:1 ~ 1:16) を選択できます。
図 14-1:
タイマ 2 のブロック図
4
T2OUTPS<3:0>
1:1 to 1:16
Postscaler
Set TMR2IF
2
T2CKPS<1:0>
TMR2/PR2
Match
Reset
1:1, 1:4, 1:16
Prescaler
FOSC/4
TMR2
TMR2 Output
(to PWM or MSSP)
Comparator
8
PR2
8
8
Internal Data Bus
表 14-1:
Name
INTCO
N
タイマ / カウンタとして使用する場合のタイマ 2 関連レジスタ
Bit 7
Bit 6
GIE/GIEH PEIE/GIEL
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
60
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
PIE1
PSPIE
(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0
58
TMR2
T2CON
PR2
Timer2 Register
—
58
Timer2 Period Register
58
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットはタイマ 2 では使用しません。
注 1: これらのビットは、28 ピン デバイスには実装されていません。クリアされた状態を保ってください。
DS41303E_JP - ページ 166
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
15.0
タイマ 3 モジュール
タイマ 3 タイマ / カウンタ モジュールには以下の機
能があります。
• ソフトウェアによって選択可能な、16 ビット
モードのタイマまたはカウンタ動作
• 読み出し / 書き込み可能な 8 ビット レジスタ
(TMR3H および TMR3L)
• 選択可能なクロック ソース ( 内部または外部 )、
およびデバイス クロックまたは内部タイマ 1
オシレータに対するオプション
• オーバーフロー割り込み
• CCP 特殊イベント トリガによるモジュールの
リセット
レジスタ 15-1:
R/W-0
RD16
bit 7
タイマ 3 モジュールの概略ブロック図を図 15-1 に
示します。読み出し / 書き込みモードで動作するモ
ジュールのブロック図を図 15-2 に示します。
タイマ 3 は制御レジスタ T3CON ( レジスタ 15-1) に
よって制御します。このレジスタは、CCP モジュー
ルのクロック ソース オプションの選択にも使用し
ます (11.1.1 項
「CCP モジュールとタイマ リソース」
参照 )。
T3CON: タイマ 3 制御レジスタ
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
T3CCP2
T3CKPS1
T3CKPS0
T3CCP1
T3SYNC
TMR3CS
R/W-0
TMR3ON
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
ビット 7
ビット 6,3
ビット 5-4
ビット 2
ビット 1
ビット 0
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
RD16: 16 ビット読み出し / 書き込みモード イネーブル ビット
1 = 1 回の 16 ビット動作によるタイマ 3 レジスタの読み出し / 書き込みが有効
0 = 2 回の 8 ビット動作によるタイマ 3 レジスタの読み出し / 書き込みが有効
T3CCP<2:1>: CCPx モジュールに対するタイマ 3 およびタイマ 1 イネーブル ビット
1x =タイマ 3 を CCP1 および CCP2 のキャプチャ / コンペア クロック ソースに設定
01 =タイマ 3 を CCP2 のキャプチャ / コンペア クロック ソースに、
タイマ 1 を CCP1 のキャプチャ / コンペア クロック ソースに設定
00 =タイマ 1 を CCP1 および CCP2 のキャプチャ / コンペア クロック ソースに設定
T3CKPS<1:0>: タイマ 3 入力クロック プリスケール値 ( 分周比 ) 選択ビット
11 = 1:8
10 = 1:4
01 = 1:2
00 = 1:1
T3SYNC: タイマ 3 外部クロック入力同期制御ビット
( デバイス クロックをタイマ 1/ タイマ 3 から供給している場合は使用できません。)
TMR3CS = 1 のとき :
1 = 外部クロック入力を同期させない
0 = 外部クロック入力を同期させる
TMR3CS = 0 のとき :
このビットは無視。TMR3CS = 0 のとき、タイマ 3 は内部クロックを使用します。
TMR3CS: タイマ 3 クロック ソース選択ビット
1 = タイマ 1 オシレータまたは T13CKI ピンから入力される外部クロック
( 最初の立ち下がりエッジ後の各立ち上がりエッジ )
0 = 内部クロック (FOSC/4)
TMR3ON: タイマ 3 オン ビット
1 = タイマ 3 が有効
0 = タイマ 3 を停止
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 167
PIC18F2XK20/4XK20
15.1
タイマ 3 の動作
動作モードは、T3CONレジスタのクロック選択ビッ
ト TMR3CS によって決まります。TMR3CS をクリ
アした場合 (= 0)、タイマ 3 は内部の命令サイクル
ごとにインクリメントされます (FOSC/4)。セットし
た場合は、タイマ 1 の外部クロック入力またはタイ
マ 1 オシレータ ( 有効にしている場合 ) のいずれか
の立ち上がりエッジごとにタイマ 3 がインクリメン
トされます。
タイマ 3 は、次の 3 つのモードのいずれかで動作し
ます。
• タイマ
• 同期カウンタ
• 非同期カウンタ
タイマ 1 同様、タイマ 1 オシレータを有効にした場
合、RC1/T1OSI および RC0/T1OSO/T13CKI ピンに
関連するデジタル回路はオフされます。これは、
TRISC<1:0> の値が無視され、ピンが「0」と読まれ
ることを意味します。
図 15-1:
タイマ 3 のブロック図
Timer1 Oscillator
Timer1 Clock Input
1
T1OSO/T13CKI
1
FOSC/4
Internal
Clock
T1OSI
Synchronize
Prescaler
1, 2, 4, 8
Detect
0
0
2
T1OSCEN
(1)
Sleep Input
TMR3CS
T3CKPS<1:0>
Timer3
On/Off
T3SYNC
TMR3ON
CCP1/CCP2 Special Event Trigger
CCP1/CCP2 Select from T3CON<6,3>
注
1:
Clear TMR3
TMR3L
TMR3
High Byte
Set
TMR3IF
on Overflow
イネーブル ビット T1OSCEN をクリアすると、消費電力低減のため、インバータおよびフィードバック抵抗が遮断されます。
DS41303E_JP - ページ 168
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 15-2:
タイマ 3 のブロック図 (16 ビット読み出し / 書き込みモード )
Timer1 Oscillator
Timer1 Clock Input
1
T13CKI/T1OSO
1
FOSC/4
Internal
Clock
T1OSI
Synchronize
Prescaler
1, 2, 4, 8
0
Detect
0
2
(1)
T1OSCEN
T3CKPS<1:0>
T3SYNC
Sleep Input
TMR3CS
Timer3
On/Off
TMR3ON
CCP1/CCP2 Special Event Trigger
CCP1/CCP2 Select from T3CON<6,3>
Clear TMR3
TMR3
High Byte
TMR3L
8
Set
TMR3IF
on Overflow
Read TMR1L
Write TMR1L
8
8
TMR3H
8
8
Internal Data Bus
注
15.2
1:
イネーブル ビット T1OSCEN をクリアすると、消費電力低減のため、インバータおよびフィードバック抵抗が遮断されます。
タイマ 3 (16 ビット読み出し /
書き込みモード )
15.3
タイマ 3 には、16 ビットの読み出し / 書き込みを実
行するための設定が可能です ( 図 15-2 参照 )。
T3CON
レ ジ ス タ の 制 御 ビ ッ ト RD16 を セ ッ ト す る と、
TMR3H のアドレスがタイマ 3 の上位バイトを格納
するバッファ
レ ジ ス タ に 対 応 づ け ら れ ま す。
TMR3L を読み出すと、タイマ 3 の上位バイトの内
容が、このタイマ 3 上位バイト バッファ レジスタ
に格納されます。この動作により、タイマ 3 の全 16
ビットを正確に読み出すことができます。下位バイ
トの前に読み出された上位バイトが、2 回の読み出
しの間のロールオーバーによって無効になってい
ないかを検証する必要がありません。
同様に、タイマ 3 上位バイトへの書き込みも TMR3H
バッファ レジスタを介して実行する必要がありま
す。タイマ 3 の上位バイトは、TMR3L への書き込
みと同時に、TMR3H の内容によって書き換えられ
ます。この動作により、全 16 ビットをタイマ 3 の
上位、下位バイトの両方に同時に書き込むことがで
きます。
このモードではタイマ 3 の上位バイトを直接読み出
し / 書き込むことができません。すべての読み出し
/ 書き込み動作は、タイマ 3 上位バイト バッファ レ
ジスタを介して実行します。
タイマ 3 クロック ソースとしての
タイマ 1 オシレータの利用
内部タイマ 1 オシレータをタイマ 3 のクロック ソー
スとして使用できます。タイマ 1 オシレータは、
T1CON レジスタの T1OSCEN ビットをセットする
と有効になります。
これをタイマ 3 のクロック ソー
スとして使うには、TMR3CS ビットもセットする必
要があります。前述のとおり、このビットの設定に
はタイマ 3 をオシレータ ソースの立ち上がりエッ
ジごとにインクリメントさせる効果もあります。
タイマ 1 オシレータについては、13.0 項「タイマ 1
モジュール」で説明しています。
15.4
タイマ 3 割り込み
TMR3 レジスタ ペア (TMR3H:TMR3L) は、0000h か
ら FFFFh までインクリメントすると、0000h にオー
バーフローします。タイマ 3 割り込みを許可してい
る場合、オーバーフロー時に割り込みが発生し、
PIR2 レジスタの割り込みフラグ ビット TMR3IF が
ラッチされます。この割り込みは、PIE2 レジスタの
タイマ 3 割り込みイネーブル ビット TMR3IE をセッ
ト / クリアすることで許可 / 禁止を設定できます。
TMR3H に書き込んでも、タイマ 3 のプリスケーラ
はクリアされません。プリスケーラがクリアされる
のは TMR3L に書き込んだ場合のみです。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 169
PIC18F2XK20/4XK20
15.5
CCP 特殊イベント トリガによる
タイマ 3 のリセット
CCP モジュールのいずれかがタイマ 3 を使用し、コ
ンペア モードで特殊イベント トリガを発生する設
定の場合(CCP1M<3:0>またはCCP2M<3:0> = 1011)、
このトリガ信号によってタイマ 3 がリセットされま
す。また、A/D モジュールが有効な場合、A/D 変換
を起動することも可能です (11.3.4 項「特殊イベント
トリガ」参照 )。
この機能を使用する場合、モジュールをタイマまた
は同期カウンタのいずれかに設定する必要があり
ます。この機能における CCPR2H:CCPR2L レジスタ
ペアは、実質的にタイマ 3 の周期レジスタとして機
能します。
タイマ 3 が非同期カウンタ モードで動作している
場合、このリセット機能は利用できません。
タイマ 3 への書き込みと CCP モジュールによる特
殊イベント トリガが競合した場合は、書き込みが
優先されます。
注:
CCP2モジュールから特殊イベント トリガ
が発生した場合、PIR2 レジスタの割り込
みフラグ ビット TMR3IF はセットされま
せん。
表 15-1:
Name
INTCON
タイマ / カウンタとして使用する場合のタイマ 3 関連レジスタ
Bit 7
Bit 6
Bit 5
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
60
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
60
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
60
IPR2
TMR3L
Timer3 Register, Low Byte
59
TMR3H
Timer3 Register, High Byte
59
T1CON
RD16
T1RUN
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
TMR1CS TMR1ON
58
T3CON
RD16
T3CCP2
T3CKPS1 T3CKPS0
TMR3CS TMR3ON
59
T3CCP1
T3SYNC
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットはタイマ 3 では使用しません。
DS41303E_JP - ページ 170
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
16.0
拡張キャプチャ / コンペア /PWM
(ECCP) モジュール
CCP1 は、拡張 PWM 機能を持つ標準 CCP モジュー
ルとして実装されます。次の機能があります。
•
•
•
•
•
2 系統または 4 系統の出力チャネルの準備
出力切り替え
プログラマブルな極性
プログラマブルなデッドタイム制御
自動シャットダウンおよび自動再スタート
レジスタ 16-1:
拡張機能の詳細は、16.4 項「PWM ( 拡張モード )」
を参照してください。
Enhanced Capture/Compare/PWM (ECCP: 拡張キャプ
チャ/ コンペア /PWM) モジュールのキャプチャ、コ
ンペア、および単一出力 PWM の機能は、標準 CCP
モジュールの機能と同じです。
拡張CCPモジュールの制御レジスタをレジスタ16-1
に示します。CCP2CON レジスタと異なる点は、
PWM 機能を制御する上位 2 ビットが実装されてい
る点です。
CCP1CON: ENHANCED CAPTURE/COMPARE/PWM CONTROL レジスタ
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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 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 を切り替えて制御 (16.4.7 項「パルス切り替えモード」を参照 )
01 = フルブリッジ順方向出力 : P1D 変調、P1A アクティブ、P1B と P1C 非アクティブ
10 = ハーフブリッジ出力 : P1A と P1B をデッドタイム制御で変調、P1C と P1D をポート ピンとして割り
当てる
11 = フルブリッジ逆方向出力 : P1B 変調、P1C アクティブ、P1A と P1D 非アクティブ
ビット 5-4
DC1B<1:0>: PWM デューティ サイクル ビット 1 およびビット 0
キャプチャ モード :
未使用
コンペア モード :
未使用
PWM モード :
10 ビット PWM デューティ サイクルの下位 2 ビット。デューティ サイクルの上位 8 ビットは CCPR1L にある
ビット 3-0
CCP1M<3:0>: 拡張 CCP モード選択ビット
0000 = キャプチャ / コンペア /PWM オフ (ECCP モジュールをリセット )
0001 = 予約
0010 = コンペア モード。一致時に出力をトグル
0011 = 予約
0100 = キャプチャ モード、毎回の立ち下がりエッジでキャプチャ
0101 = キャプチャ モード、毎回の立ち上がりエッジでキャプチャ
0110 = キャプチャ モード、4 回目ごとの立ち上がりエッジでキャプチャ
0111 = キャプチャ モード、16 回目ごとの立ち上がりエッジでキャプチャ
1000 = コンペア モード。CCP1 ピンを Low に初期化し、
コンペア一致時に出力をセット (CCP1IF をセット )
1001 = コンペア モード。CCP1ピンをHighに初期化し、コンペア一致時に出力をクリア(CCP1IFをセット)
1010 = コンペア モード。ソフトウェア割り込みのみを生成。CCP1 ピンは入出力状態に戻る
1011 = コンペア モード。特殊イベントをトリガ (ECCP が TMR1 または TMR3 をリセットし、CC1IF ビッ
トをセット )
1100 = PWM モード。P1A と P1C が正論理、P1B と P1D が正論理
1101 = PWM モード。P1A と P1C が正論理、P1B と P1D が負論理
1110 = PWM モード。P1A と P1C が負論理、P1B と P1D が正論理
1111 = PWM モード。P1A と P1C が負論理、P1B と P1D が負論理
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 171
PIC18F2XK20/4XK20
さまざまなモードを使用可能にする CCP1CON レジ
スタおよび ECCP1AS レジスタに加えて、ECCP モ
ジュールには拡張 PWM 動作および自動シャットダ
ウン機能に関連する次の2つのレジスタがあります。
• PWM1CON ( デッドタイム )
• PSTRCON ( 出力切り替え )
16.1
16.3
標準 PWM モード
単一出力モードに設定した ECCP モジュールの動作
は、PWM モードの標準 CCP モジュールの動作と同
じです (11.4 項「PWM モード」を参照 )。この動作
は、
「単一 CCP」モードとも呼ばれます ( 表 16-1 を
参照 )。
ECCP の出力と設定
拡張 CCP モジュールは、選択した動作モードに合
わせて最大4つのPWM出力を持つことができます。
これらの出力は P1A ~ P1D に指定され、PORTC お
よびPORTD (PIC18F4XK20デバイス)またはPORTB
(PIC18F2XK20 デバイス ) の I/O ピンで多重化され
ます。アクティブな出力は、選択した CCP 動作モー
ドによって決まります。
ピンの割り当てを表 16-1 に
示します。
I/OピンをPWM出力として設定するには、P1M<1:0>
および CCP1M<3:0> のビットを設定して適切な
PWM モードを選択する必要があります。ポート ピ
ンの適切な TRISC および TRISD の方向ビットも、
出力として設定する必要があります。
16.1.1
ECCPのモジュールとタイマ リソース
標準 CCP モジュールと同様に、
ECCP モジュールは、
選択したモードに合わせて Timer1、Timer2、または
Timer3 を活用できます。Timer1 と Timer3 は、キャ
プチャ モードまたはコンペア モードのモジュール
で使用できます。一方、Timer2 は、PWM モードの
モジュールで使用できます。標準 CCP モジュールと
拡張 CCP モジュールとの連動は、
標準 CCP モジュー
ルについて記載されているとおりです。タイマ リ
ソースの詳細は、11.1.1 項「CCP モジュールとタイ
マ リソース」を参照してください。
16.2
キャプチャ モードとコンペア モード
後 述 す る 特 殊 イ ベ ン ト ト リ ガ の 動 作 を 除 い て、
ECCP モジュールのキャプチャ モードとコンペア
モードは、CCP2 の各モードの動作と同一です。こ
れらのモードの詳細は、11.2 項「キャプチャ モー
ド」および 11.3 項「コンペア モード」を参照して
ください。28 ピンと 40/44 ピンのデバイス間での移
行では、変更は不要です。
16.2.1
特殊イベント トリガ
ECCP1 の特殊イベント トリガ出力は、現在選択し
ているタイマ リソースに合わせて TMR1 または
TMR3 のレジスタ ペアをリセットします。これによ
り、CCPR1 レジスタを効果的に、Timer1 または
Timer3 用の 16 ビットのプログラマブル周期レジス
タにできます。
DS41303E_JP - ページ 172
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
16.4
PWM ( 拡張モード )
PWM 出力 (P1A、P1B、P1C、P1D) は I/O ピンと多
重化されます。PWM ピンの極性は設定可能であり、
CCP1CON レジスタの CCP1M ビットを使用して選
択します。
拡張 PWM モードでは、
最大分解能 10 ビットの PWM
信号を最大 4 つの出力ピンに生成できます。拡張
PWM 出力モードには次の 4 つがあります。
•
•
•
•
表 16-1 に、拡張 PWM の各モードにおけるピンの割
り当てを示します。
シングル PWM
ハーフブリッジ PWM
フルブリッジ PWM、順方向モード
フルブリッジ PWM、逆方向モード
図 16-1 に、拡張 PWM モジュールの概略ブロック図
の例を示します。
注:
拡張 PWM モードを選択するには、CCP1CON レジ
スタの P1M ビットを適切に設定します。
注:
PWM が最初に有効になった時点で不完
全な波形が出力されるのを防ぐため、
ECCP モジュールは新しい PWM 周期が
始まるのを待ってから PWM 信号の生成
を開始します。
拡張 PWM モードが使用できるのは、拡張
キャプチャ / コンペア /PWM モジュール
(CCP1) のみです。
図 16-1:
拡張 PWM モードの概略ブロック図
Duty Cycle Registers
DC1B<1:0>
CCP1M<3:0>
4
P1M<1:0>
2
CCPR1L
CCP1/P1A
CCP1/P1A
TRIS
CCPR1H (Slave)
P1B
R
Comparator
Output
Controller
Q
P1B
TRIS
P1C
TMR2
(1)
Comparator
PR2
1:
注
注 1:
P1C
TRIS
S
P1D
Clear Timer2,
toggle PWM pin and
latch duty cycle
P1D
TRIS
PWM1CON
8 ビットのタイマ TMR2 レジスタと 2 ビットの内部 Q クロック、または 2 ビットのプリスケーラを連結して 10 ビットの
タイム ベースを生成します。
各 PWM 出力に対応する TRIS レジスタの値を適切に設定する必要があります。
2:
CCPxCON レジスタをクリアすると、ECCP によるすべての PWM 出力ピンの制御が解除されます。
3:
拡張 PWM モードで使用しないピンは、別のピン機能に利用できます。
表 16-1:
拡張 PWM の各モードにおけるピン割り当ての例
ECCP Mode
P1M<1:0>
CCP1/P1A
(1)
(1)
Yes
P1C
P1D
(1)
Yes
Yes(1)
Single
00
Half-Bridge
10
Yes
Yes
No
No
Full-Bridge, Forward
01
Yes
Yes
Yes
Yes
Full-Bridge, Reverse
11
Yes
Yes
Yes
Yes
注 1:
Yes
P1B
シングル モードでは、パルス切り替えにより出力が有効になります。レジスタ 16-4 を参照してくだ
さい。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 173
PIC18F2XK20/4XK20
図 16-2:
PWM ( 拡張モード ) の出力の関係 ( 正論理の例 )
Signal
P1M<1:0>
PR2+1
Pulse
Width
0
Period
00
(Single Output)
P1A Modulated
Delay(1)
Delay(1)
P1A Modulated
10
(Half-Bridge)
P1B Modulated
P1A Active
01
(Full-Bridge,
Forward)
P1B Inactive
P1C Inactive
P1D Modulated
P1A Inactive
11
(Full-Bridge,
Reverse)
P1B Modulated
P1C Active
P1D Inactive
関係 :
注
• 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>)
1:
デッドタイムは PWM1CON レジスタでプログラムします (16.4.6 項「プログラマブルなデッドタイム モード」)。
DS41303E_JP - ページ 174
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 16-3:
拡張 PWM の出力の関係 ( 負論理の例 )
Signal
P1M<1:0>
PR2+1
Pulse
Width
0
Period
00
(Single Output)
P1A Modulated
P1A Modulated
10
(Half-Bridge)
Delay(1)
Delay(1)
P1B Modulated
P1A Active
01
(Full-Bridge,
Forward)
P1B Inactive
P1C Inactive
P1D Modulated
P1A Inactive
11
(Full-Bridge,
Reverse)
P1B Modulated
P1C Active
P1D Inactive
関係 :
注
• 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>)
1:
デッドタイムは PWM1CON レジスタでプログラムします (16.4.6 項「プログラマブルなデッドタイム モード」)。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 175
PIC18F2XK20/4XK20
16.4.1
ハーフブリッジ モード
ハーフブリッジ モードでは、2 つのピンを出力とし
て使用してプッシュプル負荷を駆動します。
PWM 出
力信号は CCPx/P1A ピンに出力され、相補 PWM 出
力信号が P1B ピンに出力されます ( 図 16-5 を参照 )。
図 16-5 に示すように、このモードはハーフブリッジ
アプリケーションに使用できるだけでなく、2 つの
PWM 信号で 4 つのパワー スイッチを変調するフル
ブリッジ アプリケーションにも使用できます。
ハーフブリッジ モードでは、プログラマブルなデッ
ドタイムを使用してハーフブリッジ パワー デバイ
スへの貫通電流を防ぐことができます。PWM1CON
レジスタの PDC<6:0> ビットの値で、
出力をアクティ
ブに駆動するまでのデッドタイムに対応する命令サ
イクル数を設定します。この値がデューティ サイク
ルより大きい場合、対応する出力は 1 サイクル全体
で非アクティブのままとなります。デッドタイム動
作の詳細は 16.4.6 項「プログラマブルなデッドタイ
ム モード」を参照してください。
図 16-5:
P1A と P1B の出力は PORT データ ラッチと多重化
されているため、P1A と P1B を出力に設定するに
は、関連する TRIS ビットをクリアする必要があり
ます。
図 16-4:
ハーフブリッジ PWM 出力の例
Period
Period
Pulse Width
P1A(2)
td
td
P1B(2)
(1)
(1)
(1)
td = Dead-Band Delay
注 1:
この時点で TMR2 レジスタの内容が PR2
レジスタと同じになります。
2:
出力信号は正論理として表示しています。
ハーフブリッジ アプリケーションの例
Standard Half-Bridge Circuit (“Push-Pull”)
FET
Driver
+
P1A
Load
FET
Driver
+
P1B
-
Half-Bridge Output Driving a Full-Bridge Circuit
V+
FET
Driver
FET
Driver
P1A
FET
Driver
Load
FET
Driver
P1B
DS41303E_JP - ページ 176
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
16.4.2
フルブリッジ モード
フルブリッジ モードでは、4 つのピンすべてを出力
として使用します。図 16-6 に、フルブリッジ アプ
リケーションの例を示します。
順方向モードでは、ピン CCP1/P1A がアクティブ状
態に駆動され、ピン P1D が変調され、P1B および
P1C が非アクティブ状態に駆動されます ( 図 16-7 を
参照 )。
逆方向モードでは、P1C がアクティブ状態に駆動さ
れ、ピン P1B が変調され、P1A および P1D が非アク
ティブ状態に駆動されます ( 図 16-7 を参照 )。
P1A、P1B、P1C、P1D の出力は PORT データ ラッ
チと多重化されます。P1A、P1B、P1C、P1D のピン
を出力に設定するには、関連する TRIS ビットをク
リアする必要があります。
図 16-6:
フルブリッジ アプリケーションの例
V+
FET
Driver
QC
QA
FET
Driver
P1A
Load
P1B
FET
Driver
P1C
FET
Driver
QD
QB
VP1D
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 177
PIC18F2XK20/4XK20
図 16-7:
フルブリッジ PWM 出力の例
Forward Mode
Period
P1A
(2)
Pulse Width
P1B(2)
P1C(2)
P1D(2)
(1)
(1)
Reverse Mode
Period
Pulse Width
P1A(2)
P1B(2)
P1C(2)
P1D(2)
(1)
注 1:
2:
(1)
この時点で TMR2 レジスタの内容が PR2 レジスタと同じになります。
出力信号は正論理として表示しています。
DS41303E_JP - ページ 178
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
16.4.2.1
フルブリッジ モードにおける方向
の変更
フルブリッジ モードでは、CCP1CON レジスタの
P1M1 ビットで順方向 / 逆方向を制御できます。ア
プリケーションのファームウェアでこの方向制御
ビットを変更すると、モジュールは次の PWM サイ
クルから新しい方向に切り替わります。
方向を変更するには、
まずソフトウェアで CCP1CON
レジスタの P1M1 ビットを変更します。これにより、
現在の PWM 周期が終わる前に次のシーケンスが発
生します。
• 変調出力 (P1B と P1D) が非アクティブ状態になる
• 変調されていない関連出力 (P1A と P1C) の駆動
方向が反対に切り替わる
• 次の周期の開始時点から PWM 変調が再開される
このシーケンスを図 16-8 に示します。
フルブリッジ モードにはデッドタイムはありませ
ん。一度に変調される出力は 1 つなので、通常デッ
ドタイムは不要です。デッドタイムが必要となる状
況が 1 つ存在します。それは、次の条件が 2 つとも
真の場合です。
1.
2.
出力のデューティ サイクルが 100% またはその
近傍で PWM 出力の方向が変化した
パワー スイッチ(パワー デバイスとドライバ回
路を含む ) のターンオフ時間がターンオン時間
よりも長い
デューティ サイクルが 100% 近傍で PWM 出力を順
方向から逆方向に変更する場合の例を図 16-9 に示
します。この例では、t1 で出力 P1A と P1D が非ア
クティブになり、出力 P1C がアクティブになりま
す。パワー デバイスのターンオフ時間がターンオン
時間よりも長いため、
「t」の期間、パワー デバイス
QC と QD に貫通電流が流れます ( 図 16-6 を参照 )。
PWM が逆方向から順方向に変化した場合も、同じ
現象がパワー デバイス QA と QB で発生します。
デューティ サイクルが高いときにPWMの方向を変
える必要があるアプリケーションでは、貫通電流を
防ぐ方法として次の 2 つがあります。
1.
2.
方向を変更する前の PWM の 1 周期で PWM の
デューティ サイクルを下げる
ターンオン時間よりもターンオフ時間の短い
スイッチ ドライバを使用する
その他にも、貫通電流を防ぐ方法があります。
図 16-8:
PWM の方向変更の例
Period(1)
Signal
Period
P1A (Active-High)
P1B (Active-High)
Pulse Width
P1C (Active-High)
(2)
P1D (Active-High)
Pulse Width
注 1:
2:
CCP1CON レジスタの方向制御ビット P1M1 は、PWM サイクル内のいつでも書き込みできます。
方向を変更すると、現在の PWM サイクルが終了する前に P1A と P1C の信号が切り替わります。この時点で
は、
P1BとP1Dの変調信号は非アクティブです。
この期間の長さは、(1/FOSC)  (TMR2のプリスケール値)です。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 179
PIC18F2XK20/4XK20
図 16-9:
デューティ サイクルが 100%近傍での PWM の方向を変更する例
Forward Period
t1
Reverse Period
P1A
P1B
PW
P1C
P1D
PW
TON
External Switch C
TOFF
External Switch D
Potential
Shoot-Through Current
注 1:
16.4.3
T = TOFF – TON
信号はすべて正論理として表示しています。
2:
TON は、パワー スイッチ QC とそのドライバのターンオン遅延です。
3:
TOFF は、パワー スイッチ QD とそのドライバのターンオフ遅延です。
起動に関する注意点
どの PWM モードを使用する場合も、PWM 出力ピ
ンに適切な外付けプルアップ抵抗やプルダウン抵
抗をアプリケーション ハードウェア側で使用する
必要があります。
注:
全体が完了してから PWM ピンの出力ドライバを有
効にしてください。PWM の 2 周期目の開始時点で
PIR1 レジスタの TMR2IF ビットがセットされるの
で、これによって PWM の 1 サイクルが完了したこ
とが分かります。
マイクロコントローラのリセット状態が
解除されると、すべての I/O ピンがハイイ
ンピーダンス状態になります。マイクロコ
ントローラが I/O ピンを適切な信号レベル
で駆動するか、PWM を出力をアクティブ
にするまでの間、外部回路によってパワー
スイッチ デバイスをオフ状態に保つ必要
があります。
PWM 出力ピンの各ペア (P1A/P1C と P1B/P1D) の
PWM 出力信号を正論理と負論理のいずれにするか
を、CCP1CON レジスタの CCP1M<1:0> ビットで選
択できます。PWM ピンの出力ドライバを有効にす
る前に、PWM 出力の極性を選択する必要がありま
す。アプリケーション回路を破損するおそれがある
ため、PWM ピンの出力ドライバが有効なときには、
極性を変更しないことをお勧めします。
PWM モジュールの初期化時には、P1A、P1B、P1C、
P1D の出力ラッチが適切な状態でないことがあり
ます。拡張 PWM モードと PWM ピンの出力ドライ
バを同時に有効にすると、アプリケーション回路が
破損するおそれがあります。適切な出力モードで拡
張 PWM モードを有効にして、PWM の 1 サイクル
DS41303E_JP - ページ 180
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
16.4.4
拡張 PWM 自動シャットダウン モード
PWM モードは、外部シャットダウン イベント発生
時に PWM 出力を無効にする自動シャットダウン
モードをサポートしています。自動シャットダウン
モードでは、PWM 出力ピンがあらかじめ設定され
た状態になります。このモードは、PWM によるア
プリケーションの破損を防ぐ目的で使用します。
自動シャットダウンのソースは、ECCP1AS レジス
タの ECCPAS<2:0> のビットで選択します。シャッ
トダウン イベントは次のソースから発生できます。
•
•
•
•
FLT0 ピンにおける論理値「0」
コンパレータ C1
コンパレータ C2
ファームウェアによる ECCPASE ビットのセット
シ ャ ッ ト ダ ウ ン 状 態 は、ECCP1AS レ ジ ス タ の
ECCPASE ( 自動シャットダウン イベント ステータ
ス ) ビットで示されます。このビットが「0」の場
レジスタ 16-2:
合、PWM ピンは通常動作中であることを示します。
このビットが「1」の場合、PWM 出力がシャットダ
ウン状態であることを示します。
シャットダウン イベントが発生すると、次の 2 つの
処理が実行されます。
ECCPASE ビットが「1」にセットされる ECCPASE
ビットは、ファームウェアまたは自動再スタート
(16.4.5 項「自動再スタート モード」参照 ) によって
クリアされるまでセットされたままです。
有効な PWM ピンは非同期的にシャットダウン状態
に移行します。PWM 出力ピンは [P1A/P1C] と
[P1B/P1D] の 2 つのペアにグループ化されます。ピ
ンの各ペアの状態は、ECCP1AS レジスタの PSSAC
ビットと PSSBD ビットによって決まります。ピンの
各ペアは、次の 3 つの状態のいずれかに移行します。
• 論理値「1」を駆動
• 論理値「0」を駆動
• トライステート ( ハイインピーダンス )
ECCP1AS: ENHANCED CAPTURE/COMPARE/PWM AUTO-SHUTDOWN
CONTROL レジスタ
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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
ビット 7
ECCPASE: ECCP 自動シャットダウン イベント スタータス ビット
1 = シャットダウン イベントが発生し、ECCP 出力はシャットダウン状態
0 = ECCP 出力が動作中
ビット 6-4
ECCPAS<2:0>: ECCP 自動シャットダウン ソース選択ビット
000 = 自動シャットダウンを無効にする
001 = コンパレータ C1OUT 出力が High
010 = コンパレータ C2OUT 出力が High
011 = コンパレータ C1OUT と C2OUT のいずれかが High
100 = FLT0 ピンの VIL
101 = FLT0 ピンの VIL、またはコンパレータ C1OUT 出力が High
110 = FLT0 ピンの VIL、またはコンパレータ C2OUT 出力が High
111 = FLT0 ピンの VIL、またはコンパレータ C1OUT と C2OUT のいずれかが High
ビット 3-2
PSSACn: ピン P1A および P1C のシャットダウン状態制御ビット
00 = ピン P1A と P1C を「0」に駆動
01 = ピン P1A と P1C を「1」に駆動
1x = ピン P1A と P1C をトライステートに移行
ビット 1-0
PSSBDn: ピン P1B および P1D のシャットダウン状態制御ビット
00 = ピン P1B と P1D を「0」に駆動
01 = ピン P1B と P1D を「1」に駆動
1x = ピン P1B と P1D をトライステートに移行
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 181
PIC18F2XK20/4XK20
注 1:
自動シャットダウン条件はエッジベー
スの信号ではなくレベルベースの信号
で す。レ ベ ル が 存 在 す る 間 は、自 動
シャットダウン状態が持続します。
2:
自動シャットダウン状態が持続してい
る間は、ECCPASE ビットへの書き込み
は禁止されます。
3:
自動シャットダウン条件が解除され、
PWM を ( ファームウェアまたは自動再
スタートによって ) 再開するときには常
に、
次の PWM 周期の開始時点から PWM
信号が再開されます。
図 16-10:
PWM の自動シャットダウンとファームウェアによる再スタート (PRSEN = 0)
PWM Period
Shutdown Event
ECCPASE bit
PWM Activity
Normal PWM
Start of
PWM Period
16.4.5
ECCPASE
Cleared by
Shutdown
Shutdown Firmware PWM
Event Occurs Event Clears
Resumes
自動再スタート モード
拡張 PWM は、自動シャットダウン条件が解除され
た時点で PWM 信号を自動再開するように設定でき
ます。自動再スタートを有効にするには、PWM1CON
レジスタの PRSEN ビットをセットします。
自動再スタートを有効にした場合、ECCPASE ビッ
トは自動シャットダウン状態が持続している間は
セットされたままです。自動シャットダウン条件が
解除されると、ECCPASE ビットがハードウェアに
よってクリアされ、通常の動作が再開します。
図 16-11:
自動再スタートを有効 (PRSEN = 1) にした場合の PWM 自動シャットダウン
PWM Period
Shutdown Event
ECCPASE bit
PWM Activity
Normal PWM
Start of
PWM Period
DS41303E_JP - ページ 182
Shutdown
Shutdown
Event Occurs Event Clears
Preliminary
PWM
Resumes
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
16.4.6
プログラマブルなデッドタイム モード
ハーフブリッジ アプリケーションではすべてのパ
ワー スイッチが PWM 周波数で変調されるため、通
常はパワースイッチのターンオフ時間がターンオ
ン時間よりも長くなります。上下のパワー スイッ
チが同時に切り替わる場合 ( 片方がターンオン、も
う片方がターンオフ )、片方のスイッチが完全に
ターンオフするまでの間、両方のスイッチがオンに
なる期間がごくわずかにあります。このわずかな期
間に 2 つのパワー スイッチの間を非常に大きな電
流 ( 貫通電流 ) が流れ、ブリッジ電源が短絡します。
このようなスイッチング時の貫通電流による破損
を防ぐため、
通常はパワー スイッチの片方のスイッ
チが完全にターンオフするまで、もう片方のスイッ
チのターンオンを遅延させます。
図 16-12:
ハーフブリッジ PWM 出力の例
Period
Period
Pulse Width
P1A
(2)
td
td
P1B(2)
(1)
(1)
(1)
td = Dead-Band Delay
注 1:
2:
この時点で TMR2 レジスタの内容が PR2 レジ
スタと同じになります。
出力信号は正論理として表示しています。
ハーフブリッジ モードでは、デジタル プログラム
可能なデッドタイムを利用して、
ブリッジ パワー ス
イッチを破損する貫通電流の発生を防ぐことがで
きます。このデッドタイムは非アクティブ状態から
アクティブ状態への信号遷移時に発生します。詳細
は、図 16-12 を参照してください。デッドタイムは、
対応する PWM1CON レジスタ ( レジスタ 16-3) の下
位 7 ビットを使用して、マイクロコントローラの命
令サイクル (TCY または 4 TOSC) 単位で設定します。
図 16-13:
ハーフブリッジ アプリケーションの例
V+
Standard Half-Bridge Circuit (“Push-Pull”)
FET
Driver
+
V
-
P1A
Load
FET
Driver
+
V
-
P1B
V-
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 183
PIC18F2XK20/4XK20
レジスタ 16-3:
PWM1CON: ENHANCED PWM CONTROL レジスタ
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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7
PRSEN: PWM 再スタート イネーブル ビット
1 = 自動シャットダウンの後、シャットダウン イベントが解消されると ECCPASE ビットが自
動的にクリアされ、PWM が自動で再スタート
0 = 自動シャットダウンの後、PWM を再スタートするにはソフトウェアによる ECCPASE ビッ
トのクリアが必要
ビット 6-0
PDC<6:0>: PWM 遅延カウント ビット
PDCn = PWM 信号が本来アクティブに遷移するタイミングから実際にアクティブに遷移する
タイミングまでの遅延を FOSC/4 (4 * TOSC) サイクル数で指定
DS41303E_JP - ページ 184
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
16.4.7
パルス切り替えモード
単一出力モードでは、パルス切り替えを使用して任
意の PWM ピンの出力を変調信号にできます。
更に、複数のピンで同一の PWM 信号を同時に使用
できます。
単一出力モードを選択している場合 (CCP1CON レ
ジスタの CCP1M<3:2> = 11、かつ P1M<1:0> = 00)、
ユーザー ファームウェアで PSTRCON レジスタの
STR<D:A> のビットを適切に設定して ( 表 16-1 を参
照 )、同一の PWM 信号を 1 つ~ 4 つの出力ピンか
ら出力できます。
レジスタ 16-4:
注:
ピンに PWM 信号を出力するには、対応す
る TRIS ビットを出力 (「0」) に設定して、
ピン出力ドライバを有効にする必要があ
ります。
PWM 切り替えモードがアクティブのときには、
CCP1CON レジスタの CCP1M<1:0> ビットにより、
P1<D:A> のピンの PWM 出力の極性が決まります。
PWM 切り替えモードでも、PWM 自動シャットダ
ウン動作が適用されます (16.4.4 項「拡張 PWM 自
動シャットダウン モード」を参照 )。自動シャット
ダウン イベントは、PWM 信号出力を有効にしたピ
ンにのみ影響します。
PSTRCON: PULSE STEERING CONTROL レジスタ (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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
ビット 7-5
未実装 :「0」として読み出し
ビット 4
STRSYNC: 切り替え同期ビット
1 = 出力切り替えを次の PWM 周期で更新
0 = 出力切り替えを命令のサイクル境界の開始時点で更新
ビット 3
STRD: 切り替えイネーブル ビット D
1 = P1D ピンの出力が PWM 波形で、その極性を CCPxM<1:0> で制御
0 = P1D ピンをポート ピンとして割り当てる
ビット 2
STRC: 切り替えイネーブル ビット C
1 = P1C ピンの出力が PWM 波形で、その極性を CCPxM<1:0> で制御
0 = P1C ピンをポート ピンとして割り当てる
ビット 1
STRB: 切り替えイネーブル ビット B
1 = P1B ピンの出力が PWM 波形で、その極性を CCPxM<1:0> で制御
0 = P1B ピンをポート ピンとして割り当てる
ビット 0
STRA: 切り替えイネーブル ビット A
1 = P1A ピンの出力が PWM 波形で、その極性を CCPxM<1:0> で制御
0 = P1A ピンをポート ピンとして割り当てる
注 1:
PWM 切り替えモードが使用できるのは、CCP1CON レジスタのビット CCP1M<3:2> = 11、かつ
P1M<1:0> = 00 の場合のみです。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 185
PIC18F2XK20/4XK20
図 16-14:
切り替えの概略ブロック図
STRA
P1A Signal
CCP1M1
PORT Data
0
STRB
CCP1M0
PORT Data
PORT Data
0
PORT Data
P1B pin
TRIS
P1C pin
1
0
TRIS
STRD
CCP1M0
TRIS
1
STRC
CCP1M1
P1A pin
1
P1D pin
1
0
TRIS
注 1:
この図のポート出力設定では、CCP1CON レジ
スタのビット P1M<1:0> = 00、かつ
CCP1M<3:2> = 11。
2:
単一 PWM 出力では、少なくとも STRx ビット
の 1 つをセットする必要があります。
DS41303E_JP - ページ 186
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
16.4.7.1
切り替えの同期
PSTRCONレジスタのSTRSYNCビットを使用して、
切り替えイベントを発生させるタイミングを 2 つの
時点から選択できます。STRSYNC ビットが「0」の
場合、PSTRCON レジスタに書き込む命令の終了時
点で切り替えイベントが発生します。この場合、
P1<D:A> ピンの出力信号の PWM 波形が不完全にな
ることがあります。ユーザー ファームウェアでピ
ンから PWM 信号を即座に除去する必要がある場合
に、この動作は便利です。
図 16-15 および図 16-16 に、STRSYNC 設定による
PWM 切り替えのタイミングを示します。
STRSYNC ビットが「1」の場合、次の PWM 周期の
開始時点で効果的な切り替え更新が発生します。こ
の場合、PWM 出力のオン / オフ切り替えでは常に、
完全な PWM 波形が生成されます。
図 16-15:
命令終了時点で切り替えイベントが発生する例 (STRSYNC = 0)
PWM Period
PWM
STRn
P1<D:A>
PORT Data
PORT Data
P1n = PWM
図 16-16:
命令開始時点で切り替えイベントが発生する例 (STRSYNC = 1)
PWM
STRn
P1<D:A>
PORT Data
PORT Data
P1n = PWM
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 187
PIC18F2XK20/4XK20
16.4.8
電源管理モードでの動作
スリープ モードでは、クロック ソースはすべて無
効になっています。Timer2 がインクリメントせず、
モジュールの状態は変化しません。ECCP ピンが値
を駆動している場合は、その値の駆動を継続しま
す。デバイスがウェイクアップすると、この状態か
ら動作を継続します。2 段階の起動速度が有効な場
合、HFINTOSC およびポストスケーラからの初期起
動周波数がすぐには安定しないことがあります。
PRI_IDLE モードでは、プライマリ クロックが変化
せずに ECCP モジュールにクロック信号を供給しま
す。その他すべての電源管理モードでは、選択した
電源管理モードのクロックが Timer2 にクロック信
号を供給します。PRI_IDLE 以外の電源管理モード
のクロック周波数は、多くの場合、プライマリ ク
ロックの周波数とは異なります。
16.4.8.1
フェイルセーフ クロック モニタと
の動作
フェイルセーフ クロック モニタを有効にした場
合、クロック障害が発生するとデバイスが強制的に
RC_RUN 電源管理モードになり、PIR2 レジスタの
OSCFIF ビットがセットされます。その後、ECCP
は内部オシレータをクロック ソースとして使用し
ますが、この内部オシレータの周波数はプライマリ
クロックとは異なる場合があります。
詳細は、前の節を参照してください。
16.4.9
リセットの影響
パワーオン リセットおよびそれ以降のリセットで、
すべてのポートが強制的に入力モードになり、CCP
レジスタはリセット状態に戻ります。
これにより、拡張 CCP モジュールが、標準 CCP モ
ジュールと互換性のある状態に強制的にリセット
されます。
DS41303E_JP - ページ 188
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 16-2:
Name
INTCON
ECCP1 モジュール、および TIMER1 ~ TIMER3 に関連するレジスタ
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
GIE/GIEH
PEIE/GIEL
TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
RCON
IPEN
SBOREN
—
RI
TO
PD
POR
BOR
56
PIR1
PSPIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
60
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
60
IPR2
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
60
TRISB
PORTB Data Direction Control Register
60
TRISC
PORTC Data Direction Control Register
60
TRISD
PORTD Data Direction Control Register
60
TMR1L
Timer1 Register, Low Byte
58
TMR1H
Timer1 Register, High Byte
58
T1CON
TMR2
T2CON
RD16
T1RUN
T1CKPS1
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS
TMR1ON
58
T2OUTPS2
T2OUTPS1
T2OUTPS0
TMR2ON
T2CKPS1
T2CKPS0
58
Timer2 Register
—
58
T2OUTPS3
PR2
Timer2 Period Register
58
TMR3L
Timer3 Register, Low Byte
59
TMR3H
Timer3 Register, High Byte
T3CON
RD16
T3CCP2
59
T3CKPS1
T3CKPS0
CCPR1L
Capture/Compare/PWM Register 1, Low Byte
CCPR1H
Capture/Compare/PWM Register 1, High Byte
T3CCP1
T3SYNC
TMR3CS
TMR3ON
59
59
59
CCP1CON
P1M1
P1M0
DC1B1
DC1B0
CCP1M3
CCP1M2
CCP1M1
CCP1M0
59
ECCP1AS
ECCPASE
ECCPAS2
ECCPAS1
ECCPAS0
PSSAC1
PSSAC0
PSSBD1
PSSBD0
59
PWM1CON
PRSEN
PDC6
PDC5
PDC4
PDC3
PDC2
PDC1
PDC0
59
記号の説明 :
— = 未実装、
「0」として読み出し。網掛けのビットは ECCP の動作では使用しません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 189
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 190
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.0
17.1
17.3
マスター同期シリアル ポート
(MSSP) モジュール
マスター SSP (MSSP) モジュールの
概要
Master Synchronous Serial Port (MSSP: マスター同期シ
リアル ポート ) モジュールは、他の周辺装置やマイ
クロコントローラ デバイスとの通信に役立つシリ
アル インターフェースです。周辺機器として、シリ
アル EEPROM、シフト レジスタ、ディスプレイ ド
ライバ、A/D コンバータなどがあります。MSSP モ
ジュールは、次のいずれかのモードで動作できます。
• Serial Peripheral Interface
(SPI: シリアル ペリフェラル インターフェース )
• Inter-Integrated Circuit (I2C)
- フルマスター モード :
- スレーブ モード ( 一括アドレス呼び出し付き )
SPI モード
SPI モードでは、8 ビットのデータを同期して、同
時に送受信できます。SPI の 4 つのモードをすべて
サポートします。通信には通常、次の 3 つのピンを
使用します。
• シリアル データ出力 – SDO
• シリアル データ入力 – SDI/SDA
• シリアル クロック – SCK/SCL
更に、スレーブ モードの動作では、次の 4 つ目の
ピンを使用できます。
• スレーブ選択 – SS
図 17-1 に、SPI モードで動作する MSSP モジュール
のブロック図を示します。
図 17-1:
MSSP のブロック図 (SPI モード )
Internal
Data Bus
I2C インターフェースは、ハードウェアの次のモー
ドをサポートします。
• マスター モード
• マルチマスター モード
• スレーブ モード
17.2
Read
Write
SSPBUF Reg
SDI/SDA
SSPSR Reg
制御レジスタ
Shift
Clock
SDO
bit 0
SS
SS Control
Enable
MSSP に関連するレジスタとして、次の 7 つのレジ
スタがあります。
•
•
•
•
•
•
•
SSPSTA – STATUS レジスタ
SSPCON1 – 第 1 制御レジスタ
SSPCON2 – 第 2 制御レジスタ
SSPBUF – 送信 / 受信バッファ
SSPSR – シフト レジスタ ( 直接アクセス不可 )
SSPADD – アドレス レジスタ
SSPMSK – アドレス マスク レジスタ
これらのレジスタの用途と各構成ビットは、MSSP
モジュールが SPI と I2C のいずれのモードで動作し
ているかによって大きく異なります。
詳細は、それぞれの節を参照してください。
Edge
Select
2
Clock Select
SCK/SCL
SSPM<3:0>
SMP:CKE 4
TMR2 Output
2
2
Edge
Select
Prescaler TOSC
4, 16, 64
(
)
Data to TX/RX in SSPSR
TRIS bit
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 191
PIC18F2XK20/4XK20
17.3.1
レジスタ
MSSP モジュールでは、SPI モードの動作用に次の
4 つのレジスタを使用します。
•
•
•
•
SSPCON1 – 制御レジスタ
SSPSTAT – STATUS レジスタ
SSPBUF – シリアル送信 / 受信バッファ
SSPSR – シフト レジスタ ( 直接アクセス不可 )
SSPCON1 は SPI モード動作用の制御レジスタ、
SSPSTAT は STATUS レジスタです。SSPCON1 レジ
スタは、読み出しと書き込みができます。SSPSTAT
の下位 6 ビットは読み出し専用です。SSPSTAT の上
位 2 ビットは読み出し / 書き込みができます。
レジスタ 17-1:
SSPSR は、データをシフトして入出力するシフト
レジスタです。SSPBUF から SSPSR レジスタに間
接的にアクセスできます。SSPBUF はバッファ レジ
スタで、データ バイトの書き込み先や読み出し元
になります。
受信動作では、SSPSR と SSPBUF の両方で 1 個の
ダブル バッファ受信器を構成します。SSPSR が 1
バイトを受信すると、SSPBUF に転送され、SSPIF
割り込みがセットされます。
送信動作では、SSPBUF はダブル バッファを構成し
ません。SSPBUF に書き込むと、SSPBUF と SSPSR
の両方に書き込まれます。
SSPSTAT: MSSP STATUS レジスタ (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 = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。
「0」として読み出し
「1」= セット
「0」= クリア
x = 不明
ビット 7
SMP: サンプル ビット
SPI マスター モード :
1 = データ出力の終了時に入力データをサンプリングする
0 = データ出力中に入力データをサンプリングする
SPI スレーブ モード :
SPI をスレーブ モードで使用するときには、SMP をクリアする必要がある
ビット 6
CKE: SPI クロック選択ビット (1)
1 = クロックがアクティブからアイドルに遷移するときに出力データを変更
0 = クロックがアイドルからアクティブに遷移するときに出力データを変更
ビット 5
D/A: データ / アドレス ビット
I2C モードでのみ使用
ビット 4
P: ストップ ビット
I2C モードでのみ使用。MSSP モジュールが無効になり SSPEN がクリアされると、このビット
がクリアされる
ビット 3
S: スタート ビット
I2C モードでのみ使用
ビット 2
R/W: 読み出し / 書き込み情報ビット
I2C モードでのみ使用
ビット 1
UA: 更新アドレス ビット
I2C モードでのみ使用
ビット 0
BF: バッファ フル状態ビット ( 受信モードのみ )
1 = 受信完了、SSPBUF はフル
0 = 受信は未完了、SSPBUF は空
注 1:
クロック状態の極性は、SSPCON1 レジスタの CKP ビットでセットします。
DS41303E_JP - ページ 192
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 17-2:
SSPCON1: MSSP CONTROL 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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
ビット 7
WCOL: 書き込み衝突検出ビット ( 送信モードのみ )
1 = 前のワードを送信中の SSPBUF レジスタに書き込みが行われた
( ソフトウェアでクリアする必要がある )
0 = 衝突なし
ビット 6
SSPOV: 受信オーバーフロー表示ビット (1)
SPI スレーブ モード :
1 = SSPBUF レジスタが前のデータを保持しているときに新規 1 バイトを受信した。
オーバーフ
ローした場合、SSPSR のデータは失われます。オーバーフローが発生するのは、スレーブ
モードのみです。オーバーフロー状態のセットを防ぐには、データ受信のみの場合でも
SSPBUF を読み出す必要があります ( セットされた場合、ソフトウェアでクリアする必要が
ある )
0 = オーバーフローなし
ビット 5
SSPEN: 同期シリアル ポート イネーブル ビット (2)
1 = シリアル ポートを有効にして、SCK、SDO、SDI、および SS をシリアル ポート ピンとして
設定する。この場合、SDA と SCL のピンを入力として設定する必要がある
0 = シリアル ポートを無効にして、これらのピンを I/O ポート ピンとして設定する
ビット 4
CKP: クロック極性選択ビット
1 = クロックのアイドル状態が High レベル
0 = クロックのアイドル状態が Low レベル
ビット 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
注 1:
2:
3:
マスター モードでは、SSPBUF レジスタへの書き込みにより新規の各受信 ( および送信 ) が開始され
るため、オーバーフロー ビットはセットされません。
有効にした場合、これらのピンを適切に入力または出力に設定する必要があります。
ここに記載されていないビットの組み合わせは、予約されているか、I2C モードのみで実装されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 193
PIC18F2XK20/4XK20
17.3.2
動作
SPI の初期化時に、いくつかのオプションを指定する
必要があります。オプションを指定するには、適切
な制御ビット (SSPCON1<5:0> および SSPSTAT<7:6>)
をプログラムします。これらの制御ビットで、次の
項目を指定できます。
•
•
•
•
マスター モード (SCK がクロック出力 )
スレーブ モード (SCK がクロック入力 )
クロックの極性 (SCK のアイドル状態 )
データ入力サンプリング位相 ( データ出力期間
の中間または終端 )
• クロック エッジ (SCK の立ち上がり / 立ち下がり
エッジでデータを出力 )
• クロック速度 ( マスター モードのみ )
• スレーブ選択モード ( スレーブ モードのみ )
MSSP には、送信 / 受信シフト レジスタ (SSPSR) と
バッファ レジスタ (SSPBUF) があります。
SSPSR は、
データを最上位ビットからデバイスにシフト入力
して、デバイス外にシフト出力します。SSPBUF は、
受信データが準備できるまで、SSPSR に書き込まれ
たデータを保持します。8 ビットのデータを受信す
ると、そのバイトが SSPBUF レジスタに移動されま
す。次に、SSPSTAT レジスタのバッファ フル検出
ビット BF と割り込みフラグ ビット SSPIF がセット
されます。受信データのダブルバッファ (SSPBUF)
により、受信データを読み出す前に次のバイトの受
信を開始できます。データの送受信中に SSPBUF レ
ジスタへの書き込みがあった場合、その書き込みは
無視され、SSPCON1 レジスタの書き込み衝突検出
ビット WCOL がセットされます。その後の SSPBUF
レジスタへの書き込みが正常に完了したかどうか
を特定できるように、ユーザー ソフトウェアで
WCOL ビットをクリアする必要があります。
例 17-1:
LOOP
アプリケーション ソフトウェアが有効なデータの
受信を予測しているときには、転送するデータの次
のバイトが SSPBUF に書き込まれる前に、SSPBUF
を読み出す必要があります。SSPSTAT レジスタの
バッファ フル ビット BF は、SSPBUF に受信データ
がロードされたこと ( 送信完了 ) を示します。
SSPBUF を読み出すと、BF ビットがクリアされま
す。SPI が単なる送信器の場合は、このデータは無
関係です。送受信が完了したかどうかを特定するに
は、通常、MSSP 割り込みを使用します。SSPBUF
の読み出しと書き込みの両方、またはそのいずれか
を行う必要があります。割り込み方法を使用しない
場合は、ソフトウェアでポーリングを実行して書き
込み衝突の発生を防止できます。例 17-1 に、デー
タ送信時の SSPBUF (SSPSR) のロードを示します。
SSPSR の読み出しと書き込みは直接実行できず、
SSPBUF レジスタのアドレス指定でのみアクセスで
きます。更に、MSSP STATUS レジスタ (SSPSTAT)
は、さまざまなステータスを示します。
SSPBUF (SSPSR) レジスタのロード
BTFSS
BRA
MOVF
SSPSTAT, BF
LOOP
SSPBUF, W
;Has data been received (transmit complete)?
;No
;WREG reg = contents of SSPBUF
MOVWF
RXDATA
;Save in user RAM, if data is meaningful
MOVF
MOVWF
TXDATA, W
SSPBUF
;W reg = contents of TXDATA
;New data to xmit
DS41303E_JP - ページ 194
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.3.3
SPI の I/O 許可
17.3.4
シリアル ポートを有効にするには、SSPCON1 レジ
スタの SSP イネーブル ビット SSPEN をセットしま
す。SPI モードのリセットや再設定を行うには、
SSPEN ビットをクリアし、SSPCON レジスタを再
初期化した後に SSPEN ビットをセットします。こ
れにより、SDI、SDO、SCK、および SS のピンがシ
リアル ポート ピンに設定されます。ピンをシリア
ル ポートとして機能させるには、ピンのデータ方
向ビット (TRIS レジスタ ) を次のようにプログラム
します。
• SDI は SPI モジュールから自動制御される
• SDO に対応する TRIS ビットをクリアする
• SCK ( マスター モード ) に対応する TRIS ビット
をクリアする
• SCK ( スレーブ モード ) に対応する TRIS ビット
をセットする
• SS に対応する TRIS ビットをセットする
不要なシリアル ポート機能は、対応するデータ方
向 (TRIS) ビットを逆の値にプログラムすることで
無効にできます。
図 17-2:
代表的な接続
図 17-2 に、2 つのマイクロコントローラの代表的な
接続を示します。マスター コントローラ ( プロセッ
サ 1) が SCK 信号を送信して、データ転送を開始し
ます。プログラムされたクロック エッジで両方の
シフト レジスタからデータがシフト出力され、ク
ロックの逆のエッジでラッチされます。両方のプロ
セッサに同じクロック極性(CKP)をプログラムする
必要があり、これにより両方のコントローラが同時
にデータを送受信します。データが意味を持つか
( またはダミー データか ) は、アプリケーション ソ
フトウェアによって決まります。これにより、デー
タ送信には次の 3 つのシナリオがあります。
• マスターがデータを送信–スレーブがダミー
データを送信
• マスターがデータを送信–スレーブがデータを
送信
• マスターがダミー データを送信–スレーブが
データを送信
SPI マスター / スレーブの接続
SPI Master SSPM<3:0> = 00xxb
SPI Slave SSPM<3:0> = 010xb
SDO
SDI
Serial Input Buffer
(SSPBUF)
SDI
Shift Register
(SSPSR)
MSb
Serial Input Buffer
(SSPBUF)
SDO
LSb
MSb
SCK
Serial Clock
Processor 1
 2009 Microchip Technology Inc.
Shift Register
(SSPSR)
LSb
SCK
Processor 2
Preliminary
DS41303E_JP - ページ 195
PIC18F2XK20/4XK20
17.3.5
マスター モード
マスターは SCK を制御しているので、任意の時点
でデータ転送を開始できます。マスターはソフト
ウェア プロトコルにより、
スレーブ ( プロセッサ 2、
図 17-2) がデータを一斉送信するタイミングを特定
します。
マスター モードでは、データは SSPBUF レジスタ
に書き込まれると即座に送受信されます。SPI が受
信のみの場合は、SDO 出力を無効にできます ( 入力
としてプログラムする )。SSPSR レジスタは継続し
て、プログラムされたクロック速度で SDI ピンに存
在する信号をシフト入力します。受信した各バイト
は、通常速度で受信したバイトであるかのように
SSPBUF レジスタにロードされます ( 割り込みとス
テータス ビットを適切にセット )。これは、
「ライ
ン アクティビティ モニタ」モードのような受信器
アプリケーションで便利です。
図 17-3:
クロックの極性を選択するには、SSPCON1 レジス
タの CKP ビットを適切にプログラムします。これ
により、図 17-3、図 17-5、および図 17-6 に示す SPI
通信波形 ( 最上位ビットが最初に送信される ) が得
られます。マスター モードでは、SPI クロック速度
( ビット レート ) を次のいずれかにプログラムでき
ます。
•
•
•
•
FOSC/4 ( または TCY)
FOSC/16 ( または 4 • TCY)
FOSC/64 ( または 16 •TCY)
Timer2 出力 /2
これにより最大データ レート 16.00 Mbps (64 MHz
時 ) が得られます。
図 17-3 に、マスター モードの波形を示します。CKE
ビットをセットすると、SCK にクロック エッジが
発生する前に SDO データが有効になります。入力
サンプルの変化を、SMP ビットの状態に基づいて
示します。SSPBUF に受信データがロードされるタ
イミングを示します。
SPI モードの波形 ( マスター モード ):
Write to
SSPBUF
SCK
(CKP = 0
CKE = 0)
SCK
(CKP = 1
CKE = 0)
4 Clock
Modes
SCK
(CKP = 0
CKE = 1)
SCK
(CKP = 1
CKE = 1)
SDO
(CKE = 0)
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
SDO
(CKE = 1)
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
SDI
(SMP = 0)
bit 0
bit 7
Input
Sample
(SMP = 0)
SDI
(SMP = 1)
bit 0
bit 7
Input
Sample
(SMP = 1)
SSPIF
Next Q4 Cycle
after Q2
SSPSR to
SSPBUF
DS41303E_JP - ページ 196
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.3.6
スレーブ モード
スレーブ モードでは、SCK に外部クロック パルス
が現れた時点でデータが送受信されます。最後の
ビットがラッチされると、SSPIF 割り込みフラグ
ビットがセットされます。
モジュールのSPIスレーブ モードを有効にする前に、
クロック ラインを適切なアイドル状態に一致させる
必要があります。クロック ラインを観察するには、
SCKピンを読み出します。
アイドル状態は、
SSPCON1
レジスタの CKP ビットで特定できます。
スレーブ モードでは、外部クロック ソースから
SCK ピンに外部クロックが供給されます。この外部
クロックは、電気的仕様に記載された High と Low
の最小時間に適合する必要があります。
スリープ モードでは、スレーブはデータの送受信
ができます。1 バイトを受信するとスリープ モード
からデバイスがウェイクアップします。
17.3.7
スレーブ選択同期
SS ピンを使用して、同期スレーブ モードにできま
す。SPI をスレーブ モードにするには、SS ピンの
制御を有効にします (SSPCON1<3:0> = 04h)。SS ピ
ンを入力にするので、このピンを Low で駆動しな
いでください。データ ラッチは High にする必要が
図 17-4:
あります。SS ピンが Low の場合、送受信が有効に
なり、SDO ピンが駆動されます。SS ピンが High に
なると、バイトの送信途中でも SDO ピンの駆動が
停止し、浮動出力になります。アプリケーションに
よっては、外部プルアップ / プルダウン抵抗を使用
することをお勧めします。
注 1:
SPI が SS ピンの制御を有効にした
(SSPCON<3:0> = 0100) スレーブ モード
のときに、SS ピンを VDD に設定すると
SPI モジュールがリセットされます。
2:
CKE をセットして SPI をスレーブ モー
ドで使用するときには、SS ピンの制御
も有効にする必要があります。
SPI モジュールのリセット時に、ビット カウンタは
強制的に「0」になります。リセットするには、SS
ピンを High レベルにするか、SSPEN ビットをクリ
アします。
2 線通信をエミュレートするには、SDO ピンを SDI
ピンに接続します。SPI を受信器として動作させる
場合は、SDO ピンを入力に設定できます。これに
より、SDO からの送信が禁止されます。SDI を常に
入力 (SDI 機能 ) にしておくと、バス矛盾が発生し
ません。
スレーブ同期の波形
SS
SCK
(CKP = 0
CKE = 0)
SCK
(CKP = 1
CKE = 0)
Write to
SSPBUF
SDO
SDI
(SMP = 0)
bit 7
bit 6
bit 7
bit 0
bit 0
bit 7
bit 7
Input
Sample
(SMP = 0)
SSPIF
Interrupt
Flag
Next Q4 Cycle
after Q2
SSPSR to
SSPBUF
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 197
PIC18F2XK20/4XK20
図 17-5:
SPI モードの波形 ( スレーブ モード、CKE = 0)
SS
Optional
SCK
(CKP = 0
CKE = 0)
SCK
(CKP = 1
CKE = 0)
Write to
SSPBUF
SDO
bit 7
SDI
(SMP = 0)
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
bit 0
bit 7
Input
Sample
(SMP = 0)
SSPIF
Interrupt
Flag
Next Q4 Cycle
after Q2
SSPSR to
SSPBUF
図 17-6:
SPI モードの波形 ( スレーブ モード、CKE = 1)
SS
Not Optional
SCK
(CKP = 0
CKE = 1)
SCK
(CKP = 1
CKE = 1)
Write to
SSPBUF
SDO
bit 7
SDI
(SMP = 0)
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
bit 0
Input
Sample
(SMP = 0)
SSPIF
Interrupt
Flag
Next Q4 Cycle
after Q2
SSPSR to
SSPBUF
DS41303E_JP - ページ 198
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.3.8
電源管理モードでの動作
SPI マスター モードでは、モジュールのクロックが
フル パワー モードは異なる速度で動作することが
あります。スリープ モードでは、クロックはすべ
て停止します。
アイドル モードでは、クロックが周辺機器に供給
されます。このクロックとして、プライマリ クロッ
ク ソース、セカンダリ クロック (Timer1 オシレー
タ、32.768 kHz)、または INTOSC ソースを使用でき
ます。詳細は、3.0 項「電源管理モード」を参照し
てください。
多くの場合、マスターが SPI データを駆動するク
ロック速度は重要ではありません。ただし、個々の
システムで評価する必要があります。
MSSP 割り込みが有効な場合、マスターがデータ送
信を完了した後に、MSSP 割り込みによりコント
ローラがウェイクアップします。
で、データを SPI 送信 / 受信シフト レジスタにシフ
ト入力できます。8ビットをすべて受信するとMSSP
割り込みフラグ ビットがセットされ、MSSP 割り込
みを有効にしている場合はデバイスをウェイクし
ます。
17.3.9
リセットにより MSSP モジュールが無効になり、現
在の転送を強制終了します。
17.3.10
バス モードの互換性
表 17-1 に、標準 SPI モードと、CKP および CKE の
制御ビットの状態との互換性を示します。
表 17-1:
SPI バス モード
Control Bits State
Standard SPI Mode
Terminology
0,
0,
1,
1,
• スリープ モードから、スレーブ モード
• アイドル モードから、スレーブ モードまたは
マスター モード
スリープ モードまたはアイドル モードを終了しな
いようにするには、MSSP 割り込みを無効にする必
要があります。
リセットの影響
CKP
CKE
0
0
1
1
1
0
1
0
0
1
0
1
データをサンプリングするタイミングを制御する
SMP ビットもあります。
SPI マスター モードでは、スリープ モードを選択す
るとモジュールのすべてのクロックが停止し、送受
信はデバイスがウェイクするまでその状態のまま
になります。デバイスが実行モードに戻ると、デー
タの送受信を再開します。
SPI スレーブ モードでは、SPI 送信 / 受信シフト レ
ジスタは、デバイスとは非同期で動作します。この
ため、デバイスを任意の電源管理モードにした状態
表 17-2:
Name
INTCON
SPI の動作に関連するレジスタ
Bit 7
Bit 6
Bit 5
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
60
(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
PIE1
PSPIE
(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
60
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
60
PIR1
TRISA
TRISC
SSPBUF
PSPIF
TRISA7(2) TRISA6(2)
TRISC7
TRISC6
SSP Receive Buffer/Transmit Register
58
SSPCON1
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
58
SSPSTAT
SMP
CKE
D/A
P
S
R/W
UA
BF
58
記号の説明 : 網掛けのビットは MSSP の SPI モードでは使用しません。
注 1: これらのビットは 28 ピンデバイスでは未実装です。常にクリアの状態にしてください。
2: PORTA<7:6> とその方向ビットは、さまざまなプライマリ オシレータ モードに合わせてポート ピンと
して個々に設定します。無効にすると、これらのビットは「0」として読み出されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 199
PIC18F2XK20/4XK20
17.4
I2C モード
17.4.1
I 2C モードの MSSP モジュールは、マスターとス
レーブの機能 ( 一括呼び出しサポートを含む ) をす
べてフル実装し、ハードウェアで空いているバスを
特定できるスタート ビットとストップ ビットの割
り込みを提供します ( マルチ マスター機能 )。MSSP
モジュールは、標準モードの仕様、および 7 ビット
と 10 ビットのアドレス指定を実現しています。
データ転送には、次の 2 つのピンを使用します。
• シリアル クロック (SCL) – SCK/SCL
• シリアル データ (SDA) – SDI/SDA
これらのピンを入力に設定するには、
対応するTRIS
ビットを使用します。
図 17-7:
MSSP のブロック図 (I2C™ モード )
Internal
Data Bus
Read
SSPBUF Reg
SSPSR Reg
MSb
LSb
SSPMSK Reg
Match Detect
DS41303E_JP - ページ 200
MSSP Control レジスタ 1 (SSPCON1)
MSSP Control レジスタ 2 (SSPCON2)
MSSP STATUS レジスタ (SSPSTAT)
Serial Receive/Transmit Buffer レジスタ (SSPBUF)
MSSP Shift Register (SSPSR) – 直接アクセス不可
MSSP Address レジスタ (SSPADD)
MSSP Address Mask (SSPMSK)
SSPCON1、および SSPCON2 は I2C モード動作用の
制御レジスタ、SSPSTAT は STATUS レジスタです。
SSPCON1 と SSPCON2 のレジスタは、読み出しと
書き込みができます。SSPSTAT の下位 6 ビットは読
み出し専用です。SSPSTAT の上位 2 ビットは読み出
し / 書き込みができます。
受信動作では、SSPSR と SSPBUF の両方で 1 個の
ダブル バッファ受信器を構成します。SSPSR が 1
バイトを受信すると、SSPBUF に転送され、SSPIF
割り込みがセットされます。
Addr Match
SSPADD Reg
Start and
Stop bit Detect
•
•
•
•
•
•
•
SSP をマスター モードに設定すると、SSPADD の下
位 7 ビットがボーレート ジェネレータのリロード値
として動作します。SSP を I2C スレーブ モードに設
定すると、SSPADD レジスタはスレーブ デバイスの
アドレスを保持します。アドレス レジスタの選択
ビットを SSPMSK レジスタと比較することで、SSP
を一連のアドレスに応答するように設定できます。
Shift
Clock
SDI/SDA
MSSP モジュールでは、I2C の動作用に次の 7 つの
レジスタを使用します。
SSPSR は、データのシフト入力とシフト出力を行う
シフト レジスタです。SSPBUF はバッファ レジス
タで、データ バイトの書き込み先や読み出し元に
なります。
Write
SCK/SCL
レジスタ
Set, Reset
S, P bits
(SSPSTAT Reg)
送信動作では、SSPBUF はダブル バッファを構成し
ません。SSPBUF に書き込むと、SSPBUF と SSPSR
の両方に書き込まれます。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 17-3:
SSPADD: MSSP ADDRESS AND BAUD RATE レジスタ (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 = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。
「0」として読み出し
「1」= セット
「0」= クリア
x = 不明
マスター モード
ビット 7
未使用 : このモードでは使用しない。ビットの状態は不定
ビット 6-0
ADD<6:0>: ボーレート クロック分周器
SCL ピンのクロック周期 = ((ADD<6:0> + 1) *4)/FOSC
10 ビット スレーブ モード : 最上位アドレス バイト
ビット 7-3
未使用 : 最上位アドレス バイトでは使用しない。このレジスタのビット状態は不定。マスター
「11110」にする必要がある。ただ
が送信するビット パターンは I2C の仕様により固定で、
し、これらのビットはハードウェアにより比較され、このレジスタの値の影響を受けない
ビット 2-1
ADD<9:8>: 10 ビット アドレスの上位 2 ビット
ビット 0
未使用 : このモードでは使用しない。ビットの状態は不定
10 ビット スレーブ モード : 最下位アドレス バイト
ビット 7-0
ADD<7:0>: 10 ビット アドレスの下位 8 ビット
7 ビット スレーブ モード
ビット 7-1
ADD<6:0>: 7 ビット アドレス
ビット 0
未使用 : このモードでは使用しない。ビットの状態は不定
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 201
PIC18F2XK20/4XK20
レジスタ 17-4:
SSPSTAT: MSSP STATUS レジスタ (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 = 読み出し可
-n = POR 時の値
ビット 7
ビット 6
ビット 5
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
SMP: スルー レート制御ビット
マスター モードまたはスレーブ モード :
1 = 標準速度モード (100 kHz および 1 MHz) のスルー レート制御を無効にする
0 = 高速モード (400 kHz) のスルー レート制御を有効にする
CKE: SMBus 選択ビット
マスター モードまたはスレーブ モード :
1 = SMBus 指定の入力を有効にする
0 = SMBus 指定の入力を無効にする
D/A: データ / アドレス ビット
マスター モード :
予約
スレーブ モード :
1 = 最後の送受信バイトがデータであったことを示す
0 = 最後の送受信バイトがアドレスであったことを示す
ビット 4
P: ストップ ビット (1)
1 = ストップ ビットが最後に検出されたことを示す
0 = ストップ ビットがまだ検出されていないことを示す
ビット 3
S: スタート ビット (1)
1 = スタート ビットが最後に検出されたことを示す
0 = スタート ビットがまだ検出されていないことを示す
ビット 2
R/W: 読み出し / 書き込み情報ビット (I2C モードのみ )(2, 3)
スレーブ モード :
1 = 読み出し
0 = 書き込み
マスター モード :
1 = 送信中
0 = 送信中でない
ビット 1
UA: 更新アドレス ビット (10 ビット スレーブ モードのみ )
1 = SSPADD レジスタのアドレス更新が必要なことを示す
0 = アドレス更新は必要ない
BF: バッファ フル状態ビット
送信モード :
1 = SSPBUF がフル
0 = SSPBUF は空
受信モード :
1 = SSPBUF がフル (ACK とストップ ビットを除く )
0 = SSPBUF は空 (ACK とストップ ビットを除く )
ビット 0
注 1:
2:
3:
Reset 時と SSPEN のクリア時にこのビットがクリアされます。
このビットは、最後のアドレス一致後の R/W ビット情報を保持します。このビットが有効な期間は、
アドレス一致後から、次のスタート ビット、ストップ ビット、または非 ACK ビットまでです。
このビットと、SEN、RSEN、PEN、RCEN、または ACKEN との論理和は、MSSP がアクティブ モー
ドであるかどうかを示します。
DS41303E_JP - ページ 202
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 17-5:
SSPCON1: MSSP CONTROL 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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
ビット 7
WCOL: 書き込み衝突検出ビット
マスター送信モード :
1 = I2C の状態が送信を開始可能な状態になっていないときに、SSPBUF レジスタへの書き込み
が試行された ( ソフトウェアでクリアする必要がある )
0 = 衝突なし
スレーブ送信モード :
1 = 前のワードを送信中の SSPBUF レジスタに書き込みが行われた ( ソフトウェアでクリアす
る必要がある )
0 = 衝突なし
受信モード ( マスター モードまたはスレーブ モード ):
このビットは不定
ビット 6
SSPOV: 受信オーバー フロー表示ビット
受信モード :
1 = SSPBUF レジスタが前のバイトを保持しているときに 1 バイトを受信した ( ソフトウェア
でクリアする必要がある )
0 = オーバーフローなし
送信モード :
送信モードではこのビットは不定
ビット 5
SSPEN: 同期シリアル ポート イネーブル ビット
1 = シリアル ポートを有効にして、SDA と SCL のピンをシリアル ポート ピンに設定する。こ
の場合、SDA と SCL のピンを入力として設定する必要がある
0 = シリアル ポートを無効にして、これらのピンを I/O ポート ピンに設定する
ビット 4
CKP:SCK 解放制御ビット
スレーブ モード :
1 = クロックを解放する
0 = クロックを Low に保持 ( クロック ストレッチ )。データ設定時間の確保に使用する
マスター モード :
このモードでは使用しない
ビット 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 モードでのみ実装さ
れる
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 203
PIC18F2XK20/4XK20
SSPCON2: MSSP CONTROL レジスタ (I2C モード )
レジスタ 17-6:
R/W-0
GCEN
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
ACKSTAT
ACKDT(2)
ACKEN(1)
RCEN(1)
PEN(1)
RSEN(1)
SEN(1)
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
x = 不明
「0」= クリア
ビット 7
GCEN: 一括呼び出しイネーブル ビット ( スレーブ モードのみ )
1 = SSPSR が一括呼び出しアドレス (0000h) を受信したときに割り込みを生成
0 = 一括呼び出しアドレスを無効にする
ビット 6
ACKSTAT: 肯定応答ステータス ビット ( マスター送信モードのみ )
1 = スレーブから ACK を受信していない
0 = スレーブから ACK を受信した
ビット 5
ACKDT: 肯定応答データ ビット ( マスター受信モードのみ )(2)
1 = NACK
0 = ACK
ビット 4
ACKEN: 肯定応答シーケンス イネーブル ビット ( マスター受信モードのみ )(1)
1 = SDA ピンと SCL ピンで肯定応答シーケンスを開始し、ACKDT データ ビットを送信する。
ハードウェアで自動クリアされる
0 = 肯定応答シーケンスがアイドル
ビット 3
RCEN: 受信イネーブル ビット ( マスター モードのみ )(1)
1 = I2C の受信モードを有効にする
0 = 受信はアイドル
ビット 2
PEN: ストップ条件イネーブル ビット ( マスター モードのみ )(1)
1 = SDA ピンと SCL ピンでストップ条件を開始する。ハードウェアで自動クリアされる
0 = ストップ条件はアイドル
ビット 1
RSEN: リピート スタート条件イネーブル ビット ( マスター モードのみ )(1)
1 = SDAピンとSCLピンでリピート スタート条件を開始する。
ハードウェアで自動クリアされる
0 = リピート スタート条件はアイドル
ビット 0
SEN: スタート条件イネーブル / ストレッチ イネーブル ビット (1)
マスター モード :
1 = SDA ピンと SCL ピンでスタート条件を開始する。ハードウェアで自動クリアされる
0 = スタート条件はアイドル
スレーブ モード :
1 = スレーブ送信とスレーブ受信の両方について、
クロック ストレッチを有効にする ( ストレッ
チ有効 )
0 = スレーブ受信のクロック ストレッチを無効にする。スレーブ送信のクロック ストレッチは
有効のまま
注 1:
2:
ACKEN、RCEN、PEN、RSEN、SEN のビット : I2C モジュールがアイドル モード以外の場合、これ
らのビットはセットできず ( スプーリングなし )、SSPBUF への書き込みはできません (SSPBUF への
書き込みは無効 )。
受信の最後にユーザーが肯定応答シーケンスを開始したときに送信される値です。
DS41303E_JP - ページ 204
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.4.2
動作
MSSP モジュールの機能を有効にするには、
SSPCON1レジスタのSSPENビットをセットします。
SSPCON1 レジスタで、I 2C 動作を制御できます。
SSPCON1 レジスタのモード選択ビットの 4 ビット
を使用して、次のいずれかの I 2C モードを選択でき
ます。
• I2C マスター モード、クロック = (FOSC/4) x
(SSPADD + 1)
• I 2C スレーブ モード (7 ビット アドレス )
• I 2C スレーブ モード (10 ビット アドレス )
• I 2C スレーブ モード (7 ビット アドレス )、スター
ト ビットとストップ ビットの割り込み有効
• I 2C スレーブ モード (10 ビット アドレス )、
スター
ト ビットとストップ ビットの割り込み有効
• I 2C ファームウェア制御マスター モード、スレー
ブはアイドル
SSPEN ビットをセットして I 2C モードを選択する
と、対応する TRIS ビットをセットして SCL ピンと
SDA ピンを入力にプログラムしている場合、これ
らのピンが強制的にオープンドレインになります。
モジュールの正常な動作を確保するには、SCL ピン
と SDA ピンに外部プルアップ抵抗を接続する必要
があります。
17.4.3
スレーブ モード
スレーブ モードでは、SDA ピンと SCL ピンを入力
に設定する必要があります。MSSP モジュールは、
必要に応じて出力データにより入力状態を無効に
します ( スレーブ送信器 )。
I 2C スレーブ モードのハードウェアは常に、アドレ
ス一致時に割り込みを生成します。モード選択ビッ
トを使用して、スタート ビットおよびストップ
ビットによる割り込みも選択できます。
アドレスが一致した場合、またはアドレス一致後の
データ転送を受信した場合、ハードウェアは自動的
に肯定応答 (ACK) パルスを生成し、現在 SSPSR レ
ジスタにある受信値をSSPBUFレジスタにロードし
ます。
次の条件が2つ以上あてはまる場合、MSSPモジュー
ルはこの ACK パルスを送信しません。
• 転送を受信する前に、SSPSTAT レジスタのバッ
ファ フル検出ビット BF がセットされている
• 転送を受信する前に、SSPCON1 レジスタのオー
バーフロー ビット SSPOV がセットされている
この場合、SSPSR レジスタの値は SSPBUF にロー
ドされず、PIR1 レジスタの SSPIF ビットがセット
されます。BF ビットは SSPBUF レジスタの読み出
しでクリアされ、SSPOV ビットはソフトウェアか
らクリアされます。
 2009 Microchip Technology Inc.
正常な動作を確保するには、SCL クロック入力に最
小の High と Low が必要です。I2C の仕様の High と
Low の期間、および MSSP モジュールの必要要件
を、タイミング パラメータ 100 およびパラメータ
101 で示します ( 表 26-19 を参照 )。
17.4.3.1
アドレス指定
有効になった MSSP モジュールは、スタート条件が
発生するまで待機します。
スタート条件の後、8 ビッ
トが SSPSR レジスタにシフト入力されます。入力
ビットはすべて、クロック (SCL) ラインの立ち上が
り エ ッ ジ で サ ン プ リ ン グ さ れ ま す。レ ジ ス タ
SSPSR<7:1> の値が、SSPADD レジスタの値と比較
されます。8 番目のクロック (SCL) パルスの立ち下
がりエッジごとに、アドレスが比較されます。アド
レスが一致し、BF ビットと SSPOV ビットがクリア
されると、次のイベントが発生します。
1.
2.
3.
4.
SSPSR レジスタの値が SSPBUF レジスタにロー
ドされる
バッファ フル ビット BF がセットされる
ACK パルスが生成される
9番目のSCLパルスの立ち下がりエッジごとに、
PIR1 レジスタの MSSP 割り込みフラグ ビット
SSPIF がセットされる ( 有効な場合は割り込み
が生成される )
10 ビット アドレス モードでは、スレーブがアドレ
スの 2 バイトを受信する必要があります。アドレス
の最初の 1 バイトの上位 5 ビットは、10 ビット ア
ドレスであるかどうかを示します。スレーブ デバイ
スがアドレスの 2 番目のバイトを受信できるよう
に、SSPSTAT レジスタの R/W ビットには、書き込
みを指定する必要があります。10 ビット アドレス
場合、最初のバイトは「11110 A9 A8 0」となり、
「A9」と「A8」はアドレスの上位 2 ビットです。10
ビット アドレスのイベント シーケンスは次のとお
りです。ステップ 7 ~ステップ 9 はスレーブ送信器
に対応します。
1.
2.
3.
4.
5.
Preliminary
アドレスの最初 ( 上位 ) のバイトを受信する
(SSPSTAT レジスタの SSPIF、BF、および UA
のビットがセットされる )
アドレスの 2 番目 ( 下位 ) のバイトで SSPADD
レジスタを更新する (UA ビットをクリアし、
SCL ラインを解放する )
SSPBUF レジスタを読み出し (BF ビットをクリ
ア )、フラグ ビット SSPIF をクリアする
アドレスの 2 番目 ( 下位 ) のバイトを受信する
(SSPIF、BF、および UA のビットがセットされ
る )。アドレスが一致した場合、次のステップ
まで SCL が保持される。一致しない場合は、
SCL は保持されない
アドレスの最初 ( 上位 ) のバイトで SSPADD レ
ジスタを更新する (UA ビットをクリアし、SCL
ラインを解放する )
DS41303E_JP - ページ 205
PIC18F2XK20/4XK20
6.
7.
8.
9.
SSPBUF レジスタを読み出し (BF ビットをクリ
ア )、フラグ ビット SSPIF をクリアする
リピート スタート条件を受信する
アドレスの最初 ( 上位 ) のバイトを受信する
(SSPIF、および BF のビットがセットされる )
SSPBUF レジスタを読み出し (BF ビットをクリ
ア )、フラグ ビット SSPIF をクリアする
17.4.3.2
受信
アドレス バイトの R/W ビットがクリアされ、アド
レスが一致すると、SSPSTAT レジスタの R/W ビッ
トがクリアされます。受信したアドレスが SSPBUF
レジスタにロードされ、SDA ラインが Low に保持
されます (ACK)。
アドレス バイトのオーバーフロー条件が存在する
場合は、肯定応答 (ACK) パルスは送信されません。
オーバーフロー条件は、SSPSTAT レジスタの BF
ビ ッ ト の セ ッ ト、ま た は SSPCON1 レ ジ ス タ の
SSPOV ビットのセットで指定します。
データ転送の各バイトについてMSSP割り込みが生
成されます。PIR1 レジスタのフラグ ビット SSPIF
は、ソフトウェアでクリアする必要があります。バ
イトのステータスを特定するには、SSPSTAT レジス
タを使用します。
SSPCON2 レジスタの SEN ビットがセットされてい
る場合、個々のデータ転送の後 SCK/SCL が Low に
保持されます ( クロック ストレッチ )。クロックを
解放するには、SSPCON1 レジスタの CKP ビットを
セットします。詳細は、17.4.4 項「クロック スト
レッチ」を参照してください。
DS41303E_JP - ページ 206
17.4.3.3
送信
入力アドレス バイトの R/W ビットがセットされ、
アドレスが一致すると、SSPSTAT レジスタの R/W
ビ ット がセ ッ トさ れ ます。受信 し たア ド レス が
SSPBUF レジスタにロードされます。9 番目のビッ
トで ACK パルスが送信され、SEN の状態には関係
なく SCK/SCL が Low に保持されます ( 詳細は 17.4.4
項「クロック ストレッチ」を参照 )。クロック スト
レッチにより、スレーブがデータの送信準備を完了
するまでマスターは次のクロック パルスをアサー
トできなくなります。送信データを SSPBUF レジス
タにロードする必要があります。これにより SSPSR
レジスタにもロードされます。その後、SSPCON1
レジスタの CKP ビットをセットして、SCK/SCL ピ
ンを有効にする必要があります。SCL 入力の立ち下
がりエッジで、データ 8 ビットがシフト出力されま
す。これにより、SCL が High の期間、SDA 信号が
有効になります ( 図 17-9)。
マスター受信器からの ACK パルスは、9 番目の SCL
入力パルスの立ち上がりエッジごとにラッチされ
ます。SDA ラインが High ( 非 ACK) の場合、デー
タ転送が完了します。この場合、スレーブが ACK
をラッチすると、スレーブ ロジックがリセットさ
れ (SSPSTAT レジスタをリセット )、スレーブは次
のスタート ビットの受信をモニタします。SDA ラ
イ ン が Low (ACK) の 場 合、次 の 送 信 デ ー タ を
SSPBUF レジスタにロードする必要があります。こ
の場合も、CKP ビットをセットして SCK/SCL ピン
を有効にする必要があります。
データ転送の各バイトについてMSSP割り込みが生
成されます。SSPIF ビットはソフトウェアでクリア
する必要があり、バイトのステータスを特定するに
は、SSPSTAT レジスタを使用します。9 番目のク
ロック パルスの立ち下がりエッジごとに、SSPIF
ビットがセットされます。
Preliminary
 2009 Microchip Technology Inc.
 2009 Microchip Technology Inc.
Preliminary
CKP
2
A6
3
4
A4
5
A3
Receiving Address
A5
6
A2
(CKP does not reset to ‘0’ when SEN = 0)
SSPOV (SSPCON1<6>)
BF (SSPSTAT<0>)
(PIR1<3>)
SSPIF
1
SCL
S
A7
7
A1
8
9
ACK
R/W = 0
1
D7
3
4
D4
5
D3
Receiving Data
D5
Cleared by software
SSPBUF is read
2
D6
6
D2
7
D1
8
D0
9
ACK
1
D7
2
D6
3
4
D4
5
D3
Receiving Data
D5
6
D2
7
D1
8
D0
Bus master
terminates
transfer
P
SSPOV is set
because SSPBUF is
still full. ACK is not sent.
9
ACK
図 17-8:
SDA
PIC18F2XK20/4XK20
I2C™ スレーブ モードのタイミング、SEN = 0 ( 受信、7 ビット アドレス )
DS41303E_JP - ページ 207
DS41303E_JP - ページ 208
1
Preliminary
CKP
2
A6
Data in
sampled
BF (SSPSTAT<0>)
SSPIF (PIR1<3>)
S
A7
3
4
A4
5
A3
6
A2
Receiving Address
A5
7
A1
8
R/W = 0
9
ACK
SCL held low
while CPU
responds to SSPIF
1
D7
3
D5
4
5
D3
CKP is set by software
SSPBUF is written by software
6
D2
Transmitting Data
D4
Cleared by software
2
D6
7
8
D0
9
From SSPIF ISR
D1
ACK
1
D7
4
D4
5
D3
Cleared by software
3
D5
6
D2
CKP is set by software
SSPBUF is written by software
2
D6
7
8
D0
9
ACK
From SSPIF ISR
D1
Transmitting Data
P
図 17-9:
SCL
SDA
PIC18F2XK20/4XK20
I2C™ スレーブ モードのタイミング ( 送信、7 ビット アドレス )
 2009 Microchip Technology Inc.
 2009 Microchip Technology Inc.
2
1
Preliminary
4
1
5
0
7
A8
UA is set indicating that
the SSPADD needs to be
updated
SSPBUF is written with
contents of SSPSR
6
A9
8
9
(CKP does not reset to ‘0’ when SEN = 0)
UA (SSPSTAT<1>)
SSPOV (SSPCON1<6>)
CKP
3
1
Cleared by software
BF (SSPSTAT<0>)
(PIR1<3>)
SSPIF
1
SCL
S
1
ACK
R/W = 0
A7
2
4
A4
5
A3
6
A2
8
9
A0 ACK
UA is set indicating that
SSPADD needs to be
updated
Cleared by hardware
when SSPADD is updated
with low byte of address
7
A1
Cleared by software
3
A5
Dummy read of SSPBUF
to clear BF flag
1
A6
Receive Second Byte of Address
1
D7
4
5
6
7
Cleared by software
3
8
9
1
2
4
5
6
7
8
D1 D0
Cleared by software
3
D3 D2
Receive Data Byte
D1 D0 ACK D7 D6 D5 D4
Cleared by hardware when
SSPADD is updated with high
byte of address
2
D3 D2
Receive Data Byte
D6 D5 D4
Clock is held low until
update of SSPADD has
taken place
9
P
Bus master
terminates
transfer
SSPOV is set
because SSPBUF is
still full. ACK is not sent.
ACK
図 17-10:
SDA
Receive First Byte of Address
Clock is held low until
update of SSPADD has
taken place
PIC18F2XK20/4XK20
I2C™ スレーブ モードのタイミング、SEN = 0 ( 受信、10 ビット アドレス )
DS41303E_JP - ページ 209
DS41303E_JP - ページ 210
2
1
Preliminary
CKP (SSPCON1<4>)
UA (SSPSTAT<1>)
BF (SSPSTAT<0>)
(PIR1<3>)
SSPIF
1
SCL
S
1
4
1
5
0
6
7
A9 A8
8
UA is set indicating that
the SSPADD needs to be
updated
SSPBUF is written with
contents of SSPSR
3
1
9
ACK
R/W = 0
1
3
4
5
Cleared by software
2
7
UA is set indicating that
SSPADD needs to be
updated
Cleared by hardware when
SSPADD is updated with low
byte of address
6
A6 A5 A4 A3 A2 A1
8
A0
Receive Second Byte of Address
Dummy read of SSPBUF
to clear BF flag
A7
9
ACK
2
3
1
4
1
Cleared by software
1
1
5
0
6
8
9
ACK
R/W=1
1
2
4
5
6
7
P
CKP is automatically cleared by hardware, holding SCL low
CKP is set by software
9
ACK
Bus master
terminates
transfer
Completion of
data transmission
clears BF flag
8
D4 D3 D2 D1 D0
Cleared by software
3
D7 D6 D5
Transmitting Data Byte
Clock is held low until
CKP is set to ‘1’
Write of SSPBUF
BF flag is clear
initiates transmit
at the end of the
third address sequence
7
A9 A8
Cleared by hardware when
SSPADD is updated with high
byte of address.
Dummy read of SSPBUF
to clear BF flag
Sr
1
Receive First Byte of Address
Clock is held low until
update of SSPADD has
taken place
図 17-11:
SDA
Receive First Byte of Address
Clock is held low until
update of SSPADD has
taken place
PIC18F2XK20/4XK20
I2C™ スレーブ モードのタイミング ( 送信、10 ビット アドレス )
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.4.3.4
SSPM<3:0> ビットをセットして I2C スレーブ モー
ド (7 ビットまたは 10 ビットのアドレス ) を選択す
る前に、このレジスタを設定する必要があります。
SSP マスク レジスタ
SSP Mask (SSPMSK) レジスタは、I2C スレーブ モー
ドで、アドレス比較動作中に SSPSR レジスタに保
持される値のマスクとして使用できます。SSPMSK
レジスタの「0」ビットは、SSPSR レジスタの対応
するビットを「不定」にする効果があります。
SSP マスク レジスタは、次の期間アクティブです。
• 7ビット アドレス モード: A<7:1>のアドレス比較
• 10 ビット アドレス モード : A<7:0> のアドレス比
較のみ。アドレスの最初 ( 上位 ) のバイトの受信
時には、SSP マスクの効果はありません
リセット条件ではこのレジスタのビットはすべて
「1」にリセットされ、マスク値を書き込むまで標準
の SSP 動作には影響しません。
レジスタ 17-7:
SSPMSK: SSP MASK レジスタ
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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
ビット 7-1
MSK<7:1>: マスク ビット
1 = I2C アドレス一致を検出するため、受信したアドレス ビットを SSPADD<n> と比較
0 = I2C アドレス一致の検出に、受信アドレス ビット n を使用しない
ビット 0
MSK<0>: I2C スレーブ モード、10 ビット アドレスのマスク ビット (1)
I2C スレーブ モード、10 ビット アドレス (SSPM<3:0> = 0111):
1 = I2C アドレス一致を検出するため、受信したアドレス ビット 0 を SSPADD<0> と比較
0 = I2C アドレス一致の検出に、受信アドレス ビット 0 を使用しない
注 1:
MSK の 0 ビットは、10 ビット スレーブ モードでのみ使用します。その他すべてのモードでは、
このビットは影響しません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 211
PIC18F2XK20/4XK20
17.4.4
クロック ストレッチ
注:
9 番目のクロックの立ち下がりエッジの前
に、UA ビットをポーリングして SSPADD
レジスタを更新することで UA ビットをク
リ ア し た 場 合、ま た こ の エ ッ ジ の 前 に
SSPBUF レジスタを読み出さず BF ビット
をクリアしない場合は、CKP ビットは Low
としてアサートされません。BF ビットの
状態に基づくクロック ストレッチは、
デー
タ シーケンスでのみ発生します。アドレ
ス シーケンスでは発生しません。
7 ビットと 10 ビットの両方のスレーブ モードで、
送信シーケンス中の自動クロック ストレッチを実
装しています。
SSPCON2 レジスタの SEN ビットを使用して、受信
中のクロック ストレッチを有効にできます。SEN
ビットをセットすると、各データ受信シーケンスの
終了時点で SCL ピンが Low に保持されます。
17.4.4.1
7 ビット スレーブ受信モード
(SEN = 1) のクロックストレッチ
7 ビット スレーブ受信モードでは、BF ビットがセッ
トされている場合、ACK シーケンスの終了時点か
ら 9 番目のクロックの立ち下がりエッジで、
SSPCON1レジスタのCKPビットが自動クリアされ、
SCL 出力を強制的に Low に保持します。CKP をク
リアして「0」にすると、SCL ラインを Low にア
サートします。受信を継続するには、ユーザー ISR
内で CKP ビットをセットする必要があります。SCL
ラインを Low に保持することで、マスター デバイ
スが次のデータ転送シーケンスを開始する前に、
ユーザーが ISR をサービスし、SSPBUF の内容を読
み出す時間を確保できます。これにより、バッファ
のオーバーランを防止できます ( 図 17-13 を参照 )。
17.4.4.3
7 ビット スレーブ送信モードでは、BF ビットがクリ
アされている場合、9 番目のクロックの立ち下がり
エッジの後で CKP ビットをクリアすることで、ク
ロック ストレッチを実行します。
クロック ストレッ
チは、SEN ビットの状態には関係なく発生します。
送信を継続するには、ユーザー ISR で CKP ビット
をセットする必要があります。SCL ラインを Low
に保持することで、マスター デバイスが次のデー
タ転送シーケンスを開始する前に、ユーザーが ISR
をサービスし、SSPBUF の内容をロードする時間を
確保できます ( 図 17-9 を参照 )。
注 1:
9 番目のクロックの立ち下がりエッジよ
りも前に SSPBUF の内容を読み出すと、
BF ビットがクリアされるので、このた
め CKP ビットはクリアされず、クロッ
ク ストレッチは発生しません。
注 1:
2:
BF ビットの状態とは無関係に、ソフト
ウェアで CKP ビットをセットできます。
オーバーフロー条件を防ぐため、注意し
て、次の受信シーケンスの前に ISR の BF
ビットをクリアする必要があります。
2:
17.4.4.2
10 ビット スレーブ受信モード
(SEN = 1) のクロック ストレッチ
10 ビット スレーブ受信モードのアドレス シーケン
スでは、クロック ストレッチは自動的に実行され
ますが CKP はクリアされません。このシーケンス
中に、9 番目のクロックの後で UA ビットをセット
すると、クロック ストレッチが開始されます。UA
ビットがセットされるのは、10 ビット アドレスの
上位バイトを受信し、次に R/W ビットが「0」にク
リアされた 10 ビット アドレスの 2 番目のバイトを
受信した後です。クロック ラインは、SSPADD の
更新時に解放されます。クロック ストレッチは、7
ビット モードと同様に、各データ受信シーケンス
で発生します。
DS41303E_JP - ページ 212
7 ビット スレーブ送信モードの
クロック ストレッチ
17.4.4.4
9 番目のクロックの立ち下がりエッジよ
りも前に SSPBUF の内容をロードする
と、BF ビットがセットされるので、CKP
ビットはクリアされず、クロック スト
レッチは発生しません。
BF ビットの状態とは無関係に、ソフト
ウェアで CKP ビットをセットできます。
10 ビット スレーブ送信モードの
クロック ストレッチ
10 ビット スレーブ送信モードのクロック ストレッ
チは、10 ビット スレーブ受信モードと同様に、最
初の 2 つのアドレス シーケンスの期間中 UA ビット
の状態で制御します。最初の 2 つのアドレス シー
ケンスに続く 3 つ目のアドレス シーケンスには、10
ビット アドレスの上位ビット、および「1」にセッ
トされた R/W ビットがあります。3 つ目のアドレス
シーケンスの実行後は UA ビットはセットされず、
モジュールが送信モードに設定され、クロック ス
トレッチは 7 ビット スレーブ送信モードと同様に
BF フラグで制御されます ( 図 17-11 を参照 )。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.4.4.5
クロック同期と CKP ビット
CKP ビットをクリアすると、SCL 出力は強制的に
「0」になります。ただし、CKP ビットをクリアし
ても、SCL 出力が Low としてサンプリングされる
まで SCL 出力 Low はアサートされません。このた
め、外部 I2C マスター デバイスが SCL ラインをア
サートするまで、CKP ビットは SCL ラインをアサー
トしません。CKP ビットがセットされ、かつ I2C バ
スのその他すべてのデバイスが SCL をデアサート
するまで、SCL 出力は Low のままです。これによ
り、CKP ビットの書き込みにより SCL の最小 High
期間の要件を違反することを防止できます(図17-12
を参照 )。
図 17-12:
クロック同期タイミング
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
SDA
DX
DX – 1
SCL
CKP
Master device
asserts clock
Master device
deasserts clock
WR
SSPCON1
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 213
DS41303E_JP - ページ 214
Preliminary
CKP
SSPOV (SSPCON1<6>)
BF (SSPSTAT<0>)
(PIR1<3>)
SSPIF
1
SCL
S
A7
2
A6
3
4
A4
5
A3
6
A2
Receiving Address
A5
7
A1
8
9
ACK
R/W = 0
3
4
D4
5
D3
Receiving Data
D5
Cleared by software
2
D6
If BF is cleared
prior to the falling
edge of the 9th clock,
CKP will not be reset
to ‘0’ and no clock
stretching will occur
SSPBUF is read
1
D7
6
D2
7
D1
9
ACK
1
D7
BF is set after falling
edge of the 9th clock,
CKP is reset to ‘0’ and
clock stretching occurs
8
D0
3
4
D4
5
D3
Receiving Data
D5
CKP
written
to ‘1’ in
software
2
D6
Clock is held low until
CKP is set to ‘1’
6
D2
7
D1
8
D0
Bus master
terminates
transfer
P
SSPOV is set
because SSPBUF is
still full. ACK is not sent.
9
ACK
Clock is not held low
because ACK = 1
図 17-13:
SDA
Clock is not held low
because buffer full bit is
clear prior to falling edge
of 9th clock
PIC18F2XK20/4XK20
I2C™ スレーブ モードのタイミング、SEN = 1 ( 受信、7 ビット アドレス )
 2009 Microchip Technology Inc.
 2009 Microchip Technology Inc.
2
1
Preliminary
UA (SSPSTAT<1>)
SSPOV (SSPCON1<6>)
CKP
3
1
4
1
5
0
6
7
A9 A8
8
UA is set indicating that
the SSPADD needs to be
updated
SSPBUF is written with
contents of SSPSR
Cleared by software
BF (SSPSTAT<0>)
(PIR1<3>)
SSPIF
1
SCL
S
1
9
ACK
R/W = 0
A7
2
4
A4
5
A3
6
A2
Cleared by software
3
A5
7
A1
8
A0
注:
9 番目のクロックの立ち下が
りエッジの前にSSPADDレジ
スタを更新すると、UA には
影響せず、UA はセットのま
まになります。
UA is set indicating that
SSPADD needs to be
updated
Cleared by hardware when
SSPADD is updated with low
byte of address after falling edge
of ninth clock
Dummy read of SSPBUF
to clear BF flag
1
A6
Receive Second Byte of Address
9
ACK
2
4
5
6
7
注:
9
9 番目のクロックの立ち下がりエッジの
前に SSPADD レジスタを更新すると、
UA には影響せず、UA はセットのままに
なります。
Cleared by hardware when
SSPADD is updated with high
byte of address after falling edge
of ninth clock
8
ACK
1
4
5
6
7
8
9
ACK
Bus master
terminates
transfer
P
Clock is not held low
because ACK = 1
SSPOV is set
because SSPBUF is
still full. ACK is not sent.
D1 D0
Cleared by software
3
CKP written to ‘1’
by software
2
D3 D2
Receive Data Byte
D7 D6 D5 D4
Clock is held low until
CKP is set to ‘1’
D1 D0
Cleared by software
3
D3 D2
Dummy read of SSPBUF
to clear BF flag
1
D7 D6 D5 D4
Receive Data Byte
Clock is held low until
update of SSPADD has
taken place
図 17-14:
SDA
Receive First Byte of Address
Clock is held low until
update of SSPADD has
taken place
PIC18F2XK20/4XK20
I2C™ スレーブ モードのタイミング、SEN = 1 ( 受信、10 ビット アドレス )
DS41303E_JP - ページ 215
PIC18F2XK20/4XK20
17.4.5
一括呼び出しアドレスと一致した場合は、SSPSR の
内容が SSPBUF に転送され、BF フラグ ビット ( ビッ
ト 8) がセットされます。また、ビット 9 (ACK ビッ
ト ) の立ち下がりエッジで SSPIF 割り込みフラグ
ビットがセットされます。
一括呼び出しアドレスのサポート
2
I C バスのアドレス指定手順では、通常、スタート
条件の後の第 1 バイトによりどのデバイスを、マス
ターがアドレス指定するスレーブにするかが決ま
ります。例外は、すべてのデバイスをアドレス指定
する一括呼び出しアドレスです。このアドレスを使
用すると、理論的にはすべてのデバイスが ACK を
返します。
割り込みを使用するときには、SSPBUF の内容を読
み出して割り込みのソースを確認できます。読み出
した値を使用して、アドレスがデバイス固有のもの
か、一括呼び出しアドレスかを特定できます。
一括呼び出しアドレスは、I2C プロトコルの特殊用
途に予約されている 8 つのアドレスのうちの 1 つで
す。アドレスはすべて「0」で、R/W = 0 です。
10 ビット モードでは、アドレスの後半の一致を確
認して SSPSTAT レジスタの UA ビットをセットす
るために、SSPADD を更新する必要があります。
GCENビットがセットされているときに一括呼び出
しアドレスがサンプリングされたが、スレーブが 10
ビット アドレス モードに設定されている場合は、
アドレスの後半は不要となり、UA ビットはセット
されずスレーブは ACK 応答後にデータ受信を開始
します ( 図 17-15)。
一 括 呼 び 出 し ア ド レ ス が 認 識 さ れ る の は、
SSPCON2 の GCEN ビットがセットされているとき
です。スタート ビットの検出後、8 ビットが SSPSR
にシフト入力され、アドレスが SSPADD と比較さ
れます。また、アドレスは、一括呼び出しアドレス
とも比較され、ハードウェア内に固定されます。
図 17-15:
スレーブ モードの一括呼び出しアドレスのシーケンス
(7 ビットまたは 10 ビットのアドレス モード )
Address is compared to General Call Address
after ACK, set interrupt
R/W = 0
ACK D7
General Call Address
SDA
SCL
S
1
2
3
4
5
6
7
8
9
1
Receiving Data
ACK
D6
D5
D4
D3
D2
D1
D0
2
3
4
5
6
7
8
9
SSPIF
BF (SSPSTAT<0>)
Cleared by software
SSPBUF is read
SSPOV (SSPCON1<6>)
‘0’
GCEN (SSPCON2<7>)
‘1’
DS41303E_JP - ページ 216
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.4.6
マスター モード
注:
マスター モードを有効にするには、SSPCON1 の
SSPMビットを適切にセット / クリアし、SSPEN ビッ
トをセットします。マスター モードでは、SCL と
SDA のラインを MSSP ハードウェアで操作します。
マスター モードの動作は、スタートとストップの
条件の検出時に割り込みを生成してサポートしま
す。ストップ (P) とスタート (S) のビットは、リセッ
ト時、または MSSP モジュールを無効にしたときに
クリアされます。I 2C バスの制御は、P ビットがセッ
トされているとき、または S ビットと P ビットの両
方がクリアされている、バスのアイドル時に実行で
きます。
次のイベントで、SSP 割り込みフラグ ビット SSPIF
がセットされます ( 有効な場合は SSP 割り込みが
発生 )。
•
•
•
•
•
ファームウェア制御マスター モードでは、スタート
ビットとストップ ビットの条件に基づいて、ユー
ザー コードが I 2C バスの動作をすべて実行します。
マスター モードを有効にすると、次の 6 つの動作
ができます。
3.
4.
5.
6.
スタート条件
ストップ条件
データ転送バイトの送信 / 受信
ACK 送信
リピート スタート
SDA と SCL にスタート条件をアサートする
SDA と SCL にリピート スタート条件をアサー
トする
SSPBUF レジスタへの書き込みによりデータ /
アドレスの送信を開始する
I2C ポートをデータ受信に設定する
受信したデータ バイトの最後で肯定応答条件
を生成する
SDA と SCL にストップ条件を生成する
図 17-16:
MSSP のブロック図 (I2C™ マスター モード )
SSPM<3:0>
SSPADD<6:0>
Internal
Data Bus
Read
Write
SSPBUF
SDA
Baud
Rate
Generator
Shift
Clock
SDA In
SCL In
Bus Collision
 2009 Microchip Technology Inc.
MSb
LSb
Start bit, Stop bit,
Acknowledge
Generate
Start bit Detect
Stop bit Detect
Write Collision Detect
Clock Arbitration
State Counter for
end of XMIT/RCV
Preliminary
Clock Cntl
SCL
Receive Enable
SSPSR
Clock Arbitrate/WCOL Detect
(hold off clock source)
1.
2.
MSSP モジュールを I2C マスター モードに
設定した場合、イベントをキューに入れる
ことはできません。例えば、スタート条件
を開始して、そのスタート条件が完了する
前にSSPBUFレジスタに書き込みを行って
送信を開始することはできません。この場
合、SSPBUF には書き込まれず、そのこと
を示す WCOL ビットがセットされます。
Set/Reset, S, P, WCOL (SSPSTAT)
Set SSPIF, BCLIF
Reset ACKSTAT, PEN (SSPCON2)
DS41303E_JP - ページ 217
PIC18F2XK20/4XK20
17.4.6.1
I2C マスター モードの動作
代表的な送信シーケンスは次のとおりです。
マスター デバイスが、シリアル クロック パルス、
およびスタートとストップの条件をすべて生成し
ます。転送は、ストップ条件、またはリピート ス
タート条件で終了します。リピート スタート条件
では次のシリアル転送も開始されるので、I2C バス
は解放されません。
マスター送信モードでは、シリアル データは SDA
から、シリアル クロックは SCL から出力されます。
送信する最初のバイトは、受信デバイスのスレーブ
アドレス (7 ビット )、および読み出し / 書き込み
(R/W) ビットを持ちます。この場合、R/W ビットは
「0」です。一度に 8 ビットのシリアル データが送
信されます。各バイトの送信後、ACK ビットを受
信します。スタート条件とストップ条件は、シリア
ル転送の開始と終了を示す出力です。
マスター受信モードでは、送信する最初のバイト
は、送信デバイスのスレーブ アドレス (7 ビット )、
および R/W ビットを持ちます。この場合、R/W ビッ
トは「1」です。したがって、送信する最初のバイ
トには、7 ビットのスレーブ アドレスの後に受信
ビットを示す「1」があります。シリアル データは
SDA から受信し、SCL はシリアル クロックを出力
します。一度に 8 ビットのシリアル データが受信
されます。1 バイト受信するたびに、ACK ビットを
送信します。スタート条件とストップ条件は、送信
の開始と終了を示します。
SPI モード動作用のボーレート ジェネレータを使用
して、I2C が 100 kHz、400 kHz、または 1 MHz で動
作するための SCL クロック周波数を設定します。詳
細は、17.4.7 項「ボーレート」を参照してください。
DS41303E_JP - ページ 218
1.
ユーザーが SSPCON2 レジスタの SEN ビットを
セットして、スタート条件を生成する
2. SSPIF がセットされる。MSSP モジュールは、
他の動作を実行する前に必要なスタート期間
だけ待機する
3. ユーザーが送信するスレーブ アドレスを
SSPBUF にロードする
4. アドレスを SDA ピンからシフト出力して、8
ビットすべてを送信する
5. MSSP モジュールがスレーブ デバイスからの
ACK ビットをシフト入力し、SSPCON2 レジス
タの ACKSTAT ビットに値を書き込む
6. MSSP モジュールが SSPIF ビットをセットし、
9 番目のクロック サイクルの最後で割り込みを
生成する
7. ユーザーが SSPBUF に 8 ビット データをロー
ドする
8. データを SDA ピンからシフト出力して、8 ビッ
トすべてを送信する
9. MSSP モジュールがスレーブ デバイスからの
ACK ビットをシフト入力し、SSPCON2 レジス
タの ACKSTAT ビットに値を書き込む
10. MSSP モジュールが SSPIF ビットをセットし、
9 番目のクロック サイクルの最後で割り込みを
生成する
11. ユーザーが SSPCON2 レジスタの PEN ビットを
セットして、ストップ条件を生成する
12. ストップ条件が完了すると割り込みを生成する
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.4.7
ボーレート
2
I C マスター モードでは、Baud Rate Generator (BRG:
ボーレート ジェネレータ ) のリロード値は SSPADD
レジスタにあります ( 図 17-17)。SSPBUF への書き
込みが発生すると、ボーレート ジェネレータはカ
ウントを自動的に開始します。BRG は「0」までカ
ウント ダウンし、次のリロードが発生するまで停
止します。Q2 と Q4 のクロックでは、命令サイクル
(TCY) ごとに BRG カウントが 2 ずつ減少します。I2C
マスター モードでは、BRG は自動的にリロードさ
れます。
SCL の 1/2 周期は、
「[(SSPADD+1) 2]/FOSC」
です。したがって、
「SSPADD = (FCY/FSCL) -1」とな
ります。
図 17-17:
指定した動作が完了すると ( つまり、最後のデータ
ビットの後に ACK を送信すると )、内部クロックは
カウントを自動的に停止し、SCL ピンは直前の状態
のままになります。
表 17-3 に、命令サイクルと SSPADD にロードされ
る BRG 値に基づくクロック速度を示します。
ボーレートを生成するための SSPADD の最小値は
0x03 です。
ボーレート ジェネレータのブロック図
SSPM<3:0>
SSPM<3:0>
Reload
SCL
Control
CLKOUT
表 17-3:
注 1:
SSPADD<7:0>
Reload
BRG Down Counter
FOSC/2
I2C™ のクロック 速度と BRG
FOSC
FCY
BRG Value
FSCL
(2 Rollovers of BRG)
64 MHz
16 MHz
27h
400 kHz(1)
64 MHz
16 MHz
32h
313.7 kHz
64 MHz
16 MHz
3Fh
250 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
09h
100 kHz
I2C インターフェースは 400 kHz の I2C の仕様 (100 kHz を超えるクロック速度に適用される ) のすべて
を満たしてはいませんが、高いクロック速度が必要なアプリケーションで注意を払って使用できます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 219
PIC18F2XK20/4XK20
17.4.7.1
クロック調停
受信、送信、またはリピート スタート / ストップ条
件の間にマスターが SCL ピンをデアサートすると
(SCL が High に上昇可 )、クロック調停が発生しま
す。SCL ピンで High に上昇可能になると、ボーレー
ト ジェネレータ (BRG) は、SCL ピンが実際に High
としてサンプリングされるまでカウントを停止し
ます。SCL ピンが High としてサンプリングされる
と、ボーレート ジェネレータに SSPADD<6:0> の内
容がリロードされ、カウントを開始します。これに
より、クロックが外部デバイスにより Low に保持
されるイベントで、SCL の High 期間を常に、1 以
上の BRG ロールオーバー カウント数にできます
( 図 17-18)。
図 17-18:
クロック調停がある場合のボーレート ジェネレータのタイミング
SDA
DX
DX – 1
SCL deasserted but slave holds
SCL low (clock arbitration)
SCL allowed to transition high
SCL
BRG decrements on
Q2 and Q4 cycles
BRG
Value
03h
02h
01h
00h (hold off)
03h
02h
SCL is sampled high, reload takes
place and BRG starts its count
BRG
Reload
DS41303E_JP - ページ 220
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.4.8
I2C マスター モードのスタート条件の
タイミング
注:
スタート条件を開始するには、SSPCON2 レジスタ
のスタート イネーブル ビットSENをセットします。
SDA ピンと SCL ピンが High としてサンプリングさ
れると、ボーレート ジェネレータに SSPADD<6:0>
の内容がリロードされ、カウントを開始します。
ボーレート ジェネレータがタイム アウトしている
とき (TBRG) に SDA ピンと SCL ピンの両方が High
としてサンプリングされると、SDA ピンが Low に
駆動されます。SCL ピンが High のときに SDA ピン
を Low に駆動することはスタート条件であり、
SSPSTAT1 レジスタの S ビットがセットされます。
その後、ボーレート ジェネレータに SSPADD<6:0>
の内容がリロードされ、カウントを再開します。
ボーレート ジェネレータがタイム アウトすると
(TBRG)、SSPCON2 レジスタの SEN ビットがハード
ウェアで自動クリアされます。ボーレート ジェネ
レータは一時停止し、SDA ラインが Low に保持さ
れ、スタート条件が完了します。
図 17-19:
スタート条件の開始時に SDA ピンと SCL
ピンが Low としてサンプリングされる場
合、またはスタート条件の期間に SDA ラ
インを Low に駆動する前に SCL ラインが
Low としてサンプリングされる場合、バス
衝突が発生し、バス衝突割り込みフラグ
BCLIF がセットされます。スタート条件は
中止され、I2C モジュールはアイドル状態
にリセットされます。
17.4.8.1
WCOL ステータス フラグ
スタート シーケンスの実行中に SSPBUF に書き込
みを試行すると、WCOL がセットされ、バッファの
内容は変化しません ( 書き込みは発生しない )。
注:
イベントをキューに入れることはできな
い の で、ス タ ー ト 条 件 が 完 了 す る ま で
SPCON2 の下位 5 ビットの書き込みは無効
です。
最初のスタート ビットのタイミング
Write to SEN bit occurs here
Set S bit (SSPSTAT<3>)
SDA = 1,
SCL = 1
TBRG
At completion of Start bit,
hardware clears SEN bit
and sets SSPIF bit
TBRG
Write to SSPBUF occurs here
1st bit
SDA
2nd bit
TBRG
SCL
TBRG
S
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 221
PIC18F2XK20/4XK20
17.4.9
I2C マスター モードのリピート
スタート条件のタイミング
注 1:
リピート スタート条件は、SSPCON2 レジスタの
RSEN ビットが High にプログラムされ、かつ I2C ロ
ジック モジュールがアイドル状態のときに発生し
ます。RSEN ビットがセットされると、SCL ピンが
Low にアサートされます。SCL ピンが Low として
サンプリングされると、ボーレート ジェネレータ
に SSPADD<5:0> の内容がロードされ、カウントを
開始します。ボーレート ジェネレータの 1 カウン
ト (TBRG) 以内に SDA ピンが解放されます (High に
なる )。ボーレート ジェネレータのタイム アウト時
に SDA が High としてサンプリングされると、SCL
ピンがデアサートされます (High になる )。SCL ピ
ンが High としてサンプリングされると、ボーレー
ト ジェネレータに SSPADD<6:0> の内容がリロード
され、カウントを開始します。1 TBRG の期間、SDA
と SCL は High としてサンプリングされる必要があ
ります。次に、SCL が High である 1 TBRG の間に
SDA ピン (SDA = 0) がアサートされます。次に、
SSPCON2 レジスタの RSEN ビットが自動クリアさ
れます。ボーレート ジェネレータはリロードされ
ず、SDA ピンは Low に保持されます。SDA ピンと
SCL ピンでスタート条件が検出されると、SSPSTAT
レジスタの S ビットがセットされます。SSPIF ビッ
トは、ボーレート ジェネレータがタイム アウトす
るまでセットされません。
図 17-20:
他のイベントの実行中に RSEN をプログ
ラムしても、プログラム内容は無効です。
2:
リピート スタート条件では、バス衝突は
次の場合に発生します。
• SCL が Low から High になるときに
SDAがLowとしてサンプリングされた
• SDAがLowにアサートされる前にSCL
が Low になる。これは、別のマスター
によるデータ「1」の送信試行を示す
場合があります
SSPIF ビットがセットされた直後に、7 ビット モー
ドでは 7 ビット アドレス、10 ビット モードではデ
フォルトの最初のアドレスを SSPBUF に書き込むこ
とができます。最初の 8 ビットを送信し ACK を受
信した後、残りの 8 ビット アドレス (10 ビット モー
ド )、または 8 ビット データ (7 ビット モード ) を送
信できます。
17.4.9.1
WCOL ステータス フラグ
リピート スタート シーケンスの実行中に SSPBUF
に書き込みを試行すると、WCOL がセットされ、
バッファの内容は変化しません ( 書き込みは発生し
ない )。
注:
イベントをキューに入れることはできな
いので、リピート スタート条件が完了す
るまで SPCON2 の下位 5 ビットの書き込
みは無効です。
リピート スタート条件の波形
Write to SSPCON2
occurs here.
SDA = 1,
SCL (no change).
S bit set by hardware
SDA = 1,
SCL = 1
TBRG
At completion of Start bit,
hardware clears RSEN bit
and sets SSPIF
TBRG
TBRG
1st bit
SDA
RSEN bit set by hardware
on falling edge of ninth clock,
end of Xmit
Write to SSPBUF occurs here
TBRG
SCL
TBRG
Sr = Repeated Start
DS41303E_JP - ページ 222
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.4.10
I2C マスター モードの送信
17.4.10.2
1 データ バイト、7 ビット アドレス、または 10 ビッ
ト アドレスの後半を送信するには、その値を
SSPBUF レジスタに書き込みます。書き込み動作に
よりバッファ フル フラグ ビット BF がセットされ、
ボーレート ジェネレータのカウント開始と次の送
信が可能になります。SCL の立ち下がりエッジのア
サート後、アドレス / データの各ビットが SDA ピ
ンにシフト出力されます ( データ保持時間の仕様パ
ラメータ 106 を参照 )。ボーレート ジェネレータの
1 ロールオーバー カウント (TBRG) の間、
SCL が Low
に保持されます。SCL が High に解放される前に、
データが有効である必要があります ( データ設定時
間の仕様パラメータ 107 を参照 )。SCL ピンが High
に解放されると、1 TBRG の期間 High に保持されま
す。その期間、および SCL の次の立ち下がりエッ
ジの後の保持期間、SDA ピンのデータが安定して
いる必要があります。8 ビット目のシフト出力後 (8
クロック目の立ち下がりエッジ )、BF フラグがクリ
アされ、マスターが SDA を解放します。これによ
りスレーブ デバイスに対するアドレス指定が可能
になり、アドレスが一致した場合、またはデータを
正常に受信した場合、スレーブ デバイスは 9 ビッ
ト目の期間に ACK ビットを応答できます。9 クロッ
ク目の立ち下がりエッジで、ACK ステータスが
ACKDT ビットに書き込まれます。マスターが ACK
を受信すると、肯定応答ステータス ビット
ACKSTAT がクリアされます。受信しない場合は、
ACKSTAT ビットはセットされたままです。9 クロッ
ク目の後に SSPIF ビットがセットされ、次のデータ
バイトが SSPBUF にロードされるまでマスター ク
ロック ( ボーレート ジェネレータ ) は一時停止しま
す。SCL は Low、SDA は直前の状態のままになり
ます ( 図 17-21 を参照 )。
SSPBUF への書き込み後、アドレスの全 7 ビットお
よび R/W ビットの出力が完了するまで、SCL の立
ち下がりエッジでアドレスの各ビットがシフト出
力されます。8 クロック目の立ち下がりエッジで、
マスターは SDA ピンをデアサートし、スレーブを
ACK 応答可能にします。9 クロック目の立ち下がり
エッジで、マスターは SDA ピンをサンプリングし、
スレーブがアドレスを認識したかどうかを調べま
す。ACK ビットのステータスが、SSPCON2 レジス
タの ACKSTAT ステータス ビットにロードされま
す。アドレス送信の 9 クロック目の立ち下がりエッ
ジの後、SSPIF がセットされ、BF フラグがクリア
されます。SSPBUF への次の書き込みが発生するま
でボーレート ジェネレータはオフになり、SCL は
Low に保持され、SDA は変化可能になります。
17.4.10.1
BF ステータス フラグ
送信モードでは、SSPSTAT レジスタの BF ビットは、
CPU が SSPBUF に書き込むとセットされます。全 8
ビットがシフト出力されるとクリアされます。
 2009 Microchip Technology Inc.
WCOL ステータス フラグ
送信の実行中 (SSPSR がデータ バイトをシフト出力
中 ) に SSPBUF に書き込みを試行すると、WCOL が
セットされ、バッファの内容は変化しません ( 書き
込みは発生しない )。
WCOLをソフトウェアでクリアする必要があります。
17.4.10.3
ACKSTAT ステータス フラグ
送信モードでは、SSPCON2 レジスタの ACKSTAT
ビットは、スレーブが肯定応答を送信するとクリア
されます (ACK = 0)。スレーブが肯定応答しないと
セットされます (ACK = 1)。スレーブは、それ自体
のアドレスを認識したとき ( 一括呼び出しを含む )、
およびデータを受信したときに肯定応答を送信し
ます。
I2C マスター モードの受信
17.4.11
マスター モードの受信を有効にするには、
SSPCON2
レジスタの受信イネーブル ビットRCENをプログラ
ムします。
注:
RCEN ビットをセットするには、MSSP モ
ジュールがアイドル状態である必要があ
ります。それ以外の状態では、RCEN ビッ
トは無視されます。
ボーレート ジェネレータがカウントを開始し、各
ロールオーバーで SCL ピンの状態が変化し (High か
ら Low/Low から High)、データが SSPSR にシフト入
力されます。8 クロック目の立ち下がりエッジの後、
受信イネーブル フラグが自動クリアされ、SSPSR の
内容が SSPBUF にロードされます。BF フラグ ビッ
トがセットされ、SSPIF フラグ ビットがセットされ
ます。ボーレート ジェネレータのカウントが一時停
止され、SCL が Low に保持されます。これで MSSP
がアイドル状態になり、次のコマンドを待ちます。
CPU がバッファを読み出すと、BF フラグ ビットが
自動クリアされます。その後、SSPCON2 レジスタ
の肯定応答シーケンス イネーブル ビットACKENを
セットすることで、受信後に肯定応答ビットを送信
できます。
17.4.11.1
BF ステータス フラグ
受信動作では、アドレスまたはデータ バイトが
SSPSR から SSPBUF にロードされると、BF ビット
がセットされます。SSPBUF レジスタが読み出され
ると、クリアされます。
17.4.11.2
SSPOV ステータス フラグ
受信動作では、BF フラグ ビットが前の受信で既に
セットされているときに SSPSR に 8 ビットを受信
すると、SSPOV ビットがセットされます。
Preliminary
DS41303E_JP - ページ 223
DS41303E_JP - ページ 224
S
Preliminary
R/W
PEN
SEN
BF (SSPSTAT<0>)
SSPIF
SCL
SDA
A6
A5
A4
A3
A2
A1
3
4
5
Cleared by software
2
6
7
8
9
D7
1
SCL held low
while CPU
responds to SSPIF
ACK = 0
After Start condition, SEN cleared by hardware
SSPBUF written
1
SSPBUF written with 7-bit address and R/W
start transmit
A7
R/W = 0
3
D5
4
D4
5
D3
6
D2
7
D1
8
D0
SSPBUF is written by software
Cleared by software service routine
from SSP interrupt
2
D6
Transmitting Data or Second Half
of 10-bit Address
P
Cleared by software
9
ACK
図 17-21:
Transmit Address to Slave
From slave, clear ACKSTAT bit SSPCON2<6>
ACKSTAT in
SSPCON2 = 1
17.4.11.3
SEN = 0
Write SSPCON2<0> SEN = 1
Start condition begins
PIC18F2XK20/4XK20
WCOL ステータス フラグ
受信の実行中 (SSPSR がデータ バイトをシフト入力
中 ) に SSPBUF に書き込みを試行すると、WCOL が
セットされ、バッファの内容は変化しません ( 書き
込みは発生しない )。
I 2C™ マスター モードの波形 ( 送信、7 ビットまたは 10 ビットのアドレス )
 2009 Microchip Technology Inc.
 2009 Microchip Technology Inc.
S
Preliminary
ACKEN
SSPOV
BF
(SSPSTAT<0>)
SDA = 0, SCL = 1
while CPU
responds to SSPIF
SSPIF
SCL
SDA
1
A7
2
4
5
6
Cleared by software
3
A6 A5 A4 A3 A2
Transmit Address to Slave
7
A1
8
9
R/W = 0
ACK
ACK from Slave
2
3
5
6
7
8
D0
9
ACK
2
3
4
5
6
7
Cleared by software
Set SSPIF interrupt
at end of Acknowledge
sequence
Data shifted in on falling edge of CLK
1
D7 D6 D5 D4 D3 D2 D1
Cleared in
software
Set SSPIF at end
of receive
9
ACK is not sent
ACK
P
Set SSPIF interrupt
at end of Acknowledge sequence
Bus master
terminates
transfer
Set P bit
(SSPSTAT<4>)
and SSPIF
PEN bit = 1
written here
SSPOV is set because
SSPBUF is still full
8
D0
RCEN cleared
automatically
Set ACKEN, start Acknowledge sequence
SDA = ACKDT = 1
Receiving Data from Slave
RCEN = 1, start
next receive
ACK from Master
SDA = ACKDT = 0
Last bit is shifted into SSPSR and
contents are unloaded into SSPBUF
Cleared by software
Set SSPIF interrupt
at end of receive
4
Cleared by software
1
D7 D6 D5 D4 D3 D2 D1
Receiving Data from Slave
RCEN cleared
automatically
Master configured as a receiver
by programming SSPCON2<3> (RCEN = 1)
図 17-22:
SEN = 0
Write to SSPBUF occurs here,
start XMIT
Write to SSPCON2<0> (SEN = 1),
begin Start condition
Write to SSPCON2<4>
to start Acknowledge sequence
SDA = ACKDT (SSPCON2<5>) = 0
PIC18F2XK20/4XK20
I 2C™ マスター モードの波形 ( 受信、7 ビット アドレス )
DS41303E_JP - ページ 225
PIC18F2XK20/4XK20
17.4.12
17.4.13
肯定応答シーケンスのタイミング
ストップ条件のタイミング
肯定応答シーケンスを有効にするには、
SSPCON2 レ
ジスタの肯定応答シーケンス イネーブル ビット
ACKEN をセットします。このビットをセットする
と、SCL ピンが Low に駆動され、肯定応答データ
ビットが SDA ピンに現れます。肯定応答を生成す
るには、ACKDT ビットをクリアします。肯定応答
を生成しない場合は、肯定応答シーケンスの開始前
に ACKDT ビットをセットする必要があります。こ
れによりボーレート ジェネレータが 1 ロールオー
バー期間 (1 TBRG) カウントし、SCL がデアサート
(High に駆動 ) されます。SCL ピンが High としてサ
ンプリングされると ( クロック調停 )、ボーレート
ジェネレータが 1 TBRG の期間カウントします。その
後、
SCL ピンが Low に駆動されます。
その後、
ACKEN
ビットが自動クリアされ、ボーレート ジェネレータ
がオフになり、MSSP モジュールがアイドル モード
になります ( 図 17-23)。
SSPCON2レジスタのストップ シーケンス イネーブ
ル ビット PEN をセットすることで、送受信の終了
時に SDA ピンにストップ ビットがアサートされま
す。送受信の終了時に 9 クロック目の立ち下がり
エッジの後、SCL ラインが Low に保持されます。
PEN ビットがセットされると、マスターが SDA ラ
インを Low にアサートします。SDA ラインが Low
としてサンプリングされると、ボーレート ジェネ
レータがリロードされ、「0」までカウント ダウン
します。ボーレート ジェネレータがタイム アウト
すると、SCL ピンが High に駆動され、1 TBRG ( ボー
レート ジェネレータのロールオーバー カウント )
後、SDA ピンがデアサートされます。SCL が High
のときに SDA ピンが High としてサンプリングされ
ると、SSPSTAT レジスタの P ビットがセットされ
ます。1 TBRG 後、PEN ビットがクリアされ、SSPIF
ビットがセットされます ( 図 17-24)。
17.4.12.1
17.4.13.1
WCOL ステータス フラグ
ストップ シーケンスの実行中に SSPBUF に書き込み
を試行すると、WCOL ビットがセットされ、バッファ
の内容は変化しません ( 書き込みは発生しない )。
肯定応答シーケンスの実行中にSSPBUFに書き込み
を試行すると、WCOL がセットされ、バッファの内
容は変化しません ( 書き込みは発生しない )。
図 17-23:
WCOL ステータス フラグ
肯定応答シーケンスの波形
Acknowledge sequence starts here,
write to SSPCON2
ACKEN = 1, ACKDT = 0
ACKEN automatically cleared
TBRG
TBRG
SDA
ACK
D0
SCL
8
9
SSPIF
SSPIF set at
the end of receive
Cleared in
software
SSPIF set at the end
of Acknowledge sequence
Cleared in
software
注 : TBRG = ボーレート ジェネレータの 1 周期
図 17-24:
送信 / 受信モードのストップ条件
SCL = 1 for TBRG, followed by SDA = 1 for TBRG
after SDA sampled high. P bit (SSPSTAT<4>) is set.
Write to SSPCON2,
set PEN
PEN bit (SSPCON2<2>) is cleared by
hardware and the SSPIF bit is set
Falling edge of
9th clock
TBRG
SCL
SDA
ACK
P
TBRG
TBRG
TBRG
SCL brought high after TBRG
SDA asserted low before rising edge of clock
to setup Stop condition
注 : TBRG = ボーレート ジェネレータの 1 周期
DS41303E_JP - ページ 226
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.4.14
17.4.17
スリープ動作
2
スリープ モードのI Cモジュールはアドレスやデー
タを受信でき、アドレス一致時または 1 バイト転送
の発生時にプロセッサがスリープ モードからウェ
イクします (MSSP 割り込みが有効な場合 )。
17.4.15
マルチマスター モードのサポートは、バス調停に
より実現されます。マスターがアドレス / データ
ビットを SDA ピンに出力するとき、別のマスター
が「0」をアサートしている間に、マスターが SDA
に「1」を出力して SDA を High にしようとすると
調停が実行されます。SCL ピンが High になるとき
には、データは安定している必要があります。SDA
ピンに予測されるデータが「1」のときに、SDA ピ
ンでサンプリングされたデータが「0」の場合、バ
ス衝突が発生しています。これによりマスターはバ
ス衝突割り込みフラグ BCLIF をセットし、I2C ポー
トをアイドル状態にリセットします ( 図 17-25)。
リセットの影響
リセットにより MSSP モジュールが無効になり、現
在の転送を中止します。
17.4.16
マルチマスター モード
マルチマスター モードでは、スタート条件および
ストップ条件の検出時の割り込み生成によりどの
バスが空いているかを特定できます。ストップ (P)
とスタート (S) のビットは、リセット時、または
MSSP モジュールを無効にしたときにクリアされま
す。I 2C バスの制御は、SSPSTAT レジスタの P ビッ
トがセットされているとき、または S ビットと P
ビットの両方がクリアされている、バスのアイドル
時に実行できます。SSP 割り込みを有効にすると、
バスがビジーのときにストップ条件が発生した場
合に割り込みが生成されます。
送信の実行中にバス衝突が発生すると、送信が停止
し、BF フラグがクリアされます。SDA と SCL のラ
インがデアサートされ、SSPBUF が書き込み可能にな
ります。ユーザーがバス衝突割り込みサービス ルー
チンを実行し、かつ I2C バスが空いている場合は、ス
タート条件をアサートして通信を再開できます。
スタート、リピート スタート、ストップ、または肯
定応答の条件の実行中にバス衝突が発生した場合
は、条件が中止され、SDA と SCL のラインがデア
サートされます。また、SSPCON2 レジスタの対応
する制御ビットがクリアされます。ユーザーがバス
衝突割り込みサービス ルーチンを実行し、かつ I2C
バスが空いている場合は、スタート条件をアサート
して通信を再開できます。
マルチマスター動作では、調停用に SDA ラインを
モニタして、信号レベルが予測した出力レベルかど
うかをチェックする必要があります。このチェック
はハードウェアで実行され、結果が BCLIF ビット
に設定されます。
マスターは、SDA ピンと SCL ピンのモニタを継続し
ます。ストップ条件が発生すると、SSPIF ビットが
セットされます。
調停が失われる可能性がある状態は、次のとおり
です。
•
•
•
•
•
アドレス転送
データ転送
スタート条件
リピート スタート条件
肯定応答条件
図 17-25:
マルチマスター通信、バス衝突、
およびバス調停
SSPBUF への書き込みが行われると、バス衝突の発生
時にどの位置で送信が停止したかには関係なく、最
初のデータ ビットからデータ送信が開始されます。
マルチマスター モードでは、スタート条件およびス
トップ条件の検出時の割り込み生成によりどのバ
スが空いているかを特定できます。I2C バスの制御
は、SSPSTAT レジスタの P ビットがセットされてい
るとき、または S ビットと P ビットの両方がクリア
されている、バスのアイドル時に実行できます。
送信と肯定応答のバス衝突のタイミング
Data changes
while SCL = 0
SDA line pulled low
by another source
SDA released
by master
Sample SDA. While SCL is high,
data doesn’t match what is driven
by the master.
Bus collision has occurred.
SDA
SCL
Set bus collision
interrupt (BCLIF)
BCLIF
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 227
PIC18F2XK20/4XK20
17.4.17.1
スタート条件時のバス衝突
スタート条件時には、次の場合にバス衝突が発生し
ます。
a)
b)
スタート条件の開始時に SDA または SCL が
Low としてサンプリングされる ( 図 17-26)
SDA が Low にアサートされる前に SCL が
Low としてサンプリングされる ( 図 17-27)
スタート条件時に、SDA ピンと SCL ピンの両方が
モニタされている
SDA ピンが既に Low の場合、または SCL ピンが既
に Low の場合、次のすべてが実行されます。
• スタート条件が中止される
• BCLIF フラグがセットされる
• MSSP モジュールがアイドル状態にリセットさ
れる ( 図 17-26)
このカウント中に SDA ピンが Low としてサンプリ
ングされると、BRG がリセットされ、SDA ライン
が早期にアサートされます ( 図 17-28)。ただし、
SDA
ピンで「1」がサンプリングされる場合、BRG のカ
ウント終了時に SDA ピンが Low としてアサートさ
れます。その後ボーレート ジェネレータがリロー
ドされ、「0」までカウント ダウンします。この期
間に SCL ピンが「0」としてサンプリングされると、
バス衝突は発生しません。BRG カウントの終了時
に、SCL ピンが Low にアサートされます。
注:
スタート条件は、SDA ピンと SCL ピンのデアサー
トから開始されます。SDA ピンが High としてサン
プリングされると、ボーレート ジェネレータに
SSPADD<6:0> の内容がロードされ、
「0」までカウ
ント ダウンします。SDA ピンが High のときに SCL
ピンが Low としてサンプリングされると、バス衝
突が発生します。これは、スタート条件時に別のマ
スターがデータ「1」を駆動しようとしていると見
なされるからです。
図 17-26:
スタート条件時にバス衝突が問題となら
ない理由は、同時に 2 つのバス マスター
がスタート条件をアサートできないから
です。このため、一方のマスターが常に、
他方のマスターよりも前に SDA をアサー
トします。2 つのマスターはスタート条件
の後、最初のアドレスを調停できる必要が
あるため、この条件ではバス衝突は発生し
ません。アドレスが同一の場合、調停によ
りデータ部分、リピート スタート条件、ま
たはストップ条件を継続できる必要があ
ります。
スタート条件時のバス衝突 (SDA のみ )
SDA goes low before the SEN bit is set.
Set BCLIF,
S bit and SSPIF set because
SDA = 0, SCL = 1.
SDA
SCL
Set SEN, enable Start
condition if SDA = 1, SCL = 1
SEN cleared automatically because of bus collision.
SSP module reset into Idle state.
SEN
BCLIF
SDA sampled low before
Start condition. Set BCLIF.
S bit and SSPIF set because
SDA = 0, SCL = 1.
SSPIF and BCLIF are
cleared by software
S
SSPIF
SSPIF and BCLIF are
cleared by software
DS41303E_JP - ページ 228
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 17-27:
スタート条件時のバス衝突 (SCL = 0)
SDA = 0, SCL = 1
TBRG
TBRG
SDA
Set SEN, enable Start
sequence if SDA = 1, SCL = 1
SCL
SCL = 0 before SDA = 0,
bus collision occurs. Set BCLIF.
SEN
SCL = 0 before BRG time-out,
bus collision occurs. Set BCLIF.
BCLIF
Interrupt cleared
by software
図 17-28:
S
‘0’
‘0’
SSPIF
‘0’
‘0’
スタート条件時の SDA の調停による BRG のリセット
SDA = 0, SCL = 1
Set S
Less than TBRG
SDA
Set SSPIF
TBRG
SDA pulled low by other master.
Reset BRG and assert SDA.
SCL
S
SCL pulled low after BRG
time-out
SEN
BCLIF
Set SEN, enable START
sequence if SDA = 1, SCL = 1
‘0’
S
SSPIF
SDA = 0, SCL = 1,
set SSPIF
 2009 Microchip Technology Inc.
Preliminary
Interrupts cleared
by software
DS41303E_JP - ページ 229
PIC18F2XK20/4XK20
17.4.17.2
SDA が Low の場合、衝突が発生しています ( 別のマ
スターがデータ「0」の送信を試行、図 17-29)。SDA
が High としてサンプリングされると、
BRG がリロー
ドされ、カウントを開始します。BRG がタイム ア
ウトする前に SDA が High から Low になる場合、2
つのマスターは同時に SDA をアサートできないの
で、バス衝突は発生しません。
リピート スタート条件時のバス衝突
リピート スタート条件時には、次の場合にバス衝
突が発生します。
a)
b)
SCL が Low から High になるときに SDA が
Low としてサンプリングされた
SDA が Low としてアサートされる前に、SCL
が Low になる。これは、別のマスターによる
データ「1」の送信試行を示します
BRG がタイム アウトする前に SCL が High から Low
になり、SDA をまだアサートしていない場合は、バ
ス衝突が発生します。この場合、リピート スター
ト条件時に別のマスターがデータ「1」の送信を試
行しています ( 図 17-30 を参照 )。
SDAピンをデアサートしてHighを許可すると、
BRG
に SSPADD<6:0> の内容がロードされ、
「0」までカ
ウント ダウンします。その後、SCL ピンがデアサー
トされ、High としてサンプリングされると、SDA
ピンがサンプリングされます。
図 17-29:
BRG のタイムアウトの終了時に SCL と SDA の両方
が High の場合は、SDA ピンが Low に駆動され、
BRG がリロードされてカウントを開始します。カ
ウントの終了時に、SCL ピンのステータスには関係
なく SCL が Low に駆動され、リピート スタート条
件が完了します。
リピート スタート条件時のバス衝突 ( ケース 1)
SDA
SCL
Sample SDA when SCL goes high.
If SDA = 0, set BCLIF and release SDA and SCL.
RSEN
BCLIF
Cleared by software
‘0’
S
‘0’
SSPIF
図 17-30:
リピート スタート条件時のバス衝突 ( ケース 2)
TBRG
TBRG
SDA
SCL
BCLIF
SCL goes low before SDA,
set BCLIF. Release SDA and SCL.
Interrupt cleared
by software
RSEN
‘0’
S
SSPIF
DS41303E_JP - ページ 230
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
17.4.17.3
ストップ条件は、SDA を Low にアサートすること
から開始されます。SDA が Low としてサンプリン
グされると、SCL ピンが High になることが許可さ
れます。SCL ピンが High としてサンプリングされ
ると ( クロック調停 )、ボーレート ジェネレータに
SSPADD<6:0> の内容がロードされ、
「0」までカウ
ント ダウンします。BRG のタイム アウト後、SDA
がサンプリングされます。SDA が Low としてサン
プリングされた場合、バス衝突が発生しています。
これは、別のマスターがデータ「0」の送信を試行
したからです ( 図 17-31)。SDA での High を許可す
る前に SCL ピンが Low としてサンプリングされる
場合、バス衝突が発生します。これは、別のマス
ターがデータ「0」の送信を試行した別の場合です
( 図 17-32)。
ストップ条件時のバス衝突
ストップ条件ではバス衝突は次の場合に発生します。
a)
b)
SDA ピンがデアサートされて High が可能に
なった後で、BRG のタイム アウト後に SDA
が Low としてサンプリングされる
SCL ピンのデアサート後、SDA が High にな
る前にSCLがLowとしてサンプリングされる
図 17-31:
ストップ条件時のバス衝突 ( ケース 1)
TBRG
TBRG
TBRG
SDA
SDA sampled
low after TBRG,
set BCLIF
SDA asserted low
SCL
PEN
BCLIF
P
‘0’
SSPIF
‘0’
図 17-32:
ストップ条件時のバス衝突 ( ケース 2)
TBRG
TBRG
TBRG
SDA
SCL goes low before SDA goes high,
set BCLIF
Assert SDA
SCL
PEN
BCLIF
P
‘0’
SSPIF
‘0’
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 231
PIC18F2XK20/4XK20
表 17-4:
I2C™ に関連するレジスタのまとめ
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values on
page
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
60
Name
IPR2
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
60
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
60
SSPADD
SSP Address Register in I2C™ Slave Mode. SSP Baud Rate Reload Register in I2C Master Mode.
SSPBUF
SSP Receive Buffer/Transmit Register
58
SSPCON1
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPCON2
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
SSPMSK
MSK7
MSK6
MSK5
MSK4
MSK3
MSK2
SSPSTAT
TRISC
58
SSPM2
SSPM1
SSPM0
58
RSEN
SEN
58
MSK1
MSK0
61
SMP
CKE
D/A
P
S
R/W
UA
BF
58
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
60
記号の説明 :
— = 未実装、「0」として読み出し。網掛けのビットは PORTA では使用しません。
注 1: PIC18F2XK20 デバイスでは未実装
DS41303E_JP - ページ 232
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
18.0
拡張ユニバーサル同期 / 非同期送
受信器 (EUSART)
EUSART モジュールには、次の機能があります。
•
•
•
•
拡張 ユニバーサル同期 / 非同期送受信器 (EUSART:
Enhanced Universal Synchronous Asynchronous
Receiver Transmitter) モジュールは、シリアル I/O 通
信用の周辺機器です。デバイスのプログラム実行と
は独立してシリアル データを入出力するために必
要なクロック ジェネレータ、シフト レジスタ、お
よ び デ ー タ バ ッ フ ァ を す べ て 装 備 し て い ま す。
EUSART は、シリアル通信インターフェース (SCI:
Serial Communications Interface) とも呼ばれ、全二重
非同期システムまたは半二重同期システムとして
設定できます。全二重モードは、CRT 端末やパーソ
ナル コンピュータなどの周辺システムとの通信に
便利です。半二重同期モードは、A/D または D/A の
集積回路、シリアル EEPROM、その他のマイクロ
コントローラなどの周辺デバイスとの通信を目的
としています。これらのデバイスは通常、ボーレー
ト生成用の内部クロックを装備しないので、マス
ター同期デバイスが外部クロック信号を供給する
必要があります。
•
•
•
•
•
•
全二重非同期の送受信
2 文字の入力バッファ
1 文字の出力バッファ
文字長を 8 ビットまたは 9 ビットにプログラム
可能
9 ビット モードでのアドレス検出
入力バッファのオーバーラン エラー検出
受信文字のフレーミング エラー検出
半二重同期マスター
半二重同期スレーブ
クロックとデータの極性をプログラム可能
EUSART モジュールは次の追加機能を実装してい
る の で、ロ ー カ ル 接 続 ネ ッ ト ワ ー ク (LIN: Local
Interconnect Network) バス システムでの使用に理想
的です。
• ボーレートの自動検出 / 較正
• ブレーク受信時のウェイクアップ
• 13 ビットのブレーク文字の送信
EUSART 送信器のブロック図を図 18-1、EUSART 受
信器のブロック図を図 18-2 に示します。
図 18-1:
EUSART の送信のブロック図
Data Bus
TXIE
Interrupt
TXIF
TXREG Register
8
MSb
TX/CK pin
LSb
(8)
• • •
0
Pin Buffer
and Control
Transmit Shift Register (TSR)
TXEN
TRMT
Baud Rate Generator
FOSC
TX9
n
BRG16
+1
SPBRGH
n
SPBRG
Multiplier
x4
x16 x64
SYNC
1 X 0 0
0
BRGH
X 1 1 0
0
BRG16
X 1 0 1
0
 2009 Microchip Technology Inc.
TX9D
Preliminary
DS41303E_JP - ページ 233
PIC18F2XK20/4XK20
図 18-2:
EUSART の受信のブロック図
CREN
RX/DT pin
Baud Rate Generator
Data
Recovery
FOSC
BRG16
+1
SPBRGH
SPBRG
RSR Register
MSb
Pin Buffer
and Control
Multiplier
x4
x16 x64
SYNC
1 X 0 0
0
BRGH
X 1 1 0
0
BRG16
X 1 0 1
0
Stop
RCIDL
OERR
(8)
•••
7
1
LSb
0 START
RX9
n
n
FERR
RX9D
RCREG Register
8
FIFO
Data Bus
RCIF
RCIE
Interrupt
EUSART モジュールの動作は、次の 3 つのレジスタ
で制御します。
• 送信ステータスおよび制御 (TXSTA)
• 受信ステータスおよび制御 (RCSTA)
• ボーレート制御 (BAUDCON)
これらのレジスタの詳細については、レジスタ 18-1、
レジスタ 18-2、レジスタ 18-3 をそれぞれ参照してく
ださい。
EUSART のすべての動作モードについて、RX/DT お
よび TX/CK のピンに対応する TRIS 制御ビットを
「1」にセットする必要があります。EUSART の制御
機能は、必要に応じて、ピンを入力から出力に自動
的に再設定します。
受信器または送信器のセクションを有効にしない場
合は、対応する RX ピンまたは TX ピンを汎用の入
力 / 出力に使用できます。
DS41303E_JP - ページ 234
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
18.1
EUSART の非同期モード
注:
EUSART は、標準の非ゼロ復帰 (NRZ: Non Return to
Zero) 形式を使用して、データを送受信します。NRZ
は、「1」データ ビットを表す VOH のマーク状態と
「0」データ ビットを表す VOL のスペース状態の 2 つ
のレベルで実現されます。NRZ は、同じ値のデータ
ビットを連続して送信すると、送信する各ビットの
間で中立レベルに戻らずに、そのビットの出力レベ
ルが保持されることを意味します。NRZ 通信ポート
は、マーク状態ではアイドルです。各送信文字は、
1 ビットのスタート ビット、8 ビットまたは 9 ビッ
トのデータ ビットで構成され、常に 1 ビット以上の
ストップ ビットで終了します。スタート ビットは
常にスペースで、ストップ ビットは常にマークで
す。最も一般的なデータ フォーマットは 8 ビットで
す。各送信ビットは、1/( ボーレート ) の期間持続し
ます。システム オシレータから標準ボーレート周波
数を得るには、オンチップの専用 8 ビット /16 ビッ
ト ボーレート ジェネレータを使用します。
ボーレー
トの設定例については、
表18-5を参照してください。
EUSART は、最下位ビットをはじめに送受信しま
す。EUSART の送信器と受信器は独立に動作します
が、データ フォーマットとボーレートは同一です。
パリティはハードウェアではサポートされません
が、ソフトウェアで実装でき、データの 9 ビット目
として保存されます。
18.1.1
EUSART 非同期送信器
EUSART 送信器のブロック図を図 18-1 に示します。
送信器の中核はシリアル送信シフト レジスタ (TSR:
Transmit Shift Register) で、ソフトウェアからは直接
アクセスできません。TSR は、送信バッファである
TXREG レジスタからデータを取得します。
18.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 機能を無効にする必要があります。
 2009 Microchip Technology Inc.
TXEN イネーブル ビットがセットされる
と、TXIF 送信器割り込みフラグ ビットが
セットされます。
18.1.1.2
データの送信
TXREG レジスタに 1 文字を書き込むと、送信が開
始されます。これが最初の文字の場合、または前の
文字が TSR からすべて出ている場合には、TXREG
のデータが即座に TSR レジスタに転送されます。
TSRに前の文字のすべてまたは一部が残っている場
合は、その文字のストップ ビットが送信されるま
で、新しい文字データは TXREG に保持されます。
ストップ ビットの送信直後、1 TCY で、TXREG に保
持されている文字が TSR に転送されます。TXREG
から TSR にデータを転送した直後に、
スタート ビッ
ト、データ ビット、およびストップ ビットの送信
シーケンスが開始されます。
18.1.1.3
送信データの極性
送信データの極性は、BAUDCONレジスタのCKTXP
ビットで制御できます。このビットのデフォルト値
は「0」で、送信アイドル / データ ビットが正論理
になります。CKTXP ビットを「1」にセットする
と、送信データが反転され、送信アイドル / データ
ビットが負論理になります。CKTXP ビットは、非
同期モードでのみ送信データの極性を制御します。
同期モードでは、CKTXP ビットには別の機能があ
ります。
18.1.1.4
割り込みフラグの送信
EUSART 送信器が有効で、かつ送信する文字が
TXREG に保持されていないときには常に、PIR1 レ
ジスタの TXIF 割り込みフラグ ビットがセットされ
ます。つまり、TXIF ビットがクリアされるのは、
TSR が文字によりビジーで、送信する新しい文字が
TXREG に入れられたときのみです。TXIF フラグ
ビットは、TXREG への書き込みの直後にはクリア
されません。書き込み実行後、2 回目の命令サイク
ルで TXIF が有効になります。TXREG への書き込み
直後に TXIF をポーリングすると、不正な結果が返
されます。TXIF ビットは読み出し専用です。ソフ
トウェアでセットやクリアはできません。
TXIF 割り込みを有効にするには、PIE1 レジスタの
TXIE 割り込みイネーブル ビットをセットします。
ただし、TXREG が空のときには、TXIE イネーブル
ビットの状態には関係なく TXIF フラグ ビットが
セットされます。
データの送信時に割り込みを使用するには、送信す
るデータが更にある場合にのみ TXIE ビットをセッ
トします。送信する最後の文字を TXREG に書き込
んだら、TXIE 割り込みイネーブル ビットをクリア
します。
Preliminary
DS41303E_JP - ページ 235
PIC18F2XK20/4XK20
18.1.1.5
TSR のステータス
18.1.1.7
TXSTA レジスタの TRMT ビットは、TSR レジスタ
のステータスを示します。このビットは読み出し専
用です。TRMT ビットは、TSR レジスタが空のとき
にセットされ、TXREG から TSR レジスタに文字が
転送されるとクリアされます。TSR レジスタからす
べてのビットがシフト出力されるまで、TRMT ビッ
トはクリア状態です。このビットには割り込みロ
ジックが組み合わされていないので、TSR のステー
タスを特定するには、このビットをポーリングする
必要があります。
注:
1.
2.
3.
4.
TSR レジスタはデータ メモリにマップさ
れていないので、ユーザーが使用すること
はできません。
18.1.1.6
5.
9 ビット文字の送信
EUSART は、9 ビット文字の送信をサポートしてい
ます。TXSTA レジスタの TX9 ビットをセットする
と、EUSART は送信する各文字の 9 ビットをシフト
出力します。TXSTA レジスタの TX9D ビットは、9
ビット目の最上位データ ビットです。9 ビット デー
タを送信するときには、TXREG に下位 8 ビットを
書き込む前に、TX9D データ ビットを書き込む必要
があります。TXREG への書き込み直後に、全 9 ビッ
トのデータが TSR シフト レジスタに転送されます。
複数の受信器用の特殊 9 ビット アドレス モードが
使用できます。このアドレス モードの詳細につい
ては、18.1.2.8 項「アドレス検出」を参照してくだ
さい。
図 18-3:
6.
7.
8.
9.
非同期送信の設定
SPBRGH:SPBRG レジスタ ペアおよび BRGH と
BRG16 のビットを初期化して、使用するボー
レートを設定します (18.3 項
「EUSART ボーレー
ト ジェネレータ (BRG)」を参照 )。
RX/DT および TX/CK ピンの TRIS 制御を「1」
にセットします。
SYNC ビットをクリアし、SPEN ビットをセット
して、非同期シリアル ポートを有効にします。
9 ビット送信を使用する場合は、TX9 制御ビッ
トをセットします。受信器がアドレス検出用に
設定されているときには、データの 9 ビット目
をセットすると、データの下位 8 ビットがアド
レスであることを示します。
送信データの極性を反転する場合は、CKTXP
制御ビットをセットします。
TXEN 制御ビットをセットして、送信を有効に
します。これにより、TXIF 割り込みビットが
セットされます。
割り込みを使用する場合は、TXIE 割り込みイ
ネーブル ビットをセットします。INTCON レジ
スタの GIE ビットと PEIE ビットもセットされ
ている場合は、割り込みが即座に発生します。
9 ビット送信を選択する場合は、9 ビット目を
TX9D データ ビットにロードする必要があり
ます。
TXREG レジスタに 8 ビット データをロードし
ます。これにより送信が開始されます。
非同期送信
Write to TXREG
Word 1
BRG Output
(Shift Clock)
RC4/C2OUT/TX/CK
pin
Start bit
bit 1
bit 7/8
Stop bit
Word 1
TXIF bit
(Transmit Buffer
Reg. Empty Flag)
TRMT bit
(Transmit Shift
Reg. Empty Flag)
bit 0
1 TCY
Word 1
Transmit Shift Reg
DS41303E_JP - ページ 236
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 18-4:
非同期送信 ( 連続 )
Write to TXREG
Word 1
BRG Output
(Shift Clock)
RC4/C2OUT/TX/CK
pin
Start bit
bit 0
bit 1
Word 1
1 TCY
TXIF bit
(Interrupt Reg. Flag)
bit 7/8
Stop bit
Start bit
bit 0
Word 2
1 TCY
TRMT bit
(Transmit Shift
Reg. Empty Flag)
注:
Word 2
Word 1
Transmit Shift Reg
Word 2
Transmit Shift Reg
このタイミング図は、2 つの連続する送信を示します。
表 18-1:
Name
INTCON
非同期送信に関連するレジスタ
Bit 7
Bit 6
Bit 5
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
59
RCSTA
TXREG
EUSART Transmit Register
59
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
59
BAUDCON
ABDOVF
RCIDL
DTRXP
CKTXP
BRG16
—
WUE
ABDEN
59
SPBRGH
EUSART Baud Rate Generator Register, High Byte
59
SPBRG
EUSART Baud Rate Generator Register, Low Byte
59
TXSTA
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは非同期送信では使用しません。
注 1: PIC18F2XK20 デバイスでは予約されています。常にクリアの状態にしてください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 237
PIC18F2XK20/4XK20
18.1.2
EUSART 非同期受信器
18.1.2.2
非同期モードは通常、RS-232 システムで使用しま
す。受信器のブロック図を図 18-2 に示します。デー
タは RX/DT ピンで受信され、データ復元ブロック
を駆動します。データ復元ブロックは、実際には
ボーレートの 16 倍の速度で動作する高速シフタで
す。一 方、シ リ ア ル 受 信 シ フ ト レ ジ ス タ (RSR:
Receive Shift Register) はビット レートで動作しま
す。文字の 8 ビットまたは 9 ビットがすべてシフト
入力されると、そのビットが即座に 2 文字の先入れ
先出し (FIFO: First-In-First-Out) メモリに転送されま
す。FIFO のバッファ動作により、2 文字を受信で
き、ソフトウェアが EUSART 受信器へのサービス
を開始する前に、3 文字目を開始できます。FIFO と
RSR レジスタは、ソフトウェアで直接アクセスでき
ません。受信データへのアクセスは、RCREG レジ
スタを経由します。
18.1.2.1
受信器の有効化
EUSART 受信器の非同期動作を有効にするには、次
の 3 つの制御ビットを設定します。
• CREN = 1
• SYNC = 0
• SPEN = 1
EUSART のその他の制御ビットはすべて、デフォル
ト状態と仮定されます。
RCSTA レジスタの CREN ビットをセットすると、
EUSART の受信回路が有効になります。TXSTA レ
ジスタの SYNC ビットをクリアすると、EUSART が
非同期動作に設定されます。RCSTA レジスタの
SPEN ビットをセットすると、EUSART が有効にな
ります。対応する TRIS 制御ビットをセットして、
RX/DTのI/Oピンを入力に設定する必要があります。
RX/DT ピンをアナログ周辺機器と共有している場
合は、対応する ANSEL ビットをクリアして、アナ
ログ I/O 機能を無効にする必要があります。
データの受信
最初のビットの立ち下がりエッジで、受信器のデー
タ復元回路が文字の受信を開始します。最初のビッ
トはスタート ビットとも呼ばれ、つねに「0」です。
データ復元回路は、スタート ビットの中央まで 1/2
ビットの期間をカウントし、そのビットがまだ「0」
かどうかをチェックします。このビットが「0」で
ない場合、データ復元回路はエラーを生成せずに文
字受信を中止し、スタート ビットの立ち下がりエッ
ジの検出を再開します。スタート ビット「0」の
チェックに成功した場合は、データ復元回路は次の
ビットの中央まで 1 ビットの期間カウントします。
次にこのビットが多数検出回路によりサンプルさ
れ、得られた「0」または「1」が RSR にシフト入
力されます。この動作は、全データ ビットがサン
プルされて RSR にシフト入力されるまで繰り返さ
れます。最後に 1 ビットの期間が計測され、レベル
がサンプルされます。これはストップ ビットで、常
に「1」です。ストップ ビットの位置でデータ復元
回路が「0」をサンプルした場合、この文字につい
てフレーミング エラーがセットされます。それ以
外の場合は、この文字のフレーミング エラーはク
リアされます。フレーミング エラーの詳細につい
ては、18.1.2.5 項「受信フレーミング エラー」を参
照してください。
すべてのデータ ビットとストップ ビットを受信し
た直後に、RSR 内の文字が EUSART の受信 FIFO に
転送され、PIR1 レジスタの RCIF 割り込みフラグ
ビットがセットされます。RCREG レジスタを読み出
すことにより、FIFO の先頭の文字が転送されます。
注:
受信 FIFO がオーバーランした場合は、
オーバーラン条件が解除されるまで、それ
以降の文字は受信されません。オーバーラ
ン エラーの詳細については、18.1.2.6 項
「受信オーバーラン エラー」を参照してく
ださい。
18.1.2.3
受信データの極性
受信データの極性は、
BAUDCON レジスタの DTRXP
ビットで制御できます。このビットのデフォルト値
は「0」で、受信アイドル / データ ビットが正論理
になります。DTRXP ビットを「1」にセットすると、
受信データが反転され、アイドル / データ ビットが
負論理になります。DTRXP ビットは、非同期モー
ドでのみ受信データの極性を制御します。同期モー
ドでは、DTRXP ビットには別の機能があります。
DS41303E_JP - ページ 238
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
18.1.2.4
受信割り込み
EUSART 受信器が有効で、かつ読み出されていない
文字が受信 FIFO にあるときには常に、PIR1 レジス
タの RCIF 割り込みフラグ ビットがセットされま
す。RCIF 割り込みフラグ ビットは読み出し専用で
す。ソフトウェアでセットやクリアはできません。
RCIF割り込みを有効にするには、
次のビットをセッ
トします。
• PIE1 レジスタの RCIE割り込みイネーブル ビット
• INTCON レジスタの PEIE 周辺割り込みイネーブ
ル ビット
• INTCON レジスタの GIE グローバル割り込み
イネーブル ビット
読み出されていない文字が FIFO にあるときには、
割り込みイネーブル ビットの状態には関係なく
RCIF 割り込みフラグ ビットがセットされます。
18.1.2.5
受信フレーミング エラー
受信FIFOバッファ内の各文字には、対応するフレー
ミング エラー ステータス ビットがあります。フ
レーミング エラーは、予測される時点でストップ
ビットが検出されなかったことを示します。フレー
ミング エラーのステータスには、RCSTA レジスタ
の FERR ビット経由でアクセスします。FERR ビッ
トは、受信 FIFO の先頭にある、読み出されていな
い文字のステータスを示します。このため、RCREG
を読み出す前に FERR ビットを読み出す必要があり
ます。
FERR ビットは読み出し専用で、受信 FIFO の先頭に
ある、読み出されていない文字にのみ適用されま
す。フレーミング エラー (FERR = 1) により、後続
の文字受信が禁止されることはありません。FERR
ビットをクリアする必要はありません。FIFO バッ
ファから次の文字を読み出すと、FIFO が次の文字お
よびその対応するフレーミング エラーに進みます。
RCSTAレジスタのSPENビットをクリアして、FERR
ビットを強制的にクリアできます。これにより、
EUSART がリセットされます。RCSTA レジスタの
CREN ビットをクリアしても、FERR ビットは影響
を受けません。フレーミング エラー自体は、割り
込みを生成しません。
注:
字は受信されません。RCSTA レジスタの CREN ビッ
トをクリアするか、RCSTA レジスタの SPEN ビッ
トをクリアして EUSART をリセットすることで、
エ
ラーをクリアする必要があります。
18.1.2.7
9 ビット文字の受信
EUSART は、9 ビット文字の受信をサポートしてい
ます。RCSTA レジスタの RX9 ビットをセットする
と、EUSART は受信した各文字の 9 ビットを RSR
にシフト入力します。RCSTA レジスタの RX9D ビッ
トは、受信 FIFO の先頭にある、読み出されていな
い文字の 9 ビット目にある最上位データ ビットで
す。受信 FIFO バッファから 9 ビット データを読み
出すときには、RCREG の下位 8 ビットより前に、
RX9D データ ビットを読み出す必要があります。
18.1.2.8
アドレス検出
RS-485 システムのように複数の受信器が同一の送
信ラインを共有する場合に、特殊なアドレス検出
モードを使用できます。アドレス検出を有効にする
には、RCSTA レジスタの ADDEN ビットをセット
します。
アドレス検出では、9 ビット文字を受信する必要が
あります。アドレス検出を有効にすると、データの
9 ビット目がセットされた文字のみが受信 FIFO
バッファに転送されるので、RCIF 割り込みビット
がセットされます。9 ビット目がセットされていな
い文字はすべて、無視されます。
アドレス文字を受信すると、ソフトウェアが、その
アドレスがソフトウェアが持つアドレスに一致す
るかどうかを調べます。アドレスが一致すると、次
のストップ ビットが発生する前に、ユーザー ソフ
トウェアは ADDEN ビットをクリアしてアドレス検
出を無効にする必要があります。ユーザー ソフト
ウェアがメッセージ プロトコルを使用してメッ
セージの後端を検出すると、ADDEN ビットをセッ
トして、受信器をアドレス検出モードに戻します。
受信 FIFO のすべての受信文字にフレーミ
ング エラーがある場合、RCREG を繰り返
し読み出しても、FERR ビットはクリアさ
れません。
18.1.2.6
受信オーバーラン エラー
受信 FIFO バッファは 2 文字を保持できます。FIFO
がアクセスされる前に、3 文字目をすべて受信した
場合、オーバーラン エラーが発生します。この場
合、RCSTA レジスタの OERR ビットがセットされ
ます。既に FIFO バッファ内にある文字の読み出し
はできますが、エラーを解消するまでそれ以降の文
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 239
PIC18F2XK20/4XK20
18.1.2.9
18.1.2.10
非同期受信の設定
1.
SPBRGH:SPBRG レジスタ ペアおよび BRGH と
BRG16 のビットを初期化して、使用するボー
レートを設定します (18.3 項「EUSART ボー
レート ジェネレータ (BRG)」を参照 )。
2. RX/DT および TX/CK ピンの TRIS 制御を「1」
にセットします。
3. SPEN ビット、および RX/DT ピンの TRIS ビッ
トをセットして、シリアル ポートを有効にしま
す。非同期動作では、SYNC ビットをクリアす
る必要があります。
4. 割り込みを使用する場合は、RCIE 割り込みイ
ネーブル ビットをセットし、INTCON レジスタ
の GIE ビットと PEIE ビットをセットします。
5. 9 ビット受信を使用する場合は、RX9 ビットを
セットします。
6. 受信した極性を反転する場合は、DTRXP ビッ
トをセットします。
7. CREN ビットをセットして、受信を有効にし
ます。
8. RSR から受信バッファに文字が転送されると
きに、RCIF 割り込みフラグ ビットがセットさ
れます。RCIE 割り込みイネーブル ビットも
セットされている場合は、割り込みが生成され
ます。
9. RCSTA レジスタを読み出して、エラー フラグ
を取得します。9 ビット データ受信を有効にし
ている場合は、エラー フラグはデータの 9 ビッ
ト目です。
10. RCREG レジスタを読み出して、受信バッファか
ら受信済みデータの下位8ビットを取得します。
11. オーバーランが発生した場合は、CREN 受信イ
ネーブル ビットをクリアして、OERR フラグを
クリアします。
このモードは通常、RS-485 システムで使用します。
アドレス検出が有効な非同期受信を設定するには、
次の手順に従います。
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DS41303E_JP - ページ 240
9 ビット アドレス検出モードの設定
Preliminary
SPBRGH と SPBRG のレジスタ ペアおよび
BRGH と BRG16 のビットを初期化して、使用
するボーレートを設定します (18.3 項
「EUSART
ボーレート ジェネレータ (BRG)」を参照 )。
RX/DT および TX/CK ピンの TRIS 制御を「1」
にセットします。
SPEN ビットをセットして、シリアル ポートを
有効にします。非同期動作では、SYNC ビット
をクリアする必要があります。
割り込みを使用する場合は、RCIE 割り込みイ
ネーブル ビットをセットし、INTCON レジスタ
の GIE ビットと PEIE ビットをセットします。
RX9 ビットをセットして、9 ビット受信を有効
にします。
ADDEN ビットをセットして、アドレス検出を
有効にします。
受信した極性を反転する場合は、DTRXP ビッ
トをセットします。
CREN ビットをセットして、受信を有効にし
ます。
RSR から受信バッファに 9 ビット目がセットさ
れた文字が転送されるときに、RCIF 割り込み
フラグ ビットがセットされます。RCIE 割り込
みイネーブル ビットもセットされている場合
は、割り込みが生成されます。
RCSTA レジスタを読み出して、エラー フラグ
を取得します。データの 9 ビット目は常にセッ
トされています。
RCREG レジスタを読み出して、受信バッファ
から受信済みデータの下位 8 ビットを取得しま
す。ソフトウェアが、この下位データ ビットが
デバイスのアドレスであるかどうかを判定し
ます。
オーバーランが発生した場合は、CREN 受信イ
ネーブル ビットをクリアして、OERR フラグを
クリアします。
デバイスがアドレス指定された場合は、ADDEN
ビットをクリアして、すべての受信データの受
信バッファへの書き込み、および割り込みの生
成を許可します。
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 18-5:
非同期受信
Start
bit
bit 0
RX/DT pin
bit 7/8 Stop
bit
bit 1
Rcv Shift
Reg
Rcv Buffer Reg
Start
bit
bit 0
Start
bit
bit 7/8
Stop
bit
Word 2
RCREG
Word 1
RCREG
RCIDL
bit 7/8 Stop
bit
Read Rcv
Buffer Reg
RCREG
RCIF
(Interrupt Flag)
OERR bit
CREN
注:
表 18-2:
Name
INTCON
このタイミング図は、RX 入力に現れる 3 ワードを示します。3 つ目のワードの後に RCREG ( 受信バッファ ) が読み出され、
OERR ( オーバーラン ) ビットがセットされます。
非同期受信に関連するレジスタ
Bit 7
Bit 6
Bit 5
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE
(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
59
RCSTA
RCREG
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
EUSART Receive Register
59
TRISC
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
60
TXSTA
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
59
RCIDL
DTRXP
CKTXP
BRG16
—
WUE
ABDEN
BAUDCON ABDOVF
59
SPBRGH
EUSART Baud Rate Generator Register, High Byte
59
SPBRG
EUSART Baud Rate Generator Register, Low Byte
59
記号の説明 : — = 未実装、「0」として読み出し。網掛けのビットは非同期受信では使用しません。
注 1: PIC18F2XK20 デバイスでは予約されています。常にクリアの状態にしてください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 241
PIC18F2XK20/4XK20
18.2
最初の方法 ( 推奨 ) では、HFINTOSC 出力の調整に
OSCTUNE レジスタを使用します。OSCTUNE レジ
スタの値を調整することにより、システム クロック
ソースの分解能を向上できます。詳細については、
2.5 項「内部クロック モード」を参照してください。
非同期動作でのクロックの精度
内部オシレータ ブロックの出力 (HFINTOSC) は、工
場出荷時に較正されています。ただし、VDD や温度
の変化に伴って HFINTOSC の周波数がドリフトす
ることがあり、このドリフトが非同期ボーレートに
直接影響します。2 つの方法で、ボーレート クロッ
クを調整できます。ただし、両方の方法に何らかの
リファレンス クロック ソースが必要です。
レジスタ 18-1:
R/W-0
CSRC
もう 1 つの方法では、ボーレート ジェネレータの
値を調整します。これは、自動ボーレート検出機能
で自動的に実行できます (18.3.1 項「自動ボーレー
ト検出」を参照 )。ボーレート ジェネレータを調整
して周辺クロック周波数の段階的な変化を補正す
るときに、十分な分解能がないことがあります。
TXSTA: 送信ステータスおよび制御レジスタ
R/W-0
TX9
R/W-0
TXEN
(1)
R/W-0
R/W-0
R/W-0
R-1
R/W-0
SYNC
SENDB
BRGH
TRMT
TX9D
bit 7
bit 0
記号の説明 :
R = 読み出し可
W = 書き込み可
-n = POR 時の値
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
ビット 7
CSRC: クロック ソース選択ビット
非同期モード :
ドントケア
同期モード :
1 = マスター モード ( クロックは内部の BRG が生成 )
0 = スレーブ モード ( 外部クロック ソース )
ビット 6
TX9: 9 ビット送信イネーブル ビット
1 = 9 ビット送信を選択
0 = 8 ビット送信を選択
ビット 5
TXEN: 送信イネーブル ビット (1)
1 = 送信を有効にする
0 = 送信を無効にする
ビット 4
SYNC: EUSART モード選択ビット
1 = 同期モード
0 = 非同期モード
ビット 3
SENDB: ブレーク文字送信ビット
非同期モード :
1 = 次の送信で同期ブレークを送信 ( 完了後ハードウェアでクリア )
0 = 同期ブレークの送信完了
同期モード :
ドントケア
ビット 2
BRGH: 高ボーレート選択ビット
非同期モード :
1 = 高速
0 = 低速
同期モード :
使用しない
ビット 1
TRMT: 送信シフト レジスタ ステータス ビット
1 = TSR が空
0 = TSR がフル
ビット 0
TX9D: 送信データの 9 ビット目
アドレス / データ ビットまたはパリティ ビットを使用可能
注 1:
x = 不明
同期モードでは、SREN/CREN が TXEN よりも優先されます。
DS41303E_JP - ページ 242
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 18-2:
R/W-0
SPEN
bit 7
RCSTA: 受信ステータスおよび制御レジスタ (1)
R/W-0
RX9
R/W-0
SREN
R/W-0
CREN
R/W-0
ADDEN
R-0
FERR
R-0
OERR
R-x
RX9D
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
ビット 7
ビット 6
ビット 5
ビット 4
ビット 3
ビット 2
ビット 1
ビット 0
W = 書き込み可
「1」= セット
U = 未実装ビット。「0」として読み出し
「0」= クリア
x = 不明
SPEN: シリアル ポート イネーブル ビット
1 = シリアル ポートを有効にする (RX/DT と TX/CK のピンをシリアル ポート ピンに設定 )
0 = シリアル ポートを無効にする ( リセットに保持 )
RX9: 9 ビット受信イネーブル ビット
1 = 9 ビット受信を選択する
0 = 8 ビット受信を選択する
SREN: シングル受信イネーブル ビット
非同期モード :
ドントケア
同期モードのマスター :
1 = シングル受信を有効にする
0 = シングル受信を無効にする
このビットは、受信完了後にクリアされる
同期モードのスレーブ :
ドントケア
CREN: 連続受信イネーブル ビット
非同期モード :
1 = 受信器を有効にする
0 = 受信器を無効にする
同期モード :
1 = イネーブル ビット CREN がクリアされるまで、連続受信を有効にする (CREN は SREN
よりも優先される )
0 = 連続受信を無効にする
ADDEN: アドレス検出イネーブル ビット
非同期モード 9 ビット (RX9 = 1):
1 = アドレス検出を有効にし、RSR<8> のセット時に割り込みを有効にして受信バッファを
ロードする
0 = アドレス検出を無効にする。すべてのバイトが受信され、9 ビット目をパリティ ビットと
して使用可能
非同期モード 8 ビット (RX9 = 0):
ドントケア
FERR: フレーミング エラー ビット
1 = フレーミング エラー (RCREG レジスタの読み出しで、更新して次の有効ビットを受信で
きる )
0 = フレーミング エラーなし
OERR: オーバーラン エラー ビット
1 = オーバーラン エラー (CREN ビットのクリアで解消できる )
0 = オーバーラン エラーなし
RX9D: 受信データの 9 ビット目
アドレス / データ ビットまたはパリティ ビットにすることができ、ユーザー ファームウェアで
計算する必要がある
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 243
PIC18F2XK20/4XK20
レジスタ 18-3:
BAUDCON: ボーレート制御レジスタ
R/W-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 = 書き込み可
-n = POR 時の値
U = 未実装ビット。「0」として読み出し
「1」= セット
「0」= クリア
x = 不明
ビット 7
ABDOVF: 自動ボーレート検出オーバーフロー ビット
非同期モード :
1 = 自動ボーレート タイマがオーバーフローした
0 = 自動ボーレート タイマがオーバーフローしていない
同期モード :
ドントケア
ビット 6
RCIDL: 受信アイドル フラグ ビット
非同期モード :
1 = 受信器がアイドル
0 = スタート ビットが検出され、受信器がアクティブ
同期モード :
ドントケア
ビット 5
DTRXP: データ / 受信極性選択ビット
非同期モード :
1 = 受信データ (RX) を反転する ( 負論理 )
0 = 受信データ (RX) を反転しない ( 正論理 )
同期モード :
1 = データ (DT) を反転する ( 負論理 )
0 = データ (DT) を反転しない ( 正論理 )
ビット 4
CKTXP: クロック / 送信極性選択ビット
非同期モード :
1 = 送信 (TX) のアイドル状態を Low にする
0 = 送信 (TX) のアイドル状態を High にする
同期モード :
1 = データはクロックの立ち下がりエッジで変化し、クロックの立ち上がりエッジでサンプルされる
0 = データはクロックの立ち上がりエッジで変化し、クロックの立ち下がりエッジでサンプルされる
ビット 3
BRG16: 16 ビット ボーレート ジェネレータ ビット
1 = 16 ビット ボーレート ジェネレータを使用する (SPBRGH:SPBRG)
0 = 8 ビット ボーレート ジェネレータを使用する (SPBRG)
ビット 2
未実装 :「0」として読み出し
ビット 1
WUE: ウェイクアップ イネーブル ビット
非同期モード :
1 = 受信器が立ち下がりエッジを待っている。文字は受信されないが、立ち下がりエッジで RCIF が
セットされる。WUE が立ち上がりエッジで自動的にクリアされる
0 = 受信器が正常動作中
同期モード :
ドントケア
ビット 0
ABDEN: 自動ボーレート検出イネーブル ビット
非同期モード :
1 = 自動ボーレート検出モードを有効にする ( 自動ボーレートの完了時にクリアされる )
0 = 自動ボーレート検出モードを無効にする
同期モード :
ドントケア
DS41303E_JP - ページ 244
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
18.3
EUSART ボーレート ジェネレータ
(BRG)
受信動作がアクティブなときにシステム クロック
を変更すると、受信エラーまたはデータ喪失が発生
することがあります。この問題を防ぐには、RCIDL
ビットのステータスをチェックして、システム ク
ロックを変更する前に受信動作がアイドルである
ことを確認します。
ボーレート ジェネレータ (BRG) は 8 ビットまたは
16 ビットのタイマで、EUSART の非同期 / 同期動作
の両方がサポートされます。デフォルトでは、BRG
は 8 ビット モードで動作します。BAUDCON レジ
スタの BRG16 ビットをセットすると、16 ビット
モードが選択されます。
例 18-1:
ボーレート エラーの計算
FOSC が 16 MHz、使用するボーレートが 9600、
非同期モード、8 ビット BRG のデバイスの場合 :
SPBRGH:SPBRGレジスタ ペアにより、
動作するボー
レート タイマの周期が決まります。非同期モードで
は、TXSTA レジスタの BRGH ビット、および
BAUDCON レジスタの BRG16 ビットの両方により、
ボーレート周期の乗数が決まります。同期モードで
は、BRGH ビットは無視されます。
F OS C
Desired Baud Rate = -------------------------------------------------------------------64  [SPBRGH:SPBRG] + 1 
Solving for SPBRGH:SPBRG:
F OS C
-------------------------------------------Desired
Baud Rate – 1
X = --------------------------------------------64
表 18-3 に、ボーレートの計算式を示します。例 18-1
に、ボーレートおよびボーレート エラーの計算例
を示します。
16000000
-----------------------9600 - – 1
= ----------------------64
参考として、表 18-5 に、さまざまな非同期モード
の代表的なボーレートとエラーの計算値を示しま
す。高ボーレート (BRGH = 1) または 16 ビット BRG
(BRG16 = 1) を使用すると、ボーレート エラーの低
減に役立つことがあります。16 ビット BRG モード
は、高いオシレータ周波数で低いボーレートを実現
するために使用されます。
=  25.042  = 25
16000000Calculated Baud Rate = -------------------------64  25 + 1 
= 9615
SPBRGH と SPBRG のレジスタ ペアに新しい値を書
き込むと、BRG タイマはリセット ( またはクリア )
されます。これにより、BRG はタイマのオーバー
フローを待つことなく新たなボーレートを出力で
きます。
表 18-3:
Baud Rate – Desired Baud RateError = Calc.
------------------------------------------------------------------------------------------Desired Baud Rate
 9615 – 9600 
= ---------------------------------- = 0.16%
9600
ボーレートの計算式
Configuration Bits
BRG/EUSART Mode
Baud Rate Formula
0
8-bit/Asynchronous
FOSC/[64 (n+1)]
0
1
8-bit/Asynchronous
0
1
0
16-bit/Asynchronous
0
1
1
16-bit/Asynchronous
1
0
x
8-bit/Synchronous
1
x
16-bit/Synchronous
SYNC
BRG16
BRGH
0
0
0
1
記号の説明 :
表 18-4:
FOSC/[16 (n+1)]
FOSC/[4 (n+1)]
x = ドントケア、n = SPBRGH、SPBRG レジスタ ペアの値
ボーレート ジェネレータに関連するレジスタ
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset Values
on page
TXSTA
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
59
RCSTA
SPEN
Name
BAUDCON ABDOVF
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
59
RCIDL
DTRXP
CKTXP
BRG16
—
WUE
ABDEN
59
SPBRGH
EUSART Baud Rate Generator Register, High Byte
59
SPBRG
EUSART Baud Rate Generator Register, Low Byte
59
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは BRG では使用しません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 245
PIC18F2XK20/4XK20
表 18-5:
非同期モードのボーレート
SYNC = 0, BRGH = 0, BRG16 = 0
BAUD
RATE
FOSC = 64.000 MHz
Actual
Rate
%
Error
SPBRG
value
(decimal)
300
1200
—
—
—
—
—
2400
—
9615
—
0.16
9600
FOSC = 18.432 MHz
FOSC = 16.000 MHz
FOSC = 11.0592 MHz
Actual
Rate
%
Error
SPBRG
value
(decimal)
—
—
1200
—
0.00
—
239
—
103
2400
0.00
119
2404
0.16
103
2400
0.00
71
9600
0.00
29
9615
0.16
25
9600
0.00
17
Actual
Rate
—
1202
%
Error
SPBRG
value
(decimal)
Actual
Rate
%
Error
SPBRG
value
(decimal)
—
0.16
—
207
—
1200
—
0.00
—
143
10417
10417
0.00
95
10286
-1.26
27
10417
0.00
23
10165
-2.42
16
19.2k
19.23k
0.16
51
19.20k
0.00
14
19.23k
0.16
12
19.20k
0.00
8
57.6k
58.82k
111.11k
2.12
-3.55
16
8
57.60k
—
0.00
7
—
—
—
—
—
—
—
57.60k
—
0.00
2
—
—
115.2k
—
SYNC = 0, BRGH = 0, BRG16 = 0
BAUD
RATE
FOSC = 8.000 MHz
FOSC = 4.000 MHz
SPBRG
Actual
%
value
Rate
Error
(decimal)
FOSC = 3.6864 MHz
SPBRG
Actual
%
value
Rate
Error
(decimal)
FOSC = 1.000 MHz
SPBRG
Actual
%
value
Rate
Error
(decimal)
Actual
Rate
%
Error
SPBRG
value
(decimal)
300
1200
—
1202
—
0.16
—
103
300
1202
0.16
0.16
207
51
300
1200
0.00
191
47
300
1202
0.16
0.16
51
12
2400
2404
0.16
51
2404
0.16
25
2400
0.00
23
—
—
—
9600
9615
0.16
12
5
—
—
—
0.00
11
—
5
0.00
10417
—
0.00
9600
10417
—
10417
—
—
—
—
—
—
—
2
—
—
—
0.00
—
19.2k
—
19.20k
—
—
—
57.6k
—
—
—
—
—
—
—
—
—
—
—
—
57.60k
—
0.00
0
—
—
—
—
—
—
—
—
115.2k
0.00
SYNC = 0, BRGH = 1, BRG16 = 0
BAUD
RATE
FOSC = 64.000 MHz
FOSC = 18.432 MHz
FOSC = 16.000 MHz
Actual
Rate
%
Error
300
1200
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
2400
—
—
—
9600
—
—
—
—
9600
—
0.00
—
119
—
9615
—
0.16
—
103
—
9600
—
0.00
—
71
10417
—
0.16
—
207
10378
-0.37
110
10417
0.00
95
10473
0.53
65
19.2k
—
19.23k
19.20k
0.00
59
19.23k
0.16
51
19.20k
0.00
35
57.6k
57.97k
0.64
68
57.60k
0.00
19
58.82k
2.12
16
57.60k
0.00
11
115.2k
114.29k
-0.79
34
115.2k
0.00
9
111.1k
-3.55
8
115.2k
0.00
5
DS41303E_JP - ページ 246
Actual
Rate
%
Error
SPBRG
value
(decimal)
Actual
Rate
FOSC = 11.0592 MHz
SPBRG
value
(decimal)
Preliminary
%
Error
SPBRG
value
(decimal)
Actual
Rate
%
Error
SPBRG
value
(decimal)
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 18-5:
非同期モードのボーレート ( 続き )
SYNC = 0, BRGH = 1, BRG16 = 0
BAUD
RATE
FOSC = 8.000 MHz
Actual
Rate
%
Error
SPBRG
value
(decimal)
—
—
—
2400
—
2404
—
0.16
—
207
9600
9615
0.16
51
10417
10417
0.00
47
19.2k
19231
0.16
57.6k
55556
115.2k
—
300
1200
FOSC = 4.000 MHz
FOSC = 3.6864 MHz
FOSC = 1.000 MHz
Actual
Rate
%
Error
SPBRG
value
(decimal)
—
1202
—
0.16
—
207
2404
0.16
103
2400
0.00
95
2404
0.16
25
9615
0.16
25
9600
0.00
23
10417
0.00
23
10473
0.53
21
—
10417
—
0.00
—
5
25
19.23k
0.16
12
19.2k
0.00
11
—
—
—
-3.55
8
—
—
0.00
3
—
—
—
57.60k
—
—
—
115.2k
0.00
1
—
—
—
—
—
—
Actual
Rate
—
1200
%
Error
SPBRG
value
(decimal)
Actual
Rate
%
Error
SPBRG
value
(decimal)
—
0.00
—
191
300
1202
0.16
0.16
207
51
SYNC = 0, BRGH = 0, BRG16 = 1
BAUD
RATE
FOSC = 64.000 MHz
FOSC = 18.432 MHz
FOSC = 16.000 MHz
FOSC = 11.0592 MHz
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
300
1200
300.0
1200.1
0.00
0.01
13332
3332
300.0
1200
0.00
0.00
3839
959
300.03
1200.5
0.01
0.04
3332
832
300.0
1200
0.00
0.00
2303
575
2400
2399
-0.02
1666
2400
0.00
479
2398
-0.08
416
2400
0.00
287
71
9600
9592
-0.08
416
9600
0.00
119
9615
0.16
103
9600
0.00
10417
10417
0.00
383
10378
-0.37
110
10417
0.00
95
10473
0.53
65
19.2k
19.23k
0.16
207
19.20k
0.00
59
19.23k
0.16
51
19.20k
0.00
35
57.6k
57.97k
0.64
68
57.60k
0.00
19
58.82k
2.12
16
57.60k
0.00
11
115.2k
114.29k
-0.79
34
115.2k
0.00
9
111.11k
-3.55
8
115.2k
0.00
5
SYNC = 0, BRGH = 0, BRG16 = 1
BAUD
RATE
FOSC = 8.000 MHz
FOSC = 4.000 MHz
FOSC = 3.6864 MHz
FOSC = 1.000 MHz
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
300
1200
299.9
1199
-0.02
-0.08
1666
416
300.1
1202
0.04
0.16
832
207
300.0
1200
0.00
0.00
767
191
300.5
1202
0.16
0.16
207
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
0.00
3
115.2k
—
—
—
—
—
57.60k
115.2k
0.00
1
—
—
—
—
—
—
 2009 Microchip Technology Inc.
—
—
—
—
Preliminary
DS41303E_JP - ページ 247
PIC18F2XK20/4XK20
表 18-5:
非同期モードのボーレート ( 続き )
SYNC = 0, BRGH = 1, BRG16 = 1 or SYNC = 1, BRG16 = 1
BAUD
RATE
300
1200
FOSC = 64.000 MHz
FOSC = 18.432 MHz
FOSC = 16.000 MHz
Actual
Rate
%
Error
300
1200
0.00
0.00
53332
13332
300.0
1200
0.00
0.00
15359
3839
300.0
1200.1
0.00
0.01
13332
3332
300.0
1200
0.00
0.00
9215
2303
1151
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
FOSC = 11.0592 MHz
SPBRGH
:SPBRG
(decimal)
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
2400
2400
0.00
6666
2400
0.00
1919
2399.5
-0.02
1666
2400
0.00
9600
9598.1
-0.02
1666
9600
0.00
479
9592
-0.08
416
9600
0.00
287
10417
10417
0.00
1535
10425
0.08
441
10417
0.00
383
10433
0.16
264
19.2k
19.21k
0.04
832
19.20k
0.00
239
19.23k
0.16
207
19.20k
0.00
143
57.6k
57.55k
-0.08
277
57.60k
0.00
79
57.97k
0.64
68
57.60k
0.00
47
115.2k
115.11k
-0.08
138
115.2k
0.00
39
114.29k
-0.79
34
115.2k
0.00
23
SYNC = 0, BRGH = 1, BRG16 = 1 or SYNC = 1, BRG16 = 1
BAUD
RATE
FOSC = 8.000 MHz
FOSC = 4.000 MHz
FOSC = 3.6864 MHz
FOSC = 1.000 MHz
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
Actual
Rate
%
Error
SPBRGH
:SPBRG
(decimal)
300
1200
300.0
1200
0.00
-0.02
6666
1666
300.0
1200
0.01
0.04
3332
832
300.0
1200
0.00
0.00
3071
767
300.1
1202
0.04
0.16
832
207
2400
2401
0.04
832
2398
0.08
416
2400
0.00
383
2404
0.16
103
25
9600
9615
0.16
207
9615
0.16
103
9600
0.00
95
9615
0.16
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
—
—
—
—
—
—
DS41303E_JP - ページ 248
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
18.3.1
自動ボーレート検出
EUSART モジュールは、ボーレートの自動検出 / 較
正をサポートしています。
自動ボーレート検出 (ABD) モードでは、BRG へのク
ロックが逆方向になります。BRG が入力 RX 信号の
時間を計測するのではなく、RX 信号が BRG の時間
を計測します。ボーレート ジェネレータは、LIN バ
スの同期文字である、受信した 55h (ASCII の「U」)
の周期を計測するために使用されます。この文字に
独特な特徴は、ストップ ビットのエッジを含めて、
立ち上がりエッジが 5 つあることです。
BAUDCON レジスタの ABDEN ビットをセットする
と、自動ボーレート較正シーケンスが開始されます
( 図 18.3.2)。ABD シーケンスの実行中、EUSART ス
テート マシンはアイドルに保持されます。スター
ト ビットの後、受信ラインの最初の立ち上がりエッ
ジで、SPBRG が BRG カウンタを使用してカウント
を開始します ( 表 18-6 を参照 )。5 つ目の立ち上が
りエッジは、RX ピンで、8 ビット目の周期の後縁
で発生します。この時点で、適切な BRG 周期の合
計値が SPBRGH:SPBRG レジスタ ペアに残ります。
また、ABDEN ビットが自動的にクリアされ、RCIF
割り込みフラグがセットされます。RCIF 割り込み
をクリアするには、RCREG を読み出す動作が必要
です。RCREG の内容は破棄されます。SPBRGH レ
ジスタを使用しないモードの較正時には、SPBRGH
レジスタの 00h をチェックして、SPBRG レジスタ
がオーバーフローしていないことを確認できます。
BRG の自動ボーレート クロックは、BRG16 ビット
と BRGH ビットにより決まります ( 表 18-6 を参照 )。
ABD では、BRG16 ビットの設定には関係なく、
SPBRGH と SPBRG の両方のレジスタが 16 ビット カ
ウンタとして使用されます。ボーレート周期の較正
中、SPBRGH と SPBRG のレジスタは、BRG のベー
図 18-6:
ス クロックの 1/8 の速度でクロック同期します。得
られるバイトの計測値は、最高速度でクロック駆動
するときの平均ビット時間です。
注 1:
ABDEN ビットとともに WUE ビットを
セットした場合、ブレーク文字の後のバ
イトで自動ボーレート検出が実行され
ます (18.3.3 項「ブレークでの自動ウェ
イクアップ」を参照 )。
2:
入力文字のボーレートを、選択した BRG
クロック ソースの範囲内に指定するの
はユーザー側で行います。オシレータ周
波数と EUSART のボーレートとの組み合
わせの中には、使用できないものがあり
ます。
3:
自動ボーレート プロセスでは、
自動ボー
レート カウンタが 1 からカウントを開
始します。最高の精度を得るには、自動
ボーレート シーケンスの完了時に
SPBRGH:SPBRG レジスタ ペアから 1 を
減算してください。
表 18-6:
BRG カウンタのクロック速度
BRG16
BRGH
BRG Base
Clock
BRG ABD
Clock
0
0
FOSC/64
FOSC/512
0
1
FOSC/16
FOSC/128
1
0
FOSC/16
FOSC/128
1
1
FOSC/4
FOSC/32
注:
ABD シーケンスでは、BRG16 の設定には
関係なく、SPBRGH と SPBRG の両方のレ
ジスタが 16 ビット カウンタとして使用さ
れます。
自動ボーレート較正
XXXXh
BRG Value
RX pin
0000h
001Ch
Start
Edge #1
bit 1
bit 0
Edge #2
bit 3
bit 2
Edge #3
bit 5
bit 4
Edge #4
bit 7
bit 6
Edge #5
Stop bit
BRG Clock
Auto Cleared
Set by User
ABDEN bit
RCIDL
RCIF bit
(Interrupt)
Read
RCREG
SPBRG
XXh
1Ch
SPBRGH
XXh
00h
注
1:
ABD シーケンスでは、EUSART モジュールを非同期モードに設定する必要があります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 249
PIC18F2XK20/4XK20
18.3.2
18.3.3.1
自動ボーレートのオーバーフロー
自動ボーレート検出中に、RX ピンで 5 番目の立ち
上がりエッジが検出される前にボーレート カウン
タがオーバーフローすると、BAUDCON レジスタの
ABDOVF ビットがセットされます。ABDOVF ビッ
トは、SPBRGH:SPBRG レジスタ ペアの 16 ビット
で表すことができる最大カウントを、カウンタの値
が超えたことを示します。ABDOVF をセットした
後、RX ピンで 5 番目の立ち上がりエッジが検出さ
れるまで、カウンタはカウントを継続します。RX
で 5 番目のエッジが検出されると、ハードウェアが
RCIF 割り込みフラグをセットし、BAUDCON レジ
スタの ABDEN ビットをクリアします。その後、
RCREG を読み出して、RCIF フラグをクリアできま
す。ABDOVF フラグは、ソフトウェアで直接クリ
アできます。
RCIF フラグがセットされる前に自動ボーレート プ
ロセスを終了するには、ABDEN ビットをクリアし、
次に ABDOVF ビットをクリアします。ABDEN ビッ
トを先にクリアしない場合、ABDOVF ビットはセッ
トされたままになります。
18.3.3
ブレークでの自動ウェイクアップ
スリープ モードでは、EUSART へのクロックはす
べて一時停止されています。このため、ボーレート
ジェネレータは非アクティブで、適切な文字の受信
を実行できません。自動ウェイクアップ機能では、
RX/DT ラインの活動により、コントローラをウェ
イクアップできます。この機能は、非同期モードで
のみ使用できます。
自 動 ウ ェ イ ク ア ッ プ 機 能 を 有 効 に す る に は、
BAUDCONレジスタのWUEビットをセットします。
WUE ビットをセットすると、RX/DT での通常受信
シーケンスが無効になり、EUSART がアイドル状態
のままとなって、CPU のモードとは関係なくウェイ
クアップ イベントをモニタします。ウェイクアッ
プ イベントは、RX/DT ラインでの High から Low へ
の遷移で構成されます (LIN プロトコル用の同期ブ
レークまたはウェイクアップ信号文字の開始も同
時に開始される )。
EUSART モジュールは、ウェイクアップ イベントと
同時に RCIF 割り込みを生成します。この割り込み
は、通常の CPU 動作モードでは Q クロックと同期
して ( 図 18-7)、デバイスがスリープ モードの場合は
Q クロックとは非同期で生成されます ( 図 18-8)。割
り込み条件は、RCREG レジスタの読み出しでクリア
されます。
特殊な条件
ブレーク文字
ウェイクアップ イベント時の文字のエラーや文字
のフラグメントを防止するため、ウェイクアップ文
字はすべて「0」である必要があります。
ウェイクアップが有効なときには、データ ストリー
ムの Low 時間とは無関係に、この機能が動作しま
す。WUE ビットがセットされているときにゼロ以
外の有効な文字を受信した場合、スタート ビット
から最初の立ち上がりエッジまでの Low 時間が
ウェイクアップ イベントとして解釈されます。文
字の残りのビットはフラグメント文字として受信
され、
後続の文字でフレーミング エラーまたはオー
バーラン エラーが発生することがあります。
このため、送信する最初の 1 文字のビットはすべて
「0」にする必要があります。これは 10 以上のビッ
ト時間にする必要があり、LIN バスでは 13 ビット
時間をお勧めします。標準の RS-232 デバイスでは、
任意のビット時間にできます。
オシレータの起動時間
オシレータの起動時間を考慮する必要があり、特に
起動間隔が長いオシレータを使用する場合 (LP、
XT、HS/PLL のモードなど ) は特に注意する必要が
あります。同期ブレーク ( またはウェイクアップ信
号 ) の文字には十分な長さが必要で、その後、選択
したオシレータが起動し、EUSART を適切に初期化
できる十分な間隔が必要です。
WUE ビット
RCIFビットをセットすることにより、
ウェイクアッ
プ イベントでは受信割り込みが発生します。RX/DT
の立ち上がりエッジで、WUE ビットがハードウェ
アによりクリアされます。その後、割り込み条件が
RCREG レジスタの読み出しによりソフトウェアで
クリアされ、その内容が破棄されます。
実際のデータが失われないように、WUE ビットを
セットする前に RCIDL ビットをチェックして、受
信動作が実行中でないことを確認します。受信動作
を実行していない場合は、スリープ モードにする
直前に WUE ビットをセットできます。
WUE ビットは、
ブレーク終了時に RX ラインが Low
から High に遷移することで自動的にクリアされま
す。これにより、ブレーク イベントの終了を示し
ます。この時点で EUSART モジュールがアイドル
モードになり、次の文字の受信を待ちます。
DS41303E_JP - ページ 250
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 18-7:
通常動作時の自動ウェイクアップ ビット (WUE) のタイミング
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
OSC1
Auto Cleared
Bit set by user
WUE bit
RX/DT Line
RCIF
注
1:
図 18-8:
Cleared due to User Read of RCREG
WUE ビットがセットされているときには、EUSART はアイドルのままです。
スリープ時の自動ウェイクアップ ビット (WUE) のタイミング
Q1Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4
Q1
Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4
OSC1
Auto Cleared
Bit Set by User
WUE bit
RX/DT Line
注1
RCIF
Sleep Command Executed
注
1:
2:
Sleep Ends
Cleared due to User Read of RCREG
ウェイクアップ イベントで、オシレータの起動に長い時間が必要な場合、stposc 信号がアクティブな間に WUE ビットが自動的に
クリアされることがあります。このシーケンスは、Q クロックの有無には依存しません。
WUE ビットがセットされているときには、EUSART はアイドルのままです。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 251
PIC18F2XK20/4XK20
18.3.4
ブレーク文字のシーケンス
EUSART モジュールには、LIN バス規格に必要な特
殊文字ブレークのシーケンスを送信する機能があ
ります。ブレーク文字は、スタート ビット、12 ビッ
トの「0」、およびストップ ビットで構成されます。
ブレーク文字を送信するには、TXSTA レジスタの
SENDB ビットと TXEN ビットをセットします。そ
の後、TXREG レジスタへの書き込みによりブレー
ク文字の送信が開始されます。TXREG レジスタに
書き込まれたデータの値は無視され、すべて「0」
として送信されます。
対応するストップ ビットの送信後、SENDB ビット
がハードウェアにより自動的にリセットされます。
これにより、ブレーク文字の次の送信バイト ( 通常
は LIN 仕様の同期文字 ) を送信 FIFO にあらかじめ
ロードしておくことができます。
TXSTA レジスタの TRMT ビットは、通常の送信時
と同様に、送信動作がアクティブかアイドルかを示
します。ブレーク文字のシーケンスのタイミングに
ついては、図 18-9 を参照してください。
18.3.4.1
ブレークと同期の送信シーケンス
次のシーケンスにより、ブレークと自動ボーレート
同期バイトで構成されたメッセージ フレーム ヘッ
ダが送信されます。このシーケンスは、LIN バス マ
スターに典型的なものです。
1.
2.
3.
4.
5.
EUSART を希望のモードに設定します。
TXEN ビットと SENDB ビットをセットして、
ブレーク シーケンスを有効にします。
TXREGレジスタにダミー文字をロードして、送
信を起動します ( 値は無視されます )。
TXREG レジスタに「55h」を書き込んで、送信
FIFO バッファに同期文字をロードします。
ブレークの送信後、SENDBビットがハードウェ
アによりリセットされ、その後同期文字が送信
されます。
図 18-9:
TXREG レジスタが空になると、TXIF ビットにより
そのことが示され、次のデータ バイトが TXREG レ
ジスタに書き込み可能になります。
18.3.5
ブレーク文字の受信
EUSART モジュールでは、ブレーク文字を 2 つの方
法で受信できます。
ブレーク文字を検出する最初の方法では、RCSTA
レジスタの FERR ビット、および RCREG が示す受
信データを使用します。ボーレート ジェネレータ
は、予測したボーレートで初期化済みであると見な
されます。
次の状態のときに、ブレーク文字が受信済みです。
• RCIF ビット = セット
• FERR ビット = セット
• RCREG = 00h
2 つ目の方法では、18.3.3 項「ブレークでの自動ウェ
イクアップ」に記載の自動ウェイクアップ機能を使
用します。この機能を有効にすると、EUSART は
RX/DT での次の 2 つの遷移をサンプルし、RCIF 割
り込みを発生して、次のデータ バイトとその後の
割り込みを受信します。
通常は、ブレーク文字の後に、自動ボーレート検出
機能を有効にします。両方の方法で、EUSART をス
リープ モードにする前に、BAUDCON レジスタの
ABDEN ビットをセットできます。
ブレーク文字の送信シーケンス
Write to TXREG
Dummy Write
BRG Output
(Shift Clock)
TX (pin)
Start bit
bit 0
bit 1
bit 11
Stop bit
Break
TXIF bit
(Transmit
interrupt Flag)
TRMT bit
(Transmit Shift
Reg. Empty Flag)
SENDB
(send Break
control bit)
DS41303E_JP - ページ 252
SENDB Sampled Here
Preliminary
Auto Cleared
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
18.4
EUSART の同期モード
同期シリアル通信は通常、マスターを 1 つ、スレー
ブを 1 つ以上持つシステムで使用されます。マス
ター デバイスにはボーレート生成に必要な回路が
あり、システム内のすべてのデバイスにクロックを
供給します。スレーブ デバイスはマスター クロッ
クを活用でき、クロック生成回路を内蔵する必要が
なくなります。
同期モードでは、双方向データ ラインとクロック
ラインという 2 本の信号ラインがあります。スレー
ブは、マスターが供給する外部クロックを使用し、
それぞれの送信 / 受信シフト レジスタにシリアル
データのシフト入力とシフト出力を行います。デー
タ ラインは双方向なので、同期動作は半二重のみ
です。半二重ということは、マスターとスレーブの
デバイスでデータの送信と受信ができる ( ただし同
時に両方は不可 ) ことを示します。EUSART は、マ
スター デバイスまたはスレーブ デバイスとして動
作できます。
同期送信では、スタート ビットとストップ ビット
は使用しません。
18.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 ビッ
トをセットする必要があります。
18.4.1.1
ビットが有効になります。各データ ビットで 1 ク
ロック サイクルが生成されます。データ ビットの
数だけ、クロック サイクルが生成されます。
18.4.1.2
クロックの極性
Microwire との互換性のために、クロックの極性オ
プションが用意されています。クロックの極性は、
BAUDCONレジスタのCKTXPビットで選択します。
CKTXP ビットをセットすると、クロックのアイド
ル状態が High に設定されます。CKTXP ビットを
セットすると、データは各クロックの立ち下がり
エッジで変化し、各クロックの立ち上がりエッジで
サンプルされます。CKTXP ビットをクリアすると、
アイドル状態が Low に設定されます。CKTXP ビッ
トをクリアすると、データは各クロックの立ち上が
りエッジで変化し、各クロックの立ち下がりエッジ
でサンプルされます。
18.4.1.3
同期マスター送信
データは、RX/DT ピンからデバイス外に送信され
ます。EUSART を同期マスター送信動作に設定する
と、RX/DT および TX/CK のピンの出力ドライバが
自動的に有効になります。
TXREG レジスタに 1 文字を書き込むと、送信が開
始されます。TSR に前の文字のすべてまたは一部が
残っている場合は、その文字の最後のビットが送信
されるまで、新しい文字データは TXREG に保持さ
れます。これが最初の文字の場合、または前の文字
が TSR からすべて出ている場合には、TXREG の
データが即座に TSR レジスタに転送されます。
TXREG から TSR にデータを転送した直後に、文字
の送信シーケンスが開始されます。
各データ ビットはマスター クロックの立ち上がり
エッジで変化し、次のクロックの立ち上がりエッジ
まで有効です。
注:
TSR レジスタはデータ メモリにマップさ
れていないので、ユーザーが使用すること
はできません。
18.4.1.4
データの極性
送信 / 受信データの極性は、BAUDCON レジスタの
DTRXP ビットで制御できます。このビットのデ
フォルト値は「0」で、送信 / 受信データが正論理
になります。DTRXP ビットを「1」にセットする
と、データが反転され、送信 / 受信データが負論理
になります。
マスター クロック
同期データ送信では、データと同期する別のクロッ
ク ラインを使用します。マスターとして設定された
デバイスは、TX/CK ラインでクロックを送信しま
す。EUSART の同期送信 / 受信動作を設定すると、
TX/CK ピンの出力ドライバが自動的に有効になり
ます。シリアル データ ビットが立ち上がりエッジ
で変化し、各クロックの立ち下がりエッジでデータ
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 253
PIC18F2XK20/4XK20
18.4.1.5
1.
2.
3.
4.
同期マスター送信の設定 :
5.
SPBRGH と SPBRG のレジスタ ペアおよび
BRGH と BRG16 のビットを初期化して、使用
するボーレートを設定します (18.3 項「EUSART
ボーレート ジェネレータ (BRG)」を参照 )。
RX/DT および TX/CK ピンの TRIS 制御を「1」
にセットします。
SYNC、SPEN、および CSRC のビットをセット
して、同期マスターのシリアル ポートを有効に
します。RX/DT および TX/CK の I/O ピンに対
応する TRIS ビットをセットします。
SREN ビットと CREN ビットをクリアして、受
信モードを無効にします。
図 18-10:
6.
7.
8.
9.
TXEN ビットをセットして、送信モードを有効
にします。
9 ビット送信を使用する場合は、TX9 ビットを
セットします。
割り込みを使用する場合は、TXIE、GIE、およ
び PEIE の割り込みイネーブル ビットをセット
します。
9 ビット送信を選択する場合は、9 ビット目を
TX9D ビットにロードする必要があります。
TXREG レジスタにデータをロードして、送信
を開始します。
同期送信
RX/DT
pin
bit 0
bit 1
Word 1
bit 2
bit 7
bit 0
bit 1
Word 2
bit 7
TX/CK pin
(SCKP = 0)
TX/CK pin
(SCKP = 1)
Write to
TXREG Reg
Write Word 1
Write Word 2
TXIF bit
(Interrupt Flag)
TRMT bit
TXEN bit
注:
‘1’
‘1’
同期マスターモード、SPBRG = 0、8 ビット ワード 2 つの連続送信
図 18-11:
同期送信 (TXEN 経由 )
RX/DT pin
bit 0
bit 1
bit 2
bit 6
bit 7
TX/CK pin
Write to
TXREG reg
TXIF bit
TRMT bit
TXEN bit
DS41303E_JP - ページ 254
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 18-7:
Name
INTCON
同期マスター送信に関連するレジスタ
Bit 7
Bit 6
Bit 5
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
59
TRISC
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
60
59
TXREG
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
EUSART Transmit Register
59
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
BAUDCON
ABDOVF
RCIDL
DTRXP
CKTXP
BRG16
—
WUE
ABDEN
SPBRGH
EUSART Baud Rate Generator Register, High Byte
59
SPBRG
EUSART Baud Rate Generator Register, Low Byte
59
TXSTA
59
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは同期マスター送信では使用しません。
注 1: PIC18F2XK20 デバイスでは予約されています。常にクリアの状態にしてください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 255
PIC18F2XK20/4XK20
18.4.1.6
同期マスター受信
データは RX/DT ピンで受信します。EUSART を同
期マスター受信動作に設定した場合は、対応する
TRIS ビットをセットして、RX/DT ピンの出力ドラ
イバを無効にする必要があります。
同期モードでは、シングル受信イネーブル ビット
(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: Receive Shift Register) に
シフト入力されます。1 文字全体を RSR に受信する
と RCIF ビットがセットされ、その文字が 2 文字受
信 FIFO に自動転送されます。受信 FIFO の先頭文字
の下位 8 ビットが RCREG 内に入れられます。受信
FIFOに読み出されていない文字がある間、
RCIFビッ
トはセットされたままになります。
18.4.1.7
スレーブ クロック
同期データ転送では、データと同期する別のクロッ
ク ラインを使用します。スレーブとして設定された
デバイスは、TX/CK ラインでクロックを受信しま
す。デバイスを同期スレーブ送信 / 受信動作に設定
した場合は、対応する TRIS ビットをセットして、
TX/CK ピンの出力ドライバを無効にする必要があ
ります。シリアル データ ビットが立ち上がりエッ
ジで変化し、各クロックの立ち下がりエッジでデー
タ ビットが有効になります。各クロック サイクル
で 1 データ ビットが転送されます。データ ビット
の数だけ、クロック サイクルが受信されます。
18.4.1.8
受信オーバーラン エラー
受信FIFOバッファは2文字を保持できます。RCREG
レジスタを読み出して FIFO にアクセスする前に、
3 文字目をすべて受信した場合、オーバーラン エ
ラーが発生します。この場合、RCSTA レジスタの
OERR ビットがセットされます。FIFO 内の前のデー
タは上書きされません。FIFO バッファ内にある 2
文字の読み出しはできますが、エラーをクリアする
までそれ以降の文字は受信されません。オーバーラ
ン条件を解消することでのみ、OERR ビットをクリ
アできます。SREN ビットがセット、CREN ビット
DS41303E_JP - ページ 256
がクリアのときに、オーバーラン エラーが発生し
た場合、RCREG レジスタを読み出すとエラーがク
リアされます。CREN ビットがセットされていると
きにオーバーランが発生した場合、RCSTA レジス
タの CREN ビットをクリアするか、SPEN ビットを
クリアして EUSART をリセットすることで、
エラー
条件が解消されます。
18.4.1.9
9 ビット文字の受信
EUSART は、9 ビット文字の受信をサポートしてい
ます。RCSTA レジスタの RX9 ビットをセットする
と、EUSART は受信した各文字の 9 ビットを RSR
にシフト入力します。RCSTA レジスタの RX9D ビッ
トは、受信 FIFO の先頭にある、読み出されていな
い文字の 9 番目にある最上位データ ビットです。
受
信 FIFO バッファから 9 ビット データを読み出すと
きには、RCREG の下位 8 ビットより前に、RX9D
データ ビットを読み出す必要があります。
18.4.1.10
同期マスター受信の設定 :
1.
適切なボーレートを設定するために、SPBRGH、
SPBRG のレジスタ ペアを初期化します。必要
に応じて BRGH ビットと BRG16 ビットをセッ
トまたはクリアして、使用するボーレートを設
定します。
2. RX/DT および TX/CK ピンの TRIS 制御を「1」
にセットします。
3. SYNC、SPEN、および CSRC の各ビットをセッ
トして、同期マスターのシリアル ポートを有効
にします。対応する TRIS ビットをセットして、
RX/DT および TX/CK の出力ドライバを無効に
します。
4. CREN ビットと SREN ビットをクリアします。
5. 割り込みを使用する場合は、INTCON レジスタ
の GIE ビットと PEIE ビットをセットし、RCIE
ビットをセットします。
6. 9 ビット受信を使用する場合は、RX9 ビットを
セットします。
7. SREN ビットをセットするか、連続受信の場合
は CREN ビットをセットして、受信を開始し
ます。
8. 1 文字の受信が完了すると、割り込みフラグ
ビット RCIF がセットされます。イネーブル
ビット RCIE がセットされている場合は、割り
込みが生成されます。
9. RCSTA レジスタを読み出して 9 ビット目を取
得し ( 有効な場合 )、受信中にエラーが発生し
たかどうかを調べます。
10. RCREG レジスタを読み出して、8 ビットの受信
データを読み出します。
11. オーバーラン エラーが発生した場合は、RCSTA
レジスタの CREN ビットをクリアするか、SPEN
ビットをクリアしてEUSARTをリセットするこ
とで、エラーを解消します。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 18-12:
同期受信 ( マスター モード、SREN)
RX/DT
pin
bit 0
bit 1
bit 2
bit 3
bit 4
bit 5
bit 6
bit 7
TX/CK pin
(SCKP = 0)
TX/CK pin
(SCKP = 1)
Write to
bit SREN
SREN bit
CREN bit ‘0’
‘0’
RCIF bit
(Interrupt)
Read
RXREG
注:
タイミング図は、SREN = 1、BRGH = 0 の同期マスター モードを示します。
表 18-8:
Name
INTCON
同期マスター受信に関連するレジスタ
Bit 7
Bit 6
Bit 5
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
59
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
59
RCIDL
DTRXP
CKTXP
BRG16
—
WUE
ABDEN
59
RCSTA
RCREG
TXSTA
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
PSPIP
SPEN
EUSART Receive Register
CSRC
BAUDCON ABDOVF
59
SPBRGH
EUSART Baud Rate Generator Register, High Byte
59
SPBRG
EUSART Baud Rate Generator Register, Low Byte
59
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは同期マスター受信では使用しません。
注 1: 28 ピン デバイスでは予約されています。常にクリアの状態にしてください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 257
PIC18F2XK20/4XK20
18.4.2
同期スレーブ モード
EUSART を同期スレーブとして動作させるには、次
のビットを使用します。
• SYNC = 1
• CSRC = 0
1.
2.
3.
4.
• 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 機能を無効にする必
要があります。
対応する TRIS ビットをセットして、RX/DT および
TX/CKの出力ドライバを無効にする必要があります。
18.4.2.1
TXREG レジスタに 2 ワードが書き込まれ、その後
SLEEP 命令が実行されると、次の動作が実行され
ます。
5.
18.4.2.2
1.
2.
3.
4.
EUSART の同期スレーブ送信
同期マスター モードと同期スレーブ モードの動作
は、
スリープ モードの場合を除いて同じです(18.4.1.3
項「同期マスター送信」を参照 )。
5.
6.
7.
8.
表 18-9:
Name
INTCON
PIR1
PIE1
IPR1
RCSTA
TRISC
TXREG
TXSTA
BAUDCON
SPBRGH
SPBRG
最初の文字が即座に TSR レジスタに転送され、
送信されます。
2 つ目のワードは TXREG レジスタに残ります。
TXIF ビットはセットされません。
最初の文字が TSR からシフト出力された後、
TXREG レジスタが 2 番目の文字を TSR に転送
し、TXIF ビットがセットされます。
PEIE ビットと TXIE ビットがセットされている
場合は、割り込みによりデバイスはスリープか
らウェイクアップして次の命令を実行します。
GIE ビットもセットされている場合は、プログ
ラムが割り込みサービス ルーチンを呼び出し
ます。
同期スレーブ送信の設定 :
SYNC ビットと SPEN ビットをセットし、CSRC
ビットをクリアします。
RX/DT および TX/CK ピンの TRIS 制御を「1」
にセットします。
CREN ビットと SREN ビットをクリアします。
割り込みを使用する場合は、INTCON レジスタ
の GIE ビットと PEIE ビットをセットし、TXIE
ビットをセットします。
9 ビット送信を使用する場合は、TX9 ビットを
セットします。
TXEN ビットをセットして、送信を有効にし
ます。
9 ビット送信を選択する場合は、最上位ビット
を TX9D ビットにロードします。
TXREG レジスタに下位 8 ビットを書き込んで、
送信を開始します。
同期スレーブ送信に関連するレジスタ
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
GIE/GIEH PEIE/GIEL TMR0IE INT0IE
RBIE
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
RX9
SREN
CREN
ADDEN
SPEN
TRISC7
TRISC6
TRISC5 TRISC4 TRISC3
EUSART Transmit Register
SENDB
CSRC
TX9
TXEN
SYNC
ABDOVF RCIDL
DTRXP
CKTXP
BRG16
EUSART Baud Rate Generator Register, High Byte
EUSART Baud Rate Generator Register, Low Byte
Bit 2
Bit 1
Bit 0
TMR0IF
CCP1IF
CCP1IE
CCP1IP
FERR
TRISC2
INT0IF
TMR2IF
TMR2IE
TMR2IP
OERR
TRISC1
RBIF
TMR1IF
TMR1IE
TMR1IP
RX9D
TRISC0
BRGH
—
TRMT
WUE
TX9D
ABDEN
Reset
Values
on page
57
60
60
60
59
60
59
59
59
59
59
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは同期マスター送信では使用しません。
注 1: PIC18F2XK20 デバイスでは予約されています。常にクリアの状態にしてください。
DS41303E_JP - ページ 258
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
18.4.2.3
EUSART の同期スレーブ受信
18.4.2.4
同期マスター モードと同期スレーブ モードの動作
は同じですが (18.4.1.6 項「同期マスター受信」を参
照 )、次に示す点が異なります。
• スリープ
• CREN ビットは常にセットされ、このため受信器
がアイドルになることはありません。
• スレーブ モードでは、SREN ビットは「ドント
ケア」です。
スリープ モードになる前に CREN ビットをセット
することで、スリープ モードで文字を受信できま
す。文字を受信すると、RSR レジスタはデータを
RCREG レジスタに送信します。RCIE イネーブル
ビットがセットされている場合は、生成された割り
込みによりデバイスはスリープ モードからウェイ
クアップして次の命令を実行します。GIE ビットも
セットされている場合は、プログラムが割り込みベ
クタに分岐します。
1.
2.
3.
4.
5.
6.
7.
8.
9.
同期スレーブ受信の設定 :
SYNC ビットと SPEN ビットをセットし、CSRC
ビットをクリアします。
RX/DT および TX/CK ピンの TRIS 制御を「1」
にセットします。
割り込みを使用する場合は、INTCON レジスタ
の GIE ビットと PEIE ビットをセットし、RCIE
ビットをセットします。
9 ビット受信を使用する場合は、RX9 ビットを
セットします。
CREN ビットをセットして、受信を有効にし
ます。
受信が完了すると、RCIF ビットがセットされ
ます。RCIE ビットがセットされている場合は、
割り込みが生成されます。
9 ビット モードが有効な場合は、RCSTA レジ
スタの RX9D ビットから最上位ビットを読み出
します。
RCREG レジスタを読み出して、受信 FIFO から
下位 8 ビットを読み出します。
オーバーラン エラーが発生した場合は、RCSTA
レジスタの CREN ビットをクリアするか、SPEN
ビットをクリアしてEUSARTをリセットするこ
とで、エラーを解消します。
表 18-10: 同期スレーブ受信に関連するレジスタ
Name
INTCON
Bit 7
Bit 6
Bit 5
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
PIR1
PSPIF
(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
59
RCSTA
RCREG
PSPIP
SPEN
EUSART Receive Register
59
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
59
BAUDCON
ABDOVF
RCIDL
DTRXP
CKTXP
BRG16
—
WUE
ABDEN
59
SPBRGH
EUSART Baud Rate Generator Register, High Byte
59
SPBRG
EUSART Baud Rate Generator Register, Low Byte
59
TXSTA
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは同期スレーブ受信では使用しません。
注 1: 28 ピン デバイスでは予約されています。常にクリアの状態にしてください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 259
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 260
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
19.0
A/D コンバータ (ADC) モジュール
A/D コンバータ (ADC) は、アナログ入力信号を 10
ビットのバイナリ表現に変換します。このデバイス
ではアナログ入力を多重化して、1 つのサンプル
ホールド回路に入力します。サンプル ホールド回
路の出力が A/D コンバータの入力に接続されます。
A/D コンバータは逐次比較方式により 10 ビットの
バイナリ値を生成し、この変換結果を ADC 結果レ
ジスタ (ADRESL および ADRESH) に格納します。
ADC の電圧リファレンスとして、
VDD または外部リ
ファレンス ピンに印加された電圧のいずれかをソ
フトウェアで選択できます。
ADC は、変換完了時に割り込みを生成できます。こ
の割り込みを使用して、デバイスをスリープ モード
からウェイクアップできます。
図 19-1 に、ADC のブロック図を示します。
図 19-1:
ADC のブロック図
VCFG1 = 0
AVSS
VREF-
VCFG1 = 1
AVDD
VCFG0 = 0
VREF+
AN0
0000
AN1
0001
AN2
0010
AN3
0011
AN4
0100
AN5
0101
AN6
0110
AN7
0111
AN8
1000
AN9
1001
AN10
1010
AN11
1011
AN12
1100
Unused
1101
Unused
1110
VCFG0 = 1
ADC
10
GO/DONE
ADFM
0 = Left Justify
1 = Right Justify
ADON
10
VSS
ADRESH
ADRESL
1111
FVR
CHS<3:0>
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 261
PIC18F2XK20/4XK20
19.1
ADC の設定
19.1.4
ADC の設定や使用では、次の機能を考慮する必要
があります。
•
•
•
•
•
•
ポート設定
チャネル選択
ADC 電圧リファレンスの選択
ADC 変換のクロック ソース
割り込み制御
結果のフォーマット
19.1.1
ポート設定
ANSEL、ANSELH、TRISA、TRISB、および TRISE
のレジスタはすべて、A/D ポート ピンを設定しま
す。アナログ入力として必要なポート ピンについ
ては、対応する ANSx ビットをセットしてデジタル
入力バッファを無効にし、TRISx ビットをセットし
てデジタル出力ドライバを無効にする必要があり
ます。TRISx ビットがクリアされている場合、デジ
タル出力レベル (VOH または VOL) が変換されます。
A/D 動作は、ANSx ビットおよび TRIS ビットの状
態とは関係なく実行されます。
注 1:
2:
3:
19.1.2
PORT レジスタを読み出すと、対応する
ANSx ビットがセットされているピンは
すべてクリア状態 (Low レベル ) として
読み出されます。ただし、デジタル入力
として設定されているピン (ANSx ビッ
トがクリア、TRISx ビットがセット ) は、
正確に変換されます。
対応する ANSx ビットがクリアされてい
るピンにアナログ電圧を印加すると、デ
ジタル入力バッファに仕様を超える電
流が流れる場合があります。
構成レジスタ 3H の PBADEN ビットは、
ANSELH レジスタのビットのリセット
方法を制御し、PORTB ピンをアナログ
ピンまたはデジタル ピンとしてリセッ
トするように設定します。
チャネル選択
サンプル ホールド回路に接続するチャネルを、
ADCON0 レジスタの CHS ビットで設定します。
チャネルを変更するときには、次の変換を開始する
前に遅延が必要です。詳細については、19.2 項「ADC
の動作」を参照してください。
19.1.3
ADC 電圧リファレンス
ADCON1 レジスタの VCFG ビットは、正と負の電
圧リファレンスを個別に制御します。正電圧リファ
レンスには、VDD または外部電圧ソースのいずれか
を設定できます。同様に、負電圧リファレンスに
は、VSS または外部電圧ソースのいずれかを設定で
きます。
DS41303E_JP - ページ 262
アクイジション時間の選択と設定
ADCON2 レジスタを使用して、GO/DONE ビットが
セットされるたびに発生するアクイジション時間
を選択できます。
アクイジション時間は、ADCON2 レジスタの
ACQT<2:0> ビットで設定します。アクイジション
遅延は、2 ~ 20 x TAD の範囲をカバーします。GO/
DONE ビットがセットされているときには、A/D モ
ジュールは選択したアクイジション時間中に継続
して入力をサンプルし、その後、変換を自動的に開
始します。アクイジション時間はプログラム済みな
ので、チャネルを設定した後に、アクイジション時
間の経過を待たずに GO/DONE ビットをセットでき
ます。
ACQT<2:0> = 000 の場合は、手動アクイジションが
選択されます。GO/DONE ビットがセットされると、
サンプリングが停止して変換が開始されます。使用
する入力チャネルを選択してから GO/DONE ビット
をセットするまで、必要なアクイジション時間の経
過を確保するのは、ユーザーの責任です。また、こ
のオプションは ACQT<2:0> ビットのデフォルト リ
セット状態であり、アクイジション時間のプログラ
ム機能がないデバイスと互換性があります。
いずれの場合でも、変換が完了すると GO/DONE
ビットがクリアされ、ADIF フラグがセットされま
す。また、A/D が、現在選択されているチャネルの
サンプリングを再開します。アクイジション時間を
プログラムした場合、アクイジション時間が終了し
て変換が開始される時点は示されません。
19.1.5
変換クロック
変換クロックのソースは、ADCON2 レジスタの
ADCSビットを使用してソフトウェアで選択できま
す。クロックは次の 7 種類から選択できます。
• FOSC/2
• FOSC/4
• FOSC/8
• FOSC/16
• FOSC/32
• FOSC/64
• FRC ( 専用の内部オシレータ )
1ビットの変換に必要な時間はTADと定義されます。
10 ビット全体の変換には 11 TAD の時間が必要です
( 図 19-3 を参照 )。
変換を正しく実行するには、適切な TAD の仕様を満
たす必要があります。詳細については、表 26-25 の
A/D 変換の要件を参照してください。表 19-1 に、適
切な ADC クロックの選択例を示します。
注:
Preliminary
FRC を使用する場合を除き、システム ク
ロック周波数を変更すると ADC クロック
周波数も変化するため、ADC の結果に悪
影響を与えることがあります。
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
19.1.6
この割り込みは、デバイスの動作中およびスリープ
モードのいずれでも生成できます。スリープ モー
ドでは、割り込みによってデバイスがウェイクアッ
プします。スリープ モードからウェイクアップす
ると、SLEEP 命令の次の命令が必ず実行されます。
スリープ モードからウェイクアップ後、インライ
ン コード実行を再開する場合は、グローバル割り
込みを無効にしておく必要があります。グローバル
割り込みが有効な場合は、実行は割り込みサービス
ルーチンに切り替わります。詳細については、19.1.6
項「割り込み」を参照してください。
割り込み
ADC モジュールは、A/D 変換完了時に割り込みを
生成できます。PIR1 レジスタの ADIF ビットが ADC
割り込みフラグ ビットです。PIE1 レジスタの ADIE
ビットが ADC 割り込みイネーブル ビットです。
ADIF ビットは、ソフトウェアでクリアする必要が
あります。
注:
ADC 割り込みが有効か無効かにかかわら
ず、変換完了時には必ず ADIF ビットが
セットされます。
表 19-1:
ADC のクロック周期 (TAD) とデバイスの動作周波数
ADC Clock Period (TAD)
ADC Clock Source
Device Frequency (FOSC)
ADCS<2:0>
FOSC/2
64 MHz
31.25
000
FOSC/4
62.5 ns
100
16 MHz
ns(2)
125
(2)
1 MHz
2.0 s
1.0 s
4.0 s(3)
ns(2)
2.0 s
8.0 s(3)
FOSC/8
001
400
FOSC/16
101
250 ns(2)
1.0 s
4.0 s(3)
16.0 s(3)
FOSC/32
010
500 ns(2)
2.0 s
8.0 s(3)
32.0 s(3)
s(3)
64.0 s(3)
1-4 s(1,4)
1-4 s(1,4)
FOSC/64
110
1.0 s
FRC
x11
1-4 s(1,4)
500
500
ns(2)
(2)
250 ns
ns(2)
4 MHz
ns(2)
4.0
s(3)
16.0
1-4 s(1,4)
記号の説明 : 網掛けの値は推奨範囲外。
注 1: FRC ソースの TAD 時間は 1.7 s ( 代表値 ) です。
2: これらの値は TAD 時間の最小要件を満たしていません。
3: より高速な変換には、別のクロック ソースを選択することをお勧めします。
4: デバイス周波数が 1 MHz を超えるときには、スリープ モードでの変換が必要な場合のみ FRC クロッ
ク ソースを使用することをお勧めします。
19.1.7
結果のフォーマット
10 ビットの A/D 変換の結果は、右詰めと左詰めの
いず れ かの フ ォー マッ ト で出 力で き ます。出 力
フォーマットは、ADCON2 レジスタの ADFM ビッ
トで設定します。
図 19-2 に、2 つの出力フォーマットを示します。
図 19-2:
10 ビット A/D 変換結果のフォーマット
ADRESH
(ADFM = 0)
ADRESL
MSB
LSB
bit 7
bit 0
bit 7
10-bit A/D Result
bit 0
Unimplemented: Read as ‘0’
MSB
(ADFM = 1)
bit 7
LSB
bit 0
Unimplemented: Read as ‘0’
 2009 Microchip Technology Inc.
bit 7
bit 0
10-bit A/D Result
Preliminary
DS41303E_JP - ページ 263
PIC18F2XK20/4XK20
19.2
ADC の動作
19.2.1
図 19-3 に、
GO ビットをセットして ACQT<2:0> ビッ
トをクリアした後の ADC の動作を示します。変換
は、SLEEP モードでの入力を許可する後続の命令
の後に開始されます。
変換の開始
ADC モジュールを有効にするには、ADCON0 レジ
ス タ の ADON ビ ッ ト を「1」に セ ッ ト し ま す。
ADCON0 レジスタの GO/DONE ビットを「1」に
セットすると、ADCON2 レジスタの ACQT ビット
に従って、A/D 変換を即座に開始するか、アクイジ
ション遅延を開始してから A/D 変換を実行します。
図 19-3:
図 19-4 に、GO ビットをセットし、ACQT<2:0> ビッ
トを
「010 に設定 ( 変換を開始する前のアクイジショ
ン時間として 4 TAD を選択 ) したときの ADC の動作
を示します。
注:
ADC をオンにする命令と同じ命令で GO/
DONE ビットをセットしないでください。
19.2.9 項「AD 変換の手順」を参照してく
ださい。
A/D 変換の TAD サイクル (ACQT<2:0> = 000、TACQ = 0)
TCY - TAD TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 TAD11 2 TAD
b4
b1
b0
b6
b7
b2
b9
b8
b3
b5
Conversion starts
Discharge
Holding capacitor is disconnected from analog input (typically 100 ns)
Set GO bit
On the following cycle:
ADRESH:ADRESL is loaded, GO bit is cleared,
ADIF bit is set, holding capacitor is connected to analog input.
図 19-4:
A/D 変換の TAD サイクル (ACQT<2:0> = 010、TACQ = 4 TAD)
TAD Cycles
TACQT Cycles
1
2
3
Automatic
Acquisition
Time
4
1
3
4
5
6
7
8
9
10
11
b9
b8
b7
b6
b5
b4
b3
b2
b1
b0
Conversion starts
(Holding capacitor is disconnected from analog input)
Set GO bit
(Holding capacitor continues
acquiring input)
DS41303E_JP - ページ 264
2
2 TAD
Discharge
On the following cycle:
ADRESH:ADRESL is loaded, GO bit is cleared,
ADIF bit is set, holding capacitor is connected to analog input.
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
19.2.2
19.2.7
変換の完了
変換が完了すると、ADC モジュールは次の動作を
行います。
• GO/DONE ビットをクリアする
• ADIF フラグ ビットをセットする
• ADRESH:ADRESL レジスタに新しい変換結果を
書き込む
19.2.3
放電
放電段階は、コンデンサ アレイの値を初期化する
ために使用します。コンデンサ アレイは、各サン
プル後に放電されます。この機能は、ユニティゲイ
ン アンプの最適化に役立ちます。これは、直前の
計測値に基づいて充電 / 放電するのではなく回路が
常にコンデンサ アレイを充電する必要があるから
です。
19.2.4
変換の中止
変換の完了前に中止する場合は、GO/DONE ビット
をソフトウェアでクリアします。完了していない
A/D 変換のサンプルで ADRESH:ADRESL レジスタ
が 更 新 さ れ る こ と は あ り ま せ ん。こ の 場 合、
ADRESH:ADRESL レジスタ ペアには直前の変換結
果の値が保持されます。
注:
19.2.5
デバイスをリセットすると、すべてのレジ
スタが強制的にリセット状態に戻ります。
このため、ADC モジュールはオフになり、
その後の変換はすべて中止されます。
各変換の間の遅延
スリープ モードの ADC の動作
ADC モジュールはスリープ モードでも動作できま
す。スリープ モードで動作させるには、ADC クロッ
ク ソースを FRC に設定する必要があります。
クロッ
ク ソースに FRC を選択した場合、ADC は変換の開
始前に更に 1 命令サイクルだけ長く待ちます。ここ
で SLEEP 命令を実行して、変換時のシステム ノイ
ズを抑えることができます。ADC 割り込みを有効
にしている場合、A/D 変換が完了するとデバイスが
スリープ モードからウェイクアップします。ADC
割り込みが無効な場合は、A/D 変換完了後に ADC
モジュールがオフになります (ADON ビットはセッ
トされたまま )。
ADC のクロック ソースが FRC 以外の場合は、SLEEP
命令によって現在の変換が中止され、ADC モジュー
ルがオフになります (ADON ビットはセットされた
まま )。
19.2.8
特殊イベント トリガ
CCP2 の特殊イベント トリガを使用すると、ソフト
ウェアによる割り込みなしで定期的にA/D変換を実
行できます。このトリガが発生すると、GO/DONE
ビットがハードウェアからセットされ、Timer1 また
は Timer3 のカウンタが 0 にリセットされます。
特殊イベント トリガを使用した場合、A/D 変換が適
切なタイミングで実行されるかどうかは保証され
ません。ADC のタイミング条件が満たされている
かどうかは、ユーザーが確認してください。
詳細については、11.3.4 項「特殊イベント トリガ」
を参照してください。
A/D 変換の完了後または中止後、次のアクイジショ
ンを開始するまで 2 TAD の待ち時間が必要です。こ
の待ち時間後、現在選択されているチャネルが電荷
保持コンデンサに再接続され、次のアクイジション
を開始します。
19.2.6
電源管理モードでの ADC の動作
電源管理モードでの自動アクイジション時間と A/D
変換クロックは、クロック ソースと周波数によりあ
る程度決まります。
電源管理モードのデバイスで A/D を使用する場合、
そのモードで使用するクロック ソースに合わせて、
ADCON2 レジスタの ACQT<2:0> および ADCS<2:0>
のビットを更新する必要があります。
電源管理モード
になると、A/D アクイジションまたは A/D 変換を開
始できます。開始後、変換が完了するまでデバイスを
同じクロック ソースで駆動する必要があります。
必要に応じて、変換中にデバイスを対応するアイド
ル モードにできます。デバイスのクロック周波数
が 1 MHz 未満の場合は、A/D FRC のクロック ソー
スを選択する必要があります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 265
PIC18F2XK20/4XK20
19.2.9
AD 変換の手順
例 19-1:
ADC を使用して A/D 変換を実行するための手順の
例を示します。
1.
2.
3.
4.
5.
6.
7.
8.
ポートを設定する :
• ピン出力ドライバを無効にする (TRIS レジス
タを参照 )
• ピンをアナログに設定する
ADC モジュールを設定する :
• ADC 変換クロックを選択する
• 電圧リファレンスを設定する
• ADC 入力チャネルを選択する
• 結果のフォーマットを選択する
• アクイジション遅延を選択する
• ADC モジュールをオンにする
ADC 割り込みを設定する ( オプション ):
• ADC 割り込みフラグをクリアする
• ADC 割り込みを許可する
• 周辺割り込みを許可する
• グローバル割り込みを許可する (1)
必要なアクイジション時間の経過を待つ (2)
GO/DONE ビットをセットして変換を開始する
次のいずれかにより、ADC 変換の完了を待つ :
• GO/DONE ビットをポーリングする
• ADC割り込みを待つ(割り込みが有効な場合)
ADC の結果を読み出す
ADC 割り込みフラグをクリアする ( 割り込みが
有効な場合は必須 )
注 1:
スリープ モードからウェイクアップ後、
インライン コードの実行を再開する場
合は、グローバル割り込みを無効にでき
ます。
2:
ACQTビットで遅延をゼロに設定した場
合は、ソフトウェアによる遅延が必要で
す。19.3 項「A/D アクイジションの要件」
を参照してください。
DS41303E_JP - ページ 266
A/D 変換
;This code block configures the ADC
;for polling, Vdd and Vss as reference, Frc
clock and AN0 input.
;
;Conversion start & polling for completion
; are included.
;
MOVLW
B’10101111’ ;right justify, Frc,
MOVWF
ADCON2
; & 12 TAD ACQ time
MOVLW
B’00000000’ ;ADC ref = Vdd,Vss
MOVWF
ADCON1
;
BSF
TRISA,0
;Set RA0 to input
BSF
ANSEL,0
;Set RA0 to analog
MOVLW
B’00000001’ ;AN0, ADC on
MOVWF
ADCON0
;
BSF
ADCON0,GO
;Start conversion
ADCPoll:
BTFSC
ADCON0,GO
;Is conversion done?
BRA
ADCPoll
;No, test again
; Result is complete - store 2 MSbits in
; RESULTHI and 8 LSbits in RESULTLO
MOVFF
ADRESH,RESULTHI
MOVFF
ADRESL,RESULTLO
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
19.2.10
ADC のレジスタの定義
ADC の動作設定には次のレジスタを使用します。
注:
アナログ ピンは、ANSEL および ANSELH
のレジスタで制御します。ANSEL レジス
タについてはレジスタ 10-2、ANSELH レ
ジスタについてはレジスタ 10-3 を参照し
てください。
レジスタ 19-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 = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
ビット 7-6
未実装 :「0」として読み出し
ビット 5-2
CHS<3:0>: アナログ チャネル選択ビット
0000 = AN0
0001 = AN1
0010 = AN2
0011 = AN3
0100 = AN4
0101 = AN5(1)
0110 = AN6(1)
0111 = AN7(1)
1000 = AN8
1001 = AN9
1010 = AN10
1011 = AN11
1100 = AN12
1101 = 予約
1110 = 予約
1111 = FVR (1.2V 固定電圧リファレンス )(2)
ビット 1
GO/DONE: A/D 変換ステータス ビット
1 = A/D 変換サイクルが進行中。このビットをセットすると、A/D 変換サイクルが開始します。
このビットは、A/D 変換が完了するとハードウェアで自動的にクリアされます。
0 = A/D 変換が完了 ( 進行中でない )
ビット 0
ADON: ADC イネーブル ビット
1 = ADC を有効にする
0 = ADC を無効にし、動作電流を消費しない
注 1:
2:
これらのチャネルは、PIC18F2XK20 デバイスには未実装です。
固定電圧リファレンスの計測時には、15 s より長いアクイジション時間を使用できます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 267
PIC18F2XK20/4XK20
レジスタ 19-2:
ADCON1: A/D 制御レジスタ 1
U-0
U-0
R/W-0
R/W-0
U-0
U-0
U-0
U-0
—
—
VCFG1
VCFG0
—
—
—
—
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
ビット 7-6
未実装 :「0」として読み出し
ビット 5
VCFG1: 負電圧リファレンス選択ビット
1 = 負電圧リファレンスを VREF- ピン経由で外部から入力
0 = 負電圧リファレンスを VSS で内部入力
ビット 4
VCFG0: 正電圧リファレンス選択ビット
1 = 正電圧リファレンスを VREF+ ピン経由で外部から入力
0 = 正電圧リファレンスを VDD で内部入力
ビット 3-0
未実装 :「0」として読み出し
DS41303E_JP - ページ 268
Preliminary
x = 不明
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 19-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 = 読み出し可
-n = POR 時の値
ビット 7
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
ADFM: A/D 変換結果フォーマット選択ビット
1 = 右詰め
0 = 左詰め
ビット 6
未実装 :「0」として読み出し
ビット 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
ビット 2-0
ADCS<2:0>: A/D 変換クロック選択ビット
000 = FOSC/2
001 = FOSC/8
010 = FOSC/32
011 = FRC(1) ( 専用内部オシレータのクロック、公称値 600 kHz)
100 = FOSC/4
101 = FOSC/16
110 = FOSC/64
111 = FRC(1) ( 専用内部オシレータのクロック、公称値 600 kHz)
注 1:
A/D クロック ソースとして FRC を選択した場合、GO/DONE ビットをセットした後の変換の開始が
1 命令サイクル遅延され、SLEEP 命令を実行できます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 269
PIC18F2XK20/4XK20
レジスタ 19-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 = 書き込み可
-n = POR 時の値
ビット 7-0
U = 未実装ビット。
「0」として読み出し
「1」= セット
x = 不明
「0」= クリア
ADRES<9:2>: ADC 結果レジスタ ビット
10 ビットの変換結果の上位 8 ビット
レジスタ 19-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 = 書き込み可
-n = POR 時の値
U = 未実装ビット。
「0」として読み出し
「1」= セット
ビット 7-6
ADRES<1:0>: ADC 結果レジスタ ビット
10 ビット変換結果の下位 2 ビット
ビット 5-0
予約 : 使用不可
レジスタ 19-6:
x = 不明
「0」= クリア
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 = 書き込み可
-n = POR 時の値
U = 未実装ビット。
「0」として読み出し
「1」= セット
ビット 7-2
予約 : 使用不可
ビット 1-0
ADRES<9:8>: ADC 結果レジスタ ビット
10 ビット変換結果の上位 2 ビット
レジスタ 19-7:
x = 不明
「0」= クリア
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 = 書き込み可
-n = POR 時の値
ビット 7-0
U = 未実装ビット。
「0」として読み出し
「1」= セット
「0」= クリア
x = 不明
ADRES<7:0>: ADC 結果レジスタ ビット
10 ビット変換結果の下位 8 ビット
DS41303E_JP - ページ 270
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
19.3
A/D アクイジションの要件
ADC で仕様どおりの精度を実現するには、電荷保持
コンデンサ (CHOLD) を入力チャネルの電圧レベルま
でフルに充電する必要があります。図 19-5 にアナロ
グ入力モデルを示します。ソース インピーダンス
(RS) および内部サンプリング スイッチ (RSS) のイン
ピーダンスは、コンデンサ CHOLD の充電時間に直接
影響します。サンプリング スイッチ (RSS) のイン
ピーダンスは、デバイス電圧 (VDD) により変化しま
す ( 図 19-5 を参照 )。アナログ ソースの推奨最大イ
ンピーダンスは、10 k です。ソース インピーダン
スが低下すると、それに伴ってアクイジション時間
が短くなります。アナログ入力チャネルの選択後
式 19-1:
( または変更後 ) には、変換を開始する前に A/D ア
クイジションを実行する必要があります。最小アク
イジション時間の計算には式 19-1 を使用できます。
この式では、1/2 LSb 誤差の適用を前提としていま
す (ADC は 1024 ステップ )。1/2 LSb 誤差は、仕様の
分解能を ADC で実現する場合の最大許容誤差です。
アクイジション時間の例
Assumptions:
Temperature  50C and external impedance of 10k 3.0V VDD
T ACQ = Amplifier Settling Time + Hold Capacitor Charging Time + Temperature Coefficient
= T AMP + T C + T COFF
 5µs + TC + [(Temperature - 25C)(0.05µs/C)]
The value for TC can be approximated with the following equations:
1 - = V CHOLD
V APPLIED  1 – ----------
2047
;[1] VCHOLD charged to within 1/2 lsb
–T C
----------

RC
V APPLIED  1 – e  = V CHOLD


;[2] VCHOLD charge response to VAPPLIED
– Tc
---------

RC
1 -
V APPLIED  1 – e  = V APPLIED  1 – ----------
2047


;combining [1] and [2]
Solving for TC:
T C = – C HOLD  R IC + R SS + R S  ln(1/2047)
= – 13.5pF  1k  + 700  + 10k   ln(0.0004885)
 1.20µs
Therefore:
TACQ  5µs + 1.20µs + [(50C - 25C)(0.05µs/C)]
 7.45µs
注 1:
リファレンス電圧 (VREF) は自己相殺されるため、上式には影響しません。
2:
変換が完了するたびに電荷保持コンデンサ (CHOLD) が放電されます。
3:
アナログ ソースの推奨最大インピーダンスは、10 k です。この値はピンのリーク電流の仕様を
満たすために必要です。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 271
PIC18F2XK20/4XK20
図 19-5:
アナログ入力モデル
VDD
Rs
ANx
RIC  1k
CPIN
5 pF
I LEAKAGE(1)
VA
Sampling
Switch
SS Rss
CHOLD = 13.5 pF
Discharge
Switch
注 1:
図 19-6:
VDD
Legend: CPIN
= Input Capacitance
I LEAKAGE = Leakage current at the pin due to
various junctions
RIC
= Interconnect Resistance
SS
= Sampling Switch
CHOLD
= Sample/Hold Capacitance
VSS/VREF-
3.5V
3.0V
2.5V
2.0V
1.5V
.1
1
10
Rss (k)
100
26.0 項「電気的特性」を参照してください。
ADC の伝達関数
Full-Scale Range
3FFh
3FEh
ADC Output Code
3FDh
3FCh
1/2 LSB ideal
3FBh
Full-Scale
Transition
004h
003h
002h
001h
000h
Analog Input Voltage
1/2 LSB ideal
VSS/VREF-
DS41303E_JP - ページ 272
Zero-Scale
Transition
VDD/VREF+
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 19-2:
Name
INTCON
A/D 動作に関連するレジスタ
Bit 7
Bit 6
Bit 5
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
PIR1
PSPIF(1)
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
60
PIE1
PSPIE(1)
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
60
IPR1
PSPIP(1)
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
60
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
60
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
60
IPR2
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
60
ADRESH A/D Result Register, High Byte
59
ADRESL A/D Result Register, Low Byte
59
ADCON0
—
—
CHS3
CHS2
CHS1
CHS0
GO/DONE
ADON
59
ADCON1
—
—
VCFG1
VCFG0
—
—
—
—
59
ADCON2
ADFM
ACQT2
ACQT1
ACQT0
ADCS2
ADCS1
ADCS0
59
ANSEL
ANSELH
PORTA
(1)
—
(1)
(1)
ANS7
ANS6
ANS5
ANS4
ANS3
ANS2
ANS1
ANS0
60
—
—
—
ANS12
ANS11
ANS10
ANS9
ANS8
60
RA7(2)
RA6(2)
RA5
RA4
RA3
RA2
RA1
RA0
TRISA7(2) TRISA6(2) PORTA Data Direction Control Register
TRISA
PORTB
RB7
RB6
RB5
RB4
RB3
TRISB
PORTB Data Direction Control Register
LATB
PORTB Data Latch Register (Read and Write to Data Latch)
PORTE
TRISE
(4)
(4)
LATE(4)
60
60
RB2
RB1
RB0
60
60
—
—
—
—
RE3(3)
IBF
OBF
IBOV
PSPMODE
—
—
—
—
—
—
60
RE2
RE1
RE0
60
TRISE2
TRISE1
TRISE0
60
PORTE Data Latch Register
60
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットは A/D 変換では使用しません。
注 1: これらのビットは PIC18F2XK20 デバイスでは未実装です。常にクリアの状態にしてください。
2: PORTA<7:6> とその方向ビットは、さまざまなプライマリ オシレータ モードに基づいてポート ピンと
して個々に設定します。無効にすると、これらのビットは「0」として読み出されます。
3: RE3 ポート ピンは、MCLRE 構成ビットが「0」の場合に入力ピンとしてのみ使用できます。
4: これらのレジスタは、PIC18F2XK20 デバイスには未実装です。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 273
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 274
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
20.0
図 20-1:
コンパレータ モジュール
コンパレータは、2 つのアナログ電圧を比較し、そ
の相対的な大きさをデジタル値で表すことでアナ
ログ回路をデジタル回路に接続します。コンパレー
タはプログラム実行とは独立したアナログ機能を
提供するため、ミックスド シグナル ( アナログ信号
とデジタル信号が混在する環境 ) において、きわめ
て有用な構成要素です。アナログ コンパレータ モ
ジュールには、次の機能があります。
•
•
•
•
•
•
•
•
•
独立したコンパレータ制御
入力選択をプログラム可能
コンパレータ出力を内部 / 外部で利用可能
出力極性をプログラム可能
状態変化割り込み
スリープ モードからのウェイクアップ
速度 / 電力の最適化をプログラム可能
PWM シャットダウン
プログラム可能および固定の電圧リファレンス
20.1
シングル コンパレータ
VIN+
+
VIN-
–
Output
VINVIN+
Output
注 : コンパレータ出力の黒い部分は、入力オフ
セットや応答時間によって変動する範囲を
表します。
コンパレータの概要
シングル コンパレータ、およびアナログ入力レベ
ルとデジタル出力の関係を図 20-1 に示します。VIN+
のアナログ電圧が VIN- のアナログ電圧よりも低い
場合、コンパレータ出力はデジタル Low レベルと
なります。VIN+ のアナログ電圧が VIN- のアナログ
電圧よりも高い場合、コンパレータ出力はデジタル
High レベルとなります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 275
PIC18F2XK20/4XK20
図 20-2: コンパレータ C1 の概略ブロック図
C1CH<1:0>
2
D
Q1
C12IN0-
0
C12IN1C12IN2-
1
MUX
2
C12IN3-
3
To
Data Bus
Q
EN
RD_CM1CON0
D
Q3*RD_CM1CON0
EN
CL
C1R
FVR
C1OE
0
MUX
1
0
MUX
C1VREF
1
CVREF
注 1:
2:
C1RSEL
3:
4:
図 20-3:
To PWM Logic
Reset
C1ON(1)
C1IN+
Set C1IF
Q
C1VIN- C1VIN+ C1
+
C1OUT
C1SP
C1OUT pin(2)
C1POL
C1ON = 0 の場合、C1 コンパレータは XOR ゲートに「0」を出力します。
出力は参考データとしてのみ表示しています。詳細は、I/O ポート ピンのブロック図を
参照してください。
Q1 と Q3 は、4 相システム クロック (FOSC) の位相です。
スリープ モードでは Q1 は High に保持されます。
コンパレータ C2 の概略ブロック図
D
Q1
To
Data Bus
Q
EN
RD_CM2CON0
C2CH<1:0>
2
D
C2ON(1)
C12IN0-
0
C12IN1C12IN2-
1
MUX
2
C12IN3-
3
FVR
CVREF
C2RSEL
C2VIN+
EN
CL
NRESET
To PWM Logic
C2OE
C2OUT
C2
C2OUT pin(2)
C2POL
0
MUX
1
0
MUX
C2VREF
1
注 1:
2:
3:
4:
DS41303E_JP - ページ 276
C2VIN-
C2SP
C2R
C2IN+
Q3*RD_CM2CON0
Set C2IF
Q
C2ON = 0 の場合、C2 コンパレータは XOR ゲートに「0」を出力します。
出力は参考データとしてのみ表示しています。詳細は、I/O ポート ピンのブロック図を
参照してください。
Q1 と Q3 は、4 相システム クロック (FOSC) の位相です。
スリープ モードでは Q1 は High に保持されます。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
20.2
コンパレータの制御
各コンパレータは個別に制御され、コンパレータ 1
には構成レジスタ CM1CON0、コンパレータ 2 には
構成レジスタ CM2CON0 があります。また、コンパ
レータ C2 にはもう 1 つの構成レジスタとして
CM2CON1 が用意されており、Timer1 との連動の制
御や、2 つのコンパレータ出力の同時読み出しに使
用します。
CM1CON0 レジスタと CM2CON0 レジスタ ( それぞ
れ 20-1 と 20-2 のレジスタを参照 ) には、次の制御
ビットとステータス ビットがあります。
•
•
•
•
•
•
イネーブル
入力選択
リファレンス選択
出力選択
出力極性
速度選択
20.2.1
2:
コンパレータの内部出力は各命令サイ
クルでラッチされます。特に指定のない
限り、外部出力はラッチされません。
20.2.5
コンパレータ出力の極性
コンパレータの出力を反転することは、コンパレー
タの入力を入れ替えることと機能的に等価です。コ
ンパレータ出力の極性を反転するには、CMxCON0
レジスタの CxPOL ビットをセットします。CxPOL
ビットをクリアすると出力は反転されません。
表 20-1:
コンパレータ イネーブル
コンパレータ入力の選択
CMxCON0 レジスタの CxCH<1:0> ビットは、4 つの
アナログ入力ピンの 1 つをコンパレータの反転入力
に指定します。
注:
CxIN+ ピンと C12INx ピンをアナログ入力
として使用するには、ANSEL レジスタの
対応するビットをセットするとともに、対
応する TRIS ビットもセットして出力ドラ
イバを無効にする必要があります。
20.2.3
コンパレータのリファレンスの選択
CMxCON0 レジスタの CxR ビットをセットして、内
部電圧リファレンスまたはアナログ入力ピンのい
ずれをコンパレータの非反転入力に接続するかを
選択します。内部電圧リファレンス モジュールの
詳細は、21.0 項「電圧リファレンス」を参照してく
ださい。
20.2.4
CxOE ビットは PORT データ ラッチより
も優先されます。CxON をセットしても
ポートの無効化には影響しません。
表 20-1 に、入力条件および極性制御に対する出力
状態を示します。
CMxCON0 レジスタの CxON ビットをセットすると
コンパレータの動作が可能になります。CxON ビッ
トをクリアするとコンパレータが無効になり、消費
電力を最小限に抑えられます。
20.2.2
注 1:
コンパレータ出力の選択
コンパレータの出力は、CMxCON0 レジスタの
CxOUT ビットまたは CM2CON1 レジスタの
MCxOUT ビットを読み出すことでモニタできます。
出力を外部接続して使用するには、次の条件を満た
す必要があります。
コンパレータの入力条件に対する
出力状態
Input Condition
CxPOL
CxOUT
CxVIN- > CxVIN+
0
0
CxVIN- < CxVIN+
0
1
CxVIN- > CxVIN+
1
1
CxVIN- < CxVIN+
1
0
20.2.6
コンパレータ速度の選択
プログラムの実行速度と消費電力とのトレードオ
フを、CxSP 制御ビットで最適化できます。このビッ
トのデフォルト値は「1」で、通常速度のモードが
選択されます。デバイスの消費電力は、CxSP ビッ
トを「0」にクリアしてコンパレータの伝搬遅延を
低速にすることにより最適化できます。
20.3
コンパレータの応答時間
入力ソースの変更後や新しいリファレンス電圧の
選択後に、コンパレータの出力が不定となる期間が
あります。この期間を、応答時間と呼びます。コン
パレータの応答時間は、電圧リファレンスのセトリ
ング タイムとは異なります。このため、コンパレー
タの入力変化に対する総応答時間を決定するとき
には、コンパレータの応答時間と電圧リファレンス
のセトリング タイムの両方を考慮する必要があり
ます。詳細は、26.0 項「電気的特性」のコンパレー
タと電圧リファレンスの仕様を参照してください。
• CMxCON0 レジスタの CxOE ビットがセットされ
ている
• 対応する TRIS ビットがクリアされている
• CMxCON0 レジスタの CxON ビットがセットされ
ている
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 277
PIC18F2XK20/4XK20
20.4
20.4.1
コンパレータの割り込み動作
コンパレータの出力値が変化したときはいつでも、
コンパレータ割り込みフラグをセットできます。変
化は、2 つのラッチと 1 つの XOR ゲートで構成さ
れた不一致回路で検出されます ( 図 20-2 および
図 20-3 を参照 )。CMxCON0 レジスタの読み出し時
に、一方のラッチがコンパレータ出力レベルで更新
されます。このラッチの値は、次に CMxCON0 レジ
スタを読み出すか、リセットが発生するまで保持さ
れます。不一致回路のもう一方のラッチは、Q1 シ
ステム クロックごとに更新されます。コンパレー
タ出力の変化が、Q1 クロック サイクルで動作する
もう一方のラッチを経由して出力されると、不一致
条件が発生します。この時点で不一致回路の 2 つの
ラッチの出力レベルが反対になり、
これがXORゲー
トで検出されて割り込み回路に送られます。不一致
条件は、CMxCON0 レジスタが読み出されるか、ま
たはコンパレータ出力が元の状態に戻るまで続き
ます。
注 1:
2:
CMxCON0レジスタに対して書き込みを
行っても、不一致条件は解消されます。
これは、すべての書き込み動作におい
て、書き込みサイクルの先頭で読み出し
動作が実行されるためです。
コンパレータの割り込みは、CxOE の状
態に関係なく正しく動作します。
コンパレータの割り込みは、不一致レベルではなく
不一致エッジによってセットされます。つまり、
CMxCON0 レジスタの読み出しまたは書き込みを
行って不一致レジスタをクリアしなくても割り込
みフラグをリセットできます。不一致レジスタがク
リアされると、コンパレータが元の状態に戻った時
のみ割り込みが発生し、それ以外では割り込みは発
生しません。
コンパレータ出力の状態に関する情報は、ソフト
ウェアで CMxCON0 レジスタまたは CM2CON1 レジ
スタを読み出して保持しておき、実際にどのような
変化が起こったかを判断する必要があります。
図 20-4 および図 20-5 を参照してください。
コンパレータの不一致回路のラッチを所望の状態
にプリセットしてから、コンパレータを有効にでき
ます。コンパレータがオフのときには、CxPOL ビッ
トが CxOUT レベルを制御します。CxON ビットが
クリアされているときに、CxPOL ビットを所望の
CxOUT 非割り込みレベルにセットします。次に、
CxON ビットをセットする命令で、所望の CxPOL
レベルを設定します。レジスタへの書き込みはすべ
て、読み出し - 変更 - 書き込みとして実行されるの
で、不一致回路のラッチは命令の読み出し段階でク
リアされ、CxON ビットと CxPOL ビットは最後の
書き込み段階で実際に設定されます。
図 20-4:
コンパレータ割り込みのタイミング
(CMxCON0 の読み出しを行わない
場合 )
Q1
Q3
CxIN+
TRT
CxOUT
Set CxIF (edge)
CxIF
reset by software
図 20-5:
コンパレータ割り込みのタイミング
(CMxCON0 の読み出しを行う場合 )
Q1
Q3
CxIN+
TRT
CxOUT
Set CxIF (edge)
CxIF
cleared by CMxCON0 read
reset by software
注 1:
読み出し動作の実行中 (Q2サイクルの開
始時点 ) に CMxCON0 レジスタ (CxOUT)
が変化した場合、PIR2 レジスタの CxIF
割り込みフラグがセットされないこと
があります。
2:
いずれかのコンパレータが最初に有効
になるときに、コンパレータ モジュー
ルのバイアス回路が安定するまでは、コ
ンパレータから正しい出力が得られな
い場合があります。バイアス回路が安定
するまで約 1 s 待機し、次に不一致条件
と割り込みフラグをクリアしてからコ
ンパレータ割り込みを有効にしてくだ
さい。
PIR2 レジスタの CxIF ビットがコンパレータ割り込
みフラグです。このビットは、ソフトウェアで「0」
にクリアしてリセットする必要があります。このレ
ジスタに「1」を書き込んでも、割り込みを生成で
きます。
ミッドレンジの互換モードで、コンパレータの割り
込みを許可するには、PIE2 レジスタの CxIE ビット
および INTCON レジスタの PEIE ビットと GIE ビッ
トをすべてセットする必要があります。これらビッ
トのいずれかでもクリアされていると割り込みは
発生しませんが、
その場合でもPIR2レジスタのCxIF
ビットは割り込み条件の発生時にセットされます。
DS41303E_JP - ページ 278
不一致回路のラッチのプリセット
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
20.5
スリープ モードの動作
スリープ モードに入る前にコンパレータを有効に
した場合、コンパレータはスリープ モードでも動
作を継続します。コンパレータの追加消費電流は、
26.0 項「電気的特性」を参照してください。コンパ
レータをデバイスのウェイクアップに使用しない
場合は、コンパレータをオフにすることでスリープ
モードの消費電力を最小限にできます。CMxCON0
レジスタの CxON ビットをクリアして、コンパレー
タを個別にオフにできます。
コンパレータの出力が変化したときに、デバイスを
スリープ モードからウェイクアップできます。コ
ンパレータを使用してデバイスをスリープ モード
からウェイクアップするには、PIE2レジスタのCxIE
ビットと INTCON レジスタの PEIE ビットをセット
する必要があります。スリープ モードからウェイ
クアップすると、SLEEP 命令の次の命令が必ず実
行されます。INTCON レジスタの GIE ビットもセッ
トされている場合、デバイスは割り込みサービス
ルーチンを実行します。
20.6
リセットの影響
デバイスをリセットすると、CMxCON0 レジスタと
CM2CON1レジスタは強制的にリセット状態に戻り
ます。これにより、2 つのコンパレータと電圧リ
ファレンスはオフ状態になります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 279
PIC18F2XK20/4XK20
レジスタ 20-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 = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。
「0」として読み出し
「1」= セット
「0」= クリア
ビット 7
C1ON: コンパレータ C1 イネーブル ビット
1 = コンパレータ C1 を有効にする
0 = コンパレータ C1 を無効にする
ビット 6
C1OUT: コンパレータ C1 出力ビット
C1POL = 1 ( 極性反転 ) の場合 :
C1VIN+ > C1VIN- の場合、C1OUT = 0
C1VIN+ < C1VIN- の場合、C1OUT = 1
C1POL = 0 ( 極性非反転 ) の場合 :
C1VIN+ > C1VIN- の場合、C1OUT = 1
C1VIN+ < C1VIN- の場合、C1OUT = 0
ビット 5
C1OE: コンパレータ C1 出力イネーブル ビット
1 = C1OUT を C1OUT ピンに出力する (1)
0 = C1OUT は内部のみ
ビット 4
C1POL: コンパレータ C1 出力極性選択ビット
1 = C1OUT のロジックを反転する
0 = C1OUT のロジックを反転しない
ビット 3
C1SP: コンパレータ C1 速度 / 電力選択ビット
1 = C1 は通常電力、高速モードで動作
0 = C1 は低電力、低速モードで動作
ビット 2
C1R: コンパレータ C1 リファレンス選択ビット ( 非反転入力 )
1 = C1VIN+ を C1VREF 出力に接続
0 = C1VIN+ を C1IN+ ピンに接続
ビット 1-0
C1CH<1:0>: コンパレータ C1 チャネル選択ビット
00 = C1 の C12IN0- ピンを C1VIN- に接続
01 = C1 の C12IN1- ピンを C1VIN- に接続
10 = C1 の C12IN2- ピンを C1VIN- に接続
11 = C1 の C12IN3- ピンを C1VIN- に接続
注 1:
x = 不明
コンパレータから出力するには、C1OE = 1、C1ON = 1、および対応するポートの TRIS ビット = 0 の
3 つの条件をすべて満たす必要があります。
DS41303E_JP - ページ 280
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 20-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 = 読み出し可
-n = POR 時の値
W = 書き込み可
U = 未実装ビット。
「0」として読み出し
「1」= セット
「0」= クリア
ビット 7
C2ON: コンパレータ C2 イネーブル ビット
1 = コンパレータ C2 を有効にする
0 = コンパレータ C2 を無効にする
ビット 6
C2OUT: コンパレータ C2 出力ビット
C2POL = 1 ( 極性反転 ) の場合 :
C2VIN+ > C2VIN- の場合、C2OUT = 0
C2VIN+ < C2VIN- の場合、C2OUT = 1
C2POL = 0 ( 極性非反転 ) の場合 :
C2VIN+ > C2VIN- の場合、C2OUT = 1
C2VIN+ < C2VIN- の場合、C2OUT = 0
ビット 5
C2OE: コンパレータ C2 出力イネーブル ビット
1 = C2OUT を C2OUT ピンに出力する (1)
0 = C2OUT は内部のみ
ビット 4
C2POL: コンパレータ C2 出力極性選択ビット
1 = C2OUT のロジックを反転する
0 = C2OUT のロジックを反転しない
ビット 3
C2SP: コンパレータ C2 速度 / 電力選択ビット
1 = C2 は通常電力、高速モードで動作
0 = C2 は低電力、低速モードで動作
ビット 2
C2R: コンパレータ C2 リファレンス選択ビット ( 非反転入力 )
1 = C2VIN+ を C2VREF に接続
0 = C2VIN+ を C2IN+ ピンに接続
ビット 1-0
C2CH<1:0>: コンパレータ C2 チャネル選択ビット
00 = C2 の C12IN0- ピンを C2VIN- に接続
01 = C2 の C12IN1- ピンを C2VIN- に接続
10 = C2 の C12IN2- ピンを C2VIN- に接続
11 = C2 の C12IN3- ピンを C2VIN- に接続
注 1:
x = 不明
コンパレータから出力するには、C2OE = 1、C2ON = 1、および対応するポートの TRIS ビット = 0 の
3 つの条件をすべて満たす必要があります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 281
PIC18F2XK20/4XK20
20.7
アナログ入力の接続に関する注意点
アナログ入力の簡単な回路を図 20-6 に示します。ア
ナログ入力ピンはデジタル入力と接続を共有して
いるため、VDD と VSS には、逆バイアスの静電気放
電保護ダイオードが接続されています。このため、
アナログ入力電圧は VSS と VDD の間の値である必
要があります。入力電圧がこの範囲から 0.6V を超
えて上回るか下回ると、一方のダイオードに順バイ
アスがかかり、ラッチアップが発生する場合があり
ます。
注 1:
PORT レジスタを読み出すときに、アナ
ログ入力として設定されたピンはすべ
て「0」として読み出されます。デジタ
ル入力として設定されたピンは、入力仕
様に基づいてアナログ入力に変換され
ます。
2:
デジタル入力として指定されたピンに
アナログ電圧を印加すると、入力バッ
ファに仕様を超える電流が流れる場合
があります。
アナログ ソースの推奨最大インピーダンスは、
10 k
です。また、アナログ入力ピンにコンデンサやツェ
ナー ダイオードなどの外付け部品を接続する場合
は、精度の低下を最小限にするために、可能な限り
リーク電流が最小のものを使用してください。
図 20-6:
アナログ入力モデル
VDD
RIC
Rs < 10K
AIN
ILEAKAGE(1)
CPIN
5 pF
VA
Vss
記号の説明 : CPIN
ILEAKAGE
RIC
RS
VA
注 1:
= 入力容量
= ピンのリーク電流 ( さまざまな接合により発生 )
= 接続抵抗
= ソース インピーダンス
= アナログ電圧
26.0 項「電気的特性」を参照してください。
DS41303E_JP - ページ 282
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
20.8
20.8.2
コンパレータのその他の機能
各コンパレータの非反転入力として、2 つの内部電
圧リファレンスを使用できます。その 1 つは 1.2V
のFixed Voltage Reference (FVR: 固定電圧リファレン
ス ) で、
もう 1 つは可変 Comparator Voltage Reference
(CVREF: コンパレータ電圧リファレンス ) です。
CM2CON レジスタの CxRSEL ビットで、
コンパレー
タ電圧リファレンスの出力 (CXVREF) に接続するリ
ファレンスを指定します。コンパレータへのその他
の接続は、CMxCON0 レジスタの CxR ビットで指
定します。詳細は、21.1 項「コンパレータ電圧リ
ファレンス」、図 20-2、および図 20-3 を参照してく
ださい。
コンパレータのその他の機能として、次の 2 つがあ
ります。
• コンパレータ出力の同時読み出し
• 内部リファレンスの選択
20.8.1
コンパレータ出力の同時読み出し
CM2CON1 レジスタの MC1OUT ビットと MC2OUT
ビットには、2 つのコンパレータ出力がそのままミ
ラー コピーされます。1 つのレジスタで 2 つの出力
を同時に読み出せるため、2 つのレジスタを読み出
す場合のタイミング スキューが発生しません。
注 1:
内部リファレンスの選択
CM2CON1レジスタを読み出してC1OUT
または C2OUT の状態を取得しても、コ
ンパレータ割り込みの不一致レジスタ
には影響しません。
レジスタ 20-3:
CM2CON1: コンパレータ 2 制御レジスタ 1
R-0
R-0
R/W-0
R/W-0
U-0
U-0
U-0
U-0
MC1OUT
MC2OUT
C1RSEL
C2RSEL
—
—
—
—
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
ビット 7
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
MC1OUT: C1OUT のミラー コピー ビット
ビット 6
MC2OUT: C2OUT のミラー コピー ビット
ビット 5
C1RSEL: コンパレータ C1 リファレンス選択ビット
1 = CVREF を C1VREF 入力にする
0 = FVR (1.2V 固定電圧リファレンス ) を C1VREF 入力にする
ビット 4
C2RSEL: コンパレータ C2 リファレンス選択ビット
1 = CVREF を C2VREF 入力にする
0 = FVR (1.2V 固定電圧リファレンス ) を C2VREF 入力にする
ビット 3-0
未実装 :「0」として読み出し
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 283
PIC18F2XK20/4XK20
表 20-2:
コンパレータ モジュールに関連するレジスタ
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
CM1CON0
C1ON
C1OUT
C1OE
C1POL
C1SP
C1R
C1CH1
C1CH0
60
CM2CON0
C2ON
C2OUT
C2OE
C2POL
C2SP
C2R
C2CH1
C2CH0
61
CM2CON1
MC1OUT
MC2OUT
C1RSEL
C2RSEL
—
—
—
—
61
CVRCON
CVREN
CVROE
CVRR
CVRSS
CVR3
CVR2
CVR1
CVR0
59
CVRCON2
FVREN
FVRST
—
—
—
—
—
—
59
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
INTCON
GIE/GIEH PEIE/GIEL TMR0IE
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
60
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
60
IPR2
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
60
PORTA
RA7(1)
RA6(1)
RA5
RA4
RA3
RA2
RA1
RA0
60
LATA
LATA7(1)
LATA6(1) PORTA Data Latch Register (Read and Write to Data Latch)
60
TRISA
TRISA7(1)
TRISA6(1)
60
PORTA Data Direction Control Register
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットはコンパレータ モジュールでは使用しません。
注 1: PORTA<7:6> とその方向ビット、およびラッチ ビットは、さまざまなプライマリ オシレータ モードに
合わせてポート ピンとして個々に設定します。無効にすると、これらのビットは「0」として読み出
されます。
DS41303E_JP - ページ 284
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
21.0
21.1.3
電圧リファレンス
VSS にクランプされた出力
次の 2 つの独立した電圧リファレンスが使用でき
ます。
CVREF 出力電圧を Vss に設定して電力を消費しない
状態にするには、
CVRCONを次のように設定します。
• プログラム可能なコンパレータ電圧リファレンス
• 1.2V の固定電圧リファレンス
• CVREN = 0
• CVRR = 1
• CVR<3:0> = 0000
21.1
コンパレータ電圧リファレンス
コンパレータ電圧リファレンス モジュールは、内
部で電圧リファレンスを生成してコンパレータに
供給します。このモジュールには、次の機能があり
ます。
•
•
•
•
•
コンパレータの動作から独立
16 レベル電圧の 2 つの範囲
VSS にクランプされた出力
VDD に比例した電圧
1.2V の固定電圧リファレンス (FVR)
独立動作
コンパレータ電圧リファレンスは、コンパレータの
構成から独立しています。CVRCON レジスタの
CVREN ビットをセットすると、CVREF 分圧器に電
流が流れ、電圧リファレンスが有効になります。両
方の CVREN ビットをクリアすると、CVREF 分圧器
に電流が流れなくなり、
電圧リファレンス モジュー
ルの消費電力が最小限に抑えられます。
21.1.2
出力電圧の選択
CVREF 電圧リファレンスは、16 レベルの電圧範囲を
2 つ備えています。電圧範囲は、CVRCON レジスタ
のCVRRビットで選択します。
16レベルは、
CVRCON
レジスタの CVR<3:0> ビットで設定します。
CVREF 出力電圧は次の式で求められます。
式 21-1:
21.1.4
CVREF 出力電圧
電圧リファレンスの出力
CVRCON レジスタの CVROE ビットを「1」にセッ
トして、電圧リファレンス CVREF をデバイスの
CVREF ピンに出力できます。CVREF ピンに出力する
リファレンス電圧を選択すると、そのピンのデジタ
ル出力バッファおよびデジタル入力スレッショル
ド検知器の機能が自動的に無効になります。リファ
レンス電圧を出力するように設定された CVREF ピ
ンを読み出すと、常に「0」が返されます。
電流駆動機能に制限があるため、CVREF を外部接続
するには、電圧リファレンス出力にバッファを使用
する必要があります。図 21-2 に、バッファ手法の
例を示します。
21.1.6
スリープ モードの動作
割り込みまたはウォッチドッグ タイマのタイムア
ウトによりデバイスがウェイクアップする場合、
CVRCON レジスタの内容は影響を受けません。ス
リープ モードでの消費電流を最小にするには、電
圧リファレンスを無効にする必要があります。
21.1.7
CV RR = 1 (low range):
VDD に比例した電圧
コンパレータ電圧リファレンスはVDD から生成され
るため、CVREF 出力は VDD の変動に合わせて変化し
ます。コンパレータ電圧リファレンスのテスト済み
の絶対精度は、26.0 項「電気的特性」を参照してく
ださい。
21.1.5
電圧リファレンス モジュール(図 21-1)は、
CVRCON
レジスタ ( レジスタ 21-1) で設定します。
21.1.1
これにより、CVREF モジュールが余分な電流を消費
することなく、コンパレータはゼロクロスを検出で
きます。
リセットの影響
デバイスをリセットすると、次の項目が影響を受け
ます。
CVREF = (CVRSRC/24) X CVR<3:0> + VREFCV RR = 0 (high range):
CVREF = (CVRSRC/32) X (8 + CVR<3:0>) + VREFCV RSRC = V DD or [(VREF+) - (VREF-)]
注 : CVRSS = 0 の場合、VREF- は 0
•
•
•
•
•
コンパレータ電圧リファレンスが無効になる
固定電圧リファレンスが無効になる
CVREF ピンから CVREF が除去される
高電圧範囲が選択される
CVR<3:0> 範囲選択ビットがクリアされる
モジュールの構造上、VSS から VDD までの範囲全体
は設定できません。図 21-1 を参照してください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 285
PIC18F2XK20/4XK20
21.2
FVR リファレンス モジュール
21.2.1
固定電圧リファレンス モジュールを有効にした場
合、リファレンスおよびアンプ回路が安定するまで
ある程度の時間がかかります。このモジュールが安
定するまで、ユーザー プログラムでわずかな遅延
を確保する必要があります。CVRCON2 の FVRST
安定ビットも、FVR リファレンスが安定するまで十
分な長さだけ動作したかどうかを示します。最小遅
延の要件は、26.0 項「電気的特性」を参照してくだ
さい。
FVR リファレンスは安定した固定電圧リファレン
スで、VDD から独立しており、公称出力電圧は 1.2V
で す。こ の リ フ ァ レ ン ス を 有 効 に す る に は、
CVRCON2 レジスタの FVREN ビットを「1」にセッ
トします。HFINTOSC、HLVD、または BOR の機能
を 1 つ以上有効にした場合、FVR のデフォルトはオ
ンです。FVR 電圧リファレンスは、コンパレータま
たは ADC の入力チャネルに出力できます。
図 21-1:
FVR の安定化期間
電圧リファレンスのブロック図
CVRSS = 1
VREF+
VDD
8R
CVRSS = 0
CVR<3:0>
R
CVREN
R
R
16-to-1 MUX
R
16 Steps
R
CVREF
R
R
CVRR
8R
CVRSS = 1
VREF-
CVRSS = 0
1.2 Volt Fixed
Reference
FVREN
From HVLD and
BOR circuits
DS41303E_JP - ページ 286
EN
Preliminary
FVR
FVRST
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 21-2:
電圧リファレンスの出力バッファの例
PIC18F2XK20/4XK20
CVREF
Module
R(1)
Voltage
Reference
Output
Impedance
注 1:
+
–
CVREF
Buffered CVREF Output
R は、電圧リファレンス構成ビット CVR<3:0> および CVRR とは独立です。
レジスタ 21-1:
CVRCON: コンパレータ電圧リファレンス制御レジスタ
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
R/W-0
CVREN
CVROE(1)
CVRR
CVRSS
CVR3
CVR2
CVR1
CVR0
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
W = 書き込み可
「1」= セット
U = 未実装ビット。
「0」として読み出し
「0」= クリア
x = 不明
ビット 7
CVREN: コンパレータ電圧リファレンス イネーブル ビット
1 = CVREF 回路に電力を供給
0 = CVREF 回路に電力を供給しない
ビット 6
CVROE: コンパレータ VREF 出力イネーブル ビット (1)
1 = CVREF ピンに CVREF 電圧レベルも出力する
0 = CVREF ピンから CVREF 電圧を切断する
ビット 5
CVRR: コンパレータ VREF 範囲選択ビット
1 = 0 ~ 0.667 CVRSRC、CVRSRC/24 のステップ サイズ ( 低範囲 )
0 = 0.25 CVRSRC ~ 0.75 CVRSRC、CVRSRC/32 のステップ サイズ ( 高範囲 )
ビット 4
CVRSS: コンパレータ VREF ソース選択ビット
1 = コンパレータ リファレンス ソース、CVRSRC = (VREF+) – (VREF-)
0 = コンパレータ リファレンス ソース、CVRSRC = VDD – VSS
ビット 3-0
CVR<3:0>: コンパレータ VREF 値選択ビット (0  (CVR<3:0>)  15)
CVRR = 1 のとき :
CVREF = ((CVR<3:0>)/24)  (CVRSRC) + VREFCVRR = 0 のとき :
CVREF = (CVRSRC/4) + ((CVR<3:0>)/32)  (CVRSRC) + VREF-
注 1:
CVROE は TRISA<2> ビットの設定より優先されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 287
PIC18F2XK20/4XK20
レジスタ 21-2:
CVRCON2: コンパレータ電圧リファレンス制御 2 レジスタ
R/W-0
R-0
U-0
U-0
U-0
U-0
U-0
U-0
FVREN
FVRST
—
—
—
—
—
—
bit 7
bit 0
記号の説明 :
R = 読み出し可
W = 書き込み可
-n = POR 時の値
U = 未実装ビット。
「0」として読み出し
「1」= セット
x = 不明
「0」= クリア
ビット 7
FVREN: 固定電圧リファレンス イネーブル ビット
1 = FVR 回路に電力を供給
0 = FVREN では FVR 回路を有効にしない。他の周辺機器で FVR を有効にできる
ビット 6
FVRST: 固定電圧安定ステータス ビット
1 = FVR が安定で使用できる
0 = FVR が安定しておらず、使用するべきではない
ビット 5-0
未実装 :「0」として読み出し
表 21-1:
コンパレータ電圧リファレンスに関連するレジスタ
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Reset
Values
on page
CVRCON
CVREN
CVROE
CVRR
CVRSS
CVR3
CVR2
CVR1
CVR0
60
CVRCON2
FVREN
FVRST
—
—
—
—
—
—
59
CM1CON0
C1ON
C1OUT
C1OE
C1POL
C1SP
C1R
C1CH1
C1CH0
60
C2OUT
C2OE
C2POL
C2SP
C2R
C2CH1
C2CH0
61
—
—
—
—
61
Name
CM2CON0
C2ON
CM2CON1
MC1OUT
TRISA
TRISA7(1) TRISA6(1) PORTA Data Direction Control Register
MC2OUT C1RSEL C2RSEL
60
記号の説明 : 網掛けのビットはコンパレータ電圧リファレンスでは使用しません。
注 1: PORTA ピンは、オシレータの設定に合わせて有効にします。
DS41303E_JP - ページ 288
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
22.0
高 / 低電圧検知 (HLVD)
PIC18F2XK20/4XK20 デバイスには高 / 低電圧検知モ
ジュール (HLVD) があります。これはプログラム可
能な回路で、デバイスの電圧トリップ ポイント、お
よびそのポイントからの変化方向を指定できます。
デバイスで、トリップ ポイントからその方向に電圧
が変化すると、割り込みフラグがセットされます。
割り込みが有効な場合、プログラムの実行が割り込
みベクタ アドレスに分岐し、その後ソフトウェアは
割り込みに応答できます。
高 / 低電圧検知制御レジスタ ( レジスタ 22-1) が、
HLVD モジュールの動作をすべて制御します。これ
により、ソフトウェア制御で回路を「オフ」にで
き、デバイスでの消費電流を最小に抑えます。
このモジュールを有効にするには、HLVDEN ビッ
トをセットします。HLVD モジュールを有効にする
たびに、回路が安定するまでの時間が必要です。
IRVST ビットは読み取り専用で、回路が安定かどう
かを示します。回路が安定し、IRVST ビットがセッ
トされた後でのみ、モジュールは割り込みを生成で
きます。
VDIRMAG ビットは、モジュールのすべての動作を
指定します。VDIRMAG ビットがクリアされている
ときには、モジュールは、あらかじめ指定したセッ
ト ポイントからの VDD の低下をモニタします。
VDIRMAG ビットがセットされているときには、モ
ジュールはセット ポイントからの VDD の上昇をモ
ニタします。
HLVD モジュールのブロック図を図 22-1 に示します。
レジスタ 22-1:
HLVDCON: 高 / 低電圧検知制御レジスタ
R/W-0
U-0
R-0
R/W-0
R/W-0
R/W-1
R/W-0
R/W-1
VDIRMAG
—
IRVST
HLVDEN
HLVDL3(1)
HLVDL2(1)
HLVDL1(1)
HLVDL0(1)
bit 7
bit 0
記号の説明 :
R = 読み出し可
-n = POR 時の値
ビット 7
W = 書き込み可
「1」= セット
U = 未実装
「0」= クリア
C = クリア可
x = 不明
VDIRMAG: 電圧方向の大きさ選択ビット
1 = 電圧 ≧ トリップ ポイント (HLVDL<3:0>) の場合にイベント発生
0 = 電圧 ≦ トリップ ポイント (HLVDL<3:0>) の場合にイベント発生
ビット 6
未実装 :「0」として読み出し
ビット 5
IRVST: 内部リファレンス電圧安定フラグ ビット
1 = 電圧検知ロジックが指定の電圧範囲で割り込みフラグを生成することを示す
0 = 電圧検知ロジックが指定の電圧範囲で割り込みフラグを生成せず、HLVD 割り込みを有効
にしないことを示す
ビット 4
HLVDEN: 高 / 低電圧検知電力イネーブル ビット
1 = HLVD を有効にする
0 = HLVD を無効にする
ビット 3-0
HLVDL<3:0>: 電圧検知制限ビット (1)
1111 = 外部アナログ入力を使用 (HLVDIN ピンに入力 )
1110 = 最大設定
.
.
.
0000 = 最小設定
注 1:
仕様は、表 26-4 を参照してください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 289
PIC18F2XK20/4XK20
22.1
動作
HLVD モジュールを有効にすると、コンパレータは
内部で生成したリファレンス電圧をセット ポイン
トとして使用します。セット ポイントがトリップ
ポイントと比較され、抵抗分圧器の各ノードがト
リップ ポイント電圧を表します。
「トリップ ポイン
ト」電圧とは、モジュールの設定に基づいてデバイ
スが高電圧または低電圧のイベントを検知する電
圧レベルです。供給電圧がトリップ ポイントと等
しい場合、抵抗アレイの出力電圧は電圧リファレン
ス モジュールが生成する内部リファレンス電圧と
等しくなります。その後、コンパレータは HLVDIF
ビットをセットして、割り込み信号を生成します。
図 22-1:
VDD
HLVD モジュールには、外部ソースからモジュール
にトリップ電圧を供給できる機能もあります。この
モードが有効になるのは、HLVDL<3:0> ビットが
「1111」に設定されたときです。この場合、コンパ
レータの入力が外部入力ピンHLVDINと多重化され
ます。これにより、有効な動作範囲の任意の電圧で
高 / 低電圧検知割り込みを発生するように設定でき
るので、柔軟性が得られます。
HLVD モジュールのブロック図 ( 外部入力あり )
Externally Generated
Trip Point
VDD
HLVDL<3:0>
HLVDCON
Register
HLVDEN
HLVDIN
16-to-1 MUX
HLVDIN
トリップ ポイント電圧は、ソフトウェアで 16 の値の
いずれにもプログラムできます。トリップ ポイント
を選択するには、
HLVDCON レジスタの HLVDL<3:0>
ビットをプログラムします。
VDIRMAG
Set
HLVDIF
HLVDEN
Internal Voltage
Reference
BOREN
DS41303E_JP - ページ 290
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
22.2
HLVD の設定
HLVD モジュールを設定するには、次の手順を実行
します。
1.
2.
3.
4.
5.
所望の HLVD トリップ ポイントを選択する値
を HLVDL<3:0> ビットに書き込みます。
VDIRMAG ビットを、高電圧検知 (VDIRMAG =
1) または低電圧検知 (VDIRMAG = 0) に設定し
ます。
HLVDEN ビットをセットして、HLVD モジュー
ルを有効にします。
直前の割り込みによりセットされている可能
性のある、PIR2 レジスタの HLVD 割り込みフ
ラグ ビットをクリアします。
割り込みを使用する場合は、PIE2 レジスタの
HLVDIE ビット、および INTCON レジスタの
GIE ビットと PEIE ビットをセットして、HLVD
割り込みを有効にします。IRVST ビットがセッ
トされるまで、割り込みは生成されません。
22.3
消費電流
HLVD モジュールを有効にすると、HLVD のコンパ
レータと分圧器が有効になり、一定の電流を消費し
ます。有効にした場合の合計消費電流は、電気的仕
様のパラメータ D024B で規定されています。
図 22-2:
アプリケーションによっては、HLVD モジュールが
継続的に動作する必要がないものもあります。電流
の要件を低減するために、電圧をチェックする短い
期間だけ HLVD 回路を有効にすることができます。
チェック後、HLVD モジュールを無効にできます。
22.4
HLVD の起動期間
HLVD モジュールの内部リファレンス電圧 ( 電気的
仕様のパラメータ D420 で規定 ) は、プログラム可
能なブラウンアウト リセットのような内部回路で
使用できます。デバイスの消費電流を削減するため
に電圧リファレンスを使用するHLVDやその他の回
路を無効にしている場合、低 / 高電圧条件を高信頼
性で検知するには、リファレンス電圧回路が安定す
るための時間が必要です。起動期間 TIRVST は、デ
バイスのクロック速度とは独立した期間です。電気
的仕様のパラメータ 36 に規定されています。
リファレンス電圧が安定するまで、
TIRVST が経過し、
HLVD 割り込みフラグは有効になりません。このた
め、この期間中は、セット ポイントを超えるわずか
な偏位は検知されないことがあります。図 22-2 また
は図 22-3 を参照してください。
低電圧検知動作 (VDIRMAG = 0)
CASE 1:
HLVDIF may not be set
VDD
VHLVD
HLVDIF
Enable HLVD
TIVRST
IRVST
Internal Reference is stable
HLVDIF cleared by software
CASE 2:
VDD
VHLVD
HLVDIF
Enable HLVD
TIVRST
IRVST
Internal Reference is stable
HLVDIF cleared by software
HLVDIF cleared by software,
HLVDIF remains set since HLVD condition still exists
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 291
PIC18F2XK20/4XK20
図 22-3:
高電圧検知動作 (VDIRMAG = 1)
CASE 1:
HLVDIF may not be set
VHLVD
VDD
HLVDIF
Enable HLVD
TIVRST
IRVST
HLVDIF cleared by software
Internal Reference is stable
CASE 2:
VHLVD
VDD
HLVDIF
Enable HLVD
TIVRST
IRVST
Internal Reference is stable
HLVDIF cleared by software
HLVDIF cleared by software,
HLVDIF remains set since HLVD condition still exists
DS41303E_JP - ページ 292
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
22.5
22.6
アプリケーション
多くのアプリケーションで、特定のスレッショルド
からの低下や上昇を検知する機能は有用です。
例えば、HLVD モジュールを定期的に有効にして、
Universal Serial Bus (USB: ユニバーサル シリアル バ
ス ) の接続と切断を検出できます。これは、デバイ
スが USB を接続していないときに、USB よりも低
い電圧ソースで駆動されていることを前提にして
います。接続は高電圧検知 ( 例えば、USB の電圧が
3.3V から 5V に変化 )、切断は低電圧検知 ( 例えば、
USB の電圧が 5V から 3.3V に変化 ) を示します。こ
の機能により、設計からいくつかの構成要素、およ
び接続信号 ( 入力ピン ) を省略できます。
一般的なバッテリ アプリケーションについては、図
22-4 に電流曲線の例を示します。時間が経過する
と、デバイスの電圧は減少します。デバイスの電圧
が VA に達すると、HLVD ロジックが TA の時点で
割り込みを生成します。割り込みにより ISR を実行
できるので、デバイス電圧が TB の時点でデバイス
電圧が有効な動作範囲を超える前に、アプリケー
ションは「ハウスキーピング タスク」を実行し、制
御下でシャットダウンを実行できます。このよう
に、HLVD により、TA と TB の差で表される、アプ
リケーションが安全に終了するための時間が得ら
れます。
図 22-4:
スリープ モードの動作
有効にした場合、HLVD 回路はスリープ モードで継
続して動作します。デバイス電圧がトリップ ポイ
ントを超えると、HLVDIF ビットがセットされ、デ
バイスがスリープ モードからウェイクアップしま
す。割り込みがグローバルに有効になっている場
合、デバイスの実行は割り込みベクタ アドレスか
ら継続します。
22.7
リセットの影響
デバイスをリセットすると、すべてのレジスタが強
制的にリセット状態に戻ります。これにより、HLVD
モジュールがオフになります。
代表的な低電圧検知の応用例
Voltage
VA
VB
Time
TA
TB
Legend: VA = HLVD trip point
VB = Minimum valid device
operating voltage
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 293
PIC18F2XK20/4XK20
表 22-1:
Name
高 / 低電圧検知モジュールに関連するレジスタ
Bit 7
HLVDCON VDIRMAG
INTCON
Bit 6
Bit 5
—
IRVST
GIE/GIEH PEIE/GIEL TMR0IE
Bit 4
Bit 3
HLVDEN HLVDL3
Bit 2
Bit 1
Bit 0
Reset
Values
on Page
HLVDL2
HLVDL1
HLVDL0
58
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
57
60
PIR2
OSCFIF
C1IF
C2IF
EEIF
BCLIF
HLVDIF
TMR3IF
CCP2IF
PIE2
OSCFIE
C1IE
C2IE
EEIE
BCLIE
HLVDIE
TMR3IE
CCP2IE
60
IPR2
OSCFIP
C1IP
C2IP
EEIP
BCLIP
HLVDIP
TMR3IP
CCP2IP
60
記号の説明 : — = 未実装、「0」として読み出し。網掛けのビットは HLVD モジュールでは使用しません。
DS41303E_JP - ページ 294
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
23.0
CPU の特殊機能
PIC18F2XK20/4XK20 デバイスは、信頼性を最大に
し、外付け部品を省いてコストを最小にするため
に、次の機能を装備しています。
• オシレータ選択
• リセット :
- パワーオン リセット (POR)
- パワーアップ タイマ (PWRT)
- オシレータ起動タイマ (OST)
- ブラウンアウト リセット (BOR)
• 割り込み
• ウォッチドッグ タイマ (WDT)
• コード プロテクション
• ID ロケーション
• インサーキット シリアル プログラミング ™
周波数、電力、精度、およびコストに合わせて、
アプリケーション用にオシレータを設定できます。
すべてのオプションの詳細は、2.0 項「オシレータ
モジュール ( フェイルセーフ クロック モニタ機能
付き )」を参照してください。
デバイスのリセットと割り込みの詳細は、このデー
タシートの前の節を参照してください。
リセット用のパワーアップ タイマとオシレータ起
動タイマに加えて、PIC18F2XK20/4XK20 デバイス
には、ウォッチドッグ タイマを装備しています。こ
のタイマは、構成ビットにより恒常的に有効になる
か、ソフトウェアから制御 ( 無効に設定した場合 )
されます。
内部 RC オシレータを装備していることにより、
FailSafe Clock Monitor (FSCM: フェイル セーフ クロック
モニタ ) と 2 段階速度の起動の利点も得られます。
FSCM は周辺クロックをバックグラウンドでモニタ
し、障害発生時には自動的に切り替えます。2 段階
速度の起動により、プライマリ クロックソースの起
動遅延中に、ほぼ即座にコードを実行できます。
これらすべての機能の有効化と設定は、適切な構成
レジスタのビットを設定することで行います。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 295
PIC18F2XK20/4XK20
23.1
構成ビット
構成ビットをプログラムする (「0」として読み出し )
か、プログラムしない (「1」として読み出し ) まま
にして、さまざまなデバイス設定を選択できます。
これらのビットは、プログラム メモリの 300000h か
ら始まる位置にマップされています。
アドレス 300000h は、ユーザー プログラム メモリ空
間外にあることに注意してください。それらはコン
フィギュレーション メモリ空間 (300000h~3FFFFFh)
に属し、テーブルの読み書きによってのみアクセス
できます。
構成レジスタのプログラミングは、フラッシュ メ
モリのプログラミングとほぼ同じです。EECON1 レ
ジスタの WR ビットをセットすると、自己タイマに
よる構成レジスタへの書き込みが開始されます。通
常動作モードでは、TBLWT 命令に構成レジスタを
ポイントする TBLPTR を指定して、構成レジスタが
書き込むアドレスとデータを設定します。WR ビッ
トをセットすると、構成レジスタへの長い書き込み
が開始されます。構成レジスタには、一度に 1 バイ
ト書き込まれます。構成セルの書き込みや消去を行
うには、TBLWT 命令で構成セルに「1」または「0」
を書き込みます。フラッシュのプログラミングの詳
細は、6.5 項「フラッシュ プログラム メモリへの書
き込み」を参照してください。
表 23-1:
構成ビットとデバイス ID
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Default/
Unprogrammed
Value
CONFIG1H
IESO
FCMEN
—
—
FOSC3
FOSC2
FOSC1
FOSC0
00-- 0111
File Name
300001h
300002h
CONFIG2L
—
—
—
BORV1
BORV0
BOREN1
BOREN0
PWRTEN
---1 1111
300003h
CONFIG2H
—
—
—
WDTPS3
WDTPS2
WDTPS1
WDTPS0
WDTEN
---1 1111
300005h
CONFIG3H
MCLRE
—
—
—
HFOFST
LPT1OSC
PBADEN
CCP2MX
1--- 1011
10-- -1-1
300006h
CONFIG4L
DEBUG
XINST
—
—
—
LVP
—
STVREN
300008h
CONFIG5L
—
—
—
—
CP3(1)
CP2(1)
CP1
CP0
---- 1111
300009h
CONFIG5H
CPD
CPB
—
—
—
—
—
—
11-- ----
30000Ah
CONFIG6L
—
—
—
—
WRT3(1)
WRT2(1)
WRT1
WRT0
---- 1111
111- ----
30000Bh
CONFIG6H
WRTD
WRTB
WRTC
—
—
—
—
—
30000Ch
CONFIG7L
—
—
—
—
EBTR3(1)
EBTR2(1)
EBTR1
EBTR0
---- 1111
30000Dh
CONFIG7H
—
EBTRB
—
—
—
—
—
—
-1-- ----
3FFFFEh
DEVID1(2)
DEV2
DEV1
DEV0
REV4
REV3
REV2
REV1
REV0
qqqq qqqq(2)
3FFFFFh
(2)
DEV10
DEV9
DEV8
DEV7
DEV6
DEV5
DEV4
DEV3
0000 1100
DEVID2
記号の説明 :
注 1:
2:
x = 不明、u = 不変、– = 未実装、q = 条件によって異なる
網掛けのセルは未実装で「0」として読み出し
実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。このビットはセットしてください。
DEVID1 の値は、レジスタ 23-12 を参照してください。DEVID レジスタは読み取り専用で、ユーザーはプログラムできま
せん。
DS41303E_JP - ページ 296
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 23-1:
CONFIG1H: 構成レジスタ 1 HIGH
R/P-0
R/P-0
U-0
U-0
R/P-0
R/P-1
R/P-1
R/P-1
IESO
FCMEN
—
—
FOSC3
FOSC2
FOSC1
FOSC0
bit 7
bit 0
記号の説明 :
R = 読み出し可
P = プログラム可
-n = 未プログラム時の値
U = 未実装ビット。
「0」として読み出し
x = 不明
ビット 7
IESO: 内部 / 外部オシレータ スイッチオーバー ビット
1 = オシレータのスイッチオーバー モードを有効にする
0 = オシレータのスイッチオーバー モードを無効にする
ビット 6
FCMEN: フェイルセーフ クロック モニタ イネーブル ビット
1 = フェイルセーフ クロック モニタを有効にする
0 = フェイルセーフ クロック モニタを無効にする
ビット 5-4
未実装 :「0」として読み出し
ビット 3-0
FOSC<3:0>: オシレータ選択ビット
11xx = 外部 RC オシレ―タ、CLKOUT 機能は RA6
101x = 外部 RC オシレ―タ、CLKOUT 機能は RA6
1001 = 内部オシレータ ブロック、CLKOUT 機能は RA6、ポート機能は RA7
1000 = 内部オシレータ ブロック、ポート機能は RA6 および RA7
0111 = 外部 RC オシレ―タ、ポート機能は RA6
0110 = HS オシレータ、PLL を有効にする ( クロック周波数 = 4 x FOSC1)
0101 = EC オシレ―タ、ポート機能は RA6
0100 = EC オシレ―タ、CLKOUT 機能は RA6
0011 = 外部 RC オシレ―タ、CLKOUT 機能は RA6
0010 = HS オシレータ
0001 = XT オシレータ
0000 = LP オシレータ
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 297
PIC18F2XK20/4XK20
レジスタ 23-2:
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 = 不明
ビット 7-5
未実装 :「0」として読み出し
ビット 4-3
BORV<1:0>: ブラウンアウト リセット電圧ビット (1)
11 = VBOR を 1.8V ( 公称値 ) に設定する
10 = VBOR を 2.2V ( 公称値 ) に設定する
01 = VBOR を 2.7V ( 公称値 ) に設定する
00 = VBOR を 3.0V ( 公称値 ) に設定する
ビット 2-1
BOREN<1:0>: ブラウンアウト リセット リセット イネーブル ビット (2)
11 = ブラウンアウト リセットをハードウェアのみで有効にする (SBOREN は無効 )
10 = ブラウンアウト リセットをハードウェアのみで有効にし、スリープ モードで無効にする (SBOREN は無効 )
01 = ブラウンアウト リセットをソフトウェアで有効にして制御 (SBOREN が有効 )
00 = ブラウンアウト リセットをハードウェアとソフトウェアで無効にする
ビット 0
PWRTEN: パワーアップ タイマ イネーブル ビット (2)
1 = PWRT を無効にする
0 = PWRT を有効にする
注 1:
2:
仕様は、セクション 26.1「DC 特性 : 供給電圧」を参照してください。
パワーアップ タイマはブラウンアウト リセットと分離され、これらの機能を個別に制御できます。
レジスタ 23-3:
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 = プログラム可
-n = 未プログラム時の値
U = 未実装ビット。「0」として読み出し
x = 不明
ビット 7-5
未実装 :「0」として読み出し
ビット 4-1
WDTPS<3:0>: ウォッチドッグ タイマ ポストスケール選択ビット
1111 = 1:32,768
1110 = 1:16,384
1101 = 1:8,192
1100 = 1:4,096
1011 = 1:2,048
1010 = 1:1,024
1001 = 1:512
1000 = 1:256
0111 = 1:128
0110 = 1:64
0101 = 1:32
0100 = 1:16
0011 = 1:8
0010 = 1:4
0001 = 1:2
0000 = 1:1
ビット 0
WDTEN: ウォッチドッグ タイマ イネーブル ビット
1 = WDT を常に有効にする。SWDTEN ビットの効果はない
0 = WDT を WDTCON レジスタの SWDTEN ビットで制御する
DS41303E_JP - ページ 298
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 23-4:
CONFIG3H: 構成レジスタ 3 HIGH
R/P-1
U-0
U-0
U-0
R/P-1
R/P-0
R/P-1
R/P-1
MCLRE
—
—
—
HFOFST
LPT1OSC
PBADEN
CCP2MX
bit 7
bit 0
記号の説明 :
R = 読み出し可
P = プログラム可
U = 未実装ビット。
「0」として読み出し
-n = 未プログラム時の値
x = 不明
ビット 7
MCLRE: MCLR ピン イネーブル ビット
1 = MCLR ピンを有効にする。RE3 入力ピンを無効にする
0 = RE3 入力ピンを有効にする。MCLR を無効にする
ビット 6-4
未実装 :「0」として読み出し
ビット 3
HFOFST: HFINTOSC 高速起動
1 = オシレータが安定するまで待たずに HFINTOSC が CPU のクロック駆動を開始する
0 = HFINTOSC が安定するまでシステム クロックをオフにする
ビット 2
LPT1OSC: 低消費電力 Timer1 オシレータ イネーブル ビット
1 = Timer1 を低消費電力動作用に設定する
0 = Timer1 を高消費電力動作用に設定する
ビット 1
PBADEN: PORTB A/D イネーブル ビット
(ANSELH のリセット状態に影響、ANSELH は PORTB<4:0> ピンの設定を制御 )
1 = PORTB<4:0> ピンをリセット時にアナログ入力チャネルに設定する
0 = PORTB<4:0> ピンをリセット時にデジタル I/O に設定する
ビット 0
CCP2MX: CCP2 MUX ビット
1 = CCP2 入力 / 出力を RC1 と多重化する
0 = CCP2 入力 / 出力を RB3 と多重化する
レジスタ 23-5:
R/P-1
DEBUG
CONFIG4L: 構成レジスタ 4 LOW
R/P-0
XINST
U-0
—
U-0
—
U-0
R/P-1
—
LVP(1)
U-0
R/P-1
—
STVREN
bit 7
bit 0
記号の説明 :
R = 読み出し可
P = プログラム可
U = 未実装ビット。
「0」として読み出し
-n = 未プログラム時の値
x = 不明
ビット 7
DEBUG: バックグラウンド デバッガ イネーブル ビット
1 = バックグラウンド デバッガを無効にする。RB6 と RB7 を汎用 I/O ピンに設定する
0 = バックグラウンド デバッガを有効にする。RB6 と RB7 をインサーキット デバッグ専用にする
ビット 6
XINST: 拡張命令セット イネーブル ビット
1 = 拡張命令セットとインデックス付きアドレス指定モードを有効にする
0 = 拡張命令セットとインデックス付きアドレス指定モードを無効にする ( レガシー モード )
ビット 5-3
未実装 :「0」として読み出し
ビット 2
LVP: 単一電源 ICSP イネーブル ビット
1 = 単一電源 ICSP を有効にする
0 = 単一電源 ICSP を無効にする
ビット 1
未実装 :「0」として読み出し
ビット 0
STVREN: スタック フル / アンダーフロー リセット イネーブル ビット
1 = スタック フル / アンダーフローの発生時にリセットを実行する
0 = スタック フル / アンダーフローの発生時にリセットを実行しない
注 1:
高電圧プログラミング モードで、プログラマのみが変更できます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 299
PIC18F2XK20/4XK20
レジスタ 23-6:
U-0
CONFIG5L: 構成レジスタ 5 LOW
U-0
—
—
U-0
—
U-0
—
R/C-1
R/C-1
(1)
(1)
CP3
CP2
R/C-1
R/C-1
CP1
CP0
bit 7
bit 0
記号の説明 :
R = 読み出し可
U = 未実装、
「0」として読み出し
-n = 未プログラム時の値
C = クリアのみ可
ビット 7-4
未実装 :「0」として読み出し
ビット 3
CP3: コード プロテクション ビット (1)
1 = ブロック 3 のコードを保護しない
0 = ブロック 3 のコードを保護する
ビット 2
CP2: コード プロテクション ビット (1)
1 = ブロック 2 のコードを保護しない
0 = ブロック 2 のコードを保護する
ビット 1
CP1: コード プロテクション ビット
1 = ブロック 1 のコードを保護しない
0 = ブロック 1 のコードを保護する
ビット 0
CP0: コード プロテクション ビット
1 = ブロック 0 のコードを保護しない
0 = ブロック 0 のコードを保護する
注 1:
実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。
レジスタ 23-7:
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 = クリアのみ可
ビット 7
CPD: データ EEPROM コード プロテクション ビット
1 = データ EEPROM のコードを保護しない
0 = データ EEPROM のコードを保護する
ビット 6
CPB: 起動ブロック コード プロテクション ビット
1 = 起動ブロックのコードを保護しない
0 = 起動ブロックのコードを保護する
ビット 5-0
未実装 :「0」として読み出し
DS41303E_JP - ページ 300
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 23-8:
U-0
CONFIG6L: 構成レジスタ 6 LOW
U-0
—
—
U-0
U-0
—
R/C-1
—
WRT3
(1)
R/C-1
(1)
WRT2
R/C-1
R/C-1
WRT1
WRT0
bit 7
bit 0
記号の説明 :
R = 読み出し可
U = 未実装、
「0」として読み出し
-n = 未プログラム時の値
C = クリアのみ可
ビット 7-4
未実装 :「0」として読み出し
ビット 3
WRT3: 書き込みプロテクション ビット (1)
1 = ブロック 3 を書き込みから保護しない
0 = ブロック 3 を書き込みから保護する
ビット 2
WRT2: 書き込みプロテクション ビット (1)
1 = ブロック 2 を書き込みから保護しない
0 = ブロック 2 を書き込みから保護する
ビット 1
WRT1: 書き込みプロテクション ビット
1 = ブロック 1 を書き込みから保護しない
0 = ブロック 1 を書き込みから保護する
ビット 0
WRT0: 書き込みプロテクション ビット
1 = ブロック 0 を書き込みから保護しない
0 = ブロック 0 を書き込みから保護する
注 1:
実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。
レジスタ 23-9:
R/C-1
CONFIG6H: 構成レジスタ 6 HIGH
R/C-1
WRTD
WRTB
R-1
WRTC
(1)
U-0
U-0
U-0
U-0
U-0
—
—
—
—
—
bit 7
bit 0
記号の説明 :
R = 読み出し可
U = 未実装、
「0」として読み出し
-n = 未プログラム時の値
C = クリアのみ可
ビット 7
WRTD: データ EEPROM 書き込みプロテクション ビット
1 = データ EEPROM を書き込みから保護しない
0 = データ EEPROM を書き込みから保護する
ビット 6
WRTB: 起動ブロック書き込みプロテクション ビット
1 = 起動ブロックを書き込みから保護しない
0 = 起動ブロックを書き込みから保護する
ビット 5
WRTC: 構成レジスタ書き込みプロテクション ビット (1)
1 = 構成レジスタを書き込みから保護しない
0 = 構成レジスタを書き込みから保護する
ビット 4-0
未実装 :「0」として読み出し
注 1:
このビットは、通常実行モードでは読み取り専用です。プログラム モードでのみ書き込みできます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 301
PIC18F2XK20/4XK20
レジスタ 23-10:
U-0
CONFIG7L: 構成レジスタ 7 LOW
U-0
—
—
U-0
—
U-0
R/C-1
(1)
—
EBTR3
R/C-1
EBTR2
(1)
R/C-1
R/C-1
EBTR1
EBTR0
bit 7
bit 0
記号の説明 :
R = 読み出し可
U = 未実装、
「0」として読み出し
-n = 未プログラム時の値
C = クリアのみ可
ビット 7-4
未実装 :「0」として読み出し
ビット 3
EBTR3: テーブル読み出しプロテクション ビット (1)
1 = ブロック 3 を、他のブロックで実行されるテーブル読み出しから保護しない
0 = ブロック 3 を、他のブロックで実行されるテーブル読み出しから保護する
ビット 2
EBTR2: テーブル読み出しプロテクション ビット (1)
1 = ブロック 2 を、他のブロックで実行されるテーブル読み出しから保護しない
0 = ブロック 2 を、他のブロックで実行されるテーブル読み出しから保護する
ビット 1
EBTR1: テーブル読み出しプロテクション ビット
1 = ブロック 1 を、他のブロックで実行されるテーブル読み出しから保護しない
0 = ブロック 1 を、他のブロックで実行されるテーブル読み出しから保護する
ビット 0
EBTR0: テーブル読み出しプロテクション ビット
1 = ブロック 0 を、他のブロックで実行されるテーブル読み出しから保護しない
0 = ブロック 0 を、他のブロックで実行されるテーブル読み出しから保護する
注 1:
実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。
レジスタ 23-11:
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 = クリアのみ可
ビット 7
未実装 :「0」として読み出し
ビット 6
EBTRB: 起動ブロック テーブル読み出しプロテクション ビット
1 = 起動ブロックを、他のブロックで実行されるテーブル読み出しから保護しない
0 = 起動ブロックを、他のブロックで実行されるテーブル読み出しから保護する
ビット 5-0
未実装 :「0」として読み出し
DS41303E_JP - ページ 302
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
レジスタ 23-12:
DEVID1: PIC18F2XK20/4XK20 用デバイス 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 = クリアのみ可
ビット 7-5
DEV<2:0>: デバイス ID ビット
000 = PIC18F46K20
001 = PIC18F26K20
010 = PIC18F45K20
011 = PIC18F25K20
100 = PIC18F44K20
101 = PIC18F24K20
110 = PIC18F43K20
111 = PIC18F23K20
ビット 4-0
REV<4:0>: リビジョン ID ビット
デバイスのリビジョンを示す
レジスタ 23-13:
DEVID2: PIC18F2XK20/4XK20 用デバイス 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 = クリアのみ可
ビット 7-0
注 1:
DEV<10:3>: デバイス ID ビット
DEVID1 レジスタの DEV<2:0> ビットと合わせて、製品番号を示す
0010 0000 = PIC18F2XK20/4XK20 デバイス
DEV<10:3> の値は他のデバイスでも使用されていることがあります。デバイスは常に、DEV<10:0>
ビット全体で示されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 303
PIC18F2XK20/4XK20
23.2
ウォッチドッグ タイマ (WDT)
PIC18F2XK20/4XK20デバイスのWDTは、
LFINTOSC
ソースで駆動されます。WDT を有効にすると、ク
ロック ソースも有効になります。WDT 周期 ( 公称
値 ) は 4 ms で、安定性は LFINTOSC オシレータと同
じです。
WDT の周期 4 ms が、16 ビット ポストスケーラで
乗算されます。WDT ポストスケーラの出力はマル
チプレクサで選択され、CONFIG2H レジスタのビッ
トで制御されます。使用できる周期の範囲は、4 ms
~ 131.072 秒 (2.18 分 ) です。WDT とポストスケー
ラ は、SLEEP ま た は CLRWDT の 命 令 の 実 行 時、
OSCCON レジスタの IRCF ビットの変更時、または
クロック障害の発生時にクリアされます。
注 1:
CLRWDT と SLEEP の命令は、実行時に
WDT とポストスケーラをクリアします。
2:
OSCCON レジスタの IRCF ビットの設定
を変更すると、WDT とポストスケーラ
のカウントがクリアされます。
3:
CLRWDT 命令の実行時に、ポストスケー
ラのカウントがクリアされます。
図 23-1:
WDT のブロック図
SWDTEN
WDTEN
Enable WDT
WDT Counter
LFINTOSC Source
Wake-up
from Power
Managed Modes
128
Change on IRCF bits
Programmable Postscaler
1:1 to 1:32,768
CLRWDT
Reset
WDT
Reset
All Device Resets
WDTPS<3:0>
4
Sleep
DS41303E_JP - ページ 304
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
23.2.1
制御レジスタ
レジスタ 23-14 に、WDTCON レジスタを示します。
これは読み出しと書き込みが可能なレジスタで、ソ
フトウェアから WDT イネーブル構成ビットを無効
にできる ( 構成ビットで WDT を無効にした場合の
み ) 制御ビットを有します。
レジスタ 23-14:
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 = 書き込み可
-n = POR 時の値
U = 未実装ビット。「0」として読み出し
「1」= セット
x = 不明
「0」= クリア
ビット 7-1
未実装 :「0」として読み出し
ビット 0
SWDTEN: ソフトウェアによるウォッチドッグ タイマ イネーブル / ディスエーブル ビット (1)
1 = WDT をオンにする
0 = WDT をオフにする ( リセット値 )
注 1:
構成ビット WDTEN が有効な場合は、このビットは効果がありません。
表 23-2:
Name
RCON
WDTCON
ウォッチドッグ タイマのレジスタの一覧
Bit 0
Reset
Values
on page
POR
BOR
56
—
SWDTEN
58
WDTEN
298
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
IPEN
SBOREN
—
RI
TO
PD
—
—
—
—
—
—
CONFIG2H
WDTPS3 WDTPS2 WDTPS1 WDTPS0
記号の説明 : — = 未実装、
「0」として読み出し。網掛けのビットはウォッチドッグ タイマでは使用しません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 305
PIC18F2XK20/4XK20
23.3
各ブロックには、対応する 3 つのコード プロテク
ション ビットがあります。
プログラム検証とコード プロテク
ション
PIC18 フラッシュ デバイスのコード プロテクショ
ンの全体構造は、他の PIC® マイクロコントローラ
デバイスとは大きく異なります。
デバイスにより、ユーザー プログラム メモリが 3
つ~ 5 つのブロックに分かれています。その 1 つ
は、0.5 KB または 2 KB ( デバイスによって異なる )
の起動ブロックです。残りのメモリは、バイナリ境
界で個々のブロックに分かれています。
図 23-2:
• コード プロテクション ビット (CPn)
• 書き込みプロテクション ビット (WRTn)
• 外部ブロック テーブル読み出しビット (EBTRn)
図 23-2 に、8 KB、16 KB、および 32 KB のデバイ
スのプログラム メモリの構成、および各ブロック
に対応するコード プロテクション ビットを示しま
す。ビットの実際の位置は、表 23-3 に示します。
PIC18F2XK20/4XK20 のコード プロテクションが有効なプログラム メモリ
MEMORY SIZE/DEVICE
Block Code Protection
Controlled By:
8 Kbytes
(PIC18FX3K20)
16 Kbytes
(PIC18FX4K20)
32 Kbytes
(PIC18FX5K20)
64 Kbytes
(PIC18FX6K20)
Boot Block
(000h-1FFh)
Boot Block
(000h-7FFh)
Boot Block
(000h-7FFh)
Boot Block
(000h-7FFh)
CPB, WRTB, EBTRB
Block 0
(200h-FFFh)
Block 0
(800h-1FFFh)
Block 0
(800h-1FFFh)
Block 0
(800h-3FFFh)
CP0, WRT0, EBTR0
Block 1
(1000h-1FFFh)
Block 1
(2000h-3FFFh)
Block 1
(2000h-3FFFh)
Block 1
(4000h-7FFFh)
CP1, WRT1, EBTR1
Block 2
(4000h-5FFFh)
Block 2
(8000h-BFFFh)
CP2, WRT2, EBTR2
Block 3
(6000h-7FFFh)
Block 3
(C000h-FFFFh)
CP3, WRT3, EBTR3
Unimplemented
Read ‘0’s
(2000h-1FFFFFh)
Unimplemented
Read ‘0’s
(4000h-1FFFFFh)
Unimplemented
Unimplemented
Read ‘0’s
Read ‘0’s
(8000h-1FFFFFh) (10000h-1FFFFFh)
表 23-3:
(Unimplemented
Memory Space)
コード プロテクション レジスタの一覧
File Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 1
Bit 0
CP1
CP0
CONFIG5L
—
—
—
—
300009h
CONFIG5H
CPD
CPB
—
—
—
—
—
—
30000Ah
CONFIG6L
—
—
—
—
WRT3(1)
WRT2(1)
WRT1
WRT0
30000Bh
CONFIG6H
WRTD
WRTB
WRTC
—
—
—
—
—
EBTR1
EBTR0
—
—
30000Ch
CONFIG7L
—
—
—
—
CONFIG7H
—
EBTRB
—
—
(1)
EBTR3
—
CP2
(1)
300008h
30000Dh
CP3
Bit 2
(1)
EBTR2
—
(1)
記号の説明 : 網掛けのセルは未実装です。
注 1: 実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。
DS41303E_JP - ページ 306
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
23.3.1
プログラム メモリのコード プロテク
ション
テーブル読み出しとテーブル書き込みの命令を使
用して、プログラム メモリの任意の位置の読み出
しと書き込みができます。デバイス ID は、テーブ
ル読み出しで読み出しができます。構成レジスタ
は、テーブル読み出しとテーブル書き込みの命令を
使用して、読み出しと書き込みができます。
きます。ブロック外の位置から実行されるテーブル
読み出し命令は読み出しが禁止され、結果は一連の
「0」になります。図 23-3 ~図 23-5 に、テーブル書
き込みとテーブル読み出しのプロテクションを示
します。
注:
通常の実行モードでは、CPn ビットには直接の効果
はありません。CPn ビットは、外部からの読み出し
と書き込みを禁止します。WRTn 構成ビットが「0」
の場合、ユーザー メモリのブロックを保護できま
す。EBTRn ビットはテーブル読み出しを制御しま
す。EBTRn ビットが「0」にクリアされているユー
ザー メモリのブロックについて、そのブロック内か
ら実行されるテーブルの READ 命令は読み出しがで
図 23-3:
コード プロテクション ビットの書き込み
は、
「1」の状態から「0」にすることのみ
ができます。
「0」の状態のビットに「1」
を書き込むことはできません。コード プ
ロテクション ビットを「1」に設定するの
は、フル チップ消去機能またはブロック
消去機能のみです。フル チップ消去機能
およびブロック消去機能は ICSP または外
部プログラム機能からのみ開始できます。
テーブル書き込み (WRTn) 禁止
Register Values
Program Memory
Configuration Bit Settings
000000h
0007FFh
000800h
TBLPTR = 0008FFh
PC = 001FFEh
WRTB, EBTRB = 11
WRT0, EBTR0 = 01
TBLWT*
001FFFh
002000h
WRT1, EBTR1 = 11
003FFFh
004000h
PC = 005FFEh
WRT2, EBTR2 = 11
TBLWT*
005FFFh
006000h
WRT3, EBTR3 = 11
007FFFh
Results: All table writes disabled to Blockn whenever WRTn = 0.
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 307
PIC18F2XK20/4XK20
図 23-4:
外部ブロック テーブル読み出し (EBTRn) 禁止
Register Values
Program Memory
Configuration Bit Settings
000000h
0007FFh
000800h
TBLPTR = 0008FFh
WRTB, EBTRB = 11
WRT0, EBTR0 = 10
001FFFh
002000h
PC = 003FFEh
TBLRD*
WRT1, EBTR1 = 11
003FFFh
004000h
WRT2, EBTR2 = 11
005FFFh
006000h
WRT3, EBTR3 = 11
007FFFh
Results: All table reads from external blocks to Blockn are disabled whenever EBTRn = 0.
TABLAT register returns a value of ‘0’.
図 23-5:
外部ブロック テーブル読み出し (EBTRn) 許可
Register Values
Program Memory
Configuration Bit Settings
000000h
0007FFh
000800h
TBLPTR = 0008FFh
PC = 001FFEh
WRTB, EBTRB = 11
WRT0, EBTR0 = 10
TBLRD*
001FFFh
002000h
WRT1, EBTR1 = 11
003FFFh
004000h
WRT2, EBTR2 = 11
005FFFh
006000h
WRT3, EBTR3 = 11
007FFFh
Results: Table reads permitted within Blockn, even when EBTRBn = 0.
TABLAT register returns the value of the data at the location TBLPTR.
DS41303E_JP - ページ 308
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
23.3.2
データ EEPROM のコード プロテク
ション
CPD と WRTD の 2 つのビットで、データ EEPROM
が外部からの読み出しや書き込みから保護されま
す。CPD ビットは、データ EEPROM に対する外部
からの読み出しと書き込みを禁止します。WRTD
ビットは、データ EEPROM に対する内部と外部か
らの書き込みを禁止します。通常動作では、プロテ
クション ビットの設定に関係なく、CPU は常にデー
タ EEPROM の読み出しができます。
23.3.3
構成レジスタのプロテクション
構成レジスタを書き込みから保護できます。WRTC
ビットが、構成レジスタのプロテクションを制御し
ます。通常の実行モードでは、WRTC ビットは読み
出し専用です。WRTC に書き込みができるのは、
ICSP または外部プログラム機能のみです。
23.4
ID ロケーション
ユーザーがチェックサムやその他のコード識別番
号を格納できる ID ロケーションとして、8 つのメ
モリ ロケーション (200000h-200007h) が指定されて
い ま す。こ れ ら の ロ ケ ー シ ョ ン は、通 常 実 行 時
(TBLRD および TBLWT の命令を使用 )、およびプロ
グラム / 検証時に読み出しと書き込みの両方ができ
ます。デバイスのコード プロテクションが有効な
ときに、ID ロケーションの読み出しができます。
23.5
マイクロコントローラのインサーキット デバッガ
を使用するには、設計で次のピンにインサーキット
プログラミングを接続する必要があります。
• MCLR/VPP/RE3
• VDD
• VSS
• RB7
• RB6
これにより、マイクロチップ社またはサード パー
ティの開発ツール会社のインサーキット デバッガ
モジュールに接続できます。
23.7
LVP 構成ビットをセットすると、単一電源 ICSP プ
ログラミング ( 旧用語は低電源 ICSP プログラミン
グ、LVP) が有効になります。単一源原プログラミ
ングを有効にすると、MCLR/VPP/RE3 ピンに高電圧
を印加せずにマイクロコントローラのプログラム
ができます。ただし、この場合 RB5/KBI1/PGM ピ
ンがプログラム モードの制御専用になり、汎用 I/O
ピンとしては使用できなくなります。
単一電源プログラミング モードでプログラムする
ときには、
通常の実行モードと同様に VDD が MCLR/
VPP/RE3 ピンに印加されます。プログラミング モー
ドにするには、VDD を PGM ピンに印加します。
注 1:
高電圧プログラミングは、LVP ビットや
PGM ピンの状態には関係なく、VIHH を
MCLR ピンに印加することで常に使用
できます。
2:
デフォルトでは、単一電源 ICSP は、未
プログラムのデバイス ( マイクロチップ
社の出荷時の状態 )、および消去済みの
デバイスで有効になっています。
3:
単一電源プログラミングを有効にする
と、RB5 ピンは汎用 I/O ピンとして使用
できなくなります。
4:
LVP を有効にしたときには、通常のプロ
グラム実行ができるように PGM ピンを
VSS に外部からプルダウンします。
インサーキット シリアル プログラ
ミング
PIC18F2XK20/4XK20 デバイスは、アプリケーショ
ン回路でのシリアル プログラミングをサポートし
ています。これは、2 本のラインをクロックとデー
タに、残り 3 本のラインを電源、アース、プログラ
ミング電圧にそれぞれ使用するだけで実現できま
す。これにより、未プログラムのデバイスを実装し
たボードを製造し、製品の出荷直前にマイクロコン
トローラをプログラムできます。また、多くの最新
のファームウェアや、カスタマイズしたファーム
ウェアのプログラムもできます。
23.6
単一電源 ICSP のプログラミング
インサーキット デバッガ
DEBUG 構成ビットを「0」にプログラムすると、イ
ンサーキット デバッガの機能が有効になります。こ
の機能を MPLAB® IDE とともに使用すると、簡単
なデバッガになります。マイクロコントローラでこ
の機能を有効にすると、一部のリソースが通常の用
途に使用できなくなります。表 23-4 に、バックグ
ラウンド デバッガに必要なリソースを示します。
表 23-4: デバッガのリソース
I/O pins:
RB6, RB7
Stack:
2 levels
Program Memory:
512 bytes
Data Memory:
10 bytes
 2009 Microchip Technology Inc.
単一電源 ICSP プログラミング モードを使用しない
場合は、LVP ビットをクリアできます。これによ
り、RB5/KBI1/PGM ピンをデジタル I/O ピン RB5 と
して使用できます。LVP ビットのセットやクリアが
できるのは、標準の高電圧プログラミングを使用
(VIHH を MCLR/VPP/RE3 ピンに印加 ) しているとき
のみです。LVP を無効にした場合、標準の高電圧プ
ログラミングのみが使用でき、デバイスのプログラ
ミングに使用する必要があります。
コード プロテクションが有効になっていないメモ
リは、ブロック消去または行ごとの消去で消去でき、
その後規定の VDD で書き込みできます。コード プ
ロテクションを有効にしているメモリを消去する場
合は、ブロック消去を使用する必要があります。
Preliminary
DS41303E_JP - ページ 309
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 310
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
24.0
命令セットの概要
PIC18F2XK20/4XK20 デバイスは、75 PIC18 コア命令
の標準セット、および再帰コードやソフトウェア ス
タックを使用するコードを最適化する新しい 8 つの
命令を含む拡張セットを装備しています。拡張セッ
トについては、この節で後述します。
24.1
標準命令セット
®
PIC18 の標準命令セットは、以前の PIC MCU の命
令を大幅に強化した一方、PIC® MCU の命令セット
からの移行を容易にしています。多くの命令はプロ
グラム メモリの 1 ワード (16 ビット ) ですが、プロ
グラム メモリの 2 つのロケーションを必要とする
命令が 4 つあります。
単一ワードの各命令は 16 ビット ワードで、命令タ
イプを指定するオペコードと、命令の動作を指定す
る 1 個以上のオペランドに分けられます。
命令セットは高度に直交し、次の 4 つの基本カテゴ
リに分けられます。
•
•
•
•
バイト指向命令
ビット指向命令
リテラル演算
制御動作
表 24-2 の PIC18 命令セットの一覧に、バイト指向、
ビット指向、リテラル、および制御の演算を示しま
す。表 24-1 に、オペコードのフィールドの説明を
示します。
多くのバイト指向の命令には、次の 3 つのオペラン
ドがあります。
1.
2.
3.
ファイル レジスタ (「f」で指定 )
結果の格納先 (「d」で指定 )
アクセスするメモリ (「a」で指定 )
ファイル レジスタ指定文字は、命令によって使用
されるファイル レジスタを指定します。格納先指
定文字「d」は、演算結果を格納する場所を指定し
ます。
「d」が「0」の場合、結果は WREG レジスタ
に書き込まれます。「d」が「1」の場合、結果は命
令で指定されたファイル レジスタに格納されます。
すべてのビット指向の命令には、次の 3 つのオペラ
ンドがあります。
1.
2.
3.
ファイル レジスタ (「f」で指定 )
ファイル レジスタ内のビット (「b」で指定 )
アクセスするメモリ (「a」で指定 )
リテラル命令は、次のオペランドのいくつかを使用
できます。
• ファイル レジスタにロードされるリテラル値
(「k」で指定 )
• リテラル値がロードされる FSR レジスタ
(「f」で指定 )
• オペランド不要 (「—」で指定 )
制御命令は、次のオペランドのいくつかを使用でき
ます。
• プログラム メモリのアドレス (「n」で指定 )
• CALL または RETURN の命令のモード
(「s」で指定 )
• テーブル読み出しまたはテーブル書き込みの
命令のモード (「m」で指定 )
• オペランド不要 (「—」で指定 )
4 つのダブルワード命令を除いて、すべての命令が
1 ワードです。ダブルワードの命令は、必要な情報
を 32 ビットに収めるためにダブルワードになって
います。2 ワード目の上位 4 ビットは「1」です。こ
の 2 ワード目 ( それ自体 ) が命令として実行される
場合、NOP として実行されます。
1 ワードの命令はすべて、1 命令サイクルで実行さ
れますが、条件テストが真の場合、または命令の実
行結果によりプログラム カウンタが変更される場
合を除きます。これらの場合には、NOP 命令として
実行されるサイクルが追加されるため、実行には 2
命令サイクルかかります。
ダブルワード命令は 2 命令サイクルで実行されます。
1 命令サイクルはオシレータの 4 周期です。した
がって、オシレータ周波数が 4 MHz の場合、通常
の命令実行時間は 1 s です。命令の結果によりプロ
グラム カウンタが変化した場合、または条件付き
テストが真の場合、命令実行時間は 2 s です。
2 ワードの分岐命令 ( 真の場合 ) は、3 s かかります。
図 24-1 に、命令の一般的な形式を示します。すべ
ての例で、16 進数を表す表記規則「nnh」を使用し
ています。
表 24-2 の命令セット一覧に、マイクロチップ社の
アセンブラ (MPASM™) が認識する標準の命令を示
します。
24.1.1 項「標準命令セット」で、個々の命令につい
て説明します。
ビット フィールドの指定文字「b」は、演算の影響
を受けるビット数を選択します。一方、ファイル レ
ジスタの指定文字「f」は、ビットがあるファイル
の番号を表します。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 311
PIC18F2XK20/4XK20
表 24-1:
オペコードのフィールドの説明
Field
Description
a
RAM access bit
a = 0: RAM location in Access RAM (BSR register is ignored)
a = 1: RAM bank is specified by BSR register
bbb
Bit address within an 8-bit file register (0 to 7).
BSR
Bank Select Register. Used to select the current RAM bank.
C, DC, Z, OV, N
ALU Status bits: Carry, Digit Carry, Zero, Overflow, Negative.
d
Destination select bit
d = 0: store result in WREG
d = 1: store result in file register f
dest
Destination: either the WREG register or the specified register file location.
f
8-bit Register file address (00h to FFh) or 2-bit FSR designator (0h to 3h).
fs
12-bit Register file address (000h to FFFh). This is the source address.
fd
12-bit Register file address (000h to FFFh). This is the destination address.
GIE
Global Interrupt Enable bit.
k
Literal field, constant data or label (may be either an 8-bit, 12-bit or a 20-bit value).
label
Label name.
mm
The mode of the TBLPTR register for the table read and table write instructions.
Only used with table read and table write instructions:
*
No change to register (such as TBLPTR with table reads and writes)
*+
Post-Increment register (such as TBLPTR with table reads and writes)
*-
Post-Decrement register (such as TBLPTR with table reads and writes)
Pre-Increment register (such as TBLPTR with table reads and writes)
+*
n
The relative address (2’s complement number) for relative branch instructions or the direct address for
CALL/BRANCH and RETURN instructions.
PC
Program Counter.
PCL
Program Counter Low Byte.
PCH
Program Counter High Byte.
PCLATH
Program Counter High Byte Latch.
PCLATU
Program Counter Upper Byte Latch.
PD
Power-down bit.
PRODH
Product of Multiply High Byte.
PRODL
Product of Multiply Low Byte.
s
Fast Call/Return mode select bit
s = 0: do not update into/from shadow registers
s = 1: certain registers loaded into/from shadow registers (Fast mode)
TBLPTR
21-bit Table Pointer (points to a Program Memory location).
TABLAT
8-bit Table Latch.
TO
Time-out bit.
TOS
Top-of-Stack.
u
Unused or unchanged.
WDT
Watchdog Timer.
WREG
Working register (accumulator).
x
Don’t care (‘0’ or ‘1’). The assembler will generate code with x = 0. It is the recommended form of use for
compatibility with all Microchip software tools.
zs
7-bit offset value for indirect addressing of register files (source).
7-bit offset value for indirect addressing of register files (destination).
zd
{
}
Optional argument.
[text]
Indicates an indexed address.
(text)
The contents of text.
[expr]<n>
Specifies bit n of the register indicated by the pointer expr.

Assigned to.
< >
Register bit field.

In the set of.
italics
User defined term (font is Courier).
DS41303E_JP - ページ 312
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 24-1:
命令の一般的な形式
Byte-oriented file register operations
15
10
9 8 7
OPCODE d
a
Example Instruction
0
f (FILE #)
ADDWF MYREG, W, B
d = 0 for result destination to be WREG register
d = 1 for result destination to be file register (f)
a = 0 to force Access Bank
a = 1 for BSR to select bank
f = 8-bit file register address
Byte to Byte move operations (2-word)
15
12 11
OPCODE
15
0
f (Source FILE #)
12 11
MOVFF MYREG1, MYREG2
0
f (Destination FILE #)
1111
f = 12-bit file register address
Bit-oriented file register operations
15
12 11
9 8 7
OPCODE b (BIT #) a
0
f (FILE #)
BSF MYREG, bit, B
b = 3-bit position of bit in file register (f)
a = 0 to force Access Bank
a = 1 for BSR to select bank
f = 8-bit file register address
Literal operations
15
8
7
OPCODE
0
k (literal)
MOVLW 7Fh
k = 8-bit immediate value
Control operations
CALL, GOTO and Branch operations
15
8 7
OPCODE
15
0
n<7:0> (literal)
12 11
GOTO Label
0
n<19:8> (literal)
1111
n = 20-bit immediate value
15
8 7
OPCODE
15
S
0
CALL MYFUNC
n<7:0> (literal)
12 11
0
n<19:8> (literal)
1111
S = Fast bit
15
OPCODE
15
OPCODE
 2009 Microchip Technology Inc.
11 10
0
BRA MYFUNC
n<10:0> (literal)
8 7
0
n<7:0> (literal)
Preliminary
BC MYFUNC
DS41303E_JP - ページ 313
PIC18F2XK20/4XK20
表 24-2:
PIC18FXXXX 命令セット
Mnemonic,
Operands
Description
Cycles
16-Bit Instruction Word
MSb
LSb
Status
Affected
Notes
BYTE-ORIENTED OPERATIONS
ADDWF
ADDWFC
ANDWF
CLRF
COMF
CPFSEQ
CPFSGT
CPFSLT
DECF
DECFSZ
DCFSNZ
INCF
INCFSZ
INFSNZ
IORWF
MOVF
MOVFF
f, d, a
f, d, a
f, d, a
f, a
f, d, a
f, a
f, a
f, a
f, d, a
f, d, a
f, d, a
f, d, a
f, d, a
f, d, a
f, d, a
f, d, a
fs, fd
MOVWF
MULWF
NEGF
RLCF
RLNCF
RRCF
RRNCF
SETF
SUBFWB
f, a
f, a
f, a
f, d, a
f, d, a
f, d, a
f, d, a
f, a
f, d, a
SUBWF
SUBWFB
f, d, a
f, d, a
SWAPF
TSTFSZ
XORWF
f, d, a
f, a
f, d, a
注 1:
2:
3:
4:
Add WREG and f
Add WREG and CARRY bit to f
AND WREG with f
Clear f
Complement f
Compare f with WREG, skip =
Compare f with WREG, skip >
Compare f with WREG, skip <
Decrement f
Decrement f, Skip if 0
Decrement f, Skip if Not 0
Increment f
Increment f, Skip if 0
Increment f, Skip if Not 0
Inclusive OR WREG with f
Move f
1st word
Move fs (source) to
fd (destination) 2nd word
Move WREG to f
Multiply WREG with f
Negate f
Rotate Left f through Carry
Rotate Left f (No Carry)
Rotate Right f through Carry
Rotate Right f (No Carry)
Set f
Subtract f from WREG with
borrow
Subtract WREG from f
Subtract WREG from f with
borrow
Swap nibbles in f
Test f, skip if 0
Exclusive OR WREG with f
01da
00da
01da
101a
11da
001a
010a
000a
01da
11da
11da
10da
11da
10da
00da
00da
ffff
ffff
111a
001a
110a
01da
01da
00da
00da
100a
01da
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
C, DC, Z, OV, N
C, DC, Z, OV, N
Z, N
Z
Z, N
None
None
None
C, DC, Z, OV, N
None
None
C, DC, Z, OV, N
None
None
Z, N
Z, N
None
1
1
1
1
1
1
1
1
1
0010
0010
0001
0110
0001
0110
0110
0110
0000
0010
0100
0010
0011
0100
0001
0101
1100
1111
0110
0000
0110
0011
0100
0011
0100
0110
0101
1
1
0101
0101
11da
10da
ffff
ffff
ffff
ffff
C, DC, Z, OV, N
C, DC, Z, OV, N
1, 2
1
1 (2 or 3)
1
0011
0110
0001
10da
011a
10da
ffff
ffff
ffff
ffff
ffff
ffff
None
None
Z, N
4
1, 2
1
1
1
1
1
1 (2 or 3)
1 (2 or 3)
1 (2 or 3)
1
1 (2 or 3)
1 (2 or 3)
1
1 (2 or 3)
1 (2 or 3)
1
1
2
None
None
C, DC, Z, OV, N
C, Z, N
Z, N
C, Z, N
Z, N
None
C, DC, Z, OV, N
1, 2
1, 2
1,2
2
1, 2
4
4
1, 2
1, 2, 3, 4
1, 2, 3, 4
1, 2
1, 2, 3, 4
4
1, 2
1, 2
1
1, 2
1, 2
1, 2
PORT レジスタの値を、そのレジスタ自体の関数として変更する場合 (MOVF PORTB, 1, 0 など )、対応するピンに表れ
る値が使用されます。例えば、入力として設定されているピンのデータ ラッチが「1」で、外部デバイスから Low に駆
動されている場合、そのデータは「0」に上書きされます。
この命令を TMR0 レジスタで実行 ( 可能な場合には d に 1 を指定 ) すると、プリスケーラが TMR0 に割り当てられてい
るときにはプリスケーラがクリアされます。
Program Counter (PC: プログラム カウンタ ) が変更された場合、または条件付きテストの結果が真の場合、命令実行には
2 サイクルが必要です。2 サイクル目は、NOP として実行されます。
一部の命令のサイズは 2 ワードです。命令の 1 ワード目の 16 ビットに含まれる情報が取得されない場合、命令の 2 ワー
ド目は NOP として実行されます。これにより、プログラム メモリのすべてのロケーションに有効な命令が確保されます。
DS41303E_JP - ページ 314
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 24-2:
PIC18FXXXX 命令セット ( 続き )
Mnemonic,
Operands
Description
Cycles
16-Bit Instruction Word
MSb
LSb
Status
Affected
Notes
BIT-ORIENTED OPERATIONS
BCF
BSF
BTFSC
BTFSS
BTG
f, b, a
f, b, a
f, b, a
f, b, a
f, d, a
Bit Clear f
Bit Set f
Bit Test f, Skip if Clear
Bit Test f, Skip if Set
Bit Toggle f
1
1
1 (2 or 3)
1 (2 or 3)
1
1001
1000
1011
1010
0111
bbba
bbba
bbba
bbba
bbba
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
None
None
None
None
None
1 (2)
1 (2)
1 (2)
1 (2)
1 (2)
1 (2)
1 (2)
2
1 (2)
2
0010
0110
0011
0111
0101
0001
0100
0nnn
0000
110s
kkkk
0000
0000
1111
kkkk
0000
xxxx
0000
0000
1nnn
0000
0000
nnnn
nnnn
nnnn
nnnn
nnnn
nnnn
nnnn
nnnn
nnnn
kkkk
kkkk
0000
0000
kkkk
kkkk
0000
xxxx
0000
0000
nnnn
1111
0001
nnnn
nnnn
nnnn
nnnn
nnnn
nnnn
nnnn
nnnn
nnnn
kkkk
kkkk
0100
0111
kkkk
kkkk
0000
xxxx
0110
0101
nnnn
1111
000s
None
None
None
None
None
None
None
None
None
None
1
1
1
1
2
1
2
1110
1110
1110
1110
1110
1110
1110
1101
1110
1110
1111
0000
0000
1110
1111
0000
1111
0000
0000
1101
0000
0000
2
2
1
0000
0000
0000
1100
0000
0000
kkkk
0001
0000
kkkk
001s
0011
1, 2
1, 2
3, 4
3, 4
1, 2
CONTROL OPERATIONS
BC
BN
BNC
BNN
BNOV
BNZ
BOV
BRA
BZ
CALL
n
n
n
n
n
n
n
n
n
n, s
CLRWDT
DAW
GOTO
—
—
n
NOP
NOP
POP
PUSH
RCALL
RESET
RETFIE
—
—
—
—
n
s
Branch if Carry
Branch if Negative
Branch if Not Carry
Branch if Not Negative
Branch if Not Overflow
Branch if Not Zero
Branch if Overflow
Branch Unconditionally
Branch if Zero
Call subroutine 1st word
2nd word
Clear Watchdog Timer
Decimal Adjust WREG
Go to address
1st word
2nd word
No Operation
No Operation
Pop top of return stack (TOS)
Push top of return stack (TOS)
Relative Call
Software device Reset
Return from interrupt enable
RETLW
RETURN
SLEEP
k
s
—
Return with literal in WREG
Return from Subroutine
Go into Standby mode
注 1:
2:
3:
4:
1
1
2
TO, PD
C
None
None
None
None
None
None
All
GIE/GIEH,
PEIE/GIEL
None
None
TO, PD
4
PORT レジスタの値を、そのレジスタ自体の関数として変更する場合 (MOVF PORTB, 1, 0 など )、対応するピンに表れ
る値が使用されます。例えば、入力として設定されているピンのデータ ラッチが「1」で、外部デバイスから Low に駆
動されている場合、そのデータは「0」に上書きされます。
この命令を TMR0 レジスタで実行 ( 可能な場合には d に 1 を指定 ) すると、プリスケーラが TMR0 に割り当てられてい
るときにはプリスケーラがクリアされます。
Program Counter (PC: プログラム カウンタ ) が変更された場合、または条件付きテストの結果が真の場合、命令実行には
2 サイクルが必要です。2 サイクル目は、NOP として実行されます。
一部の命令のサイズは 2 ワードです。命令の 1 ワード目の 16 ビットに含まれる情報が取得されない場合、命令の 2 ワー
ド目は NOP として実行されます。これにより、プログラム メモリのすべてのロケーションに有効な命令が確保されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 315
PIC18F2XK20/4XK20
表 24-2:
PIC18FXXXX 命令セット ( 続き )
Mnemonic,
Operands
Description
Cycles
16-Bit Instruction Word
MSb
LSb
Status
Affected
Notes
LITERAL OPERATIONS
ADDLW
ANDLW
IORLW
LFSR
k
k
k
f, k
MOVLB
MOVLW
MULLW
RETLW
SUBLW
XORLW
k
k
k
k
k
k
Add literal and WREG
AND literal with WREG
Inclusive OR literal with WREG
Move literal (12-bit) 2nd word
to FSR(f)
1st word
Move literal to BSR<3:0>
Move literal to WREG
Multiply literal with WREG
Return with literal in WREG
Subtract WREG from literal
Exclusive OR literal with WREG
1
1
1
2
1
1
1
2
1
1
0000
0000
0000
1110
1111
0000
0000
0000
0000
0000
0000
1111
1011
1001
1110
0000
0001
1110
1101
1100
1000
1010
kkkk
kkkk
kkkk
00ff
kkkk
0000
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
kkkk
C, DC, Z, OV, N
Z, N
Z, N
None
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
1000
1001
1010
1011
1100
1101
1110
1111
None
None
None
None
None
None
None
None
None
None
None
None
C, DC, Z, OV, N
Z, N
DATA MEMORY  PROGRAM MEMORY OPERATIONS
TBLRD*
TBLRD*+
TBLRD*TBLRD+*
TBLWT*
TBLWT*+
TBLWT*TBLWT+*
注 1:
2:
3:
4:
Table Read
Table Read with post-increment
Table Read with post-decrement
Table Read with pre-increment
Table Write
Table Write with post-increment
Table Write with post-decrement
Table Write with pre-increment
2
2
PORT レジスタの値を、そのレジスタ自体の関数として変更する場合 (MOVF PORTB, 1, 0 など )、対応するピンに表れ
る値が使用されます。例えば、入力として設定されているピンのデータ ラッチが「1」で、外部デバイスから Low に駆
動されている場合、そのデータは「0」に上書きされます。
この命令を TMR0 レジスタで実行 ( 可能な場合には d に 1 を指定 ) すると、プリスケーラが TMR0 に割り当てられてい
るときにはプリスケーラがクリアされます。
Program Counter (PC: プログラム カウンタ ) が変更された場合、または条件付きテストの結果が真の場合、命令実行には
2 サイクルが必要です。2 サイクル目は、NOP として実行されます。
一部の命令のサイズは 2 ワードです。命令の 1 ワード目の 16 ビットに含まれる情報が取得されない場合、命令の 2 ワー
ド目は NOP として実行されます。これにより、プログラム メモリのすべてのロケーションに有効な命令が確保されます。
DS41303E_JP - ページ 316
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
24.1.1
標準命令セット
ADDLW
ADD literal to W
ADDWF
ADD W to f
シンタックス :
ADDLW
シンタックス :
ADDWF
オペランド :
0  k  255
オペランド :
実行内容 :
(W) + k  W
影響を受ける
ステータス :
N, OV, C, DC, Z
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(W) + (f)  dest
影響を受ける
ステータス :
N, OV, C, DC, Z
0000
エンコード :
説明 :
k
1111
kkkk
kkkk
W の内容が 8 ビットのリテラル「k」に
加算され、結果が W に入れられます。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
説明 :
Q2
リテラル「k」 データを
を読み出す
処理
ADDLW
例:
命令実行前
W
=
命令実行後
W =
Q3
0010
エンコード :
01da
ffff
ffff
W をレジスタ「f」に加算します。「d」
が「0」の場合、結果は W に書き込まれ
ます。「d」が「1」の場合、結果はレジ
スタ「f」に書き戻されます(デフォルト)。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
Q4
Wに
書き込む
15h
10h
25h
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
Q2
ADDWF
命令実行前
W
REG
命令実行後
W
REG
Q3
レジスタ「f」 データを
を読み出す
処理
例:
注:
f {,d {,a}}
=
=
17h
0C2h
=
=
0D9h
0C2h
Q4
格納先に
書き込む
REG, 0, 0
PIC18 の命令はすべて、記号アドレス指定で使用できるオプションのラベル引き数を、命令ニーモニッ
クの前に付けることができます。ラベルを使用する場合、命令の形式は「( ラベル ) 命令 引き数 (1 つ
以上 )」になります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 317
PIC18F2XK20/4XK20
ADDWFC
ADD W and CARRY bit to f
ANDLW
AND literal with W
シンタックス :
ADDWFC
シンタックス :
ANDLW
オペランド :
0  f  255
d [0,1]
a [0,1]
オペランド :
0  k  255
実行内容 :
(W) .AND. k  W
実行内容 :
(W) + (f) + (C)  dest
影響を受ける
ステータス :
N, Z
影響を受ける
ステータス :
N,OV, C, DC, Z
0010
エンコード :
説明 :
f {,d {,a}}
00da
ffff
ffff
W、キャリー フラグ、およびデータ メ
モリのロケーション「f」を加算しま
す。
「d」が「0」の場合、結果は W に
入れられます。「d」が「1」の場合、
結果はデータ メモリのロケーション
「f」に書き込まれます。
「a」が「0」の場合、アクセス バンク
が選択されます。
「a」が「1」の場合、
GPR バンクの選択に BSR が使用され
ます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル オ
フセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード :
1
サイクル :
1
1/4 サイクルの動作 :
Q1
Decode
Q2
Q3
レジスタ「f」 データを
を読み出す
処理
ADDWFC
例:
命令実行前
CARRY bit
REG
W
命令実行後
CARRY bit
REG
W
=
=
=
1
02h
4Dh
=
=
=
0
02h
50h
DS41303E_JP - ページ 318
0000
エンコード :
k
1011
kkkk
kkkk
説明 :
W と 8 ビットのリテラル「k」を AND 演
算します。結果は W に入れられます。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
Q2
リテラル「k」 データを
を読み出す
処理
ANDLW
例:
命令実行前
W
命令実行後
W
Q3
=
A3h
=
03h
Q4
Wに
書き込む
05Fh
Q4
格納先に
書き込む
REG, 0, 1
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
ANDWF
AND W with f
BC
Branch if Carry
シンタックス :
ANDWF
シンタックス :
BC
オペランド :
0  f  255
d [0,1]
a [0,1]
オペランド :
-128  n  127
実行内容 :
if CARRY bit is ‘1’
(PC) + 2 + 2n  PC
影響を受ける
ステータス :
なし
f {,d {,a}}
実行内容 :
(W) .AND. (f)  dest
影響を受ける
ステータス :
N, Z
説明 :
01da
ffff
ffff
W の内容をレジスタ「f」と AND 演算し
ます。「d」が「0」の場合、結果は W
に書き込まれます。「d」が「1」の場
合、結果はレジスタ「f」に書き戻され
ます ( デフォルト )。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のとき
には常にこの命令がインデックス付き
リテラル オフセット アドレス指定モー
ドで動作します。詳細については、24.2.3
項「イ ンデ ッ クス 付 きリ テ ラル オ フ
セット モードのバイト指向命令とビッ
ト指向命令」を参照してください。
ワード数 :
1
サイクル数 :
1
Q1
デコード レジスタ「f」を
読み出す
ANDWF
例:
=
=
17h
C2h
=
=
02h
C2h
Q4
データを
処理
格納先に
書き込む
1
サイクル数 :
1(2)
1/4 サイクルの動作 :
ジャンプする場合 :
Q1
デコード
Q2
動作なし
命令実行前
PC
命令実行後
If CARRY
PC
If CARRY
PC
PC に書き込
む
動作なし
Q3
Q4
Q2
HERE
Q4
動作なし
リテラル「n」 データを
を読み出す
処理
例:
Preliminary
Q3
リテラル「n」 データを
を読み出す
処理
動作なし
REG, 0, 0
 2009 Microchip Technology Inc.
nnnn
ワード数 :
デコード
Q3
nnnn
CARRY ビットが「1」の場合、プログ
ラムが分岐します。
2 の補数「2n」を PC に加算します。PC
は次の命令をフェッチするためにイン
クリメントされているので、新しいアド
レスは「PC + 2 + 2n」になります。これ
により、2 サイクルの命令になります。
ジャンプしない場合 :
Q1
Q2
0010
説明 :
1/4 サイクルの動作 :
命令実行前
W
REG
命令実行後
W
REG
1110
エンコード :
0001
エンコード :
n
BC
動作なし
5
=
address (HERE)
=
=
=
=
1;
address (HERE + 12)
0;
address (HERE + 2)
DS41303E_JP - ページ 319
PIC18F2XK20/4XK20
BCF
Bit Clear f
BN
Branch if Negative
シンタックス :
BCF
シンタックス :
BN
オペランド :
0  f  255
0b7
a [0,1]
オペランド :
-128  n  127
実行内容 :
if NEGATIVE bit is ‘1’
(PC) + 2 + 2n  PC
影響を受ける
ステータス :
なし
f, b {,a}
実行内容 :
0  f<b>
影響を受ける
ステータス :
なし
説明 :
bbba
ffff
ffff
レジスタ「f」のビット「b」をクリア
します。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
1
サイクル数 :
1
Q1
例:
Q2
BCF
命令実行前
FLAG_REG =
命令実行後
FLAG_REG =
DS41303E_JP - ページ 320
FLAG_REG,
1
サイクル数 :
1(2)
1/4 サイクルの動作 :
ジャンプする場合 :
Q1
Q2
動作なし
Q4
デコード
例:
47h
Preliminary
PC に
書き込む
動作なし
Q3
Q4
Q2
HERE
Q4
動作なし
リテラル「n」 データを
を読み出す
処理
命令実行前
PC
命令実行後
If NEGATIVE
PC
If NEGATIVE
PC
C7h
Q3
リテラル「n」 データを
を読み出す
処理
レジスタ「f」
に書き込む
7, 0
nnnn
ワード数 :
ジャンプしない場合 :
Q1
Q3
nnnn
NEGATIVE ビットが「1」の場合、プ
ログラムが分岐します。
2 の補数「2n」を PC に加算します。PC
は次の命令をフェッチするためにイン
クリメントされているので、新しいアド
レスは「PC + 2 + 2n」になります。これ
により、2 サイクルの命令になります。
動作なし
レジスタ「f」 データを
を読み出す
処理
0110
説明 :
デコード
1/4 サイクルの動作 :
デコード
1110
エンコード :
1001
エンコード :
n
BN
動作なし
Jump
=
address (HERE)
=
=
=
=
1;
address (Jump)
0;
address (HERE + 2)
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
BNC
Branch if Not Carry
BNN
Branch if Not Negative
シンタックス :
BNC
シンタックス :
BNN n
オペランド :
-128  n  127
n
オペランド :
-128  n  127
実行内容 :
if CARRY bit is ‘0’
(PC) + 2 + 2n  PC
実行内容 :
if NEGATIVE bit is ‘0’
(PC) + 2 + 2n  PC
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
なし
1110
エンコード :
0011
nnnn
nnnn
1110
エンコード :
0111
nnnn
nnnn
説明 :
CARRY ビットが「0」の場合、プログ
ラムが分岐します。
2 の補数「2n」を PC に加算します。PC
は次の命令をフェッチするためにイン
クリメントされているので、新しいアド
レスは「PC + 2 + 2n」になります。これ
により、2 サイクルの命令になります。
説明 :
NEGATIVE ビットが「0」の場合、プ
ログラムが分岐します。
2 の補数「2n」を PC に加算します。PC
は次の命令をフェッチするためにイン
クリメントされているので、新しいアド
レスは「PC + 2 + 2n」になります。これ
により、2 サイクルの命令になります。
ワード数 :
1
ワード数 :
1
サイクル数 :
1(2)
サイクル数 :
1(2)
1/4 サイクルの動作 :
ジャンプする場合 :
Q1
デコード
Q2
リテラル「n」 データを
を読み出す
処理
動作なし
動作なし
ジャンプしない場合 :
Q1
デコード
Q3
動作なし
Q2
HERE
例:
命令実行前
PC
命令実行後
If CARRY
PC
If CARRY
PC
Q4
PC に
書き込む
BNC
動作なし
Q4
動作なし
デコード
Jump
address (HERE)
=
=
=
=
0;
address (Jump)
1;
address (HERE + 2)
例:
動作なし
PC に
書き込む
動作なし
Q3
Q4
Q2
HERE
Q4
動作なし
リテラル「n」 データを
を読み出す
処理
命令実行前
PC
命令実行後
If NEGATIVE
PC
If NEGATIVE
PC
Preliminary
Q3
リテラル「n」 データを
を読み出す
処理
ジャンプしない場合 :
Q1
=
 2009 Microchip Technology Inc.
デコード
Q2
動作なし
Q3
リテラル「n」 データを
を読み出す
処理
1/4 サイクルの動作 :
ジャンプする場合 :
Q1
BNN
動作なし
Jump
=
address (HERE)
=
=
=
=
0;
address (Jump)
1;
address (HERE + 2)
DS41303E_JP - ページ 321
PIC18F2XK20/4XK20
BNOV
Branch if Not Overflow
BNZ
Branch if Not Zero
シンタックス :
BNOV n
シンタックス :
BNZ n
オペランド :
-128  n  127
オペランド :
-128  n  127
実行内容 :
if OVERFLOW bit is ‘0’
(PC) + 2 + 2n  PC
実行内容 :
if ZERO bit is ‘0’
(PC) + 2 + 2n  PC
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
なし
1110
エンコード :
0101
nnnn
nnnn
1110
エンコード :
0001
nnnn
nnnn
説明 :
OVERFLOW ビットが「0」の場合、プ
ログラムが分岐します。
2 の補数「2n」を PC に加算します。PC
は次の命令をフェッチするためにイン
クリメントされているので、新しいアド
レスは「PC + 2 + 2n」になります。これ
により、2 サイクルの命令になります。
説明 :
ZERO ビットが「0」の場合、プログラ
ムが分岐します。
2 の補数「2n」を PC に加算します。PC
は次の命令をフェッチするためにイン
クリメントされているので、新しいアド
レスは「PC + 2 + 2n」になります。これ
により、2 サイクルの命令になります。
ワード数 :
1
ワード数 :
1
サイクル数 :
1(2)
サイクル数 :
1(2)
1/4 サイクルの動作 :
ジャンプする場合 :
Q1
デコード
動作なし
Q2
リテラル「n」 データを
を読み出す
処理
動作なし
ジャンプしない場合 :
Q1
デコード
例:
Q3
Q2
動作なし
HERE
命令実行前
PC
=
命令実行後
If OVERFLOW =
PC
=
If OVERFLOW =
PC
=
DS41303E_JP - ページ 322
Q4
PC に
書き込む
デコード
Q2
動作なし
Q4
ジャンプしない場合 :
Q1
動作なし
デコード
BNOV Jump
命令実行前
PC
命令実行後
If ZERO
PC
If ZERO
PC
address (HERE)
0;
address (Jump)
1;
address (HERE + 2)
Preliminary
動作なし
Q4
PC に
書き込む
動作なし
動作なし
Q3
Q4
Q2
リテラル「n」 データを
を読み出す
処理
HERE
例:
Q3
リテラル「n」 データを
を読み出す
処理
動作なし
Q3
リテラル「n」 データを
を読み出す
処理
1/4 サイクルの動作 :
ジャンプする場合 :
Q1
BNZ
動作なし
Jump
=
address (HERE)
=
=
=
=
0;
address (Jump)
1;
address (HERE + 2)
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
BRA
Unconditional Branch
BSF
Bit Set f
シンタックス :
BRA
シンタックス :
BSF f, b {,a}
オペランド :
-1024  n  1023
オペランド :
0  f  255
0b7
a [0,1]
実行内容 :
1  f<b>
影響を受ける
ステータス :
なし
n
実行内容 :
(PC) + 2 + 2n  PC
影響を受ける
ステータス :
なし
1101
エンコード :
説明 :
0nnn
nnnn
nnnn
2 の補数「2n」を PC に加算します。PC
は次の命令をフェッチするためにインク
リメントされているので、新しいアドレ
スは「PC + 2 + 2n」になります。これに
より、2 サイクルの命令になります。
ワード数 :
1
サイクル数 :
2
説明 :
Q1
動作なし
Q2
Q3
リテラル「n」 データを
を読み出す
処理
動作なし
動作なし
HERE
例:
命令実行前
PC
命令実行後
PC
BRA
Jump
=
address (HERE)
=
address (Jump)
Q4
PC に
書き込む
動作なし
ワード数 :
1
サイクル数 :
ffff
ffff
1
1/4 サイクルの動作 :
Q1
デコード
Q2
BSF
命令実行前
FLAG_REG
命令実行後
FLAG_REG
Preliminary
Q3
レジスタ「f」 データを
を読み出す
処理
例:
 2009 Microchip Technology Inc.
bbba
レジスタ「f」のビット「b」をセット
します。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
1/4 サイクルの動作 :
デコード
1000
エンコード :
Q4
レジスタ「f」
に書き込む
FLAG_REG, 7, 1
=
0Ah
=
8Ah
DS41303E_JP - ページ 323
PIC18F2XK20/4XK20
BTFSC
Bit Test File, Skip if Clear
BTFSS
Bit Test File, Skip if Set
シンタックス :
BTFSC f, b {,a}
シンタックス :
BTFSS f, b {,a}
オペランド :
0  f  255
0b7
a [0,1]
オペランド :
0  f  255
0b<7
a [0,1]
実行内容 :
skip if (f<b>) = 0
実行内容 :
skip if (f<b>) = 1
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
なし
1011
エンコード :
説明 :
bbba
ffff
ffff
レジスタ「f」のビット「b」が「0」の場
合、次の命令をスキップします。ビット
「b」が「0」の場合、現在の命令の実行
中にフェッチされた次の命令を破棄し、
代わりに NOP を実行して、2 サイクルの
命令にします。
「a」が「0」の場合、アクセス バンクが選
択されます。
「a」が「1」の場合、GPR バ
ンクの選択に BSR が使用されます。
「a」が「0」で拡張命令セットが有効の
場合、f 95 (5Fh) のときには常にこの命
令はインデックス付きリテラル オフセッ
ト アドレス指定モードで実行されます。
詳細については、24.2.3 項「インデック
ス付きリテラル オフセット モードのバイ
ト指向命令とビット指向命令」を参照し
てください。
ワード数 :
1
サイクル数 :
1(2)
注:
Q2
Q3
レジスタ「f」 データを処理
を読み出す
ffff
ffff
レジスタ「f」のビット「b」が「1」の
場合、次の命令をスキップします。ビッ
ト「b」が「1」の場合、現在の命令の実
行中にフェッチされた次の命令を破棄
し、代わりに NOP を実行して、2 サイク
ルの命令にします。
「a」が「0」の場合、アクセス バンクが選
択されます。
「a」が「1」の場合、GPR バ
ンクの選択に BSR が使用されます。
「a」が「0」で拡張命令セットが有効の
場合、f 95 (5Fh) のときには常にこの命
令はインデックス付きリテラル オフセッ
ト アドレス指定モードで実行されます。
詳細については、24.2.3 項「インデック
ス付きリテラル オフセット モードのバ
イト指向命令とビット指向命令」を参照
してください。
ワード数 :
1
サイクル数 :
1(2)
注:
Q4
Q1
動作なし
デコード
スキップする場合 :
スキップする場合は 3 サイクルで、
その後 2 ワードの命令になります。
Q2
Q3
Q4
レジスタ「f」 データを
を読み出す
処理
動作なし
スキップする場合 :
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
スキップして 2 ワードの命令がある場合、
Q1
Q2
Q3
例:
bbba
1/4 サイクルの動作 :
Q1
デコード
説明 :
スキップする場合は 3 サイクルで、
その後 2 ワードの命令になります。
1/4 サイクルの動作 :
1010
エンコード :
Q4
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
スキップの後 2 ワードの命令がある場合 :
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
HERE
FALSE
TRUE
命令実行前
PC
命令実行後
If FLAG<1>
PC
If FLAG<1>
PC
BTFSC
:
:
FLAG, 1, 0
=
address (HERE)
=
=
=
=
0;
address (TRUE)
1;
address (FALSE)
DS41303E_JP - ページ 324
例:
HERE
FALSE
TRUE
命令実行前
PC
命令実行後
If FLAG<1>
PC
If FLAG<1>
PC
Preliminary
BTFSS
:
:
FLAG, 1, 0
=
address (HERE)
=
=
=
=
0;
address (FALSE)
1;
address (TRUE)
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
BTG
Bit Toggle f
BOV
Branch if Overflow
シンタックス :
BTG f, b {,a}
シンタックス :
BOV n
オペランド :
0  f  255
0b<7
a [0,1]
オペランド :
-128  n  127
実行内容 :
if OVERFLOW bit is ‘1’
(PC) + 2 + 2n  PC
影響を受ける
ステータス :
なし
実行内容 :
(f<b>)  f<b>
影響を受ける
ステータス :
なし
説明 :
bbba
ffff
ffff
データ メモリ ロケーション「f」の
ビット「b」を反転します。
「a」が「0」の場合、アクセス バンク
が選択されます。「a」が「1」の場合、
GPR バンクの選択に BSR が使用され
ます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
1
サイクル数 :
1
Q1
命令実行前 :
PORTC
命令実行後 :
PORTC
nnnn
nnnn
OVERFLOW ビットが「1」の場合、プ
ログラムが分岐します。
2 の補数「2n」を PC に加算します。PC
は次の命令をフェッチするためにイン
クリメントされているので、新しいアド
レスは「PC + 2 + 2n」になります。これ
により、2 サイクルの命令になります。
ワード数 :
1
サイクル数 :
1(2)
1/4 サイクルの動作 :
ジャンプする場合 :
Q1
デコード
動作なし
Q2
Q3
PORTC,
0111 0101 [75h]
=
0110 0101 [65h]
デコード
レジスタ「f」
に書き込む
4, 0
=
 2009 Microchip Technology Inc.
Q1
Q4
レジスタ「f」 データを
を読み出す
処理
BTG
例:
0100
説明 :
Q2
Q3
リテラル「n」 データを
を読み出す
処理
動作なし
動作なし
Q4
PC に
書き込む
動作なし
ジャンプしない場合 :
1/4 サイクルの動作 :
デコード
1110
エンコード :
0111
エンコード :
例:
Q2
HERE
命令実行前
PC
=
命令実行後
If OVERFLOW =
PC
=
If OVERFLOW =
PC
=
Preliminary
Q3
リテラル「n」 データを
を読み出す
処理
BOV
Q4
動作なし
Jump
address (HERE)
1;
address (Jump)
0;
address (HERE + 2)
DS41303E_JP - ページ 325
PIC18F2XK20/4XK20
BZ
Branch if Zero
CALL
Subroutine Call
シンタックス :
BZ
シンタックス :
CALL k {,s}
オペランド :
-128  n  127
オペランド :
実行内容 :
if ZERO bit is ‘1’
(PC) + 2 + 2n  PC
0  k  1048575
s [0,1]
実行内容 :
(PC) + 4  TOS,
k  PC<20:1>,
if s = 1
(W)  WS,
(Status)  STATUSS,
(BSR)  BSRS
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
n
なし
1110
エンコード :
説明 :
0000
nnnn
nnnn
ZERO ビットが「1」の場合、プログラ
ムが分岐します。
2 の補数「2n」を PC に加算します。次
の命令をフェッチするために PC がイ
ンクリメントされるので、新しいアド
レスは「PC + 2 + 2n」になります。こ
れにより、2 サイクルの命令になりま
す。
ワード数 :
1
サイクル数 :
1(2)
1/4 サイクルの動作 :
ジャンプする場合 :
Q1
デコード
動作なし
Q2
動作なし
ジャンプしない場合 :
Q1
デコード
Q3
リテラル「n」 データを
を読み出す
処理
Q3
Q4
動作なし
命令実行前
PC
命令実行後
If ZERO
PC
If ZERO
PC
BZ
address (HERE)
=
=
=
=
1;
address (Jump)
0;
address (HERE + 2)
2
サイクル数 :
2
1/4 サイクルの動作 :
デコード
Q2
動作なし
動作なし
HERE
例:
Preliminary
Q3
Q4
リテラル「k」
PC を
リテラル「k」
<7:0> を読み スタックに <19:8> を読
出す
プッシュ
み出し、PC
に書き込む
命令実行前
PC
命令実行後
PC
TOS
WS
BSRS
STATUSS
DS41303E_JP - ページ 326
kkkk0
kkkk8
ワード数 :
Jump
=
k7kkk
kkkk
2 MB のメモリ範囲全体のサブルーチン
呼び出しです。最初に、リターン アド
レス (PC + 4) をリターン スタックに
プッシュします。「s」= 1 の場合、W、
STATUS、および BSR のレジスタも、
対応するシャドウ レジスタである WS、
STATUSS、および BSRS のレジスタに
プッシュします。「s」= 0 の場合、更新
は発生しません ( デフォルト )。その
後、20 ビットの値「k」を PC<20:1> に
ロードします。 CALL は、2 サイクル
の命令です。
Q1
HERE
例:
110s
k19kkk
説明 :
Q4
動作なし
リテラル「n」 データを
を読み出す
処理
1110
1111
PC に
書き込む
動作なし
Q2
エンコード :
1st word (k<7:0>)
2nd word(k<19:8>)
動作なし
CALL
動作なし
THERE, 1
=
address (HERE)
=
=
=
=
=
address (THERE)
address (HERE + 4)
W
BSR
Status
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
CLRF
Clear f
CLRWDT
Clear Watchdog Timer
シンタックス :
CLRF f {,a}
シンタックス :
CLRWDT
オペランド :
0  f  255
a [0,1]
オペランド :
なし
000h  f
1Z
実行内容 :
実行内容 :
影響を受ける
ステータス :
Z
000h  WDT,
000h  WDT postscaler,
1  TO,
1  PD
影響を受ける
ステータス :
TO, PD
0110
エンコード :
説明 :
101a
ffff
ffff
指定したレジスタの内容をクリアし
ます。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
1
サイクル数 :
1
デコード
Q3
レジスタ「f」 データを
を読み出す
処理
CLRF
例:
命令実行前
FLAG_REG
命令実行後
FLAG_REG
0000
0100
マをリセットします。WDT のプリス
ケーラもリセットします。ステータス
ビット TO および PD をセットします。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
例:
Q2
0000
CLRWDT 命令は、ウォッチドッグ タイ
説明 :
1/4 サイクルの動作 :
Q1
0000
エンコード :
Q4
レジスタ「f」
に書き込む
Q1
Q2
Q3
Q4
デコード
動作なし
データを
処理
動作なし
CLRWDT
命令実行前
WDT カウンタ
命令実行後
WDT カウンタ
WDT Postscaler
TO
PD
=
?
=
=
=
=
00h
0
1
1
FLAG_REG, 1
=
5Ah
=
00h
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 327
PIC18F2XK20/4XK20
COMF
Complement f
CPFSEQ
Compare f with W, skip if f = W
シンタックス :
COMF
シンタックス :
CPFSEQ
オペランド :
0  f  255
a  [0,1]
実行内容 :
(f) – (W),
skip if (f) = (W)
( 符号なし比較 )
影響を受ける
ステータス :
なし
f {,d {,a}}
0  f  255
d  [0,1]
a  [0,1]
オペランド :
実行内容 :
(f)  dest
影響を受ける
ステータス :
N, Z
0001
エンコード :
説明 :
11da
ffff
ffff
レジスタ「f」の内容の補数を取りま
す。
「d」が「0」の場合、結果は W に
書き込まれます。
「d」が「1」の場合、
結果はレジスタ「f」に書き戻されます
( デフォルト )。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
1
サイクル数 :
1
デコード
説明 :
1(2)
注:
サイクル数 :
Q2
Q3
レジスタ「f」 データを
を読み出す
処理
Q4
格納先に
書き込む
命令実行前
REG
命令実行後
REG
W
=
13h
=
=
13h
ECh
ffff
ffff
スキップする場合は 3 サイクル
で、その後 2 ワードの命令にな
ります。
1/4 サイクルの動作 :
Q1
COMF
例:
001a
符号なし減算を実行して、データ メモ
リ ロケーション「f」の内容と W の内
容を比較します。
「f」= W の場合、フェッチした命令を破
棄し、代わりに NOP を実行して、2 サ
イクルの命令にします。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
1
ワード数 :
1/4 サイクルの動作 :
Q1
0110
エンコード :
f {,a}
REG, 0, 0
デコード
Q2
Q3
レジスタ「f」 データを
を読み出す
処理
Q4
動作なし
スキップする場合 :
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
スキップの後 2 ワードの命令がある場合 :
Q1
Q2
Q3
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
HERE
NEQUAL
EQUAL
例:
命令実行前
PC Address
W
REG
命令実行後
If REG
PC
If REG
PC
DS41303E_JP - ページ 328
Preliminary
Q4
動作なし
CPFSEQ REG, 0
:
:
=
=
=
HERE
?
?
=
=

=
W;
Address (EQUAL)
W;
Address (NEQUAL)
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
CPFSGT
Compare f with W, skip if f > W
CPFSLT
Compare f with W, skip if f < W
シンタックス :
CPFSGT f {,a}
シンタックス :
CPFSLT
オペランド :
0  f  255
a  [0,1]
オペランド :
0  f  255
a  [0,1]
実行内容 :
(f) –W),
skip if (f) > (W)
( 符号なし比較 )
実行内容 :
(f) –W),
skip if (f) < (W)
( 符号なし比較 )
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
なし
0110
エンコード :
説明 :
010a
ffff
ffff
符号なし減算を実行して、データ メモ
リ ロケーション「f」の内容と W の内
容を比較します。
「f」の内容が WREG の内容よりも大き
い場合、フェッチした命令を破棄し、
代わりに NOP を実行して、2 サイクル
の命令にします。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
1
ワード数 :
1(2)
注:
サイクル :
説明 :
ワード数 :
1
サイクル数 :
1(2)
注:
デコード
Q2
Q3
レジスタ「f」 データを
を読み出す
処理
Q4
動作なし
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
HERE
NGREATER
GREATER
CPFSGT REG, 0
:
:
例:
命令実行前
PC
W
命令実行後
If REG
PC
If REG
PC
=
=
Address (HERE)
?

=

=
W;
Address (GREATER)
W;
Address (NGREATER)
 2009 Microchip Technology Inc.
Q2
Q3
レジスタ「f」 データを
を読み出す
処理
Q4
動作なし
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
スキップの後 2 ワードの命令がある場合 :
Q1
Q2
Q3
Preliminary
Q4
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
HERE
NLESS
LESS
Q4
動作なし
スキップする場合は 3 サイクル
で、その後 2 ワードの命令にな
ります。
動作なし
例:
スキップの後 2 ワードの命令がある場合 :
Q1
Q2
Q3
ffff
スキップする場合 :
スキップする場合 :
Q1
ffff
1/4 サイクルの動作 :
1/4 サイクルの動作 :
Q1
000a
符号なし減算を実行して、データ メモ
リ ロケーション「f」の内容と W の内
容を比較します。
「f」の内容が W の内容よりも小さい場
合は、フェッチした命令を破棄し、代
わりに NOP を実行して、2 サイクルの
命令にします。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
デコード
スキップする場合は 3 サイクル
で、その後 2 ワードの命令にな
ります。
0110
エンコード :
f {,a}
命令実行前
PC
W
命令実行後
If REG
PC
If REG
PC
CPFSLT REG, 1
:
:
=
=
Address (HERE)
?
<
=

=
W;
Address (LESS)
W;
Address (NLESS)
DS41303E_JP - ページ 329
PIC18F2XK20/4XK20
DAW
Decimal Adjust W Register
DECF
Decrement f
シンタックス :
DAW
シンタックス :
DECF f {,d {,a}}
オペランド :
なし
オペランド :
実行内容 :
If [W<3:0> > 9] or [DC = 1] then
(W<3:0>) + 6  W<3:0>;
else
(W<3:0>)  W<3:0>;
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(f) – 1  dest
影響を受ける
ステータス :
C, DC, N, OV, Z
If [W<7:4> + DC > 9] or [C = 1] then
(W<7:4>) + 6 + DC  W<7:4>;
else
(W<7:4>) + DC  W<7:4>
説明 :
0000
エンコード :
説明 :
0000
0000
0111
DAW は、以前の 2 つの変数 ( いずれも
パック BCD 形式 ) の加算結果である W
の 8 ビット値を調整し、パック BCD の
正しい結果を生成します。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
Q2
Q3
Q4
デコード
レジスタ
W を読み出す
データを
処理
Wに
書き込む
例 1:
DAW
ワード数 :
1
サイクル数 :
1
W
C
DC
A5h
0
0
=
=
=
05h
1
0
=
=
=
CEh
0
0
=
=
=
34h
1
0
デコード
命令実行前
W
C
DC
DS41303E_JP - ページ 330
DECF
命令実行前
CNT
Z
命令実行後
CNT
Z
Preliminary
Q3
レジスタ「f」 データを
を読み出す
処理
例:
例 2:
W
C
DC
命令実行後
Q2
Q1
=
=
=
ffff
ffff
1/4 サイクルの動作 :
命令実行前
W
C
DC
命令実行後
01da
レジスタ「f」をデクリメントします。
「d」が「0」の場合、結果は W に書き
込まれます。「d」が「1」の場合、結果
はレジスタ「f」に書き戻されます
( デフォルト )。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
C
影響を受ける
ステータス :
0000
エンコード :
=
=
01h
0
=
=
00h
1
CNT,
Q4
格納先に
書き込む
1, 0
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
DECFSZ
Decrement f, skip if 0
DCFSNZ
Decrement f, skip if not 0
シンタックス :
DECFSZ f {,d {,a}}
シンタックス :
DCFSNZ f {,d {,a}}
オペランド :
0  f  255
d  [0,1]
a  [0,1]
オペランド :
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(f) – 1  dest,
skip if result = 0
実行内容 :
(f) – 1  dest,
skip if result  0
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
なし
0010
エンコード :
説明 :
11da
ffff
ffff
レジスタ「f」の内容をデクリメントし
ます。「d」が「0」の場合、結果は W
に入れられます。
「d」が「1」の場合、
結果はレジスタ「f」に書き戻されます
( デフォルト )。
結果が「0」の場合、既にフェッチし
た次の命令を破棄し、代わりに NOP を
実行して 2 サイクルの命令にします。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル オ
フセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード:
1
サイクル:
1(2)
注:
スキップする場合は 3 サイクル
で、その後 2 ワードの命令にな
ります。
1/4 サイクルの動作 :
Q1
デコード
Q2
Q3
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
Q4
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
HERE
DECFSZ
GOTO
CNT, 1, 1
LOOP
1
サイクル数 :
1(2)
注:
Q1
デコード
=
Address (HERE)
=
=
=

=
CNT - 1
0;
Address (CONTINUE)
0;
Address (HERE + 2)
 2009 Microchip Technology Inc.
ffff
スキップする場合は 3 サイクル
で、その後 2 ワードの命令にな
ります。
Q2
Q3
Q4
レジスタ「f」 データを
を読み出す
処理
格納先に
書き込む
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
スキップの後 2 ワードの命令がある場合 :
Q1
Q2
Q3
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
HERE
ZERO
NZERO
例:
命令実行前
TEMP
命令実行後
TEMP
If TEMP
PC
If TEMP
PC
Preliminary
Q4
動作なし
CONTINUE
命令実行前
PC
命令実行後
CNT
If CNT
PC
If CNT
PC
ffff
スキップする場合 :
Q1
スキップの後 2 ワードの命令がある場合 :
Q1
Q2
Q3
11da
レジスタ「f」の内容をデクリメントし
ます。「d」が「0」の場合、結果は W
に入れられます。「d」が「1」の場合、
結果はレジスタ「f」に書き戻されます
( デフォルト )。
結果が「0」以外の場合、既にフェッチ
済みの命令を破棄し、代わりに NOP を
実行して、2 サイクルの命令にします。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル オ
フセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
格納先に
書き込む
スキップする場合 :
例:
説明 :
1/4 サイクルの動作 :
Q4
レジスタ「f」 データを
を読み出す
処理
0100
エンコード :
DCFSNZ
:
:
TEMP, 1, 0
=
?
=
=
=

=
TEMP – 1
0;
Address (ZERO)
0;
Address (NZERO)
DS41303E_JP - ページ 331
PIC18F2XK20/4XK20
GOTO
Unconditional Branch
INCF
Increment f
シンタックス :
GOTO k
シンタックス :
INCF
オペランド :
0  k  1048575
オペランド :
実行内容 :
k  PC<20:1>
0  f  255
d  [0,1]
a  [0,1]
影響を受ける
ステータス :
なし
実行内容 :
(f) + 1  dest
影響を受ける
ステータス :
C, DC, N, OV, Z
エンコード :
1st word (k<7:0>)
2nd word(k<19:8>)
1110
1111
1111
k19kkk
k7kkk
kkkk
kkkk0
kkkk8
説明 :
GOTO により、2 MB のメモリ範囲全体
の任意の位置に無条件で分岐できます。
20 ビットの値「k」を PC<20:1> にロー
ドします。 GOTO は常に 2 サイクルの
命令です。
ワード数 :
2
サイクル数 :
2
Q1
動作なし
Q2
Q3
リテラル「k」 動作なし
<7:0> を読み
出す
動作なし
動作なし
GOTO THERE
例:
命令実行後
PC =
10da
ffff
ffff
レジスタ「f」の内容をインクリメント
します。
「d」が「0」の場合、結果は
W に入れられます。「d」が「1」の場
合、結果はレジスタ「f」に書き戻され
ます ( デフォルト )。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
1/4 サイクルの動作 :
デコード
0010
エンコード :
説明 :
f {,d {,a}}
Q4
リテラル「k」
<19:8> を読
み出し、PC
に書き込む
動作なし
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Address (THERE)
Q1
デコード
Q2
レジスタ「f」 データを
を読み出す
処理
INCF
例:
命令実行前
CNT
Z
C
DC
命令実行後
CNT
Z
C
DC
DS41303E_JP - ページ 332
Preliminary
Q3
=
=
=
=
FFh
0
?
?
=
=
=
=
00h
1
1
1
Q4
格納先に
書き込む
CNT, 1, 0
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
INCFSZ
Increment f, skip if 0
INFSNZ
Increment f, skip if not 0
シンタックス :
INCFSZ f {,d {,a}}
シンタックス :
INFSNZ
f {,d {,a}}
オペランド :
0  f  255
d  [0,1]
a  [0,1]
オペランド :
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(f) + 1  dest,
skip if result = 0
実行内容 :
(f) + 1  dest,
skip if result  0
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
なし
0011
エンコード :
説明 :
11da
ffff
ffff
レジスタ「f」の内容をインクリメント
します。「d」が「0」の場合、結果は
W に入れられます。「d」が「1」の場
合、結果はレジスタ「f」に書き戻され
ます ( デフォルト )。
結果が「0」の場合、既にフェッチした
次の命令を破棄し、代わりに NOP を実
行して 2 サイクルの命令にします。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
1
サイクル数 :
1(2)
注:
デコード
スキップする場合は 3 サイクル
で、その後 2 ワードの命令にな
ります。
Q2
Q3
レジスタ「f」 データを
を読み出す
処理
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
スキップの後 2 ワードの命令がある場合 :
Q1
Q2
Q3
動作なし
動作なし
HERE
NZERO
ZERO
命令実行前
PC
命令実行後
CNT
If CNT
PC
If CNT
PC
動作なし
動作なし
例:
1(2)
注:
動作なし
INCFSZ
:
:
=
Address (HERE)
=
=
=

=
CNT + 1
0;
Address (ZERO)
0;
Address (NZERO)
 2009 Microchip Technology Inc.
ffff
スキップする場合は 3 サイクル
で、その後 2 ワードの命令にな
ります。
デコード
Q2
Q3
Q4
レジスタ「f」 データを
を読み出す
処理
動作なし
動作なし
CNT, 1, 0
格納先に
書き込む
スキップする場合 :
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
スキップの後 2 ワードの命令がある場合 :
Q1
Q2
Q3
Q4
ffff
1/4 サイクルの動作 :
Q1
格納先に
書き込む
10da
レジスタ「f」の内容をインクリメント
します。
「d」が「0」の場合、結果は
W に入れられます。「d」が「1」の場
合、結果はレジスタ「f」に書き戻され
ます ( デフォルト )。
結果が「0」以外の場合、既にフェッチ
済みの命令を破棄し、代わりに NOP を
実行して、2 サイクルの命令にします。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
1
ワード数 :
Q4
スキップする場合 :
動作なし
説明 :
サイクル数 :
1/4 サイクルの動作 :
Q1
0100
エンコード :
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
HERE
ZERO
NZERO
例:
命令実行前
PC
命令実行後
REG
If REG
PC
If REG
PC
Preliminary
Q4
INFSNZ
REG, 1, 0
=
Address (HERE)
=
REG + 1
0;
Address (NZERO)
0;
Address (ZERO)

=
=
=
DS41303E_JP - ページ 333
PIC18F2XK20/4XK20
IORLW
Inclusive OR literal with W
IORWF
Inclusive OR W with f
シンタックス :
IORLW k
シンタックス :
IORWF
オペランド :
0  k  255
オペランド :
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(W) .OR. (f)  dest
影響を受ける
ステータス :
N, Z
実行内容 :
(W) .OR. k  W
影響を受ける
ステータス :
N, Z
0000
エンコード :
1001
kkkk
kkkk
説明 :
W の内容と 8 ビットのリテラル「k」を
OR 演算します。結果を W に入れます。
ワード数 :
1
サイクル数 :
1
説明 :
デコード
Q2
リテラル「k」 データを
を読み出す
処理
IORLW
例:
命令実行前
W
命令実行後
W
Q3
=
9Ah
=
BFh
00da
ffff
ffff
W とレジスタ「f」を OR 演算します。
「d」が「0」の場合、結果は W に入れ
られます。「d」が「1」の場合、結果は
レジスタ「f」に書き戻されます ( デ
フォルト )。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
1/4 サイクルの動作 :
Q1
0001
エンコード :
f {,d {,a}}
Q4
Wに
書き込む
35h
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
Q2
レジスタ「f」 データを
を読み出す
処理
IORWF
例:
命令実行前
RESULT
W
命令実行後
RESULT
W
DS41303E_JP - ページ 334
Preliminary
Q3
=
=
13h
91h
=
=
13h
93h
Q4
格納先に
書き込む
RESULT, 0, 1
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
LFSR
Load FSR
MOVF
Move f
シンタックス :
LFSR f, k
シンタックス :
MOVF
オペランド :
0f2
0  k  4095
オペランド :
実行内容 :
k  FSRf
0  f  255
d  [0,1]
a  [0,1]
影響を受ける
ステータス :
なし
1110
1111
エンコード :
1110
0000
00ff
k7kkk
k11kkk
kkkk
説明 :
12 ビットのリテラル「k」を、「f」が
ポイントするファイル選択レジスタに
ロードします。
ワード数 :
2
サイクル数 :
2
実行内容 :
f  dest
影響を受ける
ステータス :
N, Z
Q1
Q2
Q3
Q4
リテラル
「k」の最上
位ビットを
読み出す
データを
処理
リテラル
「k」の最上
位ビットを
FSRfH に書
き込む
デコード
リテラル
「k」の最下
位ビットを
読み出す
データを
処理
リテラル
「k」を
FSRfL に書
き込む
LFSR 2, 3ABh
例:
命令実行後
FSR2H
FSR2L
00da
ffff
ffff
「d」のステータスに従って、レジスタ
「f」の内容を格納先に移動します。
「d」が「0」の場合、結果は W に入れら
れます。「d」が「1」の場合、結果はレ
ジスタ「f」に書き戻されます ( デフォ
ルト )。ロケーション「f」は、256 バイ
トのバンクの任意の位置にできます。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
1/4 サイクルの動作 :
デコード
0101
エンコード :
説明 :
f {,d {,a}}
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
=
=
03h
ABh
Q1
デコード
命令実行前
REG
W
命令実行後
REG
W
Preliminary
Q3
レジスタ「f」 データを
を読み出す
処理
MOVF
例:
 2009 Microchip Technology Inc.
Q2
Q4
Wに
書き込む
REG, 0, 0
=
=
22h
FFh
=
=
22h
22h
DS41303E_JP - ページ 335
PIC18F2XK20/4XK20
MOVFF
Move f to f
MOVLB
Move literal to low nibble in BSR
シンタックス :
MOVFF fs,fd
シンタックス :
MOVLW k
オペランド :
0  fs  4095
0  fd  4095
オペランド :
0  k  255
k  BSR
(fs)  fd
実行内容 :
実行内容 :
なし
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
0000
エンコード :
エンコード :
1st word (source)
2nd word (destin.)
1100
1111
説明 :
ffff
ffff
ffff
ffff
ffffs
ffffd
ソース レジスタ「fs」の内容を、格納
先のレジスタ「fd」に移動します。
ソース「fs」は 4096 バイトのデータ空
間 (000h ~ FFFh) の任意の位置にでき、
格納先「fd」も 000h ~ FFFh の任意の
位置にできます。
ソースと格納先のいずれかを W にでき
ます ( 役に立つ特殊な状況 )。
MOVFF は特に、データ メモリ ロケー
ションの内容を周辺レジスタ ( 送信
バッファや I/O ポートなど ) に移動す
るのに便利です。
MOVFF 命令の格納先レジスタとして、
PCL、TOSU、TOSH、または TOSL は
使用できません。
ワード数 :
2
サイクル数 :
2 (3)
0001
kkkk
kkkk
説明 :
8 ビットのリテラル「k」をバンク選択
レジスタ (BSR) にロードします。
BSR<7:4> の値は、k7:k4 の値には関係
なく、常に「0」です。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
例:
Q2
Q3
リテラル
「k」を読み
出す
MOVLB
命令実行前
BSR レジスタ =
命令実行後
BSR レジスタ =
データを
処理
Q4
リテラル
「k」を BSR
に書き込む
5
02h
05h
1/4 サイクルの動作 :
Q1
デコード
デコード
Q2
Q3
レジスタ「f」 データを
( ソース ) を
処理
読み出す
動作なし
動作なし
ダミーを読
み出さない
MOVFF
例:
命令実行前
REG1
REG2
命令実行後
REG1
REG2
動作なし
レジスタ「f」
( 格納先 ) に
書き込む
REG1, REG2
=
=
33h
11h
=
=
33h
33h
DS41303E_JP - ページ 336
Q4
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
MOVLW
Move literal to W
MOVWF
Move W to f
シンタックス :
MOVLW k
シンタックス :
MOVWF
オペランド :
0  k  255
オペランド :
実行内容 :
kW
0  f  255
a  [0,1]
影響を受ける
ステータス :
なし
実行内容 :
(W)  f
影響を受ける
ステータス :
なし
0000
エンコード :
説明 :
1110
kkkk
kkkk
8 ビットのリテラル「k」を W にロード
します。
ワード数 :
1
サイクル数 :
1
説明 :
デコード
Q2
リテラル
「k」を読み
出す
MOVLW
例:
命令実行後
W
=
Q3
Q4
データを
処理
Wに
書き込む
111a
ffff
ffff
W のデータをレジスタ「f」に移動しま
す。ロケーション「f」は、256 バイト
のバンクの任意の位置にできます。
「a」が「0」の場合、アクセス バンク
が選択されます。「a」が「1」の場合、
GPR バンクの選択に BSR が使用され
ます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
1/4 サイクルの動作 :
Q1
0110
エンコード :
f {,a}
5Ah
5Ah
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
Q2
レジスタ「f」 データを
を読み出す
処理
MOVWF
例:
命令実行前
W
REG
命令実行後
W
REG
 2009 Microchip Technology Inc.
Preliminary
Q3
=
=
4Fh
FFh
=
=
4Fh
4Fh
Q4
レジスタ「f」
に書き込む
REG, 0
DS41303E_JP - ページ 337
PIC18F2XK20/4XK20
MULLW
Multiply literal with W
MULWF
Multiply W with f
シンタックス :
MULLW
シンタックス :
MULWF
オペランド :
0  k  255
オペランド :
実行内容 :
(W) x k  PRODH:PRODL
0  f  255
a  [0,1]
影響を受ける
ステータス :
なし
実行内容 :
(W) x (f)  PRODH:PRODL
影響を受ける
ステータス :
なし
k
0000
エンコード :
説明 :
1101
kkkk
kkkk
W の内容と 8 ビットのリテラル「k」と
の符号なし乗算を実行します。16 ビッ
トの結果を PRODH:PRODL レジスタ
ペアに入れます。PRODH は上位バイ
トを格納します。
W は変更されません。
影響を受けるステータス フラグはあり
ません。
この演算では、オーバーフローもキャ
リーも出ません。結果が「0」になる
ことはありますが、検出されません。
ワード数 :
1
サイクル数 :
1
0000
エンコード :
説明 :
Q1
Q2
リテラル
「k」を読み
出す
MULLW
例:
命令実行前
W
PRODH
PRODL
命令実行後
=
=
=
W
PRODH
PRODL
=
=
=
Q3
Q4
データを
処理
レジスタ
PRODH:
PRODL に
書き込む
0C4h
E2h
?
?
E2h
ADh
08h
ワード数 :
1
サイクル数 :
1
ffff
ffff
1/4 サイクルの動作 :
Q1
デコード
命令実行前
W
REG
PRODH
PRODL
命令実行後
W
REG
PRODH
PRODL
Preliminary
Q2
レジスタ
「f」を読み
出す
MULWF
例:
DS41303E_JP - ページ 338
001a
W の内容とレジスタ ファイル ロケー
ション「f」との符号なし乗算を実行
します。16 ビットの結果を
PRODH:PRODL レジスタ ペアに入れ
ます。PRODH は上位バイトを格納し
ます。W と「f」のいずれも変更され
ません。
影響を受けるステータス フラグはあ
りません。
この演算では、オーバーフローも
キャリーも出ません。結果が「0」に
なることはありますが、検出されま
せん。
「a」が「0」の場合、アクセス バンク
が選択されます。
「a」が「1」の場
合、GPR バンクの選択に BSR が使用
されます。
「a」が「0」で拡張命令セットが有効
の場合、f 95 (5Fh) のときには常にこ
の命令はインデックス付きリテラル
オフセット アドレス指定モードで実
行されます。詳細については、24.2.3
項「インデックス付きリテラル オフ
セット モードのバイト指向命令と
ビット指向命令」を参照してください。
1/4 サイクルの動作 :
デコード
f {,a}
Q3
Q4
データを
処理
レジスタ
PRODH:
PRODL に
書き込む
REG, 1
=
=
=
=
C4h
B5h
?
?
=
=
=
=
C4h
B5h
8Ah
94h
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
NEGF
Negate f
NOP
No Operation
シンタックス :
NEGF
シンタックス :
NOP
オペランド :
0  f  255
a  [0,1]
オペランド :
なし
(f)+1f
実行内容 :
なし
実行内容 :
なし
影響を受ける
ステータス :
N, OV, C, DC, Z
影響を受ける
ステータス :
0000
1111
エンコード :
0110
エンコード :
説明 :
f {,a}
110a
ffff
ffff
2 の補数を使用して、ロケーション
「f」を反転します。結果をデータ メモ
リ ロケーション「f」に入れます。
「a」が「0」の場合、アクセス バンク
が選択されます。「a」が「1」の場合、
GPR バンクの選択に BSR が使用され
ます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項
「インデックス付きリテラル オ
フセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
1
サイクル数 :
1
0000
xxxx
説明 :
何もしません。
ワード数 :
1
サイクル数 :
1
0000
xxxx
0000
xxxx
1/4 サイクルの動作 :
Q1
Q2
Q3
Q4
デコード
動作なし
動作なし
動作なし
例:
なし
1/4 サイクルの動作 :
Q1
デコード
Q2
レジスタ「f」 データを
を読み出す
処理
NEGF
例:
命令実行前
REG
命令実行後
REG
Q3
Q4
レジスタ「f」
に書き込む
REG, 1
=
0011 1010 [3Ah]
=
1100 0110 [C6h]
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 339
PIC18F2XK20/4XK20
POP
Pop Top of Return Stack
PUSH
Push Top of Return Stack
シンタックス :
POP
シンタックス :
PUSH
オペランド :
なし
オペランド :
なし
実行内容 :
(TOS)  bit bucket
実行内容 :
(PC + 2)  TOS
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
なし
0000
エンコード :
0000
0000
0110
0000
エンコード :
0000
0000
0101
説明 :
TOS の値をリターン スタックから取り
出して破棄します。その後、TOS の値
は、リターン スタックにプッシュされ
た前の値に戻ります。
この命令は、リターン スタックを適切
に管理してソフトウェア スタックを組
み込み可能にするためのものです。
説明 :
PC + 2 をリターン スタックの先頭に
プッシュします。前の TOS 値はスタッ
クの次の位置にプッシュされます。
この命令により、TOS を変更してリ
ターン スタックにプッシュすることに
より、ソフトウェア スタックを実現で
きます。
ワード数 :
1
ワード数 :
1
サイクル数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
1/4 サイクルの動作 :
Q1
Q2
Q3
Q4
Q1
Q2
Q3
Q4
デコード
動作なし
TOS の値を
取り出す
動作なし
デコード
PC + 2 を
リターン
スタックに
プッシュ
動作なし
動作なし
POP
GOTO
例:
NEW
PUSH
例:
命令実行前
TOS
Stack (1 level down)
=
=
0031A2h
014332h
命令実行前
TOS
PC
=
=
345Ah
0124h
命令実行後
TOS
PC
=
=
014332h
NEW
命令実行後
PC
TOS
Stack (1 level down)
=
=
=
0126h
0126h
345Ah
DS41303E_JP - ページ 340
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
RCALL
Relative Call
RESET
Reset
シンタックス :
RCALL
シンタックス :
RESET
オペランド :
-1024  n  1023
n
オペランド :
なし
実行内容 :
(PC) + 2  TOS,
(PC) + 2 + 2n  PC
実行内容 :
MCLR のリセットの影響を受けるレジ
スタとフラグをすべてリセットする
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
すべて
1101
エンコード :
説明 :
1nnn
nnnn
nnnn
現在のロケーションから最大 1 KB
ジャンプするサブルーチン呼び出し。
最初に、リターン アドレス (PC + 2) を
スタックにプッシュします。次に、2
の補数「2n」を PC に加算します。PC
は次の命令をフェッチするためにイン
クリメントされているので、新しいア
ドレスは「PC + 2 + 2n」になります。
この命令は 2 サイクルの命令です。
ワード数 :
1
サイクル数 :
2
デコード
Q2
Q3
リテラル「n」 データを
を読み出す
処理
0000
1111
1111
説明 :
この命令はソフトウェアにより MCLR
リセットを実行するためのものです。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
Q2
Q3
Q4
デコード
リセットを
開始
動作なし
動作なし
RESET
例:
1/4 サイクルの動作 :
Q1
0000
エンコード :
Q4
PC に
書き込む
命令実行後
レジスタ =
フラグ * =
リセット値
リセット値
PC を
スタックに
プッシュ
動作なし
動作なし
HERE
例:
命令実行前
PC =
命令実行後
PC =
TOS =
動作なし
動作なし
RCALL Jump
Address (HERE)
Address (Jump)
Address (HERE + 2)
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 341
PIC18F2XK20/4XK20
RETFIE
Return from Interrupt
RETLW
Return literal to W
シンタックス :
RETFIE {s}
シンタックス :
RETLW k
オペランド :
s  [0,1]
オペランド :
0  k  255
実行内容 :
(TOS)  PC,
1  GIE/GIEH or PEIE/GIEL,
if s = 1
(WS)  W,
(STATUSS)  Status,
(BSRS)  BSR,
PCLATU, PCLATH are unchanged.
実行内容 :
k  W,
(TOS)  PC,
PCLATU, PCLATH are unchanged
影響を受ける
ステータス :
なし
GIE/GIEH, PEIE/GIEL.
説明 :
8 ビットのリテラル「k」を W にロー
ドします。スタックの先頭 ( リターン
アドレス ) をプログラム カウンタへ
ロードします。上位アドレス ラッチ
(PCLATH) は変化しません。
ワード数 :
1
サイクル数 :
2
影響を受ける
ステータス :
0000
エンコード :
説明 :
0000
0001
000s
割り込みから戻ります。スタックが
ポップされ、スタックの先頭 (TOS) が
PC にロードされます。割り込みを有効
にするには、優先度が高または低のグ
ローバル割り込みイネーブル ビットを
セットします。「s」= 1 の場合、シャド
ウ レジスタ WS、STATUSS、および
BSRS の内容を対応するレジスタ W、
STATUS、および BSR にロードします。
「s」= 0 の場合、これらのレジスタは更
新されません ( デフォルト )。
ワード数 :
1
サイクル数 :
2
Q1
Q2
Q3
Q4
デコード
動作なし
動作なし
スタックから
PC にポップ
GIEH または
GIEL をセット
例:
1100
kkkk
kkkk
1/4 サイクルの動作 :
Q3
Q4
デコード
Q1
リテラル
「k」を読み
出す
Q2
データを
処理
スタックか
ら PC をポッ
プし、W に
書き込む
動作なし
動作なし
動作なし
動作なし
例:
1/4 サイクルの動作 :
動作なし
0000
エンコード :
動作なし
RETFIE
割り込み終了後
PC
W
BSR
Status
GIE/GIEH, PEIE/GIEL
DS41303E_JP - ページ 342
動作なし
動作なし
1
=
=
=
=
=
TOS
WS
BSRS
STATUSS
1
CALL TABLE ;
;
;
;
:
TABLE
ADDWF PCL ;
RETLW k0
;
RETLW k1
;
:
:
RETLW kn
;
W contains table
offset value
W now has
table value
W = offset
Begin table
End of table
命令実行前
Preliminary
W
命令実行後
=
07h
W
=
kn の値
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
RETURN
Return from Subroutine
RLCF
シンタックス :
RETURN {s}
シンタックス :
RLCF
オペランド :
s  [0,1]
オペランド :
実行内容 :
(TOS)  PC,
if s = 1
(WS)  W,
(STATUSS)  Status,
(BSRS)  BSR,
PCLATU, PCLATH are unchanged
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(f<n>)  dest<n + 1>,
(f<7>)  C,
(C)  dest<0>
影響を受ける
ステータス :
C, N, Z
影響を受ける
ステータス :
なし
Rotate Left f through Carry
0011
エンコード :
0000
エンコード :
0000
0001
001s
説明 :
サブルーチンから戻ります。スタック
がポップされ、スタックの先頭 (TOS)
がプログラム カウンタにロードされま
す。「s」= 1 の場合、シャドウ レジスタ
WS、STATUSS、および BSRS の内容
を対応するレジスタ W、STATUS、お
よび BSR にロードします。
「s」= 0 の
場合、これらのレジスタは更新されま
せん ( デフォルト )。
ワード数 :
1
サイクル数 :
2
説明 :
Q2
Q3
Q4
デコード
動作なし
データを
処理
スタックから
PC をポップ
動作なし
動作なし
動作なし
動作なし
RETURN
例:
命令実行後 :
PC = TOS
ffff
ffff
register f
C
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
Q2
RLCF
命令実行前
REG
C
命令実行後
REG
W
C
Preliminary
Q3
レジスタ「f」 データを
を読み出す
処理
例:
 2009 Microchip Technology Inc.
01da
レジスタ「f」の内容を、CARRY フラ
グを通して左回りに 1 ビット移動しま
す。「d」が「0」の場合、結果は W に
入れられます。
「d」が「1」の場合、
結果はレジスタ「f」に書き戻されま
す ( デフォルト )。
「a」が「0」の場合、アクセス バンク
が選択されます。「a」が「1」の場合、
GPR バンクの選択に BSR が使用され
ます。
「a」が「0」で拡張命令セットが有効
の場合、f 95 (5Fh) のときには常にこ
の命令はインデックス付きリテラル
オフセット アドレス指定モードで実
行されます。詳細については、24.2.3
項「インデックス付きリテラル オフ
セット モードのバイト指向命令とビッ
ト指向命令」を参照してください。
1/4 サイクルの動作 :
Q1
f {,d {,a}}
Q4
格納先に
書き込む
REG, 0, 0
=
=
1110 0110
0
=
=
=
1110 0110
1100 1100
1
DS41303E_JP - ページ 343
PIC18F2XK20/4XK20
RLNCF
Rotate Left f (No Carry)
RRCF
Rotate Right f through Carry
シンタックス :
RLNCF
シンタックス :
RRCF
オペランド :
0  f  255
d  [0,1]
a  [0,1]
オペランド :
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(f<n>)  dest<n + 1>,
(f<7>)  dest<0>
実行内容 :
影響を受ける
ステータス :
N, Z
(f<n>)  dest<n – 1>,
(f<0>)  C,
(C)  dest<7>
影響を受ける
ステータス :
C, N, Z
0100
エンコード :
説明 :
f {,d {,a}}
01da
ffff
ffff
レジスタ「f」の内容を、左回りに 1
ビット移動します。「d」が「0」の場
合、結果は W に入れられます。「d」
が「1」の場合、結果はレジスタ「f」
に書き戻されます ( デフォルト )。
「a」が「0」の場合、アクセス バンク
が選択されます。「a」が「1」の場合、
GPR バンクの選択に BSR が使用され
ます。
「a」が「0」で、かつ拡張命令セット
を有効にしている場合、f 95 (5Fh) の
ときには常にこの命令がインデックス
付きリテラル オフセット アドレス指
定モードで動作します。詳細について
は、24.2.3 項「インデックス付きリテ
ラル オフセット モードのバイト指向
命令とビット指向命令」を参照してく
ださい。
0011
エンコード :
説明 :
1
ワード数 :
1
サイクル数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q3
レジスタ「f」 データを
を読み出す
処理
RLNCF
命令実行前
REG
命令実行後
REG
ffff
1/4 サイクルの動作 :
Q2
例:
ffff
register f
C
ワード数 :
デコード
00da
レジスタ「f」の内容を CARRY フラグ
を通して右回りに 1 ビット移動させま
す。「d」が「0」の場合、結果は W に
入れられます。
「d」が「1」の場合、結
果はレジスタ「f」に書き戻されます
( デフォルト )。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
register f
Q1
f {,d {,a}}
REG, 1, 0
=
1010 1011
=
0101 0111
DS41303E_JP - ページ 344
Q4
Q1
格納先に
書き込む
デコード
Q2
RRCF
例:
命令実行前
REG
C
命令実行後
REG
W
C
Preliminary
Q3
レジスタ「f」 データを
を読み出す
処理
Q4
格納先に
書き込む
REG, 0, 0
=
=
1110 0110
0
=
=
=
1110 0110
0111 0011
0
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
RRNCF
Rotate Right f (No Carry)
SETF
Set f
シンタックス :
SETF f {,a}
オペランド :
0  f  255
a [0,1]
実行内容 :
FFh  f
影響を受ける
ステータス :
なし
シンタックス :
RRNCF
オペランド :
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(f<n>)  dest<n – 1>,
(f<0>)  dest<7>
影響を受ける
ステータス :
N, Z
0100
エンコード :
説明 :
f {,d {,a}}
00da
ffff
ffff
レジスタ「f」の内容を、右回りに 1
ビット移動します。「d」が「0」の場
合、結果は W に入れられます。「d」が
「1」の場合、結果はレジスタ「f」に書
き戻されます ( デフォルト )。
「a」が「0」の場合はアクセス バンク
が選択され ( デフォルト )、BSR の値は
無視されます。「a」が「1」の場合は、
BSR の値に従ってアクセス バンクが選
択されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
説明 :
1
サイクル数 :
1
ワード数 :
1
サイクル数 :
1
Q1
デコード
デコード
レジスタ「f」 データを
を読み出す
処理
RRNCF
例 1:
命令実行前
REG
命令実行後
REG
1101 0111
=
1110 1011
RRNCF
ffff
命令実行前
REG
命令実行後
REG
Q4
Q3
レジスタ「f」 データを
を読み出す
処理
Q4
レジスタ「f」
に書き込む
REG, 1
=
5Ah
=
FFh
格納先に
書き込む
REG, 1, 0
=
例 2:
命令実行前
W
REG
命令実行後
W
REG
Q3
Q2
SETF
例:
Q2
ffff
1/4 サイクルの動作 :
1/4 サイクルの動作 :
Q1
100a
指定したレジスタの内容を FFh に設定
します。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
register f
ワード数 :
0110
エンコード :
REG, 0, 0
=
=
?
1101 0111
=
=
1110 1011
1101 0111
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 345
PIC18F2XK20/4XK20
SLEEP
Enter Sleep mode
SUBFWB
Subtract f from W with borrow
シンタックス :
SLEEP
シンタックス :
SUBFWB
オペランド :
なし
オペランド :
実行内容 :
00h  WDT,
0  WDT postscaler,
1  TO,
0  PD
0 f 255
d  [0,1]
a  [0,1]
実行内容 :
(W) – (f) – (C) dest
影響を受ける
ステータス :
N, OV, C, DC, Z
TO, PD
影響を受ける
ステータス :
0101
エンコード :
0000
エンコード :
0000
0000
0011
説明 :
パワーダウン ステータス ビット (PD)
をクリアします。タイムアウト ス
テータス ビット (TO) をセットしま
す。ウォッチドッグ タイマとそのプ
リスケーラをクリアします。
オシレータを停止してプロセッサを
スリープ モードにします。
ワード数 :
1
サイクル数 :
1
説明 :
Q2
Q3
Q4
デコード
動作なし
データを
処理
スリープ
モードに
する
SLEEP
例:
命令実行前
TO =
PD =
?
?
命令実行後
TO =
PD =
1
0
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
命令実行前
REG
W
C
命令実行後
REG
W
C
Z
N
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
例 3:
命令実行前
REG
W
C
命令実行後
REG
W
C
Z
N
Preliminary
Q2
Q3
SUBFWB
命令実行前
REG
W
C
命令実行後
REG
W
C
Z
N
例 2:
DS41303E_JP - ページ 346
ffff
レジスタ「f」 データを
を読み出す
処理
例 1:
WTD がウェイクアップした場合、このビットはクリアされ
ます。
01da
ffff
W からレジスタ「f」と CARRY フラグ
( ボロー ) を減算します (2 の補数法 )。
「d」が「0」の場合、結果は W に書
き込まれます。「d」が「1」の場合、
結果はレジスタ「f」に書き戻されま
す ( デフォルト )。
「a」が「0」の場合、アクセス バンク
が選択されます。「a」が「1」の場
合、GPR バンクの選択に BSR が使用
されます。
「a」が「0」で拡張命令セットが有効
の場合、f 95 (5Fh) のときには常にこ
の命令はインデックス付きリテラル
オフセット アドレス指定モードで実
行されます。詳細については、24.2.3
項「インデックス付きリテラル オフ
セット モードのバイト指向命令と
ビット指向命令」を参照してください。
1/4 サイクルの動作 :
Q1
f {,d {,a}}
Q4
格納先に
書き込む
REG, 1, 0
3
2
1
FF
2
0
0
1 ; result is negative
SUBFWB
REG, 0, 0
2
5
1
2
3
1
0
0 ; result is positive
SUBFWB
REG, 1, 0
=
=
=
1
2
0
=
=
=
=
=
0
2
1
1
0
; result is zero
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
SUBLW
Subtract W from literal
SUBWF
Subtract W from f
シンタックス :
SUBLW k
シンタックス :
SUBWF
オペランド :
0 k 255
オペランド :
実行内容 :
k – (W) W
0 f 255
d  [0,1]
a  [0,1]
影響を受けるステータ N, OV, C, DC, Z
ス:
0000
エンコード :
1000
kkkk
kkkk
8 ビットのリテラル「k」から W を減
算します。結果を W に入れます。
説明
ワード数 :
1
サイクル数 :
1
実行内容 :
(f) – (W) dest
影響を受ける
ステータス :
N, OV, C, DC, Z
0101
エンコード :
説明 :
デコード
Q2
リテラル
「k」を読み
出す
SUBLW
例 1:
命令実行前
W
C
命令実行後
W
C
Z
N
データを
処理
Wに
書き込む
02h
01h
?
=
=
=
=
01h
1
; result is positive
0
0
SUBLW
02h
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
=
=
02h
?
=
=
=
=
00h
1
; result is zero
1
0
SUBLW
=
=
03h
?
=
=
=
=
FFh (2 の補数 )
0
; result is negative
0
1
=
=
=
=
=
=
=
=
例 2:
命令実行前
REG
W
C
命令実行後
REG
W
C
Z
N
=
=
=
=
=
=
=
=
例 3:
命令実行前
REG
W
C
命令実行後
REG
W
C
Z
N
 2009 Microchip Technology Inc.
Preliminary
Q2
SUBWF
命令実行前
REG
W
C
命令実行後
REG
W
C
Z
N
02h
ffff
Q3
レジスタ「f」 データを
を読み出す
処理
例 1:
例 3:
命令実行前
W
C
命令実行後
W
C
Z
N
Q4
=
=
例 2:
命令実行前
W
C
命令実行後
W
C
Z
N
Q3
11da
ffff
レジスタ「f」から W を減算します
(2 の補数法 )。「d」が「0」の場合、
結果は W に書き込まれます。「d」が
「1」の場合、結果はレジスタ「f」に
書き戻されます ( デフォルト )。
「a」が「0」の場合、アクセス バンク
が選択されます。「a」が「1」の場
合、GPR バンクの選択に BSR が使用
されます。
「a」が「0」で拡張命令セットが有効
の場合、f 95 (5Fh) のときには常にこ
の命令はインデックス付きリテラル
オフセット アドレス指定モードで実
行されます。詳細については、24.2.3
項「インデックス付きリテラル オフ
セット モードのバイト指向命令と
ビット指向命令」を参照してください。
1/4 サイクルの動作 :
Q1
f {,d {,a}}
Q4
格納先に
書き込む
REG, 1, 0
3
2
?
1
2
1
; result is positive
0
0
SUBWF
REG, 0, 0
2
2
?
2
0
1
; result is zero
1
0
SUBWF
REG, 1, 0
=
=
=
1
2
?
=
=
=
=
=
FFh (2 の補数 )
2
0
; result is negative
0
1
DS41303E_JP - ページ 347
PIC18F2XK20/4XK20
SUBWFB
Subtract W from f with Borrow
SWAPF
Swap f
シンタックス :
SUBWFB
シンタックス :
SWAPF f {,d {,a}}
オペランド :
0  f  255
d  [0,1]
a  [0,1]
オペランド :
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(f) – (W) – (C) dest
N, OV, C, DC, Z
実行内容 :
影響を受ける
ステータス :
(f<3:0>)  dest<7:4>,
(f<7:4>)  dest<3:0>
影響を受ける
ステータス :
なし
0101
エンコード :
説明 :
ワード数 :
サイクル数 :
Q2
=
=
=
=
=
=
=
=
例 2:
W
C
Z
N
ffff
Q3
レジスタ「f」 データを
処理
を読み出す
SUBWFB
命令実行前
REG
W
C
命令実行後
REG
W
C
Z
N
例 3:
命令実行前
REG
W
C
命令実行後
REG
ffff
19h
0Dh
1
Q4
格納先に
書き込む
説明 :
1
サイクル数 :
1
Q1
デコード
(0001 1001)
(0000 1101)
Q2
SWAPF
(0001 1011)
(0001 1010)
=
=
=
=
=
1Bh
00h
1
1
0
SUBWFB
(0001 1011)
命令実行前
REG
命令実行後
REG
Q3
レジスタ「f」 データを
を読み出す
処理
例:
1Bh
1Ah
0
ffff
ffff
1/4 サイクルの動作 :
REG, 1, 0
=
=
=
10da
レジスタ「f」の上位 4 ビットと下位 4
ビットを入れ替えます。「d」が「0」の
場合、結果は W に入れられます。「d」
が「1」の場合、結果はレジスタ「f」
に書き戻されます ( デフォルト )。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
0Ch
(0000 1100)
0Dh
(0000 1101)
1
0
0
; result is positive
SUBWFB REG, 0, 0
=
53h
=
35h
Q4
格納先に
書き込む
REG, 1, 0
; result is zero
REG, 1, 0
=
=
=
03h
0Eh
1
(0000 0011)
(0000 1110)
=
F5h
=
=
=
=
0Eh
0
0
1
(1111 0101)
; [2’s comp]
(0000 1110)
DS41303E_JP - ページ 348
0011
エンコード :
1
例 1:
命令実行前
REG
W
C
命令実行後
REG
W
C
Z
N
10da
レジスタ「f」から W と CARRY フラグ
( ボロー ) を減算します (2 の補数法 )。
「d」が「0」の場合、結果は W に書き込
まれます。
「d」が「1」の場合、結果は
レジスタ「f」に書き戻されます ( デフォ
ルト )。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
1
1/4 サイクルの動作 :
Q1
デコード
f {,d {,a}}
; result is negative
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
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;
影響を受ける
ステータス :
TBLRD
Table Read ( 続き )
例 1:
TBLRD
命令実行前
TABLAT
TBLPTR
MEMORY (00A356h)
命令実行後
TABLAT
TBLPTR
例 2:
命令実行前
TABLAT
TBLPTR
MEMORY (01A357h)
MEMORY (01A358h)
命令実行後
TABLAT
TBLPTR
なし
0000
エンコード :
0000
0000
TBLRD
*+ ;
=
=
=
55h
00A356h
34h
=
=
34h
00A357h
+* ;
=
=
=
=
AAh
01A357h
12h
34h
=
=
34h
01A358h
10nn
nn=0 *
=1 *+
=2 *=3 +*
説明 :
この命令は、プログラム メモリ (P.M.) の内容
の読み出しに使用します。プログラム メモリ
のアドレス指定には、テーブル ポインタ
(TBLPTR) と呼ばれるポインタを使用します。
TBLPTR (21 ビット ポインタ ) は、プログラ
ム メモリの各バイトをポイントします。
TBLPTR のアドレス範囲は 2 MB です。
TBLPTR[0] = 0: プログラム メモリ ワー
ドの最下位ビット
TBLPTR[0] = 1: プログラム メモリ ワー
ドの最上位ビット
TBLRD 命令は、TBLPTR の値を次のように変
更できます。
• 変更なし
• ポストインクリメント
• ポストデクリメント
• プリインクリメント
ワード数 :
1
サイクル数 :
2
1/4 サイクルの動作 :
Q1
Q2
Q3
Q4
デコード
動作なし
動作なし
動作なし
動作なし
動作なし ( プロ 動作なし
グラム メモリを
読み出す )
 2009 Microchip Technology Inc.
動作なし
(TABLAT を
書き込む )
Preliminary
DS41303E_JP - ページ 349
PIC18F2XK20/4XK20
TBLWT
Table Write
TBLWT
Table Write ( 続き )
シンタックス :
TBLWT ( *; *+; *-; +*)
例 1:
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;
実行内容 :
影響を受ける
ステータス :
例 2:
なし
0000
エンコード :
説明 :
命令実行前
TABLAT
=
55h
TBLPTR
=
00A356h
HOLDING REGISTER
(00A356h)
=
FFh
命令実行 ( テーブル書き込み完了 ) 後
TABLAT
=
55h
TBLPTR
=
00A357h
HOLDING REGISTER
(00A356h)
=
55h
0000
0000
11nn
nn=0 *
=1 *+
=2 *=3 +*
ワード数 :
この命令は、TBLPTR の下位 3 ビットを
使用して、TABLAT の書き込み先となる
保持レジスタを 8 個指定します。保持レ
ジスタは、プログラム メモリ (P.M.) の内
容のプログラミングに使用します ( フ
ラッシュ メモリのプログラミングの詳細
については、6.0 項「フラッシュ プログ
ラム メモリ」を参照 )。
TBLPTR (21 ビット ポインタ ) は、プログ
ラム メモリの各バイトをポイントしま
す。TBLPTR のアドレス範囲は 2 MB で
す。TBLPTR の最下位ビットは、アクセ
ス先となるプログラム メモリのバイト ロ
ケーションを指定します。
TBLPTR[0] = 0: プログラム メモリ
ワードの最下位
ビット
TBLPTR[0] = 1: プログラム メモリ
ワードの最上位
ビット
TBLWT 命令は、TBLPTR の値を次のよう
に変更できます。
• 変更なし
• ポストインクリメント
• ポストデクリメント
• プリインクリメント
1
サイクル数 :
2
TBLWT +*;
命令実行前
TABLAT
=
34h
TBLPTR
=
01389Ah
HOLDING REGISTER
(01389Ah)
=
FFh
HOLDING REGISTER
(01389Bh)
=
FFh
命令実行 ( テーブル書き込み完了 ) 後
TABLAT
=
34h
TBLPTR
=
01389Bh
HOLDING REGISTER
(01389Ah)
=
FFh
HOLDING REGISTER
(01389Bh)
=
34h
1/4 サイクルの動作 :
Q1
Q2
Q3
Q4
デコード 動作なし 動作なし 動作なし
動作なし 動作なし 動作なし 動作なし
(TABLAT
( 保持レジ
を読み出
スタに書き
す)
込む )
DS41303E_JP - ページ 350
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
TSTFSZ
Test f, skip if 0
XORLW
Exclusive OR literal with W
シンタックス :
TSTFSZ f {,a}
シンタックス :
XORLW k
オペランド :
0  f  255
a  [0,1]
オペランド :
0 k 255
実行内容 :
(W) .XOR. k W
実行内容 :
skip if f = 0
N, Z
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
0000
エンコード :
0110
エンコード :
説明 :
011a
ffff
ffff
「f」が「0」の場合、現在の命令の実行
中にフェッチされた次の命令を破棄し、
代わりに NOP を実行して、2 サイクル
の命令にします。
「a」が「0」の場合、アクセス バンク
が選択されます。
「a」が「1」の場合、
GPR バンクの選択に BSR が使用され
ます。
「a」が「0」で、かつ拡張命令セット
を有効にしている場合、f 95 (5Fh) の
ときには常にこの命令がインデックス
付きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
1
サイクル数 :
1(2)
注:
1010
kkkk
kkkk
説明 :
W の内容と 8 ビットのリテラル「k」
を XOR 演算します。結果を W に入
れます。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
Q2
リテラル
「k」を読み
出す
XORLW
例:
Q3
Q4
データを
処理
Wに
書き込む
0AFh
命令実行前
W
命令実行後
=
B5h
W
=
1Ah
スキップする場合は 3 サイクル
で、その後 2 ワードの命令にな
ります。
1/4 サイクルの動作 :
Q1
デコード
Q2
Q3
Q4
レジスタ「f」 データを
処理
を読み出す
動作なし
スキップする場合 :
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
スキップの後 2 ワードの命令がある場合 :
Q1
Q2
Q3
Q4
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
動作なし
HERE
NZERO
ZERO
例:
命令実行前
PC
命令実行後
If CNT
PC
If CNT
PC
TSTFSZ
:
:
CNT, 1
=
Address (HERE)
=
=

=
00h,
Address (ZERO)
00h,
Address (NZERO)
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 351
PIC18F2XK20/4XK20
XORWF
Exclusive OR W with f
シンタックス :
XORWF
オペランド :
0  f  255
d  [0,1]
a  [0,1]
実行内容 :
(W) .XOR. (f) dest
影響を受ける
ステータス :
N, Z
0001
エンコード :
説明 :
f {,d {,a}}
10da
ffff
ffff
W とレジスタ「f」の内容を XOR 演算し
ます。「d」が「0」の場合、結果は W
に書き込まれます。「d」が「1」の場
合、結果はレジスタ「f」に書き戻され
ます ( デフォルト )。
「a」が「0」の場合、アクセス バンクが
選択されます。
「a」が「1」の場合、GPR
バンクの選択に BSR が使用されます。
「a」が「0」で、かつ拡張命令セットを
有効にしている場合、f 95 (5Fh) のと
きには常にこの命令がインデックス付
きリテラル オフセット アドレス指定
モードで動作します。詳細については、
24.2.3 項「インデックス付きリテラル
オフセット モードのバイト指向命令と
ビット指向命令」を参照してください。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
Q2
レジスタ「f」 データを
を読み出す
処理
XORWF
例:
命令実行前
REG
Q3
=
AFh
W
命令実行後
REG
=
B5h
=
1Ah
W
=
B5h
DS41303E_JP - ページ 352
Q4
格納先に
書き込む
REG, 1, 0
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
24.2
拡張命令セットの命令一覧を表 24-3 に示します。
詳
細については、24.2.2 項「拡張命令セット」を参照
してください。表 24-1 のオペコード フィールドの
説明は、PIC18 の標準命令セットと拡張命令セット
の両方に適用されます。
拡張命令セット
PIC18 の命令セットの 75 個の命令に加えて、
PIC18F2XK20/4XK20 デバイスは、コア CPU の機能
を拡張するオプションの命令も用意しています。追
加機能として、間接的およびインデックス付きのア
ドレス指定動作を増補する 8 個の追加命令、および
PIC18 の多くの標準命令用のインデックス付きリテ
ラル オフセット アドレス指定モードの実装があり
ます。
注:
拡張命令の追加機能は、デフォルトでは無効になっ
ています。追加機能を有効にするには、XINST 構成
ビットをセットします。
拡張セットの命令はすべて、リテラル演算として分
類でき、ファイル選択レジスタを操作するか、ファ
イル選択レジスタをインデックス付きアドレス指
定に使用します。ADDFSR および SUBFSR の 2 つの
命令にはそれぞれ、FSR2 を使用するための特殊な
インスタンス化が追加されています。これらのバー
ジョン (ADDULNK および SUBULNK) では、実行後に
自動リターンが可能です。
24.2.1
拡張命令のシンタックス
ほとんどの拡張命令がインデックス付き引数を使
用し、ファイル選択レジスタの 1 つとオフセットを
使用して、ソースまたは格納先のレジスタを指定し
ます。命令の引き数をインデックス付きアドレス指
定に使用するときには、大かっこ ([ ]) で囲みます。
これにより、その引き数をインデックスまたはオフ
セットとして使用することを示します。MPASM™
アセンブラは、インデックスまたはオフセット値が
大かっこで囲まれていないと判定した場合、フラグ
を設定します。
拡張命令は特に、高度な言語、特に C で作成された
再入可能プログラム コード ( 再帰コード、またはソ
フトウェア スタックを使用するコード ) を最適化す
るために実行されています。特に、ユーザーが高度
な言語を使用して、データ構造に対する特定の動作
を一層効率的に実行できます。次の機能があります。
拡張命令セットが有効なときには、バイト指向命令
やビット指向命令でインデックス引き数を示す場
合にも大かっこを使用します。これは、それらの命
令のシンタックスの変更内容の一部です。詳細につ
いては、24.2.3.1 項「拡張命令のシンタックスと
PIC18 の標準コマンド」を参照してください。
• サブルーチンの開始時と終了時における、ソフト
ウェア スタック空間の動的な割り当てと割り当
て解除
• 機能ポインタの呼び出し
• ソフトウェアのスタック ポインタの操作
• ソフトウェア スタック内の変数の操作
表 24-3:
拡張命令セット、およびインデックス付き
リテラル オフセット アドレス指定モード
は、C で作成されたアプリケーションを最
適化する目的で設計されています。これら
の命令をアセンブラで直接使用すること
はほとんどない可能性があります。コンパ
イラで生成されたコードを確認するユー
ザー向けに、これらのコマンドのシンタッ
クスを参考情報として示します。
注:
以前のバージョンでは、大かっこは PIC18
とそれ以前の命令セットでオプションの
引き数を表すために使用されていました。
本書では、オプションの引き数は中かっこ
({}) で示します。
PIC18 の拡張命令セット
Mnemonic,
Operands
ADDFSR
f, k
ADDULNK k
CALLW
MOVSF
zs, fd
MOVSS
zs, zd
PUSHL
k
SUBFSR
SUBULNK
f, k
k
Description
Cycles
Add literal to FSR
Add literal to FSR2 and return
Call subroutine using WREG
1st word
Move zs (source) to
2nd word
fd (destination)
1st word
Move zs (source) to
2nd word
zd (destination)
Store literal at FSR2,
decrement FSR2
Subtract literal from FSR
Subtract literal from FSR2 and
return
 2009 Microchip Technology Inc.
1
2
2
2
16-Bit Instruction Word
MSb
LSb
Status
Affected
1000
1000
0000
1011
ffff
1011
xxxx
1010
ffkk
11kk
0001
0zzz
ffff
1zzz
xzzz
kkkk
kkkk
kkkk
0100
zzzz
ffff
zzzz
zzzz
kkkk
None
None
None
None
1
1110
1110
0000
1110
1111
1110
1111
1110
1
2
1110
1110
1001
1001
ffkk
11kk
kkkk
kkkk
None
None
2
Preliminary
None
None
DS41303E_JP - ページ 353
PIC18F2XK20/4XK20
24.2.2
拡張命令セット
ADDFSR
Add Literal to FSR
ADDULNK
Add Literal to FSR2 and Return
シンタックス :
ADDFSR f, k
シンタックス :
ADDULNK k
オペランド :
0  k  63
f  [ 0, 1, 2 ]
オペランド :
0  k  63
実行内容 :
FSR2 + k  FSR2,
実行内容 :
FSR(f) + k  FSR(f)
影響を受ける
ステータス :
なし
1110
エンコード :
説明 :
(TOS) PC
影響を受ける
ステータス :
1000
ffkk
kkkk
ワード数 :
6 ビットのリテラル「k」を、「f」が
指定する FSR の内容に加算します。
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
Q2
リテラル
「k」を読み
出す
Q3
Q4
データを
処理
FSR に
書き込む
なし
1110
エンコード :
説明 :
命令実行前
FSR2
命令実行後
FSR2
=
03FFh
=
0422h
1/4 サイクルの動作 :
Q1
デコード
動作なし
Q3
Q4
リテラル
「k」を読み
出す
データを
処理
書き込む
動作なし
動作なし
動作なし
Q2
FSR に
ADDULNK 23h
例:
命令実行前
FSR2
PC
命令実行後
FSR2
PC
注:
kkkk
2
サイクル数 :
ADDFSR 2, 23h
11kk
6 ビットのリテラル「k」を、が指
定する FSR2 の内容に加算します。
その後、PC に TOS をロードして、
RETURN を実行します。
この命令は 2 サイクルで実行され、2
サイクル目は NOP が実行されます。
これは、ADDFSR 命令で f = 3 (2 進数
「11」である特殊な場合と考えるこ
とができます。この命令は FSR2 で
のみ動作します。
1
ワード数 :
例:
1000
=
=
03FFh
0100h
=
=
0422h
(TOS)
PIC18 の命令はすべて、記号アドレス指定で使用できるオプションのラベル引き数を、命令ニーモニッ
クの前に付けることができます。ラベルを使用する場合、命令のシンタックスは「( ラベル ) 命令 引き
数 (1 つ以上 )」になります。
DS41303E_JP - ページ 354
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
CALLW
Subroutine Call Using WREG
MOVSF
Move Indexed to f
シンタックス :
CALLW
シンタックス :
MOVSF [zs], fd
オペランド :
なし
オペランド :
実行内容 :
(PC + 2)  TOS,
(W)  PCL,
(PCLATH)  PCH,
(PCLATU)  PCU
0  zs  127
0  fd  4095
実行内容 :
((FSR2) + zs)  fd
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
なし
0000
エンコード :
0000
0001
0100
説明
最初に、リターン アドレス (PC + 2) を
リターン スタックにプッシュします。
次に、PCL に W の内容を書き込みま
す。PCL の既存の値は破棄されます。
その後、PCLATH の内容を PCH、
PCLATU の内容を PCU でラッチしま
す。2 サイクル目は NOP 命令として実
行し、その間に次の命令をフェッチし
ます。
CALL とは異なり、W、STATUS、また
は BSR のレジスタを更新するオプショ
ンはありません。
ワード数 :
1
サイクル数 :
2
エンコード :
1st word (source)
2nd word (destin.)
1110
1111
Q2
Q3
Q4
デコード
WREG を
読み出す
PC を
スタックに
プッシュ
動作なし
動作なし
動作なし
動作なし
動作なし
HERE
例:
命令実行前
PC
PCLATH
PCLATU
W
命令実行後
PC
TOS
PCLATH
PCLATU
W
address (HERE)
10h
00h
06h
=
=
=
=
=
001006h
address (HERE + 2)
10h
00h
06h
 2009 Microchip Technology Inc.
zzzzs
ffffd
ソース レジスタの内容を、格納先のレ
ジスタ「fd」に移動します。ソース レジ
スタの実際のアドレスは、FSR2 の値に
最初のワードの 7 ビットのリテラル オ
フセット「zs」を加算して決まります。
格納先のレジスタのアドレスは、2 ワー
ド目の 12 ビットのリテラル「fd」で指
定します。両方のアドレスは、4096 バ
イトのデータ空間 (000h ~ FFFh) の任意
の位置にできます。
MOVSF 命令の格納先レジスタとして、
PCL、TOSU、TOSH、または TOSL は
使用できません。
結果として得られたソース アドレスが
間接アドレス指定レジスタをポイント
した場合、00h の値が返されます。
ワード数 :
2
サイクル数 :
2
1/4 サイクルの動作 :
Q1
デコード
CALLW
=
=
=
=
0zzz
ffff
説明 :
1/4 サイクルの動作 :
Q1
1011
ffff
デコード
Q2
Q3
動作なし
動作なし
ダミーを読
み出さない
例:
MOVSF
命令実行前
FSR2
85h の内容
REG2
命令実行後
FSR2
85h の内容
REG2
Preliminary
Q4
ソース アド ソース アド
レスを特定 レスを特定
ソース レジ
スタを読み
出す
レジスタ「f」
( 格納先 ) に
書き込む
[05h], REG2
=
=
=
80h
33h
11h
=
=
=
80h
33h
33h
DS41303E_JP - ページ 355
PIC18F2XK20/4XK20
MOVSS
Move Indexed to Indexed
PUSHL
Store Literal at FSR2, Decrement FSR2
シンタックス :
MOVSS [zs], [zd]
シンタックス :
PUSHL k
オペランド :
0  zs  127
0  zd  127
オペランド :
0k  255
((FSR2) + zs)  ((FSR2) + zd)
実行内容 :
実行内容 :
k  (FSR2),
FSR2 – 1  FSR2
影響を受ける
ステータス :
なし
影響を受ける
ステータス :
なし
エンコード :
1st word (source)
2nd word (dest.)
説明
1111
エンコード :
1110
1111
1011
xxxx
1zzz
xzzz
zzzzs
zzzzd
ソース レジスタの内容を、格納先のレ
ジスタに移動します。ソース レジスタ
と格納先レジスタのアドレスは、FSR2
の値に 7 ビットのリテラル オフセット
「zs」または「zd」を加算して決まりま
す。両方のレジスタは、4096 バイトの
データ メモリ空間 (000h ~ FFFh) の任
意の位置にできます。
MOVSS 命令の格納先レジスタとして、
PCL、TOSU、TOSH、または TOSL は
使用できません。
得られたソース アドレスが間接アドレ
ス指定レジスタをポイントした場合、
00h の値が返されます。得られた格納
先アドレスが間接アドレス指定レジス
タをポイントした場合、命令は NOP と
して実行されます。
ワード数 :
2
サイクル数 :
2
Q2
Q3
Q4
デコード
ソース
アドレスを
特定
ソース
アドレスを
特定
ソース
レジスタを
読み出す
デコード
格納先
アドレスを
特定
格納先
アドレスを
特定
格納先
レジスタに
書き込む
kkkk
kkkk
8 ビットのリテラル「k」を、FSR2 が指定
するデータ メモリ アドレスに書き込みま
す。書き込み動作後、FSR2 を 1 デクリメ
ントします。
この命令により、値をソフトウェア スタッ
クにプッシュできます。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
例:
1/4 サイクルの動作 :
Q1
1010
説明 :
Q1
Q2
Q3
Q4
デコード
「k」を
読み出す
データを
処理
格納先に
書き込む
PUSHL 08h
命令実行前
FSR2H:FSR2L
Memory (01ECh)
=
=
01ECh
00h
命令実行後
FSR2H:FSR2L
Memory (01ECh)
=
=
01EBh
08h
MOVSS [05h], [06h]
例:
命令実行前
FSR2
85h の内容
86h の内容
命令実行後
FSR2
85h の内容
86h の内容
=
=
=
80h
33h
11h
=
=
=
80h
33h
33h
DS41303E_JP - ページ 356
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
SUBFSR
Subtract Literal from FSR
シンタックス :
SUBFSR f, k
シンタックス : SUBULNK k
オペランド :
0  k  63
オペランド :
0  k  63
f  [ 0, 1, 2 ]
実行内容 :
FSR2 – k  FSR2
実行内容 :
FSR(f) – k  FSRf
影響を受ける
ステータス :
なし
1110
エンコード :
SUBULNK
(TOS) PC
影響を受ける
ステータス :
1001
ffkk
kkkk
説明 :
6 ビットのリテラル「k」を、
「f」
が指定する FSR の内容から減算し
ます。
ワード数 :
1
サイクル数 :
1
デコード
Q2
Q3
レジスタ「f」 データを
を読み出す
処理
Q4
格納先に
書き込む
なし
1110
エンコード :
1001
11kk
kkkk
説明:
6 ビットのリテラル「k」を、FSR2 の内容
から減算します。その後、PC に TOS を
ロードして、RETURN を実行します。
この命令は 2 サイクルで実行され、2 サイ
クル目は NOP が実行されます。
これは、SUBFSR 命令で f = 3 (2 進数「11」
である特殊な場合と考えることができま
す。この命令は FSR2 でのみ動作します。
ワード数 :
1
サイクル数 :
2
1/4 サイクルの動作 :
Q1
Subtract Literal from FSR2 and Return
1/4 サイクルの動作 :
Q1
SUBFSR 2, 23h
例:
命令実行前
FSR2
命令実行後
FSR2
デコード
=
03FFh
=
03DCh
動作なし
Q2
動作なし
命令実行前
FSR2
PC
命令実行後
FSR2
PC
Preliminary
動作なし
Q4
格納先に
書き込む
動作なし
SUBULNK 23h
例:
 2009 Microchip Technology Inc.
Q3
レジスタ「f」 データを
を読み出す
処理
=
=
03FFh
0100h
=
=
03DCh
(TOS)
DS41303E_JP - ページ 357
PIC18F2XK20/4XK20
24.2.3
注:
インデックス付きリテラル オフセット
モードのバイト指向命令とビット指向
命令
PIC18の拡張命令セットを有効にすること
により、レガシー アプリケーションの動
作にエラーが出たり、まったく動作しなく
なることがあります。
拡張命令セットを有効にすると、拡張セットの新し
い 8 個の命令だけでなく、インデックス付きリテラ
ル オフセット アドレス指定モードも有効になりま
す (5.5.1 項「リテラル オフセットによる インデッ
クス付きアドレス指定」を参照 )。これにより、PIC18
の標準命令セットの多くのコマンドの解釈方法に
大きな影響を与えます。
拡張セットを無効にしているときには、オペコード
に埋め込まれたアドレスは、アクセス バンク内の
ロケーション (「a」= 0)、または BSR が指定する
GPR バンク内のロケーション (「a」= 1) という、メ
モリのリテラル ロケーションとして扱われます。た
だし、拡張命令セットを有効にし、かつ「a」= 0 の
ときには、5Fh 以下のファイル レジスタ引き数は、
リテラル アドレスではなく、FSR2 のポインタ力の
オフセットとして解釈されます。具体的には、拡張
命令セットが有効なときには、アクセス RAM の
ビットを引き数として使用するすべての命令、つま
りバイト指向命令およびビット指向命令のすべて
( コア PIC18 の命令のほぼ半数 ) の動作が異なると
いうことです。
FSR2 の内容が 00h の場合、アクセス RAM の境界
が根本的に元の値に再マップされます。これは、後
方互換コードを作成するときに便利です。この手法
を使用する場合、C とアセンブリのルーチンの間で
移動するときに、スタック ポインタを保持するた
めに、FSR2 の値の保存やリストアの必要があるこ
とがあります。また、拡張命令セットのシンタック
スの要件も念頭に置く必要があります 24.2.3.1 項
「拡張命令のシンタックスとPIC18の標準コマンド」
を参照 )。
インデックス付きリテラル オフセット アドレス指
定モードは、スタックやポインタの動的操作に非常
に便利ですが、その一方で単純な算術計算を不正な
レジスタで実行した場合には非常に面倒になるこ
とがあります。PIC18 のプログラミングに慣れてい
るユーザーは、拡張命令セットを有効にしたときに
は、5Fh 以下のレジスタ アドレスはインデックス付
きリテラル オフセット アドレス指定に使用される
ことに注意する必要があります。
インデックス付きリテラル オフセット アドレス指
定モードのバイト指向命令とビット指向命令の典
型的な例を以降のページに示し、命令が受ける影響
を示します。例に示すオペランドの条件は、これら
のタイプの命令すべてに適用できます。
DS41303E_JP - ページ 358
24.2.3.1
拡張命令のシンタックスと PIC18 の
標準コマンド
拡張命令セットが有効なときには、標準のバイト指
向命令やビット指向命令のファイル レジスタ引き
数「f」がリテラル オフセット値「k」に置き換えら
れます。前述したように、これは「f」が 5Fh 以下
のときのみ発生します。オフセット値を使用すると
きには、大かっこ ([ ]) で囲んで示す必要がありま
す。拡張命令と同様に、大かっこはコンパイラに、
値をインデックスまたはオフセットとして解釈す
ることを指示します。大かっこを省略したり、5Fh
よ り 大 き い 値 を 大 か っ こ で 囲 ん だ り す る と、
MPASM アセンブラでエラーが発生します。
インデックス付きリテラル オフセット アドレス指
定でインデックス引き数が適切に大かっこで囲ま
れており、アクセス RAM の引き数が指定されてい
ない場合は、この引き数は自動的に「0」と見なさ
れます。これは、ターゲット アドレスの基礎とし
て「a」が設定されている標準動作 ( 拡張命令セッ
トが無効 ) とは異なります。このモードでアクセス
RAM ビットを宣言しても、MPASM アセンブラで
エラーが発生します。
格納先の引き数「d」は、以前と同様に機能します。
最新バージョンの MPASM™ アセンブラでは、拡張
命令セットの言語サポートを明示的に起動する必
要があります。この起動は、コマンドライン オプ
ション /y、
またはソース リストの PE ディレクティ
ブで行います。
24.2.4
拡張命令セットを有効にするときの
注意点
拡張命令セットが一部のユーザーにとって利点に
ならない可能性があることに注意してください。特
に、ソフトウェア スタックを使用するコードを作
成しないユーザーには、拡張命令セットを使用する
利点がない場合があります。
更に、インデックス付きリテラル オフセット アド
レス指定モードは、レガシー アプリケーションを
PIC18 アセンブラで作成すると問題を引き起こすこ
とがあります。この理由は、レガシー コードの命
令が、アクセス バンク内の 5Fh 未満のレジスタを
アドレス指定しようとするからです。拡張命令セッ
トを有効にすると、これらのアドレスは FSR2 から
のリテラル オフセットとして解釈されるので、ア
プリケーションが不正なデータ アドレスに対して、
読み出しや書き込みを行うことがあります。
アプリケーションを PIC18F2XK20/4XK20 に移植す
るときには、コードのタイプを考慮することが非常
に重要です。C 言語で作成され、効率的なコンパイ
ルの恩恵を受ける大型のリエントラント アプリ
ケーションは、拡張命令セットを使用する場合に良
好に動作します。アクセス バンクを多用するレガ
シー アプリケーションは、拡張命令を使用するこ
との利点を活用できない可能性が非常に高いです。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
ADDWF
ADD W to Indexed
(Indexed Literal Offset mode)
BSF
Bit Set Indexed
(Indexed Literal Offset mode)
シンタックス :
ADDWF
シンタックス :
BSF [k], b
オペランド :
0  k  95
d  [0,1]
オペランド :
0  f  95
0b7
実行内容 :
(W) + ((FSR2) + k)  dest
実行内容 :
1  ((FSR2) + k)<b>
影響を受ける
ステータス :
なし
[k] {,d}
影響を受けるステー N, OV, C, DC, Z
タス:
0010
エンコード:
説明 :
kkkk
kkkk
W の内容を、FSR2 のオフセット値「k」
が示すレジスタの内容に加算します。
「d」が「0」の場合、結果は W に書き
込まれます。
「d」が「1」の場合、結
果はレジスタ「f」に書き込まれます
( デフォルト )。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
例:
01d0
「k」を読み
出す
ADDWF
Q4
データを
処理
格納先に
書き込む
17h
2Ch
0A00h
20h
=
=
37h
20h
kkkk
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q2
Q3
Q4
レジスタ「f」 データを
を読み出す
処理
BSF
例:
命令実行前
FLAG_OFST
FSR2
0A0Ah の内容
命令実行後
0A0Ah の内容
[OFST] , 0
=
=
=
=
kkkk
FSR2 のオフセット値「k」が示すレジ
スタのビット「b」をセットします。
デコード
Q3
bbb0
説明 :
Q1
Q2
命令実行前
W
OFST
FSR2
0A2Ch の内容
命令実行後
W
0A2Ch の内容
1000
エンコード :
格納先に
書き込む
[FLAG_OFST], 7
=
=
=
0Ah
0A00h
55h
=
D5h
SETF
Set Indexed
(Indexed Literal Offset mode)
シンタックス :
SETF [k]
オペランド :
0  k  95
実行内容 :
FFh  ((FSR2) + k)
影響を受ける
ステータス :
なし
0110
エンコード:
1000
kkkk
kkkk
説明 :
FSR2 のオフセット値「k」が示すレジ
スタの内容を FFh に設定します。
ワード数 :
1
サイクル数 :
1
1/4 サイクルの動作 :
Q1
デコード
例:
Q2
「k」を読み
出す
SETF
命令実行前
OFST
FSR2
0A2Ch の内容
命令実行後
0A2Ch の内容
 2009 Microchip Technology Inc.
Preliminary
Q3
Q4
データを
処理
レジスタに
書き込む
[OFST]
=
=
=
2Ch
0A00h
00h
=
FFh
DS41303E_JP - ページ 359
PIC18F2XK20/4XK20
24.2.5
マイクロチップ社の MPLAB® IDE
ツールに関する特別な注意点
マイクロチップ社の最新バージョンのソフトウェ
ア ツールは、PIC18F2XK20/4XK20 デバイス ファミ
リの拡張命令セットをフル サポートするように設
計されています。ソフトウェア ツールは、MPLAB
C18 C コンパイラ、MPASM アセンブリ言語、およ
び MPLAB 統合開発環境 (IDE) を装備しています。
ソフトウェア開発のターゲット デバイスを選択す
るときに、MPLAB IDE は、デバイスの構成ビット
を自動的にデフォルトに設定します。XINST 構成
ビットのデフォルト設定は「0」で、拡張命令セッ
トとインデックス付きリテラル オフセット アドレ
ス指定モードは無効です。拡張命令セットの利点を
活用するように、実行アプリケーションを適切に開
発するには、プログラミングで XINST をセットす
る必要があります。
拡張命令セットを使用するソフトウェアを開発す
るには、言語ツールで拡張命令とインデックス付き
アドレス指定モードのサポートを有効にする必要
があります。使用する環境により、これは次に示す
方法で実行できます。
• 環境内のメニュー オプションまたはダイアログ
ボックスで、言語ツールとプロジェクトの設定
を指定する
• コマンドライン オプション
• ソース コードのディレクティブ
これらのオプションは、コンパイラ、アセンブラ、
および開発環境によって異なります。開発システム
に付属のマニュアルから、適切な情報を参照するこ
とをお勧めします。
DS41303E_JP - ページ 360
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
25.0
25.1
開発サポート
PIC® マイクロコントローラは、
次に示すさまざまな
ハードウェア開発ツールおよびソフトウェア開発
ツールでサポートされています。
• 統合開発環境 (IDE)
- MPLAB® IDE ソフトウェア
• アセンブラ / コンパイラ / リンカー
- MPASM™ アセンブラ
- MPLAB C18 および MPLAB C30 C コンパイラ
- MPLINK™ オブジェクト リンカー /
MPLIB™ オブジェクト ライブラリアン
- MPLAB ASM30 アセンブラ / リンカー /
ライブラリ
• シミュレータ
- MPLAB SIM ソフトウェア シミュレータ
• エミュレータ
- MPLAB ICE 2000 インサーキット エミュ
レータ
- MPLAB REAL ICE™ インサーキット
エミュレータ
• インサーキット デバッガ
- MPLAB ICD 2
• デバイス プログラマ
- PICSTART® Plus デバイス プログラマ
- MPLAB PM3 デバイス プログラマ
- PICkit™ 2 開発用プログラマ
• 低価格のデモンストレーションおよび開発
ボードと評価キット
MPLAB 統合開発環境ソフトウェア
MPLAB IDE ソフトウェアを使用することで、従来
の 8/16 ビットマイクロコントローラ市場では考え
られないほど、ソフトウェア開発が容易になりま
す。MPLAB IDE は Windows® オペレーティング シ
ステムをベースにしたアプリケーションで、次のよ
うな特徴があります。
• すべてのデバッグ ツールに共通の GUI
- シミュレータ
- プログラマ ( 別売り )
- エミュレータ ( 別売り )
- インサーキット デバッガ ( 別売り )
• 色分けコンテキスト対応のフル機能エディタ
• 複数のプロジェクト管理機能
• コンテンツを直接編集できるカスタマイズ可
能なデータウィンドウ
• 高レベルなソースコードのデバッグ
• レジスタの初期化を容易にするビジュアル
デバイス イニシャライザ
• マウス オーバーによる変数内容の表示
• ドラッグ & ドロップによるソースの変数表示
• 充実したオンライン ヘルプ
• サード パーティ ツールの統合
( 例 : HI-TECH Software 社製 C コンパイラおよ
び IAR 社製 C コンパイラ )
MPLAB IDE を使用すると、次の操作が可能となり
ます。
• ソース ファイル ( アセンブリまたは C) の編集
• ワンタッチでのアセンブル ( またはコンパイル )
と PIC MCU エミュレータおよびシミュレータ
ツールへのダウンロード ( すべてのプロジェク
ト情報を自動更新 )
• 次を使用したデバッグ
- ソース ファイル(アセンブリ言語またはC言語)
- アセンブリ言語と C 言語の混合
- マシン コード
MPLAB IDE は、コスト効率の高いシミュレータか
ら低価格のインサーキット デバッガおよびフル機
能のエミュレータに至る複数のデバッグツールを
単一の開発パラダイムでサポートしています。これ
により、柔軟性と機能を高めたツールにアップグ
レードした場合でも、短期間でその使用方法が習得
できます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 361
PIC18F2XK20/4XK20
25.2
MPASM アセンブラ
MPASM アセンブラは、すべての PIC MCU に対応す
るフル機能のユニバーサル マクロ アセンブラです。
MPASM アセンブラは、MPLINK オブジェクト リン
カ ー 用 の 再 配 置 可 能 な オ ブ ジ ェ ク ト フ ァ イ ル、
Intel® 標準 HEX ファイル、メモリ使用量と記号参照
を説明する MAP ファイル、ソース ラインと生成さ
れたマシン コードを含む絶対 LST ファイル、
デバッ
グ用 COFF ファイルを生成します。
MPASM アセンブラには次の特徴があります。
• MPLAB IDE プロジェクトへの統合
• ユーザー定義マクロによる アセンブリ コード
の簡略化
• 多用途ソースファイルに対応する条件付き
アセンブリ
• アセンブリ プロセスの完全な制御を可能にする
ディレクティブ
25.3
MPLAB C18 および MPLAB C30
C コンパイラ
MPLAB C18 および MPLAB C30 コード開発システ
ムは、マイクロチップ社の PIC18/PIC24 ファミリの
マイクロコントローラおよび dsPIC30/dsPIC33 ファ
ミリのデジタル シグナル コントローラに対応す
る、完全な ANSI C コンパイラです。これらのコン
パイラは強力な統合機能と優れたコード最適化機
能を備え、他のコンパイラにない使いやすさを実現
しています。
ソース レベルのデバッグを容易にするため、これ
らのコンパイラは最適化された記号情報を MPLAB
IDE デバッガに提供します。
オブジェクト リンカー / ライブラリには、次の機能
が含まれています。
• 多数の小さいファイルの代わりに、1 つのライ
ブラリを効果的にリンクする
• 関連モジュールをグループ化することにより、
コードを保守しやすくする
• モジュールのリスト作成、置換、削除、抽出
が簡単なライブラリを柔軟に作成する
25.5
MPLAB ASM30 アセンブラ、
リンカー、ライブラリアン
MPLAB ASM30 アセンブラは、記号アセンブリ言語
から dsPIC30F デバイス向けの再配置可能マシン
コードを生成します。MPLAB C30 C コンパイラは
このアセンブラを使用してオブジェクト ファイル
を生成します。アセンブラは、アーカイブ化でき
る、または他の再配置可能オブジェクト ファイル
およびアーカイブとリンクできる再配置可能なオ
ブジェクトファイルを生成し、実行ファイルを作成
します。アセンブラの主な機能は次のとおりです。
• dsPIC30F 命令セット全体のサポート
• 固定小数点データおよび浮動小数点データの
サポート
• コマンドライン インタフェース
• 豊富なディレクティブ セット
• 柔軟性に優れたマクロ言語
• MPLAB IDE との互換性
25.6
MPLAB SIM ソフトウェア シミュ
レータ
MPLINK オブジェクト リンカーは、MPASM アセン
ブラと MPLAB C18 C コンパイラによって作成され
た再配置可能なオブジェクトを結合します。このオ
ブジェクト リンカーは、リンカースクリプトから
のディレクティブを使用し、コンパイル済みライブ
ラリから再配置可能なオブジェクトをリンクでき
ます。
MPLAB SIM ソフトウェア シミュレータでは、PIC
MCU および dsPIC® DSC を 1 つの命令レベルでシ
ミュレートすることにより、PC ホスト環境での
コード開発を可能にしています。任意の命令でデー
タ領域を検証または変更でき、総合的なスティミュ
ラス コントローラから外部信号を加えることがで
きます。ランタイム分析を詳しく実行する場合、レ
ジスタをファイルに記録できます。また、トレース
バッファおよびロジック アナライザ ディスプレイ
を使用すると、シミュレータの機能を拡張して、プ
ログラムの実行、I/O の動作、大部分の周辺機能と
内部レジスタを記録および確認できます。
MPLIB オブジェクト ライブラリアンは、コンパイ
ル済みコードのライブラリ ファイルの作成と変更
を管理します。ライブラリのルーチンがソース ファ
イルから呼び出されると、そのルーチンが含まれて
いるモジュールのみがアプリケーションにリンク
されます。これにより、大きなライブラリを多様な
アプリケーションで効率的に使用できます。
MPLAB SIM ソフトウェア シミュレータは、
MPLAB
C18 および MPLAB C30 C コンパイラと MPASM お
よび MPLAB ASM30 アセンブラを使用した記号デ
バッグをフルサポートしています。このソフトウェ
ア シミュレータは、ハードウェアのラボ環境にない
コードの開発およびデバッグに対して柔軟性を備
えた経済的で優れたソフトウェア開発ツールです。
25.4
MPLINK オブジェクト リンカー /
MPLIBオブジェクト ライブラリアン
DS41303E_JP - ページ 362
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
25.7
MPLAB ICE 2000 高性能
インサーキット エミュレータ
MPLAB ICE 2000 インサーキット エミュレータは製
品開発エンジニア向けの製品であり、PIC マイクロ
コントローラ用のマイクロコントローラ設計ツー
ル一式が付属しています。MPLAB ICE 2000 イン
サーキット エミュレータのソフトウェア制御は、
MPLAB 統合開発環境によって機能向上が図られ、
1 つの環境から編集、ビルド、ダウンロード、ソー
スデバッグができるようになりました。
MPLAB ICE 2000 は、拡張トレース、トリガ、デー
タ モニタ機能を備えたフル機能エミュレータ シス
テムです。交換可能なプロセッサ モジュールを採
用しているため、異なるプロセッサのエミュレー
ションに応じて、システムを簡単に再設定できま
す。MPLAB ICE 2000 インサーキット エミュレータ
のアーキテクチャは、拡張することにより、新しい
PIC マイクロコントローラをサポートできます。
MPLAB ICE 2000 インサーキット エミュレータ シ
ステムは、通常はるかに高価な開発ツールに見られ
る高度な機能を持つリアルタイム エミュレーショ
ン システムとして設計されたものです。シンプル
な統一アプリケーションにおいて、これらの機能を
最も効果的に使用するには、PC プラットフォーム
と Microsoft® Windows® 32 ビット オペレーティング
システムの組み合わせが最適です。
25.8
MPLAB REAL ICE インサーキット
エミュレータ システム
MPLAB REAL ICE インサーキット エミュレータ シ
ステムは、マイクロチップ社の次世代型高速エミュ
レータで、マイクロチップ社のフラッシュDSC デバ
イスおよび MCU デバイスに対応しています。
MPLAB 統合開発環境 (IDE) の使いやすく強力なグ
ラフィカル ユーザー インターフエース(GUI)を利用
して、PIC® フラッシュ MCU および dsPIC® フラッ
シュ DSC のデバッグとプログラムが実行できます。
MPLAB IDE は、このエミュレータ システムのキッ
トに同梱されています。
MPLAB REAL ICE プローブは、高速 USB2.0 イン
ターフェースを使用して設計エンジニアの PC に接
続します。ターゲットとの接続には、MPLAB ICD 2
で採用されている一般的な接続方式 (RJ11) に対応
したコネクタか、ノイズ耐性に優れた低電圧差動信
号(LVDS)方式の新しい高速相互接続規格 (CAT5) に
対応したコネクタのいずれかを使用します。
MPLAB REAL ICE は、今後リリースされるファーム
ウェアを MPLAB IDE からダウンロードすることに
より、ユーザーが現場でアップグレードできます。
MPLAB IDE の今後のリリースでは、新しいデバイ
スをサポートしていく予定です。また、ソフトウェ
ア ブレークポイントやアセンブラコードのトレー
スなどの新しい機能の追加も予定されています。
MPLAB REAL ICE には、競合エミュレータに比べ大
 2009 Microchip Technology Inc.
きく優れた点が複数あります。例えば、低価格の他
に、フルスピードでのエミュレーション、リアルタ
イム変数監視、トレース解析、および複雑なブレー
クポイント設定が可能である点、耐久性の高いプ
ローブインターフェースを備え、相互接続に長い
ケーブル ( 最長 3m) を使用できる点が挙げられます。
25.9
MPLAB ICD 2 インサーキット
デバッガ
マイクロチップ社の MPLAB ICD 2 インサーキット
デバッガは、RS-232 または高速 USB インタフェー
スでホスト PC と接続する強力かつ低価格のランタ
イム開発ツールです。このツールはフラッシュ PIC
MCU をベースにしており、PIC MCU および dsPIC
DSC 向けの開発に使用できます。MPLAB ICD 2 は、
フラッシュ デバイスに組み込まれているインサー
キット デバッグ機能を使用します。この機能とマ
イ ク ロ チ ッ プ 社 の In-Circuit Serial Programming™
(ICSP™) プロトコルを組み合わせると、MPLAB 統
合開発環境の GUI で、コスト効率の高い、フラッ
シュ デバイスのインサーキット デバッグを実現で
きます。これにより、設計者はブレークポイント、
個々のステップ変数およびウォッチ変数、CPU ス
テータスおよび周辺レジスタを設定し、ソース コー
ドを開発およびデバッグできます。また、最高速度
で実行すると、リアルタイムでハードウェアおよび
アプリケーションがテストできます。MPLAB ICD 2
は、特定の PIC デバイスの開発プログラマとしても
機能します。
25.10 MPLAB PM3 デバイス プログラマ
MPLAB PM3 デバイス プログラマは CE 準拠のユニ
バーサル デバイス プログラマで、VDDMIN および
VDDMAX でのプログラマブル電圧検証によって信
頼性を最大限に向上させます。このデバイス プロ
グラマには、メニューとエラー メッセージを表示
する大型 LCD ディスプレイ (128 × 64) と、さまざま
なパッケージ タイプへの対応を可能にする脱着式
のモジュラソケット アセンブリが装備されていま
す。ICSP™ ケーブル アセンブリは標準付属品です。
スタンドアロン モードの場合、MPLAB PM3 デバイ
ス プログラマは、PC を使用せずに PIC デバイスの
読み取り、検証、プログラムを実行できます。この
モードでは、コード プロテクションも設定できま
す。MPLAB PM3 とホスト PC との接続には、RS-232
または USB ケーブルを使用します。さらに、大容
量メモリ デバイスの高速プログラムを可能にする
最適化アルゴリズムと高速通信を備え、ファイル保
存とデー タ保護アプリケー ションのための SD/
MMC カードを内蔵しています。
Preliminary
DS41303E_JP - ページ 363
PIC18F2XK20/4XK20
25.11 PICSTART Plus 開発用プログラマ
PICSTART Plus 開発用プログラマは、低価格でユー
ザーフレンドリーなプロトタイプ プログラマです。
PC との接続には、COM (RS-232) ポートを使用しま
す。MPLAB 統合開発環境ソフトウェアを使用する
と、プ ロ グ ラ マ が 簡 単 か つ 効 率 的 に な り ま す。
PICSTART Plus 開発用プログラマは、40 ピン以下の
DIP パッケージ採用の PIC デバイスのほとんどをサ
ポートします。PIC16C92X や PIC17C76X など、
40 ピンを超えるデバイスの場合、アダプタソケッ
トを使用することで対応できます。PICSTART Plus
開発用プログラマは、CE に準拠しています。
25.12 PICkit 2 開発用プログラマ
PICkit™ 2 開発用プログラマは、インタフェースが
容易な低価格プログラマで、多くのユーザーに選ば
れているフラッシュ デバイス デバッガです。この
ツールでは、マイクロチップ社のベースライン、
ミッドレンジ、PIC18F ファミリのフラッシュ メモ
リ マイクロコントローラのほとんどがプログラム
できます。PICkit 2 スタータキットには、プロトタ
イプ開発ボード 1 個、12 回のレッスンからなる学
習ハ ンド ブッ ク、ソ フト ウェ ア、HI-TECH 社 製
PICC™ Lite C コンパイラが含まれており、PIC® マ
イクロコントローラを使用してすぐに開発を始め
ることができます。このキットには、マイクロチッ
プ社の高性能なミッドレンジ フラッシュ メモリ
ファミリのマイクロコントローラを使用してアプ
リケーションをプログラム、評価、開発する際に必
要なものがすべて含まれています。
DS41303E_JP - ページ 364
25.13 デモンストレーションボード、
開発ボード、評価ボード
さまざまな PIC MCU と dsPIC DSC に対応するデモ
ンストレーション ボード、開発ボード、評価ボード
が豊富に取り揃えられ、フルに機能するシステムで
アプリケーションを迅速に開発できます。ほとんど
のボードには、カスタム回路を追加するためのプロ
トタイプ領域があります。また、アプリケーション
ファームウェアとソース コードが提供されている
ため、検査および変更が可能です。
ボードは、LED、温度センサ、スイッチ、スピーカ、
RS-232 インタフェース、LCD ディスプレイ、ポテン
ショメータ、追加 EEPROM メモリなど、さまざまな
機能をサポートします。
デモンストレーション ボードと開発ボードは、教
材として、プロトタイプのカスタム回路の試作やさ
まざまなマイクロコントローラ アプリケーション
に関する学習などを目的として使用できます。
PICDEM™ および dsPICDEM™ デモンストレーショ
ン / 開発ボード シリーズの回路の他に、マイクロ
チップ社では、アナログフィルタ設計、KEELOQ® セ
キュリティ IC、CAN、IrDA®、SEEVAL® 評価システ
ム、Sigma-Delta ADC、流量感知などに対応する評
価キットおよびデモンストレーション ソフトウェ
アを取り揃えています。
マイクロチップ社のウェブ ページ (www.microchip.
com) にアクセスして、デモンストレーション ボー
ド、開発ボード、評価キットの一覧をご確認くだ
さい。
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
26.0
電気的特性
絶対最大定格 (†)
バイアス下での周囲温度 ............................................................................................................................-40C ~ +125C
保管温度 ........................................................................................................................................................-65C ~ +150C
VSS に対する任意のピンの電圧 (VDD および MCLR を除く ) .................................................... -0.3V ~ (VDD + 0.3V)
VSS に対する VDD 電圧 ..................................................................................................................................-0.3V ~ +5.0V
VSS に対する MCLR の電圧 ( 注 2).................................................................................................................0V ~ +12.5V
合計消費電力 ( 注 1)........................................................................................................................................................ 1.0W
VSS ピンの最大出力電流............................................................................................................................................300 mA
VDD ピンの最大入力電流...........................................................................................................................................250 mA
入力クランプ電流、IIK (VI < 0 または VI > VDD) 20 mA
出力クランプ電流、IOK (VO < 0 または VO > VDD)20 mA
各 I/O ピンの最大出力シンク電流 ..............................................................................................................................25 mA
各 I/O ピンの最大出力ソース電流 ..............................................................................................................................25 mA
すべてのポートの最大シンク電流 ...........................................................................................................................200 mA
すべてのポートの最大ソース電流 ...........................................................................................................................200 mA
注 1:
2:
消費電力は次の式で計算されます。
Pdis = VDD x {IDD –  IOH} +  {(VDD – VOH) x IOH} + (VOL x IOL)
ラッチアッ
MCLR/VPP/RE3 ピンに VSS を下回る電圧スパイク (80 mA を超える電流を誘起 ) があると、
プが発生する場合があります。このため、MCLR/VPP/RE3 ピンに「Low」レベルを印加する場合は、
このピンを直接 VSS にプルダウンするのではなく、50 ~ 100 オームの直列抵抗を使用してください
† 注意 : 上記の「絶対最大定格」を超えるストレスを加えると、デバイスに修復不能な損傷を与える可能性が
あります。絶対最大定格は定格ストレスのみを示すものであり、上記の状態または本仕様書の動作条件に示
されている規定値を超える状態でデバイスが正常に機能することを示すものではありません。最大定格の状
態に長時間放置すると、デバイスの信頼性に影響を与える場合があります。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 365
PIC18F2XK20/4XK20
図 26-1:
PIC18F2XK20/4XK20 の電圧と周波数のグラフ ( 拡張 )
3.5V
3.0V
Voltage
2.7V
2.2V
1.8V
10
20
30 32
40
48 50
60
64
50
60
64
Frequency (MHz)
注 : 最大周波数 20 MHz、1.8V ~ 3.0V、-40C ~ +125C
最大周波数 48 MHz、3.0V ~ 3.6V、-40C ~ +125C
図 26-2:
PIC18F2XK20/4XK20 の電圧と周波数のグラフ ( 工業用 )
3.5V
3.0V
Voltage
2.7V
2.2V
1.8V
10
20
30 32
40
Frequency (MHz)
注 : 最大周波数 20 MHz、1.8V ~ 3.0V、-40C ~ +85C
最大周波数 64 MHz、3.0V ~ 3.6V、-40C ~ +85C
DS41303E_JP - ページ 366
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
26.1
DC 特性 : 電源電圧、PIC18F2XK20/4XK20
PIC18F2XK20/4XK20
Param
Symbol
No.
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
Characteristic
Min
Typ
Max
Units
D001
VDD
Supply Voltage
1.8
—
3.6
V
D002
VDR
RAM Data Retention
Voltage(1)
1.5
—
—
V
D003
VPOR
VDD Start Voltage
to ensure internal
Power-on Reset signal
—
—
0.7
V
D004
SVDD
VDD Rise Rate
to ensure internal
Power-on Reset signal
0.05
—
—
D005
VBOR
Brown-out Reset Voltage
1.8
—
—
BORV<1:0> = 11
Conditions
See section on Power-on Reset for details
V/ms See section on Power-on Reset for details
V
BORV<1:0> = 10
—
2.3
—
V
BORV<1:0> = 01
—
2.8
—
V
BORV<1:0> = 00
—
3.1
—
V
注 1:
これはスリープ モードまたはデバイスのリセット中に、RAM データを失わずに VDD を低下できる
下限値です。
26.2
DC 特性 : パワーダウン電流、PIC18F2XK20/4XK20
PIC18F2XK20/4XK20
Param
No.
D006
Device Characteristics
Typ
Power-down Current (IPD)(1)
0.1
1.0
A
-40°C
0.1
1.0
A
+25°C
0.4
3.0
A
+85°C
2
—
A
+125°C
D007
注 1:
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
Max Units
Conditions
0.1
1.0
A
-40°C
0.2
1.0
A
+25°C
0.5
3.0
A
+85°C
3
—
A
+125°C
VDD = 1.8V, (Sleep mode)
VDD = 3.0V, (Sleep mode)
スリープ モードのパワーダウン電流は、オシレータの種類には依存しません。パワーダウン電流は、
デバイスをスリープモードにし、すべての I/O ピンをハイインピーダンス状態で VDD または VSS に接
続し、デルタ電流を加える機能 (WDT、Timer1 オシレータ、BOR など ) をすべて無効にして測定します。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 367
PIC18F2XK20/4XK20
26.3
DC 特性 : RC 動作時の消費電流、PIC18F2XK20/4XK20
PIC18F2XK20/4XK20
Param
No.
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
Device Characteristics
Typ
Supply Current (IDD)(1, 2)
6
9
A
-40°C
7
10
A
+25°C
8
14
A
+85°C
11
—
A
+125°C
11
15
A
-40°C
12
16
A
+25°C
16
25
A
+85°C
26
—
A
+125°C
D009
0.4
0.5
mA
-40°C to +85°C
VDD = 1.8V
D009A
0.6
0.8
mA
-40°C to +85°C
VDD = 3.0V
D010
2.1
2.5
mA
-40°C to +85°C
VDD = 1.8V
D010A
3.7
4.4
mA
-40°C to +85°C
VDD = 3.0V
D008
D008A
注 1:
2:
Max Units
Conditions
VDD = 1.8V
FOSC = 31 kHz
(RC_RUN mode,
LFINTOSC source)
VDD = 3.0V
FOSC = 1 MHz
(RC_RUN mode,
HF-INTOSC source)
FOSC = 16 MHz
(RC_RUN mode,
HF-INTOSC source)
消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの
負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ
り、これらも消費電流に影響を与えます。
アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。
OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、
VDD にプル。
MCLR = VDD、WDT は指定どおりに有効 / 無効にする。
オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、
Ir = VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。
DS41303E_JP - ページ 368
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
26.4
DC 特性 : RC アイドル時の消費電流、PIC18F2XK20/4XK20
PIC18F2XK20/4XK20
Param
No.
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
Device Characteristics
Typ
Supply Current (IDD)(1, 2)
2
5
A
-40°C
2
5
A
+25°C
3
9
A
+85°C
8
—
A
+125°C
4
8
A
-40°C
5
10
A
+25°C
9
20
A
+85°C
20
—
A
+125°C
D012
300
400
A
-40°C to +85°C
VDD = 1.8V
D012A
450
600
A
-40°C to +85°C
VDD = 3.0V
D013
0.95
1.20
mA
-40°C to +85°C
VDD = 1.8V
D013A
1.6
2.0
mA
-40°C to +85°C
VDD = 3.0V
D011
D011A
注 1:
2:
Max Units
Conditions
VDD = 1.8V
FOSC = 31 kHz
(RC_IDLE mode,
LFINTOSC source)
VDD = 3.0V
FOSC = 1 MHz
(RC_IDLE mode,
HF-INTOSC source)
FOSC = 16 MHz
(RC_IDLE mode,
HF-INTOSC source)
消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの
負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ
り、これらも消費電流に影響を与えます。
アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。
OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、
VDD にプル。
MCLR = VDD、WDT は指定どおりに有効 / 無効にする。
オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、
Ir = VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 369
PIC18F2XK20/4XK20
26.5
DC 特性 : プライマリ動作時の消費電流、PIC18F2XK20/4XK20
PIC18F2XK20/4XK20
Param
No.
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
Device Characteristics
Typ
Max Units
Supply Current (IDD)(1, 2)
0.35
0.45
mA
-40°C to +85°C
VDD = 1.8V
D014A
0.55
0.75
mA
-40°C to +85°C
VDD = 3.0V
D015
D015A
2.3
2.8
mA
-40°C to +85°C
VDD = 1.8V
4.1
5.0
mA
-40°C to +85°C
VDD = 3.0V
11.5
14.0
mA
-40°C to +85°C
VDD = 3.0V
2.0
2.6
mA
-40°C to +85°C
VDD = 1.8V
3.5
4.5
mA
-40°C to +85°C
VDD = 3.0V
12
15
mA
-40°C to +85°C
VDD = 3.0V
D014
D016
D017
D017A
Conditions
D018
注 1:
2:
26.6
消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの
負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ
り、これらも消費電流に影響を与えます。
アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。
OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、
VDD にプル。
MCLR = VDD、WDT は指定どおりに有効 / 無効にする。
オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、
Ir = VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。
DC 特性 : プライマリ アイドル時の消費電流、PIC18F2XK20/4XK20
PIC18F2XK20/4XK20
Param
No.
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
Device Characteristics
Typ
Supply Current (IDD)(1, 2)
50
70
A
-40°C to +85°C
VDD = 1.8V
D019A
100
150
A
-40°C to +85°C
VDD = 3.0V
D020
D020A
0.9
1.1
mA
-40°C to +85°C
VDD = 1.8V
1.6
1.9
mA
-40°C to +85°C
VDD = 3.0V
5.0
7.0
mA
-40°C to +85°C
VDD = 3.0V
D019
FOSC = 1 MHz
(PRI_RUN,
EC oscillator)
FOSC = 20 MHz
(PRI_RUN,
EC oscillator)
FOSC = 64 MHz
(PRI_RUN,
EC oscillator)
FOSC = 4 MHz
16 MHz Internal
(PRI_RUN
HS+PLL)
FOSC = 16 MHz
64 MHz Internal
(PRI_RUN
HS+PLL)
D021
Max Units
Conditions
FOSC = 1 MHz
(PRI_IDLE mode,
EC oscillator)
FOSC = 20 MHz
(PRI_IDLEmode,
EC oscillator)
FOSC = 64 MHz
(PRI_IDLEmode,
EC oscillator)
記号の説明 : TBD= 未定
注 1: 消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの
負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ
り、これらも消費電流に影響を与えます。
アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。
OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、
VDD にプル。
MCLR = VDD、WDT は指定どおりに有効 / 無効にする。
2: オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、
Ir = VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。
DS41303E_JP - ページ 370
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
26.7
DC 特性 : セカンダリ オシレータの消費電流、PIC18F2XK20/4XK20
PIC18F2XK20/4XK20
Param
No.
D022
Device Characteristics
Typ
Supply Current (IDD)(1, 2)
6
9
A
-40°C
7
10
A
+25°C
8
14
A
+85°C
D022A
D023
D023A
注 1:
2:
3:
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
Max Units
Conditions
11
15
A
-40°C
12
16
A
+25°C
16
25
A
+85°C
2
5
A
-40°C
2
5
A
+25°C
3
9
A
+85°C
4
8
A
-40°C
5
10
A
+25°C
9
20
A
+85°C
VDD = 1.8V
VDD = 3.0V
VDD = 1.8V
VDD = 3.0V
FOSC = 32 kHz(3)
(SEC_RUN mode,
Timer1 as clock)
FOSC = 32 kHz(3)
(SEC_IDLE mode,
Timer1 as clock)
消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの
負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ
り、これらも消費電流に影響を与えます。
アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。
OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、
VDD にプル。
MCLR = VDD、WDT は指定どおりに有効 / 無効にする。
オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、Ir =
VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。
T1 オシレータは低消費電力モード。低消費電力モードは 85C に制限されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 371
PIC18F2XK20/4XK20
26.8
DC 特性 : 周辺モジュールの消費電力、PIC18F2XK20/4XK20
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
PIC18F2XK20/4XK20
Param
No.
Device Characteristics
Typ
Max Units
Conditions
Module Differential Currents (IWDT, IBOR, IHLVD, IOSCB, IAD)
D024
(IWDT)
Watchdog Timer
D024A
(IBOR)
Brown-out Reset(2)
D024B
(IHLVD)
High/Low-Voltage Detect(2)
D025
(IOSCB)
Timer1 Oscillator
D025A
(IOSCB)
D026
(IAD)
Timer1 Oscillator
(ICVREF)
A
-40C to +125C
VDD = 1.8V
0.8
—
A
-40C to +125C
VDD = 3.0V
21
—
A
-40C to +125C
VDD = 2.0V
25
—
A
-40C to +125C
VDD = 3.3V
0
—
A
-40C to +125C
VDD = 3.3V
13
—
A
-40C to +125C
VDD = 1.8-3.0V
0.5
—
A
-40C
0.5
—
A
+25C
0.6
—
A
+85C
0.7
—
A
-40C
0.7
—
A
+25C
0.8
—
A
+85C
12
—
A
-40C
12
—
A
+25C
14
—
A
+85C
17
—
A
-40C
17
—
A
+25C
Sleep mode,
BOREN<1:0> = 10
VDD = 1.8V
32 kHz on Timer1(1)
VDD = 3.0V
32 kHz on Timer1(1)
VDD = 1.8V
32 kHz on Timer1(3)
VDD = 3.0V
32 kHz on Timer1(3)
19
—
A
+85C
—
A
-40C to +125C
VDD = 1.8V
275
—
A
-40C to +125C
VDD = 3.0V
Comparators
5
—
A
-40C to +125C
VDD = 1.8-3.0V
LP mode
40
—
A
-40C to +125C
VDD = 1.8-3.0V
HP mode
CVREF
19
—
A
-40C to +125C
VDD = 1.8V
32
—
A
-40C to +125C
VDD = 3.0V
(ICOMP)
D028
—
210
A/D Converter
D027
0.5
A/D on, not converting
記号の説明 : TBD= 未定
注 1: T1 オシレータは低消費電力モード。低消費電力モードは 85C に制限されます。
2: BOR と HLVD は、内部バンド ギャップ リファレンスを有効にします。両方のモジュールを有効にした場合、
消費電力は、両方の使用の合計よりも低くなります。
3: T1 オシレータは高消費電力モード。
DS41303E_JP - ページ 372
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
26.9
DC 特性 : 入力 / 出力特性、PIC18F2XK20/4XK20
Standard Operating Conditions (unless otherwise stated)
Operating temperature -40°C TA  +125°C
DC CHARACTERISTICS
Param
Symbol
No.
VIL
Characteristic
D031
with Schmitt Trigger buffer
RC3 and RC4
D032
Max
Units
VSS
0.15 VDD
V
VSS
VSS
0.2 VDD
0.3 VDD
V
V
Conditions
Input Low Voltage
I/O ports:
with TTL buffer
D030
Min
MCLR
OSC1
VSS
0.2 VDD
V
D033
VSS
0.3 VDD
V
HS, HSPLL modes
D033A
D033B
D034
OSC1
OSC1
T13CKI
VSS
VSS
VSS
0.2 VDD
0.3 VDD
0.3 VDD
V
V
V
RC, EC modes(1)
XT, LP modes
0.25 VDD + 0.8V
VDD
V
0.8 VDD
0.9 VDD
0.7 VDD
VDD
VDD
VDD
V
V
V
0.8 VDD
VDD
V
D043
MCLR
OSC1
0.7 VDD
VDD
V
HS, HSPLL modes
D043A
D043B
D043C
D044
OSC1
OSC1
OSC1
T13CKI
0.8 VDD
0.9 VDD
1.6
1.6
VDD
VDD
VDD
VDD
V
V
V
V
EC mode
RC mode(1)
XT, LP modes
—
1
A
VSS VPIN VDD,
Pin at high-impedance
—
5
A
Vss VPIN VDD
D062
MCLR
Analog Inputs
—
TBD
A
ANSELx = 1
D063
OSC1
—
5
A
Vss VPIN VDD
50
400
A
VDD = 3.0V, VPIN = VSS
VIH
Input High Voltage
I/O ports:
D040
with TTL buffer
D041
with Schmitt Trigger buffer
RC3 and RC4
D042
IIL
D060
D061
D070
Input Leakage Current(2,3)
I/O ports
IPU
Weak Pull-up Current
IPURB
PORTB weak pull-up current
2.4V < VDD < 3.6V
VDD < 2.4V
記号の説明 : TBD= 未定
注 1: オシレータが RC モードの場合、OSC1/CLKIN ピンはシュミット トリガ入力です。RC モードでは、
PIC® デバイスを外部クロックで駆動しないことをお勧めします。
2: MCLR ピンのリーク電流は、印加電圧のレベルにより大きく異なります。仕様のレベルは、通常の動
作条件を反映しています。異なる入力電圧では、リーク電流が更に増加する場合があります。
3: 負電流は、ピンから供給される電流として定義されます。
4: パラメータは特性解析されたものですが、検証されていません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 373
PIC18F2XK20/4XK20
26.9
DC 特性 : 入力 / 出力特性、PIC18F2XK20/4XK20 ( 続き )
Standard Operating Conditions (unless otherwise stated)
Operating temperature -40°C TA  +125°C
DC CHARACTERISTICS
Param
Symbol
No.
VOL
Characteristic
Min
Max
Units
Conditions
Output Low Voltage
D080
I/O ports
—
0.6
V
IOL = 8.5 mA, VDD = 3.0V,
-40C to +85C
D083
OSC2/CLKOUT
(RC, RCIO, EC, ECIO modes)
—
0.6
V
IOL = 1.6 mA, VDD = 3.0V,
-40C to +85C
VOH
Output High Voltage(3)
D090
I/O ports
VDD – 0.7
—
V
IOH = -3.0 mA, VDD = 3.0V,
-40C to +85C
D092
OSC2/CLKOUT
(RC, RCIO, EC, ECIO modes)
VDD – 0.7
—
V
IOH = -1.3 mA, VDD = 3.0V,
-40C to +85C
Capacitive Loading Specs
on Output Pins
D100(4) COSC2
OSC2 pin
—
15
pF
In XT, HS and LP modes
when external clock is used
to drive OSC1
D101
CIO
All I/O pins and OSC2
(in RC mode)
—
50
pF
To meet the AC Timing
Specifications
D102
CB
SCL, SDA
—
400
pF
I2C™ Specification
記号の説明 : TBD= 未定
注 1: オシレータが RC モードの場合、OSC1/CLKIN ピンはシュミット トリガ入力です。RC モードでは、
PIC® デバイスを外部クロックで駆動しないことをお勧めします。
2: MCLR ピンのリーク電流は、印加電圧のレベルにより大きく異なります。仕様のレベルは、通常の動
作条件を反映しています。異なる入力電圧では、リーク電流が更に増加する場合があります。
3: 負電流は、ピンから供給される電流として定義されます。
4: パラメータは特性解析されたものですが、検証されていません。
DS41303E_JP - ページ 374
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
26.10 メモリのプログラミング要件
Standard Operating Conditions (unless otherwise stated)
Operating temperature -40°C  TA  +125°C
DC CHARACTERISTICS
Param
No.
Sym
Characteristic
Min
Typ†
Max
Units
VDD + 4.5
—
9
V
—
—
10
mA
100K
—
—
E/W
1.8
—
3.6
V
Conditions
Internal Program Memory
Programming Specifications(1)
D110
VPP
Voltage on MCLR/VPP/RE3 pin
D113
IDDP
Supply Current during Programming
D120
ED
Byte Endurance
D121
VDRW
VDD for Read/Write
D122
TDEW
Erase/Write Cycle Time
—
4
—
ms
D123
TRETD
Characteristic Retention
40
—
—
Year
Provided no other
specifications are violated
D124
TREF
Number of Total Erase/Write Cycles
before Refresh(2)
1M
10M
—
E/W
-40C to +85C
D130
EP
Cell Endurance
10K
—
—
E/W
-40C to +85C (NOTE 5)
D131
VPR
VDD for Read
1.8
—
3.6
V
D132
VIW
VDD for Row Erase or Write
1.8
—
3.6
V
D133
TIW
Self-timed Write Cycle Time
—
2
—
ms
D134
TRETD
Characteristic Retention
40
—
—
Year
(Note 3, Note 4)
Data EEPROM Memory
-40C to +85C
Using EECON to read/write
Program Flash Memory
†
注 1:
2:
3:
4:
5:
Provided no other
specifications are violated
「Typ」列のデータは特に指定がない限り、3.0V、25C 時のものです。このパラメータは設計の指針としての
み使用します。検証されていません。
これらの仕様は、テーブル書き込み命令を使用してオンチップ プログラム メモリをプログラムする場合のも
のです。
データ EEPROM の耐久性の詳細については、7.8 項「データ EEPROM の使用」を参照してください。
単一電源プログラミングを無効にした場合にのみ必要です。
MPLAB ICD 2 は可変 VPP 出力をサポートしていません。ICD 2 を使用してプログラミングやデバッグを行うと
きには、ICD 2 とターゲット システムとの間に ICD 2 の VPP 電圧を制限する回路を配置する必要があります。
自己書き込みとブロック消去。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 375
PIC18F2XK20/4XK20
26.11 AC 特性
表 26-1:
コンパレータの仕様
Operating Conditions: 1.8V < VDD < 3.6V, -40°C < TA < +125°C (unless otherwise stated).
Param
No.
CM01
Sym
Characteristics
VIOFF
Min
Input Offset Voltage
Typ
Max
Units
—
±7.5
±40
mV
High-Power mode
—
±7.5
±60
mV
Low-Power mode
—
VDD
V
CM02
VICM
Input Common-mode Voltage
0
CM03
CMRR
Common-mode Rejection Ratio
55
—
—
dB
CM04
TRESP
Response Time
—
150
400
ns
CM05
TMC2OV
Comparator Mode Change to
Output Valid*
—
—
10
s
*
注 1:
Comments
Note 1
これらのパラメータは特性解析されたものですが、検証されていません。
応答時間測定時の条件は、一方のコンパレータ入力が VDD/2、他方の入力が
VSS から VDD に変化。
表 26-2:
CVREF 電圧リファレンスの仕様
Operating Conditions: 1.8V < VDD < 3.6V, -40°C < TA < +125°C (unless otherwise stated).
Param
No.
Sym
Characteristics
Min
Typ
Max
Units
Comments
CV01*
CLSB
Step Size(2)
—
—
VDD/24
VDD/32
—
—
V
V
Low Range (VRR = 1)
High Range (VRR = 0)
CV02*
CACC
Absolute Accuracy
—
—
—
—
 1/4
1/2
LSb
LSb
Low Range (VRR = 1)
High Range (VRR = 0)
CV03*
CR
Unit Resistor Value (R)
—
2k
—

CV04*
CST
Settling Time(1)
—
—
10
s
*
注 1:
2:
これらのパラメータは特性解析されたものですが、検証されていません。
セトリング タイムの測定条件は、CVRR = 1、かつ CVR3:CVR0 が「0000」から「1111」に変化して
いるときです。
詳細については、21.1 項「コンパレータ電圧リファレンス」を参照してください。
表 26-3:
固定電圧リファレンス (FVR) の仕様
Operating Conditions: 1.8V < VDD < 3.6V, -40°C < TA < +125°C (unless otherwise stated).
VR Voltage Reference Specifications
Param
No.
Sym
Characteristics
VR voltage output
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
Min
Typ
Max
Units
1.25
1.2
1.15
V
VR01
VROUT
VR02
TCVOUT Voltage drift temperature
coefficient
—
TBD
TBD
ppm/C
VR03
VROUT
/VDD
—
TBD
—
V/V
VR04
TSTABLE Settling Time
—
TBD
TBD
s
Voltage drift with respect to
VDD regulation
Comments
記号の説明 : TBD = 未定
* これらのパラメータは特性解析されたものですが、検証されていません。
DS41303E_JP - ページ 376
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 26-3:
高 / 低電圧検知の特性
VDD
(HLVDIF can be
cleared by software)
VHLVD
(HLVDIF set by hardware)
HLVDIF
表 26-4:
高 / 低電圧検知の特性
Standard Operating Conditions (unless otherwise stated)
Operating temperature -40°C  TA  +125°C
Param
Symbol
No.
D420
Characteristic
Min
Typ†
Max
Units
HLVD Voltage on VDD LVV = 0000
Transition High-to-Low LVV = 0001
1.8
V
1.9
V
LVV = 0010
2.0
V
LVV = 0011
2.1
V
LVV = 0100
2.2
V
LVV = 0101
2.3
V
LVV = 0110
2.4
V
LVV = 0111
2.5
V
LVV = 1000
2.6
V
LVV = 1001
2.7
V
LVV = 1010
2.8
V
LVV = 1011
2.9
V
LVV = 1100
3.0
V
LVV = 1101
3.3
V
LVV = 1110
3.5
V
Conditions
† 製品は TAMB = 25C で検証済みです。制限温度を超える仕様は、特性解析により保証されています。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 377
PIC18F2XK20/4XK20
26.12 AC ( タイミング ) 特性
26.12.1
タイミング パラメータの記号
タイミング パラメータの記号は、次のいずかの形
式で作成されています。
1. TppS2ppS
2. TppS
T
F
Frequency
Lowercase letters (pp) and their meanings:
pp
cc
CCP1
ck
CLKOUT
cs
CS
di
SDI
do
SDO
dt
Data in
io
I/O port
mc
MCLR
Uppercase letters and their meanings:
S
F
Fall
H
High
I
Invalid (High-impedance)
L
Low
2
I C only
AA
output access
BUF
Bus free
2
TCC:ST (I C specifications only)
CC
HD
Hold
ST
DAT
DATA input hold
STA
Start condition
DS41303E_JP - ページ 378
3. TCC:ST
4. Ts
(I2C™ specifications only)
(I2C specifications only)
T
Time
osc
rd
rw
sc
ss
t0
t1
wr
OSC1
RD
RD or WR
SCK
SS
T0CKI
T13CKI
WR
P
R
V
Z
Period
Rise
Valid
High-impedance
High
Low
High
Low
SU
Setup
STO
Stop condition
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
26.12.2
タイミング条件
表 26-5 の温度と電圧の仕様は、特記ない限り、す
べてのタイミング仕様に適用されます。図 26-4 に、
タイミング仕様の負荷条件を規定します。
表 26-5:
温度と電圧の仕様 - AC
AC CHARACTERISTICS
図 26-4:
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA +125°C
Operating voltage VDD range as described in DC spec Section 26.1 and
Section 26.9.
デバイスのタイミング仕様に対する負荷条件
Load Condition 2
Load Condition 1
VDD/2
RL
CL
Pin
VSS
CL
Pin
RL = 464
VSS
 2009 Microchip Technology Inc.
CL = 50 pF
Preliminary
for all pins except OSC2/CLKOUT
and including D and E outputs as ports
DS41303E_JP - ページ 379
PIC18F2XK20/4XK20
26.12.3
タイミング図と仕様
図 26-5:
外部クロックのタイミング (PLL を除く全モード )
Q4
Q1
Q2
Q3
Q4
Q1
OSC1
1
3
4
3
4
2
CLKOUT
表 26-6:
Param.
No.
1A
外部クロックのタイミング要件
Symbol
FOSC
Characteristic
External CLKIN
Frequency(1)
Oscillator Frequency(1)
1
TOSC
External CLKIN
Period(1)
Oscillator Period(1)
Conditions
DC
64
MHz
EC, ECIO Oscillator mode,
(Industrial range devices)
DC
48
MHz
EC, ECIO Oscillator mode,
(Extended range devices)
DC
4
MHz
RC Oscillator mode
0.1
4
4
25
MHz
MHz
XT Oscillator mode
HS Oscillator mode
4
16
MHz
HS + PLL Oscillator mode,
(Industrial range devices)
4
12
MHz
HS + PLL Oscillator mode,
(Extended range devices)
5
200
kHz
LP Oscillator mode
15.6
—
ns
EC, ECIO Oscillator mode, 85°C
to 125°C
250
250
—
10,000
ns
ns
RC Oscillator mode
XT Oscillator mode
40
62.5
250
250
ns
ns
83.3
250
ns
HS Oscillator mode
HS + PLL Oscillator mode,
(Industrial range devices)
HS + PLL Oscillator mode,
(Extended range devices)
5
200
s
LP Oscillator mode
—
ns
TCY = 4/FOSC
30
2.5
—
—
ns
s
XT Oscillator mode
LP Oscillator mode
10
—
ns
HS Oscillator mode
—
20
ns
XT Oscillator mode
—
—
50
7.5
ns
ns
LP Oscillator mode
HS Oscillator mode
TCY
Instruction Cycle
TOSL,
TOSH
External Clock in (OSC1)
High or Low Time
注 1:
Units
62.5
2
TOSR,
TOSF
Max
Time(1)
3
4
Min
External Clock in (OSC1)
Rise or Fall Time
PLL を除くすべての設定について、命令サイクルの周期 (TCY) は、入力オシレータのタイム ベース周
期の 4 倍です。仕様に記載された値はすべて、標準の動作条件下でデバイスにコードを実行させた場
合の特定オシレータの種類の特性データに基づいています。この仕様の制限値を超えると、発振が不
安定になったり、予想以上の消費電流が流れることがあります。すべてのデバイスは、外部クロック
を OSC1/CLKIN ピンに入力し「Min」値で動作を検証しています。外部クロック入力を使用する場合、
すべてのデバイスについて「Max」サイクル時間の制限値は「DC」( クロックなし ) です。
DS41303E_JP - ページ 380
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
表 26-7:
Param
No.
F10
F11
PLL のクロック タイミングの仕様 (VDD = 1.8V ~ 3.6V)
Sym
FOSC
FSYS
Characteristic
Oscillator Frequency Range
On-Chip VCO System Frequency
F12
trc
F13
CLK CLKOUT Stability (Jitter)
PLL Start-up Time (Lock Time)
Min
Typ†
Max
Units
Conditions
4
—
5
MHz VDD = 1.8-3.0V
4
—
16
MHz VDD = 3.0-3.6V,
-40°C to +85°C
4
—
12
MHz VDD = 3.0-3.6V, 125°C
16
—
20
MHz VDD = 1.8-3.0V
16
—
64
MHz VDD = 3.0-3.6V,
-40°C to +85°C
16
—
48
MHz VDD = 3.0-3.6V,
125°C
—
—
2
ms
-2
—
+2
%
† 「Typ( 標準 )」列のデータは特に指定がない限り、3V、25C 時のものです。このパラメータは設計
の指針としてのみ使用します。検証されていません。
表 26-8:
AC 特性 : 内部オシレータの精度
PIC18F2XK20/4XK20
PIC18F2XK20/4XK20
Param
No.
OA1
OA2
Standard Operating Conditions (unless otherwise stated)
Operating temperature
-40°C  TA  +125°C
Min
Typ
Max
Units
Conditions
HFINTOSC Accuracy @ Freq = 16 MHz, 8 MHz, 4 MHz, 2 MHz, 1 MHz, 500 kHz, 250 kHz(1)
1
—
1
%
+25°C
VDD = 2.7-3.6V
3
—
3
%
25°C to +85°C
VDD = 1.8-3.6V
-5
—
+5
%
-40°C to +125°C
VDD = 1.8-3.6V
—
35.938
kHz
-40°C to +125°C
VDD = 1.8-3.6V
LFINTOSC Accuracy @ Freq = 31 kHz
26.562
記号の説明 : 網掛けの行は、表を読みやすくするためのものです。
注 1: 周波数は 25C で較正されています。温度ドリフトの補正に OSCTUNE レジスタを使用できます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 381
PIC18F2XK20/4XK20
図 26-6:
CLKOUT と I/O のタイミング
Q1
Q4
Q2
Q3
OSC1
11
10
CLKOUT
13
19
14
12
18
16
I/O pin
(Input)
15
17
I/O pin
(Output)
New Value
Old Value
20, 21
注:
表 26-9:
Param
No.
負荷条件については、図 26-4 を参照してください。
CLKO と I/O のタイミング要件
Symbol
Characteristic
Min
Typ
Max
Units Conditions
10
TosH2ckL OSC1  to CLKOUT 
—
75
200
ns
(Note 1)
11
TosH2ckH OSC1  to CLKOUT 
—
75
200
ns
(Note 1)
12
TckR
CLKOUT Rise Time
—
35
100
ns
(Note 1)
13
TckF
CLKOUT Fall Time
—
35
100
ns
(Note 1)
14
TckL2ioV CLKOUT  to Port Out Valid
15
TioV2ckH Port In Valid before CLKOUT 
16
TckH2ioI
17
TosH2ioV OSC1  (Q1 cycle) to Port Out Valid
18
TosH2ioI
—
—
0.5 TCY + 20
ns
(Note 1)
0.25 TCY + 25
—
—
ns
(Note 1)
(Note 1)
Port In Hold after CLKOUT 
OSC1  (Q2 cycle) to Port Input Invalid
(I/O in hold time)
0
—
—
ns
—
50
150
ns
100
—
—
ns
19
TioV2osH Port Input Valid to OSC1 (I/O in setup time)
0
—
—
ns
20
TioR
Port Output Rise Time
—
10
25
ns
21
TioF
Port Output Fall Time
—
10
25
ns
22
TINP
INTx pin High or Low Time
20
—
—
ns
23
TRBP
RB<7:4> Change KBIx High or Low Time
TCY
—
—
ns
†
注 1:
これらのパラメータは、内部クロックのエッジには関係のない非同期イベントです。
RC モードで、CLKOUT 出力 = 4 x TOSC として測定しています。
DS41303E_JP - ページ 382
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 26-7:
リセット、ウォッチドッグ タイマ、オシレータ起動タイマ、および
パワーアップ タイマのタイミング
VDD
MCLR
30
Internal
POR
33
PWRT
Time-out
32
OSC
Time-out
Internal
Reset
Watchdog
Timer
Reset
31
34
34
I/O pins
注:
図 26-8:
負荷条件については、図 26-4 を参照してください。
ブラウンアウト リセットのタイミング
BVDD
VDD
35
VBGAP = 1.2V
VIVRST
Enable Internal
Reference Voltage
Internal Reference
Voltage Stable
36
表 26-10: リセット、ウォッチドッグ タイマ、オシレータ起動タイマ、パワーアップ タイマ、および
ブラウンアウト リセットの要件
Param.
Symbol
No.
30
31
TmcL
TWDT
32
33
TOST
TPWRT
34
TIOZ
35
36
TBOR
TIVRST
37
38
39
THLVD
TCSD
TIOBST
Characteristic
Min
Typ
Max
Units
MCLR Pulse Width (low)
2
—
—
Watchdog Timer Time-out Period (no
—
4.00
TBD
postscaler)
Oscillation Start-up Timer Period
1024 TOSC — 1024 TOSC
Power-up Timer Period
—
65.5
TBD
s
ms
I/O High-Impedance from MCLR
Low or Watchdog Timer Reset
Brown-out Reset Pulse Width
Time for Internal Reference
Voltage to become Stable
High/Low-Voltage Detect Pulse Width
CPU Start-up Time
Time for INTOSC to Stabilize
—
ms
Conditions
TOSC = OSC1 period
—
2
—
s
200
—
—
25
—
TBD
s
s
VDD  BVDD (see D005)
200
5
—
—
—
1
—
10
—
s
s
ms
VDD  VHLVD
記号の説明 : TBD = 未定
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 383
PIC18F2XK20/4XK20
図 26-9:
TIMER0 と TIMER1 の外部クロックのタイミング
T0CKI
41
40
42
T1OSO/T13CKI
46
45
47
48
TMR0 or
TMR1
注:
負荷条件については、図 26-4 を参照してください。
表 26-11: TIMER0 と TIMER1 の外部クロックの要件
Param
No.
Symbol
Characteristic
40
Tt0H
T0CKI High Pulse Width
No prescaler
41
Tt0L
T0CKI Low Pulse Width
No prescaler
With prescaler
With prescaler
42
Tt0P
T0CKI Period
No prescaler
With prescaler
45
46
Tt1H
Tt1L
T13CKI
High Time
T13CKI
Low Time
Synchronous, no prescaler
48
Max
Units Conditions
0.5 TCY + 20
—
ns
10
—
ns
0.5 TCY + 20
—
ns
10
—
ns
TCY + 10
—
ns
Greater of:
20 ns or
(TCY + 40)/N
—
ns
0.5 TCY + 20
—
ns
Synchronous,
with prescaler
10
—
ns
Asynchronous
30
—
ns
0.5 TCY + 5
—
ns
10
—
ns
Synchronous, no prescaler
Synchronous,
with prescaler
Asynchronous
47
Min
30
—
ns
Greater of:
20 ns or
(TCY + 40)/N
—
ns
Tt1P
T13CKI
Synchronous
Input Period
Asynchronous
60
—
ns
Ft1
T13CKI Oscillator Input Frequency Range
DC
50
kHz
2 TOSC
7 TOSC
—
Tcke2tmrI Delay from External T13CKI Clock Edge to
Timer Increment
DS41303E_JP - ページ 384
Preliminary
N = prescale
value
(1, 2, 4,..., 256)
N = prescale
value (1, 2, 4, 8)
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 26-10:
キャプチャ / コンペア /PWM のタイミング ( すべての CCP モジュール )
CCPx
(Capture Mode)
50
51
52
CCPx
(Compare or PWM Mode)
54
53
注:
負荷条件については、図 26-4 を参照してください。
表 26-12: キャプチャ / コンペア /PWM の要件 ( すべての CCP モジュール )
Param
Symbol
No.
50
51
TccL
TccH
Characteristic
Min
Max
Units
CCPx Input Low No prescaler
Time
With
prescaler
0.5 TCY + 20
—
ns
10
—
ns
CCPx Input
High Time
0.5 TCY + 20
—
ns
10
—
ns
3 TCY + 40
N
—
ns
No prescaler
With
prescaler
52
TccP
CCPx Input Period
53
TccR
CCPx Output Fall Time
—
25
ns
54
TccF
CCPx Output Fall Time
—
25
ns
 2009 Microchip Technology Inc.
Preliminary
Conditions
N = prescale
value (1, 4 or 16)
DS41303E_JP - ページ 385
PIC18F2XK20/4XK20
図 26-11:
パラレル スレーブ ポートのタイミング (PIC18F4XK20)
RE2/CS
RE0/RD
RE1/WR
65
RD7:RD0
62
64
63
注:
負荷条件については、図 26-4 を参照してください。
表 26-13: パラレル スレーブ ポートの要件 (PIC18F4XK20)
Param.
No.
Symbol
Characteristic
Min
Max
Units
62
TdtV2wrH
Data In Valid before WR  or CS 
(setup time)
20
—
ns
63
TwrH2dtI
WR  or CS  to Data–In Invalid (hold time)
20
—
ns
64
TrdL2dtV
RD  and CS  to Data–Out Valid
—
80
ns
65
TrdH2dtI
RD  or CS  to Data–Out Invalid
10
30
ns
66
TibfINH
Inhibit of the IBF Flag bit being Cleared from
WR  or CS 
—
3 TCY
DS41303E_JP - ページ 386
Preliminary
Conditions
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 26-12:
SPI マスター モードのタイミングの例 (CKE = 0)
SS
70
SCK
(CKP = 0)
71
72
78
79
79
78
SCK
(CKP = 1)
80
bit 6 - - - - - -1
MSb
SDO
LSb
75, 76
SDI
MSb In
bit 6 - - - -1
LSb In
74
73
注:
負荷条件については、図 26-4 を参照してください。
表 26-14: SPI モードの要件の例 ( マスター モード、CKE = 0)
Param
No.
Symbol
Characteristic
70
TssL2scH,
TssL2scL
SS  to SCK  or SCK  Input
71
TscH
SCK Input High Time
(Slave mode)
Continuous
TscL
SCK Input Low Time
(Slave mode)
Single Byte
71A
72
72A
Min
Max Units
TCY
—
ns
1.25 TCY + 30
—
ns
Single Byte
40
—
ns
Continuous
1.25 TCY + 30
—
ns
40
—
ns
100
—
ns
1.5 TCY + 40
—
ns
73
TdiV2scH,
TdiV2scL
Setup Time of SDI Data Input to SCK Edge
73A
Tb2b
Last Clock Edge of Byte 1 to the 1st Clock Edge
of Byte 2
74
TscH2diL,
TscL2diL
Hold Time of SDI Data Input to SCK Edge
100
—
ns
75
TdoR
SDO Data Output Rise Time
—
25
ns
76
TdoF
SDO Data Output Fall Time
—
25
ns
78
TscR
SCK Output Rise Time
(Master mode)
—
25
ns
79
TscF
SCK Output Fall Time (Master mode)
—
25
ns
80
TscH2doV,
TscL2doV
SDO Data Output Valid after SCK Edge
—
50
ns
注 1:
2:
Conditions
(Note 1)
(Note 1)
(Note 2)
パラメータ #73A を使用する必要があります。
パラメータ #71A および #72A を使用する場合のみ。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 387
PIC18F2XK20/4XK20
図 26-13:
SPI マスター モードのタイミングの例 (CKE = 1)
SS
81
SCK
(CKP = 0)
71
72
79
73
SCK
(CKP = 1)
80
78
MSb
SDO
bit 6 - - - - - -1
LSb
bit 6 - - - -1
LSb In
75, 76
SDI
MSb In
74
注:
負荷条件については、図 26-4 を参照してください。
表 26-15: SPI モードの要件の例 ( マスター モード、CKE = 1)
Param.
No.
71
Symbol
TscH
71A
72
Characteristic
SCK Input High Time
(Slave mode)
Min
Max Units
Continuous
1.25 TCY + 30
—
ns
Single Byte
40
—
ns
Continuous
1.25 TCY + 30
—
ns
TscL
SCK Input Low Time
(Slave mode)
Single Byte
40
—
ns
73
TdiV2scH,
TdiV2scL
Setup Time of SDI Data Input to SCK Edge
100
—
ns
73A
Tb2b
Last Clock Edge of Byte 1 to the 1st Clock Edge
of Byte 2
1.5 TCY + 40
—
ns
74
TscH2diL,
TscL2diL
Hold Time of SDI Data Input to SCK Edge
100
—
ns
75
TdoR
SDO Data Output Rise Time
—
25
ns
76
TdoF
SDO Data Output Fall Time
—
25
ns
78
TscR
SCK Output Rise Time
(Master mode)
—
25
ns
79
TscF
SCK Output Fall Time (Master mode)
—
25
ns
80
TscH2doV,
TscL2doV
SDO Data Output Valid after SCK Edge
—
50
ns
81
TdoV2scH,
TdoV2scL
SDO Data Output Setup to SCK Edge
TCY
—
ns
72A
注 1:
2:
Conditions
(Note 1)
(Note 1)
(Note 2)
パラメータ #73A を使用する必要があります。
パラメータ #71A および #72A を使用する場合のみ。
DS41303E_JP - ページ 388
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 26-14:
SPI スレーブ モードのタイミングの例 (CKE = 0)
SS
70
SCK
(CKP = 0)
83
71
72
78
79
79
78
SCK
(CKP = 1)
80
MSb
SDO
bit 6 - - - - - -1
LSb
77
75, 76
MSb In
SDI
73
注:
bit 6 - - - -1
LSb In
74
負荷条件については、図 26-4 を参照してください。
表 26-16: SPI モードの要件の例 ( スレーブ モードのタイミング、CKE = 0)
Param
No.
Symbol
Characteristic
Min
70
TssL2scH, SS  to SCK  or SCK  Input
TssL2scL
71
TscH
SCK Input High Time
(Slave mode)
Continuous
TscL
SCK Input Low Time
(Slave mode)
71A
72
72A
Max Units Conditions
TCY
—
ns
1.25 TCY + 30
—
ns
Single Byte
40
—
ns
Continuous
1.25 TCY + 30
—
ns
Single Byte
40
—
ns
100
—
ns
1.5 TCY + 40
—
ns
TscH2diL, Hold Time of SDI Data Input to SCK Edge
TscL2diL
100
—
ns
75
TdoR
SDO Data Output Rise Time
—
25
ns
76
TdoF
SDO Data Output Fall Time
—
25
ns
73
TdiV2scH, Setup Time of SDI Data Input to SCK Edge
TdiV2scL
73A
Tb2b
74
Last Clock Edge of Byte 1 to the First Clock Edge of Byte 2
77
TssH2doZ SS to SDO Output High-Impedance
10
50
ns
78
TscR
SCK Output Rise Time (Master mode)
—
25
ns
79
TscF
SCK Output Fall Time (Master mode)
—
25
ns
80
TscH2doV, SDO Data Output Valid after SCK Edge
TscL2doV
—
50
ns
83
TscH2ssH, SS  after SCK edge
TscL2ssH
1.5 TCY + 40
—
ns
注 1:
2:
パラメータ #73A を使用する必要があります。
パラメータ #71A および #72A を使用する場合のみ。
 2009 Microchip Technology Inc.
Preliminary
(Note 1)
(Note 1)
(Note 2)
DS41303E_JP - ページ 389
PIC18F2XK20/4XK20
図 26-15:
SPI スレーブ モードのタイミングの例 (CKE = 1)
82
SS
SCK
(CKP = 0)
70
83
71
72
SCK
(CKP = 1)
80
MSb
SDO
bit 6 - - - - - -1
LSb
75, 76
SDI
注:
MSb In
77
bit 6 - - - -1
LSb In
74
負荷条件については、図 26-4 を参照してください。
表 26-17: SPI スレーブ モードの要件の例 (CKE = 1)
Param
No.
Symbol
Characteristic
70
TssL2scH, SS  to SCK  or SCK  Input
TssL2scL
71
TscH
71A
72
Min
TCY
SCK Input High Time
(Slave mode)
—
ns
Continuous
1.25 TCY + 30
—
ns
Single Byte
40
—
ns
Continuous
1.25 TCY + 30
—
ns
TscL
SCK Input Low Time
(Slave mode)
73A
Tb2b
Last Clock Edge of Byte 1 to the First Clock Edge of Byte 2
74
72A
Max Units Conditions
Single Byte
(Note 1)
40
—
ns
(Note 1)
1.5 TCY + 40
—
ns
(Note 2)
TscH2diL, Hold Time of SDI Data Input to SCK Edge
TscL2diL
100
—
ns
75
TdoR
SDO Data Output Rise Time
—
25
ns
76
TdoF
SDO Data Output Fall Time
—
25
ns
77
TssH2doZ SS to SDO Output High-Impedance
10
50
ns
78
TscR
SCK Output Rise Time
(Master mode)
—
25
ns
79
TscF
SCK Output Fall Time (Master mode)
—
25
ns
80
TscH2doV, SDO Data Output Valid after SCK Edge
TscL2doV
—
50
ns
82
TssL2doV SDO Data Output Valid after SS  Edge
—
50
ns
83
TscH2ssH, SS  after SCK Edge
TscL2ssH
1.5 TCY + 40
—
ns
注 1:
2:
パラメータ #73A を使用する必要があります。
パラメータ #71A および #72A を使用する場合のみ。
DS41303E_JP - ページ 390
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
I2C™ バスのスタート / ストップ ビットのタイミング
図 26-16:
SCL
91
93
90
92
SDA
Stop
Condition
Start
Condition
注:
負荷条件については、図 26-4 を参照してください。
表 26-18: I2C™ バスのスタート / ストップ ビットの要件 ( スレーブ モード )
Param.
No.
Symbol
90
TSU:STA
Characteristic
Units
ns
Only relevant for Repeated
Start condition
ns
After this period, the first
clock pulse is generated
100 kHz mode
4700
—
Setup Time
400 kHz mode
600
—
100 kHz mode
4000
—
Hold Time
400 kHz mode
600
—
Stop Condition
100 kHz mode
4700
—
92
TSU:STO
93
THD:STO Stop Condition
Setup Time
Hold Time
図 26-17:
Max
Start Condition
THD:STA Start Condition
91
Min
400 kHz mode
600
—
100 kHz mode
4000
—
400 kHz mode
600
—
Conditions
ns
ns
I2C™ バスのデータのタイミング
103
102
100
101
SCL
90
106
107
91
92
SDA
In
110
109
109
SDA
Out
注:
負荷条件については、図 26-4 を参照してください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 391
PIC18F2XK20/4XK20
表 26-19: I2C™ バスのデータの要件 ( スレーブ モード )
Param.
Symbol
No.
100
THIGH
Characteristic
Clock High Time
Min
Max
Units
100 kHz mode
4.0
—
s
PIC18FXXXX must operate
at a minimum of 1.5 MHz
400 kHz mode
0.6
—
s
PIC18FXXXX must operate
at a minimum of 10 MHz
1.5 TCY
—
100 kHz mode
4.7
—
s
PIC18FXXXX must operate
at a minimum of 1.5 MHz
400 kHz mode
1.3
—
s
PIC18FXXXX must operate
at a minimum of 10 MHz
SSP Module
101
TLOW
Clock Low Time
SSP Module
102
1.5 TCY
—
—
1000
ns
20 + 0.1 CB
300
ns
100 kHz mode
—
300
ns
400 kHz mode
20 + 0.1 CB
300
ns
CB is specified to be from
10 to 400 pF
100 kHz mode
4.7
—
s
400 kHz mode
0.6
—
s
Only relevant for Repeated
Start condition
THD:STA Start Condition Hold 100 kHz mode
Time
400 kHz mode
4.0
—
s
0.6
—
s
0
—
ns
TR
103
TF
90
SDA and SCL Rise 100 kHz mode
Time
400 kHz mode
SDA and SCL Fall
Time
TSU:STA Start Condition
Setup Time
91
106
THD:DAT Data Input Hold
Time
100 kHz mode
400 kHz mode
0
0.9
s
107
TSU:DAT Data Input Setup
Time
100 kHz mode
250
—
ns
400 kHz mode
100
—
ns
TSU:STO Stop Condition
Setup Time
100 kHz mode
4.7
—
s
400 kHz mode
0.6
—
s
Output Valid from
Clock
100 kHz mode
—
3500
ns
400 kHz mode
—
—
ns
Bus Free Time
100 kHz mode
4.7
—
s
400 kHz mode
1.3
—
s
—
400
pF
92
109
TAA
110
TBUF
D102
注 1:
2:
Conditions
CB
Bus Capacitive Loading
CB is specified to be from
10 to 400 pF
After this period, the first
clock pulse is generated
(Note 2)
(Note 1)
Time the bus must be free
before a new transmission can
start
予期しないスタート条件やストップ条件の発生を防ぐため、送信器として使用するデバイスは、SCL
の立ち下がりエッジの未定義領域をカバーする最小限の内部遅延時間 (300ns 以上 ) が必要です。
高速モードの I2C バス デバイスを標準モードの I2C バス システムで使用できますが、この場合は
TSU:DAT  250 ns の要件を満たす必要があります。これは、デバイスが SCL 信号の LOW 期間をスト
レッチしない場合になります。このようなデバイスが SCL 信号の LOW 期間をストレッチしない場
合、SCL ラインを解放する前に、デバイスは次のデータ ビットを SDA ラインに出力する必要があり、
TR max. + TSU:DAT = 1000 + 250 = 1250 ns ( 標準モードの I2C バスの仕様 ) である必要があります。
DS41303E_JP - ページ 392
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 26-18:
マスター SSP の I2C™ バスのスタート / ストップ ビットのタイミング波形
SCL
93
91
90
92
SDA
Stop
Condition
Start
Condition
注:
負荷条件については、図 26-4 を参照してください。
表 26-20: マスター SSP の I2C™ バスのスタート / ストップ ビットの要件
Param.
Symbol
No.
90
Characteristic
TSU:STA Start Condition
Setup Time
Min
Max
Units
100 kHz mode
2(TOSC)(BRG + 1)
—
ns
400 kHz mode
2(TOSC)(BRG + 1)
—
Only relevant for
Repeated Start
condition
ns
After this period, the
first clock pulse is
generated
(1)
91
THD:STA Start Condition
Hold Time
1 MHz mode
2(TOSC)(BRG + 1)
—
100 kHz mode
2(TOSC)(BRG + 1)
—
400 kHz mode
2(TOSC)(BRG + 1)
—
1 MHz mode
2(TOSC)(BRG + 1)
—
100 kHz mode
2(TOSC)(BRG + 1)
—
(1)
92
TSU:STO Stop Condition
Setup Time
93
THD:STO Stop Condition
Hold Time
注 1:
400 kHz mode
2(TOSC)(BRG + 1)
—
1 MHz mode(1)
2(TOSC)(BRG + 1)
—
100 kHz mode
2(TOSC)(BRG + 1)
—
400 kHz mode
2(TOSC)(BRG + 1)
—
1 MHz mode(1)
2(TOSC)(BRG + 1)
—
Conditions
ns
ns
各 I2C ピンの最大容量 = 10 pF
図 26-19:
マスター SSP の I2C™ バスのデータのタイミング
103
102
100
101
SCL
90
106
91
107
92
SDA
In
109
109
110
SDA
Out
注:
負荷条件については、図 26-4 を参照してください。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 393
PIC18F2XK20/4XK20
表 26-21: マスター SSP の I2C™ バスのデータの要件
Param.
Symbol
No.
100
101
102
103
90
91
THIGH
TLOW
TR
TF
Characteristic
Min
Max
Units
Clock High Time 100 kHz mode
2(TOSC)(BRG + 1)
—
ms
400 kHz mode
2(TOSC)(BRG + 1)
—
ms
1 MHz mode(1)
2(TOSC)(BRG + 1)
—
ms
Clock Low Time 100 kHz mode
2(TOSC)(BRG + 1)
—
ms
400 kHz mode
2(TOSC)(BRG + 1)
—
ms
1 MHz mode(1)
2(TOSC)(BRG + 1)
—
ms
100 kHz mode
—
1000
ns
400 kHz mode
20 + 0.1 CB
300
ns
1 MHz mode(1)
—
300
ns
100 kHz mode
—
300
ns
400 kHz mode
20 + 0.1 CB
300
ns
1 MHz mode(1)
—
100
ns
100 kHz mode
2(TOSC)(BRG + 1)
—
ms
400 kHz mode
2(TOSC)(BRG + 1)
—
ms
SDA and SCL
Rise Time
SDA and SCL
Fall Time
TSU:STA Start Condition
Setup Time
THD:STA Start Condition
Hold Time
1 MHz mode(1)
2(TOSC)(BRG + 1)
—
ms
100 kHz mode
2(TOSC)(BRG + 1)
—
ms
400 kHz mode
2(TOSC)(BRG + 1)
—
ms
2(TOSC)(BRG + 1)
—
ms
THD:DAT Data Input
Hold Time
100 kHz mode
0
—
ns
400 kHz mode
0
0.9
ms
TSU:DAT Data Input
Setup Time
100 kHz mode
250
—
ns
400 kHz mode
100
—
ns
100 kHz mode
2(TOSC)(BRG + 1)
—
ms
400 kHz mode
2(TOSC)(BRG + 1)
—
ms
2(TOSC)(BRG + 1)
—
ms
100 kHz mode
—
3500
ns
400 kHz mode
—
1000
ns
—
—
ns
1 MHz mode
106
107
92
TSU:STO Stop Condition
Setup Time
1 MHz mode
109
TAA
Output Valid
from Clock
1 MHz mode
110
D102
注 1:
2:
(1)
TBUF
CB
Bus Free Time
(1)
(1)
100 kHz mode
4.7
—
ms
400 kHz mode
1.3
—
ms
—
400
pF
Bus Capacitive Loading
Conditions
CB is specified to be from
10 to 400 pF
CB is specified to be from
10 to 400 pF
Only relevant for Repeated
Start condition
After this period, the first
clock pulse is generated
(Note 2)
Time the bus must be free
before a new transmission
can start
I2
各 C ピンの最大容量 = 10 pF
高速モードの I2C バス デバイスを標準モードの I2C バス システムで使用できますが、この場合はパラ
メータ 107  250 ns の要件を満たす必要があります。これは、デバイスが SCL 信号の LOW 期間をスト
レッチしない場合になります。このようなデバイスが SCL 信号の LOW 期間をストレッチしない場合、
SCL ラインを解放する前に、デバイスは次のデータ ビットを SDA ラインに出力する必要があり、パラ
メータ 102 + パラメータ 107 = 1000 + 250 = 1250 ns (100 kHz モードの場合 ) である必要があります。
DS41303E_JP - ページ 394
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 26-20:
EUSART の同期送信 ( マスター / スレーブ ) のタイミング
RC6/TX/CK
pin
121
121
RC7/RX/DT
pin
120
注:
122
負荷条件については、図 26-4 を参照してください。
表 26-22: EUSART の同期送信の要件
Param
No.
Min
Max
Units
TckH2dtV SYNC XMIT (MASTER & SLAVE)
Clock High to Data Out Valid
—
40
ns
121
Tckrf
Clock Out Rise Time and Fall Time
(Master mode)
—
20
ns
122
Tdtrf
Data Out Rise Time and Fall Time
—
20
ns
120
Symbol
図 26-21:
Characteristic
Conditions
EUSART の同期受信 ( マスター / スレーブ ) のタイミング
RC6/TX/CK
pin
125
RC7/RX/DT
pin
126
注:
負荷条件については、図 26-4 を参照してください。
表 26-23: EUSART の同期受信の要件
Param.
No.
125
126
Symbol
TdtV2ckl
TckL2dtl
Characteristic
Min
Max
Units
SYNC RCV (MASTER & SLAVE)
Data Setup before CK  (DT setup time)
10
—
ns
Data Hold after CK  (DT hold time)
15
—
ns
 2009 Microchip Technology Inc.
Preliminary
Conditions
DS41303E_JP - ページ 395
PIC18F2XK20/4XK20
表 26-24: A/D コンバータの特性 : PIC18F2XK20/4XK20
Param
Symbol
No.
Characteristic
Min
Typ
Max
Units
Conditions
VREF  3.0V
A01
NR
Resolution
—
—
10
bit
A03
EIL
Integral Linearity Error
—
—
<±1
LSb VREF  3.0V
A04
EDL
Differential Linearity Error
—
—
<±1
LSb VREF  3.0V
A06
EOFF
Offset Error
—
—
<±3
LSb VREF  3.0V
A07
EGN
Gain Error
—
—
<±3
LSb VREF  3.0V
A10
—
Monotonicity
A20
VREF
Reference Voltage Range
(VREFH – VREFL)
A21
VREFH
A22
VREFL
—
VSS  VAIN  VREF
—
—
V
V
VDD  3.0V
VDD  3.0V
Guaranteed(1)
1.8
3
—
—
Reference Voltage High
VDD/2
—
VDD + 0.6
V
Reference Voltage Low
VSS – 0.3V
—
VDD – 3.0V
V
A25
VAIN
Analog Input Voltage
VREFL
—
VREFH
V
A30
ZAIN
Recommended Impedance of
Analog Voltage Source
—
—
2.5
k
A50
IREF
VREF Input Current(2)
—
—
—
—
5
150
A
A
注 1:
2:
A/D 変換結果は、入力電圧が増大しても減少することはありません。また、コードの欠落もありません。
VREFH 電流は、VREFH のソースとして選択した RA3/AN3/VREF+ ピンまたは VDD から流れます。
VREFL 電流は、VREFL のソースとして選択した RA2/AN2/VREF-/CVREF ピンまたは VSS から流れます。
DS41303E_JP - ページ 396
Preliminary
During VAIN acquisition.
During A/D conversion
cycle.
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
図 26-22:
A/D 変換のタイミング
BSF ADCON0, GO
(Note 2)
131
Q4
A/D CLK
130
132
9
A/D DATA
8
7
.. .
...
2
1
0
NEW_DATA
OLD_DATA
ADRES
TCY
ADIF
GO
DONE
SAMPLING STOPPED
SAMPLE
注
1:
2:
A/D クロック ソースに RC を選択した場合、A/D クロックの開始前に TCY の時間が追加されます。
これにより、SLEEP 命令を実行できます。
これは最小の RC 遅延 ( 代表値は 100 ns) で、アナログ入力から保持コンデンサを切断します。
表 26-25: A/D 変換の要件
Param
Symbol
No.
130
TAD
Characteristic
A/D Clock Period
Min
Max
Units
0.7
25.0(1)
s
TOSC based, VREF  3.0V,
-40C to +85C
0.7
4.0(1)
s
TOSC based, VREF  3.0V,
+125C
TBD
TBD
s
A/D RC mode
11
12
TAD
1.4
TBD
—
—
s
s
131
TCNV
Conversion Time
(not including acquisition time) (Note 2)
132
TACQ
Acquisition Time (Note 3)
135
TSWC
Switching Time from Convert  Sample
—
(Note 4)
136
TDIS
Discharge Time
0.2
—
Conditions
-40C to +85C
0C  to  +85C
s
記号の説明 : TBD = 未定
注 1: A/D クロックの周期は、デバイスの周波数と TAD クロック分周器によって異なります。
2: ADRES レジスタは、次の TCY サイクルで読み出しができます。
3: 変換後に電圧がフル スケールで変化する場合 (VDD から VSS、または VSS から VDD) に、保持コンデ
ンサに「新規」入力電圧が印加されるまでの時間。入力チャネルのソース インピーダンス (RS) は 50
です。
4: デバイスのクロックの次のサイクル。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 397
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 398
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
27.0
DC 特性と AC 特性のグラフ
および表
このリビジョンでは、グラフと表はありません。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 399
PIC18F2XK20/4XK20
ノート :
DS41303E_JP - ページ 400
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
28.0
パッケージ情報
28.1
パッケージのマーキング情報
28-Lead PDIP
Example
PIC18F25K20-E/SP
XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXX
YYWWNNN
28-Lead SOIC (7.50 mm)
e3
0810017
Example
PIC18F25K20-E/SO e3
0810017
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
YYWWNNN
40-Lead PDIP
Example
XXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
YYWWNNN
記号の説明 : XX...X
Y
YY
WW
NNN
e3
*
注:
PIC18F45K20-E/P e3
0810017
カスタマ固有情報
製造年コード ( 西暦の最終桁 )
製造年コード ( 西暦の下 2 桁 )
製造週コード ( 例 :1 月の第 1 週を「01」と表示 )
英数字によるトレーサビリティ コード
鉛フリーのつや消し錫 (Sn) メッキ製品を示す JEDEC 準拠マーク
このパッケージは鉛フリーです。鉛フリーを示すJEDEC準拠マーク( e3 )は
このパッケージの外側に表示されています。
マイクロチップ社の製品番号全体が 1 行に収まらない場合は、次の行に続きます。
この場合にはカスタマ固有情報用の文字数が制限されます。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 401
PIC18F2XK20/4XK20
パッケージのマーキング情報 ( 続き )
28-Lead SSOP
Example
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
YYWWNNN
PIC18F25K20-E/SS
e3
0810017
28-Lead QFN
Example
XXXXXXXX
XXXXXXXX
YYWWNNN
18F24K20
-E/ML e3
0810017
44-Lead QFN
Example
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
YYWWNNN
PIC18F45K20
-E/ML e3
0810017
Example
44-Lead TQFP
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
YYWWNNN
DS41303E_JP - ページ 402
PIC18F44K20
-E/PT e3
0810017
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
28.2
パッケージの詳細
本章ではパッケージの技術的詳細を示します。
28 ピン スキニー プラスチック デュアル インライン (SP) – 300 mil ボディ [SPDIP]
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
N
NOTE 1
E1
1
2 3
D
E
A2
A
L
c
b1
A1
b
e
eB
Units
Dimension Limits
Number of Pins
INCHES
MIN
N
NOM
MAX
28
Pitch
e
Top to Seating Plane
A
–
–
.200
Molded Package Thickness
A2
.120
.135
.150
Base to Seating Plane
A1
.015
–
–
Shoulder to Shoulder Width
E
.290
.310
.335
Molded Package Width
E1
.240
.285
.295
Overall Length
D
1.345
1.365
1.400
Tip to Seating Plane
L
.110
.130
.150
Lead Thickness
c
.008
.010
.015
b1
.040
.050
.070
b
.014
.018
.022
eB
–
–
.430
Upper Lead Width
Lower Lead Width
Overall Row Spacing §
.100 BSC
注:
1.
2.
3.
4.
ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。
§ 重要な特性値です。
寸法 D と E1 には、成型時のバリは含みません。成型時のバリは各側で 0.010" 以下とします。
寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
Microchip Technology Drawing C04-070B
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 403
PIC18F2XK20/4XK20
28 ピン プラスチック スモール アウトライン (SO) – 厚型、7.50 mm ボディ [SOIC]
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
D
N
E
E1
NOTE 1
1 2 3
b
e
h
α
h
c
φ
A2
A
L
A1
Units
Dimension Limits
Number of Pins
β
L1
MILLIMETERS
MIN
N
NOM
MAX
28
Pitch
e
Overall Height
A
–
1.27 BSC
–
Molded Package Thickness
A2
2.05
–
–
Standoff §
A1
0.10
–
0.30
Overall Width
E
Molded Package Width
E1
7.50 BSC
Overall Length
D
17.90 BSC
2.65
10.30 BSC
Chamfer (optional)
h
0.25
–
0.75
Foot Length
L
0.40
–
1.27
Footprint
L1
1.40 REF
Foot Angle Top

0°
–
8°
Lead Thickness
c
0.18
–
0.33
Lead Width
b
0.31
–
0.51
Mold Draft Angle Top

5°
–
15°
Mold Draft Angle Bottom

5°
–
15°
注:
1.
2.
3.
4.
ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。
§ 重要な特性値です。
寸法 D と E1 には、成型時のバリは含みません。モールドフラッシュまたは突出部は各側で 0.15 mm 以下とします。
寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値
Microchip Technology Drawing C04-052B
DS41303E_JP - ページ 404
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
40 ピン プラスチック デュアル インライン (P) – 600 mil ボディ [PDIP]
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
N
NOTE 1
E1
1 2 3
D
E
A2
A
L
c
b1
A1
b
e
eB
Units
Dimension Limits
Number of Pins
INCHES
MIN
N
NOM
MAX
40
Pitch
e
Top to Seating Plane
A
–
.100 BSC
–
.250
Molded Package Thickness
A2
.125
–
.195
Base to Seating Plane
A1
.015
–
–
Shoulder to Shoulder Width
E
.590
–
.625
Molded Package Width
E1
.485
–
.580
Overall Length
D
1.980
–
2.095
Tip to Seating Plane
L
.115
–
.200
Lead Thickness
c
.008
–
.015
b1
.030
–
.070
b
.014
–
.023
eB
–
–
.700
Upper Lead Width
Lower Lead Width
Overall Row Spacing §
注:
1.
2.
3.
4.
ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。
§ 重要な特性値です。
寸法 D と E1 には、成型時のバリは含みません。成型時のバリは各側で 0.010" 以下とします。
寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
Microchip Technology Drawing C04-016B
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 405
PIC18F2XK20/4XK20
28 ピン プラスチック シュリンク スモール アウトライン (SS) – 5.30 mm ボディ [SSOP]
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
D
N
E
E1
1 2
NOTE 1
b
e
c
A2
A
φ
A1
L
L1
Units
Dimension Limits
Number of Pins
MILLIMETERS
MIN
N
NOM
MAX
28
Pitch
e
Overall Height
A
–
0.65 BSC
–
2.00
Molded Package Thickness
A2
1.65
1.75
1.85
Standoff
A1
0.05
–
–
Overall Width
E
7.40
7.80
8.20
Molded Package Width
E1
5.00
5.30
5.60
Overall Length
D
9.90
10.20
10.50
Foot Length
L
0.55
0.75
0.95
Footprint
L1
1.25 REF
Lead Thickness
c
0.09
–
Foot Angle

0°
4°
0.25
8°
Lead Width
b
0.22
–
0.38
注:
1. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。
2. 寸法 D と E1 には、成型時のバリは含みません。成型時のバリは各側で 0.20 mm 以下とします。
3. 寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値
Microchip Technology Drawing C04-073B
DS41303E_JP - ページ 406
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
28 ピン プラスチック クワッド フラット、鉛フリー パッケージ (ML) – 6x6 mm ボディ [QFN]
接点長 0.55 mm
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
D
D2
EXPOSED
PAD
e
E
b
E2
2
2
1
1
K
N
N
NOTE 1
L
BOTTOM VIEW
TOP VIEW
A
A3
A1
Units
Dimension Limits
Number of Pins
MILLIMETERS
MIN
N
NOM
MAX
28
Pitch
e
Overall Height
A
0.80
0.90
1.00
Standoff
A1
0.00
0.02
0.05
Contact Thickness
A3
0.20 REF
Overall Width
E
6.00 BSC
Exposed Pad Width
E2
Overall Length
D
Exposed Pad Length
D2
3.65
3.70
4.20
b
0.23
0.30
0.35
Contact Length
L
0.50
0.55
0.70
Contact-to-Exposed Pad
K
0.20
–
–
Contact Width
0.65 BSC
3.65
3.70
4.20
6.00 BSC
注:
1. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。
2. パッケージは切削成型されています。
3. 寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値
Microchip Technology Drawing C04-105B
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 407
PIC18F2XK20/4XK20
28 ピン プラスチック クワッド フラット、鉛フリー パッケージ (ML) – 6x6 mm ボディ [QFN]
接点長 0.55 mm
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
注:
1. 寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
Microchip Technology Drawing C04-2105A
DS41303E_JP - ページ 408
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
44 ピン プラスチック クワッド フラット、鉛フリー パッケージ (ML) – 8x8 mm ボディ [QFN]
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
D
D2
EXPOSED
PAD
e
E
E2
b
2
2
1
1
N
N
NOTE 1
TOP VIEW
K
L
BOTTOM VIEW
A
A3
A1
Units
Dimension Limits
Number of Pins
MILLIMETERS
MIN
N
NOM
MAX
44
Pitch
e
Overall Height
A
0.80
0.90
1.00
Standoff
A1
0.00
0.02
0.05
Contact Thickness
A3
0.20 REF
Overall Width
E
8.00 BSC
Exposed Pad Width
E2
Overall Length
D
Exposed Pad Length
D2
6.30
6.45
6.80
b
0.25
0.30
0.38
Contact Length
L
0.30
0.40
0.50
Contact-to-Exposed Pad
K
0.20
–
–
Contact Width
0.65 BSC
6.30
6.45
6.80
8.00 BSC
注:
1. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。
2. パッケージは切削成型されています。
3. 寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値
Microchip Technology Drawing C04-103B
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 409
PIC18F2XK20/4XK20
44 ピン プラスチック クワッド フラット、鉛フリー パッケージ (ML) – 8x8 mm ボディ [QFN]
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
注:
1. 寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
Microchip Technology Drawing C04-2103A
DS41303E_JP - ページ 410
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
44 ピン プラスチック薄型クワッド フラットパック (PT) – 10x10x1 mm ボディ、
2.00 mm [TQFP]
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
D
D1
E
e
E1
N
b
NOTE 1
1 2 3
NOTE 2
α
A
c
φ
β
L
A1
Units
Dimension Limits
Number of Leads
A2
L1
MILLIMETERS
MIN
N
NOM
MAX
44
Lead Pitch
e
Overall Height
A
–
0.80 BSC
–
1.20
Molded Package Thickness
A2
0.95
1.00
1.05
Standoff
A1
0.05
–
0.15
Foot Length
L
0.45
0.60
0.75
Footprint
L1
Foot Angle

Overall Width
E
1.00 REF
0°
3.5°
7°
12.00 BSC
Overall Length
D
12.00 BSC
Molded Package Width
E1
10.00 BSC
Molded Package Length
D1
10.00 BSC
Lead Thickness
c
0.09
–
0.20
Lead Width
b
0.30
0.37
0.45
Mold Draft Angle Top

11°
12°
13°
Mold Draft Angle Bottom

11°
12°
13°
注:
1.
2.
3.
4.
ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。
コーナー部の面取りはオプションで、サイズは異なります。
寸法 D1 と E1 には、成型時のバリは含みません。成型時のバリは各側で 0.25 mm 以下とします。
寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値
Microchip Technology Drawing C04-076B
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 411
PIC18F2XK20/4XK20
44 ピン プラスチック薄型クワッド フラットパック (PT) – 10x10x1 mm ボディ、
2.00 mm [TQFP]
注:
最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」
( マイクロチップ社パッケージ仕様 ) を参照してください。
http://www.microchip.com/packaging
注:
1. 寸法および公差は ASME Y14.5M に準拠しています。
BSC: 基準寸法。公差を含まない理論的に正確な値
Microchip Technology Drawing C04-2076A
DS41303E_JP - ページ 412
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
付録 A:
リビジョン E (2009 年 4 月 )
改版履歴
リビジョン A (2006 年 7 月 )
PIC18F2XK20/4XK20 のオリジナルのデータシート
データシートの題名を訂正。電源管理モード、周辺
モジュールの特長、およびアナログ機能を訂正。
26.2 の DC 特性の表を訂正。
リビジョン B (2007 年 3 月 )
製品番号 PIC18F26K20 および PIC18F46K20 を追
加。開発サポートの節を訂正。パッケージ図面を
入れ換え。
リビジョン C (2007 年 10 月 )
表 1 の DIL のピン 34 および 35、表 2 のピン 22 お
よび 24、表 1-2 のピン RB1 および RB3、表 1-3 の
ピン RB1 および RB3 を訂正。節 4.3、4.4、4.4.1、
4.4.2、4.4.4 を訂正。表 4-3 の注 2 を訂正。表 6-1 を
訂正。節 7.8 を訂正。節 9.2 を訂正。例 10-1 および
10-2 を訂正。表 10-3 のピン RB1 および RB3 を訂
正。節 12.2 ~ 12.5 を訂正。レジスタ 16-1 のビット
3-0 を訂正。節 16.1、16.2、16.4.4 を訂正。レジスタ
16-2 のビット 6 ~ 4 を訂正。表 16-2 の注 2 を訂正。
レジスタ 17-1 のビット 6 を訂正。レジスタ 17-3 を
訂正。表 17-4 を訂正。レジスタ 19-1 を訂正、注 2
を加筆。レジスタ 20-3 のビット 5 および 4 を訂正。
レジスタ 23-4 のビット 1 を訂正。レジスタ 23-12 の
ビット 7 ~ 5 を訂正。節 23.3 を訂正。節 24.1.1 の
命令セットの記述を訂正。節 26.0 の MCLR の電圧
を訂正。DC 特性 26.2、26.3、26.4、26.5、26.6、26.7、
26.8、および 26.10 を訂正。表 26-1、26-6、26-7、269、26-23 を訂正。
リビジョン D (2008 年 8 月 )
周辺モジュールの特長 (USART モジュール ) を更
新。節 2.2.6 ( オシレータの遷移 ) を削除。節 2.5.3、
2.9 を訂正。節 2.9.3 ( クロックのスイッチ タイミン
グ ) を加筆。節 2.10.4 ( クロックのスイッチング タ
イミング ) を削除。全体で BAUDCTL をBAUDCON
に置換。表 5-2 (PLUSW0、PLUSW1、PLUSW2) を
訂正。表 7-1 に注 1 (EEADRH) を加筆。節 6.4.4 お
よびレジスタ 16-2 (FLT0 ピン ) を訂正。レジスタ
17-2 および 17-5 (SSPEN) を訂正。レジスタ 17-6
(SEN) を訂正。図 18-2 の後に新規段落を加筆。節
18.1.1 の注を訂正。節 18.1.2 の注を削除。節 18.1.2.9
および 18.1.2.10 に新規の注 2 を加筆。節 18.3.1 の
注 1 を訂正。節 18.3.2 を加筆。節 18.3.5 を訂正。節
18.4.1.5、18.4.1.10、18.4.2.2、18.4.2.4 に新規の注 2
を加筆。レジスタ 21-1 (CVR) を訂正。レジスタ 236、23.8、23-10、表 23-3 の注 1 を訂正。図 26-1 を
新規追加。26.2、26.6、26.7 ( 注 3)、26.8、26.9、26.10
を訂正。表 26-1、26-2、26-3、26-6、26-7、26-8、2625 を訂正。パッケージの図面を更新。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 413
PIC18F2XK20/4XK20
付録 B:
デバイス間の違い
このデータシートに記載されているデバイス間の
違いを表 B-1 に示します。
表 B-1:
デバイス間の違い
Features
PIC18F23K20 PIC18F24K20 PIC18F25K20 PIC18F26K20 PIC18F43K20 PIC18F44K20 PIC18F45K20 PIC18F46K20
Program Memory (Bytes)
8192
16384
32768
65536
8192
16384
32768
65536
Program Memory
(Instructions)
4096
8192
16384
32768
4096
8192
16384
32768
Interrupt Sources
19
19
19
19
20
20
20
20
Ports A, B, C,
(E)
Ports A, B, C,
(E)
Ports A, B, C,
(E)
Ports A, B, C,
(E)
Ports A, B, C,
D, E
Ports A, B, C,
D, E
Ports A, B, C,
D, E
Ports A, B, C,
D, E
Capture/Compare/PWM
Modules
1
1
1
1
1
1
1
1
Enhanced
Capture/Compare/PWM
Modules
1
1
1
1
1
1
1
1
Parallel Communications
(PSP)
No
No
No
No
Yes
Yes
Yes
Yes
10-bit Analog-to-Digital
Module
11 input
channels
11 input
channels
11 input
channels
11 input
channels
14 input
channels
14 input
channels
14 input
channels
14 input
channels
28-pin PDIP
28-pin SOIC
28-pin SSOP
28-pin QFN
28-pin PDIP
28-pin SOIC
28-pin SSOP
28-pin QFN
28-pin PDIP
28-pin SOIC
28-pin SSOP
28-pin QFN
28-pin PDIP
28-pin SOIC
28-pin SSOP
28-pin QFN
40-pin PDIP
44-pin TQFP
44-pin QFN
40-pin PDIP
44-pin TQFP
44-pin QFN
40-pin PDIP
44-pin TQFP
44-pin QFN
40-pin PDIP
44-pin TQFP
44-pin QFN
I/O Ports
Packages
DS41303E_JP - ページ 414
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
索引
数字
2 段階速度の起動 .............................................................. 295
2 段速クロック スタートアップ モード .......................... 36
2 ワード命令
例 ................................................................................... 68
A
A/D
アクイジション時間の選択と設定 ......................... 262
アナログ ポート ピン、設定 ................................... 273
関連レジスタ ............................................................. 273
コンバータ特性 ......................................................... 396
特殊イベント トリガ (ECCP) .................................. 172
変換 ............................................................................. 264
放電 ............................................................................. 265
A/D コンバータ (ADC)。ADC を参照
AC ( タイミング ) 特性 ..................................................... 378
温度と電圧の仕様 ..................................................... 379
タイミング条件 ......................................................... 379
デバイス タイミング仕様に対する負荷条件 ........ 379
パラメータの記号 ..................................................... 378
ACKSTAT ........................................................................... 223
ACKSTAT ステータス フラグ ......................................... 223
AC 特性
内蔵 RC の精度 .......................................................... 381
ADC ..................................................................................... 261
A/D 変換の開始 ......................................................... 263
アクイジション時間の計算 ..................................... 271
アクイジションの要件 ............................................. 271
結果のフォーマット ................................................. 263
スリープ モードの動作 ............................................ 265
設定 ............................................................................. 262
ソース インピーダンス ............................................ 271
チャネル選択 ............................................................. 262
電源管理
............................................................................ 265
動作 ............................................................................. 264
特殊イベント トリガ ................................................ 265
内部サンプリング スイッチ (RSS) の
インピーダンス ................................................ 271
ブロック図 ................................................................. 261
変換クロック ............................................................. 262
変換の手順 ................................................................. 266
ポート設定 ................................................................. 262
リファレンス電圧 (VREF) ........................................ 262
割り込み ..................................................................... 263
ADCON0 レジスタ ............................................................ 267
ADCON1 レジスタ ............................................................ 268
ADCON2 レジスタ ............................................................ 269
ADDFSR .............................................................................. 354
ADDLW .............................................................................. 317
ADDULNK .......................................................................... 354
ADDWF ............................................................................... 317
ADDWFC ............................................................................ 318
ADRESH レジスタ (ADFM = 0) ....................................... 270
ADRESH レジスタ (ADFM = 1) ....................................... 270
ADRESL レジスタ (ADFM = 0) ....................................... 270
ADRESL レジスタ (ADFM = 1) ....................................... 270
ANDLW .............................................................................. 318
ANDWF ............................................................................... 319
 2009 Microchip Technology Inc.
ANSEL ( ポート アナログ制御 ) ......................................134
ANSELH レジスタ .............................................................135
ANSEL レジスタ ................................................................134
B
BAUDCON レジスタ .........................................................244
BC ........................................................................................319
BCF ......................................................................................320
BF .........................................................................................223
BF ステータス フラグ .......................................................223
BN ........................................................................................320
BNC ......................................................................................321
BNN .....................................................................................321
BNOV ..................................................................................322
BNZ ......................................................................................322
BOR。ブラウンアウト リセットを参照
BOV .....................................................................................325
BRA ......................................................................................323
BRG。ボーレート ジェネレータを参照
BSF .......................................................................................323
BTFSC ..................................................................................324
BTFSS ..................................................................................324
BTG ......................................................................................325
BZ .........................................................................................326
C
CALL ...................................................................................326
CALLW ................................................................................355
CCP1CON レジスタ ...........................................................171
CCP2CON レジスタ ...........................................................141
CLRF ....................................................................................327
CLRWDT .............................................................................327
CM1CON0 レジスタ ..........................................................280
CM2CON0 レジスタ ..........................................................281
CM2CON1 レジスタ ..........................................................283
COMF ..................................................................................328
CONFIG1H レジスタ .........................................................297
CONFIG2H レジスタ .........................................................298
CONFIG2L レジスタ .........................................................298
CONFIG3H レジスタ .........................................................299
CONFIG4L レジスタ .........................................................299
CONFIG5H レジスタ .........................................................300
CONFIG5L レジスタ .........................................................300
CONFIG6H レジスタ .........................................................301
CONFIG6L レジスタ .........................................................301
CONFIG7H レジスタ .........................................................302
CONFIG7L レジスタ .........................................................302
CPFSEQ ...............................................................................328
CPFSGT ...............................................................................329
CPFSLT ................................................................................329
CPU の特殊機能 .................................................................295
CVREF 電圧リファレンスの仕様 .....................................376
C コンパイラ
MPLAB C18 ................................................................362
MPLAB C30 ................................................................362
D
DAW ....................................................................................330
DCFSNZ ..............................................................................331
Preliminary
DS41303E_JP - ページ 415
PIC18F2XK20/4XK20
非同期モード ............................................................. 235
12 ビットのブレーク文字の送信および受信 252
9 ビット アドレス検出モードの設定 ............ 240
関連レジスタ、受信 ........................................ 241
関連レジスタ、送信 ........................................ 237
クロックの精度 ................................................ 242
受信器 ................................................................ 238
送信器 ................................................................ 235
ブレークでの自動ウェイクアップ ................ 250
ボーレート ジェネレータ (BRG) ................... 245
ボーレート ジェネレータ (BRG)
関連レジスタ .................................................... 245
計算式 ................................................................ 245
高ボーレート選択 (BRGH ビット ) ................ 245
自動ボーレート検出 ........................................ 249
ボーレート エラー、計算 ............................... 245
ボーレート、非同期モード ............................ 246
割り込み
非同期受信 ........................................................ 239
非同期送信 ........................................................ 235
DC 特性
RC アイドル時の消費電流 .......................................369
RC 動作時の消費電流 ...............................................368
周辺モジュールの消費電力 .....................................372
セカンダリ オシレータの消費電流 ........................371
電源電圧 .....................................................................367
入力 / 出力 ..................................................................373
パワーダウン電流 .....................................................367
プライマリ アイドル時の消費電流 ........................370
プライマリ動作時の消費電流 .................................370
DC 特性および AC 特性
グラフおよび表 .........................................................399
DECF ....................................................................................330
DECFSZ ...............................................................................331
DEVID1 レジスタ ..............................................................303
DEVID2 レジスタ ..............................................................303
E
ECCPAS レジスタ ..............................................................181
EECON1 レジスタ ..........................................................89, 98
Enhanced Capture/Compare/PWM (ECCP)
拡張 PWM モード ......................................................173
貫通電流 .............................................................183
起動に関する注意点 .........................................180
自動再スタート .................................................182
自動シャットダウン .........................................181
出力の関係 ( 正論理および負論理 ) ...............174
出力の関係図 .....................................................175
ハーフブリッジ アプリケーション ................176
ハーフブリッジ アプリケーションの例 ........183
ハーフブリッジ モード ....................................176
フルブリッジ アプリケーション ....................177
フルブリッジ モード ........................................177
フルブリッジ出力モードにおける
方向の変更 ................................................179
プログラマブルなデッドタイム .....................183
関連レジスタ .............................................................189
キャプチャ モードとコンペア モード ...................172
キャプチャ モード。
キャプチャ (ECCP モジュール ) を参照
出力と設定 .................................................................172
タイマ リソース ........................................................172
標準 PWM モード ......................................................172
EUSART ..............................................................................233
クロックの極性
同期モード .........................................................253
データの極性
同期モード .........................................................253
非同期受信 .........................................................238
非同期送信 .........................................................235
同期スレーブ モード
関連レジスタ、受信 .........................................259
受信 .....................................................................259
送信 .....................................................................258
同期マスター モード ........................................253, 258
関連レジスタ、受信 .........................................257
関連レジスタ、送信 .................................255, 258
受信 .....................................................................256
送信 .....................................................................253
DS41303E_JP - ページ 416
G
GOTO .................................................................................. 332
H
HLVDCON レジスタ ......................................................... 289
HLVD。高 / 低電圧検知を参照。...................................... 289
I
I/O ポート ........................................................................... 119
I2 C
関連レジスタ ............................................................. 232
I2C モード (MSSP)
I2C のクロック速度と BRG ..................................... 219
一括呼び出しアドレスのサポート ......................... 216
クロック ストレッチ ................................................ 212
10 ビット スレーブ受信モード (SEN = 1) ..... 212
10 ビット スレーブ送信モード ...................... 212
7 ビット スレーブ受信モード (SEN = 1) ....... 212
7 ビット スレーブ送信モード ........................ 212
クロック調停 ............................................................. 220
クロック同期と CKP ビット (SEN = 1) .................. 213
肯定応答シーケンスのタイミング ......................... 226
シリアル クロック (RC3/SCK/SCL) ....................... 206
ストップ条件のタイミング ..................................... 226
スリープ動作 ............................................................. 227
スレーブ モード ........................................................ 205
アドレス指定 .................................................... 205
受信 .................................................................... 206
送信 .................................................................... 206
動作 ............................................................................. 205
バス衝突
ストップ条件時 ................................................ 231
リピート スタート条件時 ............................... 230
ボーレート ジェネレータ ........................................ 219
マスター モード ........................................................ 217
受信 .................................................................... 223
スタート条件のタイミング ............................ 221
送信 .................................................................... 223
動作 .................................................................... 218
リピート スタート条件のタイミング ........... 222
マルチマスター モード ............................................ 227
マルチマスター通信、バスの衝突と調停 ............. 227
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
読み出し / 書き込み情報ビット (R/W ビット ) .... 205,
206
リセットの影響 ......................................................... 227
レジスタ ..................................................................... 200
ID ロケーション ........................................................ 295, 309
INCF .................................................................................... 332
INCFSZ ................................................................................ 333
INFSNZ ............................................................................... 333
INTCON2 レジスタ ........................................................... 108
INTCON3 レジスタ ........................................................... 109
INTCON レジスタ ..................................................... 107–109
Inter-Integrated Circuit。I2C を参照
IORLW ................................................................................ 334
IORWF ................................................................................ 334
IPR1 レジスタ .................................................................... 114
IPR2 レジスタ .................................................................... 115
IPR レジスタ ...................................................................... 114
L
LFSR .................................................................................... 335
M
MOVF .................................................................................. 335
MOVFF ................................................................................ 336
MOVLB ............................................................................... 336
MOVLW .............................................................................. 337
MOVSF ................................................................................ 355
MOVSS ................................................................................ 356
MOVWF .............................................................................. 337
MPLAB ASM30 アセンブラ、リンカ、
ライブラリアン ......................................................... 362
MPLAB ICD 2 インサーキット デバッガ ....................... 363
MPLAB ICE 2000 高性能ユニバーサル インサーキット
エミュレータ ............................................................. 363
MPLAB PM3 デバイス プログラマ ................................. 363
MPLAB REAL ICE インサーキット エミュレータ
システム ..................................................................... 363
MPLAB 統合開発環境ソフトウェア ............................... 361
MPLINK オブジェクト リンカ /MPLIB オブジェクト
ライブラリアン ......................................................... 362
MSSP
ACK パルス ....................................................... 205, 206
I2C モード。I2C モードを参照
SPI モード。SPI モードを参照
SPI マスター / スレーブの接続 ............................... 195
SSPBUF レジスタ ..................................................... 196
SSPSR レジスタ ........................................................ 196
制御レジスタ ( 全般 ) ............................................... 191
モジュールの概要 ..................................................... 191
MULLW .............................................................................. 338
MULWF .............................................................................. 338
N
NEGF ................................................................................... 339
NOP ..................................................................................... 339
O
OSCCON レジスタ .............................................................. 27
OSCTUNE レジスタ ............................................................ 31
P
PICSTART Plus 開発用プログラマ ..................................364
PIC の標準命令の効果 .......................................................358
PIE1 レジスタ .....................................................................112
PIE2 レジスタ .....................................................................113
PIE レジスタ .......................................................................112
Pin Functions
MCLR/VPP/RE3 ............................................................14
PIR1 レジスタ .....................................................................110
PIR2 レジスタ .....................................................................111
PIR レジスタ .......................................................................110
PLL 周波数逓倍器 ................................................................33
HSPLL オシレータ モード .........................................33
POP ......................................................................................340
PORTA
LATA レジスタ ..........................................................119
PORTA レジスタ .......................................................119
TRISA レジスタ .........................................................119
関連レジスタ .............................................................121
PORTB
LATB レジスタ ..........................................................122
PORTB レジスタ .......................................................122
TRISB レジスタ .........................................................122
関連レジスタ .............................................................124
PORTC
LATC レジスタ ..........................................................125
PORTC レジスタ .......................................................125
RC3/SCK/SCL ピン ....................................................206
TRISC レジスタ .........................................................125
関連レジスタ .............................................................127
PORTD
LATD レジスタ ..........................................................128
PORTD レジスタ .......................................................128
TRISD レジスタ .........................................................128
関連レジスタ .............................................................130
パラレル スレーブ ポート (PSP) 機能 ....................128
PORTE
LATE レジスタ ..........................................................131
PORTE レジスタ ........................................................131
PSP モード選択 (PSPMODE ビット ) ......................128
TRISE レジスタ .........................................................131
関連レジスタ .............................................................133
POR。パワーオン リセットを参照
PRI_IDLE モード .................................................................45
PRI_RUN モード ..................................................................42
PSP。パラレル スレーブ ポート参照
PSTRCON レジスタ ...........................................................185
PUSH ....................................................................................340
PUSHL .................................................................................356
PUSH および POP 命令 .......................................................65
PWM (CCP モジュール )
関連レジスタ .............................................................151
PWM (ECCP モジュール )
切り替えの同期 .........................................................187
電源管理モードでの動作 .........................................188
パルス切り替え .........................................................185
フェイルセーフ クロック モニタとの動作 ...........188
リセットの影響 .........................................................188
PWM1CON レジスタ .........................................................184
PWM モード。拡張キャプチャ / コンペア /
PWM を参照 ...............................................................173
P1A/P1B/P1C/P1D。拡張キャプチャ / コンペア /
PWM (ECCP) を参照 ................................................. 173
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 417
PIC18F2XK20/4XK20
R
SWAPF ................................................................................ 348
RAM。データ メモリ参照
RC_IDLE モード ..................................................................46
RCALL .................................................................................341
RCON レジスタ ............................................................50, 116
初期化時のビット状態 ...............................................56
RCREG .................................................................................240
RCSTA レジスタ ................................................................243
RESET ..................................................................................341
RETFIE ................................................................................342
RETLW ................................................................................342
RETURN ..............................................................................343
RLCF ....................................................................................343
RLNCF .................................................................................344
RRCF ....................................................................................344
RRNCF .................................................................................345
T
S
SCK ......................................................................................191
SDI .......................................................................................191
SDO ......................................................................................191
SEC_IDLE モード ................................................................45
SEC_RUN モード .................................................................42
SETF .....................................................................................345
SLEEP ..................................................................................346
SLRCON レジスタ .............................................................136
SPBRG .................................................................................245
SPBRGH ..............................................................................245
SPI モード (MSSP)
SPI クロック ...............................................................196
SPI の I/O 許可 ...........................................................195
関連レジスタ .............................................................199
シリアル クロック ....................................................191
シリアル データ出力 ................................................191
シリアル データ入力 ................................................191
スレーブ モード ........................................................197
スレーブ選択 .............................................................191
スレーブ選択同期 .....................................................197
代表的な接続 .............................................................195
電源管理モードでの動作 .........................................199
動作 .............................................................................194
バス モードの互換性 ................................................199
マスター モード ........................................................196
マスター / スレーブの接続 ......................................195
リセットの影響 .........................................................199
SS .........................................................................................191
SSPADD レジスタ ..............................................................201
SSPCON1 レジスタ ....................................................193, 203
SSPCON2 レジスタ ............................................................204
SSPMSK レジスタ ..............................................................211
SSPOV .................................................................................223
SSPOV ステータス フラグ ...............................................223
SSPSTAT レジスタ ....................................................192, 202
R/W ビット .........................................................205, 206
STATUS レジスタ ................................................................80
STKPTR レジスタ ................................................................65
SUBFSR ...............................................................................357
SUBFWB .............................................................................346
SUBLW ................................................................................347
SUBULNK ...........................................................................357
SUBWF ................................................................................347
SUBWFB .............................................................................348
DS41303E_JP - ページ 418
T0CON レジスタ ............................................................... 153
T1CON レジスタ ............................................................... 157
T2CON レジスタ ............................................................... 165
T3CON レジスタ ............................................................... 167
TBLRD ................................................................................ 349
TBLWT ............................................................................... 350
Timer1
特殊イベント トリガ (ECCP) .................................. 172
TRISE レジスタ ................................................................. 132
PSPMODE ビット ..................................................... 128
TSTFSZ ............................................................................... 351
TXREG ................................................................................ 235
TXSTA レジスタ ............................................................... 242
BRGH ビット ............................................................. 245
V
VREF。ADC リファレンス電圧を参照
W
WCOL ................................................. 221, 222, 223, 224, 226
WCOL ステータス フラグ ............... 221, 222, 223, 224, 226
WDTCON レジスタ ........................................................... 305
WWW アドレス ................................................................. 427
WWW、オンラインサポート .............................................. 8
X
XORLW ............................................................................... 351
XORWF ............................................................................... 352
あ
アクセス バンク
インデックス付きリテラル オフセット モード
によるマッピング .............................................. 85
アセンブラ
MPASM アセンブラ ................................................. 362
アナログ入力の接続に関する注意点 ............................. 282
い
一括呼び出しアドレスのサポート ................................. 216
インサーキット シリアル プログラミング (ICSP) 295, 309
インサーキット デバッガ ................................................ 309
インターネット アドレス ................................................ 427
インデックス付きリテラル オフセット アドレス指定
および PIC18 の標準命令 ......................................... 358
インデックス付きリテラル オフセット モード ........... 358
う
ウォッチドッグ タイマ (WDT) ............................... 295, 304
関連レジスタ ............................................................. 305
制御レジスタ ............................................................. 305
プログラミングの注意点 ......................................... 304
お
お客様サポート ................................................................. 427
お客様変更通知サービス ................................................. 427
オシレータ スタートアップ タイマ (OST) ................ 34, 53
オシレータ モジュール ...................................................... 25
HFINTOSC ................................................................... 25
LFINTOSC .................................................................... 25
オシレータ選択 ................................................................. 295
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
オシレータの切り替え
2 段速クロック スタートアップ ............................... 36
フェイルセーフ クロック モニタ ............................. 38
オシレータの構成
EC .................................................................................. 25
ECIO .............................................................................. 25
HS .................................................................................. 25
HSPLL ........................................................................... 25
INTOSC ........................................................................ 25
INTOSCIO .................................................................... 25
LP .................................................................................. 25
RC .................................................................................. 25
RCIO ............................................................................. 25
XT .................................................................................. 25
オシレータ、タイマ 1 .............................................. 157, 169
オシレータ、タイマ 3 ...................................................... 167
か
開発サポート ..................................................................... 361
改版履歴 ............................................................................. 413
各種状態におけるタイムアウト ( 表 ) .............................. 53
拡張キャプチャ / コンペア /PWM (ECCP) ..................... 171
拡張命令セット
ADDFSR ..................................................................... 354
ADDULNK ................................................................. 354
CALLW ....................................................................... 355
MOVSF ....................................................................... 355
MOVSS ....................................................................... 356
PUSHL ........................................................................ 356
SUBFSR ...................................................................... 357
SUBULNK .................................................................. 357
および MPLAB ツールの使用 ................................. 360
使用時の注意点 ......................................................... 358
シンタックス ............................................................. 353
拡張ユニバーサル同期 / 非同期送受信器 (EUSART) ... 233
間接アドレス指定 ............................................................... 82
貫通電流 ............................................................................. 183
き
キャプチャ (CCP モジュール ) ........................................ 143
CCPRxH:CCPRxL レジスタ ..................................... 143
CCP ピンの設定 ........................................................ 143
関連レジスタ ............................................................. 146
ソフトウェア割り込み ............................................. 143
タイマ 1/ タイマ 3 のモード選択 ............................ 143
プリスケーラ ............................................................. 143
キャプチャ (ECCP モジュール ) ...................................... 172
キャプチャ / コンペア /PWM (CCP) ............................... 141
2 つの CCP モジュール間の相互作用 .................... 142
CCPRxH レジスタ ..................................................... 142
CCPRxL レジスタ ..................................................... 142
CCP モードとタイマ リソース ............................... 142
PWM 動作のセットアップ ...................................... 150
PWM の周期 .............................................................. 148
PWM モード .............................................................. 147
PWM 周波数と分解能の例
Fosc = 20 MHz ........................................... 149
Fosc = 40 MHz ........................................... 149
Fosc = 8 MHz ............................................. 149
システム クロック周波数の変更 ................... 150
スリープ モード時の動作 ............................... 150
デューティ サイクル ....................................... 148
動作のセットアップ ........................................ 150
 2009 Microchip Technology Inc.
リセットの影響 .................................................150
キャプチャ モード。キャプチャ参照
コンペア モード。コンペア参照
モジュール構成 .........................................................142
く
クロック ソース
31 kHz ソースの選択 ...................................................26
OSCCON レジスタによる選択 ..................................26
外部モード ...................................................................28
EC ..........................................................................28
HS ..........................................................................29
LP ..........................................................................29
OST .......................................................................28
RC .........................................................................30
XT ..........................................................................29
関連レジスタ ...............................................................39
内部モード ...................................................................30
HFINTOSC ...........................................................30
INTOSC ................................................................30
INTOSCIO ............................................................30
LFINTOSC ............................................................32
周波数選択 ...........................................................32
クロックの切り替え ............................................................35
け
計算型 GOTO ........................................................................66
こ
高 / 低電圧検知 ...................................................................289
アプリケーション .....................................................293
関連レジスタ .............................................................294
起動期間 .....................................................................291
消費電流 .....................................................................291
設定 .............................................................................291
代表的な応用例 .........................................................293
動作 .............................................................................290
スリープ モード ................................................293
特性 .............................................................................377
リセットの影響 .........................................................293
構成ビット ..........................................................................296
構成レジスタのプロテクション ......................................309
高速レジスタ スタック .......................................................66
コード プロテクション .....................................................295
コード例
16 x 16 符号付き乗算ルーチン ................................104
16 x 16 符号なし乗算ルーチン ................................104
8 x 8 符号付き乗算ルーチン ....................................103
8 x 8 符号なし乗算ルーチン ....................................103
A/D 変換 .....................................................................266
PORTA の初期化 .......................................................119
PORTB の初期化 .......................................................122
PORTC の初期化 .......................................................125
PORTD の初期化 .......................................................128
PORTE の初期化 ........................................................131
SSPBUF (SSPSR) レジスタのロード .......................194
STATUS、WREG、BSR レジスタの RAM への
保存 .....................................................................117
オフセット値を用いた計算型 GOTO .......................66
間接アドレス指定による RAM のクリア ................81
キャプチャ プリスケーラの切り替え ....................143
高速レジスタ スタック ..............................................66
タイマ 1 リアルタイム クロックの実装 ................162
Preliminary
DS41303E_JP - ページ 419
PIC18F2XK20/4XK20
データ EEPROM の読み出し .....................................99
データ EEPROM のリフレッシュ ルーチン ..........100
データ EEPROM への書き込み .................................99
フラッシュ プログラム メモリからの
ワード読み出し ...................................................91
フラッシュ プログラム メモリの行消去 .................92
フラッシュ プログラム メモリへの書き込み ...94–95
コンパレータ
応答時間 .....................................................................277
関連レジスタ .............................................................284
スリープ モードの動作 ............................................279
動作 .............................................................................275
リセットの影響 .........................................................279
コンパレータ モジュール .................................................275
入力条件に対する C1 の出力状態 ...........................277
コンパレータ電圧リファレンス (CVREF)
応答時間 .....................................................................277
概要 .............................................................................285
関連レジスタ .............................................................288
スリープ モードの動作 ............................................285
リセットの影響 .................................................279, 285
コンパレータの仕様 ..........................................................376
コンペア (CCP モジュール ) .............................................145
CCPRx レジスタ ........................................................145
関連レジスタ .............................................................146
ソフトウェア割り込み .............................................145
タイマ 1/ タイマ 3 のモード選択 ............................145
特殊イベント トリガ ........................................145, 170
ピンの設定 .................................................................145
コンペア (ECCP モジュール ) ..........................................172
特殊イベント トリガ ................................................172
さ
さまざまなクロック ソースに対する電源管理モード
の影響 ...........................................................................34
し
シリアル クロック、SCK .................................................191
シリアル データ出力 (SDO) .............................................191
シリアル データ入力 (SDI) ...............................................191
シリアル ペリフェラル インターフェース。
SPI モードを参照
す
スタック フル / アンダーフロー リセット .......................66
スタック最上位へのアクセス ............................................64
スリープ
OSC1 および OSC2 ピンの状態 .................................34
スリープ モード ...................................................................43
スルー レート .....................................................................136
スレーブ選択 (SS) ..............................................................191
スレーブ選択同期 ..............................................................197
せ
正誤表情報 ..............................................................................8
絶対最大定格 ......................................................................365
全レジスタの初期化状態 ..............................................57–60
そ
ソフトウェアシミュレータ (MPLAB SIM) ....................362
DS41303E_JP - ページ 420
た
タイマ 0 .............................................................................. 153
16 ビット モードにおける読み出しと書き込み ... 154
オーバーフロー割り込み ......................................... 155
関連レジスタ ............................................................. 155
ソース エッジ選択 (T0SE ビット ) ......................... 154
ソース選択 (T0CS ビット ) ...................................... 154
動作 ............................................................................. 154
プリスケーラ ............................................................. 155
プリスケーラ プリスケーラ。タイマ 0 参照
プリスケーラ割り当て (PSA ビット ) .................... 155
プリスケーラ割り当ての切り替え ......................... 155
プリスケール値選択 (T0PS2:T0PS0 ビット ) ........ 155
タイマ 1 .............................................................................. 157
16 ビット読み出し / 書き込みモード ..................... 160
CCP 特殊イベント トリガによるリセット ........... 161
TMR1H レジスタ ...................................................... 157
TMR1L レジスタ ....................................................... 157
オーバーフロー割り込み ......................................... 157
オシレータ ......................................................... 157, 160
オシレータのレイアウト上の注意点 ..................... 161
関連レジスタ ............................................................. 163
動作 ............................................................................. 158
非同期カウンタ モード ............................................ 159
読み出し / 書き込み ......................................... 159
プリスケーラ ............................................................. 159
リアルタイム クロックとしての利用 .................... 162
割り込み ..................................................................... 161
タイマ 2 .............................................................................. 165
関連レジスタ ............................................................. 166
出力 ............................................................................. 166
動作 ............................................................................. 165
割り込み ..................................................................... 166
タイマ 3 .............................................................................. 167
16 ビット読み出し / 書き込みモード ..................... 169
TMR3H レジスタ ...................................................... 167
TMR3L レジスタ ....................................................... 167
オーバーフロー割り込み ................................. 167, 169
オシレータ ......................................................... 167, 169
関連レジスタ ............................................................. 170
動作 ............................................................................. 168
特殊イベント トリガ (CCP) ..................................... 170
タイミング図
A/D 変換 ..................................................................... 397
CLKO および I/O ....................................................... 382
EUSART の同期受信 ( マスター / スレーブ ) ....... 395
EUSART の同期送信 ( マスター / スレーブ ) ....... 395
I2C スレーブ モード (10 ビット受信、SEN = 0) ... 209
I2C スレーブ モード (10 ビット受信、SEN = 1) ... 215
I2C スレーブ モード (10 ビット送信 ) .................... 210
I2C スレーブ モード (7 ビット受信、SEN = 0) ..... 207
I2C スレーブ モード (7 ビット受信、SEN = 1) ..... 214
I2C スレーブ モード (7 ビット送信 ) ...................... 208
I2C スレーブ モードの一括呼び出しアドレスの
シーケンス (7 ビットまたは 10 ビットの
アドレス モード ) ............................................. 216
I2C の送信 / 受信モードのストップ条件 ............... 226
I2C バスのスタート / ストップ ビット .................. 391
I2C バスのデータ ...................................................... 391
I2C マスター モード (7 ビット受信 ) ...................... 225
I2C マスター モード (7 ビットまたは 10 ビットの
送信 ) .................................................................. 224
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
PLL を有効にした場合の POR 時のタイムアウト
シーケンス (MCLR は VDD に接続 ) ................ 55
PWM 自動シャットダウン
自動再スタートを有効に設定 ........................ 182
ファームウェアによる再スタート ................ 182
PWM 出力 ( 正論理 ) ................................................. 174
PWM 出力 ( 負論理 ) ................................................. 175
PWM の方向の変更 .................................................. 179
SPI スレーブ モードの例 (CKE = 0) ....................... 389
SPI スレーブ モードの例 (CKE = 1) ....................... 390
SPI マスター モードの例 (CKE = 0) ....................... 387
SPI マスター モードの例 (CKE = 1) ....................... 388
SPI モード ( スレーブ モード、CKE = 0) .............. 198
SPI モード ( スレーブ モード、CKE = 1) .............. 198
SPI モード ( マスター モード ) ............................... 196
Timer0 と Timer1 の外部クロック .......................... 384
アイドル モードからラン モードに
ウェイクアップするときの遷移タイミング .. 45
アイドル モードに移行するときの遷移
タイミング .......................................................... 45
外部クロック (PLL を除く全モード ) .................... 380
キャプチャ / コンペア /PWM (CCP) ....................... 385
クロック / 命令サイクル ............................................ 67
クロック調停がある場合のボーレート
ジェネレータのタイミング ............................ 220
クロック同期 ............................................................. 213
高 / 低電圧検知動作 (VDIRMAG = 0) ..................... 291
高 / 低電圧検知動作 (VDIRMAG = 1) ..................... 292
高 / 低電圧検知の特性 .............................................. 377
肯定応答シーケンス ................................................. 226
コンパレータ出力 ..................................................... 275
最初のスタート ビットのタイミング .................... 221
自動ボーレート計算 ................................................. 250
スタート条件時の SDA の調停による BRG の
リセット ............................................................ 229
スタート条件時のバス衝突 (SCL = 0) .................... 229
スタート条件時のバス衝突 (SDA のみ ) ............... 228
ストップ条件時のバス衝突 ( ケース 1) ................. 231
ストップ条件時のバス衝突 ( ケース 2) ................. 231
スリープ モードに移行するときの遷移 .................. 44
スリープからウェイクアップするときの遷移
(HSPLL) ................................................................ 44
スリープ時の自動ウェイクアップ ビット (WUE) 251
スレーブ同期 ............................................................. 197
送信と肯定応答のバス衝突のタイミング ............. 227
タイマ 1 のインクリメント エッジ ........................ 159
立ち上がり時間が長い場合 (MCLR は VDD に接続、
VDD の立ち上がり時間 > TPWRT) ..................... 55
通常動作時の自動ウェイクアップ ビット (WUE) 251
デューティ サイクルが 100%近傍での PWM の
方向変更 ............................................................ 180
電源投入時のタイムアウト シーケンス
(MCLR は VDD に接続、VDD の立ち上がり
時間 < TPWRT) ...................................................... 54
電源投入時のタイムアウト シーケンス
(MCLR を VDD に接続しない場合、ケース 1) 54
電源投入時のタイムアウト シーケンス
(MCLR を VDD に接続しない場合、ケース 2) 54
同期受信 ( マスター モード、SREN) ..................... 257
同期送信 ..................................................................... 254
同期送信 (TXEN 経由 ) ............................................. 254
内部オシレータの切り替えタイミング ................... 37
 2009 Microchip Technology Inc.
ハーフブリッジ PWM 出力 ..............................176, 183
パラレル スレーブ ポート (PIC18F4XK20) ...........386
パラレル スレーブ ポート (PSP) 書き込み ............138
パラレル スレーブ ポート (PSP) 読み出し ............138
非同期受信 .................................................................241
非同期送信 .................................................................236
非同期送信 ( 連続 ) ....................................................237
フェイルセーフ クロック モニタ (FSCM) ...............39
ブラウンアウト リセット (BOR) ............................383
フルブリッジ PWM 出力 ..........................................178
ブレーク文字の送信シーケンス .............................252
マスター SSP の I2C バスのスタート / ストップ
ビット .................................................................393
マスター SSP の I2C バスのデータ .........................393
リセット、ウォッチドッグ タイマ (WDT)、
オシレータ起動タイマ (OST)、
パワーアップ タイマ (PWRT) .........................383
リピート スタート条件 ............................................222
リピート スタート条件時のバス衝突 ( ケース 1) .230
リピート スタート条件時のバス衝突 ( ケース 2) .230
タイミング図と仕様 ..........................................................380
A/D 変換の要件 .........................................................397
CLKO および I/O の要件 ..........................................382
EUSART の同期受信の要件 .....................................395
EUSART の同期送信の要件 .....................................395
I2C バスのスタート / ストップ ビットの要件
( スレーブ モード ) ...........................................391
I2C バスのデータの要件 ( スレーブ モード ) ........392
PLL クロック .............................................................381
SPI モードの要件の例
( スレーブ モード、CKE = 0) ..........................389
( スレーブ モード、CKE = 1) ..........................390
( マスター モード、CKE = 0) ..........................387
( マスター モード、CKE = 1) ..........................388
Timer0 と Timer1 の外部クロックの要件 ...............384
外部クロックの要件 .................................................380
キャプチャ / コンペア /PWM の要件 ......................385
パラレル スレーブ ポートの要件 (PIC18F4X20) ..386
マスター SSP の I2C バスのスタート / ストップ
ビットの要件 .....................................................393
マスター SSP の I2C バスのデータの要件 .............394
リセット、ウォッチドッグ タイマ、
発振器起動タイマ、電源投入タイマ、
およびブラウンアウト リセットの要件 ........383
単一電源 ICSP のプログラミング
ち
直接アドレス指定 ................................................................82
て
低電圧 ICSP のプログラミング。単一電源 ICSP の
プログラミングを参照
データ メモリ .......................................................................69
PIC18F23K20/43K20 のマップ ...................................70
PIC18F24K20/44K20 のマップ ...................................71
PIC18F25K20/45K20 のマップ ...................................72
PIC18F26K20/46K20 のマップ ...................................73
アクセス バンク ..........................................................75
および拡張命令セット ...............................................83
特殊機能レジスタ .......................................................75
バンク選択レジスタ (BSR) ........................................69
汎用レジスタ ...............................................................75
Preliminary
DS41303E_JP - ページ 421
PIC18F2XK20/4XK20
データ EEPROM
EEADR および EEADRH レジスタ ...........................97
EECON1 および EECON2 レジスタ ..........................97
関連レジスタ .............................................................101
コード プロテクション ............................................309
データ EEPROM メモリ ......................................................97
書き込み .......................................................................99
書き込みの検証 ...........................................................99
コード プロテクション時の動作 ............................100
誤書き込み防止 .........................................................100
使用 .............................................................................100
読み出し .......................................................................99
データのアドレス指定モード ............................................81
インデックス付きリテラル オフセット ..................83
影響を受ける命令 ...............................................83
拡張命令セットを有効にした場合とのアドレス
指定モードの比較 ...............................................84
含意およびリテラル ...................................................81
間接 ...............................................................................81
直接 ...............................................................................81
テーブル ポインタの操作 ( 表 ) .........................................90
テーブル読み出し / テーブル書き込み .............................66
デバイス リセット タイマ ..................................................53
PLL ロック タイムアウト ..........................................53
タイムアウト シーケンス ..........................................53
パワーアップ タイマ (PWRT) ....................................53
デバイス間の違い ..............................................................414
デバイス概要 ..........................................................................9
新しいコアの機能 .........................................................9
その他の特殊機能 .......................................................10
特徴 ( 表 ) ......................................................................11
ファミリの各メンバーに関する詳細 .......................10
電圧リファレンス
VR の安定化 ...............................................................286
固定電圧リファレンス (FVR) ..................................286
電圧リファレンス (VR)
仕様 .............................................................................376
電圧リファレンス。コンパレータ電圧リファレンス
(CVREF) を参照
電気的特性 ..........................................................................365
電源管理モード ....................................................................41
アイドル モード ..........................................................43
PRI_IDLE ..............................................................45
RC_IDLE ..............................................................46
SEC_IDLE ............................................................45
アイドル モードおよびスリープ モードの終了 .....46
WDT タイムアウトによる方法 .........................46
スタートアップ遅延を伴わない方法 ...............47
リセットによる方法 ...........................................46
割り込みによる方法 ...........................................46
移行 ...............................................................................41
一覧 ( 表 ) ......................................................................41
および A/D 動作 ........................................................265
および PWM 動作 ......................................................188
および SPI の動作 ......................................................199
クロック遷移およびステータス インジケータ ......42
クロックソースに対する影響 ...................................34
スリープ モード ..........................................................43
選択 ...............................................................................41
複数のスリープ機能 ...................................................42
DS41303E_JP - ページ 422
ラン モード .................................................................. 42
PRI_RUN .............................................................. 42
SEC_RUN ............................................................. 42
電源投入時の遅延 ............................................................... 34
と
読者アンケート ................................................................. 428
特殊イベント トリガ ........................................................ 265
特殊イベント トリガ。コンペア(ECCPモジュール)を参照
特殊イベント トリガ。コンペア参照 (ECCP モード )
特殊機能レジスタ ............................................................... 75
マップ ........................................................................... 76
な
内部 RC オシレータ
WDT との使用 ........................................................... 304
内部オシレータ ブロック
HFINTOSC の周波数ドリフト .................................. 32
HFINTOSC モードの PLL .......................................... 33
内部サンプリング スイッチ (RSS) のインピーダンス . 271
に
入出力ピン機能一覧
PIC18F2XK20 ............................................................... 14
PIC18F4XK20 ............................................................... 18
は
ハードウェア乗算器 ......................................................... 103
概要 ............................................................................. 103
性能比較 ..................................................................... 103
動作 ............................................................................. 103
パッケージ情報 ................................................................. 401
マーキング ................................................................. 401
パラレル スレーブ ポート (PSP) ............................. 128, 137
CS ( チップ セレクト ) ............................................. 137
PORTD ........................................................................ 137
RD ( 読み出し入力 ) .................................................. 137
WR ( 書き込み入力 ) ................................................. 137
関連レジスタ ............................................................. 139
選択 (PSPMODE ビット ) ................................. 128, 137
パルス切り替え ................................................................. 185
パワーアップ タイマ (PWRT) ........................................... 34
パワーオン リセット (POR) ............................................... 51
タイムアウト シーケンス .......................................... 53
パワーアップ タイマ (PWRT) ................................... 53
バンク選択レジスタ (BSR) ................................................ 69
ひ
非同期動作でのクロックの精度 ..................................... 242
標準命令 ............................................................................. 311
ピン機能
MCLR/VPP/RE3 ............................................................ 18
OSC1/CLKI/RA7 .................................................... 14, 18
OSC2/CLKO/RA6 .................................................. 14, 18
RA0/AN0/C12IN0- ................................................. 15, 19
RA1/AN1/C12IN0- ....................................................... 19
RA1/AN1/C12IN1- ....................................................... 15
RA2/AN2/VREF-/CVREF/C2IN+ ............................ 15, 19
RA3/AN3/VREF+/C1IN+ ........................................ 15, 19
RA4/T0CKI/C1OUT ............................................... 15, 19
RA5/AN4/SS/HLVDIN/C2OUT ............................ 15, 19
RB0/INT0/FLT0/AN12 ........................................... 16, 20
RB1/INT1/AN10/C12IN3- ........................................... 20
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
RB1/INT1/AN10/P1C/C12IN3- .................................... 16
RB2/INT2/AN8 ............................................................. 20
RB2/INT2/AN8/P1B ..................................................... 16
RB3/AN9/CCP2/C12IN2- ....................................... 16, 20
RB4/KBI0/AN11 ........................................................... 20
RB4/KBI0/AN11/P1D .................................................. 16
RB5/KBI1/PGM ...................................................... 16, 20
RB6/KBI2/PGC ....................................................... 16, 20
RB7/KBI3/PGD ...................................................... 16, 20
RC0/T1OSO/T13CKI .............................................. 17, 21
RC1/T1OSI/CCP2 ................................................... 17, 21
RC2/CCP1/P1A ....................................................... 17, 21
RC3/SCK/SCL ........................................................ 17, 21
RC4/SDI/SDA ......................................................... 17, 21
RC5/SDO ................................................................ 17, 21
RC6/TX/CK ............................................................ 17, 21
RC7/RX/DT ............................................................ 17, 21
RD0/PSP0 ...................................................................... 22
RD1/PSP1 ...................................................................... 22
RD2/PSP2 ...................................................................... 22
RD3/PSP3 ...................................................................... 22
RD4/PSP4 ...................................................................... 22
RD5/PSP5/P1B .............................................................. 22
RD6/PSP6/P1C .............................................................. 22
RD7/PSP7/P1D ............................................................. 22
RE0/RD/AN5 ................................................................ 23
RE1/WR/AN6 ............................................................... 23
RE2/CS/AN7 ................................................................. 23
VDD ......................................................................... 17, 23
VSS .......................................................................... 17, 23
ふ
ファームウェア命令 ......................................................... 311
フェイルセーフ クロック モニタ ............................. 38, 295
フェイルセーフ状態の解消 ....................................... 38
フェイルセーフの検出 ............................................... 38
フェイルセーフの動作 ............................................... 38
リセットまたはスリープからのウェイクアップ ... 38
ブラウンアウト リセット (BOR) ...................................... 52
検出 ............................................................................... 52
スリープ モード時の無効化 ...................................... 52
ソフトウェア制御可能 ............................................... 52
有効化の最小時間 ....................................................... 52
フラッシュ プログラム メモリ ......................................... 87
書き込み ....................................................................... 92
書き込みの検証 .................................................. 95
誤書き込み防止 .................................................. 95
予期せぬ中断 ...................................................... 95
書き込みシーケンス ................................................... 93
関連レジスタ ............................................................... 95
コード プロテクション時の動作 .............................. 95
消去 ............................................................................... 92
消去シーケンス ........................................................... 92
制御レジスタ ............................................................... 88
EECON1 および EECON2 .................................. 88
TABLAT ( テーブル ラッチ ) レジスタ ........... 90
TBLPTR ( テーブル ポインタ ) レジスタ ........ 90
テーブル ポインタ
動作ごとの境界 .................................................. 90
テーブル ポインタの境界 .......................................... 90
テーブル読み出しおよびテーブル書き込み ........... 87
読み出し ....................................................................... 91
 2009 Microchip Technology Inc.
プリスケーラ、タイマ 0 ...................................................155
ブレークでのウェイクアップ ..........................................250
ブレーク文字 (12 ビット ) の送信および受信 ...............252
プログラミング、デバイス命令 ......................................311
プログラム カウンタ ...........................................................64
PCLATH および PCLATU レジスタ .........................64
PCL、PCH、PCU レジスタ .......................................64
プログラム メモリ
および拡張命令セット ...............................................85
コード プロテクション ............................................307
マップおよびスタック ( 図 ) ......................................63
命令 ...............................................................................68
2 ワード ................................................................68
リセット ベクタ ..........................................................63
ルックアップ テーブル ..............................................66
割り込みベクタ ...........................................................63
プログラム検証とコード プロテクション .....................306
関連レジスタ .............................................................306
ブロック図
16 ビット モードのタイマ 0 ....................................155
8 ビット モードのタイマ 0 ......................................154
ADC .............................................................................261
ADC の伝達関数 ........................................................272
CCP PWM ...................................................................147
EUSART の受信 .........................................................234
EUSART の送信 .........................................................233
MSSP (I2C マスター モード ) ...................................217
MSSP (I2C モード ) ....................................................200
MSSP (SPI モード ) ....................................................191
PIC18F2XK20 ...............................................................12
PIC18F4XK20 ...............................................................13
PLL (HS モード ) .........................................................33
PORTD および PORTE
( パラレル スレーブ ポート ) ..........................137
PWM ( 拡張 ) ..............................................................173
アナログ入力モデル .........................................272, 282
ウォッチドッグ タイマ ............................................304
オンチップ リセット回路 ..........................................49
外部 POR 回路
(VDD 電源の立ち上がりが遅い場合 ) ...............51
外部 RC モード ............................................................30
外部入力のある高 / 低電圧検知 ..............................290
キャプチャ モード動作 ............................................144
クロック ソース ..........................................................25
コンパレータ 1 ..........................................................276
コンパレータ 2 ..........................................................276
コンパレータ電圧リファレンス .............................286
コンペア モードの動作 ............................................145
振動子の動作 ...............................................................29
水晶振動子による動作 ...............................................29
タイマ 1 ......................................................................158
タイマ 1 (16 ビット読み出し / 書き込みモード ) ..158
タイマ 2 ......................................................................166
タイマ 3 ......................................................................168
タイマ 3 (16 ビット読み出し / 書き込みモード ) ..169
テーブル書き込み動作 ...............................................88
テーブル読み出し動作 ...............................................87
電圧リファレンスの出力バッファの例 .................287
汎用 I/O ポート ..........................................................119
フェイルセーフ クロック モニタ (FSCM) ...............38
フラッシュ プログラム メモリからの読み出し .....91
Preliminary
DS41303E_JP - ページ 423
PIC18F2XK20/4XK20
フラッシュ プログラム メモリへのテーブル
書き込み ...............................................................93
ボーレート ジェネレータ ........................................219
割り込みロジック .....................................................106
へ
変更通知サービス ..............................................................427
ほ
ボーレート ジェネレータ .................................................219
ま
マイクロチップ社のインターネット ウェブ サイト ....427
マスター クリア (MCLR) ....................................................51
マスター同期シリアル ポート (MSSP) モジュール。
MSSP を参照
め
命令サイクル ........................................................................67
クロック方式 ...............................................................67
命令セット ..........................................................................311
ADDLW ......................................................................317
ADDWF .......................................................................317
ADDWF ( インデックス付きリテラル
オフセット モード ) ..........................................359
ADDWFC ....................................................................318
ANDLW ......................................................................318
ANDWF .......................................................................319
BC ................................................................................319
BCF ..............................................................................320
BN ................................................................................320
BNC .............................................................................321
BNN .............................................................................321
BNOV ..........................................................................322
BNZ .............................................................................322
BOV .............................................................................325
BRA .............................................................................323
BSF ..............................................................................323
BSF ( インデックス付きリテラル オフセット
モード ) ...............................................................359
BTFSC .........................................................................324
BTFSS ..........................................................................324
BTG .............................................................................325
BZ ................................................................................326
CALL ...........................................................................326
CLRF ...........................................................................327
CLRWDT ....................................................................327
COMF ..........................................................................328
CPFSEQ .......................................................................328
CPFSGT .......................................................................329
CPFSLT .......................................................................329
DAW ............................................................................330
DCFSNZ ......................................................................331
DECF ...........................................................................330
DECFSZ ......................................................................331
GOTO ..........................................................................332
INCF ............................................................................332
INCFSZ ........................................................................333
INFSNZ .......................................................................333
IORLW ........................................................................334
IORWF ........................................................................334
LFSR ............................................................................335
MOVF ..........................................................................335
DS41303E_JP - ページ 424
MOVFF ....................................................................... 336
MOVLB ...................................................................... 336
MOVLW ..................................................................... 337
MOVWF ..................................................................... 337
MULLW ...................................................................... 338
MULWF ...................................................................... 338
NEGF .......................................................................... 339
NOP ............................................................................. 339
POP ............................................................................. 340
PUSH ........................................................................... 340
RCALL ........................................................................ 341
RESET ......................................................................... 341
RETFIE ....................................................................... 342
RETLW ....................................................................... 342
RETURN ..................................................................... 343
RLCF ........................................................................... 343
RLNCF ........................................................................ 344
RRCF ........................................................................... 344
RRNCF ........................................................................ 345
SETF ........................................................................... 345
SETF ( インデックス付きリテラル オフセット
モード ) .............................................................. 359
SLEEP ......................................................................... 346
SUBFWB .................................................................... 346
SUBLW ....................................................................... 347
SUBWF ....................................................................... 347
SUBWFB .................................................................... 348
SWAPF ....................................................................... 348
TBLRD ........................................................................ 349
TBLWT ....................................................................... 350
TSTFSZ ....................................................................... 351
XORLW ...................................................................... 351
XORWF ...................................................................... 352
一般的な形式 ............................................................. 313
オペコードのフィールドの説明 ............................. 312
拡張命令セット ......................................................... 353
命令フロー / パイプライン ................................................ 67
メモリ構成 ........................................................................... 63
データ メモリ .............................................................. 69
プログラム メモリ ...................................................... 63
り
リセット ....................................................................... 49, 295
オシレータ起動タイマ (OST) .................................. 295
パワーアップ タイマ (PWRT) ................................. 295
パワーオン リセット (POR) .................................... 295
ブラウンアウト リセット (BOR) ............................ 295
リセットの影響
PWM モード .............................................................. 150
リターン アドレス スタック ............................................. 64
リターン スタック ポインタ (STKPTR) ........................... 65
れ
レジスタ
ADCON0 (ADC 制御 0) ............................................ 267
ADCON1 (ADC 制御 1) ............................................ 268
ADCON2 (ADC 制御 2) ............................................ 269
ADRESH (ADC 結果 High) (ADFM = 0) ................. 270
ADRESH (ADC 結果 High) (ADFM = 1) ................. 270
ADRESL (ADC 結果 Low) (ADFM = 0) .................. 270
ADRESL (ADC 結果 Low) (ADFM = 1) .................. 270
ANSEL ( アナログ選択 1) ........................................ 134
ANSEL ( ポート アナログ制御 ) ............................. 134
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
ANSELH ( アナログ選択 2) ..................................... 135
ANSELH ( ポート アナログ制御 ) .......................... 135
BAUDCON (EUSART ボーレート制御 ) ................ 244
BAUDCON ( ボーレート制御 ) ............................... 244
CCP1CON
(Enhanced Capture/Compare/PWM Control) ..... 171
CCP2CON
( 標準キャプチャ / コンペア /PWM 制御 ) .... 141
CM1CON0 (C1 制御 ) ................................................ 280
CM2CON0 (C2 制御 ) ................................................ 281
CM2CON1 (C2 制御 ) ................................................ 283
CONFIG1H ( 構成 1 High) ........................................ 297
CONFIG2H ( 構成 2 High) ........................................ 298
CONFIG2L ( 構成 2 Low) .......................................... 298
CONFIG3H ( 構成 3 High) ........................................ 299
CONFIG4L ( 構成 4 Low) .......................................... 299
CONFIG5H ( 構成 5 High) ........................................ 300
CONFIG5L ( 構成 5 Low) .......................................... 300
CONFIG6H ( 構成 6 High) ........................................ 301
CONFIG6L ( 構成 6 Low) .......................................... 301
CONFIG7H ( 構成 7 High) ........................................ 302
CONFIG7L ( 構成 7 Low) .......................................... 302
CVRCON ( コンパレータ電圧リファレンス制御 )
CVRCON レジスタ ........................................... 287
CVRCON2 ( コンパレータ電圧リファレンス制御 2)
CVRCON2 レジスタ ......................................... 288
DEVID1 ( デバイス ID 1) .......................................... 303
DEVID2 ( デバイス ID 2) .......................................... 303
ECCPAS (Enhanced CCP Auto-shutdown Control) ... 181
EECON1 ( データ EEPROM 制御 1) .................... 89, 98
HLVDCON ( 高 / 低電圧検知制御 ) ......................... 289
INTCON ( 割り込み制御 ) ........................................ 107
INTCON2 ( 割り込み制御 2) .................................... 108
INTCON3 ( 割り込み制御 3) .................................... 109
IPR1 ( 周辺割り込み優先度 1) ................................. 114
IPR2 ( 周辺割り込み優先度 2) ................................. 115
OSCCON ( オシレータ制御 ) ..................................... 27
OSCTUNE ( オシレータ調整 ) ................................... 31
PIE1 ( 周辺割り込みイネーブル 1) ......................... 112
PIE2 ( 周辺割り込みイネーブル 2) ......................... 113
PIR1 ( 周辺割り込み要求 1) ..................................... 110
PIR2 ( 周辺割り込み要求 2) ..................................... 111
PSTRCON (Pulse Steering Control) ........................... 185
PWM1CON (Enhanced PWM Control) ...................... 184
RCON ( リセット制御 ) ...................................... 50, 116
RCREG レジスタ ....................................................... 249
RCSTA ( 受信ステータスおよび制御 ) .................. 243
SLRCON ( ポート スルー レート制御 ) ................. 136
SSPADD
(MSSP Address and Baud Rate、SPI モード ) . 201
SSPCON1 (MSSP Control 1、I2C モード ) .............. 203
SSPCON1 (MSSP Control 1、SPI モード ) .............. 193
SSPCON2 (MSSP Control 2、I2C モード ) .............. 204
SSPMSK (SSP Mask) ................................................. 211
SSPSTAT (MSSP Status、SPI モード ) ............ 192, 202
STATUS ........................................................................ 80
STKPTR ( スタック ポインタ ) ................................. 65
T0CON ( タイマ 0 制御 ) .......................................... 153
T1CON ( タイマ 1 制御 ) .......................................... 157
T2CON ( タイマ 2 制御 ) .......................................... 165
T3CON ( タイマ 3 制御 ) .......................................... 167
TRISE (PORTE/PSP 制御 ) ........................................ 132
 2009 Microchip Technology Inc.
TXSTA ( 送信ステータスおよび制御 ) ...................242
WDTCON ( ウォッチドッグ タイマ制御 ) .............305
レジスタ ファイル ...............................................................75
レジスタ ファイル一覧 .................................................77–79
レジスタのリセット状態 ....................................................56
わ
割り込み ..............................................................................105
割り込みソース ..................................................................295
ADC .............................................................................263
割り込み中のコンテキスト保存 ......................................117
割り込み要因
INTn ピン ....................................................................117
PORTB 状態変化割り込み .......................................117
TMR0 ...........................................................................117
TMR0 オーバーフロー ..............................................155
TMR1 オーバーフロー ..............................................157
TMR3 オーバーフロー ......................................167, 169
キャプチャ完了 (CCP) ..............................................143
コンペア完了 (CCP) ..................................................145
状態変化割り込み (RB7:RB4) ..................................122
Preliminary
DS41303E_JP - ページ 425
PIC18F2XK20/4XK20
DS41303E_JP - ページ 426
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
マイクロチップ社のウェブ サイト
お客様サポート
マイクロチップ社は、
ウェブ サイト(www.microchip.
com) でオンラインサポートを提供しています。こ
のウェブ サイトを活用することで、ファイルや情
報を簡単に入手できます。ウェブ サイトには、ご
使用中のインターネット ブラウザでアクセスでき、
以下の情報が掲載されています。
マイクロチップ社製品のユーザーは、以下の複数の
ルートでサポートが受けられます。
• 製品サポート – データシートと正誤表、アプ
リケーション ノートとサンプル プログラム、
設計リソース、ユーザーズ ガイドとハード
ウェア サポート文書、最新のソフトウェアと
過去のソフトウェア
• テクニカル サポート – よくある質問 (FAQ)、
テクニカル サポート リクエスト、オンライン
ディスカッション グループ、マイクロチップ
社コンサルタント プログラム メンバの一覧
• マイクロチップ社の事業 – 製品選択および
注文ガイド、マイクロチップ社の最新プレス
リリース、セミナーおよびイベントの一覧、
マイクロチップ各営業所、販売代理店、担当
工場の一覧
•
•
•
•
•
販売代理店
該当地域の営業所
フィールド アプリケーション エンジニア (FAE)
テクニカルサポート
開発システム情報ライン
サポートが必要な場合、お客様は製品を購入した販
売代理店またはフィールド アプリケーション エン
ジニア (FAE) にご連絡ください。該当地域の営業所
でもお客様へのサポートを提供しています。各営業
所と所在地の一覧は、本書の最終ページに記載され
ています。
テクニカルサポートはウェブ サイト (http://
support.microchip.com) より提供されています。
お客様への変更通知サービス
マイクロチップ社のお客様通知サービスにて、常に
お客様にマイクロチップ社製品の最新情報を提供
させていただきます。この通知サービスを申し込ま
れたお客様には、指定された製品ファミリまたは開
発ツールに関する変更、更新、改訂、あるいは正誤
表情報があるときに、常に電子メールにてお知らせ
いたします。
登録するには、マイクロチップ社のウェブ サイト
www.microchip.com にアクセスし、[Customer Change
Notification] をクリックして登録手順に従ってくだ
さい。
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 427
PIC18F2XK20/4XK20
読者アンケート
マイクロチップ社では、お客様にマイクロチップ社製品を効果的にお使いいただくために、可能な限り最良の
文書を提供するように努めています。文書の構成、明瞭さ、内容、手法に関しまして、我々の文書がお客様に
とりましてより良くなるためのご意見を提供していただける場合は、ファクスにて弊社のテクニカル パブリ
ケーション マネージャ宛にご意見をお送りください。ファクス番号は 1-480-792-4150 ( 国際電話 ) です。
以下の欄に必要事項と本書に関するご意見をご記入の上、お送りください。
送信先 : テクニカル パブリケーション マネージャ
件名 :
送信枚数 ________
読者アンケート
発信元 : お名前
会社名
ご住所
市町村 / 都道府県 / 郵便番号 / 国名
電話 : (_______) _________ - _________
ファクス : (______) _________ - _________
用途 ( 任意の項目 ):
回答を希望しますか ?
はい
デバイス : PIC18F2XK20/4XK20
いいえ
文書番号 : DS41303E_JP
質問 :
1. 本書の中で最も良い記事はどれですか ?
2. 本書には、お客様がハードウェアおよびソフトウェアを開発する際に必要な情報が十分に記載されて
いますか ?
3. 本書の構成は分かりやすいですか ? 分かりにくいと感じた場合、その理由をお書きください。
4. 本書の構成や内容を改善するには、何を追加したらよいと思われますか ?
5. 全体の有用性に影響を与えず、本書から削除してもかまわないと思われる内容があれば、お書きください。
6. 不正確な情報または誤解を与えるような情報がありますか ? もしあれば、記載ページと該当箇所を
お書きください。
7. 本書を更に分かりやすくするには、どのような改善が必要だと思われますか ?
DS41303E_JP - ページ 428
Preliminary
 2009 Microchip Technology Inc.
PIC18F2XK20/4XK20
製品識別システム
注文や資料請求、または価格や納期などの情報は、弊社工場または一覧に記載されている営業所にお問い合わ
せください。
PART NO.
X
/XX
XXX
Device
Temperature
Range
Package
Pattern
Device:
PIC18F23K20(1), PIC18F24K20(1), PIC18F25K20(1),
PIC18F26K20(1), PIC18F43K20(1), PIC18F44K20(1),
PIC18F45K20(1), PIC18F46K20(1)
Temperature
Range:
E
I
Package:
ML
P
PT
SO
SP
SS
Pattern:
= -40C to +125C
= -40C to +85C
=
=
=
=
=
=
例:
a) PIC18F45K20-E/P 301 = 拡張用、PDIP パッケージ、
拡張 VDD 範囲、QTP パターン #301
b) PIC18F23K20-I/SO = 工業用、SOIC パッケージ
c) PIC18F44K20-E/P = 拡張用、PDIP パッケージ
(Extended)
(Industrial)
QFN
PDIP
TQFP (Thin Quad Flatpack)
SOIC
Skinny Plastic DIP
SSOP
注
1:
T
= テープ & リールの PLCC および
TQFP のパッケージのみです。
QTP, SQTP, Code or Special Requirements
(blank otherwise)
 2009 Microchip Technology Inc.
Preliminary
DS41303E_JP - ページ 429
世界各国での販売およびサービス
北米
アジア / 太平洋
アジア / 太平洋
ヨーロッパ
本社
アジア太平洋支社
インド - バンガロール
オーストリア - ヴェルス
2355 West Chandler Blvd.
Chandler, AZ 85224-6199
Tel: 480-792-7200
Fax: 480-792-7277
テクニカル サポート :
http://support.microchip.com
ウェブ アドレス :
www.microchip.com
Suites 3707-14, 37th Floor
Tower 6, The Gateway
Harbour City, Kowloon
Hong Kong
Tel: 852-2401-1200
Fax: 852-2401-3431
Tel: 91-80-3090-4444
Fax: 91-80-3090-4080
Tel: 43-7242-2244-39
Fax: 43-7242-2244-393
インド - ニューデリー
デンマーク - コペンハーゲン
Tel: 91-11-4160-8631
Fax: 91-11-4160-8632
Tel: 45-4450-2828
Fax: 45-4485-2829
オーストラリア - シドニー
インド - プネ
フランス - パリ
Tel: 91-20-2566-1512
Fax: 91-20-2566-1513
Tel: 33-1-69-53-63-20
Fax: 33-1-69-30-90-79
日本 - 横浜
ドイツ - ミュンヘン
Tel: 81-45-471- 6166
Fax: 81-45-471-6122
Tel: 49-89-627-144-0
Fax: 49-89-627-144-44
韓国 - 大邱
イタリア - ミラノ
Tel: 82-53-744-4301
Fax: 82-53-744-4302
Tel: 39-0331-742611
Fax: 39-0331-466781
韓国 - ソウル
オランダ - ドリューネン
Tel: 82-2-554-7200
Fax: 82-2-558-5932 または
82-2-558-5934
Tel: 31-416-690399
Fax: 31-416-690340
マレーシア - クアラルンプール
Tel: 34-91-708-08-90
Fax: 34-91-708-08-91
アトランタ
Tel: 61-2-9868-6733
Fax: 61-2-9868-6755
Duluth, GA
Tel: 678-957-9614
Fax: 678-957-1455
中国 - 北京
ボストン
中国 - 成都
Westborough, MA
Tel: 774-760-0087
Fax: 774-760-0088
シカゴ
Itasca, IL
Tel: 630-285-0071
Fax: 630-285-0075
クリーブランド
Independence, OH
Tel: 216-447-0464
Fax: 216-447-0643
ダラス
Tel: 86-10-8528-2100
Fax: 86-10-8528-2104
Tel: 86-28-8665-5511
Fax: 86-28-8665-7889
中国 - 香港 SAR
Tel: 852-2401-1200
Fax: 852-2401-3431
中国 - 南京
Tel: 86-25-8473-2460
Fax: 86-25-8473-2470
Tel: 60-3-6201-9857
Fax: 60-3-6201-9859
中国 - 青島
Tel: 86-532-8502-7355
Fax: 86-532-8502-7205
Addison, TX
Tel: 972-818-7423
Fax: 972-818-2924
中国 - 上海
デトロイト
中国 - 瀋陽
シンガポール
ココモ
Tel: 86-755-8203-2660
Fax: 86-755-8203-1760
ロサンゼルス
Mission Viejo, CA
Tel: 949-462-9523
Fax: 949-462-9608
中国 - 厦門
サンタクララ
中国 - 西安
Santa Clara, CA
Tel: 408-961-6444
Fax: 408-961-6445
トロント
Mississauga, Ontario,
Canada
Tel: 905-673-0699
Fax: 905-673-6509
Tel: 65-6334-8870
Fax: 65-6334-8850
中国 - 深川
Tel: 86-27-5980-5300
Fax: 86-27-5980-5118
Tel: 86-592-2388138
Fax: 86-592-2388130
Tel: 86-29-8833-7252
Fax: 86-29-8833-7256
Tel: 44-118-921-5869
Fax: 44-118-921-5820
Tel: 63-2-634-9065
Fax: 63-2-634-9069
Tel: 86-24-2334-2829
Fax: 86-24-2334-2393
中国 - 武漢
Tel: 60-4-227-8870
Fax: 60-4-227-4068
英国 - ウォーキンガム
フィリピン - マニラ
Tel: 86-21-5407-5533
Fax: 86-21-5407-5066
Farmington Hills, MI
Tel: 248-538-2250
Fax: 248-538-2260
Kokomo, IN
Tel: 765-864-8360
Fax: 765-864-8387
マレーシア - ペナン
スペイン - マドリッド
台湾 - 新竹
Tel: 886-3-6578-300
Fax: 886-3-6578-370
台湾 - 高雄
Tel: 886-7-536-4818
Fax: 886-7-536-4803
台湾 - 台北
Tel: 886-2-2500-6610
Fax: 886-2-2508-0102
タイ - バンコク
Tel: 66-2-694-1351
Fax: 66-2-694-1350
中国 - 珠海
Tel: 86-756-3210040
Fax: 86-756-3210049
03/26/09
DS41303E_JP - ページ 430
Preliminary
 2009 Microchip Technology Inc.
Fly UP