pic18f97j60 ファミリ データシート - microchip …ww1.microchip.com › downloads › jp...

496
2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60 ファミリ データシート 64/80/100 ピン高性能 1M ビット フラッシュ マイクロ コントローラ Ethernet モジュール内蔵 注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジ ナルの英語版をご参照願います。

Upload: others

Post on 28-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

2013 Microchip Technology Inc. DS39762F_JP

PIC18F97J60 ファミリ

データシート

64/80/100 ピン高性能

1M ビット フラッシュ マイクロ

コントローラ Ethernet モジュール内蔵

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

Page 2: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

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

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

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

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

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

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

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

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

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

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

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

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

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

ります。

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

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

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

様のアプリケーションが仕様を満たす事を保証する責任

は、お客様にあります。マイクロチップ社は、明示的、暗

黙的、書面、口頭、法定のいずれであるかを問わず、本書

に記載されている情報に関して、状態、品質、性能、商品

性、特定目的への適合性をはじめとする、いかなる類の表

明も保証も行いません。マイクロチップ社は、本書の情報

およびその使用に起因する一切の責任を否認します。マイ

クロチップ社の明示的な書面による承認なしに、生命維持

装置あるいは生命安全用途にマイクロチップ社の製品を使

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

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

して、マイクロチップ社は擁護され、免責され、損害を受

けない事に同意するものとします。暗黙的あるいは明示的

を問わず、マイクロチップ社が知的財産権を保有している

ライセンスは一切譲渡されません。

DS39762F_JP - p. 2

商標

マイクロチップ社の名称とロゴ、Microchip ロゴ、dsPIC、FlashFlex、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、米国

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

商標です。

FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MTP、SEEVAL、Embedded Control Solutions Company は、米国における

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

Silicon Storage Technology は、他の国におけるマイクロチップ・テ

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

Analog-for-the-Digital Age、Application Maestro、BodyCom、chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPF、MPLAB Certified ロゴ、MPLIB、MPLINK、mTouch、Omniscient Code Generation、PICC、PICC-18、PICDEM、PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、SQl、Serial Quad I/O、Total Endurance、TSHARC、UniWinDriver、WiperLock、ZENA および Z-Scale は、米国およびその他の国におけるマイクロ

チップ・テクノロジー社の商標です。

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

スマークです。

GestIC および ULPP は、マイクロチップ・テクノロジー社の子会社

である Microchip Technology Germany II GmbH & Co. & KG 社の他

の国における登録商標です。

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

© 2013, Microchip Technology Incorporated, All Rights Reserved.

ISBN: 978-1-62076-282-0

2013 Microchip Technology Inc.

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

Page 3: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

64/80/100 ピン高性能 1M ビット フラッシュ マイクロコントローラ、Ethernet モジュール内蔵

Ethernet 機能 :

• IEEE 802.3™ 準拠の Ethernet コントローラ

• 10/100/1000Base-T ネットワークと完全互換

• MAC および 10Base-T PHY を内蔵

• 8 KB 送受信パケットバッファ SRAM• 10Base-T ポートを 1 つサポート

• コリジョン発生時の自動再送がプログラマブル

• パディングと CRC 生成がプログラマブル

• エラーパケットの自動拒否がプログラマブル

• アクティビティを表す 2 つの LED インジケータ出力

• バッファ :- 送受信バッファサイズを設定可能

- ハードウェア管理の環状 FIFO 受信バッファ

- バイト単位のランダムおよび順次アクセス

- 内部 DMA による高速メモリコピー

- 各種プロトコル用のチェックサム計算をハードウェアで支援

• MAC:

- ユニキャスト、マルチキャスト、ブロードキャスト パケットをサポート

- ユーザ定義オフセットでのパケット内の 大 64 バイトに対するパターンマッチングがプログラマブル

- 複数のパケット フォーマットによる復帰がプログラマブル

• PHY:

- 波形シェーピング出力フィルタ

柔軟なオシレータ構造 :

• 25 MHz の単一外部クロック源から広範囲のシステムクロックを生成択可能 :- 2.778 ~ 41.667 MHz

• 内部 31 kHz オシレータ

• 32 kHz の Timer1 を使うセカンダリ オシレータ

• フェイルセーフ クロックモニタ :- オシレータ停止時に安全にシャットダウン可能

• オシレータ 2 段階起動

外部メモリバス (100 ピンデバイスのみ ):

• 大 2 MB のアドレス空間

• 8/16 ビット インターフェイス

• 12/16/20 ビット アドレッシング モード

周辺機能の特長 :

• 大電流のシンク / ソース :PORTB と PORTC で 25 mA/25 mA

• 5 つのタイマモジュール (Timer0 ~ Timer4)• 4 つの外部割り込みピン

• 2 つのキャプチャ / コンペア /PWM (CCP) モジュール

• 3 つの拡張キャプチャ / コンペア /PWM (ECCP)モジュール :- 1、2、4 ついずれかの PWM 出力

- 極性が選択可能

- デッドタイムがプログラマブル

- 自動シャットダウンと自動再起動

• SPI (4 つのモード全て ) と I2C™ マスタ / スレーブモードをサポートした 大 2 つのマスタ同期シリアルポート (MSSP) モジュール

• 大 2 つの拡張 USART モジュール :- RS-485、RS-232、LIN/J2602 をサポート

- Start ビットによる自動復帰

- 自動 baud レート検出 (ABD)• 10 ビット アナログ / デジタル (A/D) コンバータ

モジュール ( 大 16 チャンネル ):- 自動アクイジション機能

- スリープ時も変換可能

• 入力マルチプレクサを持つ 2 つのアナログ コンパレータ

• パラレルスレーブ ポート (PSP) モジュール (100 ピンデバイスのみ )

その他の特長 :

• 5.5 V 耐圧の入力ピン ( デジタル専用ピン )• 低消費電力、高速の CMOS フラッシュ技術 :

- ソフトウェアで自己プログラムが可能

• 再入可能なコード向け C コンパイラに 適化されたアーキテクチャ

• 省電力機能 :- ランモード : CPU と周辺モジュールの両方が動作

- アイドル : CPU のみ動作を停止し、周辺モジュールは動作

- スリープ : CPU と周辺モジュールの両方が動作を停止

• 優先度付きの割り込み

• 8 x 8 シングルサイクルのハードウェア乗算器

• 拡張ウォッチドッグ タイマ (WDT):- 周期は 4 ms ~ 134s の間でプログラミング可能

• 2本のピンを使う 3.3 V単電源インサーキット シリアル プログラミング ™ (ICSP™)

• 2 本のピンを使い、3 つのブレークポイントを備えたインサーキット デバッグ (ICD)

• 2.35 ~ 3.6 V の動作電圧レンジ (Ethernet モジュールを使う場合は 3.1 ~ 3.6 V)

• 2.5 V 内蔵電圧レギュレータ

2013 Microchip Technology Inc. DS39762F_JP - p.3

Page 4: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

デバイス名

フラッシュ プログラム

メモリ ( バイト )

SRAMデータ

メモリ ( バイト )

Ethernet TX/RX

バッファ ( バイト )

I/O 10ビット A/D (ch)

CCP/ECCP

MSSP

EU

SA

RT

コンパレータ

タイマ8/16

ビット

PSP

外部

メモリバス

SPI マスタI2C™

PIC18F66J60 64K 3808 8192 39 11 2/3 1 Yes Yes 1 2 2/3 No No

PIC18F66J65 96K 3808 8192 39 11 2/3 1 Yes Yes 1 2 2/3 No No

PIC18F67J60 128K 3808 8192 39 11 2/3 1 Yes Yes 1 2 2/3 No No

PIC18F86J60 64K 3808 8192 55 15 2/3 1 Yes Yes 2 2 2/3 No No

PIC18F86J65 96K 3808 8192 55 15 2/3 1 Yes Yes 2 2 2/3 No No

PIC18F87J60 128K 3808 8192 55 15 2/3 1 Yes Yes 2 2 2/3 No No

PIC18F96J60 64K 3808 8192 70 16 2/3 2 Yes Yes 2 2 2/3 Yes Yes

PIC18F96J65 96K 3808 8192 70 16 2/3 2 Yes Yes 2 2 2/3 Yes Yes

PIC18F97J60 128K 3808 8192 70 16 2/3 2 Yes Yes 2 2 2/3 Yes Yes

DS39762F_JP - p.4 2013 Microchip Technology Inc.

Page 5: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ピン配置図

PIC18F66J65

1

2

3

4

5

6

7

8

9

10

11

12

13

14

38

37

36

35

34

33

50 49

17 18 19 20 21 22 23 24 25 26

VD

D

MCLR

VSS

VDDCORE/VCAP

OSC2/CLKO

OSC1/CLKI

15

16

31

40

39

27 28 29 30 32

48

47

46

45

44

43

42

41

54 53 52 5158 57 56 5560 5964 63 62 61

64-Pin TQFP

RB4/KBI0

RB5/KBI1

RB6/KBI2/PGC

VSS

VDD

RB7/KBI3/PGD

RC4/SDI1/SDA1

RC3/SCK1/SCL1

RC2/ECCP1/P1A

RC5/SDO1

VDDRX

TPIN+

TPIN-

VSSRX

RE

2/P

2B

RE

3/P

3C

RE

4/P

3B

RE

5/P

1C

RD

0/P

1B

RD

1/E

CC

P3

/P3

A

RD

2/C

CP

4/P

3D

VS

SP

LL

VD

DP

LL

RB

IAS

VS

ST

X

TP

OU

T+

TP

OU

T-

VD

DT

X

VS

S

RE1/P2C

RE0/P2D

RG4/CCP5/P1D

RF7/SS1

RB0/INT0/FLT0

RB1/INT1

RB2/INT2

RB3/INT3

RF5/AN10/CVREF

RF4/AN9

RF3/AN8

RF2/AN7/C1OUT

RF6/AN11

EN

VR

EG

RF

1/A

N6/

C2O

UT

AV

DD

AV

SS

RA

3/A

N3/

VR

EF+

RA

2/A

N2

/VR

EF-

RA

1/L

ED

B/A

N1

RA

0/L

ED

A/A

N0

VS

S

VD

D

RA

4/T

0CK

I

RA

5/A

N4

RC

1/T

1O

SI/

EC

CP

2/P

2A

RC

0/T

1OS

O/T

13C

KI

RC

7/R

X1

/DT

1

RC

6/T

X1

/CK

1

PIC18F67J60

PIC18F66J60

2013 Microchip Technology Inc. DS39762F_JP - p.5

Page 6: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ピン配置図 ( 続き )

PIC18F86J65

3

4

5

6

7

8

9

10

11

12

13

14

15

16

48

47

46

45

44

43

42

41

4039

64 63 62 61

21 22 23 24 25 26 27 28 29 30 31 32

RE

2/P

2B

RE

3/P

3C

(2)

RE

4/P

3B

(2)

RE

5/P

1C

(2)

RE

6/P

1B

(2)

RE

7/E

CC

P2

(1) /P

2A(1

)

RD

0

VD

D

VS

S

RD

1

RD

2

RE1/P2C

RE0/P2D

RG0/ECCP3/P3A

RG1/TX2/CK2

RG2/RX2/DT2

RG3/CCP4/P3D

MCLR

RG4/CCP5/P1D

VSS

VDDCORE/VCAP

RF7/SS1

RB0/INT0/FLT0

RB1/INT1

RB2/INT2

RB3/INT3RB4/KBI0

RB5/KBI1

RB6/KBI2/PGC

VSS

OSC2/CLKO

OSC1/CLKI

VDD

RB7/KBI3/PGD

RC4/SDI1/SDA1

RC3/SCK1/SCL1

RC2/ECCP1/P1A

EN

VR

EG

RF

1/A

N6

/C2

OU

T

AV

DD

AV

SS

RA

3/A

N3

/VR

EF+

RA

2/A

N2

/VR

EF-

RA

1/LE

DB

/AN

1

RA

0/LE

DA

/AN

0

VS

S

VD

D

RA

4/T

0C

KI

RA

5/A

N4

RC

1/T

1OS

I/E

CC

P2(1

) /P2A

(1)

RC

0/T

1O

SO

/T1

3C

KI

RC

7/R

X1/

DT

1

RC

6/T

X1

/CK

1

RC5/SDO1

RH

1

RH

0

1

2

RH2

RH3

17

18

RH7/AN15/P1B(2)

RH6/AN14/P1C(2)

RH

5/A

N1

3/P

3B(2

)

RH

4/A

N12

/P3

C(2

)

RJ5

RJ4

37

50

49

19

20

33 34 35 36 38

58

57

56

55

54

53

52

51

60

59

68 67 66 6572 71 70 6974 7378 77 76 757980

80-Pin TQFP

Note 1: ECCP2/P2A ピンの配置は CCP2MX コンフィグレーション ビットの設定によって決まります。

2: P1B、P1C、P3B、P3C ピンの配置は ECCPMX コンフィグレーション ビットの設定によって決まります。

RF5/AN10/CVREF

RF4/AN9

RF3/AN8

RF2/AN7/C1OUT

RF6/AN11

VS

SP

LL

VD

DP

LL

RB

IAS

VS

ST

X

TP

OU

T+

TP

OU

T-

VD

DT

X

VDDRX

TPIN+

TPIN-

VSSRX

PIC18F87J60

PIC18F86J60

DS39762F_JP - p.6 2013 Microchip Technology Inc.

Page 7: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ピン配置図 ( 続き )

92

94

93

91

90

89

88

87

86

85

84

83

82

81

80

79

78

20

2

3

45

6

7

89

10

11

12

13

14

15

16

65

64

63

62

61

60

59

26

56

45

44

43

42

41

40

39

28

29

30

31

32

33

34

35

36

37

38

1718

19

21

22

95

1

76

77

72

71

70

69

68

67

66

75

74

73

58

57

2423

25

96

98

97

99

27

46

47

48

49

50

55

54

53

52

51

10

0

100-Pin TQFP

RB0/INT0/FLT0RB1/INT1RB2/INT2

RB3/INT3/ECCP2(1)/P2A(1)

RB4/KBI0

RB5/KBI1

RB6/KBI2/PGC

VSS

OSC2/CLKO

OSC1/CLKI

VDD

RB7/KBI3/PGD

RC4/SDI1/SDA1

RC3/SCK1/SCL1

RC2/ECCP1/P1A

RC5/SDO1

RJ7

/UB

RJ6/LB

RJ2/WRL

RJ3/WRH

RE1/AD9/WR/P2C

RE0/AD8/RD/P2DRG0/ECCP3/P3A

RG1/TX2/CK2

RG2/RX2/DT2

RG3/CCP4/P3D

MCLRRG4/CCP5/P1D

VSS

VDDCORE/VCAP

RF7/SS1

RH2/A18

RH3/A19

RH7/AN15/P1B(2)

RH6/AN14/P1C(2)

RF5/AN10/CVREF

RF4/AN9RF3/AN8

RF2/AN7/C1OUT

RF6/AN11

RE

2/A

D1

0/C

S/P

2B

RE

3/A

D11

/P3

C(2

)

RE

4/A

D1

2/P

3B

(2)

RE

5/A

D1

3/P

1C

(2)

RE

6/A

D1

4/P

1B

(2)

RE

7/A

D1

5/E

CC

P2

(1) /P

2A

(1)

RD

0/A

D0/

PS

P0

VD

D

VS

S

RD

1/A

D1/

PS

P1

RD

2/A

D2/

PS

P2

RD

3/A

D3/

PS

P3

RD

4/A

D4/

PS

P4

/SD

O2

RD

5/A

D5/

PS

P5

/SD

I2/S

DA

2

RD

6/A

D6/

PS

P6

/SC

K2/

SC

L2

RJ0

/AL

E

RJ1

/OE

RH

1/A

17R

H0

/A16

EN

VR

EG

RF

1/A

N6/

C2

OU

T

AV

DD

AV

SS

RA

3/A

N3/

VR

EF+

RA

2/A

N2

/VR

EF-

RA

1/L

ED

B/A

N1

RA

0/L

ED

A/A

N0

VS

S

VD

D

RA

4/T

0CK

I

RA

5/A

N4

RC

1/T

1O

SI/

EC

CP

2(1

) /P2

A(1

)

RC

0/T

1OS

O/T

13C

KI

RC

7/R

X1

/DT

1R

C6

/TX

1/C

K1

RH

5/A

N1

3/P

3B

(2)

RH

4/A

N1

2/P

3C

(2)

RJ5

/CE

RJ4

/BA

0

VSS

VS

SP

LL

VD

DP

LL

RB

IAS

VS

ST

X

TP

OU

T+

TP

OU

T-

VD

DT

X

VDDRX

TPIN+

TPIN-

VSSRX

RG6RG5

RF0/AN5

VDD

RG

7

VS

S

RD

7/A

D7/

PS

P7

/SS

2

VDD

PIC18F96J65PIC18F97J60

Note 1: ECCP2/P2A ピンの配置は CCP2MX コンフィグレーション ビットとプロセッサモードの設定によって決まります。

2: P1B、P1C、P3B、P3C ピンの配置は ECCPMX コンフィグレーション ビットの設定によって決まります。

NC

PIC18F96J60

82

81

80

79

78

76

77

2013 Microchip Technology Inc. DS39762F_JP - p.7

Page 8: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

目次

1.0 デバイス概要 .............................................................................................................................................................................. 112.0 PIC18FJ マイクロコントローラの使用にあたってのガイドライン........................................................................................... 433.0 オシレータの設定....................................................................................................................................................................... 494.0 電力管理モード .......................................................................................................................................................................... 555.0 リセット ..................................................................................................................................................................................... 636.0 メモリ構成 ................................................................................................................................................................................. 777.0 フラッシュ プログラムメモリ.................................................................................................................................................. 1058.0 外部メモリバス ........................................................................................................................................................................ 1159.0 8 x 8 ハードウェア乗算器 ........................................................................................................................................................ 12710.0 割り込み ................................................................................................................................................................................... 12911.0 I/O ポート ................................................................................................................................................................................. 14512.0 Timer0 モジュール ................................................................................................................................................................... 17113.0 Timer1 モジュール ................................................................................................................................................................... 17514.0 Timer2 モジュール ................................................................................................................................................................... 18015.0 Timer3 モジュール ................................................................................................................................................................... 18316.0 Timer4 モジュール ................................................................................................................................................................... 18717.0 キャプチャ / コンペア /PWM (CCP) モジュール...................................................................................................................... 18918.0 拡張キャプチャ / コンペア /PWM (ECCP) モジュール ............................................................................................................ 19719.0 Ethernet モジュール ................................................................................................................................................................. 21720.0 マスタ同期シリアルポート (MSSP) モジュール ...................................................................................................................... 26921.0 EUSART (Enhanced Universal Synchronous Asynchronous Receiver Transmitter) ............................................................... 31522.0 10 ビット A/D コンバータ (ADC) モジュール .......................................................................................................................... 33923.0 コンパレータ モジュール ......................................................................................................................................................... 34924.0 コンパレータ参照電圧モジュール ........................................................................................................................................... 35525.0 CPU の特殊機能 ....................................................................................................................................................................... 35926.0 命令セットの概要..................................................................................................................................................................... 37527.0 開発サポート ............................................................................................................................................................................ 42528.0 電気的特性 ............................................................................................................................................................................... 42929.0 パッケージ情報 ........................................................................................................................................................................ 465補遺 A: 改訂履歴 ............................................................................................................................................................................. 475補遺 B: デバイス間の違い ............................................................................................................................................................... 476索引 .................................................................................................................................................................................................... 477マイクロチップ社ウェブサイト......................................................................................................................................................... 493お客様向け変更通知サービス ............................................................................................................................................................ 493カスタマサポート .............................................................................................................................................................................. 493お客様アンケート .............................................................................................................................................................................. 494製品識別システム .............................................................................................................................................................................. 495

DS39762F_JP - p.8 2013 Microchip Technology Inc.

Page 9: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

大切なお客様へ

マイクロチップ社は、弊社製品を存分にご活用頂くために、文書の作成に 善の努力を尽くしています。このため、弊社はお

客様のニーズにより的確にお応えできるように、継続的に文書の改善に努めて参ります。弊社は新刊、更新版をリリースする

際に内容の見直しと充実を図って参ります。

本書に関してご質問またはご意見がございましたら、マーケティング コミュニケーション部宛てにメールまたは FAX でご連絡

ください。メールの宛先は [email protected] 、FAX 番号は (480) 792-4150 です。FAX の場合、本書の巻末にある

「お客様アンケート」フォームをご利用ください。皆様からのご意見をお待ちしております。

新のデータシート

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

http://www.microchip.com

データシートのリビジョンは、各ページの欄外下隅に記載されている文書番号で確認できます。文書番号の末尾文字がバージョン番号を表します ( 例 : DS30000A_JP であれば文書 DS30000_JP のバージョン A)。

エラッタ

現行デバイスの動作とデータシート上の動作との間に微細な差違が生じた場合、その相違点と推奨対応策を記載したエラッタシートを発行する場合があります。弊社は、デバイスや文書に関する問題を認識した時点でエラッタを発行します。エラッタには、該当するシリコンと文書のリビジョンを明記しています。

ご使用のデバイス向けにエラッタシートが存在するかどうかは、以下の方法で確認できます。

• マイクロチップ社のウェブサイト : http://www.microchip.com• 寄のマイクロチップ社営業所 ( 本書の 終ページ参照 )お問い合わせの際は、ご使用のデバイス、シリコンとデータシートのリビジョン ( 文書番号含む ) をお知らせください。

お客様向け変更通知システム

弊社ウェブサイト (www.microchip.com) でご登録頂くと、弊社全製品に関する 新情報をお受け取り頂けます。

2013 Microchip Technology Inc. DS39762F_JP - p.9

Page 10: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.10 2013 Microchip Technology Inc.

Page 11: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

1.0 デバイス概要

本データシートには、下記の各デバイスに関する情報を記載しています。

このファミリは、高い演算性能と豊富な機能をきわめて低価格で実現したPIC18マイクロコントローラの伝統的な利点を継承しつつ、新たに投入された低電圧デバイスファミリです。このような特長を持つPIC18F97J60 ファミリは、高性能と低コストの両立が強く求められる多くのアプリケーションに 適です。

1.1 コアの特長

1.1.1 オシレータの選択肢と機能

PIC18F97J60ファミリでは以下の5つのオシレータが選択でき、アプリケーション ハードウェアを開発する際に幅広い選択が可能です。

• 水晶またはセラミック振動子用の 2 種類の水晶振動子モード

• 4 分周クロック出力を備えた 2 種類の外部クロックモード

• PLL (Phase Lock Loop) 周波数マルチプライヤ :外部オシレータモードでは、PLL を使って 大41.667 MHz のクロック速度を実現できます。

• 31 kHz 出力固定の内部 RC オシレータ :タイミング精度が要求されないアプリケーションで超低消費電力を実現できます。

内部オシレータ ブロックが安定した参照クロック源を提供し、このファミリの動作信頼性をさらに高める以下の機能を実現します。

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

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

1.1.2 メモリ空間の拡張

PIC18F97J60 ファミリは、アプリケーション コード格納用に64~128 KBの広大なプログラムメモリを備えています。プログラムメモリに使っているフラッシュセルは、 低でも 100 サイクルの消去 / 書き込み耐性があります。リフレッシュなしのデータ保持期間は控えめに見積もっても 20 年以上です。

また、PIC18F97J60ファミリはアプリケーション データの格納用として3808バイトの大容量データRAMも備えています。

1.1.3 外部メモリバス

128 KB のメモリが不足した場合のために、100 ピンのPIC18F97J60 ファミリは外部メモリバス (EMB) を実装しています。EMB を使うと、コントローラの内部プログラム カウンタは 大 2 MB のメモリ空間をアドレス指定でき、8 ビットデバイスとしては類を見ないほど多くのデータにアクセスできます。EMB を利用すると、以下のように多彩なメモリ使用法が可能です。

• 内蔵メモリと 大 2 MB の外部メモリを組み合わせて使う

• 外部フラッシュメモリを書き換え可能なアプリケーション コードまたは大容量のデータテーブル用として使う

• 外部 RAM デバイスを大容量のデータ格納用として使う

1.1.4 拡張命令セット

PIC18F97J60 ファミリでは、8 つの新命令とインデックス付きアドレッシング モードを追加した拡張PIC18 命令セットを使えます。これらの拡張命令は、もともとC言語等の高級言語向けに開発されたリエントラント アプリケーション コードを 適化するために設計されており、デバイス コンフィグレーションとして有効にできます。

1.1.5 容易なデバイス移行

メモリサイズに関係なく、全てのデバイスが共通の充実した周辺モジュール機能セットを実装するため、アプリケーションの高性能化 / 高機能化に合わせて円滑な移行が可能です。

• PIC18F66J60 • PIC18F87J60

• PIC18F66J65 • PIC18F96J60

• PIC18F67J60 • PIC18F96J65

• PIC18F86J60 • PIC18F97J60

• PIC18F86J65

2013 Microchip Technology Inc. DS39762F_JP - p.11

Page 12: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

1.2 その他の特殊機能

• 通信 :PIC18F97J60 ファミリは、 大 2 つの独立した拡張 USART、SPI と I2C™ ( マスタおよびスレーブ ) の両方の動作モードをサポートする 大 2つのマスタ SSP モジュール等、幅広いシリアル通信機能を備えています。また、汎用 I/O ポートの 1つを 8 ビット パラレルスレーブ ポートとして設定すると、プロセッサ間の直接通信が可能です。

• CCPモジュール :本ファミリの全デバイスは2つのキャプチャ / コンペア /PWM (CCP) モジュールと 3つの拡張 CCP (ECCP) モジュールを内蔵しており、制御アプリケーションに 大限の柔軟性を提供します。 大 4 つの異なるタイムベースを使って、数種類の処理を同時に実行できます。3 つの ECCP モジュールはそれぞれ 大 4 つの PWM 出力を持ち、合計 12 の PWM をサポートできます。ECCP モジュールはこの他にも極性選択、プログラマブルデッドタイム、自動シャットダウン / リスタート、ハーフブリッジ / フルブリッジ出力モード等、多くの便利な機能を備えています。

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

• 拡張ウォッチドッグ タイマ (WDT): 拡張 WDT には16 ビットのプリスケーラがあり、タイムアウト レンジを広くとる事ができます。タイムアウト時間の詳細はセクション 28.0「電気的特性」を参照してください。

1.3 ファミリ各製品の詳細

PIC18F97J60 ファミリのデバイスは、64 ピン、80 ピン、100 ピンのパッケージで提供しています。図 1-1、図 1-2、図 1-3 にこれら 3 つのグループのブロック図を示します。

デバイスによって下記の 4 項目が異なります。

1. フラッシュ プログラムメモリ(64 KBのPIC18FX6J60から 128 KB の PIC18FX7J60 まで 3 種類の容量をラインナップ )

2. A/D チャンネル数 (64 ピンデバイスは 11、80 ピンデバイスは 15、100 ピンデバイスは 16)

3. シリアル通信モジュール (64 ピンデバイスはEUSART モジュールと MSSP モジュール各 1、80 ピンデバイスは EUSART モジュール 2 とMSSP モジュール 1、100 ピンデバイスはEUSART モジュールと MSSP モジュール各 2)

4. I/O ピンの数 (64 ピンデバイスは 39、80 ピンデバイスは 55、100 ピンデバイスは 70)

その他の機能はファミリ内の全デバイスで共通です。表 1-1、表 1-2、表 1-3 に、各デバイスの機能の一覧をまとめます。

表 1-4、表 1-5、表 1-6 に、各デバイスのピン配置を示します。

DS39762F_JP - p.12 2013 Microchip Technology Inc.

Page 13: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 1-1: PIC18F97J60 ファミリ (64 ピンデバイス ) の機能

表 1-2: PIC18F97J60 ファミリ (80 ピンデバイス ) の機能

特長 PIC18F66J60 PIC18F66J65 PIC18F67J60

動作周波数 DC ~ 41.667 MHz DC ~ 41.667 MHz DC ~ 41.667 MHz

プログラムメモリ ( バイト ) 64K 96K 128K

プログラムメモリ ( 命令 ) 32764 49148 65532

データメモリ ( バイト ) 3808

割り込み要因 26

I/O ポート ポート A、B、C、D、E、F、G

I/O ピン数 39

タイマ 5

キャプチャ / コンペア /PWM モジュール 2

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

シリアル通信 MSSP (1)、拡張 USART (1)

Ethernet 通信 (10Base-T) あり

パラレルスレーブ ポート通信 (PSP) なし

外部メモリバス なし

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

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

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

パッケージ 64 ピン TQFP

特長 PIC18F86J60 PIC18F86J65 PIC18F87J60

動作周波数 DC ~ 41.667 MHz DC ~ 41.667 MHz DC ~ 41.667 MHz

プログラムメモリ ( バイト ) 64K 96K 128K

プログラムメモリ ( 命令 ) 32764 49148 65532

データメモリ ( バイト ) 3808

割り込み要因 27

I/O ポート ポート A、B、C、D、E、F、G、H、J

I/O ピン数 55

タイマ 5

キャプチャ / コンペア /PWM モジュール 2

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

シリアル通信 MSSP (1)、拡張 USART (2)

Ethernet 通信 (10Base-T) あり

パラレルスレーブ ポート通信 (PSP) なし

外部メモリバス なし

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

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

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

パッケージ 80 ピン TQFP

2013 Microchip Technology Inc. DS39762F_JP - p.13

Page 14: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 1-3: PIC18F97J60 ファミリ (100 ピンデバイス ) の機能

特長 PIC18F96J60 PIC18F96J65 PIC18F97J60

動作周波数 DC ~ 41.667 MHz DC ~ 41.667 MHz DC ~ 41.667 MHz

プログラムメモリ ( バイト ) 64K 96K 128K

プログラムメモリ ( 命令 ) 32764 49148 65532

データメモリ ( バイト ) 3808

割り込み要因 29

I/O ポート ポート A、B、C、D、E、F、G、H、J

I/O ピン数 70

タイマ 5

キャプチャ / コンペア /PWM モジュール 2

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

シリアル通信 MSSP (2)、拡張 USART (2)

Ethernet 通信 (10Base-T) あり

パラレルスレーブ ポート通信 (PSP) あり

外部メモリバス あり

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

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

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

パッケージ 100 ピン TQFP

DS39762F_JP - p.14 2013 Microchip Technology Inc.

Page 15: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 1-1: PIC18F66J60/66J65/67J60 (64 ピン ) ブロック図

InstructionDecode and

Control

PORTAData Latch

Data Memory(3808 Bytes)

Address Latch

Data Address<12>

12

AccessBSR FSR0FSR1FSR2

inc/declogic

Address

4 12 4

PCH PCL

PCLATH

8

31 Level Stack

Program Counter

PRODLPRODH

8 x 8 Multiply

8

BITOP88

ALU<8>

Address Latch

Program Memory(64, 96, 128 Kbytes)

Data Latch

20

8

8

Table Pointer<21>

inc/dec logic

21

8

Data Bus<8>

Table Latch8

IR

12

3

PCLATU

PCU

Note 1: I/O ポートピンに関しては表 1-4 を参照してください。

2: BOR 機能は内蔵電圧レギュレータが有効の場合に動作します。

EUSART1

Comparators

MSSP1

Timer2Timer1 Timer3Timer0

ECCP1

ADC10-Bit

W

Instruction Bus <16>

STKPTR Bank

8

State MachineControl Signals

Decode

8

8

ECCP2

ROM Latch

ECCP3 CCP4 CCP5

PORTC

PORTD

PORTE

PORTF

PORTG

RA0:RA5(1)

RC0:RC7(1)

RD0:RD2(1)

RE0:RE5(1)

RF1:RF7(1)

RG4(1)

PORTB

RB0:RB7(1)

Timer4

OSC1/CLKIOSC2/CLKO

VDD,

TimingGeneration

VSS MCLR

Power-upTimer

OscillatorStart-up Timer

Power-onReset

WatchdogTimer

Brown-outReset(2)

Precision

ReferenceBand Gap

INTRCOscillator

RegulatorVoltage

VDDCORE/VCAP

ENVREG

Ethernet

2013 Microchip Technology Inc. DS39762F_JP - p.15

Page 16: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 1-2: PIC18F86J60/86J65/87J60 (80 ピン ) ブロック図

PRODLPRODH

8 x 8 Multiply

8

BITOP88

ALU<8>

8

83

W8

8

8

InstructionDecode &

Control

State MachineControl Signals

PORTA

PORTC

PORTD

PORTE

PORTF

PORTG

RA0:RA5(1)

RC0:RC7(1)

RD0:RD2(1)

RE0:RE7(1)

RF1:RF7(1)

RG0:RG4(1)

PORTB

RB0:RB7(1)

PORTH

RH0:RH7(1)

PORTJ

RJ4:RJ5(1)

EUSART1

Comparators

MSSP1

Timer2Timer1 Timer3Timer0

ECCP1

ADC10-Bit

EUSART2ECCP2 ECCP3 CCP4 CCP5

Timer4

Note 1: I/O ポートピンに関しては表 1-5 を参照してください。

2: BOR 機能は内蔵電圧レギュレータが有効の場合に動作します。

OSC1/CLKIOSC2/CLKO

VDD, VSS

TimingGeneration

MCLR

Power-upTimer

OscillatorStart-up Timer

Power-onReset

WatchdogTimer

Brown-outReset(2)

Precision

ReferenceBand Gap

INTRCOscillator

RegulatorVoltage

VDDCORE/VCAP

ENVREG

Data Latch

Data Memory(3808 Bytes)

Address Latch

Data Address<12>

12

AccessBSR FSR0FSR1FSR2

inc/declogic

Address

4 12 4

PCH PCL

PCLATH

8

31 Level Stack

Program Counter

20

Table Pointer<21>

inc/dec logic

21

8

Data Bus<8>

Table Latch8

IR

12

PCLATU

PCU

Instruction Bus <16>

STKPTR Bank

DecodeROM Latch

Ethernet

Address Latch

Program Memory(64, 96, 128 Kbytes)

Data Latch

DS39762F_JP - p.16 2013 Microchip Technology Inc.

Page 17: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 1-3: PIC18F96J60/96J65/97J60 (100 ピン ) ブロック図

PRODLPRODH

8 x 8 Multiply

8

BITOP88

ALU<8>

8

83

W8

8

8

InstructionDecode &

Control

Data Address<12>

12

AccessBSR FSR0FSR1FSR2

inc/declogic

Address

4 12 4

PCH PCL

PCLATH

8

31 Level Stack

Program Counter

20

Table Pointer<21>

inc/dec logic

21

8

Data Bus<8>

Table Latch

8

IR

12

ROM Latch

PCLATU

PCU

Instruction Bus <16>

STKPTR Bank

State MachineControl Signals

Decode

Sys

tem

Bus

Int

erfa

ce

AD15:AD0, A19:A16(Multiplexed with PORTD,PORTE and PORTH)

PORTA

PORTC

PORTD

PORTE

PORTF

PORTG

RA0:RA5(1)

RC0:RC7(1)

RD0:RD7(1)

RE0:RE7(1)

RF0:RF7(1)

RG0:RG7(1)

PORTB

RB0:RB7(1)

PORTH

RH0:RH7(1)

PORTJ

RJ0:RJ7(1)

EUSART1

Comparators

MSSP1

Timer2Timer1 Timer3Timer0

ECCP1

ADC10-Bit

EUSART2ECCP2 ECCP3 MSSP2CCP4 CCP5

Timer4

Note 1: I/O ポートピンに関しては表 1-6 を参照してください。

2: BOR 機能は内蔵電圧レギュレータが有効の場合に動作します。

OSC1/CLKIOSC2/CLKO

VDD, VSS

TimingGeneration

MCLR

Power-upTimer

OscillatorStart-up Timer

Power-onReset

WatchdogTimer

Brown-outReset(2)

Precision

ReferenceBand Gap

INTRCOscillator

RegulatorVoltage

VDDCORE/VCAP

ENVREG

Ethernet

Data Latch

Data Memory(3808 Bytes)

Address Latch

Address Latch

Program Memory(64, 96, 128 Kbytes)

Data Latch

2013 Microchip Technology Inc. DS39762F_JP - p.17

Page 18: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 1-4: PIC18F66J60/66J65/67J60 のピン配置と入出力の説明

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

MCLR 7 I ST マスタクリア ( リセット ) 入力。このピンはアクティブ Low でデバイスをリセット

OSC1/CLKIOSC1

CLKI

39I

I

ST

CMOS

オシレータ水晶振動子または外部クロック入力オシレータ水晶振動子入力または外部クロック源入力。内部 RC モードに設定されている場合は ST バッファ、その他の場合は CMOS 外部クロック源入力。常に OSC1 ピン機能と関連付けられている ( 関連する OSC2/CLKO ピン参照 )

OSC2/CLKOOSC2

CLKO

40O

O

-

-

オシレータ水晶振動子またはクロック出力オシレータ水晶振動子出力。水晶振動子または振動子に接続( 水晶振動子モードの場合 )内部 RC モードの場合、OSC2 ピンは CLKO を出力する。その周波数は OSC1 の 1/4 で、これが命令サイクルの速度を示す

PORTA は双方向 I/O ポート

RA0/LEDA/AN0RA0LEDAAN0

24I/OOI

TTL-

アナログ

デジタル I/OEthernet LEDA インジケータ出力アナログ入力 0

RA1/LEDB/AN1RA1LEDBAN1

23I/OOI

TTL-

アナログ

デジタル I/OEthernet LEDB インジケータ出力アナログ入力 1

RA2/AN2/VREF-RA2AN2VREF-

22I/OII

TTLアナログアナログ

デジタル I/Oアナログ入力 2A/D 参照電圧 (Low) 入力

RA3/AN3/VREF+RA3AN3VREF+

21I/OII

TTLアナログアナログ

デジタル I/Oアナログ入力 3A/D 参照電圧 (High) 入力

RA4/T0CKIRA4T0CKI

28I/OI

STST

デジタル I/OTimer0 外部クロック入力

RA5/AN4RA5AN4

27I/OI

TTLアナログ

デジタル I/Oアナログ入力 4

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

DS39762F_JP - p.18 2013 Microchip Technology Inc.

Page 19: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTB は双方向 I/O ポート。PORTB は全ての入力に対し内部弱プルアップ有無をソフトウェアで設定可能

RB0/INT0/FLT0RB0INT0FLT0

3I/OII

TTLSTST

デジタル I/O外部割り込み 0拡張 PWM フォルト入力 (ECCP モジュール )。ソフトウェアで有効化

RB1/INT1RB1INT1

4I/OI

TTLST

デジタル I/O外部割り込み 1

RB2/INT2RB2INT2

5I/OI

TTLST

デジタル I/O外部割り込み 2

RB3/INT3RB3INT3

6I/OI

TTLST

デジタル I/O外部割り込み 3

RB4/KBI0RB4KBI0

44I/OI

TTLTTL

デジタル I/O状態変化割り込みピン

RB5/KBI1RB5KBI1

43I/OI

TTLTTL

デジタル I/O状態変化割り込みピン

RB6/KBI2/PGCRB6KBI2PGC

42I/OI

I/O

TTLTTLST

デジタル I/O状態変化割り込みピン インサーキット デバッガ /ICSP™ プログラミング用クロックピン

RB7/KBI3/PGDRB7KBI3PGD

37I/OI

I/O

TTLTTLST

デジタル I/O状態変化割り込みピン インサーキット デバッガ /ICSP プログラミング用データピン

表 1-4: PIC18F66J60/66J65/67J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

2013 Microchip Technology Inc. DS39762F_JP - p.19

Page 20: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTC は双方向 I/O ポート

RC0/T1OSO/T13CKIRC0T1OSOT13CKI

30I/OOI

ST-

ST

デジタル I/OTimer1 オシレータ出力 Timer1/Timer3 外部クロック入力

RC1/T1OSI/ECCP2/P2ARC1T1OSIECCP2P2A

29I/OI

I/OO

STCMOS

ST-

デジタル I/OTimer1 オシレータ入力キャプチャ 2 入力 / コンペア 2 出力 /PWM2 出力ECCP2 PWM 出力 A

RC2/ECCP1/P1ARC2ECCP1P1A

33I/OI/OO

STST-

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

RC3/SCK1/SCL1RC3SCK1SCL1

34I/OI/OI/O

STSTST

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

RC4/SDI1/SDA1RC4SDI1SDA1

35I/OI

I/O

STSTST

デジタル I/OSPI データ入力I2C データ入出力

RC5/SDO1RC5SDO1

36I/OO

ST-

デジタル I/OSPI データ出力

RC6/TX1/CK1RC6TX1CK1

31I/OOI/O

ST-

ST

デジタル I/OEUSART1 非同期送信 EUSART1 同期クロック ( 関連する RX1/DT1 ピン参照 )

RC7/RX1/DT1RC7RX1DT1

32I/OI

I/O

STSTST

デジタル I/OEUSART1 非同期受信EUSART1 同期データ ( 関連する TX1/CK1 ピン参照 )

表 1-4: PIC18F66J60/66J65/67J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

DS39762F_JP - p.20 2013 Microchip Technology Inc.

Page 21: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTD は双方向 I/O ポート

RD0/P1BRD0P1B

60I/OO

ST-

デジタル I/OECCP1 PWM 出力 B

RD1/ECCP3/P3ARD1ECCP3P3A

59I/OI/OO

STST-

デジタル I/Oキャプチャ 3 入力 / コンペア 3 出力 /PWM3 出力ECCP3 PWM 出力 A

RD2/CCP4/P3DRD2CCP4P3D

58I/OI/OO

STST-

デジタル I/Oキャプチャ 4 入力 / コンペア 4 出力 /PWM4 出力CCP4 PWM 出力 D

表 1-4: PIC18F66J60/66J65/67J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

2013 Microchip Technology Inc. DS39762F_JP - p.21

Page 22: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTE は双方向 I/O ポート

RE0/P2DRE0P2D

2I/OO

ST-

デジタル I/OECCP2 PWM 出力 D

RE1/P2CRE1P2C

1I/OO

ST-

デジタル I/OECCP2 PWM 出力 C

RE2/P2BRE2P2B

64I/OO

ST-

デジタル I/OECCP2 PWM 出力 B

RE3/P3CRE3P3C

63I/OO

ST-

デジタル I/OECCP3 PWM 出力 C

RE4/P3BRE4P3B

62I/OO

ST-

デジタル I/OECCP3 PWM 出力 B

RE5/P1CRE5P1C

61I/OO

ST-

デジタル I/OECCP1 PWM 出力 C

表 1-4: PIC18F66J60/66J65/67J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

DS39762F_JP - p.22 2013 Microchip Technology Inc.

Page 23: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTF は双方向 I/O ポート

RF1/AN6/C2OUTRF1AN6C2OUT

17I/OIO

STアナログ

-

デジタル I/Oアナログ入力 6コンパレータ 2 出力

RF2/AN7/C1OUTRF2AN7C1OUT

16I/OIO

STアナログ

-

デジタル I/Oアナログ入力 7コンパレータ 1 出力

RF3/AN8RF3AN8

15I/OI

STアナログ

デジタル I/Oアナログ入力 8

RF4/AN9RF4AN9

14I/OI

STアナログ

デジタル I/Oアナログ入力 9

RF5/AN10/CVREF

RF5AN10CVREF

13I/OIO

STアナログ

-

デジタル I/Oアナログ入力 10 コンパレータの参照電圧出力

RF6/AN11RF6AN11

12I/OI

STアナログ

デジタル I/Oアナログ入力 11

RF7/SS1RF7SS1

11I/OI

STTTL

デジタル I/OSPI スレーブ選択入力

表 1-4: PIC18F66J60/66J65/67J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

2013 Microchip Technology Inc. DS39762F_JP - p.23

Page 24: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTG は双方向 I/O ポート

RG4/CCP5/P1DRG4CCP5P1D

8I/OI/OO

STST-

デジタル I/Oキャプチャ 5 入力 / コンペア 5 出力 /PWM5 出力ECCP1 PWM 出力 D

VSS 9, 25, 41, 56 P - ロジックと I/O ピンのグランド参照電圧

VDD 26, 38, 57 P - 周辺デジタルロジックおよび I/O ピン用の正電源

AVSS 20 P - アナログ モジュール用のグランド参照電圧

AVDD 19 P - アナログ モジュール用の正電源

ENVREG 18 I ST 内蔵電圧レギュレータのイネーブル

VDDCORE/VCAP

VDDCORE

VCAP

10P

P

-

-

コアロジック電源または外部フィルタ コンデンサ接続マイクロコントローラ コアロジックの正電源 ( レギュレータ無効 )外部フィルタ コンデンサ接続 ( レギュレータ有効 )

VSSPLL 55 P - Ethernet PHY PLL のグランド参照電圧

VDDPLL 54 P - Ethernet PHY PLL の 3.3 V 正電源

VSSTX 52 P - Ethernet PHY 送信サブシステムのグランド参照電圧

VDDTX 49 P - Ethernet PHY 送信サブシステムの 3.3 V 正電源

VSSRX 45 P - Ethernet PHY 受信サブシステムのグランド参照電圧

VDDRX 48 P - Ethernet PHY 受信サブシステムの 3.3 V 正電源

RBIAS 53 I アナログ Ethernet PHY のバイアス電流。抵抗を介して VSS に接続する事。仕様値についてはセクション 19.0「Ethernet モジュール」参照

TPOUT+ 51 O - Ethernet 差動信号出力

TPOUT- 50 O - Ethernet 差動信号出力

TPIN+ 47 I アナログ Ethernet 差動信号入力

TPIN- 46 I アナログ Ethernet 差動信号入力

表 1-4: PIC18F66J60/66J65/67J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

DS39762F_JP - p.24 2013 Microchip Technology Inc.

Page 25: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 1-5: PIC18F86J60/86J65/87J60 のピン配置と入出力の説明

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

MCLR 9 I ST マスタクリア ( リセット ) 入力。このピンはアクティブ Lowでデバイスをリセット

OSC1/CLKIOSC1

CLKI

49I

I

ST

CMOS

オシレータ水晶振動子または外部クロック入力オシレータ水晶振動子入力または外部クロック源入力 内部 RC モードに設定されている場合は ST バッファ、その他の場合は CMOS 外部クロック源入力。常に OSC1 ピン機能と関連付けられている ( 関連する OSC2/CLKO ピン参照 )

OSC2/CLKOOSC2

CLKO

50O

O

-

-

オシレータ水晶振動子またはクロック出力オシレータ水晶振動子出力。水晶振動子または振動子に接続 ( 水晶振動子モードの場合 )内部 RC モードの場合、OSC2 ピンは CLKO を出力する。その周波数は OSC1 の 1/4 で、これが命令サイクルの速度を示す

PORTA は双方向 I/O ポート

RA0/LEDA/AN0RA0LEDAAN0

30I/OOI

TTL-

アナログ

デジタル I/OEthernet LEDA インジケータ出力アナログ入力 0

RA1/LEDB/AN1RA1LEDBAN1

29I/OOI

TTL-

アナログ

デジタル I/OEthernet LEDB インジケータ出力アナログ入力 1

RA2/AN2/VREF-RA2AN2VREF-

28I/OII

TTLアナログアナログ

デジタル I/Oアナログ入力 2A/D 参照電圧 (Low) 入力

RA3/AN3/VREF+RA3AN3VREF+

27I/OII

TTLアナログアナログ

デジタル I/Oアナログ入力 3A/D 参照電圧 (High) 入力

RA4/T0CKIRA4T0CKI

34I/OI

STST

デジタル I/O Timer0 外部クロック入力

RA5/AN4RA5AN4

33I/OI

TTLアナログ

デジタル I/Oアナログ入力 4

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをセットした場合の ECCP2/P2A の既定値のピン割り当てです。

2: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C/P3B/P3C の既定値のピン割り当てです。

3: CCP2MX コンフィグレーション ビットをクリアした場合の ECCP2/P2A の代替ピン割り当てです。

4: ECCPMX コンフィグレーション ビットをクリアした場合の P1B/P1C/P3B/P3C の代替ピン割り当てです。

2013 Microchip Technology Inc. DS39762F_JP - p.25

Page 26: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTB は双方向 I/O ポート。PORTB は全ての入力に対し内部弱プルアップ有無をソフトウェアで設定可能

RB0/INT0/FLT0RB0INT0FLT0

5I/OII

TTLSTST

デジタル I/O外部割り込み 0拡張 PWM フォルト入力 (ECCP モジュール )。ソフトウェアで有効化

RB1/INT1RB1INT1

6I/OI

TTLST

デジタル I/O外部割り込み 1

RB2/INT2RB2INT2

7I/OI

TTLST

デジタル I/O外部割り込み 2

RB3/INT3RB3INT3

8I/OI

TTLST

デジタル I/O外部割り込み 3

RB4/KBI0RB4KBI0

54I/OI

TTLTTL

デジタル I/O状態変化割り込みピン

RB5/KBI1RB5KBI1

53I/OI

TTLTTL

デジタル I/O状態変化割り込みピン

RB6/KBI2/PGCRB6KBI2PGC

52I/OI

I/O

TTLTTLST

デジタル I/O状態変化割り込みピン インサーキット デバッガ /ICSP™ プログラミング用クロックピン

RB7/KBI3/PGDRB7KBI3PGD

47I/OI

I/O

TTLTTLST

デジタル I/O状態変化割り込みピン インサーキット デバッガ /ICSP プログラミング用データピン

表 1-5: PIC18F86J60/86J65/87J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをセットした場合の ECCP2/P2A の既定値のピン割り当てです。

2: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C/P3B/P3C の既定値のピン割り当てです。

3: CCP2MX コンフィグレーション ビットをクリアした場合の ECCP2/P2A の代替ピン割り当てです。

4: ECCPMX コンフィグレーション ビットをクリアした場合の P1B/P1C/P3B/P3C の代替ピン割り当てです。

DS39762F_JP - p.26 2013 Microchip Technology Inc.

Page 27: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTC は双方向 I/O ポート

RC0/T1OSO/T13CKIRC0T1OSOT13CKI

36I/OOI

ST-

ST

デジタル I/OTimer1 オシレータ出力 Timer1/Timer3 外部クロック入力

RC1/T1OSI/ECCP2/P2ARC1T1OSIECCP2(1)

P2A(1)

35I/OI

I/OO

STCMOS

ST-

デジタル I/OTimer1 オシレータ入力キャプチャ 2 入力 / コンペア 2 出力 /PWM2 出力ECCP2 PWM 出力 A

RC2/ECCP1/P1ARC2ECCP1P1A

43I/OI/OO

STST-

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

RC3/SCK1/SCL1RC3SCK1SCL1

44I/OI/OI/O

STSTST

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

RC4/SDI1/SDA1RC4SDI1SDA1

45I/OI

I/O

STSTST

デジタル I/OSPI データ入力I2C データ入出力

RC5/SDO1RC5SDO1

46I/OO

ST-

デジタル I/OSPI データ出力

RC6/TX1/CK1RC6TX1CK1

37I/OOI/O

ST-

ST

デジタル I/OEUSART1 非同期送信 EUSART1 同期クロック ( 関連する RX1/DT1 ピン参照 )

RC7/RX1/DT1RC7RX1DT1

38I/OI

I/O

STSTST

デジタル I/OEUSART1 非同期受信EUSART1 同期データ ( 関連する TX1/CK1 ピン参照 )

表 1-5: PIC18F86J60/86J65/87J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをセットした場合の ECCP2/P2A の既定値のピン割り当てです。

2: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C/P3B/P3C の既定値のピン割り当てです。

3: CCP2MX コンフィグレーション ビットをクリアした場合の ECCP2/P2A の代替ピン割り当てです。

4: ECCPMX コンフィグレーション ビットをクリアした場合の P1B/P1C/P3B/P3C の代替ピン割り当てです。

2013 Microchip Technology Inc. DS39762F_JP - p.27

Page 28: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTD は双方向 I/O ポート

RD0 72 I/O ST デジタル I/O

RD1 69 I/O ST デジタル I/O

RD2 68 I/O ST デジタル I/O

PORTE は双方向 I/O ポート

RE0/P2DRE0P2D

4I/OO

ST-

デジタル I/OECCP2 PWM 出力 D

RE1/P2CRE1P2C

3I/OO

ST-

デジタル I/OECCP2 PWM 出力 C

RE2/P2BRE2P2B

78I/OO

ST-

デジタル I/OECCP2 PWM 出力 B

RE3/P3CRE3P3C(2)

77I/OO

ST-

デジタル I/OECCP3 PWM 出力 C

RE4/P3BRE4P3B(2)

76I/OO

ST-

デジタル I/OECCP3 PWM 出力 B

RE5/P1CRE5P1C(2)

75I/OO

ST-

デジタル I/OECCP1 PWM 出力 C

RE6/P1BRE6P1B(2)

74I/OO

ST-

デジタル I/OECCP1 PWM 出力 B

RE7/ECCP2/P2ARE7ECCP2(3)

P2A(3)

73I/OI/OO

STST-

デジタル I/Oキャプチャ 2 入力 / コンペア 2 出力 /PWM2 出力ECCP2 PWM 出力 A

表 1-5: PIC18F86J60/86J65/87J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをセットした場合の ECCP2/P2A の既定値のピン割り当てです。

2: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C/P3B/P3C の既定値のピン割り当てです。

3: CCP2MX コンフィグレーション ビットをクリアした場合の ECCP2/P2A の代替ピン割り当てです。

4: ECCPMX コンフィグレーション ビットをクリアした場合の P1B/P1C/P3B/P3C の代替ピン割り当てです。

DS39762F_JP - p.28 2013 Microchip Technology Inc.

Page 29: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTF は双方向 I/O ポート

RF1/AN6/C2OUTRF1AN6C2OUT

23I/OIO

STアナログ

-

デジタル I/Oアナログ入力 6コンパレータ 2 出力

RF2/AN7/C1OUTRF2AN7C1OUT

18I/OIO

STアナログ

-

デジタル I/Oアナログ入力 7コンパレータ 1 出力

RF3/AN8RF3AN8

17I/OI

STアナログ

デジタル I/Oアナログ入力 8

RF4/AN9RF4AN9

16I/OI

STアナログ

デジタル I/Oアナログ入力 9

RF5/AN10/CVREF

RF5AN10CVREF

15I/OIO

STアナログ

-

デジタル I/Oアナログ入力 10 コンパレータの参照電圧出力

RF6/AN11RF6AN11

14I/OI

STアナログ

デジタル I/Oアナログ入力 11

RF7/SS1RF7SS1

13I/OI

STTTL

デジタル I/OSPI スレーブ選択入力

表 1-5: PIC18F86J60/86J65/87J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをセットした場合の ECCP2/P2A の既定値のピン割り当てです。

2: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C/P3B/P3C の既定値のピン割り当てです。

3: CCP2MX コンフィグレーション ビットをクリアした場合の ECCP2/P2A の代替ピン割り当てです。

4: ECCPMX コンフィグレーション ビットをクリアした場合の P1B/P1C/P3B/P3C の代替ピン割り当てです。

2013 Microchip Technology Inc. DS39762F_JP - p.29

Page 30: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTG は双方向 I/O ポート

RG0/ECCP3/P3ARG0ECCP3P3A

56I/OI/OO

STST-

デジタル I/Oキャプチャ 3 入力 / コンペア 3 出力 /PWM3 出力ECCP3 PWM 出力 A

RG1/TX2/CK2RG1TX2CK2

55I/OOI/O

ST-

ST

デジタル I/OEUSART2 非同期送信 EUSART2 同期クロック ( 関連する RX2/DT2 ピン参照 )

RG2/RX2/DT2RG2RX2DT2

42I/OI

I/O

STSTST

デジタル I/OEUSART2 非同期受信EUSART2 同期データ ( 関連する TX2/CK2 ピン参照 )

RG3/CCP4/P3DRG3CCP4P3D

41I/OI/OO

STST-

デジタル I/Oキャプチャ 4 入力 / コンペア 4 出力 /PWM4 出力ECCP3 PWM 出力 D

RG4/CCP5/P1DRG4CCP5P1D

10I/OI/OO

STST-

デジタル I/Oキャプチャ 5 入力 / コンペア 5 出力 /PWM5 出力ECCP1 PWM 出力 D

表 1-5: PIC18F86J60/86J65/87J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをセットした場合の ECCP2/P2A の既定値のピン割り当てです。

2: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C/P3B/P3C の既定値のピン割り当てです。

3: CCP2MX コンフィグレーション ビットをクリアした場合の ECCP2/P2A の代替ピン割り当てです。

4: ECCPMX コンフィグレーション ビットをクリアした場合の P1B/P1C/P3B/P3C の代替ピン割り当てです。

DS39762F_JP - p.30 2013 Microchip Technology Inc.

Page 31: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTH は双方向 I/O ポート

RH0 79 I/O ST デジタル I/O

RH1 80 I/O ST デジタル I/O

RH2 1 I/O ST デジタル I/O

RH3 2 I/O ST デジタル I/O

RH4/AN12/P3CRH4AN12P3C(4)

22I/OIO

STアナログ

-

デジタル I/Oアナログ入力 12ECCP3 PWM 出力 C

RH5/AN13/P3BRH5AN13P3B(4)

21I/OIO

STアナログ

-

デジタル I/Oアナログ入力 13ECCP3 PWM 出力 B

RH6/AN14/P1CRH6AN14P1C(4)

20I/OIO

STアナログ

-

デジタル I/Oアナログ入力 14ECCP1 PWM 出力 C

RH7/AN15/P1BRH7AN15P1B(4)

19I/OIO

STアナログ

-

デジタル I/Oアナログ入力 15ECCP1 PWM 出力 B

表 1-5: PIC18F86J60/86J65/87J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをセットした場合の ECCP2/P2A の既定値のピン割り当てです。

2: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C/P3B/P3C の既定値のピン割り当てです。

3: CCP2MX コンフィグレーション ビットをクリアした場合の ECCP2/P2A の代替ピン割り当てです。

4: ECCPMX コンフィグレーション ビットをクリアした場合の P1B/P1C/P3B/P3C の代替ピン割り当てです。

2013 Microchip Technology Inc. DS39762F_JP - p.31

Page 32: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTJ は双方向 I/O ポート

RJ4 39 I/O ST デジタル I/O

RJ5 40 I/O ST デジタル I/O

VSS 11, 31, 51, 70

P - ロジックと I/O ピンのグランド参照電圧

VDD 32, 48, 71 P - 周辺デジタルロジックおよび I/O ピン用の正電源

AVSS 26 P - アナログ モジュール用のグランド参照電圧

AVDD 25 P - アナログ モジュール用の正電源

ENVREG 24 I ST 内蔵電圧レギュレータのイネーブル

VDDCORE/VCAP

VDDCORE

VCAP

12P

P

-

-

コアロジック電源または外部フィルタ コンデンサ接続マイクロコントローラ コアロジックの正電源 ( レギュレータ無効 )外部フィルタ コンデンサ接続 ( レギュレータ有効 )

VSSPLL 67 P - Ethernet PHY PLL のグランド参照電圧

VDDPLL 66 P - Ethernet PHY PLL の 3.3 V 正電源

VSSTX 64 P - Ethernet PHY 送信サブシステムのグランド参照電圧

VDDTX 61 P - Ethernet PHY 送信サブシステムの 3.3 V 正電源

VSSRX 57 P - Ethernet PHY 受信サブシステムのグランド参照電圧

VDDRX 60 P - Ethernet PHY 受信サブシステムの 3.3 V 正電源

RBIAS 65 I アナログ Ethernet PHY のバイアス電流。抵抗を介して VSS に接続する事。仕様値についてはセクション 19.0「Ethernet モジュール」参照

TPOUT+ 63 O - Ethernet 差動信号出力

TPOUT- 62 O - Ethernet 差動信号出力

TPIN+ 59 I アナログ Ethernet 差動信号入力

TPIN- 58 I アナログ Ethernet 差動信号入力

表 1-5: PIC18F86J60/86J65/87J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをセットした場合の ECCP2/P2A の既定値のピン割り当てです。

2: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C/P3B/P3C の既定値のピン割り当てです。

3: CCP2MX コンフィグレーション ビットをクリアした場合の ECCP2/P2A の代替ピン割り当てです。

4: ECCPMX コンフィグレーション ビットをクリアした場合の P1B/P1C/P3B/P3C の代替ピン割り当てです。

DS39762F_JP - p.32 2013 Microchip Technology Inc.

Page 33: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

MCLR 13 I ST マスタクリア ( リセット ) 入力。このピンはアクティブ Lowでデバイスをリセット

OSC1/CLKIOSC1

CLKI

63I

I

ST

CMOS

オシレータ水晶振動子または外部クロック入力オシレータ水晶振動子入力または外部クロック源入力 内部 RC モードに設定されている場合は ST バッファ、その他の場合は CMOS 外部クロック源入力。常に OSC1 ピン機能と関連付けられている ( 関連する OSC2/CLKO ピン参照 )

OSC2/CLKOOSC2

CLKO

64O

O

-

-

オシレータ水晶振動子またはクロック出力オシレータ水晶振動子出力。水晶振動子または振動子に接続 ( 水晶振動子モードの場合 )内部 RC モードの場合、OSC2 ピンは CLKO を出力する。その周波数は OSC1 の 1/4 で、これが命令サイクルの速度を示す

PORTA は双方向 I/O ポート

RA0/LEDA/AN0RA0LEDAAN0

35I/OOI

TTL-

アナログ

デジタル I/OEthernet LEDA インジケータ出力アナログ入力 0

RA1/LEDB/AN1RA1LEDBAN1

34I/OOI

TTL-

アナログ

デジタル I/OEthernet LEDB インジケータ出力アナログ入力 1

RA2/AN2/VREF-RA2AN2VREF-

33I/OII

TTLアナログアナログ

デジタル I/Oアナログ入力 2A/D 参照電圧 (Low) 入力

RA3/AN3/VREF+RA3AN3VREF+

32I/OII

TTLアナログアナログ

デジタル I/Oアナログ入力 3A/D 参照電圧 (High) 入力

RA4/T0CKIRA4T0CKI

42I/OI

STST

デジタル I/O Timer0 外部クロック入力

RA5/AN4RA5AN4

41I/OI

TTLアナログ

デジタル I/Oアナログ入力 4

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

2013 Microchip Technology Inc. DS39762F_JP - p.33

Page 34: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTB は双方向 I/O ポート。PORTB は全ての入力に対し内部弱プルアップ有無をソフトウェアで設定可能

RB0/INT0/FLT0RB0INT0FLT0

5I/OII

TTLSTST

デジタル I/O外部割り込み 0拡張 PWM フォルト入力 (ECCP モジュール )。ソフトウェアで有効化

RB1/INT1RB1INT1

6I/OI

TTLST

デジタル I/O外部割り込み 1

RB2/INT2RB2INT2

7I/OI

TTLST

デジタル I/O外部割り込み 2

RB3/INT3/ECCP2/P2ARB3INT3ECCP2(1)

P2A(1)

8I/OI

I/OO

TTLSTST-

デジタル I/O外部割り込み 3キャプチャ 2 入力 / コンペア 2 出力 /PWM2 出力ECCP2 PWM 出力 A

RB4/KBI0RB4KBI0

69I/OI

TTLTTL

デジタル I/O状態変化割り込みピン

RB5/KBI1RB5KBI1

68I/OI

TTLTTL

デジタル I/O状態変化割り込みピン

RB6/KBI2/PGCRB6KBI2PGC

67I/OI

I/O

TTLTTLST

デジタル I/O状態変化割り込みピン インサーキット デバッガ /ICSP™ プログラミング用クロックピン

RB7/KBI3/PGDRB7KBI3PGD

57I/OI

I/O

TTLTTLST

デジタル I/O状態変化割り込みピン インサーキット デバッガ /ICSP プログラミング用データピン

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

DS39762F_JP - p.34 2013 Microchip Technology Inc.

Page 35: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTC は双方向 I/O ポート

RC0/T1OSO/T13CKIRC0T1OSOT13CKI

44I/OOI

ST-

ST

デジタル I/OTimer1 オシレータ出力 Timer1/Timer3 外部クロック入力

RC1/T1OSI/ECCP2/P2ARC1T1OSIECCP2(2)

P2A(2)

43I/OI

I/OO

STCMOS

ST-

デジタル I/OTimer1 オシレータ入力キャプチャ 2 入力 / コンペア 2 出力 /PWM2 出力ECCP2 PWM 出力 A

RC2/ECCP1/P1ARC2ECCP1P1A

53I/OI/OO

STST-

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

RC3/SCK1/SCL1RC3SCK1SCL1

54I/OI/OI/O

STSTST

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

RC4/SDI1/SDA1RC4SDI1SDA1

55I/OI

I/O

STSTST

デジタル I/OSPI データ入力I2C データ入出力

RC5/SDO1RC5SDO1

56I/OO

ST-

デジタル I/OSPI データ出力

RC6/TX1/CK1RC6TX1CK1

45I/OO

I/O

ST-

ST

デジタル I/OEUSART1 非同期送信 EUSART1 同期クロック ( 関連する RX1/DT1 ピン参照 )

RC7/RX1/DT1RC7RX1DT1

46I/OI

I/O

STSTST

デジタル I/OEUSART1 非同期受信EUSART1 同期データ ( 関連する TX1/CK1 ピン参照 )

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

2013 Microchip Technology Inc. DS39762F_JP - p.35

Page 36: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTD は双方向 I/O ポート

RD0/AD0/PSP0RD0AD0PSP0

92I/OI/OI/O

STTTLTTL

デジタル I/O外部メモリアドレス / データ 0パラレルスレーブ ポートのデータ

RD1/AD1/PSP1RD1AD1PSP1

91I/OI/OI/O

STTTLTTL

デジタル I/O外部メモリアドレス / データ 1パラレルスレーブ ポートのデータ

RD2/AD2/PSP2RD2AD2PSP2

90I/OI/OI/O

STTTLTTL

デジタル I/O外部メモリアドレス / データ 2パラレルスレーブ ポートのデータ

RD3/AD3/PSP3RD3AD3PSP3

89I/OI/OI/O

STTTLTTL

デジタル I/O外部メモリアドレス / データ 3パラレルスレーブ ポートのデータ

RD4/AD4/PSP4/SDO2RD4AD4PSP4SDO2

88I/OI/OI/OO

STTTLTTL

-

デジタル I/O外部メモリアドレス / データ 4パラレルスレーブ ポートのデータSPI データ出力

RD5/AD5/PSP5/SDI2/SDA2

RD5AD5PSP5SDI2SDA2

87

I/OI/OI/OI

I/O

STTTLTTLSTST

デジタル I/O外部メモリアドレス / データ 5パラレルスレーブ ポートのデータSPI データ入力I2C™ データ入出力

RD6/AD6/PSP6/SCK2/SCL2

RD6AD6PSP6SCK2SCL2

84

I/OI/OI/OI/OI/O

STTTLTTLSTST

デジタル I/O外部メモリアドレス / データ 6パラレルスレーブ ポートのデータSPI モードの同期シリアルクロック入出力I2C™ モードの同期シリアルクロック入出力

RD7/AD7/PSP7/SS2RD7AD7PSP7SS2

83I/OI/OI/OI

STTTLTTLTTL

デジタル I/O外部メモリアドレス / データ 7パラレルスレーブ ポートのデータSPI スレーブ選択入力

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

DS39762F_JP - p.36 2013 Microchip Technology Inc.

Page 37: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTE は双方向 I/O ポート

RE0/AD8/RD/P2DRE0AD8RDP2D

4I/OI/OIO

STTTLTTL

-

デジタル I/O外部メモリアドレス / データ 8パラレルスレーブ ポートの読み出し制御ECCP2 PWM 出力 D

RE1/AD9/WR/P2CRE1AD9WRP2C

3I/OI/OIO

STTTLTTL

-

デジタル I/O外部メモリアドレス / データ 9パラレルスレーブ ポートの書き込み制御ECCP2 PWM 出力 C

RE2/AD10/CS/P2BRE2AD10CSP2B

98I/OI/OIO

STTTLTTL

-

デジタル I/O外部メモリアドレス / データ 10パラレルスレーブ ポートのチップセレクト制御ECCP2 PWM 出力 B

RE3/AD11/P3CRE3AD11P3C(3)

97I/OI/OO

STTTL

-

デジタル I/O外部メモリアドレス / データ 11ECCP3 PWM 出力 C

RE4/AD12/P3BRE4AD12P3B(3)

96I/OI/OO

STTTL

-

デジタル I/O外部メモリアドレス / データ 12ECCP3 PWM 出力 B

RE5/AD13/P1CRE5AD13P1C(3)

95I/OI/OO

STTTL

-

デジタル I/O外部メモリアドレス / データ 13ECCP1 PWM 出力 C

RE6/AD14/P1BRE6AD14P1B(3)

94I/OI/OO

STTTL

-

デジタル I/O外部メモリアドレス / データ 14ECCP1 PWM 出力 B

RE7/AD15/ECCP2/P2ARE7AD15ECCP2(4)

P2A(4)

93I/OI/OI/OO

STTTLST-

デジタル I/O外部メモリアドレス / データ 15キャプチャ 2 入力 / コンペア 2 出力 /PWM2 出力ECCP2 PWM 出力 A

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

2013 Microchip Technology Inc. DS39762F_JP - p.37

Page 38: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTF は双方向 I/O ポート

RF0/AN5RF0AN5

12I/OI

STアナログ

デジタル I/Oアナログ入力 5

RF1/AN6/C2OUTRF1AN6C2OUT

28I/OIO

STアナログ

-

デジタル I/Oアナログ入力 6コンパレータ 2 出力

RF2/AN7/C1OUTRF2AN7C1OUT

23I/OIO

STアナログ

-

デジタル I/Oアナログ入力 7コンパレータ 1 出力

RF3/AN8RF3AN8

22I/OI

STアナログ

デジタル I/Oアナログ入力 8

RF4/AN9RF4AN9

21I/OI

STアナログ

デジタル I/Oアナログ入力 9

RF5/AN10/CVREF

RF5AN10CVREF

20I/OIO

STアナログ

-

デジタル I/Oアナログ入力 10 コンパレータの参照電圧出力

RF6/AN11RF6AN11

19I/OI

STアナログ

デジタル I/Oアナログ入力 11

RF7/SS1RF7SS1

18I/OI

STTTL

デジタル I/OSPI スレーブ選択入力

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

DS39762F_JP - p.38 2013 Microchip Technology Inc.

Page 39: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTG は双方向 I/O ポート

RG0/ECCP3/P3ARG0ECCP3P3A

71I/OI/OO

STST-

デジタル I/Oキャプチャ 3 入力 / コンペア 3 出力 /PWM3 出力ECCP3 PWM 出力 A

RG1/TX2/CK2RG1TX2CK2

70I/OO

I/O

ST-

ST

デジタル I/OEUSART2 非同期送信 EUSART2 同期クロック ( 関連する RX2/DT2 ピン参照 )

RG2/RX2/DT2RG2RX2DT2

52I/OI

I/O

STSTST

デジタル I/OEUSART2 非同期受信EUSART2 同期データ ( 関連する TX2/CK2 ピン参照 )

RG3/CCP4/P3DRG3CCP4P3D

51I/OI/OO

STST-

デジタル I/Oキャプチャ 4 入力 / コンペア 4 出力 /PWM4 出力ECCP3 PWM 出力 D

RG4/CCP5/P1DRG4CCP5P1D

14I/OI/OO

STST-

デジタル I/Oキャプチャ 5 入力 / コンペア 5 出力 /PWM5 出力ECCP1 PWM 出力 D

RG5 11 I/O ST デジタル I/O

RG6 10 I/O ST デジタル I/O

RG7 38 I/O ST デジタル I/O

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

2013 Microchip Technology Inc. DS39762F_JP - p.39

Page 40: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTH は双方向 I/O ポート

RH0/A16RH0A16

99I/OO

ST-

デジタル I/O外部メモリアドレス 16

RH1/A17RH1A17

100I/OO

ST-

デジタル I/O外部メモリアドレス 17

RH2/A18RH2A18

1I/OO

ST-

デジタル I/O外部メモリアドレス 18

RH3/A19RH3A19

2I/OO

ST-

デジタル I/O外部メモリアドレス 19

RH4/AN12/P3CRH4AN12P3C(5)

27I/OIO

STアナログ

-

デジタル I/Oアナログ入力 12ECCP3 PWM 出力 C

RH5/AN13/P3BRH5AN13P3B(5)

26I/OIO

STアナログ

-

デジタル I/Oアナログ入力 13ECCP3 PWM 出力 B

RH6/AN14/P1CRH6AN14P1C(5)

25I/OIO

STアナログ

-

デジタル I/Oアナログ入力 14ECCP1 PWM 出力 C

RH7/AN15/P1BRH7AN15P1B(5)

24I/OIO

STアナログ

-

デジタル I/Oアナログ入力 15ECCP1 PWM 出力 B

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

DS39762F_JP - p.40 2013 Microchip Technology Inc.

Page 41: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PORTJ は双方向 I/O ポート

RJ0/ALERJ0ALE

49I/OO

ST-

デジタル I/O外部メモリ アドレスラッチ イネーブル

RJ1/OERJ1OE

50I/OO

ST-

デジタル I/O外部メモリ出力イネーブル

RJ2/WRLRJ2WRL

66I/OO

ST-

デジタル I/O外部メモリ書き込み Low 制御

RJ3/WRHRJ3WRH

61I/OO

ST-

デジタル I/O外部メモリ書き込み High 制御

RJ4/BA0RJ4BA0

47I/OO

ST-

デジタル I/O外部メモリ バイトアドレス 0 制御

RJ5/CERJ5CE

48I/OO

ST-

デジタル I/O外部メモリ チップイネーブル制御

RJ6/LBRJ6LB

58I/OO

ST-

デジタル I/O外部メモリ Low バイト制御

RJ7/UBRJ7UB

39I/OO

ST-

デジタル I/O外部メモリ High バイト制御

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

2013 Microchip Technology Inc. DS39762F_JP - p.41

Page 42: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NC 9 - - 未接続

VSS 15, 36, 40, 60, 65, 85

P - ロジックと I/O ピンのグランド参照電圧

VDD 17, 37, 59, 62, 86

P - 周辺デジタルロジックおよび I/O ピン用の正電源

AVSS 31 P - アナログ モジュール用のグランド参照電圧

AVDD 30 P - アナログ モジュール用の正電源

ENVREG 29 I ST 内蔵電圧レギュレータのイネーブル

VDDCORE/VCAP

VDDCORE

VCAP

16P

P

-

-

コアロジック電源または外部フィルタ コンデンサ接続マイクロコントローラ コアロジックの正電源 ( レギュレータ無効 )外部フィルタ コンデンサ接続 ( レギュレータ有効 )

VSSPLL 82 P - Ethernet PHY PLL のグランド参照電圧

VDDPLL 81 P - Ethernet PHY PLL の 3.3 V 正電源

VSSTX 79 P - Ethernet PHY 送信サブシステムのグランド参照電圧

VDDTX 76 P - Ethernet PHY 送信サブシステムの 3.3 V 正電源

VSSRX 72 P - Ethernet PHY 受信サブシステムのグランド参照電圧

VDDRX 75 P - Ethernet PHY 受信サブシステムの 3.3 V 正電源

RBIAS 80 I アナログ Ethernet PHY のバイアス電流。抵抗を介して VSS に接続する事。仕様値についてはセクション 19.0「Ethernet モジュール」参照

TPOUT+ 78 O - Ethernet 差動信号出力

TPOUT- 77 O - Ethernet 差動信号出力

TPIN+ 74 I アナログ Ethernet 差動信号入力

TPIN- 73 I アナログ Ethernet 差動信号入力

表 1-6: PIC18F96J60/96J65/97J60 のピン配置と入出力の説明 ( 続き )

ピン名ピン番号 ピン

タイプバッファタイプ

説明TQFP

凡例 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミットトリガ入力 アナログ= アナログ入力 I = 入力 O = 出力 P = 電源 OD = オープンドレイン (VDD への P ダイオードなし )

Note 1: CCP2MX コンフィグレーション ビットをクリアした場合 ( 拡張マイクロコントローラ モード ) の ECCP2/P2Aの代替ピン割り当てです。

2: 全ての動作モードにおける ECCP2/P2A の既定値のピン割り当てです (CCP2MX コンフィグレーション ビットをセットした場合 )。

3: P1B/P1C/P3B/P3C の既定値のピン割り当てです (ECCPMX コンフィグレーション ビットをセットした場合 )。4: CCP2MX コンフィグレーション ビットをクリアした場合 ( マイクロコントローラ モード ) の ECCP2/P2A の代

替ピン割り当てです。

5: P1B/P1C/P3B/P3C の代替ピン割り当てです (ECCPMX コンフィグレーション ビットをクリアした場合 )。

DS39762F_JP - p.42 2013 Microchip Technology Inc.

Page 43: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2.0 PIC18FJ マイクロコントローラの使用にあたってのガイドライン

2.1 基本的な接続要件

8 ビット マイクロコントローラの PIC18F97J60 ファミリを使って開発を始める前に、デバイスピンの 小接続要件に注意が必要です。

下記のピンは常に接続する必要があります。

• 全ての VDD および VSS ピン ( セクション 2.2「電源ピン」参照 )

• 全ての AVDD および AVSS ピン ( アナログデバイス機能未使用時も必須 ) ( セクション 2.2「電源ピン」参照 )

• MCLR ピン ( セクション 2.3「マスタクリア (MCLR) ピン」参照 )

• ENVREG ( 実装している場合のみ ) およびVCAP/VDDCORE ピン ( セクション 2.4「電圧レギュレータ ピン(ENVREG と VCAP/VDDCORE)」参照 )

終アプリケーションで使う場合、以下のピンも接続する必要があります。

• PGC/PGD ピン (In-Circuit Serial Programming™ (ICSP™) とデバッグに使用 ) ( セクション 2.5「ICSP ピン」参照 )

• OSCI/OSCO ピン( 外部オシレータ信号源を使う場合 ) ( セクション 2.6「外部オシレータピン」参照 )

さらに、以下のピンの接続が必要な場合もあります。

• VREF+/VREF- ピン ( アナログ モジュール用に外部参照電圧を使う場合に使用 )

図 2-1 に、 低限の必須ピン接続を示します。

図 2-1: 必須接続ピン

Note: AVDD および AVSS ピンは、アナログ モジュールを使わない場合でも、常に接続する必要があります。

PIC18FXXJXX

VD

D

VS

S

VDD

VSS

VSS

VDD

AV

DD

AV

SS

VD

D

VS

S

C1

R1

VDD

MCLRVCAP/VDDCORE

R2ENVREG

(1)

C7

C2(2)

C3(2)

C4(2)C5(2)

C6(2)

コンデンサと抵抗の推奨値 :

C1 ~ C6: 0.1 F、20 V、セラミック

C7: 10 F、6.3 V 以上、タンタルまたはセラミック

R1: 10 k

R2: 100 ~ 470

Note 1: ENVREG ピンの接続についてはセクショ

ン 2.4「電圧レギュレータ ピン (ENVREGと VCAP/VDDCORE)」を参照してください。

2: 上図は、5 組の VDD/VSS および AVDD/AVSS

ピンペアを持つ PIC18F の例です。これら

のピンペアの数はデバイスによって異なり

ます。従って、必要なデカップリング コン

デンサの数も異なります。

(1)

2013 Microchip Technology Inc. DS39762F_JP - p.43

Page 44: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2.2 電源ピン

2.2.1 デカップリング コンデンサ

VDD/VSS、AVDD/AVSS 等、全ての電源ピンペアにはデカップリング コンデンサが必要です。

デカップリング コンデンサを使う場合、以下の基準に注意してください。

• コンデンサの値とタイプ :0.1 F (100 nF)、10 ~ 20V のコンデンサを推奨します。このコンデンサには、共振周波数が 200 MHz 以上の低 ESR 品を使う必要があります。セラミック コンデンサの使用を推奨します。

• プリント基板の配置 : デカップリング コンデンサは、できるだけピンの近くに配置します。コンデンサとデバイスを基板の同一面上に配置する事を推奨します。スペースに制約がある場合、ビアを使ってコンデンサを基板の別の層に配置する事もできますが、ピンからコンデンサまでのトレース長を 0.25 インチ (6 mm) 以下にする必要があります。

• 高周波ノイズへの対応 : 基板が数十 MHz 以上の高周波ノイズの影響を受ける場合、上記のデカップリング コンデンサと並列に補助コンデンサ ( セラミックタイプ ) を追加します。0.01 ~ 0.001 F の補助コンデンサを、デカップリング コンデンサに近付けて配置します。高速回路の設計では、このようなコンデンサのペア ( 例 : 0.1 F と 0.001 F) を電源ピンとグランドピンのできるだけ近くに配置するよう配慮が必要です。

• 性能の 適化 :電源回路からのボードレイアウトでは、 初にデカップリング コンデンサまでの電源の往復パターンを作ってからデバイスピンへのパターンを作ります。これにより、デカップリングコンデンサを電源系統の初段として、確実に配置します。コンデンサと電源ピン間のパターン長を 短にして PCB の配線インダクタンスを低減する事も重要です。

2.2.2 タンクコンデンサ

マイクロコントローラを含む IC 用の基板設計では、基板上の電源パターンの長さが 6インチ (約 15 cm)を超える場合、タンクコンデンサを使ってローカル電源を提供する事を推奨します。タンクコンデンサの静電容量は、電源とデバイスを接続するパターンの抵抗と、そのアプリケーションでデバイスが消費する 大電流に基づいて決定する必要があります。つまり、デバイスにおける電圧低下が許容範囲に収まるようにタンクコンデンサの静電容量を選択します。タンクコンデンサの代表的な静電容量は 4.7 ~ 47 F です。

2.3 マスタクリア (MCLR) ピン

MCLRピンは、2つのデバイス機能 (デバイスリセットとデバイス プログラミング / デバッギング ) を提供します。 終アプリケーションでプログラミング /デバッギング機能を使わない場合、このピンは VDD に直接接続できます。ただし、このピンに別の部品を接続しておけば、瞬時電圧低下による不意のリセットを防ぐ事ができる場合があります。図 2-1 に代表的な回路を示します。アプリケーションの要件に応じて、これとは異なる回路も使えます。

プログラミング / デバッギング時には、このピンに付加される可能性のある抵抗と静電容量に注意する必要があります。デバイス プログラマ / デバッガは MCLRピンを駆動します。この際に、電圧レベル (VIH、VIL)と高速信号挙動に対する悪影響を回避する必要があります。このため、アプリケーションと PCB の要件に基づいて R1 と C1 の値を調整する必要があります。例えば、プログラミング / デバッギング時にジャンパを使って、コンデンサ C1 を MCLR ピンから切り離す事を推奨します ( 図 2-2 参照 )。通常動作時は、このジャンパを元に戻します。

MCLR ピンに関連する全ての部品は、ピンから 0.25 インチ (6 mm) 以内に配置する必要があります。

図 2-2: MCLR ピン接続の例

Note 1: R1 10 kを推奨します。設計時の初期値は

10 kを推奨します。MCLR ピンの VIH と VIL

が仕様を満たしているかどうかを確認する事

を推奨します。

2: R2 470 は、静電放電 (ESD) または電気的

オーバーストレス (EOS) による MCLR ピンの

ブレークダウン時に、外付けコンデンサ C か

ら MCLR ピンに流れる電流を制限します。

MCLRピンのVIHとVILが仕様を満たしている

かどうかを確認する事を推奨します。

C1

R2R1

VDD

MCLR

PIC18FXXJXXJP

DS39762F_JP - p.44 2013 Microchip Technology Inc.

Page 45: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2.4 電圧レギュレータ ピン (ENVREG とVCAP/VDDCORE)

内蔵電圧レギュレータ イネーブルピンのENVREGは、必ず電源電圧またはグランドに直接接続する必要があります。ENVREGピンをVDDに接続するとレギュレータが有効になり、グランドに接続するとレギュレータが無効になります。内蔵電圧レギュレータの接続および使用方法は、セクション 25.3「内蔵電圧レギュレータ」を参照してください。

レギュレータを有効にした場合、電圧レギュレータの出力電圧を安定させるために VCAP/VDDCORE ピンに低ESR (< 5 ) のコンデンサが必要です。VCAP/VDDCORE

ピンを VDD に直接接続しないでください。このピンは、10 µF のコンデンサを介してグランドに接続する必要があります。このコンデンサにはセラミックまたはタンタル型が使えます。表 2-1 に、この用途に適したコンデンサの例を示します。これらと同等の仕様を持つコンデンサであれば使えます。

使用コンデンサのESR等価性を評価するために図 2-3が使えます。

トレース長は 0.25 インチ (6 mm) 以内とする事を推奨します。詳細は、28.0「電気的特性」を参照してください。

レギュレータを無効にした場合、VCAP/VDDCORE ピンを VDDCORE レベルの電源電圧に接続する必要があります。VDD と VDDCORE の詳細は、28.0「電気的特性」を参照してください。

なお、PIC18FJ ファミリのうち「LF」タイプの少ピンデバイス (PIC18LF45J10 等 ) には ENVREG ピンがありません。これらのデバイスに内蔵された電圧レギュレータは恒久的に無効にされており、VDDCORE ピンには常に電源電圧を供給する必要があります。

図 2-3: 周波数に対する推奨コンデンサのESR 特性

.

10

1

0.1

0.01

0.0010.01 0.1 1 10 100 1000 10,000

Frequency (MHz)

ES

R (

)

Note: 25 °C/バイアスDC 0 Vで計測した代表データです。

表 2-1: 推奨コンデンサの例

メーカー 製品番号 公称静電容量 基本公差 定格電圧 温度 レンジ

TDK C3216X7R1C106K 10 µF ±10% 16 V -55 ~ 125 ℃

TDK C3216X5R1C106K 10 µF ±10% 16 V -55 ~ 85 ℃

Panasonic ECJ-3YX1C106K 10 µF ±10% 16 V -55 ~ 125 ℃

Panasonic ECJ-4YB1C106K 10 µF ±10% 16 V -55 ~ 85 ℃

Murata GRM32DR71C106KA01L 10 µF ±10% 16 V -55 ~ 125 ℃

Murata GRM31CR61C106KC31L 10 µF ±10% 16 V -55 ~ 85 ℃

2013 Microchip Technology Inc. DS39762F_JP - p.45

Page 46: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2.4.1 セラミック コンデンサに関する注意点

近年、数十 µF までの表面実装型大容量 / 低電圧セラミック コンデンサのコスト効率が大幅に改善されています。低 ESR でサイズが小さく、その他の特性にも優れるセラミック コンデンサは、多くのアプリケーションに適しています。

このマイクロコントローラの VDDCORE 電圧レギュレータにはセラミック コンデンサが適します。しかし、アプリケーションの動作レンジ全体で十分な静電容量を確保するために、コンデンサの選択には注意が必要です。

一般的に入手可能な低価格の 10 µF セラミック コンデンサの温度特性は X5R、X7R、Y5V です ( その他のタイプも入手可能ですが、一般的ではありません )。これらのコンデンサの初期公差は、多くの場合 ±10 ~±20% (X5R、X7R) または -20%/+80% (Y5V) です。しかし、これらのコンデンサをアプリケーション回路で使った時の実効静電容量は、DC バイアス電圧や温度等の要因によって変化します。従って回路内での総公差は、仕様上の公差よりも大幅に大きくなります。

一般的に、X5R および X7R タイプのコンデンサは、十分に良好な温度特性を備えています ( 広い温度レンジで ±15%)。正確な仕様値については、メーカーのデータシートを参照してください。しかし、Y5V タイプのコンデンサの温度特性仕様値は、これより大幅に劣ります (+22%/-82%)。このため、公称値 10 µF の Y5V タイプ コンデンサでは、 低限の VDDCORE 電圧レギュレータ安定性と過渡応答要件を満たせる十分な総静電容量を確保できません。従って、アプリケーションの想定動作温度レンジが広い場合、VDDCORE レギュレータ用に Y5V タイプのコンデンサは推奨しません。

温度の影響以外に、大容量セラミック コンデンサの実効静電容量は、コンデンサに印加されるDC電圧によっても大きく変化します。これは非常に大きく影響する可能性がありますが、見過ごされる事が多く、仕様書に明記されない事もあります。

図 2-4 に、X7R タイプおよび Y5V タイプのコンデンサの DC バイアス電圧と静電容量の関係を示す代表的なグラフを示します。

図 2-4: DC バイアス電圧に対する静電容量

VDDCORE 電圧レギュレータ用にセラミック コンデンサを選ぶ際、動作電圧に対して 大定格電圧が十分に高いコンデンサの使用を推奨します。例えば、2.5 VVDDCORE 電圧に対しては、定格電圧 16 V のセラミック コンデンサを推奨します。推奨コンデンサは表 2-1を参照してください。

2.5 ICSP ピン

PGCおよびPGDピンは、In-Circuit Serial Programming™(ICSP™) とデバッグ用に使います。ICSP コネクタとデバイスの ICSP ピン間のトレース長をできるだけ短くする事を推奨します。ICSP コネクタで ESD が予測される場合、数十 の抵抗 (100 以下 ) を直列に接続する事を推奨します。

PGC ピンと PGD ピンにプルアップ抵抗、直列ダイオード、コンデンサを接続する事は推奨しません ( デバイスとプログラマ / デバッガ間の通信に干渉するため )。このようなディスクリート部品がアプリケーションに必要な場合、プログラミング / デバッギング時にこれらの部品を回路から取り外す必要があります。また、容量性負荷の制限、ピン入力電圧の HIGH (VIH) および LOW (VIL) 要件の詳細は、各デバイスのフラッシュ プログラミング仕様書に記載されている AC/DC特性とタイミング要件を参照してください。

デバイス エミュレーションを行う場合、デバイスにプログラミングした「通信チャンネル選択」( すなわちPGCx/PGDx ピンの設定 ) が、ICSP とマイクロチップ社製デバッガ / エミュレータ ツール間の物理的接続に一致している事が必要です。

マイクロチップ社製開発ツールの接続に関する要件の詳細は、セクション 27.0「開発サポート」を参照してください。

-80

-70

-60

-50

-40

-30

-20

-10

0

10

5 10 11 12 13 14 15 16 17

DC Bias Voltage (VDC)

Ca

pa

cit

an

ce

Ch

an

ge

(%

)

0 1 2 3 4 6 7 8 9

16V Capacitor

10V Capacitor

6.3V Capacitor

DS39762F_JP - p.46 2013 Microchip Technology Inc.

Page 47: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2.6 外部オシレータピン

多くのマイクロコントローラでは、少なくとも 2 つのオシレータ ( 高速プライマリ オシレータと低速セカンダリ オシレータ ) を選択できます ( 詳細はセクション 3.0「オシレータの設定」参照 )。

オシレータ回路と MCU は、基板の同一面上に配置する必要があります。オシレータ回路は各オシレータピンの近くに配置する必要があります ( 回路部品とピン間のトレース長が 0.5 インチ (12 mm) を超えない事 )。負荷コンデンサは、オシレータ本体近くの同一基板面上に配置する必要があります。

オシレータ回路の周囲をグランドに接続した銅ベタで囲んで、周囲の回路から隔離します。この銅ベタは、MCU のグランドに直接接続する必要があります。銅ベタ内に信号トレースまたは電源トレースを配置しないでください。また、両面基板を使う場合、水晶振動子の裏側にはトレースを配置しないでください。

図 2-5 に推奨レイアウトを示します。インライン パッケージの場合、片面基板でオシレータピンを完全に囲む事ができます。ファインピッチ パッケージでは、オシレータピンと部品を完全に囲む事ができない場合があります。この場合、囲みが途切れる箇所を、裏面のグランド層に接続する事により適切に対処できます。どのような場合も、ガードトレースをグランドに戻す必要があります。

アプリケーションの回路パターンと I/O 割り当てを検討する際に、オシレータに近い ( オシレータピンと隣り合う ) ポートピンと信号が影響を及ぼさないように配慮する必要があります ( 高周波、急峻な立ち上がり/ 立ち下がり、その他のノイズからの遮断 )。

オシレータ回路の設計に関するその他の情報は、マイクロチップ社ウェブサイト (www.microchip.com) で下記のアプリケーション ノートを参照してください。

• AN826 - 『Crystal Oscillator Basics and Crystal Selection for rfPIC™ and PICmicro® Devices』

• AN849 - 『Basic PICmicro® Oscillator Design』

• AN943 - 『Practical PICmicro® Oscillator Analysis and Design』

• AN949 - 『 Making Your Oscillator Work』

2.7 未使用 I/O

未使用の I/O ピンは、出力として設定し、論理 LOW 状態に駆動する必要があります。または、1 ~ 10 Kの抵抗を未使用ピンと VSS の間に接続して出力を論理LOW に駆動します。

図 2-5: オシレータ回路の推奨レイアウト

GND

`

`

`

OSC1

OSC2

T1OSO

T1OS I

Copper Pour Primary OscillatorCrystal

Timer1 OscillatorCrystal

DEVICE PINS

PrimaryOscillator

C1

C2

T1 Oscillator: C1 T1 Oscillator: C2

(tied to ground)

Single-Sided and In-Line Layouts:

Fine-Pitch (Dual-Sided) Layouts:

GND

OSCO

OSCI

Bottom LayerCopper Pour

OscillatorCrystal

Top Layer Copper Pour

C2

C1

DEVICE PINS

(tied to ground)

(tied to ground)

2013 Microchip Technology Inc. DS39762F_JP - p.47

Page 48: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.48 2013 Microchip Technology Inc.

Page 49: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

3.0 オシレータの設定

3.1 概要

PIC18F97J60 ファミリが内蔵しているオシレータとクロック システムは、標準の PIC18FXXJXX とは異なります。安定した 25 MHz のクロック源を必要とするEthernet モジュールが追加されているため、プライマリ オシレータはマイクロコントローラの幅広いクロック速度に加えてこの周波数も供給する必要があります。図 3-1 に、オシレータの構成の概要を示します。

内部 RC オシレータやクロック切り換え等、PIC18FXXJXX 拡張マイクロコントローラで使われるその他のオシレータ機能は共通です。これらの機能については、本章の後半で説明します。

3.2 オシレータの種類

PIC18F97J60 ファミリは、以下の 5 つのオシレータモードで動作します。

1. HS 高速水晶振動子 / 振動子

2. HSPLL ソフトウェア PLL 制御付き高速水晶振動子 / 振動子

3. EC 1/4FOSC 出力の外部クロック

4. ECPLL ソフトウェア PLL 制御付き外部クロック

5. INTRC 内部 31 kHz オシレータ

3.2.1 オシレータ制御

オシレータモードは、FOSC<2:0>コンフィグレーション ビットで選択します。FOSC<1:0> ビットで既定値のプライマリ オシレータモードを選択しますが、INTRC に切り換える場合は FOSC2 で選択します。

OSCCON レジスタ ( レジスタ 3-2) はアクティブなクロックモードを選択します。これは、主に電力管理モードにおけるクロック切り換えに使います。詳細は、セクション 3.7.1「オシレータ制御レジスタ」を参照してください。

OSCTUNEレジスタ (レジスタ 3-1)は、PLLの有効 /無効とプリスケーラ / ポストスケーラの設定を行い、プライマリ オシレータ信号源からのシステムクロック周波数を選択するために使います。詳細は、セクション 3.6.1「PLL ブロック」を参照してください。

図 3-1: PIC18F97J60 ファミリ クロック回路図

PIC18F97J60 Family

5x PLLFOSC<2:0>

Secondary Oscillator

T1OSCENEnableOscillator

T1OSO

T1OSI

Clock Source Option for Other Modules

OSC1

OSC2

Sleep

Primary Oscillator

T1OSC

CPU

Peripherals

IDLEN

MU

X

INTRCSource

WDT, PWRT, FSCM

Internal Oscillator

ClockControl OSCCON<1:0>

and Two-Speed Start-up

Ethernet Clock

Prescaler Postscaler

PLL/Prescaler/Postscaler

PLL

OSCTUNE<7:5>(1)

PLL

EC, HS, ECPLL, HSPLL

Note 1: OSCTUNE レジスタの設定値と周波数の対応については、表 3-2 を参照してください。

2013 Microchip Technology Inc. DS39762F_JP - p.49

Page 50: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

3.3 水晶振動子 / セラミック振動子(HS モード )

HS または HSPLL オシレータモードでは、OSC1 およびOSC2ピンに水晶振動子を接続して発振回路を形成します。図 3-2 にピンの接続を示します。

このオシレータ回路では、並列共振動作用の水晶振動子を使う必要があります。

図 3-2: 水晶発振回路の動作(HS、HSPLL モード )

表 3-1: 水晶発振回路用コンデンサの選定

3.4 外部クロック入力 (EC モード )

EC および ECPLL オシレータモードでは、外部クロック源を OSC1 ピンに接続する必要があります。パワーオン リセット (POR) 後またはスリープからの復帰後にオシレータ起動タイマの遅延は不要です。

EC オシレータモードでは、オシレータの周波数を 4分周した周波数が OSC2 ピンから出力されます。この信号はテスト目的または他のロジックの同期用として使えます。図 3-3 に、EC オシレータモードのピン接続を示します。

図 3-3: 外部クロック 入力動作 (EC 設定 )

HS モードで外部クロック源を OSC1 ピンに接続する事もできます ( 図 3-4)。この設定では、OSC2 ピンは開放のままです。この設定では内部オシレータのフィードバック回路が有効なため、EC モードよりも消費電流が若干大きくなります (ECモードではフィードバック回路が無効 )。

図 3-4: 外部クロック 入力動作 (HS 設定 )

Note: 直列共振動作用水晶振動子を使うと、水晶振動子メーカーの仕様範囲外の周波数が発生する事があります。

タイプ水晶振動子 周波数

検証済みのコンデンサの代表値

C1 C2

HS 25 MHz 33 pF 33 pF

ここに示すコンデンサの値は設計上の指針に過ぎません。

許容範囲内のオシレータ動作を得るためには、異なる値のコンデンサが必要となる事があります。アプリケーションで予測される VDD および温度レンジ全体でオシレータの性能を検証してください。オシレータに関する参考情報として、以下のアプリケーション ノートも参照してください。

• AN588 - 『PIC® Microcontroller Oscillator Design Guide』

• AN826 - 『Crystal Oscillator Basics and Crystal Selection for rfPIC® and PIC® Devices』

• AN849 - 『Basic PIC® Oscillator Design』

• AN943 - 『Practical PIC® Oscillator Analysis and Design』

• AN949 - 『Making Your Oscillator Work』

詳細は、この表の Note を参照してください。

Note 1: C1とC2の初期値は表 3-1を参照してください。

2: 水晶振動子によっては、オーバードライブを防

ぐために直列抵抗 (RS) を必要とします。

3: RF は選択したオシレータモードによって変化

します。

C1(1)

C2(1)

XTAL

OSC2

OSC1

RF(3)

Sleep

To

Logic

PIC18FXXJ6XRS(2)

Internal

Note 1: 静電容量を大きくするとオシレータの安定性は増すものの、起動に要する時間も増大します。

2: 水晶振動子は製品ごとに固有の特性を持つため、外付け部品の適切な数値は水晶振動子のメーカーに問い合わせてください。

3: 水晶振動子のオーバードライブを防ぐために Rs を必要とする場合があります。

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

OSC1/CLKI

OSC2/CLKOFOSC/4

Clock fromExt. System PIC18FXXJ6X

OSC1

OSC2Open

Clock fromExt. System

PIC18FXXJ6X(HS Mode)

DS39762F_JP - p.50 2013 Microchip Technology Inc.

Page 51: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

3.5 内部オシレータ ブロック

PIC18F97J60 ファミリの内部オシレータ信号源(INTRC) は、公称 31 kHz のクロックを出力します。INTRC はデバイスの電源投入時に有効になり、デバイスがコンフィグレーション サイクルの間 (すなわち動作モードに移行するまで ) クロック源として使われます。この他、INTRC をデバイスのクロック源として選択した場合、または以下のいずれかを有効にした場合も INTRC が有効になります。

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

• ウォッチドッグ タイマ

• 2 段階起動

これらの機能の詳細は、セクション 25.0「CPU の特殊機能」で説明します。

FOSC2 コンフィグレーション ビットの設定により、INTRC をデバイス起動時の既定値のクロック源として設定する事もできます。詳細は、セクション 3.7.1「オシレータ制御レジスタ」を参照してください。

3.6 Ethernet 動作とマイクロコントローラ クロック

PIC18F97J60 ファミリは幅広い種類の水晶振動子と外部オシレータ入力に対応していますが、Ethernet アプリケーションで使う場合は25 MHzのクロック源が

必須です。Ethernet に必要なクロックを別の周波数のプライマリ オシレータ信号源から内部生成する仕組みは用意されていません。また、周波数の許容誤差も仕様で定められており、セラミック振動子の使用も適しません。詳細はセクション 28.0「電気的特性」、表 28-6 のパラメータ 5 を参照してください。

3.6.1 PLL ブロック

幅広いアプリケーションとマイクロコントローラ クロック速度をサポートするため、クロックシステムには別途 PLL ブロックが組み込まれています。このブロックは以下の 3 つで構成されます。

• 設定可能なプリスケーラ (1:2 または 1:3)• 5x PLL 周波数マルチプライヤ

• 設定可能なポストスケーラ (1:1、1:2、1:3)

これら PLL ブロック各部の動作は、OSCTUNE レジスタ ( レジスタ 3-1) で設定します。PLL の有効 / 無効、PLL ブロックのプリスケーラとポストスケーラの設定を行う事で、プライマリ オシレータの 25 MHz をそのまま使う事も含め、幅広いシステムクロック周波数を生成できます。表 3-2 に、Ethernet 動作と互換の全オシレータ設定を示します。

レジスタ 3-1: OSCTUNE: PLL ブロック制御レジスタ

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

PPST1 PLLEN(1) PPST0 PPRE — — — —

bit 7 bit 0

凡例 :

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

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

bit 7 PPST1: PLL ポストスケーラ コンフィグレーション ビット

1 = 2 分周0 = 3 分周

bit 6 PLLEN: 5x 周波数マルチプライヤ PLL イネーブルビット (1)

1 = PLL を有効にする 0 = PLL を無効にする

bit 5 PPST0: PLL ポストスケーラ イネーブルビット

1 = ポストスケーラを有効にする 0 = ポストスケーラを無効にする

bit 4 PPRE: PLL プリスケーラ コンフィグレーション ビット

1 = 2 分周0 = 3 分周

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

Note 1: オシレータが ECPLL または HSPLL モードの場合のみです。それ以外のモードではこのビットは使えず、「0」として読み出されます。

2013 Microchip Technology Inc. DS39762F_JP - p.51

Page 52: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 3-2: PLL ブロックの各種設定とデバイスのクロック速度

3.7 クロック源とオシレータの切り換え

PIC18F97J60 ファミリにはデバイスのクロック源をメインオシレータから代替クロック源へ切り換える機能があります。また、これらのデバイスには 2 つの代替クロック源があります。代替クロック源を有効にすると、各種の電力管理動作モードを使えます。

基本的に、これらのデバイスには 3 つのクロック源があります。

• プライマリ オシレータ

• セカンダリ オシレータ

• 内部オシレータ ブロック

プライマリ オシレータには、外部水晶振動子 / 振動子モードと外部クロックモードがあります。オシレータモードは、FOSC<2:0> コンフィグレーション ビットで定義します。これらのモードの詳細は、本章の前半で説明しています。

セカンダリ オシレータとは、OSC1 または OSC2 ピン以外に接続される外部信号源をいいます。これらの信号源は、コントローラが電力管理モードに移行した後も動作を継続できます。PIC18F97J60 ファミリには、セカンダリ オシレータとしてTimer1オシレータがあります。全ての電力管理モードで、このオシレータはリアルタイム クロック (RTC) 等の機能のタイムベースとしてよく使われます。

も一般的な例として、32.768 kHz の時計用水晶振動子を RC0/T1OSO/T13CKI ピンと RC1/T1OSI ピンの間に接続します。また、各ピンからグランドへ負荷コンデンサも接続します。Timer1 オシレータについては、セクション 13.3「Timer1 オシレータ」で詳しく説明します。

内部オシレータはプライマリ クロック源としてだけでなく、電力管理モード時のクロック源としても使えます。INTRC は、WDT やフェイルセーフ クロックモニタ (FSCM) 等いくつかの特殊機能のクロック源としても使います。

図 3-1 に、PIC18F97J60 ファミリのクロック源を示します。コンフィグレーション レジスタの詳細は、セクション 25.0「CPU の特殊機能」を参照してください。

5x PLL PLL プリスケーラ PLL ポストスケーラPLL ブロックの設定(OSCTUNE<7:4>)

クロック周波数(MHz)

有効

2

無効 x101 (Note 1)

2 1111 31.2500

3 0111 20.8333

3

無効 x100 41.6667

2 1110 20.8333

3 0110 13.8889

無効

無効 (2) 無効 x00x 25 ( 既定値 )

22 1011 6.2500

3 0011 4.1667

32 1010 4.1667

3 0010 2.7778

凡例 : x = ドントケア

Note 1: 予約済みの設定です。この設定で生成されるクロック周波数はマイクロコントローラの動作レンジを超えています。

2: PLL とポストスケーラを両方無効にすると、プリスケーラは自動的に無効になります。

DS39762F_JP - p.52 2013 Microchip Technology Inc.

Page 53: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

3.7.1 オシレータ制御レジスタ

OSCCONレジスタ (レジスタ 3-2)は、通常の動作モード時と電力管理モード時におけるデバイスクロック動作の一部を制御します。

システムクロック選択ビット (SCS<1:0>) でクロック源を選択します。ここで選択できるクロック源は、プライマリ クロック(FOSC<2:0>コンフィグレーションビットで定義 )、セカンダリ クロック (Timer1オシレータ )、内部オシレータのいずれかです。システムクロック選択ビットを変更すると、クロック切り換えのための短い遅延後、クロック源が切り換わります。

OSTS (OSCCON<3>) ビットと T1RUN (T1CON<6>)ビットは、デバイスの現在のクロック源を示します。セカンダリ クロックモードで Timer1 オシレータがデバイスにクロックを供給している場合、T1RUN ビットに示されます。電力管理モードでは、これら 2 つのビットが同時にセットされる事はありません。どちらのビットもセットされていなければ、INTRC がクロック源であるか、または内部オシレータが起動したばかりでまだ安定していない事を示します。

IDLEN ビットは、SLEEP命令を実行した場合にスリープとアイドルのどちらに移行するかを決定します。

OSCCON レジスタのフラグビットと制御ビットの使用法については、セクション 4.0「電力管理モード」で詳しく説明します。

Note 1: セカンダリ クロック源を選択するには、Timer1オシレータを有効にする必要があります。Timer1 オシレータを有効にするには、Timer1 制御レジスタ (T1CON<3>)の T1OSCEN ビットをセットします。Timer1 オシレータが無効の場合、セカンダリ クロック源を選択しても無視されます。

2: SLEEP 命令の実行前に Timer1 オシレータを動作させ、安定化させておく事を推奨します。そうしないと、Timer1 オシレータの起動中に非常に長い遅延が発生する場合があります。

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

R/W-0 U-0 U-0 U-0 R-q U-0 R/W-0 R/W-0

IDLEN — — — OSTS(1) — SCS1 SCS0

bit 7 bit 0

凡例 : q = 設定による

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

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

bit 7 IDLEN: アイドル イネーブルビット

1 = SLEEP命令によってデバイスがアイドルに移行する0 = SLEEP命令によってデバイスがスリープに移行する

bit 6-4 未実装 :「0」として読み出し

bit 3 OSTS: オシレータ ステータスビット (1)

1 = SCS<1:0> = 00の場合、定義されたオシレータ信号源でデバイスが動作している0 = SCS<1:0> = 01、10、11の場合、定義されたオシレータ信号源でデバイスが動作している

bit 2 未実装 :「0」として読み出し

bit 1-0 SCS<1:0>: システムクロック選択ビット

11 = 内部オシレータ10 = プライマリ オシレータ01 = Timer1 オシレータ

FOSC2 = 1の場合 :00 = プライマリ オシレータ

FOSC2 = 0の場合 :00 = 内部オシレータ

Note 1: リセット値は 2 段階起動が有効な場合が「0」で、無効な場合が「1」です。

2013 Microchip Technology Inc. DS39762F_JP - p.53

Page 54: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

DS39762F_JP - p.54 2013 Microchip Technology Inc.

3.7.1.1 システムクロック選択と FOSC2コンフィグレーション ビット

SCS ビットは全てのリセットでクリアされます。つまり、デバイスの既定値の設定では FOSC<1:0> で定義したプライマリ オシレータ ( すなわち HC/EC モードのいずれか ) がデバイスリセット時にプライマリ クロック源として使われます。

リセット時に既定値として使われるクロック源の設定は、FOSC2 コンフィグレーション ビットで変更できます。このビットは、SCS<1:0> = 00の場合のクロック源を選択します。FOSC2 = 1 ( 既定値 ) の場合、SCS<1:0> = 00の時のオシレータ信号源はFOSC<1:0>の設定によって決まります。FOSC2 = 0 の場合、SCS<1:0> = 00 の時のオシレータ信号源は INTRCです。SCS ビットはリセットでクリアされるため、FOSC2 の設定によってリセット時の既定値のオシレータモードも変更されます。

FOSC2 の設定にかかわらず、INTRC はデバイスの電源投入時に常に有効になります。INTRC は、デバイスがメモリからコンフィグレーションの値を読み込むまでクロック源として使われます。FOSC コンフィグレーション ビットを読み込んだ時点で、その設定に基づいたオシレータ信号源で動作が開始します。

FOSC2 の設定により、プライマリ クロックと内部オシレータのどちらか一方が 2 つのビット設定値を持ちます。

3.7.2 オシレータの移行

PIC18F97J60 ファミリは、クロック源の切り換え時に発生するクロックの「グリッチ」を防止する回路を内蔵しています。クロック切り換え時には、デバイスのクロックがわずかな間停止します。停止時間の長さは、切り換え前のクロック源 2 サイクル分と切り換え後のクロック源 3 ~ 4 サイクル分の合計です。この仕組みにより、切り換え後のクロック源の確実な安定をはかっています。

クロック移行の詳細は、セクション 4.1.2「電力管理モードへの移行」で詳しく説明します。

3.8 各種クロック源に対する電力管理モードの影響

PRI_IDLE モードを選択すると、指定したプライマリオシレータが常時動作を継続します。その他全ての電力管理モードでは、OSC1 ピンを使ったオシレータは無効になります。OSC1ピン (およびオシレータで使っている場合は OSC2 ピン ) は発振を停止します。

セカンダリ クロックモード (SEC_RUNとSEC_IDLE)では、Timer1 オシレータが動作を継続し、デバイスにクロックを供給します。また、Timer1 オシレータがTimer1またはTimer3にクロックを供給している場合、Timer1 オシレータは全ての電力管理モードで動作を継続します。

RC_RUN および RC_IDLE モードでは、内部オシレータがデバイスにクロックを供給します。31 kHz のINTRC 出力を直接クロック源として使うと、電力管理モードにかかわらず各種の特殊機能を有効にできます(WDT、フェイルセーフ クロックモニタ、2 段階起動の詳細は、セクション 25.2「ウォッチドッグ タイマ(WDT)」~セクション 25.5「フェイルセーフ クロックモニタ」を参照してください )。

スリープを選択した場合、全てのクロック源が停止します。トランジスタのスイッチング電流が完全に停止するため、スリープではデバイスの消費電流が 小です ( リーク電流のみ )。

スリープ中も動作を継続する機能を使うと、スリープ中の消費電流が増大します。WDT を動作させるには、INTRC が必要です。リアルタイム クロックをサポートするには Timer1 オシレータの動作を継続する場合があります。その他、デバイスのクロック源を必要としない機能 (MSSP スレーブ、PSP、INTx ピン等 ) は動作を継続する事があります。消費電流が顕著なモジュールについては、セクション 28.2「DC 特性 : パワーダウン電流と消費電流 PIC18F97J60ファミリ (産業用 )」を参照してください。

3.9 パワーアップ遅延

パワーアップ遅延は 2 つのタイマで制御されるため、ほとんどのアプリケーションで外付けのリセット回路は必要ありません。この遅延によって、通常の環境においてデバイスの電源が安定し、プライマリ クロックが安定動作するまでデバイスを確実にリセット状態に保持します。パワーアップ遅延の詳細は、セクション 5.6「パワーアップ タイマ (PWRT)」を参照してください。

初のタイマはパワーアップ タイマ (PWRT) で、パワーアップ時に一定の遅延(表 28-12のパラメータ33)を発生させます。PWRT は常に有効です。

2 番目のタイマはオシレータ起動タイマ (OST) で、水晶振動子が安定するまで (HS モード時 ) デバイスをリセット状態に保持します。OST は 1024 オシレータ サイクルをカウントした後、オシレータからのクロックをデバイスに供給します。

POR の発生からコントローラが命令を実行できるようになるまでには、TCSD ( 表 28-12 のパラメータ 38)の遅延があります。

表 3-3: スリープ時の OSC1 および OSC2 ピンの状態

オシレータモード OSC1 ピン OSC2 ピン

EC、ECPLL フローティング、外部クロックによってプルアップ / ダウン

論理 Low (1/4 クロック出力 )

HS、HSPLL フィードバック インバータは静止電圧レベルでは無効

フィードバック インバータは静止電圧レベルでは無効

Note: スリープと MCLR リセットによるタイムアウトについては、セクション 5.0「リセット」の表 5-2 を参照してください。

Page 55: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

4.0 電力管理モード

PIC18F97J60 ファミリは、CPU と周辺モジュールへのクロック供給を管理して簡単に消費電力を抑える事ができます。一般的に、クロック周波数が低いほど、また、クロックの供給を受ける回路の数が少ないほど、消費電力は低下します。アプリケーションの電力管理のために、以下の 3 つの動作モードを用意しています。

• ランモード

• アイドル

• スリープ

これらのモードは、デバイスのどの部分にどれだけの速度のクロックを供給するかを定義します。ランモードとアイドルでは 3 つのクロック源 ( プライマリ、セカンダリ、内部オシレータ ブロック ) のいずれかが使えますが、スリープではクロック源を使いません。

これらの電力管理モードは、従来の PIC® MCU が搭載していたいくつかの省電力機能を含んでいます。例えば、他の PIC18 と同様に、コントローラのクロック源をプライマリ オシレータから Timer1 オシレータに切り換える機能がその 1 つです。また、全ての PIC MCUが備えているスリープも搭載しています。このモードではデバイスクロックが全て停止します。

4.1 電力管理モードの選択

電力管理モードを選択するには、(1) CPU へのクロック供給を継続するかどうか、(2) どのクロック源を使うか、を決定する必要があります。CPU へのクロック供給は IDLEN ビット (OSCCON<7>)、クロック源はSCS<1:0> ビット (OSCCON<1:0>) で選択します。表 4-1 に、各モードのビット設定、クロック源、影響を受けるモジュールをまとめます。

4.1.1 クロック源

電力管理モードで使うクロック源は、SCS<1:0> ビットを使って以下の 3 つから選びます。

• FOSC<2:0> コンフィグレーション ビットで定義したプライマリ クロック

• セカンダリ クロック (Timer1 オシレータ )

• 内部オシレータ

4.1.2 電力管理モードへの移行

電力管理モードを切り換えるには、まず OSCCON レジスタに値を書き込みます。SCS<1:0> ビットでクロック源を選択し、どのランモード / アイドルを使うかを決定します。これらのビットを変更すると、新しいクロック源が既に動作している場合はただちに切り換わります。切り換え時にも、クロック遷移の遅延が発生します。詳細については、セクション 4.1.3「クロック切り換えとステータス インジケータ」以降のセクションで説明します。

アイドル /スリープへはSLEEP命令の実行によって移行します。どちらのモードに移行するかは、IDLENビットの設定によって決まります。

切り換え前後のモードの組み合わせによっては、これら全てのビットを変更しなくてもモードを切り換えられる場合があります。多くの場合、SLEEP命令を発行する前にオシレータ選択ビットまたはIDLENビットを変更するだけでモードを切り換える事ができます。IDLEN ビットが既に正しく設定されていれば、SLEEP命令を実行するだけで所定のモードに切り換える事ができます。

表 4-1: 電力管理モード

モード

OSCCON<7,1:0> モジュールへのクロック供給

利用可能なクロック / オシレータ源

IDLEN(1) SCS<1:0> CPU 周辺モジュール

スリープ 0 N/A なし なし なし – 全てのクロックが停止

PRI_RUN N/A 10 あり あり プライマリ – HS、EC、HSPLL、ECPLL( 通常の実行モードです。消費電力を低減する電力管理モードではありません )

SEC_RUN N/A 01 あり あり セカンダリ – Timer1 オシレータ

RC_RUN N/A 11 あり あり 内部オシレータ

PRI_IDLE 1 10 なし あり プライマリ – HS、EC、HSPLL、ECPLL

SEC_IDLE 1 01 なし あり セカンダリ – Timer1 オシレータ

RC_IDLE 1 11 なし あり 内部オシレータ

Note 1: IDLEN は、SLEEP命令実行時の値です。

2013 Microchip Technology Inc. DS39762F_JP - p.55

Page 56: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

4.1.3 クロック切り換えとステータス インジケータ

クロック源の切り換えにかかる時間の長さは、切り換え前のクロック源2サイクル分と切り換え後のクロック源 3 ~ 4 サイクル分の合計です。この仕組みにより、切り換え後のクロック源の確実な安定をはかっています。

現 在 の ク ロ ッ ク 源 と そ の 状 態 は、OSTS(OSCCON<3>) ビットと T1RUN (T1CON<6>) ビットの 2 つで表されます。通常、電力管理モードではこれらビットのどちらか1つだけがセットされます。OSTSビットがセットされている場合、プライマリ クロックがデバイスのクロック源です。T1RUN ビットがセットされている場合、Timer1 オシレータが現在のクロック源です。どちらのビットもセットされていない場合、INTRC がデバイスのクロック源です。

4.1.4 複数の SLEEP 命令

SLEEP 命令によってどの電力管理モードになるかは、命令実行時の IDLEN ビットの設定によって決まります。もう一度 SLEEP命令を実行すると、デバイスはその時点の IDLEN ビットの設定に従って電力管理モードに移行します。IDLEN の値が変更されていれば、その新しい設定に基づいた別の電力管理モードに移行します。

4.2 ランモード

ランモードでは、コアと周辺モジュールの両方にクロックを供給します。ランモードには、クロック源の違いによって 3 つの種類があります。

4.2.1 PRI_RUN モード

PRI_RUN モードは、省電力機能を使わない通常の実行モードです。デバイスのリセット時、2 段階起動が有効でない限りこのモードが既定値です ( 詳細は、セクション 25.4「2 段階起動」参照 )。このモードでは、OSTS ビットがセットされます ( セクション 3.7.1「オシレータ制御レジスタ」参照 )。

4.2.2 SEC_RUN モード

SEC_RUN モードは、他の PIC18 が持つ「クロック切り換え」機能と互換のモードです。このモードでは、Timer1 オシレータが CPU と周辺モジュールにクロックを供給します。このモードでは、高精度のクロック源を使いながら消費電力を低減できます。

SCS<1:0> ビットを「01」に設定すると SEC_RUNモードへ移行します。この場合、デバイスのクロック源は Timer1 オシレータに切り換わり ( 図 4-1 参照 )、プライマリ オシレータは動作を停止し、T1RUN ビット (T1CON<6>) がセットされ、OSTS ビットがクリアされます。

SEC_RUN モードから PRI_RUN モードへ移行する場合、プライマリ クロックが完全に起動するまでの間、周辺モジュールと CPU には Timer1 オシレータからクロックが供給されます。プライマリ クロックの準備が完了したら、プライマリ クロックへの切り換えが行われます ( 図 4-2 参照 )。クロックの切り換えが完了すると、T1RUN ビットがクリア、OSTS ビットがセットされ、プライマリ クロックがクロックを供給します。IDLEN ビットと SCS ビットは復帰の影響を受けず、Timer1 オシレータは動作を継続します。

Note: SLEEP 命令を実行しても、デバイスが必ずスリープに移行するとは限りません。この命令は、IDLEN ビットの設定に応じて、コントローラをスリープまたはいずれかのアイドルに移行させるトリガとして機能します。

Note: SEC_RUNモードに移行するには、Timer1オシレータが動作を開始済みである事が必要です。SCS<1:0> ビットを「01」に設定しても、その時点で T1OSCEN ビットがセットされていなければ、SEC_RUNモードには移行しません。Timer1 オシレータが有効な場合でも、まだ動作していなければ、Timer1 オシレータが動作を開始するまでデバイスのクロックは供給されません。このような場合、動作開始直後のオシレータは動作が安定していないため、予測不能な動作が生じる事があります。

DS39762F_JP - p.56 2013 Microchip Technology Inc.

Page 57: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 4-1: SEC_RUN モードへの移行時の遷移タイミング

図 4-2: SEC_RUN モードから PRI_RUN モード (HSPLL) への遷移タイミング

Q4Q3Q2

OSC1

Peripheral

Program

Q1

T1OSI

Q1

Counter

Clock

CPUClock

PC + 2PC

1 2 3 n-1 n

Clock Transition

Q4Q3Q2 Q1 Q3Q2

PC + 4

Q1 Q3 Q4

OSC1

Peripheral

ProgramPC

T1OSI

PLL Clock

Q1

PC + 4

Q2

Output

Q3 Q4 Q1

CPU Clock

PC + 2

Clock

Counter

Q2 Q2 Q3

Note 1: TOST = 1024 TOSC、TPLL = 約 2 ms です。図に示した時間の長さはノンスケールです。

SCS<1:0> bits Changed

TPLL(1)

1 2 n-1 n

Clock

OSTS bit Set

Transition

TOST(1)

2013 Microchip Technology Inc. DS39762F_JP - p.57

Page 58: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

4.2.3 RC_RUN モード

RC_RUN モードでは、内部オシレータが CPU と周辺モジュールにクロックを供給し、プライマリ クロックは停止します。このモードは、コード実行を継続できる 3 つのランモードの中で も消費電力の少ないモードです。このモードは、それほど高いタイミング精度が要求されないユーザ アプリケーションまたは常時高速クロックで動作させる必要のないユーザ アプリケーションに適しています。

SCS<1:0> を「11」に設定すると、このモードに移行します。クロック源を INTRC に切り換えると ( 図 4-3参照 )、プライマリ オシレータは停止し、OSTS ビットはクリアされます。

RC_RUN モードから PRI_RUN モードへ移行する場合、プライマリ クロックが完全に起動するまでの間、デバイスには INTRC からのクロックが供給されます。プライマリ クロックの準備が完了したら、プライマリクロックへの切り換えが行われます ( 図 4-4 参照 )。クロックの切り換えが完了すると、OSTS ビットがセットされ、プライマリ クロックがデバイスにクロックを供給します。IDLEN ビットと SCS ビットは、クロック切り換えの影響を受けません。WDT またはフェイルセーフ クロックモニタ (FSCM)のいずれかが有効な場合、INTRC は動作を継続します。

図 4-3: RC_RUN モードへの遷移タイミング

図 4-4: RC_RUN モードから PRI_RUN モードへの遷移タイミング

Q4Q3Q2

OSC1

Peripheral

Program

Q1

INTRC

Q1

Counter

Clock

CPUClock

PC + 2PC

1 2 3 n-1 n

Clock Transition

Q4Q3Q2 Q1 Q3Q2

PC + 4

Q1 Q3 Q4

OSC1

Peripheral

ProgramPC

INTRC

PLL Clock

Q1

PC + 4

Q2

Output

Q3 Q4 Q1

CPU Clock

PC + 2

Clock

Counter

Q2 Q2 Q3

Note 1: TOST = 1024 TOSC、TPLL = 約 2 ms です。図に示した時間の長さはノンスケールです。

SCS<1:0> bits Changed

TPLL(1)

1 2 n-1 n

Clock

OSTS bit Set

Transition

TOST(1)

DS39762F_JP - p.58 2013 Microchip Technology Inc.

Page 59: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

4.3 スリープ

電力管理モードとしてのスリープは、全ての PIC MCUが備える従来のスリープと同じものです。IDLEN ビットをクリアした状態 (デバイスリセット時の既定値 )でSLEEP命令を実行すると、このモードに移行します。スリープに移行するとオシレータは停止します ( 図 4-5)。クロック源ステータスビットは全てクリアされます。

他のモードからスリープに移行する場合、クロックの切り換えは不要です。これは、コントローラがスリープに移行するとクロックを必要としないためです。WDT を有効にした場合、INTRC は動作を継続します。Timer1 オシレータを有効に設定している場合、Timer1オシレータも動作を継続します。

スリープで ( 割り込み、リセット、WDT タイムアウト等の要因によって ) 復帰イベントが発生しても、SCS<1:0> ビットで選択したクロック源の準備が完了するまでデバイスにはクロックが供給されません( 図 4-6)。ただし、2 段階起動またはフェイルセーフクロックモニタ (FSCM)のいずれか (セクション 25.0

「CPU の特殊機能」参照 ) を有効にしている場合、内部オシレータからクロックが供給されます。どちらの場合も、プライマリ クロックがデバイスにクロックを供給している場合は OSTS ビットがセットされます。復帰後も、IDLENビットとSCSビットは変化しません。

4.4 アイドル

アイドルでは、CPU へのクロック供給のみが選択的に停止し、周辺モジュールは動作を継続します。3 種類のアイドルを使い分ける事によって、消費電力をさらに細かく管理する事ができます。

IDLEN ビットを「1」にセットした状態で SLEEP 命令を実行すると、周辺モジュールは SCS<1:0> ビットで選択したクロック源で動作しますが、CPU へのクロック供給は停止します。クロック源ステータスビットは影響を受けません。IDLEN ビットをセットしてSLEEP 命令を実行すると、現在のランモードと同じクロック源を使ったアイドルへ簡単に切り換える事ができます。

WDT を有効にした場合、INTRC は動作を継続します。Timer1 オシレータを有効に設定している場合、Timer1オシレータも動作を継続します。

CPU による命令実行は停止しているため、アイドルから復帰するには割り込み、WDT タイムアウト、リセットのいずれかを必要とします。これらの復帰イベントが発生すると、TCSD ( 表 28-12 のパラメータ 38) の遅延時間の後、CPU はコード実行を開始します。CPU は、現在のアイドルと同じクロック源でコード実行を再開します。例えば、RC_IDLE モードから復帰するとRC_RUN モードで、内部オシレータ ブロックが CPUと周辺モジュールにクロックを供給します。復帰後も、IDLEN ビットと SCS ビットは変化しません。

アイドルまたはスリープの時に WDT がタイムアウトになると WDT 復帰となり、SCS<1:0> ビットの現在の設定に基づいたランモードに復帰します。

図 4-5: スリープへの移行時の遷移タイミング

図 4-6: スリープからの復帰時の遷移タイミング (HSPLL)

Q4Q3Q2

OSC1

Peripheral

Sleep

Program

Q1Q1

Counter

Clock

CPUClock

PC + 2PC

Q3 Q4 Q1 Q2

OSC1

Peripheral

ProgramPC

PLL Clock

Q3 Q4

Output

CPU Clock

Q1 Q2 Q3 Q4 Q1 Q2

Clock

Counter PC + 6PC + 4

Q1 Q2 Q3 Q4

Wake Event

Note 1: TOST = 1024 TOSC、TPLL = 約 2 ms です。図に示した時間の長さはノンスケールです。

TOST(1) TPLL(1)

OSTS bit Set

PC + 2

2013 Microchip Technology Inc. DS39762F_JP - p.59

Page 60: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

4.4.1 PRI_IDLE モード

3 種類のアイドルのうち、このモードだけはプライマリ クロックが停止しません。このため、クロック源の「ウォームアップ」または他のオシレータからの切り換えなしに、高精度なプライマリ クロック源を使って高速にデバイスの動作を再開でき、高いタイミング精度が要求されるアプリケーションに適しています。

PRI_RUN モードにおいて、IDLEN ビットをセットした状態で SLEEP 命令を実行すると PRI_IDLE モードに移行します。その他のランモードで動作している場合、IDLEN ビットをセットした後で SCS<1:0> ビットを「10」に設定し、SLEEP 命令を実行します。このモードでは CPU は動作を停止しますが、周辺モジュールにはFOSC<1:0>コンフィグレーション ビットで指定したプライマリ クロック源からのクロック供給が継続します。OSTS ビットはセットされたままです ( 図 4-7 参照 )。

復帰イベントが発生すると、CPUはプライマリ クロック源で動作を再開します。復帰イベントが発生してからコード実行が開始するまでの間には、TCSD の遅延時間が必要です。これは、CPU が命令を実行できるようになるまでに必要な時間です。復帰後も、OSTS ビットはセットされたままです。IDLENビットとSCSビットは、復帰の影響を受けません ( 図 4-8 参照 )。

4.4.2 SEC_IDLE モード

SEC_IDLE モードでは、CPU は動作を停止しますが、周辺モジュールには Timer1 オシレータからのクロック供給が継続します。SEC_RUN モードにおいて、IDLEN ビットをセットした状態で SLEEP 命令を実行すると SEC_IDLE モードに移行します。その他のランモードで動作している場合、IDLEN ビットをセットした後で SCS<1:0> ビットを「01」に設定し、SLEEP命令を実行します。クロック源が Timer1 オシレータに切り換わるとプライマリ オシレータは停止し、OSTSビットがクリア、T1RUN ビットがセットされます。

復帰イベントが発生しても、周辺モジュールは Timer1オシレータで動作を継続します。復帰イベントの発生から TCSD の遅延時間の後、CPU は Timer1 オシレータでコード実行を開始します。IDLEN ビットと SCSビットは復帰の影響を受けず、Timer1 オシレータは動作を継続します ( 図 4-8 参照 )。

図 4-7: アイドルへの移行時の遷移タイミング

図 4-8: アイドルからランモードへの復帰時の遷移タイミング

Note: SEC_IDLE モードに移行するには、Timer1オシレータが動作を開始済みである事が必要です。SLEEP命令実行時に T1OSCENビットがセットされていなければ、SLEEP命令は無視され、SEC_IDLE モードへは移行しません。Timer1 オシレータが有効な場合でも、まだ動作していなければ、Timer1 オシレータが動作を開始するまで周辺モジュールのクロックは供給されません。このような場合、動作開始直後のオシレータは動作が安定していないため、予測不能な動作が生じる事があります。

Q1

Peripheral

ProgramPC PC + 2

OSC1

Q3 Q4 Q1

CPU Clock

Clock

Counter

Q2

OSC1

Peripheral

ProgramPC

CPU Clock

Q1 Q3 Q4

Clock

Counter

Q2

Wake Event

TCSD

DS39762F_JP - p.60 2013 Microchip Technology Inc.

Page 61: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

4.4.3 RC_IDLE モード

RC_IDLE モードでは、CPU は動作を停止しますが、周辺モジュールには内部オシレータからのクロック供給が継続します。このモードでは、アイドル期間中の消費電力を制御できます。

RC_RUN モードにおいて、IDLEN ビットをセットした状態で SLEEP命令を実行すると RC_IDLE モードに移行します。その他のランモードで動作している場合、IDLEN ビットをセットした後で SCS<1:0> ビットを「11」に設定し、SLEEP 命令を実行します。クロック源を INTRC に切り換えると、プライマリ オシレータは停止し、OSTS ビットがクリアされます。

復帰イベントが発生すると、周辺モジュールは INTRCからのクロックで動作を継続します。復帰イベントの発生から TCSD の遅延時間の後、CPU は INTRC からのクロックでコード実行を開始します。復帰後も、IDLEN ビットと SCS ビットは変化しません。WDT またはフェイルセーフ クロックモニタ (FSCM)のいずれかが有効な場合、INTRC は動作を継続します。

4.5 アイドル / スリープの終了

割り込み、リセット、WDT タイムアウトのいずれかが発生するとアイドル / スリープは終了します。ここでは、アイドル / スリープを終了させるトリガについて説明します。クロック供給サブシステムの動作については、各電力管理モードの説明 ( セクション 4.2「ランモード」、セクション 4.3「スリープ」、セクション 4.4「アイドル」) を参照してください。

4.5.1 割り込みによる終了

利用可能な全ての割り込み要因は、デバイスをアイドルまたはスリープからランモードに移行させる事ができます。この機能を使うには、INTCON または PIE レジスタで割り込み要因のイネーブルビットをセットしておく必要があります。これで、対応する割り込みフラグビットがセットされるとアイドル / スリープ終了シーケンスが開始します。

GIE/GIEHビット (INTCON<7>)がセットされている場合、割り込みによってアイドル / スリープを終了すると、コード実行は必ず割り込みベクタへ分岐します。それ以外の場合は分岐せず、そのままコード実行を継続または再開します ( セクション 10.0「割り込み」参照 )。

アイドル / スリープを終了する際は、復帰イベントの発生から TCSD の遅延時間が必要です。この遅延時間は、CPU が命令実行を開始できるようになるまでの時間を確保するために必要です。命令実行は、この遅延が経過した後の 初のクロックサイクルで再開されます。

4.5.2 WDT タイムアウトによる終了

WDT タイムアウト後の動作は、どの電力管理モードでWDT タイムアウトが発生したかによって異なります。

デバイスがコードを実行していない時 ( アイドルまたはスリープ ) に WDT タイムアウトになると、これらのモードが終了します (セクション 4.2「ランモード」、セクション 4.3「スリープ」参照 )。コード実行中 ( ランモード ) に WDT タイムアウトになると、WDT リセットとなります ( セクション 25.2「ウォッチドッグタイマ (WDT)」参照 )。

WDT タイマとポストスケーラは、以下のいずれかのイベントによってクリアされます。

• SLEEPまたは CLRWDT命令を実行した場合

• フェイルセーフ クロックモニタ (FSCM) 有効時に、現在選択中のクロック源が失われた場合

4.5.3 リセットによる終了

リセットによってアイドル / スリープが終了すると、デバイスのクロック源は自動的に INTRC に切り換わります。

4.5.4 オシレータ起動タイマ遅延を伴わない終了

OST を一切起動せずにアイドル / スリープを終了できる場合もあります。これには、以下の 2 つの場合があります。

• PRI_IDLE モードの場合 ( プライマリ クロック源が停止していない )

• プライマリ クロック源が EC または ECPLL モードの場合

これらの場合には、プライマリ クロック源が既に動作している (PRI_IDLE モード ) か、または元々オシレータ起動遅延が必要ない (EC および ECPLL モード ) ため、オシレータ起動遅延も発生しません。ただし、アイドル / スリープを終了する際は、復帰イベントが発生してから CPU がコード実行を開始できるようになるまでに TCSD の遅延時間が必要である事には変わりありません。命令実行は、この遅延が経過した後の初のクロックサイクルで再開されます。

2013 Microchip Technology Inc. DS39762F_JP - p.61

Page 62: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.62 2013 Microchip Technology Inc.

Page 63: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

5.0 リセット

PIC18F97J60 ファミリのリセットには、以下の種類があります。

a) 通常動作中の MCLR リセット

b) 電力管理モード時の MCLR リセット

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

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

e) コンフィグレーション不一致 (CM)

f) RESET命令

g) スタックフル リセット

h) スタック アンダーフロー リセット

i) コード実行中のウォッチドッグ タイマ (WDT)リセット

このセクションでは、ハードイベント (MCLR)、電源イベント (POR、BOR)、コンフィグレーション不一致(CM) によって発生するリセットについて説明します。また、各種起動タイマの動作についても説明します。スタックリセット イベントについてはセクション 6.1.6.4「スタックフルとスタック アンダー フロー

によるリセット」で説明します。WDT リセットについてはセクション 25.2「ウォッチドッグ タイマ(WDT)」で説明します。

図 5-1 に、内蔵リセット回路の概略ブロック図を示します。

5.1 RCON レジスタ

デバイスリセット イベントは、RCON レジスタ ( レジスタ 5-1) を使って監視します。このレジスタの下位 6 ビットは、発生したリセットイベントの種類を示します。ほとんどの場合、これらのビットはイベントによってのみセットされ、イベント発生後にアプリケーションでクリアする必要があります。これらのフラグビットの状態を全て読み出す事によって、発生したリセットの種類を特定できます。詳細は、セクション 5.7「レジスタのリセット状態」で説明します。

RCON レジスタには、割り込み優先度を設定する制御ビット (IPEN) もあります。割り込み優先度についてはセクション 10.0「割り込み」で説明します。

図 5-1: 内蔵リセット回路の概略ブロック図

External Reset

MCLR

VDD

WDTTime-out

VDD RiseDetect

PWRT

INTRC

POR Pulse

Chip_Reset

Brown-outReset(1)

RESET Instruction

StackPointer

Stack Full/Underflow Reset

Sleep( )_IDLE

32 s

Note 1: ブラウンアウト リセットを有効にするには、ENVREG ピンを High に接続する必要があります。電源電圧が降

下してデバイスの安定動作を維持できなくなると、内蔵電圧レギュレータによってブラウンアウト リセットが

発生します。

PWRT

11-Bit Ripple Counter

66 ms

S

R Q

Configuration Word Mismatch

2013 Microchip Technology Inc. DS39762F_JP - p.63

Page 64: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 5-1: RCON: リセット制御レジスタ

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

IPEN — CM RI TO PD POR BOR

bit 7 bit 0

凡例 :

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

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

bit 7 IPEN: 割り込み優先度イネーブルビット

1 = 割り込みに対する優先度レベルの設定を有効にする0 = 割り込みに対する優先度レベルの設定を無効にする (PIC16CXXX 互換モード )

bit 6 未実装 :「0」として読み出し

bit 5 CM: コンフィグレーション不一致フラグビット

1 = コンフィグレーション不一致リセットは発生していない0 = コンフィグレーション不一致リセットが発生した ( コンフィグレーション不一致リセット

発生後にソフトウェアによるセットが必要である )

bit 4 RI: RESET命令フラグビット

1 = RESET命令は実行されていない ( ファームウェアのみセット可能である )0 = RESET命令が実行され、デバイスがリセットされた ( ブラウンアウト リセット発生後はソフト

ウェアによるセットが必要である )

bit 3 TO: ウォッチドッグ タイマ タイムアウト フラグビット

1 = 電源投入、CLRWDT命令または SLEEP命令によってセット 0 = WDT タイムアウトが発生した

bit 2 PD: パワーダウン検出フラグビット

1 = 電源投入または CLRWDT命令によってセット 0 = SLEEP命令の実行によってセット

bit 1 POR: パワーオン リセット ステータスビット

1 = パワーオン リセットは発生していない ( ファームウェアのみセット可能である )0 = = パワーオン リセットが発生した ( パワーオン リセット発生後はソフトウェアによるセットが

必要である )

bit 0 BOR: ブラウンアウト リセット ステータスビット

1 = ブラウンアウト リセットは発生していない ( ファームウェアのみセット可能である )0 = = ブラウンアウト リセットが発生した ( ブラウンアウト リセット発生後はソフトウェアによる

セットが必要である )

Note 1: パワーオン リセットの検出後は、次のパワーオン リセットを検出できるように POR ビットをセットする事を推奨します。

2: 内蔵電圧レギュレータが無効な場合、BOR は常に「0」のままです。詳細は、セクション 5.4.1「BORの検出」を参照してください。

3: BOR が「0」かつ POR が「1」の場合、ブラウンアウト リセットが発生したと考えられます( パワーオン リセット直後に POR をソフトウェアで「1」にセットしている場合 )。

DS39762F_JP - p.64 2013 Microchip Technology Inc.

Page 65: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

5.2 マスタクリア (MCLR)

MCLR ピンは、デバイスを外部からハードリセットする際に使います。このピンを Low に保持すると、リセットが発生します。PIC18 拡張マイクロコントローラの MCLR リセット回路にはノイズフィルタがあり、微小パルスを検出しても無視します。

WDT を含めいずれの内部リセットも、MCLR ピンをLow に駆動する事はありません。

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

VDD が一定のしきい値を超えると、デバイス内部でパワーオン リセット条件が発生します。これにより、デバイスはVDDが十分に立ち上がってから初期化状態で起動します。

POR 回路を使うには、VDD と MCLR ピンの間に抵抗(1 ~ 10 k) を挟みます。これにより、外付けの RC部品を使わずにパワーオン リセット遅延を確保できます。VDDの 小立ち上がりレートはパラメータD004に規定されています。立ち上がり時間が遅い場合、図 5-2 を参照してください。

デバイスがリセット条件を終了して通常動作を開始する際、デバイスの動作パラメータ ( 電圧、周波数、温度等 ) は正常動作の要件を満たす必要があります。これらの条件を満たさない場合、動作条件が満たされるまでデバイスをリセット条件に維持する必要があります。

POR イベントが発生すると、POR ビット (RCON<1>)にキャプチャされます。このビットは、POR イベントが発生すると「0」になりますが、他のリセットイベントでは変化しません。また、POR ビットはいかなるハードウェア イベントによっても「1」になる事はありません。イベントを何度もキャプチャするには、パワーオン リセット後にソフトウェアでこのビットを「1」に戻しておく必要があります。

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

PIC18F97J60 ファミリには、内蔵電圧レギュレータを有効 (ENVREG ピンを VDD に接続 ) にすると動作するシンプルな BOR 機能があります。VDD が VBOR ( パラメータD005)を下回る時間がTBOR (パラメータ35)を超えると、デバイスはリセットされます。VDD が VBOR

を下回る時間が TBOR より短い場合、リセットが発生するかどうかは確定しません。VDD が VBOR を上回るまで、デバイスはブラウンアウト リセット状態のままです。

BOR が発生すると、パワーアップ タイマによってTPWRT の期間 ( パラメータ 33) だけデバイスがリセット状態に保持されます。 パワーアップ タイマの動作中に VDD が VBOR を下回ると、デバイスは再びブラウンアウト リセット状態に戻り、パワーアップ タイマは初期化されます。次に VDD が VBOR を上回った時点からパワーアップ タイマによる遅延が再び開始します。

図 5-2: 外部パワーオン リセット回路(VDD 電源の立ち上がりが遅い場合 )

5.4.1 BOR の検出

ブラウンアウト リセットまたはパワーオン リセットが発生すると、BOR ビットは必ず「0」にリセットされます。このため、BOR ビットを読み出すだけでは、ブラウンアウト リセットの発生を確実に検出する事はできません。POR と BOR の状態を同時に確認する方がより確実です。これは、パワーオン リセットが発生した直後に POR ビットをソフトウェアで「1」にリセットする事が前提です。BOR が「0」で POR が「1」の場合、ブラウンアウト リセットが発生したと判断できます。

電圧レギュレータを無効にすると、ブラウンアウト リセット機能も無効になります。この場合、ブラウンアウト リセットが発生したかどうかを BOR ビットで判断する事はできません。この場合も、パワーオン リセットが発生すると BOR ビットはクリアされます。

5.5 コンフィグレーション不一致 (CM)

コンフィグレーション不一致 (CM) リセットは、メモリ内容のランダムな破損イベントを検出して回復を試みる機能です。例えば静電気放電 (ESD) イベントが発生するとデバイス全体にシングルビットの変化が広がり、致命的なエラーを引き起こす事があります。

PIC18FXXJ には、動作時にコンフィグレーション メモリ空間にあるデバイス コンフィグレーション レジスタを常時監視し、相補的なシャドーレジスタの内容と比較する機能があります。これらのレジスタの内容が一致しない場合、自動的に CM リセットが発生します。CM リセットが発生すると、そのイベントが CM ビット (RCON<5>) にキャプチャされます。このビットは、CM リセットが発生すると「0」になりますが、他のリセットイベントでは変化しません。

Note 1: 外部パワーオン リセット回路が必要なのは、

VDD の立ち上がりが極端に遅い場合のみです。

ダイオード D は、VDD のパワーダウン時にコ

ンデンサの放電を促進します。

2: Rの電圧降下がデバイスの電気的仕様に違反

しないよう、R < 40 kとする事を推奨します。

3: R1 1 kとすると、静電気放電 (ESD) または

電気的オーバーストレス (EOS) によって

MCLR/VPP ピンの絶縁破壊が発生した場合、外

付けコンデンサ C から MCLR に流れ込む電流

を制限できます。

C

R1(3)

R(2)D(1)

VDD

MCLR

PIC18FXXJ6X

VDD

2013 Microchip Technology Inc. DS39762F_JP - p.65

Page 66: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

CM リセットの挙動は、マスタクリア リセット、RESET命令によるリセット、WDT タイムアウト リセット、スタックイベント リセットと同様です。ハードリセットとパワーリセットの発生時と同様、デバイスの再起動時にプログラムメモリ内のフラッシュ コンフィグレーション ワードからデバイス コンフィグレーション ワードに値が読み込まれます。

5.6 パワーアップ タイマ (PWRT)

PIC18F97J60 ファミリは、パワーオン リセット プロセスを安定化するためのパワーアップ タイマ (PWRT)を内蔵しています。PWRT は常に有効で、その主な目的は、デバイスの電圧が安定してからコード実行を開始できるようにする事です。

PIC18F97J60ファミリのパワーアップ タイマ(PWRT)は、INTRC をクロック源とする 11 ビットのカウンタです。このタイマにより、約 2048 x 32 s = 66 ms の遅延を確保します。PWRT がカウント中は、デバイスはリセット状態のままです。

PWRT による遅延時間は、INTRC のクロックによって変化する他、温度とプロセスばらつきの影響も受けるため、チップごとに異なります。詳細は、DC パラメータ 33 を参照してください。

5.6.1 タイムアウト シーケンス

POR パルスがクリアになると、PWRT タイムアウトが開始します。タイムアウトの合計時間は、PWRT の状態によって異なります。図 5-3、図 5-4、図 5-5、図 5-6に、パワーアップ時のタイムアウト シーケンスを示します。

タイムアウトは POR パルスを起点に発生するため、MCLR を長時間 Low に維持すると、PWRT が先にタイムアウトします。その後で MCLR を High にすると、ただちに実行が開始します ( 図 5-5)。これは、テスト時または並列動作している複数の PIC18FXXJ6X の同期を取る場合に便利です。

図 5-3: パワーアップ後のタイムアウト シーケンス (MCLRをVDDに接続、VDD立ち上がり時間 < TPWRT)

図 5-4: パワーアップ後のタイムアウト シーケンス (MCLR を VDD に接続しない ): 例 1

TPWRT

VDD

MCLR

INTERNAL POR

PWRT TIME-OUT

INTERNAL RESET

TPWRT

VDD

MCLR

INTERNAL POR

PWRT TIME-OUT

INTERNAL RESET

DS39762F_JP - p.66 2013 Microchip Technology Inc.

Page 67: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 5-5: パワーアップ後のタイムアウト シーケンス (MCLR を VDD に接続しない ): 例 2

図 5-6: 立ち上がり時間が遅い場合 (MCLR を VDD に接続、VDD 立ち上がり時間 > TPWRT)

VDD

MCLR

INTERNAL POR

PWRT TIME-OUT

INTERNAL RESET

TPWRT

VDD

MCLR

INTERNAL POR

PWRT TIME-OUT

INTERNAL RESET

0V 1V

3.3V

TPWRT

2013 Microchip Technology Inc. DS39762F_JP - p.67

Page 68: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

5.7 レジスタのリセット状態

ほとんどのレジスタは、リセットによって値が変化しません。そのようなレジスタは POR 時の状態が不明であり、その他のリセットによって状態が変化する事もありません。ただし、発生したリセットの種類に応じて「リセット状態」に戻るレジスタもあります。

WDT による復帰は通常動作の再開と見なされるため、ほとんどのレジスタが影響を受けません。RCON レジスタのステータスビット (CM、RI、TO、PD、POR、

BOR) がリセットによってセットされるかクリアされるかは、表 5-1 に示すようにリセットの種類によって異なります。これらのビットを使うと、リセットの種類をソフトウェアで判定できます。

表 5-2 に、全ての特殊機能レジスタのリセット状態を示します。この表では、「パワーオン リセット / ブラウンアウト リセット時」、「マスタクリア /WDT リセット時」、「WDT による復帰時」等に分けてリセット条件を示します。

表 5-1: RCON レジスタのステータスビットの意味と初期化条件

条件プログラム カウンタ (1)

RCON レジスタ STKPTR レジスタ

CM RI TO PD POR BOR STKFUL STKUNF

パワーオン リセット 0000h 1 1 1 1 0 0 0 0

RESET命令 0000h u 0 u u u u u u

ブラウンアウト リセット 0000h 1 1 1 1 u 0 u u

コンフィグレーション不一致リセット

0000h 0 u u u u u u u

電力管理ランモード時の MCLR 0000h u u 1 u u u u u

電力管理アイドル / スリープ時の MCLR

0000h u u 1 0 u u u u

フルパワー実行時の MCLR 0000h u u u u u u u u

スタックフル リセット(STVREN = 1)

0000h u u u u u u 1 u

スタック アンダーフロー リセット (STVREN = 1)

0000h u u u u u u u 1

スタック アンダーフロー エラー (STVREN = 0、実際にはリセットでない )

0000h u u u u u u u 1

フルパワーまたは電力管理ランモード時の WDT タイムアウト

0000h u u 0 u u u u u

電力管理アイドル / スリープ時の WDT タイムアウト

PC + 2 u u 0 0 u u u u

割り込みによる電力管理モードの終了時

PC + 2 u u u 0 u u u u

凡例 : u = 不変

Note 1: 割り込みによって復帰し、GIEH または GIEL ビットがセットされている場合、PC には割り込みベクタ(0008h または 0018h) が読み込まれます。

DS39762F_JP - p.68 2013 Microchip Technology Inc.

Page 69: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 5-2: 全レジスタの初期化条件

レジスタ 該当するデバイスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、

WDT リセット、

RESET命令、

スタックリセット、

CM リセット

WDT による復帰、

割り込みによる復帰

TOSU PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---0 uuuu(1)

TOSH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu(1)

TOSL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu(1)

STKPTR PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 00-0 0000 uu-0 0000 uu-u uuuu(1)

PCLATU PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

PCLATH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

PCL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 PC + 2(2)

TBLPTRU PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --00 0000 --00 0000 --uu uuuu

TBLPTRH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

TBLPTRL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

TABLAT PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

PRODH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

PRODL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

INTCON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 000x 0000 000u uuuu uuuu(3)

INTCON2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu(3)

INTCON3 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1100 0000 1100 0000 uuuu uuuu(3)

INDF0 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

POSTINC0 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

POSTDEC0 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

PREINC0 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

PLUSW0 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

FSR0H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- xxxx ---- uuuu ---- uuuu

FSR0L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

WREG PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

INDF1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

POSTINC1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

POSTDEC1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

PREINC1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

PLUSW1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

FSR1H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- xxxx ---- uuuu ---- uuuu

FSR1L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

BSR PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- 0000 ---- 0000 ---- uuuu

INDF2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

POSTINC2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

POSTDEC2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

PREINC2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

PLUSW2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X N/A N/A N/A

FSR2H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- xxxx ---- uuuu ---- uuuu

FSR2L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による

網掛けの部分は、本デバイスにその条件が適用されない事を示します。

Note 1: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には現在の PCの値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに変更されます。

2: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または

0018h) が読み込まれます。

3: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( 復帰動作を実行するため )。4: 各条件下でのリセット値は、表 5-1 を参照してください。

2013 Microchip Technology Inc. DS39762F_JP - p.69

Page 70: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

STATUS PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---x xxxx ---u uuuu ---u uuuu

TMR0H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

TMR0L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

T0CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

OSCCON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0--- q-00 0--- q-00 u--- q-uu

ECON1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 00-- 0000 00-- uuuu uu--

WDTCON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- ---0 ---- ---0 ---- ---u

RCON(4) PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0-q1 1100 0-uq qquu u-uu qquu

TMR1H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

TMR1L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

T1CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 u0uu uuuu uuuu uuuu

TMR2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

PR2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 1111 1111

T2CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X -000 0000 -000 0000 -uuu uuuu

SSP1BUF PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

SSP1ADD PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

SSP1STAT PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

SSP1CON1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

SSP1CON2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

ADRESH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

ADRESL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

ADCON0 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0-00 0000 0-00 0000 u-uu uuuu

ADCON1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --00 0000 --00 0000 --uu uuuu

ADCON2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0-00 0000 0-00 0000 u-uu uuuu

CCPR1H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

CCPR1L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

CCP1CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

CCPR2H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

CCPR2L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

CCP2CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

CCPR3H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

CCPR3L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

CCP3CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

ECCP1AS PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

CVRCON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

CMCON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0111 0000 0111 uuuu uuuu

TMR3H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

TMR3L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

表 5-2: 全レジスタの初期化条件 ( 続き )

レジスタ 該当するデバイスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、

WDT リセット、

RESET命令、

スタックリセット、

CM リセット

WDT による復帰、

割り込みによる復帰

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による

網掛けの部分は、本デバイスにその条件が適用されない事を示します。

Note 1: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には現在の PCの値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに変更されます。

2: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または

0018h) が読み込まれます。

3: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( 復帰動作を実行するため )。4: 各条件下でのリセット値は、表 5-1 を参照してください。

DS39762F_JP - p.70 2013 Microchip Technology Inc.

Page 71: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

T3CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 uuuu uuuu uuuu uuuu

PSPCON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 ---- 0000 ---- uuuu ----

SPBRG1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

RCREG1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

TXREG1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

TXSTA1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0010 0000 0010 uuuu uuuu

RCSTA1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 000x 0000 000x uuuu uuuu

EECON2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- ---- ---- ---- ---- ----

EECON1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 x00- ---0 x00- ---u uuu-

IPR3 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

PIR3 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu(3)

PIE3 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

IPR2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1-11 1111 1-11 uuuu u-uu

PIR2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0-00 0000 0-00 uuuu u-uu(3)

PIE2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0-00 0000 0-00 uuuu u-uu

IPR1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

PIR1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu(3)

PIE1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MEMCON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0-00 --00 0-00 --00 u-uu --uu

OSCTUNE PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 ---- 0000 ---- uuuu ----

TRISJ PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --11 ---- --11 ---- --uu ----

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

TRISH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

TRISG PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---1 ---- ---1 ---- ---u ----

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---1 1111 ---1 1111 ---u uuuu

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

TRISF PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 111- 1111 111- uuuu uuu-

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

TRISE PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --11 1111 --11 1111 --uu uuuu

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

TRISD PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- -111 ---- -111 ---- -uuu

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

TRISC PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

TRISB PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

TRISA PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --11 1111 --11 1111 --uu uuuu

LATJ PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --xx ---- --uu ---- --uu ----

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

LATH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

表 5-2: 全レジスタの初期化条件 ( 続き )

レジスタ 該当するデバイスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、

WDT リセット、

RESET命令、

スタックリセット、

CM リセット

WDT による復帰、

割り込みによる復帰

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による

網掛けの部分は、本デバイスにその条件が適用されない事を示します。

Note 1: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には現在の PCの値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに変更されます。

2: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または

0018h) が読み込まれます。

3: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( 復帰動作を実行するため )。4: 各条件下でのリセット値は、表 5-1 を参照してください。

2013 Microchip Technology Inc. DS39762F_JP - p.71

Page 72: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

LATG PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---x ---- ---u ---- ---u ----

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---x xxxx ---u uuuu ---u uuuu

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

LATF PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxx- uuuu uuu- uuuu uuu-

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

LATE PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --xx xxxx --uu uuuu --uu uuuu

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

LATD PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- -xxx ---- -uuu ---- -uuu

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

LATC PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

LATB PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

LATA PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 00xx xxxx 00uu uuuu uuuu uuuu

PORTJ PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --xx ---- --uu ---- --uu ----

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

PORTH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

PORTG PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---x ---- ---u ---- ---u ----

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---x xxxx ---u uuuu ---u uuuu

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 111x xxxx 111u uuuu uuuu uuuu

PORTF PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X x000 000- x000 000- uuuu uuu-

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X x000 000- x000 000- uuuu uuu-

PORTE PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --xx xxxx --uu uuuu --uu uuuu

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

PORTD PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- -xxx ---- -uuu ---- -uuu

PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

PORTC PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

PORTB PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

PORTA PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0-0x 0000 0-0u 0000 u-uu uuuu

SPBRGH1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

BAUDCON1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0100 0-00 0100 0-00 uuuu u-uu

SPBRGH2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

BAUDCON2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0100 0-00 0100 0-00 uuuu u-uu

ERDPTH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 1010 ---0 1010 ---u uuuu

ERDPTL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 0101 1111 0101 uuuu uuuu

ECCP1DEL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

TMR4 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

PR4 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 1111 1111

T4CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X -000 0000 -000 0000 -uuu uuuu

CCPR4H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

CCPR4L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

表 5-2: 全レジスタの初期化条件 ( 続き )

レジスタ 該当するデバイスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、

WDT リセット、

RESET命令、

スタックリセット、

CM リセット

WDT による復帰、

割り込みによる復帰

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による

網掛けの部分は、本デバイスにその条件が適用されない事を示します。

Note 1: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には現在の PCの値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに変更されます。

2: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または

0018h) が読み込まれます。

3: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( 復帰動作を実行するため )。4: 各条件下でのリセット値は、表 5-1 を参照してください。

DS39762F_JP - p.72 2013 Microchip Technology Inc.

Page 73: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

CCP4CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --00 0000 --00 0000 --uu uuuu

CCPR5H PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

CCPR5L PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

CCP5CON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X --00 0000 --00 0000 --uu uuuu

SPBRG2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

RCREG2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

TXREG2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

TXSTA2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0010 0000 0010 uuuu uuuu

RCSTA2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 000x 0000 000x uuuu uuuu

ECCP3AS PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

ECCP3DEL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

ECCP2AS PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

ECCP2DEL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

SSP2BUF PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

SSP2ADD PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

SSP2STAT PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

SSP2CON1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

SSP2CON2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EDATA PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X xxxx xxxx uuuu uuuu uuuu uuuu

EIR PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X -000 0-00 -000 0-00 -uuu u-uu

ECON2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 100- ---- 100- ---- uuu- ----

ESTAT PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X -0-0 -000 -0-0 -000 -u-u -uuu

EIE PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X -000 0-00 -000 0-00 -uuu u-uu

EDMACSH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EDMACSL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EDMADSTH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

EDMADSTL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EDMANDH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

EDMANDL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EDMASTH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

EDMASTL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

ERXWRPTH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

ERXWRPTL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

ERXRDPTH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0101 ---0 0101 ---u uuuu

ERXRDPTL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1010 1111 1010 uuuu uuuu

ERXNDH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---1 1111 ---1 1111 ---u uuuu

ERXNDL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1111 1111 1111 uuuu uuuu

ERXSTH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0101 ---0 0101 ---u uuuu

表 5-2: 全レジスタの初期化条件 ( 続き )

レジスタ 該当するデバイスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、

WDT リセット、

RESET命令、

スタックリセット、

CM リセット

WDT による復帰、

割り込みによる復帰

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による

網掛けの部分は、本デバイスにその条件が適用されない事を示します。

Note 1: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には現在の PCの値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに変更されます。

2: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または

0018h) が読み込まれます。

3: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( 復帰動作を実行するため )。4: 各条件下でのリセット値は、表 5-1 を参照してください。

2013 Microchip Technology Inc. DS39762F_JP - p.73

Page 74: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ERXSTL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1111 1010 1111 1010 uuuu uuuu

ETXNDH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

ETXNDL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

ETXSTH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

ETXSTL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EWRPTH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

EWRPTL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPKTCNT PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

ERXFCON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 1010 0001 1010 0001 uuuu uuuu

EPMOH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

EPMOL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMCSH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMCSL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMM7 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMM6 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMM5 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMM4 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMM3 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMM2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMM1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EPMM0 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EHT7 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EHT6 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EHT5 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EHT4 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EHT3 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EHT2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EHT1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EHT0 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MIRDH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MIRDL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MIWRH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MIWRL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MIREGADR PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

MICMD PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- --00 ---- --00 ---- --uu

MAMXFLH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0110 0000 0110 uuuu uuuu

MAMXFLL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MAIPGH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X -000 0000 -000 0000 -uuu uuuu

表 5-2: 全レジスタの初期化条件 ( 続き )

レジスタ 該当するデバイスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、

WDT リセット、

RESET命令、

スタックリセット、

CM リセット

WDT による復帰、

割り込みによる復帰

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による

網掛けの部分は、本デバイスにその条件が適用されない事を示します。

Note 1: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には現在の PCの値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに変更されます。

2: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または

0018h) が読み込まれます。

3: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( 復帰動作を実行するため )。4: 各条件下でのリセット値は、表 5-1 を参照してください。

DS39762F_JP - p.74 2013 Microchip Technology Inc.

Page 75: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

MAIPGL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X -000 0000 -000 0000 -uuu uuuu

MABBIPG PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X -000 0000 -000 0000 -uuu uuuu

MACON4 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X -000 --00 -000 --00 -uuu --uu

MACON3 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MACON1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---0 0000 ---0 0000 ---u uuuu

EPAUSH PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0001 0000 0001 0000 000u uuuu

EPAUSL PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

EFLOCON PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- -000 ---- -000 ---- -uuu

MISTAT PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X ---- 0000 ---- 0000 ---- uuuu

MAADR2 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MAADR1 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MAADR4 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MAADR3 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MAADR6 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

MAADR5 PIC18F6XJ6X PIC18F8XJ6X PIC18F9XJ6X 0000 0000 0000 0000 uuuu uuuu

表 5-2: 全レジスタの初期化条件 ( 続き )

レジスタ 該当するデバイスパワーオン リセット、

ブラウンアウト リセット

MCLR リセット、

WDT リセット、

RESET命令、

スタックリセット、

CM リセット

WDT による復帰、

割り込みによる復帰

凡例 : u = 不変、x = 未知、- = 未実装、「0」として読み出し、q = 条件による

網掛けの部分は、本デバイスにその条件が適用されない事を示します。

Note 1: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、TOSU、TOSH、TOSL には現在の PCの値が読み込まれます。STKPTR の参照先は、ハードウェア スタックの次のアドレスに変更されます。

2: 割り込みによって復帰し、GIEL または GIEH ビットがセットされている場合、PC には割り込みベクタ (0008h または

0018h) が読み込まれます。

3: INTCONx または PIRx レジスタの 1 つまたは複数のビットが影響を受けます ( 復帰動作を実行するため )。4: 各条件下でのリセット値は、表 5-1 を参照してください。

2013 Microchip Technology Inc. DS39762F_JP - p.75

Page 76: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.76 2013 Microchip Technology Inc.

Page 77: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.0 メモリ構成

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

• プログラムメモリ

• データ RAM

このデバイスはハーバード アーキテクチャを採用しており、データメモリとプログラムメモリは別々のバスを使います。このため、これら 2 つのメモリ空間へ同時にアクセスできます。

フラッシュ プログラムメモリの動作の詳細はセクション 7.0「フラッシュ プログラムメモリ」で説明します。

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

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

PIC18F97J60 ファミリファミリの内蔵フラッシュ プログラムメモリの容量はデバイスによって異なり、64 KB ( 大 32,764 個のシングルワード命令 ) から128 KB (65,532 個のシングルワード命令 ) まで全部で3 種類あります。図 6-1 に、これら 3 種類のデバイスのプログラムメモリのマップを示します。

図 6-1: PIC18F97J60 ファミリのメモリマップ

Note: 図内のメモリ領域はノンスケールです。詳細を示すために、プログラムメモリ領域のサイズを拡大

しています。

Unimplemented

Read as ‘0’

Unimplemented

Read as ‘0’

Unimplemented

Read as ‘0’

000000h

1FFFFFh

01FFFFh

PIC18FX6J60 PIC18FX6J65 PIC18FX7J60

00FFFFh

017FFFh

PC<20:0>

Stack Level 1

Stack Level 31

CALL, CALLW, RCALL,RETURN, RETFIE, RETLW,

21

Use

r M

emor

y S

pace

On-ChipMemory

On-ChipMemory

On-ChipMemory

ADDULNK, SUBULNK

Config. Words

Config. Words

Config. Words

2013 Microchip Technology Inc. DS39762F_JP - p.77

Page 78: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.1.1 ハードメモリ ベクタ

全ての PIC18 には、プログラムメモリ空間に合計 3 つのハードコードされたリターンベクタがあります。リセットベクタ アドレスは、全てのデバイスリセットでプログラム カウンタが既定値として戻る値で、0000hにあります。

PIC18 には、高優先度と低優先度の割り込みを処理するための割り込みベクタアドレスも 2 つあります。高優先度割り込みのベクタは 0008h、低優先度割り込みのベクタは 0018h です。図 6-2 に、プログラムメモリ マップにおけるこれらのハードベクタの位置を示します。

図 6-2: PIC18F97J60 ファミリのハードベクタとコンフィグレーション ワードの位置

6.1.2 フラッシュ コンフィグレーション ワード

PIC18F97J60 ファミリには不揮発性のコンフィグレーション メモリはなく、内蔵プログラムメモリの上位 4 ワードがコンフィグレーション情報用に予約済みです。リセット時、このコンフィグレーション情報がコンフィグレーション レジスタにコピーされます。

コンフィグレーション ワードはプログラムメモリの上位 4 ワードに、番号の小さいものから順に配置さ

れています (CONFIG1の下位バイトが 下位アドレスに配置され、CONFIG4 の上位バイトが 上位アドレスに配置 )。ただしこのデバイスで使うコンフィグレーション ワードは CONFIG1 ~ CONFIG3 のみで、CONFIG4 は予約済みです。表 6-1 に、PIC18F97J60ファミリのフラッシュ コンフィグレーション ワードの実際のアドレスを示します。図 6-2には、フラッシュコンフィグレーション ワードの位置もハードベクタと共にメモリマップとして示しています。

コンフィグレーション ワードの詳細は、セクション 25.1「コンフィグレーション ビット」で説明します。

表 6-1: PIC18F97J60ファミリのフラッシュ コンフィグレーション ワード

Reset Vector

Low-Priority Interrupt Vector

0000h

0018h

On-ChipProgram Memory

High-Priority Interrupt Vector 0008h

1FFFFFh

(Top of Memory)(Top of Memory-7)Flash Configuration Words

Read as ‘0’

凡例 : (Top of Memory) は内蔵プログラムメモリ空

間の上限アドレスを示します ( 各デバイスの

上限値は図 6-1 参照 )。網掛けの部分は未実

装メモリを示します。上図メモリ空間はノン

スケールです。

デバイス名プログラムメモリ (KB)

コンフィグレーション ワードのアドレス

PIC18F66J60

64 FFF8h ~ FFFFhPIC18F86J60

PIC18F96J60

PIC18F66J65

96 17FF8h ~ 17FFFhPIC18F86J65

PIC18F96J65

PIC18F67J60

128 1FFF8h ~ 1FFFFhPIC18F87J60

PIC18F97J60

DS39762F_JP - p.78 2013 Microchip Technology Inc.

Page 79: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.1.3 PIC18F9XJ60/9XJ65 のプログラムメモリ モード

このファミリの 100 ピンデバイスは、 大で合計 2 MBまでのプログラムメモリをアドレス指定できます。これには、外部メモリバスを使います。コントローラのプログラムメモリ モードには以下の2種類があります。

• マイクロコントローラ (MC) モード

• 拡張マイクロコントローラ (EMC) モード

プログラムメモリのモードは、EMB コンフィグレーション ビット (CONFIG3L<5:4>) の設定によって決まります ( レジスタ 6-1 参照 )。( コンフィグレーション ビットの詳細はセクション 25.1「コンフィグレーション ビット」を参照してください )。

各プログラムメモリ モードの動作は以下の通りです。

• マイクロコントローラ モード : 内蔵フラッシュメモリのみにアクセスします。内蔵メモリの上限を超えたアドレスを読み出そうとすると、全て「0」(NOP命令 ) として読み出されます。

64 ピンおよび 80 ピンデバイスでは、マイクロコントローラ モードしか使えません。

• 拡張マイクロコントローラ モード : 内蔵プログラムメモリと外部プログラムメモリの両方に 1 つのブロックとしてアクセスできます。デバイスからは、内蔵プログラムメモリ全体に加え、 大 2 MB のプログラムメモリ空間の範囲内で外部プログラムメモリにもアクセスできます。これら 2 つのメモリからの実行は、必要に応じて自動的に切り換わります。

外部メモリバスのアドレスバス幅も EMB コンフィグレーション ビットで設定します。これについては、セクション 8.0「外部メモリバス」で詳しく説明します。

どのモードでも、マイクロコントローラはデータ RAMに完全にアクセスできます。

図 6-3 に、各プログラムメモリ モード時のメモリマップを示します。表 6-2 に、内蔵メモリと外部メモリへのアクセスの制約を一覧で示します。

レジスタ 6-1: CONFIG3L: コンフィグレーション レジスタ 3 Low

R/WO-1 R/WO-1 R/WO-1 R/WO-1 R/WO-1 U-0 U-0 U-0

WAIT(1) BW(1) EMB1(1) EMB0(1) EASHFT(1) — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット WO = ライトワンス ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 「1」 = ビットはセット 「0」 = ビットはクリア

bit 7 WAIT: 外部バスウェイト イネーブルビット (1)

1 = 外部メモリバスに対する操作のウェイトステートを無効にする0 = 外部メモリバスに対する操作のウェイトステートを有効にし、MEMCON<5:4> で選択する

bit 6 BW: データバス幅選択ビット (1)

1 = 16 ビット データ幅モード0 = 8 ビット データ幅モード

bit 5-4 EMB<1:0>: 外部メモリバス コンフィグレーション ビット (1)

11 = マイクロコントローラ モード、外部バスを無効にする10 = 拡張マイクロコントローラ モード、12 ビット アドレッシング モード01 = 拡張マイクロコントローラ モード、16 ビット アドレッシング モード00 = 拡張マイクロコントローラ モード、20 ビット アドレッシング モード

bit 3 EASHFT: 外部アドレスバス シフト イネーブルビット (1)

1 = アドレスシフトを有効にする。外部バスのアドレスが 000000h から開始するようにオフセットする

0 = アドレスシフトを無効にする。外部バスのアドレスをそのまま PC の値にする

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

Note 1: 100 ピンデバイスだけがこのビットを実装します。

2013 Microchip Technology Inc. DS39762F_JP - p.79

Page 80: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.1.4 拡張マイクロコントローラ モードとアドレスシフト

既定値では、デバイスを拡張マイクロコントローラモードに設定すると、拡張メモリ空間のレンジにあるアドレスについてはプログラム カウンタの値が直接外部アドレスバスに現れます。つまり、内蔵メモリの上限より下のアドレスの外部メモリデバイスにはアクセスできない事を意味します。

これを防ぐため、拡張マイクロコントローラ モードにはアドレスを自動で変換できるアドレスシフト機能があります。このモードを選択すると、外部バスに現れるアドレスは内蔵プログラムメモリの容量分だけ下にシフトし、開始アドレスを 0000h として再マッピングされます。これにより、外部メモリデバイスのメモリ空間を完全に利用できます。

図 6-3: PIC18F97J60 ファミリの各プログラムメモリ モードにおけるメモリマップ

表 6-2: PIC18F9XJ60/9XJ65 の各プログラムメモリ モード時のメモリアクセス

動作モード

内蔵プログラムメモリ 外部プログラムメモリ

命令実行 テーブル読み出し

テーブル書き込み

命令実行 テーブル読み出し

テーブル書き込み

マイクロコントローラ 可 可 可 アクセス不可 アクセス不可 アクセス不可

拡張マイクロコントローラ 可 可 可 可 可 可

ExternalMemory

On-ChipProgramMemory

マイクロコントローラ モード (1)

000000h

On-ChipProgramMemory

1FFFFFh

Reads ‘0’s

External On-ChipMemory Memory

(Top of Memory)(Top of Memory) + 1

凡例 : (Top of Memory) は内蔵プログラムメモリ空間の上限アドレスを示します ( 各デバイスの上限値は図 6-1 参照 )。網掛けの部分は未実装メモリ、または各モードでアクセス不能な領域を示します。

Note 1: 64 ピンおよび 80 ピンデバイスで利用できるのはこのモードのみです。100 ピンデバイスでは、これが既定値の

モードです。

2: これらのモードを利用できるのは 100 ピンデバイスのみです。

拡張マイクロコントローラ モード (2)

000000h

1FFFFFh

(Top of Memory)(Top of Memory) + 1

ExternalMemory

On-ChipProgramMemory

000000h

1FFFFFh

(Top of Memory)(Top of Memory) + 1

NoAccess

Space

On-ChipMemorySpace

External On-ChipMemory Memory

Space

Mappedto

ExternalMemorySpace

Space Space

Mappedto

ExternalMemorySpace (Top of Memory)

拡張マイクロコントローラ モード

アドレスシフト機能使用 (2)

1FFFFFh –

DS39762F_JP - p.80 2013 Microchip Technology Inc.

Page 81: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.1.5 プログラム カウンタ

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

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

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

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

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

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

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

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

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

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

リターンアドレス スタックの読み書きは 上位のTop-of-Stack (TOS) に対してのみ実行できます。STKPTR レジスタが指し示すスタック位置の内容は、3 つのレジスタセット TOSU:TOSH:TOSL に保持されます ( 図 6-4)。これを利用して、ユーザが必要に応じてソフトウェア スタックを実装する事ができます。CALL、RCALL、割り込み、( および拡張命令セットが有効な場合は ADDULNK、SUBULNK 命令 ) の後、ソフトウェアで TOSU:TOSH:TOSL レジスタを読み出すと、プッシュされた値を取得できます。取得した値は、ユーザ定義のソフトウェア スタックに格納できます。リターン時には、ソフトウェアでこれらの値をTOSU:TOSH:TOSL に返し、リターンを実行します。

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

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

00011001A34h

111111111011101

000100000100000

00010

Return Address Stack <20:0>

Top-of-Stack000D58h

TOSLTOSHTOSU34h1Ah00h

STKPTR<4:0>

Top-of-Stack Registers Stack Pointer

2013 Microchip Technology Inc. DS39762F_JP - p.81

Page 82: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

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

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

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

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

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

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

6.1.6.3 PUSHおよび POP命令

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

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

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

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

レジスタ 6-2: STKPTR: スタックポインタ レジスタ

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

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

bit 7 bit 0

凡例 : C = クリア可能ビット

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

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

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

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

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

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

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

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

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

DS39762F_JP - p.82 2013 Microchip Technology Inc.

Page 83: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2013 Microchip Technology Inc. DS39762F_JP - p.83

6.1.6.4 スタックフルとスタック アンダーフローによるリセット

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

6.1.7 高速レジスタスタック

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

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

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

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

例 6-1: 高速レジスタスタックを使うサンプルコード

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

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

• 計算型 GOTO

• テーブル読み出し

6.1.8.1 計算型 GOTO

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

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

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

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

例 6-2: オフセット値を使う計算型 GOTO

6.1.8.2 テーブル読み出し

プログラムメモリ内にデータを保存するには、1 命令分の位置に2バイトのデータを保存できるこちらの方法がより適しています。

ルックアップ テーブルのデータは、プログラミング時に1プログラムワード当たり2バイトを保存できます。テーブルポインタ (TBLPTR) でバイトアドレスを指定し、テーブルラッチ (TABLAT) にプログラムメモリから読み出したデータを格納します。データはプログラムメモリから一度に 1 バイトずつ転送されます。

テーブル読み出し動作の詳細は、セクション 7.1「テーブル読み書き」で説明します。

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

SUB1 RETURN FAST ;RESTORE VALUES SAVED

;IN FAST REGISTER STACK

MOVF OFFSET, WCALL TABLE

ORG nn00hTABLE ADDWF PCL

RETLW nnhRETLW nnhRETLW nnh...

Page 84: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.2 PIC18 の命令サイクル

6.2.1 クロック方式

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

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

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

フェッチサイクルは、Q1 でプログラム カウンタ (PC)がインクリメントすると開始します。

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

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

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

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

OSC1

Q1

Q2

Q3

Q4

PC

OSC2/CLKO(RC mode)

PC PC + 2 PC + 4

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

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

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

InternalPhaseClock

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

TCY0 TCY1 TCY2 TCY3 TCY4 TCY5

1. MOVLW 55h Fetch 1 Execute 1

2. MOVWF PORTB Fetch 2 Execute 2

3. BRA SUB_1 Fetch 3 Execute 3

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

5. Instruction @ address SUB_1 Fetch SUB_1 Execute SUB_1

DS39762F_JP - p.84 2013 Microchip Technology Inc.

Page 85: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

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

プログラムメモリのアドレスはバイト単位で指定します。命令は、2 バイトまたは 4 バイトのいずれかでプログラムメモリに格納されます。命令ワードの 下位バイト (LSB) は、必ずプログラムメモリ内の偶数アドレス位置 (LSb = 0) に保存されます。命令の境界に合わせて PC は 2 ずつインクリメントするため、 下位ビットは常に「0」として読み出されます ( セクション 6.1.5「プログラム カウンタ」参照 )。

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

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

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

6.2.4 2 ワード命令

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

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

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

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

例 6-4: 2 ワード命令

Word AddressLSB = 1 LSB = 0

Program MemoryByte Locations

000000h000002h000004h000006h

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

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

F4h 56h 000010h000012h000014h

Note: 拡張命令セットの 2 ワード命令については、セクション 6.5「プログラムメモリと拡張命令セット」を参照してください。

例 1:

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

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

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

1111 0100 0101 0110 ; Execute this word as a NOP

0010 0100 0000 0000 ADDWF REG3 ; continue code

例 2:

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

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

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

1111 0100 0101 0110 ; 2nd word of instruction

0010 0100 0000 0000 ADDWF REG3 ; continue code

2013 Microchip Technology Inc. DS39762F_JP - p.85

Page 86: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.3 データメモリの構成

PIC18 のデータメモリは SRAM として実装しています。データメモリの各レジスタは 12 ビットのアドレスを持ち、 大 4096 バイトのメモリをアドレス指定できます。メモリ空間は、16 個のバンク (1 バンクは256 バイト ) に分割されます。PIC18F97J60 ファミリの全デバイスは全てのバンクを実装しており、ユーザは3808バイトのデータメモリを利用できます。図 6-7に、これらのデバイスのデータメモリ構成を示します。

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

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

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

6.3.1 バンクセレクト レジスタ

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

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

BSR の値はデータメモリ内のバンクを示します。命令内の 8 ビットはバンク内での位置を示しており、バンクの開始アドレスからのオフセットと見なす事ができます。図 6-8 に、BSR の値とデータメモリのバンク分割の関係を示します。

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

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

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

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

DS39762F_JP - p.86 2013 Microchip Technology Inc.

Page 87: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 6-7: PIC18F97J60 ファミリのデータメモリ マップ

Bank 0

Bank 1

Bank 14

Bank 15

Data Memory MapBSR<3:0>

= 0000

= 0001

= 1111

060h05Fh

F60hFFFh

00h

5Fh60h

FFh

Access Bank

a = 0の場合 :

BSR は無視してアクセスバンクを

使います。

先頭の 96 バイト ( バンク 0 由来 ) は汎用 RAM です。

残りの 160 バイト ( バンク 15 由来 )は特殊機能レジスタ (SFR) です。

a = 1の場合 :

BSR で指定したバンクを命令で使

います。

F5FhF00hEFFh

1FFh

100h0FFh

000hAccess RAM

FFh

00h

FFh

00h

FFh

00h

GPR

GPR

SFR

Access RAM High

Access RAM Low

Bank 2= 0010

(SFRs)

2FFh

200h

Bank 3

FFh

00h

GPR

FFh

= 0011

= 1101

GPR

GPR

GPR

GPR

GPR

GPR

GPR

GPR

GPR

GPR

GPR

4FFh

400h

5FFh

500h

3FFh

300h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

FFh

00h

00h

GPR

GPR

= 0110

= 0111

= 1010

= 1100

= 1000

= 0101

= 1001

= 1011

= 0100Bank 4

Bank 5

Bank 6

Bank 7

Bank 8

Bank 9

Bank 10

Bank 11

Bank 12

Bank 13

= 1110

6FFh

600h

7FFh

700h

8FFh

800h

9FFh

900h

AFFh

A00h

BFFh

B00h

CFFh

C00h

DFFh

D00h

E00h

Ethernet SFR

E7FhE80h

2013 Microchip Technology Inc. DS39762F_JP - p.87

Page 88: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

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

6.3.2 アクセスバンク

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

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

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

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

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

6.3.3 汎用レジスタファイル

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

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

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

Data Memory

Bank Select(2)

7 0From Opcode(2)

0 0 0 0

000h

100h

200h

300h

F00h

E00h

FFFh

Bank 0

Bank 1

Bank 2

Bank 14

Bank 15

00h

FFh00h

FFh00h

FFh

00h

FFh00h

FFh

00h

FFh

Bank 3throughBank 13

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

7 0BSR(1)

1 1 1 1 1 1 1 1

DS39762F_JP - p.88 2013 Microchip Technology Inc.

Page 89: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.3.4 特殊機能レジスタ

特殊機能レジスタ (SFR) は、CPU と周辺モジュールがデバイスの動作を制御するために使うレジスタです。これらのレジスタは SRAM として実装されています。

SFR の大部分はデータメモリの上端 (FFFh) から下位に向かって並び、バンク 15 の上半分以上 (F60h ~FFFh) を占有します。SFR は、デバイスの「コア」機能 (ALU、リセット、割り込み ) に関連するものと、周辺機能に関連するものの 2 つに分類できます。リセットと割り込みのレジスタは、それぞれ独立した章で説

明しますが、ALU の STATUS レジスタについては、このセクションの後半で説明します。また、周辺機能の動作に関連するレジスタについては、その周辺機能の章の中で説明します。

ほとんどの SFR は、制御対象の機能を持つ周辺モジュールごとにまとめて配置されています。未使用のSFR 位置にはメモリが実装されておらず、「0」が読み出されます。表 6-3 に SFR の一覧を示します。表 6-5に詳しい説明を示します。

表 6-3: PIC18F97J60 ファミリの特殊機能レジスタマップ

アドレス 名前 アドレス 名前 アドレス 名前 アドレス 名前 アドレス 名前

FFFh TOSU FDFh INDF2(1) FBFh CCPR1H F9Fh IPR1 F7Fh SPBRGH1

FFEh TOSH FDEh POSTINC2(1) FBEh CCPR1L F9Eh PIR1 F7Eh BAUDCON1

FFDh TOSL FDDh POSTDEC2(1) FBDh CCP1CON F9Dh PIE1 F7Dh SPBRGH2

FFCh STKPTR FDCh PREINC2(1) FBCh CCPR2H F9Ch MEMCON(4) F7Ch BAUDCON2

FFBh PCLATU FDBh PLUSW2(1) FBBh CCPR2L F9Bh OSCTUNE F7Bh ERDPTH

FFAh PCLATH FDAh FSR2H FBAh CCP2CON F9Ah TRISJ(3) F7Ah ERDPTL

FF9h PCL FD9h FSR2L FB9h CCPR3H F99h TRISH(3) F79h ECCP1DEL

FF8h TBLPTRU FD8h STATUS FB8h CCPR3L F98h TRISG F78h TMR4

FF7h TBLPTRH FD7h TMR0H FB7h CCP3CON F97h TRISF F77h PR4

FF6h TBLPTRL FD6h TMR0L FB6h ECCP1AS F96h TRISE F76h T4CON

FF5h TABLAT FD5h T0CON FB5h CVRCON F95h TRISD F75h CCPR4H

FF4h PRODH FD4h -(2) FB4h CMCON F94h TRISC F74h CCPR4L

FF3h PRODL FD3h OSCCON FB3h TMR3H F93h TRISB F73h CCP4CON

FF2h INTCON FD2h ECON1 FB2h TMR3L F92h TRISA F72h CCPR5H

FF1h INTCON2 FD1h WDTCON FB1h T3CON F91h LATJ(3) F71h CCPR5L

FF0h INTCON3 FD0h RCON FB0h PSPCON F90h LATH(3) F70h CCP5CON

FEFh INDF0(1) FCFh TMR1H FAFh SPBRG1 F8Fh LATG F6Fh SPBRG2

FEEh POSTINC0(1) FCEh TMR1L FAEh RCREG1 F8Eh LATF F6Eh RCREG2

FEDh POSTDEC0(1) FCDh T1CON FADh TXREG1 F8Dh LATE F6Dh TXREG2

FECh PREINC0(1) FCCh TMR2 FACh TXSTA1 F8Ch LATD F6Ch TXSTA2

FEBh PLUSW0(1) FCBh PR2 FABh RCSTA1 F8Bh LATC F6Bh RCSTA2

FEAh FSR0H FCAh T2CON FAAh -(2) F8Ah LATB F6Ah ECCP3AS

FE9h FSR0L FC9h SSP1BUF FA9h -(2) F89h LATA F69h ECCP3DEL

FE8h WREG FC8h SSP1ADD FA8h -(2) F88h PORTJ(3) F68h ECCP2AS

FE7h INDF1(1) FC7h SSP1STAT FA7h EECON2(1) F87h PORTH(3) F67h ECCP2DEL

FE6h POSTINC1(1) FC6h SSP1CON1 FA6h EECON1 F86h PORTG F66h SSP2BUF

FE5h POSTDEC1(1) FC5h SSP1CON2 FA5h IPR3 F85h PORTF F65h SSP2ADD

FE4h PREINC1(1) FC4h ADRESH FA4h PIR3 F84h PORTE F64h SSP2STAT

FE3h PLUSW1(1) FC3h ADRESL FA3h PIE3 F83h PORTD F63h SSP2CON1

FE2h FSR1H FC2h ADCON0 FA2h IPR2 F82h PORTC F62h SSP2CON2

FE1h FSR1L FC1h ADCON1 FA1h PIR2 F81h PORTB F61h EDATA

FE0h BSR FC0h ADCON2 FA0h PIE2 F80h PORTA F60h EIR

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

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

3: 64 ピンデバイスにはこのレジスタはありません。

4: このレジスタは 64 ピンおよび 80 ピンのデバイスにはありません。

2013 Microchip Technology Inc. DS39762F_JP - p.89

Page 90: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.3.5 Ethernet SFR

PIC18F97J60 ファミリには、バンク 15 の標準 SFRセット以外にもSFRセットがあります。これらのSFRは全て Ethernet モジュールに関するもので、バンク 14の上半分 (E80h ~ EFFh) を占めています。

表 6-4 に、Ethernet SFR の一覧を示します。全 SFRの詳細は表 6-5 を参照してください。

Note: 性能向上のため、頻繁にアクセスするEthernet関連レジスタは標準 SFRバンク(F60h ~ FFFh) に配置されています。

表 6-4: PIC18F97J60 ファミリの Ethernet SFR マップ

アドレス 名前 アドレス 名前 アドレス 名前 アドレス 名前

EFFh -(1) EDFh -(1) EBFh -(1) E9Fh -(1)

EFEh ECON2 EDEh -(1) EBEh -(1) E9Eh -(1)

EFDh ESTAT EDDh -(1) EBDh -(1) E9Dh -(1)

EFCh -(1) EDCh -(1) EBCh -(1) E9Ch -(1)

EFBh EIE EDBh -(1) EBBh -(1) E9Bh -(1)

EFAh -(1) EDAh -(1) EBAh -(1) E9Ah -(1)

EF9h -(2) ED9h EPKTCNT EB9h MIRDH E99h EPAUSH

EF8h -(2) ED8h ERXFCON EB8h MIRDL E98h EPAUSL

EF7h EDMACSH ED7h -(1) EB7h MIWRH E97h EFLOCON

EF6h EDMACSL ED6h -(1) EB6h MIWRL E96h -(2)

EF5h EDMADSTH ED5h EPMOH EB5h -(1) E95h -(2)

EF4h EDMADSTL ED4h EPMOL EB4h MIREGADR E94h -(2)

EF3h EDMANDH ED3h -(2) EB3h -(2) E93h -(2)

EF2h EDMANDL ED2h -(2) EB2h MICMD E92h -(2)

EF1h EDMASTH ED1h EPMCSH EB1h -(1) E91h -(2)

EF0h EDMASTL ED0h EPMCSL EB0h -(1) E90h -(2)

EEFh ERXWRPTH ECFh EPMM7 EAFh -(2) E8Fh -(2)

EEEh ERXWRPTL ECEh EPMM6 EAEh -(1) E8Eh -(2)

EEDh ERXRDPTH ECDh EPMM5 EADh -(1) E8Dh -(2)

EECh ERXRDPTL ECCh EPMM4 EACh -(1) E8Ch -(2)

EEBh ERXNDH ECBh EPMM3 EABh MAMXFLH E8Bh -(2)

EEAh ERXNDL ECAh EPMM2 EAAh MAMXFLL E8Ah MISTAT

EE9h ERXSTH EC9h EPMM1 EA9h -(1) E89h -(1)

EE8h ERXSTL EC8h EPMM0 EA8h -(1) E88h -(1)

EE7h ETXNDH EC7h EHT7 EA7h MAIPGH E87h -(1)

EE6h ETXNDL EC6h EHT6 EA6h MAIPGL E86h -(1)

EE5h ETXSTH EC5h EHT5 EA5h -(2) E85h MAADR2

EE4h ETXSTL EC4h EHT4 EA4h MABBIPG E84h MAADR1

EE3h EWRPTH EC3h EHT3 EA3h MACON4 E83h MAADR4

EE2h EWRPTL EC2h EHT2 EA2h MACON3 E82h MAADR3

EE1h -(1) EC1h EHT1 EA1h -(1) E81h MAADR6

EE0h -(1) EC0h EHT0 EA0h MACON1 E80h MAADR5

Note 1: 予約済みのレジスタ位置のため書き換えはできません。

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

DS39762F_JP - p.90 2013 Microchip Technology Inc.

Page 91: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 6-5: レジスタファイルのまとめ (PIC18F97J60 ファミリ )

SFR 名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR、BOR時の値

詳細ページ

TOSU - - - Top-of-Stack レジスタの 上位バイト (TOS<20:16>) ---0 0000 69, 81

TOSH Top-of-Stack レジスタの上位バイト (TOS<15:8>) 0000 0000 69, 81

TOSL Top-of-Stack レジスタの下位バイト (TOS<7:0>) 0000 0000 69, 81

STKPTR STKFUL(1) STKUNF(1) - SP4 SP3 SP2 SP1 SP0 00-0 0000 69, 82

PCLATU - - bit 21(2) PC<20:16> の保持レジスタ ---0 0000 69, 81

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

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

TBLPTRU - - bit 21 プログラムメモリ テーブルポインタの 上位バイト(TBLPTR<20:16>)

--00 0000 69, 108

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

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

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

PRODH 積レジスタ上位バイト xxxx xxxx 69, 127

PRODL 積レジスタ下位バイト xxxx xxxx 69, 127

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 0000 000x 69, 131

INTCON2 RBPU INTEDG0 INTEDG1 INTEDG2 INTEDG3 TMR0IP INT3IP RBIP 1111 1111 69, 132

INTCON3 INT2IP INT1IP INT3IE INT2IE INT1IE INT3IF INT2IF INT1IF 1100 0000 69, 133

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

はありません )

N/A 69, 99

POSTINC0 FSR0 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR0 の値がインクリメントさ

れます ( 物理レジスタではありません )

N/A 69, 100

POSTDEC0 FSR0 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR0 の値がデクリメントされ

ます ( 物理レジスタではありません )

N/A 69, 100

PREINC0 FSR0 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR0 の値がインクリメント

されます ( 物理レジスタではありません )

N/A 69, 100

PLUSW0 FSR0 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR0 の値が W レジスタの値だ

けオフセットされます ( 物理レジスタではありません )

N/A 69, 100

FSR0H - - - - 間接データメモリ アドレスポインタ 0 上位バイト ---- xxxx 69, 99

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

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

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

はありません )

N/A 69, 99

POSTINC1 FSR1 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR1 の値がインクリメントさ

れます ( 物理レジスタではありません )

N/A 69, 100

POSTDEC1 FSR1 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR1 の値がデクリメントされ

ます ( 物理レジスタではありません )

N/A 69, 100

PREINC1 FSR1 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR1 の値がインクリメント

されます ( 物理レジスタではありません )

N/A 69, 100

PLUSW1 FSR1 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR1 の値が W レジスタの値

だけオフセットされます ( 物理レジスタではありません )

N/A 69, 100

FSR1H - - - - 間接データメモリ アドレスポインタ 1 上位バイト ---- xxxx 69, 99

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

BSR - - - - バンクセレクト レジスタ ---- 0000 69, 99

凡例 : x = 未知、u = 不変、- = 未実装、「0」として読み出し、q = 条件による、r = 予約済みビットのため変更不可、網掛けの部分は未実装、

「0」として読み出し

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

2: PC の bit 21 はシリアル プログラミング モードでのみ使えます。

3: リセット値は、2 段階起動が有効な場合が「0」で、無効な場合が「1」です。

4: MSSP モジュールが I2C™ スレーブモードで動作時のビットの代替名と定義です。

5: これらのビット / レジスタを利用できるのは 100 ピンデバイスのみです。それ以外のデバイスには実装されておらず、「0」として読み出

されます。表示してあるリセット値は、100 ピンデバイスの場合のみです。

6: これらのビット / レジスタを使えるのは 80 ピンおよび 100 ピンのデバイスのみです。64 ピンデバイスでは未実装で、「0」として読み出

されます。リセット時の値は 100 ピンデバイスの場合です。

7: マイクロコントローラ モードでは、このレジスタのビットは書き込み不可で「0」として読み出されます。

8: PLLEN を使えるのはオシレータモードに ECPLL または HSPLL を選択した場合のみです。それ以外では「0」として読み出されます。

9: 100 ピンデバイスにのみ実装されており、使えるのはマイクロコントローラ モード時のみです。

2013 Microchip Technology Inc. DS39762F_JP - p.91

Page 92: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

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

はありません )

N/A 69, 99

POSTINC2 FSR2 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR2 の値がインクリメントさ

れます ( 物理レジスタではありません )

N/A 69, 100

POSTDEC2 FSR2 の内容が指すデータメモリのアドレスにアクセスします。アクセス後、FSR2 の値がデクリメントされ

ます ( 物理レジスタではありません )

N/A 69, 100

PREINC2 FSR2 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR2 の値がインクリメント

されます ( 物理レジスタではありません )

N/A 69, 100

PLUSW2 FSR2 の内容が指すデータメモリのアドレスにアクセスします。アクセス前に FSR2 の値が W レジスタの値だ

けオフセットされます ( 物理レジスタではありません )

N/A 69, 100

FSR2H - - - - 間接データメモリ アドレスポインタ 2 上位バイト ---- xxxx 69, 99

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

STATUS - - - N OV Z DC C ---x xxxx 70, 97

TMR0H Timer0 レジスタ上位バイト 0000 0000 70, 171

TMR0L Timer0 レジスタ下位バイト xxxx xxxx 70, 171

T0CON TMR0ON T08BIT T0CS T0SE PSA T0PS2 T0PS1 T0PS0 1111 1111 70, 171

OSCCON IDLEN - - - OSTS(3) - SCS1 SCS0 0--- q-00 70, 53

ECON1 TXRST RXRST DMAST CSUMEN TXRTS RXEN - - 0000 00-- 70, 227

WDTCON - - - - - - - SWDTEN --- ---0 70, 368

RCON IPEN - CM RI TO PD POR BOR 0-q1 1100 70, 64, 143

TMR1H Timer1 レジスタ上位バイト xxxx xxxx 70, 175

TMR1L Timer1 レジスタ下位バイト xxxx xxxx 70, 175

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 70, 175

TMR2 Timer2 レジスタ 0000 0000 70, 180

PR2 Timer2 周期レジスタ 1111 1111 70, 180

T2CON - T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 70, 180

SSP1BUF MSSP1 受信バッファ / 送信レジスタ xxxx xxxx 70, 279

SSP1ADD MSSP1 アドレスレジスタ (I2C™ スレーブモード )、MSSP1 baud レート再読み込みレジスタ

(I2C マスタモード )

0000 0000 70, 279

SSP1STAT SMP CKE D/A P S R/W UA BF 0000 0000 70, 270, 280

SSP1CON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 70, 271, 281

SSP1CON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000 70, 282

GCEN ACKSTAT ADMSK5(4) ADMSK4(4) ADMSK3(4) ADMSK2(4) ADMSK1(4) SEN

ADRESH A/D 変換結果レジスタ上位バイト xxxx xxxx 70, 347

ADRESL A/D 変換結果レジスタ下位バイト xxxx xxxx 70, 347

ADCON0 ADCAL - CHS3 CHS2 CHS1 CHS0 GO/DONE ADON 0-00 0000 70, 339

ADCON1 - - VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 --00 0000 70, 340

ADCON2 ADFM - ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0 0-00 0000 70, 341

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

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

表 6-5: レジスタファイルのまとめ (PIC18F97J60 ファミリ ) ( 続き )

SFR 名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR、BOR時の値

詳細ページ

凡例 : x = 未知、u = 不変、- = 未実装、「0」として読み出し、q = 条件による、r = 予約済みビットのため変更不可、網掛けの部分は未実装、

「0」として読み出し

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

2: PC の bit 21 はシリアル プログラミング モードでのみ使えます。

3: リセット値は、2 段階起動が有効な場合が「0」で、無効な場合が「1」です。

4: MSSP モジュールが I2C™ スレーブモードで動作時のビットの代替名と定義です。

5: これらのビット / レジスタを利用できるのは 100 ピンデバイスのみです。それ以外のデバイスには実装されておらず、「0」として読み出

されます。表示してあるリセット値は、100 ピンデバイスの場合のみです。

6: これらのビット / レジスタを使えるのは 80 ピンおよび 100 ピンのデバイスのみです。64 ピンデバイスでは未実装で、「0」として読み出

されます。リセット時の値は 100 ピンデバイスの場合です。

7: マイクロコントローラ モードでは、このレジスタのビットは書き込み不可で「0」として読み出されます。

8: PLLEN を使えるのはオシレータモードに ECPLL または HSPLL を選択した場合のみです。それ以外では「0」として読み出されます。

9: 100 ピンデバイスにのみ実装されており、使えるのはマイクロコントローラ モード時のみです。

DS39762F_JP - p.92 2013 Microchip Technology Inc.

Page 93: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 70, 198

CCPR2H キャプチャ / コンペア /PWM レジスタ 2 上位バイト xxxx xxxx 70, 193

CCPR2L キャプチャ / コンペア /PWM レジスタ 2 下位バイト xxxx xxxx 70, 193

CCP2CON P2M1 P2M0 DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 0000 0000 70, 198

CCPR3H キャプチャ / コンペア /PWM レジスタ 3 上位バイト xxxx xxxx 70, 193

CCPR3L キャプチャ / コンペア /PWM レジスタ 3 下位バイト xxxx xxxx 70, 193

CCP3CON P3M1 P3M0 DC3B1 DC3B0 CCP3M3 CCP3M2 CCP3M1 CCP3M0 0000 0000 70, 198

ECCP1AS ECCP1ASE ECCP1AS2 ECCP1AS1 ECCP1AS0 PSS1AC1 PSS1AC0 PSS1BD1 PSS1BD0 0000 0000 70, 212

CVRCON CVREN CVROE CVRR CVRSS CVR3 CVR2 CVR1 CVR0 0000 0000 70, 355

CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 0000 0111 70, 349

TMR3H Timer3 レジスタ上位バイト xxxx xxxx 70, 183

TMR3L Timer3 レジスタ下位バイト xxxx xxxx 70, 183

T3CON RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 0000 0000 71, 183

PSPCON(5) IBF OBF IBOV PSPMODE - - - - 0000 ---- 71, 169

SPBRG1 EUSART1 baud レート ジェネレータ レジスタ下位バイト 0000 0000 71, 320

RCREG1 EUSART1 受信レジスタ 0000 0000 71, 327

TXREG1 EUSART1 送信レジスタ xxxx xxxx 71, 329

TXSTA1 CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010 71, 320

RCSTA1 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 71, 320

EECON2 プログラムメモリ制御レジスタ ( 物理レジスタではありません ) ---- ---- 71, 106

EECON1 - - - FREE WRERR WREN WR - ---0 x00- 71, 107

IPR3 SSP2IP(5) BCL2IP(5) RC2IP(6) TX2IP(6) TMR4IP CCP5IP CCP4IP CCP3IP 1111 1111 71, 142

PIR3 SSP2IF(5) BCL2IF(5) RC2IF(6) TX2IF(6) TMR4IF CCP5IF CCP4IF CCP3IF 0000 0000 71, 136

PIE3 SSP2IE(5) BCL2IE(5) RC2IE(6) TX2IE(6) TMR4IE CCP5IE CCP4IE CCP3IE 0000 0000 71, 139

IPR2 OSCFIP CMIP ETHIP r BCL1IP - TMR3IP CCP2IP 1111 1-11 71, 141

PIR2 OSCFIF CMIF ETHIF r BCL1IF - TMR3IF CCP2IF 0000 0-00 71, 135

PIE2 OSCFIE CMIE ETHIE r BCL1IE - TMR3IE CCP2IE 0000 0-00 71, 138

IPR1 PSPIP(9) ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 1111 1111 71, 140

PIR1 PSPIF(9) ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 0000 0000 71, 134

PIE1 PSPIE(9) ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 0000 0000 71, 137

MEMCON(5,7) EBDIS - WAIT1 WAIT0 - - WM1 WM0 0-00 --00 71, 116

OSCTUNE PPST1 PLLEN(8) PPST0 PPRE - - - - 0000 ---- 71, 51

TRISJ(6) TRISJ7(5) TRISJ6(5) TRISJ5(6) TRISJ4(6) TRISJ3(5) TRISJ2(5) TRISJ1(5) TRISJ0(5) 1111 1111 71, 167

TRISH(6) TRISH7(6) TRISH6(6) TRISH5(6) TRISH4(6) TRISH3(6) TRISH2(6) TRISH1(6) TRISH0(6) 1111 1111 71, 165

TRISG TRISG7(5) TRISG6(5) TRISG5(5) TRISG4 TRISG3(6) TRISG2(6) TRISG1(6) TRISG0(6) 1111 1111 71, 163

TRISF TRISF7 TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0(5) 1111 1111 71, 161

TRISE TRISE7(6) TRISE6(6) TRISE5 TRISE4 TRISE3 TRISE2 TRISE1 TRISE0 1111 1111 71, 159

TRISD TRISD7(5) TRISD6(5) TRISD5(5) TRISD4(5) TRISD3(5) TRISD2 TRISD1 TRISD0 1111 1111 71, 156

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 71, 153

TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 71, 150

TRISA - - TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 71, 147

表 6-5: レジスタファイルのまとめ (PIC18F97J60 ファミリ ) ( 続き )

SFR 名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR、BOR時の値

詳細ページ

凡例 : x = 未知、u = 不変、- = 未実装、「0」として読み出し、q = 条件による、r = 予約済みビットのため変更不可、網掛けの部分は未実装、

「0」として読み出し

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

2: PC の bit 21 はシリアル プログラミング モードでのみ使えます。

3: リセット値は、2 段階起動が有効な場合が「0」で、無効な場合が「1」です。

4: MSSP モジュールが I2C™ スレーブモードで動作時のビットの代替名と定義です。

5: これらのビット / レジスタを利用できるのは 100 ピンデバイスのみです。それ以外のデバイスには実装されておらず、「0」として読み出

されます。表示してあるリセット値は、100 ピンデバイスの場合のみです。

6: これらのビット / レジスタを使えるのは 80 ピンおよび 100 ピンのデバイスのみです。64 ピンデバイスでは未実装で、「0」として読み出

されます。リセット時の値は 100 ピンデバイスの場合です。

7: マイクロコントローラ モードでは、このレジスタのビットは書き込み不可で「0」として読み出されます。

8: PLLEN を使えるのはオシレータモードに ECPLL または HSPLL を選択した場合のみです。それ以外では「0」として読み出されます。

9: 100 ピンデバイスにのみ実装されており、使えるのはマイクロコントローラ モード時のみです。

2013 Microchip Technology Inc. DS39762F_JP - p.93

Page 94: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

LATJ(6) LATJ7(5) LATJ6(5) LATJ5(6) LATJ4(6) LATJ3(5) LATJ2(5) LATJ1(5) LATJ0(5) xxxx xxxx 71, 167

LATH(6) LATH7(6) LATH6(6) LATH5(6) LATH4(6) LATH3(6) LATH2(6) LATH1(6) LATH0(6) xxxx xxxx 71, 165

LATG LATG7(5) LATG6(5) LATG5(5) LATG4 LATG3(6) LATG2(6) LATG1(6) LATG0(6) xxxx xxxx 72, 163

LATF LATF7 LATF6 LATF5 LATF4 LATF3 LATF2 LATF1 LATF0(5) xxxx xxxx 72, 161

LATE LATE7(6) LATE6(6) LATE5 LATE4 LATE3 LATE2 LATE1 LATE0 xxxx xxxx 72, 159

LATD LATD7(5) LATD6(5) LATD5(5) LATD4(5) LATD3(5) LATD2 LATD1 LATD0 xxxx xxxx 72, 156

LATC LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0 xxxx xxxx 72, 153

LATB LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0 xxxx xxxx 72, 150

LATA RDPU REPU LATA5 LATA4 LATA3 LATA2 LATA1 LATA0 00xx xxxx 72, 147

PORTJ(6) RJ7(5) RJ6(5) RJ5(6) RJ4(6) RJ3(5) RJ2(5) RJ1(5) RJ0(5) xxxx xxxx 72, 167

PORTH(6) RH7(6) RH6(6) RH5(6) RH4(6) RH3(6) RH2(6) RH1(6) RH0(6) 0000 xxxx 72, 165

PORTG RG7(5) RG6(5) RG5(5) RG4 RG3(6) RG2(6) RG1(6) RG0(6) 111x xxxx 72, 163

PORTF RF7 RF6 RF5 RF4 RF3 RF2 RF1 RF0(5) 0000 0000 72, 161

PORTE RE7(6) RE6(6) RE5 RE4 RE3 RE2 RE1 RE0 xxxx xxxx 72, 159

PORTD RD7(5) RD6(5) RD5(5) RD4(5) RD3(5) RD2 RD1 RD0 xxxx xxxx 72, 156

PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx 72, 153

PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx 72, 150

PORTA RJPU(6) - RA5 RA4 RA3 RA2 RA1 RA0 0-0x 0000 72, 147

SPBRGH1 EUSART1 baud レート ジェネレータ レジスタ上位バイト 0000 0000 72, 320

BAUDCON1 ABDOVF RCIDL RXDTP TXCKP BRG16 - WUE ABDEN 0100 0-00 72, 318

SPBRGH2 EUSART2 baud レート ジェネレータ レジスタ上位バイト 0000 0000 72, 320

BAUDCON2 ABDOVF RCIDL RXDTP TXCKP BRG16 - WUE ABDEN 0100 0-00 72, 318

ERDPTH - - - バッファ読み出しポインタ上位バイト ---0 0101 72, 223

ERDPTL バッファ読み出しポインタ下位バイト 1111 1010 72, 223

ECCP1DEL P1RSEN P1DC6 P1DC5 P1DC4 P1DC3 P1DC2 P1DC1 P1DC0 0000 0000 72, 211

TMR4 Timer4 レジスタ 0000 0000 72, 187

PR4 Timer4 周期レジスタ 1111 1111 72, 187

T4CON - T4OUTPS3 T4OUTPS2 T4OUTPS1 T4OUTPS0 TMR4ON T4CKPS1 T4CKPS0 -000 0000 72, 187

CCPR4H キャプチャ / コンペア /PWM レジスタ 4 上位バイト xxxx xxxx 72, 193

CCPR4L キャプチャ / コンペア /PWM レジスタ 4 下位バイト xxxx xxxx 72, 193

CCP4CON - - DC4B1 DC4B0 CCP4M3 CCP4M2 CCP4M1 CCP4M0 --00 0000 73, 189

CCPR5H キャプチャ / コンペア /PWM レジスタ 5 上位バイト xxxx xxxx 73, 193

CCPR5L キャプチャ / コンペア /PWM レジスタ 5 下位バイト xxxx xxxx 73, 193

CCP5CON - - DC5B1 DC5B0 CCP5M3 CCP5M2 CCP5M1 CCP5M0 --00 0000 73, 189

SPBRG2 EUSART2 baud レート ジェネレータ レジスタ下位バイト 0000 0000 73, 320

RCREG2 EUSART2 受信レジスタ 0000 0000 73, 327

TXREG2 EUSART2 送信レジスタ 0000 0000 73, 329

TXSTA2 CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010 73, 316

RCSTA2 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 73, 317

ECCP3AS ECCP3ASE ECCP3AS2 ECCP3AS1 ECCP3AS0 PSS3AC1 PSS3AC0 PSS3BD1 PSS3BD0 0000 0000 73, 212

ECCP3DEL P3RSEN P3DC6 P3DC5 P3DC4 P3DC3 P3DC2 P3DC1 P3DC0 0000 0000 73, 211

表 6-5: レジスタファイルのまとめ (PIC18F97J60 ファミリ ) ( 続き )

SFR 名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR、BOR時の値

詳細ページ

凡例 : x = 未知、u = 不変、- = 未実装、「0」として読み出し、q = 条件による、r = 予約済みビットのため変更不可、網掛けの部分は未実装、

「0」として読み出し

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

2: PC の bit 21 はシリアル プログラミング モードでのみ使えます。

3: リセット値は、2 段階起動が有効な場合が「0」で、無効な場合が「1」です。

4: MSSP モジュールが I2C™ スレーブモードで動作時のビットの代替名と定義です。

5: これらのビット / レジスタを利用できるのは 100 ピンデバイスのみです。それ以外のデバイスには実装されておらず、「0」として読み出

されます。表示してあるリセット値は、100 ピンデバイスの場合のみです。

6: これらのビット / レジスタを使えるのは 80 ピンおよび 100 ピンのデバイスのみです。64 ピンデバイスでは未実装で、「0」として読み出

されます。リセット時の値は 100 ピンデバイスの場合です。

7: マイクロコントローラ モードでは、このレジスタのビットは書き込み不可で「0」として読み出されます。

8: PLLEN を使えるのはオシレータモードに ECPLL または HSPLL を選択した場合のみです。それ以外では「0」として読み出されます。

9: 100 ピンデバイスにのみ実装されており、使えるのはマイクロコントローラ モード時のみです。

DS39762F_JP - p.94 2013 Microchip Technology Inc.

Page 95: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ECCP2AS ECCP2ASE ECCP2AS2 ECCP2AS1 ECCP2AS0 PSS2AC1 PSS2AC0 PSS2BD1 PSS2BD0 0000 0000 73, 212

ECCP2DEL P2RSEN P2DC6 P2DC5 P2DC4 P2DC3 P2DC2 P2DC1 P2DC0 0000 0000 73, 211

SSP2BUF MSSP2 受信バッファ / 送信レジスタ xxxx xxxx 73, 279

SSP2ADD MSSP2 アドレスレジスタ (I2C™ スレーブモード )、MSSP2 baud レート再読み込みレジスタ

(I2C マスタモード )

0000 0000 73, 279

SSP2STAT SMP CKE D/A P S R/W UA BF 0000 0000 73, 270

SSP2CON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 73, 271, 281

SSP2CON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000 73, 282

GCEN ACKSTAT ADMSK5(4) ADMSK4(4) ADMSK3(4) ADMSK2(4) ADMSK1(4) SEN

EDATA Ethernet 送信 / 受信バッファレジスタ (EDATA<7:0>) xxxx xxxx 73, 223

EIR - PKTIF DMAIF LINKIF TXIF - TXERIF RXERIF -000 0-00 73, 241

ECON2 AUTOINC PKTDEC ETHEN - - - - - 100- ---- 73, 228

ESTAT - BUFER - r - RXBUSY TXABRT PHYRDY -0-0 -000 73, 228

EIE - PKTIE DMAIE LINKIE TXIE - TXERIE RXERIE -000 0-00 73, 240

EDMACSH DMA チェックサム レジスタ上位バイト 0000 0000 73, 265

EDMACSL DMA チェックサム レジスタ下位バイト 0000 0000 73, 265

EDMADSTH - - - DMA デスティネーション レジスタ上位バイト ---0 0000 73, 265

EDMADSTL DMA デスティネーション レジスタ下位バイト 0000 0000 73, 265

EDMANDH - - - DMA 終了レジスタ上位バイト ---0 0000 73, 265

EDMANDL DMA 終了レジスタ下位バイト 0000 0000 73, 265

EDMASTH - - - DMA 開始レジスタ上位バイト ---0 0000 73, 265

EDMASTL DMA 開始レジスタ下位バイト 0000 0000 73, 265

ERXWRPTH - - - 受信バッファ書き込みポインタ上位バイト ---0 0000 73, 225

ERXWRPTL 受信バッファ書き込みポインタ下位バイト 0000 0000 73, 225

ERXRDPTH - - - 受信バッファ読み出しポインタ上位バイト ---0 0101 73, 225

ERXRDPTL 受信バッファ読み出しポインタ下位バイト 1111 1010 73, 225

ERXNDH - - - 受信終了レジスタ上位バイト ---1 1111 73, 225

ERXNDL 受信終了レジスタ下位バイト 1111 1111 73, 225

ERXSTH - - - 受信開始レジスタ上位バイト ---0 0101 73, 225

ERXSTL 受信開始レジスタ下位バイト 1111 1010 74, 225

ETXNDH - - - 送信終了レジスタ上位バイト ---0 0000 74, 226

ETXNDL 送信終了レジスタ下位バイト 0000 0000 74, 226

ETXSTH - - - 送信開始レジスタ上位バイト ---0 0000 74, 226

ETXSTL 送信開始レジスタ下位バイト 0000 0000 74, 226

EWRPTH - - - バッファ書き込みポインタ上位バイト ---0 0000 74, 223

EWRPTL バッファ書き込みポインタ下位バイト 0000 0000 74, 223

EPKTCNT Ethernet パケットカウント レジスタ 0000 0000 74, 252

ERXFCON UCEN ANDOR CRCEN PMEN MPEN HTEN MCEN BCEN 1010 0001 74, 260

EPMOH - - - パターンマッチ オフセット レジスタ上位バイト ---0 0000 74, 263

EPMOL パターンマッチ オフセット レジスタ下位バイト 0000 0000 74, 263

EPMCSH パターンマッチ チェックサム レジスタ上位バイト 0000 0000 74, 263

表 6-5: レジスタファイルのまとめ (PIC18F97J60 ファミリ ) ( 続き )

SFR 名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR、BOR時の値

詳細ページ

凡例 : x = 未知、u = 不変、- = 未実装、「0」として読み出し、q = 条件による、r = 予約済みビットのため変更不可、網掛けの部分は未実装、

「0」として読み出し

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

2: PC の bit 21 はシリアル プログラミング モードでのみ使えます。

3: リセット値は、2 段階起動が有効な場合が「0」で、無効な場合が「1」です。

4: MSSP モジュールが I2C™ スレーブモードで動作時のビットの代替名と定義です。

5: これらのビット / レジスタを利用できるのは 100 ピンデバイスのみです。それ以外のデバイスには実装されておらず、「0」として読み出

されます。表示してあるリセット値は、100 ピンデバイスの場合のみです。

6: これらのビット / レジスタを使えるのは 80 ピンおよび 100 ピンのデバイスのみです。64 ピンデバイスでは未実装で、「0」として読み出

されます。リセット時の値は 100 ピンデバイスの場合です。

7: マイクロコントローラ モードでは、このレジスタのビットは書き込み不可で「0」として読み出されます。

8: PLLEN を使えるのはオシレータモードに ECPLL または HSPLL を選択した場合のみです。それ以外では「0」として読み出されます。

9: 100 ピンデバイスにのみ実装されており、使えるのはマイクロコントローラ モード時のみです。

2013 Microchip Technology Inc. DS39762F_JP - p.95

Page 96: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

EPMCSL パターンマッチ チェックサム レジスタ下位バイト 0000 0000 74, 263

EPMM7 パターンマッチ マスクレジスタ バイト 7 0000 0000 74, 263

EPMM6 パターンマッチ マスクレジスタ バイト 6 0000 0000 74, 263

EPMM5 パターンマッチ マスクレジスタ バイト 5 0000 0000 74, 263

EPMM4 パターンマッチ マスクレジスタ バイト 4 0000 0000 74, 263

EPMM3 パターンマッチ マスクレジスタ バイト 3 0000 0000 74, 263

EPMM2 パターンマッチ マスクレジスタ バイト 2 0000 0000 74, 263

EPMM1 パターンマッチ マスクレジスタ バイト 1 0000 0000 74, 263

EPMM0 パターンマッチ マスクレジスタ バイト 0 0000 0000 74, 263

EHT7 ハッシュテーブル レジスタ バイト 7 0000 0000 74, 259

EHT6 ハッシュテーブル レジスタ バイト 6 0000 0000 74, 259

EHT5 ハッシュテーブル レジスタ バイト 5 0000 0000 74, 259

EHT4 ハッシュテーブル レジスタ バイト 4 0000 0000 74, 259

EHT3 ハッシュテーブル レジスタ バイト 3 0000 0000 74, 259

EHT2 ハッシュテーブル レジスタ バイト 2 0000 0000 74, 259

EHT1 ハッシュテーブル レジスタ バイト 1 0000 0000 74, 259

EHT0 ハッシュテーブル レジスタ バイト 0 0000 0000 74, 259

MIRDH MII 読み出しデータレジスタ上位バイト 0000 0000 74, 232

MIRDL MII 読み出しデータレジスタ下位バイト 0000 0000 74, 232

MIWRH MII 書き込みデータレジスタ上位バイト 0000 0000 74, 232

MIWRL MII 書き込みデータレジスタ下位バイト 0000 0000 74, 232

MIREGADR - - - MII アドレスレジスタ ---0 0000 74, 232

MICMD - - - - - - MIISCAN MIIRD ---- --00 74, 231

MAMXFLH 大フレーム長レジスタ上位バイト 0000 0110 74, 245

MAMXFLL 大フレーム長レジスタ下位バイト 0000 0000 74, 245

MAIPGH - MAC 不連続パケット間ギャップレジスタ上位バイト -000 0000 74, 245

MAIPGL - MAC 不連続パケット間ギャップレジスタ下位バイト -000 0000 75, 245

MABBIPG - BBIPG6 BBIPG5 BBIPG4 BBIPG3 BBIPG2 BBIPG1 BBIPG0 -000 0000 75, 246

MACON4 - DEFER r r - - r r -000 --00 75, 231

MACON3 PADCFG2 PADCFG1 PADCFG0 TXCRCEN PHDREN HFRMEN FRMLNEN FULDPX 0000 0000 75, 230

MACON1 - - - r TXPAUS RXPAUS PASSALL MARXEN ---0 0000 75, 229

EPAUSH 一時停止タイマ値レジスタ上位バイト 0001 0000 75, 258

EPAUSL 一時停止タイマ値レジスタ下位バイト 0000 0000 75, 258

EFLOCON - - - - - r FCEN1 FCEN0 ---- -000 75, 258

MISTAT - - - - r NVALID SCAN BUSY ---- 0000 75, 232

MAADR2 MAC アドレスレジスタ バイト 2 (MAADR<39:32>)、OUI バイト 2 0000 0000 75, 245

MAADR1 MAC アドレスレジスタ バイト 1 (MAADR<47:40>)、OUI バイト 1 0000 0000 75, 245

MAADR4 MAC アドレスレジスタ バイト 4 (MAADR<23:16>) 0000 0000 75, 245

MAADR3 MAC アドレスレジスタ バイト 3 (MAADR<31:24>)、OUI バイト 3 0000 0000 75, 245

MAADR6 MAC アドレスレジスタ バイト 6 (MAADR<7:0>) 0000 0000 75, 245

MAADR5 MAC アドレスレジスタ バイト 5 (MAADR<15:8>) 0000 0000 75, 245

表 6-5: レジスタファイルのまとめ (PIC18F97J60 ファミリ ) ( 続き )

SFR 名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR、BOR時の値

詳細ページ

凡例 : x = 未知、u = 不変、- = 未実装、「0」として読み出し、q = 条件による、r = 予約済みビットのため変更不可、網掛けの部分は未実装、

「0」として読み出し

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

2: PC の bit 21 はシリアル プログラミング モードでのみ使えます。

3: リセット値は、2 段階起動が有効な場合が「0」で、無効な場合が「1」です。

4: MSSP モジュールが I2C™ スレーブモードで動作時のビットの代替名と定義です。

5: これらのビット / レジスタを利用できるのは 100 ピンデバイスのみです。それ以外のデバイスには実装されておらず、「0」として読み出

されます。表示してあるリセット値は、100 ピンデバイスの場合のみです。

6: これらのビット / レジスタを使えるのは 80 ピンおよび 100 ピンのデバイスのみです。64 ピンデバイスでは未実装で、「0」として読み出

されます。リセット時の値は 100 ピンデバイスの場合です。

7: マイクロコントローラ モードでは、このレジスタのビットは書き込み不可で「0」として読み出されます。

8: PLLEN を使えるのはオシレータモードに ECPLL または HSPLL を選択した場合のみです。それ以外では「0」として読み出されます。

9: 100 ピンデバイスにのみ実装されており、使えるのはマイクロコントローラ モード時のみです。

DS39762F_JP - p.96 2013 Microchip Technology Inc.

Page 97: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.3.6 STATUS レジスタ

レジスタ 6-3 に示す STATUS レジスタは、ALU による算術演算の状態を格納します。STATUS レジスタは、他の全てのレジスタと同様に、任意の命令のオペランドとする事ができます。STATUS レジスタが Z、DC、C、OV、N のいずれかのビットに影響を及ぼす命令の結果格納先である場合、これら 5 つのビットへは書き込みできません。

これらのビットはデバイスのロジックに従ってセットまたはクリアされます。従って、STATUS レジスタを結果格納先とする命令を実行した場合、意図した結果とならない場合があります。例えば、CLRF STATUS

命令を実行すると Z ビットがセットされますが、他のビットは変化しません。この場合、STATUS レジスタは「000u u1uu」として読み出されます。従って、STATUS レジスタを変更する際は、Z、C、DC、OV、N ビットに影響を与えない BCF、BSF、SWAPF、MOVFF、MOVWF命令のみを使う事を推奨します。

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

Note: 減算では、C ビットがボロー、DC ビットがデジットボロービットとして動作します。

レジスタ 6-3: STATUS レジスタ

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

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

bit 7 bit 0

凡例 :

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

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

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

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

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

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

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

bit 2 Z: ゼロビット

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

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

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

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

1 = 演算結果の 上位ビットからキャリーが発生した 0 = 演算結果の 上位ビットからキャリーは発生していない

Note 1: ボローの場合、極性は逆です。減算は、2 番目のオペランドの 2 の補数を加算する事によって実行されます。ローテート (RRF、RLF) 命令の場合、このビットにはソースレジスタの bit 4 または bit 3 のいずれかが読み込まれます。

2: ボローの場合、極性は逆です。減算は、2 番目のオペランドの 2 の補数を加算する事によって実行されます。ローテート (RRF、RLF) 命令の場合、このビットにはソースレジスタの上位ビットまたは下位ビットのいずれかが読み込まれます。

2013 Microchip Technology Inc. DS39762F_JP - p.97

Page 98: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

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

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

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

• 含意

• リテラル

• 直接

• 間接

拡張命令セットを有効にした場合 ( コンフィグレーション ビット XINST = 1)、さらにインデックス付きリテラル オフセット アドレッシング モードも使えます。その動作については、セクション 6.6.1「リテラル オフセットを使う インデックス付きアドレッシング」で詳しく説明します。

6.4.1 含意およびリテラル アドレッシング

PIC18 の制御命令の多くは、引数を全く必要としません。これらの命令はデバイス全体に影響する操作を実行するか、または暗黙的に 1 つのレジスタに対して操作を実行します。このようなアドレッシング モードを含意アドレッシングと呼びます。例えば、SLEEP、RESET、DAW等の命令です。

これ以外に、同様に動作しますが、オペコード内で明示的に引数を指定する必要のある命令があります。このように何らかのリテラル値を引数として必要とするものをリテラル アドレッシング モードと呼びます。例えば、W レジスタ (WREG) に対してリテラル値を加算する ADDLW命令、リテラル値を移動する MOVLW命令がこれに該当します。また、20 ビットのプログラムメモリ アドレスを指定する CALL 命令、GOTO 命令もあります。

6.4.2 直接アドレッシング

直接アドレッシング モードでは、演算のソースアドレスと結果の格納先アドレス ( またはそのいずれか一方 ) の、アドレス全体またはその一部をオペコード自体の中で指定します。オプションは命令の引数として指定します。

PIC18 コア命令セットでは、ビット / バイト指向命令が既定値で直接アドレッシングを使います。これらの命令は、いずれも 下位バイトに 8 ビットのリテラルアドレスを含みます。このアドレスは、データ RAM( セクション 6.3.3「汎用レジスタファイル」) のいず

れかのバンクにおけるレジスタアドレスか、アクセスバンク ( セクション 6.3.2「アクセスバンク」) 内の位置を表し、命令のデータソースとして参照されます。

アクセス RAM ビット「a」の値に応じて、アドレスの解釈方法が異なります。「a」が「1」の場合、BSR( セクション 6.3.1「バンクセレクト レジスタ」) の内容とオペコード内のアドレスによって全 12 ビットのレジスタアドレスが決まります。「a」が「0」の場合、アクセスバンク レジスタを指定したものと見なされます。アクセス RAM を使うアドレッシングを、直接強制アドレッシング モードと呼ぶ事もあります。

MOVFF 等いくつかの命令は、オペコードに全 12 ビットのアドレス ( ソースまたは結果格納先 ) を含みます。この場合、BSR は無視されます。

演算結果の格納先は、格納先ビット「d」によって決まります。「d」が「1」の場合、結果はソースレジスタに上書きの形で書き戻されます。「d」が「0」の場合、結果は W レジスタに格納されます。引数に「d」を持たない命令の結果格納先は命令ごとに暗黙的に決まっています。その場合の結果格納先は演算対象のレジスタか W レジスタのどちらかです。

6.4.3 間接アドレッシング

間接アドレッシング モードでは、命令内で固定アドレスを指定する事なく、データメモリ内の指定した位置にアクセスできます。このアクセスは、ファイルセレクト レジスタ (FSR) を、読み書き対象のメモリ位置に対するポインタとして使う事で実現します。FSR 自体も特殊機能レジスタとしてRAM内に存在するため、プログラム制御のもと直接操作できます。このような特長から FSR はデータメモリ内にテーブルや配列等のデータ構造を実装する時に非常に便利です。

間接アドレッシング用のレジスタとして間接ファイルオペランド (INDF) も実装されています。このオペランドを使って、ポインタ値の自動インクリメント、自動デクリメント、別の値によるオフセット等の操作を自動で実行できます。この機能により、ループを使った効率の良いコードを作成できます。例 6-5 に、RAM バンク全体をクリアするサンプルコードを示します。また、データメモリ内でプログラムメモリに対するインデックス付きアドレッシングまたはその他のスタックポインタ操作も実行できます。

例 6-5: 間接アドレッシングによる RAM ( バンク 1) のクリア

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

LFSRFSR0, 100h; NEXT CLRFPOSTINC0; Clear INDF

; register then ; inc pointer

BTFSSFSR0H, 1; All done with; Bank1?

BRA NEXT ; NO, clear next CONTINUE ; YES, continue

DS39762F_JP - p.98 2013 Microchip Technology Inc.

Page 99: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.4.3.1 FSR レジスタと INDF オペランド

間接アドレッシングの中心となるのが、3 つのレジスタセット、FSR0、FSR1、FSR2 です。各セットは、1 対の 8 ビットレジスタ FSRnH と FSRnL から成ります。FSRnH レジスタの上位 4 ビットは使いません。このため、FSR の各ペアは 12 ビットの値を格納します。この 12 ビットの FSR 値で、データメモリのアドレス全範囲をリニアに指定します。これらの FSRレジスタペアは、データメモリ位置を示すポインタとして機能します。

間接アドレッシングには、間接ファイル オペランドINDF0 ~ INDF2 を使います。これらは「仮想」レジスタと考える事ができます。SFR 空間にマッピングされ

ているものの、物理的には実装されていないためです。特定の INDF レジスタに対する読み書きは、実際には対応する FSR レジスタペアへのアクセスです。例えば、INDF1 からの読み出しの場合、データは FSR1H:FSR1Lが示すアドレスから読み出されます。オペランドとして INDF レジスタを指定した命令は、実際には対応するFSR の内容を命令対象へのポインタとして使います。INDF オペランドは、ポインタを使いやすくする機能です。

間接アドレッシングでは、アドレスの全 12 ビットを使うため、データ RAM のバンク指定は不要です。従って、BSR の内容とアクセス RAM ビットはアドレスの決定に一切影響しません。

図 6-9: 間接アドレッシング

FSR1H:FSR1L

07

Data Memory

000h

100h

200h

300h

F00h

E00h

FFFh

Bank 0

Bank 1

Bank 2

Bank 14

Bank 15

Bank 3throughBank 13

ADDWF, INDF1, 1

07

間接アドレッシング レジスタの

いずれかをオペランドとして指

定した命令では…

そのレジスタに対応する FSR ペ

ア内の 12 ビットのアドレスを

使って…

演算に使うデータメモリ内の位

置を決定します。

この例ではFSR1ペアにFCChが格納されています。これは、メモ

リ位置 FCCh の内容が、W レジ

スタの値に加算され、結果が

FCChに書き戻される事を意味し

ます。

x x x x 1 1 1 1 1 1 0 0 1 1 0 0

2013 Microchip Technology Inc. DS39762F_JP - p.99

Page 100: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.4.3.2 FSR レジスタと POSTINC、POSTDEC、PREINC、PLUSW

INDF オペランドの他に、各 FSR レジスタペアには 4つの間接オペランドがあります。これらは INDF と同じ「仮想」レジスタであるため、間接的に読み書きする事はできません。これらのレジスタへのアクセスは実際には関連するFSRレジスタペアへのアクセスですが、同時に、格納された値に対して以下のような操作を実行します。

• POSTDEC: FSR の値にアクセスした後、その値を自動的に「1」デクリメントする

• POSTINC: FSR の値にアクセスした後、その値を自動的に「1」インクリメントする

• PREINC: FSR の値を「1」インクリメントした値を演算で使う

• PLUSW: W レジスタの符号付きの値 (-128 ~ 127)を FSR に加算した値を演算で使う

INDF レジスタへのアクセスでは、FSR レジスタの値を使いますが、FSRレジスタの値自体は変更しません。同様に、PLUSW レジスタにアクセスした場合も FSRの値にWレジスタの値がオフセットとして加算されますが、どちらのレジスタの値も演算で変化する事はありません。しかし、これら以外の仮想レジスタへのアクセスは、FSR レジスタの値を変更します。

POSTDEC、POSTINC、PREINC を使った FSR への操作は、レジスタペア全体に作用します。つまり、FSRnL レジスタの FFh から 00h へのロールオーバーによって、FSRnH レジスタへのキャリーオーバーが発生するという事です。一方これらの操作の結果は、STATUS レジスタのいずれのフラグ (Z、N、OV 等 ) の値にも影響を与えません。

PLUSW レジスタは、データメモリ空間内にインデックス付きアドレッシングのデータ構造を実装する時に使えます。W レジスタの値を操作する事で、ポインタアドレスから一定の値だけオフセットしたアドレスにアクセスできます。アプリケーションによっては、この機能でデータメモリ内にソフトウェア スタック等の強力なプログラム制御構造を実装できます。

6.4.3.3 FSR による FSR に対する操作

他の FSR または仮想レジスタを対象として間接アドレッシングの動作を実行すると特殊な挙動を示します。例えば、FSR を使って仮想レジスタのアドレスを指定すると失敗します。例えば、INDF1 のアドレス FE7h が FSR0H:FSR0L ペアに格納されている場合を考えます。この場合、INDF0 をオペランドとしてINDF1 の値を読み出そうとすると、00h が返されます。INDF0 をオペランドとして INDF1 に書き込もうとすると、NOPとなります。

一方、仮想レジスタによって FSR ペアに書き込むと、意図した結果が得られない場合があります。このような場合、値は FSR ペアに書き込まれますが、インクリメント / デクリメントは実行されません。従って、INDF2 または POSTDEC2 に書き込むと、同じ値がFSR2H:FSR2L ペアに書き込まれます。

FSR は SFR 空間にマッピングされた物理レジスタであるため、全ての直接演算で操作できます。従って、ユーザはこれらのレジスタを使うにあたって、特にコードに間接アドレッシングを採用する場合、十分な注意を払う必要があります。

同様に、通常は全ての SFR を間接アドレッシングによって操作できます。このため、SFR による設定を誤って変更してデバイス動作に影響を与えないように注意する必要があります。

6.5 プログラムメモリと拡張命令セット

拡張命令セットを使ってもプログラムメモリの動作には影響しません。

拡張命令セットを有効にすると、既存の PIC18 命令セットに新たに 5個の 2 ワード命令 (ADDFSR、CALLW、MOVSF、MOVSS、SUBFSR) が追加されます。これらの命令の実行については、セクション 6.2.4「2 ワード命令」で説明します。

6.6 データメモリと拡張命令セット

PIC18 拡張命令セットを有効にすると ( コンフィグレーション ビット XINST = 1)、データメモリとそのアドレス方法の一部が大きく変わります。具体的には、PIC18 コア命令の多くでアクセスバンクの使い方が変わります。これは、データメモリ空間に新しいアドレッシング モードが追加されるためです。このモードでは、FSR2 と関連するオペランドを使った間接アドレッシングの挙動も変わります。

変わらない点を把握しておく事も重要です。まず、データメモリ空間のサイズと、リニア アドレッシングである事は変わりません。SFR のマップも変わりません。PIC18 コア命令セットは、引き続き直接および間接アドレッシング モードの両方で動作します。含意およびリテラル命令には一切変更はありません。FSR0 とFSR1 による間接アドレッシングも以前のままです。

DS39762F_JP - p.100 2013 Microchip Technology Inc.

Page 101: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.6.1 リテラル オフセットを使うインデックス付きアドレッシング

PIC18 拡張命令セットを有効にすると、FSR2 レジスタペアと関連するファイル オペランドを使った間接アドレッシングの挙動が変化します。適切な条件のもとでは、アクセスバンクを使う命令、つまりほとんどのビット / バイト指向命令において、オフセット値を命令に含めるインデックス付きアドレッシング方式を使えます。この特殊なアドレッシング モードは、リテラル オフセットを使うインデックス付きアドレッシング、またはインデックス付きリテラル オフセットモードと呼ばれます。

拡張命令セットを使う場合、このアドレッシング モードでは以下の 2 つの条件を満たす必要があります。

• 必ずアクセスバンクを使う事 (「a」 = 0)

• ファイルアドレス引数が 5Fh 以下である事

これらの条件のもとでは、命令のファイルアドレス引数の解釈は、アドレスの下位バイト ( 直接アドレッシングにおいて BSR と共に使う値 ) でも、アクセスバンク内の 8 ビットアドレスでもありません。ファイルアドレスの値は、FSR2 が指定するアドレスポインタに対するオフセット値と解釈されます。つまり、このオフセット値と FSR2 の内容を加算したものが、演算の対象アドレスになります。

6.6.2 インデックス付きリテラル オフセット モードの影響を受ける命令

直接アドレッシングを使用可能な PIC18 コア命令は、いずれもインデックス付きリテラル オフセット アドレッシング モードの影響を受ける可能性があります。これには、全てのバイト / ビット指向の命令、つまりPIC18 標準命令セットのほぼ半数が含まれます。含意またはリテラル アドレッシング モードのみを使う命令は影響を受けません。

また、バイト / ビット指向命令であってもアクセスバンクを使わない場合 ( アクセス RAM ビットが「1」)、または 60h 以上のファイルアドレスを含む場合、影響を受けません。これらの条件を満たす命令は、以前と同様に実行されます。図 6-10 に、拡張命令セットを有効にした場合に各アドレッシング モードがどのように変化するかを示します。

インデックス付きリテラル オフセット モードでバイト / ビット指向命令を使う場合、アセンブラ構文の変更に注意してください。これについては、セクション 26.2.1「拡張命令の構文」で詳しく説明します。

2013 Microchip Technology Inc. DS39762F_JP - p.101

Page 102: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 6-10: ビット / バイト指向命令に対するアドレッシング モードの比較 ( 拡張命令セットが有効な場合 )

Example Instruction:

a = 0 かつ f 60h の場合 :

命令は直接強制モードで実行されます。「f」はアクセス RAM 内の 060h ~ FFFhの間のメモリ位置と見なされます。これは、データメモリ内のF60h~FFFh( バンク 15) の位置を指定した場合と同じです。

060h よりも下位のメモリ位置は、このアドレッシング モードでは使えません。

a = 0 かつ f5Fh の場合 :

命令はインデックス付きリテラル オフセット モードで実行されます。「f」は FSR2 内のアドレス値に対するオフセットと見なされます。両者を加算する事で命令の対象レジスタのアドレスが得られます。アドレスとしては、データメモリ空間内の任意の位置を指定できます。

このモードにおける正しい構文は、以下のようになる事に注意してください。ADDWF [k], dただし「k」と「f」は同じです。

a = 1 (f は任意の値の場合 ):

命令は直接モード ( 直接ロングモードとも呼ばれます ) で実行されます。

「f」は、データメモリ空間の 16 バンクのうちの1つにおける位置と見なされます。バンクは、バンクセレクト レジスタ (BSR) で指定します。データメモリ空間内に実装された全てのバンク内のアドレスを指定できます。

000h

060h

100h

F00h

F40h

FFFh

Valid Range

00h

60h

FFh

Data Memory

Access RAM

Bank 0

Bank 1throughBank 14

Bank 15

SFRs

000h

060h

100h

F00h

F40h

FFFhData Memory

Bank 0

Bank 1throughBank 14

Bank 15

SFRs

FSR2H FSR2L

ffffffff001001da

ffffffff001001da

000h

060h

100h

F00h

F40h

FFFhData Memory

Bank 0

Bank 1 throughBank 14

Bank 15

SFRs

for ‘f’

BSR00000000

ADDWF, f, d, a (Opcode: 0010 01da ffff ffff)

:

DS39762F_JP - p.102 2013 Microchip Technology Inc.

Page 103: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

6.6.3 インデックス付きリテラル オフセット モードにおけるアクセスバンクのマッピング

インデックス付きリテラル オフセット アドレッシング モードを使うと、アクセス RAM の下位部分 (00h ~5Fh) のマッピングが実質的に変更されます。このモードでは、バンク 0 の先頭部分の内容に限らず、バンク0 と、データメモリ空間内にユーザが任意に定義した「ウィンドウ」の内容をマッピングします。このウィンドウにマッピングされるデータメモリの開始アドレスは FSR2 の値で定義され、終了アドレスは FSR2 に 95(5Fh) を加えた値で定義されます。アクセス RAM 内の5Fh以降のアドレスのマッピングは、セクション 6.3.2「アクセスバンク」で説明した通りです。図 6-11 に、このアドレッシング モードでアクセスバンクのマッピングがどのように変わるかの例を示します。

アクセスバンクのマッピング変更は、インデックス付きリテラル オフセット モードを使う演算のみに適用されます。BSR を使う演算 ( アクセス RAM ビットが

「1」) には、通常の直接アドレッシングがそのまま適用されます。間接またはインデックス付き演算で明示的に間接ファイル オペランド (FSR2を含む )を使うものも、通常の間接アドレッシングとしての動作のままです。アクセスバンクを使う命令でも、05Fh より大きいレジスタアドレスを含む場合は直接アドレッシングと通常のアクセスバンク マップを使います。

6.6.4 インデックス付きリテラルオフセット モードにおける BSR

拡張命令セットを有効にするとアクセスバンクのマッピングが変わりますが、BSR の演算は変わりません。BSR を使ってデータメモリ バンクを切り換える直接アドレッシングは、先に説明した動作の通りです。

図 6-11: インデックス付きリテラル オフセット アドレッシングにおけるアクセスバンクのマッピング変更

Data Memory

000h

100h

200h

F60h

F00h

FFFh

Bank 1

Bank 15

Bank 2throughBank 14

SFRs

05FhADDWF f, d, a

FSR2H:FSR2L = 120h

FSR2 ポインタが指すアド

レス (120h) から、これに

05Fh を足したアドレス

(17Fh) までが、アクセス

RAM の下位 (00h ~ 5Fh) に対応付けられます。

F60h ~ FFFh の特殊機能レ

ジスタは、従来通り 60h ~

FFh に対応付けられます。

このモードでは、バンク 0 の

5Fh より下のアドレスには

アクセスできません。この

領域のアドレスを指定する

には、引き続き BSR を使い

ます。

Access Bank

00h

FFh

Bank 0

SFRs

Bank 1 “Window”

Not Accessible

Window

状況の例 :

120h17Fh

5Fh60h

2013 Microchip Technology Inc. DS39762F_JP - p.103

Page 104: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.104 2013 Microchip Technology Inc.

Page 105: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

7.0 フラッシュ プログラムメモリ

フラッシュ プログラムメモリは、通常動作中 VDD の全レンジで読み出し、書き込み、消去動作が可能です。

プログラムメモリからの読み出しは、1 バイト単位で実行されます。プログラムメモリへの書き込みは、64バイトのブロック単位で実行されます。プログラムメモリの消去は、1024 バイトのブロック単位で実行されます。バルク消去動作はユーザコードからは実行できません。

プログラムメモリに対する書き込みまたは消去動作が完了するまで、命令のフェッチは中止されます。書き込みまたは消去中はプログラムメモリにアクセスできないため、コードを実行できません。プログラムメモリの書き込みと消去は、内部のプログラミング タイマによって終了します。

プログラムメモリに書き込む値は、有効な命令である必要はありません。無効な命令を含むプログラムメモリ位置の実行は、NOPになります。

7.1 テーブル読み書き

プログラムメモリの読み書き時に、プロセッサがプログラムメモリ空間とデータRAM間でデータバイトを移動する方法には、以下の 2 つの動作があります。

• テーブル読み出し (TBLRD)

• テーブル書き込み (TBLWT)

プログラムメモリ空間は 16 ビット幅であるのに対し、データ RAM 空間は 8 ビット幅です。テーブルに対する読み書きは、8 ビットのレジスタ (TABLAT) を介して、これら 2 つのメモリ空間の間でデータを移動します。

テーブル読み出し動作はプログラムメモリからデータを取得し、データ RAM 空間に格納します。図 7-1 に、プログラムメモリとデータ RAM 間のテーブル読み出し動作を示します。

テーブル書き込み動作は、データメモリ空間からのデータをプログラムメモリ内の保持レジスタに格納します。保持レジスタの内容をプログラムメモリに書き込む手順の詳細は、セクション 7.5「フラッシュ プログラムメモリへの 書き込み」で説明します。図 7-2 に、プログラムメモリとデータRAM間のテーブル書き込み動作を示します。

テーブル動作はバイト単位で実行されます。テーブルブロックにプログラム命令ではなくデータを格納する場合、ワード境界でアライメントする必要はありません。従って、テーブルブロックは任意のバイトアドレスから開始し、終了する事ができます。テーブル書き込みによって実行可能コードをプログラムメモリに書き込む場合、プログラム命令をワード境界でアライメントする必要があります。

図 7-1: テーブル読み出し動作

Table Pointer(1)

Table Latch (8-bit)Program Memory

TBLPTRH TBLPTRLTABLAT

TBLPTRU

Instruction: TBLRD*

Note 1: テーブルポインタ レジスタはプログラムメモリ内の 1 バイトを指します。

Program Memory(TBLPTR)

2013 Microchip Technology Inc. DS39762F_JP - p.105

Page 106: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 7-2: テーブル書き込み動作

7.2 制御レジスタ

TBLRD および TBLWT 命令では、以下を含む制御レジスタを使います。

• EECON1 レジスタ

• EECON2 レジスタ

• TABLAT レジスタ

• TBLPTR レジスタ

7.2.1 EECON1 および EECON2 レジスタ

EECON1 レジスタ (レジスタ 7-1)は、メモリアクセスを制御するレジスタです。EECON2 レジスタは物理レジスタではなく、メモリの書き込みおよび消去シーケンスでのみ使います。EECON2 を読み出すと、常に「0」が返されます。

FREE ビットをセットすると、プログラムメモリに対する消去動作が許可されます。FREE ビットをセットした後の 初のWRコマンドで消去動作が開始します。FREEをクリアすると、書き込みだけが有効になります。

WREN ビットをセットすると、書き込み動作が許可されます。WREN ビットは、電源投入時にクリアされます。WRERR ビットは WR ビットをセットするとハードウェアによってセットされます。その後、内部プログラミング タイマがタイムアウトになり書き込み動作が完了するとクリアされます。

書き込み動作は、制御ビットWRによって開始します。このビットはソフトウェアではセットのみ可能でクリアはできません。書き込み動作が完了するとハードウェアによってクリアされます。

Table Pointer(1)Table Latch (8-bit)

TBLPTRH TBLPTRL TABLAT

Program Memory(TBLPTR)

TBLPTRU

Instruction: TBLWT*

Note 1: テーブルポインタは実際には 64 個の保持レジスタのいずれか 1 つを指し示し、そのアドレスは

TBLPTRL<5:0> によって決まります。プログラムメモリ アレイに物理的に書き込むプロセスについて

は、セクション 7.5「フラッシュ プログラムメモリへの 書き込み」で説明します。

Holding RegistersProgram Memory

Note: 通常動作中に WRERR から「1」が読み出された場合、書き込み動作がリセットによって不完全なまま中止されたか、不適切な方法で実行された事を示している可能性があります。

DS39762F_JP - p.106 2013 Microchip Technology Inc.

Page 107: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 7-1: EECON1: EEPROM 制御レジスタ 1

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

— — — FREE WRERR WREN WR —

bit 7 bit 0

凡例 : S = セット可能ビット

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

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

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

bit 4 FREE: フラッシュ行消去イネーブルビット

1 = TBLPTR によってアドレス指定されたプログラムメモリ行を次の WR コマンドで消去する( 消去動作が完了するとクリアされる )

0 = 書き込み動作のみ実行する

bit 3 WRERR: フラッシュ プログラムエラー フラグビット

1 = 書き込み動作が不完全なまま中止された ( 通常動作時の内部タイマによるプログラミング中にいずれかのリセット動作が実行されたか、不適切な書き込みを実行しようとした )

0 = 書き込み動作が完了した

bit 2 WREN: フラッシュ プログラム書き込みイネーブルビット

1 = フラッシュ プログラムメモリへの書き込みサイクルを許可する0 = フラッシュ プログラムメモリへの書き込みサイクルを禁止する

bit 1 WR: 書き込み制御ビット

1 = プログラムメモリの消去サイクルまたは書き込みサイクルを開始する(動作は内部タイマによって制御され、ビットは書き込み完了時にハードウェアでクリアされる。WR ビットはソフトウェアではセットのみ可能で、クリアできない )

0 = 書き込みサイクルが完了した

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

2013 Microchip Technology Inc. DS39762F_JP - p.107

Page 108: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

7.2.2 テーブルラッチ レジスタ (tablat)

テーブルラッチ (TABLAT) は、SFR 空間にマッピングされた 8 ビットのレジスタです。テーブルラッチ レジスタは、プログラムメモリとデータ RAM 間でデータを転送する時に 8 ビットのデータを保持します。

7.2.3 テーブルポインタ レジスタ (TBLPTR)

テーブルポインタ (TBLPTR) レジスタは、プログラムメモリ内の 1 バイトのアドレスを指します。TBLPTR は 3 つの SFR レジスタから構成されます。テーブルポインタ 上位バイト、テーブルポインタ 上位バイト、テーブルポインタ下位バイト(TBLPTRU:TBLPTRH:TBLPTRL) の 3 つです。これら3つを結合して、22ビット幅のポインタを構成します。下位 21 ビットによって、 大 2 MB のプログラムメモリ空間のアドレスを指定できます。22 番目のビットは、デバイス ID とコンフィグレーション ビットへのアクセスを可能にします。

テーブルポインタ レジスタ TBLPTR は、TBLRD および TBLWT命令で使います。これらの命令は、テーブルポインタに対する操作に基づく 4 つの方法のいずれかによって TBLPTR を更新します。表 7-1 にこれらの操作を示します。TBLPTR に対するテーブル操作は、下位 21 ビットに対してのみ影響します。

7.2.4 テーブルポインタの境界

TBLPTR はフラッシュ プログラムメモリの読み出し、書き込み、消去に使います。

TBLRDを実行すると、TBLPTR の全 22 ビットに基づいてプログラムメモリのどのバイトを TABLATに読み出すかを判断します。

TBLWT を実行すると、テーブルポインタ レジスタの下位 6 ビット (TBLPTR<5:0>) に基づいて 64 個のプログラムメモリ保持レジスタのどれに書き込むかを決定します。プログラムメモリに対して内部タイマを使った書き込みを (WR ビットによって ) 開始した場合、TBLPTR の上位 15 ビット (TBLPTR<20:6>) に基づいて 64 バイトのプログラムメモリ ブロックのどれに書き込むかを決定します。詳細は、セクション 7.5「フラッシュ プログラムメモリへの 書き込み」を参照してください。

プログラムメモリ消去を実行する場合、消去対象となる 1024 バイトのブロックは、テーブルポインタ レジスタの上位 11 ビット (TBLPTR<20:10>) によって指定されます。下位 10 ビット (TBLPTR<9:0>) は無視されます。

図 7-3 に、フラッシュ プログラムメモリ動作に対応する TBLPTR の境界を示します。

表 7-1: TBLRD および TBLWT 命令に伴うテーブルポインタに対する操作

図 7-3: 動作ごとのテーブルポインタの境界

例 テーブルポインタに対する操作

TBLRD*TBLWT* TBLPTR は変化しない

TBLRD*+TBLWT*+ 読み書きの後に TBLPTR がインクリメントされる

TBLRD*-TBLWT*- 読み書きの後に TBLPTR がデクリメントされる

TBLRD+*TBLWT+* 読み書きの前に TBLPTR がインクリメントされる

21 16 15 8 7 0

Table Write

Table Read – TBLPTR<21:0>

TBLPTRLTBLPTRHTBLPTRU

TBLPTR<20:6>

Table EraseTBLPTR<20:10>

DS39762F_JP - p.108 2013 Microchip Technology Inc.

Page 109: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

7.3 フラッシュ プログラムメモリの読み出し

TBLRD命令は、プログラムメモリからデータを取得して、データ RAM に格納します。プログラムメモリからのテーブル読み出しは、一度に 1 バイトずつ実行されます。

TBLPTR はプログラム空間内の 1 バイトのアドレスを指します。TBLRDを実行すると、TBLPTR が指すバイトが TABLAT に格納されます。さらに、次のテーブル読み出し動作に備えて、TBLPTR の値を自動的に変更する事ができます。

内部プログラムメモリの内容は通常ワード単位で並んでいます。アドレスの LSb が、ワードの上位バイトと下位バイトを区別します。図 7-4 に、内部プログラムメモリと TABLAT 間のインターフェイスを示します。

図 7-4: フラッシュ プログラムメモリからの読み出し

例 7-1: フラッシュ プログラムメモリ ワードの読み出し

(Even Byte Address)

Program Memory

(Odd Byte Address)

TBLRD TABLAT

TBLPTR = xxxxx1

FETCHInstruction Register(IR) Read Register

TBLPTR = xxxxx0

MOVLW CODE_ADDR_UPPER ; Load TBLPTR with the baseMOVWF TBLPTRU ; address of the wordMOVLW CODE_ADDR_HIGHMOVWF TBLPTRHMOVLW CODE_ADDR_LOWMOVWF TBLPTRL

READ_WORDTBLRD*+ ; read into TABLAT and incrementMOVF TABLAT, W ; get dataMOVWF WORD_EVENTBLRD*+ ; read into TABLAT and incrementMOVFW TABLAT, W ; get dataMOVF WORD_ODD

2013 Microchip Technology Inc. DS39762F_JP - p.109

Page 110: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

7.4 フラッシュ プログラムメモリの消去

消去ブロックの 小単位は 1024 バイトです。これよりも大きなプログラムメモリ ブロックをバルク消去するには、外部プログラマを使うか、ICSP 制御を利用する必要があります。フラッシュアレイは、ワード単位の消去に対応していません。

マイクロコントローラから消去シーケンスを開始する場合、プログラムメモリは 1024 バイトのブロック単位 で 消 去 さ れ ま す。消 去 す る ブ ロ ッ ク は、TBLPTR<20:10> の 11 ビットで指定します。TBLPTR<9:0> ビットは無視されます。

消去動作は EECON1 レジスタで制御します。書き込み動作を有効にするには、WREN ビットをセットする必要があります。消去動作を選択するには、FREE ビットをセットします。

誤操作を防止するため、EECON2 に対する書き込み開始シーケンスを実行する必要があります。

内部フラッシュを消去するには、ロングライトが必要です。ロングライト サイクル中は、命令の実行が一時停止します。ロングライトは、内部のプログラミングタイマによって終了します。消去時間は内蔵タイマで制御します。書き込み / 消去用の電圧は、デバイスの動作電圧レンジのほとんどで動作可能な内蔵チャージポンプによって生成されます。上限値と下限値については、パラメータ D132B (VPEW) を参照してください。

7.4.1 フラッシュ プログラムメモリの消去シーケンス

内部プログラムメモリのブロック消去動作のシーケンスは以下の通りです。

1. 消去する行のアドレスをテーブルポインタ レジスタに格納する。

2. EECON1 レジスタを以下の通り消去動作に設定する。

• WREN ビットをセットして、書き込みを有効にする。

• FREE ビットをセットして、消去を有効にする。

3. 割り込みを無効にする。

4. EECON2 に 55h を書き込む。

5. EECON2 に 0AAh を書き込む。

6. WR ビットをセットする。これで、ブロック消去サイクルが開始する。

7. 消去を実行中、CPU がストールする。

8. 割り込みを再び有効にする。

例 7-2: フラッシュ プログラムメモリの行消去

MOVLW CODE_ADDR_UPPER ; load TBLPTR with the baseMOVWF TBLPTRU ; address of the memory blockMOVLW CODE_ADDR_HIGHMOVWF TBLPTRH MOVLW CODE_ADDR_LOWMOVWF TBLPTRL

ERASE_ROW BSF EECON1, WREN ; enable write to memoryBSF EECON1, FREE ; enable Row Erase operationBCF INTCON, GIE ; disable interrupts

Required MOVLW 55hSequence MOVWF EECON2 ; write 55h

MOVLW 0AAhMOVWF EECON2 ; write 0AAhBSF EECON1, WR ; start erase (CPU stall)BSF INTCON, GIE ; re-enable interrupts

DS39762F_JP - p.110 2013 Microchip Technology Inc.

Page 111: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

7.5 フラッシュ プログラムメモリへの書き込み

書き込みブロックの 小単位は 32 ワードつまり 64 バイトです。ワードまたはバイト単位のプログラミングには対応していません。

フラッシュメモリのプログラミングに必要な保持レジスタへのデータ読み込みには、デバイス内部でテーブル書き込みを使います。プログラミング時のテーブル書き込みでは、64 個の保持レジスタを使います。

テーブルラッチ (TABLAT) には 1 バイトしか格納できないため、書き込み動作のたびに TBLWT命令を 64 回実行する必要があります。これらのテーブル書き込みは保持レジスタに対する書き込みであるため、全てショートライトです。64 個の保持レジスタへの書き込みが完了したら、EECON1 レジスタに書き込みを実行してロングライトの書き込みを開始する必要があります。

内部フラッシュのプログラミングには、ロングライトが必要です。ロングライト サイクル中は、命令の実行が一時停止されます。ロングライトは、内部のプログラミング タイマによって終了します。

書き込み時間は内蔵タイマで制御します。書き込み /消去用の電圧は、デバイスの動作電圧レンジのほとんどで動作可能な内蔵チャージポンプによって生成されます。上限値と下限値については、パラメータ D132B(VPEW) を参照してください。

図 7-5: フラッシュ プログラムメモリに対するテーブル書き込み

7.5.1 フラッシュ プログラムメモリの書き込みシーケンス

内部プログラムメモリに対するプログラミング動作のシーケンスは以下の通りです。

1. 書き込もうとするプログラムメモリ位置が既にプログラミングされている場合、書き込みを実行する前にメモリを消去する必要がある ( セクション 7.4.1「フラッシュ プログラムメモリの消去シーケンス」参照 )。

2. 自動インクリメントにより、保持レジスタに 64 バイトを書き込む。

3. WREN ビットをセットして、バイト書き込みを有効に設定する。

4. 割り込みを無効にする。

5. EECON2 に 55h を書き込む。

6. EECON2 に AAh を書き込む。

7. WR ビットをセットする。これで書き込みサイクルが開始する。

8. 書き込みを実行中、CPU がストールする。

9. 割り込みを再び有効にする。

10. メモリ内容をベリファイする(テーブル読み出し)。

例 7-3 に、必要なコードの例を示します。

Note 1: 以前のPIC MCUとは異なり、PIC18F97J60ファミリは書き込み完了後に保持レジスタをリセットしません。従って、書き込みシーケンスの前には保持レジスタをクリアまたは上書きする必要があります。

2: プログラムメモリ セルの書き込み耐性を維持するため、1 つのフラッシュバイトに対して消去と消去の間に複数回の書き込みを実行しないでください。ターゲットセルの内容を書き換える前に、ターゲット行に対する行消去またはメモリ全体のバルク消去を実行する必要があります。

TABLAT

TBLPTR = xxxx3FTBLPTR = xxxxx1TBLPTR = xxxxx0

Write Register

TBLPTR = xxxxx2

Program Memory

Holding Register Holding Register Holding Register Holding Register

8 8 8 8

Note: WR ビットをセットする前に、テーブルポインタのアドレスを保持レジスタ内の該当する64バイトのアドレス範囲内に設定しておく必要があります。

2013 Microchip Technology Inc. DS39762F_JP - p.111

Page 112: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

例 7-3: フラッシュ プログラムメモリへの書き込み

MOVLW CODE_ADDR_UPPER ; Load TBLPTR with the baseMOVWF TBLPTRU ; address of the memory blockMOVLW CODE_ADDR_HIGHMOVWF TBLPTRHMOVLW CODE_ADDR_LOWMOVWF TBLPTRL

ERASE_BLOCKBSF EECON1, WREN ; enable write to memoryBSF EECON1, FREE ; enable Row Erase operationBCF INTCON, GIE ; disable interruptsMOVLW 55hMOVWF EECON2 ; write 55hMOVLW 0AAhMOVWF EECON2 ; write 0AAhBSF EECON1, WR ; start erase (CPU stall)BSF INTCON, GIE ; re-enable interruptsMOVLW D'16'MOVWF WRITE_COUNTER ; Need to write 16 blocks of 64 to write

; one erase block of 1024RESTART_BUFFER

MOVLW D'64'MOVWF COUNTERMOVLW BUFFER_ADDR_HIGH ; point to bufferMOVWF FSR0HMOVLW BUFFER_ADDR_LOWMOVWF FSR0L

FILL_BUFFER... ; read the new data from I2C, SPI,

; PSP, USART, etc. WRITE_BUFFER

MOVLW D’64 ; number of bytes in holding registerMOVWF COUNTER

WRITE_BYTE_TO_HREGSMOVFF POSTINC0, WREG ; get low byte of buffer dataMOVWF TABLAT ; present data to table latchTBLWT+* ; write data, perform a short write

; to internal TBLWT holding register.DECFSZ COUNTER ; loop until buffers are fullBRA WRITE_BYTE_TO_HREGS

PROGRAM_MEMORYBSF EECON1, WREN ; enable write to memoryBCF INTCON, GIE ; disable interruptsMOVLW 55h

Required MOVWF EECON2 ; write 55hSequence MOVLW 0AAh

MOVWF EECON2 ; write 0AAhBSF EECON1, WR ; start program (CPU stall)BSF INTCON, GIE ; re-enable interruptsBCF EECON1, WREN ; disable write to memory

DECFSZ WRITE_COUNTER ; done with one write cycleBRA RESTART_BUFFER ; if not done replacing the erase block

DS39762F_JP - p.112 2013 Microchip Technology Inc.

Page 113: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

7.5.2 書き込みのベリファイ

アプリケーションによっては、メモリに書き込まれた値を元の値と比較して検証する事が望ましい場合があります。例えば、仕様限界近くまで頻繁に書き込みを実行するようなアプリケーションです。

7.5.3 書き込み動作の予期せぬ中断

電源遮断や予期しないリセット等、不測のイベントによって書き込みが中止された場合、必要に応じてプログラミングしたメモリ位置のベリファイと再プログラミングを実行してください。MCLR リセット、または通常動作中の WDT タイムアウトによって書き込み動作が中断した場合、必要に応じて WRERR ビットをチェックして同じ位置に再書き込みを行う事ができます。

7.5.4 誤書き込み防止

フラッシュ プログラムメモリへの誤書き込みを防止するため、書き込み開始シーケンスを遵守する必要があります。詳細についてはセクション 25.0「CPU の特殊機能」を参照してください。

7.6 コード保護中のフラッシュ プログラムメモリの動作

フラッシュ プログラムメモリのコード保護に関する詳細は、セクション 25.6「プログラムの検証とコード保護」を参照してください。

表 7-2: プログラム フラッシュメモリに関連するレジスタ

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

TBLPTRU - - bit 21 プログラムメモリ テーブルポインタの 上位バイト(TBLPTR<20:16>)

69

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

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

TABLAT プログラムメモリ テーブルラッチ 69

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

EECON2 EEPROM 制御レジスタ 2 ( 物理レジスタではありません ) 71

EECON1 - - - FREE WRERR WREN WR - 71

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けのビットはフラッシュ /EEPROM へのアクセスには使いません。

2013 Microchip Technology Inc. DS39762F_JP - p.113

Page 114: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.114 2013 Microchip Technology Inc.

Page 115: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.0 外部メモリバス

外部メモリバス (EMB) を使うと、外部メモリデバイス( フラッシュ、EPROM、SRAM 等 ) にプログラムメモリまたはデータメモリとしてアクセスできます。EMBは、8 ビット /16 ビットモードのデータ幅、 大 20 ビットを含む 3 つのモードのアドレス幅に対応します。

外部メモリバスは 28 ピンで実装され、4 つの I/O ポートに多重化されています。3 つのポート (PORTD、PORTE、PORTH) は、アドレス / データバスと多重化され合計 20 本のラインが使えます。PORTJ はバス制御信号と多重化されています。

表 8-1 にピンと機能の一覧を示します。

表 8-1: PIC18F96J60/96J65/97J60 の外部メモリバス - I/O ポートの機能

Note: 64 ピンと 80 ピンデバイスには外部メモリバスが実装されていません。

バス名 ポート Bit 外部メモリバスの機能

RD0/AD0 PORTD 0 アドレス Bit 0 またはデータ Bit 0

RD1/AD1 PORTD 1 アドレス Bit 1 またはデータ Bit 1

RD2/AD2 PORTD 2 アドレス Bit 2 またはデータ Bit 2

RD3/AD3 PORTD 3 アドレス Bit 3 またはデータ Bit 3

RD4/AD4 PORTD 4 アドレス Bit 4 またはデータ Bit 4

RD5/AD5 PORTD 5 アドレス Bit 5 またはデータ Bit 5

RD6/AD6 PORTD 6 アドレス Bit 6 またはデータ Bit 6

RD7/AD7 PORTD 7 アドレス Bit 7 またはデータ Bit 7

RE0/AD8 PORTE 0 アドレス Bit 8 またはデータ Bit 8

RE1/AD9 PORTE 1 アドレス Bit 9 またはデータ Bit 9

RE2/AD10 PORTE 2 アドレス Bit 10 またはデータ Bit 10

RE3/AD11 PORTE 3 アドレス Bit 11 またはデータ Bit 11

RE4/AD12 PORTE 4 アドレス Bit 12 またはデータ Bit 12

RE5/AD13 PORTE 5 アドレス Bit 13 またはデータ Bit 13

RE6/AD14 PORTE 6 アドレス Bit 14 またはデータ Bit 14

RE7/AD15 PORTE 7 アドレス Bit 15 またはデータ Bit 15

RH0/A16 PORTH 0 アドレス Bit 16

RH1/A17 PORTH 1 アドレス Bit 17

RH2/A18 PORTH 2 アドレス Bit 18

RH3/A19 PORTH 3 アドレス Bit 19

RJ0/ALE PORTJ 0 アドレスラッチ イネーブル (ALE) 制御ビット

RJ1/OE PORTJ 1 出力イネーブル (OE) 制御ビット

RJ2/WRL PORTJ 2 下位バイト書き込み (WRL) 制御ビット

RJ3/WRH PORTJ 3 上位バイト書き込み (WRH) 制御ビット

RJ4/BA0 PORTJ 4 バイトアドレス (BA0) Bit 0

RJ5/CE PORTJ 5 チップイネーブル (CE) 制御ビット

RJ6/LB PORTJ 6 下位バイトイネーブル (LB) 制御ビット

RJ7/UB PORTJ 7 上位バイトイネーブル (UB) 制御ビット

Note: この表では、I/O ポートと外部バスの割り当てだけを示しています。ピンによっては、この表に示した以外の機能が多重化されています。

2013 Microchip Technology Inc. DS39762F_JP - p.115

Page 116: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.1 外部メモリバスの制御

インターフェイスの動作は、MEMCON レジスタ ( レジスタ 8-1) で制御します。このレジスタは、マイクロコントローラ モードを除く、全てのプログラムメモリ動作モードで使えます。マイクロコントローラ モードでは、このレジスタは無効になり書き込みができません。

EBDIS ビット (MEMCON<7>) がバスおよび関連ポート機能の動作を制御します。EBDIS をクリアすると、ポートの I/O 機能とこれらのピンに多重化された全機能が無効になり、インターフェイスが有効になります。このビットをセットすると、I/O ポートとその他の機能が有効になりますが、外部メモリ動作が必要な場合はインターフェイスがピンの他の機能を全てオーバーライドします。既定値では、外部バスが常に有効で他の I/O は全て無効です。

EBDIS ビットの動作は、プログラムメモリ モードにも影響されます。これについては、セクション 8.5「プログラムメモリ モードと外部メモリバス」で詳細に説明します。

WAIT ビットを使うと、外部メモリ動作にウェイトステートを追加できます。これらのビットの使い方は、セクション 8.3「ウェイトステート」で説明します。

WM ビットでは、バスが 16 ビットデータ幅モード時の動作モードを選択します。これらの動作モードの詳細はセクション 8.6「16 ビットデータ幅モード」で説明します。8 ビットデータ幅モード時は、WM ビットは動作に影響しません。

レジスタ 8-1: MEMCON: 外部メモリバス制御レジスタ

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

EBDIS — WAIT1 WAIT0 — — WM1 WM0

bit 7 bit 0

凡例 :

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

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

bit 7 EBDIS: 外部バス ディセーブル ビット

1 = マイクロコントローラが外部メモリにアクセスする時に外部バスを有効にする。それ以外の時は全ての外部バスドライバを I/O ポートに割り当てる

0 = 常に外部バスを有効にして、I/O ポートを無効にする

bit 6 未実装 : 「0」として読み出し

bit 5-4 WAIT<1:0>: テーブル読み書きバスサイクル ウェイト ( 待機 ) カウントビット

11 = テーブル読み書きを 0 TCY の間待機する10 = テーブル読み書きを 1 TCY の間待機する01 = テーブル読み書きを 2 TCY の間待機する00 = テーブル読み書きを 3 TCY の間待機する

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

bit 1-0 WM<1:0>: 16 ビットデータバス幅 TBLWT動作選択ビット

1x = ワード書き込みモード : TABLAT への書き込みで TBLPTR が奇数アドレスを格納している場合、WRH をアクティブにする。TBLPTR が偶数アドレスを格納している場合、TABLAT に書き込むとその値は保持ラッチに読み込まれる。

01 = バイト選択モード : TABLAT のデータが MSB と LSB の両方にコピーされ、WRH と (UB または LB) がアクティブになる

00 = バイト書き込みモード : TABLAT のデータが MSB と LSB の両方にコピーされ、WRH またはWRL がアクティブになる

DS39762F_JP - p.116 2013 Microchip Technology Inc.

Page 117: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.2 アドレス幅とデータ幅

PIC18F97J60 ファミリは、同じメモリバス上で異なるアドレス幅とデータ幅を使うように設定できます。アドレス幅とデータ幅は、いずれも CONFIG3L レジスタのコンフィグレーション ビットで設定します。コンフィグレーション ビットで設定するという事は、これらの設定がデバイスのプログラミングによってのみ可能であり、ソフトウェアでは制御できない事を意味します。

BW ビットは、8 ビットまたは 16 ビットのデータバス幅を選択します。このビットをセットすると ( 既定値 )、16 ビットのデータ幅が選択されます。

EMB<1:0> ビットは、プログラムメモリの動作モードとアドレスバス幅の両方を決定します。選択可能なモードには、既定値であるマイクロコントローラ モード ( 外部バスは無効 ) に加えて、20/16/12 ビットモードがあります。16 ビットまたは 12 ビット幅を選択した場合、対応する本数の上位ラインは I/O 機能に使えます。これらのピンは、EBDIS ビットの設定の影響を受けません。例えば、16 ビットのアドレッシング モードを選択した場合 (EMB<1:0> = 01)、A<19:16> は無効となり、バスからの割り込みなしに PORTH<3:0>ビットの機能を使えます。アドレス幅を狭くする事で、外部メモリ空間のサイズに合わせてメモリバスを調整すると共に、空いたピンを専用 I/O 動作用として使えます。

EMBビットにはメモリバス動作に応じてピンを無効にする効果があるため、必ずデータ幅以上のアドレス幅を選択する事が重要です。12 ビットアドレス幅を 16ビットデータ幅と共に使う場合、このバスではデータの上位 4 ビットを使えません。

アドレス幅とデータ幅のいかなる組み合わせでも、アドレスとデータの情報を同じライン上で多重化する必要があります。表 8-2 に、アドレスおよびデータの多重化と、アドレス幅を狭くする事で使える I/O ポートを示します。

8.2.1 外部バス上のアドレスシフト

既定値では、外部バスに出力されるアドレスは PC の値です。これは事実上、外部メモリのアドレスのうち内蔵メモリの 上位より下位のアドレスをマイクロコントローラが使えない事を意味します。これらの物理位置にアクセスするには、マイクロコントローラと外部メモリ間のグルーロジックが何らかの方法でアドレスを変換する必要があります。

インターフェイスを簡素化するために、外部バスは自動的にアドレスシフトを実行する、拡張マイクロコントローラ モードと呼ばれる拡張機能を提供します。この機能は、EASHFT コンフィグレーション ビットによって制御されます。このビットをセットすると、バス上のアドレスがマイクロコントローラの内蔵プログラムメモリのサイズだけオフセットされ、 下位アドレスが 0000h に設定されます。これによって、デバイスは外部メモリの物理アドレスの全範囲を使えます。

8.2.2 21 ビット アドレッシング

20 ビット アドレッシングの拡張として、外部メモリバスでは 2 MB のメモリ空間全体をアドレス指定できます。それには、バスアドレス Bit 0 (BA0) 制御ラインをアドレスの 下位ビットとして使います。一部のメモリデバイスでは、UB および LB 制御信号を使って、16 ビット幅のデータワード内の上位バイトと下位バイトを選択する事もできます。

このアドレッシング モードは8ビットデータ幅モードと一部の 16ビットデータ幅モードの両方で使えます。詳細は、セクション 8.6.3「16 ビットバイト選択モード」とセクション 8.7「8 ビットデータ幅モード」で説明します。

表 8-2: 各種のアドレス幅とデータ幅に対するアドレスラインとデータライン

データ幅 アドレス幅多重化されるデータラインと

アドレスライン( 対応ポート )

アドレス専用ライン( 対応ポート )

I/O に使えるポート

8 ビット

12 ビット

AD<7:0>(PORTD<7:0>)

AD<11:8>(PORTE<3:0>)

PORTE<7:4>、PORTH 全体

16 ビットAD<15:8>

(PORTE<7:0>) PORTH 全体

20 ビット

A<19:16>, AD<15:8>(PORTH<3:0>,PORTE<7:0>)

-

16 ビット

16 ビット AD<15:0>(PORTD<7:0>,PORTE<7:0>)

- PORTH 全体

20 ビットA<19:16>

(PORTH<3:0>)-

2013 Microchip Technology Inc. DS39762F_JP - p.117

Page 118: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.3 ウェイトステート

外部メモリデバイスはマイクロコントローラのクロックレートで動作するものと思われがちですが、そうでない場合も数多く存在します。実際多くのデバイスは、データの書き込みまたは読み取りに、テーブル読み書きに与えられるよりも長い時間を必要とします。

これを補うために、バスを使うテーブル動作ごとに一定の遅延を付加するように外部メモリバスを設定できます。ウェイトステートは、WAIT コンフィグレーション ビットをセットする事で有効化します。有効時、遅延時間は WAIT<1:0> (MEMCON<5:4>) ビットで設定します。遅延は、マイクロコントローラの命令サイクル時間の倍数を基準とし、テーブル動作を実行した命令サイクルの後に加えられます。遅延時間の範囲は、遅延なしから 3 TCY ( 既定値 ) です。

8.4 ポートピンの弱プルアップ

上位アドレスラインの A<19:16> を除き、外部メモリバスに関連付けられているピンは弱プルアップを備えています。プルアップは、LATA<7:6> と PORTA<7> の位置にあるビットによって制御されます。これらのビットは RDPU、REPU、RJPU と呼ばれ、それぞれ PORTD、PORTE、PORTJ のプルアップを制御します。これらのビットをセットすると、そのポートに対応するプルアップが有効になります。既定値では、全てのデバイスリセットでプルアップは全て無効になります。

拡張マイクロコントローラ モードでバスが一時的に無効化されている (EBDIS = 1) 時に、外部バスのメモリ状態を保持するためにポートのプルアップが役に立つ場合があります。

8.5 プログラムメモリ モードと外部メモリバス

PIC18F97J60 ファミリのデバイスは、内蔵メモリと外部のプログラムメモリを組み合わせる事で、2 つのプログラムメモリ モードのいずれかによる動作が可能です。多重化されたポートピンの機能は、選択したプログラムメモリ モードと EBDIS ビットの設定によって決まります。

マイクロコントローラ モードの場合、バスは非アクティブでピンはポート機能だけを果たします。MEMCOM レジスタには書き込む事ができません。EBDIS のリセット値 (「0」) は無視され、EMB ピンはI/O ポートとして動作します。

拡張マイクロコントローラ モードでは、外部プログラムメモリ バスがピンの I/O ポート機能を共有します。デバイスが外部プログラムメモリ空間上でフェッチ動作またはテーブル読み書きを実行している間のピンは、外部バス機能を持ちます。

デバイスが内部プログラムメモリ位置に対してのみフェッチまたはアクセスしている場合、EBDIS 制御ビットに基づいてピンの機能が外部メモリから I/Oポートに変更されます。EBDIS = 0 の場合、ピンは外部バスとして機能します。EBDIS = 1 の場合、ピンはI/O ポートとして機能します。

EBDIS = 1 の時にデバイスが外部メモリに対してフェッチまたはアクセスを行うと、ピンは外部バスに切り換わります。外部メモリから実行中のプログラムによって EBDIS ビットをセットする場合、その動作はプログラムが内部メモリに分岐するまで遅延されます。内部メモリに分岐した時点で、ピンは外部バスから I/O ポートに変わります。

EBDIS =0 で内部メモリからプログラムを実行している場合、メモリバスのアドレス / データおよび制御ピンはアクティブになりません。アクティブなアドレス/ データピンは 3 ステートに移行し、CE、OE、WRH、WRL、UB、LB 信号は「1」に、ALE と BA0 は「0」の状態に移行します。3 ステートに移行するのは現在のアドレス幅に対応するピンだけであり、その他のピンは引き続き I/Oとして機能する事に注意してください。例えばアドレス幅が 16 ビットの場合、AD<15:0>(PORTD と PORTE) だけが影響を受け、A<19:16>(PORTH<3:0>) は引き続き I/O として機能します。

いずれの外部メモリモードでも、バスは多重化された他の周辺機能よりも優先されます。ここでいう周辺機能には、パラレルスレーブ ポートとシリアル通信モジュールも含まれます。これらは、I/O ポートよりは優先されます。

8.6 16 ビットデータ幅モード

16 ビットデータ幅モードでは、外部メモリ インターフェイスを以下の 3 種類の設定で外部メモリに接続できます。

• 16 ビットバイト書き込み

• 16 ビットワード書き込み

• 16 ビットバイト選択

使う設定は、MEMCON レジスタの WM<1:0> ビット(MEMCON<1:0>) によって決まります。これら 3 つの設定を使う事で、8 ビットと 16 ビットのいずれのデバイスでも 16 ビットのデータを使い、 大限の柔軟性を得る事ができます。

16 ビットデータ幅のいずれのモードでも、アドレスラッチ イネーブル (ALE)ピンは、外部メモリ インターフェイス バスのアドレスビット AD<15:0> が使える事を示します。アドレスラッチに続き、出力イネーブル信号 (OE) がプログラムメモリの両バイトを同時に有効化し、16 ビットの命令ワードが構成されます。チップイネーブル信号 (CE) は、マイクロコントローラが外部メモリを読み書きしている間は常にアクティブです。デバイスがスリープの間は、常に非アクティブ (High アサート ) です。

バイト選択モードの場合、JEDEC 標準のフラッシュメモリはバイト アドレスライン用に BA0、バイトモードとワードモードの選択用に I/O ラインを 1 本必要とします。その他の 16 ビットデータ幅モードは BA0 を必要としません。JEDEC 標準の SRAM メモリは、バイト選択用に UB または LB 信号を使います。

DS39762F_JP - p.118 2013 Microchip Technology Inc.

Page 119: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.6.1 16 ビットバイト書き込みモード

図 8-1 に、PIC18F97J60 ファミリの 16 ビットバイト書き込みモードの例を示します。このモードを使って、独立した 2 つの 8 ビットメモリを連結して 16 ビット動作を実現します。この構成は通常、基本的な EPROMとフラッシュ デバイスに適用できます。バイト幅の外部メモリに対するテーブル書き込みが可能です。

TBLWT命令サイクルの間、AD<15:0> バスの上位および下位バイトには TABLAT のデータが出力されます。対応する WRH または WRL 制御ラインは、TBLPTRの LSb でストローブされます。

図 8-1: 16 ビットバイト書き込みモードの例

AD<7:0>

A<19:16>(1)

ALE

D<15:8>

373 A<x:0>

D<7:0>

A<19:0>A<x:0>

D<7:0>

373

OE

WRH

OE OEWR(2) WR(2)

CE CE

Note 1: 上位のアドレスラインは 20 ビットアドレス幅の場合にのみ使います。

2: この信号はテーブル書き込みにのみ使います ( セクション 7.1「テーブル読み書き」参照 )。

WRL

D<7:0>

(LSB)(MSB)PIC18F97J60

D<7:0>

AD<15:8>

アドレスバス

データバス

制御ライン

CE

2013 Microchip Technology Inc. DS39762F_JP - p.119

Page 120: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.6.2 16 ビットワード書き込みモード

図 8-2 に、PIC18F97J60 ファミリの 16 ビットワード書き込みモードの例を示します。このモードはワード幅のメモリに対して使います。そのようなメモリには一部のEPROMやフラッシュタイプのメモリが含まれます。このモードでは、あらゆる 16 ビットメモリからのオペコード フェッチとテーブル読み出し、あらゆるワード幅外部メモリに対するテーブル書き込みが可能です。この方法では、偶数アドレスと奇数アドレスに対する TBLWTサイクルを区別します。

偶数アドレスに対するTBLWTサイクル(TBLPTR<0> =0) 中、TABLAT のデータが保持ラッチに転送され、バスサイクルのデータ部分では外部アドレス データバスが 3 ステート状態です。書き込み信号は一切アクティブになりません。

奇数アドレスに対するTBLWTサイクル(TBLPTR<0> =1) 中、TABLAT のデータが AD<15:0> バスの上位バイトに出力されます。保持ラッチの内容は AD<15:0> バスの下位バイトに出力されます。

書き込みサイクルごとに WRH 信号がストローブされます。WRL ピンは使いません。BA0 ピンの信号はTBLPTR の LSb を示しますが、未接続のままとします。代わりに UB および LB 信号がアクティブになり、両方のバイトを選択します。この方法の制約は、ワード位置に正確に書き込むにはテーブル書き込みを特定のワード境界に対してペアで実行する必要がある、という事です。

図 8-2: 16 ビットワード書き込みモードの例

AD<7:0>

PIC18F97J60

AD<15:8>

ALE

373 A<20:1>

373

OE

WRH

A<19:16>(1)

A<x:0>

D<15:0>

OE WR(2)CE

D<15:0>

JEDEC Word EPROM Memory

アドレスバス

データバス

制御ライン

Note 1: 上位のアドレスラインは 20 ビットアドレス幅の場合にのみ使います。

2: この信号はテーブル書き込みにのみ使います ( セクション 7.1「テーブル読み書き」参照 )。

CE

DS39762F_JP - p.120 2013 Microchip Technology Inc.

Page 121: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.6.3 16 ビットバイト選択モード

図 8-3に、16ビットバイト選択モードの例を示します。このモードを使うと、バイト選択機能を持つワード幅の外部メモリに対するテーブル書き込みが可能です。このようなメモリにはワード幅のフラッシュと SRAMデバイスが含まれます。

TBLWTサイクル中、AD<15:0> バスの上位および下位バイトには TABLAT のデータが出力されます。書き込みサイクルごとに WRH 信号がストローブされます。WRL ピンは使いません。TBLPTR レジスタの 下位ビットに基づき、BA0 または UB/LB 信号によって書き込むバイトを選択します。

バイト選択モードの実装には、フラッシュと SRAM デバイスで異なる制御信号の組み合わせを使います。JEDEC 標準のフラッシュメモリでは、選択信号を提供するために、コントローラの I/O ポートピンをメモリの BYTE/WORD ピンに接続する必要があります。さらにコントローラからのBA0信号もバイトアドレスとして使います。一方、JEDEC 標準の SRAM メモリは、バイト選択用に UB または LB 信号を使います。

図 8-3: 16 ビットバイト選択モードの例

AD<7:0>

PIC18F97J60

AD<15:8>

ALE

373A<20:1>

373

OE

WRH

A<19:16>(2)

BA0

JEDEC WordA<x:1>

D<15:0>

A<20:1>

CE

D<15:0>

I/O

OE WR(1)A0

BYTE/WORD

FLASH Memory

JEDEC WordA<x:1>

D<15:0>CE

D<15:0>

OE WR(1)

LB

UB

SRAM Memory

LB

UB

アドレスバス

データバス

制御ライン

Note 1: この信号はテーブル書き込みにのみ使います ( セクション 7.1「テーブル読み書き」参照 )。

2: 上位のアドレスラインは 20 ビットアドレス幅の場合にのみ使います。

3: 逆多重化は、複数のメモリデバイスにアクセスする場合にのみ必要です。

138(3)

CE

2013 Microchip Technology Inc. DS39762F_JP - p.121

Page 122: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.6.4 16 ビットモードのタイミング

外部メモリバスに出力される制御信号は、各動作モードで異なります。図 8-4 と図 8-5 に、代表的な信号タイミング チャートを示します。

図 8-4: TBLRDの外部メモリバス タイミング ( 拡張マイクロコントローラ モード )

図 8-5: スリープ時の外部メモリバス タイミング ( 拡張マイクロコントローラ モード )

Q2Q1 Q3 Q4 Q2Q1 Q3 Q4 Q2Q1 Q3 Q4

A<19:16>

ALE

OE

AD<15:0>

CE

Opcode Fetch Opcode Fetch Opcode FetchTBLRD*

TBLRD Cycle 1

ADDLW 55hfrom 000100h

Q2Q1 Q3 Q4

0Ch

CF33h

TBLRD 92hfrom 199E67h

9256h

from 000104h

MemoryCycle

InstructionExecution

INST(PC – 2) TBLRD Cycle 2

MOVLW 55hfrom 000102h

MOVLW

Q2Q1 Q3 Q4 Q2Q1 Q3 Q4

A<19:16>

ALE

OE

3AAAhAD<15:0>

00h 00h

CE

Opcode Fetch Opcode FetchSLEEP

SLEEP

from 007554h

Q1

Bus Inactive

0003h 3AABh 0E55h

MemoryCycle

InstructionExecution INST(PC – 2)

Sleep Mode, MOVLW 55h

from 007556h

DS39762F_JP - p.122 2013 Microchip Technology Inc.

Page 123: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.7 8 ビットデータ幅モード

8 ビットデータ幅モードの外部メモリバスは多重化モードでのみ動作します。すなわち、データはアドレスバスの下位 8 ビットを共有します。

図 8-6 に、100 ピンデバイスの 8 ビット多重化モードの例を示します。このモードを使って、16 ビット動作で単一の 8 ビットメモリを接続します。命令は、共有データ / アドレスバス上の 2 つの 8 ビットバイトとしてフェッチされます。この 2 バイトは、1 命令サイクル (TCY) 内で連続してフェッチされます。従って、1/2 TCY ( 命令レートの 2 倍 ) に基づくタイミング計算を基に外部メモリデバイスを選ぶ必要があります。メモリスピードを適切に選択するには、セットアップおよびホールド時間と共に、グルーロジック伝播遅延時間も考慮する必要があります。

アドレスラッチ イネーブル (ALE) ピンは、外部メモリインターフェイス バスのアドレスビットAD<15:0>が使える事を示します。出力イネーブル信号 (OE) が、命

令サイクル内でプログラムメモリの 1 バイトを有効にした後、BA0 が変化して 2 番目のバイトが有効化される事で 16 ビットの命令ワードが形成されます。このモードでは、アドレスの 下位ビット BA0 をメモリデバイスに接続する必要があります。チップイネーブル信号 (CE) は、マイクロコントローラが外部メモリを読み書きしている間は常にアクティブです。デバイスがスリープの間は、常に非アクティブ (High アサート )です。

このプロセスには通常、基本的な EPROM とフラッシュ デバイスが含まれます。バイト幅の外部メモリに対するテーブル書き込みが可能です。

TBLWT命令サイクルの間、AD<15:0> バスの上位および下位バイトには TABLAT のデータが出力されます。BA0 制御ラインの該当するレベルは、TBLPTR の LSbでストローブされます。

図 8-6: 8 ビット多重化モードの例

AD<7:0>

A<19:16>(1)

ALE D<15:8>

373A<19:0>

A<x:1>

D<7:0>

OE

OE WR(2)

CE

Note 1: 上位のアドレスラインは 20 ビットアドレス幅の場合にのみ使います。上位 AD バイトは 8 ビット

を除く全てのアドレス幅で使います。

2: この信号はテーブル書き込みにのみ使います。( セクション 7.1「テーブル読み書き」参照 )。

WRL

D<7:0>

PIC18F97J60

AD<15:8>(1)

アドレスバス

データバス

制御ライン

CE

A0

BA0

2013 Microchip Technology Inc. DS39762F_JP - p.123

Page 124: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.7.1 8 ビットモードのタイミング

外部メモリバスに出力される制御信号は、各種の動作モードで異なります。図 8-7 と図 8-8 に、代表的な信号タイミング チャートを示します。

図 8-7: TBLRDの外部メモリバス タイミング ( 拡張マイクロコントローラ モード )

図 8-8: スリープ時の外部メモリバス タイミング ( 拡張マイクロコントローラ モード )

Q2Q1 Q3 Q4 Q2Q1 Q3 Q4 Q2Q1 Q3 Q4

A<19:16>

ALE

OE

AD<7:0>

CE

Opcode Fetch Opcode Fetch Opcode FetchTBLRD*

TBLRD Cycle 1

ADDLW 55hfrom 000100h

Q2Q1 Q3 Q4

0Ch

33h

TBLRD 92hfrom 199E67h

92h

from 000104h

MemoryCycle

InstructionExecution INST(PC – 2) TBLRD Cycle 2

MOVLW 55hfrom 000102h

MOVLW

AD<15:8> CFh

Q2Q1 Q3 Q4 Q2Q1 Q3 Q4

A<19:16>

ALE

OE

AAhAD<7:0>

00h 00h

CE

Opcode Fetch Opcode FetchSLEEP

SLEEP

from 007554h

Q1

Bus Inactive

00h ABh 55h

MemoryCycle

InstructionExecution

INST(PC – 2)

Sleep Mode, MOVLW 55h

from 007556h

AD<15:8> 3Ah 3Ah

03h 0Eh

BA0

DS39762F_JP - p.124 2013 Microchip Technology Inc.

Page 125: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

8.8 電力管理モードにおける動作

電力管理ランモードでも、外部バスは通常動作を継続します。より低速のクロック源を選択した場合、バスはその速度で動作します。その場合、ウェイトステートを有効にして外部メモリ動作に適用していると、外部メモリに対するアクセス時間が過剰にかかる可能性があります。より消費電力の低いランモードの動作が予想される場合、低速のクロックに対してユーザ アプリケーション内でメモリアクセス時間を調整する必要があります。

アイドル / スリープ中、マイクロコントローラ コアはデータにアクセスする必要がないため、バス動作は中断されます。外部バスの状態は固定され、アドレス /データピンと大部分の制御ピンはそのモードに移行した時点と同じ状態を保持します。変化する可能性があるピンは、CE、LB、UB だけです。これらは論理 Highに保持されます。

2013 Microchip Technology Inc. DS39762F_JP - p.125

Page 126: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.126 2013 Microchip Technology Inc.

Page 127: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

9.0 8 x 8 ハードウェア乗算器

9.1 はじめに

全ての PIC18 は、ALU の一部として 8 x 8 のハードウェア乗算器を搭載しています。この乗算器は符号なし演算を実行し、16 ビットの演算結果を生成します。結果は積レジスタペア PRODH:PRODL に格納されます。乗算器による演算は、STATUS レジスタのフラグを一切変化させません。

ハードウェアによる乗算を利用する事で、1 命令サイクルで演算が完了します。これには、計算のスループットが向上すると同時に、乗算アルゴリズムのコードサイズを削減できるという利点があり、以前はデジタルシグナル プロセッサを使う必要があった多くのアプリケーションでPIC18を使えるようになりました。表 9-1に、各種のハードウェアとソフトウェアによる乗算を比較し、それぞれのメモリと実行時間を示します。

9.2 動作

例 9-1 に、8 x 8 符号なし乗算の命令シーケンスを示します。引数の一方が WREG レジスタにあらかじめ格納されていれば、乗算には 1 命令しか必要ありません。

例 9-2に、8 x 8符号付き乗算のシーケンスを示します。引数の符号ビットを適切に処理するために、各引数の上位ビット (MSb) の値を調べ、必要な減算を実行し

ています。

例 9-1: 8 x 8 符号なし乗算のルーチン

例 9-2: 8 x 8 符号付き乗算のルーチン

表 9-1: 各種乗算における性能比較

MOVF ARG1, W ; MULWF ARG2 ; ARG1 * ARG2 ->

; PRODH:PRODL

MOVF ARG1, W MULWF ARG2 ; ARG1 * ARG2 ->

; PRODH:PRODL BTFSC ARG2, SB ; Test Sign Bit SUBWF PRODH, F ; PRODH = PRODH

; - ARG1 MOVF ARG2, WBTFSC ARG1, SB ; Test Sign Bit SUBWF PRODH, F ; PRODH = PRODH

; - ARG2

ルーチン 乗算の方法プログラムメモリ

( ワード )

サイクル数( 大 )

時間

@ 40 MHz @ 10 MHz @ 4 MHz

8 x 8 符号なしハードウェア乗算なし 13 69 6.9 s 27.6 s 69 s

ハードウェア乗算 1 1 100 ns 400 ns 1 s

8 x 8 符号付きハードウェア乗算なし 33 91 9.1 s 36.4 s 91 s

ハードウェア乗算 6 6 600 ns 2.4 s 6 s

16 x 16 符号なしハードウェア乗算なし 21 242 24.2 s 96.8 s 242 s

ハードウェア乗算 28 28 2.8 s 11.2 s 28 s

16 x 16 符号付きハードウェア乗算なし 52 254 25.4 s 102.6 s 254 s

ハードウェア乗算 35 40 4.0 s 16.0 s 40 s

2013 Microchip Technology Inc. DS39762F_JP - p.127

Page 128: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

例 9-3 に、16 x 16 符号なし乗算のシーケンスを示します。式 9-1 に、適用されるアルゴリズムを示します。32 ビットの演算結果は 4 つのレジスタ (RES3:RES0)に格納されます。

式 9-1: 16 x 16符号なし乗算のアルゴリズム

例 9-3: 16 x 16 符号なし乗算のルーチン

例 9-4 に、16 x 16 符号付き乗算のシーケンスを示します。式 9-2 に、適用されるアルゴリズムを示します。32 ビットの演算結果は 4 つのレジスタ (RES3:RES0)に格納されます。引数の符号ビットを適切に処理するために、各引数ペアの 上位ビット (MSb) の値を調べ、必要な減算を実行しています。

式 9-2: 16 x 16符号付き乗算のアルゴリズム

例 9-4: 16 x 16 符号付き乗算のルーチン

RES3:RES0 = ARG1H:ARG1L ARG2H:ARG2L= (ARG1H ARG2H 216) +

(ARG1H ARG2L 28) +(ARG1L ARG2H 28) +(ARG1L ARG2L)

MOVF ARG1L, W MULWF ARG2L ; ARG1L * ARG2L->

; PRODH:PRODL MOVFF PRODH, RES1 ; MOVFF PRODL, RES0 ;

; MOVF ARG1H, W MULWF ARG2H ; ARG1H * ARG2H->

; PRODH:PRODL MOVFF PRODH, RES3 ; MOVFF PRODL, RES2 ;

; MOVF ARG1L, W MULWF ARG2H ; ARG1L * ARG2H->

; PRODH:PRODL MOVF PRODL, W ; ADDWF RES1, F ; Add cross MOVF PRODH, W ; products ADDWFC RES2, F ; CLRF WREG ; ADDWFC RES3, F ;

; MOVF ARG1H, W ; MULWF ARG2L ; ARG1H * ARG2L->

; PRODH:PRODL MOVF PRODL, W ; ADDWF RES1, F ; Add cross MOVF PRODH, W ; products ADDWFC RES2, F ; CLRF WREG ; ADDWFC RES3, F ;

RES3:RES0= ARG1H:ARG1L ARG2H:ARG2L= (ARG1H ARG2H 216) +

(ARG1H ARG2L 28) +(ARG1L ARG2H 28) +(ARG1L ARG2L) +(-1 ARG2H<7> ARG1H:ARG1L 216) +(-1 ARG1H<7> ARG2H:ARG2L 216)

MOVF ARG1L, W MULWF ARG2L ; ARG1L * ARG2L ->

; PRODH:PRODL MOVFF PRODH, RES1 ; MOVFF PRODL, RES0 ;

; MOVF ARG1H, W MULWF ARG2H ; ARG1H * ARG2H ->

; PRODH:PRODL MOVFF PRODH, RES3 ; MOVFF PRODL, RES2 ;

; MOVF ARG1L, W MULWF ARG2H ; ARG1L * ARG2H ->

; PRODH:PRODL MOVF PRODL, W ; ADDWF RES1, F ; Add cross MOVF PRODH, W ; products ADDWFC RES2, F ; CLRF WREG ; ADDWFC RES3, F ;

; MOVF ARG1H, W ; MULWF ARG2L ; ARG1H * ARG2L ->

; PRODH:PRODL MOVF PRODL, W ; ADDWF RES1, F ; Add cross MOVF PRODH, W ; products ADDWFC RES2, F ; CLRF WREG ; ADDWFC RES3, F ;

; BTFSS ARG2H, 7 ; ARG2H:ARG2L neg? BRA SIGN_ARG1 ; no, check ARG1 MOVF ARG1L, W ; SUBWF RES2 ; MOVF ARG1H, W ; SUBWFB RES3

; SIGN_ARG1

BTFSS ARG1H, 7 ; ARG1H:ARG1L neg? BRA CONT_CODE ; no, done MOVF ARG2L, W ; SUBWF RES2 ; MOVF ARG2H, W ; SUBWFB RES3

; CONT_CODE :

DS39762F_JP - p.128 2013 Microchip Technology Inc.

Page 129: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

10.0 割り込み

PIC18F97J60ファミリに含まれるデバイスには複数の割り込み要因があり、そのほとんどに高 / 低優先度を設定できます。高優先度割り込みのベクタは 0008h、低優先度割り込みのベクタは 0018h です。高優先度の割り込みイベントは、全ての低優先度割り込みに、それらが処理中であっても割り込む事ができます。

割り込み動作の制御には、以下に示す 13 個のレジスタを使います。

• RCON

• INTCON

• INTCON2

• INTCON3

• PIR1、PIR2、PIR3

• PIE1、PIE2、PIE3

• IPR1、IPR2、IPR3

これらのレジスタ内のビットに対応するシンボル名を使うために、MPLAB® IDE に付属するマイクロチップ社のヘッダファイルの使用を推奨します。このヘッダファイルによって、アセンブラまたはコンパイラは指定されたレジスタ内のこれらのビット位置を自動的に処理できます。

通常、各割り込み要因には、その動作を制御する以下の 3 つのビットが実装されています。

• フラグビット : 割り込みイベントが発生した事を示します。

• イネーブルビット : フラグビットがセットされた場合、実行中のプログラムが割り込みベクタアドレスに分岐する事を許可します。

• 優先度ビット : 割り込みの高優先度と低優先度を選択します。

割り込みの優先度機能は、IPEN ビット (RCON<7>) をセットすると有効になります。割り込み優先度機能が有効な場合、グローバル割り込みを有効化する 2 つのビットがあります。GIEH ビット (INTCON<7>) をセットすると、優先度ビットがセットされている ( 高優先度 ) 割り込みが全て有効になります。GIEL ビット(INTCON<6>) をセットすると、優先度ビットがクリアされている ( 低優先度 ) 割り込みが全て有効になります。割り込みフラグ、割り込みイネーブルビット、対応するグローバル割り込みイネーブルビットがセットされている場合、割り込みは優先度ビットの設定に応じて、ただちにアドレス 0008h または 0018h に分岐します。各割り込みは、対応するイネーブルビットによって個別に無効にできます。

IPEN ビットがクリアの場合 ( 既定値の状態 )、割り込み優先度機能は無効であり、割り込み動作に関してPIC®ミッドレンジ デバイスと互換です。この互換モードでは、各割り込み要因の割り込み優先度ビットは無視されます。INTCON<6> は周辺機能の全ての割り込み要因を有効 / 無効にする PEIE ビットです。INTCON<7> は全ての割り込み要因を有効 / 無効にする GIE ビットです。互換モードの場合、全ての割り込みはアドレス 0008h に分岐します。

割り込みの処理が開始すると、グローバル割り込みイネーブルビットがクリアされ、以降の割り込みが無効になります。このグローバル割り込みイネーブルビットとは、IPEN ビットがクリアされている場合は GIEビット、割り込み優先度レベルを使う場合はGIEHビットと GIEL ビットのいずれかです。高優先度の割り込み要因は、低優先度の割り込み処理に割り込む事ができます。高優先度の割り込み処理の実行中は、低優先度の割り込みは処理されません。

割り込み処理からのリターンアドレスはスタックにプッシュされ、PCには割り込みベクタアドレス(0008hまたは 0018h) が読み込まれます。割り込みサービスルーチン (ISR) への分岐後に割り込み要因を判断するには、割り込みフラグビットをポーリングします。割り込みが再帰的に繰り返されないように、割り込みを再度有効にする前に、割り込みフラグビットをクリアする必要があります。

「割り込みからの戻り」命令 RETFIE は割り込みルーチンを終了し、割り込みを再度有効にする GIE ビット(優先度レベルを使う場合はGIEHまたはGIEL)をセットします。

INTxピンやPORTBの入力状態変化割り込み等の外部割り込みイベントによる割り込みのレイテンシは 3 ~4 命令サイクルです。このレイテンシは、1 サイクル命令と 2 サイクル命令のどちらでも同じです。各割り込みフラグビットは、対応するイネーブルビットまたは GIE ビットの状態に関わらずセットされます。

Note: 割り込み有効時、割り込み制御レジスタをMOVFF 命令で変更してはいけません。マイクロコントローラの挙動が不安定になる場合があります。

2013 Microchip Technology Inc. DS39762F_JP - p.129

Page 130: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 10-1: PIC18F97J60 ファミリ 割り込みロジック

TMR0IE

GIE/GIEH

PEIE/GIEL

Wake-up if in

Interrupt to CPUVector to Location0008h

INT2IFINT2IEINT2IP

INT1IFINT1IEINT1IP

TMR0IFTMR0IETMR0IP

RBIFRBIERBIP

IPEN

TMR0IF

TMR0IP

INT1IFINT1IEINT1IPINT2IFINT2IEINT2IP

RBIFRBIERBIP

INT0IF

INT0IE

PEIE/GIEL

Interrupt to CPUVector to Location

IPEN

IPEN

0018h

PIR1<7:0>PIE1<7:0>IPR1<7:0>

High-Priority Interrupt Generation

Low-Priority Interrupt Generation

Idle or Sleep modes

GIE/GIEH

INT3IFINT3IEINT3IP

INT3IFINT3IEINT3IP

PIR2<7:5,3,1:0>PIE2<7:5,3,1:0>IPR2<7:5,3,1:0>

PIR3<7:0>PIE3<7:0>IPR3<7:0>

PIR1<7:0>PIE1<7:0>IPR1<7:0>

PIR2<7:5,3,1:0>PIE2<7:5,3,1:0>IPR2<7:5,3,1:0>

PIR3<7:0>PIE3<7:0>IPR3<7:0>

IPEN

DS39762F_JP - p.130 2013 Microchip Technology Inc.

Page 131: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2013 Microchip Technology Inc. DS39762F_JP - p.131

10.1 INTCON レジスタ

INTCON は、各種割り込みの有効化、優先度、フラグビットを格納する読み書き可能なレジスタです。

Note: 割り込み条件が発生すると、対応するイネーブルビットまたはグローバル割り込みイネーブルビットの状態に関わらず、各割り込みのフラグビットがセットされます。ユーザ ソフトウェアは、割り込みを有効にする前に、対応する割り込みフラグビットを確実にクリアしておく必要があります。上記の機能によって、ソフトウェア ポーリングが可能になります。

レジスタ 10-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(1)

bit 7 bit 0

凡例 :

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

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

bit 7 GIE/GIEH: グローバル割り込みイネーブルビット

IPEN = 0の場合 : 1 = マスクされていない全ての割り込みを有効にする0 = 全ての割り込みを無効にする

IPEN = 1の場合 : 1 = 全ての高優先度割り込みを有効にする 0 = 全ての割り込みを無効にする

bit 6 PEIE/GIEL: 周辺割り込みイネーブルビット

IPEN = 0の場合 : 1 = マスクされていない全ての周辺割り込みを有効にする 0 = 全ての周辺割り込みを無効にする

IPEN = 1の場合 : 1 = 全ての低優先度周辺割り込みを有効にする 0 = 全ての低優先度周辺割り込みを無効にする

bit 5 TMR0IE: TMR0 オーバーフロー割り込みイネーブルビット

1 = TMR0 オーバーフロー割り込みを有効にする 0 = TMR0 オーバーフロー割り込みを無効にする

bit 4 INT0IE: INT0 外部割り込みイネーブルビット

1 = INT0 外部割り込みを有効にする 0 = INT0 外部割り込みを無効にする

bit 3 RBIE: RB ポート状態変化割り込みイネーブルビット

1 = RB ポートの状態変化割り込みを有効にする 0 = RB ポートの状態変化割り込みを無効にする

bit 2 TMR0IF: TMR0 オーバーフロー割り込みフラグビット

1 = TMR0 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 ) 0 = TMR0 レジスタはオーバーフローしていない

bit 1 INT0IF: INT0 外部割り込みフラグビット

1 = INT0 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT0 外部割り込みは発生していない

bit 0 RBIF: RB ポート状態変化割り込みフラグビット (1)

1 = RB<7:4> ピンのいずれか 1 つ以上の状態が変化した ( ソフトウェアによるクリアが必要 ) 0 = RB<7:4> ピンの状態はいずれも変化していない

Note 1: 不一致条件が続く限り、このビットはセットされたままです。PORTB を読み出す事で不一致条件が終了し、ビットをクリアできるようになります。

Page 132: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 10-2: INTCON2: 割り込み制御レジスタ 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

RBPU INTEDG0 INTEDG1 INTEDG2 INTEDG3 TMR0IP INT3IP RBIP

bit 7 bit 0

凡例 :

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

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

bit 7 RBPU: PORTB プルアップ イネーブルビット

1 = 全ての PORTB プルアップを無効にする 0 = 各ポートラッチの値に応じて PORTB プルアップを有効にする

bit 6 INTEDG0: 外部割り込み 0 エッジ選択ビット

1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み

bit 5 INTEDG1: 外部割り込み 1 エッジ選択ビット

1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み

bit 4 INTEDG2: 外部割り込み 2 エッジ選択ビット

1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み

bit 3 INTEDG3: 外部割り込み 3 エッジ選択ビット

1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み

bit 2 TMR0IP: TMR0 オーバーフロー割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 1 INT3IP: INT3 外部割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 0 RBIP: RB ポート状態変化割り込み優先度ビット

1 = 高優先度 0 = 低優先度

Note: 割り込み条件が発生すると、対応するイネーブルビットまたはグローバル割り込みイネーブルビットの状態に関わらず、各割り込みのフラグビットがセットされます。ユーザ ソフトウェアは、割り込みを有効にする前に、対応する割り込みフラグビットを確実にクリアしておく必要があります。上記の機能によって、ソフトウェア ポーリングが可能になります。

DS39762F_JP - p.132 2013 Microchip Technology Inc.

Page 133: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 10-3: INTCON3: 割り込み制御レジスタ 3

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

INT2IP INT1IP INT3IE INT2IE INT1IE INT3IF INT2IF INT1IF

bit 7 bit 0

凡例 :

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

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

bit 7 INT2IP: INT2 外部割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 6 INT1IP: INT1 外部割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 5 INT3IE: INT3 外部割り込みイネーブルビット

1 = INT3 外部割り込みを有効にする 0 = INT3 外部割り込みを無効にする

bit 4 INT2IE: INT2 外部割り込みイネーブルビット

1 = INT2 外部割り込みを有効にする 0 = INT2 外部割り込みを無効にする

bit 3 INT1IE: INT1 外部割り込みイネーブルビット

1 = INT1 外部割り込みを有効にする 0 = INT1 外部割り込みを無効にする

bit 2 INT3IF: INT3 外部割り込みフラグビット

1 = INT3 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT3 外部割り込みは発生していない

bit 1 INT2IF: INT2 外部割り込みフラグビット

1 = INT2 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT2 外部割り込みは発生していない

bit 0 INT1IF: INT1 外部割り込みフラグビット

1 = INT1 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT1 外部割り込みは発生していない

Note: 割り込み条件が発生すると、対応するイネーブルビットまたはグローバル割り込みイネーブルビットの状態に関わらず、各割り込みのフラグビットがセットされます。ユーザ ソフトウェアは、割り込みを有効にする前に、対応する割り込みフラグビットを確実にクリアしておく必要があります。上記の機能によって、ソフトウェア ポーリングが可能になります。

2013 Microchip Technology Inc. DS39762F_JP - p.133

Page 134: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

10.2 PIR レジスタ

PIR レジスタは、各周辺割り込みに対応するフラグビットを含みます。周辺割り込み要因の数が多いため、周辺割り込み要求 ( フラグ ) レジスタは 3 つ用意されています (PIR1、PIR2、PIR3)。

Note 1: 割り込み条件が発生すると、対応するイネーブルビットまたはグローバル割り込みイネーブルビットGIE (INTCON<7>)の状態に関わらず、各割り込みフラグビットがセットされます。

2: ユーザ ソフトウェアでは、割り込みを有効にする前と、割り込み処理の完了後に、対応する割り込みフラグビットを確実にクリアしてください。

レジスタ 10-4: PIR1: 周辺割り込み要求 ( フラグ ) レジスタ 1

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

PSPIF(1) ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF

bit 7 bit 0

凡例 :

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

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

bit 7 PSPIF: パラレルスレーブ ポート読み書き割り込みフラグビット (1)

1 = 読み出しまたは書き込み動作が実行された ( ソフトウェアによるクリアが必要 ) 0 = 読み書き動作は実行されていない

bit 6 ADIF: A/D コンバータ割り込みフラグビット

1 = A/D 変換が完了した ( ソフトウェアによるクリアが必要 ) 0 = A/D 変換は完了していない

bit 5 RC1IF: EUSART1 受信割り込みフラグビット

1 = EUSART1 受信バッファの RCREG1 がフル (RCREG1 が読み出されるとクリアされる ) 0 = EUSART1 受信バッファがエンプティ

bit 4 TX1IF: EUSART1 送信割り込みフラグビット

1 = EUSART1 送信バッファの TXREG1 がエンプティ (TXREG1 に書き込むとクリアされる ) 0 = EUSART1 送信バッファがフル

bit 3 SSP1IF: MSSP1 割り込みフラグビット

1 = 送信 / 受信が完了した ( ソフトウェアによるクリアが必要 )0 = 送信 / 受信待ち

bit 2 CCP1IF: ECCP1 割り込みフラグビット

キャプチャモード : 1 = TMR1 レジスタのキャプチャが発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1 レジスタのキャプチャは発生していない

コンペアモード : 1 = TMR1 レジスタのコンペア一致が発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1 レジスタのコンペア一致は発生していない

PWM モード : このモードでは未使用

bit 1 TMR2IF: TMR2/PR2 一致割り込みフラグビット

1 = TMR2 と PR2 が一致した ( ソフトウェアによるクリアが必要 )0 = TMR2 と PR2 は一致していない

bit 0 TMR1IF: TMR1 オーバーフロー割り込みフラグビット

1 = TMR1 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 )0 = TMR1 レジスタはオーバーフローしていない

Note 1: 100 ピンデバイスにのみ実装されており、利用できるのはマイクロコントローラ モード時のみです。

DS39762F_JP - p.134 2013 Microchip Technology Inc.

Page 135: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 10-5: PIR2: 周辺割り込み要求 ( フラグ ) レジスタ 2

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

OSCFIF CMIF ETHIF r BCL1IF — TMR3IF CCP2IF

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

bit 7 OSCFIF: オシレータ障害割り込みフラグビット

1 = システム オシレータに障害が発生し、クロック入力を INTRC に変更した ( ソフトウェアによるクリアが必要 )

0 = システムクロックが動作中

bit 6 CMIF: コンパレータ割り込みフラグビット

1 = コンパレータの入力が変化した ( ソフトウェアによるクリアが必要 )0 = コンパレータの入力は変化していない

bit 5 ETHIF: Ethernet モジュール割り込みフラグビット

1 = Ethernet モジュール割り込みイベントが発生した ( 割込み要因は EIR レジスタを参照 )0 = Ethernet 割り込みイベントは発生していない

bit 4 予約済み : 常に「0」

bit 3 BCL1IF: バスコリジョン割り込みフラグビット (MSSP1 モジュール )

1 = バスコリジョンが発生した ( ソフトウェアによるクリアが必要 )0 = バスコリジョンは発生していない

bit 2 未実装 : 「0」として読み出し

bit 1 TMR3IF: TMR3 オーバーフロー割り込みフラグビット

1 = TMR3 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 )0 = TMR3 レジスタはオーバーフローしていない

bit 0 CCP2IF: ECCP2 割り込みフラグビット

キャプチャモード : 1 = TMR1/TMR3 レジスタのキャプチャが発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1/TMR3 レジスタのキャプチャは発生していない

コンペアモード : 1 = TMR1/TMR3 レジスタのコンペア一致が発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1/TMR3 レジスタのコンペア一致は発生していない

PWM モード : このモードでは未使用

2013 Microchip Technology Inc. DS39762F_JP - p.135

Page 136: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 10-6: PIR3: 周辺割り込み要求 ( フラグ ) レジスタ 3

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

SSP2IF(1) BCL2IF(1) RC2IF(2) TX2IF(2) TMR4IF CCP5IF CCP4IF CCP3IF

bit 7 bit 0

凡例 :

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

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

bit 7 SSP2IF: MSSP2 割り込みフラグビット (1)

1 = 送信 / 受信が完了した ( ソフトウェアによるクリアが必要 )0 = 送信 / 受信待ち

bit 6 BCL2IF: バスコリジョン割り込みフラグビット (MSSP2 モジュール )(1)

1 = バスコリジョンが発生した ( ソフトウェアによるクリアが必要 )0 = バスコリジョンは発生していない

bit 5 RC2IF: EUSART2 受信割り込みフラグビット (2)

1 = EUSART2 受信バッファの RCREG2 がフル (RCREG2 が読み出されるとクリアされる ) 0 = EUSART2 受信バッファがエンプティ

bit 4 TX2IF: EUSART2 送信割り込みフラグビット (2)

1 = EUSART2 送信バッファの TXREG2 がエンプティ (TXREG2 に書き込むとクリアされる ) 0 = EUSART2 送信バッファがフル

bit 3 TMR4IF: TMR4/PR4 一致割り込みフラグビット

1 = TMR4 と PR4 が一致した( ソフトウェアによるクリアが必要 ) 0 = TMR4 と PR4 は一致していない

bit 2 CCP5IF: CCP5 割り込みフラグビット キャプチャモード : 1 = TMR1/TMR3 レジスタのキャプチャが発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1/TMR3 レジスタのキャプチャは発生していない コンペアモード : 1 = TMR1/TMR3 レジスタのコンペア一致が発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1/TMR3 レジスタのコンペア一致は発生していない

PWM モード : このモードでは未使用

bit 1 CCP4IF: CCP4 割り込みフラグビット キャプチャモード : 1 = TMR1/TMR3 レジスタのキャプチャが発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1/TMR3 レジスタのキャプチャは発生していない コンペアモード : 1 = TMR1/TMR3 レジスタのコンペア一致が発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1/TMR3 レジスタのコンペア一致は発生していない

PWM モード : このモードでは未使用

bit 0 CCP3IF: ECCP3 割り込みフラグビット キャプチャモード : 1 = TMR1/TMR3 レジスタのキャプチャが発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1/TMR3 レジスタのキャプチャは発生していない コンペアモード : 1 = TMR1/TMR3 レジスタのコンペア一致が発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1/TMR3 レジスタのコンペア一致は発生していない

PWM モード : このモードでは未使用

Note 1: 100 ピンデバイスにのみ実装されています。

2: 80 ピン /100 ピンデバイスにのみ実装されています。

DS39762F_JP - p.136 2013 Microchip Technology Inc.

Page 137: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

10.3 PIE レジスタ

PIE レジスタは、各周辺割り込みに対応するイネーブルビットを含みます。周辺割り込み要因の数が多いため、周辺割り込みイネーブル レジスタは 3 つ用意されています (PIE1、PIE2、PIE3)。IPEN = 0 の場合、これらの周辺割り込みのいずれを有効にする場合もPEIE ビットをセットする必要があります。

レジスタ 10-7: 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 RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE

bit 7 bit 0

凡例 :

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

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

bit 7 PSPIE: パラレルスレーブ ポート読み書き割り込みイネーブルビット (1)

1 = 有効にする0 = 無効にする

bit 6 ADIE: A/D コンバータ割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 5 RC1IE: EUSART1 受信割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 4 TX1IE: EUSART1 送信割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 3 SSP1IE: MSSP1 割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 2 CCP1IE: ECCP1 割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 1 TMR2IE: TMR2/PR2 一致割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 0 TMR1IE: TMR1 オーバーフロー割り込みイネーブルビット

1 = 有効にする0 = 無効にする

Note 1: 100 ピンデバイスにのみ実装されており、利用できるのはマイクロコントローラ モード時のみです。

2013 Microchip Technology Inc. DS39762F_JP - p.137

Page 138: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 10-8: PIE2: 周辺割り込みイネーブル レジスタ 2

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

OSCFIE CMIE ETHIE r BCL1IE — TMR3IE CCP2IE

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

bit 7 OSCFIE: オシレータ障害割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 6 CMIE: コンパレータ割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 5 ETHIE: Ethernet モジュール割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 4 予約済み : 常に「0」

bit 3 BCL1IE: バスコリジョン割り込みイネーブルビット (MSSP1 モジュール )

1 = 有効にする0 = 無効にする

bit 2 未実装 : 「0」として読み出し

bit 1 TMR3IE: TMR3 オーバーフロー割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 0 CCP2IE: ECCP2 割り込みイネーブルビット

1 = 有効にする0 = 無効にする

DS39762F_JP - p.138 2013 Microchip Technology Inc.

Page 139: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 10-9: PIE3: 周辺割り込みイネーブル レジスタ 3

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

SSP2IE(1) BCL2IE(1) RC2IE(2) TX2IE(2) TMR4IE CCP5IE CCP4IE CCP3IE

bit 7 bit 0

凡例 :

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

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

bit 7 SSP2IE: MSSP2 割り込みイネーブルビット (1)

1 = 有効にする0 = 無効にする

bit 6 BCL2IE: バスコリジョン割り込みイネーブルビット (MSSP2 モジュール )(1)

1 = 有効にする0 = 無効にする

bit 5 RC2IE: EUSART2 受信割り込みイネーブルビット (2)

1 = 有効にする0 = 無効にする

bit 4 TX2IE: EUSART2 送信割り込みイネーブルビット (2)

1 = 有効にする0 = 無効にする

bit 3 TMR4IE: TMR4/PR4 一致割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 2 CCP5IE: CCP5 割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 1 CCP4IE: CCP4 割り込みイネーブルビット

1 = 有効にする0 = 無効にする

bit 0 CCP3IE: ECCP3 割り込みイネーブルビット

1 = 有効にする0 = 無効にする

Note 1: 100 ピンデバイスにのみ実装されています。

2: 80 ピン /100 ピンデバイスにのみ実装されています。

2013 Microchip Technology Inc. DS39762F_JP - p.139

Page 140: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

10.4 IPR レジスタ

IPR レジスタは、各周辺割り込みに対応する優先度ビットを含みます。周辺割り込み要因の数が多いため、周辺割り込み優先度レジスタは 3 つ用意されています(IPR1、IPR2、IPR3)。優先度ビットを使うには割り込み優先度イネーブルビット(IPEN)をセットする必要があります。

レジスタ 10-10: IPR1: 周辺割り込み優先度レジスタ 1

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

PSPIP(1) ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP

bit 7 bit 0

凡例 :

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

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

bit 7 PSPIP: パラレルスレーブ ポート読み書き割り込み優先度ビット (1)

1 = 高優先度 0 = 低優先度

bit 6 ADIP: A/D コンバータ割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 5 RC1IP: EUSART1 受信割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 4 TX1IP: EUSART1 送信割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 3 SSP1IP: MSSP1 割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 2 CCP1IP: ECCP1 割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 1 TMR2IP: TMR2/PR2 一致割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 0 TMR1IP: TMR1 オーバーフロー割り込み優先度ビット

1 = 高優先度 0 = 低優先度

Note 1: 100 ピンデバイスにのみ実装されており、利用できるのはマイクロコントローラ モード時のみです。

DS39762F_JP - p.140 2013 Microchip Technology Inc.

Page 141: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 10-11: IPR2: 周辺割り込み優先度レジスタ 2

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

OSCFIP CMIP ETHIP r BCL1IP — TMR3IP CCP2IP

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

bit 7 OSCFIP: オシレータ障害割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 6 CMIP: コンパレータ割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 5 ETHIP: Ethernet モジュール割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 4 予約済み : 常に「1」

bit 3 BCL1IP: バスコリジョン割り込み優先度ビット (MSSP1 モジュール )

1 = 高優先度0 = 低優先度

bit 2 未実装 : 「0」として読み出し

bit 1 TMR3IP: TMR3 オーバーフロー割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 0 CCP2IP: ECCP2 割り込み優先度ビット

1 = 高優先度0 = 低優先度

2013 Microchip Technology Inc. DS39762F_JP - p.141

Page 142: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 10-12: IPR3: 周辺割り込み優先度レジスタ 3

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

SSP2IP(1) BCL2IP(1) RC2IP(2) TX2IP(2) TMR4IP CCP5IP CCP4IP CCP3IP

bit 7 bit 0

凡例 :

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

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

bit 7 SSP2IP: MSSP2 割り込み優先度ビット (1)

1 = 高優先度0 = 低優先度

bit 6 BCL2IP: バスコリジョン割り込み優先度ビット (MSSP2 モジュール )(1)

1 = 高優先度0 = 低優先度

bit 5 RC2IP: EUSART2 受信割り込み優先度ビット (2)

1 = 高優先度0 = 低優先度

bit 4 TX2IP: EUSART2 送信割り込み優先度ビット (2)

1 = 高優先度 0 = 低優先度

bit 3 TMR4IE: TMR4/PR4 割り込み優先度ビット

1 = 高優先度0 = 低優先度

bit 2 CCP5IP: CCP5 割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 1 CCP4IP: CCP4 割り込み優先度ビット

1 = 高優先度 0 = 低優先度

bit 0 CCP3IP: ECCP3 割り込み優先度ビット

1 = 高優先度 0 = 低優先度

Note 1: 100 ピンデバイスにのみ実装されています。

2: 80 ピン /100 ピンデバイスにのみ実装されています。

DS39762F_JP - p.142 2013 Microchip Technology Inc.

Page 143: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

10.5 RCON レジスタ

RCON レジスタは、直近のリセット、またはアイドル /スリープからの復帰の原因を判断するために使うビットを含みます。さらに、割り込み優先度機能を有効にする IPEN ビットも含みます。

レジスタ 10-13: RCON: リセット制御レジスタ

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

IPEN — CM RI TO PD POR BOR

bit 7 bit 0

凡例 :

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

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

bit 7 IPEN: 割り込み優先度イネーブルビット

1 = 割り込みに対する優先度レベルの設定を有効にする0 = 割り込みに対する優先度レベルの設定を無効にする (PIC16CXXX 互換モード )

bit 6 未実装 : 「0」として読み出し

bit 5 CM: コンフィグレーション不一致フラグビット

ビット動作の詳細は、レジスタ 5-1 を参照してください。

bit 4 RI: RESET命令フラグビット

ビット動作の詳細は、レジスタ 5-1 を参照してください。

bit 3 TO: ウォッチドッグ タイマ タイムアウト フラグビット

ビット動作の詳細は、レジスタ 5-1 を参照してください。

bit 2 PD: パワーダウン検出フラグビット

ビット動作の詳細は、レジスタ 5-1 を参照してください。

bit 1 POR: パワーオン リセット ステータスビット (2)

ビット動作の詳細は、レジスタ 5-1 を参照してください。

bit 0 BOR: ブラウンアウト リセット ステータスビット

ビット動作の詳細は、レジスタ 5-1 を参照してください。

2013 Microchip Technology Inc. DS39762F_JP - p.143

Page 144: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

10.6 INTx ピン割り込み

RB0/INT0/FLT0、RB1/INT1、RB2/INT2、RB3/INT3 ピンの外部割り込みはエッジトリガ方式です。INTCON2レジスタの対応する INTEDGx ビットがセットされている場合 (= 1)、割り込みは立ち上がりエッジでトリガされます。クリアされている場合、立ち下がりエッジでトリガされます。RBx/INTx ピンで有効なエッジが発生すると、対応するフラグビット INTxIF がセットされます。この割り込みは、対応するイネーブルビットINTxIE をクリアする事で無効にできます。フラグビットの INTxIF は、再度この割り込みを有効にする前に、ソフトウェアの割り込みサービスルーチン (ISR) 内でクリアしておく必要があります。

全ての外部割り込み (INT0、INT1、INT2、INT3) は、電力管理モードからプロセッサを復帰させる事ができます。ただし、電力管理モードに移行する前に INTxIEをセットしておいた場合に限ります。グローバル割り込みイネーブルビット GIE をセットすると、プロセッサは復帰後に割り込みベクタに分岐します。

INT1、INT2、INT3 の割り込み優先度は、割り込み優先度ビットINT1IP (INTCON3<6>)、INT2IP (INTCON3<7>)、INT3IP (INTCON2<1>) に設定された値によって決まります。INT0 に対応する優先度ビットはありません。INT0 は常に高優先度の割り込み要因として処理されます。

10.7 TMR0 割り込み

8ビットモードの場合 (既定値 )、TMR0レジスタでオーバーフローが発生すると (FFh 00h)、フラグビットTMR0IF がセットされます。16 ビットモードの場合、TMR0H:TMR0L レジスタペアでオーバーフローが発生すると(FFFFh 0000h)、フラグビットTMR0IFがセットされます。これらの割り込みは、イネーブルビットTMR0IE (INTCON<5>) をセット / クリアする事によって有効 / 無効にできます。Timer0 の割り込み優先度は、割り込み優先度ビット TMR0IP (INTCON2<2>) の値によって決まります。Timer0 モジュールの詳細は、セクション 12.0「Timer0モジュール」を参照してください。

10.8 PORTB 状態変化割り込み

PORTB<7:4> への入力の状態が変化すると、フラグビット RBIF (INTCON<0>) がセットされます。この割り込みは、イネーブルビット RBIE (INTCON<3>) をセット / クリアする事によって有効 / 無効にできます。PORTB 状態変化割り込みの優先度は、割り込み優先度ビット RBIP (INTCON2<0>) の値によって決まります。

10.9 割り込み処理中のコンテキスト保存

割り込みの処理中、PC のリターンアドレスはスタックに保存されます。さらに、WREG、STATUS、BSRレジスタの値が高速リターンスタック(FSR)に保存されます。割り込みからの高速リターンを使わない場合( セクション 6.3「データメモリの構成」参照 )、ユーザが割り込みサービスルーチンの入り口で WREG、STATUS、BSR レジスタの値を保存する必要がある場合があります。ユーザ アプリケーションによっては、その他のレジスタ値の保存も必要になる場合があります。例 10-1 では、割り込みサービスルーチン内でWREG、STATUS、BSR レジスタの値を保存および復元しています。

例 10-1: STATUS、WREG、BSR レジスタ値の RAM への保存

MOVWF W_TEMP ; W_TEMP is in virtual bankMOVFF STATUS, STATUS_TEMP ; STATUS_TEMP located anywhereMOVFF BSR, BSR_TEMP ; BSR_TMEP located anywhere;; USER ISR CODE;MOVFF BSR_TEMP, BSR ; Restore BSRMOVF W_TEMP, W ; Restore WREGMOVFF STATUS_TEMP, STATUS ; Restore STATUS

DS39762F_JP - p.144 2013 Microchip Technology Inc.

Page 145: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.0 I/O ポート

選択したデバイスと有効化した機能に応じて、 大 9つのポートを使えます。I/O ポートピンの一部は代替機能と多重化されており、デバイスの周辺機能を割り当てる事ができます。通常、周辺機能を有効にしている時には、そのピンを汎用 I/O ピンとして使う事はできません。

各ポートの動作には以下の3個のレジスタを使います。

• TRIS レジスタ ( データ方向レジスタ )

• PORT レジスタ ( デバイスピンのレベル読み取り )

• LAT レジスタ ( 出力ラッチレジスタ )

出力ラッチ (LAT レジスタ ) は、I/O ピンが駆動している値の Read-Modify-Write 動作に便利です。

図 11-1に、他の周辺機能へのインターフェイスを省略した、汎用 I/O ポートの簡易モデルを示します。

図 11-1: 汎用 I/O ポートの動作

11.1 I/O ポートピンの機能

アプリケーションを開発する際は、ポートピンの能力を考慮する必要があります。ピンの中には、他のピンよりも出力駆動力が大きいものがあります。同様に、VDD よりも高い入力レベルが許容されるピンもあります。

11.1.1 ピンの出力駆動

各種アプリケーションのニーズを満たすため、出力ピンの駆動力はピンのグループごとに異なります。PORTB と PORTC は、LED 等のより大きな負荷を駆動できるように設計されています。外部メモリ インターフェイス ポート (PORTD、PORTE、PORTJ) は、中程度の負荷を駆動できるように設計されています。その他のポートは小さな負荷、通常は表示のみを目的として設計されています。表 11-1 に、出力駆動力の一覧を示します。詳細は、セクション 28.0「電気的特性」を参照してください。

表 11-1: 出力駆動レベル

DataBus

WR LAT

WR TRIS

RD PORT

Data Latch

TRIS Latch

RD TRIS

InputBuffer

I/O Pin

QD

CK

QD

CK

EN

Q D

EN

RD LAT

or PORT

ポート 駆動力 説明

PORTA(1)小 表示向け

PORTF(2)

PORTG(2)

PORTH(3)

PORTD(2)中程度 表示だけでなく外部メモリ

とのインターフェイスに十分なレベル

PORTE

PORTJ(3)

PORTB 大 LED の直接駆動に適したレベルPORTC

Note 1: RA<1:0> は例外です。これらのピンは LEDを直接駆動できます。

2: 64 ピン /80 ピンデバイスには一部だけ実装されています。100 ピンデバイスには全て実装されています。

3: 64 ピンデバイスには実装されていません。

2013 Microchip Technology Inc. DS39762F_JP - p.145

Page 146: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.1.2 入力ピンと電圧に関する注意事項

デバイスの入力として使うピンの許容電圧は、そのピンの入力機能によって異なります。デジタル入力専用ピンは、デジタルロジック回路で一般的な DC5.5 V まで対応できます。これに対して、アナログ入力機能も備えたピンは VDD までしか対応できません。これらのピンには VDD を超える電圧を印加しないでください。表 11-2 に入力電圧耐性の一覧を示します。詳細は、セクション 28.0「電気的特性」を参照してください。

表 11-2: 入力電圧レベル

11.2 PORTA、TRISA、LATA レジスタ

PORTA は 6 ビット幅の双方向ポートで、全デバイスが全てのピンを実装しています。対応するデータ方向レジスタは TRISA です。TRISA ビットをセットする(= 1) と、対応する PORTA ピンが入力になります ( すなわち、対応する出力ドライバがハイインピーダンスモードに移行します )。TRISA ビットをクリアする (= 0)と、対応するPORTAピンが出力になります (すなわち、出力ラッチの内容が選択したピンに出力されます )。

PORTAレジスタを読み出すとピンの状態が出力され、PORTA レジスタに書き込むとポートラッチにデータが格納されます。

出力ラッチレジスタ (LATA) は、メモリにもマッピングされています。LATA レジスタに対する Read-Modify-Write動作は、PORTA にラッチされた出力値を読み出して書き戻します。

RA4 ピンは Timer0 モジュールのクロック入力と多重化されていて、RA4/T0CKI ピンとして機能します。その他の PORTA ピンは、アナログ入力 VREF+、VREF-と多重化されています。RA<5:0> ピンの A/D コンバータ入力としての動作を選択するには、ADCON1 レジスタの PCFG<3:0> 制御ビットをクリアまたはセットします。

RA4/T0CKI ピンはシュミットトリガ入力です。その他の PORTA ピンは全て入力レベルは TTL、出力はフルCMOS ドライバです。

PORTA ピンをアナログ入力として使う場合も、TRISAレジスタがポートピンの方向を制御します。これらのピンをアナログ入力として使う際は、必ず TRISA レジスタのビットをセットしたままにしてください。

RA0 ピンと RA1 ピンは、2 つの Ethernet LED インジケータ用の出力としても設定できます。そのように設定した場合に PORTA ピンの中で大きな出力駆動力を持つのは、これら 2 つのピンだけです。

ポートの幅は 6 ビットしかありませんが、RJPU として PORTA<7> が実装されています。これは PORTJ の弱プルアップ制御ビットです。同様に、LATA<7:6> ビットも実装されています。これらもラッチビットではなく、PORTDとPORTEのプルアップ制御ビットのRDPUと REPU です。これらのビットをセットすると、対応するポートの弱プルアップが有効になります。TRISA<7:6> ビットに対応するポートピンは使われないため、未実装です。

例 11-1: PORTA の初期化

ポートまたはピン入力電圧耐性

説明

PORTA<5,3:0> VDD ≦ VDD

PORTF<6:1>(1)

PORTH<7:4>(2)

PORTA<4> 5.5 V VDD を超える電圧に対応。ほとんどの標準デジタルロジックに対応

PORTB<7:0>

PORTC<7:0>

PORTD<7:0>(1)

PORTE<7:0>

PORTF<7>

PORTG<7:0>(1)

PORTH<3:0>(2)

PORTJ<7:0>(2)

Note 1: 64 ピン /80 ピンデバイスには一部だけ実装されています。100 ピンデバイスには全てが実装されています。

2: 64 ピンデバイスでは使えません。

Note: RA5 と RA<3:0> は、全てのリセットでアナログ入力に設定され、「0」として読み出されます。RA4 はデジタル入力に設定されます。

CLRF PORTA ; Initialize PORTA by; clearing output; data latches

CLRF LATA ; Alternate method; to clear output; data latches

MOVLW 07h ; Configure A/D MOVWF ADCON1 ; for digital inputsMOVWF 07h ; Configure comparatorsMOVWF CMCON ; for digital inputMOVLW 0CFh ; Value used to

; initialize data ; direction

MOVWF TRISA ; Set RA<3:0> as inputs; RA<5:4> as outputs

DS39762F_JP - p.146 2013 Microchip Technology Inc.

Page 147: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-3: PORTA の機能

表 11-4: PORTA に関連するレジスタのまとめ

ピン名 機能TRIS の

設定I/O

I/Oタイプ

説明

RA0/LEDA/AN0 RA0 0 O DIG LATA<0> のデータ出力です。アナログ入力の影響は受けません。

1 I TTL PORTA<0> のデータ入力です。アナログ入力を有効にした場合、無

効になります。

LEDA 0 O DIG Ethernet LEDA の出力です。デジタルデータよりも優先されます。

AN0 1 I ANA A/D 入力チャンネル 0 です。POR 時の既定値入力設定です。デジタ

ル出力には影響を与えません。

RA1/LEDB/AN1 RA1 0 O DIG LATA<1> のデータ出力です。アナログ入力の影響は受けません。

1 I TTL PORTA<1> のデータ入力です。アナログ入力を有効にした場合、無

効になります。

LEDB 0 O DIG Ethernet LEDB の出力です。デジタルデータよりも優先されます。

AN1 1 I ANA A/D 入力チャンネル 1 です。POR 時の既定値入力設定です。デジタ

ル出力には影響を与えません。

RA2/AN2/VREF- RA2 0 O DIG LATA<2> のデータ出力です。アナログ入力の影響は受けません。

CVREF 出力を有効にした場合、無効になります。

1 I TTL PORTA<2> のデータ入力です。アナログ機能を有効にした場合、無

効になります。CVREF 出力を有効にした場合、無効になります。

AN2 1 I ANA A/D 入力チャンネル 2 とコンパレータ C2+ 入力です。POR 時の既定

値入力設定です。アナログ出力の影響は受けません。

VREF- 1 I ANA A/D とコンパレータの Low 側参照電圧入力です。

RA3/AN3/VREF+ RA3 0 O DIG LATA<3> のデータ出力です。アナログ入力の影響は受けません。

1 I TTL PORTA<3> のデータ入力です。アナログ入力を有効にした場合、無

効になります。

AN3 1 I ANA A/D 入力チャンネル 3 です。POR 時の既定値入力設定です。

VREF+ 1 I ANA A/D の High 側参照電圧入力です。

RA4/T0CKI RA4 0 O DIG LATA<4> のデータ出力です。

1 I ST PORTA<4> のデータ入力です。POR 時の既定値設定です。

T0CKI x I ST Timer0 クロック入力です。

RA5/AN4 RA5 0 O DIG LATA<5> のデータ出力です。アナログ入力の影響は受けません。

1 I TTL PORTA<5> のデータ入力です。アナログ入力を有効にした場合、無

効になります。

AN4 1 I ANA A/D 入力チャンネル 4 です。POR 時の既定値設定です。

凡例 : O = 出力、I = 入力、ANA = アナログ信号、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、

TTL = TTL バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )

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

PORTA RJPU(1) - RA5 RA4 RA3 RA2 RA1 RA0 72

LATA RDPU REPU LATA5 LATA4 LATA3 LATA2 LATA1 LATA0 72

TRISA - - TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 71

ADCON1 - - VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 70

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は PORTA では使いません。

Note 1: 80 ピン /100 ピンデバイスにのみ実装されています。

2013 Microchip Technology Inc. DS39762F_JP - p.147

Page 148: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.3 PORTB、TRISB、LATB レジスタ

PORTB は、8 ビット幅の双方向ポートで、全デバイスに全てのピンが実装されています。対応するデータ方向レジスタは TRISB です。TRISB ビットをセットする(= 1) と、対応する PORTB ピンが入力になります ( すなわち、対応する出力ドライバがハイインピーダンスモードに移行します )。TRISB ビットをクリアする (= 0)と、対応するPORTBピンが出力になります (すなわち、出力ラッチの内容が選択したピンに出力されます )。PORTB の全てのピンはデジタル専用で、 大許容電圧は 5.5 V です。

出力ラッチレジスタ (LATB) は、メモリにもマッピングされています。LATB レジスタに対する Read-Modify-Write動作は、PORTB にラッチされた出力値を読み出して書き戻します。

例 11-2: PORTB の初期化

各 PORTB ピンは内部弱プルアップ機能を備えています。1 つの制御ビットで全てのプルアップを有効にできます。それには RBPU (INTCON2<7>) ビットをクリアします。ポートピンを出力に設定すると、弱プルアップは自動的に OFF になります。全てのリセットによってプルアップは無効になります。

PORTB ピンのうち 4 つ (RB<7:4>) には、状態変化割り込み機能があります。この割り込みを生成できるのは、入力として設定されているピンだけです ( つまり、出力に設定されている RB<7:4> ピンは、いずれも状態変化割り込みの比較動作から除外されます )。RB<7:4>の入力ピンは、直近の PORTB 読み出しでラッチされた古い値と比較されます。RB<7:4> の「不一致」出力の全てを OR 演算して、RB ポート状態変化割り込みフラグビット RBIF (INTCON<0>) を生成します。

この割り込みによってデバイスを電力管理モードから復帰させる事ができます。割り込みサービスルーチン内で、以下の方法で割り込みをクリアします。

a) PORTB に対する任意の読み書き動作 (MOVFF(ANY), PORTB命令による場合を除く )。これにより、不一致条件は解除される

b) フラグビット RBIF のクリア

不一致条件が続く場合、RBIF ビットもセットされたままです。PORTB を読み出すと不一致条件が終了し、フラグビットのRBIFをクリアできるようになります。

状態変化割り込みは、キー押下操作による復帰と、PORTB を状態変化割り込み機能のみに使う場合に推奨します。状態変化割り込み機能使用中の PORTB に対するポーリングは推奨しません。

拡張マイクロコントローラ モードで動作中の100ピンデバイスの場合、CCP2MXコンフィグレーション ビットをクリアする事で、RB3 を ECCP2 モジュールと拡張 PWM 出力 2A の代替周辺機能ピンに設定できます。デバイスがマイクロコントローラ モードで動作している場合、ECCP2 の代替割り当ては RE7 です。他のECCP2 設定と同様、目的とする動作に合わせてTRISB<3> ビットを適切に設定する必要があります。

CLRF PORTB ; Initialize PORTB by; clearing output; data latches

CLRF LATB ; Alternate method; to clear output; data latches

MOVLW 0CFh ; Value used to; initialize data ; direction

MOVWF TRISB ; Set RB<3:0> as inputs; RB<5:4> as outputs; RB<7:6> as inputs

DS39762F_JP - p.148 2013 Microchip Technology Inc.

Page 149: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-5: PORTB の機能

ピン名 機能TRIS の

設定I/O

I/Oタイプ

説明

RB0/INT0/FLT0 RB0 0 O DIG LATB<0> のデータ出力です。

1 I TTL PORTB<0> のデータ入力です。RBPU ビットをクリアした場合、弱プル

アップされます。

INT0 1 I ST 外部割り込み 0 入力です。

FLT0 1 I ST 拡張 PWM フォルト入力 (ECCP1 モジュール ) です。ソフトウェアで有

効にします。

RB1/INT1 RB1 0 O DIG LATB<1> のデータ出力です。

1 I TTL PORTB<1> のデータ入力です。RBPU ビットをクリアした場合、弱プル

アップされます。

INT1 1 I ST 外部割り込み 1 入力です。

RB2/INT2 RB2 0 O DIG LATB<2> のデータ出力です。

1 I TTL PORTB<2> のデータ入力です。RBPU ビットをクリアした場合、弱プル

アップされます。

INT2 1 I ST 外部割り込み 2 入力です。

RB3/INT3/ECCP2/P2A

RB3 0 O DIG LATB<3> のデータ出力です。

1 I TTL PORTB<3> のデータ入力です。RBPU ビットをクリアした場合、弱プル

アップされます。

INT3 1 I ST 外部割り込み 3 入力です。

ECCP2(1) 0 O DIG ECCP2 のコンペア出力と PWM 出力です。ポートデータよりも優先され

ます。

1 I ST ECCP2 キャプチャ入力です。

P2A(1) 0 O DIG ECCP2 拡張 PWM 出力、チャンネル A です。拡張 PWM シャットダウン

時に 3 ステートに設定する事も可能です。ポートデータよりも優先され

ます。

RB4/KBI0 RB4 0 O DIG LATB<4> のデータ出力です。

1 I TTL PORTB<4> のデータ入力です。RBPU ビットをクリアした場合、弱プル

アップされます。

KBI0 1 I TTL ピン状態変化割り込みです。

RB5/KBI1 RB5 0 O DIG LATB<5> のデータ出力です。

1 I TTL PORTB<5> のデータ入力です。RBPU ビットをクリアした場合、弱プル

アップされます。

KBI1 1 I TTL ピン状態変化割り込みです。

RB6/KBI2/PGC RB6 0 O DIG LATB<6> のデータ出力です。

1 I TTL PORTB<6> のデータ入力です。RBPU ビットをクリアした場合、弱プル

アップされます。

KBI2 1 I TTL ピン状態変化割り込みです。

PGC x I ST ICSP™ および ICD 動作時のシリアル実行 (ICSP) クロック入力です (2)。

RB7/KBI3/PGD RB7 0 O DIG LATB<7> のデータ出力です。

1 I TTL PORTB<7> のデータ入力です。RBPU ビットをクリアした場合、弱プル

アップされます。

KBI3 1 I TTL ピン状態変化割り込みです。

PGD x O DIG ICSP および ICD 動作時のシリアル実行データ出力です (2)。

x I ST ICSP および ICD 動作時のシリアル実行データ入力です (2)。

凡例 : O = 出力、I = 入力、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、TTL = TTL バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: CCP2MX コンフィグレーション ビットがクリアされている場合の ECCP2/P2A の代替ピン割り当てです ( 拡張マイク

ロコントローラ モードの 100 ピンデバイスの場合 )。既定値の割り当ては RC1 です。

2: ICSP または ICD を有効にした場合、その他のピン機能は全て無効になります。

2013 Microchip Technology Inc. DS39762F_JP - p.149

Page 150: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-6: PORTB に関連するレジスタのまとめ

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

PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 72

LATB LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0 72

TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 71

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

INTCON2 RBPU INTEDG0 INTEDG1 INTEDG2 INTEDG3 TMR0IP INT3IP RBIP 69

INTCON3 INT2IP INT1IP INT3IE INT2IE INT1IE INT3IF INT2IF INT1IF 69

凡例 : 網掛けの部分は PORTB では使いません。

DS39762F_JP - p.150 2013 Microchip Technology Inc.

Page 151: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.4 PORTC、TRISC、LATC レジスタ

PORTC は、8 ビット幅の双方向ポートで、全デバイスに全てのピンが実装されています。対応するデータ方向レジスタは TRISC です。TRISC ビットをセットする (= 1) と、対応する PORTC ピンが入力になります( すなわち、対応する出力ドライバがハイインピーダンス モードに移行します )。TRISC ビットをクリアする(= 0) と、対応する PORTC ピンが出力になります ( すなわち、出力ラッチの内容が選択したピンに出力されます )。PORTC の RC2 ~ RC7 ピンだけはデジタル専用ピンであり、 大 5.5 V の入力電圧に対応します。

出力ラッチレジスタ (LATC) は、メモリにもマッピングされています。LATCレジスタに対するRead-Modify-Write動作は、PORTC にラッチされた出力値を読み出して書き戻します。

PORTC は複数の周辺機能と多重化されています ( 表11-7)。ピンはシュミットトリガ入力バッファを備えています。通常、RC1 はコンフィグレーション ビットCCP2MX によって ECCP2 モジュールと拡張 PWM 出力 P2A の既定値の周辺機能ピンに設定されます ( 既定値では CCP2MX = 1)。

周辺機能を有効にする場合、各 PORTC ピンの TRISビットの定義に注意してください。周辺機能の中には、TRISビットの設定をオーバーライドしてピンを入力または出力に設定するものがあります。対応する周辺機能のセクションを参照して、TRIS ビットを適切に設定してください。

TRISC レジスタの内容は、周辺機能によるオーバーライドの影響を受けます。周辺機能がピンをオーバーライドしている場合でも、TRISC の読み出し結果はレジスタの格納値です。

例 11-3: PORTC の初期化

Note: これらのピンは、全てのデバイスリセットでデジタル入力に設定されます。

CLRF PORTC ; Initialize PORTC by; clearing output; data latches

CLRF LATC ; Alternate method; to clear output; data latches

MOVLW 0CFh ; Value used to ; initialize data ; direction

MOVWF TRISC ; Set RC<3:0> as inputs; RC<5:4> as outputs; RC<7:6> as inputs

2013 Microchip Technology Inc. DS39762F_JP - p.151

Page 152: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

DS39762F_JP - p.152 2013 Microchip Technology Inc.

表 11-7: PORTC の機能

ピン名 機能TRISの設定

I/OI/O

タイプ説明

RC0/T1OSO/T13CKI

RC0 0 O DIG LATC<0> のデータ出力です。

1 I ST PORTC<0> のデータ入力です。

T1OSO x O ANA Timer1 オシレータ出力です。Timer1 オシレータが有効な場合、有効になります。

デジタル I/O は無効になります。

T13CKI 1 I ST Timer1/Timer3 カウンタ入力です。

RC1/T1OSI/ECCP2/P2A

RC1 0 O DIG LATC<1> のデータ出力です。

1 I ST PORTC<1> のデータ入力です。

T1OSI x I ANA Timer1 オシレータ入力です。Timer1 オシレータが有効な場合、有効になります。

デジタル I/O は無効になります。

ECCP2(1) 0 O DIG ECCP2 のコンペア出力と PWM 出力です。ポートデータよりも優先されます。

1 I ST ECCP2 キャプチャ入力です。

P2A(1) 0 O DIG ECCP2 拡張 PWM 出力、チャンネル A です。拡張 PWM シャットダウン時に 3ステートに設定する事も可能です。ポートデータよりも優先されます。

RC2/ECCP1/P1A

RC2 0 O DIG LATC<2> のデータ出力です。

1 I ST PORTC<2> のデータ入力です。

ECCP1 0 O DIG ECCP1 のコンペア出力と PWM 出力です。ポートデータよりも優先されます。

1 I ST ECCP1 キャプチャ入力です。

P1A 0 O DIG ECCP1 拡張 PWM 出力、チャンネル A です。拡張 PWM シャットダウン時に 3ステートに設定する事も可能です。ポートデータよりも優先されます。

RC3/SCK1/SCL1

RC3 0 O DIG LATC<3> のデータ出力です。

1 I ST PORTC<3> のデータ入力です。

SCK1 0 O DIG SPI クロック出力 (MSSP1 モジュール ) です。ポートデータよりも優先されます。

1 I ST SPI クロック入力 (MSSP1 モジュール ) です。

SCL1 0 O DIG I2C™クロック出力 (MSSP1モジュール )です。ポートデータよりも優先されます。

1 I ST I2C クロック入力 (MSSP1 モジュール ) です。入力タイプはモジュールの設定に

よって決まります。

RC4/SDI1/SDA1

RC4 0 O DIG LATC<4> のデータ出力です。

1 I ST PORTC<4> のデータ入力です。

SDI1 1 I ST SPI データ入力 (MSSP1 モジュール ) です。

SDA1 1 O DIG I2C データ出力 (MSSP1 モジュール ) です。ポートデータよりも優先されます。

1 I ST I2C データ入力 (MSSP1 モジュール ) です。入力タイプはモジュールの設定に

よって決まります。

RC5/SDO1 RC5 0 O DIG LATC<5> のデータ出力です。

1 I ST PORTC<5> のデータ入力です。

SDO1 0 O DIG SPI データ出力 (MSSP1 モジュール ) です。ポートデータよりも優先されます。

RC6/TX1/CK1 RC6 0 O DIG LATC<6> のデータ出力です。

1 I ST PORTC<6> のデータ入力です。

TX1 1 O DIG 同期シリアルデータ出力 (EUSART1 モジュール ) です。ポートデータよりも優先さ

れます。

CK1 1 O DIG 同期シリアルデータ入力 (EUSART1 モジュール ) です。ユーザは入力として設定

する必要があります。

1 I ST 同期シリアルクロック入力 (EUSART1 モジュール ) です。

RC7/RX1/DT1 RC7 0 O DIG LATC<7> のデータ出力です。

1 I ST PORTC<7> のデータ入力です。

RX1 1 I ST 非同期シリアル受信データ入力 (EUSART1 モジュール ) です。

DT1 1 O DIG 同期シリアルデータ出力 (EUSART1 モジュール ) です。ポートデータよりも優先

されます。

1 I ST 同期シリアルデータ入力 (EUSART1 モジュール ) です。ユーザは入力として設定

する必要があります。

凡例 : O = 出力、I = 入力、ANA = アナログ信号、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: CCP2MX コンフィグレーション ビットをセットした場合の ECCP2/P2A の既定値のピン割り当てです。

Page 153: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-8: PORTC に関連するレジスタのまとめ

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

PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 72

LATC LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0 72

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 71

2013 Microchip Technology Inc. DS39762F_JP - p.153

Page 154: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.5 PORTD、TRISD、LATD レジスタ

PORTD は双方向ポートとして、以下の 2 つのビット幅で実装されています。

• 64 ピン /80 ピンデバイス : 3 ビット (RD<2:0>)

• 100 ピンデバイス : 8 ビット (RD<7:0>)

対応するデータ方向レジスタは TRISD です。TRISDビットをセットする (= 1) と、対応する PORTD ピンが入力になります ( すなわち、対応する出力ドライバがハイインピーダンス モードに移行します )。TRISDビットをクリアする (= 0) と、対応する PORTD ピンが出力になります ( すなわち、出力ラッチの内容が選択したピンに出力されます )。PORTD の全てのピンはデジタル専用で、 大許容電圧は 5.5 V です。

出力ラッチレジスタ (LATD) は、メモリにもマッピングされています。LATDレジスタに対するRead-Modify-Write動作は、PORTD にラッチされた出力値を読み出して書き戻します。

PORTDでは、全てのピンにシュミットトリガ入力バッファが実装されています。各ピンは、個別に入力または出力として設定できます。

100 ピンデバイスの場合、PORTD は外部メモリ インターフェイスの一部としてシステムバスと多重化されています。I/O ポートやその他の機能は、EBDIS ビット (MEMCON<7>) をセットして、インターフェイスを無効にした場合にのみ使えます。インターフェイスを有効にした場合の PORTD は、多重化されたアドレス /データバスの下位バイト (AD<7:0>) です。TRISD ビットもオーバーライドされます。

各 PORTD ピンは内部弱プルアップ機能を備えています。1 つの制御ビットで全てのプルアップを有効にできます。それには、RDPU ビット (LATA<7>) をセットします。ポートピンを出力に設定すると、弱プルアップは自動的に OFF になります。全てのデバイスリセットによってプルアップは無効になります。

100 ピンデバイスの PORTD は、PSPMODE 制御ビット (PSPCON<4>) をセットする事で、8 ビット幅のパラレル マイクロプロセッサ ポートとして機能するようにも設定できます。このモードでは、パラレルポート データが他のデジタル I/O よりも優先されます ( 外部メモリ インターフェイスは除く )。パラレルポートが有効な場合の入力バッファは TTL です。詳細はセクション 11.11「パラレルスレーブ ポート (PSP)」を参照してください。

例 11-4: PORTD の初期化

Note: これらのピンは、全てのデバイスリセットでデジタル入力に設定されます。

CLRF PORTD ; Initialize PORTD by ; clearing output ; data latchesCLRF LATD ; Alternate method

; to clear output; data latches

MOVLW 0CFh ; Value used to ; initialize data ; direction

MOVWF TRISD ; Set RD<3:0> as inputs; RD<5:4> as outputs; RD<7:6> as inputs

DS39762F_JP - p.154 2013 Microchip Technology Inc.

Page 155: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2013 Microchip Technology Inc. DS39762F_JP - p.155

表 11-9: PORTD の機能

ピン名 機能TRIS

の設定I/O

I/O

タイプ説明

RD0/AD0/PSP0(RD0/P1B)

RD0 0 O DIG LATD<0> のデータ出力です。

1 I ST PORTD<0> のデータ入力です。RDPU ビットをセットした場合、弱プルアップさ

れます。

AD0(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 0 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 0 の入力です (2)。

PSP0(1) x O DIG PSP読み出しの出力データ (LATD<0>)です。ポートデータよりも優先されます。

x I TTL PSP 書き込みのデータ入力です。

P1B(3) 0 O DIG ECCP1 拡張 PWM 出力、チャンネル B です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

RD1/AD1/PSP1(RD1/ECCP3/P3A)

RD1 0 O DIG LATD<1> のデータ出力です。

1 I ST PORTD<1> のデータ入力です。RDPU ビットをセットした場合、弱プルアップさ

れます。

AD1(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 1 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 1 の入力です (2)。

PSP1(1) x O DIG PSP読み出しの出力データ (LATD<1>)です。ポートデータよりも優先されます。

x I TTL PSP 書き込みのデータ入力です。

ECCP3(3) 0 O DIG ECCP3のコンペアおよびPWM出力です。ポートデータよりも優先されます。

1 I ST ECCP3 キャプチャ入力です。

P3A(3) 0 O DIG ECCP3 拡張 PWM 出力、チャンネル A です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

RD2/AD2/PSP2(RD2/CCP4/P3D)

RD2 0 O DIG LATD<2> のデータ出力です。

1 I ST PORTD<2> のデータ入力です。RDPU ビットをセットした場合、弱プルアップさ

れます。

AD2(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 2 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 2 の入力です (2)。

PSP2(1) x O DIG PSP読み出しの出力データ (LATD<2>)です。ポートデータよりも優先されます。

x I TTL PSP 書き込みのデータ入力です。

CCP4(3) 0 O DIG CCP4のコンペア出力とPWM出力です。ポートデータよりも優先されます。

1 I ST CCP4 キャプチャ入力です。

P3D(3) 0 O DIG ECCP3 拡張 PWM 出力、チャンネル D です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

RD3/AD3/PSP3(1)

RD3(1) 0 O DIG LATD<3> のデータ出力です。

1 I ST PORTD<3> のデータ入力です。RDPU ビットをセットした場合、弱プルアップさ

れます。

AD3(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 3 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 3 の入力です (2)。

PSP3(1) x O DIG PSP読み出しの出力データ (LATD<3>)です。ポートデータよりも優先されます。

x I TTL PSP 書き込みのデータ入力です。

RD4/AD4/PSP4/SDO2(1)

RD4(1) 0 O DIG LATD<4> のデータ出力です。

1 I ST PORTD<4> のデータ入力です。RDPU ビットをセットした場合、弱プルアップさ

れます。

AD4(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 4 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 4 の入力です (2)。

PSP4(1) x O DIG PSP読み出しの出力データ (LATD<4>)です。ポートデータよりも優先されます。

x I TTL PSP 書き込みのデータ入力です。

SDO2(1) 0 O DIG SPIデータ出力 (MSSP2モジュール )です。ポートデータよりも優先されます。

凡例 : O = 出力、I = 入力、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、TTL = TTL バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: これらの機能またはポートピンは 100 ピンデバイスにのみ実装されています。

2: 外部メモリ インターフェイスの I/O は、他の全てのデジタル I/O と PSP I/O よりも優先されます。

3: このピンのこれらの機能は、64 ピンデバイスにのみ実装されています。その他の全てのデバイスでは RE6/RH7 (P1B)、RG0 (ECCP3/P3A)、RG3 (CCP4/P3D) と多重化されています。

Page 156: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-10: PORTD に関連するレジスタのまとめ

RD5/AD5/PSP5/SDI2/SDA2(1)

RD5(1) 0 O DIG LATD<5> のデータ出力です。

1 I ST PORTD<5> のデータ入力です。RDPU ビットをセットした場合、弱プルアップさ

れます。

AD5(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 5 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 5 の入力です (2)。

PSP5(1) x O DIG PSP読み出しの出力データ (LATD<5>)です。ポートデータよりも優先されます。

x I TTL PSP 書き込みのデータ入力です。

SDI2(1) 1 I ST SPI データ入力 (MSSP2 モジュール ) です。

SDA2(1) 1 O DIG I2C™データ出力 (MSSP2モジュール )です。ポートデータよりも優先されます。

1 I ST I2C データ入力 (MSSP2 モジュール ) です。入力タイプはモジュールの設定によっ

て決まります。

RD6/AD6/PSP6/SCK2/SCL2(1)

RD6(1) 0 O DIG LATD<6> のデータ出力です。

1 I ST PORTD<6> のデータ入力です。RDPU ビットをセットした場合、弱プルアップさ

れます。

AD6(1) x O DIG-3 外部メモリ インターフェイスのアドレス / データ Bit 6 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 6 の入力です (2)。

PSP6(1) x O DIG PSP 読み出しの出力データ (LATD<6>) です。ポートデータよりも優先されます。

x I TTL PSP 書き込みのデータ入力です。

SCK2(1) 0 O DIG SPI クロック出力 (MSSP2 モジュール ) です。ポートデータよりも優先されます。

1 I ST SPI クロック入力 (MSSP2 モジュール ) です。

SCL2(1) 0 O DIG I2C クロック出力 (MSSP2 モジュール ) です。ポートデータよりも優先されます。

1 I ST I2C クロック入力 (MSSP2 モジュール ) です。入力タイプはモジュールの設定に

よって決まります。

RD7/AD7/PSP7/SS2(1)

RD7(1) 0 O DIG LATD<7> のデータ出力です。

1 I ST PORTD<7> のデータ入力です。RDPU ビットをセットした場合、弱プルアップさ

れます。

AD7(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 7 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 7 の入力です (2)。

PSP7(1) x O DIG PSP 読み出しの出力データ (LATD<7>) です。ポートデータよりも優先されます。

x I TTL PSP 書き込みのデータ入力です。

SS2(1) x I TTL MSSP2 モジュールのスレーブ選択入力です。

表 11-9: PORTD の機能 ( 続き )

ピン名 機能TRIS

の設定I/O

I/O

タイプ説明

凡例 : O = 出力、I = 入力、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、TTL = TTL バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: これらの機能またはポートピンは 100 ピンデバイスにのみ実装されています。

2: 外部メモリ インターフェイスの I/O は、他の全てのデジタル I/O と PSP I/O よりも優先されます。

3: このピンのこれらの機能は、64 ピンデバイスにのみ実装されています。その他の全てのデバイスでは RE6/RH7 (P1B)、RG0 (ECCP3/P3A)、RG3 (CCP4/P3D) と多重化されています。

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

PORTD RD7(1) RD6(1) RD5(1) RD4(1) RD3(1) RD2 RD1 RD0 72

LATD LATD7(1) LATD6(1) LATD5(1) LATD4(1) LATD3(1) LATD2 LATD1 LATD0 72

TRISD TRISD7(1) TRISD6(1) TRISD5(1) TRISD4(1) TRISD3(1) TRISD2 TRISD1 TRISD0 71

LATA RDPU REPU LATA5 LATA4 LATA3 LATA2 LATA1 LATA0 72

凡例 : 網掛けの部分は PORTD では使いません。

Note 1: 64 ピン /80 ピンデバイスでは未実装であり、「0」として読み出されます。

DS39762F_JP - p.156 2013 Microchip Technology Inc.

Page 157: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.6 PORTE、TRISE、LATE レジスタ

PORTE は双方向ポートとして、以下の 2 つのビット幅で実装されています。

• 64 ピンデバイス : 6 ビット幅 (RE<5:0>)

• 80 ピン /100 ピンデバイス : 8 ビット幅 (RE<7:0>)

対応するデータ方向レジスタは TRISE です。TRISEビットをセットする (= 1) と、対応する PORTE ピンが入力になります ( すなわち、対応する出力ドライバがハイインピーダンス モードに移行します )。TRISEビットをクリアする (= 0) と、対応する PORTE ピンが出力になります ( すなわち、出力ラッチの内容が選択したピンに出力されます )。PORTE の全てのピンはデジタル専用で、 大許容電圧は 5.5 V です。

出力ラッチレジスタ (LATE) は、メモリにもマッピングされています。LATE レジスタに対する Read-Modify-Write動作は、PORTE にラッチされた出力値を読み出して書き戻します。

PORTEでは、全てのピンにシュミットトリガ入力バッファが実装されています。各ピンは、個別に入力または出力として設定できます。

100 ピンデバイスの場合、PORTE は外部メモリ インターフェイスの一部であるシステムバスと多重化されています。I/O ポートやその他の機能は、EBDIS ビット (MEMCON<7>) をセットして、インターフェイスを無効にした場合にのみ使えます。インターフェイスを有効にした場合の PORTE は、多重化されたアドレス /データバスの上位バイト (AD<15:8>)です。TRISEビットもオーバーライドされます。

各 PORTE ピンは内部弱プルアップ機能を備えています。1 つの制御ビットで全てのプルアップを有効にできます。それには、REPU ビット (LATA<6>) をセットします。ポートピンを出力に設定すると、弱プルアップは自動的に OFF になります。全てのデバイスリセットによってプルアップは無効になります。

PORTE は ECCP1 と ECCP3 の拡張 PWM 出力の B とC、ECCP2 の出力 B、C、D とも多重化されています。80 ピン /100 ピンデバイスの場合、これらの既定値の割り当ては PORTE<6:0> です。64 ピンデバイスの場合、これらの既定値の割り当ては PORTE<5:0> とPORTD<0> です。80 ピン /100 ピンデバイスの場合、ECCP1 と ECCP3 の出力の多重化は、ECCPMX コンフィグレーション ビットによって制御されます。このビットをクリアすると、PORTH への P1B/P1C とP3B/P3C 出力が再割り当てされます。

マイクロコントローラ モードで動作中の 80 ピン /100ピンデバイスの場合、ピン RE7 を ECCP2 モジュールと拡張 PWM 出力 2A の代替周辺機能ピンとして設定できます。それには CCP2MX コンフィグレーションビットをクリアします。

PORTD でパラレルスレーブ ポートを有効にしている場合、PORTE の 3 つのピン (RE0、RE1、RE2) はポートのデジタル制御入力に設定されます。表 11-11 に制御機能の一覧を示します。リコンフィグレーションは、PSPMODE制御ビット (PSPCON<4>)がセットされると自動的に実行されます。それでもユーザはこれらのピンがデジタル入力に設定されるように、対応するTRISEビットがセットされている事を確認する必要があります。

例 11-5: PORTE の初期化

Note: これらのピンは、全てのデバイスリセットでデジタル入力に設定されます。

CLRF PORTE ; Initialize PORTE by; clearing output; data latches

CLRF LATE ; Alternate method; to clear output; data latches

MOVLW 03h ; Value used to ; initialize data ; direction

MOVWF TRISE ; Set RE<1:0> as inputs; RE<7:2> as outputs

2013 Microchip Technology Inc. DS39762F_JP - p.157

Page 158: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-11: PORTE の機能

ピン名 機能TRISの設定

I/OI/O

タイプ説明

RE0/AD8/RD/P2D

RE0 0 O DIG LATE<0> のデータ出力です。

1 I ST PORTE<0> のデータ入力です。REPU ビットをセットした場合、弱プ

ルアップされます。

AD8(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 8 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 8 の入力です (2)。

RD(6) 1 I TTL パラレルスレーブ ポート読み出しイネーブル制御入力です。

P2D 0 O DIG ECCP2 拡張 PWM 出力、チャンネル D です。ポートデータと PSPデータよりも優先されます。拡張 PWM シャットダウン時に 3 ステート

に設定する事も可能です。

RE1/AD9/WR/P2C

RE1 0 O DIG LATE<1> のデータ出力です。

1 I ST PORTE<1> のデータ入力です。REPU ビットをセットした場合、弱プ

ルアップされます。

AD9(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 9 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 9 の入力です (2)。

WR(6) 1 I TTL パラレルスレーブ ポート書き込みイネーブル制御入力です。

P2C 0 O DIG ECCP2 拡張 PWM 出力、チャンネル C です。ポートデータと PSPデータよりも優先されます。拡張 PWM シャットダウン時に 3 ステート

に設定する事も可能です。

RE2/AD10/CS/P2B

RE2 0 O DIG LATE<2> のデータ出力です。

1 I ST PORTE<2> のデータ入力です。REPU ビットをセットした場合、弱プ

ルアップされます。

AD10(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 10 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 10 の入力です (2)。

CS(6) 1 I TTL パラレルスレーブ ポート チップセレクト制御入力です。

P2B 0 O DIG ECCP2 拡張 PWM 出力、チャンネル B です。ポートデータと PSPデータよりも優先されます。拡張 PWM シャットダウン時に 3 ステート

に設定する事も可能です。

RE3/AD11/P3C

RE3 0 O DIG LATE<3> のデータ出力です。

1 I ST PORTE<3> のデータ入力です。REPU ビットをセットした場合、弱プ

ルアップされます。

AD11(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 11 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 11 の入力です (2)。

P3C(3) 0 O DIG ECCP3 拡張 PWM 出力、チャンネル C です。ポートデータと PSPデータよりも優先されます。拡張 PWM シャットダウン時に 3 ステート

に設定する事も可能です。

RE4/AD12/P3B

RE4 0 O DIG LATE<4> のデータ出力です。

1 I ST PORTE<4> のデータ入力です。REPU ビットをセットした場合、弱プ

ルアップされます。

AD12(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 12 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 12 の入力です (2)。

P3B(3) 0 O DIG ECCP3 拡張 PWM 出力、チャンネル B です。ポートデータと PSPデータよりも優先されます。拡張 PWM シャットダウン時に 3 ステート

に設定する事も可能です。

凡例 : O = 出力、I = 入力、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、TTL = TTL バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: EMB 機能は 100 ピンデバイスにのみ実装されています。

2: 外部メモリ インターフェイスの I/O は、他の全てのデジタル I/O と PSP I/O よりも優先されます。

3: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C と P3B/P3C の既定値の割り当てです (80 ピン /100 ピ

ンデバイス )。4: 64 ピンデバイスには実装されていません。

5: CCP2MX コンフィグレーション ビットがクリアされている場合の ECCP2/P2A の代替ピン割り当てです ( マイクロコント

ローラ モードの 80 ピン /100 ピンデバイスの場合 )。6: 64 ピン /80 ピンデバイスには実装されていません。

DS39762F_JP - p.158 2013 Microchip Technology Inc.

Page 159: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-12: PORTE に関連するレジスタのまとめ

RE5/AD13/P1C

RE5 0 O DIG LATE<5> のデータ出力です。

1 I ST PORTE<5> のデータ入力です。REPU ビットをセットした場合、弱プ

ルアップされます。

AD13(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 13 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 13 の入力です (2)。

P1C(3) 0 O DIG ECCP1 拡張 PWM 出力、チャンネル C です。ポートデータと PSP デー

タよりも優先されます。拡張 PWM シャットダウン時に 3 ステートに設

定する事も可能です。

RE6/AD14/P1B(4)

RE6 0 O DIG LATE<6> のデータ出力です。

1 I ST PORTE<6> のデータ入力です。REPU ビットをセットした場合、弱プ

ルアップされます。

AD14(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 14 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 14 の入力です (2)。

P1B(3) 0 O DIG ECCP1 拡張 PWM 出力、チャンネル B です。ポートデータと PSPデータよりも優先されます。拡張 PWM シャットダウン時に 3 ステート

に設定する事も可能です。

RE7/AD15/ECCP2/P2A(4)

RE7 0 O DIG LATE<7> のデータ出力です。

1 I ST PORTE<7> のデータ入力です。REPU ビットをセットした場合、弱プ

ルアップされます。

AD15(1) x O DIG 外部メモリ インターフェイスのアドレス / データ Bit 15 の出力です (2)。

x I TTL 外部メモリ インターフェイスのデータ Bit 15 の入力です (2)。

ECCP2(5) 0 O DIG ECCP2 のコンペア出力と PWM 出力です。

ポートデータよりも優先されます。

1 I ST ECCP2 キャプチャ入力です。

P2A(5) 0 O DIG ECCP2 拡張 PWM 出力、チャンネル A です。ポートデータと PSPデータよりも優先されます。拡張 PWM シャットダウン時に 3 ステート

に設定する事も可能です。

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

PORTE RE7(1) RE6(1) RE5 RE4 RE3 RE2 RE1 RE0 72

LATE LATE7(1) LATE6(1) LATE5 LATE4 LATE3 LATE2 LATE1 LATE0 72

TRISE TRISE7(1) TRISE6(1) TRISE5 TRISE4 TRISE3 TRISE2 TRISE1 TRISE0 71

LATA RDPU REPU LATA5 LATA4 LATA3 LATA2 LATA1 LATA0 72

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は PORTE では使いません。

Note 1: 64 ピンデバイスでは未実装であり、「0」として読み出されます。

表 11-11: PORTE の機能 ( 続き )

ピン名 機能TRISの設定

I/OI/O

タイプ説明

凡例 : O = 出力、I = 入力、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、TTL = TTL バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: EMB 機能は 100 ピンデバイスにのみ実装されています。

2: 外部メモリ インターフェイスの I/O は、他の全てのデジタル I/O と PSP I/O よりも優先されます。

3: ECCPMX コンフィグレーション ビットをセットした場合の P1B/P1C と P3B/P3C の既定値の割り当てです (80 ピン /100 ピ

ンデバイス )。4: 64 ピンデバイスには実装されていません。

5: CCP2MX コンフィグレーション ビットがクリアされている場合の ECCP2/P2A の代替ピン割り当てです ( マイクロコント

ローラ モードの 80 ピン /100 ピンデバイスの場合 )。6: 64 ピン /80 ピンデバイスには実装されていません。

2013 Microchip Technology Inc. DS39762F_JP - p.159

Page 160: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.7 PORTF、LATF、TRISF レジスタ

PORTF は双方向ポートとして、以下の 2 つのビット幅で実装されています。

• 64 ピン /80 ピンデバイス : 7 ビット幅 (RF<7:1>)

• 100 ピンデバイス : 8 ビット幅 (RF<7:0>)

対応するデータ方向レジスタは TRISF です。TRISFビットをセットする (= 1) と、対応する PORTF ピンが入力になります ( すなわち、対応する出力ドライバがハイインピーダンス モードに移行します)。TRISFビットをクリアする (= 0) と、対応する PORTF ピンが出力になります ( すなわち、出力ラッチの内容が選択したピンに出力されます )。PORTF のピン 7 はアナログ入力機能を持たず、 大 5.5 V の入力電圧を許容する唯一のピンです。

出力ラッチレジスタ (LATF) は、メモリにもマッピングされています。LATF レジスタに対する Read-Modify-Write動作は、PORTF にラッチされた出力値を読み出して書き戻します。

PORTFでは、全てのピンにシュミットトリガ入力バッファが実装されています。各ピンは、個別に入力または出力として設定できます。

PORTF は、A/D コンバータ、コンパレータ入力、コンパレータ出力をはじめとする、複数のアナログ周辺機能と多重化されています。RF1 ~ RF6 ピンは、CMCON レジスタの適切なビットを設定する事で、コンパレータの入力または出力として使えます。RF<6:1> をデジタル入力として使うには、コンパレータも OFF にする必要があります。

例 11-6: PORTF の初期化

Note 1: デバイスリセット時、RF<6:1> ピンはアナログ入力に設定され、「0」として読み出されます。

2: PORTF をデジタル I/O に設定するには、コンパレータを OFF にして、ADCON1の値を設定します。

CLRF PORTF ; Initialize PORTF by; clearing output; data latches

CLRF LATF ; Alternate method; to clear output; data latches

MOVLW 07h ; MOVWF CMCON ; Turn off comparatorsMOVLW 0Fh ; MOVWF ADCON1 ; Set PORTF as digital I/OMOVLW 0CEh ; Value used to

; initialize data ; direction

MOVWF TRISF ; Set RF3:RF1 as inputs; RF5:RF4 as outputs ; RF7:RF6 as inputs

DS39762F_JP - p.160 2013 Microchip Technology Inc.

Page 161: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-13: PORTF の機能

表 11-14: PORTF に関連するレジスタのまとめ

ピン名 機能TRISの設定

I/OI/O

タイプ説明

RF0/AN5(1) RF0(1) 0 O DIG LATF<0> のデータ出力です。アナログ入力の影響は受けません。

1 I ST PORTF<0> のデータ入力です。アナログ入力を有効にした場合、無効になります。

AN5(1) 1 I ANA A/D 入力チャンネル 5 です。POR 時の既定値設定です。

RF1/AN6/C2OUT

RF1 0 O DIG LATF<1> のデータ出力です。アナログ入力の影響は受けません。

1 I ST PORTF<1> のデータ入力です。アナログ入力を有効にした場合、無効になります。

AN6 1 I ANA A/D 入力チャンネル 6 です。POR 時の既定値設定です。

C2OUT 0 O DIG コンパレータ 2 の出力です。ポートデータよりも優先されます。

RF2/AN7/C1OUT

RF2 0 O DIG LATF<2> のデータ出力です。アナログ入力の影響は受けません。

1 I ST PORTF<2> のデータ入力です。アナログ入力を有効にした場合、無効になります。

AN7 1 I ANA A/D 入力チャンネル 7 です。POR 時の既定値設定です。

C1OUT 0 O TTL コンパレータ 1 の出力です。ポートデータよりも優先されます。

RF3/AN8 RF3 0 O DIG LATF<3> のデータ出力です。アナログ入力の影響は受けません。

1 I ST PORTF<3> のデータ入力です。アナログ入力を有効にした場合、無効になります。

AN8 1 I ANA A/D 入力チャンネル 8 とコンパレータ C2+ 入力です。POR 時の既定値入力設定です。

アナログ出力の影響は受けません。

RF4/AN9 RF4 0 O DIG LATF<4> のデータ出力です。アナログ入力の影響は受けません。

1 I ST PORTF<4> のデータ入力です。アナログ入力を有効にした場合、無効になります。

AN9 1 I ANA A/D 入力チャンネル 9 とコンパレータ C2- 入力です。POR 時の既定値入力設定です。

デジタル出力には影響を与えません。

RF5/AN10/CVREF

RF5 0 O DIG LATF<5> のデータ出力です。アナログ入力の影響は受けません。CVREF 出力を有効に

した場合、無効になります。

1 I ST PORTF<5> のデータ入力です。アナログ入力を有効にした場合、無効になります。

CVREF 出力を有効にした場合、無効になります。

AN10 1 I ANA A/D 入力チャンネル 10 とコンパレータ C1+ 入力です。POR 時の既定値入力設定です。

CVREF x O ANA コンパレータの参照電圧出力です。この機能を有効にすると、デジタル I/O は無効にな

ります。

RF6/AN11 RF6 0 O DIG LATF<6> のデータ出力です。アナログ入力の影響は受けません。

1 I ST PORTF<6> のデータ入力です。アナログ入力を有効にした場合、無効になります。

AN11 1 I ANA A/D 入力チャンネル 11 とコンパレータ C1- 入力です。POR 時の既定値入力設定です。

デジタル出力には影響を与えません。

RF7/SS1 RF7 0 O DIG LATF<7> のデータ出力です。

1 I ST PORTF<7> のデータ入力です。

SS1 1 I TTL MSSP1 モジュールのスレーブ選択入力です。

凡例 : O = 出力、I = 入力、ANA = アナログ信号、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、TTL = TTLバッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: 100 ピンデバイスにのみ実装されています。

レジスタ名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0リセット

値の記載

ページ

PORTF RF7 RF6 RF5 RF4 RF3 RF2 RF1 RF0(1) 72

LATF LATF7 LATF6 LATF5 LATF4 LATF3 LATF2 LATF1 LATF0(1) 72

TRISF TRISF7 TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0(1) 71

ADCON1 - - VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 70

CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 70

CVRCON CVREN CVROE CVRR CVRSS CVR3 CVR2 CVR1 CVR0 70

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は PORTF では使いません。

Note 1: 100 ピンデバイスにのみ実装されています。

2013 Microchip Technology Inc. DS39762F_JP - p.161

Page 162: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.8 PORTG、TRISG、LATG レジスタ

デバイスの種類に応じて、PORTG は双方向ポートとして以下の 3 つのビット幅のいずれかで実装されています。

• 64 ピンデバイス : 1 ビット幅 (RG<4>)

• 80 ピンデバイス : 5 ビット幅 (RG<4:0>)

• 100 ピンデバイス : 8 ビット幅 (RG<7:0>)

対応するデータ方向レジスタは TRISG です。TRISGビットをセットする (= 1) と、対応する PORTG ピンが入力になります ( すなわち、対応する出力ドライバがハイインピーダンス モードに移行します )。TRISGビットをクリアする (= 0) と、対応する PORTG ピンが出力になります ( すなわち、出力ラッチの内容が選択したピンに出力されます )。PORTG の全てのピンはデジタル専用で、 大許容電圧は 5.5 V です。

出力ラッチレジスタ (LATG) は、メモリにもマッピングされています。LATGレジスタに対するRead-Modify-Write動作は、PORTG にラッチされた出力値を読み出して書き戻します。

80 ピン /100 ピンデバイスの PORTG は EUSART2 機能と多重化されています ( 表 11-15)。PORTG ピンはシュミットトリガ入力バッファを備えています。

周辺機能を有効にする場合、各 PORTG ピンの TRISビットの定義に注意してください。周辺機能の中には、TRIS ビットの設定をオーバーライドしてピンを出力に設定するもの、入力に設定するものがあります。ユーザは、該当する周辺機能のセクションを参照して、TRIS ビットを適切に設定してください。ピンのオーバーライド値は TRIS レジスタに読み込まれません。このため周辺機能によるオーバーライドを心配せずにTRIS レジスタの Read-Modify-Write を実行できます。

例 11-7: PORTG の初期化

CLRF PORTG ; Initialize PORTG by; clearing output; data latches

CLRF LATG ; Alternate method; to clear output; data latches

MOVLW 04h ; Value used to ; initialize data ; direction

MOVWF TRISG ; Set RG1:RG0 as outputs; RG2 as input; RG4:RG3 as inputs

DS39762F_JP - p.162 2013 Microchip Technology Inc.

Page 163: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-15: PORTG の機能

表 11-16: PORTG に関連するレジスタのまとめ

ピン名 機能TRISの設定

I/OI/O

タイプ説明

RG0/ECCP3/P3A(1)

RG0(1) 0 O DIG LATG<0> のデータ出力です。

1 I ST PORTG<0> のデータ入力です。

ECCP3(1) 0 O DIG ECCP3 のコンペアおよび PWM 出力です。ポートデータよりも優先されます。

1 I ST ECCP3 キャプチャ入力です。

P3A(1) 0 O DIG ECCP3 拡張 PWM 出力、チャンネル A です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

RG1/TX2/CK2(1)

RG1(1) 0 O DIG LATG<1> のデータ出力です。

1 I ST PORTG<1> のデータ入力です。

TX2(1) 1 O DIG 同期シリアルデータ出力 (EUSART2 モジュール ) です。ポートデータよりも優先

されます。

CK2(1) 1 O DIG 同期シリアルデータ入力 (EUSART2 モジュール ) です。ユーザは入力として設定す

る必要があります。

1 I ST 同期シリアルクロック入力 (EUSART2 モジュール ) です。

RG2/RX2/DT2(1)

RG2(1) 0 O DIG LATG<2> のデータ出力です。

1 I ST PORTG<2> のデータ入力です。

RX2(1) 1 I ST 非同期シリアル受信データ入力 (EUSART2 モジュール ) です。

DT2(1) 1 O DIG 同期シリアルデータ出力 (EUSART2 モジュール ) です。ポートデータよりも優先

されます。

1 I ST 同期シリアルデータ入力 (EUSART2 モジュール ) です。ユーザは入力として設定す

る必要があります。

RG3/CCP4/P3D(1)

RG3(1) 0 O DIG LATG<3> のデータ出力です。

1 I ST PORTG<3> のデータ入力です。

CCP4(1) 0 O DIG CCP4 のコンペア出力と PWM 出力です。ポートデータよりも優先されます。

1 I ST CCP4 キャプチャ入力です。

P3D(1) 0 O DIG ECCP3 拡張 PWM 出力、チャンネル D です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

RG4/CCP5/P1D

RG4 0 O DIG LATG<4> のデータ出力です。

1 I ST PORTG<4> のデータ入力です。

CCP5 0 O DIG CCP5 のコンペア出力と PWM 出力です。ポートデータよりも優先されます。

1 I ST CCP5 キャプチャ入力です。

P1D 0 O DIG ECCP1 拡張 PWM 出力、チャンネル D です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

RG5(2) RG5(2) 0 O DIG LATG<0> のデータ出力です。

1 I ST PORTG<0> のデータ入力です。

RG6(2) RG6(2) 0 O DIG LATG<0> のデータ出力です。

1 I ST PORTG<0> のデータ入力です。

RG7(2) RG7(2) 0 O DIG LATG<0> のデータ出力です。

1 I ST PORTG<0> のデータ入力です。

凡例 : O = 出力、I = 入力、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: 80 ピン /100 ピンデバイスにのみ実装されています。

2: 100 ピンデバイスにのみ実装されています。

レジスタ名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0リセット

値の記載

ページ

PORTG RG7(1) RG6(1) RG5(1) RG4 RG3(2) RG2(2) RG1(2) RG0(2) 72

LATG LATG7(1) LATG6(1) LATG5(1) LATG4 LATG3(2) LATG2(2) LATG1(2) LATG0(2) 72

TRISG TRISG7(1) TRISG6(1) TRISG5(1) TRISG4 TRISG3(2) TRISG2(2) TRISG1(2) TRISG0(2) 71

Note 1: 100 ピンデバイスにのみ実装されています。

2: 80 ピン /100 ピンデバイスにのみ実装されています。

2013 Microchip Technology Inc. DS39762F_JP - p.163

Page 164: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.9 PORTH、LATH、TRISH レジスタ

PORTH は、8 ビット幅の双方向 I/O ポートです。80ピン/100ピンデバイスには全てのピンが実装されています。対応するデータ方向レジスタは TRISH です。TRISH ビットをセットする (= 1) と、対応する PORTHピンが入力になります ( すなわち、対応する出力ドライバがハイインピーダンス モードに移行します )。TRISH ビットをクリアする (= 0) と、対応する PORTHピンが出力になります ( すなわち、出力ラッチの内容が選択したピンに出力されます )。PORTH<3:0> ピンはデジタル専用で、 大許容電圧は 5.5 V です。

出力ラッチレジスタ (LATH) は、メモリにもマッピングされています。LATHレジスタに対するRead-Modify-Write動作は、PORTH にラッチされた出力値を読み出して書き戻します。

PORTHでは、全てのピンにシュミットトリガ入力バッファが実装されています。各ピンは、個別に入力または出力として設定できます。

外部メモリ インターフェイス有効時、PORTH の 4 本のピンは、インターフェイスの上位アドレスラインとして機能します。インターフェイスからのアドレス出力は、他のデジタル I/O よりも優先されます。対応する TRISH ビットもオーバーライドされます。

PORTH の RH4 ~ RH7 ピンは、アナログ コンバータ入力と多重化されています。これらのピンのアナログ入力としての動作は、ADCON1レジスタのPCFG<3:0>制御ビットのクリアまたはセットによって選択します。

PORTH は、ECCP1 モジュールと ECCP3 モジュールの拡張PWM出力チャンネルBと Cの代替ピンとしても設定できます。それには ECCPMX コンフィグレーション ビットをクリアします。

例 11-8: PORTH の初期化

Note: PORTH は、80 ピン /100 ピンデバイスにのみ実装されています。

CLRF PORTH ; Initialize PORTH by ; clearing output ; data latches

CLRF LATH ; Alternate method ; to clear output ; data latches

MOVLW 0Fh ; Configure PORTH asMOVWF ADCON1 ; digital I/OMOVLW 0CFh ; Value used to

; initialize data ; direction

MOVWF TRISH ; Set RH3:RH0 as inputs; RH5:RH4 as outputs ; RH7:RH6 as inputs

DS39762F_JP - p.164 2013 Microchip Technology Inc.

Page 165: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2013 Microchip Technology Inc. DS39762F_JP - p.165

表 11-17: PORTH の機能

表 11-18: PORTH に関連するレジスタのまとめ

ピン名 機能TRIS

の設定I/O

I/O

タイプ説明

RH0/A16 RH0 0 O DIG LATH<0> のデータ出力です。

1 I ST PORTH<0> のデータ入力です。

A16(1) x O DIG 外部メモリ インターフェイスのアドレスライン 16 です。ポートデータよりも優先

されます。

RH1/A17 RH1 0 O DIG LATH<1> のデータ出力です。

1 I ST PORTH<1> のデータ入力です。

A17(1) x O DIG 外部メモリ インターフェイスのアドレスライン 17 です。ポートデータよりも優先

されます。

RH2/A18 RH2 0 O DIG LATH<2> のデータ出力です。

1 I ST PORTH<2> のデータ入力です。

A18(1) x O DIG 外部メモリ インターフェイスのアドレスライン 18 です。ポートデータよりも優先

されます。

RH3/A19 RH3 0 O DIG LATH<3> のデータ出力です。

1 I ST PORTH<3> のデータ入力です。

A19(1) x O DIG 外部メモリ インターフェイスのアドレスライン 19 です。ポートデータよりも優先

されます。

RH4/AN12/P3C RH4 0 O DIG LATH<4> のデータ出力です。

1 I ST PORTH<4> のデータ入力です。

AN12 I ANA A/D 入力チャンネル 12 です。POR 時の既定値入力設定です。デジタル出力には影

響を与えません。

P3C(2) 0 O DIG ECCP3 拡張 PWM 出力、チャンネル C です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

RH5/AN13/P3B RH5 0 O DIG LATH<5> のデータ出力です。

1 I ST PORTH<5> のデータ入力です。

AN13 I ANA A/D 入力チャンネル 13 です。POR 時の既定値入力設定です。デジタル出力には影

響を与えません。

P3B(2) 0 O DIG ECCP3 拡張 PWM 出力、チャンネル B です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

RH6/AN14/P1C RH6 0 O DIG LATH<6> のデータ出力です。

1 I ST PORTH<6> のデータ入力です。

AN14 I ANA A/D 入力チャンネル 14 です。POR 時の既定値入力設定です。デジタル出力には影

響を与えません。

P1C(2) 0 O DIG ECCP1 拡張 PWM 出力、チャンネル C です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

RH7/AN15/P1B RH7 0 O DIG LATH<7> のデータ出力です。

1 I ST PORTH<7> のデータ入力です。

AN15 I ANA A/D 入力チャンネル 15 です。POR 時の既定値入力設定です。デジタル出力には影

響を与えません。

P1B(2) 0 O DIG ECCP1 拡張 PWM 出力、チャンネル B です。ポートデータと PSP データよりも優

先されます。拡張 PWM シャットダウン時に 3 ステートに設定する事も可能です。

凡例 : O = 出力、I = 入力、ANA = アナログ信号、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: 80 ピンデバイスには実装されていません。

2: ECCPMX コンフィグレーション ビットがクリアされている場合の P1B/P1C と P3B/P3C の代替ピン割り当てです (80 ピン /100ピンデバイスのみ )。既定値の割り当ては PORTE<6:3> です。

レジスタ名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0リセット

値の記載

ページ

PORTH RH7 RH6 RH5 RH4 RH3 RH2 RH1 RH0 72

LATH LATH7 LATH6 LATH5 LATH4 LATH3 LATH2 LATH1 LATH0 71

TRISH TRISH7 TRISH6 TRISH5 TRISH4 TRISH3 TRISH2 TRISH1 TRISH0 71

Page 166: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.10 PORTJ、TRISJ、LATJ レジスタ

PORTJ は双方向ポートとして、以下の 2 つのビット幅で実装されています。

• 80 ピンデバイス : 2 ビット幅 (RJ<5:4>)

• 100 ピンデバイス : 8 ビット幅 (RJ<7:0>)

対応するデータ方向レジスタは TRISJ です。TRISJビットをセットする (= 1) と、対応する PORTJ ピンが入力になります ( すなわち、対応する出力ドライバがハイインピーダンス モードに移行します)。TRISJビットをクリアする (= 0) と、対応する PORTJ ピンが出力になります ( すなわち、出力ラッチの内容が選択したピンに出力されます )。PORTJ の全てのピンはデジタル専用で、 大許容電圧は 5.5 V です。

出力ラッチレジスタ (LATJ) は、メモリにもマッピングされています。LATJ レジスタに対する Read-Modify-Write動作は、PORTJ にラッチされた出力値を読み出して書き戻します。

PORTJ では、全てのピンにシュミットトリガ入力バッファが実装されています。各ピンは、個別に入力または出力として設定できます。

外部メモリ インターフェイス有効時、PORTJ の全てのピンはインターフェイスの制御出力として機能します。EBDIS 制御ビット (MEMCON<7>) をクリアしてインターフェイスを有効にすれば、自動的にこの機能に切り換わります。TRISJ ビットもオーバーライドされます。

各PORTJピンは内部弱プルアップ機能を備えています。1 つの制御ビットで全てのプルアップを有効にできます。それには、RJPU ビット (PORTA<7>) をセットします。ポートピンを出力に設定すると、弱プルアップは自動的に OFF になります。全てのデバイスリセットによってプルアップは無効になります。

例 11-9: PORTJ の初期化

Note: PORTJ は、80 ピン /100 ピンデバイスにのみ実装されています。

Note: これらのピンは、全てのデバイスリセットでデジタル入力に設定されます。

CLRF PORTJ ; Initialize PORTG by; clearing output; data latches

CLRF LATJ ; Alternate method; to clear output; data latches

MOVLW 0CFh ; Value used to ; initialize data ; direction

MOVWF TRISJ ; Set RJ3:RJ0 as inputs; RJ5:RJ4 as output; RJ7:RJ6 as inputs

DS39762F_JP - p.166 2013 Microchip Technology Inc.

Page 167: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 11-19: PORTJ の機能

表 11-20: PORTJ に関連するレジスタのまとめ

ピン名 機能TRIS

の設定I/O

I/O

タイプ説明

RJ0/ALE(1) RJ0(1) 0 O DIG LATJ<0> のデータ出力です。

1 I ST PORTJ<0> のデータ入力です。RJPU ビットをセットした場合、弱プルアップされます。

ALE(1) x O DIG 外部メモリ インターフェイスのアドレスラッチ イネーブル制御出力です。デジタル I/Oよりも優先されます。

RJ1/OE(1) RJ1(1) 0 O DIG LATJ<1> のデータ出力です。

1 I ST PORTJ<1> のデータ入力です。RJPU ビットをセットした場合、弱プルアップされます。

OE(1) x O DIG 外部メモリ インターフェイスの出力イネーブル制御出力です。デジタル I/O よりも優先

されます。

RJ2/WRL(1) RJ2(1) 0 O DIG LATJ<2> のデータ出力です。

1 I ST PORTJ<2> のデータ入力です。RJPU ビットをセットした場合、弱プルアップされます。

WRL(1) x O DIG 外部メモリバスの下位バイト書き込み制御です。デジタル I/O よりも優先されます。

RJ3/WRH(1) RJ3(1) 0 O DIG LATJ<3> のデータ出力です。

1 I ST PORTJ<3> のデータ入力です。RJPU ビットをセットした場合、弱プルアップされます。

WRH(1) x O DIG 外部メモリ インターフェイスの上位バイト書き込み制御出力です。デジタル I/O よりも

優先されます。

RJ4/BA0 RJ4 0 O DIG LATJ<4> のデータ出力です。

1 I ST PORTJ<4> のデータ入力です。RJPU ビットをセットした場合、弱プルアップされます。

BA0(2) x O DIG 外部メモリ インターフェイスのバイトアドレス 0 制御出力です。デジタル I/O よりも優

先されます。

RJ5/CE RJ5 0 O DIG LATJ<5> のデータ出力です。

1 I ST PORTJ<5> のデータ入力です。RJPU ビットをセットした場合、弱プルアップされます。

CE(2) x O DIG 外部メモリ インターフェイスのチップイネーブル制御出力です。デジタル I/O よりも優

先されます。

RJ6/LB(1) RJ6(1) 0 O DIG LATJ<6> のデータ出力です。

1 I ST PORTJ<6> のデータ入力です。RJPU ビットをセットした場合、弱プルアップされます。

LB(1) x O DIG 外部メモリ インターフェイスの下位バイトイネーブル制御出力です。デジタル I/O より

も優先されます。

RJ7/UB(1) RJ7(1) 0 O DIG LATJ<7> のデータ出力です。

1 I ST PORTJ<7> のデータ入力です。RJPU ビットをセットした場合、弱プルアップされます。

UB(1) x O DIG 外部メモリ インターフェイスの上位バイトイネーブル制御出力です。デジタル I/O より

も優先されます。

凡例 : O = 出力、I = 入力、DIG = デジタル出力、ST = シュミットトリガ バッファ入力、

x = ドントケア ( この場合、TRIS ビットはポート方向に影響を与えないか優先されます )Note 1: 100 ピンデバイスにのみ実装されています。

2: EMB 機能は 100 ピンデバイスにのみ実装されています。

レジスタ名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 リセット値の

記載ページ

PORTJ RJ7(1) RJ6(1) RJ5 RJ4 RJ3(1) RJ2(1) RJ1(1) RJ0(1) 72

LATJ LATJ7(1) LATJ6(1) LATJ5 LATJ4 LATJ3(1) LATJ2(1) LATJ1(1) LATJ0(1) 71

TRISJ TRISJ7(1) TRISJ6(1) TRISJ5 TRISJ4 TRISJ3(1) TRISJ2(1) TRISJ1(1) TRISJ0(1) 71

PORTA RJPU - RA5 RA4 RA3 RA2 RA1 RA0 72

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は PORTJ では使いません。

Note 1: 100 ピンデバイスにのみ実装されています。

2013 Microchip Technology Inc. DS39762F_JP - p.167

Page 168: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

11.11 パラレルスレーブ ポート (PSP)

制御ビット PSPMODE (PSPCON<4>) をセットすると、PORTD は 8 ビット幅のパラレルスレーブ ポートまたはマイクロプロセッサ ポートとしても機能させる事ができます。RD 制御入力ピン、RE0/AD8/RD/P2Dおよび WR 制御入力ピン、RE1/AD9/WR/P2C によって外部から非同期で読み書きできます。

PSP は 8 ビットのマイクロプロセッサ データバスに直接接続できます。外部のマイクロプロセッサは、PORTD ラッチを 8 ビットのラッチとして読み書きできます。PSPMODE ビットをセットすると、ポートピンのRE0/AD8/RD/P2DをRD入力、RE1/AD9/WR/P2Cを WR 入力、RE2/AD10/CS/P2B を CS ( チップセレクト ) 入力として有効化できます。この機能を使う場合、TRISE レジスタでデータ方向ビット (TRISE<2:0>) を入力に設定 ( ビットをセット ) する必要があります。

PSP への書き込みは、CS ラインと WR ラインの両方で 初に Low が検出された時点で開始し、いずれか一方で High が検出された時点で終了します。書き込みが終了すると、PSPIF および IBF フラグビットが両方共セットされます。

PSP からの読み出しは、CS ラインと RD ラインの両方で 初に Low が検出された時点で開始します。PORTD のデータが読み出され、OBF ビットがセットされます。ユーザが新しいデータを PORTD に書き込んで OBF をセットした場合、データはただちに読み出されますが、OBF ビットはセットされません。

CS または RD ラインのいずれかで High が検出されると、PORTD ピンは入力ステートに戻り、PSPIF ビットがセットされます。ユーザ アプリケーションは、PSP をサービスする前に、PSPIF がセットされるまで待機する必要があります。PSPIF ビットがセットされれば、IBF および OBF ビットをポーリングして、適切な動作を実行できます。

図 11-3 と図 11-4 に、書き込みモードと読み出しモードの制御信号のタイミングをそれぞれ示します。

図 11-2: PORTD と PORTE のブロック図 ( パラレルスレーブ ポート )

Note: パラレルスレーブ ポートは、100 ピンデバイスにのみ実装されています。

Note: パラレルスレーブ ポートは、マイクロコントローラ モードでのみ使えます。

Data Bus

WR LATDRDx

QD

CK

EN

Q D

ENRD PORTD

Pin

One bit of PORTD

Set Interrupt FlagPSPIF (PIR1<7>)

Read

Chip Select

Write

RD

CS

WR

TTL

TTL

TTL

TTL

or PORTD

RD LATD

Data Latch

TRIS Latch

DS39762F_JP - p.168 2013 Microchip Technology Inc.

Page 169: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 11-3: パラレルスレーブ ポートの書き込み波形

レジスタ 11-1: PSPCON: パラレルスレーブ ポート制御レジスタ

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

IBF OBF IBOV PSPMODE — — — —

bit 7 bit 0

凡例 :

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

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

bit 7 IBF: 入力バッファフル ステータスビット

1 = 1 ワードが受信され、CPU による読み出しを待機中である0 = ワードを受信していない

bit 6 OBF: 出力バッファフル ステータスビット

1 = 出力バッファには依然として前回書き込まれたワードが保持されている0 = 出力バッファは読み出し済みである

bit 5 IBOV: 入力バッファ オーバーフロー検出ビット

1 = 前回の入力ワードの読み出し完了前に書き込みが発生した ( ソフトウェアによるクリアが必要である )

0 = オーバーフローは発生していない

bit 4 PSPMODE: パラレルスレーブ ポート モード選択ビット

1 = パラレルスレーブ ポート モード0 = 汎用 I/O モード

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

Q1 Q2 Q3 Q4

CS

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

WR

RD

IBF

OBF

PSPIF

PORTD<7:0>

2013 Microchip Technology Inc. DS39762F_JP - p.169

Page 170: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 11-4: パラレルスレーブ ポートの読み出し波形

表 11-21: パラレルスレーブ ポートに関連するレジスタのまとめ

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

PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 72

LATD LATD7 LATD6 LATD5 LATD4 LATD3 LATD2 LATD1 LATD0 72

TRISD TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 71

PORTE RE7 RE6 RE5 RE4 RE3 RE2 RE1 RE0 72

LATE LATE7 LATE6 LATE5 LATE4 LATE3 LATE2 LATE1 LATE0 72

TRISE TRISE7 TRISE6 TRISE5 TRISE4 TRISE3 TRISE2 TRISE1 TRISE0 71

PSPCON IBF OBF IBOV PSPMODE - - - - 71

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分はパラレルスレーブ ポートでは使いません。

Q1 Q2 Q3 Q4

CS

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

WR

IBF

PSPIF

RD

OBF

PORTD<7:0>

DS39762F_JP - p.170 2013 Microchip Technology Inc.

Page 171: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

12.0 Timer0 モジュール

Timer0 モジュールには以下の機能があります。

• 8/16 ビットモードのタイマまたはカウンタ動作をソフトウェアによって選択可能

• 読み書き可能なレジスタ

• 専用の 8 ビット ソフトウェア プログラマブル プリスケーラ

• 選択可能なクロック源 ( 内部または外部 )

• 外部クロックのエッジ選択

• オーバーフロー割り込み

T0CON レジスタ ( レジスタ 12-1) は、プリスケール値の選択を含むモジュールのあらゆる機能を制御します。このレジスタは読み書きの両方が可能です。

図 12-1 に、Timer0 モジュールの 8 ビットモードの概略ブロック図を示します。図 12-2 に、Timer0 モジュールの 16 ビットモードの概略ブロック図を示します。

レジスタ 12-1: T0CON: Timer0 制御レジスタ

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

TMR0ON T08BIT T0CS T0SE PSA T0PS2 T0PS1 T0PS0

bit 7 bit 0

凡例 :

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

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

bit 7 TMR0ON: Timer0 ON/OFF 制御ビット

1 = Timer0 を ON にする 0 = Timer0 を OFF にする

bit 6 T08BIT: Timer0 8 ビット /16 ビット制御ビット

1 = Timer0 を 8 ビットのタイマ / カウンタとして設定する 0 = Timer0 を 16 ビットのタイマ / カウンタとして設定する

bit 5 T0CS: Timer0 クロック源選択ビット

1 = T0CKI ピンの遷移 0 = 内部命令サイクルクロック (CLKO)

bit 4 T0SE: Timer0 信号源エッジ選択ビット

1 = T0CKI ピンの High から Low への遷移時にインクリメントする 0 = T0CKI ピンの Low から High への遷移時にインクリメントする

bit 3 PSA: Timer0 プリスケーラ割り当てビット

1 = Timer0 プリスケーラを割り当てず、Timer0 クロック入力はプリスケーラをバイパスする0 = Timer0 プリスケーラを割り当て、Timer0 クロック入力をプリスケーラ出力から供給する

bit 2-0 T0PS<2:0>: Timer0 プリスケーラ選択ビット

111 = 1:256 のプリスケール値を選択する110 = 1:128 のプリスケール値を選択する101 = 1:64 のプリスケール値を選択する100 = 1:32 のプリスケール値を選択する011 = 1:16 のプリスケール値を選択する010 = 1:8 のプリスケール値を選択する001 = 1:4 のプリスケール値を選択する000 = 1:2 のプリスケール値を選択する

2013 Microchip Technology Inc. DS39762F_JP - p.171

Page 172: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

12.1 Timer0 の動作

Timer0 はタイマまたはカウンタのいずれかのモードによる動作が可能です。モードは T0CS ビット(T0CON<5>) によって選択します。タイマモード(T0CS = 0) の既定値設定では、異なるプリスケール値を選択していない限り、モジュールがクロックごとにインクリメントします ( セクション 12.3「プリスケーラ」参照 )。TMR0 レジスタに書き込みが実行されると、その後の 2 命令サイクル間はインクリメントが抑止されます。TMR0 レジスタにあらかじめ調整した値を書き込む事によって、これを回避できます。

カウンタモードは T0CS ビットをセット (= 1) する事で選択します。このモードでは、RA4/T0CKI ピンの立ち上がりまたは立ち下がりエッジで Timer0 がインクリメントします。インクリメントするエッジは Timer0信号源エッジ選択ビット T0SE (T0CON<4>) によって決まります。このビットをクリアすると立ち上がりエッジが選択されます。ここでは外部クロック入力を使う場合の制約について説明します。

Timer0 の駆動には外部クロック源が使えます。ただし、外部クロックが内部の位相クロック (TOSC) と確実に同期できるように、一定の要件を満たす必要があり

ます。同期確立からタイマ / カウンタのインクリメント開始までには遅延があります。

12.2 16 ビットモードにおける Timer0 の読み書き

16 ビットモード動作時の TMR0H は Timer0 の実際の上位バイトではなく、バッファを介した値です。実際の Timer0 上位バイトは、直接読み書きできません( 図 12-2 参照 )。TMR0H は TMR0L の読み出し時にTimer0 の上位バイトの内容によって更新されます。この方法により、上位と下位バイトの読み出しが有効であったかどうか検証する事なく、Timer0 の全 16 ビットを一括して読み出す事ができます。上位バイトと下位バイトを連続して読み出した際のロールオーバーを懸念する必要がないためです。

読み出しと同様に Timer0 の上位バイトへの書き込みも、TMR0H のバッファレジスタを介して実行する必要があります。上位バイトは、TMR0L への書き込みを実行した時点で、TMR0H の内容によって更新されます。これによって、Timer0 の全 16 ビットを一度に更新できます。

図 12-1: Timer0 のブロック図 (8 ビットモード )

図 12-2: Timer0 のブロック図 (16 ビットモード )

Note: リセット時に Timer0 は、クロックを T0CKI から入力し、 大のプリスケール値を適用した 8 ビットモードに設定されます。

T0CKI pin

T0SE

0

1

1

0

T0CS

FOSC/4

Sync withInternalClocks

TMR0L

(2 Tcy Delay)

Internal Data BusPSA

T0PS<2:0>

Set TMR0IFon Overflow

3 8

8

ProgrammablePrescaler

Note: リセット時に Timer0 は、クロックを T0CKI から入力し、 大のプリスケール値を適用した 8 ビットモードに設定されます。

T0CKI pin

T0SE

0

1

1

0

T0CS

FOSC/4

Sync withInternalClocks

TMR0L

(2 Tcy Delay)

Internal Data Bus

8

PSA

T0PS<2:0>

Set TMR0IFon Overflow

3

TMR0

TMR0H

High Byte

8 8

8

Read TMR0L

Write TMR0L

8

ProgrammablePrescaler

DS39762F_JP - p.172 2013 Microchip Technology Inc.

Page 173: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

12.3 プリスケーラ

Timer0モジュールのプリスケーラとして8ビットのカウンタが使えます。プリスケーラは直接読み書きできません。値は PSA ビットと T0PS<2:0> ビット(T0CON<3:0>) によって設定します。これらの値は、プリスケーラの割り当てと比率を決定します。

PSA ビットをクリアすると、Timer0 モジュールにプリスケーラが割り当てられます。その場合、1:2 ~ 1:256の範囲の2のべき乗でプリスケール値を選択できます。

Timer0 モジュールにプリスケーラを割り当てた場合、TMR0 レジスタに書き込む全ての命令 ( 例 : CLRFTMR0、MOVWF TMR0、BSF TMR0) は、プリスケーラのカウントをクリアします。

12.3.1 プリスケーラ割り当ての切り換え

プリスケーラの割り当てはソフトウェアによって完全に制御でき、プログラム実行中に変更できます。

12.4 Timer0 割り込み

TMR0 レジスタが、FFh から 00h (8 ビットモード ) または FFFFh から 0000h (16 ビットモード ) にオーバーフローすると TMR0 割り込みが発生します。このオーバーフローは TMR0IF フラグビットをセットします。TMR0IE ビット (INTCON<5>) をクリアすると、この割り込みをマスクできます。この割り込みを再度有効にする前に、ソフトウェアの割り込みサービスルーチン内でTMR0IFビットをクリアしておく必要があります。

Timer0 はスリープでシャットダウンされるため、TMR0 の割り込みによってプロセッサをスリープから復帰させる事はできません。

表 12-1: Timer0 に関連するレジスタ

Note: プリスケーラをTimer0に割り当てている場合、TMR0 へ書き込むとプリスケーラのカウントはクリアされますが、プリスケーラの割り当て自体は変わりません。

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

TMR0L Timer0 レジスタ下位バイト 70

TMR0H Timer0 レジスタ上位バイト 70

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

INTCON2 RBPU INTEDG0 INTEDG1 INTEDG2 INTEDG3 TMR0IP INT3IP RBIP 69

T0CON TMR0ON T08BIT T0CS T0SE PSA T0PS2 T0PS1 T0PS0 70

TRISA - - TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 71

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は Timer0 では使いません。

2013 Microchip Technology Inc. DS39762F_JP - p.173

Page 174: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.174 2013 Microchip Technology Inc.

Page 175: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

13.0 Timer1 モジュール

Timer1タイマ /カウンタ モジュールには以下の機能があります。

• 16 ビットのタイマまたはカウンタ動作をソフトウェアによって選択可能

• 読み書き可能な 8 ビットのレジスタ (TMR1H とTMR1L)

• 内部または外部のクロック源と、デバイスクロックまたは Timer1 オシレータの内部オプションを選択可能

• オーバーフロー割り込み

• ECCP 特殊イベントトリガによるリセット

• デバイスクロックのステータスフラグ (T1RUN)

図 13-1 に、Timer1 モジュールの概略ブロック図を示します。図 13-2 に、モジュールの読み書きモードの

動作を説明するブロック図を示します。

このモジュールは低消費電力オシレータを備えており、クロック駆動の選択肢を追加します。Timer1 オシレータは、電力管理動作時にマイクロコントローラにクロックを供給する、低電力のクロック源としても使えます。

また、Timer1 を使うと外付け部品とコード オーバーヘッドをほとんど増やす事なく、アプリケーションにリアルタイム クロック(RTC)機能を持たせる事ができます。

Timer1はT1CON制御レジスタ (レジスタ 13-1)によって制御します。このレジスタには、Timer1 オシレータイネーブルビット (T1OSCEN) も含まれます。Timer1は、制御ビット TMR1ON (T1CON<0>) をセット / クリアする事で有効 / 無効に設定します。

レジスタ 13-1: T1CON: Timer1 制御レジスタ

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

RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON

bit 7 bit 0

凡例 :

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

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

bit 7 RD16: 16 ビット読み書きモード イネーブルビット

1 = 1 回の 16 ビット動作による Timer1 のレジスタ読み書きを有効に設定する0 = 2 回の 8 ビット動作による Timer1 のレジスタ読み書きを有効に設定する

bit 6 T1RUN: Timer1 システムクロック ステータスビット

1 = デバイスクロックが Timer1 オシレータから供給されている0 = デバイスクロックが他の信号源から供給されている

bit 5-4 T1CKPS<1:0>: Timer1 入力クロック プリスケール値選択ビット

11 = 1:8 のプリスケール値を選択する 10 = 1:4 のプリスケール値を選択する 01 = 1:2 のプリスケール値を選択する 00 = 1:1 のプリスケール値を選択する

bit 3 T1OSCEN: Timer1 オシレータ イネーブルビット

1 = Timer1 オシレータを有効にする 0 = Timer1 オシレータを無効にする オシレータのインバータとフィードバック抵抗を遮断して消費電力を低減します。

bit 2 T1SYNC: Timer1 外部クロック入力同期選択ビット

TMR1CS = 1の場合 : 1 = 外部クロック入力を同期させない 0 = 外部クロック入力を同期させる

TMR1CS = 0の場合 : このビットを無視する。TMR1CS = 0の場合、Timer1 は内部クロックを使う

bit 1 TMR1CS: Timer1 クロック源選択ビット

1 = RC0/T1OSO/T13CKI ピンに入力される外部クロック ( 立ち上がりエッジ )0 = 内部クロック (FOSC/4)

bit 0 TMR1ON: Timer1 ON/OFF 制御ビット

1 = Timer1 を ON にする 0 = Timer1 を OFF にする

2013 Microchip Technology Inc. DS39762F_JP - p.175

Page 176: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

13.1 Timer1 の動作

Timer1 は以下のいずれかのモードで動作します。

• タイマ

• 同期カウンタ

• 非同期カウンタ

動作モードはクロック選択ビットTMR1CS (T1CON<1>)によって決まります。TMR1CS をクリア (= 0) すると、Timer1 は内部命令サイクル (FOSC/4) ごとにインクリ

メントします。TMR1CS をセットすると、Timer1 はTimer1外部クロック入力またはTimer1オシレータ (有効化している場合 ) の立ち上がりエッジごとにインクリメントします。

Timer1 有効時、RC1/T1OSI と RC0/T1OSO/T13CKI ピンは入力になります。これは TRISC<1:0> の値が無視され、ピンが「0」として読み出される事を意味します。

図 13-1: Timer1 のブロック図

図 13-2: Timer1 のブロック図 (16 ビット読み書きモード )

T1SYNC

TMR1CS

T1CKPS<1:0>

Sleep InputT1OSCEN(1)

FOSC/4InternalClock

On/Off

1

0

2

T1OSO/T13CKI

T1OSI

1

0

TMR1ON

TMR1LSet TMR1IFon Overflow

TMR1 High ByteClear TMR1

(ECCPx Special Event Trigger)

Timer1 Oscillator

Note 1: イネーブルビット T1OSCEN をクリアすると、インバータとフィードバック抵抗が遮断され消費電力が低減します。

On/OffTimer1

Timer1 Clock Input

Prescaler1, 2, 4, 8

Synchronize

Detect

T1SYNC

TMR1CS

T1CKPS<1:0>

Sleep InputT1OSCEN(1)

FOSC/4InternalClock

1

0

2

T1OSO/T13CKI

T1OSI

Note 1: イネーブルビット T1OSCEN をクリアすると、インバータとフィードバック抵抗が遮断され消費電力が低減します。

1

0

TMR1L

Internal Data Bus

8

Set TMR1IFon Overflow

TMR1

TMR1H

High Byte

88

8

Read TMR1L

Write TMR1L

8

TMR1ON

Clear TMR1(ECCPx Special Event Trigger)

Timer1 Oscillator

On/OffTimer1

Timer1 Clock Input

Prescaler1, 2, 4, 8

Synchronize

Detect

DS39762F_JP - p.176 2013 Microchip Technology Inc.

Page 177: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

13.2 Timer1 の 16 ビット読み書きモード

Timer1は、16ビットの読み書きが可能な設定 (図 13-2参照 ) にする事ができます。RD16 制御ビット(T1CON<7>) をセットすると、TMR1H のアドレスがTimer1 上位バイトのバッファレジスタにマッピングされます。TMR1L を読み出す事で、Timer1 の上位バイトの内容が Timer1 上位バイト バッファレジスタに読み込まれます。この動作により、Timer1 の全 16 ビットを正確に読み出す事ができます。下位バイトの前に読み出された上位バイトが、2 回の読み出しの間のロールオーバーによって無効になっていないかを検証する必要がありません。

読み出しと同様に、Timer1 の上位バイトへの書き込みも TMR1H のバッファレジスタを介して実行する必要があります。Timer1 の上位バイトは、TMR1L への書き込みを実行した時点で TMR1H の内容によって更新されます。これによって、ユーザは Timer1 の上位バイトと下位バイト両方の全 16 ビットを一括して書き込む事ができます。

このモードでは Timer1 の上位バイトを直接読み書きできません。読み書きは全て Timer1 上位バイト バッファレジスタを介して実行する必要があります。TMR1H に書き込んでも、Timer1 のプリスケーラはクリアされません。プリスケーラがクリアされるのは、TMR1L に書き込んだ場合だけです。

13.3 Timer1 オシレータ

T1OSI ( 入力 ) と T1OSO ( アンプ出力 ) ピンの間には、内蔵の水晶振動子オシレータ回路が接続されています。このオシレータは、Timer1 オシレータ イネーブルビットT1OSCEN (T1CON<3>)をセットすると有効になります。定格 32 kHz の水晶振動子によって低消費電力で動作します。電力管理モードのいずれに移行しても、このオシレータは動作を続けます。図 13-3 に代表的なLPオシレータの回路を示します。表 13-1に、Timer1オシレータ用のコンデンサを選定する際の指針を示します。

Timer1 オシレータが確実に起動するように、ソフトウェアによる遅延を確保する必要があります。

図 13-3: Timer1 オシレータに必要な外付け部品

表 13-1: Timer1 オシレータ用コンデンサの選択 (2、3、4)

13.3.1 クロック源としての Timer1 の使用法

Timer1 オシレータは、電力管理モードのクロック源としても使えます。クロック選択ビット SCS<1:0>(OSCCON<1:0>) を「01」に設定すると、デバイスはSEC_RUN モードに切り換わります。Timer1 オシレータから CPU と周辺モジュールの両方のクロックを供給します。IDLEN ビット (OSCCON<7>) をクリアしてSLEEP命令を実行すると、デバイスは SEC_IDLE モードに移行します。詳細は、セクション 4.0「電力管理モード」を参照してください。

Timer1 オシレータをクロック源として使う場合は常に、Timer1 システムクロック ステータスフラグT1RUN (T1CON<6>) がセットされます。従って、このフラグによってコントローラの現在のクロック供給モードを判断できます。このビットからは、フェイルセーフ クロックモニタが現在使っているクロック源も分かります。クロックモニタが有効で、クロック供給中の Timer1 オシレータに障害が発生した場合、T1RUN ビットをポーリングすれば、クロックの供給源が Timer1 オシレータか他のクロック源かを判断できます。

13.3.2 Timer1 オシレータのレイアウト上の考慮事項

Timer1 オシレータ回路は、動作中にごくわずかな電力しか消費しません。低消費電力であるという事は、高速で変化する近くの信号から影響を受けやすい事を意味します。

このため、図 13-3 に示したオシレータ回路は、マイクロコントローラのできるだけ近くに配置してください。また、オシレータ回路のレイアウト領域を横切る配線は VSS または VDD のみとしてください。

Note: コンデンサの選定に関する詳細は、表 13-1の

Note を参照してください。

C1

C2

XTAL

PIC18F97J60

T1OSI

T1OSO

32.768 kHz

27 pF

27 pF

オシレータタイプ

周波数 C1 C2

LP 32 kHz 27 pF(1) 27 pF(1)

Note 1: マイクロチップ社は、オシレータ回路の検証に際して上記の値を初期値として推奨します。

2: 静電容量を大きくするとオシレータの安定性は増すものの、起動に要する時間が長くなります。

3: 振動子 / 水晶振動子は製品ごとに固有の特性を持つため、外付け部品の適切な数値は振動子 / 水晶振動子のメーカーに問い合わせてください。

4: ここに示すコンデンサの値は設計上の目安に過ぎません。

2013 Microchip Technology Inc. DS39762F_JP - p.177

Page 178: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

オシレータのそばに高速の回路を配置せざるを得ない場合は (出力コンペアまたはPWMモードのECCP1ピン、OSC2 ピンを使うプライマリ オシレータ等 )、図 13-4に示すようにオシレータ回路の周りに接地されたガードリングを設けると効果的な場合があります。この方法は、片面のみの PCB またはグランドプレーンで使う場合に適用できます。

図 13-4: 接地されたガードリングで囲まれたオシレータ回路

13.4 Timer1 割り込み

TMR1 レジスタペア (TMR1H:TMR1L) は 0000h からFFFFh までインクリメントした後、0000h にロールオーバーします。Timer1 割り込みを有効にしている場合、オーバーフローが発生した時点で割り込みが発生し、割り込みフラグビット TMR1IF (PIR1<0>) にラッチされます。この割り込みは、Timer1 割り込みイネーブルビット TMR1IE (PIE1<0>) をセットまたはクリアする事で、有効または無効に設定できます。

13.5 ECCPx 特殊イベントトリガによるTimer1 のリセット

ECCP1またはECCP2がTimer1を使い、コンペアモードで特殊イベントトリガを生成するように設定されている場合 (CCPxM<3:0> = 1011)、このトリガ信号によって Timer3 がリセットされます。A/D モジュールを有効にしている場合、ECCP2 によるトリガは A/D 変換も起動します ( 詳細はセクション 18.2.1「特殊イベントトリガ」を参照してください )。

この機能を使うには、モジュールをタイマまたは同期カウンタのいずれかに設定する必要があります。この方法で使う場合、CCPRxH:CCPRxL レジスタペアは実質的に Timer1 の周期レジスタとして機能します。

Timer1 が非同期カウンタモードで動作している場合、特殊イベントトリガによるリセットが動作しない可能性があります。

Timer1 への書き込みと特殊イベントトリガが同時に発生した場合、書き込み動作が優先されます。

13.6 リアルタイム クロックとしてのTimer1 の使用法

Timer1 に外部 LP オシレータを接続すると ( 例えばセクション 13.3「Timer1 オシレータ」で示した回路 )、アプリケーションに RTC 機能を実装する事ができます。正確なタイムベースを供給する腕時計用の安価な水晶振動子と、時間を計算する数行のアプリケーション コードがあれば実現できます。スリープで動作し、電源として電池またはスーパー キャパシタを使う場合、外付けの RTC デバイスとバッテリ バックアップは不要です。

例 13-1 に示すアプリケーション コード ルーチンRTCisr は、割り込みサービスルーチンによって 1 秒間隔でカウンタをインクリメントする簡単な方法を示したものです。TMR1 レジスタペアがインクリメントによってオーバーフローすると割り込みがトリガされ、このルーチンが呼び出されます。これによって、秒カウンタが 1 つインクリメントされます。その他の「分」と「時間」のカウンタは、前段のカウンタがオーバーフローするごとにインクリメントされます。

レジスタペアは 16 ビット幅である事から、レジスタを 32.768 kHz のクロックで直接駆動した場合、カウントアップしてオーバーフローさせるには 2 秒かかります。1 秒間隔でオーバーフローさせるには、あらかじめレジスタに値を読み込んでおく必要があります。も簡単な方法は、BSF命令によって TMR1H の MSb

をセットする事です。TMR1L レジスタには、あらかじめ値を格納したり変更したりできない事に注意してください。このような操作を実行すると、サイクル数が増えると共に誤差が累積する場合があります。

この方法で正確な RTC を実現するには、RTCinitルーチンにも示した通り、Timer1 を非同期モードで動作させ、Timer1 オーバーフロー割り込みを有効に(PIE1<0> = 1) しておく必要があります。また、Timer1オシレータを有効に設定し、常時動作させておく必要もあります。

13.7 非同期カウンタモードに関する考慮事項

Timer1 割り込みと TMR1 レジスタの更新に続き、Timer1 モジュールはクロック源の立ち下がりエッジによって、立ち上がりエッジにおける次のレジスタ更新をトリガします。従って、更新がクロック入力の立ち下がりよりも後に完了した場合、次の立ち上がりエッジはカウントされません。

タイマ入力が立ち下がる前に、アプリケーションが確実に TMR1 を更新できる場合、特別な措置は必要ありません。確実とは思われない場合、後の Timer1 インクリメントに続いて更新されるように調整できます。それには、割り込みルーチン内で TMR1L のインクリメントを監視し、インクリメントされたらクロックがLow の間またはクロック源の周期の半分の期間に

VDD

OSC1

VSS

OSC2

RC0

RC1

RC2

Note: 図の縮尺比は不定です。

Note: ECCPxモジュールによる特殊イベントトリガは、TMR1IF 割り込みフラグビット(PIR1<0>) をセットしません。

DS39762F_JP - p.178 2013 Microchip Technology Inc.

Page 179: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

TMR1H:TMR1L レジスタペアを更新します。Timer1 をリアルタイム クロックとして使う場合、クロック源は32.768 kHz の水晶振動子です。その場合のクロックの半周期は 15.25 s です。

例 13-1 のリアルタイム クロック アプリケーションコードには、Timer1 の代表的な ISR と、TMR1 を必要な間隔で確実に更新する事が困難な場合に必要となる追加のコードを示しました。

例 13-1: Implementing a Real-Time Clock Using a Timer1 Interrupt Service

表 13-2: Timer1 のタイマ / カウンタ動作に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

TMR1L Timer1 レジスタ下位バイト 70

TMR1H Timer1 レジスタ上位バイト 70

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 70

凡例 : 網掛けの部分は Timer1 モジュールでは使いません。

RTCinitMOVLW 80h ; Preload TMR1 register pairMOVWF TMR1H ; for 1 second overflowCLRF TMR1LMOVLW b’00001111’ ; Configure for external clock,MOVWF T1CON ; Asynchronous operation, external oscillatorCLRF secs ; Initialize timekeeping registersCLRF mins ;MOVLW .12MOVWF hoursBSF PIE1, TMR1IE; Enable Timer1 interruptRETURN

RTCisr; Insert the next 4 lines of code when TMR1; can not be reliably updated before clock pulse goes low

BTFSC TMR1L,0 ; wait for TMR1L to become clearBRA $-2 ; (may already be clear)BTFSS TMR1L,0 ; wait for TMR1L to become setBRA $-2 ; TMR1 has just incremented

; If TMR1 update can be completed before clock pulse goes low; Start ISR here

BSF TMR1H, 7 ; Preload for 1 sec overflowBCF PIR1, TMR1IF; Clear interrupt flagINCF secs, F ; Increment secondsMOVLW .59 ; 60 seconds elapsed?CPFSGT secsRETURN ; No, doneCLRF secs ; Clear secondsINCF mins, F ; Increment minutesMOVLW .59 ; 60 minutes elapsed?CPFSGT minsRETURN ; No, doneCLRF mins ; clear minutesINCF hours, F ; Increment hoursMOVLW .23 ; 24 hours elapsed?CPFSGT hoursRETURN ; No, doneCLRF hours ; Reset hoursRETURN ; Done

2013 Microchip Technology Inc. DS39762F_JP - p.179

Page 180: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

14.0 Timer2 モジュール

Timer2 タイマモジュールには以下の機能があります。

• 8 ビットのタイマと周期レジスタ( それぞれ TMR2 と PR2)

• 読み書き可能 ( 両レジスタ )

• ソフトウェア プログラマブル プリスケーラ(1:1、1:4、1:16)

• ソフトウェア プログラマブル ポストスケーラ(1:1 ~ 1:16)

• TMR2/PR2 一致割り込み

• MSSPx モジュールのシフトクロックとしての使用

このモジュールは、タイマの有効 / 無効、プリスケーラとポストスケーラを設定するT2CONレジスタ (レジスタ 14-1) によって制御します。制御ビット TMR2ON(T2CON<2>) をクリアして Timer2 を遮断する事で消費電力を低減できます。

図 14-1 に、このモジュールの概略ブロック図を示します。

14.1 Timer2 の動作

通常動作時、TMR2 は 00h からクロックごと (FOSC/4) にインクリメントされます。クロック入力に適用する4ビットのカウンタ /プリスケーラでは、直接入力、4分周、16分周のプリスケール値が使えます。これらの設定は、プリスケーラ制御ビットT2CKPS<1:0> (T2CON<1:0>)で選択します。クロックサイクルごとに、TMR2 の値と周期レジスタ PR2 の値が比較されます。2 つの値が一致すると、コンパレータはタイマ出力として一致信号を生成します。この信号は、次のサイクルで TMR2 の値を 00h にリセットし、出力カウンタ / ポストスケーラを駆動します ( セクション 14.2「Timer2 割り込み」参照 )。

TMR2 と PR2 レジスタは、いずれも直接読み書きできます。TMR2 レジスタは全てのデバイスリセットによってクリアされますが、PR2 レジスタは FFh に初期化されます。プリスケーラ カウンタとポストスケーラカウンタは、以下のイベントでクリアされます。

• TMR2 レジスタへの書き込み

• T2CON レジスタへの書き込み

• 何らかのデバイスリセット ( パワーオン リセット、MCLR リセット、ウォッチドッグ タイマ リセット、ブラウンアウト リセット )

T2CON レジスタに書き込んでも TMR2 はクリアされません。

レジスタ 14-1: T2CON: Timer2 制御レジスタ

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

— T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0

bit 7 bit 0

凡例 :

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

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

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

bit 6-3 T2OUTPS<3:0>: Timer2 出力ポストスケール値選択ビット

0000 = 1:1 のポストスケール値を選択する 0001 = 1:2 のポストスケール値を選択する • • • 1111 = 1:16 のポストスケール値を選択する

bit 2 TMR2ON: Timer2 ON/OFF 制御ビット

1 = Timer2 を ON にする 0 = Timer2 を OFF にする

bit 1-0 T2CKPS<1:0>: Timer2 クロック プリスケール値選択ビット

00 = 1:1 のプリスケール値を選択する 01 = 1:4 のプリスケール値を選択する 1x = 1:16 のプリスケール値を選択する

DS39762F_JP - p.180 2013 Microchip Technology Inc.

Page 181: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

14.2 Timer2 割り込み

Timer2は、デバイス割り込みを生成する事もできます。Timer2 の出力信号 (TMR2/PR2 一致 ) は、4 ビットの出力カウンタ / ポストスケーラに入力されます。このカウンタが、TMR2IF (PIR1<1>) にラッチされる TMR2一致割り込みフラグを生成します。割り込みは、TMR2一致割り込みイネーブルビット TMR2IE (PIE1<1>) をセットする事で有効にします。

ポストスケーラ制御ビットT2OUTPS<3:0> (T2CON<6:3>)によって 16 通りのポストスケール 値 (1:1 ~ 1:16) を選択できます。

14.3 Timer2 の出力

TMR2 の分周していない出力は、主に CCP モジュールでPWMモード動作のタイムベースとして使われます。

Timer2 は、SPI モードで動作する MSSPx モジュールのシフトクロック源として使う事もできます。詳細はセクション 20.0「マスタ同期シリアルポート (MSSP)モジュール」を参照してください。

図 14-1: Timer2 のブロック図

表 14-1: Timer2 のタイマ / カウンタ動作に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

TMR2 Timer2 レジスタ 70

T2CON - T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 70

PR2 Timer2 周期レジスタ 70

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は Timer2 モジュールでは使いません。

Comparator

TMR2 Output

TMR2

Postscaler

PR2

2

FOSC/4

1:1 to 1:164T2OUTPS<3:0>

T2CKPS<1:0>

Set TMR2IF

Internal Data Bus8

ResetTMR2/PR2

88

(to PWM or MSSPx)

Match

Prescaler1:1, 1:4, 1:16

2013 Microchip Technology Inc. DS39762F_JP - p.181

Page 182: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.182 2013 Microchip Technology Inc.

Page 183: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

15.0 Timer3 モジュール

Timer3タイマ /カウンタ モジュールには以下の機能があります。

• 16 ビットのタイマまたはカウンタ動作をソフトウェアによって選択可能

• 読み書き可能な 8 ビットのレジスタ (TMR3H とTMR3L)

• 内部または外部のクロック源と、デバイスクロックまたは Timer1 オシレータの内部オプションを選択可能

• オーバーフロー割り込み

• CCPx/ECCPx特殊イベントトリガによるモジュール リセット

図 15-1 に、Timer3 モジュールの概略ブロック図を示します。図 15-2 に、モジュールの読み書きモードの動作を説明するブロック図を示します。

Timer3モジュールはT3CONレジスタ(レジスタ 15-1)によって制御します。このレジスタはCCPxとECCPxモジュールのクロック源を選択する時にも使います( 詳細は、セクション 17.1.1「CCPx/ECCPx モジュールとタイマ リソース」を参照してください )。

レジスタ 15-1: T3CON: Timer3 制御レジスタ

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

RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON

bit 7 bit 0

凡例 :

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

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

bit 7 RD16: 16 ビット読み書きモード イネーブルビット

1 = 1 回の 16 ビット動作による Timer3 のレジスタ読み書きを有効に設定する0 = 2 回の 8 ビット動作による Timer3 のレジスタ読み書きを有効に設定する

bit 6,3 T3CCP<2:1>: CCPx/ECCPx に対する Timer3/Timer1 イネーブルビット

11 = Timer3 と Timer4 を全ての CCPx/ECCPx モジュールのクロック源とする10 = Timer3 と Timer4 を ECCP3、CCP4、CCP5 のクロック源とし、

Timer1 と Timer2 を ECCP1、ECCP2 のクロック源とする01 = Timer3 と Timer4 を ECCP2、ECCP3、CCP4、CCP5 のクロック源とし、

Timer1 と Timer2 を ECCP1 のクロック源とする00 = Timer1 と Timer2 を全ての CCPx/ECCPx モジュールのクロック源とする

bit 5-4 T3CKPS<1:0>: Timer3 入力クロック プリスケール値選択ビット

11 = 1:8 のプリスケール値を選択する 10 = 1:4 のプリスケール値を選択する 01 = 1:2 のプリスケール値を選択する 00 = 1:1 のプリスケール値を選択する

bit 2 T3SYNC: Timer3 外部クロック入力同期選択ビット ( デバイスクロックを Timer1/Timer3 から供給している場合は使用不可 )

TMR3CS = 1の場合 : 1 = 外部クロック入力を同期させない 0 = 外部クロック入力を同期させる

TMR3CS = 0の場合 : このビットを無視する。TMR3CS = 0の場合、Timer3 は内部クロックを使う

bit 1 TMR3CS: Timer3 クロック源選択ビット

1 = Timer1 オシレータまたは T13CKI からの外部クロック入力 ( 初の立ち下がりエッジ後の、立ち上がりエッジごと )

0 = 内部クロック (FOSC/4)

bit 0 TMR3ON: Timer3 ON/OFF 制御ビット

1 = Timer3 を ON にする 0 = Timer3 を OFF にする

2013 Microchip Technology Inc. DS39762F_JP - p.183

Page 184: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

15.1 Timer3 の動作

Timer3 は以下のいずれかのモードで動作します。

• タイマ

• 同期カウンタ

• 非同期カウンタ

動作モードはクロック選択ビットTMR3CS (T3CON<1>)によって決まります。TMR3CS をクリア (= 0) すると、Timer3 は内部命令サイクル (FOSC/4) ごとにインクリメントします。TMR3CS をセットすると、Timer3 は、Timer1 外部クロック入力または Timer1 オシレータ( 有効化している場合 ) のいずれかの立ち上がりエッジごとにインクリメントします。

Timer1 と同様に、Timer1 オシレータを有効にした場合、RC1/T1OSI と RC0/T1OSO/T13CKI ピンは入力になります。これは TRISC<1:0> の値が無視され、ピンが「0」として読み出される事を意味します。

図 15-1: Timer3 のブロック図

図 15-2: Timer3 のブロック図 (16 ビット読み書きモード )

T3SYNC

TMR3CS

T3CKPS<1:0>

Sleep InputT1OSCEN(1)

FOSC/4InternalClock

1

0

2

T1OSO/T13CKI

T1OSI

1

0

TMR3ON

TMR3LSet TMR3IFon Overflow

TMR3High Byte

Timer1 Oscillator

Note 1: イネーブルビット T1OSCEN をクリアすると、インバータとフィードバック抵抗が遮断され消費電力が低減します。

On/OffTimer3

ECCPx Special Event TriggerECCPx Select from T3CON<6,3>

Clear TMR3

Timer1 Clock Input

Prescaler1, 2, 4, 8

Synchronize

Detect

T3SYNC

TMR3CS

T3CKPS<1:0>

Sleep InputT1OSCEN(1)

FOSC/4InternalClock

1

0

2

T1OSO/T13CKI

T1OSI

Note 1: イネーブルビット T1OSCEN をクリアすると、インバータとフィードバック抵抗が遮断され消費電力が低減します。

1

0

TMR3L

Internal Data Bus

8

Set TMR3IFon Overflow

TMR3

TMR3H

High Byte

88

8

Read TMR1L

Write TMR1L

8

TMR3ON

ECCPx Special Event Trigger

Timer1 Oscillator

On/OffTimer3

Timer1 Clock Input

ECCPx Select from T3CON<6,3>

Clear TMR3

Prescaler1, 2, 4, 8

Synchronize

Detect

DS39762F_JP - p.184 2013 Microchip Technology Inc.

Page 185: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

15.2 Timer3 (16 ビット読み書きモード )

Timer3は、16ビットの読み書きが可能な設定 (図 15-2参照 ) にする事ができます。RD16 制御ビット(T3CON<7>) をセットすると、TMR3H のアドレスがTimer3 上位バイトのバッファレジスタにマッピングされます。TMR3L を読み出す事で、Timer3 の上位バイトの内容が Timer3 上位バイト バッファレジスタに格納されます。この動作により、Timer3 の全 16 ビットを正確に読み出す事ができます。下位バイトの前に読み出された上位バイトが、2 回の読み出しの間のロールオーバーによって無効になっていないかを検証する必要がありません。

読み出しと同様に、Timer3 の上位バイトへの書き込みも TMR3H のバッファレジスタを介して実行する必要があります。Timer3 の上位バイトは、TMR3L への書き込みを実行した時点で TMR3H の内容によって更新されます。これによって、ユーザは Timer3 の上位バイトと下位バイト両方の全 16 ビットを一括して書き込む事ができます。

このモードでは Timer3 の上位バイトを直接読み書きできません。読み書きは全て Timer3 上位バイト バッファレジスタを介して実行する必要があります。

TMR3H に書き込んでも、Timer3 のプリスケーラはクリアされません。プリスケーラがクリアされるのは、TMR3L に書き込んだ場合だけです。

15.3 Timer3 のクロック源としてのTimer1 オシレータの使用法

Timer3 のクロック源として Timer1 内部オシレータが使えます。Timer1 オシレータは、T1OSCEN (T1CON<3>)ビットをセットする事で有効にします。Timer3 のクロック源として使うには、TMR3CS ビットもセットする必要があります。前述の通り、この設定によってTimer3 はオシレータ信号源の立ち上がりエッジごとにインクリメントします。

Timer1 オシレータについては、セクション 13.0「Timer1 モジュール」で説明しています。

15.4 Timer3 割り込み

TMR3 レジスタペア (TMR3H:TMR3L) は 0000h からFFFFh までインクリメントした後、0000h にオーバーフローします。Timer3割り込みを有効にしている場合、オーバーフローが発生した時点で割り込みが発生し、割り込みフラグビット TMR3IF (PIR2<1>) にラッチされます。この割り込みは、Timer3 割り込みイネーブルビット TMR3IE (PIE2<1>) をセットまたはクリアする事で、有効または無効に設定できます。

15.5 ECCPx 特殊イベントトリガによるTimer3 のリセット

ECCP1またはECCP2がTimer3を使い、コンペアモードで特殊イベントトリガを生成するように設定されている場合 (CCPxM<3:0> = 1011)、このトリガ信号によって Timer3 がリセットされます。A/D モジュールを有効にしている場合、ECCP2 によるトリガは A/D 変換も起動します ( 詳細はセクション 18.2.1「特殊イベントトリガ」を参照してください )。

この機能を使うには、モジュールをタイマまたは同期カウンタのいずれかに設定する必要があります。この方法で使う場合、CCPRxH:CCPRxL レジスタペアは実質的に Timer3 の周期レジスタとして機能します。

Timer3 が非同期カウンタモードで動作している場合、リセット動作が機能しない可能性があります。

Timer3 への書き込みと ECCPx モジュールからの特殊イベントトリガが同時に発生した場合、書き込みが優先されます。

表 15-1: Timer3 のタイマ / カウンタ動作に関連するレジスタ

Note: ECCPxモジュールによる特殊イベントトリガは、TMR3IF 割り込みフラグビット(PIR2<1>) をセットしません。

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR2 OSCFIF CMIF ETHIF r BCL1IF - TMR3IF CCP2IF 71

PIE2 OSCFIE CMIE ETHIE r BCL1IE - TMR3IE CCP2IE 71

IPR2 OSCFIP CMIP ETHIP r BCL1IP - TMR3IP CCP2IP 71

TMR3L Timer3 レジスタ下位バイト 70

TMR3H Timer3 レジスタ上位バイト 70

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 70

T3CON RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 71

凡例 : - = 未実装ビット、「0」として読み出されます。r = 予約済みです。網掛けの部分は Timer3 モジュールでは使いません。

2013 Microchip Technology Inc. DS39762F_JP - p.185

Page 186: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.186 2013 Microchip Technology Inc.

Page 187: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

16.0 Timer4 モジュール

Timer4 モジュールには以下の機能があります。

• 8 ビットのタイマレジスタ (TMR4)

• 8 ビットの周期レジスタ (PR4)

• 読み書き可能 ( 両レジスタ )

• ソフトウェア プログラマブル プリスケーラ(1:1、1:4、1:16)

• ソフトウェア プログラマブル ポストスケーラ(1:1 ~ 1:16)

• TMR4/PR4 一致割り込み

Timer4 には、レジスタ 16-1 に示す制御レジスタがあります。制御ビット TMR4ON (T4CON<2>) をクリアして Timer4 を遮断する事で消費電力を低減できます。Timer4 のプリスケーラとポストスケーラの選択も、このレジスタによって制御します。図 16-1 に、Timer4モジュールの概略ブロック図を示します。

16.1 Timer4 の動作

Timer4 は、CCP モジュールの PWM モードのためのタイムベースとして使えます。TMR4 レジスタは読み書き可能で、全てのデバイスリセットによってクリアされます。入力クロック (FOSC/4) には、1:1、1:4、1:16のプリスケール オプションがあり、制御ビットT4CKPS<1:0> (T4CON<1:0>) で選択します。TMR4 の一致出力は、4 ビットのポストスケーラ (1:1 ~ 1:16 の分周が可能 ) を介して TMR4 割り込みを生成し、フラグビット TMR4IF (PIR3<3>) にラッチされます。

プリスケーラ カウンタとポストスケーラ カウンタは、以下のいずれかが発生するとクリアされます。

• TMR4 レジスタへの書き込み

• T4CON レジスタへの書き込み

• 何らかのデバイスリセット ( パワーオン リセット、MCLR リセット、ウォッチドッグ タイマ リセット、ブラウンアウト リセット )

T4CON レジスタに書き込んでも TMR4 はクリアされません。

レジスタ 16-1: T4CON: Timer4 制御レジスタ

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

— T4OUTPS3 T4OUTPS2 T4OUTPS1 T4OUTPS0 TMR4ON T4CKPS1 T4CKPS0

bit 7 bit 0

凡例 :

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

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

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

bit 6-3 T4OUTPS<3:0>: Timer4 出力ポストスケール値選択ビット

0000 = 1:1 のポストスケール値を選択する 0001 = 1:2 のポストスケール値を選択する • • • 1111 = 1:16 のポストスケール値を選択する

bit 2 TMR4ON: Timer4 ON/OFF 制御ビット

1 = Timer4 を ON にする 0 = Timer4 を OFF にする

bit 1-0 T4CKPS<1:0>: Timer4 クロック プリスケール値選択ビット

00 = 1:1 のプリスケール値を選択する 01 = 1:4 のプリスケール値を選択する 1x = 1:16 のプリスケール値を選択する

2013 Microchip Technology Inc. DS39762F_JP - p.187

Page 188: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

16.2 Timer4 割り込み

Timer4 モジュールには 8 ビットの周期レジスタ PR4があります。このレジスタは読み書き共に可能です。Timer4 は 00h から PR4 に一致するまでインクリメントし、次のインクリメント サイクルで 00h にリセットされます。リセット時、PR4 レジスタは FFh に初期化されます。

16.3 TMR4 の出力

TMR4の出力(ポストスケーラ入力前)は、CCPx/ECCPxモジュールの PWM タイムベースとしてのみ使われます。Timer2 の出力のように MSSPx モジュールの baudレートクロックとしては使われません。

図 16-1: Timer4 のブロック図

表 16-1: Timer4 のタイマ / カウンタ動作に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

IPR3 SSP2IP BCL2IP RC2IP TX2IP TMR4IP CCP5IP CCP4IP CCP3IP 71

PIR3 SSP2IF BCL2IF RC2IF TX2IF TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE TX2IE TMR4IE CCP5IE CCP4IE CCP3IE 71

TMR4 Timer4 レジスタ 72

T4CON - T4OUTPS3 T4OUTPS2 T4OUTPS1 T4OUTPS0 TMR4ON T4CKPS1 T4CKPS0 72

PR4 Timer4 周期レジスタ 72

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は Timer4 モジュールでは使いません。

Comparator

TMR4 Output

TMR4

Postscaler

PrescalerPR4

2

FOSC/4

1:1 to 1:16

1:1, 1:4, 1:16

4T4OUTPS<3:0>

T4CKPS<1:0>

Set TMR4IF

Internal Data Bus8

ResetTMR4/PR4

88

(to PWM)

Match

DS39762F_JP - p.188 2013 Microchip Technology Inc.

Page 189: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

17.0 キャプチャ / コンペア /PWM (CCP) モジュール

PIC18F97J60ファミリの全デバイスは合計5個のCCP( キャプチャ/ コンペア /PWM) モジュールを搭載しています。これらのうち 2 つ (CCP4 と CCP5) は、標準型のキャプチャ、コンペア、パルス幅変調 (PWM)モードを実装します。ここでは、これらについて説明します。その他の 3 つのモジュール (ECCP1、ECCP2、ECCP3) は、標準的なキャプチャ / コンペアモードに加えて、拡張 PWM モードを実装します。これらについては、セクション 18.0「拡張キャプチャ / コンペア /PWM(ECCP) モジュール」で説明します。

CCPx/ECCPx の各モジュールには、16 ビットのキャプチャ レジスタ、16 ビットのコンペアレジスタまたは PWM マスタ / スレーブ デューティ サイクル レジスタとして動作する、16 ビットレジスタが 1 つ含まれます。説明を分かりやすくするために、このセクショ

ンでは全ての CCPx モジュールの動作を、CCP4 の場合について説明しますが、その内容は CCP5 にも同様に適用されます。

この章で説明するキャプチャとコンペアの動作は、全ての標準 CCPx モジュールと拡張 CCPx モジュールに適用されます。セクション 17.4「PWM モード」で説明する PWM モードの動作は、CCP4 と CCP5 だけに適用されます。

Note: このセクションとセクション 18.0「拡張キャプチャ/コンペア/PWM (ECCP)モジュール」の全体を通して、特定の CCP モジュールに関連するレジスタ名とビット名は、個々のモジュール番号の代わりに「x」または「y」を使った総称名で表します。従って、「CCPxCON」は ECCP1、ECCP2、ECCP3、CCP4、CCP5 のいずれかに対応する制御レジスタを表します。

レジスタ 17-1: CCPxCON: CCPx 制御レジスタ (CCP4 と CCP5)

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

— — DCxB1 DCxB0 CCPxM3 CCPxM2 CCPxM1 CCPxM0

bit 7 bit 0

凡例 :

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

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

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

bit 5-4 DCxB<1:0>: CCPx モジュール PWM デューティ サイクル Bit 1 と Bit 0

キャプチャモード : 未使用

コンペアモード : 未使用

PWM モード : これらのビットは、10 ビットの PWM デューティ サイクル値の 下位 2 ビット (Bit 1 と Bit 0) です。デューティ サイクルの上位 8 ビット (DCxB<9:2>) は、CCPRxL 内で設定します。

bit 3-0 CCPxM<3:0>: CCPx モジュールモード選択ビット

0000 = キャプチャ / コンペア /PWM を無効にする (CCPx モジュールをリセット ) 0001 = 予約済み 0010 = コンペアモード、一致時に出力をトグル (CCPxIF ビットがセットされる ) 0011 = 予約済み 0100 = キャプチャモード、立ち下がりエッジごと 0101 = キャプチャモード、立ち上がりエッジごと0110 = キャプチャモード、立ち上がりエッジ 4 回ごと 0111 = キャプチャモード、立ち上がりエッジ 16 回ごと1000 = コンペアモード、CCPxピンをLowに初期化しコンペアの一致時にCCPxピンをHighにする

(CCPxIF ビットがセットされる ) 1001 = コンペアモード、CCPxピンをHighに初期化しコンペアの一致時にCCPxピンをLowにする

(CCPxIF ビットがセットされる ) 1010 = コンペアモード、コンペアの一致時にソフトウェア割り込みを生成する

(CCPxIF ビットがセットされ、CCPx ピンは I/O の状態を反映する ) 1011 = 予約済み11xx = PWM モード

2013 Microchip Technology Inc. DS39762_JP - p.189

Page 190: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

17.1 CCPx モジュールの設定

各キャプチャ / コンペア /PWM モジュールには、制御レジスタ ( 総称名は CCPxCON) とデータレジスタ(CCPRx)が関連付けられています。データレジスタは、さらに 2 つの 8 ビットレジスタ CCPRxL ( 下位バイト )と CCPRxH ( 上位バイト ) に分けられます。全てのレジスタは読み書きの両方が可能です。

17.1.1 CCPx/ECCPx モジュールとタイマリソース

CCPx/ECCPxモジュールは、選択したモードに応じて、Timer1、2、3、4 のいずれかを使います。Timer1 とTimer3はキャプチャまたはコンペアモードのモジュールで使えます。一方、Timer2 と Timer4 は PWM モードのモジュールで使えます。

表 17-1: CCPx/ECCPx モード - タイマリソース

モジュールに対する特定のタイマの割り当ては、T3CONレジスタ(183 ページのレジスタ 15-1)のCCPxに対するタイマ イネーブルビットで決まります。選択した設定に応じて、 大 4 つのタイマを同時にアクティブにできます。同じ設定 ( キャプチャ / コンペアまたはPWM)のモジュールはタイマリソースを共用します。図 17-1 に可能な設定を示します。

17.1.2 ECCP2 のピン割り当て

ECCP2 のピン割り当て ( キャプチャ入力、コンペアおよび PWM 出力 ) は、デバイス設定に基づいて変更できます。CCP2MX コンフィグレーション ビットは、ECCP2 をどのピンと多重化するかを決定します。既定値では RC1 と多重化されます (CCP2MX = 1)。コンフィグレーション ビットをクリアした場合、ECCP2はマイクロコントローラ モードの 80 ピンと 100 ピンデバイスでは RE7 と多重化され、拡張マイクロコントローラ モードの 100 ピンデバイスでは RB3 と多重化されます。

ECCP2 のピン割り当てを変更した場合、ポートピンに必要な設定はいずれも自動的には変更されません。このため、ECCP2 を正常に動作させるには、TRIS レジスタがピン配置に関わらず適切に設定されている事をユーザが常に確認する必要があります。

図 17-1: CCPx/ECCPx とタイマの相互接続設定

CCPx/ECCPx モード タイマリソース

キャプチャコンペア

PWM

Timer1 または Timer3Timer1 または Timer3Timer2 または Timer4

TMR1

CCP5

TMR2

TMR3

TMR4

CCP4

ECCP3

ECCP2

ECCP1

TMR1

TMR2

TMR3

CCP5

TMR4

CCP4

ECCP3

ECCP2

ECCP1

TMR1

TMR2

TMR3

CCP5

TMR4

CCP4

ECCP3

ECCP2

ECCP1

TMR1

TMR2

TMR3

CCP5

TMR4

CCP4

ECCP3

ECCP2

ECCP1

T3CCP<2:1> = 00 T3CCP<2:1> = 01 T3CCP<2:1> = 10 T3CCP<2:1> = 11

Timer1 を、全 CCPx モジュール

の全キャプチャ / コンペア動作

に使います。Timer2 を全 CCPxモジュールのPWM動作に使い

ます。どちらのタイマリソース

も、共通のタイムベースとして

モジュール間で共用できます。

Timer3とTimer4は使えません。

Timer1 と Timer2 を ECCP1のみのキャプチャ/コンペア

またはPWM動作 (選択した

モードによる ) に使います。

その他のモジュールは、全て

Timer3またはTimer4を使い

ます。モジュールがキャプ

チャ / コンペアまたは PWMモードに設定されている場

合、共通のタイムベースとし

て、いずれかのタイマリソー

スを共用できます。

Timer1 と Timer2 を ECCP1 と

ECCP2 のみのキャプチャ / コン

ペアまたは PWM 動作 ( 各モ

ジュールに対して選択したモー

ドによる ) に使います。2 つのモ

ジュールが両方共キャプチャ /コンペアモードまたは PWMモードに設定されている場合、

共通のタイムベースとして 1 つ

のタイマを共用できます。

その他のモジュールは、Timer3または Timer4 を使います。モ

ジュールがキャプチャ / コンペ

アまたは PWM モードに設定さ

れている場合、共通のタイム

ベースとして、いずれかのタイ

マリソースを共用できます。

Timer3 を全ての CCPx モ

ジュールの、全てのキャプ

チャおよびコンペア動作に

使います。Timer4 を全ての

CCPxモジュールのPWM動

作に使います。どちらのタ

イマリソースも、共通のタ

イムベースとしてモジュー

ル間で共用できます。

Timer1 と Timer2 は使えま

せん。

DS39762_JP - p.190 2013 Microchip Technology Inc.

Page 191: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2013 Microchip Technology Inc. DS39762_JP - p.191

17.2 キャプチャモード

キャプチャモードでは、対応する CCPx ピンでイベントが発生すると、TMR1 または TMR3 レジスタの 16ビットの値が CCPRxH:CCPRxL レジスタペアにキャプチャされます。イベントとしては、以下のいずれか1 つを指定します。

• 全ての立ち下がりエッジ

• 全ての立ち上がりエッジ

• 立ち上がりエッジ 4 回ごと

• 立ち上がりエッジ 16 回ごと

イベントはモード選択ビットCCPxM<3:0> (CCPxCON<3:0>)で選択します。キャプチャが実行されると、割り込み要求フラグビット CCPxIF がセットされます。このフラグは、ソフトウェアによってクリアする必要があります。CCPRx レジスタの値を読み出す前に再度キャプチャ イベントが発生した場合、前回キャプチャされた値は新しい値によって上書きされます。

17.2.1 CCPx ピンの設定

キャプチャモードで使う CCPx ピンは、対応する TRIS方向ビットをセットする事で入力に設定する必要があります。

17.2.2 Timer1/Timer3 モード選択

キャプチャ機能で使うタイマ (Timer1および Timer3またはどちらか一方 ) は、タイマモードまたは同期カウンタモードで動作させておく必要があります。非同期カウンタモードではキャプチャ機能を使う事ができません。各 CCPx モジュールで使うタイマは、T3CON レジスタで選択します (セクション 17.1.1「CCPx/ECCPxモジュールとタイマ リソース」参照 )。

17.2.3 ソフトウェア割り込み

キャプチャモードを別のモードに変更した場合、不正なキャプチャ割り込みが生成される事があります。このような誤った割り込みの発生を避けるために、ユーザは割り込みイネーブルビット CCPxIE をクリアしておく必要があります。また、このような動作モードの変更後は、割り込みフラグビット CCPxIF もクリアする必要があります。

17.2.4 CCPx プリスケーラ

キャプチャモードには 4 つのプリスケーラ設定があります。いずれを選択するかは、動作モード選択の一部としてモード選択ビット (CCPxM<3:0>)によって指定します。CCPx モジュールを OFF、またはキャプチャモードを無効に設定すると、プリスケーラ カウンタがクリアされます。これは、全てのリセットでプリスケーラ カウンタがクリアされる事を意味します。

あるキャプチャ プリスケーラから他のプリスケーラに切り換えると割り込みが発生する場合があります。また、切り換え時にはプリスケーラ カウンタがクリアされないため、変更後の 初のキャプチャがゼロ以外からカウントを開始したプリスケーラによって発生する恐れもあります。例 17-1 に、キャプチャ プリスケーラを切り換える際に推奨する方法を示します。この例ではプリスケーラ カウンタをクリアする事で、誤った割り込みの発生を回避します。

例 17-1: キャプチャ プリスケーラの変更(CCP5 の例を表示 )

図 17-2: キャプチャモード動作のブロック図

Note: RG4/CCP5/P1D を出力に設定した場合、そのポートへの書き込み動作を実行するとキャプチャ条件が発生します。

CLRF CCP5CON ; Turn CCP module offMOVLW NEW_CAPT_PS ; Load WREG with the

; new prescaler mode; value and CCP ON

MOVWF CCP5CON ; Load CCP5CON with; this value

CCPR4H CCPR4L

TMR1H TMR1L

Set CCP4IF

TMR3Enable

Q1:Q4

CCP4CON<3:0>

CCP4 Pin

Prescaler 1, 4, 16

andEdge Detect

TMR1Enable

T3CCP2

T3CCP2

CCPR5H CCPR5L

TMR1H TMR1L

Set CCP5IF

TMR3Enable

CCP5CON<3:0>

CCP5 Pin

Prescaler 1, 4, 16

TMR3H TMR3L

TMR1Enable

T3CCP2T3CCP1

T3CCP2T3CCP1

TMR3H TMR3L

andEdge Detect

4

4

4

Page 192: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

17.3 コンペアモード

コンペアモードでは、CCPRx レジスタの 16 ビットの値を、TMR1 または TMR3 レジスタペアのいずれかの値と常時比較します。2 つの値が一致すると、CCPxピンは以下のいずれかの動作を示します。

• High に駆動

• Low に駆動

• トグル (High から Low へ、または Low から High へ )

• 変化なし (= I/O ラッチの状態を反映 )

ピンの動作はモード選択ビット (CCPxM<3:0>)の値によって決まります。同時に、割り込みフラグビットCCPxIF がセットされます。

17.3.1 CCPx ピンの設定

ユーザは、対応する TRIS ビットをクリアして、CCPxピンを出力に設定する必要があります。

17.3.2 Timer1/Timer3 モード選択

CCPx モジュールでコンペア機能を使う場合、Timer1および Timer3 ( またはどちらか一方 ) はタイマモードまたは同期カウンタモードで動作している必要があります。非同期カウンタモードでは、コンペア機能が動作しない可能性があります。

17.3.3 ソフトウェア割り込みモード

ソフトウェア割り込み生成モードを選択した場合(CCPxM<3:0> = 1010)、対応する CCPx ピンの動作に変化はありません。CCPx 割り込みだけが生成され ( 有効にしている場合 )、CCPxIF ビットがセットされます。

図 17-3: コンペアモード動作のブロック図

Note: CCP5CON レジスタをクリアすると、RG4コンペア出力ラッチ ( デバイスの設定による ) が強制的に既定値の Low レベルに設定されます。このラッチは、PORTB またはPORTCの I/Oデータラッチとは別のラッチです。

CCPR4H CCPR4L

TMR1H TMR1L

ComparatorQS

R

OutputLogic

Set CCP4IF

CCP4 Pin

TRIS

CCP4CON<3:0>

Output Enable

TMR3H TMR3L

CCPR5H CCPR5L

Comparator

1

0

T3CCP2T3CCP1

Set CCP5IF

1

0

Compare

4

QS

R

OutputLogic

CCP5 Pin

TRIS

CCP5CON<3:0>

Output Enable4

Match

CompareMatch

DS39762_JP - p.192 2013 Microchip Technology Inc.

Page 193: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 17-2: キャプチャ、コンペア、Timer1、Timer3 に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

RCON IPEN - CM RI TO PD POR BOR 70

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR2 OSCFIF CMIF ETHIF r BCL1IF - TMR3IF CCP2IF 71

PIE2 OSCFIE CMIE ETHIE r BCL1IE - TMR3IE CCP2IE 71

IPR2 OSCFIP CMIP ETHIP r BCL1IP - TMR3IP CCP2IP 71

PIR3 SSP2IF BCL2IF RC2IF TX2IF TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE TX2IE TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP BCL2IP RC2IP TX2IP TMR4IP CCP5IP CCP4IP CCP3IP 71

TRISG TRISG7 TRISG6 TRISG5 TRISG4 TRISG3(1) TRISG2 TRISG1 TRISG0 71

TMR1L Timer1 レジスタ下位バイト 70

TMR1H Timer1 レジスタ上位バイト 70

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 70

TMR3H Timer3 レジスタ上位バイト 70

TMR3L Timer3 レジスタ下位バイト 70

T3CON RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 71

CCPR4L キャプチャ / コンペア /PWM レジスタ 4 下位バイト 72

CCPR4H キャプチャ / コンペア /PWM レジスタ 4 上位バイト 72

CCPR5L キャプチャ / コンペア /PWM レジスタ 5 下位バイト 73

CCPR5H キャプチャ / コンペア /PWM レジスタ 5 上位バイト 73

CCP4CON - - DC4B1 DC4B0 CCP4M3 CCP4M2 CCP4M1 CCP4M0 73

CCP5CON - - DC5B1 DC5B0 CCP5M3 CCP5M2 CCP5M1 CCP5M0 73

凡例 : - = 未実装ビット、「0」として読み出されます。r = 予約済みです。網掛けの部分はキャプチャ / コンペア、Timer1、Timer3 では使いません。

Note 1: このビットは 80 ピンと 100 ピンデバイスにのみ実装されています。それ以外のデバイスでは未実装で「0」として読み出されます。

2013 Microchip Technology Inc. DS39762_JP - p.193

Page 194: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

17.4 PWM モード

パルス幅変調 (PWM) モードでは、CCPx ピンに 大分解能 10 ビットの PWM 出力が生成されます。CCP4 ピンと CCP5 ピンは PORTG のデータラッチと多重化されているため、これらのピンを出力にするには対応する TRISG ビットをクリアする必要があります。

図 17-4 に、PWM モードの CCPx モジュールの概略ブロック図を示します。

CCPx モジュールを PWM 動作用に設定する手順については、セクション 17.4.3「PWM 動作の設定」を参照してください。

図 17-4: PWM 動作の概略ブロック図

PWM 出力 ( 図 17-5) にはタイムベース ( 周期 ) と、出力が High に保持される期間 ( デューティ サイクル ) があります。PWM の周波数は、周期の逆数です (1/ 周期 )。

図 17-5: PWM 出力

17.4.1 PWM 周期

PWM 周期は、PR2 (PR4) レジスタに書き込んで指定します。PWM 周期は式 17-1 によって計算できます。

式 17-1:

PWM 周波数は、1/[PWM 周期 ] として定義されます。

TMR2 (TMR4) と PR2 (PR4) が等しくなると、直後のインクリメント サイクルで以下の3つのイベントが実行されます。

• TMR2 (TMR4) がクリアされる

• CCPxピンがセットされる (例外 : PWMのデューティ サイクル = 0%の場合、CCPxピンはセットされない )

• PWM のデューティ サイクルが CCPRxL からCCPRxH にラッチされる

17.4.2 PWM デューティ サイクル

PWM デューティ サイクルは、CCPRxL レジスタとCCPxCON<5:4>ビットに書き込む事で指定します。大分解能は 10 ビットです。CCPRxL には上位 8 ビット、CCPxCON<5:4> には下位 2 ビットを格納します。この 10 ビットの値は CCPRxL:CCPxCON<5:4> のように表します。PWM のデューティ サイクル比を時間で計算するには、式 17-2 を使います。

式 17-2:

CCPRxL と CCPxCON<5:4> にはいつでも書き込む事ができますが、PR2 (PR4) と TMR2 (TMR4) が一致するまで、すなわち周期が完了するまでデューティ サイクルの値は CCPRxH にラッチされません。PWM モードでは、CCPRxH は読み出し専用レジスタです。

Note: CCP4CON またはCCP5CONレジスタをクリアすると、RG3 または RG4 出力ラッチ (デバイスの設定による )が強制的に既定値の Low レベルに設定されます。これは PORTG の I/O データラッチとは別のラッチです。

CCPRxL

Comparator

Comparator

PRx

CCPxCON<5:4>

QS

R CCPx

TRISOutput Enable

CCPRxH

TMRx

2 LSbs LatchedFrom Q clocks

Reset

MatchTMRx = PRx

Latch

09

(1)

Note 1: デューティ サイクル レジスタの 下位 2 ビットは、モジュール ハードウェアの一部である 2 ビットのラッチに保持されます。CCPRx レジスタとは物理的に分離されています。

Duty Cycle Register

Set CCPx pin

Duty Cycle

Pin

Period

Duty Cycle

TMR2 (TMR4) = PR2 (TMR4)

TMR2 (TMR4) = Duty Cycle

TMR2 (TMR4) = PR2 (PR4)

Note: Timer2とTimer4のポストスケーラ (セクション 14.0「Timer2 モジュール」とセクション 16.0「Timer4 モジュール」参照 )は、PWM 周波数の決定には使いません。ポストスケーラによって、PWM 出力とは異なる周波数のサーボ更新レートが使えます。

PWM 周期 = [(PR2) + 1] ・ 4 ・ TOSC ・ (TMR2 プリスケール値 )

PWM デューティ サイクル =(CCPRXL:CCPXCON<5:4>) ・TOSC ・ (TMRx プリスケール値 )

DS39762_JP - p.194 2013 Microchip Technology Inc.

Page 195: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

CCPRxH レジスタと 2 ビットの内部ラッチが PWMデューティ サイクルの二重バッファとして使われます。この二重バッファは、グリッチのない PWM 動作に不可欠です。

CCPRxHと2ビットのラッチに格納された値が、TMR2(TMR4)の値と内部の2ビットQクロックまたはTMR2(TMR4) プリスケーラの 2 ビットを連結した値に一致すると、CCPx ピンがクリアされます。

PWMの周波数に対する 大分解能(ビット)は、式 17-3で求める事ができます。

式 17-3:

17.4.3 PWM 動作の設定

CCPx モジュールを PWM 動作に設定する手順は以下の通りです。

1. PR2 (PR4) レジスタへの書き込みにより PWM の周期を設定する。

2. CCPRxL レジスタと CCPxCON<5:4> ビットへの書き込みによりPWMのデューティ サイクルを設定する。

3. 対応する TRIS ビットをクリアして CCPx ピンを出力に設定する。

4. TMR2 (TMR4)のプリスケール値を設定し、T2CON(T4CON) への書き込みにより Timer2 (Timer4) を有効にする。

5. CCPx モジュールを PWM 動作用に設定する。

表 17-3: 40 MHz における PWM の周波数と分解能の例

Note: PWMのデューティ サイクル値がPWM周期よりも長い場合、CCPx ピンはクリアされません。

log(FPWM

log(2)

FOSC )bitsPWM Resolution (max) =

PWM の周波数 2.44 kHz 9.77 kHz 39.06 kHz 156.25 kHz 312.50 kHz 416.67 kHz

タイマのプリスケーラ (1、4、16) 16 4 1 1 1 1

PR2 の値 FFh FFh FFh 3Fh 1Fh 17h

大分解能 ( ビット ) 10 10 10 8 7 6.58

2013 Microchip Technology Inc. DS39762_JP - p.195

Page 196: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 17-4: PWM、Timer2、Timer4 に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

RCON IPEN - CM RI TO PD POR BOR 70

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR3 SSP2IF BCL2IF RC2IF TX2IF TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE TX2IE TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP BCL2IP RC2IP TX2IP TMR4IP CCP5IP CCP4IP CCP3IP 71

TRISG TRISG7 TRISG6 TRISG5 TRISG4 TRISG3(1) TRISG2 TRISG1 TRISG0 71

TMR2 Timer2 レジスタ 70

PR2 Timer2 周期レジスタ 70

T2CON - T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 70

TMR4 Timer4 レジスタ 72

PR4 Timer4 周期レジスタ 72

T4CON - T4OUTPS3 T4OUTPS2 T4OUTPS1 T4OUTPS0 TMR4ON T4CKPS1 T4CKPS0 72

CCPR4L キャプチャ / コンペア /PWM レジスタ 4 下位バイト 72

CCPR4H キャプチャ / コンペア /PWM レジスタ 4 上位バイト 72

CCPR5L キャプチャ / コンペア /PWM レジスタ 5 下位バイト 73

CCPR5H キャプチャ / コンペア /PWM レジスタ 5 上位バイト 73

CCP4CON - - DC4B1 DC4B0 CCP4M3 CCP4M2 CCP4M1 CCP4M0 73

CCP5CON - - DC5B1 DC5B0 CCP5M3 CCP5M2 CCP5M1 CCP5M0 73

凡例 : — = 未実装、「0」として読み出されます。網掛けの部分は PWM、Timer2、Timer4 では使いません。

Note 1: このビットは 80 ピンと 100 ピンデバイスにのみ実装されています。それ以外のデバイスでは未実装で「0」として読み出されます。

DS39762_JP - p.196 2013 Microchip Technology Inc.

Page 197: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

18.0 拡張キャプチャ / コンペア /PWM (ECCP) モジュール

PIC18F97J60 ファミリでは、CCP モジュールのうち 3つが拡張 PWM 機能を備えた標準 CCP モジュールとして実装されています。これらのモジュールは、2 つまたは 4 つの出力チャンネル、ユーザによる極性選択、デッドバンド制御、自動シャットダウンと再起動等の機能を備えています。拡張機能については、セクション 18.4「拡張 PWM モード」で詳細に説明します。ECCPx モジュールのキャプチャ、コンペア、シングル出力 PWM機能は、標準 CCPx モジュールで説明したものと同じです。

レジスタ 18-1 に拡張 CCPx モジュールの制御レジスタを示します。PWM 機能を制御するために 上位 2ビットが実装されている点が、CCP4CON/CCP5CONレジスタとの違いです。

拡張CCPxCONレジスタにより使えるモードが多い事に加えて、ECCPx モジュールには拡張 PWM 動作と自動シャットダウン機能に関連する、以下の 2 つのレジスタが追加されています。

• ECCPxDEL ( デッドバンド遅延 )

• ECCPxAS ( 自動シャットダウンの設定 )

2013 Microchip Technology Inc. DS39762F_JP - p.197

Page 198: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 18-1: CCPxCON: 拡張 CCPx 制御レジスタ (ECCP1/ECCP2/ECCP3)

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

PxM1 PxM0 DCxB1 DCxB0 CCPxM3 CCPxM2 CCPxM1 CCPxM0

bit 7 bit 0

凡例 :

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

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

bit 7-6 PxM<1:0>: 拡張 PWM 出力コンフィグレーション ビット

CCPxM<3:2> = 00、01、10の場合 : xx = PxA にキャプチャ/ コンペア入力 / 出力を割り当て、PxB、PxC、PxD をポートピンに割り当てる

CCPxM<3:2> = 11の場合 : 00 =シングル出力 : PxA に変調信号を出力、PxB、PxC、PxD をポートピンに割り当てる01 =フルブリッジ順方向出力 : P1D に変調信号を出力、P1A をアクティブ、P1B、P1C を非アク

ティブに駆動する10 =ハーフブリッジ出力 : P1A、P1B にデッドバンド制御された変調信号を出力、P1C、P1D をポー

トピンに割り当てる11 =フルブリッジ逆方向出力 : P1B に変調信号を出力、P1C をアクティブ、P1A、P1D を非アク

ティブに駆動する

bit 5-4 DCxB<1:0>: ECCPx モジュール PWM デューティ サイクル Bit 1 と Bit 0

キャプチャモード : 未使用

コンペアモード : 未使用

PWM モード : これらのビットは、10 ビットの PWM デューティ サイクル値の下位 2 ビットである。デューティ サイクルの上位 8 ビットは CCPRxL 内で設定する。

bit 3-0 CCPxM<3:0>: ECCPx モジュールモード選択ビット

0000 = キャプチャ / コンペア /PWM を無効にする (ECCPx モジュールをリセットする ) 0001 = 予約済み 0010 = コンペアモード、一致時に出力をトグルする0011 = キャプチャモード 0100 = キャプチャモード、立ち下がりエッジごと 0101 = キャプチャモード、立ち上がりエッジごと0110 = キャプチャモード、立ち上がりエッジ 4 回ごと 0111 = キャプチャモード、立ち上がりエッジ 16 回ごと1000 = コンペアモード、ECCPx ピンを Low に初期化し、比較一致時に出力をセットする

( 同時に CCPxIF をセットする ) 1001 = コンペアモード、ECCPx ピンを High に初期化し、比較一致時に出力をクリアする

( 同時に CCPxIF をセットする ) 1010 = コンペアモード、ソフトウェア割り込みのみを生成し、ECCPxピンは I/Oポートの状態に戻す1011 = コンペアモード、特殊イベントをトリガする (ECCPx が TMR1 または TMR3 をリセットし、

CCPxIF ビットをセットする。A/D モジュールが有効な場合は A/D 変換を開始する )(1)

1100 = PWM モード、PxA と PxC はアクティブ High、PxB と PxD もアクティブ High1101 = PWM モード、PxA と PxC はアクティブ High、PxB と PxD はアクティブ Low1110 = PWM モード、PxA と PxC はアクティブ Low、PxB と PxD はアクティブ High1111 = PWM モード、PxA と PxC はアクティブ Low、PxB と PxD もアクティブ Low

Note 1: ECCP1 と ECCP2 にのみ実装されています。ECCP3 の「1010」と同じです。

DS39762F_JP - p. 198 2013 Microchip Technology Inc.

Page 199: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

18.1 ECCPx出力とコンフィグレーション

拡張 CCPx モジュールは、それぞれ選択した動作モードに応じて 大 4 つの PWM 信号を出力できます。PxA ~ PxD と呼ばれるこれらの出力は、各種 I/O ピンと多重化されています。ECCPx ピンの割り当てには固定しているものと、デバイス コンフィグレーションに応じて変化するものがあります。割り当てが変化するピンに対する制御ビットは以下の通りです。

• CCP2MX コンフィグレーション ビット(80 ピン /100 ピンデバイスのみ )

• ECCPMX コンフィグレーション ビット(80 ピン /100 ピンデバイスのみ )

• プログラムメモリの動作モードを設定する EMB コンフィグレーション ビット (100 ピンデバイスのみ )

表 18-1、表 18-2、表 18-3 に、拡張 CCPx モジュールのピン割り当て一覧を示します。I/O ピンを PWM 出力として設定するには、PxMx ビットと CCPxMx ビット ( それぞれ CCPxCON<7:6> と <3:0>) を設定して適切な PWM モードを選択する必要があります。また、対応するポートピンの TRIS 方向ビットも出力として設定する必要があります。

18.1.1 ECCP1/ECCP3 の出力とプログラムメモリ モード

100ピンデバイスで拡張マイクロコントローラ モードを使うと、拡張PWMモードにおけるECCP1とECCP3のピンに間接的な影響が及びます。既定値では、PWM出力のP1B/P1C とP3B/P3C は外部メモリバスの上位バイトと共に PORTE ピンと多重化されます。バスが拡張マイクロコントローラ モードでアクティブになると、拡張 CCPx 出力はこれにオーバーライドされて使えなくなります。このため、デバイスを既定値のピン設定により拡張マイクロコントローラ モードで動作させる場合、ECCP1 と ECCP3 は互換 PWM モード( シングル出力 ) でしか使えません。

このコンフィグレーションに対する例外は、外部バスのアドレス幅として 12 ビットを選択した場合です(EMB<1:0> コンフィグレーション ビット = 10)。その場合、外部バスがアクティブでも PORTE の上位ピンはデジタル I/O として動作しつづけます。P1B/P1C とP3B/P3C も引き続き拡張 PWM 出力として使えます。

拡張マイクロコントローラ モード動作中に追加のPWM 出力が必要なアプリケーションでは、P1B/P1Cと P3B/P3C 出力の割り当てを PORTH の上位ビットに変更できます。それには ECCPMX コンフィグレーション ビットをクリアします。

18.1.2 ECCP2 の出力とプログラムメモリ モード

100 ピンデバイスでは、デバイスのプログラムメモリモード ( セクション 6.1.3「PIC18F9XJ60/9XJ65 のプログラム メモリ モード」) もモジュールのピン多重化に影響を与えます。

ECCP2 の入力 / 出力 (ECCP2/P2A) は、3 本のピンのいずれかと多重化できます。全デバイスの既定値割り当て (CCP2MXコンフィグレーション ビットをセット)はRC1 です。CCP2MX をクリアすると、80 ピン /100 ピンデバイスではECCP2/P2Aの割り当てがRE7に変更されます。

100 ピンデバイスには、もう 1 つのオプションがあります。これらのデバイスをマイクロコントローラ モードで動作させた場合、上記の多重化オプションは引き続き有効です。拡張マイクロコントローラ モードで動作させた場合、CCP2MX をクリアすると ECCP2/P2Aが RB3 に割り当てられます。

18.1.3 ECCP1/ECCP3 による CCP4/CCP5の使用

ECCP2 モジュールだけが、4 本の専用出力ピンを使えます。これらのピンの I/O ポートやその他の多重化された機能を使わない場合、他の CCPx モジュールに影響を与える事なくこれらのピンを使えます。

これに対して ECCP1 と ECCP3 は、専用出力ピンを3 本 (ECCPx/PxA、PxB、PxC) しか備えていません。これらのモジュールをクワッド PWM モードに設定した場合、通常は CCP4 または CCP5 に使うピンが、それぞれ ECCP3 と ECCP1 の PxD 出力になります。CCP4 モジュールと CCP5 モジュールは引き続き動作しますが、出力はオーバーライドされます。

18.1.4 ECCPx モジュールとタイマリソース

標準 CCPx モジュールと同様に、ECCPx モジュールは、選択したモードに応じて、Timer1、2、3、4 のいずれかを使えます。Timer1 と Timer3 はキャプチャまたはコンペアモードに設定されたモジュールで使えます。一方、Timer2 と Timer4 は PWM モードのモジュールで使えます。タイマリソースの詳細はセクション 17.1.1「CCPx/ECCPx モジュールとタイマ リソース」で説明しています。

2013 Microchip Technology Inc. DS39762F_JP - p.199

Page 200: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 18-1: ECCP1 のピン設定

表 18-2: ECCP2 のピン設定

ECCP モード

CCP1CONコンフィグレーション

RC2 RD0 またはRE6(1) RE5 RG4 RH7(2) RH6(2)

64 ピンデバイス、80 ピンデバイス、ECCPMX = 1100 ピンデバイス、ECCPMX = 1、マイクロコントローラ モードまたは

アドレス幅 12 ビットの拡張マイクロコントローラ モード :

互換性のある CCP 00xx 11xx ECCP1 RD0/RE6 RE5 RG4/CCP5 RH7/AN15 RH6/AN14

デュアル PWM 10xx 11xx P1A P1B RE5 RG4/CCP5 RH7/AN15 RH6/AN14

クワッド PWM x1xx 11xx P1A P1B P1C P1D RH7/AN15 RH6/AN14

80 ピンデバイス、ECCPMX = 0 100 ピンデバイス、ECCPMX = 0、全てのプログラムメモリ モード :

互換性のある CCP 00xx 11xx ECCP1 RD0/RE6 RE5/AD13 RG4/CCP5 RH7/AN15 RH6/AN14

デュアル PWM 10xx 11xx P1A RD0/RE6 RE5/AD13 RG4/CCP5 P1B RH6/AN14

クワッド PWM(3) x1xx 11xx P1A RD0/RE6 RE5/AD13 P1D P1B P1C

100 ピンデバイス、ECCPMX = 1、アドレス幅 16 ビットまたは 20 ビットの拡張マイクロコントローラ モード :

互換性のある CCP 00xx 11xx ECCP1 RD0/RE6 RE5/AD13 RG4/CCP5 RH7/AN15 RH6/AN14

凡例 : x = ドントケア、網掛けの部分は、そのモードの ECCP1 では使わない事を意味します。

Note 1: P1B は 64 ピンデバイスでは RD0、80 ピン /100 ピンデバイスでは RE6 と多重化されます。

2: これらのピンオプションは、64 ピンデバイスでは使えません。

3: ECCP1 をクワッド PWM モードで使う場合、CCP5 ピンの出力が P1D によってオーバーライドされます。CCP5 のこれ以外の機能は全て通常通り動作します。

ECCP モード

CCP2CONコンフィグレーション

RB3 RC1 RE7 RE2 RE1 RE0

全デバイス、CCP2MX = 1、全てのプログラムメモリ モード :

互換性のある CCP 00xx 11xx RB3/INT3 ECCP2 RE7 RE2 RE1 RE0

デュアル PWM 10xx 11xx RB3/INT3 P2A RE7 P2B RE1 RE0

クワッド PWM x1xx 11xx RB3/INT3 P2A RE7 P2B P2C P2D

80 ピン /100 ピンデバイス、CCP2MX = 0、マイクロコントローラ モード :

互換性のある CCP 00xx 11xx RB3/INT3 RC1/T1OS1 ECCP2 RE2 RE1 RE0

デュアル PWM 10xx 11xx RB3/INT3 RC1/T1OS1 P2A P2B RE1 RE0

クワッド PWM x1xx 11xx RB3/INT3 RC1/T1OS1 P2A P2B P2C P2D

100 ピンデバイス、CCP2MX = 0、拡張マイクロコントローラ モード :

互換性のある CCP 00xx 11xx ECCP2 RC1/T1OS1 RE7/AD15 RE2/CS RE1/WR RE0/RD

デュアル PWM 10xx 11xx P2A RC1/T1OS1 RE7/AD15 P2B RE1/WR RE0/RD

クワッド PWM x1xx 11xx P2A RC1/T1OS1 RE7/AD15 P2B P2C P2D

凡例 : x = ドントケア、網掛けの部分は、そのモードの ECCP2 では使わない事を意味します。

DS39762F_JP - p. 200 2013 Microchip Technology Inc.

Page 201: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 18-3: ECCP3 のピン設定

ECCP モード

CCP3CONコンフィグレーション

RD1 またはRG0(1) RE4 RE3 RD2 または

RG3(1) RH5(2) RH4(2)

64 ピンデバイス、80 ピンデバイス、ECCPMX = 1100 ピンデバイス、ECCPMX = 1、マイクロコントローラ モード :

互換性のある CCP 00xx 11xx ECCP3 RE4 RE3 RD2/RG3 RH5/AN13 RH4/AN12

デュアル PWM 10xx 11xx P3A P3B RE3 RD2/RG3 RH5/AN13 RH4/AN12

クワッド PWM x1xx 11xx P3A P3B P3C P3D RH5/AN13 RH4/AN12

80 ピンデバイス、ECCPMX = 0 100 ピンデバイス、ECCPMX = 0、全てのプログラムメモリ モード :

互換性のある CCP 00xx 11xx ECCP3 RE6/AD14 RE5/AD13 RD2/RG3 RH5/AN13 RH4/AN12

デュアル PWM 10xx 11xx P3A RE6/AD14 RE5/AD13 RD2/RG3 P3B RH4/AN12

クワッド PWM(3) x1xx 11xx P3A RE6/AD14 RE5/AD13 P3D P3B P3C

100 ピンデバイス、ECCPMX = 1、アドレス幅 12 ビットの拡張マイクロコントローラ モード :

互換性のある CCP 00xx 11xx ECCP3 RE4/AD12 RE3/AD11 RD2/RG3 RH5/AN13 RH4/AN12

デュアル PWM 10xx 11xx P3A P3B RE3/AD11 RD2/RG3 RH5/AN13 RH4/AN12

100 ピンデバイス、ECCPMX = 1、アドレス幅 16 ビットまたは 20 ビットの拡張マイクロコントローラ モード :

互換性のある CCP 00xx 11xx ECCP3 RE6/AD14 RE5/AD13 RD2/RG3 RH5/AN13 RH4/AN12

凡例 : x = ドントケア、網掛けの部分は、そのモードの ECCP3 では使わない事を意味します。

Note 1: ECCP3/P3A と CCP4/P3D は 64 ピンデバイスでは RD1 と RD2、80 ピン /100 ピンデバイスでは RG0 とRG3 に多重化されます。

2: これらのピンオプションは、64 ピンデバイスでは使えません。

3: ECCP3 をクワッド PWM モードで使う場合、CCP4 ピンの出力が P3D によってオーバーライドされます。CCP4 のこれ以外の機能は全て通常通り動作します。

2013 Microchip Technology Inc. DS39762F_JP - p.201

Page 202: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

18.2 キャプチャ / コンペアモード

後述する特殊イベントトリガの動作を除き、ECCPx モジュールのキャプチャ/コンペアモードの動作はCCP4の場合と同じです。詳細はセクション 17.2「キャプチャモード」とセクション 17.3「コンペアモード」で説明しています。

18.2.1 特殊イベントトリガ

ECCP1 と ECCP2 は、コンペアモードで CCPRx レジスタペアと選択したタイマの値が一致した時に生成される、内部ハードウェア トリガを備えています。このトリガはその後の動作の開始に使えます。このモードは、CCPxCON<3:0> を「1011」に設定する事で選択します。

ECCP1またはECCP2の特殊イベントトリガは、TMR1または TMR3 レジスタペアをリセットします。どちらがリセットされるかは、現在選択されているタイマリソースによって決まります。この機能によって、CCPRxレジスタを実質的に Timer1 または Timer3 の 16 ビットのプログラマブル周期レジスタとして使えます。さらに、A/D モジュールが有効な場合、ECCP2 の特殊イベントトリガによって A/D 変換も起動されます。

特殊イベントトリガは ECCP3、CCP4、CCP5 には実装されていません。これらのモジュールに対して特殊イベントトリガ モードを選択すると、ソフトウェア割り込みモードのコンペアを選択した場合(CCPxM<3:0> = 1010)と同じ効果が得られます。

18.3 標準 PWM モード

シングル出力モードに設定された ECCPx モジュールは、セクション 17.4「PWM モード」で説明した PWMモードの標準CCPxモジュールと同じ動作を示します。表 18-1 ~ 18-3で示したように、この設定を「互換CCP」モードと呼ぶ場合もあります。

Note: ECCP2 の特殊イベントトリガは、Timer1またはTimer3の割り込みフラグビットをセットしません。

Note: シングル出力の PWM 動作を設定する場合、セクション 17.4.3「PWM 動作の設定」とセクション 18.4.9「PWM 動作の設定」で示すプロセスのどちらでも選ぶ事ができます。後者はより一般的で、シングル出力PWMとマルチ出力PWMの両方に適用できます。

DS39762F_JP - p. 202 2013 Microchip Technology Inc.

Page 203: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

18.4 拡張 PWM モード

拡張 PWM モードでは、より広範な制御アプリケーションに対応できるように、PWM 出力オプションが追加されます。このモジュールは標準 CCPx モジュールと互換性があり、 大 4 つの出力 (PxA ~ PxD) を提供します。信号の極性も選択できます ( アクティブHigh またはアクティブ Low)。モジュールの出力モードと極性は、CCPxCON レジスタの PxM<1:0> およびCCPxM<3:0> ビット ( それぞれ CCPxCON<7:6> と<3:0>) によって設定します。

説明を分かりやすくするために、このセクションではECCP1 および TMR2 モジュールの拡張 PWM モード動作を説明します。制御レジスタの名前は ECCP1 で使うものを示します。3 つの拡張モジュールと 2 つのタイマリソースは、全て入れ換え可能であり、動作は同じです。TMR2 または TMR4 は、T3CON の該当するビットを選択する事で PWM 動作を選択できます。

図 18-1 に、PWM 動作の概略ブロック図を示します。出力のいずれにもグリッチが発生しないように、全ての制御レジスタはダブルバッファ構成を取り、新しいPWM サイクルの開始時点 (Timer2 がリセットされる周期の境界 )で読み込みを実行します。例外は、ECCP1のデッドバンド遅延レジスタ ECCP1DEL です。このレジスタには、デューティ サイクルの境界または周期の境界のいずれか ( 先に発生した方 ) の時点で値が読み込まれます。バッファ動作によって、モジュールはただちに起動せず、割り当てられたタイマがリセットされるまで待機します。これは、拡張 PWM の波形が、

標準 PWM の波形と完全には一致せず、1 命令サイクル全体 (4 TOSC)に相当するオフセットが発生する事を意味します。

標準モジュールと同様、対応する TRIS ビットを手作業で出力用に設定する必要があります。

18.4.1 PWM 周期

PWM 周期は、PR2 レジスタに書き込んで指定します。PWM の周期は、以下の式で計算できます。

式 18-1:

PWM 周波数は、1/[PWM 周期 ] として定義されます。TMR2 と PR2 が等しくなると、直後のインクリメントサイクルで以下の 3 つのイベントが実行されます。

• TMR2 がクリアされる

• ECCP1 ピンがセットされる (PWM のデューティ サイクル = 0% の場合、ECCP1 ピンはセットされません )

• PWM デューティ サイクルが CCPR1L からCCPR1H にコピーされる

図 18-1: 拡張 PWM モジュールの概略ブロック図

Note: PWMの周波数は、Timer2のポストスケーラ ( セクション 14.0「Timer2 モジュール」参照 ) に関係なく決定します。ポストスケーラによって、PWM 出力とは異なる周波数のサーボ更新レートが使えます。

PWM 周期 = [(PR2) + 1] ・ 4 ・ Tosc ・ (TMR2プリスケール値)

CCPR1L

CCPR1H (Slave)

Comparator

TMR2

Comparator

PR2

(Note 1)

R Q

S

Duty Cycle Registers

Clear Timer,set ECCP1 pin and latch D.C.

Note: 8 ビットのタイマレジスタ TMR2 と 2 ビットの内部 Q クロックまたはプリスケーラの 2 ビットを連結して、10 ビットのタイムベースを生成します。

TRISx<x>

ECCP1/P1A

TRISx<x>

P1B

TRISx<x>

TRISx<x>

P1D

OutputController

P1M1<1:0>2

CCP1M<3:0>4

ECCP1DEL

ECCP1/P1A

P1B

P1C

P1D

P1C

CCP1CON<5:4>

2013 Microchip Technology Inc. DS39762F_JP - p.203

Page 204: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

18.4.2 PWM のデューティ サイクル

PWM のデューティ サイクルは、CCPR1L レジスタとCCP1CON<5:4> ビットに書き込む事で指定します。大 10 ビットの分解能を使えます。CCPR1L には上位

8 ビット、CCP1CON<5:4> には下位 2 ビットを格納します。この 10 ビットの値は CCPR1L:CCP1CON<5:4>のように表します。PWM のデューティ サイクルは、下式で求める事ができます。

式 18-2:

CCPR1L と CCP1CON<5:4> にはいつでも書き込む事ができますが、PR2 と TMR2 が一致するまで ( すなわち、周期が完了するまで )、デューティ サイクルの値は CCPR1H にコピーされません。PWM モードでは、CCPR1H は読み出し専用レジスタです。

CCPR1H レジスタと 2 ビットの内部ラッチが PWMデューティ サイクルの二重バッファとして使われます。この二重バッファは、グリッチのない PWM 動作に不可欠です。CCPR1H と 2 ビットのラッチに格納された値が、TMR2 の値と内部の 2 ビット Q クロックまたはTMR2 プリスケーラの 2 ビットを連結した値に一致すると、ECCP1 ピンがクリアされます。PWM の周波数に対する 大分解能は、以下の式から計算できます。

式 18-3:

18.4.3 PWM の出力コンフィグレーション

CCP1CON レジスタの P1M<1:0> ビットによって、以下の 4 つのコンフィグレーションのいずれかを選択できます。

• シングル出力

• ハーフブリッジ出力

• フルブリッジ出力、順方向モード

• フルブリッジ出力、逆方向モード

シングル出力モードは、セクション 18.4「拡張 PWMモード」で説明している標準 PWM モードです。ハーフブリッジおよびフルブリッジ出力モードの詳細は後述します。

図 18-2 に、全コンフィグレーションによる出力関係を示します。

表 18-4: 40 MHz 時の PWM 周波数と分解能の例

PWM デューティ サイクル =(CCPR1L:CCP1CON<5:4>) ・TOSC ・ (TMR2 プリスケール値 )

( )PWM Resolution (max) =

FOSC

FPWMlog

log(2)bits

Note: PWMのデューティ サイクル値がPWM周期よりも長い場合、ECCP1 ピンはクリアされません。

PWM の周波数 2.44 kHz 9.77 kHz 39.06 kHz 156.25 kHz 312.50 kHz 416.67 kHz

タイマのプリスケーラ (1、4、16) 16 4 1 1 1 1

PR2 の値 FFh FFh FFh 3Fh 1Fh 17h

大分解能 ( ビット ) 10 10 10 8 7 6.58

DS39762F_JP - p. 204 2013 Microchip Technology Inc.

Page 205: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 18-2: PWM 出力の関係 ( アクティブ High 状態 )

0

Period

00

10

01

11

SIGNALPR2 + 1

CCP1CON<7:6>

P1A Modulated

P1A Modulated

P1B Modulated

P1A Active

P1B Inactive

P1C Inactive

P1D Modulated

P1A Inactive

P1B Modulated

P1C Active

P1D Inactive

DutyCycle

(Single Output)

(Half-Bridge)

(Full-Bridge,Forward)

(Full-Bridge,Reverse)

Delay(1) Delay(1)

関係 :• Period = 4 * TOSC * (PR2 + 1) * (TMR2 Prescale Value)• Duty Cycle = TOSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 Prescale Value)• Delay = 4 * TOSC * (ECCP1DEL<6:0>)

Note 1: デッドバンド遅延は ECCP1DEL レジスタによってプログラムします ( セクション 18.4.6「プログラマブルなデッドバンド遅延」)。

2013 Microchip Technology Inc. DS39762F_JP - p.205

Page 206: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 18-3: PWM 出力の関係 ( アクティブ Low 状態 )

0

Period

00

10

01

11

SIGNAL PR2 + 1CCP1CON<7:6> DutyCycle

(Single Output)

(Half-Bridge)

(Full-Bridge,Forward)

(Full-Bridge,Reverse)

Delay(1) Delay(1)

関係 :• Period = 4 * TOSC * (PR2 + 1) * (TMR2 Prescale Value)• Duty Cycle = TOSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 Prescale Value)• Delay = 4 * TOSC * (ECCP1DEL<6:0>)

Note 1: デッドバンド遅延は ECCP1DEL レジスタによってプログラムします ( セクション 18.4.6「プログラマブルなデッドバンド遅延」)。

P1A Modulated

P1A Modulated

P1B Modulated

P1A Active

P1B Inactive

P1C Inactive

P1D Modulated

P1A Inactive

P1B Modulated

P1C Active

P1D Inactive

DS39762F_JP - p. 206 2013 Microchip Technology Inc.

Page 207: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

18.4.4 ハーフブリッジ モード

ハーフブリッジ出力モードでは、プッシュプル型の負荷を駆動するために出力として2本のピンを使います。PWM 出力信号が P1A ピンに出力され、相補 PWM 出力信号が P1B ピンに出力されます ( 図 18-4)。図 18-5に示すように、このモードはハーフブリッジ アプリケーションに使える他、2 つの PWM 信号で 4 つのパワースイッチを変調するフルブリッジ アプリケーションにも使えます。

ハーフブリッジ出力モードでは、プログラマブルなデッドバンド遅延を使ってハーフブリッジ パワーデバイスの貫通電流を防ぐ事ができます。P1DC<6:0>ビットの値によって、出力をアクティブに駆動するまでの遅延を命令サイクル数として設定します。この値がデューティ サイクルより大きい場合、対応する出力はサイクル全体で非アクティブのままです。デッドバンド遅延動作の詳細は、セクション 18.4.6「プログラマブルなデッドバンド遅延」を参照してください。

P1A と P1B 出力は PORTC<2> と PORTE<6> のデータラッチと多重化されているため、TRISC<2> とTRISE<6> ビットをクリアして、P1A と P1B を出力に設定する必要があります。

図 18-4: ハーフブリッジ PWM 出力

図 18-5: ハーフブリッジ出力モード アプリケーションの例

Period

Duty Cycle

td

td

(1)

P1A(2)

P1B(2)

td = Dead Band Delay

Period

(1) (1)

Note 1: この時点で TMR2 レジスタと PR2 レジス

タの値が等しくなります。

2: 出力信号はアクティブHighとして示してい

ます。

PIC18F97J60

P1A

P1B

FETDriver

FETDriver

V+

V-

Load

+V-

+V-

FETDriver

FETDriver

V+

V-

Load

FETDriver

FETDriver

PIC18F97J60

P1A

P1B

Standard Half-Bridge Circuit (“Push-Pull”)

Half-Bridge Output Driving a Full-Bridge Circuit

2013 Microchip Technology Inc. DS39762F_JP - p.207

Page 208: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

18.4.5 フルブリッジ モード

フルブリッジ出力モードでは 4 本のピンを出力に使います。しかし、同時にアクティブになるのは、このうち 2 つの出力だけです。順方向モードの場合、P1A ピンは常時アクティブであり、P1D ピンに変調信号が出力されます。逆方向モードでは、P1C ピンが常時アクティブであり、P1B ピンに変調信号が出力されます。図 18-6 にこれらの状態を示します。

P1A、P1B、P1C、P1D の出力は、表 18-1 と表 18-3 に示すポートピンのデータラッチと多重化されています。P1A、P1B、P1C、P1D ピンを出力に設定するために、対応する TRIS ビットをクリアする必要があります。

図 18-6: フルブリッジ PWM 出力

Period

Duty Cycle

P1A(2)

P1B(2)

P1C(2)

P1D(2)

Forward Mode

(1)

Period

Duty Cycle

P1A(2)

P1C(2)

P1D(2)

P1B(2)

Reverse Mode

(1)

(1)(1)

Note 1: この時点で TMR2 レジスタと PR2 レジスタの値が等しくなります。

2: 出力信号はアクティブ High として示しています。

DS39762F_JP - p. 208 2013 Microchip Technology Inc.

Page 209: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 18-7: フルブリッジ アプリケーションの例

18.4.5.1 フルブリッジ モードにおける方向の変更

フルブリッジ出力モードでは、CCP1CON レジスタのP1M1 ビットによって、ユーザが順方向 / 逆方向を制御できます。アプリケーション ファームウェアがこの方向制御ビットを変更すると、モジュールは次のPWMサイクルで方向を切り換えます。

現在の PWM 周期が完了する直前に、変調出力 (P1Bと P1D) は非アクティブの状態に移行し、非変調出力(P1A と P1C) は逆方向の駆動に切り換わります。この動作は、次の PWM 周期が始まる前、4 TOSC * (Timer2プリスケール値 ) の間に実行されます。Timer2 のプリスケール値は、T2CKPS ビット (T2CON<1:0>) の値に応じた、1、4、16 のいずれかです。非変調出力の切り換えから次の周期の始まりまでの期間、変調出力 (P1Bと P1D) は非アクティブの状態を保ちます。図 18-8 にこの関係を示します。

フルブリッジ出力モードの ECCP1 モジュールではデッドバンド遅延機能を使えない事に注意してください。このモードの変調出力は常に 1 つだけであるため、通常デッドバンド遅延は不要です。しかしデッドバンド遅延が必要となり得るケースが1つ存在します。それは、以下の条件が 2 つとも真の場合です。

1. 出力のデューティ サイクルが100%またはそれに近い状態で PWM 出力の方向が変化した

2. パワースイッチ ( パワーデバイスとドライバ回路を含む ) のターンオフ時間がターンオン時間よりも長い

図 18-9 に、デューティ サイクルが 100% に近い状態で、PWM の方向が順方向から逆方向に変化する場合の例を示します。時間 t1 では出力 P1A と P1D が非アクティブになり、出力 P1C がアクティブになります。この例では、パワーデバイスのターンオフ時間がターンオン時間よりも長いため、パワーデバイスの QC とQD ( 図 18-7 参照 ) に「t」の時間だけ貫通電流が流れる可能性があります。PWM の方向が逆方向から順方向に変わる場合も、パワーデバイス QA と QB に同様の現象が発生します。

アプリケーションで、高いデューティ サイクルでPWMの方向を変更する必要がある場合、以下のいずれかの要件を満たす必要があります。

1. 方向を変更する前のPWM周期のPWMデューティサイクルを小さくする

2. ターンオン時間よりもターンオフ時間の短いスイッチドライバを使う

貫通電流を防止する方法は上記以外にも考えられます。

PIC18F97J60

P1A

P1C

FETDriver

FETDriver

V+

V-

Load

FETDriver

FETDriver

P1B

P1D

QA

QB QD

QC

2013 Microchip Technology Inc. DS39762F_JP - p.209

Page 210: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 18-8: PWM の方向変更

図 18-9: デューティ サイクルが 100% に近い状態での PWM の方向変更

DC

Period(1)SIGNAL

Note 1: ECCP1 制御レジスタの方向ビット (CCP1CON<7>) には、PWM サイクル中いつでも書き込む事ができます。

2: 方向を変更する場合、P1A および P1C 信号は、現在の PWM サイクルが終了する前、4 TOSC、16 TOSC、64 TOSC

のいずれかの長さで切り換わります。この長さは Timer2 のプリスケール値によって決まります。この期間、変

調された P1B 信号と P1D 信号は非アクティブです。

Period

(Note 2)

P1A (Active-High)

P1B (Active-High)

P1C (Active-High)

P1D (Active-High)

DC

Forward Period Reverse Period

P1A(1)

tON(2)

tOFF(3)

t = tOFF – tON(2,3)

P1B(1)

P1C(1)

P1D(1)

External Switch D(1)

PotentialShoot-Through

Current(1)

Note 1: 信号は全てアクティブ High として示しています。

2: tON は、パワースイッチ QC とそのドライバのターンオン遅延です。

3: tOFF は、パワースイッチ QD とそのドライバのターンオフ遅延です。

External Switch C(1)

t1

DC

DC

DS39762F_JP - p. 210 2013 Microchip Technology Inc.

Page 211: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

18.4.6 プログラマブルなデッドバンド遅延

ハーフブリッジ アプリケーションでは、常に全てのパワースイッチが PWM 周波数で変調されるため、パワースイッチは通常、ターンオンよりターンオフに長い時間を必要とします。上下のパワースイッチが同時に切り換わる場合 ( 一方がターンオン、他方がターンオフ )、一方のスイッチが完全にターンオフするまでに、短いながら両方のスイッチが ON になる期間が発生する可能性があります。このわずかな期間、2 つのパワースイッチを通して非常に大きな電流 ( 貫通電流 ) が流れ、ブリッジの電源が短絡する場合があります。回路に損傷を与えかねないこのスイッチング時の貫通電流を防止するために、通常いずれかのパワースイッチのターンオンを遅延させ、その間にもう一方のスイッチが完全にターンオフできるようにします。

ハーフブリッジ出力モードでは、貫通電流がブリッジのパワースイッチを破壊するのを防ぐため、デジタルプログラムが可能なデッドバンド遅延を使えます。信号の非アクティブ状態からアクティブ状態への遷移を遅延させます。図 18-4 を参照してください。遅延時間は、ECCP1DEL レジスタ ( レジスタ 18-2) の下位 7ビットを使って、マイクロコントローラの命令サイクル数 (TCY または 4 TOSC) 単位で設定します。

18.4.7 拡張 PWM の自動シャットダウン

ECCP1 を拡張 PWM のいずれかのモードにプログラムした場合、アクティブな出力ピンに自動シャットダウン機能を設定できます。自動シャットダウンは、シャットダウン イベント発生時に拡張PWMの出力ピンをただちに指定されたシャットダウン状態に移行させます。

シャットダウン イベントは、2 つのコンパレータ モジュールまたは FLT0 ピンのいずれか ( またはこれら 3つの要因の任意の組み合わせ ) によって発生します。コ

ンパレータは、ブリッジ回路内で監視している電流に比例する電圧入力を監視できます。電圧がしきい値を超えるとコンパレータの状態が切り換わり、シャットダウンをトリガします。これに代わる方法として、FLT0ピンの Low レベルのデジタル信号によってシャットダウンをトリガする事も可能です。自動シャットダウン機能は、トリガとなる要因を 1 つも選択しない事で無効にできます。自動シャットダウンのトリガに使う要因は、ECCP1AS<2:0> ビット (ECCP1AS<6:4>) によって選択します。

シャットダウンが発生すると、出力ピンはPSS1AC<1:0>およびPSS1BD<1:0>ビット (ECCP1AS<3:0>)によって指定されたシャットダウン状態に非同期で移行します。各ピンペア (P1A/P1C と P1B/P1D) は、High 駆動、Low駆動、3 ステート ( 駆動しない ) のいずれかに設定できます。ECCP1ASE ビット (ECCP1AS<7>) も、拡張PWM 出力をシャットダウン状態に保持するためにセットされます。

ECCP1ASE ビットは、シャットダウン イベントが発生するとハードウェアによってセットされます。自動再起動が無効の場合、ECCP1ASE ビットはシャットダウンの原因が解消された時点でファームウェアによってクリアされます。自動再起動が有効な場合、ECC1PASEビットは自動シャットダウンの原因が解消された時点で自動的にクリアされます。

PWM周期の開始時にECCP1ASEビットがセットされた場合、その PWM 周期の全体にわたり、PWM 出力はシャットダウン状態に保たれます。ECCP1ASE ビットがクリアされると、PWM 出力は次の PWM 周期の開始時点で通常動作に戻ります。

Note: シャットダウン条件有効時、ECCP1ASEビットへの書き込みは無効です。

レジスタ 18-2: ECCP1DEL: ECCP1 デッドバンド遅延レジスタ

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

P1RSEN P1DC6 P1DC5 P1DC4 P1DC3 P1DC2 P1DC1 P1DC0

bit 7 bit 0

凡例 :

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

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

bit 7 P1RSEN: PWM 再起動イネーブルビット

1 = 自動シャットダウン後、シャットダウン条件が解消されると自動的に ECCP1ASE ビットをクリアし、PWM 動作を自動的に再開する

0 = 自動シャットダウン後、PWM 動作を再開するにはソフトウェアで ECCP1ASE をクリアする必要がある

bit 6-0 P1DC<6:0>: PWM 遅延カウントビット

PWM 信号がアクティブに変化する設定された遷移時点から実際の遷移時点までの遅延時間である。FOSC/4 (4 * TOSC) のサイクル数によって指定する

2013 Microchip Technology Inc. DS39762F_JP - p.211

Page 212: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 18-3: ECCP1AS: ECCP1 自動シャットダウン コンフィグレーション レジスタ

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

ECCP1ASE ECCP1AS2 ECCP1AS1 ECCP1AS0 PSS1AC1 PSS1AC0 PSS1BD1 PSS1BD0

bit 7 bit 0

凡例 :

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

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

bit 7 ECCP1ASE: ECCP1 自動シャットダウン イベント ステータスビット

0 = ECCP1 出力は動作中である 1 = シャットダウン イベントが発生し、ECCP1 出力がシャットダウン状態である

bit 6-4 ECCP1AS<2:0>: ECCP1 自動シャットダウン要因選択ビット

000 = 自動シャットダウンを無効にする001 = コンパレータ 1 出力010 = コンパレータ 2 出力011 = コンパレータ 1、コンパレータ 2 のいずれか100 = FLT0101 = FLT0 またはコンパレータ 1110 = FLT0 またはコンパレータ 2111 = FLT0、コンパレータ 1、コンパレータ 2 のいずれか

bit 3-2 PSS1AC<1:0>: A および C ピン シャットダウン状態制御ビット

00 = A および C ピンを「0」に駆動する01 = A および C ピンを「1」に駆動する1x = A および C ピンを 3 ステートに設定する

bit 1-0 PSS1BD<1:0>: B および D ピン シャットダウン状態制御ビット

00 = B および D ピンを「0」に駆動する01 = B および D ピンを「1」に駆動する1x = B および D ピンを 3 ステートに設定する

DS39762F_JP - p. 212 2013 Microchip Technology Inc.

Page 213: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2013 Microchip Technology Inc. DS39762F_JP - p.213

18.4.7.1 自動シャットダウンと自動再起動

自動シャットダウン機能には、シャットダウン イベントの発生後にモジュールを自動的に再起動する設定が用意されています。この設定は、ECCP1DEL レジスタの P1RSEN ビット (ECCP1DEL<7>) をセットする事で有効になります。

P1RSEN = 1 (図 18-10)のシャットダウン モードでは、シャットダウンの原因が解消されない限り、ECCP1ASEビットはセットされたままです。シャットダウン条件が解消されると、ECCP1ASEビットがクリアされます。P1RSEN = 0の場合 ( 図 18-11)、シャットダウン条件が発生すると、ECCP1ASEビットはファームウェアによってクリアされるまでセットされたままです。ECCP1ASEビットがクリアされると、次の PWM 周期の開始時点から拡張 PWM 動作が再開します。

自動シャットダウン要因がコンパレータの場合、P1RSEN ビットの設定に関わらず、シャットダウン条件はレベル検出となります。シャットダウンの原因が解消されない限り、ECCP1ASE ビットはクリアできません。

ECCP1ASE ビットに「1」を書き込む事で、自動シャットダウン状態に強制的に移行させます。

18.4.8 起動に関する注意点

ECCP1 モジュールを PWM モードで使う場合、アプリケーション ハードウェアでは PWM 出力ピンに適切な外部プルアップまたはプルダウン抵抗 ( あるいは両方 )を接続する必要があります。マイクロコントローラのリセット状態が解除されると、全ての I/O ピンがハイ インピーダンス状態に移行します。マイクロコントローラが適切な信号レベルで I/O ピンを駆動しはじめるまで、あるいは PWM 出力をアクティブにするまで、外部回路によってパワースイッチ デバイスをOFF状態に保つ必要があります。

CCP1M<1:0> ビット (CCP1CON<1:0>) によって、PWM 出力ピンの各ペア (P1A/P1C と P1B/P1D) の信号を、アクティブ High とアクティブ Low のどちらにするかを選択できます。PWM 出力の極性は、PWMピンを出力に設定する前に選択しておく必要があります。PWM ピンの出力設定と同時に極性の設定を変える事は推奨できません。アプリケーション回路を損傷する恐れがあります。

PWM モジュールの初期化中は、P1A、P1B、P1C、P1Dの出力ラッチが適正な状態にない可能性があります。PWM ピンを出力に設定する動作と、ECCP1 モジュールの有効化を同時に実行すると、アプリケーション回路を損傷する恐れがあります。ECCP1 モジュールを適切な出力モードで有効化し、PWM サイクルを 1 回完全に終了させてから PWM ピンを出力ピンに設定してください。PWM サイクルが完了した事は、2 サイクル目のPWM周期が開始する時点でTMR2IFビットがセットされる事で確認できます。

図 18-10: PWM の自動シャットダウン (P1RSEN = 1、自動再起動を有効にしている場合 )

図 18-11: PWM の自動シャットダウン (P1RSEN = 0、自動再起動を無効にしている場合 )

Note: シ ャ ッ ト ダ ウ ン 条 件 が 有 効 な 間 は、ECCP1ASE ビットへの書き込みは無効です。

Shutdown

PWM

ECCP1ASE bit

Activity

Event

ShutdownEvent Occurs

ShutdownEvent Clears

PWMResumes

Normal PWM

Start ofPWM Period

PWM Period

Shutdown

PWM

ECCP1ASE bit

Activity

Event

ShutdownEvent Occurs

ShutdownEvent Clears

PWMResumes

Normal PWM

Start ofPWM Period

ECCP1ASECleared byFirmware

PWM Period

Page 214: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

18.4.9 PWM 動作の設定

ECCP1 モジュールを PWM 動作に設定する手順は以下の通りです。

1. 対応する TRIS ビットをセットして、PWM ピンのP1A と P1B ( 使う場合は P1C と P1D も ) を入力に設定する。

2. PR2 (PR4) レジスタへの読み込みにより PWM の周期を設定する。

3. CCP1CON レジスタに適切な値を読み込んで、ECCP1 モジュールを必要な PWM モードとコンフィグレーションに設定する。

• P1M<1:0> ビットにより、使用可能な出力コンフィグレーションと方向の中から 1 つを選択する。

• CCP1M<3:0> ビットにより、PWM 出力信号の極性を選択する。

4. CCPR1L レジスタと CCP1CON<5:4> ビットに値を読み込んで、PWM のデューティ サイクルを設定する。

5. 自動シャットダウンに関する設定 :

• 自動シャットダウンを無効にする(ECCP1ASE = 0)。

• 自動シャットダウンの要因を設定する。

• Run 条件を待機する。

6. ハーフブリッジ出力モードの場合、ECCP1DEL<6:0>に適切な値を読み込んで、デッドバンド遅延を設定する。

7. 自 動 シ ャ ッ ト ダ ウ ン 動 作 が 必 要 な 場 合、ECCP1AS レジスタに以下の通り値を読み込む。

• ECCP1AS<2:0> ビットにより自動シャットダウン信号源を選択する。

• PSS1AC<1:0> および PSS1BD<1:0> ビットにより PWM 出力ピンのシャットダウン状態を選択する。

• ECCP1ASE ビット (ECCP1AS<7>) をセットする。

8. 自動再起動の動作が必要な場合、P1RSEN ビット(ECCP1DEL<7>) をセットする。

9. TMR2 (TMR4) を設定、起動する。

• TMRxIF ビット (Timer2 の場合 PIR1<1>、Timer4 の場合 PIR3<3>) をクリアして TMRx割り込みフラグビットをクリアする。

• TxCKPS ビット (Timer2 の場合T2CON<1:0>、Timer4 の場合 T4CON<1:0>)に値を読み込んで TMRx のプリスケール値を設定する。

• TMRxON ビット (Timer2 の場合 T2CON<2>、Timer4 の場合 T4CON<2>) をセットしてTimer2 ( または Timer4) を有効にする。

10. 新しい PWM サイクルの開始後に PWM 出力を有効にする。

• TMR2 (TMR4) がオーバーフローする (TMRxIFビットがセットされる ) まで待機する。

• 対応する TRIS ビットをクリアしてECCP1/P1A、P1B、P1C、P1D ピン出力のいずれか、または全てを有効にする。

• ECCP1ASE ビット (ECCP1AS<7>) をクリアする。

18.4.10 リセットの影響

パワーオン リセットおよびそれ以降のリセットは、いずれも全ポートを強制的に入力モードに設定し、CCPx/ECCPx レジスタをリセット状態に移行させます。

これによって、拡張 CCPx モジュールは標準 CCPx モジュールと互換性のある状態にリセットされます。

DS39762F_JP - p. 214 2013 Microchip Technology Inc.

Page 215: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 18-5: ECCPx モジュールと Timer1 ~ 4 に関連するレジスタ

レジスタ名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

リセット

値の記載

ページ

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

RCON IPEN - CM RI TO PD POR BOR 70

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR2 OSCFIF CMIF ETHIF r BCL1IF - TMR3IF CCP2IF 71

PIE2 OSCFIE CMIE ETHIE r BCL1IE - TMR3IE CCP2IE 71

IPR2 OSCFIP CMIP ETHIP r BCL1IP - TMR3IP CCP2IP 71

PIR3 SSP2IF BCL2IF RC2IF TX2IF TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE TX2IE TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP BCL2IP RC2IP TX2IP TMR4IP CCP5IP CCP4IP CCP3IP 71

TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 71

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 71

TRISD(1) TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 71

TRISE TRISE7(2) TRISE6(2) TRISE5 TRISE4 TRISE3 TRISE2 TRISE1 TRISE0 71

TRISG TRISG7 TRISG6 TRISG5 TRISG4 TRISG3(2) TRISG2 TRISG1 TRISG0(2) 71

TRISH(2) TRISH7 TRISH6 TRISH5 TRISH4 TRISH3 TRISH2 TRISH1 TRISH0 71

TMR1L Timer1 レジスタ下位バイト 70

TMR1H Timer1 レジスタ上位バイト 70

T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 70

TMR2 Timer2 レジスタ 70

T2CON - T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 70

PR2 Timer2 周期レジスタ 70

TMR3L Timer3 レジスタ下位バイト 70

TMR3H Timer3 レジスタ上位バイト 70

T3CON RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 71

TMR4 Timer4 レジスタ 72

T4CON - T4OUTPS3 T4OUTPS2 T4OUTPS1 T4OUTPS0 TMR4ON T4CKPS1 T4CKPS0 72

PR4 Timer4 周期レジスタ 72

CCPRxL(3)キャプチャ / コンペア /PWM レジスタ x 下位バイト 70

CCPRxH(3)キャプチャ / コンペア /PWM レジスタ x 上位バイト 70

CCPxCON(3) PxM1 PxM0 DCxB1 DCxB0 CCPxM3 CCPxM2 CCPxM1 CCPxM0 70

ECCPxAS(3) ECCPXASE ECCPXAS2 ECCPXAS1 ECCPXAS0 PSSXAC1 PSSXAC0 PSSXBD1 PSSXBD0 70, 73

ECCPxDEL(3) PxRSEN PxDC6 PxDC5 PxDC4 PxDC3 PxDC2 PxDC1 PxDC0 72

凡例 : - = 未実装ビット、「0」として読み出されます。r = 予約済みです。網掛けの部分は ECCPx 動作には使いません。

Note 1: 64 ピンデバイスにのみ適用されます。

2: レジスタおよび特定のビットは 64 ピンデバイスには実装されていません。

3: 全ての拡張 CCPx モジュールに対して使う、同一レジスタ全体を指す総称名です。「x」によって個別のモジュール

(ECCP1、ECCP2、ECCP3) を区別します。総称名が同じレジスタ間では、ビット割り当てとリセット値も同じです。

2013 Microchip Technology Inc. DS39762F_JP - p.215

Page 216: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p. 216 2013 Microchip Technology Inc.

Page 217: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.0 Ethernet モジュール

PIC18F97J60 ファミリは、全て Ethernet コントローラ モジュールを内蔵しています。このモジュールはMAC (Media Access Control) モジュールと物理層(PHY)トランシーバ モジュールの両方を完全に実装した包括的なコネクティビティ ソリューションです。2つのパルストランスとわずかな受動部品を追加するだけで、マイクロコントローラを Ethernet ネットワークに直接接続できます。

この Ethernet モジュールは、10-BaseT 接続の IEEE802.3 規格に完全準拠しています。受信パケットを制限するフィルタも各種サポートしています。また、高スループットでのデータコピーやハードウェア アクセラレーションによる IP チェックサム計算を行うDMA モジュールも内蔵しています。リンクとネットワーク アクティビティを表示する 2 つの LED 出力も備えています。

図 19-1 に Ethernet モジュールの概略ブロック図を示します。

Ethernet モジュールは主に以下の 5 つの機能ブロックで構成されています。

1. PHY トランシーバ モジュール : ツイストペア インターフェイスに現れるアナログデータをエンコード / デコードし、ネットワークとの間で送受信を行います。

2. MAC モジュール : IEEE 802.3 準拠の MAC ロジックを実装し、PHY を制御する MIIM (MediaIndependent Interface Management) を備えています。

3. 独立した 8 KB の RAM バッファ: 受信済みパケットと送信待ちパケットを格納します。

4. アービタ : マイクロコントローラ コア、DMA、送信ブロック、受信ブロックから RAM バッファへのアクセス要求を制御します。

5. レジスタ インターフェイス : Ethernet モジュールとマイクロコントローラのSFRの間でコマンドと内部ステータス信号のインタプリタとして機能します。

図 19-1: Ethernet モジュールのブロック図

DMA andIP Checksum

TXBM

RXBM

Arbiter

Flow Control

Host Interface

PHY

MIIInterface

MIIMInterface

TPOUT+

TPOUT-

TPIN+

TPIN-

TX

RX

RBIAS

RXF (Filter)

RX

TX

MAC

ch0

ch1

ch0

ch1

Ethernet RAMBuffer

EDATA EthernetControl

Ethernet

Buffer Pointers

MIRD/MIWR

MIREGADR

PHY Register Data

PHY Register Addresses

EthernetData

EthernetBufferAddresses

Microcontroller SFRs

Microcontroller Data Bus

LEDA/LEDB Control

8

8-Kbyte

ch2

2013 Microchip Technology Inc. DS39762F_JP - p.217

Page 218: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.1 物理インターフェイスと外部接続

19.1.1 信号および電源インターフェイス

PIC18F97J60 ファミリは、全て Ethernet モジュール専用の 4 ピン信号インターフェイスを実装しています。これらのピンには他の機能が多重化されないため、ピンの競合が発生する心配はありません。これらのピンの機能は以下の通りです。

• TPIN+: 差動 (+) ツイストペア入力

• TPIN-: 差動 (-) ツイストペア入力

• TPOUT+: 差動 (+) ツイストペア出力

• TPOUT-: 差動 (-) ツイストペア出力

外部 Ethernet PHY との間でデジタル Ethernet データをやりとりする機能はありません。

信号接続以外に、Ethernet モジュールには PHY モジュール専用の独立した電源接続とグランド接続を備えています。これらの接続は、レシーバ用 (VDDRX、VSSRX)、トランスミッタ用 (VDDTX、VSSTX)、トランスミッタの内部 PLL 用 (VDDPLL、VSSPLL) で別々です。電圧の要件はマイクロコントローラの VDD と VSS と共通ですが、これらのピンは内部接続されていません。Ethernet モジュールを正しく動作させるには、電源電圧とグランドをこれらのピンに接続する必要があります。マイクロコントローラの電源およびグランドピンは全て外部で共通の電源またはグランドノードに接続する必要があります。この時、マイクロコントローラと Ethernet モジュールの VDD ピンの間にはインダクタやその他のフィルタ部品を取り付けないようにしてください。

独立した電源接続以外に、PHY モジュールには専用のバイアス電流入力ピン (RBIAS) もあります。トランシーバを正しく動作させるには、外付け抵抗からのバイアス電流を RBIAS に印加する必要があります。

19.1.2 LED の設定

PHY モジュールは標準の Ethernet インジケータ(LEDA と LEDB) を駆動するための独立した出力を備えています。LEDA 出力と LEDB 出力は、それぞれPORTA ピンの RA0/RA1 と多重化されています。これらのピンをLED出力として使うには、コンフィグレーション ビットの ETHLED ( レジスタ 25-6、CONFIG3H<2>)をセットします。LED出力として設定すると、RA0/LEDAおよび RA1/LEDB ピンからは LED を直接駆動できる十分な電流 ( 大 25 mA) が得られます。これらのピンは常にLEDに電流を供給するように設定しておく必要があります。TRISA<1:0> をクリアして、これらのピンを出力に設定します。

これらの LED はリンクステータス、RX/TX アクティビティ等を自動的に表示するように設定できます。パケット 1 個の送信等、短時間のイベントに対する LEDの点灯時間を延長してユーザが認識できるようにするストレッチ機能を備えています。これらの機能はPHLCON レジスタ ( レジスタ 19-13) で制御します。表 19-1 に、点灯ストレッチ時間の代表値を示します。

表 19-1: LED 点灯ストレッチ時間の長さ

19.1.3 オシレータの要件

Ethernet モジュールは 25 MHz で動作するように設計されています。この周波数は、マイクロコントローラのプライマリ クロック (OSC1 および OSC2 ピンに接続した 25 MHz 水晶振動子または OSC1 ピンに接続した外部クロック源)から供給します。これ以外のクロック源からEthernetモジュールにクロックを供給する事はできません。

このため、Ethernet モジュール有効時はプライマリ オシレータをクロック源とした動作 (PRI_RUN またはPRI_IDLE モード ) のみ可能です。他の電力管理モードを使う場合、Ethernet モジュールを無効にする必要があります。

19.1.3.1 起動タイマ

Ethernet モジュールには起動タイマがあります。これはマイクロコントローラの OST ( オシレータ 起動タイマ )とは別のもので、PHY モジュールの PLL が安定してからEthernetモジュールの動作を開始するためのものです。Ethernetモジュール イネーブルビットのETHEN(ECON2<5>) をクリアすると、PHYRDY ステータスビット (ESTAT<0>) がクリアされます。ETHEN ビットをセットすると、PHY 起動タイマがカウントを開始します。1 ms 後にタイマのカウントが終了すると、PHYRDY ビットが自動的にセットされます。

ETHEN ビットをセットして Ethernet モジュールを有効にしたら、ソフトウェアで PHYRDY ビットを常時ポーリングして、通常の Ethernet 動作を開始できるタイミングを待機します。

ストレッチ時間 代表値 (ms)

TNSTRCH ( ノーマル ) 40

TMSTRCH ( ミディアム ) 70

TLSTRCH ( ロング ) 140

DS39762F_JP - p.218 2013 Microchip Technology Inc.

Page 219: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.1.4 トランス、終端、その他の外付け部品

Ethernet モジュールは外付け部品を必要とします。図19-2 に、これらの部品の接続方法を示します。

PHY モジュール内部のアナログ回路では、RBIAS とグランドの間に外部抵抗 (2.26 k) を接続する必要があります。この抵抗は、TPOUT+/- の信号振幅に影響します。ピンにノイズが静電結合してトランスミッタの動作に影響するのを防ぐため、信号トレースを隣接させずに抵抗をなるべくチップの近くに配置する必要があります。抵抗は表面実装タイプを推奨します。

TPIN+/TPIN- ピンと TPOUT+/TPOUT- ピンには、Ethernet (10/100 または 10/100/1000) の動作要件を満たした1:1センタータップ (CT)パルストランスが必要です。Ethernet モジュールを有効にすると、2 本のTPOUT ピンにシンク電流が常時流れます。PHY が送信動作中は、TPOUT+ と TPOUT- の相対的なシンク電流量が変化する事によってEthernetケーブルに差動電圧が発生します。

インターフェイスのPHY側 (すなわちマイクロコントローラの TPOUT ピンと Ethernet トランスの間 ) にコモンモード チョークを使う事は推奨しません。EMI 放射を抑えるためにコモンモード チョークを使う場合、

Ethernet トランスと RJ-45 コネクタのピン 1、2 の間に配置する必要があります。Ethernet トランス モジュールの多くは、パッケージ内にコモンモードチョークを内蔵しています。静電電圧からの保護とIEEE 802.3 の絶縁要件への適合のため、トランスは表 28-28に記載した絶縁定格を満たす必要があります( トランスの要求仕様はセクション 28.5「Ethernet の仕様と要件」参照 )。送受信インターフェイスには信号反射を 小限に抑えるために 2 つの抵抗と 1 つのコンデンサを使い、伝送ラインを適切に終端処理する必要があります。

電源ピンは全て外部で共通の電源に接続する必要があります。同様に、グランド基準も全て共通のグランドノードに外部で接続する必要があります。VDD と VSS

の各ピンペアには、なるべく近くに 0.1 F のセラミック バイパス コンデンサを接続します。

ツイストペア インターフェイスの動作には比較的大きな電流が必要なため、いずれの配線もなるべく短くします。抵抗損失を抑えるため、電源ラインは適切な配線幅とします。差動データラインを短くできない場合、特性インピーダンスが 100 となるように配線します。

図 19-2: Ethernet の動作に必要な外付け部品

PIC18FXXJ6X

LEDA LEDB RBIAS

TPOUT+

TPOUT-

TPIN+

TPIN-

1

2

3

4

5

6

7

8

RJ-45

1:1 CT

1:1 CT

0.1 F(1)

3.3V

Note 1: これらの部品は EMI 放射を抑えるために取り付けます。詳細は、セクション 19.1.5 を参照してください。

2: EMI 放射を抑えるためにコモンモード チョーク (CMC) が必要な場合、この場所に挿入する事を推奨します。

3: 推奨値はセクション 3.3「水晶振動子 / セラミック振動子 (HS モード )」を参照してください。

4: PoE (Power over Ethernet) アプリケーションでは、これらの抵抗と直列にコンデンサが必要です。

49.9, 1%

49.9, 1%

49.9, 1%

49.9, 1%

2.26 k, 1%

0.1 F

75

(1,4

)

1 nF, 2 kV(1)

75

(1,4

)

75

(1,

4)

75

(1,4

)

CMC(2)

CMC(2)

C2(3)

25 MHz

C1(3)

OSC1

OSC2

1

120(1)

56pF(1)

120(1)

56pF(1)

±5%

±5%

2013 Microchip Technology Inc. DS39762F_JP - p.219

Page 220: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.1.5 EMI 放射に関する注意事項

ほとんどの国では、特定の周波数で環境に放出される電磁エネルギ量を規制する、意図しないEMIまたはEMC放射の限度値が規定されています。通常、Ethernet アプリケーションには無線周波数の意図的な放射源は含まれません。しかし、長い Ethernet ケーブルを接続すると高周波ノイズが比較的容易に放射されるため、これらの規制に違反する事も珍しくありません。長いケーブルは、意図せずアンテナとして作用する事があります。

PIC18F97J60 ファミリの Ethernet モジュールの送信エンジンは、25 MHz の Ethernet ベースクロックをPHY モジュールに内蔵の PLL を使って内部で高周波数に逓倍して動作します。この高周波数を使って、TPOUT+ および TPOUT- ピンの微小なシンク電流をON/OFF にしています。この電流モード駆動方式を利用してPHYはアナログ信号に似たEthernet TX波形を生成しており、ほとんどのエネルギ スペクトルは20 MHz 以下に集中しています。

しかし、この波形の合成に使っている高周波数は振幅が小さいとはいえ、アプリケーション回路によっては回路の外部に規制値を超える放射が発生する事があります。Ethernet モジュールが原因のこのような放射は、通常 200 MHz ( 場合によっては 400 MHz) です。

こうした問題を 小限に抑えるため、図 19-2 に示すように TPOUT+ ピンと TPOUT- ピンに LC ローパスフィルタを使う事を推奨します。

この回路では、120 Ωのフェライトビーズと 56 pF±5%コンデンサを使って、カットオフ周波数が20~200 MHzの間にあるローパスフィルタを形成しています。10Base-T Ethernet シグナリングで必要なスペクトル帯域幅は約 20 MHz であるため、このようなフィルタによる Ethernet 信号の歪みは 小限に抑えられます。一方、PHY によって発生する 200 MHz または400 MHz のノイズが数 dB 低減されるため、規制値を超える放射を防ぐ事ができます。この回路では、飽和電流値が100 mA以上のフェライトビーズを使う必要があります。

EMI 規制が特に厳しい地域では、Ethernet ケーブルからの意図しないコモンモード信号の放射を 小限に抑えるため、Ethernet トランスの選択にはさらに注意が必要です。コモンモード除去比(CMRR)の高いEthernetトランスを推奨します。

通常、CMRR は各種テスト周波数における値 ( 単位は-dB)がトランス製造者のデータシートに記載されています。特に反証となるテストデータがない限り、PIC18F97J60 ファミリの Ethernet モジュールには高周波数で CMRR (-dB) の絶対値がより大きいトランスが適しています。例えば、100 MHz で -40 dB のトランスと -33 dB のトランスでは、30 MHz での性能が同等または後者の方が優れていても、前者のトランスを推奨します。

多くの場合、TX パスにセンタータップ インダクタまたは自動トランスを使った「5 コア」のトランスを使う事も EMI 放射の抑制に有効です。

19.1.6 RX 極性の自動検出と反転

10Base-T Ethernet シグナリングは、Ethernet ケーブル上では差動マンチェスタ符号化方式を利用したデータストリームとして実行されます。このシグナリングには極性があるため、Ethernet ケーブルの RX+Ethernet 信号を TPIN+ ピンに、RX- Ethernet 信号をTPIN- ピンに接続する必要があります。RX+ と TPIN-、RX- と TPIN+ を (Ethernet 絶縁トランスを介して ) 接続した場合でも、PIC18F97J60 ファミリの Ethernetモジュールとリモートパートナーのリンクは正しく確立されますが、受信データは極性不一致で全て破損するため、PHY はこれらをケーブル上のノイズと見なして内部で破棄します。

より高速の100Base-TXおよび1000Base-T規格では、異なるシグナリング方式を使います。ケーブル上で、それぞれ MLT3 (Multi-Level Transition 3) および PAM5(Five-Level Pulse Amplitude Modulation) 符号化を使います。これらの符号化方式には極性がありません。従って、差動ケーブルを入れ換えても Ethernet コントローラはリモートノードと問題なく通信できます。

ごくわずかですが、 近のサードパーティ製の 10/100および10/100/1000 Ethernetデバイス (スイッチ、ルータ、エンドデバイス ) の中には、TX+/TX- 信号を RJ-45Ethernet ジャックの誤ったピンに接続したものがあります。これらのデバイスは IEEE 規格 802.3 に準拠していません。しかし、100Base-TX と 1000Base-T は極性が間違っていても通信可能なため、こうした極性エラーに気付かず製品をリリースしているサードパーティ ベンダもあります。

このような状況から、PIC18F97J60 ファミリの現在のリビジョンの Ethernet コントローラはごく一部のサードパーティ製 Ethernet デバイスとは互換性がありません。こうしたパートナーとも PIC18FXXJXX はリンクを確立し、PIC18FXXJXX にパケットが送信されると PHY RX アクティビティ LED は点灯します(LED 有効時 )。ただし極性が正しくない場合、パケットを正しく受信して Ethernet SRAM バッファに書き込む事はできません。こうした問題を防ぎ、サードパーティ製デバイスとの相互接続性を 大限に確保するために、PIC18F97J60ファミリのアプリケーションに RX 極性反転回路を外付けする事ができます。図19-3 に、バススイッチを使って RX 信号の極性を反転する回路を示します。

図 19-3 では、汎用出力ピンを使って RX 信号の極性を選択しています。セレクトラインが Low の場合、スイッチの A ポートが B0 ポートと接続し、B1 ポートは切断された状態です。この時、TPIN+ ピンは RJ-45ジャックのピン 3 に接続され、TPIN- ピンはピン 6 に接続されます。これらの接続は、IEEE 規格 802.3 で規定された極性に適合しています。

セレクトラインが High の場合、スイッチの A ポートがB1 ポートと接続し、B0 ポートは切断された状態です。これにより RX の極性が反転し、TPIN+ ピンは RJ-45ジャックのピン 6 に接続され、TPIN- ピンはピン 3 に接続されます。このように極性を反転する事で、リモートのリンクパートナーまたは途中のケーブルで生じた極性の誤りが補正されます。

DS39762F_JP - p.220 2013 Microchip Technology Inc.

Page 221: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

MCU 側では、接続したリンクパートナーに合わせてセレクトラインの状態を適切なレベルにトグルするようソフトウェアを作成しておく必要があります。これは、パケットの正常な受信イベントを監視すると同時に、低周波数 (<5 Hz) でセレクトラインを周期的にトグルする事で達成できます。正しい極性を検出したらセレクトラインのトグルを停止し、Ethernet リンクが切断されるまで同じ状態を維持します。

このように低周波数でセレクトラインを周期的にトグルしてパケットを受信するのではなく、パケットを送信してそのレスポンスによって短時間で正しい極性を判定できる場合もあります。この方法を使うには、ネットワークから応答パケットが返されるプロトコルが必

要です。多くのネットワークでは、DHCP (DynamicHost Configuration Protocol) のディスカバリ パケットを使って TPIN の極性を素早く検出できます。

バススイッチを選択する際は、Ethernet 信号を歪ませずに通過できるものを選ぶように注意してください。TPIN±ピンの弱バイアスにより、RXコモンモード電圧は約 VDD/2 まで上昇し、Ethernet RX 波形はこのコモンモード電圧に 大 ±1.4 V を加えた大きさです。従って、スイッチには 低でも 3.05 V の信号を通過できる能力が要求されます。

また、信号損失とインピーダンス不連続による RX 信号への影響を 小限に抑えるため、バススイッチは低キャパシタンスのものを選んでください。スイッチの-3 dB 帯域幅は 20 MHz を大きく超えている必要があります。

図 19-3: RX 極性反転回路 (TX 接続の記載は省略 )

PIC18FXXJ6X

GPIO

TPIN+

TPIN-

49.9

49.

9

0.1

F

NC7SB3157

NC7SB3157 100K

+3.3V

+3.3V

RJ-45 and Magnetics

TX

RX

123 4

56

123 4

56

4x75 ohm

1000 pF 2kV

2013 Microchip Technology Inc. DS39762F_JP - p.221

Page 222: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.2 Ethernet バッファとレジスタ空間

Ethernet モジュールの動作には、3 つの独立したメモリ空間を使います。

• Ethernet RAM バッファ : 受信したパケットデータと送信前のパケットデータを格納します。

• 8 ビット幅の特殊機能レジスタ (SFR): モジュールの制御、Ethernet モジュールとマイクロコントローラ コア間での双方向のデータ転送に使います。

• 16 ビットの PHY レジスタ : PHY の制御とステータス報告専用です。

Ethernet バッファと PHY 制御レジスタは Ethernet モジュールに完全に内包されており、マイクロコントローラからは直接アクセスできません。Ethernet モジュールとマイクロコントローラ間でデータを転送するには、マイクロコントローラの SFR 空間にマッピングされたポインタレジスタとバッファを使います。図 19-4 に、SFR と Ethernet モジュールのメモリ空間の関係を示します。

図 19-4: マイクロコントローラと Ethernet モジュールのメモリ空間の関係

0000h

1FFFh

Ethernet Buffer

00h

1Fh

PHY Registers

Ethernet ModuleMicrocontroller SFRs

EDATA

ERDPT(H:L)EWRPT(H:L)ETXST(H:L)ETXND(H:L)ERXST(H:L)ERXND(H:L)

ERXRDPT(H:L)ERXWRPT(H:L)

MIRD(H:L)MIWR(H:L)

MIREGADR

Ethernet Data

Buffer Address

PHY Register Data (In/Out)

PHY Register Address

Note: この図に示したマイクロコントローラの SFR は、データメモリ空間における実際の配置順とは異なります。

上図のメモリ空間の縮尺比は不定です。

DS39762F_JP - p.222 2013 Microchip Technology Inc.

Page 223: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.2.1 Ethernet バッファとバッファポインタ レジスタ

Ethernet バッファには、Ethernet コントローラが使う送信メモリと受信メモリが含まれます。バッファ全体は 8 KB で、送信バッファ空間と受信バッファ空間に分割されます。送信メモリと受信メモリのサイズと位置は、Ethernet SFR 空間のポインタを使って定義します。図 19-5 に、メモリ空間の構成とポインタの関係を示します。

このバッファには、Ethernet モジュールが有効か無効かに関わらず、EDATA と Ethernet ポインタ SFR を使っていつでもアクセスできます。このため、Ethernet通信が不要なアプリケーションで大容量 RAM が必要な場合、このバッファを使えます。この場合、Ethernetモジュールを無効にすると消費電力を低減でき、Ethernet バッファへのアクセスは可能のままです。

19.2.1.1 バッファの読み出しと書き込み

Ethernet バッファの内容は、EDATA レジスタを使ってアクセスします。EDATA レジスタは、マイクロコントローラのデータバスからバッファへのウィンドウとして機能します。このウィンドウの位置は、実行する動作の種類によって ERDPT または EWRPT ポインタによって決定します。例えば、EDATA に書き込みを実行すると、Ethernet バッファ内の EWRPT レジスタペアが現在示しているアドレスに書き込みが実行されます。同様に、EDATA の内容を別のレジスタに移動すると、実際には ERDPT ポインタが現在示しているアドレスのバッファ内容が移動されます。

AUTOINCビット(ECON2<7>)をセットしている場合、読み出しまたは書き込みを 1 回実行するたびに、読み出しまたは書き込みポインタが 1 アドレス分インクリメントします。このため、読み書きを実行するたびにポインタを更新する必要がなく、複数の操作を連続実行する場合の手間が省けます。既定値では、AUTOINCビットはセットされています。

受信バッファから連続的に読み出しを行うと、受信バッファの 後でラップアラウンド条件が発生します。ERXND ポインタに書き込まれたアドレスからEDATA を読み出すと、ERDPT レジスタがインクリメ

ントして ERXST ポインタ内の値になります。一方、書き込みバッファの場合は自動でラップアラウンドしません。

設計上、Ethernet メモリバッファは EDATA をオペランドと結果データ格納先の両方として使う命令をサポートしません。この制約に違反した場合、読み出しまたは書き込み結果が不正になります。また、プロセッサコアが Read-Modify-Write アーキテクチャを採用しているため、AUTOINC がセットされた状態でシングルサイクル命令を実行すると、EDATA レジスタに書き込みが行われ、ERDPT レジスタが自動的にインクリメントされてしまいます。2 サイクル命令の MOVFF、MOVSF、MOVSS命令を使って EDATA に書き込みを実行すると、読み出しポインタは影響を受けません。以下の Note に例を示します。

Note: 1つの命令でEDATA SFRレジスタに対して読み出しと書き込みの両方を実行すると、不正な演算結果となります。サポートされない例 :

INCF EDATA, FXORWF EDATA, FMOVFF EDATA, EDATAMOVFF INDF0, EDATA; (FSR0 = F61h)

1 回の読み出しまたは書き込みのみを実行する命令は使えます。サポートされる例 :

INCF EDATA, WMOVF EDATA, WMOVFF INDF0, EDATA; (FSR0 != F61h)

シングルサイクルで書き込みのみを実行する命令は使えますが、AUTOINC が有効になっている場合は ERDPT レジスタがインクリメントしてしまいます。ERDPTとEWRPTの両方がインクリメントする例 :

CLRF EDATASETF EDATAMOVWF EDATA

2013 Microchip Technology Inc. DS39762F_JP - p.223

Page 224: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 19-5: ETHERNET バッファの構成

TransmitBuffer

0000h

1FFFh

Transmit Buffer Start(ETXSTH:ETXSTL)

Transmit Buffer End(ETXNDH:ETXNDL)

Receive Buffer Start(ERXSTH:ERXSTL)

Receive Buffer End(ERXNDH:ERXNDL)

ReceiveBuffer

Buffer Write Pointer(EWRPTH:EWRPTL)

AAh Write Buffer Data

Buffer Read Pointer(ERDPTH:ERDPTL)

Read Buffer Data

(Circular FIFO)

55h(data 55h moved out of EDATA)

(data AAh moved to EDATA)

DS39762F_JP - p.224 2013 Microchip Technology Inc.

Page 225: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.2.1.2 受信バッファ

受信バッファは、ハードウェアが管理する環状 FIFOバッファとして構成されます。メモリ内における受信バッファのサイズと位置は、ERXSTH:ERXSTL とERXNDH:ERXNDL の各レジスタペアをポインタとして使って定義します。受信 FIFO バッファは ERXST ペアが指し示すバイトから開始し、ERXND ペアが指し示すバイトで終了します。

Ethernet インターフェイスから受信したデータバイトは、順番に受信バッファに書き込まれます。そしてERXND ポインタが指し示すアドレスへの書き込みが完了すると、ハードウェアは次に受信したデータバイトを、ERXST ペアが指し示すアドレスに自動的に書き込みます。このため、受信ハードウェアが FIFO の境界外のアドレスへ書き込みを行う事はありません。

ERXST および ERXND ポインタの値を書き込めるのは、受信ロジックが無効な場合です。ERXEN ビット(ECON1<2>)をセットして受信ロジックを有効にした状態でポインタの値を書き換えてはいけません。

バッファ ハードウェアは、内部ポインタを使って受信中の (検証されていない )データの書き込み先アドレスを決定します(この内部ポインタはユーザアクセス可能

なレジスタには割り当てられていません )。パケットの受 信 と 検 証 が 完 了 し た ら、読 み 出 し 専 用 のERXWRPTH:ERXWRPTLレジスタペアの値をこの内部ポインタの値で置き換えます。このように、ERXWRPTレジスタは受信バッファ内で現在データが書き込まれている場所を定義します。このレジスタは、FIFO の空き領域のサイズを調べるのに便利です。

ERXRDPT レジスタは、FIFO 内で受信ハードウェアによる書き込みを禁止するアドレスを定義します。通常動作時、受信ハードウェアは ERXRDPT レジスタが指し示すアドレスの手前のアドレスまでしかデータを書き込みできません。FIFO がデータで一杯になり、さらに新しいデータを受信しても、ハードウェアは受信済みのデータを上書きしません。新しいデータは破棄され、以前のデータが保持されます。新しいデータを受信するには、受信済みデータの一部または全部を処理したら、アプリケーションで ERXRDPT ポインタを定期的に前へ進める必要があります。

図 19-6 に、環状バッファ方式における受信バッファポインタとパケットデータの関係を例示します。この例には 4 つのパケットが示してありますが、実際のパケット数は 4 つとは限りません。

図 19-6: 環状 FIFO バッファにおけるポインタの関係

Packet 1(being processed

by application)

Packet 2

Packet 3

Packet 4(currently being

received)

Unused Buffer(may contain old data)

ERDPT:

ERXRDPT:

Data being readout to application.

Sets boundary that InternalWrite Pointer cannot advance

Internal Write Hardware Pointerpoints to the bufferlocation being written

beyond. Prevents Internal

ERXWRPT:Shows the end ofthe last completereceived packet.

Direction of reading and writing data(lower to higher buffer addresses).

PB

PB PB

ERXST ERXND

PB: Packet Boundary, as defined by the Next Packet Pointers that precede each packet.

Write Pointer from moving into Packet 1’s data space.

(packet data is stillbeing received).

PB

2013 Microchip Technology Inc. DS39762F_JP - p.225

Page 226: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.2.1.3 送信バッファ

8 KB のメモリのうち、受信 FIFO バッファとしてプログラミングされていない空間は送信バッファと見なされます。パケットを送信バッファのどの位置に格納するかは、アプリケーションで正しく管理する必要があります。アプリケーションでパケットを送信する際は、送信バッファ内で送信パケットが格納されている場所の開始アドレスと終了アドレスを ETXST およびETXND ポインタにそれぞれ書き込みます。この開始アドレスと終了アドレスが受信バッファと重複しているかどうかは、ハードウェアではチェックしません。バッファの内容が破壊されるのを防ぐには、ETXSTおよび ETXND ポインタが受信バッファ内にある場合、あるいは ETXND ポインタと受信バッファの先頭の間に十分な間隔がない場合、ファームウェアでパケットを送信しないようにする必要があります。詳細は、セクション 19.5.2「パケットの送信」を参照してください。

19.2.1.4 バッファアービタとアクセス調停

Ethernet バッファは、マイクロコントローラの半分のクロックレートで駆動されます。利用できるメモリアクセスの帯域幅は、このクロックレートによって変化します。総帯域幅 (B/s) は、命令レートの 2 倍 (2 * FCY

または FOSC/2) です。例えばシステムクロック速度が41.667 MHz の場合、利用可能な総メモリ帯域幅は20.834 MB/s です。10 Mbit/s の Ethernet シグナリングレートで Ethernet RX エンジンがオーバーランを起こさないように動作するには、1.25 MB/s のバッファメモリ帯域幅が必要です。全二重モードを使う場合、送受信を同時に実行するため、さらに 1.25 MB/s が必要です。

利用可能なメモリ帯域幅には限りがあるため、3 チャンネル アービタを使って RX エンジン、TX/DMA エンジン、マイクロコントローラの CPU ( すなわちアプリケーションから EDATA へのアクセス ) の間で帯域幅

を割り当てます。このアービタは、EDATA レジスタへのアクセスを 優先し、残りの帯域幅を RX ブロックと TX/DMA ブロックの間で共有します。

この調停では帯域幅の制限があるため、Ethernet モジュールのハードウェアとアプリケーションの間で帯域幅への要求のバランスをとる必要があります。EDATA レジスタへのアクセス頻度が多すぎると、RX/TXブロックでバッファ オーバーラン /アンダーランが発生する可能性があります。そのようなメモリアクセス エラーが発生した場合、BUFER ビット(ESTAT<6>) と TXERIF または RXERIF 割り込みフラグビットがセットされ、TX または RX 割り込みが発生します ( 割り込みを有効にしている場合 )。この場合、現在の受信パケットが失われるかパケット送信が中止されます。

マイクロコントローラ コアの動作速度を高くすると、パケット損失のリスクは減少します。表 19-2 に示すバッファ調停の制約を守ると、メモリアクセス エラーの発生を防ぐ事ができます。また、EDATA レジスタに連続してアクセスするようなアプリケーション コードセグメントの使用は避けてください。代わりに、EDATA に対する読み書きの間に 1 つ以上の命令 (NOPでも可 ) を挿入してください。

19.2.1.5 バッファへの DMA アクセス

内蔵 DMA コントローラは、チェックサム計算時にはバッファからの読み出しを実行し、メモリコピー時にはバッファに対する読み出しと書き込みを実行する必要があります。DMA も、既述の受信バッファと同じラップアラウンドの規則に従います。順次読み出し中に受信バッファの 後のアドレスに到達すると、ラップアラウンド条件が発生します。書き込み時にはラップアラウンド条件は発生しません。詳細は、セクション 19.9「ダイレクト メモリアクセス (DMA)コントローラ」を参照してください。

表 19-2: バッファ調停の制約とクロック速度

FOSC

(MHz)FCY

(MHz)

利用可能な帯域幅 (MB/s) アンダーラン / オーバーランを防ぐための アプリケーションの制約合計 RX 後 TX 後

41.667 10.42 20.83 19.58 18.33 EDATA へのアクセスは 2 TCY ごとに 1 回まで

31.250 7.81 15.63 14.38 13.13 EDATA へのアクセスは 2 TCY ごとに 1 回まで

25.000 6.25 12.50 11.25 10.00 EDATA へのアクセスは 2 TCY ごとに 1 回まで

20.833 5.21 10.42 9.17 7.92 EDATA へのアクセスは 2 TCY ごとに 1 回まで

13.889 3.47 6.94 5.69 4.44 EDATA へのアクセスは 2 TCY ごとに 1 回まで

12.500 3.13 6.25 5.00 3.75 EDATA へのアクセスは 2 TCY ごとに 1 回まで

8.333 2.08 4.17 2.92 1.67 EDATA へのアクセスは 3 TCY ごとに 1 回まで

6.250 1.56 3.13 1.88 0.63 EDATA へのアクセスは 5 TCY ごとに 1 回まで

4.167 1.04 2.08 0.83 < 0 DMA を使わない。全二重モードを使わない。EDATA へのアクセスは 3 TCY ごとに 1 回まで

2.778 0.69 1.39 0.14 < 0 DMA を使わない。全二重モードを使わない。EDATA へのアクセスは 10 TCY ごとに 1 回まで

DS39762F_JP - p.226 2013 Microchip Technology Inc.

Page 227: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.2.2 SFR と Ethernet モジュール

他の周辺モジュール同様、Ethernet モジュールもいくつかの SFR で制御します。ただし Ethernet モジュールの SFR は数が多いため、その大部分はマイクロコントローラのデータメモリ空間のバンク 14 の上半分に配置されています。

Ethernet モジュールに関する SFR のうち、以下に示す 5 つの主要 SFR はマイクロコントローラの通常のSFR 領域であるバンク 15 に配置されており、高速なアクセスが可能です。

• ECON1

• EDATA

• EIR

• Ethernet バッファ読み出しポインタペア(ERDPTH と ERDPTL)

ECON1については、以下のセクションで他のEthernet制御レジスタと一緒に説明します。EDATA とERDPTH:ERDPTL は、それぞれ Ethernet データバッファ レジスタとそのレジスタを読み出す際に使うポインタです ( セクション 19.2.1「Ethernet バッファ

と バッファポインタ レジスタ」参照)。EIRはEthernet割り込み構造の一部で、セクション 19.3「Ethernet割り込み」で説明します。

バンク 14 にある Ethernet SFR の多くは、専用のEthernet バッファ内のパケットデータの読み書きアドレスを示すポインタレジスタです。この他、パケットパターンマスクまたはチェックサム計算のための情報を格納するレジスタがあります。いくつかのレジスタは、Ethernet モジュール全体の動作、特定の MAC および PHY 機能を制御します。

19.2.3 Ethernet 制御レジスタ

ECON1レジスタ(レジスタ 19-1)は、Ethernetモジュールの主要な機能を制御します。受信イネーブルビット、送信要求ビット、DMA 制御ビットは全てこのレジスタに含まれます。それ以外の Ethernet モジュールの主要機能は、ECON2 レジスタ ( レジスタ 19-2) で制御します。ESTAT レジスタ ( レジスタ 19-3) は、Ethernet モジュールとEthernet通信の全体的なステータスを通知する目的で使います。

Ethernet SFR のうち先頭が「E」で始まっているものは、Ethernet モジュールが無効の時でもアクセスできます。

レジスタ 19-1: ECON1: Ethernet 制御レジスタ 1

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

TXRST RXRST DMAST CSUMEN TXRTS RXEN — —

bit 7 bit 0

凡例 :

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

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

bit 7 TXRST: 送信ロジック リセットビット

1 = 送信ロジックをリセット状態に保持する0 = 通常動作

bit 6 RXRST: 受信ロジック リセットビット

1 = 受信ロジックをリセット状態に保持する0 = 通常動作

bit 5 DMAST: DMA 開始 /BUSY ステータスビット

1 = DMA コピーまたはチェックサム計算が進行中である ( ソフトウェアでセットされ、ハードウェアまたはソフトウェアでクリアされる )

0 = DMA ハードウェアはアイドルである

bit 4 CSUMEN: DMA チェックサム イネーブルビット

1 = DMA ハードウェアでチェックサムを計算する0 = DMA ハードウェアでバッファメモリをコピーする

bit 3 TXRTS: 送信要求ビット

1 = 送信ロジックがパケットを送信しようとしている ( ソフトウェアでセットされ、ハードウェアまたはソフトウェアでクリアされる )

0 = 送信ロジックはアイドルである

bit 2 RXEN: 受信イネーブルビット

1 = 現在設定されているフィルタを通過したパケットを受信バッファに書き込む0 = 受信した全てのパケットをハードウェアによって破棄する

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

2013 Microchip Technology Inc. DS39762F_JP - p.227

Page 228: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-2: ECON2: Ethernet 制御レジスタ 2

R/W-1 R/W-0(1) R/W-0 U-0 U-0 U-0 U-0 U-0

AUTOINC PKTDEC ETHEN — — — — —

bit 7 bit 0

凡例 :

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

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

bit 7 AUTOINC: バッファポインタ自動インクリメント イネーブルビット

1 = EDATA の読み書きの際に、ERDPT/EWRPT レジスタを自動でインクリメントする0 = EDATA へのアクセス後、ERDPT/EWRPT レジスタの値を自動でインクリメントしない

bit 6 PKTDEC: パケット デクリメント ビット (1)

1 = EPKTCNT レジスタをデクリメント (-1) する0 = EPKTCNT レジスタをデクリメントしない

bit 5 ETHEN: Ethernet モジュール イネーブルビット

1 = Ethernet モジュールを有効にする0 = Ethernet モジュールを無効にする

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

Note 1: このビットはセットされた後、自動的にクリアされます。

レジスタ 19-3: ESTAT: Ethernet ステータス レジスタ

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

— BUFER — r — RXBUSY TXABRT PHYRDY

bit 7 bit 0

凡例 : r = 予約済みビット

R = 読み出し可能ビット C = クリア可能ビット U = 未実装ビット、「0」として読み出し

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

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

bit 6 BUFER: Ethernet バッファエラー ステータスビット

1 = Ethernet 読み書き時にバッファエラー ( オーバーランまたはアンダーラン ) が発生した0 = バッファエラーは発生していない

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

bit 4 予約済み :「0」として書き込み

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

bit 2 RXBUSY: 受信 BUSY ビット

1 = 受信ロジックがデータパケットを受信中である0 = 受信ロジックはアイドルである

bit 1 TXABRT: 送信中止エラービット

1 = 送信要求が中止された0 = 送信中止エラーは発生していない

bit 0 PHYRDY: Ethernet PHY クロックレディ ビット

1 = Ethernet PHY 起動タイマのカウントが終了し、PHY の準備が完了している0 = Ethernet PHY 起動タイマがカウント中で、PHY の準備ができていない

DS39762F_JP - p.228 2013 Microchip Technology Inc.

Page 229: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.2.4 MAC および MII レジスタ

これらの SFR は、MAC の動作と、MIIM を介して PHYの動作を制御します。MAC レジスタと MII レジスタは、データアドレス E80h ~ E85h、E8Ah、EA0h ~EB9h に配置されています。

MACレジスタとMIIレジスタはマイクロコントローラの汎用メモリマップに含まれますが、これらのレジスタは MAC モジュールに内包されています。ホスト インターフェイス ロジックがマイクロコントローラのデータ / アドレスバス データを変換する事により、これらのレジスタにアクセスできます。このため、ファームウェアからMACおよびMII SFRへのアクセス方法にはホスト インターフェイス ロジックによる制約があります。詳細は以下の Note を参照してください。

MAC 動作とパケット構成は 3 つの MACON レジスタで制御します。レジスタ 19-4 ~レジスタ 19-6 にこれらのレジスタを示します。

MII レジスタは MIIM インターフェイスの制御に使い、PHY レジスタとの通信チャンネルとして機能します。レジスタ 19-7とレジスタ 19-8にこれらのレジスタを示します。

Note 1: Ethernet モジュールが有効 (ETHEN = 1)でない場合は MAC および MII SFR にはアクセスしないでください。

2: MAC/MIIレジスタへの連続アクセスはサポートされません。MAC または MII レジスタへ複数回アクセスする場合、間で 1つ以上の命令 (NOPでも可 )を実行する必要があります。

レジスタ 19-4: MACON1: MAC 制御レジスタ 1

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

— — — r TXPAUS RXPAUS PASSALL MARXEN

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

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

bit 4 予約済み : 使用不可

bit 3 TXPAUS: PAUSE 制御フレーム送信イネーブルビット

1 = MAC からの PAUSE 制御フレームの送信を許可する ( 全二重モードでのフロー制御に必要 )0 = PAUSE フレームの送信を禁止する

bit 2 RXPAUS: PAUSE 制御フレーム受信イネーブルビット

1 = PAUSE 制御フレームを受信したら送信を禁止する ( 通常の動作 )0 = PAUSE 制御フレームを受信しても無視する

bit 1 PASSALL: 全受信フレーム通過イネーブルビット

1 = フィルタを通過して MAC が受信した制御フレームを受信バッファに書き込む0 = MAC で処理した後に制御フレームを破棄する ( 通常の動作 )

bit 0 MARXEN: MAC 受信イネーブルビット

1 = MAC によるパケット受信を有効にする0 = パケット受信を無効にする

2013 Microchip Technology Inc. DS39762F_JP - p.229

Page 230: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-5: MACON3: MAC 制御レジスタ 3

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

PADCFG2 PADCFG1 PADCFG0 TXCRCEN PHDREN HFRMEN FRMLNEN FULDPX

bit 7 bit 0

凡例 :

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

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

bit 7-5 PADCFG<2:0>: 自動パディング /CRC コンフィグレーション ビット

111 = 全てのショートフレームを 64 バイトになるまでゼロでパディングした後、有効な CRC を付加する

110 = ショートフレームに自動でパディングしない101 = VLAN プロトコル フレーム ( タイプフィールドが 8100h) を MAC で自動検出し、64 バイトに

なるまで自動でパディングする。VLAN フレームでない場合は 60 バイトになるまでパディングする。パディング後に有効な CRC を付加する

100 = ショートフレームに自動でパディングしない011 = 全てのショートフレームを 64 バイトになるまでゼロでパディングした後、有効な CRC を付

加する010 = ショートフレームに自動でパディングしない001 = 全てのショートフレームを 60 バイトになるまでゼロでパディングした後、有効な CRC を付

加する000 = ショートフレームに自動でパディングしない

bit 4 TXCRCEN: 送信 CRC イネーブルビット

1 = PADCFG<2:0> ビットの設定に関わらず、MAC は送信する全てのフレームに有効な CRC を付加する。PADCFG ビットで有効な CRC を付加するように設定している場合、TXCRCEN ビットもセットする必要がある

0 = MAC は CRC を付加しない。 後の 4 バイトをチェックし、無効な CRC なら送信ステータスベクタで報告する

bit 3 PHDREN: プロプライエタリ ヘッダ イネーブルビット

1 = MAC が受け取ったフレームに、CRC 計算で使わない 4 バイトのプロプライエタリ ヘッダが含まれている

0 = プロプライエタリ ヘッダが含まれておらず、全てのデータを CRC で使う ( 通常動作 )

bit 2 HFRMEN: ジャンボフレーム イネーブルビット

1 = ジャンボフレームと規格違反のサイズのフレームの送受信を許可する0 = MAMXFL を超える長さのフレームは送受信時に切り捨てられる

bit 1 FRMLNEN: フレーム長チェック イネーブルビット

1 = 送受信フレームのタイプ / 長さフィールドをチェックする。長さを表している場合はフレームサイズと比較する。一致しない場合は送信 / 受信ステータスベクタで報告する

0 = タイプ / 長さフィールドと実際のフレーム長を比較しない

bit 0 FULDPX: MAC 全二重イネーブルビット

1 = MAC の動作を全二重モードにする。PDPXMD ビット (PHCON1<8>) もアプリケーションでセットする必要がある

0 = MAC の動作を半二重モードにする。PDPXMD ビットもアプリケーションでクリアする必要がある

DS39762F_JP - p.230 2013 Microchip Technology Inc.

Page 231: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-6: MACON4: MAC 制御レジスタ 4

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

— DEFER r r — — r r

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

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

bit 6 DEFER: 送信延期イネーブルビット ( 半二重モードの場合のみ適用 )

1 = 送信時に媒体が占有されている場合、MAC は媒体が解放されるまで無期限に待機する(IEEE 802.3 に準拠するにはこの設定を使う )

0 = 媒体が占有されている場合、MAC は 大延期時間に達した後で送信を中止する

bit 5-4 予約済み :「0」のまま

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

bit 1-0 予約済み :「0」のまま

レジスタ 19-7: MICMD: MII コマンドレジスタ

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

— — — — — — MIISCAN MIIRD

bit 7 bit 0

凡例 :

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

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

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

bit 1 MIISCAN: MII スキャン イネーブルビット

1 = MIREGADR が指し示すアドレスの PHY レジスタを連続して読み出して、データを MIRD レジスタに格納する

0 = MII マネジメント スキャンは進行中でない

bit 0 MIIRD: MII 読み出しイネーブルビット

1 = MIREGADR が指し示すアドレスの PHY レジスタを 1 回だけ読み出して、データを MIRD レジスタに格納する

0 = MII マネジメント読み出しは進行中でない

2013 Microchip Technology Inc. DS39762F_JP - p.231

Page 232: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.2.5 PHY レジスタ

PHY レジスタは、PHY モジュールの設定、制御、ステータス情報に使います。PHYレジスタは全て16ビット幅です。

PHYレジスタは5ビットのアドレスで指定するため合計で 32 個のレジスタにアクセスできますが、実装されているのは 7 アドレスのみです。表 19-3 に、実装されているレジスタの一覧を示します。レジスタ 19-9~レジスタ 19-13 で、主な PHY 制御レジスタを説明します。その他の PHY 制御 / ステータス レジスタについては、本章で後述します。

未実装のレジスタには決して書き込まないでください。これらのレジスタを読み出すと、不確定なデータが返されます。実装されているレジスタの予約済みビットのうち、「書き込み可能ビット」と記載されているものは全て、レジスタの説明欄に記載されている値で書き込む必要があります。これらの予約済みビットを読み出しても無視されます。

PHYレジスタはMIIマネジメント インターフェイス経由でしかアクセスできません。PHY 起動タイマのカウントが終了して PHYRDY ビット (ESTAT<0>) がセットされるまで、PHY レジスタを読み書きしてはいけません。

19.2.5.1 PHSTAT レジスタ

PHSTAT1 および PHSTAT2 レジスタには、PHY モジュールの現在の動作状態 ( 特にネットワーク上の他のノードとの通信リンクの状態 ) を示す読み出し専用ビットがあります。

PHSTAT1レジスタ (レジスタ 19-10)にはLLSTATビットがあります。PHSTAT1 レジスタを前回読み出した後に PHY リンクがダウンすると、このビットはクリアされ Low にラッチします。アプリケーションで定期的にLLSTAT をポーリングすると、リンクがダウンした事をすぐに知る事ができます。この方法は、リンクステータス変化割り込みを使わない場合は特に便利です。

PHSTAT2レジスタ(レジスタ 19-12)は、PHYモジュールがネットワークに接続されているかどうか、現在送受信中であるかを示すステータスビットを含みます。

19.2.5.2 PHY レジスタへのアクセス

前述の通り、PHY レジスタは他のレジスタとは異なるメモリ空間に存在し、マイクロコントローラから直接アクセスする事はできません。PHY レジスタには、MIIM (Media Independent Interface Management) を実装するEthernet SFRバンク内のMIIレジスタ経由でアクセスします。

アクセス方法は Ethernet バッファの場合とほぼ同じですが、読み書きにそれぞれ専用のバッファ(MIRDH:MIRDL と MIWRH:MIWRL) と 5 ビットのアドレスレジスタ (MIREGADR) を使います。また、読み書きの制御に MICMD および MISTAT レジスタを使います。

レジスタ 19-8: MISTAT: MII ステータス レジスタ

U-0 U-0 U-0 U-0 R-0 R-0 R-0 R-0

— — — — r NVALID SCAN BUSY

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

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

bit 3 予約済み : 使用不可

bit 2 NVALID: MII マネジメント読み出しデータ無効ビット

1 = MIRD レジスタの内容はまだ有効ではない0 = MII マネジメントの読み出しサイクルが完了し、MIRD レジスタが更新済みである

bit 1 SCAN: MII マネジメント スキャン動作ビット

1 = MII マネジメント スキャンが進行中である0 = MII マネジメント スキャンは進行中でない

bit 0 BUSY: MII マネジメント BUSY ビット

1 = PHY レジスタが現在読み出し中または書き込み中である。内部同期のため、ファームウェアのコマンド (MIISCAN または MIIRD ビットをセットする ) または MIWRH レジスタへの書き込みから 2 TCY 遅れて、このビットはハードウェアによってセットされる

0 = MII マネジメント インターフェイスはアイドルである

DS39762F_JP - p.232 2013 Microchip Technology Inc.

Page 233: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

PHY レジスタからの読み出し手順は以下の通りです。

1. 読み出すPHYレジスタのアドレスをMIREGADRレジスタに書き込む。

2. MIIRD ビット (MICMD<0>) をセットする。読み出しが開始し、2 TCY 後に BUSY ビット (MISTAT<0>)がセットされる。

3. 10.24 s 待ってから BUSY ビットをポーリングし、読み出しが完了した事を確認する。MAC がPHY レジスタの内容を取得すると、BUSY ビットは自己クリアする。BUSY ビットがセットされている間、ユーザ アプリケーションは MIISCAN を開始する事も、MIWRH レジスタに書き込む事もできない。

4. MIIRD ビットをクリアする。

5. MIRDL および MIRDH レジスタから 16 ビットのPHY レジスタ全体を読み出す。

PHY レジスタへの書き込み手順は以下の通りです。

1. 書き込むPHYレジスタのアドレスをMIREGADRレジスタに書き込む。

2. 書き込むデータの下位 8 ビットを MIWRL レジスタに書き込む。

3. 書き込みデータの上位 8 ビットを MIWRH レジスタに書き込む。MIWRH レジスタに書き込むと MIIトランザクションが自動的に開始するため、必ずMIWRL レジスタから先に書き込む必要がある。2TCY 後に BUSY ビットが自動的にセットされる。

PHY レジスタは、MII の動作 (10.24 s かかる ) が完了してから書き込まれます。書き込みが完了すると、BUSYビットは自己クリアします。BUSYビットがセットされている間は、アプリケーションで MII スキャンまたは読み出しを開始しないでください。

PHY レジスタに書き込む際は、16 ビット全体が一括で書き込まれます。ビット単位またはバイト単位での選択的な書き込み機能は実装されていません。レジスタの一部のビットのみを書き換える場合、コントローラでまず PHY レジスタを読み出し、読み出したデータを変更してから PHY レジスタに書き戻す必要があります。

MAC は、PHY レジスタに対して自動的に連続読み出しを実行するように設定する事もできます。このようなスキャン動作を実行する手順は以下の通りです。

1. スキャンする PHY レジスタのアドレスをMIREGADR レジスタに書き込む。

2. MIISCAN ビット (MICMD<1>) をセットする。スキャン動作が開始し、2 TCY 後に BUSY ビットがセットされる。

MIISCAN ビットをセットすると、NVALID (MISTAT<2>)、SCAN、BUSY ビットもセットされます。 初の読み出しは 10.24 s 後に終了します。スキャンがキャンセルされるまで、同じ間隔で 2 回目以降の読み出しが実行され、MIRDL および MIRDH レジスタが自動的に繰り返し更新されます。 初の読み出しが完了したかどうかは、NVALID ビットをポーリングして調べます。

MIRD レジスタが更新された事を知らせるステータス情報はありません。MII レジスタは一度に 1 つしか読み出せないため、MIRDL と MIRDH の値はスキャン中に PHY から全く同じタイミングで読み出されたものではない事に注意してください。

スキャン動作が必要な間は、MIISCAN ビットをセットしたままにしておいてください。MIISCAN ビットを「0」にクリアすると、 後の読み出しシーケンスが完了した時点でBUSYビットとSCANビットが自動的にクリアされます。MIISCAN をセットしたままMIREGADR を更新しないでください。

スキャンの進行中は、MIWRH レジスタの読み書き等、PHY に対して新しい処理を開始する事はできません。この場合、MIISCAN ビットをクリアし、BUSY ビットをポーリングすることによって、進行中のスキャンをキャンセルします。BUSY ビットがクリアされたら、新しい処理を開始できます。

2013 Microchip Technology Inc. DS39762F_JP - p.233

Page 234: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC

18F97J60

ファ

ミリ

DS

39762F_JP

- p.234

2013 Microchip T

echnology Inc.

3 Bit 2 Bit 1 Bit 0 リセット時の値

- - - 00-- 00-0 0--- ----

LLSTAT r - ---1 1--- ---- -00-

r r r -000 0000 0000 0000

- - - --00 00x- --0- ----

r PGEIE r xxxx xxxx xx00 xx00

PGIF r r xxxx xxxx xx00 00x0

Q1 LFRQ0 STRCH r 0011 0100 0010 001x

出されます。

表 19-3: PIC18F97J60 ファミリの PHY レジスタのまとめ

アドレス レジスタ名 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit

00h PHCON1 r r - - r r - PDPXMD r - - - -

01h PHSTAT1 - - - r r - - - - - - - -

10h PHCON2 - FRCLNK r r r r r HDLDIS r r r RXAPDIS r

11h PHSTAT2 - - TXSTAT RXSTAT COLSTAT LSTAT r - - - r - -

12h PHIE r r r r r r r r r r r PLNKIE r

13h PHIR r r r r r r r r r r r PLNKIF r

14h PHLCON r r r r LACFG3 LACFG2 LACFG1 LACFG0 LBCFG3 LBCFG2 LBCFG1 LBCFG0 LFR

凡例 : x = 未知、u = 不変、- = 未実装 (「0」として読み出し )、r = 予約済みビットのため変更不可です。網掛けの部分は未実装で、「0」として読み

Page 235: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-9: PHCON1: PHY 制御レジスタ 1

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

r r — — r r — PDPXMD

bit 15 bit 8

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

r — — — — — — —

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

bit 15-14 予約済み :「0」として書き込み

bit 13-12 未実装 :「0」として読み出し

bit 11-10 予約済み :「0」として書き込み

bit 9 未実装 :「0」として読み出し

bit 8 PDPXMD: PHY 二重モードビット

1 = PHY の動作を全二重モードにする。FULDPX ビット (MACON3<0>) もアプリケーションでセットする必要がある

0 = PHYの動作を半二重モードにする。FULDPXビットもアプリケーションでクリアする必要がある

bit 7 予約済み : 常に「0」

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

レジスタ 19-10: PHSTAT1: PHY ステータス レジスタ 1

U-0 U-0 U-0 R-1 R-1 U-0 U-0 U-0

— — — r r — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 R/LL-0 R/LH-0 U-0

— — — — — LLSTAT r —

bit 7 bit 0

凡例 : 「1」 = ビットはセット r = 予約済みビット

R = 読み出し専用ビット 「0」 = ビットはクリア U = 未実装ビット、「0」として読み出し

-n = POR 時の値 R/L = 読み出し専用ラッチビット

LL = ラッチ Low ビット LH = ラッチ High ビット

bit 15-13 未実装 :「0」として読み出し

bit 12-11 予約済み :「1」として読み出し

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

bit 2 LLSTAT: PHY リンクラッチ ステータスビット

1 = 前回 PHSTAT1 を読み出してから一度もリンクがダウンしていない0 = リンクがダウンしている、または PHSTAT1 を前回読み出してからダウンしていた期間がある

bit 1 予約済み : 読み出しは無視される

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

2013 Microchip Technology Inc. DS39762F_JP - p.235

Page 236: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-11: PHCON2: PHY 制御レジスタ 2

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

— FRCLNK r r r r r HDLDIS

bit 15 bit 8

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

r r r RXAPDIS r r r r

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

bit 15 未実装 :「0」として読み出し

bit 14 FRCLNK: PHY 強制リンクアップ ビット

1 = リンクパートナー未検出時でも強制的にリンクアップする ( 送信を常に許可 )0 = 通常動作 ( リンクパートナー未検出時は PHY が送信をブロック )

bit 13-9 予約済み :「0」として書き込み

bit 8 HDLDIS: PHY 半二重ループバック ディセーブルビット

1 = 通常の PHY 動作0 = 予約済み

bit 7-5 予約済み :「0」として書き込み

bit 4 RXAPDIS: RX+/RX- 動作モードビット

1 = 通常動作0 = 予約済み

bit 3-0 予約済み :「0」として書き込み

Note: HDLDIS または RXAPDIS ビットがクリアされている場合 ( リセット時の既定値 )、そのままでは Ethernetの動作が不正になる事があります。Ethernet モジュールを使う前の初期化でこれらのビットを必ずセットしてください。

DS39762F_JP - p.236 2013 Microchip Technology Inc.

Page 237: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-12: PHSTAT2: PHY ステータス レジスタ 2

U-0 U-0 R-0 R-0 R-0 R-0 R-x U-0

— — TXSTAT RXSTAT COLSTAT LSTAT r —

bit 15 bit 8

U-0 U-0 R-0 U-0 U-0 U-0 U-0 U-0

— — r — — — — —

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

bit 15-14 未実装 :「0」として読み出し

bit 13 TXSTAT: PHY 送信ステータスビット

1 = PHY がデータを送信中である0 = PHY はデータを送信中でない

bit 12 RXSTAT: PHY 受信ステータスビット

1 = PHY がデータを受信中である0 = PHY はデータを受信中でない

bit 11 COLSTAT: PHY コリジョン ステータスビット

1 = コリジョンが発生中である ( 半二重モードで PHY が送信と受信を同時に実行しようとしている )0 = コリジョンは発生していない

bit 10 LSTAT: PHY リンク ステータスビット

1 = リンクアップしている0 = リンクダウンしている

bit 9 予約済み : 読み出しは無視される

bit 8-6 未実装 :「0」として読み出し

bit 5 予約済み : 読み出しは無視される

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

2013 Microchip Technology Inc. DS39762F_JP - p.237

Page 238: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-13: PHLCON: PHY モジュール LED 制御レジスタ

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

r r r r LACFG3 LACFG2 LACFG1 LACFG0

bit 15 bit 8

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

LBCFG3 LBCFG2 LBCFG1 LBCFG0 LFRQ1 LFRQ0 STRCH r

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

bit 15-14 予約済み :「0」として書き込み

bit 13-12 予約済み :「1」として書き込み

bit 11-8 LACFG<3:0>: LEDA コンフィグレーション ビット

0000 = 予約済み0001 = 送信アクティビティを表示 ( ストレッチ可能 )0010 = 受信アクティビティを表示 ( ストレッチ可能 )0011 = コリジョン アクティビティを表示 ( ストレッチ可能 )0100 = リンクステータスを表示0101 = 全二重 / 半二重ステータスを表示0110 = 予約済み0111 = 送受信アクティビティを表示 ( ストレッチ可能 )1000 = 点灯1001 = 消灯1010 = 高速点滅1011 = 低速点滅1100 = リンクステータスと受信アクティビティを表示 ( 常にストレッチ )1101 = リンクステータスと送受信アクティビティを表示 ( 常にストレッチ )111x = 予約済み

bit 7-4 LBCFG<3:0>: LEDB コンフィグレーション ビット

0000 = 予約済み0001 = 送信アクティビティを表示 ( ストレッチ可能 )0010 = 受信アクティビティを表示 ( ストレッチ可能 )0011 = コリジョン アクティビティを表示 ( ストレッチ可能 )0100 = リンクステータスを表示0101 = 全二重 / 半二重ステータスを表示0110 = 予約済み0111 = 送受信アクティビティを表示 ( ストレッチ可能 )1000 = 点灯1001 = 消灯1010 = 高速点滅1011 = 低速点滅1100 = リンクステータスと受信アクティビティを表示 ( 常にストレッチ )1101 = リンクステータスと送受信アクティビティを表示 ( 常にストレッチ )111x = 予約済み

bit 3-2 LFRQ<1:0>: LED パルスストレッチ時間コンフィグレーション ビット ( 表 19-1 参照 )11 = 予約済み10 = LED イベントを TLSTRCH だけストレッチする01 = LED イベントを TMSTRCH だけストレッチする00 = LED イベントを TNSTRCH だけストレッチする

bit 1 STRCH: LED パルスストレッチ イネーブルビット 1 = ストレッチ可能な LED イベントで、LFRQ<1:0> の設定に基づいて LED の点灯時間を長くする0 = ストレッチ可能な LED イベントで、実際にイベントが発生している間だけ LED を点灯する

bit 0 予約済み :「0」として書き込み

DS39762F_JP - p.238 2013 Microchip Technology Inc.

Page 239: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.3 Ethernet 割り込み

Ethernet モジュールは複数の割り込み条件を生成できます。これら全ての割り込み要因に対処するため、Ethernet モジュールはマイクロコントローラの割り込みロジック構造と同じような専用の割り込みロジック構造を備えています。各種割り込み条件のイネーブルビットとフラグビットには別々のレジスタが用意されています。

EIE レジスタには各割り込み要因に対応した割り込みイネーブルビットがあり、EIR レジスタには対応する割り込みフラグビットがあります。割り込みが発生すると、対応する割り込みフラグがセットされます。その割り込みが EIE レジスタで有効であり、かつEthernetグローバル割り込みイネーブルビットETHIEがセットされていると、マイクロコントローラのマスタEthernet割り込みフラグ (ETHIF)が適切にセットされます ( 図 19-7 参照 )。

19.3.1 制御割り込み (ETHIE)

レジスタ 19-14 ~レジスタ 19-17 に、制御割り込みに関連する 4 つのレジスタを示します。

図 19-7: Ethernet モジュールの割り込みロジック

Note: 割り込み条件が発生すると、それに対応するイネーブルビットまたはグローバルイネーブルビットの状態に関わらず、対応する割り込みフラグビットがセットされます (LINKIF 割り込みフラグビットを除く )。ユーザ ソフトウェアは、割り込みを有効にする前に、対応する割り込みフラグビットを確実にクリアしておく必要があります。これにより、ソフトウェア ポーリングが可能になります。

PKTIF

PKTIE

DMAIF

DMAIE

LINKIE

TXIF

TXIE

Set ETHIF

ETHIETXERIF

TXERIE

RXERIF

RXERIE

LINKIFPGIF

PGEIE

PLNKIF

PLNKIE

2013 Microchip Technology Inc. DS39762F_JP - p.239

Page 240: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-14: EIE: Ethernet 割り込みイネーブル レジスタ

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

— PKTIE DMAIE LINKIE TXIE — TXERIE RXERIE

bit 7 bit 0

凡例 :

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

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

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

bit 6 PKTIE: 受信パケット保留割り込みイネーブルビット

1 = 受信パケット保留割り込みを有効にする0 = 受信パケット保留割り込みを無効にする

bit 5 DMAIE: DMA 割り込みイネーブルビット

1 = DMA 割り込みを有効にする0 = DMA 割り込みを無効にする

bit 4 LINKIE: リンクステータス変化割り込みイネーブルビット

1 = PHY からのリンクステータス変化割り込みを有効にする0 = リンクステータス変化割り込みを無効にする

bit 3 TXIE: 送信割り込みイネーブルビット

1 = 送信割り込みを有効にする0 = 送信割り込みを無効にする

bit 2 未実装 :「0」として読み出し

bit 1 TXERIE: 送信エラー割り込みイネーブルビット

1 = 送信エラー割り込みを有効にする0 = 送信エラー割り込みを無効にする

bit 0 RXERIE: 受信エラー割り込みイネーブルビット

1 = 受信エラー割り込みを有効にする0 = 受信エラー割り込みを無効にする

DS39762F_JP - p.240 2013 Microchip Technology Inc.

Page 241: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-15: EIR: Ethernet 割り込み要求 ( フラグ ) レジスタ

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

— PKTIF DMAIF LINKIF TXIF — TXERIF RXERIF

bit 7 bit 0

凡例 :

R = 読み出し可能ビット C = クリア可能ビット U = 未実装ビット、「0」として読み出し

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

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

bit 6 PKTIF: 受信パケット保留割り込みフラグビット

1 = 受信バッファに未処理パケットがある。PKTDEC (ECON2<6>) をセットして EPKTCNT が 0 にデクリメントした場合のみクリアされる

0 = 受信バッファはエンプティである

bit 5 DMAIF: DMA 割り込みフラグビット

1 = DMA コピーまたはチェックサム計算が完了している0 = 保留中の DMA 割り込みは存在しない

bit 4 LINKIF: リンクステータス変化割り込みフラグビット

1 = リンクステータスが変化した事がPHYから通知された(PHIRレジスタを読み出すとクリアされる)0 = リンクステータスは変化していない

bit 3 TXIF: 送信割り込みフラグビット

1 = 送信要求が終了した0 = 保留中の送信割り込みは存在しない

bit 2 未実装 :「0」として読み出し

bit 1 TXERIF: 送信エラー割り込みフラグビット

1 = 送信エラーが発生した0 = 送信エラーは発生していない

bit 0 RXERIF: 受信エラー割り込みフラグビット

1 = バッファ領域の不足またはバッファ オーバーランによってパケットの受信が中止された0 = 保留中の受信エラー割り込みは存在しない

2013 Microchip Technology Inc. DS39762F_JP - p.241

Page 242: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-16: PHIE: PHY 割り込みイネーブル レジスタ

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

r r r r r r r r

bit 15 bit 8

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

r r r PLNKIE r r PGEIE r

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

bit 15-6 予約済み : 「0」として書き込む。読み出しは無視される

bit 5 予約済み : 常に「0」

bit 4 PLNKIE: PHY リンクステータス変化割り込みイネーブルビット

1 = PHY リンクステータス変化割り込みを有効にする0 = PHY リンクステータス変化割り込みを無効にする

bit 3-2 予約済み : 「0」として書き込む。読み出しは無視される

bit 1 PGEIE: PHY グローバル割り込みイネーブルビット

1 = PHY 割り込みを有効にする0 = PHY 割り込みを無効にする

bit 0 予約済み : 常に「0」

レジスタ 19-17: PHIR: PHY 割り込み要求 ( フラグ ) レジスタ

R-x R-x R-x R-x R-x R-x R-x R-x

r r r r r r r r

bit 15 bit 8

R-x R-x R-0 R/SC-0 R-0 R/SC-0 R-x R-0

r r r PLNKIF r PGIF r r

bit 7 bit 0

凡例 : r = 予約済みビット

R = 読み出し可能ビット SC = 自己クリア可能ビット U = 未実装ビット、「0」として読み出し

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

bit 15-6 予約済み : 読み出しは無視される

bit 5 予約済み : 「0」として読み出し

bit 4 PLNKIF: PHY リンクステータス変化割り込みフラグビット

1 = 前回 PHIR を読み出してから PHY のリンクステータスが変化した。読み出すと「0」にリセットされる

0 = 前回 PHIR を読み出してから PHY のリンクステータスは変化していない

bit 3 予約済み : 「0」として読み出し

bit 2 PGIF: PHY グローバル割り込みフラグビット

1 = 前回 PHIR を読み出してから有効な PHY 割り込みが発生した。読み出すと「0」にリセットされる0 = PHY 割り込みは発生していない

bit 1 予約済み : 読み出しは無視される

bit 0 予約済み : 「0」として読み出し

DS39762F_JP - p.242 2013 Microchip Technology Inc.

Page 243: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.3.1.1 受信エラー割り込み (RXERIF)

受信エラー割り込みは、受信中のパケットがエラー条件によって受信が中止された事を示すために使います。エラーには以下の 3 種類があります。

1. 空きバッファ領域が不足して受信パケットを格納できなかった ( バッファ オーバーフロー )

2. EPKTCNT カウンタの値が 255 に達しており、これ以上パケットを受信するとオーバーフローになる

3. Ethernet RX ハードウェアに割り当てられているメモリ帯域幅が不足しており、受信データをバッファに書き込む事ができない

パケットを受信中に受信エラーが発生すると、パケットの受信は中止され ( パケットは完全に失われます )、RXERIF ビットが「1」にセットされます。セットされた RXERIF ビットは、ファームウェアまたはリセット条件によってのみクリアされます。受信エラー割り込みとEthernet割り込みの両方を有効に(RXERIEビットと ETHIE ビットをセット ) している場合、Ethernet割り込みが生成されます。受信エラー割り込みを無効に (RXERIE ビットと ETHIE ビットのどちらかをクリア ) している場合、アプリケーションで RXERIF ビットをポーリングして適切に対応する事ができます。

通常、上記 1、2 の受信エラー条件 ( バッファ オーバーフローまたはあと 1 回の受信でEPKTCNT オーバーフロー ) の場合、アプリケーションは受信バッファ内の未処理のパケットを処理した後、ERXRDPT レジスタペアを ( 下位バイトから先に ) 進め、EPKTCNT レジスタをデクリメントして、次のパケット受信用の空き領域を確保します。パケット処理の詳細は、セクション 19.5.3.3「受信バッファ空間の解放」を参照してください。処理が完了したら、RXERIF ビットをアプリケーションでクリアしてください。

上記の 3 番目のエラー条件 (RX メモリ帯域幅の不足 )かどうかは、BUFER ビット (ESTAT<6>) がセットされているかどうかで調べる事ができます。メモリアクセス エラーで BUFER がセットされても通常は一過性であるため、運用時の対策は不要です。BUFER エラーが頻繁または常時発生する場合、アプリケーションとそのバッファのメモリ帯域幅割り当ての調整が必要でしょう。

19.3.1.2 送信エラー割り込み (TXERIF)

送信エラー割り込みは、送信が中止された事を示すために使います。送信中止は以下のいずれかの条件で発生します。

1. 特定のパケットの送信中に16回以上のコリジョンが発生した場合

2. レイトコリジョン (パケットの64バイトが送信された後のコリジョン ) が発生した場合

3. 媒体が占有されたままであったためパケットを送信できず、遅延リミットに達しており、かつDEFER ビット (MACON4<6>) がクリアされている場合

4. HFRMENビット (MACON3<2>)をセットせず、個別パケット制御バイトの POVERRIDE ビットとPHUGEEN ビットもセットせずに、MAMXFL レジスタで定義された 大フレーム長を超えるパケットを送信しようとした場合

5. Ethernet バッファのメモリ帯域幅が不足しており、10 Mbit/s の転送レートを維持できなかった場合 ( バッファ アンダーラン )

これらいずれかのエラー条件が発生すると、TXERIFフラグビットが「1」にセットされます。一旦セットされた TXERIF ビットは、ファームウェアまたはリセット条件によってのみクリアされます。送信エラー割り込みを有効に (TXERIE ビットと ETHIE ビットの両方をセット ) している場合、Ethernet 割り込みが生成されます。送信エラー割り込みを無効に (TXERIEビットとETHIEビットのどちらかをクリア )している場合、アプリケーションで TXERIF ビットをポーリングして適切に対応する事ができます。割り込みの処理が完了したら、フラグビットをクリアしてください。

送信が中止されると TXRTS ビット (ECON1<3>) がクリアされ、TXABRT ビット (ESTAT<1>) がセットされ、送信ステータスベクタが (ETXNDレジスタ+ 1)のアドレスに書き込まれます。MAC は自動的にパケットの再送信を試みません。アプリケーションで送信ステータスベクタと BUFER ビットを読み出し、送信中止の原因を調べます。問題と解決方法を特定したら、次回の送信中止を検出できるように、アプリケーションでBUFER ビット ( セットされている場合 ) と TXABRTビットをクリアします。

全二重モードで送信エラー割り込みの要因となるのは、上記の条件 4 と 5 の場合のみです。BUFER ビットもセットされている場合、条件 5 であると判定できます。コリジョン等、ネットワークの共有に関連する問題は全二重ネットワークでは発生しません。送信エラー割り込みを引き起こすエラー条件は、送信割り込み条件と一致します。このため、送信エラー割り込みが発生すると TXIF ビットも同時にセットされます。

19.3.1.3 送信割り込み (TXIF)

送信割り込みは、要求されたパケット送信が完了した(TXRTS ビットが「1」から「0」に遷移した ) 事を示すために使います。送信の完了、中止、アプリケーションによる送信キャンセルがあると、TXIF フラグビットは「1」にセットされます。TXRTS ビットをアプリケーションでクリアしておらず、なおかつTXABRT ビットがセットされていなければ、パケットは正常に送信されています。一旦セットされた TXIFビットは、ソフトウェアまたはリセット条件によってのみクリアされます。送信割り込みを有効に (TXIEビットと ETHIE ビットの両方をセット ) している場合、割り込みが生成されます。送信割り込みを無効に(TXIEビットとETHIEビットのどちらかをクリア )した場合、アプリケーションで TXIF ビットをポーリングして適切に対応する事ができます。

2013 Microchip Technology Inc. DS39762F_JP - p.243

Page 244: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.3.1.4 リンクステータス変化割り込み(LINKIF)

LINKIF はリンクステータスが変化した事を示します。実際のリンクステータスは、LLSTATビット(PHSTAT1<2>)または LSTAT ビット (PHSTAT2<10>) から取得できます ( レジスタ 19-10 とレジスタ 19-12 参照 )。他の割り込み要因とは異なり、リンクステータス変化割り込みは PHY モジュールで生成されるため、有効にするには特別な手順が必要です。

リセット時の既定値では、LINKIF がセットされる事は決してありません。この割り込みを受けるには、PLNKIEビットとPGEIEビットの両方をセットする必要があります。この割り込みを有効にすると、LINKIFビットには PGIF ビットの内容がそのまま格納されます ( シャドー )。PHY は 1 つしか割り込みをサポートしないため、PGIF ビットは常に PLNKIF ビットと同じ値です (2 つの PHY イネーブルビットを両方セットした場合 )。

セットされた LINKIF ビットは、ソフトウェアまたはリセットによってのみクリアされます。リンクステータス変化割り込みを有効に (LINKIE、PLNKIE、PGEIE、ETHIE を全てセット ) している場合、割り込みが生成されます。リンクステータス変化割り込みを無効に(LINKIE、PLNKIE、PGEIE、ETHIE のいずれかをクリア )している場合、ユーザ アプリケーションでPLNKIFフラグビットをポーリングして適切に対応する事ができます。

LINKIF ビットは読み出し専用です。PHY レジスタの読み出しには比較的長い時間がかかるため、アプリケーションでPLNKIEビットとPGEIEビットをセットしてLINKIFフラグビットをポーリングするという方法もあります。PHIR レジスタを MII レジスタ経由で読み出すと LINKIF、PGIF、PLNKIF ビットが自動的にクリアされ、次回のリンクステータス変化割り込みを検出できます。PHY レジスタへのアクセスの詳細は、セクション 19.2.5「PHY レジスタ」を参照してください。

19.3.1.5 DMA 割り込み (DMAIF)

DMA 割り込みは、DMA モジュールがメモリコピーまたはチェックサム計算を完了 (DMAST ビットが「1」から「0」へ遷移 ) した事を示します。さらに、DMASTビットを手動でクリアしてアプリケーションが DMA動作をキャンセルした場合にこの割り込みが発生します。セットされた DMAIF ビットは、ファームウェアまたはリセット条件によってのみクリアされます。DMA 割り込みを有効にしている場合、Ethernet 割り込みが生成されます。DMA 割り込みを無効にしている場合、ユーザ アプリケーションで DMAIF フラグステータスをポーリングして適切に対応する事ができます。処理が完了したら、このフラグビットをクリアしてください。

19.3.1.6 受信パケット保留割り込み (PKTIF)

受信パケット保留割り込みは、受信バッファに 1 つ以上のデータパケットがある事を示すもので、新しいパケットが到着した事を通知する手段として使います。受信バッファに少なくとも 1 つのパケットがあると、

PKTIF フラグビットがセットされます。つまり、この割り込みフラグはEthernetパケットカウント レジスタ(EPKTCNT) がゼロ以外の場合、常にセットされます。

受信パケット保留割り込みを有効に (PKTIE ビットとETHIE ビットの両方をセット ) している場合、新しいパケットを正常に受信して受信バッファに書き込んだ時に Ethernet 割り込みが生成されます。受信パケット保留割り込みを無効に (PKTIE ビットと ETHIE ビットのいずれかをクリア ) している場合、ユーザ アプリケーションでPKTIFビットをポーリングして適切に対応する事ができます。

PKTIF ビットは、ソフトウェアで EPKTCNT レジスタを「0」にデクリメントして間接的にクリアするか、リセット条件でのみクリアできます。EPKTCNT レジスタのクリアについての詳細は、セクション 19.5.3「パケットの受信」を参照してください。受信バッファ内にある 後のデータパケットの処理が完了すると、EPKTCNT がゼロになり、PKTIF ビットは自動的にクリアされます。

19.3.2 Ethernet 割り込みとWake-On-LAN

Ethernet モジュールの割り込み構造は、Magic Packetを使った Wake-On-LAN を実装しています。これにより、アイドル時にアプリケーションが消費する電力を低減し、特定のパケット (Magic Packet) を受信したらフルパワー動作に復帰させる事ができます。

Wake-On-LAN を使うには、Ethernet モジュールをが常時有効である必要があります。また、Magic Packetを選択できるように受信フィルタを設定しておく必要もあります。フィルタの設定方法の詳細は、セクション 19.8「受信フィルタ」を参照してください。

Wake-On-LAN を使うには、以下の手順でマイクロコントローラを設定します。

1. Ethernet モジュールが有効で通常動作中に、CRCポストフィルタとMagic Packetフィルタを有効にする (ERXFCON<5,3> = 1)。

2. Ethernet バッファ内に残っている全てのパケットの処理を完了する。

3. マイクロコントローラ レベルで Ethernet 割り込みを有効にし (PIE2<5> = 1)、モジュールレベルで受信パケット保留割り込みを有効にする(EIE<6> = 1)。

4. マイクロコントローラを PRI_IDLE モードにする( プライマリ クロック源を選択した状態でOSCCON<7> = 1とし、SLEEP命令を実行する )。

この設定で Magic Packet を受信すると、受信パケット保留割り込みが発生します。これにより、マイクロコントローラは割り込みから復帰します。

DS39762F_JP - p.244 2013 Microchip Technology Inc.

Page 245: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.4 モジュールの初期化

Ethernet モジュールでパケットを送受信する前に、一部のデバイス設定を初期化する必要があります。アプリケーションによっては、一部の設定を変更する必要があります。通常、これらの作業はリセット後に 1 回行っておけば、それ以降は変更の必要はありません。

以下に説明する設定作業を行う前に、ETHEN ビット(ECON2<5>)をセットしてEthernetモジュールを有効にしておく事を推奨します。こうすると、PHYRDY フラグがセットされるまでの待ち時間をなくす事ができます。

19.4.1 受信バッファ

パケットを受信する前に、ERXST および ERXND ポインタを設定して受信バッファを初期化する必要があります。ERXST のアドレスから ERXND のアドレスまでのメモリ空間は全て受信ハードウェア専用です。ERXST ポインタには必ず偶数アドレスを書き込み、ERXND ポインタには必ず奇数アドレスを書き込む必要があります。

大容量のデータと高頻度のパケット受信が予測されるアプリケーションでは、メモリのほとんどを受信バッファに割り当てると良いでしょう。一方、古いパケットを保存しておきたい場合、または複数のパケットを送信バッファに格納しておきたい場合は受信バッファの割り当て量を少なくします。

ERXST または ERXND ポインタに書き込むと、ERXSTレジスタの値が自動的にERXWRPTポインタレジスタに書き込まれます。受信ハードウェアが受信データの書き込みを開始する時、ERXWRPT レジスタに格納されたアドレスを先頭アドレスとして使います。ERXSTおよび ERXND ポインタを初期化すると、さらにERXRDPTレジスタにERXNDの値が書き込まれます。ERXRDPT レジスタペアに書き込みを行う場合、ERXRDPTL、ERXRDPTH の順に書き込みを行うようにします。詳細は、セクション 19.5.3.3「受信バッファ空間の解放」を参照してください。

19.4.2 送信バッファ

受信バッファで使っていないメモリは全て送信バッファと見なされます。送信待ちデータは、未使用領域に書き込みます。しかし、パケットの送信が完了すると、ハードウェアはパケットの 終バイトの後のメモリアドレスに 7 バイトのステータスベクタを書き込みます。従って、送信パケットの末尾と受信バッファの先頭の間には少なくとも 7 バイトの領域を空けておく必要があります。

19.4.3 受信フィルタ

受信フィルタは、ERXFCON レジスタに書き込む事によって有効/無効にします。設定方法はセクション 19.8

「受信フィルタ」を参照してください。

19.4.4 PHY 起動タイマの遅延

ETHEN ビットを「1」にセットして Ethernet モジュールを有効にした直後に初期化手順を実行する場合、PHY レジスタを変更する前に 1 ms の遅延時間が必要なため、PHYRDY ビットをポーリングして確認する必要があります。PHY 起動タイマの詳細は、セクション19.1.3.1「起動タイマ」を参照してください。

19.4.5 MAC の初期化設定

一部の MAC レジスタは、初期化中に設定が必要です。この操作は初期化時に 1 回だけ行います。書き込みの順序は問いません。

1. MARXEN ビット (MACON1<0>) をセットしてMAC がフレームを受信できるようにする。全二重モードを使う場合、ほとんどのアプリケーションで TXPAUS ビットと RXPAUS ビットもセットして、IEEE で定義されたフロー制御を有効にしておく。

2. MACON3レジスタのPADCFG<2:0>、TXCRCEN、FULDPX ビットを設定する。ほとんどのアプリケーションでは、自動パディングを有効にしてフレーム長を 60 バイト以上にし、常に有効な CRCを付加する。多くのアプリケーションでは、FRMLNENビットもセットしてフレーム長を取得すると便利である。アプリケーションを全二重モードに設定されたリモートノードに接続する場合、FULDPX ビットをセットする。それ以外の場合、クリアしたままにする。

3. MACON4 のビットを設定する。IEEE 802.3 に準拠するため、DEFER ビット (MACON4<6>) を確実にセットする。

4. 送受信を許可する 大フレーム長を MAMXFL レジスタに書き込む。通常のネットワーク ノードは1518 バイト以下のパケットを処理するよう設計されている。これより大きいパケットは IEEE802.3 ではサポートされていない。

5. MAC連続パケット間ギャップレジスタ(MABBIPG)に 15h( 全二重モードの場合 ) または 12h( 半二重モードの場合 ) を書き込む。パケット間ギャップの設定方法の詳細は、レジスタ 19-18 を参照してください。

6. MAC 不連続パケット間ギャップレジスタ下位バイト (MAIPGL) に 12h を書き込む。

7. 半二重モードの場合、MAC 不連続パケット間ギャップレジスタ上位バイト (MAIPGH)に0Chを書き込む。

8. MAADR1:MAADR6 レジスタにローカル MAC アドレスを書き込む。

2013 Microchip Technology Inc. DS39762F_JP - p.245

Page 246: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.4.6 PHY の初期化設定

アプリケーションによっては、3 つの PHY モジュールレジスタのビットも設定する必要があります。

PDPXMD ビット (PHCON1<8>) は PHY の全二重 / 半二重モードの設定を制御します。FULDPX ビット(MACON3<0>) の設定に合わせて、このビットをアプリケーションで正しく設定する必要があります。

HDLDIS ビット (PHCON2<8>) はデータの自動ループバックを無効にします。正しく動作させるには、HDLDIS ビットと RXAPDIS ビット (PHCON2<4>) を常にセットしておきます。

PHY レジスタの PHLCON ( レジスタ 19-13) は LEDAと LEDB の出力を制御します。アプリケーションで既定値以外の LED の設定が必要な場合、このレジスタを変更して対応します。LED の動作の設定は、セクション 19.1.2「LED の設定」を参照してください。

19.4.7 Ethernet モジュールの無効化

状況によっては、Ethernet モジュールを長時間使う必要のない場合があります。例えば、ある特定のイベントが発生した時だけEthernetパケットを送受信したい場合です。このような場合、Ethernet モジュールだけを選択的に OFF にする事ができます。

Ethernet モジュールだけを無効にする手順は以下の通りです。

1. RXEN ビットをクリアしてパケット受信を無効にする。

2. RXBUSYビット (ESTAT<2>)をポーリングして現在受信中のパケットが終了するまで待つ。このビットがクリアになったら次の手順に進む。

3. 現在送信中のパケットが終了し、TXRTS ビット(ECON1<3>) がクリアになるのを待つ。

4. ETHEN ビットをクリアする。これで Ethernet モジュールへの電源とクロックの供給が停止し、PHY レジスタにアクセスできなくなる。PHYRDYビットも自動的にクリアされる。

レジスタ 19-18: MABBIPG: MAC 連続パケット間ギャップレジスタ

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

— BBIPG6 BBIPG5 BBIPG4 BBIPG3 BBIPG2 BBIPG1 BBIPG0

bit 7 bit 0

凡例 :

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

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

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

bit 6-0 BBIPG<6:0>: 連続パケット間ギャップ遅延時間ビット

FULDPX (MACON3<0>) = 1の場合 :パケットを連続して送信する際の、1 つのパケット送信終了から次のパケット送信開始までのニブル時間オフセット遅延を示す。「所定の遅延時間 ( 単位はニブル時間 ) - 3」の値をレジスタに書き込む。推奨設定は 15h で、この値は IEEE で規定されたパケット間ギャップ (IPG) の 小値である9.6 s に相当する

FULDPX (MACON3<0>) = 0の場合 :パケットを連続して送信する際の、1 つのパケット送信終了から次のパケット送信開始までのニブル時間オフセット遅延を示す。「所定の遅延時間 ( 単位はニブル時間 ) - 6」の値をレジスタに書き込む。推奨設定は 12h で、この値は IEEE で規定されたパケット間ギャップ (IPG) の 小値である9.6 s に相当する

DS39762F_JP - p.246 2013 Microchip Technology Inc.

Page 247: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.5 データの送受信

Ethernet プロトコル (IEEE 802.3) では、フレームベースの10 Mbpsシリアル通信システムが詳細に記述されています。Ethernet モジュールの使い方を説明する前に、代表的な Ethernet データフレームの構造を簡単に説明しておきます。なお、IEEE 802.3 の基礎知識がある事を前提とします。さらに詳しい情報が必要な場合、正式な規格文書または Ethernet に関する解説書で、より詳細な説明を参照してください。

19.5.1 パケットのフォーマット

IEEE 802.3 に準拠した Ethernet フレームは、長さ 64~ 1518 バイトです。各フレームは、宛先 MAC アドレス、送信元 MAC アドレス、タイプ / 長さフィールド、データペイロード、パディング フィールド ( オプション )、CRC チェックの 5 つ ( オプションを含めると 6つ ) のフィールドで構成されます。また、Ethernet 媒体上で送信を行う際は7バイトのプリアンブル フィー

ルドと 1 バイトの SFD (Start Frame Delimiter) がEthernet パケット先頭に付加されます。このため、ツイストペア ケーブル上を流れるトラフィックの構造は図 19-8 に示す通りです。

19.5.1.1 プリアンブル /SFD

Ethernet モジュールを使ってデータを送信する際にはプリアンブルと SFD の各バイトが自動的に生成され、受信時にパケットから自動的に取り除かれます。また、送信時にはCRCフィールドとパディング (必要な場合 )が自動的に生成され、受信時には CRC データが検証されます。ユーザ アプリケーションはこれらのフィールドを作成または処理する必要はなく、明示的に CRCデータを検証する必要もありません。しかし、パディングおよび CRC フィールドはパケット受信時に受信バッファに書き込まれるため、必要に応じてユーザ アプリケーションで評価する事ができます。

図 19-8: Ethernet パケットのフォーマット

SA

パディング

FCS(1)

バイト数 フィールド コメント

6

46-1500

4

DA宛先アドレス、マルチキャスト、ブロードキャスト、ユニキャスト等

送信元アドレス

パケットのペイロード

フレームチェック シーケンス – CRC

タイプ / 長さ

データ

 

6

2 パケットのタイプまたはパケットの長さ

( 必要に応じてパディング含む )

7 プリアンブル モジュールによって除外

SFD1SFD( モジュールによって除外 )

FCS の 計算に 使用

Note 1: FCS は bit 31 ~ bit 0 の順に送信されます。

2013 Microchip Technology Inc. DS39762F_JP - p.247

Page 248: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.5.1.2 宛先アドレス (DA)

宛先アドレス (DA)は6バイトのフィールドで、パケットの送信先デバイスの MAC アドレスを格納します。MAC アドレスの先頭バイトの 下位ビットをセットした場合、宛先アドレスはマルチキャストです。例えば、01-00-00-00-F0-00 と 33-45-67-89-AB-CD はマルチキャスト アドレスで、00-00-00-00-F0-00 と32-45-67-89-AB-CD はそうではありません。

宛先アドレスがマルチキャストのパケットは、特定の Ethernet ノードグループが受信する事を目的とし、そのノードグループで意味を持ちます。宛先アドレスに予約済みのマルチキャスト アドレスであるFF-FF-FF-FF-FF-FF を指定した場合、そのパケットをブロードキャスト パケットと呼び、同じネットワークに接続している全てのノードが宛先です。MAC アドレスの先頭バイトの 下位ビットをクリアした場合、宛先アドレスはユニキャストで、指定した単一アドレスのノードのみが宛先です。

本モジュールは、宛先アドレスがマルチキャスト、ブロードキャスト、ユニキャストかによってパケットを破棄する受信フィルタを備えています。パケットを送信する際は、アプリケーションで所定の宛先アドレスを送信バッファに書き込む必要があります。

19.5.1.3 送信元アドレス (SA)

送信元アドレス (SA) は 6 バイトのフィールドで、Ethernet パケットを作成したノードの MAC アドレスを格納します。Ethernet モジュールを使う場合、各マイクロコントローラに一意の MAC アドレスを生成する必要があります。

MAC アドレスは 2 つの部分から成ります。 初の 3 バイトはベンダ識別子 (OUI) と呼ばれます。OUI は IEEEが割り当てています。 後の 3 バイトは、OUI を購入したベンダが自由に割り当てる事のできるアドレスバイトです。

パケットを送信する際は、アプリケーションで送信元に割り当てられた MAC アドレスを送信バッファに書き込む必要があります。MAADR レジスタ ( ユニキャスト受信フィルタで使用 ) の内容を Ethernet モジュールが自動的に送信する事はありません。

19.5.1.4 タイプ / 長さ

タイプ / 長さフィールドは 2 バイトのフィールドで、後続のパケットデータがどのプロトコルに属するかを定義します。ただしこのフィールドに 05DCh (1500)以下の数値を書き込んだ場合は長さフィールドと見なされ、後続するデータフィールド内のパディングを除いたデータの長さを表します。独自規格のネットワークを実装する場合はこのフィールドを長さフィールドとして扱い、IP (Internet Protocol) や ARP (AddressResolution Protocol)等のプロトコルを実装するアプリケーションではこのフィールドに各プロトコルの規格で定義された適切なタイプを書き込んでからパケットを送信します。

19.5.1.5 データ

データフィールドは 0 ~ 1500 バイトの任意の長さをとる事ができます。これよりも長いデータパケットはEthernet 規格に違反しており、ほとんどの Ethernetノードはこのようなパケットを破棄します。ただし本モジュールは、ジャンボフレーム イネーブルビット(HFRMEN) をセット (MACON3<2> = 1) するとこれより大きなパケットの送受信が可能です。

19.5.1.6 パディング

パディング フィールドは、データペイロードが短い場合に IEEE 802.3 規格の要件を満たすために付加する可変長のフィールドです。DA、SA、タイプ、データ、パディングを合計した Ethernet パケットは 60 バイト以上である事が必要です。4 バイトの必須フィールドである CRC を付加すると少なくとも 64 バイト必要です。データフィールドの長さが 46 バイト未満の場合、パディング フィールドが必要です。

PADCFG<2:0> ビット (MACON3<7:5>) の設定によっては、パケット送信時に Ethernet モジュールが自動的にゼロ パディングを生成します。それ以外の場合、パケット送信前にユーザ アプリケーションでパディングを付加する必要があります。アプリケーションでサイズの小さいパケットの送信を指示した場合、Ethernetモジュールはそのまま送信します。

本モジュールは、18 バイト未満のパケット受信を拒否します。18 バイト以上のパケットには通常の受信フィルタを適用し、通常のトラフィックとして受け入れます。本モジュールが拒否するのは 18 バイト未満のパケットのみのため、IEEE 802.3 規格の要件を満たすためには、ファームウェアで全ての受信パケットサイズをチェックして、64 バイト未満のパケットを拒否する必要があります。

19.5.1.7 CRC

CRC フィールドは、DA、SA、タイプ、データ、パディングの各フィールドのデータから計算した業界標準の 32 ビット CRC 値を格納する 4 バイトのフィールドです。このフィールドを使って Ethernet フレームの破損と、パケット コリジョンまたは他のホストの送信中止によるジャンクデータ フラグメントを検出します。

Ethernetモジュールは、パケット受信時に各受信パケットの CRC をチェックします。CRCEN ビットがセットされている場合、CRC の無効なパケットは自動的に破棄されます。CRCEN ビットがクリアされている場合、パケットは他の全ての受信フィルタ基準を満たした場合に受信バッファに書き込まれます。CRC が有効だったかどうかは、アプリケーションで受信ステータスベクタを読み出して判定できます ( セクション 19.5.3「パケットの受信」参照 )。

PADCFG<2:0> ビットの設定によっては、パケット送信時に Ethernet モジュールが自動的に有効な CRC を生成して送信します。それ以外の場合、ユーザ アプリケーションで CRC を生成して送信バッファに格納する必要があります。CRC 計算は複雑なため、Ethernetモジュールで自動的に計算して CRC を付加する事を強く推奨します。

DS39762F_JP - p.248 2013 Microchip Technology Inc.

Page 249: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.5.2 パケットの送信

Ethernet モジュールの MAC は、パケット送信時に自動的にプリアンブルと SFD フィールドを生成します。また、設定によってはパディング (必要な場合 )とCRCも生成できます。それ以外の全てのフレーム フィールドはアプリケーションで生成して送信バッファメモリに書き込む必要があります。

また、本モジュールでは各送信パケットの先頭に個別パケット制御バイト (1 バイト )を付加する必要があります。図 19-9 に、この個別パケット制御バイトの構成を示します。パケットを送信する前に、MAC レジスタをセクション 19.4「モジュールの初期化」の説明に従って初期化しておく必要があります。MAC レジスタは送信の特性を変更します。

図 19-9: 個別パケット制御バイトのフォーマット

— — — — PHUGEEN PPADN PCRCEN POVERRIDE

bit 7 bit 0

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

bit 3 PHUGEEN: 個別パケット ジャンボフレーム イネーブルビット

POVERRIDE = 1の場合 :1 = パケット全体を送信する0 = MAMXFL レジスタで指定したバイト数までを MAC で送信する。指定したバイト数よりも

パケットが長い場合、MAMXFL レジスタで指定したバイト数に達した時点で送信を中止する

POVERRIDE = 0の場合 :このビットを無視する

bit 2 PPADN: 個別パケット パディング イネーブルビット

POVERRIDE = 1の場合 :1 = パケットサイズが 60 バイト未満の場合、ゼロでパディングして 60 バイトにする0 = パディングバイトを付加せずにパケットを送信する

POVERRIDE = 0の場合 :このビットを無視する

bit 1 PCRCEN: 個別パケット CRC イネーブルビット

POVERRIDE = 1の場合 :1 = 有効な CRC を計算してフレームに付加する0 = CRC を付加しない。フレーム末尾の 4 バイトを CRC として誤りチェックを行う

POVERRIDE = 0の場合 :このビットを無視する

bit 0 POVERRIDE: 個別パケット優先ビット

1 = MACON3 レジスタで定義した設定値ではなく、PCRCEN、PPADN、PHUGEEN ビットの値を優先する

0 = MACON3 レジスタの設定値でパケットの送信方法を決定する

2013 Microchip Technology Inc. DS39762F_JP - p.249

Page 250: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 19-10 に、組み立てられた送信パケット全体のメモリ内での構造の例を示します。パケットは、以下の方法で構成して送信します。

1. ETXST ポインタにバッファ内の適切な未使用アドレスを書き込む。このアドレスは個別パケット制御バイトの位置を示す ( この例では 0120h)。ETXST ポインタには偶数アドレスを指定する事が推奨される。

2. EDATA および EWRPT レジスタを使ってパケットデータを Ethernet バッファに順番に書き込む。データは、個別パケット制御バイト、DA、SA、タイプ / 長さ、データペイロードの順に書き込む。

3. ETXND ポインタにデータペイロードの 後のバイトのアドレスを書き込む ( この例では 0156h)。

4. TXIF フラグビット (EIR<3>) をクリアし、TXIEビット (EIE<3>) と ETHIE ビットをセットして、完了時の割り込みを有効にする ( 必要な場合 )。

5. TXRTS ビット (ECON1<3>) をセットして送信プロセスを開始する。

TXRTSビットをセットした時にDMA動作が進行中の場合、Ethernet モジュールはその DMA 動作が完了するまで待ってからパケットの送信を試みます。このような遅延が必要なのは、DMA と送信エンジンが同じメモリアービタ チャンネルを共有しているためです。同

様に、TXRTS がセットされている状態で DMAST ビットをセットした場合、DMA は TXRTS ビットがクリアされるのを待ってから処理を開始します。

送信が進行中は、ETXST および ETXND ポインタの値を変更しないでください。送信をキャンセルするには、TXRTS ビットをクリアします。

パケットの送信が完了した場合、またはエラー / キャンセルによって送信が中止された場合、以下の処理が実行されます。

• TXRTS ビットがクリアされる

• 7 バイトの送信ステータスベクタが、「ETXND ポインタ + 1」で示されるアドレスのバッファに書き込まれる

• TXIF フラグビットがセットされる

• 割り込みが生成される ( 割り込みを有効にしている場合 )

• ETXST および ETXND ポインタの値は変更されない

パケットが正常に送信されたかどうかをチェックするには、TXABRT ビットを読み出します。このビットがセットされている場合、BUFER ビットと、送信ステータスベクタの各フィールドをポーリングして原因を特定します。表 19-4 に、送信ステータスベクタの構成を示します。複数バイトのフィールドはリトルエンディアン方式で書き込まれます。

図 19-10: 送信パケットのレイアウト例

Control

tsv[7:0]

tsv[15:8]

アドレス メモリ 説明

0120h

0121h

0122h

015Ah

015Bh

015Ch

015Dh

0Eh PHUGEEN、PPADN、

宛先アドレス、

015Eh次のパケットの開始

tsv[23:16]

tsv[31:24]

data[1]

data[2]

tsv[39:32]

tsv[47:40]

tsv[55:48]

0159h

0157h

0158h

0156h data[m]

データパケット

ステータスベクタステータスベクタ

ETXST = 0120h

ETXND = 0156h

タイプ / 長さ、データ

PCRCEN、POVERRIDE

ハードウェアによる書き込み

送信元アドレス、

バッファポインタ

DS39762F_JP - p.250 2013 Microchip Technology Inc.

Page 251: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 19-4: 送信ステータスベクタ

Bit フィールド 説明

55-52 ゼロ 0

51 VLAN タグ付きフレーム送信 フレームのタイプ / 長さフィールドに VLAN プロコトル識別子の8100h が含まれていた

50 バックプレッシャ対応 予約済み、使用不可

49 PAUSE 制御フレーム送信 送信されたフレームは有効な PAUSE オペコードを持つ制御フレームであった

48 制御フレーム送信 送信されたフレームは制御フレームであった

47-32 媒体に送信される総バイト数 現在のパケットでケーブルに送信された総バイト数( コリジョンによる再送バイトも全て含む )

31 送信アンダーラン バッファメモリの帯域幅が不足して 10 Mbps の送信レートを維持できなかったため送信が中止された

30 ジャンボフレーム送信 フレームのバイト数が MAMXFL レジスタの値を超えた

29 送信時のレイトコリジョン 64 バイトを送信した後にコリジョンが発生した

28 送信コリジョン回数オーバー コリジョンの回数が再送の上限である 15 回を超えたためパケット送信が中止された

27 送信延期時間オーバー 媒体が占有されたままであったため、パケットの送信延期時間が24,287 ビット時間 (2.4287 ms) を超えた

26 パケット送信延期 パケットの送信が少なくとも 1 回延期された( ただし延期時間の上限は超えていない )

25 ブロードキャスト送信 パケットの宛先アドレスがブロードキャスト アドレスだった

24 マルチキャスト送信 パケットの宛先アドレスがマルチキャスト アドレスだった

23 送信完了 パケットの送信が正常に完了した

22 送信長さ上限オーバー フレームのタイプ / 長さフィールドが 1500 バイトを超えた ( タイプフィールド )

21 送信長さチェックエラー パケット フレームの長さフィールドの値が実際のデータバイトの長さと一致しておらず、しかもタイプフィールドでない。このエラーを捕捉するには、FRMLNEN ビット (MACON3<1>) をセットする必要がある

20 送信 CRC エラー パケットに付加された CRC が内部生成した CRC と一致しなかった

19-16 送信コリジョン回数 現在のパケット送信中に発生したコリジョンの回数を示す。正常に送信されたパケットのみが対象のため、コリジョン回数の 大値は 16になる事はない。

15-0 送信バイト数 フレームの総バイト数 ( コリジョンのバイト数を除く )

2013 Microchip Technology Inc. DS39762F_JP - p.251

Page 252: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.5.3 パケットの受信

受信バッファが初期化され、MAC と受信フィルタが正しく設定されていれば、アプリケーションは以下の手順で Ethernet パケットを受信します。

1. PKTIE および ETHIE ビットをセットして、パケット受信時に Ethernet 割り込みを生成する ( 必要な場合 )。

2. RXERIF フラグビットをクリア、RXERIE ビットと ETHIE ビットをセットし、バッファ空き領域またはメモリアクセス帯域幅の不足によるパケット取りこぼし時に割り込みを生成する(必要な場合)。

3. RXENビット (ECON1<2>)をセットして受信を有効にする。

RXEN をセットした後は、全二重 / 半二重モードの設定と、受信バッファ開始 / 終了ポインタの値を変更してはいけません。また、予期しないパケットの到着を防ぐため、受信フィルタ設定 (ERXFCON) と MAC アドレスを変更する前に、RXEN ビットをクリアする事を推奨します。

受信を有効にすると、フィルタを通過したパケットは環状受信バッファに書き込まれます。フィルタ条件を満たさないパケットは破棄されます。パケットが破棄

された事をアプリケーション側で知る手段はありません。パケットが受け入れられ、バッファへの書き込みが完了すると以下の処理が実行されます。

• EPKTCNT レジスタがインクリメントする。

• PKTIF ビットがセットされる。

• 割り込みが生成される ( 割り込みを有効にしている場合 )。

• ハードウェア書き込みポインタの ERXWRPT が自動的に進められる。

19.5.3.1 受信パケットのレイアウト

図 19-11 に、受信パケットのレイアウトを示します。パケットの前には 6 バイトのヘッダが付加されます。このヘッダは、Next Packet ポインタと受信ステータスベクタ ( パケットサイズ等、受信に関する情報を記録したもの ) で構成されます。表 19-5 に受信ステータスベクタを示します。

パケット末尾のバイトが奇数アドレスで終了している場合、ハードウェア書き込みポインタを進める際にハードウェアによって自動的にパディングバイトが付加されます。このため、全てのパケットは偶数境界から開始します。

図 19-11: 受信パケットのレイアウト例

Low ByteHigh Byte

rsv[7:0]

rsv[15:8]

data[m-3]

data[m-2]

data[m-1]

data[m]

アドレス メモリ 説明

1020h

1021h

1022h

1023h

105Ah

105Bh

105Ch

1059h

10h

5Eh次のパケットのポインタ

パケットデータ : 宛先アドレス、

受信ステータスベクタ

crc[31:24]crc[23:16]

crc[15:8]crc[7:0]

105Eh

次のパケットの開始

rsv[23:16]

rsv[30:24]1024h

1025hdata[1]1026hdata[2]1027h

status[7:0]

status[15:8]

status[23:16]

status[31:24]

105Dh スキップされるバイト( 偶数バッファアドレスにするため )

101Fh

前のパケットの終了パケット N – 1

送信元アドレス、タイプ / 長さ、データ、パディング、CRC

パケット N

パケット N + 1

DS39762F_JP - p.252 2013 Microchip Technology Inc.

Page 253: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 19-5: 受信ステータスベクタ

19.5.3.2 受信パケットの読み出し

パケットを処理する際、アプリケーションは通常 NextPacket ポインタの先頭から読み出しを開始します。そして Next Packet ポインタと、受信ステータスベクタの必要なバイトを保存した後、実際のパケットの内容を読み出します。AUTOINC ビットがセットされている場合、ERDPT レジスタを書き換えなくてもパケット全体を順次読み出す事ができます。読み出しポインタは環状受信バッファの 後まで来ると自動的にバッファの先頭へラップアラウンドします。

パケットにランダムにアクセスするには、パケットがERXND から ERXST へのバッファ境界をまたいでいる場合に受信バッファの末尾を超えないように注意しながら、適切な ERDPT レジスタをアプリケーション

で計算する必要があります。つまり、パケットの開始アドレスと所定のオフセット値に基づき、式 19-1 に

示すロジックで計算します。

式 19-1: ランダムアクセスの場合のアドレス計算

Bit フィールド 説明

31 ゼロ 「0」

30 受信 VLAN タイプ検出 現在のフレームが VLAN タグ付きフレームとして認識された

29 不明なオペコード受信 現在のフレームが制御フレームとして認識されたが、不明なオペコードを含んでいた

28 PAUSE 制御フレーム受信 現在のフレームが有効な PAUSE フレーム オペコードと有効な宛先アドレスを含む制御フレームとして認識された

27 制御フレーム受信 現在のフレームが有効なタイプ / 長さフィールドを持つ制御フレームとして認識された

26 ドリブルニブル このパケットの終了後、さらに 1 ~ 7 ビットを受信した ( これらの余分なビットは破棄された )

25 ブロードキャスト パケット受信 受信したパケットに有効なブロードキャスト アドレスが含まれていた

24 マルチキャスト パケット受信 受信したパケットに有効なマルチキャスト アドレスが含まれていた

23 受信 OK パケットに有効な CRC があり、シンボルエラーが検出されなかった

22 長さ上限オーバー フレームのタイプ / 長さフィールドが 1500 バイトを超えた ( タイプフィールド )

21 長さチェックエラー パケット内のフレームの長さフィールドの値が実際のデータバイトの長さと一致しない

20 CRC エラー フレームのCRCフィールドの値がMACで計算したCRCと一致しない

19 予約済み

18 以前に観察されたキャリアイベント検出

後の受信の後でキャリアイベントを検出した。そのキャリアイベントはこのパケットと関連していない。キャリアイベントとは、パケット受信の試みに至らない受信チャンネル上でのアクティビティを示す

17 予約済み

16 ロングイベント / ドロップイベント 50,000 ビット時間を超えるパケットを受信した、または 後の受信の後パケットを取りこぼした

15-0 受信バイト数 受信したフレーム (DA、SA、タイプ / 長さ、データ、パディング、CRC フィールド ) の長さを示す。このフィールドはリトルエンディアン形式で格納される

If Packet Start Address + Offset > ERXND, then ERDPT = Packet Start Address + Offset – (ERXND – ERXST + 1)

else:ERDPT = Packet Start Address + Offset

2013 Microchip Technology Inc. DS39762F_JP - p.253

Page 254: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.5.3.3 受信バッファ空間の解放

ユーザ アプリケーションでパケット ( またはパケットの一部 ) を処理した後、処理済みデータが占有しているバッファ空間を解放するには、受信バッファ読み出しポインタペアのERXRDPTを進める必要があります。Ethernet モジュールは ERXRDPT レジスタが指し示すメモリアドレスの直前までしか書き込みを行いません。ERXRDPT が示すアドレスへの上書きが試行されるとパケットの受信が中止され、RXERIF フラグがセットされて割り込みが生成されます ( 割り込み有効時 )。このようにして、ハードウェアは未処理のパケットを決して上書きしないようにしています。通常、ERXRDPT ペアは Next Packet ポインタが指し示す値の近くまで進みます。Next Packet ポインタは、現在のパケットの受信ステータスベクタの前にあります。

受 信 バ ッ フ ァ 読 み 出 し ポ イ ン タ 下 位 バ イ ト(ERXRDPTLレジスタ)への書き込みは内部でバッファされ、1 バイトのみの更新ではポインタは進みません。ERXRDPT ペアを移動するには、アプリケーションでERXRDPTL から先に書き込む必要があります。この書き込みによって内部バッファが更新されますが、レジスタは変更されません。次にアプリケーションがERXRDPTHへの書き込みを実行した時点で、内部バッファに格納された下位バイトが ERXRDPTL レジスタに書き込まれます。ERXRDPT バイトはどちらの順番でも読み出す事ができます。これらのバイトを読み出すと、レジスタの実際の値が返されます。このため、内部バッファに格納された下位バイトは読み出す事ができません。

各パケットの処理が完全に終了したらERXRDPTを進めると同時に、アプリケーションで PKTDEC ビット(ECON2<6>) をセットする必要があります。これにより EPKTCNT レジスタが 1 つデクリメントします。デクリメント後、EPKTCNT ビットが「0」の場合、PKTIFフラグビットが自動的にクリアされます。それ以外の場合、PKTIF フラグビットはセットされたままで、受信バッファにまだパケットがあり、処理を待っている事を示します。EPKTCNT = 0 の場合にさらにデクリメントしようとしても、255 にアンダーフローする事はありませんが、予期しない割り込みが発生する場合があります。EPKTCNT = 0 の時に、アプリケーションで EPKTCNT をデクリメントしないでください。

また、EPKTCNT レジスタが 大値の 255 になると、バッファに空き領域があっても新しく受信したパケットは全て中止されます。このエラーを示すために、RXERIF ビットがセットされ、割り込みが発生します( 割り込み有効時 )。このような状況を防ぐには、パケット処理の際にユーザ アプリケーションでカウンタを適切にデクリメントがする必要があります。

バッファ領域の所有権を制御するポインタは 1 つしかないため、アプリケーションはパケットを受信した順に処理する必要があります。パケットを保存して後で処理する場合、アプリケーションでパケットを未使用のメモリ領域へコピーしてください。この処理は、内蔵 DMA コントローラを使うと効率的に行う事ができます ( セクション 19.9「ダイレクト メモリアクセス(DMA) コントローラ」参照 )。

19.5.3.4 受信バッファの空き領域

アプリケーションで受信バッファの空き領域を調べる必要がある場合、ハードウェア書き込みポインタ(ERXWRPT レジスタ ) を読み出して ERXRDPT レジスタと比較します。既知である受信バッファサイズと組み合わせると、空き領域を求める事ができます。

受信ハードウェアを有効にした状態で ERXWRPT レジスタを読み出す際は、下位バイトと上位バイトを正しい組み合わせで読み出した事を確認する必要があります。

正しい組み合わせで取得したかどうかを確認する手順は以下の通りです。

1. EPKTCNT レジスタを読み出し、その内容を保存する。

2. ERXWRPTL と ERXWRPTH を読み出す。

3. EPKTCNT レジスタをもう一度読み出す。

4. 2 つのパケット数を比較する。パケット数が一致しなければ手順 2 に戻る。

ハードウェア書き込みポインタの値を取得したら、式 19-2 で空き領域を求める事ができます。書き込みポインタを ERXRDPT レジスタが占める値と同じ値にする事はハードウェアで禁止されているため、バッファには常に少なくとも1バイトの未使用領域が残ります。式 19-2 には、この 1 バイトの未使用領域が反映されています。

式 19-2: 受信バッファの空き領域の計算

Note: ERXWRPT レジスタが更新されるのはパケットの受信が正しく完了した時のみです。アプリケーションで ERXWRPTレジスタを読み出した直後に次のパケットの読み出しが正しく完了した場合、返される値は 新のものではなく、「 大フレーム長 (MAMXFLH:MAMXFLL) + 8」だけ先に進んでいる可能性があります。さらに、アプリケーションで ERXWRPT レジスタペアの片方のバイトを読み出している間に新しいパケットが到着すると、ERXWRPT レジスタペアのもう片方のバイトを読み出す前に13ビットのポインタ全体が更新される可能性があります。

If ERXWRPT > ERXRDPT, thenFree Space = (ERXND – ERXST) – (ERXWRPT – ERXRDPT)

else: if ERXWRPT = ERXRDPT, then

Free Space = (ERXND – ERXST)else:

Free Space = ERXRDPT – ERXWRPT – 1

DS39762F_JP - p.254 2013 Microchip Technology Inc.

Page 255: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 19-6: パケット送信に関連するレジスタのまとめ

表 19-7: パケット受信に関連するレジスタのまとめ

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

EIE - PKTIE DMAIE LINKIE TXIE - TXERIE RXERIE 73

EIR - PKTIF DMAIF LINKIF TXIF - TXERIF RXERIF 73

ESTAT - BUFER - r - RXBUSY TXABRT PHYRDY 73

ECON1 TXRST RXRST DMAST CSUMEN TXRTS RXEN - - 70

ETXSTL 送信開始レジスタ下位バイト (ETXST<7:0>) 74

ETXSTH - - - 送信開始レジスタ上位バイト (ETXST<12:8>) 74

ETXNDL 送信終了レジスタ下位バイト (ETXND<7:0>) 74

ETXNDH - - - 送信終了レジスタ上位バイト (ETXND<12:8>) 74

MACON1 - - - r TXPAUS RXPAUS PASSALL MARXEN 75

MACON3 PADCFG2 PADCFG1 PADCFG0 TXCRCEN PHDREN HFRMEN FRMLNEN FULDPX 75

MACON4 - DEFER r r - - r r 75

MABBIPG - BBIPG6 BBIPG5 BBIPG4 BBIPG3 BBIPG2 BBIPG1 BBIPG0 75

MAIPGL - MAC 不連続パケット間ギャップレジスタ下位バイト (MAIPGL<6:0>) 75

MAIPGH - MAC 不連続パケット間ギャップレジスタ上位バイト (MAIPGH<6:0>) 74

MAMXFLL 大フレーム長レジスタ下位バイト (MAMXFL<7:0>) 74

MAMXFLH 大フレーム長レジスタ上位バイト (MAMXFL<15:8>) 74

凡例 : — = 未実装、r = 予約済みビット、網掛けの部分は使いません。

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

EIE - PKTIE DMAIE LINKIE TXIE - TXERIE RXERIE 73

EIR - PKTIF DMAIF LINKIF TXIF - TXERIF RXERIF 73

ESTAT - BUFER - r - RXBUSY TXABRT PHYRDY 73

ECON2 AUTOINC PKTDEC ETHEN - - - - - 73

ECON1 TXRST RXRST DMAST CSUMEN TXRTS RXEN - - 70

ERXSTL 受信開始レジスタ下位バイト (ERXST<7:0>) 74

ERXSTH - - - 受信開始レジスタ上位バイト (ERXST<12:8>) 74

ERXNDL 受信終了レジスタ下位バイト (ERXND<7:0>) 74

ERXNDH - - - 受信終了レジスタ上位バイト (ERXND<12:8>) 73

ERXRDPTL 受信バッファ読み出しポインタ下位バイト (ERXRDPT<7:0>) 73

ERXRDPTH - - - 受信バッファ読み出しポインタ上位バイト (ERXRDPT<12:8>) 73

ERXFCON UCEN ANDOR CRCEN PMEN MPEN HTEN MCEN BCEN 74

EPKTCNT Ethernet パケットカウント レジスタ 74

MACON1 - - - r TXPAUS RXPAUS PASSALL MARXEN 75

MACON3 PADCFG2 PADCFG1 PADCFG0 TXCRCEN PHDREN HFRMEN FRMLNEN FULDPX 75

MAMXFLL 大フレーム長レジスタ下位バイト (MAMXFL<7:0>) 74

MAMXFLH 大フレーム長レジスタ上位バイト (MAMXFL<15:8>) 74

凡例 : — = 未実装、r = 予約済みビット、網掛けの部分は使いません。

2013 Microchip Technology Inc. DS39762F_JP - p.255

Page 256: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.6 全二重 / 半二重モードの設定とネゴシエーション

本モジュールは全二重 / 半二重モードの自動ネゴシエーションをサポートしていません。全二重 / 半二重モードの自動ネゴシエーションに対応したネットワーク スイッチまたはEthernetコントローラに接続すると、本モジュールは半二重デバイスとして検出されます。全二重モードで通信するには、本モジュールとリモートノード ( スイッチ、ルータ、Ethernet コントローラ )を手動で全二重動作に設定する必要があります。

19.6.1 半二重動作

FULDPX ビット (MACON3<0>) と PDPXMD ビット(PHCON1<8>) をクリア (= 0) すると、本モジュールは半二重モードで動作します。これら 2 つのビットのいずれか 1 つのみがセットされている場合、本モジュールは中間状態となり、正しく動作しません。モード切り換え時にはこの中間状態となる可能性があるため、切り換え中はアプリケーションでパケットの送受信を無効 (TXRTS ビットと RXEN ビットをクリア ) にしておく事を推奨します。

半二重モードでは、1 つの物理媒体上で一度に送信を行える Ethernet コントローラは 1 つだけです。別のEthernet コントローラがパケットを送信中に、アプリケーションが TXRTS ビットをセットしてパケットの送信を要求しても、Ethernet モジュールはリモートのトランスミッタが停止するまで待機します。停止したら、Ethernet モジュールはパケットの送信を試みます。送信とほぼ同時に別のEthernetコントローラが送信を開始すると、ケーブル上のデータが破損し、コリジョンが発生します。

コリジョン発生時のハードウェアの処理には 2 種類あります。64 バイトが送信される前にコリジョンが発生した場合、以下のイベントが発生します。

1. TXRTS ビットはセットされたままとなる

2. 送信エラー割り込みは発生しない

3. IEEE 802.3 規格で定義されたランダム エクスポネンシャル バックオフ遅延が経過する

4. パケットの先頭から再送を試みる ( アプリケーションの介入は不要 )

再送を 15 回試みてもさらにコリジョンが発生する場合、パケットの送信が中止され、TXRTS ビットがクリアされます。この場合、アプリケーションで適切な対策をとる必要があります。パケットが正しく送信されずに中止された事は、アプリケーションで TXABRT フラグビットを読み出す事によって判定できます。詳細はセクション 19.5.2「パケットの送信」を参照してください。

64バイトを送信した後にコリジョン (レイトコリジョン ) が発生した場合、パケットの送信はただちに中止され、再送は行われません。通常、正しく設定されたIEEE 802.3準拠ネットワークではレイトコリジョンは発生しません。この問題を解決するには、ユーザの介入が必要です。この問題は、半二重媒体上で全二重ノードが送信を試みた場合に発生する事があります。あるいは、全二重ネットワークに接続した Ethernet モジュールが半二重モードで送信を試みた場合にこの問題が発生する事があります。ケーブルが長すぎる場合とネットワークの規模が大きすぎる場合にもレイトコリジョンが発生する事があります。

19.6.2 全二重動作

FULDPX ビット (MACON3<0>) と PDPXMD ビット(PHCON1<8>) を両方セット (= 1) すると、本モジュールは全二重モードで動作します。これら 2 つのビットのいずれか 1 つのみがクリアされている場合、本モジュールは中間状態となり、正しく動作しません。前述の通り、全二重モードと半二重モードの切り換え時にはこの中間状態となる可能性があるため、切り換え中はアプリケーションでパケットの送信と受信を無効にしておく事を推奨します。

全二重モードでは、パケットの送信と受信を同時に実行できます。このため、パケット送信時にコリジョンが発生する事は一切ありません。

DS39762F_JP - p.256 2013 Microchip Technology Inc.

Page 257: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.7 フロー制御

本モジュールは、全二重モードと半二重モードの両方でハードウェア フロー制御を実装しています。この機能の動作は、使うモードによって異なります。

19.7.1 半二重モード

半二重モードでは、FCEN0 ビット (EFLOCON<0>) をセットするとフロー制御が有効になります。FCEN0ビットをセットすると、「1」と「0」を交互に繰り返すプリアンブル パターン (55h) が Ethernet 媒体に自動的に送信されます。ネットワークに接続されたノードは、このパターンを検出すると、何も送信せずにパターンの送信が終わるのを待つか、送信を試みてただちにコリジョンを発生させるか、いずれかの動作を行います。この状態では必ずコリジョンが発生するため、ネットワーク上のノードは互いに通信できず、新しいパケットは到着しません。

アプリケーションで TXRTS ビットをセットしてEthernet モジュールからのパケット送信を要求すると、プリアンブル パターンの送信が停止します。MABBIPG レジスタで設定したパケット間ギャップが経過すると、Ethernet モジュールはパケットの送信を試みます。他のノードも、このパケット間ギャップが経過したら送信を開始できます。ただし直前までトラフィックが輻輳していたため、複数のノードが送信を開始して多くのコリジョンが発生する事があります。Ethernet モジュールからのパケット送信が正常に完了または中止すると、プリアンブル パターンの送信が自動的に再開します。ネットワークの輻輳を解消したい場合、アプリケーションで FCEN0 ビットをクリアします。プリアンブルの送信が停止し、通常のネットワーク動作が再開します。

テスト済みで閉じたネットワーク環境以外で半二重フロー制御を使う事は推奨しません。ネットワークに悪影響を与えかねない上に効果がないためです。

19.7.2 全二重モード

全二重モード (MACON3<0> = 1) では、IEEE 802.3 規格で定義されている PAUSE 制御フレームの送信によるハードウェア フロー制御を実装しています。PAUSE制御フレームは、予約済みのマルチキャスト アドレス01-80-C2-00-00-01、送信元アドレス (SA)、特別なPAUSE オペコード、2 バイトの PAUSE タイマ値、パディング/CRCで構成された64バイトのフレームです。

通常、MAC が PAUSE 制御フレームを受信すると、現在送信中のパケットが完了した時点で新しいフレームの送信を停止します。そして PAUSE 制御フレームから PAUSE タイマの値を取得し、この値を使って内部タイマを初期化します。このタイマは 512 ビット時間(51.2 s) ごとに自動的にデクリメントします。タイマのカウントダウン中もパケットの受信は有効なままです。新しい PAUSE フレームが到着すると、タイマ

はその新しい PAUSE タイマの値で再び初期化されます。タイマがゼロになると ( またはタイマ値がゼロの PAUSE フレームを受信すると )、その PAUSE フレームを受信した MAC は保留中のパケットの送信を再開します。PAUSE フレームによってネットワーク上の全てのトラフィックが停止するのを防ぐため、Ethernet スイッチおよびルータは全二重モードでPAUSE 制御フレームを伝搬しません。PAUSE フレームによる制御が適用されるのは、PAUSE フレームを直接受け取ったノードのみです。

図 19-12 にネットワークの例を示します。Computer Aが全二重モードでマイクロコントローラ ベースのアプリケーションに大量のデータを送信している場合、Ethernet モジュールが PAUSE 制御フレームを送信してデータの送信を停止させる事ができます。Ethernetスイッチは、PAUSEフレームを受け取るとアプリケーションへのデータ送信を停止します。Computer A がさらにデータ送信を続けた場合、Ethernet スイッチはPAUSE タイマのカウント終了後に送信できるようにこれらのデータをバッファに格納します。Ethernet スイッチのバッファが足りなくなってくると、スイッチ自身が Computer A に PAUSE 制御フレームを送信します。

何らかの理由で Ethernet スイッチが PAUSE 制御フレームを生成しない場合、あるいはノードが受信したPAUSE フレームを正しく処理しない場合、パケットが失われます。いずれの場合にも、Computer A とComputer B の間の通信は全く影響を受けません。

図 19-12: 全二重ネットワークの例

2013 Microchip Technology Inc. DS39762F_JP - p.257

Page 258: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

全二重モードでフロー制御を有効にするには、MACON1レジスタのTXPAUSビットとRXPAUSビットをセットします。次に、受信バッファの空き容量が少なくなってきたら、フロー制御イネーブルビットFCEN<1:0> (EFLOCON<1:0>) を設定にします。モジュールは進行中だった送信を完了させ、PAUSE タイマ値を格納した PAUSE フレームを送信します。選択したフロー制御モードによっては、前回もう一度アプリケーションでFCENビットに書き込みを実行してフロー制御モードを OFF にする必要があります。

RXPAUS ビットがセットされた状態でゼロ以外のPAUSEタイマ値を持つ有効なPAUSEフレームが到着すると、本モジュールは自動的に送信を禁止します。

パケットを送信するために TXRTS ビットがセットされると、ハードウェアは PAUSE タイマがゼロになるのを待ってからパケットの送信を試み、その後でTXRTS ビットをクリアします。通常、この過程はマイクロコントローラに対して透過的に行われ、PAUSEフレームを受信した事をマイクロコントローラが認識する事はありません。MAC が PAUSE フレームを受信したかどうかを調べる必要がある場合、ユーザ アプリケーションで PASSALL ビット (MACON1<1>) をセットして、PAUSE 制御フレームを受信したらその内容を手動で解釈する必要があります。

表 19-8: フロー制御で使うレジスタのまとめ

レジスタ 19-19: EFLOCON: Ethernet フロー制御レジスタ

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

— — — — — r FCEN1 FCEN0

bit 7 bit 0

凡例 : r = 予約済みビット

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

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

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

bit 2 予約済み : 使用不可

bit 1-0 FCEN<1:0>: フロー制御イネーブルビット

FULDPX (MACON3<0>) = 1の場合 :11 = タイマ値が「0」の PAUSE フレームを 1 つ送信してフロー制御を OFF にする10 = PAUSE フレームを周期的に送信する01 = PAUSE フレームを 1 つ送信してフロー制御を OFF にする00 = フロー制御を OFF にする

FULDPX (MACON3<0>) = 0の場合 :x1 = フロー制御を ON にするx0 = フロー制御を OFF にする

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

ECON1 TXRST RXRST DMAST CSUMEN TXRTS RXEN — — 70

MACON1 — — — r TXPAUS RXPAUS PASSALL MARXEN 75

MABBIPG — BBIPG6 BBIPG5 BBIPG4 BBIPG3 BBIPG2 BBIPG1 BBIPG0 75

EFLOCON — — — — — r FCEN1 FCEN0 75

EPAUSL PAUSE タイマ値レジスタ下位バイト (EPAUS<7:0>) 75

EPAUSH PAUSE タイマ値レジスタ上位バイト (EPAUS<15:8>) 75

凡例 : — = 未実装、r = 予約済みビット、網掛けの部分は使いません。

DS39762F_JP - p.258 2013 Microchip Technology Inc.

Page 259: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.8 受信フィルタ

マイクロコントローラの処理オーバーヘッドを 小限に抑えるため、本モジュールは不要なパケットを破棄する各種受信フィルタを内蔵しています。パケットフィルタは以下の 6 種類が実装されています。

• ユニキャスト

• マルチキャスト

• ブロードキャスト

• パターンマッチ

• Magic Packet™

• ハッシュテーブル

各フィルタの設定は、全て ERXFCON レジスタ ( レジスタ 19-20)で行います。同時に複数のフィルタを有効にする事もできます。また、ANDOR ビットを使って複数のフィルタの論理積または論理和をとる事もできます。言い換えると、有効にした全てのフィルタで受け入れられたパケットのみを受信するか、いずれか 1つのフィルタで受け入れられたパケットを受信するかを設定できます。図 19-13 と図 19-14 のフローチャートに、ANDOR ビットの設定できまる各フィルタの働きを示します。

ERXFCON レジスタを 20h (CRC フィルタによるパケットの有効性チェックのみ有効 ) に設定すると、デバイスはプロミスキャス モードに移行し、有効な全てのパケットを受信します。ERXFCON レジスタの正しい設定は、アプリケーション要件によって決まります。

19.8.1 ユニキャスト フィルタ

ユニキャスト受信フィルタは、受信した全てのパケットの宛先アドレスをチェックします。宛先アドレスがMAADR レジスタの内容と一致するパケットは、ユニキャスト フィルタの条件を満たします。

19.8.2 マルチキャスト フィルタ

マルチキャスト受信フィルタは、受信した全てのパケットの宛先アドレスをチェックします。宛先アドレスの先頭バイトの 下位ビットがセットされているパケットは、マルチキャスト フィルタの条件を満たします。

19.8.3 ブロードキャスト フィルタ

ブロードキャスト受信フィルタは、受信した全てのパケットの宛先アドレスをチェックします。宛先アドレスが FF-FF-FF-FF-FF-FF のパケットは、ブロードキャスト フィルタの条件を満たします。

19.8.4 ハッシュテーブル フィルタ

ハッシュテーブル受信フィルタは、主に特定のマルチキャスト グループアドレスに送信されたトラフィックを受信する目的で使います。このフィルタはパケットの特定の宛先アドレスをチェックするため、不要パケットの除去能力はマルチキャスト フィルタよりも優れています。

このフィルタは、パケットの宛先アドレス (6 バイト )に対して生成多項式4C11DB7hを用いた32ビットCRCを実行します。この計算で 32 ビットの 2 進数を得たら、bit <28:23> の 6 ビット値を取得します。この値が、Ethernet ハッシュテーブル レジスタ ETH0 ~ ETH7 で形成されるテーブル内の位置を指し示します。その位置のビットがセットされていれば、そのパケットはハッシュテーブル フィルタの条件を満たしており、受け入れられます。表 19-9 に、テーブル内の各ビット位置とポインタ値の関係を示します。

例 19-1 に、ハッシュテーブルの使用例を示します。この例では、宛先アドレス 01-00-00-00-01-2C から得られるテーブルポインタ値 34h は、ETH6 の bit 4 を指し示しています。このビットが「1」の場合、パケットを受け入れます。

つまりハッシュテーブル レジスタの全ビットをクリアした場合、フィルタ条件が満たされる事はなくなります。反対に、ハッシュテーブルの全ビットをセットすると、フィルタ条件は常に満たされます。

表 19-9: ハッシュテーブル レジスタのビット割り当て

例 19-1: ハッシュテーブル内のビット位置の求め方

レジスタ ハッシュテーブル内のビット番号

7 6 5 4 3 2 1 0

EHT0 07 06 05 04 03 02 01 00

EHT1 0F 0E 0D 0C 0B 0A 09 08

EHT2 17 16 15 14 13 12 11 10

EHT3 1F 1E 1D 1C 1B 1A 19 18

EHT4 27 26 25 24 23 22 21 20

EHT5 2F 2E 2D 2C 2B 2A 29 28

EHT6 37 36 35 34 33 32 31 30

EHT7 3F 3E 3D 3C 3B 3A 39 38

パケットの宛先アドレス :

01-00-00-00-01-2C (16 進数 )

4C11DB7h を用いた CRC-32 計算の結果 :1101 1010 0000 1011 0100 0101 0111 0101

(2 進数 )

CRC 計算結果の bit <28:23> から求めたポインタ :

110100 (2 進数 ) または 34 (16 進数 )

対応するハッシュテーブル内の位置 :ETH6<4>

2013 Microchip Technology Inc. DS39762F_JP - p.259

Page 260: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 19-20: ERXFCON: Ethernet 受信フィルタ制御レジスタ

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

UCEN ANDOR CRCEN PMEN MPEN HTEN MCEN BCEN

bit 7 bit 0

凡例 :

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

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

bit 7 UCEN: ユニキャスト フィルタ イネーブルビットANDOR = 1の場合 :1 = 宛先アドレスがローカル MAC アドレスと一致しないパケットを破棄する0 = フィルタを無効にするANDOR = 0の場合 :1 = 宛先アドレスがローカル MAC アドレスと一致するパケットを受け入れる0 = フィルタを無効にする

bit 6 ANDOR: AND/OR フィルタ選択ビット1 = AND: 有効にした全てのフィルタが受け入れない限りパケットを拒否する0 = OR: 有効にした全てのフィルタが拒否しない限りパケットを受け入れる

bit 5 CRCEN: ポストフィルタ CRC チェック イネーブルビット1 = CRC が無効なパケットを全て破棄する0 = CRC の有効性を無視する

bit 4 PMEN: パターンマッチ フィルタ イネーブルビットANDOR = 1の場合 :1 = パターンマッチの条件を満たさないパケットを破棄する0 = フィルタを無効にするANDOR = 0の場合 :1 = パターンマッチの条件を満たすパケットを受け入れる0 = フィルタを無効にする

bit 3 MPEN: Magic Packet フィルタ イネーブルビットANDOR = 1の場合 :1 = ローカル MAC アドレスの Magic Packet でなければパケットを破棄する0 = フィルタを無効にするANDOR = 0の場合 :1 = ローカル MAC アドレスの Magic Packet を受け入れる0 = フィルタを無効にする

bit 2 HTEN: ハッシュテーブル フィルタ イネーブルビットANDOR = 1の場合 :1 = ハッシュテーブルの条件を満たさないパケットを破棄する0 = フィルタを無効にするANDOR = 0の場合 :1 = ハッシュテーブルの条件を満たすパケットを受け入れる0 = フィルタを無効にする

bit 1 MCEN: マルチキャスト フィルタ イネーブルビットANDOR = 1の場合 :1 = 宛先アドレスの先頭バイトの 下位ビットがセットされていないパケットを破棄する0 = フィルタを無効にするANDOR = 0の場合 :1 = 宛先アドレスの先頭バイトの 下位ビットがセットされているパケットを受け入れる0 = フィルタを無効にする

bit 0 BCEN: ブロードキャスト フィルタ イネーブルビットANDOR = 1の場合 :1 = 宛先アドレスが FF-FF-FF-FF-FF-FF でないパケットを破棄する0 = フィルタを無効にするANDOR = 0の場合 :1 = 宛先アドレスが FF-FF-FF-FF-FF-FF のパケットを受け入れる0 = フィルタを無効にする

DS39762F_JP - p.260 2013 Microchip Technology Inc.

Page 261: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 19-13: OR ロジックを使った受信フィルタ

Packet Detected on Wire,ANDOR = 0 (OR)

UCEN set?

PMEN set?

MPEN set?

HTEN set?

MCEN set?

BCEN set?

No

No

No

No

No

Unicast

Pattern

Magic Packet™

Hash table

Multicast

Broadcastdestination?

Yes

Yes

Yes

Yes

Yes

Yes

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

packet?

matches?

for us?

bit set?

destination?

No

UCEN, PMEN,

No

MPEN, HTEN,

No

Yes

MCEN and BCENall clear?

CRCEN set? No

Accept Packet

Reject Packet

No

Yes

YesCRCEN valid?

2013 Microchip Technology Inc. DS39762F_JP - p.261

Page 262: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 19-14: AND ロジックを使った受信フィルタ

CRCEN set?

Packet Detected on Wire,ANDOR = 1 (AND)

CRC valid?

Yes

Yes

Accept Packet Reject Packet

UCEN set?

PMEN set?

MPEN set?

HTEN set?

MCEN set?

BCEN set?

No

Unicast

Pattern

Magic Packet™

Hash Table

Multicast

Broadcastdestination?

Yes

Yes

Yes

Yes

Yes

Yes

No

No

No

No

No

No

No Yes

No

No

Yes

No Yes

No Yes

No Yes

No Yes

destination?

bit set?

for us?

Matches?

packet?

DS39762F_JP - p.262 2013 Microchip Technology Inc.

Page 263: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.8.5 パターンマッチ フィルタ

パターンマッチ フィルタは受信パケットから 大 64バイトを選択し、これらのバイトの IP チェックサムを計算します。次に、チェックサムと EPMCS レジスタを比較します。計算で求めたチェックサムと EPMCSレジスタが一致する場合、パケットはパターンマッチフィルタの条件を満たします。パターンマッチ フィルタは、パケット内部に予測するデータが含まれるパケットのフィルタ処理に便利です。

パターンマッチ フィルタを使うには、パターンマッチオフセット (EPMOH:EPMOL)、全てのパターンマッチマスクバイト (EPMM0:EPMM7)、パターンマッチチェックサム レジスタペア (EPMCSH:EPMCSL) をアプリケーションでプログラムする必要があります。パターンマッチ オフセットには、宛先アドレス フィールドの先頭からチェックサム計算に使う 64 バイトウィンドウまでのオフセットを書き込みます。64 バイトウィンドウ内の各バイトをチェックサム計算に含めるか除外するかは、パターンマッチ マスク内の対応するビットをセットまたはクリアする事によって選択できます。受信したパケットで CRC フィールドの末尾が 64 バイトウィンドウを越えている場合、対応するマスクビットが全て「0」であっても、フィルタ条件を満たさないものと判定されます。

パターンマッチ チェックサム レジスタには、選択したバイトに対して予測されるチェックサムを書き込みます。チェックサムは、DMA モジュールによるチェックサム計算 ( セクション 19.9.2「チェックサム計算」参照 ) と同じ方法で計算します。対応するマスクビットを「0」にプログラムしたデータバイトは 0 として扱うのではなく、チェックサム計算から完全に除外されます。

例えば、アプリケーションで送信元 MAC アドレスが00-04-A3-FF-FF-FF のパケットを全て拒否する場合、パターンマッチ オフセットに 0000h を書き込み、EPMM0 レジスタの bit 6 と 7、EPMM1 レジスタの bit0、1、2、3 をセットします ( それ以外のマスクビットは全て「0」)。EPMCS レジスタに書き込む適切なチェックサムは 5BFCh です。別の設定方法として、オフセットに 0006h を書き込み、EPMM0 レジスタの bit0、1、2、3、4、5 をセットする事もできます。この場合もチェックサムは 5BFCh です。しかし 2 つ目の方法では、長さが 70 バイト未満のパケットはマスク設定に基づいて正しいチェックサムが生成された場合でもパターンマッチ条件を満たさないため、あまり推奨できません。

図 19-15 に、もう 1 つのパターンマッチ フィルタの例を示します。

図 19-15: パターンマッチ フォーマットの例

Note: いずれの場合も、正常に動作するにはパターンマッチ オフセットの値は偶数である必要があります。EPMO レジスタペアに奇数値を書き込むと、予測不能な結果が生じます。

SA

EPMOH:EPMOL = 0006h

FCSDA タイプ / 長さ データ

チェックサム計算に使うバイト

EPMM7:EPMM0 = 0000000000001F0Ah

11 22 33 44 55 66 77 88 99 AA BB CC 00 5A 09 0A 0B 0C 0D . . . 40 . . . FE 45 23 01受信データ

フィールド

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 . . . 70 . . .バイト番号

パターンマッチに使う64 バイトウィンドウ

入力の設定 :

チェックサム計算に使う値 = {88h, AAh, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 00h}

EPMCSH:EPMCSL = 563Fh

Note: 受信データは 16 進数で示しています。バイト番号は 10 進数で示しています。

(00h はハードウェアが付加するパディングバイト )

2013 Microchip Technology Inc. DS39762F_JP - p.263

Page 264: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.8.6 Magic Packet フィルタ

Magic Packet パターンは、同期用の 6 つの FFh バイトに続き宛先アドレスを 16 回繰り返した構造です ( 図19-16)。Magic Packet フィルタは、全ての受信パケットの宛先アドレスとデータフィールドをチェックします。宛先アドレスがMAADRレジスタと一致し、データフィールド内のどこかに有効なMagic Packetパターンが含まれていれば、そのパケットは Magic Packetフィルタの条件を満たします。

図 19-16: Magic Packet™ フォーマットの例

SA

FCS

DA

タイプ / 長さ

00 11 22 33 44 55

00 FE

09 0A 0B 0C 0D 0E

受信

データ フィールド

77 88 99 AA BB CC

EF 54 32 10

FF FF FF FF FF 00

FF FF FF FF FF FF

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

00 11 22 33 44 55

19 1A 1B 1C 1D 1E

Magic

同期パターン

16 回繰り返す宛先 MAC アドレス

コメント

宛先 MAC アドレス

送信元 MAC アドレス

ヘッダ

フッタ

Packetパターン

オプションのアプリケーション データまたはプロトコルヘッダ

オプションのアプリケーション データまたはプロトコルフッタ

DS39762F_JP - p.264 2013 Microchip Technology Inc.

Page 265: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.9 ダイレクト メモリアクセス (DMA)コントローラ

Ethernet モジュールは 2 つの用途を持つ DMA コントローラが内蔵されています。1 つ目の用途は、8 KB のメモリバッファ内でデータをコピーする事です。2 つ目の用途は、TCP、UDP、IP、ICMP 等、業界標準の各種通信プロトコルと互換の 16 ビット チェックサムの計算です。

DMA は以下に示す 3 つのポインタと各種ステータス /制御ビットを使って制御します。

• EDMASTH:EDMASTL: コピー元開始アドレス

• EDMANDH:EDMANDL: コピー元終了アドレス

• EDMADSTH:EDMADSTL: 格納先開始アドレス

• DMAST および CSUMEN ビット (ECON1<5,4>): DMA 開始 /BUSY およびチェックサム イネーブルビット

• DMAIE および DMAIF ビット (EIE<5>、EIR<5>): DMA 割り込みイネーブルおよびフラグビット

コピー元開始アドレスとコピー元終了アドレスは、コピーまたはチェックサム計算するデータを定義します。格納先開始アドレスはデータコピーの場合のみ使い、コピーしたデータの格納先を定義します。これら 3 つのポインタは全て 8 KB の Ethernet メモリに対するもので、PIC® マイクロコントローラのデータメモリ空間へのアクセスには使えません。

DMA の動作が開始すると、EDMAST レジスタペアが内部コピー元ポインタへコピーされます。DMA はバイト単位で実行し、実行後に内部コピー元ポインタをインクリメントします。しかし、1 バイトを処理した後、内部コピー元ポインタの値が受信バッファ終了ポインタペアの ERXND と同じ場合、コピー元ポインタはインクリメントしません。代わりに、受信バッファ開始ポインタペアの ERXST の値が内部コピー元ポインタに格納されます。このようにして、DMA は受信バッファの巡回 FIFO 構造に従って、受信パケットを 1 回の DMA 動作で処理します。内部コピー元ポインタの値がEDMANDポインタと同じになるとDMAの動作は終了します。

何らかの DMA 動作が進行中は、DMA ポインタとCSUMENビット(ECON1<4>)の値を変更しないでください。DMA 動作は、DMAST ビット (ECON1<5>) をクリアするといつでもキャンセルできます。レジスタは一切変更されませんが、DMA コピーが進行中の場合は一部のメモリバイトがコピー済みの事があります。

DMA を使う際は、動作に関するいくつかの要件に常に注意する必要があります。以下に示す要件に違反した場合、Ethernet バッファのデータが失われる事や、Ethernet の動作が完全にエラーになる事があります。

• 受信バッファのラップアラウンド動作のためにEDMAND ポインタペアの値に到達しない場合、DMA 動作は永久に終了しません。

• 設計上、DMA モジュールは 1 バイトのみに対して( すなわち EDMAST = EDMAND として ) コピーまたはチェックサム計算を実行する事はできません。このような処理を実行しようとすると、バッファ内

のメモリが全て上書きされ、処理が永久に終了しません。

• DMA 動作が終了した後 (DMAST ビットはハードウェアまたはファームウェアによってクリアされます )、4 命令サイクル以内にアプリケーションで DMASTビットを再びセットする事はできません。

• 動作の信頼性を確保するため、DMA コピー動作中はアプリケーションから EDATA へのアクセスを避けてください。DMA チェックサム計算中は EDATAにアクセスしても安全です。

19.9.1 メモリのコピー

バッファ内でメモリをコピーする手順は以下の通りです。

1. EDMAST、EDMAND、EDMADST レジスタペアに、適切なコピー元開始アドレス、コピー元終了アドレス、格納先開始アドレスを書き込む。EDMASTレジスタはコピー元の先頭バイト、EDMAND レジスタはコピー元の 終バイト、EDMADST レジスタは格納先レンジの先頭バイトをそれぞれ指し示す。格納先レンジは、8 KB メモリ境界でのラップアラウンド (8191 から 0) を除き、一切ラップアラウンドせず常にリニアである。終了ポインタの値を正しく計算しないとDMA動作が終了せず8 KBバッファ全体が上書きされてしまうため、特に注意が必要である。

2. 必要に応じて、DMAIE ビット (EIE<5>) と ETHIEビット (PIE2<5>) をセットし、DMAIF フラグビット (EIR<5>) をクリアして、コピー終了時に割り込みを発生させる。

3. CSUMEN ビット (ECON1<4>) をクリアする。

4. DMAST ビット (ECON1<5>) をセットすると、DMA コピーが開始する。

DMAST ビットをセットした時に送信動作が進行中(TXRTS ビットがセットされている ) の場合、DMA コントローラは送信動作が完了するのを待ってからDMA コピーを試みます。このような遅延が必要なのは、DMA と送信エンジンが同時にはバッファにアクセスできないためです。

コピーが完了すると、DMA ハードウェアが DMASTビットをクリアし、DMAIF ビットをセットして、割り込みを生成します ( 割り込み有効時 )。ポインタとEDMACS レジスタの値は変更されません。

DMA モジュールが初期化後にコピーを開始すると、1命令サイクル (TCY) で 1 バイトがコピーされます。しかし、Ethernet 受信ハードウェアが 1 バイトのデータをバッファに格納すると、DMA はストールして優先度の高い処理が実行されます。他にメモリ帯域幅を一切使わないで 大サイズ (1518 バイト ) のパケットをコピーした場合、DMA モジュールは完了までに 145.7s( コア周波数 41.667 MHz 時 ) より若干長い時間を必要とします。 小サイズ (64 バイト ) のパケットのコピーにかかる時間は、約6.2 s (コア周波数41.667 MHz時 )とレジスタ コンフィグレーション時間の合計です。

2013 Microchip Technology Inc. DS39762F_JP - p.265

Page 266: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.9.2 チェックサム計算

チェックサム計算ロジックは、コピー元データを一連の16ビット ビッグエンディアン整数として扱います。コピー元レンジに含まれるバイトが奇数個の場合、チェックサム計算を実行するために、末尾にパディングバイトの 00h が付加されます。

計算したチェックサムは、全ての 16 ビット整数の 1の補数和の 1 の補数 (16 ビット ) です。例えば、チェックサムに含まれるバイトが {89h, ABh, CDh} の場合、チェックサム計算はまず「89ABh + CD00h」から実行します。この例のように 16 番目のビットでキャリーアウトが発生する場合、16 ビットの 1 の補数演算では

初のビットに 1 が加算されます。こうして得られた56ACh の補数をとり、 終的に A953h のチェックサム値を得ます。

チェックサムの計算手順は以下の通りです。

1. チェックサムに含めるバッファデータの 初と後のバイトを EDMAST および EDMAND レジ

スタペアで指定する。ポインタ値を設定する際は、受信バッファのラップアラウンドによってチェックサム計算が終わらない事のないように十分注意する。

2. チェックサム計算の完了時にオプションとして割り込みを生成する場合、DMAIE ビット (EIE<5>)と ETHIE ビット (PIE2<5>) をセットして、DMAIFビット (EIR<5>) をクリアする。

3. CSUMEN ビット (ECON1<4>) と DMAST ビット(ECON1<5>) をセットして、チェックサム計算を開始する。

チェックサム計算が完了したら、DMA ハードウェアがDMAST ビットをクリアし、DMAIF ビットをセットして割り込みを生成します ( 割り込み有効時 )。DMA ポインタは変更されず、メモリへの書き込みは行われません。計算したチェックサムは EDMACSH およびEDMACSL レジスタに格納されます。アプリケーションは、このチェックサム値をパケットに書き込み、ゼロと比較し ( チェックサム フィールドを含む受信データブロックを検証する場合 )、あるいは他のチェックサム (TCPやUDP等の各種プロトコルで使われる擬似ヘッダ チェックサム等 ) と比較する事ができます。

DMAをチェックサム モードで動作させる場合、チェックサムに含まれる 1 バイトの処理に 1 命令サイクル(TCY) かかります。このため、1446 バイトに対するチェックサム計算を実行した場合、DMA モジュールは動作完了までに 138.8 s( 周波数 41.667 MHz 時 ) より若干長い時間を必要とします。

同じ周波数なら、20 バイトのヘッダフィールドの処理にはチェックサム計算のための約 1.9 sと、DMAセットアップ時間の合計時間がかかります。ここに示した推定時間は、DMA が計算実行中に、Ethernet 受信ハードウェアがメモリアクセス帯域幅を使っておらず、CPU が EDATA レジスタに対して読み書きコマンドを発行していない事を前提としています。

DMA コピーモードと同様に、チェックサム計算はTXRTS ビット (ECON1<3>) がクリアされるまで開始しません。このため、アプリケーションで大きなパケットを送信した直後に受信パケットのチェックサムを検証しようとした場合、チェックサム計算時間にかなり長い時間がかかる事があります。

表 19-10: DMA コントローラに関連するレジスタのまとめ

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

EIE - PKTIE DMAIE LINKIE TXIE - TXERIE RXERIE 73

EIR - PKTIF DMAIF LINKIF TXIF - TXERIF RXERIF 73

ECON1 TXRST RXRST DMAST CSUMEN TXRTS RXEN - - 70

ERXNDL 受信終了レジスタ下位バイト (ERXND<7:0>) 73

ERXNDH - - - 受信終了レジスタ上位バイト (ERXND<12:8>) 73

EDMASTL DMA 開始レジスタ下位バイト (EDMAST<7:0>) 73

EDMASTH - - - DMA 開始レジスタ上位バイト (EDMAST<12:8>) 73

EDMANDL DMA 終了レジスタ下位バイト (EDMAND<7:0>) 73

EDMANDH - - - DMA 終了レジスタ上位バイト (EDMAND<12:8>) 73

EDMADSTL DMA 格納先レジスタ下位バイト (EDMADST<7:0>) 73

EDMADSTH - - - DMA 格納先レジスタ上位バイト (EDMADST<12:8>) 73

EDMACSL DMA チェックサム レジスタ下位バイト (EDMACS<7:0>) 73

EDMACSH DMA チェックサム レジスタ上位バイト (EDMACS<15:8>) 73

凡例 : — = 未実装、網掛けの部分は使いません。

DS39762F_JP - p.266 2013 Microchip Technology Inc.

Page 267: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

19.10 モジュールのリセット

本モジュールでは以下の選択的リセットを使えます。

• 送信のみリセット

• 受信のみリセット

19.10.1 マイクロコントローラのリセット

標準のリセットイベントが発生すると、Ethernet モジュールは既知の状態に戻ります。Ethernet バッファメモリの内容は未知です。SFR と PHY レジスタには、リセットイベントの種類に応じて指定されたリセット値が読み込まれます。しかし、PHY 起動タイマのカウントが終了し、PHYRDY ビット (ESTAT<0>) がセットされるまで ( すなわち、ETHEN ビットをセットしてから 1 ms 以上経過するまで ) は、PHY レジスタにアクセスしないでください。詳細は、セクション 19.1.3.1

「起動タイマ」を参照してください。

19.10.2 送信のみリセット

TXRST ビット (ECON1<7>) に「1」を書き込むと、送信のみリセットが実行されます。この場合、送信ロジックのみがリセットされます。バッファ マネジメントやホスト インターフェイス等、他のレジスタと制御ブロックは送信のみリセットイベントの影響を受けません。通常動作に戻るには、TXRST ビットをソフトウェアでクリアする必要があります。TXRST をクリアしてから少なくとも 1.6 s が経過するまでは、ファームウェアから Ethernet モジュールの SFR への書き込みを行わないでください。この遅延経過後は、通常の動作を再開できます。

19.10.3 受信のみリセット

RXRST ビット (ECON1<6>) に「1」を書き込むと、受信のみリセットが実行されます。この場合、受信ロジックのみがリセットされます。バッファ マネジメントやホスト インターフェイス ブロック等、他のレジスタと制御ブロックは受信のみリセットイベントの影響を受けません。通常動作に戻るには、RXRST ビットをソフトウェアでクリアする必要があります。RXRST をクリアしてから少なくとも 1.6 s が経過するまでは、ファームウェアから Ethernet モジュールの SFR への書き込みを行わないでください。この遅延経過後は、通常の動作を再開できます。

2013 Microchip Technology Inc. DS39762F_JP - p.267

Page 268: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.268 2013 Microchip Technology Inc.

Page 269: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.0 マスタ同期シリアルポート(MSSP) モジュール

20.1 MSSP モジュールの概要

マスタ同期シリアルポート (MSSP) モジュールとは、他の周辺デバイスまたはマイクロコントローラとの通信に便利なシリアル インターフェイスです。ここでの周辺デバイスとは、シリアル EEPROM、シフトレジスタ、ディスプレイ ドライバ、A/D コンバータ (ADC)等を指します。MSSP モジュールは、以下の 2 つのモードのいずれかで動作します。

• シリアル ペリフェラル インターフェイス (SPI)• I2C™ (Inter-Integrated Circuit)

- フルマスタモード

- スレーブモード ( ジェネラルコール アドレス対応 )

I2C インターフェイスは、ハードウェアで以下のモードをサポートしています。

• マスタモード

• マルチマスタ モード

• スレーブモード

64 ピン /80 ピンの PIC18F97J60 ファミリは MSSP モジュールを 1 つ内蔵しています (MSSP1)。100 ピンデバイスは MSSP モジュールを 2 つ内蔵しています(MSSP1、MSSP2)。各モジュールは互いに独立して動作します。

20.2 制御レジスタ

各 MSSP モジュールは関連する 3 つのレジスタを使います。ステータス レジスタが 1 つ (SSPxSTAT) と制御レジスタが 2 つ (SSPxCON1、SSPxCON2) です。これらのレジスタと各コンフィグレーション ビットの使い方は、MSSP モジュールの動作モードが SPI か I2C かによって大きく異なります。

詳細は、各セクションで説明します。

20.3 SPI モード

SPI モードでは、8 ビットのデータの送受信を同期方式により同時に実行できます。SPI の 4 つのモード全てに対応しています。通信を確立するために、通常、以下の 3 本のピンを使います。

• シリアルデータ出力 (SDOx) – RC5/SDO1 (100 ピンデバイスの場合は RD4/SDO2)

• シリアルデータ入力 (SDIx) – RC4/SDI1/SDA1 (100 ピンデバイスの場合は RD5/SDI2/SDA2)

• シリアルクロック (SCKx) – RC3/SCK1/SCL1 (100 ピンデバイスの場合は RD6/SCK2/SCL2)

さらに、スレーブモードの動作では 4 本目のピンを使う場合があります。

• スレーブセレクト (SSx) – RF7/SS1 (100 ピンデバイスの場合は RD7/SS2)

図 20-1 に、SPI モードで動作する MSSP モジュールのブロック図を示します。

図 20-1: MSSP のブロック図 (SPI モード )

Note: このセクション全体を通して、いずれの動作モードでもMSSP1とMSSP2で共通する内容を「MSSP モジュール」と総称して説明します。レジスタ名とモジュールの I/O 信号の総称には「x」を使います。必要に応じてモジュール識別番号に読み換えてください。制御ビット名はどちらのモジュールも共通です。

Note: MSSP モジュールを複数内蔵したデバイスでは、SSPxCON レジスタの名前に注意を払う必要があります。SSP1CON1 とSSP1CON2 は、同じモジュールの異なる機能を制御します。一方、SSP1CON1 とSSP2CON1 は、2 つの異なるモジュールの同じ機能を制御します。

( )

Read Write

InternalData Bus

SSPxSR reg

SSPM<3:0>

bit 0 ShiftClock

SSx ControlEnable

EdgeSelect

Clock Select

TMR2 Output

TOSCPrescaler4, 16, 64

2EdgeSelect

2

4

Data to TXx/RXx in SSPxSRTRIS bit

2SMP:CKE

SDOx

SSPxBUF reg

SDIx

SSx

SCKx

2013 Microchip Technology Inc. DS39762F_JP - p.269

Page 270: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.3.1 レジスタ

各 MSSP モジュールは、SPI モードの動作で以下の 4つのレジスタを使います。

• MSSPx 制御レジスタ 1 (SSPxCON1)

• MSSPx ステータス レジスタ (SSPxSTAT)

• シリアル受信 / 送信バッファレジスタ (SSPxBUF)

• MSSPx シフトレジスタ (SSPxSR) – 直接アクセスは不可

SSPxCON1 と SSPxSTAT は、SPI モード動作時の制御レジスタとステータス レジスタです。SSPxCON1レジスタは、読み書き可能です。SSPxSTAT の下位 6ビットは読み出し専用です。SSPxSTAT の上位 2 ビットは読み書き可能です。

SSPxSRはデータをシフト入出力するためのシフトレジスタです。SSPxBUF はデータバイトの読み書き用バッファレジスタです。

受信動作の場合、SSPxSR と SSPxBUF が連動して、ダブルバッファ レシーバを構成します。SSPxSR が 1バイトを全て受信すると SSPxBUF に転送され、SSPxIF 割り込みがセットされます。

送信時のSSPxBUFはダブルバッファを構成しません。SSPxBUF に書き込むと、SSPxBUF と SSPxSR の両方に同じ内容が書き込まれます。

レジスタ 20-1: SSPxSTAT: MSSPx ステータス レジスタ (SPI モード )

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

SMP CKE(1) D/A P S R/W UA BF

bit 7 bit 0

凡例 :

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

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

bit 7 SMP: サンプルビット

SPI マスタモード : 1 = データ出力期間の 後に入力データをサンプルする0 = データ出力期間の中間で入力データをサンプルする

SPI スレーブモード :SPI をスレーブモードで使用する場合、SMP をクリアする必要がある。

bit 6 CKE: SPI クロック選択ビット (1)

1 = クロック状態がアクティブからアイドルに遷移する時に送信する0 = クロック状態がアイドルからアクティブに遷移する時に送信する

bit 5 D/A: データ / アドレスビット

I2C モードでのみ使う

bit 4 P: STOP ビット

I2C モードでのみ使う。SSPEN をクリアして MSSP モジュールを無効にすると、このビットはクリアされる

bit 3 S: START ビット

I2C モードでのみ使う

bit 2 R/W: 読み出し / 書き込み情報ビット

I2C モードでのみ使う

bit 1 UA: 更新アドレスビット

I2C モードでのみ使う

bit 0 BF: バッファフル ステータスビット ( 受信モードのみ )

1 = 受信が完了し、SSPxBUF がフルである 0 = 受信が完了しておらず、SSPxBUF がエンプティである

Note 1: クロック状態の極性は、CKP ビット (SSPxCON1<4>) で設定します。

DS39762F_JP - p.270 2013 Microchip Technology Inc.

Page 271: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 20-2: SSPxCON1: MSSPx 制御レジスタ 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(1) SSPEN(2) CKP SSPM3(3) SSPM2(3) SSPM1(3) SSPM0(3)

bit 7 bit 0

凡例 :

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

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

bit 7 WCOL: 書き込みコリジョン検出ビット ( 送信モードのみ )

1 = 前のワードを送信中の SSPxBUF レジスタに対して書き込みを実行した ( ソフトウェアによるクリアが必要 )

0 = コリジョンは発生していない

bit 6 SSPOV: 受信オーバーフロー インジケータ ビット (1)

SPI スレーブモード : 1 = SSPxBUF レジスタがまだ前のデータを保持している間に、新しいバイトを受信した。オーバー

フローが発生すると、SSPxSR 内のデータは失われる。オーバーフローは、スレーブモードの場合のみ発生する。データ送信しか実行しない場合も、オーバーフロー ビットがセットされるのを防ぐために SSPxBUF の読み出しが必要 ( このビットはソフトウェアによるクリアが必要 )

0 = オーバーフローは発生していない

bit 5 SSPEN: MSSP イネーブルビット (2)

1 = シリアルポートを有効にし、SCKx、SDOx、SDIx、SSx をシリアルポート ピンとして設定する 0 = シリアルポートを無効にし、上記のピンを I/O ポートピンとして設定する

bit 4 CKP: クロック極性選択ビット

1 = クロックのアイドル状態を High レベルに設定する 0 = クロックのアイドル状態を Low レベルに設定する

bit 3-0 SSPM<3:0>: MSSP モード選択ビット (3)

0101 = SPIスレーブモード、クロック = SCKxピン、SSxピン制御無効、SSxは I/Oピンとして使用可能0100 = SPI スレーブモード、クロック = SCKx ピン、SSx ピン制御有効0011 = SPI マスタモード、クロック = TMR2 出力 /2 0010 = SPI マスタモード、クロック = FOSC/64 0001 = SPI マスタモード、クロック = FOSC/16 0000 = SPI マスタモード、クロック = FOSC/4

Note 1: マスタモードの場合、新たな送受信は SSPxBUF レジスタへの書き込みによって開始するため、オーバーフロー ビットはセットされません。

2: このビットを有効にした場合、これらのピンは入出力として適切に設定する必要があります。

3: ここに値を示していないビットの組み合わせは、予約済みか、I2C™ モードでのみ使うものです。

2013 Microchip Technology Inc. DS39762F_JP - p.271

Page 272: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.3.2 動作

SPI の初期化時には、いくつかの設定を行う必要があります。それには、該当する制御ビット (SSPxCON1<5:0>と SSPxSTAT<7:6>) をプログラムします。これらの制御ビットにより、以下を指定できます。

• マスタモード (SCKx はクロック出力 )

• スレーブモード (SCKx はクロック入力 )

• クロック極性 (SCKx のアイドル状態 )

• データ入力サンプル位相 ( データ出力期間の中間または 後 )

• クロックエッジ (SCKx の立ち上がり / 立ち下がりエッジでデータを出力 )

• クロックレート ( マスタモードのみ )

• スレーブセレクト モード ( スレーブモードのみ )

各 MSSP モジュールは、送信 / 受信シフトレジスタ(SSPxSR)とバッファレジスタ(SSPxBUF)を使います。SSPxSRはMSbから順にデータをシフト入力またはシフト出力します。SSPxBUF は受信データが揃うまで、SSPxSR に書き込まれたデータを保持します。8 ビットのデータの受信が完了すると、受信したバイトはSSPxBUF レジスタに転送されます。この時点でバッファフル検出ビット BF (SSPxSTAT<0>) と、割り込みフラグビット SSPxIF がセットされます。このようなダブル バッファリング方式 (SSPxBUF) でデータを受

信する事で、今受信したデータを読み出す前に、次のバイトの受信を開始できます。データ送受信中のSSPxBUF レジスタへの書き込みは全て無視され、書き込みコリジョン検出ビットWCOL (SSPxCON1<7>)がセットされます。SSPxBUF レジスタへの書き込みが正しく完了したかどうかを正しく判定できるように、WCOL ビットはユーザ ソフトウェアでクリアする必要があります。

アプリケーション ソフトウェアが有効なデータを受信する事が予測される場合、次の送信バイトデータがSSPxBUFへ書き込まれる前にSSPxBUFのデータを読み出す必要があります。SSPxBUF に受信データが読み込まれると、バッファフル ビット BF (SSPxSTAT<0>)がセットされて送信の完了を示します。BF ビットはSSPxBUF を読み出すとクリアされます。SPI が送信のみの場合、このデータは無意味です。通常、送受信の完了を判断するには、MSSP 割り込みを使います。この割り込みが発生したら SSPxBUF の読み書きを実行する必要があります。割り込みによる方法を使わずに書き込みコリジョンを避けるには、ソフトウェアポーリングを実行します。例 20-1 に、データ送信時のSSP1BUF (SSP1SR)への読み込み方法を示します。

SSPxSR は直接読み書きできないため、SSPxBUF レジスタのアドレスを指定してアクセスします。また、SSPxSTATレジスタは各種ステータス条件を示します。

例 20-1: SSP1BUF (SSP1SR) レジスタへの読み込み LOOP BTFSS SSP1STAT, BF ;Has data been received (transmit complete)?

BRA LOOP ;No MOVF SSP1BUF, W ;WREG reg = contents of SSP1BUF

MOVWF RXDATA ;Save in user RAM, if data is meaningful

MOVF TXDATA, W ;W reg = contents of TXDATA MOVWF SSP1BUF ;New data to xmit

DS39762F_JP - p.272 2013 Microchip Technology Inc.

Page 273: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.3.3 SPI I/O の有効化

シリアルポートを有効にするには、MSSP イネーブルビット SSPEN (SSPxCON1<5>) をセットする必要があります。SPI モードをリセットまたは再設定するには、SSPEN ビットをクリアし、SSPxCON レジスタを再初期化してから SSPEN ビットをセットします。これにより、SDIx、SDOx、SCKx、SSx ピンがシリアルポート ピンとして設定されます。これらのピンをシリアルポートとして動作させる場合、一部のピンではTRIS レジスタでデータ方向ビットを以下のように設定する必要があります。

• SDIx: SPI モジュールによって自動制御される

• SDOx: TRISC<5> ( または TRISD<4>) ビットをクリアする

• SCKx ( マスタモード ): TRISC<3> ( または TRISD<6>)ビットをクリアする

• SCKx ( スレーブモード ): TRISC<3> ( またはTRISD<6>) ビットをセットする

• SSx: TRISF<7> ( または TRISD<7>) ビットをセットする

不要なシリアルポート機能は、対応するデータ方向(TRIS)レジスタを逆の値にプログラミングする事で無効にできます。

20.3.4 代表的な接続

図 20-2 に、2 つのマイクロコントローラ間の代表的な接続方法を示します。マスタ コントローラ (プロセッサ1) が、SCKx 信号を送信してデータ転送を開始します。データは、プログラムされたクロックエッジごとに両方のシフトレジスタからシフト出力され、逆のクロックエッジごとにラッチされます。両方のプロセッサには、同じクロック極性 (CKP) を設定します。これによって、両方のコントローラが同時にデータを送受信できます。データが有効なものか ( またはダミーデータか ) は、アプリケーション ソフトウェアによって決まります。データ伝送における 3 つのシナリオは以下の通りです。

• マスタがデータを送信–スレーブがダミーデータを送信

• マスタがデータを送信–スレーブがデータを送信

• マスタがダミーデータを送信–スレーブがデータを送信

図 20-2: SPI マスタ / スレーブの接続

Serial Input Buffer(SSPxBUF)

Shift Register(SSPxSR)

MSb LSb

SDOx

SDIx

PROCESSOR 1

SCKx

SPI Master SSPM<3:0> = 00xxb

Serial Input Buffer(SSPxBUF)

Shift Register(SSPxSR)

LSbMSb

SDIx

SDOx

PROCESSOR 2

SCKx

SPI Slave SSPM<3:0> = 010xb

Serial Clock

2013 Microchip Technology Inc. DS39762F_JP - p.273

Page 274: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.3.5 マスタモード

マスタには SCKx の制御権があり、いつでもデータ転送を開始できます。スレーブ (図 20-2のプロセッサ 2)がいつデータをブロードキャストするかは、ソフトウェア プロトコルに基づいてマスタが決定します。

マスタモードでは、SSPxBUF レジスタへの書き込み後、ただちにデータを送受信します。SPI を受信のみに使う場合、SDOx 出力を無効に ( 入力としてプログラム ) してもかまいません。SSPxSR レジスタは、プログラムされたクロックレートで SDIx ピンの信号のシフト入力を継続します。1 バイト受信するごとに、通常の受信バイトと同じように SSPxBUF レジスタに読み込みます ( 割り込みとステータスビットも必要に応じてセットされます )。これは、「ライン アクティビティ モニタ」モードのレシーバ アプリケーションに適しています。

クロック極性は、CKP ビット (SSPxCON1<4>) を適切にプログラムする事によって選択します。これによって図 20-3、図 20-5、図 20-6 に示す SPI 通信の波形が得られます。この通信では MSb が 初に送信されます。マスタモードでは、SPI のクロックレート( ビットレート ) を以下のいずれかにプログラムできます。

• FOSC/4 ( または TCY)

• FOSC/16 ( または 4 • TCY)

• FOSC/64 ( または 16 • TCY)

• Timer2 出力 /2

従って、 大データレートは 10.00 Mbps (@ 40 MHz)です。

図 20-3 にマスタモードの波形を示します。CKE ビットをセットした場合、SDOxのデータはSCKxにクロックエッジが現れる前に有効になります。この図には、SMP ビットの状態に応じた入力サンプリング時期の変化も示してあります。また、受信データが SSPxBUFに読み込まれるタイミングも示しています。

図 20-3: SPI モードの波形 ( マスタモード )

SCKx(CKP = 0

SCKx(CKP = 1

SCKx(CKP = 0

SCKx(CKP = 1

4 ClockModes

InputSample

InputSample

SDIx

bit 7 bit 0

SDOx bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

bit 7

SDIx

SSPxIF

(SMP = 1)

(SMP = 0)

(SMP = 1)

CKE = 1)

CKE = 0)

CKE = 1)

CKE = 0)

(SMP = 0)

Write toSSPxBUF

SSPxSR toSSPxBUF

SDOx bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

(CKE = 0)

(CKE = 1)

Next Q4 Cycleafter Q2

bit 0

DS39762F_JP - p.274 2013 Microchip Technology Inc.

Page 275: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.3.6 スレーブモード

スレーブモードでは、SCKx に外部クロックパルスが印加されるとデータが送受信されます。 後のビットがラッチされると、SSPxIF 割り込みフラグビットがセットされます。

モジュールを SPI スレーブモードで動作させる前に、クロックラインのアイドル状態を一致させておく必要があります。クロックラインの状態は SCKx ピンを読み出す事で調べられます。アイドル状態は、CKP ビット (SSPxCON1<4>) によって決まります。

スレーブモードでは、SCKx ピンに外部クロック源からのクロックが供給されます。この外部クロックは、電気的仕様に規定された High 期間と Low 期間の 小値を満たす必要があります。

スリープ中でもスレーブはデータを送受信できます。1 バイトを受信すると、デバイスはスリープから復帰します。

20.3.7 スレーブセレクトの同期

SSxピンを使うと、同期スレーブモードを利用できます。SPIは、SSx ピン制御を有効 (SSPxCON1<3:0> = 04h)に設定したスレーブモードである必要があります。SSx ピンを Low にすると送受信が有効になり、SDOx

ピンが駆動されます。SSx ピンを High にすると、たとえ送信バイトの途中であってもSDOxピンの駆動は中断され、出力はフローティング状態に移行します。従って、アプリケーションによっては外付けのプルアップ / プルダウン抵抗の接続が望ましい場合があります。

SPI モジュールをリセットすると、ビットカウンタは強制的に「0」にクリアされます。リセットするには、SSxピンをHighレベルに駆動するか、SSPENビットをクリアします。

2線式通信をエミュレートするため、SDOxピンをSDIxピンに接続する事ができます。SPI をレシーバとして動作させる必要がある場合、SDOx ピンを入力として設定します。こうすると、SDOx からの送信が無効になります。SDIx はバス競合を発生する事がないため、常に入力のまま (SDIx機能 )としておく事ができます。

図 20-4: スレーブの同期波形

Note 1: SPIがSSxピン制御の有効なスレーブモード (SSPxCON1<3:0> = 0100) の場合、SSxピンを VDD レベルにすると SPI モジュールがリセットされます。

2: CKEビットをセットしたスレーブモードで SPI を使う場合、SSx ピンによる制御も有効に設定する必要があります。

SCKx(CKP = 1

SCKx(CKP = 0

InputSample

SDIx

bit 7

SDOx bit 7 bit 6 bit 7

SSPxIFInterrupt

(SMP = 0)

CKE = 0)

CKE = 0)

(SMP = 0)

Write toSSPxBUF

SSPxSR toSSPxBUF

SSx

Flag

bit 0

bit 7

bit 0

Next Q4 Cycleafter Q2

2013 Microchip Technology Inc. DS39762F_JP - p.275

Page 276: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-5: SPI モードの波形 ( スレーブモード、CKE = 0)

図 20-6: SPI モードの波形 ( スレーブモード、CKE = 1)

SCKx(CKP = 1

SCKx(CKP = 0

InputSample

SDIx

bit 7

SDOx bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

SSPxIFInterrupt

(SMP = 0)

CKE = 0)

CKE = 0)

(SMP = 0)

Write toSSPxBUF

SSPxSR toSSPxBUF

SSx

Flag

Optional

Next Q4 Cycleafter Q2

bit 0

SCKx(CKP = 1

SCKx(CKP = 0

InputSample

SDIx

bit 7 bit 0

SDOx bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

SSPxIFInterrupt

(SMP = 0)

CKE = 1)

CKE = 1)

(SMP = 0)

Write toSSPxBUF

SSPxSR toSSPxBUF

SSx

Flag

Not Optional

Next Q4 Cycleafter Q2

DS39762F_JP - p.276 2013 Microchip Technology Inc.

Page 277: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.3.8 電力管理モードにおける動作

SPI マスタモードでは、MSSP モジュールをフルパワーモード時と異なるクロックで動作させる事ができます。スリープの場合、全てのクロックが停止します。

アイドルでは、周辺モジュールにはクロックが供給されます。このクロックは、プライマリ クロック源、セカンダリ クロック (32.768 kHzのTimer1オシレータ )、INTRC クロック源のいずれかから供給されます。詳細は、セクション 3.7「クロック源とオシレータの切り換え」を参照してください。

ほとんどの場合、マスタが SPI データをクロッキングする速度はそれほど重要ではありませんが、システムごとに評価しておく必要があります。

MSSP 割り込みを有効にした場合、マスタがデータの送信を完了すると、割り込みによってコントローラはスリープまたはアイドルから復帰します。スリープまたはアイドルを終了させたくない場合、MSSP 割り込みを無効にします。

スリープを選択すると全てのモジュール クロックが停止し、デバイスが復帰するまで送受信はその時点の状態を保ちます。デバイスが通常のランモードに戻ると、モジュールはデータの送受信を再開します。

SPI スレーブモードの場合、SPI 送受信シフトレジスタはデバイスと非同期で動作します。従って、デバイスがいずれの電力管理モードに移行しても、SPI 送受信シフトレジスタへのデータのシフト入力は継続できます。8 ビットを全て受信すると MSSP 割り込みフラグビットがセットされ、割り込みを有効にしている場合はデバイスが復帰します。

20.3.9 リセットの影響

リセットは MSSP モジュールを無効にし、現在の転送は中止されます。

20.3.10 バスモード互換性

表 20-1 に、標準 SPI モードと、制御ビット CKP/CKEの状態の関係を示します。

表 20-1: SPI バスモード

データ サンプリングのタイミングを制御する SMPビットもあります。

20.3.11 SPI のクロック速度とモジュールの関係

MSSP1 と MSSP2 はそれぞれ独立したモジュールであるため、別々のデータレートで同時に動作させる事ができます。各モジュールのデータレートは、SSPxCON1レジスタの SSPM<3:0> ビットで設定します。

例外は、両方のモジュールがマスタモードで Timer2 をタイムベースとして使っている場合です。この場合、Timer2 の動作が変化すると両方の MSSP モジュールに同じ影響が現れます。2 つの異なるビットレートが必要な場合、どちらか一方のモジュールのタイムベースを Timer2 以外の 3 つから選択します。

標準 SPI モードの表現制御ビットの状態

CKP CKE

0, 0 0 1

0, 1 0 0

1, 0 1 1

1, 1 1 0

2013 Microchip Technology Inc. DS39762F_JP - p.277

Page 278: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 20-2: SPI 動作に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR3 SSP2IF(1) BCL2IF RC2IF TX2IF TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE(1) BCL2IE RC2IE TX2IE TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP(1) BCL2IP RC2IP TX2IP TMR4IP CCP5IP CCP4IP CCP3IP 71

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 71

TRISD TRISD7(1) TRISD6(1) TRISD5(1) TRISD4(1) TRISD3 TRISD2 TRISD1 TRISD0 71

TRISF TRISF7 TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0 71

SSP1BUF MSSP1 受信バッファ / 送信レジスタ 70

SSP1CON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 70

SSP1STAT SMP CKE D/A P S R/W UA BF 70

SSP2BUF MSSP2 受信バッファ / 送信レジスタ 73

SSP2CON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 73

SSP2STAT SMP CKE D/A P S R/W UA BF 73

凡例 : 網掛けの部分は SPI モードの MSSP では使いません。

Note 1: これらのビットが実装されているのは 100 ピンデバイスのみです。それ以外のデバイスでは「0」として読み出されます。

DS39762F_JP - p.278 2013 Microchip Technology Inc.

Page 279: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4 I2C モード

I2C モードの MSSP モジュールは、全てのマスタ / スレーブ機能 ( ジェネラルコールのサポートを含む ) を実装しており、空いているバスを判断するためのハードウェアによるスタート / ストップビット割り込みを生成できます ( マルチマスタ機能 )。MSSP モジュールは標準モードの仕様を実装すると共に、7 ビットと 10ビットのアドレッシングにも対応しています。

データ転送には以下の 2 つのピンを使います。

• シリアルクロック (SCLx) – RC3/SCK1/SCL1 (100 ピンデバイスの場合は RD6/SCK2/SCL2)

• シリアルデータ (SDAx) – RC4/SDI1/SDA1 (100 ピンデバイスの場合は RD5/SDI2/SDA2)

これらのピンは、TRISC<4:3>またはTRISD<5:4>ビットをセットして入力に設定しておく必要があります。

図 20-7: MSSP のブロック図 (I2C™ モード )

20.4.1 レジスタ

MSSP モジュールは、I2C 動作用に以下の 6 つのレジスタを使います。

• MSSPx 制御レジスタ 1 (SSPxCON1)

• MSSPx 制御レジスタ 2 (SSPxCON2)

• MSSPx ステータス レジスタ (SSPxSTAT)

• MSSPx 受信バッファ / 送信レジスタ (SSPxBUF)

• MSSPx シフトレジスタ (SSPxSR) – 直接アクセスは不可

• MSSPx アドレスレジスタ (SSPxADD)

SSPxCON1、SSPxCON2、SSPxSTAT は、I2C モード動作時の制御レジスタとステータス レジスタです。SSPxCON1とSSPxCON2は読み書き可能なレジスタです。SSPxSTATの下位 6ビットは読み出し専用です。SSPxSTAT の上位 2 ビットは読み書き可能です。

SSPxCON2 レジスタのビットの多くは、モジュールの動作がマスタモードかスレーブモードかによって異なる働きをします。SSPxCON2<5:1> に関しては、スレーブモードではビット名も異なります。SSPxCON2レジスタは、マスタモード時のもの ( レジスタ 20-5)とスレーブモード時のもの ( レジスタ 20-6) を分けて記載しています。

SSPxSRはデータをシフト入出力するためのシフトレジスタです。SSPxBUF はデータバイトの読み書き用バッファレジスタです。

MSSPをI2Cスレーブモードに設定した場合、SSPxADDレジスタにはスレーブデバイスのアドレスを格納します。MSSP をマスタモードに設定した場合、SSPxADD レジスタの下位 7 ビットは baud レート ジェネレータの再読み込み値です。

受信動作の場合、SSPxSR と SSPxBUF が連動して、ダブルバッファ レシーバを構成します。SSPxSR が 1バイトを全て受信するとSSPxBUFに転送され、SSPxIF割り込みがセットされます。

送信時のSSPxBUFはダブルバッファを構成しません。SSPxBUF に書き込むと、SSPxBUF と SSPxSR の両方に同じ内容が書き込まれます。

Read Write

SSPxSR reg

Match Detect

SSPxADD reg

Start andStop bit Detect

SSPxBUF reg

InternalData Bus

Addr Match

Set, ResetS, P bits(SSPxSTAT reg)

ShiftClock

MSb LSb

SCLx

SDAx

Address Mask

2013 Microchip Technology Inc. DS39762F_JP - p.279

Page 280: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 20-3: SSPxSTAT: MSSPx ステータス レジスタ (I2C™ モード )

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

SMP CKE D/A P(1) S(1) R/W(2,3) UA BF

bit 7 bit 0

凡例 :

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

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

bit 7 SMP: スルーレート制御ビット

マスタまたはスレーブモード : 1 = 標準速度モード (100 kHz と 1 MHz) でスルーレート制御は無効である 0 = 高速モード (400 kHz) でスルーレート制御は有効である

bit 6 CKE: SMBus 選択ビット

マスタまたはスレーブモード :1 = SMBus 仕様に準拠した入力は有効である 0 = SMBus 仕様に準拠した入力は無効である

bit 5 D/A: データ / アドレスビット

マスタモード :予約済み

スレーブモード :1 = 後に送受信したバイトがデータである事を示す0 = 後に送受信したバイトがアドレスである事を示す

bit 4 P: ストップビット (1)

1 = 後にストップビットが検出された事を示す0 = 後にストップビットは検出されなかった事を示す

bit 3 S: スタートビット (1)

1 = 後にスタートビットが検出された事を示す0 = 後にスタートビットは検出されなかった事を示す

bit 2 R/W: 読み出し / 書き込み情報ビット (I2C モードのみ )(2, 3)

スレーブモード :1 = 読み出し0 = 書き込み

マスタモード :1 = 送信中である0 = 送信中ではない

bit 1 UA: 更新アドレスビット (10 ビットのスレーブモードのみ )

1 = ユーザが SSPxADD レジスタ内のアドレスを更新する必要がある事を示す 0 = アドレスの更新は不要である

bit 0 BF: バッファフル ステータスビット

送信モード : 1 = SSPxBUF がフル 0 = SSPxBUF がエンプティ

受信モード :1 = SSPxBUF がフル (ACK とストップビットを除く )0 = SSPxBUF がエンプティ (ACK とストップビットを除く )

Note 1: このビットは、リセット時と SSPEN のクリア時にクリアされます。

2: このビットは、 後のアドレス一致後の R/W ビット情報を保持します。このビットが有効な期間は、アドレス一致から次のスタートビット、ストップビットまたは非 ACK ビットまでです。

3: このビットと SEN、RSEN、PEN、RCEN、ACKEN のいずれかとの論理和により、MSSP がアクティブモードにあるかどうかを示します。

DS39762F_JP - p.280 2013 Microchip Technology Inc.

Page 281: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 20-4: SSPxCON1: MSSPx 制御レジスタ 1 (I2C™ モード )

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

WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0

bit 7 bit 0

凡例 :

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

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

bit 7 WCOL: 書き込みコリジョン検出ビット

マスタ送信モード :1 = 送信を開始するための I2C 条件が有効でない状態で SSPxBUF レジスタへの書き込みを試みた

( ソフトウェアによるクリアが必要 )0 = コリジョンは発生していない

スレーブ送信モード :1 = 前のワードの送信中にSSPxBUFレジスタへの書き込みが実行された (ソフトウェアによるクリ

アが必要 )0 = コリジョンは発生していない

受信モード ( マスタまたはスレーブモード ):ドントケアビット

bit 6 SSPOV: 受信オーバーフロー インジケータ ビット

受信モード :1 = SSPxBUFレジスタに前のバイトが残っている間に次のバイトを受信した (ソフトウェアによる

クリアが必要 )0 = オーバーフローは発生していない

送信モード : 送信モードではドントケアビット

bit 5 SSPEN: MSSP イネーブルビット

1 = シリアルポートを有効にし、SDAx ピンと SCLx ピンをシリアルポート ピンとして設定する (1) 0 = シリアルポートを無効にし、上記のピンを I/O ポートピンとして設定する (1)

bit 4 CKP: SCKx 解放制御ビット

スレーブモード : 1 = クロックを解放する 0 = クロックを Low に保持 ( クロック ストレッチ ) してデータ セットアップ時間を確保する

マスタモード : このモードでは未使用

bit 3-0 SSPM<3:0>: MSSP モード選択ビット

1111 = I2C スレーブモード、10 ビットアドレス、スタートビットとストップビットの割り込みを有効にする (2)

1110 = I2C スレーブモード、7 ビットアドレス、スタートビットとストップビットの割り込みを有効にする (2)

1011 = I2C ファームウェア制御マスタモード ( スレーブアイドル )(2)

1000 = I2C マスタモード、クロック = FOSC/(4 * (SSPADD + 1))(2)

0111 = I2C スレーブモード、10 ビットアドレス (2)

0110 = I2C スレーブモード、7 ビットアドレス (2)

Note 1: 有効にした場合、SDAx ピンと SCLx ピンを入力として設定する必要があります。

2: ここに具体的に値を示していないビットの組み合わせは、予約済みか、SPI モードでのみ使うものです。

2013 Microchip Technology Inc. DS39762F_JP - p.281

Page 282: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 20-5: SSPxCON2: MSSPx 制御レジスタ 2 (I2C™ マスタモード )

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

GCEN ACKSTAT ACKDT(1) ACKEN(2) RCEN(2) PEN(2) RSEN(2) SEN(2)

bit 7 bit 0

凡例 :

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

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

bit 7 GCEN: ジェネラルコール イネーブルビット ( スレーブモードのみ )

マスタモードでは使わない

bit 6 ACKSTAT: 肯定応答 (ACK) ステータスビット ( マスタ送信モードのみ )

1 = スレーブから ACK を受信していない 0 = スレーブから ACK を受信した

bit 5 ACKDT: 肯定応答 (ACK) データビット ( マスタ受信モードのみ )(1)

1 = ACK なし0 = ACK あり

bit 4 ACKEN: 肯定応答 (ACK) シーケンス イネーブルビット (2)

1 = SDAx ピンと SCLx ピンで ACK シーケンスを開始し、ACKDT データビットを送信する。ハードウェアによって自動的にクリアされる

0 = ACK シーケンスをアイドルにする

bit 3 RCEN: 受信イネーブルビット ( マスタ受信モードのみ )(2)

1 = I2C の受信モードを有効にする 0 = 受信をアイドルにする

bit 2 PEN: ストップ条件イネーブルビット (2)

1 = SDAxピンとSCLxピンでストップ条件を開始する。ハードウェアによって自動的にクリアされる 0 = ストップ条件をアイドルにする

bit 1 RSEN: 反復スタート条件イネーブルビット (2)

1 = SDAx ピンと SCLx ピンで反復スタート条件を開始する。ハードウェアによって自動的にクリアされる

0 = 反復スタート条件をアイドルにする

bit 0 SEN: スタート条件イネーブル / ストレッチ イネーブルビット (2)

1 = SDAxピンとSCLxピンでスタート条件を開始する。ハードウェアによって自動的にクリアされる 0 = スタート条件をアイドルにする

Note 1: 受信終了時に、ユーザが ACK シーケンスを始める時に送信される値です。

2: I2C モジュールがアクティブな場合、これらのビットがセットされず ( スプーリングなし )、SSPxBUFに書き込む事ができない ( または SSPxBUF への書き込みが無効になる ) 場合があります。

DS39762F_JP - p.282 2013 Microchip Technology Inc.

Page 283: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 20-6: SSPxCON2: MSSPx 制御レジスタ 2 (I2C™ スレーブモード )

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

GCEN ACKSTAT ADMSK5 ADMSK4 ADMSK3 ADMSK2 ADMSK1 SEN(1)

bit 7 bit 0

凡例 :

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

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

bit 7 GCEN: ジェネラルコール イネーブルビット ( スレーブモードのみ )

1 = SSPxSR でジェネラルコール アドレス (0000h) を受信した時の割り込みを有効にする 0 = ジェネラルコール アドレスを無効にする

bit 6 ACKSTAT: 肯定応答 (ACK) ステータスビット

スレーブモードでは使わない

bit 5-2 ADMSK5:ADMSK2: スレーブアドレス マスク選択ビット

1 = SSPxADD で対応するビットのマスクを有効にする 0 = SSPxADD で対応するビットのマスクを無効にする

bit 1 ADMSK1: スレーブアドレス下位マスク選択ビット

7 ビット アドレッシング モードの場合 : 1 = SSPxADD<1> のマスクのみ有効にする 0 = SSPxADD<1> のマスクのみ無効にする

10 ビット アドレッシング モードの場合 : 1 = SSPxADD<1:0> のマスクを有効にする 0 = SSPxADD<1:0> のマスクを無効にする

bit 0 SEN: ストレッチ イネーブルビット (1)

1 = スレーブ送信とスレーブ受信の両方でクロック ストレッチを有効にする(ストレッチ イネーブル)0 = クロック ストレッチを無効にする

Note 1: I2C モジュールがアクティブな場合、このビットがセットされず ( スプーリングなし )、SSPxBUF に書き込む事ができない ( または SSPxBUF への書き込みが無効になる ) 場合があります。

2013 Microchip Technology Inc. DS39762F_JP - p.283

Page 284: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.2 動作

MSSP モジュールの動作は、MSSP イネーブルビットSSPEN (SSPxCON1<5>) をセットすると有効になります。

I2C の動作は、SSPxCON1 レジスタで制御できます。以下の I2C のモードは、SSPxCON1<3:0> の 4 つのモード選択ビットで選択できます。

• I2C マスタモード、クロック = (FOSC/4) x (SSPxADD + 1)

• I2C スレーブモード、7 ビットアドレス

• I2C スレーブモード、10 ビットアドレス

• I2C スレーブモード、7 ビットアドレス、スタート / ストップビットの割り込み有効

• I2C スレーブモード、10 ビットアドレス、スタート / ストップビットの割り込み有効

• I2C ファームウェア制御マスタモード、スレーブアイドル

SSPENビットをセットした状態でいずれかのI2Cモードを選択すると、TRISC または TRISD ビットをセットして SCLx ピンと SDAx ピンを入力に設定している場合、これらのピンは強制的にオープンドレインに設定されます。モジュールを正しく動作させるには、SCLx ピンと SDAx ピンにプルアップ抵抗を外付けする必要があります。

20.4.3 スレーブモード

スレーブモードでは、SCLx ピンと SDAx ピンを入力に設定 (TRISC<4:3> または TRISD<5:4> をセット ) する必要があります。MSSPモジュールは必要に応じて、出力データによって入力状態を無効にします ( スレーブ トランスミッタ )。

I2C スレーブモードのハードウェアは、アドレス完全一致で常に割り込みを発生させます。また、アドレスマスクを使うと複数のアドレスに対してハードウェア割り込みを発生させる事もできます (7 ビット アドレッシングでは 大 31 アドレス、10 ビット アドレッシングでは 大 63 アドレス )。モード選択ビットを設定する事で、スタート / ストップビットによる割り込みも選択できます。

アドレスが一致した場合、またはアドレス一致後に転送データの受信が完了した時点で、ハードウェアは自動的に肯定応答 (ACK) パルスを生成し、現在 SSPxSRレジスタに格納されている受信データを SSPxBUF レジスタに読み込みます。

以下の条件が 1 つでも満たされると、MSSP モジュールは上記の ACK パルスを発生しません。

• 転送を受信する前にバッファフル ビット BF (SSPxSTAT<0>) がセットされた

• 転送を受信する前に MSSP オーバーフロー ビットSSPOV (SSPxCON1<6>) がセットされた

この場合、SSPxSR レジスタの値は SSPxBUF に読み込まれませんが、SSPxIF ビットはセットされます。BF ビットは SSPxBUF レジスタを読み出す事でクリアされますが、SSPOV ビットはソフトウェアによるクリアが必要です。

正しく動作させるには、SCLx クロック入力の High 期間とLow期間が 小値の仕様を満たしている必要があります。I2C 仕様の High/Low 期間の仕様条件、MSSPモジュールに関する要件は、パラメータ 100 とパラメータ 101 に記載しています。

20.4.3.1 アドレッシング

MSSP モジュールを有効にすると、モジュールはスタート条件の発生を待ちます。スタート条件が発生すると、8 ビットが SSPxSR レジスタにシフト入力されます。全ての受信ビットはクロック (SCLx) ラインの立ち上がりエッジでサンプルされます。次に、レジスタ SSPxSR<7:1> の値と SSPxADD レジスタの値を比較します。アドレスは、8番目のクロックパルス (SCLx)の立ち下がりエッジで比較されます。アドレスが一致し、BF ビットと SSPOV ビットがクリアされている場合、以下のように動作します。

1. SSPxSR レジスタの値が SSPxBUF レジスタに読み込まれる。

2. バッファフル ビット BF がセットされる。

3. ACK パルスが生成される。

4. 9番目のSCLxパルスの立ち下がりエッジでMSSP割り込みフラグビット SSPxIF がセットされる( 割り込み有効時は割り込みが発生する )。

10 ビット アドレッシング モードの場合、スレーブは2 バイトのアドレスを受信する必要があります。1 バイト目のアドレスバイトの上位 5 ビット (MSb) が、10ビットアドレスであるかどうかを示します。スレーブデバイスがアドレスの 2 バイト目を受信できるように、R/W ビット (SSPxSTAT<2>) は書き込みに設定しておく必要があります。10 ビットアドレスの場合、1バイト目の値は「11110 A9 A8 0」です。この「A9」と「A8」がアドレスの上位 2 ビットです。10 ビットアドレス モードの動作シーケンスは以下の通りです。ただし、ステップ 7 ~ 9 はスレーブ トランスミッタの場合に実行されます。

1. 初のアドレスバイト(上位)を受信する(SSPxIF、BF、UA ビットがセットされる )。

2. SSPxADD レジスタを 2 番目のアドレスバイト( 下位 ) の値で更新する (UA ビットがクリアされSCLx ラインが解放される )。

3. SSPxBUF レジスタを読み出し (BF ビットがクリアされる )、フラグビット SSPxIF をクリアする。

4. 2 番目のアドレスバイト ( 下位 ) を受信する(SSPxIF、BF、UA ビットがセットされる )。

5. SSPxADD レジスタを 初のアドレスバイト ( 上位 ) の値で更新する。一致によって SCLx ラインが解放されると、UA ビットがクリアされる。

6. SSPxBUF レジスタを読み出し (BF ビットがクリアされる )、フラグビット SSPxIF をクリアする。

7. 反復スタート条件を受信する。

8. 初のアドレスバイト(上位)を受信する(SSPxIF、BF ビットがセットされる )。

9. SSPxBUF レジスタを読み出し (BF ビットがクリアされる )、フラグビット SSPxIF をクリアする。

DS39762F_JP - p.284 2013 Microchip Technology Inc.

Page 285: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.3.2 アドレスマスク

特定のアドレスビットをマスクすると、そのビットは「ドントケア」となります。アドレスビットを 1 つマスクすると、2 つのアドレスに ACK を返して割り込みが発生します。一度に複数のアドレスビットをマスクする事もできます。その場合、7 ビットモードでは大 31 アドレス、10 ビットモードでは 大 63 アドレスに対してACKを返す事ができます (例 20-2参照 )。

アドレスマスクを使っても使わなくても I2C スレーブの動作は変わりません。しかし、アドレスマスクを使った場合、I2C スレーブは複数のアドレスに ACK を返して割り込みを発生させます。この状況が発生したら、SSPxBUF を確認してどのアドレスが割り込みを発生したかを調べる必要があります。

7 ビット アドレッシング モードでは、アドレスマスクビットADMSK<5:1> (SSPxCON2<5:1>)の各ビットを使って、SSPxADDレジスタの対応するアドレスビットをマスクします。ADMSKビットをセット (ADMSK<n> =1)すると、対応するアドレスビットは無視されます(SSPxADD<n> = x)。ADMSK ビットがセットされていない位置のアドレスが一致すれば、モジュールは ACKを返します。

10 ビット アドレッシング モードでは、ADMSK<5:2>の各ビットを使って、SSPxADD レジスタの対応するアドレスビットをマスクします。また、ADMSK1 はアドレスの下位2ビット (SSPxADD<1:0>)を同時にマスクします。ADMSK ビットをセット (ADMSK<n> = 1)すると、対応するアドレスビットは無視されます(SSPxADD<n> = x)。また、10 ビット アドレッシングモードでは上位アドレスビットは SSPxADD レジスタの一部のビットを再利用します。アドレスマスク ビットはこれらの上位ビットには適用されず、下位アドレスビットのみに適用されます。

例 20-2: アドレスマスクの例

Note 1: ADMSK1はアドレスの下位2ビットをマスクします。

2: アドレスの上位 2 ビットはアドレスマスクの影響を受けません。

7 ビット アドレッシング :

SSPxADD<7:1> = A0h (1010000) (SSPxADD<0> は「0」と仮定 )ADMSK<5:1> = 00111

ACK が返されるアドレス : A0h, A2h, A4h, A6h, A8h, AAh, ACh, AEh

10 ビット アドレッシング :

SSPxADD<7:0> = A0h (10100000) ( この例では、アドレスの上位 2 ビットはマスクの影響を受けないため無視しています )ADMSK<5:1> = 00111

ACK が返されるアドレス : A0h, A1h, A2h, A3h, A4h, A5h, A6h, A7h, A8h, A9h, AAh, ABh, ACh, ADh, AEh, AFh

2013 Microchip Technology Inc. DS39762F_JP - p.285

Page 286: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.3.3 受信

R/Wビットがクリアされたアドレスバイトとアドレスが一致した場合、SSPxSTAT レジスタの R/W ビットがクリアされます。受信したアドレスは SSPxBUF レジスタに読み込まれ、SDAx ラインが Low に保持されます (ACK)。

アドレスバイトのオーバーフロー条件が真の場合、ACK パルス (ACK) は生成されません。オーバーフロー条件とは、BF ビット (SSPxSTAT<0>) または SSPOVビット (SSPxCON1<6>)のどちらかかがセットされている状態として定義されます。

1 データバイトが転送されるたびに MSSP 割り込みが生成されます。割り込みフラグビット SSPxIF はソフトウェアでクリアする必要があります。バイトの状態は、SSPxSTAT レジスタを使って判定します。

SEN が有効な場合 (SSPxCON2<0> = 1)、SCKx/SCLx(RC3 または RD6) はデータ転送後に Low のまま保持されます ( クロック ストレッチ )。クロックを解放するには、CKP ビット (SSPxCON1<4>) をセットする必要があります。詳細は、セクション 20.4.4「クロック ストレッチ」を参照してください。

20.4.3.4 送信

受信したアドレスバイトのR/Wビットがセットされた状態でアドレスが一致した場合、SSPxSTAT レジスタの R/W ビットがセットされます。受信したアドレスはSSPxBUF レジスタに読み込まれます。9 番目のビットで ACK パルスが送信され、SEN の状態に関わらずRC3 または RD6 が Low に保持されます ( セクション 20.4.4「クロック ストレッチ」参照 )。このクロック ストレッチ動作によって、マスタはスレーブ側で送信データの準備が整うまで、次のクロックパルスをアサートできません。送信データは SSPxBUF レジスタに読み込まれ、さらに SSPxSR レジスタにも読み込まれます。次に、CKP ビット (SSPxCON1<4>) をセットして RC3 または RD6 ピンを有効にします。SCLx 入力の各立ち下がりエッジで、8 つのデータビットがシフトアウトされます。これにより、SCLx の High 期間中の SDAx 信号が有効データとしてサンプルされます( 図 20-10)。

マスタレシーバからの ACK パルスは、SCLx 入力パルスの 9 番目の立ち上がりエッジでラッチされます。SDAx ラインが High ( 非 ACK) の場合、データ送信は完了です。この場合、スレーブが ACK をラッチするとスレーブのロジックがリセットされ (SSPxSTAT レジスタをリセット )、スレーブは次のスタートビットの監視を開始します。SDAx ラインが Low (ACK) の場合、次の送信データが SSPxBUF レジスタに読み込まれます。ここでも、CKP ビットをセットして RC3 または RD6 ピンを有効にする必要があります。

1 データバイトが転送されるたびに MSSP 割り込みが生成されます。SSPxIF ビットはソフトウェアでクリアする必要があり、バイトの状態を判断するにはSSPxSTAT レジスタを使います。SSPxIF ビットは 9番目のクロックパルスの立ち下がりエッジでセットされます。

DS39762F_JP - p.286 2013 Microchip Technology Inc.

Page 287: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-8: SEN = 0の場合の I2C™ スレーブモードのタイミング (7 ビットアドレス モードの受信 )

SD

Ax

SC

Lx

SS

PxI

F (

PIR

1<

3>

or

PIR

3<

7>

)

BF

(S

SP

xSTA

T<

0>)

SS

PO

V (

SS

PxC

ON

1<

6>

)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

A7

A6

A5

A4

A3

A2

A1

D7

D6

D5

D4

D3

D2

D1

D0

D7

D6

D5

D4

D3

D1

D0

AC

KR

ece

ivin

g D

ata

AC

KR

ece

ivin

g D

ata

R/W

= 0 A

CK

Rec

eiv

ing

Add

ress

Cle

are

d in

sof

twa

re

SS

PxB

UF

is r

ead

Bu

s m

aste

rte

rmin

ate

str

ansf

er

SS

PO

V is

set

beca

use

SS

PxB

UF

isst

ill fu

ll. A

CK

is n

ot s

ent.

D2 6

CK

P(C

KP

do

es n

ot r

ese

t to

‘0’ w

hen

SE

N =

0)

2013 Microchip Technology Inc. DS39762F_JP - p.287

Page 288: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-9: SEN = 0、ADMSK<5:1> = 01011の場合の I2C™ スレーブモードのタイミング(7 ビットアドレス モードの受信 )

SD

Ax

SC

Lx

SS

PxI

F (

PIR

1<

3>

or

PIR

3<

7>

)

BF

(S

SP

xSTA

T<

0>)

SS

PO

V (

SS

PxC

ON

1<

6>

)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

A7

A6

A5

XA

3X

XD

7D

6D

5D

4D

3D

2D

1D

0D

7D

6D

5D

4D

3D

1D

0

AC

KR

ece

ivin

g D

ata

AC

KR

ece

ivin

g D

ata

R/W

= 0 A

CK

Rec

eiv

ing

Ad

dre

ss

Cle

are

d in

sof

twar

e

SS

PxB

UF

is r

ea

d

Bu

s m

aste

rte

rmin

ates

tran

sfer

SS

PO

V is

set

beca

use

SS

PxB

UF

isst

ill fu

ll. A

CK

is n

ot s

ent

.

D2 6

CK

P(C

KP

do

es n

ot r

ese

t to

‘0’ w

hen

SE

N =

0)

No

te

1:

x =

ドント

ケア

(アド

レスビ

ットは

「1」ま

たは

「0」

のど

ちら

でも

可)で

す。

2:

この

例で

は、

A7

.A6

.A5.

X.A

3.X

.Xに等

しい

アド

レス

が肯

定応

答(A

CK

)さ

れ、

割り

込み

を生

成し

ます

DS39762F_JP - p.288 2013 Microchip Technology Inc.

Page 289: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-10: I2C™ スレーブモードのタイミング (7 ビットアドレス モードの送信 )

SD

Ax

SC

Lx

BF

(S

SP

xSTA

T<

0>)

A6

A5

A4

A3

A2

A1

D6

D5

D4

D3

D2

D1

D0

12

34

56

78

23

45

67

89

SS

PxB

UF

is w

ritte

n in

sof

twar

e

Cle

ared

in s

oftw

are

Dat

a in

sa

mpl

ed

S

AC

KT

rans

mitt

ing

Dat

aR

/W =

0A

CK

Re

ceiv

ing

Ad

dres

s

A7

D7

91

D6

D5

D4

D3

D2

D1

D0

23

45

67

89

SS

PxB

UF

is w

ritte

n in

sof

twar

e

Cle

ared

in s

oftw

are

Fro

m S

SP

xIF

ISR

Tran

smitt

ing

Dat

a

D7 1

CK

P

P

AC

K

CK

P is

set

in s

oftw

are

CK

P is

set

in s

oftw

are

SC

Lx h

eld

low

whi

le C

PU

resp

onds

to S

SP

xIF

SS

PxI

F (

PIR

1<

3>

or

PIR

3<

7>)

Fro

m S

SP

xIF

ISR

2013 Microchip Technology Inc. DS39762F_JP - p.289

Page 290: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-11: SEN = 0の場合の I2C™ スレーブモードのタイミング (10 ビットアドレス モードの受信 )

SD

Ax

SC

Lx

SS

PxI

F (

PIR

1<3>

or

PIR

3<7>

)

BF

(S

SP

xSTA

T<

0>)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

11

11

0A

9A

8A

7A

6A

5A

4A

3A

2A

1A

0D

7D

6D

5D

4D

3D

1D

0

Re

ceiv

e D

ata

Byt

e

AC

K

R/W

= 0 AC

K

Rec

eiv

e F

irst B

yte

of A

ddr

ess

Cle

are

d in

sof

twa

re

D2 6

Cle

are

d in

sof

twa

re

Re

ceiv

e S

eco

nd B

yte

of A

ddr

ess

Cle

are

d b

y h

ard

war

ew

hen

SS

PxA

DD

is u

pda

ted

with

low

byt

e o

f ad

dre

ss

UA

(S

SP

xSTA

T<

1>

)

Clo

ck is

he

ld lo

w u

ntil

upd

ate

of

SS

PxA

DD

ha

s ta

ken

plac

e

UA

is s

et i

ndic

atin

g th

atth

e S

SP

xAD

D n

eed

s to

be

upd

ated

UA

is s

et in

dica

ting

that

SS

PxA

DD

nee

ds

to b

eup

date

d

Cle

are

d b

y ha

rdw

are

wh

enS

SP

xAD

D is

upd

ate

d w

ith h

igh

byt

e o

f add

ress

SS

PxB

UF

is w

ritte

n w

ithco

nte

nts

of

SS

PxS

RD

um

my

rea

d o

f SS

PxB

UF

to c

lea

r B

F fl

ag

AC

K

CK

P

12

34

57

89

D7

D6

D5

D4

D3

D1

D0

Rec

eiv

e D

ata

Byt

e

Bus

mas

ter

term

inat

estr

ans

fer

D2 6

AC

K

Cle

ared

in s

oftw

are

Cle

ared

in s

oftw

are

SS

PO

V (

SS

PxC

ON

1<6>

)

SS

PO

V is

se

tb

eca

use

SS

PxB

UF

isst

ill fu

ll. A

CK

is n

ot s

ent.

(CK

P d

oes

not r

ese

t to

‘0’ w

hen

SE

N =

0)

Clo

ck is

he

ld lo

w u

ntil

upd

ate

of S

SP

xAD

D h

as

take

n pl

ace

DS39762F_JP - p.290 2013 Microchip Technology Inc.

Page 291: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-12: SEN = 0、ADMSK<5:1> = 01001の場合の I2C™ スレーブモードのタイミング (10 ビットアドレス モードの受信 )

SD

Ax

SC

Lx

SS

PxI

F (

PIR

1<

3>

or

PIR

3<7>

)

BF

(S

SP

xSTA

T<

0>)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

11

11

0A

9A

8A

7A

6A

5X

A3

A2

XX

D7

D6

D5

D4

D3

D1

D0

Rec

eiv

e D

ata

Byt

e

AC

K

R/W

= 0 AC

K

Re

ceiv

e F

irst

Byt

e o

f A

ddre

ss

Cle

ared

in s

oftw

are

D2 6

Cle

ared

in s

oftw

are

Rec

eiv

e S

eco

nd

Byt

e o

f A

ddre

ss

Cle

ared

by

hard

wa

rew

hen

SS

PxA

DD

is u

pdat

ed

with

low

byt

e o

f ad

dre

ss

UA

(S

SP

xSTA

T<

1>

)

Clo

ck is

hel

d lo

w u

ntil

upda

te o

f SS

PxA

DD

ha

s ta

ken

pla

ce

UA

is s

et in

dica

ting

that

the

SS

PxA

DD

ne

eds

to b

eu

pda

ted

UA

is s

et in

dic

atin

g th

at

SS

PxA

DD

ne

eds

to b

eu

pdat

ed

Cle

ared

by

har

dw

are

whe

nS

SP

xAD

D is

up

date

d w

ith h

igh

byte

of

addr

ess

SS

PxB

UF

is w

ritt

en w

ithco

nte

nts

of

SS

PxS

RD

umm

y re

ad o

f S

SP

xBU

Fto

cle

ar B

F f

lag

AC

K

CK

P

12

34

57

89

D7

D6

D5

D4

D3

D1

D0

Re

ceiv

e D

ata

Byt

e

Bus

mas

ter

term

ina

tes

tra

nsf

er

D2 6

AC

K

Cle

are

d in

so

ftwa

reC

lea

red

in s

oftw

are

SS

PO

V (

SS

PxC

ON

1<

6>

)

SS

PO

V is

set

beca

use

SS

PxB

UF

isst

ill fu

ll. A

CK

is n

ot s

ent

.

(CK

P d

oes

not

re

set

to ‘0

’ wh

en S

EN

= 0

)

Clo

ck is

he

ld lo

w u

ntil

upd

ate

of

SS

PxA

DD

ha

s ta

ken

pla

ce

No

te

1:

x =

ドン

トケア

(ア

ドレス

ビッ

トは

「1」

または

「0」

のど

ちら

でも

可)で

す。

2:

この

例で

は、

A9

.A8.

A7.

A6

.A5

.X.A

3.A

2.X

.Xに

等し

いア

ドレ

スが

肯定

応答

され

、割

り込

みを

生成

しま

す。

3:

アド

レス

の上

位2ビ

ット

はビッ

トマス

クの影

響を

受け

ない

事に

注意

して

くだ

さい

2013 Microchip Technology Inc. DS39762F_JP - p.291

Page 292: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-13: I2C™ スレーブモードのタイミング (10 ビットアドレス モードの送信 )

SD

Ax

SC

Lx

SS

PxI

F (

PIR

1<

3>

or

PIR

3<

7>

)

BF

(S

SP

xSTA

T<

0>)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

11

11

0A

9A

8A

7A

6A

5A

4A

3A

2A

1A

01

11

10

A8

R/W

= 1 A

CK

AC

K

R/W

= 0

AC

K

Rec

eive

Firs

t B

yte

of A

ddr

ess

Cle

are

d in

so

ftwa

re

Bu

s m

aste

rte

rmin

ate

str

ansf

er

A9 6

Rec

eiv

e S

eco

nd B

yte

of

Ad

dre

ss

Cle

are

d b

y ha

rdw

are

wh

enS

SP

xAD

D is

upd

ate

d w

ith lo

wby

te o

f add

ress

UA

(S

SP

xSTA

T<

1>)

Clo

ck is

he

ld lo

w u

ntil

upd

ate

of

SS

PxA

DD

ha

s ta

ken

pla

ce

UA

is s

et in

dica

ting

that

the

SS

PxA

DD

ne

eds

to b

eu

pda

ted

UA

is s

et

ind

ica

ting

that

SS

PxA

DD

ne

eds

to b

eup

dat

ed

Cle

are

d b

y h

ardw

are

whe

nS

SP

xAD

D is

up

dat

ed w

ith h

igh

byt

e o

f a

ddre

ss.

SS

PxB

UF

is w

ritte

n w

ithco

nte

nts

of

SS

PxS

RD

um

my

read

of

SS

PxB

UF

to c

lear

BF

fla

g

Re

ceiv

e F

irst B

yte

of A

dd

ress

12

34

57

89

D7

D6

D5

D4

D3

D1

AC

K

D2

6

Tra

nsm

ittin

g D

ata

Byt

e

D0

Du

mm

y re

ad o

f S

SP

xBU

Fto

cle

ar B

F f

lag

Sr

Cle

are

d in

so

ftwa

re

Writ

e o

f SS

PxB

UF

initi

ate

s tr

ans

mit

Cle

are

d in

sof

twar

e

Com

ple

tion

of

clea

rs B

F fl

ag

CK

P (

SS

PxC

ON

1<

4>

)

CK

P is

se

t in

sof

twar

e

CK

P is

au

tom

atic

ally

cle

are

d in

ha

rdw

are

, hol

din

g S

CLx

low

Clo

ck is

he

ld lo

w u

ntil

upd

ate

of

SS

PxA

DD

has

ta

ken

plac

e

data

tran

smis

sion

Clo

ck is

he

ld lo

w u

ntil

CK

P is

se

t to

‘1’

third

ad

dre

ss s

eque

nce

BF

fla

g is

cle

ar

at t

he

end

of

the

DS39762F_JP - p.292 2013 Microchip Technology Inc.

Page 293: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.4 クロック ストレッチ

7 ビットと 10 ビットのスレーブモードは、どちらも送信シーケンス実行中の自動クロック ストレッチ機能を実装しています。

受信時のクロック ストレッチは、SEN ビット(SSPxCON2<0>) で制御できます。SEN ビットをセットすると、1 回のデータ受信シーケンスが終了するごとに SCLx ピンが Low に保持されます。

20.4.4.1 7 ビットスレーブ受信モードのクロック ストレッチ (SEN = 1)

7 ビットスレーブ受信モードでは、ACK シーケンスの後、9 番目のクロックの立ち下がりエッジで BF ビッ

トがセットされている場合、SSPxCON1 レジスタのCKP ビットが自動的にクリアされます。これによって、SCLx 出力が強制的に Low に保持されます。CKPを「0」にクリアすると、SCLx ラインが Low にアサートされます。受信を継続するには、ユーザ割り込みサービスルーチン (ISR)内でCKPビットをセットする必要があります。SCLx ラインを Low に保持する事で、マスタデバイスが次の受信シーケンスを開始する前に、ユーザ ISR の処理と SSPxBUF の内容読み出しの時間を確保できます。これによって、バッファ オーバーランを防止します ( 図 20-15 参照 )。

20.4.4.2 10 ビットスレーブ受信モードのクロック ストレッチ (SEN = 1)

10 ビットスレーブ受信モードのアドレス シーケンスでは、クロック ストレッチが自動的に実行されますが、CKP はクリアされません。この場合、もし 9 番目のクロック後に UA ビットがセットされていると、クロック ストレッチが開始します。UA ビットがセットされるのは、10 ビットアドレスの上位バイトを受信した後に、R/W ビットが「0」にクリアされている下位バイトを受信した後です。クロックラインは

SSPxADD を更新した時点で解放されます。クロックストレッチは、7 ビットモードと同様に、1 回のデータ受信シーケンスごとに発生します。

20.4.4.3 7 ビットスレーブ送信モードのクロック ストレッチ

7 ビットスレーブ送信モードでは、BF ビットがクリアされている場合、9 番目のクロックの立ち下がりエッジ後に CKP ビットをクリアするとクロック ストレッチが実行されます。この動作は、SEN ビットの状態に関わらず実行されます。

送信を継続するには、ユーザ ISR 内で CKP ビットをセットする必要があります。SCLx ラインを Low に保持する事で、マスタデバイスが次の送信シーケンスを開始する前に、ユーザ ISR の処理と SSPxBUF の内容読み込みの時間を確保できます ( 図 20-10 参照 )。

20.4.4.4 10 ビットスレーブ送信モードのクロック ストレッチ

10 ビットスレーブ送信モードでは、 初の 2 つのアドレス シーケンスのクロック ストレッチは、10 ビットスレーブ受信モードの場合と同様に、UA ビットの状態で制御します。その後、10 ビットアドレスの上位ビットと R/W ビット = 「1」を含む 3 番めのアドレスシーケンスが送信されます。3 番目のアドレス シーケンスが終わってもUAビットはセットされず、モジュールは送信モードに設定されます。この場合、クロックストレッチは 7 ビットスレーブ送信モードと同様に、BF フラグで制御します ( 図 20-13 参照 )。

Note 1: ユーザが 9 番目のクロックの立ち下がりエッジよりも前に SSPxBUF の内容を読み出してBFビットがクリアされた場合、CKP ビットはクリアされず、クロック ストレッチは実行されません。

2: CKP ビットは、BF ビットの状態に関わらずソフトウェアでセットできます。ユーザ ISR内で次の受信シーケンスの前にBFビットをクリアする場合、オーバーフロー条件を生じないように慎重にコードを実装する必要があります。

Note: ユーザが UA ビットをポーリングし、9 番目のクロック立ち下がりエッジよりも前に SSPxADD レジスタを更新してこのビットをクリアした場合、かつユーザがその前に SSPxBUF レジスタを読み出して BF ビットをクリアしていない場合、CKPビットはやはり Lowにアサートされません。BF ビットの状態に基づくクロック ストレッチは、アドレス シーケンスではなく、データシーケンスでのみ実行されます。

Note 1: ユーザが 9 番目のクロックの立ち下がりエッジよりも前に SSPxBUF の内容を読み込んでBFビットがセットされた場合、CKP ビットはクリアされず、クロック ストレッチは実行されません。

2: CKP ビットは、BF ビットの状態に関わらずソフトウェアによってセットできます。

2013 Microchip Technology Inc. DS39762F_JP - p.293

Page 294: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.4.5 クロック同期と CKP ビット

CKP ビットがクリアされると、SCLx 出力は強制的に「0」になります。しかし、CKP ビットをクリアしても、SCLx出力がLowとしてサンプルされるまで、SCLx出力の Low はアサートされません。従って、外部 I2Cマスタデバイスが既にSCLxラインをアサートしていな

いと、CKP ビットは SCLx ラインをアサートしません。CKP ビットがセットされ、かつ I2C バス上にある他の全てのデバイスが SCLx をネゲートするまで SCLx 出力は Low のままです。このようにして、CKP ビットへの書き込みがSCLxのHigh期間の 小要件に違反しないようにしています ( 図 20-14 参照 )。

図 20-14: クロックの同期タイミング

SDAx

SCLx

DX – 1DX

WR

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

SSPxCON1

CKP

Master devicedeasserts clock

Master deviceasserts clock

DS39762F_JP - p.294 2013 Microchip Technology Inc.

Page 295: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-15: SEN = 1の場合の I2C™ スレーブモードのタイミング (7 ビットアドレス モードの受信 )

SD

Ax

SC

Lx

SS

PxI

F (

PIR

1<

3>

or

PIR

3<

7>)

BF

(S

SP

xSTA

T<

0>)

SS

PO

V (

SS

PxC

ON

1<

6>

)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

A7

A6

A5

A4

A3

A2

A1

D7

D6

D5

D4

D3

D2

D1

D0

D7

D6

D5

D4

D3

D1

D0

AC

KR

ece

ivin

g D

ata

AC

KR

ece

ivin

g D

ata

R/W

= 0 AC

K

Rec

eiv

ing

Add

ress

Cle

ared

in s

oftw

are

SS

PxB

UF

is r

ead

Bus

mas

ter

term

inat

es

tra

nsfe

r

SS

PO

V is

se

tb

eca

use

SS

PxB

UF

isst

ill fu

ll. A

CK

is n

ot

sent

.

D2 6

CK

P

CK

Pw

ritte

nto

‘1’ i

nIf

BF

is c

lea

red

prio

r to

the

falli

ng

edge

of

the

9th

clo

ck,

CK

P w

ill n

ot b

e re

set

to ‘0

’ an

d n

o c

lock

stre

tch

ing

will

occ

ur

softw

are

Clo

ck is

he

ld lo

w u

ntil

CK

P is

se

t to

‘1’

Clo

ck is

not

he

ld lo

wb

eca

use

buf

fer

full

bit

is

clea

r pr

ior

to fa

llin

g e

dge

of

9th

clo

ck

Clo

ck is

no

t he

ld lo

wb

eca

use

AC

K =

1

BF

is s

et a

fter

falli

ng

edg

e o

f th

e 9

th c

lock

,C

KP

is r

ese

t to

‘0’ a

nd

cloc

k st

retc

hing

occ

urs

2013 Microchip Technology Inc. DS39762F_JP - p.295

Page 296: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-16: SEN = 1の場合の I2C™ スレーブモードのタイミング (10 ビットアドレス モードの受信 )

SD

Ax

SC

Lx

SS

PxI

F (

PIR

1<

3>

or

PIR

3<

7>

)

BF

(S

SP

xSTA

T<

0>)

S1

23

45

67

89

12

34

56

78

91

23

45

78

9P

11

11

0A

9A

8A

7A

6A

5A

4A

3A

2A

1A

0D

7D

6D

5D

4D

3D

1D

0

Re

ceiv

e D

ata

Byt

e

AC

K

R/W

= 0

AC

K

Re

ceiv

e F

irst

Byt

e of

Add

ress

Cle

are

d in

so

ftwar

e

D2 6

Cle

are

d in

sof

twar

e

Re

ceiv

e S

eco

nd B

yte

of

Ad

dres

s

Cle

ared

by

har

dw

are

whe

nS

SP

xAD

D is

up

date

d w

ith lo

wb

yte

of

addr

ess

afte

r fa

llin

g e

dge

UA

(S

SP

xSTA

T<

1>)

Clo

ck is

hel

d lo

w u

ntil

up

date

of

SS

PxA

DD

ha

s ta

ken

pla

ce

UA

is s

et in

dica

ting

tha

tth

e S

SP

xAD

D n

eed

s to

be

upd

ate

d

UA

is s

et in

dica

ting

that

SS

PxA

DD

nee

ds t

o be

up

date

d

Cle

ared

by

hard

wa

re w

he

nS

SP

xAD

D is

up

date

d w

ith h

igh

byte

of

addr

ess

afte

r fa

llin

g e

dge

SS

PxB

UF

is w

ritte

n w

ithco

nte

nts

of

SS

PxS

RD

umm

y re

ad

of

SS

PxB

UF

to c

lea

r B

F fl

ag

AC

K

CK

P

12

34

57

89

D7

D6

D5

D4

D3

D1

D0

Rec

eiv

e D

ata

Byt

e

Bus

mas

ter

term

inat

es

tra

nsfe

r

D2 6

AC

K

Cle

are

d in

so

ftwa

reC

lear

ed in

so

ftwa

re

SS

PO

V (

SS

PxC

ON

1<

6>

)

CK

P w

ritte

n to

‘1’

No

te:

9番目のクロックの立ち下がりエッジよりも前

にS

SP

xAD

Dレジスタを

更新した

場合、

UAは

変化せずセットされたままです。

No

te:

9番目のクロックの

立ち下

がり

エッ

ジよ

りも

前に

SS

PxA

DD

レジ

スタ

を更

新し

た場

合、

UA

は変

化せ

ずセットされたままです。

in s

oftw

are

Clo

ck is

hel

d lo

w u

ntil

up

date

of

SS

PxA

DD

ha

s ta

ken

pla

ce of n

inth

clo

cko

f nin

th c

lock

SS

PO

V is

set

beca

use

SS

PxB

UF

isst

ill fu

ll. A

CK

is n

ot s

ent.

Du

mm

y re

ad o

f S

SP

xBU

Fto

cle

ar B

F f

lag

Clo

ck is

he

ld lo

w u

ntil

CK

P is

se

t to

‘1’

Clo

ck is

no

t hel

d lo

wbe

caus

e A

CK

= 1

DS39762F_JP - p.296 2013 Microchip Technology Inc.

Page 297: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.5 ジェネラルコール アドレスのサポート

通常の I2C バスのアドレッシング手順では、スタート条件に続く 初のバイトでマスタがスレーブデバイスのアドレスを指定します。例外として、ジェネラルコール アドレスは全てのデバイスをアドレス指定可能です。このアドレスを使うと、基本的には全てのデバイスが ACK を返します。

I2C プロトコルでは、特別な用途のために 8 つのアドレスが予約済みです。ジェネラルコール アドレスはその 1 つです。ジェネラルコール アドレスは、R/W = 0も含め、全てのビットが「0」です。

ジェネラルコール アドレスは、ジェネラルコール イネーブルビット GCEN (SSPxCON2<7>) がセットされている時に認識されます。スタートビットの検出に続き、8 ビットが SSPxSR にシフト入力され、アドレスが SSPxADD と比較されます。値はジェネラルコール アドレスとも比較され、ハードウェア内に固定されます。

ジェネラルコール アドレスに一致した場合、SSPxSRが SSPxBUF に転送され、8 番目のビットで BF フラグビットがセットされた後、9番目のビット (ACKビット ) の立ち下がりエッジで割り込みフラグビットSSPxIF がセットされます。

割り込みを処理する場合、割り込み要因は SSPxBUFの内容を読み出す事で確認できます。この値を使って、アドレスがデバイス固有か、ジェネラルコール アドレスのいずれであるかを判断できます。

10 ビットアドレス モードでは、アドレス後半部分を比較するために SSPxADD を更新する必要があるため、UA ビット (SSPxSTAT<1>) がセットされます。10ビットアドレス モードのスレーブで GCEN ビットをセットした場合、ジェネラルコール アドレスを検出するとアドレスの後半部分は不要になるため、UA ビットはセットされません。スレーブは ACK 送信後にデータ受信を開始します ( 図 20-17)。

図 20-17: スレーブモードのジェネラルコール アドレス シーケンス (7 または 10 ビットアドレスモード )

SDAx

SCLx

S

SSPxIF

BF (SSPxSTAT<0>)

SSPOV (SSPxCON1<6>)

Cleared in software

SSPxBUF is read

R/W = 0

ACKGeneral Call Address

Address is compared to General Call Address

GCEN (SSPxCON2<7>)

Receiving Data ACK

1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9

D7 D6 D5 D4 D3 D2 D1 D0

after ACK, set interrupt

‘0’

‘1’

2013 Microchip Technology Inc. DS39762F_JP - p.297

Page 298: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.6 マスタモード

マスタモードは、SSPxCON1 の該当する SSPM ビットをセットまたはクリアし、SSPEN ビットをセットする事で有効になります。マスタモードでは、SCLxラインとSDAxラインがMSSPハードウェアによって制御されます。

マスタモードの動作は、スタート / ストップ条件の検出による割り込み生成でサポートされます。ストップ(P) ビットとスタート (S) ビットは、リセット時または MSSP モジュールが無効にされた時にクリアされます。I2C バスの制御権は、P ビットがセットされた場合、または S ビットと P ビットの両方がクリアされてバスがアイドル状態になった場合に取得できます。

ファームウェア制御マスタモードの場合、ユーザコードが全ての I2C バス動作をスタートビット条件とストップビット条件に基づいて制御します。

マスタモードを有効にした上で、ユーザは以下の 6 つの動作を選択できます。

1. SDAx と SCLx でスタート条件を生成する。

2. SDAx と SCLx で反復スタート条件を生成する。

3. SSPxBUF レジスタに書き込み、データ / アドレスの送信を開始する。

4. I2C ポートをデータ受信モードに設定する。

5. 1 バイトのデータ受信後に ACK 条件を生成する。

6. SDAx と SCLx でストップ条件を生成する。

以下のイベントが生じると、MSSP 割り込みフラグビット SSPxIF がセットされます ( 有効にしている場合は MSSP 割り込みが発生します )。

• スタート条件

• ストップ条件

• データ転送バイトの送受信

• ACK の送信

• 反復スタート

図 20-18: MSSP のブロック図 (I2C™ マスタモード )

Note: I2C マスタモードの場合、MSSP モジュールではイベントのキューイングはできません。例えばスタート条件を開始した後、スタート条件が完了する前にSSPxBUFレジスタへ書き込みを実行して、送信動作を開始する事はできません。この場合、SSPxBUF への書き込みは実行されず、SSPxBUFへの書き込みが行われなかった事を示すWCOLビットがセットされます。

Read Write

SSPxSR

Start bit, Stop bit,

SSPxBUF

InternalData Bus

Set/Reset S, P, WCOL (SSPxSTAT, SSPxCON1)

ShiftClock

MSb LSb

SDAx

AcknowledgeGenerate

Stop bit DetectWrite Collision Detect

Clock ArbitrationState Counter forEnd of XMIT/RCV

SCLx

SCLx In

Bus Collision

SDAx In

Rec

eive

Ena

ble

Clo

ck C

ntl

Clo

ck A

rbitr

ate/

WC

OL

Det

ect

(ho

ld o

ff cl

ock

sou

rce

)

SSPxADD<6:0>

Baud

Set SSPxIF, BCLxIFReset ACKSTAT, PEN (SSPxCON2)

RateGenerator

SSPM<3:0>

Start bit Detect

DS39762F_JP - p.298 2013 Microchip Technology Inc.

Page 299: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.6.1 I2C マスタモードの動作

マスタデバイスは、全てのシリアルクロック パルス、スタート / ストップ条件を生成します。転送は、ストップ条件または反復スタート条件で終了します。反復スタート条件は次のシリアル転送の開始でもあるため、I2C バスは解放されません。

マスタ トランスミッタ モードでは、SCLx からシリアルクロックを出力し、SDAx からシリアルデータを出力します。 初に送信するバイトは、受信デバイスのスレーブアドレス (7 ビット ) と Read/Write (R/W) ビットを含みます。この場合、R/W ビットは論理「0」です。シリアルデータは 1 回に 8 ビット送信されます。1 バイト送信ごとに肯定応答 (ACK) ビットを受信します。シリアル転送の開始 / 終了は、スタート / ストップ条件の出力で示します。

マスタ受信モードの場合、 初に送信するバイトは送信デバイスのスレーブアドレス (7 ビット ) と R/W ビットを含みます。この場合、R/W ビットは論理「1」です。従って、7 ビットのスレーブアドレスの末尾に受信ビットを示す「1」を付加したものが、 初に送信するバイトです。SDAxでシリアルデータを受信し、SCLxからシリアルクロックを出力します。シリアルデータは 1 回に 8 ビットずつ受信します。1 バイト受信ごとに肯定応答 (ACK) ビットを送信します。スタート / ストップ条件で、送信の開始 / 終了を示します。

SPI モードで使う baud レート ジェネレータで、100 kHz、400 kHz、1 MHz の I2C 動作に必要な SCLxクロック周波数を設定します。詳細は、セクション 20.4.7「baud レート」を参照してください。

代表的な送信シーケンスは、以下のように進行します。

1. スタート イネーブルビットSEN (SSPxCON2<0>)をセットしてスタート条件を生成する。

2. SSPxIF がセットされる。MSSP モジュールは、新しい動作を開始する前に必要なスタート時間が経過するまで待機する。

3. ユーザが、SSPxBUF に送信先のスレーブアドレスを書き込む。

4. 8 ビット全てが転送されるまで、アドレスがSDAxピンで順番にシフト出力される。

5. MSSP モジュールはスレーブデバイスから ACKビットを受信し、その値を ACKSTAT ビット(SSPxCON2<6>) に書き込む。

6. MSSP モジュールは、9 番目のクロックサイクルの 後に SSPxIF ビットをセットして割り込みを生成する。

7. ユーザが、SSPxBUFに8ビットデータを読み込む。

8. 8 ビット全てが転送されるまで、データが SDAxピンで順番にシフト出力される。

9. MSSP モジュールはスレーブデバイスから ACKビットを受信し、その値を ACKSTAT ビット(SSPxCON2<6>) に書き込む。

10. MSSP モジュールは、9 番目のクロックサイクルの 後に SSPxIF ビットをセットして割り込みを生成する。

11. ストップ イネーブルビットPEN (SSPxCON2<2>)をセットしてストップ条件を生成する。

12. ストップ条件が完了すると割り込みが生成される。

2013 Microchip Technology Inc. DS39762F_JP - p.299

Page 300: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.7 baud レート

I2C マスタモードでは、SSPxADD レジスタの下位 7ビットに baudレート ジェネレータ (BRG)の再読み込み値が格納されます ( 図 20-19)。SSPxBUF への書き込みが実行されると、baud レート ジェネレータが自動的にカウントを開始します。BRG が 0 までカウントダウンすると、新しい再読み込み値が格納されるまでカウントを停止します。BRG は、1 命令サイクル (TCY)で 2 回 (Q2 クロックと Q4 クロックで ) デクリメントします。I2C マスタモードでは、BRG の再読み込みは自動で行われます。

実行中の動作が完了すると ( すなわち、 後のデータビットの後に ACK が送信されると )、内部クロックが自動的にカウントを停止し、SCLx ピンは 後の状態を保持します。

表 20-3 に、命令サイクルに基づくクロックレートとSSPxADD に読み込まれる BRG の値を示します。

20.4.7.1 baud レートとモジュールの相互依存関係

MSSP1 と MSSP2 は独立しているため、これらを別々の baud レートの I2C マスタモードで同時に動作させる事ができます。そのためには、各モジュールに別々の BRG 再読み込み値を使う必要があります。

このモードではシステムクロックから基準クロック源を得ているため、このクロックに変更を加えてしまうと両方のモジュールに影響を与えてしまいます。BRG再読み込み値を変更する事で、一方または両方の baudレートを前の値に戻す事ができます。

図 20-19: baud レート ジェネレータのブロック図

表 20-3: I2C™ のクロックレートと BRG

FOSC BRG の値FSCL

(BRG ロールオーバー 2 回 )

41.667 MHz 19h 400 kHz(1)

41.667 MHz 67h 100 kHz

31.25 MHz 13h 400 kHz(1)

31.25 MHz 4Dh 100 kHz

20.833 MHz 09h 400 kHz(1)

20.833 MHz 33h 100 kHz

Note 1: この I2C™ インターフェイスは、400 kHz I2C 仕様 (100 kHz よりも高いレートに適用される仕様 ) に厳密には準拠していません。しかし、アプリケーションでより高速なレートが必要な場合、十分な注意を払えば使う事ができます。

SSPM<3:0>

BRG Down CounterCLKO FOSC/4

SSPxADD<6:0>

SSPM<3:0>

SCLx

ReloadControl

Reload

DS39762F_JP - p.300 2013 Microchip Technology Inc.

Page 301: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.7.2 クロック アービトレーション

送信中、受信中、反復スタート / ストップ条件の発生中にマスタが SCLx ピンをネゲートする (SCLx のフローティング High を許可する ) と、クロック アービトレーションが発生します。SCLx ピンのフローティング High が許可されても、実際に High がサンプルされるまで baudレート ジェネレータ (BRG)のカウントは中断されます。SCLx ピンで High がサンプルされる

と、baud レート ジェネレータに SSPxADD<6:0> の内容が再度読み込まれ、カウントが始まります。外部デバイスによってクロックがLowに保持されていたとしても、上記の動作によって、SCLx の High 期間が 短でも BRG のロールオーバー 1 回分確保されます( 図 20-20)。

図 20-20: クロック アービトレーション時の baud レート ジェネレータのタイミング

SDAx

SCLx

SCLx deasserted but slave holds

DX – 1DX

BRG

SCLx is sampled high, reload takesplace and BRG starts its count

03h 02h 01h 00h (hold off) 03h 02h

Reload

BRGValue

SCLx low (clock arbitration)SCLx allowed to transition high

BRG decrements onQ2 and Q4 cycles

2013 Microchip Technology Inc. DS39762F_JP - p.301

Page 302: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.8 I2C マスタモードのスタート条件のタイミング

スタート条件を開始するには、スタート イネーブルビット SEN (SSPxCON2<0>) をセットします。SDAxピンと SCLx ピンで High がサンプルされると、baudレート ジェネレータに SSPxADD<6:0> の内容が再度読み込まれ、カウントが始まります。baud レート ジェネレータがタイムアウト (TBRG)した時にSCLxピンとSDAx ピンが両方共 High としてサンプルされると、SDAx ピンは Low に駆動されます。SCLx ピンが Highの時にSDAxがLowに駆動されるとスタート条件となり、S ビット (SSPxSTAT<3>) がセットされます。続いて、baud レート ジェネレータに SSPxADD<6:0> の内容が再度読み込まれ、カウントが再開します。baudレート ジェネレータがタイムアウト (TBRG) すると、SENビット (SSPxCON2<0>)はハードウェアによって自動的にクリアされます。baud レート ジェネレータは動作を中断し、SDAx ラインが Low に保持されたままスタート条件が完了します。

20.4.8.1 WCOL ステータスフラグ

スタート シーケンス中にユーザがSSPxBUFに書き込みを実行すると WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

図 20-21: 初のスタートビットのタイミング

Note: スタート条件の開始時に SDAx ピンとSCLx ピンが既に Low としてサンプルされている場合、またはスタート条件中にSDAx ラインが Low に駆動される前にSCLx ラインが Low としてサンプルされた場合、バスコリジョンが発生します。バスコリジョン割り込みフラグ BCLxIF がセットされ、スタート条件は中止されてI2Cモジュールはアイドル状態にリセットされます。

Note: イベントのキューイングはできないため、ス タ ー ト 条 件 が 終 了 す る ま でSSPxCON2の下位 5ビットには書き込む事ができません。

SDAx

SCLx

S

TBRG

1st bit 2nd bit

TBRG

SDAx = 1, At completion of Start bit,SCLx = 1

Write to SSPxBUF occurs hereTBRG

hardware clears SEN bit

TBRG

Write to SEN bit occurs hereSet S bit (SSPxSTAT<3>)

and sets SSPxIF bit

DS39762F_JP - p.302 2013 Microchip Technology Inc.

Page 303: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.9 I2C マスタモードの反復スタート条件のタイミング

反復スタート条件は、RSEN ビット (SSPxCON2<1>)が High にプログラムされており、I2C ロジック モジュールがアイドル状態の場合に発生します。RSENビットがセットされると、SCLx ピンが Low にアサートされます。SCLx ピンで Low がサンプルされると、baudレート ジェネレータにSSPxADD<6:0>の内容が読み込まれ、カウントが始まります。SDAx ピンは、baud レート ジェネレータが 1 回カウントする間(TBRG)、High に解放されます。baud レート ジェネレータがタイムアウトした時に SDAx で High がサンプルされると、SCLx ピンがネゲートされ High になります。SCLx ピンで High がサンプルされると、baudレート ジェネレータに SSPxADD<6:0> の内容が再度読み込まれ、カウントが始まります。SDAx と SCLxは 1 TBRG の期間 High を維持する必要があります。この後、SCLx が High の間に SDAx ピンを 1 TBRG の期間アサート (SDAx = 0) します。その後、RSEN ビット(SSPxCON2<1>) が自動的にクリアされ、baud レートジェネレータには値が再読み込みされず、SDAx ピンは Low に保持されます。SDAx ピンと SCLx ピンでスタート条件が検出されると、S ビット (SSPxSTAT<3>)がただちにセットされます。SSPxIF ビットは、baudレート ジェネレータがタイムアウトするまでセットされません。

SSPxIF ビットがセットされた直後に、ユーザはSSPxBUFに7ビットのアドレス (7ビットモード時 )または既定値の 初のアドレスバイト (10 ビットモード時 ) を書き込む事ができます。 初の 8 ビットを送信して ACK を受信したら、ユーザはアドレスの残り 8ビット (10 ビットモード ) または 8 ビットのデータ (7ビットモード ) を送信できます。

20.4.9.1 WCOL ステータスフラグ

反復スタート シーケンス中にユーザがSSPxBUFに書き込むと WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

図 20-22: 反復スタート条件の波形

Note 1: その他のいかなるイベントが進行している間に RSEN がセットされても、実行されません。

2: 以下の場合、反復スタート条件中にバスコリジョンが発生します。

• SCLx が Low から High に遷移した時にSDAx が Low としてサンプルされる。

• SDAx が Low にアサートされる前にSCLx が Low に遷移した ( 別のマスタがデータ「1」を送信しようとしている可能性があります )。

Note: イベントのキューイングはできないため、反復スタート条件が終了するまでSSPxCON2の下位 5ビットには書き込む事ができません。

SDAx

SCLx

Sr = Repeated Start

Write to SSPxCON2

Write to SSPxBUF occurs hereon falling edge of ninth clock,

end of Xmit

At completion of Start bit, hardware clears RSEN bit

1st bit

S bit set by hardware

TBRG

TBRG

SDAx = 1,

SDAx = 1,

SCLx (no change)

SCLx = 1occurs here:

TBRG TBRG

and sets SSPxIF

RSEN bit set by hardware

TBRG

2013 Microchip Technology Inc. DS39762F_JP - p.303

Page 304: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.10 I2C マスタモード送信

データバイト、7 ビットアドレス、10 ビットアドレスの残り半分の送信は、SSPxBUF レジスタへ値を書き込むだけで完了します。書き込み動作によってバッファフル フラグビット BF がセットされ、baud レート ジェネレータのカウントと共に次の送信が開始します。SCLx の立ち下がりエッジのアサート後、アドレス /データの各ビットは SDAx ピンにシフト出力されます( データホールド時間仕様のパラメータ 106 参照 )。SCLx は baud レート ジェネレータのロールオーバーカウント 1 回分 (TBRG) の間、Low に保持されます。データは SCLx が High に解放されるまでは有効です(データ セットアップ時間仕様のパラメータ107参照 )。SCLx ピンは High に解放された後、TBRG の期間、その状態を保持します。SDAx ピン上のデータは、この期間と、SCLx の次の立ち下がりエッジ後のホールド時間まで安定する必要があります。8 番目のビットがシフト出力された(8番目のクロックの立ち下がりエッジ ) 後、BF フラグがクリアされてマスタが SDAx を解放します。アドレスが一致した場合、またはデータを正常に受信した場合、アドレス指定されたスレーブデバイスは 9 番目のビットと同時に ACK ビットを送信します。ACK の状態は、9 番目のクロックの立ち下がりエッジで ACKDT ビットに書き込まれます。マスタが ACK を受信すると、ACK ステータスビットACKSTAT がクリアされます (ACK を受信していない場合、ビットはセット )。9番目のクロックの後、SSPxIFビットがセットされ、マスタクロック (baud レートジェネレータ ) は次のデータバイトが SSPxBUF に読み込まれるまで一時停止し、SCLx は Low、SDAx はそのままの状態を保持します ( 図 20-23)。

SSPxBUF への書き込み後、7 ビットのアドレスと R/Wビットが全て出力されるまで SCLx の立ち下がりエッジでアドレスのビットが1つずつシフト出力されます。8 番目のクロックの立ち下がりエッジでマスタはSDAx ピンをネゲートし、スレーブが ACK を返せるようにします。9 番目のクロックの立ち下がりエッジでマスタは SDAx ピンをサンプルし、スレーブがアドレスを認識したかどうかを確認します。ACK ビットの状態が ACKSTAT ステータスビット (SSPxCON2<6>) に読み込まれます。アドレス送信の 9 番目のクロックが立ち下がると SSPxIF がセットされ、BF フラグがクリアされます。これによって次に SSPxBUF への書き込みが実行されるまで baudレート ジェネレータがOFFになり、SCLx が Low に保持され、SDAx はフローティング状態に移行します。

20.4.10.1 BF ステータスフラグ

送信モードの場合、BF ビット (SSPxSTAT<0>) は CPUが SSPxBUF に書き込むとセットされ、8 ビットが全てシフト出力された時点でクリアされます。

20.4.10.2 WCOL ステータスフラグ

送信中に (SSPxSR がデータバイトをシフト出力中に )ユーザが SSPxBUF に書き込むと、SSPxBUF への書き込みから 2 TCY 後に WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。2 TCY 以内に SSPxBUF に再度書き込みを実行すると、

WCOLビットがセットされたままSSPxBUFが更新されます。結果として不正なデータが転送される可能性があります。

不正なデータの転送を回避するため、SSPxBUF への書き込みの後は毎回WCOLビットがクリアされている事を確認する必要があります。いずれの場合も、WCOLはソフトウェアでクリアする必要があります。

20.4.10.3 ACKSTAT ステータスフラグ

送信モードでは、スレーブが ACK を送信 (ACK = 0) するとACKSTATビット(SSPxCON2<6>)がクリアされ、スレーブが ACK を送信しない (ACK = 1) とセットされます。スレーブは、自分自身のアドレスを認識するか ( ジェネラルコールを含む )、正常にデータ受信を完了すると ACK を送信します。

20.4.11 I2C マスタモード受信

マスタモード受信は、受信イネーブルビット RCEN(SSPxCON2<3>) をセットすると有効になります。

baud レート ジェネレータがカウントを開始し、ロールオーバーごとに SCLx ピンが遷移 (High → Low/Low →High) してデータが SSPxSR へシフト入力されます。8番目のクロックの立ち下がりエッジの後、受信イネーブルフラグが自動的にクリアされます。これによってSSPxSR の内容が SSPxBUF に読み込まれ、BF フラグビットとSSPxIFフラグビットがセットされる事で、baudレート ジェネレータがカウントを停止してSCLxが Low に保持されます。MSSP はアイドル状態であり、次のコマンドを待ちます。CPU がバッファを読み出すと、BF フラグビットは自動的にクリアされます。ユーザは、受信の 後に ACK シーケンス イネーブルビット ACKEN (SSPxCON2<4>) をセットして ACKビットを送信できます。

20.4.11.1 BF ステータスフラグ

受信動作の場合、SSPxSR から SSPxBUF へアドレスバイトまたはデータバイトが読み込まれると、BF ビットがセットされます。このビットは SSPxBUF レジスタを読み出すとクリアされます。

20.4.11.2 SSPOV ステータスフラグ

受信動作の場合、以前の受信で BF フラグが既にセットされている時に SSPxSR が 8 ビットを受信すると、SSPOV ビットがセットされます。

20.4.11.3 WCOL ステータスフラグ

受信が既に開始した状態で ( すなわち、SSPxSR がデータバイトをシフト入力している間に)ユーザがSSPxBUFに書き込むと WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

Note: MSSP モジュールがアイドル状態の時にRCEN ビットをセットしないと、RCENビットは無視されます。

DS39762F_JP - p.304 2013 Microchip Technology Inc.

Page 305: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-23: I2C™ マスタモードの波形 (7 または 10 ビットアドレス モードの送信 )

SD

Ax

SC

Lx

SS

PxI

F

BF

(S

SP

xSTA

T<

0>)

SE

N

A7

A6

A5

A4

A3

A2

A1

AC

K =

0D

7D

6D

5D

4D

3D

2D

1D

0

AC

KT

ran

smitt

ing

Da

ta o

r S

eco

nd H

alf

R/W

= 0

Tra

nsm

it A

ddr

ess

to

Sla

ve

12

34

56

78

91

23

45

67

89

P

Cle

are

d in

so

ftwa

re s

erv

ice

ro

utin

e

SS

PxB

UF

is w

ritt

en

in s

oftw

are

fro

m M

SS

P in

terr

up

t

Afte

r S

tart

co

nditi

on

, SE

N c

lea

red

by h

ard

wa

re

S

SS

PxB

UF

wri

tten

with

7-b

it a

ddr

ess

and

R/W

star

t tr

an

smit

SC

Lx

hel

d lo

ww

hile

CP

Ure

spo

nd

s to

SS

PxI

F

SE

N =

0

of 1

0-b

it A

dd

ress

Writ

e S

SP

xCO

N2

<0

> (

SE

N =

1),

Sta

rt c

on

ditio

n b

eg

ins

Fro

m s

lave

, cl

ea

r A

CK

STA

T b

it (S

SP

xCO

N2<

6>

)

AC

KS

TAT

in

SS

PxC

ON

2 =

1

Cle

are

d in

sof

twar

e

SS

PxB

UF

wri

tten

PE

N

R/W

Cle

are

d in

sof

twar

e

2013 Microchip Technology Inc. DS39762F_JP - p.305

Page 306: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-24: I2C™ マスタモードの波形 (7 ビットアドレス モードの受信 )

P9

87

65

D0

D1

D2

D3

D4

D5

D6

D7

S

A7

A6

A5

A4

A3

A2

A1

SD

Ax

SC

Lx

12

34

56

78

91

23

45

67

89

12

34

Bu

s m

aste

rte

rmin

ate

str

ans

fer

AC

K

Rec

eiv

ing

Da

ta fr

om

Sla

veR

ece

ivin

g D

ata

from

Sla

ve

D0

D1

D2

D3

D4

D5

D6

D7

AC

K

R/W

= 1

Tra

nsm

it A

ddre

ss to

Sla

ve

SS

PxI

F

BF

AC

K is

no

t se

nt

Writ

e t

o S

SP

xCO

N2

<0>

(S

EN

= 1

),

Wri

te to

SS

PxB

UF

occ

urs

he

re,

AC

K f

rom

Sla

veMa

ste

r co

nfig

ure

d a

s a

rece

iver

by p

rogr

am

min

g S

SP

xCO

N2<

3> (

RC

EN

= 1

)P

EN

bit

= 1

wri

tten

her

e

Dat

a sh

ifte

d in

on

falli

ng

edg

e o

f C

LK

Cle

ared

in s

oftw

are

star

t X

MIT

SE

N =

0

SS

PO

V

SD

Ax

= 0

, SC

Lx =

1w

hile

CP

U

(SS

PxS

TAT

<0

>)

AC

K

Cle

are

d in

sof

twa

reC

lea

red

in s

oftw

are

Set

SS

PxI

F in

terr

upt

at

end

of r

ece

ive

Se

t P b

it (S

SP

xSTA

T<

4>)

and

SS

PxI

F

AC

K f

rom

Mas

ter,

Se

t S

SP

xIF

at e

nd

Set

SS

PxI

F in

terr

upt

at e

nd o

f A

ckno

wle

dge

sequ

ence

Set

SS

PxI

F in

terr

upt

at e

nd o

f A

ckn

ow-

ledg

e se

quen

ce

of r

ecei

ve

Se

t AC

KE

N,

sta

rt A

ckn

ow

ledg

e se

quen

ceS

DA

x =

AC

KD

T =

1

RC

EN

cle

are

dau

tom

atic

ally

RC

EN

= 1

, st

art

ne

xt r

ece

ive

Writ

e to

SS

PxC

ON

2<4>

to s

tart

Ack

now

ledg

e se

quen

ceS

DA

x =

AC

KD

T (

SS

PxC

ON

2<

5>

) =

0

RC

EN

cle

are

dau

tom

atic

ally

AC

KE

Nbegi

n S

tart

con

ditio

n

Cle

ared

in s

oftw

are

SD

Ax

= A

CK

DT

= 0

Last

bit

is s

hifte

d in

to S

SP

xSR

an

dco

nte

nts

are

un

load

ed

into

SS

PxB

UF

Cle

are

d in

softw

are

SS

PO

V is

set

be

caus

eS

SP

xBU

F is

stil

l fu

ll

resp

ond

s to

SS

PxI

F

DS39762F_JP - p.306 2013 Microchip Technology Inc.

Page 307: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.12 ACK シーケンスのタイミング

ACK シーケンスは、ACK シーケンス イネーブルビット ACKEN (SSPxCON2<4>) をセットすると有効になります。このビットをセットすると SCLx ピンが Lowに駆動され、ACK データビットの内容が SDAx ピンに出力されます。ACK を生成したい場合、ACKDT ビットをクリアします。ACK を生成しない場合、ACK シーケンスが開始する前に ACKDT ビットをセットする必要があります。baud レート ジェネレータが 1 ロールオーバー期間 (TBRG) カウントし、SCLx ピンがネゲートされます (High に遷移 )。SCLx ピンが High としてサンプルされた場合 ( クロック アービトレーション )、baud レート ジェネレータは TBRG の期間カウントします。その後 SCLx ピンが Low に駆動されます。続いて ACKEN ビットが自動的にクリアされて baud レート ジェネレータが OFF になり、MSSP モジュールはアイドルに移行します ( 図 20-25)。

20.4.12.1 WCOL ステータスフラグ

ACKシーケンス中にユーザがSSPxBUFに書き込むとWCOL がセットされ、バッファの内容は変化しません( 書き込みは実行されません )。

20.4.13 ストップ条件のタイミング

ストップ シーケンス イネーブルビット PEN(SSPxCON2<2>) をセットすると、送受信終了時にSDAx ピンでストップビットがアサートされます。送受信が完了する 9 番目のクロックの立ち下がりエッジ後、SCLx ラインは Low に保持されます。PEN ビットをセットすると、マスタは SDAx ラインを Low にアサートします。SDAx ラインが Low としてサンプルされると、baud レート ジェネレータが再読み込みされ「0」までカウントダウンします。baud レート ジェネレータがタイムアウトすると、SCLx ピンが High に駆動され、1 TBRG (BRG のロールオーバー カウント ) 後に SDAx ピンがネゲートされます。SCLx が High の間に SDAx ピンが High としてサンプルされると、P ビット (SSPxSTAT<4>) がセットされます。1 TBRG 経過後、PEN ビットがクリアされ、SSPxIF ビットがセットされます ( 図 20-26)。

20.4.13.1 WCOL ステータスフラグ

ストップ シーケンス中にユーザがSSPxBUFに書き込みを実行すると WCOL がセットされ、バッファの内容は変化しません ( 書き込みは実行されません )。

図 20-25: ACK シーケンスの波形

図 20-26: 受信または送信モードのストップ条件

Note: TBRG = baud レート ジェネレータ周期

SDAx

SCLx

SSPxIF set at

Acknowledge sequence starts here,write to SSPxCON2

ACKEN automatically cleared

Cleared in

TBRG TBRG

the end of receive

8

ACKEN = 1, ACKDT = 0

D0

9

SSPxIF

software SSPxIF set at the endof Acknowledge sequence

Cleared insoftware

ACK

SCLx

SDAx

SDAx asserted low before rising edge of clock

Write to SSPxCON2,set PEN

Falling edge of

SCLx = 1 for TBRG, followed by SDAx = 1 for TBRG

9th clock

SCLx brought high after TBRG

Note: TBRG = 1 baud レート ジェネレータ周期

TBRG TBRG

after SDAx sampled high. P bit (SSPxSTAT<4>) is set.

TBRG

to setup Stop condition

ACK

PTBRG

PEN bit (SSPxCON2<2>) is cleared byhardware and the SSPxIF bit is set

2013 Microchip Technology Inc. DS39762F_JP - p.307

Page 308: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.14 スリープ動作

I2Cモジュールはスリープ時でもアドレス /データを受信でき、アドレスが一致した場合または 1 バイトの転送が完了した場合にプロセッサをスリープから復帰させる事ができます(MSSP割り込みを有効にした場合)。

20.4.15 リセットの影響

リセットは MSSP モジュールを無効にし、現在の転送は中止されます。

20.4.16 マルチマスタ モード

マルチマスタ モードでは、スタート / ストップ条件の検出時に生成される割り込みを使ってバスが空いているかどうかを判断できます。ストップ (P) ビットとスタート (S) ビットは、リセット時または MSSP モジュールが無効にされた時にクリアされます。I2C バスの制御権は、P ビット (SSPxSTAT<4>) がセットされた場合、または S ビットと P ビットの両方がクリアされてバスがアイドル状態になった場合に取得できます。バスがビジーの場合、MSSP 割り込みを有効にすると、ストップ条件が発生した時に割り込みが生成されます。

マルチマスタ動作ではバス アービトレーションの必要があるため、SDAx ラインを監視して実際の信号レベルが予測する出力レベルと一致しているかどうかを確認する必要があります。このチェックはハードウェアで行い、結果は BCLxIF ビットに格納されます。

下記のステートではバス アービトレーションに敗れる可能性があります。

• アドレス転送

• データ転送

• スタート条件

• 反復スタート条件

• ACK 条件

20.4.17 マルチマスタ通信、バスコリジョン、バス アービトレーション

マルチマスタ モードは、バス アービトレーションによってサポートされています。マスタがアドレス /データビットを SDAx ピンに出力する際、マスタが出力する値が「1」ならアービトレーションによって SDAxがフローティング High となり、別のマスタは「0」をアサートします。SCLx ピンがフローティング High の間、データは安定している必要があります。SDAx で予測されるデータ値が「1」であるのに、サンプルされた SDAx ピンの値が「0」の場合、バスコリジョンが発生しています。マスタはバスコリジョン割り込みフラグ BCLxIF をセットし、I2C ポートをアイドル状態にリセットします ( 図 20-27)。

送信中にバスコリジョンが発生した場合、送信が停止され、BF フラグがクリアされ、SDAx ラインと SCLxラインがネゲートされ、SSPxBUF への書き込みが可能になります。ユーザがバスコリジョン割り込みサービスルーチンを使う場合、I2C バスが空いていれば、スタート条件をアサートする事で通信を再開できます。

スタート、反復スタート、ストップ、ACK 条件中にバスコリジョンが発生した場合、これらの条件は中止され、SDAx ラインと SCLx ラインがネゲートされ、SSPxCON2レジスタの対応する制御ビットがクリアされます。ユーザがバスコリジョン割り込みサービスルーチンを使う場合、I2C バスが空いていれば、スタート条件をアサートする事で通信を再開できます。

マスタは SDAx ピンと SCLx ピンの監視を続けます。ストップ条件が発生すると、SSPxIF ビットがセットされます。

SSPxBUF に書き込むと、バスコリジョン発生時にトランスミッタがどこまで送信を完了していたかに関わらず、データの先頭ビットから送信が開始します。

マルチマスタ モードでは、スタート / ストップ条件の検出時に生成される割り込みを使ってバスが空いているかどうかを判断できます。I2C バスの制御権は、SSPxSTAT レジスタの P ビットがセットされた場合、またはSビットとPビットの両方がクリアされてバスがアイドル状態になった場合に取得できます。

図 20-27: 送信と ACK のバスコリジョンのタイミング

SDAx

SCLx

BCLxIF

SDAx released

SDAx line pulled lowby another source

Sample SDAx. While SCLx is high,data doesn’t match what is driven

Bus collision has occurred.

Set bus collisioninterrupt (BCLxIF)

by the master.

by master

Data changeswhile SCLx = 0

DS39762F_JP - p.308 2013 Microchip Technology Inc.

Page 309: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.17.1 スタート条件中のバスコリジョン

スタート条件中は、以下の場合にバスコリジョンが発生します。

a) スタート条件の開始時に SDAx または SCLx でLow がサンプルされる ( 図 20-28)

b) SDAx が Low にアサートされる前に SCLx で Lowがサンプルされる ( 図 20-29)

スタート条件中は、SDAx ピンと SCLx ピンの両方を監視します。

SDAx ピンが既に Low の場合、または SCLx ピンが既に Low の場合、以下の全てが実行されます。

• スタート条件を中止する

• BCLxIF フラグをセットする

• MSSP モジュールをアイドル状態にリセットする( 図 20-28)

スタート条件は、SDAx ピンと SCLx ピンのネゲートから開始します。SDAx ピンが High としてサンプルされると、baud レート ジェネレータに SSPxADD<6:0>の内容が読み込まれ、0 になるまでカウントダウンします。SDAx が High の時に SCLx ピンが Low としてサンプルされると、スタート条件中に別のマスタがデータ「1」を駆動しているものと判断し、バスコリジョンが発生します。

上記のBRGカウント中にSDAxピンでLowがサンプルされると BRG はリセットされ、SDAx ラインは BRG のタイムアウトを待たずにアサートされます(図 20-30)。しかし、SDAx ピンで「1」がサンプルされた場合、SDAx ピンは BRG カウントの終了時に Low にアサートされます。次に baud レート ジェネレータに値が再度読み込まれて 0 までカウントダウンします。この間に SCLx ピンで「0」がサンプルされてもバスコリジョンは発生しません。BRG のカウント終了時、SCLx ピンが Low にアサートされます。

図 20-28: スタート条件中のバスコリジョン (SDAx のみ )

Note: スタート条件中にバスコリジョンが問題にならないのは、2 つのバスマスタが全く同じタイミングでスタート条件をアサートする事があり得ないためです。従って、必ずどちらか一方のマスタが他方よりも先に SDAx をアサートします。そのような状態ではバスコリジョンは発生しません。2 つのマスタはスタート条件に続く 初のアドレスでバス アービトレーションを行うためです。アドレスが同じだった場合、続くデータ部分、反復スタート、ストップ条件でアービトレーションが必要です。

SDAx

SCLx

SEN

SDAx sampled low before

SDAx goes low before the SEN bit is set.

S bit and SSPxIF set because

MSSP module reset into Idle state.SEN cleared automatically because of bus collision.

S bit and SSPxIF set because

Set SEN, enable Startcondition if SDAx = 1, SCLx = 1

SDAx = 0, SCLx = 1.

BCLxIF

S

SSPxIF

SDAx = 0, SCLx = 1.

SSPxIF and BCLxIF arecleared in software

SSPxIF and BCLxIF arecleared in software

Set BCLxIF,

Start condition. Set BCLxIF.

2013 Microchip Technology Inc. DS39762F_JP - p.309

Page 310: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 20-29: スタート条件中のバスコリジョン (SCLx = 0)

図 20-30: スタート条件中の SDAx アービトレーションによる BRG リセット

SDAx

SCLx

SENbus collision occurs. Set BCLxIF.SCLx = 0 before SDAx = 0,

Set SEN, enable Startsequence if SDAx = 1, SCLx = 1

TBRG TBRG

SDAx = 0, SCLx = 1

BCLxIF

S

SSPxIF

Interrupt clearedin software

bus collision occurs. Set BCLxIF.SCLx = 0 before BRG time-out,

‘0’ ‘0’

‘0’‘0’

SDAx

SCLx

SEN

Set SLess than TBRG

TBRG

SDAx = 0, SCLx = 1

BCLxIF

S

SSPxIF

S

Interrupts clearedin softwareset SSPxIF

SDAx = 0, SCLx = 1,

SCLx pulled low after BRGtime-out

Set SSPxIF

‘0’

SDAx pulled low by other master.Reset BRG and assert SDAx.

Set SEN, enable Startsequence if SDAx = 1, SCLx = 1

DS39762F_JP - p.310 2013 Microchip Technology Inc.

Page 311: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.17.2 反復スタート条件中のバスコリジョン

反復スタート条件中は、以下の場合にバスコリジョンが発生します。

a) SCLx が Low から High に遷移する時に SDAx でLow がサンプルされる

b) SDAx で Low がアサートされる前に SCLx が Lowに遷移する ( 別のマスタがデータ「1」を送信しようとしている事を示す )

SDAx がユーザによってネゲートされ、ピンが High にフローティングすると、BRG に SSPxADD<6:0> の内容が読み込まれ、0 になるまでカウントダウンします。続いて SCLx ピンがネゲートされ、High がサンプルされると、SDAx ピンがサンプルされます。

この時 SDAx が Low なら、バスコリジョンが発生しています ( すなわち、別のマスタがデータ「0」を送信しようとしています。図 20-31 参照 )。SDAx で High が

サンプルされた場合、BRG に値が再度読み込まれてカウントが始まります。BRG がタイムアウトする前にSDAx が High から Low に遷移した場合、バスコリジョンは発生しません。2 つのマスタが全く同じタイミングで SDAx をアサートする事があり得ないためです。

BRG がタイムアウトする前に SCLx が High から Lowに遷移し、SDAx がまだアサートされていない場合はバスコリジョンが発生します。この場合、反復スタート条件中に別のマスタがデータ「1」を送信しようとしています ( 図 20-32 参照 )。

BRG タイムアウト時に SCLx と SDAx の両方が Highのままの場合、SDAx ピンが Low に駆動され、BRG の再読み込み後にカウントを開始します。カウントが終了すると、SCLx ピンはその状態に関係なく Low に駆動され、反復スタート条件が終了します。

図 20-31: 反復スタート条件中のバスコリジョン ( ケース 1)

図 20-32: 反復スタート条件中のバスコリジョン ( ケース 2)

SDAx

SCLx

RSEN

BCLxIF

S

SSPxIF

Sample SDAx when SCLx goes high.If SDAx = 0, set BCLxIF and release SDAx and SCLx.

Cleared in software

‘0’

‘0’

SDAx

SCLx

BCLxIF

RSEN

S

SSPxIF

Interrupt clearedin software

SCLx goes low before SDAx,set BCLxIF. Release SDAx and SCLx.

TBRG TBRG

‘0’

2013 Microchip Technology Inc. DS39762F_JP - p.311

Page 312: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

20.4.17.3 ストップ条件中のバスコリジョン

ストップ条件中は、以下の場合にバスコリジョンが発生します。

a) SDAxピンがネゲートされてHighフローティングが可能になった後、BRG のタイムアウト後にSDAx で Low がサンプルされる

b) SCLx ピンがネゲートされた後、SDAx が High に遷移する前に SCLx で Low がサンプルされる

ストップ条件は、SDAx の Low アサートから開始します。SDAx で Low がサンプルされると、SCLx ピンをフローティングにする事ができます。SCLx ピンで

Highがサンプルされると (クロック アービトレーション )、baud レート ジェネレータに SSPxADD<6:0> の値が読み込まれ、0 になるまでカウントダウンします。BRG のタイムアウト後、SDAx がサンプルされます。SDAx で Low がサンプルされた場合、バスコリジョンが発生しています。これは、別のマスタがデータ「0」を駆動しようとしているためです ( 図 20-33)。SDAxのフローティング High が許可される前に SCLx ピンで Low がサンプルされると、バスコリジョンが発生します。この場合も、別のマスタがデータ「0」を駆動しようとしています ( 図 20-34)。

図 20-33: ストップ条件中のバスコリジョン ( ケース 1)

図 20-34: ストップ条件中のバスコリジョン ( ケース 2)

SDAx

SCLx

BCLxIF

PEN

P

SSPxIF

TBRG TBRG TBRG

SDAx asserted low

SDAx sampledlow after TBRG,set BCLxIF

‘0’

‘0’

SDAx

SCLx

BCLxIF

PEN

P

SSPxIF

TBRG TBRG TBRG

Assert SDAx SCLx goes low before SDAx goes high,set BCLxIF

‘0’

‘0’

DS39762F_JP - p.312 2013 Microchip Technology Inc.

Page 313: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 20-4: I2C™ の動作に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR2 OSCFIF CMIF ETHIF r BCL1IF - TMR3IF CCP2IF 71

PIE2 OSCFIE CMIE ETHIE r BCL1IE - TMR3IE CCP2IE 71

IPR2 OSCFIP CMIP ETHIP r BCL1IP - TMR3IP CCP2IP 71

PIR3 SSP2IF(1) BCL2IF(1) RC2IF TX2IF TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE(1) BCL2IE(1) RC2IE TX2IE TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP(1) BCL2IP(1) RC2IP TX2IP TMR4IP CCP5IP CCP4IP CCP3IP 71

TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 71

TRISD TRISD7 TRISD6(1) TRISD5(1) TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 71

SSP1BUF MSSP1 受信バッファ / 送信レジスタ 70

SSP1ADD MSSP1 アドレスレジスタ (I2C™ スレーブモード )、MSSP1 baud レート再読み込みレジスタ (I2C マスタモード )

70

SSP1CON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 70

SSP1CON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 70

GCEN ACKSTAT ADMSK5(2) ADMSK4(2) ADMSK3(2) ADMSK2(2) ADMSK1(2) SEN 70

SSP1STAT SMP CKE D/A P S R/W UA BF 70

SSP2BUF MSSP2 受信バッファ / 送信レジスタ 73

SSP2ADD MSSP2 アドレスレジスタ (I2C スレーブモード )、MSSP2 baud レート再読み込みレジスタ (I2C マスタモード )

73

SSP2CON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 73

SSP2CON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 73

GCEN ACKSTAT ADMSK5(2) ADMSK4(2) ADMSK3(2) ADMSK2(2) ADMSK1(2) SEN 73

SSP2STAT SMP CKE D/A P S R/W UA BF 73

凡例 : - = 未実装ビット、「0」として読み出されます。r = 予約済みです。網掛けの部分は I2C™ モードの MSSP モジュールでは使いません。

Note 1: これらのビットを利用できるのは 100 ピンデバイスのみです。それ以外のデバイスには実装されておらず、「0」として読み出されます。

2: I2C™ スレーブモードで使う代替ビット定義です。

2013 Microchip Technology Inc. DS39762F_JP - p.313

Page 314: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.314 2013 Microchip Technology Inc.

Page 315: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.0 EUSART (Enhanced Universal Synchronous Asynchronous Receiver Transmitter)

EUSART (Enhanced Universal Synchronous AsynchronousReceiver Transmitter) モジュールは、2 つのシリアル I/Oモジュールのうちの 1 つです。(EUSART はシリアル通信インターフェイス (SCI) とも呼びます。) EUSART は、CRT端末やパーソナル コンピュータ等の周辺機器との通信できる全二重非同期通信系として設定できます。また、A/D または D/A IC、シリアル EEPROM 等の周辺デバイスとの通信が可能な、半二重同期システムとしても設定できます。

本モジュールは、baud レートの自動検出と校正、同期ブレーク受信による自動復帰、12 ビットのブレーク文字送信等の追加機能も実装しています。これらの機能は、ローカル インターコネクト ネットワークバス(LIN/J2602 バス ) システムでの使用に 適です。

PIC18F97J60ファミリの64ピンデバイスは、EUSART1という名前で EUSART モジュールを 1 つ搭載しています。80 ピン /100 ピンデバイスは、2 つの独立したEUSART モジュール、EUSART1 と EUSART2 を搭載しています。これらのモジュールは、以下のモードに設定できます。

• 以下の機能を備えた非同期 ( 全二重 ) モード :

- 文字受信による自動復帰

- 自動 baud レート校正

- 12 ビットブレーク文字送信

• 同期モード – クロック極性を選択可能なマスタ( 半二重 )

• 同期モード – クロック極性を選択可能なスレーブ( 半二重 )

EUSART1 および EUSART2 のピンは、それぞれPORTC (RC6/TX1/CK1 と RC7/RX1/DT1) と PORTG(RG1/TX2/CK2とRG2/RX2/DT2)の機能と多重化されています。これらのピンを EUSART で使うには、以下の設定が必要です。

• EUSART1 に対する設定 :

- SPEN ビット (RCSTA1<7>) をセット (= 1)

- TRISC<7> ビットをセット (= 1)

- 非同期モードと同期マスタモードの場合TRISC<6> ビットをクリア (= 0)

- 同期スレーブモードの場合 TRISC<6> ビットをセット (= 1)

• EUSART2 に対する設定 :

- SPEN ビット (RCSTA2<7>) をセット (= 1)

- TRISG<2> ビットをセット (= 1)

- 非同期モードと同期マスタモードの場合TRISG<1> ビットをクリア (= 0)

- 同期スレーブモードの場合 TRISG<1> ビットをセット (= 1)

各 EUSART モジュールの動作は、以下の 3 つのレジスタで制御します。

• TXSTAx ( 送信ステータス / 制御 )

• RCSTAx ( 受信ステータス / 制御 )

• BAUDCONx (baud レート制御 )

これらのレジスタの詳細は、レジスタ 21-1、レジスタ 21-2、レジスタ 21-3 に記載します。

Note: EUSARTx の制御により、ピン設定は必要に応じて入力から出力に自動的に変更されます。

Note: このセクション全体を通して、特定のEUSART モジュールに関連するレジスタ名とビット名は、個々のモジュール番号の代わりに「x」を使った総称名で表します。従って、「RCSTAx」は EUSART1 またはEUSART2 のいずれかに対応する受信ステータス レジスタを表します。

2013 Microchip Technology Inc. DS39762F_JP - p.315

Page 316: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 21-1: TXSTAx: 送信ステータス / 制御レジスタ x

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

CSRC TX9 TXEN(1) SYNC SENDB BRGH TRMT TX9D

bit 7 bit 0

凡例 :

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

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

bit 7 CSRC: クロック源選択ビット

非同期モード : ドントケア

同期モード : 1 = マスタモード ( クロックを BRG によって内部で生成 )0 = スレーブモード ( 外部クロック源を使う )

bit 6 TX9: 9 ビット送信イネーブルビット

1 = 9 ビット送信を選択する 0 = 8 ビット送信を選択する

bit 5 TXEN: 送信イネーブルビット (1)

1 = 送信を有効にする0 = 送信を無効にする

bit 4 SYNC: EUSARTx モード選択ビット

1 = 同期モード 0 = 非同期モード

bit 3 SENDB: ブレーク文字送信ビット

非同期モード : 1 = 次の送信で同期ブレークを送信する ( 完了時にハードウェアによってクリア )0 = 同期ブレークの送信が完了している

同期モード : ドントケア

bit 2 BRGH: 高 baud レート選択ビット

非同期モード : 1 = 高速 0 = 低速

同期モード : このモードでは未使用

bit 1 TRMT: 送信シフトレジスタ ステータスビット

1 = TSR がエンプティである 0 = TSR がフルである

bit 0 TX9D: 送信データの 9 ビット目

アドレス / データビットまたはパリティビットとして使える

Note 1: 同期モードでは、SREN/CREN の設定が TXEN よりも優先されます。

DS39762F_JP - p.316 2013 Microchip Technology Inc.

Page 317: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 21-2: RCSTAx: 受信ステータス / 制御レジスタ x

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

SPEN RX9 SREN CREN ADDEN FERR OERR RX9D

bit 7 bit 0

凡例 :

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

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

bit 7 SPEN: シリアルポート イネーブルビット

1 = シリアルポートを有効にする (RXx/DTx と TXx/CKx ピンをシリアルポート ピンに設定する )0 = シリアルポートを無効にする ( リセットに保持する )

bit 6 RX9: 9 ビット受信イネーブルビット

1 = 9 ビット受信を選択する 0 = 8 ビット受信を選択する

bit 5 SREN: シングル受信イネーブルビット

非同期モード : ドントケア

同期モード - マスタ : 1 = シングル受信を有効にする0 = シングル受信を無効にする このビットは受信完了後にクリアされます。

同期モード - スレーブ : ドントケア

bit 4 CREN: 連続受信イネーブルビット

非同期モード : 1 = レシーバを有効にする0 = レシーバを無効にする

同期モード : 1 = イネーブルビット CREN がクリアされるまで連続受信を有効にする (CREN の設定が SREN よ

り優先される ) 0 = 連続受信を無効にする

bit 3 ADDEN: アドレス検出イネーブルビット

9 ビット非同期モード (RX9 = 1) の場合 : 1 = アドレス検出を有効にし、割り込みを有効にする。RSR<8> がセットされたら受信バッファに

転送する0 = アドレス検出を無効にする。全てのバイトが受信され、9 ビット目はパリティビットとして使える

9 ビット非同期モード (RX9 = 0の場合 : ドントケア

bit 2 FERR: フレーミング エラービット

1 = フレーミング エラーあり (RCREGx レジスタを読み出し、次の有効なバイトを受信する事で更新できる )

0 = フレーミング エラーなし

bit 1 OERR: オーバーラン エラービット

1 = オーバーラン エラーあり (CREN ビットをクリアする事でクリアできる ) 0 = オーバーラン エラーなし

bit 0 RX9D: 受信データの 9 ビット目

アドレス / データビットまたはパリティビットとして使える。ユーザ ファームウェアによる計算が必要である

2013 Microchip Technology Inc. DS39762F_JP - p.317

Page 318: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 21-3: BAUDCONx: baud レート制御レジスタ x

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

ABDOVF RCIDL RXDTP TXCKP BRG16 — WUE ABDEN

bit 7 bit 0

凡例 :

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

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

bit 7 ABDOVF: 自動 baud レート アクイジション ロールオーバー ステータスビット

1 = 自動 baud レート検出モードで BRG のロールオーバーが発生した ( ソフトウェアによるクリアが必要である )

0 = BRG のロールオーバーは発生していない

bit 6 RCIDL: 受信動作アイドル ステータスビット

1 = 受信動作がアイドルである0 = 受信動作がアクティブである

bit 5 RXDTP: 受信データ極性選択ビット

非同期モード : 1 = 受信データ (RXx) を反転する。アイドル状態を Low レベルに設定する0 = 受信データ (RXx) を反転しない。アイドル状態を High レベルに設定する

同期モード : 1 = データ (DTx) を反転する。アイドル状態を Low レベルに設定する0 = データ (DTx) を反転しない。アイドル状態を High レベルに設定する

bit 4 TXCKP: クロック / データ極性選択ビット

非同期モード : 1 = 送信データ (TXx) を反転する。アイドル状態を Low レベルに設定する0 = 送信データ (TXx) を反転しない。アイドル状態を High レベルに設定する

同期モード : 1 = クロック (CKx) のアイドル状態を High レベルに設定する0 = クロック (CKx) のアイドル状態を Low レベルに設定する

bit 3 BRG16: 16 ビット baud レート レジスタ イネーブルビット

1 = 16 ビット baud レート ジェネレータ - SPBRGHx と SPBRGx を使う0 = 8ビットbaudレート ジェネレータ - SPBRGxのみを使う。SPBRGHxの値は無視する(互換モード)

bit 2 未実装 :「0」として読み出し

bit 1 WUE: 復帰イネーブルビット

非同期モード : 1 = EUSARTx は RXx ピンのサンプリングを継続する。割り込みは立ち下がりエッジで発生し、次

の立ち上がりエッジでこのビットはハードウェアによってクリアされる0 = RXx ピンを監視しない、または立ち上がりエッジが検出された

同期モード : このモードでは未使用

bit 0 ABDEN: 自動 baud レート検出イネーブルビット

非同期モード : 1 = 次の文字で baud レート計測を有効にする。同期フィールド (55h) を受信する必要がある。完了

時にハードウェアによってクリアされる0 = baud レート計測を無効にする、または計測が完了した

同期モード : このモードでは未使用

DS39762F_JP - p.318 2013 Microchip Technology Inc.

Page 319: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.1 baud レート ジェネレータ (BRG)

BRG は、EUSARTx の非同期および同期モードの両方をサポートする、8 ビットまたは 16 ビットの専用ジェネレータです。既定値では BRG は 8 ビットモードで動作します。BRG16 ビット (BAUDCONx<3>) をセットすると、16 ビットモードで動作します。

フリーランニング タイマの周期は SPBRGHx:SPBRGxレジスタペアによって制御します。非同期モードでは、BRGH (TXSTAx<2>) および BRG16 (BAUDCONx<3>)ビットも baud レートを制御します。同期モードでは、BRGH は無視されます。表 21-1 に、マスタモード ( クロックを内部で生成するモード ) のみに適用される、EUSARTx の各種モードに対する baud レートの計算式を示します。

目標 baud レートと FOSC から、表 21-1 の式を使って、SPBRGHx:SPBRGx レジスタに設定する も近い整数値を計算できます。その値から baud レートの誤差を求められます。式 21-1 に計算例を示します。表 21-2 に、各種非同期モードにおける代表的なbaudレートと誤差を示します。baud レート誤差の低減が必要な場合、ま

たは高速のオシレータ周期から低速のbaudレートを実現する場合、高 baud レート (BRGH = 1) を選択するか、16ビットのBRGを使った方が有利な場合があります。

SPBRGHx:SPBRGxレジスタペアに新しい値を書き込むと、BRG タイマがリセット ( クリア ) されます。これにより、BRG はタイマ オーバーフローを待たずに新しい baud レートを出力できます。

21.1.1 電力管理モードにおける動作

目標 baud レートの生成にはデバイスクロックを使います。いずれかの電力管理モードに移行した場合、新しいクロック源はそれまでと異なる周波数で動作している可能性があります。その場合、SPBRGx レジスタペアの値に調整が必要になる事があります。

21.1.2 サンプリング

RXxピン (RC7/RX1/DT1またはRG2/RX2/DT2のいずれか ) のデータを多数決検出回路によって 3 回サンプリングして、High/Low いずれのレベルにあるかを判断します。

表 21-1: baud レートの計算式

コンフィグレーション ビットBRG/EUSARTx のモード baud レートの計算式

SYNC BRG16 BRGH

0 0 0 8 ビット / 非同期 FOSC/[64 (n + 1)]

0 0 1 8 ビット / 非同期FOSC/[16 (n + 1)]

0 1 0 16 ビット / 非同期

0 1 1 16 ビット / 非同期

FOSC/[4 (n + 1)]1 0 x 8 ビット / 同期

1 1 x 16 ビット / 同期

凡例 : x = ドントケア、n = SPBRGHx:SPBRGx レジスタペアの値

2013 Microchip Technology Inc. DS39762F_JP - p.319

Page 320: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

式 21-1: baud レート誤差の計算

表 21-2: baud レート ジェネレータに関連するレジスタ

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

TXSTAx CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 71

RCSTAx SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 71

BAUDCONx ABDOVF RCIDL RXDTP TXCKP BRG16 - WUE ABDEN 72

SPBRGHx EUSARTx baud レート ジェネレータ レジスタ上位バイト 72

SPBRGx EUSARTx baud レート ジェネレータ レジスタ下位バイト 71

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は BRG では使いません。

FOSC = 16 MHz、目標 baud レート = 9600、非同期モード、8 ビット BRG のデバイスの場合 : 目標 baud レート = FOSC/(64 ([SPBRGHx:SPBRGx] + 1)) SPBRGHx:SPBRGx について解くと :

X = ((FOSC/ 目標 baud レート )/64) - 1= ((16000000/9600)/64) - 1 = [25.042] = 25

baud レートの計算値=16000000/(64 (25 + 1)) = 9615

誤差 = (baud レートの計算値 - 目標 baud レート )/ 目標 baud レート= (9615 - 9600)/9600 = 0.16%

DS39762F_JP - p.320 2013 Microchip Technology Inc.

Page 321: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 21-3: 各種非同期モードにおける baud レート

baudレート

(K)

SYNC = 0、BRG16 = 0、BRGH = 0

FOSC = 41.667 MHz FOSC = 31.25 MHz FOSC = 25.000 MHz FOSC = 20.833 MHz

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

0.3 — — — — — — — — — — — —

1.2 — — — — — — — — — 1.271 5.96 255

2.4 2.543 5.96 255 2.405 0.22 202 2.396 -0.15 162 2.393 -0.27 135

9.6 9.574 -0.27 67 9.574 -0.27 50 9.527 -0.76 40 9.574 -0.27 33

19.2 19.148 -0.27 33 19.531 1.73 24 19.531 1.73 19 19.147 -0.27 16

57.6 59.186 2.75 10 61.035 5.96 7 55.804 -3.12 6 54.253 -5.81 5

115.2 108.508 -5.81 5 122.070 5.96 3 130.208 13.03 2 108.505 -5.81 2

baudレート

(K)

SYNC = 0、BRG16 = 0、BRGH = 0

FOSC = 13.889 MHz FOSC = 6.250 MHz FOSC = 4.167 MHz

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

0.3 — — — — — — 0.300 0.01 216

1.2 1.198 -0.08 180 1.206 0.47 80 1.206 0.48 53

2.4 2.411 0.47 89 2.382 -0.76 40 2.411 0.48 26

9.6 9.435 -1.71 22 9.766 1.73 9 9.301 -3.11 6

19.2 19.279 2.75 10 19.531 1.73 4 21.703 13.04 2

57.6 54.254 -5.81 3 48.828 -15.23 1 65.109 13.04 0

115.2 108.508 -5.81 1 97.656 -15.23 0 65.109 -43.48 0

baudレート

(K)

SYNC = 0、BRG16 = 0、BRGH = 1

FOSC = 41.667 MHz FOSC = 31.25 MHz FOSC = 25.000 MHz FOSC = 20.833 MHz

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

0.3 — — — — — — — — — — — —

1.2 — — — — — — — — — — — —

2.4 — — — — — — — — — — — —

9.6 10.172 5.96 255 9.621 0.22 202 9.586 -0.15 162 9.573 -0.27 135

19.2 19.148 -0.27 135 19.148 -0.27 101 19.290 0.47 80 19.147 -0.27 67

57.6 57.871 0.47 44 57.445 -0.27 33 57.870 0.47 26 56.611 -1.72 22

115.2 113.226 -1.71 22 114.890 -0.27 16 111.607 -3.12 13 118.369 2.75 10

baudレート

(K)

SYNC = 0、BRG16 = 0、BRGH = 1

FOSC = 13.889 MHz FOSC = 6.250 MHz FOSC = 4.167 MHz

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

0.3 — — — — — — — — —

1.2 — — — — — — 1.200 0.01 216

2.4 — — — 2.396 -0.15 162 2.389 -0.44 108

9.6 9.645 0.47 89 9.527 -0.76 40 9.645 0.48 26

19.2 19.290 0.47 44 19.531 1.73 19 18.603 -3.11 13

57.6 57.871 0.47 14 55.804 -3.12 6 52.088 -9.57 4

115.2 108.508 -5.81 7 130.208. 13.03 2 130.219 13.04 1

2013 Microchip Technology Inc. DS39762F_JP - p.321

Page 322: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

baudレート

(K)

SYNC = 0、BRG16 = 1、BRGH = 0

FOSC = 41.667 MHz FOSC = 31.25 MHz FOSC = 25.000 MHz FOSC = 20.833 MHz

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

0.3 0.300 0.00 8680 0.300 0.00 6509 0.300 0.01 5207 0.300 0.00 4339

1.2 1.200 0.01 2169 1.200 -0.02 1627 1.200 0.01 1301 1.200 0.00 1084

2.4 2.400 0.01 1084 2.399 -0.02 813 2.400 0.01 650 2.398 -0.09 542

9.6 9.609 0.10 270 9.621 0.22 202 9.586 -0.15 162 9.574 -0.27 135

19.2 19.148 -0.27 135 19.148 -0.27 101 19.290 0.47 80 19.148 -0.27 67

57.6 57.871 0.47 44 57.444 -0.27 33 57.870 0.47 26 56.611 -1.72 22

115.2 113.226 -1.71 22 114.890 -0.27 16 111.607 -3.12 13 118.369 2.75 10

baudレート

(K)

SYNC = 0、BRG16 = 1、BRGH = 0

FOSC = 13.889 MHz FOSC = 6.250 MHz FOSC = 4.167 MHz

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

0.3 0.300 -0.02 2893 0.300 0.01 1301 0.300 0.01 867

1.2 1.201 0.05 722 1.198 -0.15 325 1.200 0.01 216

2.4 2.398 -0.08 361 2.396 -0.15 162 2.389 -0.44 108

9.6 9.645 0.47 89 9.527 -0.76 40 9.646 0.48 26

19.2 19.290 0.47 44 19.531 1.73 19 18.603 -3.11 13

57.6 57.871 0.47 14 55.804 -3.12 6 52.088 -9.57 4

115.2 108.508 -5.81 7 130.208 13.03 2 130.218 13.04 1

baudレート

(K)

SYNC = 0、BRG16 = 1、BRGH = 1または SYNC = 1、BRG16 = 1

FOSC = 41.667 MHz FOSC = 31.25 MHz FOSC = 25.000 MHz FOSC = 20.833 MHz

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

0.3 0.300 0.00 34722 0.300 0.00 26041 0.300 0.00 20832 0.300 0.00 17360

1.2 1.200 0.00 8680 1.200 0.01 6509 1.200 0.01 5207 1.200 0.00 4339

2.4 2.400 0.01 4339 2.400 0.01 3254 2.400 0.01 2603 2.400 0.00 2169

9.6 9.601 0.01 1084 9.598 -0.02 813 9.601 0.01 650 9.592 -0.09 542

19.2 19.184 -0.08 542 19.195 -0.02 406 19.172 -0.15 325 19.219 0.10 270

57.6 57.551 -0.08 180 57.445 -0.27 135 57.339 -0.45 108 57.869 0.47 89

115.2 115.742 0.47 89 114.890 -0.27 67 115.741 0.47 53 115.739 0.47 44

baudレート

(K)

SYNC = 0、BRG16 = 1、BRGH = 1または SYNC = 1、BRG16 = 1

FOSC = 13.889 MHz FOSC = 6.250 MHz FOSC = 4.167 MHz

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

実際の

レート(K)

%誤差

SPBRGの値

(10 進数 )

0.3 0.300 0.00 11573 0.300 0.01 5207 0.300 -0.01 3472

1.2 1.200 -0.02 2893 1.200 0.01 1301 1.200 0.01 867

2.4 2.400 -0.02 1446 2.400 0.01 650 2.400 0.01 433

9.6 9.592 -0.08 361 9.586 -0.15 162 9.557 -0.44 108

19.2 19.184 -0.08 180 19.290 0.47 80 19.292 0.48 53

57.6 57.870 0.47 59 57.870 0.47 26 57.875 0.48 17

115.2 115.742 0.47 29 111.607 -3.12 13 115.750 0.48 8

表 21-3: 各種非同期モードにおける baud レート ( 続き )

DS39762F_JP - p.322 2013 Microchip Technology Inc.

Page 323: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.1.3 自動 baud レート検出

EUSARTxモジュールは baudレートの自動検出 / 校正をサポートしています。この機能は、非同期モードでWUE ビットがクリアされている場合のみ有効です。

スタートビットを受信し ABDEN ビットがセットされるたびに自動baudレートの計測シーケンス (図 21-1)が開始します。計算は平均値です。

自動 baud レート検出 (ABD) モードでは、BRG へのクロックが逆方向です。BRG が入力 RXx 信号にクロックを供給するのではなく、RXx 信号が BRG のタイミングを生成します。ABD モードでは、内部の baud レート ジェネレータを、入力シリアルバイト ストリームのビット周期タイミングを生成するカウンタとして使います。

ABDEN ビットがセットされると、ステートマシンはBRG をクリアしてスタートビットを待機します。自動baud レート検出では、正確なビットレートを計算するために、値が 55h (ASCII の「U」、LIN/J2602 バスの同期文字でもある)のバイトを受信する必要があります。Low ビット時間と High ビット時間の両方を計測するため、入力信号の非対称性による影響を 小限に抑えられます。スタートビットの受信後、あらかじめ選択したクロック源により、RXx の 初の立ち上がりエッジから SPBRGx のカウントアップを開始します。RXxピンで 8 ビットを受信した時点、つまり 5 番目の立ち上がりエッジで、SPBRGHx:SPBRGx レジスタペアには正確な BRG 周期を合計した累積値が格納されています。5 番目のエッジ ( ストップビットに相当 ) が検出された時点で、ABDEN ビットは自動的にクリアされます。

BRGでロールオーバー(FFFFhから0000hへのオーバーフロー ) が発生した場合、このイベントは ABDOVF ステータスビット(BAUDCONx<7>)にトラップされます。ステータスビットは BRG のロールオーバーによってハードウェアでセットされ、ユーザがソフトウェアでセットまたはクリアできます。ABD モードはロールオーバー イベントの発生後アクティブな状態を保ち、ABDEN ビットはセットされたままです ( 図 21-2)。

baud レート周期の校正時、BRG レジスタは、あらかじめ設定されたクロックレートの 1/8 でクロック供給されます。BRG クロックは、BRG16 ビットと BRGHビットで設定される事に注意してください。BRG16ビットの設定に関わらず、SPBRGx と SPBRGHx の両方を 16 ビットのカウンタとして使います。これによって、ユーザは SPBRGHx レジスタの 00h を確認する事で、8 ビットモードでキャリーが発生していない事を検証できます。BRG のカウンタクロックのレートは、表 21-4 を参照してください。

ABD シーケンスの実行中、EUSARTx のステートマシンはアイドルに保持されます。RXx で 5 番目の立ち上がりエッジが検出されると、RCxIF 割り込みがセットされます。RCxIF割り込みをクリアするには、RCREGxの値を読み出す必要があります。RCREGx の内容は破棄します。

表 21-4: BRG カウンタの クロックレート

21.1.3.1 ABD と EUSARTx の送信

ABDアクイジションの実行中はBRGクロックの方向が反転するため、ABD モードでは EUSARTx のトランスミッタを使えません。すなわち、ABDEN ビットがセットされている間は TXREGx に書き込みできません。送信シーケンスの実行中に ABDEN ビットがセットされないようにする事も必要です。これを怠ると、EUSARTx の予期せぬ動作が生じる恐れがあります。

Note 1: ABDEN ビットと WUE ビットを両方セットした場合、自動baudレート検出はブレーク文字直後のバイトで実行されます。

2: 入力文字の baud レートが、選択した BRGクロック源のレンジ内であるかどうかの判断は、ユーザに委ねられています。オシレータ周波数と EUSARTx の baud レートの組み合わせによっては、ビットエラー率のために使えないものがあります。自動baud レート検出機能を使う場合、システム全体のタイミングと通信の baudレートを考慮する必要があります。

BRG16 BRGH BRG のカウンタクロック

0 0 FOSC/512

0 1 FOSC/128

1 0 FOSC/128

1 1 FOSC/32

Note: ABD シーケンスでは、BRG16 の設定に関係なく SPBRGx と SPBRGHx の両方を 16 ビットカウンタとして使います。

2013 Microchip Technology Inc. DS39762F_JP - p.323

Page 324: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 21-1: baud レートの自動計算

図 21-2: BRG のオーバーフロー シーケンス

BRG Value

RXx pin

ABDEN bit

RCxIF bit

Bit 0 Bit 1

(Interrupt)

ReadRCREGx

BRG Clock

Start

Auto-ClearedSet by User

XXXXh 0000h

Edge #1

Bit 2 Bit 3Edge #2

Bit 4 Bit 5Edge #3

Bit 6 Bit 7Edge #4

001Ch

Note: ABD シーケンスを実行するには、EUSARTx モジュールを非同期モードに設定し、WUE = 0とする必要があります。

SPBRGx XXXXh 1Ch

SPBRGHx XXXXh 00h

Edge #5

Stop Bit

Start Bit 0

XXXXh 0000h 0000h

FFFFh

BRG Clock

ABDEN bit

RXx pin

ABDOVF bit

BRG Value

DS39762F_JP - p.324 2013 Microchip Technology Inc.

Page 325: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.2 EUSARTx 非同期モード

非同期モードの動作は、SYNC ビット (TXSTAx<4>) をクリアする事で選択します。このモードで EUSARTxは標準の非ゼロ復帰 (NRZ) フォーマット (1x スタートビット、8 または 9x データビット、1x ストップビット ) を使います。 も一般的なデータ フォーマットは8 ビットです。内蔵の専用 8 ビット /16 ビット baudレート ジェネレータを使って、オシレータから標準baud レート周波数を生成できます。

EUSARTx は LSb から順に送受信します。EUSARTx モジュールのトランスミッタとレシーバは機能的には独立していますが、同じデータ フォーマットとbaudレートを使います。baudレート ジェネレータはBRGHビットと BRG16 ビット (TXSTAx<2> と BAUDCONx<3>)に応じて、x16 または x64 いずれかのビットシフトレートのクロックを生成します。パリティはハードウェアではサポートされていませんが、ソフトウェアによって実装し、9 番目のデータビットに格納できます。

TXCKP (BAUDCONx<4>)ビットとRXDTP (BAUDCONx<5>)ビットにより、TXx 信号と RXx 信号を反転 ( 極性反転 )できます。TTL と RS-232 レベル間で信号をバッファリングするデバイスも信号を反転します。TXCKP および RXDTP ビットをセットすると、信号を反転せずにバッファリングする回路が使えます。

非同期モードで動作する場合、EUSARTx モジュールは以下の重要な要素で構成されます。

• baud レート ジェネレータ

• サンプリング回路

• 非同期トランスミッタ

• 非同期レシーバ

• 同期ブレーク文字による自動復帰

• 12 ビットのブレーク文字送信

• 自動 baud レート検出

21.2.1 EUSARTx 非同期トランスミッタ

図 21-3 に、EUSARTx トランスミッタのブロック図を示します。トランスミッタの中核となるのが送信 ( シリアル ) シフトレジスタ (TSR) です。シフトレジスタには、読み書き送信バッファレジスタ TXREGx からデータを入力します。TXREGx レジスタにはソフトウェアでデータを書き込みます。前回書き込まれたデータのストップビットが送信されるまで、TSR レジスタに新しいデータは転送されません。ストップビットが送信されると、TXREGx レジスタから TSR に新しいデータが転送されます ( 送信すべきデータが存在する場合 )。

TXREGx レジスタは、TSR レジスタへのデータ転送が完了すると (1 TCY で完了 ) エンプティになり、TXxIFフラグビットがセットされます。この割り込みは、割り込みイネーブルビットTXxIEをセットまたはクリアする事で有効または無効にできます。TXxIF は、TXxIEの状態に関係なくセットされ、ソフトウェアではクリアできません。TXxIF は、TXREGx の書き込みによっても即座にはクリアされず、読み込み命令後 2 番目の命令で有効になります。TXREGx への書き込み直後にTXxIF をポーリングしても、戻り値は無効です。

TXxIF が TXREGx レジスタのステータスを示す一方、TRMT ビット (TXSTAx<1>) は TSR レジスタのステータスを示します。TRMT は TSR レジスタがエンプティになるとセットされる、読み出し専用のビットです。このビットには割り込みロジックが関連付けられていないため、TSR レジスタがエンプティであるかどうかを判断するには、このビットをポーリングする必要があります。

非同期送信を設定するには、以下の手順を実行します。

1. 適切なbaudレートに合わせて、SPBRGHx:SPBRGxレジスタを初期化する。必要に応じて BRGH および BRG16 ビットをセットまたはクリアして、目標 baud レートに設定する。

2. SYNC ビットをクリアし、SPEN ビットをセットして非同期シリアルポートを有効にする。

3. TXx ピンからの信号を反転する場合、TXCKP ビットをセットする。

4. 割り込みを使う場合、イネーブルビット TXxIE をセットする。

5. 9 ビット送信を使う場合、送信ビット TX9 をセットする。このビットはアドレス / データとして使える。

6. TXENビットをセットして (TXxIFビットもセットされる )、送信を有効にする。

7. 9 ビット送信を選択した場合、TX9D ビットに 9ビット目を読み込む必要がある。

8. TXREGx レジスタにデータを読み込む( 送信を開始 )。

9. 割り込みを使う場合、INTCON レジスタの GIE およびPEIEビット (INTCON<7:6>)がセットされている事を確認する。

Note 1: TSRレジスタはデータメモリに割り当てられていないため、ユーザからはアクセスできません。

2: イネーブルビットTXENをセットすると、フラグビット TXxIF がセットされます。

2013 Microchip Technology Inc. DS39762F_JP - p.325

Page 326: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 21-3: EUSARTx 送信のブロック図

図 21-4: 非同期送信、TXCKP = 0 (txx を反転しない )

図 21-5: 非同期送信 ( 連続 )、TXCKP = 0 (txx を反転しない )

TXxIFTXxIE

Interrupt

TXEN Baud Rate CLK

SPBRGx

Baud Rate Generator TX9D

MSb LSb

Data Bus

TXREGx Register

TSR Register

(8) 0

TX9

TRMT SPEN

TXx pin

Pin Bufferand Control

8

SPBRGHxBRG16

TXCKP

Word 1

Word 1Transmit Shift Reg

Start bit bit 0 bit 1 bit 7/8

Write to TXREGx

BRG Output(Shift Clock)

TXx (pin)

TXxIF bit(Transmit Buffer

Reg. Empty Flag)

TRMT bit(Transmit Shift

Reg. Empty Flag)

1 TCY

Stop bit

Word 1

Transmit Shift Reg.

Write to TXREGx

BRG Output(Shift Clock)

TXx (pin)

TXxIF bit(Interrupt Reg. Flag)

TRMT bit(Transmit Shift

Reg. Empty Flag)

Word 1 Word 2

Word 1 Word 2

Stop bit Start bit

Transmit Shift Reg.

Word 1 Word 2

bit 0 bit 1 bit 7/8 bit 0

Note: このタイミング チャートでは、連続する 2 つの送信を示します。

1 TCY

1 TCY

Start bit

DS39762F_JP - p.326 2013 Microchip Technology Inc.

Page 327: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 21-5: 非同期送信に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR3 SSP2IF BCL2IF RC2IF TX2IF(1) TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE TX2IE(1) TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP BCL2IP RC2IP TX2IP(1) TMR4IP CCP5IP CCP4IP CCP3IP 71

RCSTAx SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 71

TXREGx EUSARTx 送信レジスタ 71

TXSTAx CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 71

BAUDCONx ABDOVF RCIDL RXDTP TXCKP BRG16 - WUE ABDEN 72

SPBRGHx EUSARTx baud レート ジェネレータ レジスタ上位バイト 72

SPBRGx EUSARTx baud レート ジェネレータ レジスタ下位バイト 73

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は非同期送信では使いません。

Note 1: これらのビットは 80 ピン /100 ピンデバイスにのみ実装されています。それ以外のデバイスでは未実装で「0」として読み出されます。

2013 Microchip Technology Inc. DS39762F_JP - p.327

Page 328: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.2.2 EUSARTx 非同期レシーバ

図 21-6 に、レシーバのブロック図を示します。RXxピンで受信したデータでデータ復元ブロックを駆動します。データ復元ブロックの実体は、baud レートの16 倍速で動作する高速シフタです。一方、メイン受信シリアルシフタはビットレートまたは FOSC で動作します。通常、このモードはRS-232システムで使います。

RXDTP (BAUDCON<5>) ビットにより、RXx 信号を反転 ( 極性反転 ) できます。RS-232 から TTL レベルへの信号をバッファリングするデバイスも信号を反転させます (RS-232 = 正の場合、TTL = 0)。RXDTP ビットをセットしてRXxピンのデータの極性を反転する事で、信号を反転せずにバッファリングする回路が使えます。

非同期受信を設定するには、以下の手順を実行します。

1. 適切なbaudレートに合わせて、SPBRGHx:SPBRGxレジスタを初期化する。必要に応じて BRGH および BRG16 ビットをセットまたはクリアして、目標 baud レートに設定する。

2. SYNC ビットをクリアし、SPEN ビットをセットして非同期シリアルポートを有効にする。

3. RXx ピンの信号を反転する場合、RXDTP ビットをセットする。

4. 割り込みを使う場合、イネーブルビット RCxIE をセットする。

5. 9ビット受信を使う場合、RX9ビットをセットする。

6. CREN ビットをセットして、受信を有効にする。

7. イネーブルビット RCxIE をセットした場合、受信が完了するとフラグビット RCxIF がセットされ、割り込みが生成される。

8. 9 ビット受信が有効な場合は RCSTAx レジスタを読み出して 9 ビット目を取得し、受信中に何らかのエラーが発生しなかったかどうかを判断する。

9. RCREGx レジスタを読み出して、8 ビットの受信データを読み出す。

10. 何らかのエラーが発生していた場合、イネーブルビット CREN をクリアしてエラーをクリアする。

11. 割り込みを使う場合、INTCON レジスタの GIE およびPEIEビット (INTCON<7:6>)がセットされている事を確認する。

21.2.3 9 ビットアドレス検出モードの設定

通常、このモードは RS-485 システムで使います。非同期受信でアドレス検出を有効にするには、以下の手順を実行します。

1. 適切なbaudレートに合わせて、SPBRGHx:SPBRGxレジスタを初期化する。必要に応じて BRGH および BRG16 ビットをセットまたはクリアして、目標 baud レートに設定する。

2. SYNC ビットをクリアし、SPEN ビットをセットして非同期シリアルポートを有効にする。

3. RXx ピンの信号を反転する場合、RXDTP ビットをセットする。TXx ピンからの信号を反転する場合、TXCKP ビットをセットする。

4. 割り込みが必要な場合、RCEN ビットをセットし、RCxIP ビットで優先度レベルを選択する。

5. RX9 ビットをセットして、9 ビット受信を有効にする。

6. ADDEN ビットをセットして、アドレス検出を有効にする。

7. CREN ビットをセットして、受信を有効にする。

8. 受信が完了すると、RCxIFビットがセットされる。RCxIE および GIE ビットをセットしている場合、割り込みが通知される。

9. RCSTAxレジスタを読み出して受信中に何らかのエラーが発生しなかったかを判断する。9 ビットデータ受信の場合は 9 ビット目のデータビットも読み出す。

10. RCREGx を読み出す事で、このデバイスのアドレスが指定されているかを判断する。

11. 何らかのエラーが発生していた場合、CREN ビットをクリアする。

12. このデバイスのアドレスが指定された場合、ADDEN ビットをクリアして全ての受信データを受信バッファに取り込み、CPU に対する割り込みが生成できるようにする。

DS39762F_JP - p.328 2013 Microchip Technology Inc.

Page 329: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 21-6: EUSARTx 受信のブロック図

図 21-7: 非同期受信、RXDTP = 0 (RXx を反転しない )

表 21-6: 非同期受信に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR3 SSP2IF BCL2IF RC2IF(1) TX2IF TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE(1) TX2IE TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP BCL2IP RC2IP(1) TX2IP TMR4IP CCP5IP CCP4IP CCP3IP 71

RCSTAx SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 71

RCREGx EUSARTx 受信レジスタ 71

TXSTAx CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 71

BAUDCONx ABDOVF RCIDL RXDTP TXCKP BRG16 - WUE ABDEN 72

SPBRGHx EUSARTx baud レート ジェネレータ レジスタ上位バイト 72

SPBRGx EUSARTx baud レート ジェネレータ レジスタ下位バイト 73

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は非同期受信では使いません。

Note 1: これらのビットは 80 ピン /100 ピンデバイスにのみ実装されています。それ以外のデバイスでは未実装で「0」として読み出されます。

x64 Baud Rate CLK

Baud Rate Generator

RXx

Pin Bufferand Control

SPEN

DataRecovery

CREN OERR FERR

RSR RegisterMSb LSb

RX9D RCREGx RegisterFIFO

Interrupt RCxIF

RCxIE

Data Bus

8

64

16or

Stop Start(8) 7 1 0

RX9

SPBRGxSPBRGHxBRG16

or 4

RXDTP

Startbit bit 7/8bit 1bit 0 bit 7/8 bit 0Stop

bit

Startbit

Startbitbit 7/8 Stop

bitRXx (pin)

Rcv Buffer RegRcv Shift Reg

Read RcvBuffer RegRCREGx

RCxIF(Interrupt Flag)

OERR bit

CREN

Word 1RCREGx

Word 2RCREGx

Stopbit

Note: このタイミング チャートでは、RXx 入力で 3 ワードを受信しています。3 つ目のワードの後に RCREGx ( 受信バッファ ) を読み出しているため、OERR ( オーバーラン エラー ) ビットがセットされています。

2013 Microchip Technology Inc. DS39762F_JP - p.329

Page 330: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.2.4 同期ブレーク文字による自動復帰

スリープ中は、EUSARTx へのクロックは全て停止します。このため、baud レート ジェネレータは非アクティブで、バイトを適切に受信できません。EUSARTxの非同期モード動作中に自動復帰機能を利用すると、RXx/DTxラインのアクティビティによってコントローラを復帰できます。

自動復帰機能を有効にするには、WUE ビット(BAUDCONx<1>) をセットします。このビットをセットするとRXx/DTxでの通常の受信シーケンスは無効になり、EUSARTx はアイドル状態のまま、CPU のモードとは関係なく復帰イベントの発生を監視します。RXx/DTx ラインが High から Low に遷移すると復帰イベントです ( これは、LIN/J2602 プロトコルの同期ブレークまたは復帰信号文字の開始に相当します )。

復帰イベントの発生後、モジュールは RCxIF 割り込みを生成します。この割り込みは、通常の動作モードの場合は Q クロックに同期して発生し ( 図 21-8)、デバイスがスリープの場合は非同期に発生します ( 図 21-9)。RCREGx レジスタを読み出すと、割り込み条件がクリアされます。

復帰イベント後に RXx ラインで Low から High への遷移が検出されると、WUE ビットは自動的にクリアされます。この時点で EUSARTx モジュールはアイドルであり、通常動作に戻ります。これにより、ユーザは同期ブレークイベントの終了を知る事ができます。

21.2.4.1 自動復帰使用時の注意事項

自動復帰は RXx/DTx の立ち上がりエッジ遷移を検出する事で動作するため、ストップビットよりも前の何らかの状態変化の情報が EOC (End-of-Character) と誤認識され、データまたはフレーミングのエラーにつながる可能性があります。従って、適切に動作させるには、初に送信する文字が全て「0」である必要があります。

これは、標準 RS-232 デバイスでは 00h (8 バイト )、LIN/J2602 バスでは 000h (12 ビット ) です。

特に起動時間の長いオシレータを使っているアプリケーション (HS または HSPLL モード ) では、オシレータの起動時間を考慮する必要があります。十分な長さの同期ブレーク文字 ( または復帰信号 ) を送信したら、選択したオシレータが起動するまで十分な間隔を置いてから EUSARTx を適切に初期化するようにしてください。

21.2.4.2 WUE ビット使用時の注意事項

受信データの有効性を判断する際に、WUE ビットとRCxIF ビットのイベント発生タイミングが、若干の混乱を生む場合があります。前述の通り、WUE ビットをセットすると EUSARTx はアイドルに移行します。復帰イベントが発生すると、RCxIF ビットのセットによって受信割り込みが発生します。その後、WUE ビットは、RXx/DTx の立ち上がりエッジが検出された時点でクリアされます。続いて RCREGx レジスタを読み出す事で割り込み条件がクリアされます。通常、RCREGxのデータはダミーデータであり破棄します。

WUEビットがクリアされた事 (またはセットされたままである事)とRCxIFフラグがセットされている事を、RCREGx のデータの完全性を保証する指標として使う事はできません。受信データの完全性を検証するには、ファームウェア内に並列手法を実装する事を検討してください。

データが失われないようにするには、RCIDL ビットをチェックして、受信動作中でない事を確認します。受信動作中でなければ、スリープに移行する直前にWUEビットをセットします。

DS39762F_JP - p.330 2013 Microchip Technology Inc.

Page 331: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 21-8: 通常動作時の自動復帰ビット (WUE) のタイミング

図 21-9: スリープ時の自動復帰ビット (WUE) のタイミング

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 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

OSC1

WUE bit(1)

RXx/DTx Line

RCxIF

Note 1: WUE ビットがセットされている間、EUSARTx はアイドルのままです。

Bit set by user

Cleared due to user read of RCREGx

Auto-Cleared

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 Q1 Q2 Q3 Q4

OSC1

WUE bit(2)

RXx/DTx Line

RCxIFCleared due to user read of RCREGx

SLEEP Command Executed

Note 1: 復帰イベントによるオシレータのウォームアップに長時間を要する場合、オシレータがレディになる前に WUE ビットの自動クリアが発生する可能性があります。このシーケンスは Q クロックの有無の影響は受けません。

2: WUE ビットがセットされている間、EUSARTx はアイドルのままです。

Sleep Ends

Note 1

Auto-ClearedBit set by user

2013 Microchip Technology Inc. DS39762F_JP - p.331

Page 332: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.2.5 ブレーク文字のシーケンス

EUSARTx モジュールには、LIN/J2602 バス規格で必須とされる特殊なブレーク文字シーケンスを送信する機能があります。ブレーク文字送信は、スタートビット、12 ビットの「0」、ストップビットの順で構成されます。フレームブレーク文字は、SENDB および TXENビット (TXSTAx<3>とTXSTAx<5>)をセットした状態で送信シフトレジスタ (TSR)にデータを読み込むと送信されます。TXREGx に書き込んだデータの値は無視され、全て「0」で送信される事に注意してください。

対応するストップビットを送信したら、SENDB ビットはハードウェアによって自動的にリセットされます。このため、ブレーク文字の後に送信するバイト(LIN/J2602 対応仕様の場合は主に同期文字 ) を送信FIFO にあらかじめ読み込んでおく事が可能です。

ブレーク文字用にTXREGxに書き込まれたデータ値は無視される事に注意してください。この書き込みは、正しいシーケンスを開始する事だけを目的とします。

TRMT ビットは、通常の送信時と同様に、送信動作がアクティブかアイドルかを示します。ブレーク文字シーケンスのタイミングは、図 21-10 を参照してください。

21.2.5.1 ブレークおよび同期送信シーケンス

下記のシーケンスは、ブレークとこれに続く自動 baudレート検出同期バイトで構成されたメッセージ フレームヘッダを送信します。このシーケンスは、LIN/J2602 バスマスタで代表的なものです。

1. EUSARTx を必要なモードに設定する。

2. TXEN および SENDB ビットをセットしてブレーク文字を設定する。

3. TXREGxにダミー文字を読み込んで送信を開始する ( 読み込んだ値は無視される )。

4. TXREGx に「55h」を書き込んで送信 FIFO バッファに同期文字を読み込む。

5. ブレーク送信後に、ハードウェアが SENDB ビットをリセットする。この時点で、あらかじめ設定されたモードにより同期文字が送信される。

TXREGxがエンプティになった事がTXxIFによって示された時点で、次のデータバイトを TXREGx に書き込む事ができます。

21.2.6 ブレーク文字の受信

EUSARTx モジュールには、ブレーク文字の受信方法が 2 通りあります。

1 つ目は、baud レートを強制的に通常スピードの 9/13の周波数に設定する方法です。これによって、ストップビット遷移を適切なサンプリング位置で発生させる事ができます ( 通常データの場合、ブレークの 13 ビットに対してスタートビットと 8 ビットのデータ )。

2 つ目は、セクション 21.2.4「同期ブレーク文字による自動復帰」で説明した自動復帰機能を使う方法です。自動復帰機能を有効にすると、EUSARTx は RXx/DTxの次の 2 つの遷移をサンプリングし、RCxIF 割り込みを生成して、次のデータバイトを受信後、再度割り込みを生成します。

通常はブレーク文字の後に自動 baud レート検出機能を有効にします。どちらの方法も、TXxIF 割り込みが検出されれば ABDEN ビットをセットできます。

図 21-10: ブレーク文字シーケンスの送信

Write to TXREGx

BRG Output(Shift Clock)

Start bit bit 0 bit 1 bit 11 Stop bit

Break

TXxIF bit(Transmit Buffer

Reg. Empty Flag)

TXx (pin)

TRMT bit(Transmit Shift

Reg. Empty Flag)

SENDB bit(Transmit Shift

Reg. Empty Flag)

SENDB Sampled Here Auto-Cleared

Dummy Write

DS39762F_JP - p.332 2013 Microchip Technology Inc.

Page 333: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.3 EUSARTx 同期マスタモード

同期マスタモードには、CSRC ビット (TXSTAx<7>) をセットする事で移行します。このモードでは、データが半二重方式で送信されます ( すなわち送信と受信が同時には発生しません )。データの送信中は、受信が禁止され、受信中は送信が禁止されます。同期モードには、SYNC ビット (TXSTAx<4>) をセットする事で移行します。さらに、TXx と RXx ピンをそれぞれ CKx( クロック ) と DTx ( データ ) ラインに設定するために、イネーブルビットSPEN (RCSTAx<7>)をセットします。

クロック極性(CKx)は、TXCKPビット(BAUDCON<4>)で選択します。TXCKP ビットをセットすると CKx のアイドル状態が High に設定され、クリアするとアイドル状態がLowに設定されます。データ極性 (DTx)は、RXDTP ビット (BAUDCONx<5>) で選択します。RXDTP ビットをセットすると DTx のアイドル状態がHigh に設定され、クリアするとアイドル状態が Lowに設定されます。CKx がアイドル状態に戻ると DTx がサンプリングされます。この設定は、このモジュールと Microwire デバイスを使うためのものです。

21.3.1 EUSARTx 同期マスタ送信

図 21-3 に、EUSARTx トランスミッタのブロック図を示します。トランスミッタの中核となるのが送信 ( シリアル ) シフトレジスタ (TSR) です。送信シフトレジスタには、読み書き送信バッファレジスタ TXREGx からデータを入力します。TXREGx レジスタにはソフトウェアでデータを書き込みます。前回読み込まれたデータの 終ビットが送信されるまで、TSR レジスタに新しいデータは転送されません。 終ビットが送信されると、TXREGx レジスタから TSR に新しいデータが転送されます ( 送信すべきデータが存在する場合 )。

TXREGx レジスタは、TSR レジスタへのデータ転送が完了すると (1 TCY で完了 ) エンプティになり、TXxIFフラグビットがセットされます。この割り込みは、割り込みイネーブルビットTXxIEをセットまたはクリア

する事で有効または無効にできます。TXxIF はイネーブルビット TXxIE の状態に関係なくセットされ、ソフトウェアではクリアできません。ビットがリセットされるのはTXREGxレジスタに新しいデータが読み込まれた場合のみです。

フラグビットのTXxIFがTXREGxレジスタのステータスを示す一方、もう 1 つのビット TRMT (TXSTAx<1>)は TSR レジスタのステータスを示します。TRMT は、TSR がエンプティになるとセットされる読み出し専用のビットです。このビットには割り込みロジックが関連付けられていません。従って、TSR レジスタがエンプティであるかどうかを判断するには、このビットをポーリングする必要があります。TSR はデータメモリに割り当てられていないため、ユーザからはアクセスできません。

同期マスタ送信を設定するには、以下の手順を実行します。

1. 適切なbaudレートに合わせて、SPBRGHx:SPBRGxレジスタを初期化する。必要に応じてBRG16ビットをセットまたはクリアして、目標 baud レートに設定する。

2. SYNC、SPEN、CSRC ビットをセットして同期マスタ シリアルポートを有効にする。

3. 割り込みを使う場合、イネーブルビット TXxIE をセットする。

4. 9ビット送信を使う場合、TX9ビットをセットする。

5. TXEN ビットをセットして送信を有効にする。

6. 9 ビット送信を選択した場合、TX9D ビットに 9ビット目を読み込む必要がある。

7. TXREGx レジスタにデータを読み込み、送信を開始する。

8. 割り込みを使う場合、INTCON レジスタの GIE およびPEIEビット (INTCON<7:6>)がセットされている事を確認する。

図 21-11: 同期送信

bit 0 bit 1 bit 7

Word 1

Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3Q4 Q1Q2 Q3 Q4 Q1Q2 Q3 Q4Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4

bit 2 bit 0 bit 1 bit 7RC7/RX1/DT1

RC6/TX1/CK1 pin

Write toTXREG1 Reg

TX1IF bit(Interrupt Flag)

TXEN bit ‘1’ ‘1’

Word 2

TRMT bit

Write Word 1 Write Word 2

Note: 同期マスタモード、SPBRG1 = 0、2 つの 8 ビットワードの連続送信です。この例は、EUSART2 (RG1/TX2/CK2 と RG2/RX2/DT2) に同様に適用されます。

RC6/TX1/CK1 pin

(TXCKP = 0)

(TXCKP = 1)

2013 Microchip Technology Inc. DS39762F_JP - p.333

Page 334: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 21-12: 同期送信 (TXEN を利用 )

表 21-7: 同期マスタ送信に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR3 SSP2IF BCL2IF RC2IF TX2IF(1) TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE TX2IE(1) TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP BCL2IP RC2IP TX2IP(1) TMR4IP CCP5IP CCP4IP CCP3IP 71

RCSTAx SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 71

TXREGx EUSARTx 送信レジスタ 71

TXSTAx CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 71

BAUDCONx ABDOVF RCIDL RXDTP TXCKP BRG16 - WUE ABDEN 72

SPBRGHx EUSARTx baud レート ジェネレータ レジスタ上位バイト 72

SPBRGx EUSARTx baud レート ジェネレータ レジスタ下位バイト 73

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は同期マスタ送信では使いません。

Note 1: これらのビットは 80 ピン /100 ピンデバイスにのみ実装されています。それ以外のデバイスでは未実装で「0」として読み出されます。

RC7/RX1/DT1 pin

RC6/TX1/CK1 pin

Write toTXREG1 reg

TX1IF bit

TRMT bit

TXEN bit

Note: この例は、EUSART2 (RG1/TX2/CK2 と RG2/RX2/DT2) に同様に適用されます。

bit 0 bit 1 bit 2 bit 6 bit 7

DS39762F_JP - p.334 2013 Microchip Technology Inc.

Page 335: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.3.2 EUSARTx 同期マスタ受信

同期モードを選択した場合、シングル受信イネーブルビット SREN (RCSTAx<5>) または連続受信イネーブルビット CREN (RCSTAx<4>) のいずれかをセットする事で受信動作が有効になります。クロックの立ち下がりエッジで、RXx ピンからデータをサンプリングします。

イネーブルビット SREN がセットされている場合、シングルワードだけを受信します。イネーブルビットCREN がセットされている場合、CREN がクリアされるまで連続して受信します。これらのビットが両方共セットされている場合、CREN が優先されます。

同期マスタ受信を設定するには、以下の手順を実行します。

1. 適切なbaudレートに合わせて、SPBRGHx:SPBRGxレジスタを初期化する。必要に応じてBRG16ビットをセットまたはクリアして、目標 baud レートに設定する。

2. SYNC、SPEN、CSRC ビットをセットして同期マスタ シリアルポートを有効にする。

3. CRENおよびSRENビットがクリアされている事を確認する。

4. CKxピンからの信号を反転する場合、TXCKPビットをセットする。DTx ピンからの信号を反転する場合、RXDTP ビットをセットする。

5. 割り込みを使う場合、イネーブルビット RCxIE をセットする。

6. 9ビット受信を使う場合、RX9ビットをセットする。

7. シングル受信が必要な場合、SREN ビットをセットする。連続受信の場合、CREN ビットをセットする。

8. イネーブルビット RCxIE をセットした場合、受信が完了すると割り込みフラグビットRCxIF がセットされ、割り込みが生成される。

9. 9 ビット受信が有効な場合は RCSTAx レジスタを読み出して 9 ビット目を取得し、受信中に何らかのエラーが発生しなかったかどうかを判断する。

10. RCREGx レジスタを読み出して、8 ビットの受信データを読み出す。

11. 何らかのエラーが発生していた場合、CREN ビットをクリアしてエラーをクリアする。

12. 割り込みを使う場合、INTCON レジスタの GIE およびPEIEビット (INTCON<7:6>)がセットされている事を確認する。

図 21-13: 同期受信 ( マスタモード、SREN)

CREN bit

RC7/RX1/DT1

RC6/TX1/CK1 pin

Write toSREN bit

SREN bit

RC1IF bit(Interrupt)

ReadRCREG1

Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4Q2 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

‘0’

bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7

‘0’

Q1 Q2 Q3 Q4

Note: このタイミング チャートは、同期マスタモードで SREN = 1、BRGH = 0とした場合を示しています。この例は、EUSART2 (RG1/TX2/CK2と RG2/RX2/DT2) に同様に適用されます。

RC6/TX1/CK1 pin

pin

(TXCKP = 0)

(TXCKP = 1)

2013 Microchip Technology Inc. DS39762F_JP - p.335

Page 336: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 21-8: 同期マスタ受信に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR3 SSP2IF BCL2IF RC2IF(1) TX2IF TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE(1) TX2IE TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP BCL2IP RC2IP(1) TX2IP TMR4IP CCP5IP CCP4IP CCP3IP 71

RCSTAx SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 71

RCREGx EUSARTx 受信レジスタ 71

TXSTAx CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 71

BAUDCONx ABDOVF RCIDL RXDTP TXCKP BRG16 - WUE ABDEN 72

SPBRGHx EUSARTx baud レート ジェネレータ レジスタ上位バイト 72

SPBRGx EUSARTx baud レート ジェネレータ レジスタ下位バイト 73

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は同期マスタ受信では使いません。

Note 1: これらのビットは 80 ピン /100 ピンデバイスにのみ実装されています。それ以外のデバイスでは未実装で「0」として読み出されます。

DS39762F_JP - p.336 2013 Microchip Technology Inc.

Page 337: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.4 EUSARTx 同期スレーブモード

同期スレーブモードには、CSRC (TXSTAx<7>) をクリアする事で移行します。このモードは、シフトクロックが CKx ピンを介して外部から供給される点が、同期マスタモードとは異なります ( マスタモードではチップ内部で供給されます )。これにより、デバイスが低消費電力モードで動作中でもデータを転送または受信できます。

21.4.1 EUSARTx 同期スレーブ送信

同期マスタモードと同期スレーブモードの動作は、スリープの場合を除いて同じです。

TXREGx に 2 ワードを書き込んだ後に SLEEP 命令を実行すると、以下の動作が発生します。

a) 初のワードがただちに TSR レジスタに転送され、送信される。

b) 2 番目のワードは TXREGx レジスタに残る。

c) フラグビット TXxIF はセットされない。

d) 初のワードが TSR からシフト出力されると、TXREGx レジスタから TSR に 2 番目のワードが転送され、この時点でフラグビット TXxIF がセットされる。

e) イネーブルビット TXxIE がセットされている場合、割り込みがチップをスリープから復帰させる。グローバル割り込みが有効の場合、プログラムは割り込みベクタに分岐する。

同期スレーブ送信を設定するには、以下の手順を実行します。

1. SYNC および SPEN ビットをセット、CSRC ビットをクリアして、同期スレーブ シリアルポートを有効にする。

2. CREN および SREN ビットをクリアする。

3. CKxピンからの信号を反転する場合、TXCKPビットをセットする。DTx ピンからの信号を反転する場合、RXDTP ビットをセットする。

4. 割り込みを使う場合、イネーブルビット TXxIE をセットする。

5. 9ビット送信を使う場合、TX9ビットをセットする。

6. イネーブルビット TXEN をセットして、送信を有効にする。

7. 9 ビット送信を選択した場合、TX9D ビットに 9ビット目を読み込む必要がある。

8. TXREGx レジスタにデータを読み込み、送信を開始する。

9. 割り込みを使う場合、INTCON レジスタの GIE およびPEIEビット (INTCON<7:6>)がセットされている事を確認する。

表 21-9: 同期スレーブ送信に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR3 SSP2IF BCL2IF RC2IF TX2IF(1) TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE TX2IE(1) TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP BCL2IP RC2IP TX2IP(1) TMR4IP CCP5IP CCP4IP CCP3IP 71

RCSTAx SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 71

TXREGx EUSARTx 送信レジスタ 71

TXSTAx CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 71

BAUDCONx ABDOVF RCIDL RXDTP TXCKP BRG16 - WUE ABDEN 72

SPBRGHx EUSARTx baud レート ジェネレータ レジスタ上位バイト 72

SPBRGx EUSARTx baud レート ジェネレータ レジスタ下位バイト 73

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は同期スレーブ送信では使いません。

Note 1: これらのビットは 80 ピン /100 ピンデバイスにのみ実装されています。それ以外のデバイスでは未実装で「0」として読み出されます。

2013 Microchip Technology Inc. DS39762F_JP - p.337

Page 338: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

21.4.2 EUSARTx 同期スレーブ受信

同期マスタモードと同期スレーブモードの動作は同じです。例外は、スリープまたはいずれかのアイドルにおける動作と、スレーブモードでは SREN ビットがドントケアである点です。

スリープまたはいずれかのアイドルに移行する前にCREN ビットをセットして受信を有効にした場合、移行した低消費電力モードによる動作中に 1 ワードを受信できます。ワードを受信すると、RSR レジスタはデータを RCREGx レジスタに転送します。RCxIE イネーブルビットがセットされている場合、生成された割り込みがチップを低消費電力モードから復帰させます。グローバル割り込みが有効の場合、プログラムは割り込みベクタに分岐します。

同期スレーブ受信を設定するには、以下の手順を実行します。

1. SYNC および SPEN ビットをセット、CSRC ビットをクリアして同期マスタ シリアルポートを有効にする。

2. 割り込みを使う場合、イネーブルビット RCxIE をセットする。

3. CKxピンからの信号を反転する場合、TXCKPビットをセットする。DTx ピンからの信号を反転する場合、RXDTP ビットをセットする。

4. 9ビット受信を使う場合、RX9ビットをセットする。

5. 受信を有効にするためにイネーブルビットCRENをセットする。

6. 受信が完了すると、フラグビット RCxIF ビットがセットされる。イネーブルビット RCxIE をセットしている場合、割り込みが生成される。

7. 9 ビット受信が有効な場合は RCSTAx レジスタを読み出して 9 ビット目を取得し、受信中に何らかのエラーが発生しなかったかどうかを判断する。

8. RCREGx レジスタを読み出して、8 ビットの受信データを読み出す。

9. 何らかのエラーが発生していた場合、CREN ビットをクリアしてエラーをクリアする。

10. 割り込みを使う場合、INTCON レジスタの GIE およびPEIEビット (INTCON<7:6>)がセットされている事を確認する。

表 21-10: 同期スレーブ受信に関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR3 SSP2IF BCL2IF RC2IF(1) TX2IF TMR4IF CCP5IF CCP4IF CCP3IF 71

PIE3 SSP2IE BCL2IE RC2IE(1) TX2IE TMR4IE CCP5IE CCP4IE CCP3IE 71

IPR3 SSP2IP BCL2IP RC2IP(1) TX2IP TMR4IP CCP5IP CCP4IP CCP3IP 71

RCSTAx SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 71

RCREGx EUSARTx 受信レジスタ 71

TXSTAx CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 71

BAUDCONx ABDOVF RCIDL RXDTP TXCKP BRG16 - WUE ABDEN 72

SPBRGHx EUSARTx baud レート ジェネレータ レジスタ上位バイト 72

SPBRGx EUSARTx baud レート ジェネレータ レジスタ下位バイト 73

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分は同期スレーブ受信では使いません。

Note 1: これらのビットは 80 ピン /100 ピンデバイスにのみ実装されています。それ以外のデバイスでは未実装で「0」として読み出されます。

DS39762F_JP - p.338 2013 Microchip Technology Inc.

Page 339: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

22.0 10 ビット A/D コンバータ (ADC)モジュール

ADC (Analog-to-Digital Converter) モジュールの入力は、64 ピンデバイスに 11 個、80 ピンデバイスに 15個、100 ピンデバイスに 16 個あります。このモジュールを使うと、アナログ入力信号を 10 ビットのデジタル値に変換できます。

このモジュールは以下の 5 つのレジスタを使います。

• A/D 変換結果レジスタ上位バイト (ADRESH)

• A/D 変換結果レジスタ下位バイト (ADRESL)

• A/D 制御レジスタ 0 (ADCON0)

• A/D 制御レジスタ 1 (ADCON1)

• A/D 制御レジスタ 2 (ADCON2)

レジスタ 22-1 に示す ADCON0 レジスタは、A/D モジュールの動作を制御します。レジスタ 22-2 に示すADCON1レジスタは、ポートピンの機能を設定します。レジスタ 22-3 に示す ADCON2 レジスタは、A/D コンバータのクロック源、プログラムされたアクイジション時間と位置調整を設定します。

レジスタ 22-1: ADCON0: A/D 制御レジスタ 0

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

ADCAL — CHS3 CHS2 CHS1 CHS0 GO/DONE ADON

bit 7 bit 0

凡例 :

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

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

bit 7 ADCAL: A/D 校正ビット

1 = 次の A/D 変換で校正を実行する 0 = 通常の A/D 変換を実行する ( 校正は実行しない )

bit 6 未実装 :「0」として読み出し

bit 5-2 CHS<3:0>: アナログ チャンネル選択ビット

0000 = チャンネル 0 (AN0)0001 = チャンネル 1 (AN1)0010 = チャンネル 2 (AN2)0011 = チャンネル 3 (AN3)0100 = チャンネル 4 (AN4)0101 = チャンネル 5 (AN5)(1,3) 0110 = チャンネル 6 (AN6)0111 = チャンネル 7 (AN7)1000 = チャンネル 8 (AN8)1001 = チャンネル 9 (AN9)1010 = チャンネル 10 (AN10)1011 = チャンネル 11 (AN11)1100 = チャンネル 12 (AN12)(2,3)

1101 = チャンネル 13 (AN13)(2,3)

1110 = チャンネル 14 (AN14)(2,3)

1111 = チャンネル 15 (AN15)(2,3)

bit 1 GO/DONE: A/D 変換ステータスビット

ADON = 1の場合 : 1 = A/D 変換が進行中である0 = A/D 変換はアイドルである

bit 0 ADON: A/D ON ビット

1 = A/D コンバータ モジュールを有効にする 0 = A/D コンバータ モジュールを無効にする

Note 1: このチャンネルは 100 ピンデバイスにのみ実装されています。

2: これらのチャンネルは 80 ピン /100 ピンデバイスにのみ実装されています。

3: 未実装のチャンネルに対して変換を実行すると、ランダムな値が返されます。

2013 Microchip Technology Inc. DS39762F_JP - p.339

Page 340: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 22-2: ADCON1: A/D 制御レジスタ 1

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

— — VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0

bit 7 bit 0

凡例 :

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

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

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

bit 5 VCFG1: 参照電圧コンフィグレーション ビット (VREF- 電源 )1 = VREF- (AN2)0 = AVSS

bit 4 VCFG0: 参照電圧コンフィグレーション ビット (VREF+ 電源 )1 = VREF+ (AN3)0 = AVDD

bit 3-0 PCFG<3:0>: A/D ポート コンフィグレーション制御ビット :

Note 1: AN12 ~ AN15 は 80 ピン /100 ピンデバイスにのみ実装されています。

2: AN5 は 100 ピンデバイスにのみ実装されています。

3: AN0 と AN1 は、アナログまたはデジタル I/O モードで Ethernet LED 出力としても動作させる事ができます。

A = アナログ入力 D = デジタル I/O

PCFG<3:0>

AN

15(1

)

AN

14(1

)

AN

13(1

)

AN

12(1

)

AN

11

AN

10

AN

9

AN

8

AN

7

AN

6

AN

5(2)

AN

4

AN

3

AN

2

AN

1(3)

AN

0(3)

0000 A A A A A A A A A A A A A A A A

0001 D D A A A A A A A A A A A A A A

0010 D D D A A A A A A A A A A A A A

0011 D D D D A A A A A A A A A A A A

0100 D D D D D A A A A A A A A A A A

0101 D D D D D D A A A A A A A A A A

0110 D D D D D D D A A A A A A A A A

0111 D D D D D D D D A A A A A A A A

1000 D D D D D D D D D A A A A A A A

1001 D D D D D D D D D D A A A A A A

1010 D D D D D D D D D D D A A A A A

1011 D D D D D D D D D D D D A A A A

1100 D D D D D D D D D D D D D A A A

1101 D D D D D D D D D D D D D D A A

1110 D D D D D D D D D D D D D D D A

1111 D D D D D D D D D D D D D D D D

DS39762F_JP - p.340 2013 Microchip Technology Inc.

Page 341: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 22-3: ADCON2: A/D 制御レジスタ 2

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

ADFM — ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0

bit 7 bit 0

凡例 :

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

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

bit 7 ADFM: A/D 変換結果フォーマット選択ビット

1 = 右詰め 0 = 左詰め

bit 6 未実装 :「0」として読み出し

bit 5-3 ACQT<2:0>: A/D アクイジション時間選択ビット : 111 = 20 TAD

110 = 16 TAD

101 = 12 TAD

100 = 8 TAD

011 = 6 TAD

010 = 4 TAD

001 = 2 TAD

000 = 0 TAD(1)

bit 2-0 ADCS<2:0>: A/D 変換クロック選択ビット

111 = FRC (A/D コンバータの RC オシレータから供給されたクロック )(1) 110 = FOSC/64 101 = FOSC/16 100 = FOSC/4 011 = FRC (A/D コンバータの RC オシレータから供給されたクロック )(1) 010 = FOSC/32 001 = FOSC/8 000 = FOSC/2

Note 1: A/D コンバータの FRC クロック源を選択した場合、A/D クロックの起動前に 1 TCY ( 命令サイクル ) の遅延が発生します。これにより、変換開始前に SLEEP命令を実行できます。

2013 Microchip Technology Inc. DS39762F_JP - p.341

Page 342: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

アナログ参照電圧は、デバイスの正負電源 (AVDD とAVSS) または RA3/AN3/VREF+ と RA2/AN2/VREF- ピン間の電圧レベルのいずれかをソフトウェアによって選択できます。

この A/D コンバータは、デバイスがスリープ中でも動作が可能です。スリープ中に A/D モジュールを動作させるには、A/D 変換クロックを A/D コンバータの内部RC オシレータから供給する必要があります。

サンプルホールドの出力をコンバータに入力し、コンバータは逐次比較型の処理によって結果を生成します。

A/D コンバータに関連する各ポートピンはアナログ入力またはデジタル I/O として設定できます。A/D 変換の結果は、ADRESH および ADRESL レジスタに格納し

ます。A/D変換が完了すると、結果がADRESH:ADRESLレジスタペアに書き込まれ、GO/DONEビット(ADCON0<1>)がクリアされ、A/D割り込みフラグビットADIFがセットされます。

デバイスをリセットすると、全てのレジスタがリセット状態に戻ります。これにより A/D モジュールは停止し、実行中の変換は全て中止されます。ADRESH:ADRESLレジスタペアの値はパワーオン リセットでは変更されません。パワーオン リセット後にこれらのレジスタに格納されているデータは未知です。

図 22-1 に A/D モジュールのブロック図を示します。

図 22-1: A/D コンバータのブロック図

(Input Voltage)

VAIN

VREF+Reference

Voltage

VDD

VCFG<1:0>

CHS<3:0>

AN7

AN6

AN4

AN3

AN2

AN1

AN0

0111

0110

0100

0011

0010

0001

0000

10-BitA/D

VREF-

VSS

Converter

AN15(1)

AN14(1)

AN13(1)

AN12(1)

AN11

AN10

AN9

AN8

1111

1110

1101

1100

1011

1010

1001

1000

Note 1: チャンネル AN15 ~ AN12 は、64 ピンデバイスには実装されていません。

2: チャンネル AN5 は 100 ピンデバイスにのみ実装されています。

AN5(2)0101

DS39762F_JP - p.342 2013 Microchip Technology Inc.

Page 343: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

A/D モジュールに対する必要な設定が完了したら、変換開始前に選択したチャンネルのアクイジションを実行する必要があります。アナログ入力チャンネルに対応するTRISビットを入力に設定する必要があります。アクイジション時間の決め方は、セクション 22.1「A/Dアクイジションの要件」を参照してください。このアクイジション時間経過後、A/D 変換を開始できます。アクイジション時間は、GO/DONE ビットのセットから変換開始までの間に実行するようにプログラムできます。

A/D 変換を実行する手順は以下の通りです。

1. A/D モジュールを設定する。

• アナログピン、参照電圧、デジタル I/O を設定する (ADCON1)。

• A/D 入力チャンネルを選択する (ADCON0)。

• A/D アクイジション時間を選択する(ADCON2)。

• A/D 変換クロックを選択する (ADCON2)。

• A/D モジュールを有効にする (ADCON0)。

2. A/D 割り込みを設定する ( 必要な場合 )。

• ADIF ビットをクリアする。

• ADIE ビットをセットする。

• GIE ビットをセットする。

3. 必要なアクイジション時間が経過するまで待つ( 必要な場合 )。

4. 変換を開始する。

• GO/DONE ビット (ADCON0<1>) をセットする。

5. 以下のいずれかの方法で A/D 変換の完了を待つ。

• GO/DONE ビットをポーリングしてクリアされている事を確認する。

または

• A/D 割り込みを待つ。

6. A/D 変換結果レジスタ (ADRESH:ADRESL) を読み出し、必要に応じて ADIF ビットをクリアする。

7. 次の変換を実行するために、必要に応じて手順 1または手順 2 に戻る。ビットあたりの A/D 変換時間を TAD と定義する。次のアクイジションを開始する前に、2 TAD 以上待機する必要がある。

図 22-2: アナログ入力モデル

VAINCPIN

RSANx

5 pF

VDD

VT = 0.6V

VT = 0.6VILEAKAGE

RIC 1k

SamplingSwitch

SS RSS

CHOLD = 25 pF

VSS

Sampling Switch (k1 2 3 4

VDD

±100 nA

凡例 : CPIN

VT

ILEAKAGE

RIC

SS

CHOLD

= 入力静電容量

= しきい値電圧

= 各種接合によるピン部位のリーク電流

= 配線抵抗

= サンプリング スイッチ

= サンプル / ホールド静電容量 (DAC から )

 

= サンプリング スイッチ抵抗RSS

2013 Microchip Technology Inc. DS39762F_JP - p.343

Page 344: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

22.1 A/D アクイジションの要件

A/D コンバータが仕様上の精度を実現するには、電荷保持コンデンサ (CHOLD) を入力チャンネルの電圧レベルまで完全に充電する必要があります。図 22-2 に、アナログ入力モデルを示します。ソース インピーダンス(RS) と内部サンプリング スイッチのインピーダンス(RSS) は、コンデンサ (CHOLD) の充電に必要な時間に直接影響します。サンプリング スイッチのインピーダンス (RSS)はデバイス電圧 (VDD)によって変化します。ソース インピーダンスは、アナログ入力のオフセット電圧に影響します ( ピンリーク電流による )。アナログソースの 大推奨インピーダンスは、2.5 kです。アナログ入力チャンネルを選択または変更した後は、変換を開始する前に、 小アクイジション時間以上の期間、そのチャンネルをサンプルする必要があります。

小アクイジション時間の計算には式 22-1が使えます。この式は、1/2 LSb誤差の適用を前提としています(A/D変換は 1024 ステップ )。1/2 LSb の誤差は、仕様上の分解能を A/D 変換で実現できる 大許容誤差です。

式 22-3 に、必要な 小アクイジション時間 TACQ の計算を示します。この計算は、以下の条件のアプリケーション システムを前提としています。

CHOLD = 25 pF Rs = 2.5 k変換誤差 1/2 LSb VDD = 3 V Rss = 2 k 温度 = 85 ℃ ( システム 大値 )

式 22-1: アクイジション時間

式 22-2: 小 A/D 充電時間

式 22-3: 必要な 小アクイジション時間の計算

Note: 変換が始まると、保持コンデンサは入力ピンから切り離されます。

TACQ = アンプのセトリングタイム + 保持コンデンサの充電時間 + 温度係数

= TAMP + TC + TCOFF

VHOLD = (VREF - (VREF/2048)) ・ (1 - e(-TC/CHOLD(RIC + RSS + RS))) または TC = -(CHOLD)(RIC + RSS + RS) ln (1/2048)

TACQ = TAMP + TC + TCOFF

TAMP = 0.2 s

TCOFF = ( 温度 – 25 C)(0.02 s/C)(85 C – 25 C)(0.02 s/C)1.2 s

温度係数が必要となるのは、温度が >25 C の場合のみです。25 C 未満の場合、TCOFF = 0 ms です。

TC = -(CHOLD)(RIC + RSS + RS) ln(1/2048) s-(25 pF) (1 k + 2 k + 2.5 k) ln(0.0004883) s 1.05 s

TACQ = 0.2 s + 1 s + 1.2 s2.4 s

DS39762F_JP - p.344 2013 Microchip Technology Inc.

Page 345: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

22.2 自動アクイジション時間の選択と設定

GO/DONE ビットがセットされるたびに発生するアクイジション時間は、ADCON2 レジスタを使ってユーザが設定できます。

GO/DONE ビットをセットすると、サンプリングが停止し、変換が開始します。入力チャンネルを選択してから GO/DONE ビットをセットするまでに、必要なアクイジション時間が経過した事は、ユーザが確認する必要があります。この確認動作は ACQT<2:0> ビット(ADCON2<5:3>) がリセット状態のままの場合 (「000」)に必要となり、アクイジション時間をプログラミングできないデバイスとの互換性が保たれます。

必要に応じて ACQT ビットをセットし、A/D モジュールにプログラマブルなアクイジション時間を選択できます。GO/DONE ビットをセットすると、A/D モジュールは選択したアクイジション時間入力のサンプリングを継続した後、自動的に変換を開始します。アクイジション時間はプログラミング済みであるため、チャンネルを選択後アクイジション時間の経過を待たずにGO/DONE ビットをセットできます。

いずれの場合も、変換が完了すると GO/DONE ビットがクリアされ、ADIF フラグがセットされ、A/D コンバータは現在選択されているチャンネルのサンプリングを再開します。アクイジション時間をプログラミングした場合、アクイジション時間が終了したかどうか、変換が開始したかどうかを知る方法はありません。

22.3 A/D 変換クロックの選択

ビットあたりの A/D 変換時間を TAD と定義します。10ビット変換では、A/D 変換に 11 TAD を要します。A/D変換のクロック源はソフトウェアで選択できます。

TAD は以下の 7 種類から選択できます。

• 2 TOSC

• 4 TOSC

• 8 TOSC

• 16 TOSC

• 32 TOSC

• 64 TOSC

• 内部 RC オシレータ

正確な A/D 変換を実行するには、A/D 変換クロック(TAD) をできるだけ短く、ただし 小 TAD より長く設定する必要があります。詳細は、セクション 28.0「電気的特性」の表 28-27 の A/D パラメータ 130 を参照してください。

表 22-1 に、デバイス動作周波数と、選択した A/D クロック源の組み合わせから求めた TAD 時間の計算結果を示します。

表 22-1: TAD とデバイス動作周波数

22.4 アナログ ポートピンの設定

ADCON1、TRISA、TRISF、TRISH レジスタは、A/Dポートピンの動作を制御します。ポートピンをアナログ入力として動作させる場合、対応する TRIS ビットをセット (入力として設定 )する必要があります。TRISビットをクリア ( 出力として設定 ) すると、デジタル出力レベル (VOH または VOL) が変換されます。

A/D 変換動作は、CHS<3:0> ビットと TRIS ビットの状態とは無関係に実行されます。

AD クロック源 (TAD) 大デバイス周波数動作 ADCS<2:0>

2 TOSC 000 2.86 MHz

4 TOSC 100 5.71 MHz

8 TOSC 001 11.43 MHz

16 TOSC 101 22.86 MHz

32 TOSC 010 41.67 MHz

64 TOSC 110 41.67 MHz

RC(2) x11 1.00 MHz(1)

Note 1: RC クロック源の TAD 時間は 4 ms (typ.)です。

2: A/D モジュールの RC クロックの仕様は、表 28-27 のパラメータ 130 を参照してください。

Note 1: PORT レジスタを読み出すと、アナログ入力チャンネルとして設定されている全てのピンが、クリア状態 (Low レベル ) として読み出されます。デジタル入力として設定しているピンは、アナログ入力を変換します。デジタル設定された入力のアナログレベルは正確に変換されます。

2: デジタル入力として定義したピンにアナログレベルを印加すると、デジタル入力バッファにデバイスの仕様限界値を超える電流が流れる場合があります。

2013 Microchip Technology Inc. DS39762F_JP - p.345

Page 346: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

22.5 A/D 変換

図 22-3に、GO/DONEビットをセットしてACQT<2:0>ビットをクリアした後のA/Dコンバータの動作を示します。スリープへの移行を可能にするため、変換は次の命令の後に開始します。

図 22-4に、GO/DONEビットをセットしてACQT<2:0>ビットを「010」に設定し、変換開始前に 4 TAD のアクイジション時間を選択した場合の A/D コンバータの動作を示します。

変換中に GO/DONE ビットをクリアすると、その変換は中止されます。一部しか完了していない A/D 変換サンプルによってA/D変換結果レジスタペアが更新される事はありません。これは、ADRESH:ADRESL レジスタに前回の変換値 ( または ADRESH:ADRESL レジスタに 後に書き込まれた値 ) が引き続き保持される事を意味します。

A/D 変換が完了または中止されてから次のアクイジションを開始するまでには、2 TAD の待ち時間が必要です。この待ち時間が経過すると、選択したチャンネルのアクイジションが自動的に開始します。

22.6 ECCP2 トリガの使用法

A/D 変換は ECCP2 モジュールの「特殊イベントトリガ」によって開始する事もできます。それには、CCP2M<3:0> ビット (CCP2CON<3:0>) を「1011」にプログラムし、A/D モジュールを有効に (ADON ビットをセット ) する必要があります。このトリガが発生すると、GO/DONE ビットがセットされて A/D アクイジションと変換が開始し、Timer1 または Timer3 カウンタが 0 にリセットされます。Timer1 または Timer3 がリセットされ、 小限のソフトウェア オーバーヘッド(ADRESH:ADRESL の内容を所定のアドレスに移動 )で A/D アクイジション周期を自動的に繰り返します。特殊イベントトリガがGO/DONEビットをセットする( 変換を開始する ) 前に、適切なアナログ入力チャンネルを選択し、 小アクイジション時間をユーザがタイミング設定するか、適切な TACQ 時間を選択する必要があります。

A/Dモジュール無効時 (ADONがクリア )、A/Dモジュールは特殊イベントトリガを無視しますが、Timer1 ( または Timer3) のカウンタはリセットします。

図 22-3: A/D 変換の TAD サイクル (ACQT<2:0> = 000、TACQ = 0)

図 22-4: A/D 変換の TAD サイクル (ACQT<2:0> = 010、TACQ = 4 TAD)

Note: A/D コンバータを ON にする命令と同じ命令で GO/DONE ビットをセットしないでください。

TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD11

Set GO/DONE bit

Holding capacitor is disconnected from analog input (typically 100 ns)

TAD9 TAD10TCY – TAD

Next Q4: ADRESH/ADRESL is loaded, GO/DONE bit is cleared, ADIF bit is set, holding capacitor is connected to analog input.

Conversion starts

b0b9 b6 b5 b4 b3 b2 b1b8 b7

1 2 3 4 5 6 7 8 11

Set GO/DONE bit

(Holding capacitor is disconnected)

9 10

Next Q4: ADRESH:ADRESL is loaded, GO/DONE bit is cleared, ADIF bit is set, holding capacitor is reconnected to analog input.

Conversion starts

1 2 3 4

(Holding capacitor continuesacquiring input)

TACQT Cycles TAD Cycles

AutomaticAcquisition

Time

b0b9 b6 b5 b4 b3 b2 b1b8 b7

DS39762F_JP - p.346 2013 Microchip Technology Inc.

Page 347: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

22.7 A/D コンバータの校正

PIC18F97J60 ファミリの A/D コンバータは、モジュール内で発生するあらゆるオフセットを補償する自己校正機能を備えています。校正のプロセスは自動化されており、ADCAL ビット (ADCON0<7>) をセットする事で開始します。次に GO/DONE ビットがセットされると、モジュールは「ダミー」の変換 ( 入力チャンネルのいずれも読み出さない ) を実行し、オフセットを補償するために結果値を内部で格納します。これにより、それ以後のオフセットが補償されます。

校正プロセスは、デバイスが比較的安定した動作条件にある事を前提としています。A/D 校正を使う場合、各デバイスリセット後、あるいは動作条件に大きな変化が生じた後で校正を実行します。

22.8 電力管理モードにおける動作

自動アクイジション時間とA/D変換クロックを選択する際は、電力管理モードで使われるクロック源と周波数も考慮に入れる必要があります。

デバイスが電力管理モードの時にA/Dコンバータを動作させる場合、そのモードで使うクロック源に合わせてADCON2レジスタのACQT<2:0>およびADCS<2:0>ビットを更新する必要があります。電力管理モードに移行後 ( 電力管理ランモードのいずれか )、A/D アクイジションまたは A/D 変換を開始できます。アクイジションまたは変換を一旦開始したら、これらの動作が完了するまで、デバイスには継続して同じ電力管理モードのクロック源からクロックを供給する必要があります。必要なら、変換中にデバイスを対応する電力管理アイドルに移行する事もできます。

電力管理モードのクロック周波数が 1 MHz 未満の場合、A/Dコンバータのクロック源にはRCを選択します。

スリープ中の動作には、A/D コンバータの RC クロックを選択する必要があります。ACQT<2:0> ビットが「000」に設定された状態で変換を開始する場合、変換動作までに 1 命令サイクルの遅延があるため、SLEEP命令を実行してスリープに移行できます。変換開始前に、OSCCON レジスタの IDLEN および SCS ビットをクリアしておく必要があります。

表 22-2: A/D コンバータ レジスタのまとめ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR1 PSPIF ADIF RC1IF TX1IF SSP1IF CCP1IF TMR2IF TMR1IF 71

PIE1 PSPIE ADIE RC1IE TX1IE SSP1IE CCP1IE TMR2IE TMR1IE 71

IPR1 PSPIP ADIP RC1IP TX1IP SSP1IP CCP1IP TMR2IP TMR1IP 71

PIR2 OSCFIF CMIF ETHIF r BCL1IF - TMR3IF CCP2IF 71

PIE2 OSCFIE CMIE ETHIE r BCL1IE - TMR3IE CCP2IE 71

IPR2 OSCFIP CMIP ETHIP r BCL1IP - TMR3IP CCP2IP 71

ADRESH A/D 変換結果レジスタ上位バイト 70

ADRESL A/D 変換結果レジスタ下位バイト 70

ADCON0 ADCAL - CHS3 CHS3 CHS1 CHS0 GO/DONE ADON 70

ADCON1 - - VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 70

ADCON2 ADFM - ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0 70

CCP2CON P2M1 P2M0 DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 70

PORTA RJPU - RA5 RA4 RA3 RA2 RA1 RA0 72

TRISA - - TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 71

PORTF RF7 RF6 RF5 RF4 RF3 RF2 RF1 RF0(1) 72

TRISF TRISF7 TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0(1) 71

PORTH(2) RH7 RH6 RH5 RH4 RH3 RH2 RH1 RH0 72

TRISH(2) TRISH7 TRISH6 TRISH5 TRISH4 TRISH3 TRISH2 TRISH1 TRISH0 71

凡例 : - = 未実装ビット、「0」として読み出されます。r = 予約済みです。網掛けの部分は A/D 変換では使いません。

Note 1: 100 ピンデバイスにのみ実装されています。

2: このレジスタは 64 ピンデバイスには実装されていません。

2013 Microchip Technology Inc. DS39762F_JP - p.347

Page 348: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.348 2013 Microchip Technology Inc.

Page 349: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

23.0 コンパレータ モジュール

このアナログ コンパレータ モジュールは、各種設定が可能な 2 つのコンパレータを収めています。入力は、RF1 ~ RF6 ピンと多重化されたアナログ入力と内蔵参照電圧 ( セクション 24.0「コンパレータ参照電圧モジュール」参照 ) から選択できます。デジタル出力( 通常または反転 ) はピンレベルで使用可能であり、制御レジスタを介して読み出す事もできます。

CMCON レジスタ ( レジスタ 23-1) でコンパレータの入出力を設定します。図 23-1 に、コンパレータの各種設定のブロック図を示します。

レジスタ 23-1: CMCON: コンパレータ制御レジスタ

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

C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0

bit 7 bit 0

凡例 :

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

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

bit 7 C2OUT: コンパレータ 2 出力ビット

C2INV = 0の場合 :1 = C2 VIN+ > C2 VIN-0 = C2 VIN+ < C2 VIN-

C2INV = 1の場合 :1 = C2 VIN+ < C2 VIN-0 = C2 VIN+ > C2 VIN-

bit 6 C1OUT: コンパレータ 1 出力ビット

C1INV = 0の場合 :1 = C1 VIN+ > C1 VIN-0 = C1 VIN+ < C1 VIN-

C1INV = 1の場合 :1 = C1 VIN+ < C1 VIN-0 = C1 VIN+ > C1 VIN-

bit 5 C2INV: コンパレータ 2 出力反転ビット

1 = C2 出力を反転する0 = C2 出力を反転しない

bit 4 C1INV: コンパレータ 1 出力反転ビット

1 = C1 出力を反転する0 = C1 出力を反転しない

bit 3 CIS: コンパレータ入力スイッチビット

CM<2:0> = 110の場合 :1 = C1 VIN- を RF5/AN10/CVREF に接続し

C2 VIN- を RF3/AN8 に接続する0 = C1 VIN- を RF6/AN11 に接続し

C2 VIN- を RA4/AN9 に接続する

bit 2-0 CM<2:0>: コンパレータ モードビット

図 23-1 に、コンパレータのモードと CM<2:0> ビットの設定を示します。

2013 Microchip Technology Inc. DS39762F_JP - p.349

Page 350: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

DS39762F_JP - p.350 2013 Microchip Technology Inc.

23.1 コンパレータの設定

コンパレータには、図 23-1 に示す 8 つの動作モードがあります。これらのモードの選択には、CMCON レジスタの CM<2:0> ビットを使います。各モードのコンパレータピンのデータ方向はTRISFレジスタによって制御します。コンパレータのモードを変更すると、

セクション 28.0「電気的特性」に記載された規定のモード変更遅延時間が経過するまで、コンパレータの出力レベルが無効になる場合があります。

図 23-1: コンパレータの I/O 動作モード

Note: コンパレータ モード変更中は、コンパレータ割り込みを無効にする必要があります。有効のままの場合、誤った割り込みが発生する場合があります。

C1

VIN-

VIN+ Off (Read as ‘0’)

Comparator Outputs Disabled

A

A

CM<2:0> = 000

C2

VIN-

VIN+ Off (Read as ‘0’)

A

A

C1

VIN-

VIN+ C1OUT

Two Independent Comparators

A

A

CM<2:0> = 010

C2

VIN-

VIN+ C2OUT

A

A

C1

VIN-

VIN+ C1OUT

Two Common Reference Comparators

A

A

CM<2:0> = 100

C2

VIN-

VIN+ C2OUT

A

D

C2

VIN-

VIN+ Off (Read as ‘0’)

One Independent Comparator with Output

D

D

CM<2:0> = 001

C1

VIN-

VIN+ C1OUT

A

A

C1

VIN-

VIN+ Off (Read as ‘0’)

Comparators Off (POR Default Value)

D

D

CM<2:0> = 111

C2

VIN-

VIN+ Off (Read as ‘0’)

D

D

C1

VIN-

VIN+ C1OUT

Four Inputs Multiplexed to Two Comparators

A

A

CM<2:0> = 110

C2

VIN-

VIN+ C2OUT

A

A

From VREF module

CIS = 0CIS = 1

CIS = 0CIS = 1

C1

VIN-

VIN+ C1OUT

Two Common Reference Comparators with Outputs

A

A

CM<2:0> = 101

C2

VIN-

VIN+ C2OUT

A

D

A = アナログ入力、ポートは常にゼロとして読み出し D = デジタル入力 CIS (CMCON<3>) はコンパレータ入力スイッ

CVREF

C1

VIN-

VIN+ C1OUT

Two Independent Comparators with Outputs

A

A

CM<2:0> = 011

C2

VIN-

VIN+ C2OUT

A

A

RF1/AN6/C2OUT*

RF2/AN7/C1OUT*

* TRISF<2:1> ビットをセットすると、対応するピンが入力に設定され、コンパレータ出力が無効になります。

RF6/AN11

RF5/AN10/

RF4/AN9

RF3/AN8

CVREF

RF6/AN11

RF5/AN10/

RF4/AN9

RF3/AN8

CVREF

RF6/AN11

RF5/AN10/

RF4/AN9

RF3/AN8

CVREF

RF6/AN11

RF5/AN10/

RF4/AN9

RF3/AN8

CVREF

RF6/AN11

RF5/AN10/

RF4/AN9

RF3/AN8

CVREF

RF2/AN7/C1OUT*

RF6/AN11

RF5/AN10/

RF4/AN9

RF3/AN8

CVREF

RF1/AN6/C2OUT*

RF2/AN7/C1OUT*

RF6/AN11

RF5/AN10/

RF4/AN9

RF3/AN8

CVREF

RF6/AN11

RF5/AN10/

RF4/AN9

RF3/AN8

CVREF

Page 351: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

23.2 コンパレータの動作

図 23-2 に、シングル コンパレータと、アナログ入力レベルとデジタル出力の関係を示します。VIN+ のアナログ入力が VIN- よりも小さい場合、コンパレータの出力はデジタル Low レベルです。VIN+ のアナログ入力が VIN- よりも大きい場合、コンパレータの出力はデジタル High レベルです。図 23-2 でコンパレータ出力が塗りつぶされている領域は、入力オフセットと応答時間によって不確定である事を示します。

23.3 コンパレータの参照電圧

コンパレータの動作モードに応じて、外部または内部の参照電圧を使えます。VIN- に印加されているアナログ信号を、VIN+ の信号と比較し、その結果に基づいてコンパレータのデジタル出力を調整します (図 23-2)。

図 23-2: シングル コンパレータ

23.3.1 外部参照信号

外部の参照電圧を使う場合、コンパレータ モジュール内の 2 つのコンパレータを、同じ参照電圧源によって動作させるか、異なる参照電圧源によって動作させるかを設定できます。しかし、しきい値検出アプリケーションでは、同じ参照電圧が必要となる場合があります。参照信号は、VSS から VDD のレンジで、コンパレータのどちらのピンに印加してもかまいません。

23.3.2 内部参照信号

コンパレータ モジュールでは、コンパレータ参照電圧モジュールによって内部生成した参照電圧を選択する事もできます。このモジュールの詳細は、セクション 24.0「コンパレータ参照電圧モジュール」に記載しています。

内部参照電圧を使えるのは、4 つの入力が 2 つのコンパレータ入力に多重化されるモード (CM<2:0> = 110)のみです。このモードでは、内部参照電圧が両方のコンパレータの VIN+ ピンに印加されます。

23.4 コンパレータの応答時間

応答時間とは、新しい参照電圧または入力源を選択してからコンパレータ出力が有効なレベルに達するまでの 小時間です。内部参照電圧を変更した場合、コンパレータ出力を使う際に内部参照電圧の 大遅延を考慮する必要があります。または、コンパレータの 大遅延を使います (セクション 28.0「電気的特性」参照 )。

23.5 コンパレータ出力

コンパレータの出力はCMCONレジスタから読み出します。これらのビットは読み出し専用です。コンパレータの出力を I/O ピンの RF1 と RF2 に直接出力する事もできます。RF1 と RF2 ピンの出力パスにあるマルチプレクサを有効にすると出力の切り換えが行われ、各ピンはコンパレータの非同期出力になります。各コンパレータの不確かさは、仕様に記載されている入力オフセット電圧と応答時間に関連しています。図 23-2に、コンパレータ出力のブロック図を示します。

このモードでも、TRISF ビットが RF1 と RF2 ピンの出力を有効 / 無効にする機能を果たします。

コンパレータの出力極性は、C2INV および C1INV ビット (CMCON<5:4>) によって変更できます。

-

+VIN+

VIN-Output

Output

VIN-

VIN+

Note 1: ポートレジスタを読み出す場合、アナログ入力として設定したピンは全て「0」として読み出されます。デジタル入力として設定されているピンは、シュミットトリガ入力仕様に従ってアナログ入力を変換します。

2: デジタル入力として定義したピンにアナログ電圧を印加すると、入力バッファに仕様を超える電流が流れる場合があります。

2013 Microchip Technology Inc. DS39762F_JP - p.351

Page 352: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 23-3: コンパレータ出力のブロック図

23.6 コンパレータ割り込み

いずれかのコンパレータの出力値が変化するごとにコンパレータ割り込みフラグがセットされます。実際に起こった変化を判断するには、CMCON<7:6> から読み出される出力ビットのステータス情報をソフトウェアに保持しておく必要があります。CMIF ビット(PIR2<6>) は、コンパレータ割り込みフラグです。CMIF ビットは、クリアしてリセットする必要があります。このレジスタには「1」を書き込む事ができるため、割り込みをシミュレートする事もできます。

割り込みを有効にするには、CMIE ビット (PIE2<6>)とPEIEビット (INTCON<6>)の両方をセットする必要があります。さらに、GIE ビット (INTCON<7>) もセットする必要があります。これらのビットのどちらかがクリアの場合、割り込み条件の発生時に CMIF ビットはセットされますが、割り込みは有効になりません。

割り込みサービスルーチン内で、以下の方法で割り込みをクリアできます。

a) CMCON に対する読み書きで不一致条件を解消する

b) フラグビット CMIF をクリアする

条件が不一致のままである場合、フラグビット CMIFはセットされたままです。CMCON を読み出す事で不一致条件が解消し、フラグビット CMIF をクリアできるようになります。

23.7 スリープ中のコンパレータの動作

コンパレータがアクティブでデバイスがスリープの場合、コンパレータはアクティブのままです。割り込みが有効の場合、割り込みは機能します。この割り込みによって、デバイスはスリープから復帰します ( 有効な場合 )。コンパレータ仕様に記載されているように、動作中の各コンパレータは電流を消費します。スリープ中の電力消費を 小限とするには、スリープに移行する前にコンパレータをOFFにします (CM<2:0> = 111)。デバイスがスリープから復帰しても、CMCON レジスタの内容は変化しません。

23.8 リセットの影響

デバイスをリセットすると、CMCON レジスタが強制的にリセット状態になり、コンパレータ モジュールがOFF になります (CM<2:0> = 111)。しかし、入力ピン(RF3~RF6)はデバイスリセット時に既定値でアナログ入力に設定されます。これらのピンの I/O 設定は、PCFG<3:0>ビット(ADCON1<3:0>)の設定によって決まります。従って、リセット時にアナログ入力が与えられている場合、デバイス電流は 小限に抑えられます。

D Q

EN

To CxOUTpin

BusData

Set

MU

LTIP

LE

X

CMIFbit

-+

Port Pins

Read CMCON

Reset

FromOther

Comparator

CxINV

D Q

EN CL

Note: 読み出し動作の実行中 (Q2 サイクルの開始時点 ) に、CMCON レジスタ (C1OUTまたは C2OUT) が変化した場合、CMIF(PIR2レジスタ )割り込みフラグがセットされない事があります。

DS39762F_JP - p.352 2013 Microchip Technology Inc.

Page 353: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

23.9 アナログ入力接続に関する注意事項

図 23-4 に、アナログ入力回路の概略図を示します。アナログピンは、デジタル出力に接続されているため、VDDとVSSへの逆バイアスのダイオードが接続されています。従って、アナログ入力は VSS から VDD のレンジ内の電圧である必要があります。入力電圧がこのレンジの上下に 0.6 V を超えて逸脱すると、いずれか

一方のダイオードが順バイアスされラッチアップ条件が発生する恐れがあります。アナログソースの 大推奨ソース インピーダンス値は 10 kです。アナログ入力ピンに接続するコンデンサやツェナー ダイオード等の外付け部品は、リーク電流がほとんどないものにします。

図 23-4: コンパレータのアナログ入力モデル

表 23-1: コンパレータ モジュールに関連するレジスタ

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

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 69

PIR2 OSCFIF CMIF ETHIF r BCL1IF - TMR3IF CCP2IF 71

PIE2 OSCFIE CMIE ETHIE r BCL1IE - TMR3IE CCP2IE 71

IPR2 OSCFIP CMIP ETHIP r BCL1IP - TMR3IP CCP2IP 71

CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 70

CVRCON CVREN CVROE CVRR CVRSS CVR3 CVR2 CVR1 CVR0 70

PORTF RF7 RF6 RF5 RF4 RF3 RF2 RF1 RF0 72

TRISF TRISF7 TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0 71

凡例 : - = 未実装ビット、「0」として読み出されます。r = 予約済みです。網掛けの部分はコンパレータ モジュールでは使いません。

VA

RS < 10k

AIN

CPIN5 pF

VDD

VT = 0.6V

VT = 0.6V

RIC

ILEAKAGE±500 nA

VSS

凡例 : CPIN = 入力静電容量VT = しきい値電圧ILEAKAGE = 各種接合によるピン部位のリーク電流RIC = 配線抵抗RS = ソース インピーダンスVA = アナログ電圧

ComparatorInput

2013 Microchip Technology Inc. DS39762F_JP - p.353

Page 354: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.354 2013 Microchip Technology Inc.

Page 355: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

24.0 コンパレータ参照電圧モジュール

コンパレータ参照電圧モジュールは、参照電圧を選択できる 16 タップの抵抗ラダー ネットワークです。その主目的はアナログ コンパレータへの参照電圧供給ですが、コンパレータとは別に使う事もできます。

図 24-1 に、このモジュールのブロック図を示します。抵抗ラダーは、CVREF の値として 2 つのレンジを提供できるように分割されています。また、非使用時の消費電力を低減するパワーダウン機能も備えています。本モジュールの参照電圧源は、デバイスの VDD/VSS または外部参照電圧のいずれかより供給できます。

24.1 コンパレータ参照電圧の設定

参照電圧モジュールは、CVRCON レジスタ ( レジスタ 24-1) を使います。コンパレータ参照電圧は、それぞれ 16 段階からなる 2 つの出力電圧レンジを提供します。使うレンジは、CVRR ビット (CVRCON<5>) に

よって選択します。2 つのレンジ間の主な差異は、CVREF 選択ビット (CVR<3:0>) で選択するステップサイズであり、一方のレンジの方がより細かい分解能を提供します。コンパレータ参照電圧は以下の式で計算します。

CVRR = 1の場合 :CVREF = ((CVR<3:0>)/24) x (CVRSRC)

CVRR = 0の場合 :CVREF = (CVRSRC/4) + ((CVR<3:0>)/32) x(CVRSRC)

コンパレータ参照電圧源は、VDD/VSS と、RA2/RA3 と多重化した外部VREF+/VREF-のいずれかより供給できます。この電圧源は、CVRSS ビット (CVRCON<4>)で選択します。

CVREF 出力を変更する際は、コンパレータ参照電圧のセトリングタイムを考慮する必要があります ( セクション 28.0「電気的特性」の表 28-3 参照 )。

レジスタ 24-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 = 読み出し可能ビット W = 書き込み可能ビット U = 未実装ビット、「0」として読み出し

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

bit 7 CVREN: コンパレータ参照電圧イネーブルビット

1 = CVREF 回路の電源を ON にする 0 = CVREF 回路の電源を OFF にする

bit 6 CVROE: コンパレータ VREF 出力イネーブルビット (1)

1 = CVREF 電圧レベルを RF5/AN10/CVREF ピンにも出力する 0 = CVREF 電圧レベルを RF5/AN10/CVREF ピンから切り離す

bit 5 CVRR: コンパレータ VREF レンジ選択ビット

1 = 0 ~ 0.667 CVRSRC、ステップサイズ CVRSRC/24 (Low レンジ )0 = 0.25 CVRSRC ~ 0.75 CVRSRC、ステップサイズ CVRSRC/32 (High レンジ )

bit 4 CVRSS: コンパレータ VREF 参照電圧源選択ビット

1 = コンパレータ参照電圧源を CVRSRC = (VREF+) - (VREF-) とする0 = コンパレータ参照電圧源を CVRSRC = VDD - VSS とする

bit 3-0 CVR<3:0>: コンパレータ VREF 値選択ビット (0 (CVR<3:0>) 15)

CVRR = 1の場合 :CVREF = ((CVR<3:0>)/24) (CVRSRC)

CVRR = 0の場合 :CVREF = (CVRSRC/4) + ((CVR<3:0>)/32) (CVRSRC)

Note 1: CVROE は TRISF<5> ビットの設定より優先されます。

2013 Microchip Technology Inc. DS39762F_JP - p.355

Page 356: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 24-1: コンパレータ参照電圧のブロック図

24.2 参照電圧の精度と誤差

モジュールの回路構成上、参照電圧の全レンジを実現する事はできません。抵抗ラダー ネットワークの上下にトランジスタ ( 図 24-1) がある事から、CVREF を参照電圧源のレールに近づけられないためです。参照電圧はこの参照電圧源から供給されるため、その変動に従って CVREF 出力も変化します。参照電圧の試験済み絶対精度は、セクション 28.0「電気的特性」を参照してください。

24.3 スリープ中の動作

割り込み、またはウォッチドッグ タイマのタイムアウトによって、デバイスがスリープから復帰した場合、CVRCON レジスタの内容は変化しません。スリープ中の消費電流をできるだけ小さくするには、参照電圧を無効にします。

24.4 リセットの影響

デバイスリセットは、CVREN (CVRCON<7>) ビットをクリアする事で参照電圧を無効化します。このリセットは、さらに CVROE (CVRCON<6>) ビットをクリアして参照電圧を RA2 ピンから切り離し、CVRR(CVRCON<5>) ビットをクリアして高圧レンジを選択します。CVR 値選択ビットもクリアされます。

24.5 接続に関する注意事項

参照電圧モジュールは、コンパレータ モジュールとは独立して動作します。CVROE ビットがセットされている場合、参照電圧ジェネレータの出力を RF5 ピンに接続できます。RA2 ピンをデジタル入力に設定した状態で、このピンへの参照電圧出力を有効にすると、消費電流が増加します。CVRSS を有効にして RF5 をデジタル出力として接続した場合も、消費電流が増加します。

RF5 ピンは、( 駆動能力は限定されているけれども ) 簡単な D/A 出力として使えます。VREF を外部に接続して参照電圧を出力する場合、電流駆動能力に制約があるため、バッファを使う必要があります。図 24-2 に、バッファの使用例を示します。

16-

to-1

MU

X

CVR<3:0>8R

RCVREN

CVRSS = 0VDD

VREF+CVRSS = 1

8R

CVRSS = 0

VREF-CVRSS = 1

R

R

R

R

R

R

16 Steps

CVRR

CVREF

DS39762F_JP - p.356 2013 Microchip Technology Inc.

Page 357: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 24-2: コンパレータ参照電圧の出力バッファの例

表 24-1: コンパレータ参照電圧に関連するレジスタ

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

CVRCON CVREN CVROE CVRR CVRSS CVR3 CVR2 CVR1 CVR0 70

CMCON C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0 70

TRISF TRISF7 TRISF6 TRISF5 TRISF4 TRISF3 TRISF2 TRISF1 TRISF0 71

凡例 : - = 未実装ビット、「0」として読み出されます。網掛けの部分はコンパレータ参照電圧モジュールでは使いません。

CVRef Output+-

CVREF Module

Voltage Reference

Output Impedance

R(1)

RF5

Note 1: R は、コンパレータ参照電圧コンフィグレーション ビット CVRCON<5> と CVRCON<3:0> によって決ま

ります。

PIC18FXXJ6X

2013 Microchip Technology Inc. DS39762F_JP - p.357

Page 358: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.358 2013 Microchip Technology Inc.

Page 359: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

25.0 CPU の特殊機能

PIC18F97J60 ファミリは、外付け部品を省いてコストを低減、信頼性を向上させるために以下の機能を備えています。

• オシレータの選択

• リセット :

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

- パワーアップ タイマ (PWRT)

- オシレータ起動タイマ (OST)

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

• 割り込み

• ウォッチドッグ タイマ (WDT)

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

• 2 段階起動

• コード保護

• インサーキット シリアル プログラミング

オシレータは、アプリケーションの周波数、電力、精度、コストに合わせて構成できます。全オプションの詳細は、セクション 3.0「オシレータの設定」で説明しています。

デバイスのリセットと割り込みの詳細は、本データシートの別のセクションで詳しく説明しています。

PIC18F97J60 ファミリは、リセット用のパワーアップタイマとオシレータ起動タイマに加えて、ソフトウェアで設定可能なウォッチドッグ タイマを備えています。

また、内部 RC オシレータによりフェイルセーフ クロックモニタ (FSCM)と2段階起動も実現しています。FSCM は周辺クロックをバックグラウンドで監視し、障害発生時に自動的に内部 RC オシレータのクロックに切り換える機能です。2 段階起動とは、プライマリクロック源が起動して安定するのを待たずに、ほぼ瞬時にコード実行を開始できる機能です。

これらの機能は全て適切なコンフィグレーション レジスタのビットによって有効 / 無効を切り換え、設定を行います。

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

コンフィグレーション ビットをプログラムする (「0」として読み出し ) か、プログラムしない (「1」として読み出し ) かによって、デバイスの各種設定が可能です。これらのビットは、プログラムメモリの 300000h から始まるアドレスに割り当てられています。表 25-1 に、コンフィグレーション ビットの全リストを示します。各種ビット機能の詳細な説明をレジスタ 25-1 ~レジスタ 25-8 に記載します。

25.1.1 PIC18F97J60 ファミリの設定における注意事項

PIC18F97J60 ファミリは、コンフィグレーション情報の格納に永続的なメモリレジスタを使いません。コンフィグレーション バイトは揮発性メモリとして実装されます。これは、デバイスの電源を投入するたびに、コンフィグレーション データをプログラムする必要がある事を意味します。

コンフィグレーション データは内蔵プログラムメモリ空間 上位の 4 ワードに格納されます。これらのワードはフラッシュ コンフィグレーション ワードと呼ばれ、表 6-1 に示すプログラムメモリ空間内に配置されています。コンフィグレーション ワードは、表 25-1 の記載と同じ順序で格納されます。つまり、CONFIG1L が 下位、CONFIG3H が 上位です。このデータはデバイス起動時に、自動的に適切なコンフィグレーション レジスタに読み込まれます。

これらのデバイス用にアプリケーションを作成する場合、コンフィグレーション データのためのフラッシュコンフィグレーション ワードのアドレスを具体的に割り当てる必要があります。これは、コードのコンパイル時にこのアドレスにプログラムコードが格納されないようにするためです。

コンフィグレーション ビットに使う揮発性メモリセルは、パワーオン リセット時に必ず「1」にリセットされます。その他の種類のリセットイベントでは、前回プログラムされた値が保持され、プログラムメモリから再読み込みせずに、そのまま適用されます。

プログラムメモリ内の CONFIG1H、CONFIG2H、CONFIG3H の上位 4 ビットも「1111」とする事が必要です。これは、万一これらのアドレスが誤って実行されたとしても、これらのコンフィグレーション ワードが NOP命令と見なされるようにするためです。対応する位置にはコンフィグレーション ビットが実装されていないため、その位置に「1」を書き込んでもデバイスの動作には影響しません。

コード実行中に誤ってコンフィグレーションを変更する事のないよう、プログラマブルなコンフィグレーション ビットは全てリセット後の書き込みは1回限りです。電源投入によって 初にビットが書き込まれたら、再度書き込む事はできません。デバイスのコンフィグレーションを変更するには、電源の遮断 / 再投入が必要です。

2013 Microchip Technology Inc. DS39762F_JP - p.359

Page 360: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 25-1: コンフィグレーション ビットとデバイス ID

ファイル名 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0既定値 /

未プログラム時の

値 (1)

300000h CONFIG1L DEBUG XINST STVREN — — — — WDTEN 110- ---1

300001h CONFIG1H —(2) —(2) —(2) —(2) —(3) CP0 — — ---- 01--

300002h CONFIG2L IESO FCMEN — — — FOSC2 FOSC1 FOSC0 11-- -111

300003h CONFIG2H -(2) -(2) -(2) -(2) WDTPS3 WDTPS2 WDTPS1 WDTPS0 ---- 1111

300004h CONFIG3L WAIT(4) BW(4) EMB1(4) EMB0(4) EASHFT(4) — — — 1111 1---

300005h CONFIG3H —(2) —(2) —(2) —(2) — ETHLED ECCPMX(5) CCP2MX(5) ---- -111

3FFFFEh DEVID1 DEV2 DEV1 DEV0 REV4 REV3 REV2 REV1 REV0 xxxx xxxx(6)

3FFFFFh DEVID2 DEV10 DEV9 DEV8 DEV7 DEV6 DEV5 DEV4 DEV3 xxxx xxxx(6)

凡例 : x = 未知、u = 不変、- = 未実装です。網掛けの部分は未実装で、「0」として読み出されます。

Note 1: 工場出荷時の未プログラム状態のデバイスに対してパワーオン リセットを実行した後の値です。その他の全てのリセッ

ト状態では、コンフィグレーション バイトは前回プログラムした状態を維持します。

2: プログラムメモリ内のこれらのビットの値は常に「1」にしておきます。これにより、このアドレスが誤って実行され

たとしても NOPと見なされるようにします。

3: このビットは常に「0」のままにしておく必要があります。

4: 100 ピンデバイスにのみ実装されています。

5: 80 ピン /100 ピンデバイスにのみ実装されています。

6: DEVID の値については、レジスタ 25-7 とレジスタ 25-8 を参照してください。これらのレジスタは読み出し専用で、

ユーザは書き込みできません。

DS39762F_JP - p.360 2013 Microchip Technology Inc.

Page 361: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 25-1: CONFIG1L: コンフィグレーション レジスタ 1 Low ( バイトアドレス 300000h)

R/WO-1 R/WO-1 R/WO-0 U-0 U-0 U-0 U-0 R/WO-1

DEBUG XINST STVREN — — — — WDTEN

bit 7 bit 0

凡例 :

R = 読み出し可能ビット WO = ライトワンス ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 「1」 = ビットはセット 「0」 = ビットはクリア

bit 7 DEBUG: バックグラウンド デバッガ イネーブルビット

1 = バックグラウンド デバッガを無効にする。RB6 と RB7 を汎用 I/O ピンに設定する0 = バックグラウンド デバッガを有効にする。RB6とRB7をインサーキット デバッグ専用に設定する

bit 6 XINST: 拡張命令セット イネーブルビット

1 = 拡張命令セットとインデックス付きアドレッシング モードを有効にする0 = 拡張命令セットとインデックス付きアドレッシング モードを無効にする ( レガシーモード )

bit 5 STVREN: スタック オーバーフロー / アンダーフロー リセット イネーブルビット

1 = スタック オーバーフロー / アンダーフローによるリセットを有効にする 0 = スタック オーバーフロー / アンダーフローによるリセットを無効にする

bit 4-1 未実装 :「0」として読み出し

bit 0 WDTEN: ウォッチドッグ タイマ イネーブルビット

1 = WDT を有効にする0 = WDT を無効にする (SWDTEN ビットで制御 )

レジスタ 25-2: CONFIG1H: コンフィグレーション レジスタ 1 High ( バイトアドレス 300001h)

U-0 U-0 U-0 U-0 U-0(1) R/WO-1 U-0 U-0

—(2) —(2) —(2) —(2) — CP0 — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット WO = ライトワンス ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 「1」 = ビットはセット 「0」 = ビットはクリア

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

bit 2 CP0: コード保護ビット

1 = プログラムメモリのコード保護を無効にする 0 = プログラムメモリのコード保護を有効にする

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

Note 1: このビットは常に「0」のままにしておく必要があります。

2: プログラムメモリ内のこれらのビットの値は常に「1」にしておきます。これにより、このアドレスが誤って実行されたとしても NOPと見なされるようにします。

2013 Microchip Technology Inc. DS39762F_JP - p.361

Page 362: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 25-3: CONFIG2L: コンフィグレーション レジスタ 2 Low ( バイトアドレス 300002h)

R/WO-1 R/WO-1 U-0 U-0 U-0 R/WO-1 R/WO-1 R/WO-1

IESO FCMEN — — — FOSC2 FOSC1 FOSC0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット WO = ライトワンス ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 「1」 = ビットはセット 「0」 = ビットはクリア

bit 7 IESO: 2 段階起動 ( 内部 / 外部オシレータ切り換え ) 制御ビット

1 = 2 段階起動を有効にする0 = 2 段階起動を無効にする

bit 6 FCMEN: フェイルセーフ クロックモニタ イネーブルビット

1 = フェイルセーフ クロックモニタを有効にする0 = フェイルセーフ クロックモニタを無効にする

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

bit 2 FOSC2: 既定値 / リセット時システムクロック選択ビット

1 = OSCCON<1:0> = 00の場合、FOSC<1:0> でシステムクロックとして選択したクロックを有効にする

0 = OSCCON<1:0> = 00の場合、INTRC をシステムクロックとして有効にする

bit 1-0 FOSC<1:0>: オシレータ選択ビット

11 = ECオシレータを選択し、ソフトウェア制御でPLLを有効にする。OSC2ピンはCLKOを出力する10 = EC オシレータを選択する。OSC2 ピンは CLKO を出力する01 = HS オシレータを選択し、ソフトウェア制御で PLL を有効にする00 = HS オシレータを選択する

DS39762F_JP - p.362 2013 Microchip Technology Inc.

Page 363: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 25-4: CONFIG2H: コンフィグレーション レジスタ 2 High ( バイトアドレス 300003h)

U-0 U-0 U-0 U-0 R/WO-1 R/WO-1 R/WO-1 R/WO-1

—(1) —(1) —(1) —(1) WDTPS3 WDTPS2 WDTPS1 WDTPS0

bit 7 bit 0

凡例 :

R = 読み出し可能ビット WO = ライトワンス ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 「1」 = ビットはセット 「0」 = ビットはクリア

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

bit 3-0 WDTPS<3:0>: ウォッチドッグ タイマ ポストスケール選択ビット

1111 = 1:32,7681110 = 1:16,3841101 = 1:8,1921100 = 1:4,0961011 = 1:2,0481010 = 1:1,0241001 = 1:5121000 = 1:2560111 = 1:1280110 = 1:640101 = 1:320100 = 1:160011 = 1:80010 = 1:40001 = 1:20000 = 1:1

Note 1: プログラムメモリ内のこれらのビットの値は常に「1」にしておきます。これにより、このアドレスが誤って実行されたとしても NOPと見なされるようにします。

2013 Microchip Technology Inc. DS39762F_JP - p.363

Page 364: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 25-5: CONFIG3L: コンフィグレーション レジスタ 3 Low ( バイトアドレス 300004h)

R/WO-1 R/WO-1 R/WO-1 R/WO-1 R/WO-1 U-0 U-0 U-0

WAIT(1) BW(1) EMB1(1) EMB0(1) EASHFT(1) — — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット WO = ライトワンス ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 「1」 = ビットはセット 「0」 = ビットはクリア

bit 7 WAIT: 外部バスウェイト イネーブルビット (1)

1 = 外部メモリバスに対する操作のウェイトステートを無効にする0 = 外部メモリバスに対する操作のウェイトステートを有効にし、MEMCON<5:4> で選択する

bit 6 BW: データバス幅選択ビット (1)

1 = 16 ビットデータ幅モード0 = 8 ビットデータ幅モード

bit 5-4 EMB<1:0>: 外部メモリバス コンフィグレーション ビット (1)

11 = マイクロコントローラ モード、外部バスを無効にする10 = 拡張マイクロコントローラ モード、12 ビット アドレッシング モード01 = 拡張マイクロコントローラ モード、16 ビット アドレッシング モード00 = 拡張マイクロコントローラ モード、20 ビット アドレッシング モード

bit 3 EASHFT: 外部アドレスバス シフト イネーブルビット (1)

1 = アドレスシフトを有効にする。外部バスのアドレスが 000000h から開始するようにオフセットする

0 = アドレスシフトを無効にする。外部バスのアドレスをそのまま PC の値にする

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

Note 1: 100 ピンデバイスにのみ実装されています。

DS39762F_JP - p.364 2013 Microchip Technology Inc.

Page 365: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 25-6: CONFIG3H: コンフィグレーション レジスタ 3 High ( バイトアドレス 300005h)

U-0 U-0 U-0 U-0 U-0 R/WO-1 R/WO-1 R/WO-1

—(1) —(1) —(1) —(1) — ETHLED ECCPMX(2) CCP2MX(2)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット WO = ライトワンス ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 「1」 = ビットはセット 「0」 = ビットはクリア

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

bit 2 ETHLED: Ethernet LED イネーブルビット

1 = Ethernet モジュール有効時には RA0/RA1 を LEDA/LEDB と多重化し、無効時は I/O として機能させる

0 = RA0/RA1 を、Ethernet モジュールの状態に関係なく I/O として機能させる

bit 1 ECCPMX: ECCP MUX ビット (2)

1 = ECCP1 出力 (P1B/P1C) を RE6/RE5 と多重化するECCP3 出力 (P3B/P3C) を RE4/RE3 と多重化する

0 = ECCP1 出力 (P1B/P1C) を RH7/RH6 と多重化するECCP3 出力 (P3B/P3C) を RH5/RH4 と多重化する

bit 0 CCP2MX: ECCP2 MUX ビット (2)

1 = ECCP2/P2A を RC1 と多重化する0 = マイクロコントローラ モード時、ECCP2/P2A を RE7 と多重化する (80 ピン /100 ピンデバイス )

または、拡張マイクロコントローラ モード時、RB3 と多重化する (100 ピンデバイスのみ )

Note 1: プログラムメモリ内のこれらのビットの値は常に「1」にしておきます。これにより、このアドレスが誤って実行されたとしても NOPと見なされるようにします。

2: 80 ピン /100 ピンデバイスにのみ実装されています。

2013 Microchip Technology Inc. DS39762F_JP - p.365

Page 366: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

レジスタ 25-7: DEVID1: PIC18F97J60 ファミリのデバイス ID レジスタ 1

R R R R R R R R

DEV2 DEV1 DEV0 REV4 REV3 REV2 REV1 REV0

bit 7 bit 0

凡例 :

R = 読み出し専用ビット P = プログラム可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 u = プログラムした状態から不変

bit 7-5 DEV<2:0>: デバイス ID ビット

レジスタ 25-8 の一覧参照

bit 4-0 REV<4:0>: リビジョン ID ビット

デバイスのリビジョンを示す

レジスタ 25-8: DEVID2: PIC18F97J60 ファミリのデバイス ID レジスタ 2

R R R R R R R R

DEV10 DEV9 DEV8 DEV7 DEV6 DEV5 DEV4 DEV3

bit 7 bit 0

凡例 :

R = 読み出し専用ビット P = プログラム可能ビット U = 未実装ビット、「0」として読み出し

-n = デバイス未プログラム時の値 u = プログラムした状態から不変

bit 7-0 DEV<10:3>: デバイス ID ビット :

DEV<10:3>(DEVID2<7:0>)

DEV<2:0>(DEVID1<7:5>) デバイス名

0001 1000 000 PIC18F66J60

0001 1111 000 PIC18F66J65

0001 1111 001 PIC18F67J60

0001 1000 001 PIC18F86J60

0001 1111 010 PIC18F86J65

0001 1111 011 PIC18F87J60

0001 1000 010 PIC18F96J60

0001 1111 100 PIC18F96J65

0001 1111 101 PIC18F97J60

DS39762F_JP - p.366 2013 Microchip Technology Inc.

Page 367: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

25.2 ウォッチドッグ タイマ (WDT)

PIC18F97J60ファミリでは、INTRCオシレータによって WDT を駆動します。WDT が有効な場合、クロック源も有効です。WDT の周期は公称 4 ms で、安定度はINTRC オシレータと同じです。

WDT の周期 4 ms を 16 ビット ポストスケーラで逓倍します。WDT ポストスケーラの出力は、コンフィグレーション レジスタ 2H の WDTPS ビットで制御するマルチプレクサによって選択します。出力可能な周期は、4 ms ~ 131.072 s (2.18 min) の範囲です。WDT とポストスケーラは、SLEEPまたは CLRWDT命令が実行された場合、またはクロック障害 ( プライマリまたはTimer1 オシレータ ) が発生した場合クリアされます。

25.2.1 制御レジスタ

WDTCONレジスタ(レジスタ 25-9)は読み書き可能なレジスタです。SWDTEN ビットは WDT の動作を有効または無効にします。これにより、ソフトウェアがWDTEN コンフィグレーション ビットの設定をオーバーライドしてWDTを有効化できるようになります。ただし、コンフィグレーション ビットによって WDTが無効化されている場合に限ります。

図 25-1: WDT のブロック図

Note 1: CLRWDTおよびSLEEP命令を実行するとWDT とポストスケーラのカウントがクリアされます。

2: CLRWDT 命令を実行すると、ポストスケーラのカウントがクリアされます。

INTRC Oscillator

WDT

Wake-up from

Reset

WDT

WDT Counter

Programmable Postscaler1:1 to 1:32,768

Enable WDT

WDTPS<3:0>

SWDTEN

CLRWDT

4

Power-Managed

ResetAll Device Resets

Sleep

INTRC Control

128

Modes

2013 Microchip Technology Inc. DS39762F_JP - p.367

Page 368: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 25-2: ウォッチドッグ タイマに関連するレジスタのまとめ

レジスタ 25-9: WDTCON: ウォッチドッグ タイマ制御レジスタ

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

— — — — — — — SWDTEN(1)

bit 7 bit 0

凡例 :

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

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

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

bit 0 SWDTEN: ソフトウェア制御ウォッチドッグ タイマ イネーブルビット (1)

1 = ウォッチドッグ タイマを有効にする0 = ウォッチドッグ タイマを無効にする

Note 1: コンフィグレーション ビット WDTEN をセットしている場合、このビットは無効です。

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

RCON IPEN — CM RI TO PD POR BOR 70

WDTCON — — — — — — — SWDTEN 70

凡例 : ― = 未実装、「0」として読み出されます。網掛けの部分はウォッチドッグ タイマでは使いません。

DS39762F_JP - p.368 2013 Microchip Technology Inc.

Page 369: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

25.3 内蔵電圧レギュレータ

PIC18F97J60 ファミリの全デバイスはコア デジタルロジックに公称 2.5 V を給電しています。このため、これより高い標準電圧 (3.3 V 等 ) による動作が必要な回路設計では問題が生じる可能性があります。システム設計を容易にするため、PIC18F97J60 ファミリの全デバイスは内蔵レギュレータを備え、VDD でコアロジックを実行できるようにしています。

レギュレータは ENVREG ピンによって制御します。このピンに VDD を接続する事でレギュレータが有効になります。レギュレータはこのピンとは別の VDD ピンからコアに電力を供給します。レギュレータを有効にする場合、VDDCORE/VCAP ピンに低 ESR のフィルタ コンデンサを接続する必要があります ( 図 25-2)。これは、レギュレータの安定性維持に役立ちます。フィルタ コンデンサの推奨値はセクション 28.3「DC 特性 :PIC18F97J60 ファミリ ( 産業用 )」に記載しています。

ENVREG ピンを VSS に接続すると、レギュレータは無効になります。その場合、コアロジック用の別電源( 公称 2.5 V) をデバイスの VDDCORE/VCAP ピンに接続する必要があります。これにより I/O ピンをより高い電圧 (3.3 V 等 ) で使えます。または、VDDCORE/VCAP

ピンと VDD ピンを接続して、より低い公称電圧で動作させる事もできます。可能な構成は、図 25-2 を参照してください。

25.3.1 内蔵レギュレータと BOR

内蔵レギュレータを有効にした場合、PIC18F97J60ファミリではシンプルなブラウンアウト リセット機能を利用できます。レギュレータに供給される電圧が動作に必要なレベルを下回ると、レギュレータ リセット回路によってブラウンアウト リセット (BOR) が発生します。BOR イベントは、BOR フラグビット(RCON<0>) によってキャプチャされます。

BOR 動作の詳細は、セクション 5.4「ブラウンアウトリセット (BOR)」とセクション 5.4.1「BOR の検出」で説明しています。ブラウンアウト リセットの電圧レベルは、セクション 28.1「DC 特性 : 電源電圧PIC18F97J60 ファミリ ( 産業用 )」に記載しています。

25.3.2 電源投入時の要件

内蔵レギュレータは、デバイスの電源投入時の要件を満たすように設計されています。レギュレータを使わない場合、電源投入時の要件を逸脱しないように注意する必要があります。電源投入中は、VDDCORE が VDD

+ 0.3 V を上回らないようにする必要があります。

図 25-2: 内蔵レギュレータの接続

VDD

ENVREG

VDDCORE/VCAP

VSS

PIC18FXXJ6X

3.3V(1)2.5V(1)

VDD

ENVREG

VDDCORE/VCAP

VSS

PIC18FXXJ6X

CF

3.3V

Regulator Enabled (ENVREG tied to VDD):

Regulator Disabled (ENVREG tied to ground):

VDD

ENVREG

VDDCORE/VCAP

VSS

PIC18FXXJ6X

2.5V(1)

(VDD > VDDCORE)

Note 1: これらは標準的な動作電圧です。VDD と

VDDCORE のフル動作レンジについては、

セクション 28.1「DC 特性 : 電源」を参照

してください。

(VDD = VDDCORE)

2013 Microchip Technology Inc. DS39762F_JP - p.369

Page 370: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

25.4 2 段階起動

2 段階起動を使うと、マイクロコントローラはプライマリ クロック源が利用可能になるまで INTRC オシレータをクロック源として使います。これにより、コード実行開始までの遅れを短縮できます。この機能はIESO コンフィグレーション ビットをセットすると有効になります。

2 段階起動を有効にすべきなのは、プライマリ オシレータモードが HS または HSPLL ( 水晶振動子 ) モードの場合のみです。EC および ECPLL モードではオシレータ起動タイマによる遅延が不要のため、2 段階起動は無効にします。

2 段階起動を有効にすると、リセット時とスリープからの復帰時に、パワーオン リセット後のパワーアップタイマのタイムアウト後、デバイスはクロック源として内部オシレータ ブロックを使って動作します。これにより、プライマリ オシレータの安定動作を待たずに(OST 実行中に )、コード実行を開始できます。OST がタイムアウトすると、デバイスは自動的に PRI_RUNモードに切り換わります。

他の電力管理モードでは 2 段階起動は使いません。プライマリ クロック源が使用可能になるまで、デバイスは現在選択されているクロック源によって駆動されます。IESO ビットの設定は無視されます。

25.4.1 2 段階起動を使う場合の注意事項

2 段階起動中に INTRC オシレータで動作している間も、デバイスは SLEEP命令 ( セクション 4.1.4「複数の SLEEP 命令」参照 ) を含む電力管理モード移行のための通常のコマンド シーケンスに従います。これは、OST がタイムアウトする前でも、ユーザコードによる SCS<1:0> ビットの設定変更または SLEEP 命令の発行が可能である事を意味します。従って、デバイスを短時間だけ復帰させて定期的なタスクを実行させ、プライマリ オシレータによる動作に切り換わる前にスリープに戻るという使い方も可能です。

ユーザコードでOSTSビット (OSCCON<3>)のステータスを調べ、プライマリ クロック源が現在デバイスにクロックを供給しているかどうかを確認する事もできます。このビットがセットされていれば、プライマリオシレータがクロックを供給中です。クリアされている場合、リセットまたはスリープからの復帰中で、内部オシレータ ブロックがクロックを供給しています。

図 25-3: 2 段階起動のタイミング (INTRC から HSPLL への遷移 )

Q1 Q3 Q4

OSC1

Peripheral

Program PC PC + 2

INTRC

PLL Clock

Q1

PC + 6

Q2

Output

Q3 Q4 Q1

CPU Clock

PC + 4

Clock

Counter

Q2 Q2 Q3

Note 1: TOST = 1024 TOSC、TPLL = 約 2 ms です。図に示したこれら 2 つの時間の長さの比は、実際とは異なります。

Wake from Interrupt Event

TPLL(1)

1 2 n-1 n

Clock

OSTS bit Set

Transition

TOST(1)

DS39762F_JP - p.370 2013 Microchip Technology Inc.

Page 371: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

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

フェイルセーフ クロックモニタ (FSCM) を使うと、外部オシレータに障害が発生した場合でも、自動的にデバイスクロックを内部オシレータ ブロックに切り換えて動作を継続できます。FSCM 機能は、FCMEN コンフィグレーション ビットをセットすると有効になります。

FSCM を有効にすると INTRC オシレータが常時動作し、周辺モジュールへのクロックを監視して、クロック障害が発生した場合にバックアップ クロックを供給します。クロックの監視 ( 図 25-4 参照 ) は、INTRC出力を 64 分周したサンプルクロック信号を生成する事で行います。これにより、FSCM サンプルクロックのエッジ間に、周辺モジュールのクロックエッジが発生する十分な時間を確保できます。周辺デバイスクロックとサンプルクロックは、クロックモニタ (CM)ラッチに入力されます。CM はデバイスクロック源の立ち下がりエッジでセットされますが、サンプルクロックの立ち上がりエッジでクリアされます。

図 25-4: FSCM のブロック図

クロック障害は、サンプルクロックの立ち下がりエッジでテストします。CM がセットされた状態でサンプルクロックが立ち下がった場合、クロック障害が検出されています ( 図 25-5)。これにより、以下が実行されます。

• FSCM が OSCFIF (PIR2<7>) ビットをセットしてオシレータ障害割り込みを発生させる

• デバイスクロック源を内部オシレータ ブロックに切り換える ( 切り換え後のクロック源を示す値にOSCCON が更新される事はありません ― これはフェイルセーフ条件であるためです )

• WDT をリセットする

切り換え中に供給される内部オシレータ ブロックからのポストスケーラ周波数では、高いタイミング精度が要求されるアプリケーションの場合、精度が十分でない可能性があります。その場合、別のクロック設定を選択し、別の電力管理モードに移行する方が望ましいでしょう。それには部分的な回復を試みるか、アプリケーションでシャットダウン処理を実行します。詳細はセクション 4.1.4「複数の SLEEP 命令」とセクション 25.4.1「2 段階起動を使う場合の注意事項」を参照してください。

FSCM は、プライマリまたはセカンダリ クロック源の障害のみ検出します。内部オシレータ ブロックに障害が発生しても一切検出されず、対応もできません。

25.5.1 FSCM とウォッチドッグ タイマ

FSCM と WDT は、いずれも INTRC オシレータからクロックを供給されます。WDT は独立した分周器とカウンタによって動作するため、WDT を無効にしても、FSCM が有効な場合、INTRC オシレータの動作には何の影響も及ぼしません。

前述の通り、クロック障害が検出されると、クロック源が INTRC クロックに切り換わります。これによりコード実行速度が著しく低下する場合があります。WDT を小さなプリスケール値で有効にしている場合、クロック速度の低下によって WDT タイムアウトが発生し、それがデバイスリセットを引き起こす可能性があります。このため、フェイルセーフ クロック イベントは WDT とポストスケーラもリセットします。これにより実行速度が変化した時点からタイミングを計測しはじめる事ができ、誤ったタイムアウトが起きにくくします。

25.5.2 フェイルセーフ動作の終了

フェイルセーフ条件は、デバイスリセットまたは電力管理モードへの移行によって終了します。リセット時、コンフィグレーション レジスタ 2H で指定されているプライマリ クロック源が起動します(OSTまたはPLL タイマ等、オシレータモード別の起動遅延が加わります )。プライマリ クロック源が使用可能になるまで、INTRC オシレータがデバイスクロックを供給します (2 段階起動と同様 )。その後、クロック源はプライマリ クロックに切り換わります ( 切り換わるとOSCCON レジスタの OSTS ビットがセットされる )。フェイルセーフ クロックモニタは周辺クロックの監視を再開します。

起動中にプライマリ クロック源が全く使用可能にならない場合があります。その場合、INTRC オシレータがクロックを供給します。電力管理モードに移行するまで OSCCON レジスタはリセット状態のままです。

Peripheral

INTRC÷ 64

S

C

Q

(32 s) 488 Hz(2.048 ms)

Clock MonitorLatch (CM)

(edge-triggered)

ClockFailure

Detected

Source

Clock

Q

2013 Microchip Technology Inc. DS39762F_JP - p.371

Page 372: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 25-5: FSCM のタイミング チャート

25.5.3 電力管理モードにおける FSCM割り込み

電力管理モードに移行すると、クロック マルチプレクサは OSCCON レジスタで指定されているクロック源を選択します。この電力管理モード用のクロック源に対するフェイルセーフ モニタが、電力管理モードで再開します。

電力管理モードで動作中にオシレータ障害が発生した場合、対応はオシレータ障害割り込みが有効かどうかで異なります。割り込みが有効の場合 (OSCFIF = 1)、コード実行のクロックは INTRC マルチプレクサから供給されます。障害が発生したクロック源に自動的に復帰する事はありません。

割り込みが無効の場合、アイドル中の割り込みによって、CPU は INTRC のクロック供給で命令実行を開始します。

25.5.4 POR またはスリープからの復帰

FSCM はデバイスのパワーオン リセット (POR) または低消費電力スリープの終了後のあらゆる時点におけるオシレータ障害を検出できるように設計されています。プライマリ デバイスクロックが EC またはINTRC の場合、これらのイベントの直後から監視を開始できます。

HS または HSPLL モードの場合、状況は若干異なります。オシレータは FSCM サンプルクロック時間よりも大幅に長い起動時間を必要とする可能性があるため、クロック障害の誤検出が発生する恐れがあります。これを防ぐために、デバイスクロックとして自動的に内部オシレータ ブロックが設定され、プライマリ クロックが安定するまで (OST と PLL タイマがタイムアウトするまで ) 動作します。これは 2 段階起動モードと同じ動作です。プライマリ クロックが安定すると、INTRC は FSCM 用クロック源としての役割に戻ります。

セクション 25.4.1「2段階起動を使う場合の注意事項」で説明した通り、他のクロック設定を選択し、プライマリ クロックが安定するまで待つ間に代替の電力管理モードに移行する事も可能です。新しい電力管理モードを選択すると、プライマリ クロックは無効になります。

OSCFIF

CM Output

DeviceClock

Output

Sample Clock

FailureDetected

OscillatorFailure

Note: 通常、デバイスクロックはサンプルクロックよりもはるかに高周波数です。この図では、2 つの周波数の相

対関係を分かりやすく示しています。

(Q)

CM Test CM Test CM Test

Note: PORまたはスリープからの復帰時における誤ったオシレータ障害割り込みを防止するロジックは、これらのイベント以降の全てのオシレータ起動障害の検出も妨げてしまいます。これを回避するには、OSTS ビットを監視してタイミング ルーチンを使い、オシレータの起動に時間がかかりすぎていないかを判断します。その場合も、オシレータ障害割り込みフラグはセットされません。

DS39762F_JP - p.372 2013 Microchip Technology Inc.

Page 373: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

25.6 プログラムの検証とコード保護

PIC18F97J60 ファミリの全デバイスは、内蔵プログラムメモリ空間を単一のブロックとして扱います。このブロックに対するコード保護は、コンフィグレーション ビット CP0 で制御します。このビットは、プログラムメモリ空間に対する外部からの読み書きを禁止しますが、通常の実行モードには直接影響を与えません。

25.6.1 コンフィグレーション レジスタの保護

コンフィグレーション レジスタは、不適切な変更または読み出しから 2 つの方法で保護されています。第 1の保護は、電源投入後にビットがプログラムされた後の変更を防ぐ、コンフィグレーション ビットのライトワンス機能です。予測不能なイベントに対する保護対策として、ESD イベント等、個々のセルレベルのデータ破壊によるコンフィグレーション ビットの変化はパリティエラーを発生させ、これがデバイスリセットをトリガします。

コンフィグレーション レジスタのデータは、プログラムメモリ内のフラッシュ コンフィグレーション ワードから生成します。CP0 ビットがプログラム状態 ( クリア ) ならば、デバイス コンフィグレーションのソースデータも結果的に保護されます。

25.7 インサーキット シリアル プログラミング

PIC18F97J60 ファミリのマイクロコントローラは、終アプリケーション回路に実装した状態でのシリアルプログラミングが可能です。これは、クロック / データの 2 本のライン、電源 / グランド / 書き込み電圧の3 本のラインのみで簡単に利用できます。この機能を利用すると、未プログラム デバイスを実装したボードを製造し、製品の出荷直前にマイクロコントローラをプログラムできます。また、 新ファームウェアまたはカスタマイズしたファームウェアをプログラムする事もできます。

25.8 インサーキット デバッガ

DEBUG コンフィグレーション ビットに「0」を書き込むと、インサーキット デバッガ機能が有効になります。この機能を利用すると、MPLAB® IDE を使って簡単なデバッグを実行できます。マイクロコントローラでこの機能を有効にすると、一部の汎用リソースが使えなくなります。表 25-3 に、バックグラウンド デバッガで必要になるリソースを示します。

表 25-3: デバッガで使うリソース

I/O ピン : RB6、RB7

スタック : 2 段

プログラムメモリ : 512 バイト

データメモリ : 10 バイト

2013 Microchip Technology Inc. DS39762F_JP - p.373

Page 374: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.374 2013 Microchip Technology Inc.

Page 375: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

26.0 命令セットの概要

PIC18F97J60 ファミリのデバイスは、75 個の PIC18コア標準命令セットに加えて、再帰コードやソフトウェア スタックを利用するコード向けに 適化された 8 つの新しい拡張命令をサポートします。拡張命令セットについては、本セクション内で後述します。

26.1 標準命令セット

PIC18 標準命令セットは以前の PIC® MCU 命令セットから大幅に強化されていますが、これらの PIC MCU から容易に移行できるように互換性も維持しています。ほとんどの命令は 1 プログラムメモリ ワード (16 ビット ) ですが、2 プログラムメモリ ワードを必要とする命令が 4 つあります。

1 ワード命令は、命令の種類を表す 1 つのオペコードと、命令の動作を詳しく指定する 1 つまたは複数のオペランドから成り、全体で 16 ビットワードです。

この命令セットは直交性が高く、以下の 4 つの基本カテゴリに分類されます。

• バイト指向命令

• ビット指向命令

• リテラル命令

• 制御命令

表 26-2 に、PIC18 命令セットのバイト指向命令、ビット指向命令、リテラル命令、制御命令を示します。表 26-1 に、オペコード フィールドの説明を示します。

バイト指向命令の大部分は、以下の 3 つのオペランドを使います。

1. ファイルレジスタ (「f」と表記 )

2. 結果格納先 (「d」と表記 )

3. アクセス先メモリ (「a」と表記 )

ファイルレジスタの指定文字「f」には、命令で使うファイルレジスタを指定します。結果格納先の指定文字「d」は、演算の結果を格納する場所を指定します。

「d」= 0 の場合は演算結果を WREG レジスタに格納します。「d」= 1 の場合は演算結果を「f」で指定したファイルレジスタに格納します。

ビット指向命令は、いずれも以下の 3 つのオペランドを使います。

1. ファイルレジスタ (「f」と表記 )

2. ファイルレジスタ内のビット (「b」と表記 )

3. アクセス先メモリ (「a」と表記 )

ビットフィールドの指定文字「b」は演算の対象となるビットの番号を指定し、ファイルレジスタの指定文字「f」はそのビットが存在するファイルの番号を表します。

リテラル命令で使うオペランドには、以下の種類があります。

• ファイルレジスタに読み込むリテラル値 (「k」と表記 )

• リテラル値を読み込む FSR レジスタ (「f」と表記 )

• オペランド不要 (「-」と表記 )

制御命令で使うオペランドには、以下の種類があります。

• プログラムメモリのアドレス (「n」と表記 )

• CALLまたは RETURN命令のモード (「s」と表記 )

• テーブル読み書き命令のモード (「m」と表記 )

• オペランド不要 (「-」と表記 )

命令は基本的には 1 ワードですが、2 ワード命令が 4つだけあります。これらの命令は、32 ビットの情報を収めるため 2 ワードです。2 ワード目の上位 4 ビットは「1」です。このため、2 ワード目のみを単独の命令として実行すると、NOPとして実行されます。

1ワード命令は全て1命令サイクルで実行されますが、条件テストが真の場合、または命令の実行結果によりプログラム カウンタが変わる場合はこの限りではありません。これらの場合には、NOP命令サイクルが追加されるため、実行には 2 命令サイクルを要します。

2 ワード命令の実行には 2 命令サイクルが必要です。

1 命令サイクルは、オシレータの 4 周期に相当します。従って、オシレータの周波数が 4 MHz ならば、命令実行時間は標準で 1 s です。条件付きテストの結果が真の場合、または命令実行の結果プログラム カウンタが変化した場合の命令実行時間は 2 s です。2 ワードの分岐命令に必要な時間は 3 s です ( 条件付きテストの結果が真の場合 )。

図 26-1 に、命令の全般的な形式を示します。この例では、16 進数を全て「nnh」と表記しています。

表 26-2 に、マイクロチップ社の MPASMTM アセンブラで認識できる標準命令セットの一覧を示します。

各命令については、セクション 26.1.1「標準命令セット」で詳しく説明します。

2013 Microchip Technology Inc. DS39762F_JP - p.375

Page 376: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 26-1: オペコード フィールドの説明

フィールド 説明

a RAM アクセスビット :a = 0: アクセス RAM 内の RAM アドレス (BSR レジスタは無視 )a = 1: BSR レジスタで RAM バンクを指定

bbb 8 ビット ファイルレジスタ内のビットアドレス (0 ~ 7)BSR バンクセレクト レジスタ、現在の RAM バンクを選択

C, DC, Z, OV, N ALU ステータスビット : C (CARRY)、DC (DIGIT CARRY)、Z (ZERO)、OV (OVERFLOW)、N (NEGATIVE)d 格納先選択ビット :

d = 0: 結果を WREG に格納

d = 1: 結果をファイルレジスタ f に格納

dest 格納先 : WREG レジスタまたは指定したレジスタファイルのアドレス

f 8 ビット レジスタファイルのアドレス (00h ~ FFh) または 2 ビットの FSR 指定文字 (0h ~ 3h)fs 送信元の 12 ビット レジスタファイルのアドレス (000h ~ FFFh) fd 格納先の 12 ビット レジスタファイルのアドレス (000h ~ FFFh) GIE グローバル割り込みイネーブルビット

k リテラル フィールド、定数データ、ラベル (8/12/20 ビットのいずれか )label ラベル名

mm テーブル読み書き命令の TBLPTR レジスタのモード

テーブル読み書き命令にのみ使用

* レジスタ変更なし ( テーブル読み書きの場合の TBLPTR 等 )*+ 命令実行後にレジスタをインクリメントする ( テーブル読み書きの場合の TBLPTR 等 )*- 命令実行後にレジスタをデクリメントする ( テーブル読み書きの場合の TBLPTR 等 )+* 命令実行前にレジスタをインクリメントする ( テーブル読み書きの場合の TBLPTR 等 )n 相対分岐命令の相対アドレス (2 の補数 ) または CALL/BRANCH および RETURN 命令の直接アドレス

PC プログラム カウンタ

PCL プログラム カウンタ下位バイト

PCH プログラム カウンタ中位バイト

PCLATH プログラム カウンタ中位バイト用ラッチ

PCLATU プログラム カウンタ 上位バイト用ラッチ

PD パワーダウン ビット

PRODH 乗算命令の結果の上位バイト

PRODL 乗算命令の結果の下位バイト

s 高速コール / リターン モード選択ビット :s = 0: シャドーレジスタへの保存、復元を行わない

s = 1: 特定レジスタの値をシャドーレジスタに保存、復元する ( 高速モード )TBLPTR 21 ビット テーブルポインタ ( プログラムメモリのアドレスを指し示す )TABLAT 8 ビット テーブルラッチ

TO タイムアウト ビット

TOS Top-of-Stack

u 未使用または変化なし

WDT ウォッチドッグ タイマ

WREG ワーキング レジスタ ( アキュムレータ )x ドントケア (「0」または「1」)、アセンブラは x = 0でコードを生成 ( マイクロチップ社のソフトウェア

ツール全般との互換性のために、この値を推奨します。)zs レジスタファイル ( 送信元 ) の間接アドレッシングに使う 7 ビットのオフセット値

zd レジスタファイル ( 格納先 ) の間接アドレッシングに使う 7 ビットのオフセット値

{ } オプションの引数

[text] インデックス付きアドレス

(text) textの内容

[expr]<n> ポインタ exprが指し示すレジスタの bit n 割り当て先

< > レジスタのビットフィールド

左項は右項に属する

italics ユーザ定義語 (Courier New フォント )

DS39762F_JP - p.376 2013 Microchip Technology Inc.

Page 377: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 26-1: 命令の一般的な形式

Byte-oriented file register operations

15 10 9 8 7 0

d = 0 for result destination to be WREG register

OPCODE d a f (FILE #)

d = 1 for result destination to be file register (f)a = 0 to force Access Bank

Bit-oriented file register operations

15 12 11 9 8 7 0

OPCODE b (BIT #) a f (FILE #)

b = 3-bit position of bit in file register (f)

Literal operations

Byte to Byte move operations (2-word)

15 12 11 0

OPCODE f (Source FILE #)

CALL, GOTO and Branch operations

15 8 7 0

OPCODE n<7:0> (literal)

n = 20-bit immediate value

a = 1 for BSR to select bankf = 8-bit file register address

a = 0 to force Access Banka = 1 for BSR to select bankf = 8-bit file register address

15 12 11 0

1111 n<19:8> (literal)

15 12 11 0

1111 f (Destination FILE #)

f = 12-bit file register address

Control operations

Example Instruction

ADDWF MYREG, W, B

MOVFF MYREG1, MYREG2

BSF MYREG, bit, B

MOVLW 7Fh

GOTO Label

15 8 7 0

OPCODE n<7:0> (literal)

15 12 11 0

1111 n<19:8> (literal)

CALL MYFUNC

15 11 10 0

OPCODE n<10:0> (literal)

S = Fast bit

BRA MYFUNC

15 8 7 0

OPCODE n<7:0> (literal) BC MYFUNC

S

15 8 7 0

OPCODE k (literal)

k = 8-bit immediate value

2013 Microchip Technology Inc. DS39762F_JP - p.377

Page 378: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

es

3, 43, 4

3, 4

レれ

トレ

表 26-2: PIC18F97J60 ファミリ 命令セット

ニーモニック、オペランド

説明 サイクル16 ビット命令ワード 影響を受ける

ステータスNot

MSb LSb

バイト指向命令

ADDWFADDWFCANDWFCLRFCOMFCPFSEQCPFSGTCPFSLTDECFDECFSZDCFSNZINCFINCFSZINFSNZIORWFMOVFMOVFF

MOVWFMULWFNEGFRLCFRLNCFRRCFRRNCFSETFSUBFWB

SUBWFSUBWFB

SWAPFTSTFSZXORWF

f, d, af, d, af, d, af, af, d, af, af, af, af, d, af, d, af, d, af, d, af, d, af, d, af, d, af, d, afs, fd

f, af, af, af, d, af, d, af, d, af, d, af, af, d, a

f, d, af, d, a

f, d, af, af, d, a

Add WREG and fAdd WREG and Carry bit to fAND WREG with fClear fComplement fCompare f with WREG, Skip =Compare f with WREG, Skip >Compare f with WREG, Skip <Decrement fDecrement f, Skip if 0Decrement f, Skip if Not 0Increment fIncrement f, Skip if 0Increment f, Skip if Not 0Inclusive OR WREG with fMove fMove fs (source) to 1st word

fd (destination) 2nd wordMove WREG to fMultiply WREG with fNegate fRotate Left f through CarryRotate Left f (No Carry)Rotate Right f through CarryRotate Right f (No Carry)Set fSubtract f from WREG with Borrow Subtract WREG from fSubtract WREG from f with BorrowSwap Nibbles in fTest f, Skip if 0Exclusive OR WREG with f

111111 (2 または 3)1 (2 または 3)1 (2 または 3)11 (2 または 3)1 (2 または 3)11 (2 または 3)1 (2 または 3)112

111111111

11

11 (2 または 3)1

001000100001011000010110011001100000001001000010001101000001010111001111011000000110001101000011010001100101

01010101

001101100001

01da00da01da101a11da001a010a000a01da11da11da10da11da10da00da00daffffffff111a001a110a01da01da00da00da100a01da

11da10da

10da011a10da

ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

ffffffff

ffffffffffff

ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

ffffffff

ffffffffffff

C, DC, Z, OV, NC, DC, Z, OV, NZ, NZZ, N

なし

なし

なしC, DC, Z, OV, N

なし

なしC, DC, Z, OV, N

なし

なしZ, NZ, N

なし

なし

なしC, DC, Z, OV, NC, Z, NZ, NC, Z, NZ, N

なしC, DC, Z, OV, N

C, DC, Z, OV, NC, DC, Z, OV, N

なし

なしZ, N

1, 21, 21,221, 2441, 21, 2, 1, 2, 1, 21, 2, 41, 21, 21

1, 2

1, 2

1, 2

1, 2

41, 2

Note 1: PORT レジスタの値を同じ PORT レジスタによって変更する場合 ( 例 : MOVF PORTB, 1, 0)、これらのピンの入力ベルが使われます。例えば、入力ピンのデータラッチが「1」で、そのピンが外部デバイスによって Low に駆動さている場合、データ「0」が書き戻されます。

2: この命令を TMR0 レジスタに対して実行した場合 ( かつ、「d」の指定が可能な場合に d = 1の時 )、TMR0 にプリスケーラが割り当てられているとプリスケーラもクリアされます。

3: プログラム カウンタ (PC) が変更された場合、または条件付きテストの結果が真の場合、命令実行には 2 サイクル必要です。2 サイクル目は、NOPとして実行されます。

4: 一部の命令は、2 ワード命令です。これらの命令の 2 ワード目は、命令の 1 ワード目によって 2 ワード目の 16 ビッに埋め込まれた情報を読み出す場合を除き、NOPとして実行されます。これにより、全てのプログラムメモリ アドスで命令の有効性が維持されます。

DS39762F_JP - p.378 2013 Microchip Technology Inc.

Page 379: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

es

レれ

トレ

ビット指向命令

BCFBSFBTFSCBTFSSBTG

f, b, af, b, af, b, af, b, af, b, a

Bit Clear fBit Set fBit Test f, Skip if ClearBit Test f, Skip if SetBit Toggle f

111 (2 または 3)1 (2 または 3)1

10011000101110100111

bbbabbbabbbabbbabbba

ffffffffffffffffffff

ffffffffffffffffffff

なしなしなしなしなし

1, 21, 23, 43, 41, 2

制御命令

BCBNBNCBNNBNOVBNZBOVBRABZCALL

CLRWDTDAWGOTO

NOPNOPPOPPUSHRCALLRESETRETFIE

RETLWRETURNSLEEP

nnnnnnnnnn, s

——n

————n

s

ks—

Branch if CarryBranch if NegativeBranch if Not CarryBranch if Not NegativeBranch if Not OverflowBranch if Not ZeroBranch if OverflowBranch Unconditionally Branch if ZeroCall Subroutine1st word

2nd wordClear Watchdog TimerDecimal Adjust WREGGo to Address 1st word

2nd wordNOPNOPPop Top of Return Stack (TOS)Push Top of Return Stack (TOS)Relative CallSoftware Device ResetReturn from Interrupt Enable

Return with Literal in WREG Return from SubroutineGo into Standby mode

1 (2)1 (2)1 (2)1 (2)1 (2)1 (2)1 (2)21 (2)2

112

1111212

221

1110111011101110111011101110110111101110111100000000111011110000111100000000110100000000

000000000000

00100110001101110101000101000nnn0000110skkkk000000001111kkkk0000xxxx000000001nnn00000000

110000000000

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkkkkkkkk00000000kkkkkkkk0000xxxx00000000nnnn11110001

kkkk00010000

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkkkkkkkk01000111kkkkkkkk0000xxxx01100101nnnn1111000s

kkkk001s0011

なしなしなしなしなしなしなしなしなしなし

TO, PDCなし

なしなしなしなしなしAllGIE/GIEH, PEIE/GIELなしなし

TO, PD

4

表 26-2: PIC18F97J60 ファミリ 命令セット ( 続き )

ニーモニック、オペランド

説明 サイクル16 ビット命令ワード 影響を受ける

ステータスNot

MSb LSb

Note 1: PORT レジスタの値を同じ PORT レジスタによって変更する場合 ( 例 : MOVF PORTB, 1, 0)、これらのピンの入力ベルが使われます。例えば、入力ピンのデータラッチが「1」で、そのピンが外部デバイスによって Low に駆動さている場合、データ「0」が書き戻されます。

2: この命令を TMR0 レジスタに対して実行した場合 ( かつ、「d」の指定が可能な場合に d = 1の時 )、TMR0 にプリスケーラが割り当てられているとプリスケーラもクリアされます。

3: プログラム カウンタ (PC) が変更された場合、または条件付きテストの結果が真の場合、命令実行には 2 サイクル必要です。2 サイクル目は、NOPとして実行されます。

4: 一部の命令は、2 ワード命令です。これらの命令の 2 ワード目は、命令の 1 ワード目によって 2 ワード目の 16 ビッに埋め込まれた情報を読み出す場合を除き、NOPとして実行されます。これにより、全てのプログラムメモリ アドスで命令の有効性が維持されます。

2013 Microchip Technology Inc. DS39762F_JP - p.379

Page 380: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

es

レれ

トレ

リテラル命令

ADDLWANDLWIORLWLFSR

MOVLBMOVLWMULLWRETLWSUBLWXORLW

kkkf, k

kkkkkk

Add Literal and WREGAND Literal with WREGInclusive OR Literal with WREGMove Literal (12-bit) 2nd word

to FSR(f) 1st wordMove Literal to BSR<3:0>Move Literal to WREGMultiply Literal with WREGReturn with Literal in WREG Subtract WREG from LiteralExclusive OR Literal with WREG

1112

111211

00000000000011101111000000000000000000000000

11111011100111100000000111101101110010001010

kkkkkkkkkkkk00ffkkkk0000kkkkkkkkkkkkkkkkkkkk

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

C, DC, Z, OV, NZ, NZ, Nなし

なしなしなしなしC, DC, Z, OV, NZ, N

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

TBLRD*TBLRD*+TBLRD*-TBLRD+*TBLWT*TBLWT*+TBLWT*-TBLWT+*

Table ReadTable Read with Post-IncrementTable Read with Post-DecrementTable Read with Pre-IncrementTable WriteTable Write with Post-IncrementTable Write with Post-DecrementTable Write with Pre-Increment

2

2

00000000000000000000000000000000

00000000000000000000000000000000

00000000000000000000000000000000

10001001101010111100110111101111

なしなしなしなしなしなしなしなし

表 26-2: PIC18F97J60 ファミリ 命令セット ( 続き )

ニーモニック、オペランド

説明 サイクル16 ビット命令ワード 影響を受ける

ステータスNot

MSb LSb

Note 1: PORT レジスタの値を同じ PORT レジスタによって変更する場合 ( 例 : MOVF PORTB, 1, 0)、これらのピンの入力ベルが使われます。例えば、入力ピンのデータラッチが「1」で、そのピンが外部デバイスによって Low に駆動さている場合、データ「0」が書き戻されます。

2: この命令を TMR0 レジスタに対して実行した場合 ( かつ、「d」の指定が可能な場合に d = 1の時 )、TMR0 にプリスケーラが割り当てられているとプリスケーラもクリアされます。

3: プログラム カウンタ (PC) が変更された場合、または条件付きテストの結果が真の場合、命令実行には 2 サイクル必要です。2 サイクル目は、NOPとして実行されます。

4: 一部の命令は、2 ワード命令です。これらの命令の 2 ワード目は、命令の 1 ワード目によって 2 ワード目の 16 ビッに埋め込まれた情報を読み出す場合を除き、NOPとして実行されます。これにより、全てのプログラムメモリ アドスで命令の有効性が維持されます。

DS39762F_JP - p.380 2013 Microchip Technology Inc.

Page 381: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

26.1.1 標準命令セット

ADDLW ADD Literal to W

構文 : ADDLW k

オペランド : 0 k 255

動作 : (W) + k W

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0000 1111 kkkk kkkk

説明 : W レジスタの内容を 8 ビットのリテラ

ル「k」に加算し、その結果を W レジ

スタに格納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 : ADDLW 15h

命令実行前W = 10h

命令実行後W = 25h

ADDWF ADD W to f

構文 : ADDWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) + (f) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0010 01da ffff ffff

説明 : W レジスタをレジスタ「f」に加算する。「d」 = 「0」の場合、結果を W レジスタに格納する。

「d」 = 「1」の場合、結果をレジスタ「f」に

書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : ADDWF REG, 0, 0

命令実行前W = 17hREG = 0C2h

命令実行後W = 0D9hREG = 0C2h

Note: PIC18 の命令は全て、命令ニーモニックの前にオプションの引数としてラベルを指定する事によってシンボリック アドレッシングが可能です。この場合の命令の形式は「{ ラベル } 命令 引数」です。

2013 Microchip Technology Inc. DS39762F_JP - p.381

Page 382: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ADDWFC ADD W and Carry bit to f

構文 : ADDWFC f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) + (f) + (C) dest

影響を受ける

ステータス :N,OV, C, DC, Z

エンコード : 0010 00da ffff ffff

説明 : W レジスタ、キャリーフラグ、データメモリ

のアドレス「f」の内容を加算する。

「d」 = 「0」の場合、結果を W レジスタに格

納する。「d」 = 「1」の場合、結果をデータメ

モリのアドレス「f」に格納する。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : ADDWFC REG, 0, 1

命令実行前Carry bit = 1REG = 02hW = 4Dh

命令実行後Carry bit = 0REG = 02hW = 50h

ANDLW AND Literal with W

構文 : ANDLW k

オペランド : 0 k 255

動作 : (W) .AND. k W

影響を受ける

ステータス :N, Z

エンコード : 0000 1011 kkkk kkkk

説明 : W レジスタの内容と 8 ビットのリテラ

ル「k」を AND 演算する。結果を W レ

ジスタに格納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 : ANDLW 05Fh

命令実行前W = A3h

命令実行後W = 03h

DS39762F_JP - p.382 2013 Microchip Technology Inc.

Page 383: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ANDWF AND W with f

構文 : ANDWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) .AND. (f) dest

影響を受ける

ステータス :N, Z

エンコード : 0001 01da ffff ffff

説明 : W レジスタの内容とレジスタ「f」を AND演算する。「d」 = 「0」の場合、結果を Wレジスタに格納する。「d」 = 「1」の場合、

結果をレジスタ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : ANDWF REG, 0, 0

命令実行前W = 17hREG = C2h

命令実行後W = 02hREG = C2h

BC Branch if Carry

構文 : BC n

オペランド : -128 n 127

動作 : キャリービットが「1」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0010 nnnn nnnn

説明 : キャリービットが「1」の場合、プログラ

ムが分岐する。

PC には 2 の補数「2n」を加算する。PCは次の命令をフェッチするためにインク

リメントしているため、新しいアドレス

は PC + 2 + 2n となる。この場合、この

命令は 2 サイクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない

場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BC 5

命令実行前PC = address (HERE)

命令実行後If Carry = 1;

PC = address (HERE + 12)If Carry = 0;

PC = address (HERE + 2)

2013 Microchip Technology Inc. DS39762F_JP - p.383

Page 384: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

BCF Bit Clear f

構文 : BCF f, b {,a}

オペランド : 0 f 2550 b 7a [0,1]

動作 : 0 f<b>

影響を受ける

ステータス :なし

エンコード : 1001 bbba ffff ffff

説明 : レジスタ「f」のビット「b」をクリアする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : BCF FLAG_REG, 7, 0

命令実行前FLAG_REG = C7h

命令実行後FLAG_REG = 47h

BN Branch if Negative

構文 : BN n

オペランド : -128 n 127

動作 : NEGATIVE ビットが「1」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0110 nnnn nnnn

説明 : NEGATIVE ビットが「1」の場合、プログ

ラムが分岐する。

PC には 2 の補数「2n」を加算する。PC は

次の命令をフェッチするためにインクリメ

ントしているため新しいアドレスは PC + 2 + 2n となる。この場合、この命令は 2 サイ

クル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない

場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BN Jump

命令実行前PC = address (HERE)

命令実行後If Negative = 1;

PC = address (Jump)If Negative = 0;

PC = address (HERE + 2)

DS39762F_JP - p.384 2013 Microchip Technology Inc.

Page 385: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

BNC Branch if Not Carry

構文 : BNC n

オペランド : -128 n 127

動作 : キャリービットが「0」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0011 nnnn nnnn

説明 : キャリービットが「0」の場合、プログラム

が分岐する。

PC には 2 の補数「2n」を加算する。PC は

次の命令をフェッチするためにインクリメ

ントしているため、新しいアドレスは PC + 2 + 2n となる。この場合、この命令は 2 サ

イクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない

場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BNC Jump

命令実行前PC = address (HERE)

命令実行後If Carry = 0;

PC = address (Jump)If Carry = 1;

PC = address (HERE + 2)

BNN Branch if Not Negative

構文 : BNN n

オペランド : -128 n 127

動作 : NEGATIVE ビットが「0」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0111 nnnn nnnn

説明 : NEGATIVE ビットが「0」の場合、プログラ

ムが分岐する。

PC には 2 の補数「2n」を加算する。PC は次

の命令をフェッチするためにインクリメント

しているため、新しいアドレスは PC + 2 + 2n となる。この場合、この命令は 2 サイクル

命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない

場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BNN Jump

命令実行前PC = address (HERE)

命令実行後If Negative = 0;

PC = address (Jump)If Negative = 1;

PC = address (HERE + 2)

2013 Microchip Technology Inc. DS39762F_JP - p.385

Page 386: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

BNOV Branch if Not Overflow

構文 : BNOV n

オペランド : -128 n 127

動作 : オーバーフロー ビットが「0」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0101 nnnn nnnn

説明 : オーバーフロー ビットが「0」の場合、プロ

グラムが分岐する。

PC には 2 の補数「2n」を加算する。PC は

次の命令をフェッチするためにインクリメ

ントしているため、新しいアドレスは PC + 2 + 2n となる。この場合、この命令は 2 サ

イクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない

場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BNOV Jump

命令実行前PC = address (HERE)

命令実行後If Overflow = 0;

PC = address (Jump)If Overflow = 1;

PC = address (HERE + 2)

BNZ Branch if Not Zero

構文 : BNZ n

オペランド : -128 n 127

動作 : ゼロビットが「0」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0001 nnnn nnnn

説明 : ゼロビットが「0」の場合、プログラムが分

岐する。

PC には 2 の補数「2n」を加算する。PC は

次の命令をフェッチするためにインクリメ

ントしているため、新しいアドレスは PC + 2 + 2n となる。この場合、この命令は 2 サ

イクル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない

場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BNZ Jump

命令実行前PC = address (HERE)

命令実行後If Zero = 0;

PC = address (Jump)If Zero = 1;

PC = address (HERE + 2)

DS39762F_JP - p.386 2013 Microchip Technology Inc.

Page 387: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

BRA Unconditional Branch

構文 : BRA n

オペランド : -1024 n 1023

動作 : (PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1101 0nnn nnnn nnnn

説明 : PC に 2 の補数「2n」を加算する。PC は次の

命令をフェッチするためにインクリメントし

ているため、新しいアドレスは PC + 2 + 2nとなる。この命令は 2 サイクル命令である。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

例 : HERE BRA Jump

命令実行前PC = address (HERE)

命令実行後PC = address (Jump)

BSF Bit Set f

構文 : BSF f, b {,a}

オペランド : 0 f 2550 b 7a [0,1]

動作 : 1 f<b>

影響を受ける

ステータス :なし

エンコード : 1000 bbba ffff ffff

説明 : レジスタ「f」のビット「b」をセットする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : BSF FLAG_REG, 7, 1

命令実行前FLAG_REG = 0Ah

命令実行後FLAG_REG = 8Ah

2013 Microchip Technology Inc. DS39762F_JP - p.387

Page 388: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

BTFSC Bit Test File, Skip if Clear

構文 : BTFSC f, b {,a}

オペランド : 0 f 2550 b 7a [0,1]

動作 : (f<b>) = 0の場合にスキップ

影響を受ける

ステータス :なし

エンコード : 1011 bbba ffff ffff

説明 : レジスタ「f」のビット「b」が「0」の場

合、次の命令をスキップする。ビット「b」が「0」の場合、現在の命令実行中にフェッ

チした次の命令を破棄し、代わりに NOP命

令を実行して 2 サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命令

の場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HEREFALSETRUE

BTFSC::

FLAG, 1, 0

命令実行前PC = address (HERE)

命令実行後If FLAG<1> = 0;

PC = address (TRUE)If FLAG<1> = 1;

PC = address (FALSE)

BTFSS Bit Test File, Skip if Set

構文 : BTFSS f, b {,a}

オペランド : 0 f 2550 b < 7a [0,1]

動作 : (f<b>) = 1の場合にスキップ

影響を受ける

ステータス :なし

エンコード : 1010 bbba ffff ffff

説明 : レジスタ「f」のビット「b」が「1」の場合、

次の命令をスキップする。ビット「b」が

「1」の場合、現在の命令実行中にフェッチ

した次の命令を破棄し、代わりに NOP命令

を実行して 2 サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命令

の場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HEREFALSETRUE

BTFSS::

FLAG, 1, 0

命令実行前PC = address (HERE)

命令実行後If FLAG<1> = 0;

PC = address (FALSE)If FLAG<1> = 1;

PC = address (TRUE)

DS39762F_JP - p.388 2013 Microchip Technology Inc.

Page 389: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

BTG Bit Toggle f

構文 : BTG f, b {,a}

オペランド : 0 f 2550 b < 7a [0,1]

動作 : (f<b>) f<b>

影響を受ける

ステータス :なし

エンコード : 0111 bbba ffff ffff

説明 : データメモリのアドレス「f」のビット「b」を反転する。

「a」 = 「0」の場合、アクセスバンクを選択す

る。「a」 = 「1」の場合、BSR を使って GPRバンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にしてい

る場合、f 95 (5Fh) ならば、この命令は常に

インデックス付きリテラル オフセット アド

レッシング モードで実行される。詳細は、セ

クション 26.2.3「インデックス付きリテラル オフセットモードでのバイト / ビット指向命

令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : BTG PORTC, 4, 0

命令実行前PORTC = 0111 0101 [75h]

命令実行後PORTC = 0110 0101 [65h]

BOV Branch if Overflow

構文 : BOV n

オペランド : -128 n 127

動作 : オーバーフロー ビットが「1」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0100 nnnn nnnn

説明 : オーバーフロー ビットが「1」の場合、プロ

グラムが分岐する。

PC には 2 の補数「2n」を加算する。PC は次

の命令をフェッチするためにインクリメント

しているため、新しいアドレスは PC + 2 + 2nとなる。この場合、この命令は 2 サイクル命

令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない

場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BOV Jump

命令実行前PC = address (HERE)

命令実行後If Overflow = 1;

PC = address (Jump)If Overflow = 0;

PC = address (HERE + 2)

2013 Microchip Technology Inc. DS39762F_JP - p.389

Page 390: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

BZ Branch if Zero

構文 : BZ n

オペランド : -128 n 127

動作 : ゼロビットが「1」の場合(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1110 0000 nnnn nnnn

説明 : ゼロビットが「1」の場合、プログラムが分

岐する。

PC には 2 の補数「2n」を加算する。PC は

次の命令をフェッチするためにインクリメン

トしているため、新しいアドレスは PC + 2 + 2n となる。この場合、この命令は 2 サイク

ル命令となる。

ワード数 : 1

サイクル数 : 1(2)

Q サイクルの動作 :ジャンプする場合 :

Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

PC に

書き込み

NOP NOP NOP NOP

ジャンプしない

場合 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

データを

処理

NOP

例 : HERE BZ Jump

命令実行前PC = address (HERE)

命令実行後If Zero = 1;

PC = address (Jump)If Zero = 0;

PC = address (HERE + 2)

CALL Subroutine Call

構文 : CALL k {,s}

オペランド : 0 k 1048575s [0,1]

動作 : (PC) + 4 TOS,k PC<20:1>;s = 1の場合(W) WS,(STATUS) STATUSS,(BSR) BSRS

影響を受ける

ステータス :なし

エンコード :1 ワード目 (k<7:0>)2 ワード目 (k<19:8>)

11101111

110sk19kkk

k7kkkkkkk

kkkk0kkkk8

説明 : 2MB のメモリ空間全体を対象に、サブ

ルーチンを呼び出す。まず、リターン

アドレス (PC + 4) をリターンスタック

にプッシュする。

「s」 = 1の場合、W、STATUS、BSR レ

ジスタもそれぞれのシャドーレジスタ

の WS、STATUSS、BSRS にプッシュ

する。

「s」 = 0の場合、これらのレジスタは

更新されない ( 既定値 )。次に、20 ビッ

トの値「k」を PC<20:1> に読み込む。

CALLは 2 サイクル命令である。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」<7:0> を

読み出し

PC を

スタックに

プッシュ

リテラル

「k」<19:8>を読み出し、

PC に

書き込み

NOP NOP NOP NOP

例 : HERE CALL THERE,1

命令実行前PC = address (HERE)

命令実行後PC = address (THERE)TOS = address (HERE + 4)WS = WBSRS = BSRSTATUSS = STATUS

DS39762F_JP - p.390 2013 Microchip Technology Inc.

Page 391: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

CLRF Clear f

構文 : CLRF f {,a}

オペランド : 0 f 255a [0,1]

動作 : 000h f,1 Z

影響を受ける

ステータス :Z

エンコード : 0110 101a ffff ffff

説明 : 指定したレジスタの値をクリアする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : CLRF FLAG_REG,1

命令実行前FLAG_REG = 5Ah

命令実行後FLAG_REG = 00h

CLRWDT Clear Watchdog Timer

構文 : CLRWDT

オペランド : なし

動作 : 000h WDT,000h WDT postscaler,1 TO,1 PD

影響を受ける

ステータス :TO, PD

エンコード : 0000 0000 0000 0100

説明 : CLRWDT命令はウォッチドッグ タイマをリ

セットする。WDT のポストスケーラも同時

にリセットする。ステータスビット TO と

PD がセットされる。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード NOP データを

処理

NOP

例 : CLRWDT

命令実行前WDT Counter = ?

命令実行後WDT Counter = 00hWDT Postscaler = 0TO = 1PD = 1

2013 Microchip Technology Inc. DS39762F_JP - p.391

Page 392: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

COMF Complement f

構文 : COMF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) dest

影響を受ける

ステータス :N, Z

エンコード : 0001 11da ffff ffff

説明 : レジスタ「f」の内容の補数をとる。

「d」 = 「0」の場合、結果を W レジスタに

格納する。「d」 = 「1」の場合、結果をレジ

スタ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : COMF REG, 0, 0

命令実行前REG = 13h

命令実行後REG = 13hW = ECh

CPFSEQ Compare f with W, Skip if f = W

構文 : CPFSEQ f {,a}

オペランド : 0 f 255a [0,1]

動作 : (f) – (W), (f) = (W) の場合スキップ ( 符号なし比較 )

影響を受ける

ステータス :なし

エンコード : 0110 001a ffff ffff

説明 : データメモリのアドレス「f」の内容と W レ

ジスタの内容を、符号なし減算を実行して比

較する。

「f」 = W ならばフェッチした命令を破棄し、

代わりに NOPを実行して 2 サイクル命令と

する。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付きリ

テラル オフセットモードでのバイト / ビット

指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命令の

場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOPNOP NOP NOP NOP

例 : HERE CPFSEQ REG, 0NEQUAL :EQUAL :

命令実行前PC Address = HEREW = ?REG = ?

命令実行後If REG = W;

PC = Address (EQUAL)If REG W;

PC = Address (NEQUAL)

DS39762F_JP - p.392 2013 Microchip Technology Inc.

Page 393: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

CPFSGT Compare f with W, Skip if f > W

構文 : CPFSGT f {,a}

オペランド : 0 f 255a [0,1]

動作 : (f) –W)(f) > (W) の場合スキップ ( 符号なし比較 )

影響を受ける

ステータス :なし

エンコード : 0110 010a ffff ffff

説明 : データメモリのアドレス「f」の内容と Wレジスタの内容を、符号なし減算を実行し

て比較する。

「f」の内容の方が WREG の内容より大きい

場合はフェッチした命令を破棄し、代わり

に NOPを実行して 2 サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命令

の場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOPNOP NOP NOP NOP

例 : HERE CPFSGT REG, 0NGREATER :GREATER :

命令実行前PC = Address (HERE)W = ?

命令実行後If REG W;

PC = Address (GREATER)If REG W;

PC = Address (NGREATER)

CPFSLT Compare f with W, Skip if f < W

構文 : CPFSLT f {,a}

オペランド : 0 f 255a [0,1]

動作 : (f) –W),(f) < (W) の場合スキップ ( 符号なし比較 )

影響を受ける

ステータス :なし

エンコード : 0110 000a ffff ffff

説明 : データメモリのアドレス「f」の内容と Wレジスタの内容を、符号なし減算を実行し

て比較する。

「f」の内容の方が W レジスタの内容より

小さい場合はフェッチした命令を破棄し、

代わりに NOPを実行して 2 サイクル命令

とする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命令

の場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE CPFSLT REG, 1NLESS :LESS :

命令実行前PC = Address (HERE)W = ?

命令実行後If REG < W;PC = Address (LESS)If REG W;PC = Address (NLESS)

2013 Microchip Technology Inc. DS39762F_JP - p.393

Page 394: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

DAW Decimal Adjust W Register

構文 : DAW

オペランド : なし

動作 : [W<3:0> > 9] または [DC = 1] の場合(W<3:0>) + 6 W<3:0>;それ以外の場合 (W<3:0>) W<3:0>

[W<7:4> > 9] または [C = 1] の場合(W<7:4>) + 6 W<7:4>,C =1;それ以外の場合 (W<7:4>) W<7:4>

影響を受ける

ステータス :C

エンコード : 0000 0000 0000 0111

説明 : DAW命令は、2 つの変数 ( いずれもパック形

式の BCD) を加算して W レジスタに格納し

た 8 ビットの値を調整し、正しいパック形式

の BCD の結果を生成する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード W レジスタを

読み出し

データを

処理

W に

書き込み

例 1: DAW

命令実行前W = A5hC = 0DC = 0

命令実行後W = 05hC = 1DC = 0

例 2:

命令実行前W = CEhC = 0DC = 0

命令実行後W = 34hC = 1DC = 0

DECF Decrement f

構文 : DECF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – 1 dest

影響を受ける

ステータス :C, DC, N, OV, Z

エンコード : 0000 01da ffff ffff

説明 : レジスタ「f」をデクリメントする。「d」 = 「0」の場合、結果を W レジスタに格納する。

「d」 = 「1」の場合、結果をレジスタ「f」に

書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : DECF CNT, 1, 0

命令実行前CNT = 01hZ = 0

命令実行後CNT = 00hZ = 1

DS39762F_JP - p.394 2013 Microchip Technology Inc.

Page 395: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

DECFSZ Decrement f, Skip if 0

構文 : DECFSZ f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – 1 dest,結果 = 0の場合スキップ

影響を受ける

ステータス :なし

エンコード : 0010 11da ffff ffff

説明 : レジスタ「f」の内容をデクリメントする。

「d」 = 「0」の場合、結果を W レジスタに

格納する。「d」 = 「1」の場合、結果をレジス

タ「f」に書き戻す ( 既定値 )。

結果が「0」の場合、フェッチ済みの次の命

令を破棄し、代わりに NOPを実行して 2 サイ

クル命令とする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にしてい

る場合、f 95 (5Fh) ならば、この命令は常に

インデックス付きリテラル オフセット アド

レッシング モードで実行される。詳細は、セ

クション 26.2.3「インデックス付きリテラル オフセットモードでのバイト / ビット指向命

令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命令の

場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE DECFSZ CNT, 1, 1 GOTO LOOPCONTINUE

命令実行前PC = Address (HERE)

命令実行後CNT = CNT – 1If CNT = 0;

PC = Address (CONTINUE)If CNT 0;

PC = Address (HERE + 2)

DCFSNZ Decrement f, Skip if Not 0

構文 : DCFSNZ f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – 1 dest,結果 0の場合スキップ

影響を受ける

ステータス :なし

エンコード : 0100 11da ffff ffff

説明 : レジスタ「f」の内容をデクリメントする。

「d」 = 「0」の場合、結果を W レジスタに

格納する。「d」 = 「1」の場合、結果をレジ

スタ「f」に書き戻す ( 既定値 )。

結果が「0」でなければフェッチ済みの次の

命令を破棄し、代わりに NOPを実行して 2サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付きリ

テラル オフセットモードでのバイト / ビット

指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命令の

場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE DCFSNZ TEMP, 1, 0ZERO : NZERO :

命令実行前TEMP = ?

命令実行後TEMP = TEMP – 1,If TEMP = 0;

PC = Address (ZERO)If TEMP 0;

PC = Address (NZERO)

2013 Microchip Technology Inc. DS39762F_JP - p.395

Page 396: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

GOTO Unconditional Branch

構文 : GOTO k

オペランド : 0 k 1048575

動作 : k PC<20:1>

影響を受ける

ステータス :なし

エンコード :1 ワード目 (k<7:0>)2 ワード目 (k<19:8>)

11101111

1111k19kkk

k7kkkkkkk

kkkk0kkkk8

説明 : GOTOは、2 MB の全メモリ空間の任意

のアドレスへの無条件分岐を実行する。

20 ビットの値「k」を PC<20:1> に読

み込む。GOTOは常に 2 サイクル命令

である。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」<7:0> を

読み出し

NOP リテラル

「k」<19:8>を読み出し、

PC に

書き込み

NOP NOP NOP NOP

例 : GOTO THERE

命令実行後PC = Address (THERE)

INCF Increment f

構文 : INCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) + 1 dest

影響を受ける

ステータス : C, DC, N, OV, Z

エンコード : 0010 10da ffff ffff

説明 : レジスタ「f」の内容をインクリメントする。

「d」 = 「0」の場合、結果を W レジスタに

格納する。「d」 = 「1」の場合、結果をレジ

スタ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : INCF CNT, 1, 0

命令実行前CNT = FFhZ = 0C = ?DC = ?

命令実行後CNT = 00hZ = 1C = 1DC = 1

DS39762F_JP - p.396 2013 Microchip Technology Inc.

Page 397: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

INCFSZ Increment f, Skip if 0

構文 : INCFSZ f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) + 1 dest,結果 = 0の場合スキップ

影響を受ける

ステータス :なし

エンコード : 0011 11da ffff ffff

説明 : レジスタ「f」の内容をインクリメントする。

「d」 = 「0」の場合、結果を W レジスタに

格納する。「d」 = 「1」の場合、結果はレジ

スタ「f」に書き戻される。( 既定値 )

結果が「0」の場合、フェッチ済みの次の命

令を破棄し、代わりに NOPを実行して 2 サ

イクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付きリ

テラル オフセットモードでのバイト / ビット

指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命令

の場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE INCFSZ CNT, 1, 0NZERO : ZERO :

命令実行前PC = Address (HERE)

命令実行後CNT = CNT + 1If CNT = 0;PC = Address (ZERO)If CNT 0;PC = Address (NZERO)

INFSNZ Increment f, Skip if Not 0

構文 : INFSNZ f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) + 1 dest, 結果 0の場合スキップ

影響を受ける

ステータス :なし

エンコード : 0100 10da ffff ffff

説明 : レジスタ「f」の内容をインクリメントする。

「d」 = 「0」の場合、結果を W レジスタに

格納する。「d」 = 「1」の場合、結果をレジ

スタ「f」に書き戻す ( 既定値 )。

結果が「0」でなければフェッチ済みの次の

命令を破棄し、代わりに NOPを実行して 2サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付きリ

テラル オフセットモードでのバイト / ビット

指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード命令

の場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE INFSNZ REG, 1, 0ZERONZERO

命令実行前PC = Address (HERE)

命令実行後REG = REG + 1If REG 0;PC = Address (NZERO)If REG = 0;PC = Address (ZERO)

2013 Microchip Technology Inc. DS39762F_JP - p.397

Page 398: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

IORLW Inclusive OR Literal with W

構文 : IORLW k

オペランド : 0 k 255

動作 : (W) .OR. k W

影響を受ける

ステータス :N, Z

エンコード : 0000 1001 kkkk kkkk

説明 : W レジスタの内容と 8 ビットのリテラル

「k」を OR 演算する。結果を W レジスタに

格納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 : IORLW 35h

命令実行前W = 9Ah

命令実行後W = BFh

IORWF Inclusive OR W with f

構文 : IORWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) .OR. (f) dest

影響を受ける

ステータス :N, Z

エンコード : 0001 00da ffff ffff

説明 : W レジスタとレジスタ「f」の内容を OR 演

算する。「d」 = 「0」の場合、結果を W レジ

スタに格納する。「d」 = 「1」の場合、結果

をレジスタ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付きリ

テラル オフセットモードでのバイト / ビット

指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : IORWF RESULT, 0, 1

命令実行前RESULT = 13hW = 91h

命令実行後RESULT = 13hW = 93h

DS39762F_JP - p.398 2013 Microchip Technology Inc.

Page 399: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

LFSR Load FSR

構文 : LFSR f, k

オペランド : 0 f 20 k 4095

動作 : k FSRf

影響を受ける

ステータス :なし

エンコード : 11101111

11100000

00ffk7kkk

k11kkkkkkk

説明 : 12 ビットのリテラル「k」を、「f」が指し

示す FSR に読み込む。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」の MSB を

読み出し

データを

処理

FSRfH に

リテラル

「k」の MSB を

書き込み

デコード リテラル

「k」の LSB を

読み出し

データを

処理 FSRfL に

リテラル「k」を書き込み

例 : LFSR 2, 3ABh

命令実行後FSR2H = 03hFSR2L = ABh

MOVF Move f

構文 : MOVF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : f dest

影響を受ける

ステータス :N, Z

エンコード : 0101 00da ffff ffff

説明 : レジスタ「f」の内容を、「d」のステータス

に応じて格納先に移動する。

「d」 = 「0」の場合、結果を W レジスタに

格納する。「d」 = 「1」の場合、結果をレジ

スタ「f」に書き戻す ( 既定値 )。「f」のアド

レスは、256 バイトバンクの任意の場所を指

定できる。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

W に

書き込み

例 : MOVF REG, 0, 0

命令実行前REG = 22hW = FFh

命令実行後REG = 22hW = 22h

2013 Microchip Technology Inc. DS39762F_JP - p.399

Page 400: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

MOVFF Move f to f

構文 : MOVFF fs,fd

オペランド : 0 fs 40950 fd 4095

動作 : (fs) fd

影響を受ける

ステータス :なし

エンコード :1 ワード目 ( 送信元 )2 ワード目 ( 格納先 )

11001111

ffffffff

ffffffff

ffffsffffd

説明 : 送信元レジスタ「fs」の内容を格納先レ

ジスタ「fd」に移動する。

送信元「fs」と格納先「fd」のアドレス

はいずれも 4096 バイトのデータ空間

(000h ~ FFFh) の任意の場所を指定で

きる。

送信元と格納先のいずれかを W レジス

タとする事も可能 ( 特別な場合 ) である。

MOVFFは、特にデータメモリのアドレ

スを周辺レジスタ ( 送信バッファや I/Oポート等 ) に移す際に使う。

MOVFF命令では、PCL、TOSU、

TOSH、TOSL を格納先レジスタには使

えない。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ「f」( 送信元 ) を読み出し

データを

処理

NOP

デコード NOP

ダミー読み出し

なし

NOP レジスタ「f」( 格納先 ) に書き込み

例 : MOVFF REG1, REG2

命令実行前REG1 = 33hREG2 = 11h

命令実行後REG1 = 33hREG2 = 33h

MOVLB Move Literal to Low Nibble in BSR

構文 : MOVLW k

オペランド : 0 k 255

動作 : k BSR

影響を受ける

ステータス :なし

エンコード : 0000 0001 kkkk kkkk

説明 : 8 ビットのリテラル「k」をバンクセレクト レジスタ (BSR) に読み込む。k7:k4 の値に関

わらず、BSR<7:4> の値は常に「0」である。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

BSR に

リテラル「k」を書き込み

例 : MOVLB 5

命令実行前BSR Register = 02h

命令実行後BSR Register = 05h

DS39762F_JP - p.400 2013 Microchip Technology Inc.

Page 401: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

MOVLW Move Literal to W

構文 : MOVLW k

オペランド : 0 k 255

動作 : k W

影響を受ける

ステータス :なし

エンコード : 0000 1110 kkkk kkkk

説明 : 8 ビットのリテラル「k」を W レジスタに読

み込む。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 : MOVLW 5Ah

命令実行後W = 5Ah

MOVWF Move W to f

構文 : MOVWF f {,a}

オペランド : 0 f 255a [0,1]

動作 : (W) f

影響を受ける

ステータス :なし

エンコード : 0110 111a ffff ffff

説明 : W レジスタからレジスタ「f」へデータを移

動する。

「f」のアドレスは、256 バイトバンクの任意

の場所を指定できる。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : MOVWF REG, 0

命令実行前W = 4FhREG = FFh

命令実行後W = 4FhREG = 4Fh

2013 Microchip Technology Inc. DS39762F_JP - p.401

Page 402: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

MULLW Multiply Literal with W

構文 : MULLW k

オペランド : 0 k 255

動作 : (W) x k PRODH:PRODL

影響を受ける

ステータス :なし

エンコード : 0000 1101 kkkk kkkk

説明 : W レジスタの内容と 8 ビットのリテラル

「k」とで符号なし乗算を実行する。16 ビッ

トの結果を PRODH:PRODL レジスタペア

に格納する。PRODH には上位バイトを格

納する。

W レジスタの内容は変化しない。

ステータスフラグは一切変化しない。

この演算では、オーバーフローもキャリー

も不可能である。結果がゼロになる事は

あっても、検出されない。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

PRODH:PRODL

レジスタに

書き込み

例 : MULLW 0C4h

命令実行前W = E2hPRODH = ?PRODL = ?

命令実行後W = E2hPRODH = ADhPRODL = 08h

MULWF Multiply W with f

構文 : MULWF f {,a}

オペランド : 0 f 255a [0,1]

動作 : (W) x (f) PRODH:PRODL

影響を受ける

ステータス :なし

エンコード : 0000 001a ffff ffff

説明 : W レジスタの内容とアドレス「f」のレジス

タファイルとで符号なし乗算を実行する。

16 ビットの結果を PRODH:PRODL レジス

タペアに格納する。PRODH には上位バイト

を格納する。W と「f」の内容はどちらも変

化しない。

ステータスフラグは一切変化しない。

この演算では、オーバーフローもキャリーも

不可能である。結果がゼロになる事はあって

も、検出されない。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付きリ

テラル オフセットモードでのバイト / ビット

指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

PRODH:PRODLレジスタに

書き込み

例 : MULWF REG, 1

命令実行前W = C4hREG = B5hPRODH = ?PRODL = ?

命令実行後W = C4hREG = B5hPRODH = 8AhPRODL = 94h

DS39762F_JP - p.402 2013 Microchip Technology Inc.

Page 403: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NEGF Negate f

構文 : NEGF f {,a}

オペランド : 0 f 255a [0,1]

動作 : (f) + 1 f

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0110 110a ffff ffff

説明 : 2 の補数を使ってアドレス「f」の符号を反

転する。結果をデータメモリのアドレス「f」に格納する。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : NEGF REG, 1

命令実行前REG = 0011 1010 [3Ah]

命令実行後REG = 1100 0110 [C6h]

NOP NOP

構文 : NOP

オペランド : なし

動作 : NOP

影響を受ける

ステータス :なし

エンコード : 00001111

0000xxxx

0000xxxx

0000xxxx

説明 : 何も実行しない。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード NOP NOP NOP

例 :

なし

2013 Microchip Technology Inc. DS39762F_JP - p.403

Page 404: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

POP Pop Top of Return Stack

構文 : POP

オペランド : なし

動作 : (TOS) bit bucket

影響を受ける

ステータス :なし

エンコード : 0000 0000 0000 0110

説明 : TOS の値をリターンスタックから取り出し

て破棄する。これにより、その前にリター

ンスタックにプッシュした値が TOS の値に

なる。

この命令は、ユーザがリターンスタックを

適切に管理してソフトウェア スタックを実

装するためのものである。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード NOP TOS の値を

ポップ

NOP

例 : POPGOTO NEW

命令実行前TOS = 0031A2hStack (1 level down) = 014332h

命令実行後TOS = 014332hPC = NEW

PUSH Push Top of Return Stack

構文 : PUSH

オペランド : なし

動作 : (PC + 2) TOS

影響を受ける

ステータス :なし

エンコード : 0000 0000 0000 0101

説明 : PC + 2 をリターンスタックの先頭にプッ

シュする。それまでの TOS 値はスタックの

次の位置にプッシュされる。

この命令を使って TOS を変更し、リターン

スタックにプッシュする事で、ソフトウェア スタックを実装できる。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード PC + 2 を

リターン

スタックに

プッシュ

NOP NOP

例 : PUSH

命令実行前TOS = 345AhPC = 0124h

命令実行後PC = 0126hTOS = 0126hStack (1 level down) = 345Ah

DS39762F_JP - p.404 2013 Microchip Technology Inc.

Page 405: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

RCALL Relative Call

構文 : RCALL n

オペランド : -1024 n 1023

動作 : (PC) + 2 TOS,(PC) + 2 + 2n PC

影響を受ける

ステータス :なし

エンコード : 1101 1nnn nnnn nnnn

説明 : 現在のアドレスから 大 1K までの範囲で

サブルーチンへジャンプする。 初に、リ

ターンアドレス (PC+2) をスタックにプッ

シュする。次に、PC に 2 の補数「2n」を

加算する。PC は次の命令をフェッチする

ためにインクリメントしているため、新し

いアドレスは PC + 2 + 2n となる。この命

令は 2 サイクル命令である。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「n」を

読み出し

PC を

スタックに

プッシュ

データを

処理

PC に

書き込み

NOP NOP NOP NOP

例 : HERE RCALL Jump

命令実行前PC = Address (HERE)

命令実行後PC = Address (Jump)TOS = Address (HERE + 2)

RESET Reset

構文 : RESET

オペランド : なし

動作 : MCLRリセットの影響を受ける全てのレジス

タとフラグをリセットする。

影響を受ける

ステータス :全て

エンコード : 0000 0000 1111 1111

説明 : この命令は、MCLR リセットをソフトウェ

アで実行する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リセットを

開始

NOP NOP

例 : RESET

命令実行後Registers = Reset ValueFlags* = Reset Value

2013 Microchip Technology Inc. DS39762F_JP - p.405

Page 406: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

RETFIE Return from Interrupt

構文 : RETFIE {s}

オペランド : s [0,1]

動作 : (TOS) PC,1 GIE/GIEH または PEIE/GIEL;s = 1の場合(WS) W,(STATUSS) STATUS,(BSRS) BSR,PCLATU, PCLATH は変更されない

影響を受ける

ステータス :GIE/GIEH, PEIE/GIEL.

エンコード : 0000 0000 0001 000s

説明 : 割り込みから戻る。スタックをポップして、

TOS を PC に読み込む。割り込みを有効にす

るには、高優先度または低優先度のグローバ

ル割り込みイネーブルビットをセットする。

「s」 = 1の場合、シャドーレジスタ WS、STATUSS、BSRS の内容を対応する W、

STATUS、BSR の各レジスタに読み込む。

「s」 = 0の場合、これらのレジスタは更新さ

れない ( 既定値 )。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード NOP NOP スタックから

PC をポップ

GIEH または

GIEL をセット

NOP NOP NOP NOP

例 : RETFIE 1

割り込み後PC = TOSW = WSBSR = BSRSSTATUS = STATUSSGIE/GIEH, PEIE/GIEL = 1

RETLW Return Literal to W

構文 : RETLW k

オペランド : 0 k 255

動作 : k W,(TOS) PC,PCLATU, PCLATH は変更されない

影響を受ける

ステータス :なし

エンコード : 0000 1100 kkkk kkkk

説明 : W レジスタに 8 ビットのリテラル「k」を読

み込む。TOS ( リターンアドレス ) を PC に

読み込む。上位アドレスラッチ (PCLATH) は変化しない。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

スタックから

PC をポップし、

W に書き込み

NOP NOP NOP NOP

例 :

CALL TABLE ; W contains table ; offset value ; W now has ; table value :TABLE

ADDWF PCL ; W = offsetRETLW k0 ; Begin tableRETLW k1 ;

: :

RETLW kn ; End of table

命令実行前W = 07h

命令実行後W = value of kn

DS39762F_JP - p.406 2013 Microchip Technology Inc.

Page 407: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

RETURN Return from Subroutine

構文 : RETURN {s}

オペランド : s [0,1]

動作 : (TOS) PC;s = 1の場合(WS) W,(STATUSS) STATUS,(BSRS) BSR,PCLATU, PCLATH は変更されない

影響を受ける

ステータス :なし

エンコード : 0000 0000 0001 001s

説明 : サブルーチンから戻る。スタックをポップ

し、TOS を PC に読み込む。「s」 = 1の場

合、シャドーレジスタ WS、STATUSS、BSRS の内容をそれぞれ W、STATUS、BSR の各レジスタに読み込む。

「s」 = 0の場合、これらのレジスタは更新さ

れない ( 既定値 )。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード NOP データを

処理

スタックから

PC をポップ

NOP NOP NOP NOP

例 : RETURN

命令実行後PC = TOS

RLCF Rotate Left f through Carry

構文 : RLCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<n>) dest<n + 1>,(f<7>) C,(C) dest<0>

影響を受ける

ステータス :C, N, Z

エンコード : 0011 01da ffff ffff

説明 : レジスタ「f」の内容を、キャリーフラグを

通して左回りに 1 ビット移動させる。「d」 = 「0」の場合、結果を W レジスタに格納する。

「d」 = 「1」の場合、結果をレジスタ「f」に

書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : RLCF REG, 0, 0

命令実行前REG = 1110 0110C = 0

命令実行後REG = 1110 0110W = 1100 1100C = 1

C register f

2013 Microchip Technology Inc. DS39762F_JP - p.407

Page 408: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

RLNCF Rotate Left f (no carry)

構文 : RLNCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<n>) dest<n + 1>,(f<7>) dest<0>

影響を受ける

ステータス :N, Z

エンコード : 0100 01da ffff ffff

説明 : レジスタ「f」の内容を左回りに 1 ビット移

動させる。「d」 = 「0」の場合、結果を W レ

ジスタに格納する。「d」 = 「1」の場合、結

果をレジスタ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : RLNCF REG, 1, 0

命令実行前REG = 1010 1011

命令実行後REG = 0101 0111

register f

RRCF Rotate Right f through Carry

構文 : RRCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<n>) dest<n – 1>,(f<0>) C,(C) dest<7>

影響を受ける

ステータス :C, N, Z

エンコード : 0011 00da ffff ffff

説明 : レジスタ「f」の内容を、キャリーフラグを

通して右回りに 1 ビット移動させる。「d」 = 「0」の場合、結果を W レジスタに格納する。

「d」 = 「1」の場合、結果をレジスタ「f」に

書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : RRCF REG, 0, 0

命令実行前REG = 1110 0110C = 0

命令実行後REG = 1110 0110W = 0111 0011C = 0

C register f

DS39762F_JP - p.408 2013 Microchip Technology Inc.

Page 409: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

RRNCF Rotate Right f (no carry)

構文 : RRNCF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<n>) dest<n – 1>,(f<0>) dest<7>

影響を受ける

ステータス :N, Z

エンコード : 0100 00da ffff ffff

説明 : レジスタ「f」の内容を右回りに 1 ビット移

動させる。「d」 = 「0」の場合、結果を W レ

ジスタに格納する。「d」 = 「1」の場合、結

果をレジスタ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、BSR の値に関わらずア

クセスバンクを選択する。「a」 = 「1」の場

合、BSR の値でバンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 1: RRNCF REG, 1, 0

命令実行前REG = 1101 0111

命令実行後REG = 1110 1011

例 2: RRNCF REG, 0, 0

命令実行前W = ?REG = 1101 0111

命令実行後W = 1110 1011REG = 1101 0111

register f

SETF Set f

構文 : SETF f {,a}

オペランド : 0 f 255a [0,1]

動作 : FFh f

影響を受ける

ステータス :なし

エンコード : 0110 100a ffff ffff

説明 : 指定したレジスタの内容を FFh にセットする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にしてい

る場合、f 95 (5Fh) ならば、この命令は常に

インデックス付きリテラル オフセット アド

レッシング モードで実行される。詳細は、セ

クション 26.2.3「インデックス付きリテラル オフセットモードでのバイト / ビット指向命

令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

レジスタ

「f」に

書き込み

例 : SETF REG,1

命令実行前REG = 5Ah

命令実行後REG = FFh

2013 Microchip Technology Inc. DS39762F_JP - p.409

Page 410: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

SLEEP Enter Sleep Mode

構文 : SLEEP

オペランド : なし

動作 : 00h WDT,0 WDT postscaler,1 TO,0 PD

影響を受ける

ステータス :TO, PD

エンコード : 0000 0000 0000 0011

説明 : パワーダウン ステータスビット (PD) をクリ

アする。タイムアウト ステータスビット

(TO) をセットする。ウォッチドッグ タイマ

をポストスケーラを含めてクリアする。

オシレータを停止してプロセッサをスリープ

にする。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード NOP データを

処理

スリープに

移行する

例 : SLEEP

命令実行前TO = ?PD = ?

命令実行後

TO = 1 †PD = 0

† WDT によって復帰した場合、このビットはクリア

されます。

SUBFWB Subtract f from W with Borrow

構文 : SUBFWB f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) – (f) – (C) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0101 01da ffff ffff

説明 : W レジスタからレジスタ「f」とキャリーフ

ラグ ( ボロー ) を減算する (2 の補数法 )。「d」 = 「0」の場合、結果を W レジスタに格

納する。「d」 = 「1」の場合、結果をレジス

タ「f」に格納する ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付きリ

テラル オフセットモードでのバイト / ビット

指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 1: SUBFWB REG, 1, 0

命令実行前REG = 3W = 2C = 1

命令実行後REG = FFW = 2C = 0Z = 0N = 1 ; result is negative

例 2: SUBFWB REG, 0, 0

命令実行前REG = 2W = 5C = 1

命令実行後REG = 2W = 3C = 1Z = 0N = 0 ; result is positive

例 3: SUBFWB REG, 1, 0

命令実行前REG = 1W = 2C = 0

命令実行後REG = 0W = 2C = 1Z = 1 ; result is zeroN = 0

DS39762F_JP - p.410 2013 Microchip Technology Inc.

Page 411: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

SUBLW Subtract W from Literal

構文 : SUBLW k

オペランド : 0 k 255

動作 : k - (W) W

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0000 1000 kkkk kkkk

説明 : 8 ビットのリテラル「k」から W レジスタの

内容を減算する。

結果を W レジスタに格納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 1: SUBLW 02h

命令実行前W = 01hC = ?

命令実行後W = 01hC = 1 ; result is positiveZ = 0N = 0

例 2: SUBLW 02h

命令実行前W = 02hC = ?

命令実行後W = 00hC = 1 ; result is zeroZ = 1N = 0

例 3: SUBLW 02h

命令実行前W = 03hC = ?

命令実行後W = FFh ; (2’s complement)C = 0 ; result is negativeZ = 0N = 1

SUBWF Subtract W from f

構文 : SUBWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – (W) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0101 11da ffff ffff

説明 : レジスタ「f」から W レジスタの内容を減算

する (2 の補数法 )。 「d」 = 「0」の場合、結果を W レジスタに

格納する。「d」 = 「1」の場合、結果をレジ

スタ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付きリ

テラル オフセットモードでのバイト / ビット

指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 1: SUBWF REG, 1, 0

命令実行前REG = 3W = 2C = ?

命令実行後REG = 1W = 2C = 1 ; result is positiveZ = 0N = 0

例 2: SUBWF REG, 0, 0

命令実行前REG = 2W = 2C = ?

命令実行後REG = 2W = 0C = 1 ; result is zeroZ = 1N = 0

例 3: SUBWF REG, 1, 0

命令実行前REG = 1W = 2C = ?

命令実行後REG = FFh ;(2’s complement)W = 2C = 0 ; result is negativeZ = 0N = 1

2013 Microchip Technology Inc. DS39762F_JP - p.411

Page 412: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

SUBWFB Subtract W from f with Borrow

構文 : SUBWFB f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f) – (W) – (C) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0101 10da ffff ffff

説明 : レジスタ「f」から W レジスタとキャリーフ

ラグ ( ボロー ) を減算する (2 の補数法 )。「d」 = 「0」の場合、結果を W レジスタに格

納する。「d」 = 「1」の場合、結果をレジス

タ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 1: SUBWFB REG, 1, 0

命令実行前REG = 19h (0001 1001)W = 0Dh (0000 1101)C = 1

命令実行後REG = 0Ch (0000 1011)W = 0Dh (0000 1101)C = 1Z = 0N = 0 ; result is positive

例 2: SUBWFB REG, 0, 0

命令実行前REG = 1Bh (0001 1011)W = 1Ah (0001 1010)C = 0

命令実行後REG = 1Bh (0001 1011)W = 00hC = 1Z = 1 ; result is zeroN = 0

例 3: SUBWFB REG, 1, 0

命令実行前REG = 03h (0000 0011)W = 0Eh (0000 1101)C = 1

命令実行後REG = F5h (1111 0100)

; [2’s comp]W = 0Eh (0000 1101)C = 0Z = 0N = 1 ; result is negative

SWAPF Swap f

構文 : SWAPF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (f<3:0>) dest<7:4>,(f<7:4>) dest<3:0>

影響を受ける

ステータス :なし

エンコード : 0011 10da ffff ffff

説明 : レジスタ「f」の上位ニブルと下位ニブルを

入れ換える。「d」 = 「0」の場合、結果を Wレジスタに格納する。「d」 = 「1」の場合、

結果をレジスタ「f」に格納する ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付きリ

テラル オフセットモードでのバイト / ビット

指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : SWAPF REG, 1, 0

命令実行前REG = 53h

命令実行後REG = 35h

DS39762F_JP - p.412 2013 Microchip Technology Inc.

Page 413: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

TBLRD Table Read

構文 : TBLRD ( *; *+; *-; +*)

オペランド : なし

動作 : if TBLRD*,(Prog Mem (TBLPTR)) TABLAT;TBLPTR – No Changeif TBLRD *+,(Prog Mem (TBLPTR)) TABLAT;(TBLPTR) + 1 TBLPTRif TBLRD *-,(Prog Mem (TBLPTR)) TABLAT;(TBLPTR) – 1 TBLPTRif TBLRD +*,(TBLPTR) + 1 TBLPTR;(Prog Mem (TBLPTR)) TABLAT

影響を受ける

ステータス :なし

エンコード : 0000 0000 0000 10nn nn=0 * =1 *+ =2 *- =3 +*

説明 : この命令は、プログラムメモリ (P.M.) の内容

の読み出しに使う。プログラムメモリのアド

レスは、テーブルポインタ (TBLPTR) と呼ば

れるポインタを使って指定する。

TBLPTR (21 ビットのポインタ ) は、プログ

ラムメモリをバイト単位で指定する。

TBLPTR では、2MB のアドレス範囲を指定で

きる。

TBLPTR[0] = 0: プログラムメモリ ワードの LSB

TBLPTR[0] = 1: プログラムメモリ ワードの MSB

TBLRD命令では、TBLPTR の値を以下のよう

に変更できる。

• 変更なし

• ポストインクリメント

• ポストデクリメント

• プリインクリメント

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード NOP NOP NOP

NOP NOP( プログラムメモリを読み出し )

NOP NOP(TABLAT に書き込み )

TBLRD Table Read ( 続き )

例 1: TBLRD *+ ;

命令実行前TABLAT = 55hTBLPTR = 00A356hMEMORY(00A356h) = 34h

命令実行後TABLAT = 34hTBLPTR = 00A357h

例 2: TBLRD +* ;

命令実行前TABLAT = AAhTBLPTR = 01A357hMEMORY(01A357h) = 12hMEMORY(01A358h) = 34h

命令実行後TABLAT = 34hTBLPTR = 01A358h

2013 Microchip Technology Inc. DS39762F_JP - p.413

Page 414: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

TBLWT Table Write

構文 : TBLWT ( *; *+; *-; +*)

オペランド : なし

動作 : if TBLWT*,(TABLAT) Holding Register;TBLPTR – No Changeif TBLWT*+,(TABLAT) Holding Register;(TBLPTR) + 1 TBLPTRif TBLWT*-,(TABLAT) Holding Register;(TBLPTR) – 1 TBLPTRif TBLWT+*,(TBLPTR) + 1 TBLPTR;(TABLAT) Holding Register

影響を受ける

ステータス :なし

エンコード : 0000 0000 0000 11nnnn=0 * =1 *+ =2 *- =3 +*

説明 : この命令は、TBLPTR の下位 3 ビットを

使って 8 つの保持レジスタのどれに TABLATを書き込むかを判断する。保持レジスタは、

プログラムメモリ (P.M.) の内容を書き込む

ために使う ( フラッシュメモリへの書き込

みの詳細は、セクション 6.0「メモリ構成」

参照 )。

TBLPTR (21 ビットのポインタ ) は、プログ

ラムメモリをバイト単位で指定する。

TBLPTR では、2MB のアドレス範囲を指定

できる。TBLPTR の 下位ビットで、プロ

グラムメモリのどのアドレスのバイトにアク

セスするかを選択する。

TBLPTR[0] = 0: プログラムメモリ ワードの LSB

TBLPTR[0] = 1: プログラムメモリ ワードの MSB

TBLWT命令では、TBLPTR の値を以下のよ

うに変更できる。

• 変更なし

• ポストインクリメント

• ポストデクリメント

• プリインクリメント

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :

Q1 Q2 Q3 Q4

デコード NOP NOP NOP

NOP NOP(TABLAT を

読み出し )

NOP NOP( 保持

レジスタに

書き込み )

TBLWT Table Write ( 続き )

例 1: TBLWT *+;

命令実行前TABLAT = 55hTBLPTR = 00A356hHOLDING REGISTER (00A356h) = FFh

命令実行 ( テーブル書き込み完了 ) 後TABLAT = 55hTBLPTR = 00A357hHOLDING REGISTER (00A356h) = 55h

例 2: TBLWT +*;

命令実行前TABLAT = 34hTBLPTR = 01389AhHOLDING REGISTER (01389Ah) = FFhHOLDING REGISTER (01389Bh) = FFh

命令実行 ( テーブル書き込み完了 ) 後TABLAT = 34hTBLPTR = 01389BhHOLDING REGISTER (01389Ah) = FFhHOLDING REGISTER (01389Bh) = 34h

DS39762F_JP - p.414 2013 Microchip Technology Inc.

Page 415: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

TSTFSZ Test f, Skip if 0

構文 : TSTFSZ f {,a}

オペランド : 0 f 255a [0,1]

動作 : f = 0の場合にスキップ

影響を受ける

ステータス :なし

エンコード : 0110 011a ffff ffff

説明 : 「f」 = 0の場合、現在の命令実行中にフェッ

チした次の命令を破棄し、NOP命令を実行

して 2 サイクル命令とする。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1(2)Note: スキップ先の命令が 2 ワード

命令の場合は 3 サイクルである。

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

NOP

スキップする場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

スキップ先が 2 ワード命令の場合 :Q1 Q2 Q3 Q4

NOP NOP NOP NOP

NOP NOP NOP NOP

例 : HERE TSTFSZ CNT, 1NZERO :ZERO :

命令実行前PC = Address (HERE)

命令実行後If CNT = 00h,PC = Address (ZERO)If CNT 00h,PC = Address (NZERO)

XORLW Exclusive OR Literal with W

構文 : XORLW k

オペランド : 0 k 255

動作 : (W) .XOR. k W

影響を受ける

ステータス :N, Z

エンコード : 0000 1010 kkkk kkkk

説明 : W レジスタの内容と 8 ビットのリテラル

「k」を XOR 演算する。結果を W レジスタ

に格納する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

W に

書き込み

例 : XORLW 0AFh

命令実行前W = B5h

命令実行後W = 1Ah

2013 Microchip Technology Inc. DS39762F_JP - p.415

Page 416: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

XORWF Exclusive OR W with f

構文 : XORWF f {,d {,a}}

オペランド : 0 f 255d [0,1]a [0,1]

動作 : (W) .XOR. (f) dest

影響を受ける

ステータス :N, Z

エンコード : 0001 10da ffff ffff

説明 : W レジスタとレジスタ「f」の内容を XOR演算する。「d」 = 「0」の場合、結果を W レ

ジスタに格納する。「d」 = 「1」の場合、結

果をレジスタ「f」に書き戻す ( 既定値 )。

「a」 = 「0」の場合、アクセスバンクを選択

する。「a」 = 「1」の場合、BSR を使って

GPR バンクを選択する ( 既定値 )。

「a」 = 「0」で拡張命令セットを有効にして

いる場合、f 95 (5Fh) ならば、この命令は

常にインデックス付きリテラル オフセット アドレッシング モードで実行される。詳細

は、セクション 26.2.3「インデックス付き

リテラル オフセットモードでのバイト /ビット指向命令」参照。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : XORWF REG, 1, 0

命令実行前REG = AFhW = B5h

命令実行後REG = 1AhW = B5h

DS39762F_JP - p.416 2013 Microchip Technology Inc.

Page 417: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

26.2 拡張命令セット

PIC18F97J60 ファミリは、75 命令からなる PIC18 標準命令セットに加え、拡張命令セットもサポートしています。間接アドレッシングおよびインデックス付きアドレッシング動作を強化する 8 つの拡張命令を追加すると共に、多くの PIC18 標準命令向けにインデックス付きリテラル オフセット アドレッシングを実装しました。

拡張命令セットによる追加機能は、未プログラム デバイスの既定値では有効に設定されています。ユーザは、プログラミング時に XINST コンフィグレーションビットを正しくセットまたはクリアして、これらの機能の有効 / 無効を設定する必要があります。

拡張命令セットの命令は全てリテラル命令に分類され、FSR を操作するか、FSR を使ってインデックス付きアドレッシングを行います。拡張命令のうち、ADDFSRと SUBFSRの 2 つには、それぞれ FSR2 を使う命令も用意しています。これらの命令 (ADDULNKとSUBULNK) では、実行後に自動的にリターンできます。

拡張命令は、主に C 言語等の高級言語で作成した再入可能プログラムコード ( すなわち、再帰コードまたはソフトウェア スタックを使うコード ) を 適化する目的で実装しています。特に、これらの命令を使うと、データ構造に対する一部の演算を高級言語で効率的に実行できます。例えば以下のような場合です。

• サブルーチン開始時と終了時における、ソフトウェア スタック空間の動的な割り当てと割り当て解除

• 関数ポインタの呼び出し

• ソフトウェア スタックポインタの操作

• ソフトウェア スタック内の変数の操作

表 26-3 に、拡張命令セットの命令一覧を示します。各命令の詳細は、セクション 26.2.2「拡張命令セット」で説明します。オペコード フィールドの説明は、表 26-1 (376 ページ ) に示した PIC18 標準命令セットと共通です。

26.2.1 拡張命令の構文

拡張命令のほとんどはインデックス付き引数を使い、ファイルセレクト レジスタの1つとオフセットを使って送信元または格納先のレジスタを指定します。命令の引数をインデックス付きアドレッシングに使う場合、引数を角カッコ (「[ ]」) で囲みます。これによって、その引数をインデックスまたはオフセットとして使う事を明示します。インデックスまたはオフセットの値を角カッコで囲まないと、MPASM™ アセンブラでエラーが発生します。

拡張命令セットを有効にした場合、バイト指向命令とビット指向命令のインデックス引数を示すためにも角カッコを使います。これ以外にも構文の変更があります。詳細は、セクション 26.2.3.1「拡張命令有効時の PIC18 標準コマンドの構文」を参照してください。

表 26-3: PIC18 拡張命令セット

Note: 拡張命令セットとインデックス付きリテラル オフセット アドレッシング モードは C 言語で作成したアプリケーションの

適化を目的としています。これらの命令をアセンブラで直接使う事は想定していません。ただし、コンパイラが生成したコードをチェックする際の参考として、各命令の構文を説明しています。

Note: 以前の文書では、PIC18 とそれ以前の命令セットにおけるオプションの引数を角カッコで表していました。今後は、オプションの引数は中カッコ (「{ }」) で表します。

ニーモニック、オペランド

説明サイクル

16 ビット命令ワード 影響を受けるステータスMSb LSb

ADDFSRADDULNKCALLWMOVSF

MOVSS

PUSHL

SUBFSRSUBULNK

f, kk

zs, fd

zs, zd

k

f, kk

Add Literal to FSRAdd Literal to FSR2 and ReturnCall Subroutine using WREGMove zs (source) to 1st word

fd (destination) 2nd wordMove zs (source) to 1st word

zd (destination) 2nd wordStore Literal at FSR2, Decrement FSR2Subtract Literal from FSRSubtract Literal from FSR2 and Return

1222

2

1

12

11101110000011101111111011111110

11101110

1000100000001011ffff1011xxxx1010

10011001

ffkk 11kk 00010zzzffff1zzzxzzzkkkk

ffkk11kk

kkkkkkkk0100zzzzffffzzzzzzzzkkkk

kkkkkkkk

なしなしなしなし

なし

なし

なしなし

2013 Microchip Technology Inc. DS39762F_JP - p.417

Page 418: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

26.2.2 拡張命令セット

ADDFSR Add Literal to FSR

構文 : ADDFSR f, k

オペランド : 0 k 63f [ 0, 1, 2 ]

動作 : FSR(f) + k FSR(f)

影響を受ける

ステータス :なし

エンコード : 1110 1000 ffkk kkkk

説明 : 6 ビットのリテラル「k」を、「f」で指定し

た FSR の内容に加算する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

FSR に

書き込み

例 : ADDFSR 2, 23h

命令実行前FSR2 = 03FFh

命令実行後FSR2 = 0422h

ADDULNK Add Literal to FSR2 and Return

構文 : ADDULNK k

オペランド : 0 k 63

動作 : FSR2 + k FSR2,

(TOS) PC

影響を受ける

ステータス :なし

エンコード : 1110 1000 11kk kkkk

説明 : 6 ビットのリテラル「k」を FSR2 の内容

に加算する。次に、PC に TOS を読み込

んで RETURNを実行する。

この命令の実行は 2 サイクルで、2 サイ

クル目には NOPを実行する。

これは、ADDFSR命令で f = 3 (2 進数

「11」) である特殊な場合と考える事がで

きる。この命令は FSR2 に対してのみ実

行できる。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード リテラル

「k」を

読み出し

データを

処理

FSR に

書き込み

NOP NOP NOP NOP

例 : ADDULNK 23h

命令実行前FSR2 = 03FFhPC = 0100h

命令実行後FSR2 = 0422hPC = (TOS)

Note: PIC18 の命令は全て、命令ニーモニックの前にオプションの引数としてラベルを指定する事によってシンボリック アドレッシングが可能です。この場合、命令の形式は「{ ラベル } 命令 引数」です。

DS39762F_JP - p.418 2013 Microchip Technology Inc.

Page 419: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

CALLW Subroutine Call using WREG

構文 : CALLW

オペランド : なし

動作 : (PC + 2) TOS,(W) PCL,(PCLATH) PCH,(PCLATU) PCU

影響を受ける

ステータス :なし

エンコード : 0000 0000 0001 0100

説明 : まず、リターンアドレス (PC + 2) をリター

ンスタックにプッシュする。次に、W レジ

スタの内容を PCL に書き込む ( 既存の値は

破棄される )。さらに、PCLATH と

PCLATU の内容を PCH と PCU にそれぞれ

ラッチする。

2 サイクル目は NOP命令として実行され、

その間に次の命令をフェッチする。

CALLとは異なり、W、STATUS、BSR を

更新する事はできない。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード WREG を

読み出し

PC を

スタックに

プッシュ

NOP

NOP NOP NOP NOP

例 : HERE CALLW

命令実行前PC = address (HERE)PCLATH = 10hPCLATU = 00hW = 06h

命令実行後PC = 001006hTOS = address (HERE + 2)PCLATH = 10hPCLATU = 00hW = 06h

MOVSF Move Indexed to f

構文 : MOVSF [zs], fd

オペランド : 0 zs 1270 fd 4095

動作 : ((FSR2) + zs) fd

影響を受ける

ステータス :なし

エンコード :1 ワード目 ( 送信元 )2 ワード目 ( 格納先 )

11101111

1011ffff

0zzzffff

zzzzsffffd

説明 : 送信元レジスタの内容を格納先レジス

タ「fd」に移動する。送信元レジスタ

の実際のアドレスは、1 ワード目にあ

る 7 ビットのリテラル オフセット

「zs」を FSR2 の値に加算して求める。

格納先レジスタのアドレスは、2 ワー

ド目にある 12 ビットのリテラル「fd」で指定する。どちらのアドレスも、

4096 バイトのデータ空間 (000h ~

FFFh) の任意の位置を指定できる。

MOVSF命令では、格納先レジスタに

PCL、TOSU、TOSH、TOSL を使え

ない。

上記で求めた送信元アドレスが間接

アドレッシング レジスタを指し示し

ている場合、戻り値は 00h となる。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード 送信元

アドレスを

求める

送信元

アドレスを

求める

送信元

レジスタを

読み出す

デコード NOP

ダミー

読み出し

なし

NOP レジスタ「f」( 格納先 ) に書き込み

例 : MOVSF [05h], REG2

命令実行前FSR2 = 80hContents of 85h = 33hREG2 = 11h

命令実行後FSR2 = 80hContents of 85h = 33hREG2 = 33h

2013 Microchip Technology Inc. DS39762F_JP - p.419

Page 420: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

MOVSS Move Indexed to Indexed

構文 : MOVSS [zs], [zd]

オペランド : 0 zs 1270 zd 127

動作 : ((FSR2) + zs) ((FSR2) + zd)

影響を受ける

ステータス :なし

エンコード :1 ワード目 ( 送信元 )2 ワード目 ( 格納先 )

11101111

1011xxxx

1zzzxzzz

zzzzszzzzd

説明 : 送信元レジスタの内容を格納先レジ

スタに移動する。送信元レジスタと

格納先レジスタのアドレスは、それ

ぞれ 7 ビットのリテラル オフセット

「zs」または「zd」を FSR2 の値に加

算して求める。どちらのレジスタも、

4096 バイトのデータメモリ空間

(000h ~ FFFh) の任意の位置を指定

できる。

MOVSS命令では、格納先レジスタに

PCL、TOSU、TOSH、TOSL を使え

ない。

上記で求めた送信元アドレスが間接

アドレッシング レジスタを指し示し

ている場合、戻り値は 00h となる。

上記で求めた格納先アドレスが間接

アドレッシング レジスタを指し示し

ている場合、この命令は NOPとして

実行される。

ワード数 : 2

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード 送信元

アドレスを

求める

送信元

アドレスを

求める

送信元

レジスタを

読み出す

デコード 宛先

アドレスを

求める

宛先

アドレスを

求める

宛先

レジスタへ

書き込む

例 : MOVSS [05h], [06h]

命令実行前FSR2 = 80hContentsof 85h = 33hContentsof 86h = 11h

命令実行後FSR2 = 80hContentsof 85h = 33hContentsof 86h = 33h

PUSHL Store Literal at FSR2, Decrement FSR2

構文 : PUSHL k

オペランド : 0 k 255

動作 : k (FSR2),FSR2 - 1 FSR2

影響を受ける

ステータス :なし

エンコード : 1110 1010 kkkk kkkk

説明 : 8 ビットのリテラル「k」を FSR2 で指定し

たデータメモリ アドレスに書き込む。この

命令を実行後、FSR2 の値をデクリメント

する。

この命令を使って、ユーザはソフトウェア スタックに値をプッシュできる。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード 「k」を

読み出す

データを

処理

格納先に

書き込み

例 : PUSHL 08h

命令実行前FSR2H:FSR2L = 01EChMemory (01ECh) = 00h

命令実行後FSR2H:FSR2L = 01EBhMemory (01ECh) = 08h

DS39762F_JP - p.420 2013 Microchip Technology Inc.

Page 421: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

SUBFSR Subtract Literal from FSR

構文 : SUBFSR f, k

オペランド : 0 k 63

f [ 0, 1, 2 ]

動作 : FSRf – k FSRf

影響を受ける

ステータス :なし

エンコード : 1110 1001 ffkk kkkk

説明 : 「f」で指定した FSR の内容から 6 ビット

のリテラル「k」を減算する。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : SUBFSR 2, 23h

命令実行前FSR2 = 03FFh

命令実行後FSR2 = 03DCh

SUBULNK Subtract Literal from FSR2 and Return

構文 : SUBULNK k

オペランド : 0 k 63

動作 : FSR2 – k FSR2,(TOS) PC

影響を受ける

ステータス :なし

エンコード : 1110 1001 11kk kkkk

説明 : FSR2 の内容から 6 ビットのリテラル

「k」を減算する。次に、PC に TOS を

読み込んで RETURNを実行する。

この命令の実行は 2 サイクルで、2 サイ

クル目には NOPを実行する。

これは、SUBFSR命令で f = 3 (2 進数

「11」) である特殊な場合と考える事が

できる。この命令は FSR2 に対しての

み実行できる。

ワード数 : 1

サイクル数 : 2

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

NOP NOP NOP NOP

例 : SUBULNK 23h

命令実行前FSR2 = 03FFhPC = 0100h

命令実行後FSR2 = 03DChPC = (TOS)

2013 Microchip Technology Inc. DS39762F_JP - p.421

Page 422: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

26.2.3 インデックス付きリテラル オフセットモードでのバイト / ビット指向命令

拡張命令セットを有効にすると、8 つの新命令だけでなく、インデックス付きリテラル オフセット アドレッシングも有効になります ( セクション 6.6.1「リテラルオフセットを使う インデックス付きアドレッシング」参照 )。このモードでは、PIC18 標準命令セットの多くのコマンドの解釈が大きく変化します。

拡張命令セットが無効の場合、オペコードに埋め込んだアドレスはリテラル メモリアドレスとして、すなわちアクセスバンクのアドレス(a = 0の場合)またはBSRで指定した GPR バンクのアドレス (a = 1の場合 ) として扱われます。しかし拡張命令セットを有効にして、a = 0 にすると、5Fh 以下のファイルレジスタ引数はリテラルアドレスではなく FSR2 のポインタ値からのオフセットと解釈されます。つまりこれは、アクセスRAMビットを引数として使う全ての命令 (コアPIC18命令の約半分に相当する全てのバイト / ビット指向命令 ) の挙動が、拡張命令セットを有効にすると変わる事を意味します。

FSR2 の内容が 00h であれば、アクセス RAM の境界は実質的に元の値に再マッピングされます。この性質を利用すれば、下位互換コードを容易に作成できます。ただしこの方法を使った場合、C 言語とアセンブリのルーチン間を移動する際に FSR2 の値を保存、復元してスタックポインタを正しく維持する必要があります。また、拡張命令セットの構文要件についても考慮しておく必要があります ( セクション 26.2.3.1「拡張命令有効時の PIC18 標準コマンドの構文」参照 )。

インデックス付きリテラル オフセットモードはスタックとポインタの動的操作に非常に便利ですが、簡単な算術命令を誤ったレジスタに対して実行する可能性もあるため、注意が必要です。特に PIC18 プログラミングの経験が長い方は、拡張命令セットを有効にすると5Fh以下のレジスタアドレスがインデックス付きリテラル オフセット アドレッシングに使われるという点に十分注意してください。

この後のページでは、インデックス付きリテラル オフセットモードでバイト / ビット指向命令の実行結果がどのように変化するか、代表的な例を紹介します。これらの例で示すオペランドの条件は、この種の命令全てにあてはまります。

26.2.3.1 拡張命令有効時の PIC18 標準コマンドの構文

拡張命令セットを有効にした場合、標準命令セットのバイト / ビット指向命令におけるファイルレジスタ引数「f」は、リテラル オフセット値「k」で置き換えられます。ただし前述の通り、これは「f」が 5Fh 以下の場合に限ります。オフセット値を使う場合、角カッコ(「[ ]」) で囲んで示す必要があります。拡張命令の場合と同様、コンパイラは角カッコで囲んだ値をインデックスまたはオフセットとして解釈します。角カッコを省略した場合、または角カッコで囲んだ値が 5Fhより大きい場合、MPASM アセンブラでエラーが発生します。

インデックス引数をインデックス付きリテラル オフセット アドレッシング用に正しく角カッコで囲んでいれば、アクセス RAM 引数が指定される事はありません。自動的に「0」と見なされます。これは、拡張命令セットを無効にした標準の動作 ( ターゲット アドレスに基づいて「a」がセットされる ) とは対照的です。このモードでアクセスRAMビットを宣言した場合も、MPASM アセンブラでエラーが発生します。

格納先の引数「d」は、以前と同様の働きをします。

新バージョンの MPASM アセンブラでは、拡張命令セットの言語サポートを明示的に起動する必要があります。これを行うには、コマンドライン オプションの/yを使うか、ソースリストで PE ディレクティブを使います。

26.2.4 拡張命令セットを有効にする際の注意事項

命令セットの拡張は必ずしも全てのユーザにメリットがあるわけではないので注意が必要です。特に、ソフトウェア スタックを使うコードを作成するのでなければ、拡張命令セットを使うメリットはあまりありません。

また、インデックス付きリテラル オフセット アドレッシング モードは、PIC18 アセンブラ用に作成したレガシー アプリケーションで問題を起こす事があります。つまり、レガシーコードの中にアクセスバンクの 5Fh以下のレジスタをアドレッシングする命令が含まれていると問題が生じます。拡張命令セットを有効にしていると、これらのアドレスは FSR2 からのリテラル オフセットと解釈されるため、アプリケーションが誤ったデータアドレスに対して読み書きを実行する恐れがあります。

アプリケーションを PIC18F97J60 ファミリに移植する際は、コードの性格を見極める事が重要です。C 言語で作成した大規模な再入可能アプリケーションで、コンパイラ 適化が効果を発揮するようなアプリケーションは、拡張命令セットの使用に適しています。一方、アクセスバンクを多用するレガシー アプリケーションでは、ほとんどの場合、拡張命令セットを使うメリットはありません。

Note: PIC18 拡張命令セットを有効にすると、レガシー アプリケーションの挙動が不安定になったり、全く動作しなくなる場合があります。

DS39762F_JP - p.422 2013 Microchip Technology Inc.

Page 423: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ADDWFADD W to Indexed(Indexed Literal Offset mode)

構文 : ADDWF [k] {,d}

オペランド : 0 k 95d [0,1]

動作 : (W) + ((FSR2) + k) dest

影響を受ける

ステータス :N, OV, C, DC, Z

エンコード : 0010 01d0 kkkk kkkk

説明 : W レジスタの内容と、FSR2 + オフセット値

「k」が示すレジスタの内容を加算する。

「d」 = 「0」の場合、結果を W レジスタに格

納する。「d」 = 「1」の場合、結果をレジス

タ「f」に書き戻す ( 既定値 )。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード 「k」を

読み出す

データを

処理

格納先に

書き込み

例 : ADDWF [OFST] ,0

命令実行前W = 17hOFST = 2ChFSR2 = 0A00hContentsof 0A2Ch = 20h

命令実行後W = 37hContentsof 0A2Ch = 20h

BSFBit Set Indexed (Indexed Literal Offset mode)

構文 : BSF [k], b

オペランド : 0 f 950 b 7

動作 : 1 ((FSR2) + k)<b>

影響を受ける

ステータス :なし

エンコード : 1000 bbb0 kkkk kkkk

説明 : FSR2 + オフセット値「k」が示すレジスタ

のビット「b」をセットする。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード レジスタ

「f」を

読み出し

データを

処理

格納先に

書き込み

例 : BSF [FLAG_OFST], 7

命令実行前FLAG_OFST = 0AhFSR2 = 0A00hContents of 0A0Ah = 55h

命令実行後Contentsof 0A0Ah = D5h

SETFSet Indexed(Indexed Literal Offset mode)

構文 : SETF [k]

オペランド : 0 k 95

動作 : FFh ((FSR2) + k)

影響を受ける

ステータス :なし

エンコード : 0110 1000 kkkk kkkk

説明 : FSR2 + オフセット値「k」が示すレジスタ

の内容を FFh にセットする。

ワード数 : 1

サイクル数 : 1

Q サイクルの動作 :Q1 Q2 Q3 Q4

デコード 「k」を

読み出す

データを

処理

レジスタに

書き込み

例 : SETF [OFST]

命令実行前OFST = 2ChFSR2 = 0A00hContentsof 0A2Ch = 00h

命令実行後Contentsof 0A2Ch = FFh

2013 Microchip Technology Inc. DS39762F_JP - p.423

Page 424: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

26.2.5 マイクロチップ社の MPLAB® IDEツールに関する注意事項

マイクロチップ社のソフトウェア ツールの 新バージョンは、PIC18F97J60 ファミリの拡張命令セットを完全にサポートできるように設計されています。これには、MPLAB C18 C コンパイラ、MPASM アセンブリ言語、MPLAB 統合開発環境 (IDE) が含まれます。

ソフトウェア開発のターゲット デバイスを選択すると、MPLAB IDE がそのデバイスのコンフィグレーション ビットを自動的に既定値に設定します。XINST コンフィグレーション ビットの既定値は「0」であり、拡張命令セットとインデックス付きリテラル オフセット アドレッシングは無効になります。拡張命令セットを利用して開発したアプリケーションを正しく実行するには、デバイスのプログラミング時に XINST ビットをセットする必要があります。

拡張命令セット対応のソフトウェアを開発する際は、使用言語ツールで拡張命令とインデックス付きアドレッシング モードのサポートを有効にする必要があります。有効にする方法は、使う環境に応じて何通りかあります。

• ツール環境内のメニュー オプションまたはダイアログ ボックスで、言語ツールとプロジェクトの設定を指定

• コマンドライン オプション

• ソースコードでディレクティブを使用

どの方法を選択するかは、使うコンパイラ、アセンブラ、開発環境によって異なります。詳細は、開発システムに付属する文書を参照してください。

DS39762F_JP - p.424 2013 Microchip Technology Inc.

Page 425: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

27.0 開発サポート

PIC® マイクロコントローラと dsPIC® デジタルシグナル コントローラは、以下に示す各種ソフトウェア/ハードウェア開発ツールによって幅広くサポートされています。

• 統合開発環境

- MPLAB® IDE ソフトウェア

• コンパイラ / アセンブラ / リンカ

- 各種デバイスファミリ用MPLAB C コンパイラ

- 各種デバイスファミリ用 HI-TECH C

- MPASMTM アセンブラ

- MPLINKTM オブジェクト リンカ /MPLIBTM オブジェクト ライブラリアン

- 各種デバイスファミリ用 MPLABアセンブラ / リンカ / ライブラリアン

• シミュレータ

- MPLAB SIM ソフトウェア シミュレータ

• エミュレータ

- MPLAB REAL ICE™インサーキット エミュレータ

• インサーキット デバッガ

- MPLAB ICD 3

- PICkit™ 3 Debug Express

• デバイス プログラマ

- PICkit™ 2 プログラマ

- MPLAB PM3 デバイス プログラマ

• 低コストのデモボード、開発ボード、評価キット、スタータキット

27.1 MPLAB 統合開発環境ソフトウェア

MPLAB IDE ソフトウェアを使うと、従来の 8/16/32ビット マイクロコントローラ市場では考えられないほど、ソフトウェアを容易に開発できます。MPLABIDEはWindows® オペレーティング システム上で動作するアプリケーションで、以下の機能を備えています。

• 全てのデバッグツールで共通のグラフィカル インターフェイス

- シミュレータ

- プログラマ ( 別売り )

- インサーキット エミュレータ ( 別売り )

- インサーキット デバッガ ( 別売り )

• コンテキスト色分け表示対応のフル機能エディタ

• マルチプロジェクト マネージャ

• 値を直接編集できるカスタマイズ可能なデータウィンドウ

• 高度なソースコード デバッグ

• マウスオーバーで変数の現在値を表示

• ソースウィンドウからウォッチ ウィンドウへの変数のドラッグ & ドロップ

• 充実したオンラインヘルプ

• IAR C コンパイラ等、一部他社製ツールの統合もサポート

MPLAB IDE を使うと、以下の作業が可能です。

• ソースファイル (C またはアセンブリ ) の編集

• ワンタッチでのコンパイル / アセンブルと、エミュレータ / シミュレータ ツールへのダウンロード( 全てのプロジェクト情報を自動更新 )

• 以下を使ったデバッグ :

- ソースファイル (C またはアセンブリ )

- C とアセンブリの混在使用

- マシンコード

MPLAB IDE は、対費用効果の高いシミュレータから低価格のインサーキット デバッガ、フル機能のエミュレータに至る複数のデバッグツールを 1 つの開発パラダイムでサポートします。このため、より柔軟で強力なツールにアップグレードした場合でも短期間で使用方法を習得できます。

2013 Microchip Technology Inc. DS39762F_JP - p.425

Page 426: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

27.2 各種デバイスファミリ用 MPLAB Cコンパイラ

MPLAB C コンパイラは、マイクロチップ社の PIC18、PIC24、PIC32 マイクロコントローラ ファミリと、dsPIC30、dsPIC33 デジタル シグナル コントローラファミリ用コード開発に対応した ANSI C コンパイラです。これらのコンパイラは強力な統合機能と優れたコード 適化機能を備え、容易に使えます。

また、MPLAB IDE デバッガ用に 適化されたシンボル情報を出力できるため、ソースレベルのデバッグも容易です。

27.3 各種デバイスファミリ用 HI-TECH C

HI-TECH C コンパイラコード開発システムは、マイクロチップ社の PIC マイクロコントローラ ファミリとdsPIC デジタルシグナル コントローラ ファミリ向けの、総合的な機能を備えた ANSI C コンパイラです。これらのコンパイラは、強力な統合機能とインテリジェントなコード生成機能を備え、容易に使えます。

また、MPLAB IDE デバッガ用に 適化されたシンボル情報を出力できるため、ソースレベルのデバッグも容易です。

このコンパイラは、マクロアセンブラ、リンカ、プリプロセッサ、ワンステップ ドライバを備え、複数のプラットフォーム上で動作します。

27.4 MPASM アセンブラ

MPASM アセンブラは、PIC10/12/16/18 MCU に対応したフル機能の汎用マクロアセンブラです。

MPASM アセンブラは、MPLINK オブジェクト リンカ用の再配置可能なオブジェクト ファイル、Intel® 標準HEX ファイル、メモリ使用状況とシンボル参照を詳述する MAP ファイル、ソース行と生成後のマシンコードを含む絶対 LST ファイル、デバッグ用の COFF ファイルを生成します。

MPASMアセンブラには以下のような機能があります。

• MPLAB IDE プロジェクトへの統合

• ユーザ定義マクロによるアセンブリコードの 適化

• 多用途ソースファイルに対応する条件付きアセンブリ

• アセンブリ プロセスを完全に制御できるディレクティブ

27.5 MPLINK オブジェクト リンカ /MPLIB オブジェクト ライブラリアン

MPLINK オブジェクト リンカは、MPASM アセンブラと MPLAB C18 C コンパイラが作成した再配置可能なオブジェクトを結合します。このオブジェクト リンカは、リンカスクリプトのディレクティブを使って、プリコンパイル済みのライブラリ内の再配置可能オブジェクトをリンクできます。

MPLIB オブジェクト ライブラリアンは、プリコンパイル済みコードのライブラリ ファイルの作成と変更を管理します。ライブラリのルーチンをソースファイルから呼び出すと、そのルーチンが含まれているモジュールのみがアプリケーションとリンクされます。これにより、大きなライブラリを各種アプリケーションで効率的に使えます。

オブジェクト リンカ / ライブラリには以下のような特長があります。

• 多数の小さなファイルをリンクするのではなく、1つのライブラリを効率的にリンクする

• 関連するモジュールをグループ化する事により、コードの保守性が向上する

• モジュールのリスト作成、置換、削除、抽出が容易なライブラリを柔軟に作成する

27.6 各種デバイスファミリ用 MPLABアセンブラ、リンカ、ライブラリアン

MPLAB アセンブラは、PIC24、PIC32、dsPIC 用のシンボリック アセンブリ言語から、再配置可能なマシンコードを生成します。MPLAB C コンパイラはこのアセンブラを使ってオブジェクト ファイルを生成します。このアセンブラが生成した再配置可能なオブジェクト ファイルをアーカイブまたは他の再配置可能なオブジェクト ファイルとリンクして、実行ファイルを生成します。このアセンブラには以下のような特長があります。

• デバイスの全命令セットのサポート

• 固定 / 浮動小数点データのサポート

• コマンドライン インターフェイス

• 豊富なディレクティブ セット

• 柔軟なマクロ言語

• MPLAB IDE との互換性

DS39762F_JP - p.426 2013 Microchip Technology Inc.

Page 427: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

27.7 MPLAB SIM ソフトウェア シミュレータ

MPLAB SIM ソフトウェア シミュレータを使うと、PICMCU と dsPIC® DSC を命令レベルでシミュレートする事によって、PC 環境でコード開発ができます。任意の命令に対してデータ領域を検証または変更でき、総合的なスティミュラス コントローラから外部信号を印加できます。レジスタをファイルに記録して、より詳細な実行時解析が可能です。トレースバッファとロジック アナライザ ディスプレイを使うと、プログラム実行、I/O アクティビティ、ほとんどの周辺機能と内部レジスタを記録 / 追跡でき、シミュレータの機能をさらに強化できます。

MPLAB SIM ソフトウェア シミュレータは、MPLAB Cコンパイラ、MPASM/MPLAB アセンブラを使ったシンボリック デバッグを完全にサポートしています。このソフトウェア シミュレータは、ハードウェアラボから離れた環境下でのコード開発 / デバッグに柔軟性を提供する、経済的で優れたソフトウェア開発ツールです。

27.8 MPLAB REAL ICE インサーキット エミュレータ システム

MPLAB REAL ICE インサーキット エミュレータ システムは、マイクロチップ社のフラッシュ DSC と MCU用にマイクロチップ社が提供する次世代高速エミュレータです。このエミュレータでは、各キットに付属する MPLAB 統合開発環境 (IDE) の強力で使いやすいGUI を利用して、PIC® フラッシュ MCU と dsPIC® フラッシュ DSC をデバッグ / プログラムできます。

このエミュレータをハイスピード USB 2.0 インターフェイスで設計エンジニアの PC に接続し、ターゲット デバイスとはインサーキット デバッガシステムと互換の RJ-11 コネクタか、高速で耐ノイズ性に優れる新のLVDSインターフェイス (CAT5)によって接続し

ます。

エミュレータの更新用ファームウェアは、MPLAB IDEからダウンロードできます。MPLAB IDE の 新リリースに伴って、サポートするデバイスと新機能が追加されます。MPLAB REAL ICE は、低コスト、高速エミュレーション、実行時変数ウォッチ、トレース解析、複雑なブレークポイント、高耐久性のプローブ インターフェイス、接続ケーブルの長尺対応 ( 長 3 m) 等、競合他社のエミュレータに比べて多くの利点があります。

27.9 MPLAB ICD 3 インサーキット デバッガ システム

MPLAB ICD 3 インサーキット デバッガシステムは、マイクロチップ社のフラッシュ デジタルシグナル コントローラ (DSC) とマイクロコントローラ (MCU) に対応した、 も対費用効果の高い高速ハードウェア デバッガ / プログラマです。このデバッガでは、MPLAB統合開発環境 (IDE) の強力で使いやすい GUI を利用して PIC® フラッシュ マイクロコントローラと dsPIC®

DSC をデバッグ / プログラムできます。

MPLAB ICD 3 インサーキット デバッガのプローブは、ハイスピードUSB 2.0インターフェイスで設計エンジニアのPCに接続し、ターゲット デバイスとはMPLABICD 2 または MPLAB REAL ICE システムと互換のコネクタ (RJ-11) によって接続します。MPLAB ICD 3 は全ての MPLAB ICD 2 ヘッダをサポートしています。

27.10 PICkit 3 インサーキット デバッガ /プログラマと PICkit 3 Debug Express

MPLAB PICkit 3 は、MPLAB 統合開発環境 (IDE) の強力なGUIを使ってPIC®およびdsPIC®フラッシュ マイクロコントローラをデバッグ / プログラムできる低価格なツールです。MPLAB PICkit 3 と設計エンジニアのPC の接続にはフルスピード USB インターフェイスを使います。ターゲット デバイスとの接続には、MPLABICD 3/MPLAB REAL ICE と互換のマイクロチップ デバッグ コネクタ (RJ-11) を使います。このコネクタは2 本のデバイス I/O ピンとリセットラインを使って、インサーキット デバッグとインサーキット シリアル プログラミング (In-Circuit Serial Programming™) を実現します。

PICkit 3 Debug Express は、PICkit 3、デモボードとマイクロコントローラ、フックアップ ケーブル、CD-ROM( ユーザガイド、レッスン、チュートリアル、コンパイラ、MPLAB IDE ソフトウェアを収録 ) を含みます。

2013 Microchip Technology Inc. DS39762F_JP - p.427

Page 428: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

27.11 PICkit 2 開発用プログラマ / デバッガと PICkit 2 Debug Express

PICkit™ 2 開発用プログラマ / デバッガは、マイクロチップ社のフラッシュ マイクロコントローラ ファミリの書き込みとデバッグを使いやすいインターフェイスで実現する、低コストの開発ツールです。Windows®

環境でプログラミング機能を実行できる本製品は、ベースライン (PIC10F、PIC12F5xx、PIC16F5xx)、ミッドレンジ (PIC12F6xx、PIC16F)、PIC18F、PIC24、dsPIC30、dsPIC33、PIC32 ファミリを含む 8/16/32ビット マイクロコントローラ、マイクロチップ社製各種シリアル EEPROM をサポートしています。PICkit™2 は、マイクロチップ社の強力な MPLAB 統合開発環境 (IDE) を利用して、ほとんどの PIC® マイクロコントローラに対してインサーキット デバッグを実行できます。インサーキット デバッグでは、PIC マイクロコントローラをアプリケーションに組み込んだままの状態でプログラムの実行 / 停止とシングルステップ実行が可能です。ブレークポイントで停止させてファイルレジスタを確認 / 変更する事もできます。

PICkit 2 Debug Express は、PICkit 2、デモボードとマイクロコントローラ、フックアップ ケーブル、CD-ROM( ユーザガイド、レッスン、チュートリアル、コンパイラ、MPLAB IDE ソフトウェアを収録 ) を含みます。

27.12 MPLAB PM3 デバイス プログラマ

MPLAB PM3 デバイス プログラマは CE 準拠のユニバーサル デバイス プログラマで、VDDMIN と VDDMAX

でのプログラマブル電圧検証によって 大限の信頼性を確保します。このデバイス プログラマはメニューとエラーメッセージ表示用の大型 LCD ディスプレイ(128 x 64) を装備している他、着脱式のモジュール式ソケット アセンブリによって各種パッケージタイプに対応します。ICSP™ ケーブル アセンブリは標準で付属しています。スタンドアロン モードでは、MPLABPM3 デバイス プログラマを PC に接続せずに、PICの読み出し、検証、書き込みが可能です。このモードでコード保護も設定できます。MPLAB PM3 とホストPC との接続には、RS-232 または USB ケーブルを使います。さらに、大容量メモリデバイスの高速書き込みを可能にする高速通信と 適化されたアルゴリズムを備え、ファイル保存とデータ アプリケーションのための MMC カードを内蔵しています。

27.13 デモボード、開発ボード、評価キット、スタータキット

各種 PIC MCU と dsPIC DSC に対応するデモボード、開発ボード、評価用ボードを豊富に取り揃え、完全に機能するシステム上でアプリケーションを迅速に開発できます。ほとんどのボードは、カスタム回路を追加するためのプロトタイプ領域を備えています。また、検討と変更が可能なようにアプリケーション ファームウェアとソースコードが付属しています。

これらのボードは LED、温度センサ、スイッチ、スピーカ、RS-232 インターフェイス、LCD、ポテンショメータ、増設 EEPROM メモリをはじめとする各種機能をサポートします。

デモボードと開発ボードは、カスタム回路の試作と各種マイクロコントローラ アプリケーションの学習教材として使う事ができます。

PICDEM™ と dsPICDEM™ デモ / 開発ボードシリーズの回路の他に、マイクロチップ社ではアナログフィルタ設計、KEELOQ® セキュリティ IC、CAN、IrDA®、PowerSmart バッテリ管理、SEEVAL® 評価システム、ΔΣADC、流量センシング、その他多数のアプリケーションに対応する評価キットとデモソフトウェアを取り揃えています。

また、特定のデバイスを体験するために必要なもの全てを収めたスタータキットも提供しています。スタータキットは通常、1 つのアプリケーションとデバッグ機能の全てを1つのボードに搭載した形で提供します。

デモボード、開発ボード、評価キットの全一覧は、マイクロチップ社のウェブページ (www.microchip.com)をご覧ください。

DS39762F_JP - p.428 2013 Microchip Technology Inc.

Page 429: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

28.0 電気的特性

絶対 大定格 ( † )

通電中の周囲温度 ...................................................................................................................................... -40 ~ +100 ℃

保管温度..................................................................................................................................................... -65 ~ +150 ℃

VSS に対する全てのデジタル専用入力ピンまたは MCLR の電圧 (VDD を除く ).......................................... -0.3 ~ 6.0 V

VSS に対するデジタル / アナログ兼用ピンの電圧........................................................................-0.3 V ~ (VDD + 0.3 V)

VSS に対する VDDCORE の電圧 ................................................................................................................... -0.3 ~ 2.75 V

VSS に対する VDD の電圧 ............................................................................................................................. -0.3 ~ 4.0 V

総消費電力 (Note 1).................................................................................................................................................1.0 W

VSS ピンからの 大電流.......................................................................................................................................300 mA

VDD ピンへの 大電流 ..........................................................................................................................................250 mA

入力クランプ電流、IIK (VI < 0 または VI > VDD) (Note 2) 0 mA

出力クランプ電流、IOK (VO < 0 または VO > VDD) (Note 2) 0 mA

PORTB、PORTC I/O ピンの 大出力シンク電流..................................................................................................25 mA

PORTD、PORTE、PORTJ I/O ピンの 大出力シンク電流 ....................................................................................8 mA

PORTA、PORTF、PORTG、PORTH I/O ピンの 大出力シンク電流 (Note 3)......................................................2 mA

PORTB、PORTC I/O ピンの 大出力ソース電流..................................................................................................25 mA

PORTD、PORTE、PORTJ I/O ピンの 大出力ソース電流 ....................................................................................8 mA

PORTA、PORTF、PORTG、PORTH I/O ピンの 大出力ソース電流 (Note 3)......................................................2 mA

全ポートの合計 大シンク電流............................................................................................................................200 mA

全ポートの合計 大ソース電流............................................................................................................................200 mA

Note 1: 消費電力は以下の式によって計算できます。 Pdis = VDD x {IDD - IOH} + {(VDD - VOH) x IOH} + (VOL x IOL) + (VTPOUT x ITPOUT)

2: クランプ ダイオードは接続していません。

3: RA<1> と RA<0> を除きます。これらのピンは 大 25 mA で LED を直接駆動できます。

† NOTICE: 上記の「絶対 大定格」を超えるストレスを与えると、デバイスに恒久的な損傷を与える可能性があります。 絶対 大定格は定格ストレスのみを示すものであり、上記の状態または本仕様書の動作条件に示されている規定値を超える状態でデバイスが正常に機能する事を示すものではありません。 長期間にわたる 大定格条件での動作は、デバイスの信頼性に影響する可能性があります。

2013 Microchip Technology Inc. DS39762F_JP - p.429

Page 430: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-1: PIC18F97J60 ファミリの周波数に対する電圧のグラフ、レギュレータ有効時(ENVREG を VDD に接続 )

図 28-2: PIC18F97J60 ファミリの周波数に対する電圧のグラフ、レギュレータ無効時(ENVREG を VSS に接続 )

Frequency

Vo

ltag

e (V

DD

)(1)

4.0V

2.0V

41.6667 MHz

3.5V

3.0V

2.5V

3.6V

PIC18F6XJ6X/8XJ6X/9XJ6X

2.7V

0

Note 1: 内蔵レギュレータが有効な場合、VDD が低下してフルスピード動作できないレベルに達する前に、BOR 回路が自動的にデバイスリセットをトリガします。

Frequency

Vo

ltag

e (V

DD

CO

RE)(1

)

3.00V

2.00V

41.6667 MHz

2.75V

2.50V

2.25V

2.7V

4 MHz

2.35V

Note 1: 内蔵電圧レギュレータが無効の場合、VDD と VDDCORE は、VDDCOREVDD3.6 V の関係を保つ必要があります。

4 ~ 41.6667 MHz の周波数では、FMAX = (107.619 MHz/V) * (VDDCORE - 2 V) + 4 MHz です。

PIC18F6XJ6X/8XJ6X/9XJ6X

DS39762F_JP - p.430 2013 Microchip Technology Inc.

Page 431: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

28.1 DC 特性 : 電源電圧PIC18F97J60 ファミリ ( 産業用 )

PIC18F97J60 ファミリ ( 産業用 )

標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号記号 特性 小値 代表値 大値 単位 条件

D001 VDD 電源電圧 VDDCORE

2.73.1

———

3.63.63.6

VVV

ENVREG を VSS に接続ENVREG を VDD に接続Ethernet モジュールが有効(ECON2<5> = 1)

D001B VDDCORE マイクロコントローラ コアの外部電源

2.0 — 2.7 V

D001C AVDD アナログ電源電圧 VDD - 0.3 — VDD + 0.3 V

D002 VDR RAM データ保持電圧 (1)

1.5 — — V

D003 VPOR VDD パワーオン リセット電圧

— — 0.7 V 詳細は、セクション 5.3「パワーオン リセット (POR)」参照。

D004 SVDD 内部パワーオン リセットを確実に動作させるための VDD 立ち上がり速度

0.05 — — V/ms 詳細は、セクション 5.3「パワーオン リセット (POR)」参照。

D005 BOR ブラウンアウト リセット 2.35 2.4 2.7 V

Note 1: これは、スリープまたはデバイスのリセット中に VDD を下げて RAM データを失わない下限値です。

2013 Microchip Technology Inc. DS39762F_JP - p.431

Page 432: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

28.2 DC 特性 : パワーダウン電流と消費電流PIC18F97J60 ファミリ ( 産業用 )

PIC18F97J60 ファミリ

( 産業用 ) 標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号デバイス 代表値 大値 単位 条件

パワーダウン電流 (IPD)(1)

全デバイス 19.0 69.0 A -40°C VDD = 2.0 V、VDDCORE = 2.0 V(4)

( スリープ )21.0 69.0 A +25°C

45.0 149.0 A +85°C

全デバイス 26.0 104.0 A -40°C VDD = 2.5 V、VDDCORE = 2.5 V(4)

( スリープ )29.0 104.0 A +25°C

60.0 184.0 A +85°C

全デバイス 40.0 203.0 A -40°CVDD = 3.3 V(5)

( スリープ )44.0 203.0 A +25°C

105.0 209.0 A +85°C

Note 1: スリープ時のパワーダウン電流は、オシレータの種類に関わらず一定です。 パワーダウン電流は、デバイスをスリープに

移行させ、全ての I/O ピンをハイインピーダンス状態にして VDD または VSS に接続し、電流増 (Δ電流 ) をもたらす機

能 (WDT、Timer1、オシレータ等 ) を全て無効にして計測しています。

2: 消費電流は主に動作電圧、周波数、モードによって決まります。 他の要因として I/O ピンの負荷とスイッチング レート、

オシレータのタイプと回路、内部コード実行パターン、温度等があり、これらも消費電流に影響を与えます。

アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。 OSC1 = 外部矩形波 ( レールツーレール )、I/O ピンは全て 3 ステートで VDD にプル、

MCLR = VDD、WDT は指定の通り有効化または無効化しています。

3: 標準的な低コストの 32 kHz 水晶振動子の動作温度レンジは -10 ~ +70 ℃です。 コストは増加しますが、拡張温度仕様に

対応した水晶振動子も利用可能です。

4: 電圧レギュレータを無効に (ENVREG = 0、VSS に接続 ) した場合です。

5: 電圧レギュレータを有効に (ENVREG = 1、VDD に接続 ) した場合です。

6: IETH を規定する電流には、TPOUT+ と TPOUT- のシンク電流が含まれます。 LEDA と LEDB は全てのテストで無効です。

DS39762F_JP - p.432 2013 Microchip Technology Inc.

Page 433: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

消費電流 (IDD)(2,3)

全デバイス 12.0 34.0 A -40°CVDD = 2.0V,

VDDCORE = 2.0V(4)

FOSC = 31 kHz(RC_RUN モード、

内部オシレータ信号源 )

12.0 34.0 A +25°C

74.0 108.0 A +85°C

全デバイス 20.0 45.0 A -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)20.0 45.0 A +25°C

82.0 126.0 A +85°C

全デバイス 105.0 168.0 A -40°C

VDD = 3.3V(5)105.0 168.0 A +25°C

182.0 246.0 A +85°C

全デバイス 8.0 32.0 A -40°CVDD = 2.0V,

VDDCORE = 2.0V(4)

FOSC = 31 kHz(RC_IDLE モード、

内部オシレータ信号源 )

8.0 32.0 A +25°C

62.0 98.0 A +85°C

全デバイス 12.0 35.0 A -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)12.0 35.0 A +25°C

70.0 95.0 A +85°C

全デバイス 90.0 152.0 A -40°C

VDD = 3.3V(5)90.0 152.0 A +25°C

170.0 225.0 A +85°C

28.2 DC 特性 : パワーダウン電流と消費電流PIC18F97J60 ファミリ ( 産業用 ) ( 続き )

PIC18F97J60 ファミリ

( 産業用 ) 標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号デバイス 代表値 大値 単位 条件

Note 1: スリープ時のパワーダウン電流は、オシレータの種類に関わらず一定です。 パワーダウン電流は、デバイスをスリープに

移行させ、全ての I/O ピンをハイインピーダンス状態にして VDD または VSS に接続し、電流増 (Δ電流 ) をもたらす機

能 (WDT、Timer1、オシレータ等 ) を全て無効にして計測しています。

2: 消費電流は主に動作電圧、周波数、モードによって決まります。 他の要因として I/O ピンの負荷とスイッチング レート、

オシレータのタイプと回路、内部コード実行パターン、温度等があり、これらも消費電流に影響を与えます。

アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。 OSC1 = 外部矩形波 ( レールツーレール )、I/O ピンは全て 3 ステートで VDD にプル、

MCLR = VDD、WDT は指定の通り有効化または無効化しています。

3: 標準的な低コストの 32 kHz 水晶振動子の動作温度レンジは -10 ~ +70 ℃です。 コストは増加しますが、拡張温度仕様に

対応した水晶振動子も利用可能です。

4: 電圧レギュレータを無効に (ENVREG = 0、VSS に接続 ) した場合です。

5: 電圧レギュレータを有効に (ENVREG = 1、VDD に接続 ) した場合です。

6: IETH を規定する電流には、TPOUT+ と TPOUT- のシンク電流が含まれます。 LEDA と LEDB は全てのテストで無効です。

2013 Microchip Technology Inc. DS39762F_JP - p.433

Page 434: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

消費電流 (IDD)(2)

全デバイス 0.8 1.5 mA -40°CVDD = 2.0V,

VDDCORE = 2.0V(4)

FOSC = 1 MHZ

(PRI_RUN モード、

EC オシレータ )

0.8 1.5 mA +25°C

0.9 1.7 mA +85°C

全デバイス 1.1 1.8 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)1.1 1.8 mA +25°C

1.2 2.0 mA +85°C

全デバイス 2.1 3.4 mA -40°C

VDD = 3.3V(5)2.0 3.4 mA +25°C

2.1 3.4 mA +85°C

全デバイス 9.2 14.5 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)FOSC = 25 MHz

(PRI_RUN モード、

EC オシレータ )

9.0 14.5 mA +25°C

9.2 14.5 mA +85°C

全デバイス 13.0 18.4 mA -40°C

VDD = 3.3V(5)12.4 18.4 mA +25°C

13.0 18.4 mA +85°C

全デバイス 13.4 19.8 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)FOSC = 41.6667 MHZ

(PRI_RUN モード、

EC オシレータ )

13.0 19.8 mA +25°C

13.4 19.8 mA +85°C

全デバイス 14.5 21.6 mA -40°C

VDD = 3.3V(5)14.4 21.6 mA +25°C

14.5 21.6 mA +85°C

28.2 DC 特性 : パワーダウン電流と消費電流PIC18F97J60 ファミリ ( 産業用 ) ( 続き )

PIC18F97J60 ファミリ

( 産業用 ) 標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号デバイス 代表値 大値 単位 条件

Note 1: スリープ時のパワーダウン電流は、オシレータの種類に関わらず一定です。 パワーダウン電流は、デバイスをスリープに

移行させ、全ての I/O ピンをハイインピーダンス状態にして VDD または VSS に接続し、電流増 (Δ電流 ) をもたらす機

能 (WDT、Timer1、オシレータ等 ) を全て無効にして計測しています。

2: 消費電流は主に動作電圧、周波数、モードによって決まります。 他の要因として I/O ピンの負荷とスイッチング レート、

オシレータのタイプと回路、内部コード実行パターン、温度等があり、これらも消費電流に影響を与えます。

アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。 OSC1 = 外部矩形波 ( レールツーレール )、I/O ピンは全て 3 ステートで VDD にプル、

MCLR = VDD、WDT は指定の通り有効化または無効化しています。

3: 標準的な低コストの 32 kHz 水晶振動子の動作温度レンジは -10 ~ +70 ℃です。 コストは増加しますが、拡張温度仕様に

対応した水晶振動子も利用可能です。

4: 電圧レギュレータを無効に (ENVREG = 0、VSS に接続 ) した場合です。

5: 電圧レギュレータを有効に (ENVREG = 1、VDD に接続 ) した場合です。

6: IETH を規定する電流には、TPOUT+ と TPOUT- のシンク電流が含まれます。 LEDA と LEDB は全てのテストで無効です。

DS39762F_JP - p.434 2013 Microchip Technology Inc.

Page 435: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

消費電流 (IDD)(2)

全デバイス 2.8 5.2 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)FOSC = 25 MHZ、

2.7778 MHz ( 内部 )(PRI_RUN HS モード )

2.5 5.2 mA +25°C

2.8 5.2 mA +85°C

全デバイス 3.6 6.4 mA -40°C

VDD = 3.3V(5)3.3 6.4 mA +25°C

3.6 6.4 mA +85°C

全デバイス 6.4 11.0 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)FOSC = 25 MHZ、

13.8889 MHz ( 内部 )(PRI_RUN HSPLL モード )

6.0 11.0 mA +25°C

6.4 11.0 mA +85°C

全デバイス 7.8 12.5 mA -40°C

VDD = 3.3V(5)7.4 12.5 mA +25°C

7.8 12.5 mA +85°C

全デバイス 9.2 14.5 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)FOSC = 25 MHZ、

25 MHz ( 内部 )(PRI_RUN HS モード )

9.0 14.5 mA +25°C

9.2 14.5 mA +85°C

全デバイス 13.0 18.4 mA -40°C

VDD = 3.3V(5)12.4 18.4 mA +25°C

13.0 18.4 mA +85°C

全デバイス 13.4 19.8 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)FOSC = 25 MHZ、

41.6667 MHz ( 内部 )(PRI_RUN HSPLL モード )

13.0 19.8 mA +25°C

13.4 19.8 mA +85°C

全デバイス 14.5 21.6 mA -40°C

VDD = 3.3V(5)14.4 21.6 mA +25°C

14.5 21.6 mA +85°C

28.2 DC 特性 : パワーダウン電流と消費電流PIC18F97J60 ファミリ ( 産業用 ) ( 続き )

PIC18F97J60 ファミリ

( 産業用 ) 標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号デバイス 代表値 大値 単位 条件

Note 1: スリープ時のパワーダウン電流は、オシレータの種類に関わらず一定です。 パワーダウン電流は、デバイスをスリープに

移行させ、全ての I/O ピンをハイインピーダンス状態にして VDD または VSS に接続し、電流増 (Δ電流 ) をもたらす機

能 (WDT、Timer1、オシレータ等 ) を全て無効にして計測しています。

2: 消費電流は主に動作電圧、周波数、モードによって決まります。 他の要因として I/O ピンの負荷とスイッチング レート、

オシレータのタイプと回路、内部コード実行パターン、温度等があり、これらも消費電流に影響を与えます。

アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。 OSC1 = 外部矩形波 ( レールツーレール )、I/O ピンは全て 3 ステートで VDD にプル、

MCLR = VDD、WDT は指定の通り有効化または無効化しています。

3: 標準的な低コストの 32 kHz 水晶振動子の動作温度レンジは -10 ~ +70 ℃です。 コストは増加しますが、拡張温度仕様に

対応した水晶振動子も利用可能です。

4: 電圧レギュレータを無効に (ENVREG = 0、VSS に接続 ) した場合です。

5: 電圧レギュレータを有効に (ENVREG = 1、VDD に接続 ) した場合です。

6: IETH を規定する電流には、TPOUT+ と TPOUT- のシンク電流が含まれます。 LEDA と LEDB は全てのテストで無効です。

2013 Microchip Technology Inc. DS39762F_JP - p.435

Page 436: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

消費電流 (IDD)(2)

全デバイス 0.5 1.1 mA -40°CVDD = 2.0V,

VDDCORE = 2.0V(4)

FOSC = 1 MHz(PRI_IDLE モード、

EC オシレータ )

0.5 1.1 mA +25°C

0.6 1.2 mA +85°C

全デバイス 0.9 1.4 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)0.9 1.4 mA +25°C

1.0 1.5 mA +85°C

全デバイス 1.9 2.6 mA -40°C

VDD = 3.3V(5)1.8 2.6 mA +25°C

1.9 2.6 mA +85°C

全デバイス 5.9 9.5 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)FOSC = 25 MHZ

(PRI_IDLE モード、

EC オシレータ )

5.6 9.5 mA +25°C

5.9 9.5 mA +85°C

全デバイス 7.5 13.2 mA -40°C

VDD = 3.3V(5)7.2 13.2 mA +25°C

7.5 13.2 mA +85°C

全デバイス 8.6 14.0 mA -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)FOSC = 41.6667 MHz(PRI_IDLE モード、

EC オシレータ )

8.0 14.0 mA +25°C

8.6 14.0 mA +85°C

全デバイス 9.8 16.0 mA -40°C

VDD = 3.3V(5)9.4 16.0 mA +25°C

9.8 16.0 mA +85°C

28.2 DC 特性 : パワーダウン電流と消費電流PIC18F97J60 ファミリ ( 産業用 ) ( 続き )

PIC18F97J60 ファミリ

( 産業用 ) 標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号デバイス 代表値 大値 単位 条件

Note 1: スリープ時のパワーダウン電流は、オシレータの種類に関わらず一定です。 パワーダウン電流は、デバイスをスリープに

移行させ、全ての I/O ピンをハイインピーダンス状態にして VDD または VSS に接続し、電流増 (Δ電流 ) をもたらす機

能 (WDT、Timer1、オシレータ等 ) を全て無効にして計測しています。

2: 消費電流は主に動作電圧、周波数、モードによって決まります。 他の要因として I/O ピンの負荷とスイッチング レート、

オシレータのタイプと回路、内部コード実行パターン、温度等があり、これらも消費電流に影響を与えます。

アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。 OSC1 = 外部矩形波 ( レールツーレール )、I/O ピンは全て 3 ステートで VDD にプル、

MCLR = VDD、WDT は指定の通り有効化または無効化しています。

3: 標準的な低コストの 32 kHz 水晶振動子の動作温度レンジは -10 ~ +70 ℃です。 コストは増加しますが、拡張温度仕様に

対応した水晶振動子も利用可能です。

4: 電圧レギュレータを無効に (ENVREG = 0、VSS に接続 ) した場合です。

5: 電圧レギュレータを有効に (ENVREG = 1、VDD に接続 ) した場合です。

6: IETH を規定する電流には、TPOUT+ と TPOUT- のシンク電流が含まれます。 LEDA と LEDB は全てのテストで無効です。

DS39762F_JP - p.436 2013 Microchip Technology Inc.

Page 437: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

消費電流 (IDD)(2)

全デバイス 22.0 45.0 A -10°CVDD = 2.0V,

VDDCORE = 2.0V(4)

FOSC = 32 kHz(3)

(SEC_RUN モード、

クロックは Timer1)

22.0 45.0 A +25°C

78.0 114.0 A +70°C

全デバイス 27.0 52.0 A -10°CVDD = 2.5V,

VDDCORE = 2.5V(4)27.0 52.0 A +25°C

92.0 135.0 A +70°C

全デバイス 106.0 168.0 A -10°C

VDD = 3.3V(5)106.0 168.0 A +25°C

188.0 246.0 A +70°C

全デバイス 18.0 37.0 A -10°CVDD = 2.0V,

VDDCORE = 2.0V(4)

FOSC = 32 kHz(3)

(SEC_IDLE モード、

クロックは Timer1)

18.0 37.0 A +25°C

75.0 105.0 A +70°C

全デバイス 21.0 40.0 A -10°CVDD = 2.5V,

VDDCORE = 2.5V(4)21.0 40.0 A +25°C

84.0 98.0 A +70°C

全デバイス 94.0 152.0 A -10°C

VDD = 3.3V(5)94.0 152.0 A +25°C

182.0 225.0 A +70°C

28.2 DC 特性 : パワーダウン電流と消費電流PIC18F97J60 ファミリ ( 産業用 ) ( 続き )

PIC18F97J60 ファミリ

( 産業用 ) 標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号デバイス 代表値 大値 単位 条件

Note 1: スリープ時のパワーダウン電流は、オシレータの種類に関わらず一定です。 パワーダウン電流は、デバイスをスリープに

移行させ、全ての I/O ピンをハイインピーダンス状態にして VDD または VSS に接続し、電流増 (Δ電流 ) をもたらす機

能 (WDT、Timer1、オシレータ等 ) を全て無効にして計測しています。

2: 消費電流は主に動作電圧、周波数、モードによって決まります。 他の要因として I/O ピンの負荷とスイッチング レート、

オシレータのタイプと回路、内部コード実行パターン、温度等があり、これらも消費電流に影響を与えます。

アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。 OSC1 = 外部矩形波 ( レールツーレール )、I/O ピンは全て 3 ステートで VDD にプル、

MCLR = VDD、WDT は指定の通り有効化または無効化しています。

3: 標準的な低コストの 32 kHz 水晶振動子の動作温度レンジは -10 ~ +70 ℃です。 コストは増加しますが、拡張温度仕様に

対応した水晶振動子も利用可能です。

4: 電圧レギュレータを無効に (ENVREG = 0、VSS に接続 ) した場合です。

5: 電圧レギュレータを有効に (ENVREG = 1、VDD に接続 ) した場合です。

6: IETH を規定する電流には、TPOUT+ と TPOUT- のシンク電流が含まれます。 LEDA と LEDB は全てのテストで無効です。

2013 Microchip Technology Inc. DS39762F_JP - p.437

Page 438: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

モジュールの電流増 (IWDT、IOSCB、IAD、IETH)D022(IWDT)

ウォッチドッグ タイマ 2.4 7.0 A -40°CVDD = 2.0V,

VDDCORE = 2.0V(4)2.4 7.0 A +25°C

12.0 19.0 A +85°C

3.0 8.0 A -40°CVDD = 2.5V,

VDDCORE = 2.5V(4)3.0 8.0 A +25°C

14.0 22.0 A +85°C

5.0 12.0 A -40°C

VDD = 3.3V(5)5.0 12.0 A +25°C

19.0 30.0 A +85°C

D025(IOSCB)

Timer1 オシレータ 12.0 20.0 A -40°CVDD = 2.0V,

VDDCORE = 2.0V(4) 32 kHz 動作の Timer1(3)12.0 20.0 A +25°C

24.0 36.0 A +85°C

13.0 21.0 A -40°CVDD = 2.5V,

VDDCORE = 2.5V(4) 32 kHz 動作の Timer1(3)13.0 21.0 A +25°C

26.0 38.0 A +85°C

14.0 25.0 A -40°C

VDD = 3.3V(5) 32 kHz 動作の Timer1(3)14.0 25.0 A +25°C

29.0 40.0 A +85°C

D026(IAD)

A/D コンバータ 1.2 10.0 A -40°C to +85°CVDD = 2.0V,

VDDCORE = 2.0V(4)

A/D を ON、変換は実行し

ていない状態1.2 10.0 A -40°C to +85°CVDD = 2.5V,

VDDCORE = 2.5V(4)

1.2 11.0 A -40°C to +85°C VDD = 3.3V(5)

D027IETH(6)

Ethernet モジュール 130.0 156.0 mA -40°C to +85°CVDD = 3.3V(5)

送信を実行していない状態

180.0 214.0 mA -40°C to +85°C 送信を実行している状態

28.2 DC 特性 : パワーダウン電流と消費電流PIC18F97J60 ファミリ ( 産業用 ) ( 続き )

PIC18F97J60 ファミリ

( 産業用 ) 標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号デバイス 代表値 大値 単位 条件

Note 1: スリープ時のパワーダウン電流は、オシレータの種類に関わらず一定です。 パワーダウン電流は、デバイスをスリープに

移行させ、全ての I/O ピンをハイインピーダンス状態にして VDD または VSS に接続し、電流増 (Δ電流 ) をもたらす機

能 (WDT、Timer1、オシレータ等 ) を全て無効にして計測しています。

2: 消費電流は主に動作電圧、周波数、モードによって決まります。 他の要因として I/O ピンの負荷とスイッチング レート、

オシレータのタイプと回路、内部コード実行パターン、温度等があり、これらも消費電流に影響を与えます。

アクティブ動作モードにおける IDD の計測値は、全て以下の条件でテストしています。 OSC1 = 外部矩形波 ( レールツーレール )、I/O ピンは全て 3 ステートで VDD にプル、

MCLR = VDD、WDT は指定の通り有効化または無効化しています。

3: 標準的な低コストの 32 kHz 水晶振動子の動作温度レンジは -10 ~ +70 ℃です。 コストは増加しますが、拡張温度仕様に

対応した水晶振動子も利用可能です。

4: 電圧レギュレータを無効に (ENVREG = 0、VSS に接続 ) した場合です。

5: 電圧レギュレータを有効に (ENVREG = 1、VDD に接続 ) した場合です。

6: IETH を規定する電流には、TPOUT+ と TPOUT- のシンク電流が含まれます。 LEDA と LEDB は全てのテストで無効です。

DS39762F_JP - p.438 2013 Microchip Technology Inc.

Page 439: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

28.3 DC 特性 : PIC18F97J60 ファミリ ( 産業用 )

DC 特性標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号記号 特性 小値 大値 単位 条件

VIL 入力 Low 電圧

全 I/O ポート :

D030 TTL バッファ使用 VSS 0.15VDD V VDD<2.7 V

VSS 0.8 V 2.7 V VDD 3.6 V

D031 シュミットトリガ バッファ使用 VSS 0.2 VDD V

D032 MCLR VSS 0.2 VDD V

D033 OSC1 VSS 0.3 VDD V HS、HSPLL モード

D033A

D034

OSC1

T13CKI

VSS

VSS

0.2 VDD

0.3

V

VEC モード

VIH 入力 High 電圧

アナログ機能付き I/O ポート :

D040 TTL バッファ使用 0.25 VDD + 0.8 V VDD V

D041 シュミットトリガ バッファ使用 0.8 VDD VDD V

デジタル専用 I/O ポート :

TTL バッファ使用 0.25 VDD + 0.8 V 5.5 V

シュミットトリガ バッファ使用 0.8 VDD 5.5 V

D042 MCLR 0.8 VDD VDD V

D043 OSC1 0.7 VDD VDD V HS、HSPLL モード

D043A

D044

OSC1

T13CKI

0.8 VDD

1.6

VDD

VDD

V

VEC モード

IIL 入力リーク電流 (1)

D060 I/O ポート — 1 A VSS VPIN VDD、ハイインピーダンス状態のピン

D061 MCLR — 1 A Vss VPIN VDD

D063 OSC1 — 1 A Vss VPIN VDD

IPU 弱プルアップ電流

D070 IPURB PORTB、PORTD、PORTE、PORTJ

80 400 A VDD = 3.3 V、VPIN = VSS

Note 1: 負の電流値は、ピンによるソース電流として定義しています。

2013 Microchip Technology Inc. DS39762F_JP - p.439

Page 440: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

VOL 出力 Low 電圧

D080 I/O ポート :

PORTD、PORTE、PORTJ

— 0.4 V IOL = 4 mA、VDD = 3.3 V、-40 ~ +85 ℃

PORTA<5:2>、PORTF、PORTG、PORTH

— 0.4 V IOL = 2 mA、VDD = 3.3 V、-40 ~ +85 ℃

PORTA<1:0>、PORTB、PORTC

— 0.4 V IOL = 8 mA、VDD = 3.3 V、-40 ~ +85 ℃

D083 OSC2/CLKO(EC、ECPLL モード )

— 0.4 V IOL = 2 mA、VDD = 3.3 V、-40 ~ +85 ℃

VOH 出力 High 電圧 (1)

D090 I/O ポート : V

PORTD、PORTE、PORTJ

2.4 — V IOH = -4 mA、VDD = 3.3 V、-40 ~ +85 ℃

PORTA<5:2>、PORTF、PORTG、PORTH

2.4 — V IOH = -2 mA、VDD = 3.3 V、-40 ~ +85 ℃

PORTA<1:0>、PORTB、PORTC

2.4 — V IOH = -8 mA、VDD = 3.3 V、-40 ~ +85 ℃

D092 OSC2/CLKO (EC、ECPLL モード )

2.4 — V IOH = -1.0 mA、VDD = 3.3 V、-40 ~ +85 ℃

出力ピンに対する容量性負荷の仕様

D100 COSC2 OSC2 ピン — 15 pF OSC1 の駆動に外部クロックを用いた HS モードの場合

D101 CIO 全 I/O ピンと OSC2( 内部 RC モード、EC、ECPLL の場合 )

— 50 pF AC タイミング仕様を満たすため

D102 CB SCLx、SDAx — 400 pF I2C™ 仕様

28.3 DC 特性 : PIC18F97J60 ファミリ ( 産業用 ) ( 続き )

DC 特性標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号記号 特性 小値 大値 単位 条件

Note 1: 負の電流値は、ピンによるソース電流として定義しています。

DS39762F_JP - p.440 2013 Microchip Technology Inc.

Page 441: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 28-1: メモリ プログラミングの要件

DC 特性標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )

パラメータ

番号記号 特性 小値 代表値† 大値 単位 条件

プログラム フラッシュメモリ

D130 EP セル書き込み耐性 100 1K - E/W -40 ~ +85 ℃

D131 VPR 読み出し用 VDD VMIN — 3.6 V VMIN = 小動作電圧

D132B VPEW 自己タイマによる消去または書き込みの電圧 VDD

VDDCORE

2.702.35

—-

3.62.7

VV

ENVREG を VDD に接続ENVREG を VSS に接続

D133A TIW 自己タイマによる書き込みのサイクル時間

— 2.8 — ms

D134 TRETD 特性保持期間 20 - — 年 他の仕様値に違反していない場合

D135 IDDP プログラミング中の消費電流 — 10 — mA Ethernet モジュールは無効

†「代表値」欄のデータは、特に明記しない限り 3.3 V、25 ℃の場合の値です。 これらのパラメータは設計

上の目安であり、テストしていません。

2013 Microchip Technology Inc. DS39762F_JP - p.441

Page 442: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 28-2: コンパレータの仕様

表 28-3: 参照電圧仕様

表 28-4: 内部電圧レギュレータ仕様

動作条件 : 3.0 V VDD 3.6 V、-40 ℃ TA +85 ℃ ( 特に明記しない場合 )

パラメータ

番号記号 特性 小値 代表値 大値 単位 備考

D300 VIOFF 入力オフセット電圧 * — ±5.0 ±25 mV

D301 VICM 入力コモンモード電圧 * 0 — AVDD - 1.5 V

D302 CMRR コモンモード除去率 * 55 — — dB

300 TRESP 応答時間 (1)* — 150 400 ns

301 TMC2OV コンパレータのモード変更から出力有効までの時間 *

— — 10 s

* これらのパラメータは特性データであり、テストしていません。

Note 1: 応答時間は、コンパレータの一方の入力を (AVDD - 1.5)/2 とし、もう一方の入力を VSS から AVDD に遷移させて計測しています。

動作条件 : 3.0 V VDD 3.6 V、-40 ℃ TA +85 ℃ ( 特に明記しない場合 )

パラメータ

番号記号 特性 小値 代表値 大値 単位 備考

D310 VRES 分解能 VDD/24 — VDD/32 LSb

D311 VRAA 絶対精度 — — 1/2 LSb

D312 VRUR 単位抵抗値 (R) — 2k —

310 TSET セトリングタイム (1) — — 10 s

Note 1: セトリングタイムは、CVRR = 1とし、CVR<3:0> を「0000」から「1111」に遷移させて計測しています。

動作条件 : -40 ℃ TA +85 ℃ ( 特に明記しない場合 )

パラメータ

番号記号 特性 小値 代表値 大値 単位 備考

VRGOUT レギュレータ出力電圧 — 2.5 — V

CF 外部フィルタ コンデンサ値 1 10 — F コンデンサは低直列抵抗にする

DS39762F_JP - p.442 2013 Microchip Technology Inc.

Page 443: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

28.4 AC ( タイミング ) 特性

28.4.1 タイミング パラメータの記号

タイミング パラメータの記号は、以下のいずれかの書式で表します。

1. TppS2ppS 3. TCC:ST (I2C 仕様のみ )2. TppS 4. Ts (I2C 仕様のみ )T

F 周波数 T 時間

小文字 (pp) の種類と意味 :pp

cc ECCP1 osc OSC1

ck CLKO rd RD

cs CS rw RD または WRdi SDIx sc SCKx

do SDOx ss SSx

dt データ入力 t0 T0CKI

io I/O ポート t1 T13CKI

mc MCLR wr WR

大文字の種類と意味 : S

F 立ち下がり P 周期

H High R 立ち上がり

I 無効 ( ハイインピーダンス ) V 有効

L Low Z ハイインピーダンス

I2C のみ

AA 出力アクセス High High

BUF バスフリー Low Low

TCC:ST (I2C 仕様のみ )CC

HD ホールド SU セットアップ

ST

DAT データ入力ホールド STO ストップ条件

STA スタート条件

2013 Microchip Technology Inc. DS39762F_JP - p.443

Page 444: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

28.4.2 タイミングの条件

表 28-5 に指定された温度と電圧は、特に明記しない限り、全てのタイミング仕様に適用されます。 図 28-3に、タイミング仕様の負荷条件を示します。

表 28-5: 温度および電圧仕様 - AC

図 28-3: デバイス タイミング仕様に対する負荷条件

AC 特性

標準動作条件 ( 特に明記しない場合 )動作温度 -40 ℃ TA +85 ℃ ( 産業用温度レンジ )セクション 28.1「DC 特性 : 電源電圧 PIC18F97J60 ファミリ ( 産業用 )」とセクション 28.3「DC 特性 : PIC18F97J60 ファミリ ( 産業用 )」の DC 仕様に記載された動作電圧 VDD レンジ

VDD/2

CL

RL

Pin Pin

VSS VSS

CL

RL = 464

CL = 50 pF (OSC2/CLKO を除く全ピン、ポートとしてD および E 出力を含む )

CL = 15 pF (OSC2/CLKO)

Load Condition 1 Load Condition 2

DS39762F_JP - p.444 2013 Microchip Technology Inc.

Page 445: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

28.4.3 タイミング チャートと仕様

図 28-4: 外部クロック タイミング (PLL を除く全モード )

表 28-6: 外部クロックのタイミング要件

パラメータ

番号記号 特性 小値 大値 単位 条件

1A FOSC 外部 CLKI 周波数 (1) DC 41.6667 MHz EC オシレータモード

オシレータ周波数 (1) 6 25 MHz HS オシレータモード

1 TOSC 外部 CLKI 周期 (1) 24 — ns EC オシレータモード

オシレータ周期 (1) 40 167 ns HS オシレータモード

2 TCY 命令サイクル時間 (1) 96 - ns TCY = 4/FOSC、産業用

3 TOSL、TOSH

外部クロック入力 (OSC1) High または Low 時間

10 — ns EC オシレータモード

4 TOSR、TOSF

外部クロック入力 (OSC1)の立ち上がり / 立ち下がり時間

— 7.5 ns EC オシレータモード

5 クロック周波数許容誤差 — ±50 ppm Ethernet モジュールが有効

Note 1: PLL を除く全ての設定において、命令サイクル周期 (TCY) は、入力オシレータのタイムベース周期の 4 倍です。 仕様の値は全て、標準の動作条件下でデバイスにコードを実行させた場合の特定のオシレータタイプの特性データに基づいています。 これらの仕様の制限値を超えるとオシレータの動作が不安定になったり、予測以上の電流を消費する事があります。 全てのデバイスは、OSC1/CLKI ピンに外部クロックを入力した状態で「 小値」で動作をテストしています。 外部クロック入力を使った場合、サイクル時間の

「 大」側の制限値はいずれのデバイスの場合も「DC」( クロックなし ) です。

OSC1

CLKO

Q4 Q1 Q2 Q3 Q4 Q1

1

2

3 3 4 4

2013 Microchip Technology Inc. DS39762F_JP - p.445

Page 446: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 28-7: PLL クロック タイミング仕様 (VDD = 2.6 ~ 3.6 V)

表 28-8: AC 特性 : 内部 RC 精度PIC18F97J60 ファミリ ( 産業用 )

パラメータ 番号

記号 特性 小値 代表値† 大値 単位 条件

F10 FOSC オシレータ周波数レンジ 8 — 25 MHz HSPLL モード

8 — 37.5 MHz ECPLL モード

F11 FSYS 内蔵 VCO システム周波数 20 — 62.5 MHz

F12 trc PLL 起動時間 ( ロック時間 ) — — 2 ms

F13 CLK CLKO 安定性 ( ジッタ ) -2 — +2 %

† 「代表値」欄のデータは、特に明記しない限り 3.3 V、25 ℃の場合の値です。 これらのパラメータは設計上

の目安であり、テストしていません。

パラメータ

番号特性 小値 代表値 大値 単位 条件

INTRC 精度 @ 周波数 = 31 kHz(1) 21.7 — 40.3 kHz

Note 1: INTRC の周波数は、VDDCORE の変動と共に変化します。

DS39762F_JP - p.446 2013 Microchip Technology Inc.

Page 447: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-5: CLKO と I/O タイミング

表 28-9: CLKO と I/O のタイミング要件

パラメータ

番号記号 特性 小値 代表値 大値 単位 条件

10 TOSH2CKL OSC1 から CLKO — 75 200 ns

11 TOSH2CKH OSC1 から CLKO — 75 200 ns

12 TCKR CLKO 立ち上がり時間 — 15 30 ns

13 TCKF CLKO 立ち下がり時間 — 15 30 ns

14 TCKL2IOV CLKO からポート出力有効 — — 0.5 TCY + 20 ns

15 TIOV2CKH CLKO前のポート入力有効 0.25 TCY + 25 — — ns

16 TCKH2IOI CLKO 後のポート入力ホールド 0 — — ns

17 TOSH2IOV OSC1 (Q1 サイクル ) からポート出力有効

— 50 150 ns

18 TOSH2IOI OSC1 (Q2 サイクル ) からポート入力無効 (I/O 入力のホールド時間 )

100 — — ns

19 TIOV2OSH ポート入力有効から OSC1 (I/O 入力のセットアップ時間 )

0 — — ns

20 TIOR ポート出力立ち上がり時間 — — 6 ns

21 TIOF ポート出力立ち下がり時間 — — 5 ns

22 † TINP INTx ピンの High または Low 時間 TCY — — ns

23 † TRBP RB<7:4> 状態変化 INTx の High またはLow 時間

TCY — — ns

† これらは非同期イベントに対するパラメータであり、内部クロックエッジとの関連性はありません。

Note: 負荷条件については、図 28-3 を参照してください。

OSC1

CLKO

I/O pin(Input)

I/O pin(Output)

Q4 Q1 Q2 Q3

10

1314

17

20, 21

19 18

15

11

12

16

Old Value New Value

2013 Microchip Technology Inc. DS39762F_JP - p.447

Page 448: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-6: プログラムメモリ読み出しタイミング チャート

表 28-10: CLKO と I/O のタイミング要件

パラメータ 番号

記号 特性 小値 代表値 大値 単位

150 TadV2alL アドレス出力有効から ALE( アドレス セットアップ時間 )

0.25 TCY - 10 — — ns

151 TalL2adl ALE からアドレス出力無効 ( アドレスホールド時間 )

5 — — ns

155 TalL2oeL ALEから OE 10 0.125 TCY — ns

160 TadZ2oeL AD ハイインピーダンスから OE ( バス解放から OE)

0 — — ns

161 ToeH2adD OE から AD 駆動 0.125 TCY - 5 — — ns

162 TadV2oeH OE 前の 下位データ有効( データ セットアップ時間 )

20 — — ns

163 ToeH2adl OE からデータ入力無効( データホールド時間 )

0 — — ns

164 TalH2alL ALE パルス幅 — TCY — ns

165 ToeL2oeH OE パルス幅 0.5 TCY - 5 0.5 TCY — ns

166 TalH2alH ALE から ALE ( サイクル時間 ) — 0.25 TCY — ns

167 Tacc アドレス有効からデータ有効 0.75 TCY - 25 — — ns

168 Toe OE からデータ有効 — 0.5 TCY - 25 ns

169 TalL2oeH ALEから OE 0.625 TCY - 10 — 0.625 TCY + 10 ns

171 TalH2csL チップイネーブル アクティブから ALE 0.25 TCY - 20 — — ns

171A TubL2oeH AD 有効からチップイネーブル アクティブ — — 10 ns

Q1 Q2 Q3 Q4 Q1 Q2

OSC1

ALE

OE

Address Data from External

166

160

165

161151 162

163

AD<15:0>

168

155

Address

Address

150

A<19:16> Address

169

BA0

CE

171

171A

動作条件 : 2.0 V < VCC < 3.6 V、-40 ℃ < TA < +125 ℃ ( 特に明記しない場合 )

164

167

DS39762F_JP - p.448 2013 Microchip Technology Inc.

Page 449: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-7: プログラムメモリ書き込みタイミング チャート

表 28-11: プログラムメモリ書き込みタイミング要件

パラメータ 番号

記号 特性 小値 代表値 大値 単位

150 TadV2alL アドレス出力有効から ALE ( アドレス セットアップ時間 )

0.25 TCY - 10 — — ns

151 TalL2adl ALE からアドレス出力無効( アドレスホールド時間 )

5 — — ns

153 TwrH2adl WRn からデータ出力無効( データホールド時間 )

5 — — ns

154 TwrL WRn パルス幅 0.5 TCY - 5 0.5 TCY — ns

156 TadV2wrH WRn 前のデータ有効( データ セットアップ時間 )

0.5 TCY - 10 — — ns

157 TbsV2wrL WRn 前のバイト選択有効( バイト選択セットアップ時間 )

0.25 TCY — — ns

157A TwrH2bsI WRn からバイト選択無効( バイト選択ホールド時間 )

0.125 TCY - 5 — — ns

166 TalH2alH ALE から ALE ( サイクル時間 ) — 0.25 TCY — ns

171 TalH2csL チップイネーブル アクティブから ALE 0.25 TCY – 20 — — ns

171A TubL2oeH AD 有効からチップイネーブル アクティブ — — 10 ns

Q1 Q2 Q3 Q4 Q1 Q2

OSC1

ALE

Address Data

156150

151

153

AD<15:0> Address

WRH orWRL

UB orLB

157

154

157A

AddressA<19:16>

AddressBA0

166

CE

171

171A

動作条件 : 2.0 V < VCC < 3.6 V、-40 ℃ < TA < +125 ℃ ( 特に明記しない場合 )

2013 Microchip Technology Inc. DS39762F_JP - p.449

Page 450: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-8: リセット、ウォッチドッグ タイマ、オシレータ起動タイマ、パワーアップ タイマのタイミング

表 28-12: リセット、ウォッチドッグ タイマ、オシレータ起動タイマ、パワーアップ タイマ、ブラウンアウト リセットの要件

パラメータ 番号

記号 特性 小値 代表値 大値 単位 条件

30 TMCL MCLR パルス幅 (Low) 2 — — s

31 TWDT ウォッチドッグ タイマ タイムアウト時間( ポストスケーラなし )

2.8 4.1 5.4 ms

32 TOST オシレータ起動タイマ周期 1024 TOSC - 1024 TOSC — TOSC = OSC1 周期

33 TPWRT パワーアップ タイマ周期 46.2 66 85.8 ms

34 TIOZ MCLR = Low またはウォッチドッグ タイマリセットからI/O ピン High-Z

— — 3TCY + 2 s システムクロック使用可能

— — 415 s システムクロック使用不可 ( スリープまたはプライマリ オシレータOFF)

38 TCSD CPU 起動時間 — 200 — s

VDD

MCLR

InternalPOR

PWRTTime-out

OscillatorTime-out

InternalReset

WatchdogTimerReset

33

32

30

3134

I/O pins

34

Note: 負荷条件については、図 28-3 を参照してください。

DS39762F_JP - p.450 2013 Microchip Technology Inc.

Page 451: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

2013 Microchip Technology Inc. DS39762F_JP - p.451

図 28-9: Timer0 と Timer1 の外部クロック タイミング

表 28-13: Timer0 と Timer1 の外部クロックの要件

パラメータ 番号

記号 特性 小値 大値 単位 条件

40 TT0H T0CKI パルス幅 (High) プリスケーラなし

0.5 TCY + 20 — ns

プリスケーラあり

10 — ns

41 TT0L T0CKI パルス幅 (Low) プリスケーラなし

0.5 TCY + 20 — ns

プリスケーラあり

10 — ns

42 TT0P T0CKI 周期 プリスケーラなし

TCY + 10 — ns

プリスケーラあり

以下のいずれか大きい方 :

20 ns または (TCY + 40)/N

— ns N = プリスケール値 (1, 2, 4,..., 256)

45 TT1H T13CKI High 時間

同期、プリスケーラなし 0.5 TCY + 20 — ns

同期、プリスケーラあり 10 — ns

非同期 30 — ns

46 TT1L T13CKI Low 時間

同期、プリスケーラなし 0.5 TCY + 5 — ns

同期、プリスケーラあり 10 — ns

非同期 30 — ns

47 TT1P T13CKI入力周期

同期 以下のいずれか大きい方 :

20 ns または (TCY + 40)/N

— ns N = プリスケール値(1, 2, 4, 8)

非同期 60 — ns

FT1 T13CKI オシレータ入力周波数レンジ DC 50 kHz

48 TCKE2TMRI 外部 T13CKI クロックエッジからタイマのインクリメントまでの遅延

2 TOSC 7 TOSC —

Note: 負荷条件については、図 28-3 を参照してください。

46

47

45

48

41

42

40

T0CKI

T1OSO/T13CKI

TMR0 またはTMR1

Page 452: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-10: キャプチャ / コンペア /PWM タイミング (ECCPx モジュールを含む )

表 28-14: キャプチャ / コンペア /PWM の要件 (ECCPx モジュールを含む )

表 28-15: パラレルスレーブ ポートの要件

パラメータ 番号

記号 特性 小値 大値 単位 条件

50 TCCL CCPx 入力Low 時間

プリスケーラなし 0.5 TCY + 20 — ns

プリスケーラあり 10 — ns

51 TCCH CCPx 入力High 時間

プリスケーラなし 0.5 TCY + 20 — ns

プリスケーラあり 10 — ns

52 TCCP CCPx 入力周期 3 TCY + 40N

— ns N = プリスケール値(1, 4, 16)

53 TCCR CCPx 出力立ち上がり時間 — 25 ns

54 TCCF CCPx 出力立ち下がり時間 — 25 ns

パラメータ

番号記号 特性 小値 大値 単位 条件

62 TdtV2wrH WR またはCS 前のデータ入力有効 (セットアップ時間 )

20 — ns

63 TwrH2dtI WR またはCS からデータ入力無効(ホールド時間) 20 — ns

64 TrdL2dtV RD かつ CS からデータ出力有効 — 80 ns

65 TrdH2dtI RD または CS からデータ出力無効 10 30 ns

66 TibfINH WR またはCS から IBFフラグビットのクリア禁止 — 3 TCY

Note: 負荷条件については、図 28-3 を参照してください。

CCPx(Capture Mode)

50 51

52

CCPx

53 54

(Compare or PWM Mode)

DS39762F_JP - p.452 2013 Microchip Technology Inc.

Page 453: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-11: SPI マスタモードのタイミング例 (CKE = 0)

表 28-16: SPI モードの要件の例 ( マスタモード、Cke = 0)

パラメータ 番号

記号 特性 小値 大値 単位 条件

73 TDIV2SCH、TDIV2SCL

SCKx エッジに対する SDIx データ入力のセットアップ時間

100 — ns

74 TSCH2DIL、TSCL2DIL

SCKx エッジに対する SDIx データ入力のホールド時間

100 — ns

75 TDOR SDOx データ出力立ち上がり時間 — 25 ns

76 TDOF SDOx データ出力立ち下がり時間 — 25 ns

78 TSCR SCKx 出力立ち上がり時間 — 25 ns

79 TSCF SCKx 出力立ち下がり時間 — 25 ns

80 TSCH2DOV、TSCL2DOV

SCKx エッジ後から SDOx データ出力有効 — 50 ns

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SDIx

7374

75, 76

787980

7978

MSb LSbbit 6 - - - - - - 1

MSb In LSb Inbit 6 - - - - 1

Note: 負荷条件については、図 28-3 を参照してください。

2013 Microchip Technology Inc. DS39762F_JP - p.453

Page 454: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-12: SPI マスタモードのタイミング例 (CKE = 1)

表 28-17: SPI モードの要件の例 ( マスタモード、CKE = 1)

パラメータ 番号

記号 特性 小値 大値 単位 条件

73 TDIV2SCH、TDIV2SCL

SCKx エッジに対する SDIx データ入力のセットアップ時間

100 — ns

74 TSCH2DIL、TSCL2DIL

SCKx エッジに対する SDIx データ入力のホールド時間

100 — ns

75 TDOR SDOx データ出力立ち上がり時間 — 25 ns

76 TDOF SDOx データ出力立ち下がり時間 — 25 ns

78 TSCR SCKx 出力立ち上がり時間 — 25 ns

79 TSCF SCKx 出力立ち下がり時間 — 25 ns

80 TSCH2DOV、TSCL2DOV

SCKx エッジ後から SDOx データ出力有効 — 50 ns

81 TDOV2SCH、TDOV2SCL

SCKx エッジに対する SDOx データ出力セットアップ

TCY — ns

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SDIx

81

74

75, 76

78

80

MSb

7973

MSb In

bit 6 - - - - - - 1

LSb Inbit 6 - - - - 1

LSb

Note: 負荷条件については、図 28-3 を参照してください。

DS39762F_JP - p.454 2013 Microchip Technology Inc.

Page 455: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-13: SPI スレーブモードのタイミング例 (CKE = 0)

表 28-18: SPI モードの要件の例 ( スレーブモード、CKE = 0)

パラメータ 番号

記号 特性 小値 大値 単位 条件

70 TSSL2SCH、TSSL2SCL

SSx から SCKx または SCKx 入力 TCY — ns

71 TSCH SCKx 入力 High 時間 連続 1.25 TCY + 30 — ns

71A シングルバイト 40 — ns (Note 1)

72 TSCL SCKx 入力 Low 時間 連続 1.25 TCY + 30 — ns

72A シングルバイト 40 — ns (Note 1)

73 TDIV2SCH、TDIV2SCL

SCKx エッジに対する SDIx データ入力のセットアップ時間

100 — ns

73A TB2B バイト 1 の 後のクロックエッジからバイト 2 の初のクロックエッジ

1.5 TCY + 40 — ns (Note 2)

74 TSCH2DIL、TSCL2DIL

SCKx エッジに対する SDIx データ入力のホールド時間

100 — ns

75 TDOR SDOx データ出力立ち上がり時間 — 25 ns

76 TDOF SDOx データ出力立ち下がり時間 — 25 ns

77 TSSH2DOZ SSx から SDOx 出力ハイインピーダンス 10 50 ns

80 TSCH2DOV、TSCL2DOV

SCKx エッジ後から SDOx データ出力有効 — 50 ns

83 TSCH2SSH、TSCL2SSH

SCKx エッジ後から SSx 1.5 TCY + 40 — ns

Note 1: パラメータ #73A を使う必要があります。

2: パラメータ #71A と #72A を使う場合のみ適用されます。

SSx

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SDI

70

71 72

7374

75, 76 77

80

SDIx

MSb LSbbit 6 - - - - - - 1

MSb In bit 6 - - - - 1 LSb In

83

Note: 負荷条件については、図 28-3 を参照してください。

2013 Microchip Technology Inc. DS39762F_JP - p.455

Page 456: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-14: SPI スレーブモードのタイミング例 (CKE = 1)

表 28-19: SPI スレーブモードの要件の例 (CKE = 1)

パラメータ

番号記号 特性 小値 大値 単位 条件

70 TSSL2SCH、TSSL2SCL

SSx から SCKx または SCKx 入力 TCY — ns

71 TSCH SCKx 入力 High 時間 連続 1.25 TCY + 30 — ns

71A シングルバイト 40 — ns (Note 1)

72 TSCL SCKx 入力 Low 時間 連続 1.25 TCY + 30 — ns

72A シングルバイト 40 — ns (Note 1)

73A TB2B バイト 1 の 後のクロックエッジからバイト 2 の初のクロックエッジ

1.5 TCY + 40 — ns (Note 2)

74 TSCH2DIL、TSCL2DIL

SCKx エッジに対する SDIx データ入力のホールド時間

100 — ns

75 TDOR SDOx データ出力立ち上がり時間 — 25 ns

76 TDOF SDOx データ出力立ち下がり時間 — 25 ns

77 TSSH2DOZ SSx から SDOx 出力ハイインピーダンス 10 50 ns

80 TSCH2DOV、TSCL2DOV

SCKx エッジ後から SDOx データ出力有効 — 50 ns

82 TSSL2DOV SSx エッジ後から SDOx データ出力有効 — 50 ns

83 TSCH2SSH、TSCL2SSH

SCKx エッジ後から SSx 1.5 TCY + 40 — ns

Note 1: パラメータ #73A を使う必要があります。

2: パラメータ #71A と #72A を使う場合のみ適用されます。

SSx

SCKx(CKP = 0)

SCKx(CKP = 1)

SDOx

SDI

70

71 72

82

SDIx

74

75, 76

MSb bit 6 - - - - - - 1 LSb

77

MSb In bit 6 - - - - 1 LSb In

80

83

Note: 負荷条件については、図 28-3 を参照してください。

DS39762F_JP - p.456 2013 Microchip Technology Inc.

Page 457: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-15: I2C™ バス スタート / ストップビットのタイミング

表 28-20: I2C™ バス スタート / ストップビットの要件 ( スレーブモード )

図 28-16: I2C™ バスデータのタイミング

パラメータ 番号

記号 特性 小値 大値 単位 条件

90 TSU:STA スタート条件 100 kHz モード 4700 — ns 反復スタート条件時のみ

セットアップ時間 400 kHz モード 600 —

91 THD:STA スタート条件 100 kHz モード 4000 — ns この期間後、 初のクロックパルスが生成されるホールド時間 400 kHz モード 600 —

92 TSU:STO ストップ条件 100 kHz モード 4700 — ns

セットアップ時間 400 kHz モード 600 —

93 THD:STO ストップ条件 100 kHz モード 4000 — ns

ホールド時間 400 kHz モード 600 —

Note: 負荷条件については、図 28-3 を参照してください。

91

92

93SCLx

SDAx

StartCondition

StopCondition

90

Note: 負荷条件については、図 28-3 を参照してください。

90

91 92

100

101

103

106 107

109 109110

102

SCLx

SDAxIn

SDAxOut

2013 Microchip Technology Inc. DS39762F_JP - p.457

Page 458: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

DS39762F_JP - p.458 2013 Microchip Technology Inc.

表 28-21: I2C™ バスデータ要件 ( スレーブモード )

パラメータ 番号

記号 特性 小値 大値 単位 条件

100 THIGH クロック High 時間 100 kHz モード 4.0 — s PIC18F97J60 ファミリが1.5 MHz 以上で動作する必要がある

400 kHz モード 0.6 — s PIC18F97J60 ファミリが10 MHz 以上で動作する必要がある

MSSP モジュール 1.5 TCY —

101 TLOW クロック Low 時間 100 kHz モード 4.7 — s PIC18F97J60 ファミリが1.5 MHz 以上で動作する必要がある

400 kHz モード 1.3 — s PIC18F97J60 ファミリが10 MHz 以上で動作する必要がある

MSSP モジュール 1.5 TCY —

102 TR SDAx と SCLx立ち上がり時間

100 kHz モード — 1000 ns

400 kHz モード 20 + 0.1 CB 300 ns CB の規定値は 10 ~ 400 pF

103 TF SDAx と SCLx立ち下がり時間

100 kHz モード — 300 ns

400 kHz モード 20 + 0.1 CB 300 ns CB の規定値は 10 ~ 400 pF

90 TSU:STA スタート条件セットアップ時間

100 kHz モード 4.7 — s 反復スタート条件時のみ

400 kHz モード 0.6 — s

91 THD:STA スタート条件ホールド時間

100 kHz モード 4.0 — s この期間後、 初のクロックパルスが生成される400 kHz モード 0.6 — s

106 THD:DAT データ入力ホールド時間

100 kHz モード 0 — ns

400 kHz モード 0 0.9 s

107 TSU:DAT データ入力セットアップ時間

100 kHz モード 250 — ns (Note 2)

400 kHz モード 100 — ns

92 TSU:STO ストップ条件セットアップ時間

100 kHz モード 4.7 — s

400 kHz モード 0.6 — s

109 TAA クロックから出力有効 100 kHz モード — 3500 ns (Note 1)

400 kHz モード — — ns

110 TBUF バスフリー時間 100 kHz モード 4.7 — s 次の転送が開始可能になるまでに必要なバスの空き時間400 kHz モード 1.3 — s

D102 CB バス容量性負荷 — 400 pF

Note 1: デバイスがトランスミッタの場合、意図しないスタート / ストップ条件の発生を防ぐために SCLx の立ち下がりエッジの未定義領域をブリッジする内部 小遅延時間 (min. 300 ns) を確保する必要があります。

2: 高速モードの I2C™ バスデバイスを標準モードの I2C バスシステムで使う事は可能ですが、その場合もTSU:DAT 250 ns の要件を満たす必要があります。 デバイスが SCLx 信号の Low 期間を伸長しない場合、自動的にこの状態となります。 SCLx 信号の Low 期間を伸長する場合、標準モードの I2C バス仕様に従い、SCLx ラインを解放する TR max. + TSU:DAT = 1000 + 250 = 1250 ns 前に、次のデータビットをSDAx ラインに出力する必要があります。

Page 459: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-17: マスタ SSP I2C™ バス スタート / ストップビットのタイミング波形

表 28-22: マスタ SSP I2C™ バス スタート / ストップビットの要件

図 28-18: マスタ SSP I2C™ バスデータのタイミング

パラメータ

番号記号 特性 小値 大値 単位 条件

90 TSU:STA スタート条件 100 kHz モード 2 (TOSC)(BRG + 1) — ns 反復スタート条件の場合のみセットアップ時間 400 kHz モード 2 (TOSC)(BRG + 1) —

1 MHz モード (1) 2 (TOSC)(BRG + 1) —

91 THD:STA スタート条件 100 kHz モード 2 (TOSC)(BRG + 1) — ns この期間後、 初のクロックパルスが生成される

ホールド時間 400 kHz モード 2 (TOSC)(BRG + 1) —

1 MHz モード (1) 2 (TOSC)(BRG + 1) —

92 TSU:STO ストップ条件 100 kHz モード 2 (TOSC)(BRG + 1) — ns

セットアップ時間 400 kHz モード 2 (TOSC)(BRG + 1) —

1 MHz モード (1) 2 (TOSC)(BRG + 1) —

93 THD:STO ストップ条件 100 kHz モード 2 (TOSC)(BRG + 1) — ns

ホールド時間 400 kHz モード 2 (TOSC)(BRG + 1) —

1 MHz モード (1) 2 (TOSC)(BRG + 1) —

Note 1: 全ての I2C™ ピンの 大静電容量は 10 pF です。

Note: 負荷条件については、図 28-3 を参照してください。

91 93SCLx

SDAx

StartCondition

StopCondition

90 92

Note: 負荷条件については、図 28-3 を参照してください。

9091 92

100

101

103

106107

109 109 110

102

SCLx

SDAxIn

SDAxOut

2013 Microchip Technology Inc. DS39762F_JP - p.459

Page 460: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 28-23: マスタ SSP I2C™ バスデータの要件

パラメータ

番号記号 特性 小値 大値 単位 条件

100 THIGH クロック High 時間 100 kHz モード 2 (TOSC)(BRG + 1) — ms

400 kHz モード 2 (TOSC)(BRG + 1) — ms

1 MHz モード (1) 2 (TOSC)(BRG + 1) — ms

101 TLOW クロック Low 時間 100 kHz モード 2 (TOSC)(BRG + 1) — ms

400 kHz モード 2 (TOSC)(BRG + 1) — ms

1 MHz モード (1) 2 (TOSC)(BRG + 1) — ms

102 TR SDAx と SCLx 立ち上がり時間

100 kHz モード — 1000 ns CB の規定値は10 ~ 400 pF 400 kHz モード 20 + 0.1 CB 300 ns

1 MHz モード (1) — 300 ns

103 TF SDAx と SCLx 立ち下がり時間

100 kHz モード — 300 ns CB の規定値は10 ~ 400 pF 400 kHz モード 20 + 0.1 CB 300 ns

1 MHz モード (1) — 100 ns

90 TSU:STA スタート条件 セットアップ時間

100 kHz モード 2 (TOSC)(BRG + 1) — ms 反復スタート条件の場合のみ400 kHz モード 2 (TOSC)(BRG + 1) — ms

1 MHz モード (1) 2 (TOSC)(BRG + 1) — ms

91 THD:STA スタート条件 ホールド時間

100 kHz モード 2 (TOSC)(BRG + 1) — ms この期間後、 初のクロックパルスが生成される

400 kHz モード 2 (TOSC)(BRG + 1) — ms

1 MHz モード (1) 2 (TOSC)(BRG + 1) — ms

106 THD:DAT データ入力 ホールド時間

100 kHz モード 0 — ns

400 kHz モード 0 0.9 ms

1 MHz モード (1) TBD — ns

107 TSU:DAT データ入力 セットアップ時間

100 kHz モード 250 — ns (Note 2)

400 kHz モード 100 — ns

1 MHz モード (1) TBD — ns

92 TSU:STO ストップ条件 セットアップ時間

100 kHz モード 2 (TOSC)(BRG + 1) — ms

400 kHz モード 2 (TOSC)(BRG + 1) — ms

1 MHz モード (1) 2 (TOSC)(BRG + 1) — ms

109 TAA クロックから出力有効

100 kHz モード — 3500 ns

400 kHz モード — 1000 ns

1 MHz モード (1) — — ns

110 TBUF バスフリー時間 100 kHz モード 4.7 — ms 次の転送が開始可能になるまでに必要なバスの空き時間

400 kHz モード 1.3 — ms

1 MHz モード (1) TBD — ms

D102 CB バス容量性負荷 — 400 pF

凡例 : TBD = 未定

Note 1: 全ての I2C™ ピンの 大静電容量は 10 pF です。

2: 高速モードの I2C バスデバイスを標準モードの I2C バスシステムで使う事は可能ですが、その場合もパラメータ #107 250 ns を満たす必要があります。 デバイスが SCLx 信号の Low 期間を伸長しない場合、自動的にこの状態となります。 SCLx 信号の Low 期間を伸長する場合、SCLx ラインを解放するパラメータ #102 + パラメータ #107 = 1000 + 250 = 1250 ns 前に (100 kHz モードの場合 )、次のデータビットをSDAx ラインに出力する必要があります。

DS39762F_JP - p.460 2013 Microchip Technology Inc.

Page 461: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

図 28-19: EUSARTx 同期送信 ( マスタ / スレーブ ) のタイミング

表 28-24: EUSARTx 同期送信の要件

図 28-20: EUSARTx 同期受信 ( マスタ / スレーブ ) のタイミング

表 28-25: EUSARTx 同期受信の要件

パラメータ 番号

記号 特性 小値 大値 単位 条件

120 TCKH2DTV 同期送信 ( マスタとスレーブ ) クロック High からデータ出力有効 — 40 ns

121 TCKRF クロック出力の立ち上がり / 立ち下がり時間( マスタモード )

— 20 ns

122 TDTRF データ出力の立ち上がり / 立ち下がり時間 — 20 ns

パラメータ 番号

記号 特性 小値 大値 単位 条件

125 TDTV2CKL 同期受信 ( マスタとスレーブ )CKx 前のデータホールド(DTx ホールド時間 )

10 — ns

126 TCKL2DTL CKx 後のデータホールド(DTx ホールド時間 )

15 — ns

121 121

120122

TXx/CKx

RXx/DTxpin

pin

Note: 負荷条件については、図 28-3 を参照してください。

125

126

TXx/CKx

RXx/DTx

pin

pin

Note: 負荷条件については、図 28-3 を参照してください。

2013 Microchip Technology Inc. DS39762F_JP - p.461

Page 462: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 28-26: A/D コンバータの特性 : PIC18F97J60 ファミリ ( 産業用 )

図 28-21: A/D 変換のタイミング

パラメータ 番号

記号 特性 小値 代表値 大値 単位 条件

A01 NR 分解能 — — 10 bit VREF 2.0 V

A03 EIL 積分直線性誤差 — — <±1 LSb VREF 2.0 V

A04 EDL 微分直線性誤差 — — <±1 LSb VREF 2.0 V

A06 EOFF オフセットエラー — — <±3 LSb VREF 2.0 V

A07 EGN ゲインエラー — — <±3 LSb VREF 2.0 V

A10 - 単調性 保証 (1) — VSS VAIN VREF

A20 VREF 参照電圧レンジ(VREFH - VREFL)

1.83

——

——

VV

VDD 3.0 VVDD 3.0 V

VREFSUM 参照電圧合計 (VREFH + VREFL)

— — AVDD + 0.5 V

A21 VREFH 参照電圧 High VREFL — AVDD V

A22 VREFL 参照電圧 Low AVSS — VREFH V

A25 VAIN アナログ入力電圧 VREFL — VREFH V

A30 ZAIN アナログ電圧源の推奨インピーダンス

— — 2.5 k

A50 IREF VREF 入力電流 (2) ——

——

51000

AA

VAIN のアクイジション中A/D 変換サイクル中

Note 1: A/D 変換結果は、入力電圧が増大しても減少する事はありません。また、ミッシングコードもありません。

2: VREFH 電流は、いずれの VREFH 信号源を選択した場合も、RA3/AN3/VREF+ ピンまたは AVDD から流れます。VREFL 電流は、いずれの VREFL 信号源を選択した場合も、RA2/AN2/VREF- ピンまたは AVSS から流れます。

131

130

132

BSF ADCON0, GO

Q4

A/D CLK(1)

A/D DATA

ADRES

ADIF

GO

SAMPLE

OLD_DATA

SAMPLING STOPPED

DONE

NEW_DATA

(Note 2)

9 8 7 2 1 0

Note 1: A/D クロック源に RC を選択した場合、A/D クロックの開始前に TCY の遅延が追加されます。 これによって SLEEP 命令の実行が可能です。

2: これは 小の RC 遅延 ( 代表値は 100 ns) であり、この期間はアナログ入力から保持コンデンサを切り離します。

. . . . . .

TCY

DS39762F_JP - p.462 2013 Microchip Technology Inc.

Page 463: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

表 28-27: A/D 変換の要件

28.5 Ethernet の仕様と要件

表 28-28: Ethernet トランシーバ外部磁気回路の要件

パラメータ 番号

記号 特性 小値 大値 単位 条件

130 TAD A/D クロック周期 0.7 25.0(1) s TOSC ベース、VREF 2.0 V

TBD 1 s A/D RC モード

131 TCNV 変換時間 ( アクイジション時間を除く )(Note 2)

11 12 TAD

132 TACQ アクイジション時間 (Note 3) 1.4 — s -40 ~ +85 ℃

135 TSWC 変換サンプリングの切り換え時間 — (Note 4)

TBD TDIS 放電時間 0.2 — s

凡例 : TBD = 未定

Note 1: A/D クロック周期の時間は、デバイスの周波数と TAD クロック分周回路によって決まります。

2: ADRES レジスタは次の TCY サイクルで読み出しが可能です。

3: 変換後に電圧がフルスケールで変化 (VDD から VSS または VSS から VDD) した場合に保持コンデンサが「新しい」入力電圧を取得するのにかかる時間です。 入力チャンネルのソース インピーダンス (RS) は 50 です。

4: デバイスクロックの次のサイクルで切り換わります。

パラメータ 小値 標準値 大値 単位 条件

RX 巻線比 — 1:1 — —

TX 巻線比 — 1:1 — — トランス中央タップ = 3.3 V

挿入損失 — — -1.1 dB

一次側インダクタンス 350 — — H 8 mA バイアス

トランス絶縁 1.5 — — kVrms IEEE 802.3™ 要件を満たすために必要

差動 - コモンモード除去比 40 — — dB 0.1 ~ 10 MHz

リターンロス -16 — — dB

2013 Microchip Technology Inc. DS39762F_JP - p.463

Page 464: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.464 2013 Microchip Technology Inc.

Page 465: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

29.0 パッケージ情報

29.1 パッケージのマーキング情報

64-Lead TQFP

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

Example

18F67J60-I/PT

1110017

80-Lead TQFP

XXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

Example

PIC18F87J60-I/PT

1110017

100-Lead TQFP (12x12x1 mm)

XXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

Example

PIC18F97J60-I/PT

1110017

100-Lead TQFP (14x14x1 mm)

XXXXXXXXXXXXXXXXXXXXXXXX

YYWWNNN

Example

PIC18F97J60-I/PF

1110017

凡例 : XX...Xお客様固有情報Y 年コード ( 西暦の下 1 桁 )YY年コード ( 西暦の下 2 桁 )WW週コード (1 月の第 1 週が「01」)NNN英数字のトレーサビリティ コード つや消し錫 (Sn) の使用を示す鉛フリーの JEDEC マーク* 本パッケージは鉛フリーです。鉛フリー JEDEC マーク ( )

は外箱に表記しています。

Note: マイクロチップ社の製品番号が 1 行に収まりきらない場合は複数行を使います。この場合お客様固有情報に使える文字数が制限されます。

3e

3e

3e

3e

3e

3e

2013 Microchip Technology Inc. DS39762F_JP - p.465

Page 466: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

29.2 パッケージ詳細

以下に、各パッケージの技術的詳細を記載します。

64 ピン プラスチック薄型クワッド フラットパック (PT) - 10x10x1 mm ボディ、2.00 mm [TQFP]

Notes:1. 1 ピンマークの場所にはばらつきがありますが、必ず斜線部分内にあります。

2. コーナー部の面取りはオプションで、サイズは異なります。

3. D1 と E1 の寸法はモールドのはみ出しまたは突出部を含みません。モールドのはみ出しまたは突出部は側面から 0.25 mm を超

えません。

4. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、理論的に正確な値、公差なしで表示

REF: 参考寸法、通常は公差を含まない、情報としてのみ使われる値Microchip Technology Drawing C04-085B

Note: 新のパッケージ図面については、以下のウェブサイトにある「Microchip Packaging Specification ( マイクロチップ社パッケージ仕様 )」を参照してください。http://www.microchip.com/packaging

単位 ミリメートル

寸法限界 小 公称 大

リード数 N 64

リードピッチ e 0.50 BSC

全高 A - - 1.20

モールド パッケージ厚 A2 0.95 1.00 1.05

スタンドオフ A1 0.05 - 0.15

足長 L 0.45 0.60 0.75

フットプリント L1 1.00 REF

足角 0° 3.5° 7°

全幅 E 12.00 BSC

全長 D 12.00 BSC

モールド パッケージ幅 E1 10.00 BSC

モールド パッケージ長 D1 10.00 BSC

リード厚 c 0.09 - 0.20

リード幅 b 0.17 0.22 0.27

モールドドラフト角トップ 11° 12° 13°

モールドドラフト角ボトム 11° 12° 13°

D

D1

E

E1

e

b

N

NOTE 1 1 2 3 NOTE 2

c

LA1

L1

A2

β

α

DS39762F_JP - p.466 2013 Microchip Technology Inc.

Page 467: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

64 ピン プラスチック薄型クワッド フラットパック (PT) - 10x10x1 mm ボディ、2.00 mm [TQFP]

Notes:1. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、理論的に正確な値、公差なしで表示

Microchip Technology Drawing No. C04-2085A

Note: 新のパッケージ図面については、以下のウェブサイトにある「Microchip Packaging Specification ( マイクロチップ社パッケージ仕様 )」を参照してください。http://www.microchip.com/packaging

単位 ミリメートル

寸法限界 小 公称 大

コンタクトピッチ E 0.50 BSC

コンタクトパッド間隔 C1 11.40

コンタクトパッド間隔 C2 11.40

コンタクトパッド幅 (X64) X1 0.30

コンタクトパッド長 (X64) Y1 1.50

パッド間距離 G 0.20

2013 Microchip Technology Inc. DS39762F_JP - p.467

Page 468: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

80 ピン プラスチック薄型クワッド フラットパック (PT) - 12x12x1 mm ボディ、2.00 mm [TQFP]

Notes:1. 1 ピンマークの場所にはばらつきがありますが、必ず斜線部分内にあります。

2. コーナー部の面取りはオプションで、サイズは異なります。

3. D1 と E1 の寸法はモールドのはみ出しまたは突出部を含みません。モールドのはみ出しまたは突出部は側面から 0.25 mm を超

えません。

4. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、理論的に正確な値、公差なしで表示

REF: 参考寸法、通常は公差を含まない、情報としてのみ使われる値Microchip Technology Drawing C04-092B

Note: 新のパッケージ図面については、以下のウェブサイトにある「Microchip Packaging Specification ( マイクロチップ社パッケージ仕様 )」を参照してください。http://www.microchip.com/packaging

単位 ミリメートル

寸法限界 小 公称 大

リード数 N 80

リードピッチ e 0.50 BSC

全高 A - - 1.20

モールド パッケージ厚 A2 0.95 1.00 1.05

スタンドオフ A1 0.05 - 0.15

足長 L 0.45 0.60 0.75

フットプリント L1 1.00 REF

足角 0° 3.5° 7°

全幅 E 14.00 BSC

全長 D 14.00 BSC

モールド パッケージ幅 E1 12.00 BSC

モールド パッケージ長 D1 12.00 BSC

リード厚 c 0.09 - 0.20

リード幅 b 0.17 0.22 0.27

モールドドラフト角トップ 11° 12° 13°

モールドドラフト角ボトム 11° 12° 13°

D

D1

E

E1e

b N

NOTE 112 3 NOTE 2

A

A2L1

A1L

c

α

βφ

DS39762F_JP - p.468 2013 Microchip Technology Inc.

Page 469: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

80 ピン プラスチック薄型クワッド フラットパック (PT) - 12x12x1 mm ボディ、2.00 mm [TQFP]

Notes:1. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、理論的に正確な値、公差なしで表示Microchip Technology Drawing No. C04-2092A

Note: 新のパッケージ図面については、以下のウェブサイトにある「Microchip Packaging Specification ( マイクロチップ社パッケージ仕様 )」を参照してください。http://www.microchip.com/packaging

単位 ミリメートル

寸法限界 小 公称 大

コンタクトピッチ E 0.50 BSC

コンタクトパッド間隔 C1 13.40

コンタクトパッド間隔 C2 13.40

コンタクトパッド幅 (X80) X1 0.30

コンタクトパッド長 (X80) Y1 1.50

パッド間距離 G 0.20

2013 Microchip Technology Inc. DS39762F_JP - p.469

Page 470: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

100 ピン プラスチック薄型クワッド フラットパック (PT) - 12x12x1 mm ボディ、2.00 mm [TQFP]

Notes:1. 1 ピンマークの場所にはばらつきがありますが、必ず斜線部分内にあります。

2. コーナー部の面取りはオプションで、サイズは異なります。

3. D1 と E1 の寸法はモールドのはみ出しまたは突出部を含みません。モールドのはみ出しまたは突出部は側面から 0.25 mm を超

えません。

4. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、理論的に正確な値、公差なしで表示

REF: 参考寸法、通常は公差を含まない、情報としてのみ使われる値Microchip Technology Drawing C04-100B

Note: 新のパッケージ図面については、以下のウェブサイトにある「Microchip Packaging Specification ( マイクロチップ社パッケージ仕様 )」を参照してください。http://www.microchip.com/packaging

単位 ミリメートル

寸法限界 小 公称 大

リード数 N 100

リードピッチ e 0.40 BSC

全高 A - - 1.20

モールド パッケージ厚 A2 0.95 1.00 1.05

スタンドオフ A1 0.05 - 0.15

足長 L 0.45 0.60 0.75

フットプリント L1 1.00 REF

足角 0° 3.5° 7°

全幅 E 14.00 BSC

全長 D 14.00 BSC

モールド パッケージ幅 E1 12.00 BSC

モールド パッケージ長 D1 12.00 BSC

リード厚 c 0.09 - 0.20

リード幅 b 0.13 0.18 0.23

モールドドラフト角トップ 11° 12° 13°

モールドドラフト角ボトム 11° 12° 13°

D

D1

e

b

E1

E

N

NOTE 1 NOTE 21 23

c

LA1 L1

A2

A

φβ

α

DS39762F_JP - p.470 2013 Microchip Technology Inc.

Page 471: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

100 ピン プラスチック薄型クワッド フラットパック (PT) - 12x12x1 mm ボディ、2.00 mm [TQFP]

Notes:1. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、理論的に正確な値、公差なしで表示Microchip Technology Drawing No. C04-2100A

Note: 新のパッケージ図面については、以下のウェブサイトにある「Microchip Packaging Specification ( マイクロチップ社パッケージ仕様 )」を参照してください。http://www.microchip.com/packaging

単位 ミリメートル

寸法限界 小 公称 大

コンタクトピッチ E 0.40 BSC

コンタクトパッド間隔 C1 13.40

コンタクトパッド間隔 C2 13.40

コンタクトパッド幅 (X100) X1 0.20

コンタクトパッド長 (X100) Y1 1.50

パッド間距離 G 0.20

2013 Microchip Technology Inc. DS39762F_JP - p.471

Page 472: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

100 ピン プラスチック薄型クワッド フラットパック (PF) - 14x14x1 mm ボディ、2.00 mm [TQFP]

Notes:1. 1 ピンマークの場所にはばらつきがありますが、必ず斜線部分内にあります。

2. コーナー部の面取りはオプションで、サイズは異なります。

3. D1 と E1 の寸法はモールドのはみ出しまたは突出部を含みません。モールドのはみ出しまたは突出部は側面から 0.25 mm を超

えません。

4. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、理論的に正確な値、公差なしで表示

REF: 参考寸法、通常は公差を含まない、情報としてのみ使われる値

Microchip Technology Drawing C04-110B

Note: 新のパッケージ図面については、以下のウェブサイトにある「Microchip Packaging Specification ( マイクロチップ社パッケージ仕様 )」を参照してください。http://www.microchip.com/packaging

単位 ミリメートル

寸法限界 小 公称 大

リード数 N 100

リードピッチ e 0.50 BSC

全高 A - - 1.20

モールド パッケージ厚 A2 0.95 1.00 1.05

スタンドオフ A1 0.05 - 0.15

足長 L 0.45 0.60 0.75

フットプリント L1 1.00 REF

足角 0° 3.5° 7°

全幅 E 16.00 BSC

全長 D 16.00 BSC

モールド パッケージ幅 E1 14.00 BSC

モールド パッケージ長 D1 14.00 BSC

リード厚 c 0.09 - 0.20

リード幅 b 0.17 0.22 0.27

モールドドラフト角トップ 11° 12° 13°

モールドドラフト角ボトム 11° 12° 13°

D

D1

e

b

E1

E

N

NOTE 1 NOTE 21 23

c

LA1 L1

A2

A

φβ

α

DS39762F_JP - p.472 2013 Microchip Technology Inc.

Page 473: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

100 ピン プラスチック薄型クワッド フラットパック (PF) - 14x14x1 mm ボディ、2.00 mm [TQFP]

Notes:1. 寸法と公差は ASME Y14.5M に準拠しています。

BSC: 基本寸法、理論的に正確な値、公差なしで表示

Microchip Technology Drawing No. C04-2110A

Note: 新のパッケージ図面については、以下のウェブサイトにある「Microchip Packaging Specification ( マイクロチップ社パッケージ仕様 )」を参照してください。http://www.microchip.com/packaging

単位 ミリメートル

寸法限界 小 公称 大

コンタクトピッチ E 0.50 BSC

コンタクトパッド間隔 C1 15.40

コンタクトパッド間隔 C2 15.40

コンタクトパッド幅 (X100) X1 0.30

コンタクトパッド長 (X100) Y1 1.50

パッド間距離 G 0.20

2013 Microchip Technology Inc. DS39762F_JP - p.473

Page 474: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTES:

DS39762F_JP - p.474 2013 Microchip Technology Inc.

Page 475: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

補遺 A: 改訂履歴

リビジョン A (2006 年 3 月 )

PIC18F97J60 ファミリ データシートの初版リリース

リビジョン B (2006 年 10 月 )

初の改訂、電気的仕様 ( 暫定版 ) を追加、Ethernetモジュールに関する内容を改訂および更新、リセットの統合に関する内容を更新、デバイス メモリマップを更新

リビジョン C (2007 年 6 月 )

表 10.2 の入力電圧レベルを訂正、Ethernet モジュールのバッファ読み書きに関する内容を追加、「パッケージのマーキング情報」と「パッケージ詳細」のセクションに新しい 100 ピン PT 12x12x1 mm TQFP パッケージを追加、その他のパッケージ詳細図面を更新、製品識別システムの例を変更

リビジョン D (2008 年 1 月 )

「Ethernet 機能」の説明に 1 行追加、各パッケージにランドパターンの図面を追加

リビジョン E (2009 年 10 月 )

本更新により暫定版のステータスを解除

リビジョン F (2011 年 4 月 )

ブラウンアウト リセット (BOR) の仕様を追加、Ethernet RX 自動極性回路のセクションを追加、EMIフィルタのセクションを追加、セクション 2.0「PIC18FJ マイクロコントローラの使用にあたってのガイドライン」を追加、PUSHL 命令のオペコード エンコードを 1110 1010 kkk kkkkに変更、表 22-1の 2 TOSC 大デバイス周波数を 2.68 MHz から 2.86MHz に訂正、コンパレータ入力オフセット電圧の 大値を 25 mV に訂正

2013 Microchip Technology Inc. DS39762F_JP - p.475

Page 476: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

補遺 B: デバイス間の違い

表 B-1 に、このデータシートに記載されているデバイス間の違いを示します。

表 B-1: PIC18F97J60 ファミリのデバイス間の違い

特長

PIC

18F

66J

60

PIC

18F

66J

65

PIC

18F

67J

60

PIC

18F

86J

60

PIC

18F

86J

65

PIC

18F

87J

60

PIC

18F

96J

60

PIC

18F

96J

65

PIC

18F

97J

60

プログラムメモリ ( バイト ) 64K 96K 128K 64K 96K 128K 64K 96K 128K

プログラムメモリ ( 命令数 ) 32764 49148 65532 32764 49148 65532 32764 49148 65532

割り込み要因 26 27 29

I/O ポート ( ピン ) ポート A、B、C、D、E、F、G(39)

ポート A、B、C、D、E、F、G、H、J

(55)

ポート A、B、C、D、E、F、G、H、J

(70)

拡張 USART (EUSART)モジュール

1 2

MSSP モジュール 1 2

パラレルスレーブ ポート 通信 (PSP)

なし あり

外部メモリバス なし あり

10 ビット A/D コンバータモジュール

11 入力チャンネル 15 入力チャンネル 16 入力チャンネル

パッケージ 64 ピン TQFP 80 ピン TQFP 100 ピン TQFP

DS39762F_JP - p.476 2013 Microchip Technology Inc.

Page 477: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

索引

数字

2 段階起動 ............................................ 359, 3702 ワード命令

例 ............................................................. 85

A

A/D  ............................................................... 339ADCAL ビット ....................................... 347ADCON0 レジスタ................................. 339ADCON1 レジスタ................................. 339ADCON2 レジスタ................................. 339ADRESH レジスタ......................... 339, 342ADRESL レジスタ ................................. 339ECCP2 トリガの使用法 ......................... 346アクイジションの要件 ........................... 344アナログ ポートピン、

コンフィグレーション ................... 345関連レジスタ ......................................... 347コンバータの校正 .................................. 347コンバータの特性 .................................. 462コンバータ割り込み、設定.................... 343自動アクイジション時間、選択と設定........ 345電力管理モードにおける動作 ................ 347特殊イベントトリガ (ECCP) ......... 202, 346変換........................................................ 346変換クロック (TAD)................................ 345変換ステータス (GO/DONE ビット )..... 342変換の要件 ............................................. 463モジュールの設定 .................................. 343

A/D コンバータ (ADC) →「A/D」参照AC ( タイミング ) 特性 ................................. 443

温度 / 電圧仕様 ...................................... 444タイミングの条件 .................................. 444デバイス タイミング仕様に対する

負荷条件......................................... 444パラメータの記号 .................................. 443

ACKSTAT  .................................................... 304ACKSTAT ステータスフラグ ....................... 304ADCAL ビット.............................................. 347ADCON0 レジスタ ....................................... 339

GO/DONE ビット .................................. 342ADCON1 レジスタ ....................................... 339ADCON2 レジスタ ....................................... 339ADDFSR  ...................................................... 418ADDLW  ........................................................ 381ADDULNK .................................................... 418ADDWF ........................................................ 381ADDWFC  ..................................................... 382ADRESH レジスタ ....................................... 339ADRESL レジスタ................................ 339, 342ANDLW  ........................................................ 382ANDWF ........................................................ 383

B

baud レート ジェネレータ ........................... 300BC  ................................................................ 383BCF  .............................................................. 384BF ................................................................. 304BF ステータスフラグ ................................... 304BN  ................................................................ 384BNC .............................................................. 385BNN .............................................................. 385BNOV  ........................................................... 386BNZ  .............................................................. 386BOR →「ブラウンアウト リセット」参照BOV .............................................................. 389BRA  .............................................................. 387BRG →「baud レート ジェネレータ」参照BSF  .............................................................. 387BTFSC  ......................................................... 388BTFSS .......................................................... 388BTG  .............................................................. 389BZ ................................................................. 390

CCALL............................................................. 390CALLW ......................................................... 419CLRF ............................................................ 391CLRWDT ...................................................... 391COMF ........................................................... 392CPFSEQ....................................................... 392CPFSGT ....................................................... 393CPFSLT........................................................ 393CPU の特殊機能 ........................................... 359C コンパイラ

MPLAB C18 ........................................... 426

DDAW ............................................................. 394DCFSNZ ....................................................... 395DC 特性 ........................................................ 439

電源電圧................................................. 431パワーダウン電流と消費電流 ................ 432

DECF............................................................ 394DECFSZ ....................................................... 395

E

ECCP2 ピン割り当て.......................................... 190

ENVREG ピン .............................................. 369Ethernet 動作、マイクロコントローラ クロック....................................................... 51

Ethernet モジュール ..................................... 217CRC ....................................................... 248EMI 放射に関する注意事項 .................... 220Ethernet 制御レジスタ ........................... 227

2013 Microchip Technology Inc. DS39762F_JP - p.477

Page 478: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

Ethernet モジュールとマイクロコントローラのメモリの関係 ......... 222

LED の設定............................................. 218MAC および MII レジスタ ...................... 229MAC の初期化設定 ................................. 245PHSTAT レジスタ .................................. 232PHY 起動タイマ ..................................... 218PHY の初期化設定 ................................. 246PHY レジスタ......................................... 232PHY レジスタからの読み出し ............... 233RX 極性の自動検出、反転 ..................... 220オシレータの要件................................... 218関連レジスタ、受信 ............................... 255関連レジスタ、送信 ............................... 255関連レジスタ、ダイレクト メモリ

アクセス (DMA) コントローラ ....... 266関連レジスタ、フロー制御 .................... 258個別パケット制御バイト........................ 249受信フィルタ.......................................... 259

Magic Packet  ................................... 259パターンマッチ................................ 259ハッシュテーブル ............................ 259ブロードキャスト ............................ 259マルチキャスト................................ 259ユニキャスト ................................... 259

初期化..................................................... 245信号および電源インターフェイス ......... 218全二重 / 半二重モードの設定と

ネゴシエーション........................... 256ダイレクト メモリアクセス (DMA)

コントローラ .................................. 265チェックサム計算 ............................ 266メモリのコピー................................ 265

データの送受信 ...................................... 247受信ステータスベクタ ..................... 253受信パケットの読み出し ................. 253受信パケットのレイアウト.............. 252受信バッファ空間 ............................ 254送信ステータスベクタ ..................... 251送信パケットのレイアウト.............. 250パケットの各フィールドの

定義.......................... 247 ~ 248パケットの受信................................ 252パケットの送信................................ 249

特殊機能レジスタ (SFR) ........................ 227トランス、終端、その他の

外付け部品...................................... 219パケットのフォーマット........................ 247バッファとバッファポインタ................. 223

DMA アクセス.................................. 226受信バッファ ................................... 225送信バッファ ................................... 226バッファアービタ ............................ 226

バッファとレジスタ空間........................ 222

バッファの構成 ...................................... 224フロー制御.............................................. 257無効化 ..................................................... 246メモリマップ .......................................... 234リセット ................................................. 267

受信のみ........................................... 267送信のみ........................................... 267マイクロコントローラの

リセット.............................. 267割り込み ................................................. 239割り込みと Wake-On-LAN ..................... 244

EUSART (Enhanced Universal Synchronous   Asynchronous Receiver Transmitter) →  「EUSART」参照EUSARTx 

baud レート ジェネレータ電力管理モードにおける動作 .......... 319

baud レート ジェネレータ (BRG) .......... 319baud レート、非同期モード ............ 321関連レジスタ.................................... 320高 baud レート選択ビット

(BRGH ビット )................... 319サンプリング.................................... 319自動 baud レート検出 ...................... 323

同期スレーブモード ............................... 337関連レジスタ、受信......................... 338関連レジスタ、送信......................... 337受信 .................................................. 338送信 .................................................. 337

同期マスタモード ................................... 333関連レジスタ、受信......................... 336関連レジスタ、送信......................... 334受信 .................................................. 335送信 .................................................. 333

非同期モード .......................................... 3259ビットアドレス検出モードの設定...... 328関連レジスタ、受信......................... 329関連レジスタ、送信......................... 327同期ブレーク文字による自動復帰........ 330トランスミッタ ................................ 325ブレーク文字のシーケンス .............. 332

受信 ........................................... 332レシーバ........................................... 328

F

FSCM →「フェイルセーフ クロックモニタ」参照

GGOTO ........................................................... 396

I

I/O ポート...................................................... 145ピン機能 ................................................. 145

DS39762F_JP - p.478 2013 Microchip Technology Inc.

Page 479: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

I2C モード (MSSP) ....................................... 279ACK シーケンスのタイミング ............... 307baud レート ジェネレータ..................... 300関連レジスタ ......................................... 313クロック アービトレーション ............... 301クロック ストレッチ ............................. 293

10 ビットスレーブ受信モード(SEN = 1)............................ 293

10 ビットスレーブ送信モード ........ 2937 ビットスレーブ受信モード

(SEN = 1)............................ 2937 ビットスレーブ送信モード .......... 293

クロック同期と CKP ビット.................. 294クロックレートと BRG ......................... 300ジェネラルコール アドレスの

サポート......................................... 297シリアルクロック (SCKx/SCLx)............ 286ストップ条件のタイミング.................... 307スリープ動作 ......................................... 308スレーブモード...................................... 284

アドレスマスク ............................... 285アドレッシング ............................... 284受信 ................................................. 286送信 ................................................. 286

動作........................................................ 284バスコリジョン

スタート条件中 ............................... 309ストップ条件中 ............................... 312反復スタート条件中 ........................ 311

マスタモード ......................................... 298baud レート ジェネレータ .............. 300受信 ................................................. 304スタート条件のタイミング ............. 302送信 ................................................. 304動作 ................................................. 299反復スタート条件のタイミング ...... 303

マルチマスタ モード ............................. 308マルチマスタ通信、バスコリジョン、

バス アービトレーション............... 308リセットの影響...................................... 308レジスタ ................................................ 279読み出し / 書き込みビット

情報 (R/W ビット ) ................. 284, 286INCF ............................................................. 396INCFSZ  ........................................................ 397INFSNZ  ........................................................ 397Initialization Conditions  

for All Registers  .................................. 69 ~ 75INTCON レジスタ ........................................ 131

RBIF ビット ........................................... 148Inter-Integrated Circuit →「I2C モード」参照INTRC →「内部オシレータ ブロック」参照IORLW    ........................................................ 398IORWF  ......................................................... 398

IPR レジスタ ................................................ 140

LLFSR ............................................................ 399

MMOVF ........................................................... 399MOVFF ......................................................... 400MOVLB ......................................................... 400MOVLW ........................................................ 401MOVSF......................................................... 419MOVSS......................................................... 420MOVWF........................................................ 401MPLAB ASM30 アセンブラ、リンカ、ライブラリアン .......................................... 426

MPLAB PM3 デバイス プログラマ............... 428MPLAB REAL ICE インサーキット エミュレータ システム .............................. 427

MPLAB 統合開発環境ソフトウェア ............. 425MPLINK オブジェクト リンカ /MPLIBオブジェクト ライブラリアン ................... 426

MSSP ACK パルス .................................... 284, 286SPI マスタ / スレーブの接続.................. 273SSPxBUF レジスタ................................ 274SSPxSR レジスタ .................................. 274制御レジスタ ( 汎用 ) ............................. 269モジュールの概要 .................................. 269

MULLW  ........................................................ 402MULWF  ........................................................ 402

NNEGF............................................................ 403NOP.............................................................. 403

O

OUI →「ベンダ識別子」参照

P

PIE レジスタ ................................................ 137PIR レジスタ ................................................ 134PLL ブロック .................................................. 51

各種設定とクロック速度.......................... 52POP .............................................................. 404POR →「パワーオン リセット」参照PORTA 

LATA レジスタ ....................................... 146PORTA レジスタ ................................... 146TRISA レジスタ ..................................... 146関連レジスタ.......................................... 147

PORTB LATB レジスタ ....................................... 148PORTB レジスタ ................................... 148

2013 Microchip Technology Inc. DS39762F_JP - p.479

Page 480: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

RB7:RB4 状態変化割り込みフラグ(RBIF ビット ) ................................ 148

TRISB レジスタ ..................................... 148関連レジスタ.......................................... 150

PORTC LATC レジスタ ....................................... 151PORTC レジスタ ................................... 151RC3/SCK1/SCL1 ピン............................ 286TRISC レジスタ ..................................... 151関連レジスタ.......................................... 153

PORTD    LATD レジスタ ....................................... 154PORTD レジスタ ................................... 154TRISD レジスタ ..................................... 154関連レジスタ.......................................... 156

PORTE  LATE レジスタ ....................................... 157PORTE レジスタ.................................... 157PSP モード選択 (PSPMODE ビット ) ... 168RE0/AD8/RD/P2D ピン .......................... 168RE1/AD9/WR/P2C ピン ......................... 168RE2/AD10/CS/P2B ピン ........................ 168TRISE レジスタ ..................................... 157関連レジスタ.......................................... 159

PORTF LATF レジスタ ....................................... 160PORTF レジスタ .................................... 160TRISF レジスタ...................................... 160関連レジスタ.......................................... 161

PORTG LATG レジスタ....................................... 162PORTG レジスタ ................................... 162TRISG レジスタ ..................................... 162関連レジスタ.......................................... 163

PORTH LATH レジスタ ....................................... 164PORTH レジスタ ................................... 164TRISH レジスタ ..................................... 164関連レジスタ.......................................... 165

PORTJ LATJ レジスタ........................................ 166PORTJ レジスタ .................................... 166TRISJ レジスタ ...................................... 166関連レジスタ.......................................... 167

PRI_IDLE モード ............................................ 60PRI_RUN モード ............................................ 56PSP →「パラレルスレーブ ポート」参照PUSH  ........................................................... 404PUSHL.......................................................... 420PUSH および POP 命令.................................. 82

PWM (CCP モジュール )TMR2/PR2 一致...................................... 203TMR4/PR4 一致...................................... 187関連レジスタ .......................................... 196周期 ........................................................ 194周波数 / 分解能の例 ................................ 195デューティ サイクル .............................. 194動作の設定.............................................. 195

PWM (ECCP モジュール ) ............................ 203CCPR1H:CCPR1L レジスタ .................. 203PWM 動作の設定 .................................... 214拡張 PWM の自動シャットダウン .......... 211起動に関する注意点 ............................... 213周期 ........................................................ 203周波数 / 分解能の例 ................................ 204出力関係 ( アクティブ High)................... 205出力関係 ( アクティブ Low).................... 206出力コンフィグレーション .................... 204デューティ サイクル .............................. 204ハーフブリッジ モード........................... 207フルブリッジ モード .............................. 208フルブリッジ出力モードにおける

方向の変更 ...................................... 209プログラマブルなデッドバンド遅延 ...... 211リセットの影響 ...................................... 214

Q

Q クロック ............................................ 195, 204

R

RAM →「データメモリ」参照RCALL  .......................................................... 405RC_IDLE モード ............................................. 61RCON レジスタ

初期化時のビット状態.............................. 68RC_RUN モード ............................................. 58RESET .......................................................... 405RETFIE  ......................................................... 406RETLW  ......................................................... 406RETURN ....................................................... 407RLCF  ............................................................ 407RLNCF .......................................................... 408RRCF ............................................................ 408RRNCF  ......................................................... 409

SSCKx............................................................. 269SDIx .............................................................. 269SDOx ............................................................ 269SEC_IDLE モード ........................................... 60SEC_RUN モード ........................................... 56SETF............................................................. 409SLEEP .......................................................... 410

DS39762F_JP - p.480 2013 Microchip Technology Inc.

Page 481: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

SPI モード (MSSP)SPI I/O の有効化 .................................... 273SPI クロック.......................................... 274関連レジスタ ......................................... 278クロック速度とモジュールの関係 ......... 277シリアルクロック .................................. 269シリアルデータ出力 .............................. 269シリアルデータ入力 .............................. 269スレーブセレクト .................................. 269スレーブセレクトの同期 ....................... 275スレーブモード...................................... 275代表的な接続 ......................................... 273電力管理モードにおける動作 ................ 277動作........................................................ 272バスモード互換性 .................................. 277マスタ / スレーブの接続 ........................ 273マスタモード ......................................... 274リセットの影響...................................... 277

SSPOV ......................................................... 304SSPOV ステータスフラグ ........................... 304SSPSTAT レジスタ

R/W ビット ............................................ 286SSPxSTAT レジスタ

R/W ビット ............................................ 284SSx  .............................................................. 269SUBFSR  ...................................................... 421SUBFWB ...................................................... 410SUBLW  ........................................................ 411SUBULNK  .................................................... 421SUBWF  ........................................................ 411SUBWFB ...................................................... 412SWAPF  ........................................................ 412

TTBLRD.......................................................... 413TBLWT ......................................................... 414Timer0 .......................................................... 171

16 ビットモードにおける読み書き........ 172オーバーフロー割り込み ....................... 173関連レジスタ ......................................... 173クロック源選択 (T0CS ビット )............. 172信号源エッジ選択 (T0SE ビット ) ......... 172動作........................................................ 172プリスケーラ ......................................... 173プリスケーラ →「プリスケーラ、Timer0」参照プリスケーラ選択

(T0PS2:T0PS0 ビット ) ................. 173プリスケーラの割り当て

(PSA ビット ) ................................. 173プリスケーラ、割り当ての切り換え ..... 173

Timer1 .......................................................... 17516 ビット読み書きモード ...................... 177ECCPx 特殊イベントトリガによる

リセット......................................... 178

TMR1H レジスタ ................................... 175TMR1L レジスタ .................................... 175オーバーフロー割り込み........................ 175オシレータ ..................................... 175, 177

レイアウトに関する考慮事項 .......... 177関連レジスタ.......................................... 179クロック源としての使用法 .................... 177動作 ........................................................ 176特殊イベントトリガ (ECCP) ................. 202非同期カウンタモードに関する

考慮事項 ......................................... 178リアルタイム クロックとしての

使用法............................................. 178割り込み................................................. 178

Timer2  .......................................................... 180PR2 レジスタ ................................. 194, 203TMR2/PR2 一致割り込み ....................... 203関連レジスタ.......................................... 181出力 ........................................................ 181動作 ........................................................ 180割り込み................................................. 181

Timer3  .......................................................... 18316 ビット読み書きモード ...................... 185ECCPx 特殊イベントトリガによる

リセット ......................................... 185TMR3H レジスタ ................................... 183TMR3L レジスタ .................................... 183オーバーフロー割り込み................ 183, 185オシレータ ..................................... 183, 185関連レジスタ.......................................... 185動作 ........................................................ 184

Timer4  .......................................................... 187PR4 レジスタ ................................. 187, 194TMR4/PR4 一致割り込み ............... 187, 188TMR4 レジスタ ...................................... 187関連レジスタ.......................................... 188出力、PWM タイムベース ..................... 188動作 ........................................................ 187プリスケーラ →「プリスケーラ、Timer4」参照ポストスケーラ →

「ポストスケーラ、Timer4」参照Top-of-Stack へのアクセス............................. 81TRISE レジスタ

PSPMODE ビット ................................. 168TSTFSZ ........................................................ 415TXSTAx レジスタ

BRGH ビット ......................................... 319

V

VDDCORE/VCAP ピン ..................................... 369

WWCOL................................... 302, 303, 304, 307WCOL ステータスフラグ ..... 302, 303, 304, 307

2013 Microchip Technology Inc. DS39762F_JP - p.481

Page 482: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

WWW アドレス ............................................ 491WWW、オンライン サポート........................... 9

XXORLW......................................................... 415XORWF ........................................................ 416

アセンブラMPASM アセンブラ ............................... 426

インサーキット シリアル プログラミング(ICSP) ................................................ 359, 373

インサーキット デバッガ ............................. 373インターネット アドレス ............................. 491インデックス付きリテラル オフセット アドレッシング

と標準 PIC18 命令.................................. 422インデックス付きリテラル オフセットモード ...................................... 422

ウォッチドッグ タイマ (WDT) ............. 359, 367関連レジスタ.......................................... 368制御レジスタ.......................................... 367プログラミングの注意事項 .................... 367

エラッタ ........................................................... 9

お客様アンケート ......................................... 492お客様向け通知サービス .............................. 491お客様向け変更通知サービス ....................... 491オシレータ起動タイマ (OST) ......................... 54オシレータの移行 ........................................... 54オシレータの設定 ........................................... 49

EC  ............................................................ 49ECPLL ...................................................... 49HS  ............................................................ 49HSPLL ...................................................... 49INTRC  ...................................................... 49内部オシレータ ブロック......................... 51

オシレータの選択 ......................................... 359オシレータ、Timer1 ............................. 175, 185オシレータ、Timer3 ..................................... 183オペコード フィールドの説明 ...................... 376

改訂履歴 ....................................................... 475開発サポート ................................................ 425

外部クロック入力 (EC モード ) ...................... 50外部メモリバス ............................................. 115

16 ビットデータ幅モード....................... 11816 ビットバイト書き込みモード ............ 11916 ビットバイト選択モード ................... 12116 ビットモードのタイミング................ 12216 ビットワード書き込みモード ............ 12021 ビット アドレッシング...................... 1178 ビットデータ幅モード......................... 1238 ビットモードのタイミング.................. 124I/O ポートの機能 .................................... 115アドレスシフト ...................................... 117アドレス幅とデータ幅............................ 117アドレスラインとデータラインの

使用 ( 表 ) ........................................ 117ウェイトステート ................................... 118制御 ........................................................ 116電力管理モードにおける動作 ................. 125プログラムメモリ モード ....................... 118

拡張マイクロコントローラ .............. 118マイクロコントローラ ..................... 118

ポートピンの弱プルアップ .................... 118拡張キャプチャ / コンペア /PWM (ECCP) ..... 197

ECCP1/ECCP3 によるCCP4/CCP5 の使用 ........................ 199

ECCP1/ECCP3 の出力とプログラムメモリ モード ............... 199

ECCP1 のピン設定................................. 200ECCP2 の出力とプログラム

メモリ モード ................................. 199ECCP2 のピン設定................................. 200ECCP3 のピン設定................................. 201PWM モード →

「PWM (ECCP モジュール )」参照拡張 PWM モード ................................... 203キャプチャ / コンペアモード.................. 202キャプチャモード →

「キャプチャ (ECCP モジュール )」参照出力とコンフィグレーション ................. 199タイマリソース ...................................... 199標準 PWM モード ................................... 202

拡張キャプチャ / コンペア /PWM (ECCPx)関連レジスタ .......................................... 215

拡張命令セットADDFSR  ................................................ 418ADDULNK  .............................................. 418CALLW  ................................................... 419MOVSF  .................................................. 419MOVSS  .................................................. 420PUSHL  ................................................... 420SUBFSR ................................................. 421SUBULNK............................................... 421

カスタマサポート ......................................... 491間接アドレッシング........................................ 99

DS39762F_JP - p.482 2013 Microchip Technology Inc.

Page 483: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

既定値のシステムクロック ............................ 54キャプチャ (CCP モジュール )..................... 191

CCPRxH:CCPRxL レジスタ .................. 191CCPx ピンの設定................................... 191Timer1/Timer3 モード選択..................... 191関連レジスタ ......................................... 193ソフトウェア割り込み ........................... 191プリスケーラ ......................................... 191

キャプチャ (ECCP モジュール ) .................. 202キャプチャ / コンペア /PWM (CCP) ............ 189

CCPRxH レジスタ ................................. 190CCPRxL レジスタ.................................. 190CCPx/ECCPx 相互接続設定 .................. 190CCPx/ECCPx モードと

タイマリソース .............................. 190キャプチャモード →「キャプチャ」参照コンペアモード →「コンペア」参照モジュール設定...................................... 190

クロック源オシレータの切り換え ............................. 52電力管理モードの影響 ............................. 54リセット時の既定値の

システムクロック ............................ 54

計算型 GOTO ................................................. 83計算式

受信バッファの空き領域の計算 ............ 254ランダムアクセスの場合の

アドレス計算.................................. 253

コアの特長オシレータの選択肢 ................................ 11外部メモリバス........................................ 11拡張命令セット........................................ 11メモリ空間の拡張 .................................... 11容易なデバイス移行 ................................ 11

高速レジスタスタック ................................... 83コード保護 ................................................... 359コンパレータ................................................ 349

アナログ入力接続に関する注意事項 ..... 353応答時間 ................................................ 351関連レジスタ ......................................... 353参照電圧 ................................................ 351

外部信号 .......................................... 351内部信号 .......................................... 351

出力........................................................ 351スリープ中の動作 .................................. 352設定........................................................ 350

動作 ........................................................ 351リセットの影響 ...................................... 352割り込み................................................. 352

コンパレータ参照電圧.................................. 355関連レジスタ.......................................... 357スリープ中の動作 .................................. 356精度と誤差 ............................................. 356接続に関する注意事項 ........................... 356設定 ........................................................ 355リセットの影響 ...................................... 356

コンパレータの仕様 ..................................... 442コンフィグレーション ビット ...................... 359コンフィグレーション レジスタの保護 ....... 373コンフィグレーション不一致 (CM)リセット....................................................... 65

コンペア (CCP モジュール )......................... 192CCPRx レジスタ .................................... 192CCPx ピンの設定 ................................... 192Timer1/Timer3 モード選択 ..................... 192関連レジスタ.......................................... 193ソフトウェア割り込みモード ................ 192

コンペア (ECCP モジュール ) ...................... 202特殊イベントトリガ....................... 202, 346

参照電圧仕様 ................................................ 442サンプルコード

16 x 16 符号付き乗算のルーチン ........... 12816 x 16 符号なし乗算のルーチン ........... 1288 x 8 符号付き乗算のルーチン ............... 1278 x 8 符号なし乗算のルーチン ............... 127PORTA の初期化 ................................... 146PORTB の初期化 ................................... 148PORTC の初期化 ................................... 151PORTD の初期化 ................................... 154PORTE の初期化 ................................... 157PORTF の初期化.................................... 160PORTG の初期化 ................................... 162PORTH の初期化 ................................... 164PORTJ の初期化 .................................... 166SSP1BUF (SSP1SR) レジスタへの

読み込み ......................................... 272STATUS、WREG、BSR レジスタの

RAM への保存 ................................ 144Timer1 割り込みサービスによる

リアルタイム クロックの実装........ 179オフセット値を使う計算型 GOTO .......... 83間接アドレッシングによる

RAM ( バンク 1) のクリア ................ 98キャプチャ プリスケーラの切り換え..... 191高速レジスタスタック ............................. 83フラッシュ プログラムメモリ

ワードの読み出し........................... 109フラッシュ プログラムメモリの行消去....... 110

2013 Microchip Technology Inc. DS39762F_JP - p.483

Page 484: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

フラッシュ プログラムメモリへの書き込み ......................................... 112

式16 x 16 符号付き乗算のアルゴリズム .... 12816 x 16 符号なし乗算のアルゴリズム .... 128A/D アクイジション時間 ........................ 344baud レート誤差の計算.......................... 320

小 A/D 充電時間 .................................. 344必要な 小 A/D アクイジション時間の

計算 ................................................ 344受信フィルタ

AND ロジックフロー.............................. 262Magic Packet フォーマット ................... 264OR ロジックフロー ................................ 261パターンマッチ フィルタの

フォーマット .................................. 263シリアル ペリフェラル インターフェイス →「SPI モード」参照シリアルクロック、SCKx ............................ 269シリアルデータ出力 (SDOx)......................... 269シリアルデータ入力 (SDIx) .......................... 269

水晶振動子 /セラミック振動子 (HSモード )...... 50スリープ時

OSC1 および OSC2 ピンの状態 .............. 54スレーブセレクト (SSx) ............................... 269

絶対 大定格 ................................................ 429

ソフトウェア シミュレータ (MPLAB SIM)........ 427

タイミング チャート2 段階起動

(INTRC から HSPLL への遷移 )...... 370A/D 変換 ................................................. 462baud レート ジェネレータと

クロック アービトレーション ........ 301baud レートの自動計算.......................... 324BRG のオーバーフロー シーケンス ....... 324CLKO と I/O ........................................... 447EUSARTx同期受信 (マスタ /スレーブ )...... 461EUSARTx同期送信 (マスタ /スレーブ )...... 461I2C ACK シーケンス ............................... 307I2C スレーブモード

(10 ビット受信、SEN = 0) ............. 290I2C スレーブモード

(10 ビット受信、SEN = 1) ............. 296

I2C スレーブモード(10 ビット送信 ).............................. 292

I2C スレーブモード(7 ビット受信、SEN = 0) ............... 287

I2C スレーブモード(7 ビット受信、SEN = 1) ............... 295

I2C スレーブモード (7 ビット送信 ) ....... 289I2C バス スタート / ストップビット ....... 457I2C バスデータ........................................ 457I2C マスタモード (7 ビット受信 )........... 306I2C マスタモード

(7 または 10 ビット送信 ) ............... 305PWM 出力............................................... 194PWM の自動シャットダウン

(P1RSEN = 0、自動再起動を無効にしている場合 ) ..................... 213

PWM の自動シャットダウン(P1RSEN = 1、自動再起動を有効にしている場合 ) ..................... 213

PWM の方向変更 .................................... 210RC_RUN モードから PRI_RUN

モードへの遷移................................. 58RC_RUN モードへの遷移......................... 58SEC_RUN モードから PRI_RUN

モード (HSPLL) への遷移 ................. 57SEC_RUN モードへの移行時の遷移 ........ 57SPI スレーブモードの例 (CKE = 0)........ 455SPI スレーブモードの例 (CKE = 1)........ 456SPI マスタモードの例 (CKE = 0) ........... 453SPI マスタモードの例 (CKE = 1) ........... 454SPIモード (スレーブモード、CKE = 0)........ 276SPIモード (スレーブモード、CKE = 1)........ 276SPI モード ( マスタモード ) ................... 274TBLRD の外部メモリバス ( 拡張マイクロ

コントローラ モード ) ............ 122, 124Timer0 と Timer1 の外部クロック.......... 451アイドルからランモードへの復帰時の遷移.... 60アイドルへの移行時の遷移 ...................... 60外部クロック (PLL を除く全モード ) ..... 445キャプチャ / コンペア /PWM

(ECCPx モジュールを含む ) ........... 452クロック / 命令サイクル ........................... 84クロックの同期 ...................................... 294

初のスタートビット............................ 302受信または送信モードの

I2C ストップ条件 ............................ 307スタート条件中の I2C バスコリジョン

(SCLx = 0)....................................... 310スタート条件中の I2C バスコリジョン

(SDAx のみ ) ................................... 309スタート条件中の SDAx アービトレーション

による BRG リセット ..................... 310ストップ条件中の I2C バスコリジョン

( ケース 1)...................................... 312

DS39762F_JP - p.484 2013 Microchip Technology Inc.

Page 485: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ストップ条件中の I2C バスコリジョン ( ケース 2) ..................................... 312

スリープからの復帰時の遷移 (HSPLL)....... 59スリープ時の自動復帰ビット (WUE)........ 331スリープ時の外部メモリバス (拡張マイクロ

コントローラ モード )................ 122, 124スリープへの移行時の遷移...................... 59スレーブの同期...................................... 275送信と ACK の I2C バスコリジョン ....... 308通常動作時の自動復帰ビット (WUE) .... 331デューティ サイクルが 100% に近い

状態での PWM の方向変更 ............ 210同期受信 ( マスタモード、SREN) ......... 335同期送信 ................................................ 333同期送信 (TXEN を利用 ) ....................... 334ハーフブリッジ PWM 出力 .................... 207パラレルスレーブ ポート (PSP)

書き込み......................................... 169パラレルスレーブ ポート (PSP)

読み出し......................................... 170反復スタート条件 .................................. 303反復スタート条件中の I2C バスコリジョン

( ケース 1) ...................................... 311反復スタート条件中の I2C バスコリジョン

( ケース 2) ..................................... 311非同期受信、RXDTP = 0

(RXx を反転しない )....................... 329非同期送信 ( 連続 )、TXCKP = 0

(TXx を反転しない ) ...................... 326非同期送信、TXCKP = 0

(TXx を反転しない ) ....................... 326フェイルセーフ クロックモニタ ........... 372フルブリッジ PWM 出力 ....................... 208ブレーク文字シーケンスの送信 ............ 332プログラムメモリ書き込み.................... 449プログラムメモリ読み出し.................... 448マスタ SSP I2C バス スタート /

ストップビット .............................. 459マスタ SSP I2C バスデータ ................... 459リセット、ウォッチドッグ タイマ (WDT)、

オシレータ起動タイマ (OST)、パワーアップ タイマ (PWRT)........ 450

I2C スレーブモード (10 ビット受信、SEN = 0、ADMSK = 01001) ........................... 291

I2C スレーブモード (7 ビット受信、SEN = 0、ADMSK = 01011) ........................... 288

I2C スレーブモードのジェネラルコール アドレス シーケンス (7 または 10 ビットアドレス モード )........................... 297

パワーアップ後のタイムアウト シーケンス(MCLRをVDDに接続しない )、例1...... 66

パワーアップ後のタイムアウト シーケンス(MCLRをVDDに接続しない )、例2...... 67

パワーアップ後のタイムアウト シーケンス(MCLR を Vdd に接続、VDD の立ち上がり時間 < TPWRT) ..... 66

立ち上がり時間が遅い場合(MCLR を Vdd に接続、VDD 立ち上がり時間 > TPWRT)......... 67

タイミング チャートと仕様AC 特性

内部 RC 精度 ................................... 446CLKO と I/O の要件 ....................... 447, 448EUSARTx 同期受信の要件..................... 461EUSARTx 同期送信の要件..................... 461I2C バス スタート / ストップビットの要件

( スレーブモード ) .......................... 457I2C バスデータ要件 ( スレーブモード ).... 458PLL クロック ......................................... 446SPI スレーブモードの要件の例

(CKE = 1) ....................................... 456SPI モードの要件の例

( スレーブモード、CKE=0)............ 455SPI モードの要件の例

( マスタモード、CKE=0) ............... 453SPI モードの要件の例( マスタモード、CKE=1) ....................... 454Timer0とTimer1の外部クロックの要件 ...... 451外部クロックの要件............................... 445キャプチャ / コンペア /PWM の要件

(ECCPx モジュールを含む )........... 452パラレルスレーブ ポートの要件............ 452プログラムメモリ書き込み要件............. 449マスタ SSP I2C バス スタート /

ストップビットの要件 ................... 459マスタ SSP I2C バスデータの要件 ........ 460リセット、ウォッチドッグ タイマ、オシレータ

起動タイマ、パワーアップ タイマ、ブラウンアウト リセットの要件.................... 450

直接アドレッシング ....................................... 99

データ アドレッシング モード ....................... 98インデックス付きリテラル オフセット .... 101

BSR ................................................. 103アクセスバンクのマッピング .......... 103影響を受ける命令 ............................ 101

拡張命令セットが有効な場合のアドレッシング モードの比較........ 102

含意およびリテラル................................. 98間接 .......................................................... 98直接 .......................................................... 98

2013 Microchip Technology Inc. DS39762F_JP - p.485

Page 486: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

データメモリ .................................................. 86Ethernet SFR............................................ 90アクセスバンク ........................................ 88拡張命令セット ...................................... 100特殊機能レジスタ..................................... 89バンクセレクト レジスタ (BSR) .............. 86汎用レジスタファイル ............................. 88メモリマップ

Ethernet 関連の特殊機能レジスタ ..... 90PIC18F97J60 ファミリ...................... 87特殊機能レジスタ .............................. 89

テーブルへの読み書き .................................... 83テーブルポインタに対する操作 ( 表 )........... 108デバイス間の違い ......................................... 476デバイス概要 .................................................. 11

機能 (100 ピンデバイス ) ......................... 14機能 (64 ピンデバイス ) ........................... 13機能 (80 ピンデバイス ) ........................... 13ファミリ各製品の詳細 ............................. 12

電圧レギュレータ ( 内蔵 )............................. 369電気的特性 .................................................... 429

Ethernet トランシーバ外部磁気回路の要件 ....................... 463

電力管理モード............................................... 55アイドル ................................................... 59

PRI_IDLE........................................... 60RC_IDLE............................................ 61SEC_IDLE ......................................... 60

アイドル / スリープの終了 ....................... 61WDT タイムアウトによる ................. 61オシレータ起動タイマ遅延を伴わない.... 61リセットによる.................................. 61割り込みによる.................................. 61

移行 .......................................................... 55一覧表....................................................... 55クロック切り換えとステータス

インジケータ .................................... 56クロック源 ............................................... 55スリープ ................................................... 59選択 .......................................................... 55と SPI の動作 ......................................... 277複数の SLEEP 命令 .................................. 56ランモード ............................................... 56

PRI_RUN ........................................... 56RC_RUN............................................ 58SEC_RUN.......................................... 56

特殊イベントトリガ →「コンペア (ECCP モジュール )」参照特殊機能レジスタ

Ethernet SFR............................................ 90

内部 RC オシレータWDT と併用............................................ 367

内部オシレータ ブロック ............................... 51内部電圧レギュレータ仕様 ........................... 442

ハードウェア乗算器...................................... 127性能比較 ................................................. 127動作 ........................................................ 127はじめに ................................................. 127

パッケージ .................................................... 465詳細 ........................................................ 466マーキング.............................................. 465

パラレルスレーブ ポート (PSP) ................... 168PORTD ................................................... 168関連レジスタ .......................................... 170選択 (PSPMODE ビット )....................... 168

パルス幅変調 →「PWM (CCP モジュール ) とPWM (ECCP モジュール )」参照

パワーアップ タイマ (PWRT)................... 54, 66パワーアップ遅延 ........................................... 54パワーオン リセット (POR)............................ 65

タイムアウト シーケンス ......................... 66パワーアップ タイマ (PWRT) .................. 66

標準 PIC 命令への影響 ................................. 422ピン配置と入出力の説明

PIC18F66J60/66J65/67J60 ...................... 18PIC18F86J60/86J65/87J60 ...................... 25PIC18F96J60/96J65/97J60 ...................... 33

ピン割り当てAVDD............................................. 24, 32, 42AVSS ............................................. 24, 32, 42ENVREG ...................................... 24, 32, 42MCLR ........................................... 18, 25, 33OSC1/CLKI................................... 18, 25, 33OSC2/CLKO ................................. 18, 25, 33RA0/LEDA/AN0 ............................ 18, 25, 33RA1/LEDB/AN1 ............................ 18, 25, 33RA2/AN2/VREF- ............................ 18, 25, 33RA3/AN3/VREF+ ........................... 18, 25, 33RA4/T0CKI ................................... 18, 25, 33RA5/AN4....................................... 18, 25, 33RB0/INT0/FLT0 ............................ 19, 26, 34RB1/INT1...................................... 19, 26, 34RB2/INT2...................................... 19, 26, 34RB3/INT3............................................ 19, 26RB3/INT3/ECCP2/P2A ............................. 34RB4/KBI0...................................... 19, 26, 34RB5/KBI1...................................... 19, 26, 34RB6/KBI2/PGC ............................. 19, 26, 34

DS39762F_JP - p.486 2013 Microchip Technology Inc.

Page 487: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

RB7/KBI3/PGD ............................ 19, 26, 34RBIAS .......................................... 24, 32, 42RC0/T1OSO/T13CKI ................... 20, 27, 35RC1/T1OSI/ECCP2/P2A ............. 20, 27, 35RC2/ECCP1/P1A......................... 20, 27, 35RC3/SCK1/SCL1 ......................... 20, 27, 35RC4/SDI1/SDA1 .......................... 20, 27, 35RC5/SDO1................................... 20, 27, 35RC6/TX1/CK1 .............................. 20, 27, 35RC7/RX1/DT1.............................. 20, 27, 35RD0.......................................................... 28RD0/AD0/PSP0 ....................................... 36RD0/P1B.................................................. 21RD1.......................................................... 28RD1/AD1/PSP1 ....................................... 36RD1/ECCP3/P3A..................................... 21RD2.......................................................... 28RD2/AD2/PSP2 ....................................... 36RD2/CCP4/P3D ....................................... 21RD3/AD3/PSP3 ....................................... 36RD4/AD4/PSP4/SDO2............................. 36RD5/AD5/PSP5/SDI2/SDA2 .................... 36RD6/AD6/PSP6/SCK2/SCL2 ................... 36RD7/AD7/PSP7/SS2................................ 36RE0/AD8/RD/P2D.................................... 37RE0/P2D............................................ 22, 28RE1/AD9/WR/P2C................................... 37RE1/P2C............................................ 22, 28RE2/AD10/CS/P2B .................................. 37RE2/P2B ............................................ 22, 28RE3/AD11/P3C........................................ 37RE3/P3C............................................ 22, 28RE4/AD12/P3B ........................................ 37RE4/P3B ............................................ 22, 28RE5/AD13/P1C........................................ 37RE5/P1C............................................ 22, 28RE6/AD14/P1B ........................................ 37RE6/P1B .................................................. 28RE7/AD15/ECCP2/P2A ........................... 37RE7/ECCP2/P2A ..................................... 28RF0/AN5 .................................................. 38RF1/AN6/C2OUT......................... 23, 29, 38RF2/AN7/C1OUT......................... 23, 29, 38RF3/AN8 ...................................... 23, 29, 38RF4/AN9 ...................................... 23, 29, 38RF5/AN10/CVREF ........................ 23, 29, 38RF6/AN11 .................................... 23, 29, 38RF7/SS1 ...................................... 23, 29, 38RG0/ECCP3/P3A............................... 30, 39RG1/TX2/CK2.................................... 30, 39RG2/RX2/DT2.................................... 30, 39RG3/CCP4/P3D................................. 30, 39RG4/CCP5/P1D........................... 24, 30, 39RG5 ......................................................... 39

RG6.......................................................... 39RG7.......................................................... 39RH0.......................................................... 31RH0/A16................................................... 40RH1.......................................................... 31RH1/A17................................................... 40RH2.......................................................... 31RH2/A18................................................... 40RH3.......................................................... 31RH3/A19................................................... 40RH4/AN12/P3C.................................. 31, 40RH5/AN13/P3B .................................. 31, 40RH6/AN14/P1C.................................. 31, 40RH7/AN15/P1B .................................. 31, 40RJ0/ALE................................................... 41RJ1/OE..................................................... 41RJ2/WRL.................................................. 41RJ3/WRH ................................................. 41RJ4........................................................... 32RJ4/BA0................................................... 41RJ5........................................................... 32RJ5/CE..................................................... 41RJ6/LB ..................................................... 41RJ7/UB..................................................... 41TPIN-............................................ 24, 32, 42TPIN+........................................... 24, 32, 42TPOUT-........................................ 24, 32, 42TPOUT+....................................... 24, 32, 42VDD............................................... 24, 32, 42VDDCORE/VCAP............................. 24, 32, 42VDDPLL ......................................... 24, 32, 42VDDRX........................................... 24, 32, 42VDDTX........................................... 24, 32, 42VSS............................................... 24, 32, 42VSSPLL.......................................... 24, 32, 42VSSRX........................................... 24, 32, 42VSSTX ........................................... 24, 32, 42

ファームウェア命令 ..................................... 375フェイルセーフ クロックモニタ .......... 359, 371

POR またはスリープからの復帰 ........... 372ウォッチドッグ タイマ .......................... 371電力管理モードにおける割り込み ......... 372動作の終了 ............................................. 371

ブラウンアウト リセット (BOR).................... 65検出 .......................................................... 65と内蔵電圧レギュレータ........................ 369

フラッシュ コンフィグレーション ワード.... 78, 359フラッシュ プログラムメモリ ...................... 105

書き込み................................................. 111書き込みのベリファイ..................... 113誤書き込み防止 ............................... 113予期せぬ中断 ................................... 113

2013 Microchip Technology Inc. DS39762F_JP - p.487

Page 488: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

書き込みシーケンス ............................... 111関連レジスタ.......................................... 113コード保護中の動作 ............................... 113消去 ........................................................ 110消去シーケンス ...................................... 110制御レジスタ.......................................... 106

EECON1 および EECON2............... 106TABLAT ( テーブルラッチ ) ............. 108TBLPTR ( テーブルポインタ ) ......... 108

テーブルポインタ動作ごとの境界................................ 108

テーブルポインタの境界........................ 108テーブル読み書き................................... 105読み出し ................................................. 109

プリスケーラTimer2 .................................................... 204

プリスケーラ、Timer0 ................................. 173プリスケーラ、Timer2 ................................. 195プログラミング、デバイス命令 ................... 375プログラム カウンタ ...................................... 81

PCLATH および PCLATU レジスタ ......... 81PCL、PCH、PCU レジスタ..................... 81

プログラムの検証とコード保護 ................... 373プログラムメモリ

拡張命令セット ...................................... 100命令 .......................................................... 85

2 ワード ............................................. 85メモリマップ............................................ 77

ハードベクタとコンフィグレーション ワード ................................... 78

メモリマップ、モード ............................. 80モード

メモリアクセス ( テーブル ) .............. 80リセットベクタ ........................................ 78ルックアップ テーブル ............................ 83割り込みベクタ ........................................ 78

プログラムメモリ モード ............................... 79アドレスシフト

( 拡張マイクロコントローラ ) .......... 80拡張マイクロコントローラ ...................... 79マイクロコントローラ ............................. 79

ブロック図16 ビットバイト書き込みモード............ 11916 ビットバイト選択モード ................... 12116 ビットモードの Timer0 ..................... 17216 ビットワード書き込みモード............ 1208 ビット多重化モード ............................ 1238 ビットモードの Timer0 ....................... 172A/D  ......................................................... 342baud レート ジェネレータ ..................... 300Ethernet の動作に必要な外付け部品...... 219Ethernet モジュール ............................... 217Ethernet モジュールの

割り込みロジック........................... 239

EUSARTx 受信 ....................................... 329EUSARTx 送信 ....................................... 326MSSP (I2C マスタモード ) ..................... 298MSSP (I2C モード ) ................................ 279MSSP (SPI モード )................................ 269PIC18F66J60/66J65/67J60 ...................... 15PIC18F86J60/86J65/87J60 ...................... 16PIC18F96J60/96J65/97J60 ...................... 17PORTD と PORTE

( パラレルスレーブ ポート ) ........... 168PWM 動作 ( 概略図 )............................... 194RX 極性反転回路

(TX 接続の記載は省略 ) .................. 221Timer1  .................................................... 176Timer1 (16 ビット読み書きモード ) ....... 176Timer2  .................................................... 181Timer3  .................................................... 184Timer3 (16 ビット読み書きモード ) ....... 184Timer4  .................................................... 188アナログ入力モデル ............................... 343ウォッチドッグ タイマ........................... 367外部 POR 回路 (VDD 電源の

立ち上がりが遅い場合 ).................... 65外部クロック入力動作 (EC) ..................... 50外部クロック入力動作 (HS) ..................... 50拡張 PWM............................................... 203キャプチャモード動作............................ 191コンパレータ参照電圧............................ 356コンパレータ参照電圧の

出力バッファの例 ........................... 357コンパレータ出力 ................................... 352コンパレータの I/O 動作モード .............. 350コンパレータのアナログ入力モデル ...... 353コンペアモードの動作............................ 192シングル コンパレータ........................... 351水晶発振回路の動作 (HS、HSPLL) .......... 50テーブル書き込み動作............................ 106テーブル読み出し動作............................ 105デバイスクロック ..................................... 49内蔵電圧レギュレータの接続 ................. 369内蔵リセット回路 ..................................... 63ハーフブリッジ出力モード

アプリケーション ........................... 207汎用 I/O ポートの動作 ............................ 145フェイルセーフ クロックモニタ ............ 371フラッシュ プログラムメモリからの

読み出し ......................................... 109フラッシュ プログラムメモリに対する

テーブル書き込み ........................... 111フルブリッジ アプリケーションの例 ..... 209割り込みロジック ................................... 130

DS39762F_JP - p.488 2013 Microchip Technology Inc.

Page 489: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

ベンダ識別子 (OUI) ...................................... 248

マイクロチップ社ウェブサイト ................... 491マスタクリア (MCLR) .................................... 65マスタ同期シリアルポート (MSSP) →「MSSP」参照

命令サイクル.................................................. 84クロック方式 ........................................... 84フロー / パイプライン処理 ...................... 84

命令セット ................................................... 375ADDLW .................................................. 381ADDWF  ................................................. 381ADDWF ( インデックス付き

リテラル オフセットモード )......... 423ADDWFC   .............................................. 382ANDLW .................................................. 382ANDWF  ................................................. 383BC .......................................................... 383BCF  ....................................................... 384BN .......................................................... 384BNC  ....................................................... 385BNN  ....................................................... 385BNOV  .................................................... 386BNZ  ....................................................... 386BOV  ....................................................... 389BRA  ....................................................... 387BSF ........................................................ 387BSF ( インデックス付き

リテラル オフセットモード )......... 423BTFSC ................................................... 388BTFSS  ................................................... 388BTG  ....................................................... 389BZ  .......................................................... 390CALL ...................................................... 390CLRF  ..................................................... 391CLRWDT  ............................................... 391COMF  .................................................... 392CPFSEQ ................................................ 392CPFSGT  ................................................ 393CPFSLT ................................................. 393DAW  ...................................................... 394DCFSNZ  ................................................ 395DECF ..................................................... 394DECFSZ  ................................................ 395GOTO  .................................................... 396INCF  ...................................................... 396INCFSZ .................................................. 397INFSNZ .................................................. 397IORLW ................................................... 398

IORWF ................................................... 398LFSR...................................................... 399MOVF..................................................... 399MOVFF................................................... 400MOVLB................................................... 400MOVLW.................................................. 401MOVWF ................................................. 401MULLW .................................................. 402MULWF.................................................. 402NEGF ..................................................... 403NOP ....................................................... 403POP........................................................ 404PUSH ..................................................... 404RCALL.................................................... 405RESET ................................................... 405RETFIE .................................................. 406RETLW................................................... 406RETURN ................................................ 407RLCF...................................................... 407RLNCF ................................................... 408RRCF ..................................................... 408RRNCF................................................... 409SETF...................................................... 409SETF ( インデックス付き

リテラル オフセットモード ) ......... 423SLEEP  ................................................... 410SUBFWB................................................ 410SUBLW .................................................. 411SUBWF .................................................. 411SUBWFB................................................ 412SWAPF .................................................. 412TBLRD ................................................... 413TBLWT................................................... 414TSTFSZ.................................................. 415XORLW.................................................. 415XORWF.................................................. 416一般的な形式.......................................... 377拡張命令................................................. 417

MPLAB IDE ツールでの使用 ........... 424構文 ................................................. 417有効にする際の注意事項 ................. 422

標準命令................................................. 375メモリ プログラミングの要件 ...................... 441メモリ構成...................................................... 77

データメモリ............................................ 86プログラムメモリ .................................... 77

リセット ................................................. 63, 359RESET 命令 ............................................. 63オシレータ起動タイマ (OST) ................ 359コード実行中のウォッチドッグ タイマ

(WDT) リセット ............................... 63コンフィグレーション不一致 (CM) ......... 63

2013 Microchip Technology Inc. DS39762F_JP - p.489

Page 490: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

スタック アンダーフロー リセット ......... 63スタックフル リセット ............................ 63スタックフル / アンダーフロー................ 83通常動作中の MCLR リセット ................. 63電力管理モード時の MCLR リセット....... 63パワーアップ タイマ (PWRT) ................ 359パワーオン リセット (POR)............. 63, 359ブラウンアウト リセット (BOR)...... 63, 359レジスタの状態 ........................................ 68

リターン スタックポインタ (STKPTR) .......... 82リターンアドレス スタック............................ 81

レジスタADCON0 (A/D 制御 0) ............................ 339ADCON1 (A/D 制御 1) ............................ 340ADCON2 (A/D 制御 2) ............................ 341BAUDCONx (baud レート制御 x)........... 318CCPxCON ( 拡張 CCPx 制御、ECCP1/ECCP2/ECCP3) ........................ 198CCPxCON ( キャプチャ / コンペア /PWM 制御、CCP4 と CCP5) ................. 189CMCON ( コンパレータ制御 )................ 349CONFIG1H

( コンフィグレーション 1 High) ..... 361CONFIG1L

( コンフィグレーション 1 Low)...... 361CONFIG2H

( コンフィグレーション 2 High) ..... 363CONFIG2L

( コンフィグレーション 2 Low)...... 362CONFIG3H

( コンフィグレーション 3 High) ..... 365CONFIG3L

(コンフィグレーション 3 Low)... 79, 364CVRCON ( コンパレータ

参照電圧制御 ) ................................ 355DEVID1 ( デバイス ID 1) ........................ 366DEVID2 ( デバイス ID 2) ........................ 366ECCP1AS (ECCP1 自動シャットダウン

コンフィグレーション ) ................. 212ECCP1DEL (ECCP1デッドバンド遅延 )...... 211ECON1 (Ethernet 制御 1) ....................... 227ECON2 (Ethernet 制御 2) ....................... 228EECON1 (EEPROM 制御 1)................... 107EFLOCON (Ethernet フロー制御 ) ......... 258EIE (Ethernet 割り込みイネーブル ) ...... 240EIR (Ethernet 割り込み要求、フラグ )... 241ERXFCON (Ethernet受信フィルタ制御 )... 260ESTAT (Ethernet ステータス ) ............... 228INTCON ( 割り込み制御 )....................... 131INTCON2 ( 割り込み制御 2)................... 132INTCON3 ( 割り込み制御 3)................... 133IPR1 ( 周辺割り込み優先度 1)................ 140

IPR2 ( 周辺割り込み優先度 2) ................ 141IPR3 ( 周辺割り込み優先度 3) ................ 142MABBIPG 

(MAC 連続パケット間ギャップ ) .... 246MACON1 (MAC 制御 1).......................... 229MACON3 (MAC 制御 3).......................... 230MACON4 (MAC 制御 4).......................... 231MEMCON ( 外部メモリバス制御 ).......... 116MICMD (MII コマンド )........................... 231MISTAT (MII ステータス ) ...................... 232OSCCON ( オシレータ制御 ) ................... 53OSCTUNE (PLL ブロック制御 )............... 51PHCON1 (PHY 制御 1)........................... 235PHCON2 (PHY 制御 2)........................... 236PHIE (PHY 割り込みイネーブル ) .......... 242PHIR (PHY 割り込み要求、フラグ ) ...... 242PHLCON (PHY モジュール LED 制御 ) .. 238PHSTAT1 (PHY ステータス 1)............... 235PHSTAT2 (PHY ステータス 2)............... 237PIE1 ( 周辺割り込みイネーブル 1) ......... 137PIE2 ( 周辺割り込みイネーブル 2) ......... 138PIE3 ( 周辺割り込みイネーブル 3) ......... 139PIR1 ( 周辺割り込み要求 ( フラグ ) 1).... 134PIR2 ( 周辺割り込み要求 ( フラグ ) 2).... 135PIR3 ( 周辺割り込み要求 ( フラグ ) 3).... 136PSPCON 

( パラレルスレーブ ポート制御 ) .... 169RCON ( リセット制御 ) .................... 64, 143RCSTAx ( 受信ステータス / 制御 x) ....... 317SSPxCON1 (MSSPx 制御 1、

I2C モード ) ..................................... 281SSPxCON1 (MSSPx 制御 1、

SPI モード ) .................................... 271SSPxCON2 (MSSPx 制御 2、

I2C スレーブモード ) ...................... 283SSPxCON2 (MSSPx 制御 2、

I2C マスタモード ) .......................... 282SSPxSTAT (MSSPx ステータス、

I2C モード ) ..................................... 280SSPxSTAT (MSSPx ステータス、

SPI モード ) .................................... 270STATUS  ................................................... 97STKPTR ( スタックポインタ ) ................. 82T0CON (Timer0 制御 )............................ 171T1CON (Timer1 制御 )............................ 175T2CON (Timer2 制御 )............................ 180T3CON (Timer3 制御 )............................ 183T4CON (Timer4 制御 )............................ 187TXSTAx ( 送信ステータス / 制御 x) ........ 316WDTCON (ウォッチドッグ タイマ制御 )........ 368

レジスタファイルのまとめ ................... 91 ~ 96

DS39762F_JP - p.490 2013 Microchip Technology Inc.

Page 491: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

割り込み ....................................................... 129コンテキスト保存 .................................. 144

割り込み要因................................................ 359INTx ピン ............................................... 144PORTB、状態変化割り込み .................. 144TMR0 ..................................................... 144TMR0 オーバーフロー ........................... 173TMR1 オーバーフロー ........................... 175TMR2/PR2 一致 (PWM)......................... 203TMR3 オーバーフロー ................... 183, 185TMR4/PR4 一致 ..................................... 188TMR4/PR4 一致 (PWM)......................... 187状態変化割り込み (RB7:RB4)................ 148

割り込み、フラグビット状態変化割り込み (RB7:RB4) フラグ

(RBIF ビット ) ................................ 148

2013 Microchip Technology Inc. DS39762F_JP - p.491

Page 492: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

NOTE:

DS39762F_JP - p.492 2013 Microchip Technology Inc.

Page 493: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

マイクロチップ社ウェブサイト

マイクロチップ社は、弊社が運営する WWW サイト(www.microchip.com) を通してオンライン サポートを提供しています。このウェブサイトを活用する事で、ファイルや情報を簡単に入手できます。お好みのインターネット ブラウザを使って、下記の内容をご覧になれます。

• 製品サポート ― データシートとエラッタ、アプリケーション ノートとサンプル プログラム、設計関連リソース、ユーザガイドとハードウェア サポート文書、 新のソフトウェア リリースと過去のソフトウェア

• 技術サポート ― よく寄せられる質問 (FAQ)、技術サポート リクエスト、オンライン ディスカッション グループ、マイクロチップ社コンサルタント プログラム メンバーの一覧

• マイクロチップ社の事業 ― 製品セレクタと注文のガイド、マイクロチップ社の 新プレスリリース、セミナーとイベントの一覧、マイクロチップ社の各営業所、販売代理店、工場の一覧

お客様向け変更通知サービス

マイクロチップ社のお客様向け変更通知サービスは、お客様がマイクロチップ社製品の 新情報を入手できるようにします。ご興味のある製品ファミリまたは開発ツールに関する変更、更新、リビジョン、エラッタ情報をいち早くメールにてお知らせします。

当サービスをご希望のお客様は、マイクロチップ社ウェブサイト(www.microchip.com)でご登録ください。[ サポート ] → [ お客様向け変更通知 ] をクリックし、画面の指示に従ってください。

カスタマサポート

マイクロチップ社製品のお客様は、以下の複数のルートでサポートをご利用頂けます。

• 代理店または販売担当者

• 寄りの営業所

• フィールド アプリケーション エンジニア (FAE)

• 技術サポート

• 開発システム情報ライン

サポートは販売代理店、販売担当者、フィールド アプリケーション エンジニア (FAE)までお問い合わせください。各地の営業所もご利用頂けます。本書の末尾には各国の営業所の一覧を記載しています。

技術サポートは下記のウェブサイトからもご利用頂けます : http://microchip.com/support

2013 Microchip Technology Inc. DS39762F_JP - p.493

Page 494: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

PIC18F97J60 ファミリ

お客様アンケート

マイクロチップ社は、弊社製品を存分にご活用頂くために、文書の作成に 善の努力を尽くしています。本書の構成、明確さ、内容等に関するご意見を FAX にてお寄せください ( 宛先 : マイクロチップ・テクノロジー・ジャパン株式会社 : FAX 番号 : 045-471-6122)。

下記のアンケート フォームにお客様情報と本書に関するご意見をご記入ください。

宛先 : マイクロチップ・テクノロジー・ジャパン株式会社

件名 : お客様アンケート送信ページ数 ________

送信者 :お名前

貴社名

ご住所

郵便番号

電話番号 : (_______) _________ - _________

アプリケーション ( 任意 ):

返信をご希望ですか ? はい いいえ

デバイス : 文書番号 :

質問 :

FAX 番号 : (______) _________ - _________

DS39762F_JPPIC18F97J60 ファミリ

1. 本書で も良かった点は何ですか。

2. 本書はお客様のハードウェア / ソフトウェア開発に役立ちますか。

3. 本書の構成は分かりやすいですか。分かりにくい場合はその理由もご記入ください。

4. 本書の構成と内容を改善するには何を追加すべきですか。

5. 本書から省略してもかまわない内容は何ですか。

6. 不正確であったり誤解を招きやすい箇所がございましたらご指摘ください。

7. その他、本書の改善に向けてご意見がございましたらご記入ください。

DS39762F_JP - p.494 2013 Microchip Technology Inc.

Page 495: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

2013 Microchip Technology Inc. DS39762F_JP - p.495

PIC18F97J60 ファミリ

製品識別システム

ご注文または製品の価格や納期等に関するお問い合わせは、弊社または販売代理店までお問い合わせください。

PART NO. X /XX XXX

PatternPackageTemperatureRange

Device

Device PIC18F66J60/66J65/67J60,PIC18F86J60/86J65/87J60, PIC18F96J60/96J65/97J60, PIC18F66J60/66J65/67J60T(1),PIC18F86J60/86J65/87J60T(1), PIC18F96J60/96J65/97J60T(1)

Temperature Range I = -40C to +85C (Industrial)

Package PT = 64, 80 and 100-Lead, 12x12x1 mm TQFP (Thin Quad Flatpack)

PF = 100-Lead, 14x14x1 mm TQFP

Pattern QTP, SQTP, Code or Special Requirements (blank otherwise)

例 :

a) PIC18F67J60-I/PT 301 = 産業用温度レンジ、TQFP パッケージ、QTP パターン #301

b) PIC18F67J60T-I/PT = テープ&リール、産業用温度レンジ、TQFP パッケージ

Note 1: T = テープ & リール

Page 496: PIC18F97J60 ファミリ データシート - Microchip …ww1.microchip.com › downloads › jp › DeviceDoc › 39762F_JP.pdf2013 Microchip Technology Inc. DS39762F_JP PIC18F97J60

DS39762F_JP - p.496 2013 Microchip Technology Inc.

北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 480-792-7200 Fax: 480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com

アトランタDuluth, GA Tel: 678-957-9614 Fax: 678-957-1455

ボストンWestborough, MATel: 774-760-0087 Fax: 774-760-0088

シカゴItasca, ILTel: 630-285-0071 Fax: 630-285-0075

クリーブランドIndependence, OHTel: 216-447-0464Fax: 216-447-0643

ダラスAddison, TXTel: 972-818-7423 Fax: 972-818-2924

デトロイトFarmington Hills, MITel: 248-538-2250Fax: 248-538-2260

インディアナポリスNoblesville, INTel: 317-773-8323Fax: 317-773-5453

ロサンゼルスMission Viejo, CATel: 949-462-9523 Fax: 949-462-9608

サンタクララSanta Clara, CATel: 408-961-6444Fax: 408-961-6445

トロントMississauga, Ontario,CanadaTel: 905-673-0699 Fax: 905-673-6509

アジア / 太平洋アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel: 852-2401-1200Fax: 852-2401-3431

オーストラリア - シドニー

Tel: 61-2-9868-6733Fax: 61-2-9868-6755

中国 - 北京

Tel: 86-10-8569-7000Fax: 86-10-8528-2104

中国 - 成都

Tel: 86-28-8665-5511Fax: 86-28-8665-7889

中国 - 重慶

Tel: 86-23-8980-9588Fax: 86-23-8980-9500

中国 - 杭州

Tel: 86-571-2819-3187Fax: 86-571-2819-3189

中国 - 香港 SARTel: 852-2943-5100 Fax: 852-2401-3431

中国 - 南京

Tel: 86-25-8473-2460Fax: 86-25-8473-2470

中国 - 青島

Tel: 86-532-8502-7355Fax: 86-532-8502-7205

中国 - 上海

Tel: 86-21-5407-5533Fax: 86-21-5407-5066

中国 - 瀋陽

Tel: 86-24-2334-2829Fax: 86-24-2334-2393

中国 - 深圳

Tel: 86-755-8864-2200 Fax: 86-755-8203-1760

中国 - 武漢

Tel: 86-27-5980-5300Fax: 86-27-5980-5118

中国 - 西安

Tel: 86-29-8833-7252Fax: 86-29-8833-7256

中国 - 厦門

Tel: 86-592-2388138 Fax: 86-592-2388130

中国 - 珠海

Tel: 86-756-3210040 Fax: 86-756-3210049

アジア / 太平洋インド - バンガロール

Tel: 91-80-3090-4444 Fax: 91-80-3090-4123

インド - ニューデリー

Tel: 91-11-4160-8631Fax: 91-11-4160-8632

インド - プネ

Tel: 91-20-2566-1512Fax: 91-20-2566-1513

日本 - 大阪

Tel: 81-66-152- 7160Fax: 81-66-152-9310

日本 - 横浜

Tel: 81-45-471- 6166 Fax: 81-45-471-6122

韓国 - 大邱

Tel: 82-53-744-4301Fax: 82-53-744-4302

韓国 - ソウル

Tel: 82-2-554-7200Fax: 82-2-558-5932 または

82-2-558-5934

マレーシア - クアラルンプール

Tel: 60-3-6201-9857Fax: 60-3-6201-9859

マレーシア - ペナン

Tel: 60-4-227-8870Fax: 60-4-227-4068

フィリピン - マニラ

Tel: 63-2-634-9065Fax: 63-2-634-9069

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

台湾 - 新竹

Tel: 886-3-5778-366Fax: 886-3-5770-955

台湾 - 高雄

Tel: 886-7-213-7828Fax: 886-7-330-9305

台湾 - 台北

Tel: 886-2-2508-8600 Fax: 886-2-2508-0102

タイ - バンコク

Tel: 66-2-694-1351Fax: 66-2-694-1350

ヨーロッパオーストリア - ヴェルス

Tel: 43-7242-2244-39Fax: 43-7242-2244-393

デンマーク - コペンハーゲン

Tel: 45-4450-2828 Fax: 45-4485-2829

フランス - パリ

Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79

ドイツ - ミュンヘン

Tel: 49-89-627-144-0 Fax: 49-89-627-144-44

イタリア - ミラノ Tel: 39-0331-742611 Fax: 39-0331-466781

オランダ - ドリューネン

Tel: 31-416-690399 Fax: 31-416-690340

スペイン - マドリッド

Tel: 34-91-708-08-90Fax: 34-91-708-08-91

イギリス - ウォーキンガム

Tel: 44-118-921-5869Fax: 44-118-921-5820

各国の営業所とサービス

11/27/12