Comments
Description
Transcript
PIC18FX525/X620 Data Sheet
PIC18F23K20/24K20/25K20/26K20/ 43K20/44K20/45K20/46K20 データシート 28/40/44 ピン フラッシュ マイクロコントローラ nanoWatt XLP™ テクノロジ対応 ご注意:この日本語版ドキュメントは、参考資料としてご使用の上、最新情報に つきましては、必ず英語版オリジナルをご参照いただきますようお願い します。 2009 Microchip Technology Inc. Preliminary DS41303E_JP マイクロチップ テクノロジー社 ( 以下、マイクロチップ社 ) デバイスのコード保護機能に関する以下の点にご留意ください。 • マイクロチップ社製品は、その該当するマイクロチップ社データシートに記載の仕様を満たしています。 • マイクロチップ社では、通常の条件ならびに仕様どおりの方法で使用した場合、マイクロチップ社製品は現在市場に流 通している同種製品としては最もセキュリティの高い部類に入る製品であると考えております。 • コード保護機能を解除するための不正かつ違法な方法が存在します。マイクロチップ社の確認している範囲では、この ような方法のいずれにおいても、マイクロチップ社製品をマイクロチップ社データシートの動作仕様外の方法で使用す る必要があります。このような行為は、知的所有権の侵害に該当する可能性が非常に高いと言えます。 • マイクロチップ社は、コードの保全について懸念を抱いているお客様と連携し、対応策に取り組んでいきます。 • マイクロチップ社を含むすべての半導体メーカーの中で、自社のコードのセキュリティを完全に保証できる企業はあり ません。コード保護機能とは、マイクロチップ社が製品を「解読不能」として保証しているものではありません。 コード保護機能は常に進歩しています。マイクロチップ社では、製品のコード保護機能の改善に継続的に取り組んでいます。 マイクロチップ社のコード保護機能を解除しようとする行為は、デジタルミレニアム著作権法に抵触する可能性があります。 そのような行為によってソフトウェアまたはその他の著作物に不正なアクセスを受けた場合は、デジタルミレニアム著作権 法の定めるところにより損害賠償訴訟を起こす権利があります。 本書に記載されているデバイス アプリケーションなどに 関する情報は、ユーザーの便宜のためにのみ提供されて いるものであり、更新によって無効とされることがあり ます。アプリケーションと仕様の整合性を保証すること は、お客様の責任において行ってください。マイクロチッ プ社は、明示的、暗黙的、書面、口頭、法定のいずれであ るかを問わず、本書に記載されている情報に関して、状 態、品質、性能、商品性、特定目的への適合性をはじめと する、いかなる類の表明も保証も行いません。マイクロ チップ社は、本書の情報およびその使用に起因する一切の 責任を否認します。マイクロチップ社デバイスを生命維持 および / または保安のアプリケーションに使用することは デバイス購入者の全責任において行うものとし、デバイス 購入者は、デバイスの使用に起因するすべての損害、請 求、訴訟、および出費に関してマイクロチップ社を弁護、 免責し、同社に不利益が及ばないようにすることに同意す るものとします。暗黙的あるいは明示的を問わず、マイク ロチップ社が知的財産権を保有しているライセンスは一 切譲渡されません。 商標 Microchip の社名とロゴ、Microchip ロゴ、dsPIC、 KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、 PICSTART、rfPIC、UNI/O は、米国およびその他の国に おける Microchip Technology Incorporated の登録商標です。 FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MXDEV、MXLAB、SEEVAL、The Embedded Control Solutions Company は、米国における Microchip Technology Incorporated の登録商標です。 Analog-for-the-Digital Age、Application Maestro、 CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、 dsSPEAK、ECAN、ECONOMONITOR、FanSense、HITIDE、In-Circuit Serial Programming、ICSP、ICEPIC、 Mindi、MiWi、MPASM、MPLAB Certified ロゴ、MPLIB、 MPLINK、mTouch、nanoWatt XLP、Omniscient Code Generation、PICC、PICC-18、PICkit、PICDEM、 PICDEM.net、PICtail、PIC32 ロゴ、Real ICE、rfLAB、 Select Mode、Total Endurance、TSHARC、WiperLock、 ZENA は、米国およびその他の国における Microchip Technology Incorporated の商標です。 SQTP は米国における Microchip Technology Incorporated のサービスマークです。 その他、本書に記載されている商標は、各社に帰属します。 © 2009, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. 再生紙を使用しています。 マイクロチップ社では、Chandler および Tempe ( アリゾナ州 )、 Gresham ( オレゴン州 ) の本部、設計部およびウエハ製造工場そして カリフォルニア州とインドのデザイン センターが ISO/TS-16949:2002 認証を取得しています。マイクロチップ社の品質システム プロセス および手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッ ピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮 発性メモリ、アナログ製品に採用されています。また、マイクロ チップ社の開発システムの設計および製造に関する品質システムは、 ISO 9001:2000 の認証を受けています。 DS41303E_JP - ページ ii Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 28/40/44 ピン フラッシュ マイクロコントローラ nanoWatt XLP™ テクノロジ対応 高性能 RISC CPU: • Cコンパイラ向けに最適化されたアーキテクチャ: - 再入可能コードの最適化用に設計されたオプ ションの拡張命令セット • 最大 1024 バイトのデータ EEPROM • 最大 64 KB のリニア プログラム メモリ アドレス 指定 • 最大3936バイトのリニア データ メモリ アドレス 指定 • 最大 16 MIPS の動作 • 16 ビット幅の命令、8 ビット幅のデータ パス • 優先度が設定可能な割り込み • ソフトウェアからアクセス可能な 31 レベルの ハードウェア スタック • 8 x 8 シングル サイクル ハードウェア乗算器 柔軟性の高いオシレータ構成 : • 高精度 16 MHz 内部オシレータ ブロック : - ±1% まで工場較正済み - 動作周波数はソフトウェアで 31 kHz ~ 16 MHz の範囲内で選択可能 - PLL の使用により 64 MHz 動作も可能 – 外付け 部品不要 • 4 つの水晶振動子モード ( 最大周波数 64 MHz) • 2 つの外部クロック モード ( 最大周波数 64 MHz) • 4X フェーズ ロック ループ (PLL) • セカンダリ オシレータはタイマ 1 (@ 32 kHz) を 使用 • フェイルセーフ クロック モニタ : - 周辺クロック停止でも安全なシャットダウン - 2 段速オシレータ スタートアップ このマイクロコントローラの機能 : • 動作電源電圧範囲 : 1.8V ~ 3.6V • ソフトウェア制御によるセルフ プログラミング • プログラマブルな 16 レベルの高 / 低電圧検出 (HLVD) モジュール : - 高 / 低電圧検出時の割り込み • プログラマブルなブラウンアウト リセット(BOR): - ソフトウェアによるイネーブル オプション対応 • 拡張ウォッチドッグ タイマ (WDT): - 4 ms ~ 131s の範囲でプログラマブルな周期 • 3V 単一電源と 2 本のピンを使用したインサー キット シリアル プログラミング ™ (ICSP™) • 2 本のピンを使用したインサーキット デバッガ (ICD) 2009 Microchip Technology Inc. nanoWatt XLP™ による超低消費電力電源 管理 : • スリープ モード : 100 nA • ウォッチドッグ タイマ : 500 nA • タイマ 1 オシレータ : 500 nA @ 32 kHz アナログ機能の特徴 : • A/D コンバータ (ADC) モジュール : - 10 ビット分解能および 13 外部チャネル - 自動取得機能 - スリープ時も変換 - 1.2V 固定電圧リファレンス (FVR) チャネル - 独立した入力多重化 • アナログ コンパレータ モジュール : - 2 つのレール トゥ レール アナログ コンパレータ - 独立した入力多重化 • 電圧リファレンス (CVREF) モジュール - 16 ステップでプログラマブル (%VDD) - VREF ピンを使用した 2 つの 16 レベル電圧範囲 周辺機能の特徴 : • 最大 35 本の I/O ピンおよび 1 本の入力専用ピン : - 25 mA/25 mA の大電流シンク / ソース - プログラマブルな 3 つの外部割り込み - プログラマブルな 4 つの状態変化割り込み - プログラマブルな 8 つの弱プルアップ - プログラマブルなスルー レート • キャプチャ / コンペア /PWM (CCP) モジュール • 拡張 CCP (ECCP) モジュール : - 1 つ、2 つ、または 4 つの PWM 出力 - 極性を選択可能 - プログラマブルなデッド タイム - 自動シャットダウンおよび自動再スタート • マスター同期シリアル ポート (MSSP) モジュール - 3 線式 SPI (4 モードすべてをサポート ) - アドレス マスク対応のマスター / スレーブ モード I2C™ • 拡張 USART (EUSART) モジュール : - RS-485、RS-232 および LIN に対応 - 内部オシレータを使用した RS-232 動作 - ブレーク時の自動ウェイクアップ - 自動ボーレート検出 Preliminary DS41303E_JP - ページ 1 PIC18F2XK20/4XK20 - Data Memory MSSP EUSART Program Memory Comp. PIC18F23K20 8K 4096 512 256 25 11 1/1 Y Y 1 2 PIC18F24K20 16K 8192 768 256 25 11 1/1 Y Y 1 2 1/3 PIC18F25K20 32K 16384 1536 256 25 11 1/1 Y Y 1 2 1/3 PIC18F26K20 64k 32768 3936 1024 25 11 1/1 Y Y 1 2 1/3 PIC18F43K20 8K 4096 512 256 36 14 1/1 Y Y 1 2 1/3 PIC18F44K20 16K 8192 768 256 36 14 1/1 Y Y 1 2 1/3 PIC18F45K20 32K 16384 1536 256 36 14 1/1 Y Y 1 2 1/3 PIC18F46K20 64k 32768 3936 1024 36 14 1/1 Y Y 1 2 1/3 Device 注 1: 2: (1) Flash # Single-Word SRAM EEPROM I/O (bytes) Instructions (bytes) (bytes) 10-bit A/D (ch)(2) CCP/ ECCP (PWM) SPI Master I2C™ Timers 8/16-bit 1/3 ピンの 1 本は読み出し専用です。 チャネル数は内部固定電圧リファレンス チャネルを含んだ値です。 DS41303E_JP - ページ 2 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 ピン配置図 28-pin PDIP, SOIC, SSOP 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 RA1/AN1/C12IN1RA0/AN0/C12IN0- MCLR/VPP/RE3 RA0/AN0/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT RA5/AN4/SS/HLVDIN/C2OUT RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 VDD VSS OSC1/CLKIN/RA7 OSC2/CLKOUT/RA6 RC0/T1OSO/T13CKI RC1/T1OSI/CCP2(1) RC2/CCP1/P1A RC3/SCK/SCL RD0/PSP0 RD1/PSP1 PIC18F43K20 PIC18F44K20 PIC18F45K20 PIC18F46K20 40-pin PDIP 28-pin QFN 28 27 26 25 24 23 22 21 20 19 18 17 16 15 PIC18F23K20 PIC18F24K20 PIC18F25K20 PIC18F26K20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 RB7/KBI3/PGD RB6//KBI2/PGC RB5/KBI1/PGM RB4/KBI0/AN11/P1D RB3/AN9/C12IN2-/CCP2(1) RB2/INT2/AN8/P1B RB1/INT1/AN10/C12IN3-/P1C RB0/INT0/FLT0/AN12 VDD VSS RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RB7/KBI3/PGD RB6/KBI2/PGC RB5/KBI1/PGM RB4/KBI0/AN11 RB3/AN9/C12IN2-/CCP2(1) RB2/INT2/AN8 RB1/INT1/AN10/C12IN3RB0/INT0/FLT0/AN12 VDD VSS RD7/PSP7/P1D RD6/PSP6/P1C RD5/PSP5/P1B RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2 MCLR/VPP/RE3 RB7/KBI3/PGD RB6/KBI2/PGC RB5/KBI1/PGM RB4/KBI0/AN11/P1D MCLR/VPP/RE3 RA0/AN0/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT RA5/AN4/SS/HLVDIN/C2OUT VSS OSC1/CLKIN/RA7 OSC2/CLKOUT/RA6 RC0/T1OSO/T13CKI RC1/T1OSI/CCP2(1) RC2/CCP1/P1A RC3/SCK/SCL 28 27 26 25 24 23 22 注 1: RB3 は CCP2 多重化用の代替ピンです。 2009 Microchip Technology Inc. 1 2 3 4 5 6 7 PIC18F23K20 PIC18F24K20 PIC18F25K20 PIC18F26K20 8 9 10 11 12 13 14 21 20 19 18 17 16 15 RB3/AN9/C12IN2-/CCP2(1) RB2/INT2/AN8/P1B RB1/INT1/AN10/C12IN3-/P1C RB0/INT0/FLT0/AN12 VDD VSS RC7/RX/DT RC0/T1OSO/T13CKI RC1/T1OSI/CCP2(1) RC2/CCP1/P1A RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT RA5/AN4/SS/HLVDIN/C2OUT VSS OSC1/CLKIN/RA7 OSC2/CLKOUT/RA6 Preliminary DS41303E_JP - ページ 3 PIC18F2XK20/4XK20 44 43 42 41 40 39 38 37 36 35 34 44-pin TQFP RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 RC3/SCK/SCL RC2/CCP1/P1A RC1/T1OSI/CCP2(1) NC ピン配置図 ( 続き ) 注 1: RB3 は CCP2 多重化用の代替ピンです。 DS41303E_JP - ページ 4 12 13 14 15 16 17 18 19 20 21 22 NC NC RC6/TX/CK RB4/KBI0/AN11 RC5/SDO RB5/KBI1/PGM RC4/SDI/SDA RB6/KBI2/PGC RD3/PSP3 RB7/KBI3/PGD RD2/PSP2 MCLR/VPP/RE3 RD1/PSP1 RA0/AN0/C12IN0RD0/PSP0 RA1/AN1/C12IN1RC3/SCK/SCL RA2/AN2/VREF-/CVREF/C2IN+ RC2/CCP1/P1A RA3/AN3/VREF+/C1IN+ RC1/T1OSI/CCP2(1) RC0/T1OSO/T13CKI 44 43 42 41 40 39 38 37 36 35 34 RC7/RX/DT RD4/PSP4 RD5/PSP5/P1B RD6/PSP6/P1C RD7/PSP7/P1D VSS VDD VDD RB0/INT0/FLT0/AN12 RB1/INT1/AN10/C12IN3RB2/INT2/AN8 PIC18F43K20 PIC18F44K20 PIC18F45K20 PIC18F46K20 NC RC0/T1OSO/T13CKI OSC2/CLKOUT/RA6 OSC1/CLKIN/RA7 VSS VDD RE2/CS/AN7 RE1/WR/AN6 RE0/RD/AN5 RA5/AN4/SS/HLVDIN/C2OUT RA4/T0CKI/C1OUT 33 32 31 30 29 28 27 26 25 24 23 1 2 3 4 5 6 7 8 9 10 11 PIC18F43K20 PIC18F44K20 PIC18F45K20 PIC18F46K20 33 32 31 30 29 28 27 26 25 24 23 12 13 14 15 16 17 18 19 20 21 22 44-pin QFN 1 2 3 4 5 6 7 8 9 10 11 OSC2/CLKOUT/RA6 OSC1/CLKIN/RA7 VSS VSS VDD VDD RE2/CS/AN7 RE1/WR/AN6 RE0/RD/AN5 RA5/AN4/SS/HLVDIN/C2OUT RA4/T0CKI/C1OUT RB3/AN9/C12IN2-/CCP2(1) NC RB4/KBI0/AN11 RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD MCLR/VPP/RE3 RA0/AN0/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RC7/RX/DT RD4/PSP4 RD5/PSP5/P1B RD6/PSP6/P1C RD7/PSP7/P1D VSS VDD RB0/INT0/FLT0/AN12 RB1/INT1/AN10/C12IN3RB2/INT2/AN8 RB3/AN9/C12IN2-/CCP2(1) Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 Reference ECCP EUSART MSSP Timers Slave Interrupts Pull-up Basic — — — — — — — — — — — — — — C2IN+ VREF-/ CVREF — — — — — — — — — — — — — — T0CKI SS — — — — — — — — — — — — — — — OSC2/ CLKOUT Analog — — I/O — — QFN Pin C12IN0- TQFP Pin Comparator PIC18F4XK20 ピンの要約 DIL Pin 表 1: 2 19 19 RA0 AN0 3 20 20 RA1 AN1 C12IN1- 4 21 21 RA2 AN2 5 22 22 RA3 AN3 6 23 23 RA4 7 24 24 RA5 14 31 33 RA6 13 30 32 33 8 9 34 9 10 35 10 11 RB2 AN8 — 36 11 12 RB3 AN9 C12IN2- 37 14 14 RB4 AN11 38 15 15 RB5 39 16 16 RB6 40 17 17 15 32 34 16 17 35 36 35 36 C1IN+ VREF+ C1OUT — AN4 C2OUT HLVDIN — — — — — — — — — — — RA7 — AN12 — — RB1 AN10 C12IN3- CCP2(1) RB7 — — — — — — — — — — — — — — — — — RB0 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — RC0 — — — — — — T1OSO/ T13CKI — CCP2(2) — — — CCP1/ P1A — RC1 RC2 — — — — FLT0 — — PGM PGC KBI3 Yes PGD — — — — T1OSI — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — 23 42 42 RC4 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — SDO TX/CK — — — — — — — — — — — — — — — — — — — — — 26 1 1 RC7 19 38 38 RD0 20 39 39 RD1 21 40 40 RD2 22 41 41 RD3 27 2 2 RD4 28 3 3 RD5 29 4 4 RD6 30 5 5 RD7 — — — — — — — — — — — 8 25 25 RE0 AN5 9 26 26 RE1 AN6 10 27 27 RE2 AN7 — — — — — — — — RC5 1 18 18 RE3(3) 11 7 7 32 28 28 12 6 6 31 29 30 – NC 8 – NC 29 –- NC 31 — — — — — — — 注 1: 2: 3: P1B P1C P1D — — — — — — — — — — — RX/DT — — — — — — — — — — — — — — — — — — — Yes Yes — RC6 Yes — KBI2 — 43 INT2 Yes RC3 44 Yes Yes 37 43 INT1 KBI1 37 44 OSC1/CLKIN KBI0 18 25 — Yes — — — — — SCK/ SCL SDI/ SDA 24 — INT0 PSP0 PSP1 PSP2 PSP3 PSP4 PSP5 PSP6 PSP7 RD WR CS — — — — — — — — MCLR/VPP VDD VDD VSS VSS VDD VDD VSS CONFIG3H<0>=0 のとき CCP2 は RB3 と多重化されます。 CONFIG3H<0>=1 のとき CCP2 は RC1 と多重化されます。 入力専用です。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 5 PIC18F2XK20/4XK20 AN2 C2IN+ VREF-/ CVREF AN3 C1IN+ VREF+ Basic RA2 Pull-up 1 Interrupts C12IN1- 4 Slave C12IN0- AN1 Timers AN0 RA1 MSSP Comparator RA0 28 EUSART Analog 27 3 ECCP I/O 2 Reference Pin QUAD PIC18F2XK20 ピンの要約 Pin DIL 表 2: 5 2 RA3 6 3 RA4 7 4 RA5 10 7 RA6 OSC2/ CLKOUT 9 6 RA7 OSC1/ CLKIN C1OUT AN4 21 18 RB0 AN12 22 19 RB1 AN10 23 20 RB2 AN8 24 21 RB3 AN9 AN11 C2OUT T0CKI HLVDIN SS FLT0 INT0 Yes C12IN3- P1C INT1 Yes P1B INT2 C12IN2- CCP2(1) Yes Yes 25 22 RB4 KBI0 Yes 26 23 RB5 P1D KBI1 Yes 27 24 RB6 KBI2 Yes PGC 28 25 RB7 KBI3 Yes PGD 11 8 RC0 PGM T1OSO/ T13CKI 12 9 RC1 CCP2(2) 13 10 RC2 CCP1/ P1A 14 11 RC3 SCK/ SCL 15 12 RC4 SDI/ SDA T1OSI 16 13 RC5 17 14 RC6 TX/CK SDO 18 15 RC7 RX/DT 1 26 RE3(3) MCLR/ VPP 8 5 VSS 19 16 VSS 17 VDD 20 注 1: 2: 3: CONFIG3H<0>=0 のとき CCP2 は RB3 と多重化されます。 CONFIG3H<0>=1 のとき CCP2 は RC1 と多重化されます。 入力専用です。 DS41303E_JP - ページ 6 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 目次 1.0 デバイス概要 .......................................................................................................................................................................................9 2.0 オシレータ モジュール ( フェイルセーフ クロック モニタ機能付き ).....................................................................................25 3.0 電源管理モード .................................................................................................................................................................................41 4.0 リセット .............................................................................................................................................................................................49 5.0 メモリ構成 .........................................................................................................................................................................................63 6.0 フラッシュ プログラム メモリ .......................................................................................................................................................87 7.0 データ EEPROM メモリ ...................................................................................................................................................................97 8.0 8 x 8 ハードウェア乗算器 ..............................................................................................................................................................103 9.0 割り込み ...........................................................................................................................................................................................105 10.0 I/O ポート .........................................................................................................................................................................................119 11.0 キャプチャ / コンペア /PWM (CCP) モジュール ........................................................................................................................141 12.0 タイマ 0 モジュール .......................................................................................................................................................................153 13.0 タイマ 1 モジュール .......................................................................................................................................................................157 14.0 タイマ 2 モジュール .......................................................................................................................................................................165 15.0 タイマ 3 モジュール .......................................................................................................................................................................167 16.0 拡張キャプチャ / コンペア /PWM (ECCP) モジュール..............................................................................................................171 17.0 マスター同期シリアル ポート (MSSP) モジュール ...................................................................................................................191 18.0 拡張ユニバーサル同期 / 非同期送受信器 (EUSART).................................................................................................................233 19.0 A/D コンバータ (ADC) モジュール ..............................................................................................................................................261 20.0 コンパレータ モジュール ..............................................................................................................................................................275 21.0 電圧リファレンス ...........................................................................................................................................................................285 22.0 高 / 低電圧検知 (HLVD) .................................................................................................................................................................289 23.0 CPU の特殊機能 ..............................................................................................................................................................................295 24.0 命令セットの概要 ...........................................................................................................................................................................311 25.0 開発サポート ...................................................................................................................................................................................361 26.0 電気的特性 .......................................................................................................................................................................................365 27.0 DC 特性と AC 特性のグラフおよび表 .........................................................................................................................................399 28.0 パッケージ情報 ...............................................................................................................................................................................401 付録 A: 改版履歴 ................................................................................................................................................................................413 付録 B: デバイス間の違い ................................................................................................................................................................414 索引 ............................................................................................................................................................................................................415 マイクロチップ社のウェブ サイト ........................................................................................................................................................427 お客様への変更通知サービス .................................................................................................................................................................427 お客様サポート .........................................................................................................................................................................................427 読者アンケート .........................................................................................................................................................................................428 製品識別システム .....................................................................................................................................................................................429 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 7 PIC18F2XK20/4XK20 大切なお客様へ マイクロチップ社では、お客様にマイクロチップ社製品を効果的にお使いいただくために、分かりやすい文書を提供するように 努めています。このため、弊社はお客様のニーズに更に的確に応えられるように、出版物の改善を続けていきます。弊社の出版 物は、新しい巻や更新情報の発表に合わせて内容の見直しと充実が図られます。 本書に関してご意見やご質問をお持ちのお客様は、電子メールまたはファクスで弊社のマーケティングコミュニケーション部門 にご連絡ください。電子メールアドレスは [email protected]、ファクス番号は 1-480-792-4150 ( 国際電話 ) です。ファ クスの場合には、本書の巻末に用意されている「読者アンケート」のページをご利用ください。お客様からのご感想をお待ちし ております。 最新のデータシート このデータシートの最新版を入手するには、以下のウェブ サイトから登録手続きを行ってください。 http://www.microchip.com 各ページのフッタに記載されている文書番号をご覧になると、データシートのバージョンを確認できます。文書番号の最後の文 字がバージョン番号です ( 例 : DS30000A は文書 DS30000 のバージョン A)。 正誤表情報 現行のデバイスには、データシートとの動作上の微妙な相違点や推奨できる暫定的な対策を記した正誤表が存在することがあり ます。弊社では、デバイスや文書に関する問題を認識した時点で正誤表を発行します。正誤表には、該当するシリコンのバージョ ンと文書のバージョンが明記されます。 特定のデバイスに関して正誤表の有無を確認するには、以下のいずれかをご利用ください。 • マイクロチップ社のウェブ サイト : http://www.microchip.com • 各国のマイクロチップ社営業所 ( 最終ページ参照 ) • Microchip Corporate Literature Center ( 米国 - FAX: (480) 792-7277) 営業所または米国の Microchip Corporate Literature Center にお問い合わせになる場合、ご使用のデバイス、シリコンのバージョン、 データシートのバージョン ( 文書番号を含む ) をお伝えください。 お客様通知システム マイクロチップ社のウェブ サイト (www.microchip.com/cn) で登録手続きを行うと、マイクロチップ社のすべての製品に関する最 新情報を受信できるようになります。 DS41303E_JP - ページ 8 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 1.0 1.1.2 デバイス概要 この文書には、下記のデバイスの特性情報が含まれ ています。 • PIC18F23K20 • PIC18F43K20 • PIC18F24K20 • PIC18F44K20 • PIC18F25K20 • PIC18F45K20 • PIC18F26K20 • PIC18F46K20 この フ ァミ リ は、低 価格 で 高い 計算 性 能を 誇 る PIC18 マイクロコントローラの利点をすべて備える とともに、優れた書き込み耐性のフラッシュ プロ グラム メモリを搭載しています。そのような機能 に加えて、PIC18F2XK20/4XK20 ファミリは、さま ざまな高性能省電力アプリケーションに最適なマ イクロコントローラ向けに設計を強化しています。 1.1 1.1.1 新しいコアの機能 ナノワット テクノロジ PIC18F2XK20/4XK20 ファミリのすべてのデバイス は、動作時の電力消費を大幅に低減する、さまざ まな機能を搭載しています。主な機能は次のとお りです。 • 代替ラン モード : コントローラに、タイマ 1 ソー スまたは内部オシレータ ブロックからクロック を供給することで、コード実行時の電力消費を 90% も低減できます。 • 複数のアイドル モード : このコントローラは、 CPU コアだけをオフにし、周辺回路はアクティブ に保った状態で動作させることができます。この 状態に移行すると、電力消費は更に低減され、通 常動作に必要とされる電力のわずか 4% で動作し ます。 • オンザフライ モード スイッチング : 動作中に ユーザー コードから電源管理モードを起動でき るため、ユーザーはアプリケーションのソフト ウェア設計に省電力機能を組み込むことができ ます。 • 低消費電力の主要モジュール : タイマ 1 および ウォッチドッグ タイマの電力要件は、いずれも最 低限に抑えられています。値については、26.0 項 「電気的特性」を参照してください。 2009 Microchip Technology Inc. 複数のオシレータ オプションと機能 PIC18F2XK20/4XK20 ファミリのデバイスには、い ずれも 10 種類の異なるオシレータ オプションがあ るため、アプリケーション ハードウェアの開発時 に幅広い選択が可能です。オプションは次のとおり です。 • 水晶振動子またはセラミック振動子を用いた 4 つ の水晶振動子モード • 2 つの外部クロック モード。2 ピン ( オシレータ 入力と 4 分周クロック出力 ) と 1 ピン ( オシレー タ入力と汎用 I/O に再割り当てされる 2 本目の ピン ) のオプションがあります。 • 2 つの外部 RC オシレータ モード。ピンのオプ ションは外部クロック モードと同じです。 • 内部オシレータ ブロックには 16 MHz の HFINTOSC オシレータと 31 kHz の LFINTOSC オ シレータがあります。これら 2 つのオシレータ を組み合わせることで、ユーザーは 31 kHz から 16 MHz までの 8 種類のクロック周波数を選ぶこ とができます。このオプションによって不要に なったオシレータ ピン 2 本を、汎用 I/O として 使用できます。 • 高速水晶振動子モードと内部オシレータ モード の両方で、フェーズ ロック ループ (PLL) 周波数 逓倍器を使用でき、最大 64 MHz のクロック ス ピードを実現できます。内部オシレータと PLL を 使用すると、ユーザーは外付けの水晶振動子やク ロック回路を使用せずに、31 kHz から 64 MHz ま でのあらゆるクロック速度を選択できます。 内部オシレータ ブロックは、クロック ソースとし て利用する他に、安定したリファレンス ソースに なります。これは、このファミリの動作の信頼性を 高めるもう一つの特長です。 • フェイルセーフ クロック モニタ : このオプショ ンはメイン クロック ソースを、LFINTOSC から のリファレンス信号と継続的に比較、監視しま す。クロックに障害が発生すると、コントローラ は内部オシレータ ブロックに切り替えられ、動作 を継続するか、アプリケーションを安全にシャッ トダウンできます。 • 2 段速スタートアップ : このオプションでは、パ ワーオン リセットまたはスリープ モードより ウェイクアップしてから、プライマリ クロック ソースが使用可能になるまで、クロック ソースと して内部オシレータを使用します。 Preliminary DS41303E_JP - ページ 9 PIC18F2XK20/4XK20 1.2 その他の特殊機能 • メモリの書き込み耐性 : プログラム メモリおよび データ EEPROM のいずれのフラッシュ セルも、 公 称でキロサイクル オーダーの消去 / 書き込み耐性 を保証しています。プログラム メモリは最大 10K サイクル、EEPROM は 100K サイクルです。リフ レッシュをしない場合のデータ保持期間は、控え めに見積もっても 40 年以上です。 • 自己プログラム機能 : これらのデバイスは、内部 のソフトウェア制御によって、デバイス自体のプ ログラム メモリ空間に書き込むことができます。 プログラム メモリ先頭の保護されたブート ブ ロックにあるブートローダ ルーチンを使用し、現 場でみずからを更新するアプリケーションを作 成できます。 • 拡張命令セット : PIC18F2XK20/4XK20 ファミリ では、PIC18 命令セットにオプションの拡張命令 セットを導入しました。この拡張セットによって 8 つの新規命令と、インデックス付きアドレス指 定モードが追加されます。デバイスの構成オプ ションとして有効化されるこの拡張機能は、元は C 言語などの高級言語によって開発された再入可 能なアプリケーション コードを最適化するため に、特別に設計されました。 • 拡張 CCP モジュール : このモジュールは、PWM モードにおいて、ハーフブリッジおよびフルブ リッジ ドライバを制御する 1、2、4 系統の変調出 力を供給します。その他にも次のような機能があ ります。 - 割り込みまたはその他の選択条件によって PWM 出力をオフにする、自動シャットダウン - 条件が解除されたときに出力を再度アクティ ブにする、自動再スタート - 4 つの出力のうち、1 つまたは複数を選択的に 有効化して、 PWM信号の出力を切り替える機能 • アドレス指定可能な拡張USART:このシリアル通 信モジュールは、標準の RS-232 動作が可能で、 LIN バス プロトコルをサポートします。その他に 強化された機能には、自動ボーレート検出および 分解能を高めた 16 ビットのボーレート ジェネ レータなどがあります。マイクロコントローラが 内部オシレータ ブロックを使用している場合、外 部と通信するアプリケーションの安定した動作 は、USART が確保します。外付けの水晶振動子 やそれに付随する電力は必要ありません。 • 10 ビット A/D コンバータ : このモジュールでは、 アクイジション時間をプログラムできます。した がって、サンプリング周期を待たずにチャネルを 選択し、変換を開始できるため、コード オーバー ヘッドが低減されます。 DS41303E_JP - ページ 10 • 拡張ウォッチドッグ タイマ (WDT): この拡張 バージョンでは、16 ビットのポストスケーラを 採用したことで、動作電圧および温度の全範囲で 安定した拡張タイムアウト範囲が得られます。タ イムアウト周期については、26.0 項「電気的特 性」を参照してください。 1.3 ファミリの各メンバーに関する詳細 PIC18F2XK20/4XK20 ファミリのデバイスは、28 ピ ンおよび 40/44 ピンのパッケージで供給されます。 2 つのグループのブロック図を図 1-1 と図 1-2 に示 します。 各デバイスは、次の 5 つの点が異なっています。 1. 2. 3. 4. フラッシュ プログラム メモリ (PIC18F23K20/ 43K20 デバイス : 8 KB、PIC18F24K20/44K20 デ バイス : 16 KB、PIC18F25K20/45K20 デバイス : 32 KB、PIC18F26K20/46K20 デバイス : 64 KB) A/D チャネル (28 ピンデバイス : 11 チャネル、 40/44 ピンデバイス : 14 チャネル ) I/O ポート (28 ピンデバイス : 3 つの双方向ポー ト、40/44 ピンデバイス : 5 つの双方向ポート ) パラレル スレーブ ポート (40/44 ピンデバイス のみに搭載 ) その他の特徴は、このファミリ内の全デバイスで共 通です。これらを表 1-1 に示します。 すべてのデバイスのピン配置をピンの要約、表 1 と 表 2 に示します。入出力ピンの機能を表 1-2 と表 13 に示します。 Preliminary 2009 Microchip Technology Inc. A, B, C, (E)(1) 4 A, B, C, (E)(1) 4 1 1 Timers Capture/Compare/PWM Modules Enhanced Capture/Compare/PWM Modules 2009 Microchip Technology Inc. Preliminary 1 internal plus 10 Input Channels 10-bit Analog-to-Digital Module Yes Programmable Brown-out Reset 注 1: Packages 1 1 4 1 1 4 A, B, C, D, E 20 256 512 4096 8192 DC – 64 MHz PIC18F43K20 1 1 4 A, B, C, D, E 20 256 768 8192 16384 DC – 64 MHz PIC18F44K20 1 internal plus 10 Input Channels No 1 internal plus 10 Input Channels No 1 internal plus 10 Input Channels No 1 internal plus 13 Input Channels Yes Yes 1 internal plus 13 Input Channels 28-pin PDIP 28-pin SOIC 28-pin QFN 28-pin SSOP 75 Instructions; 83 with Extended Instruction Set enabled Yes Yes 28-pin PDIP 28-pin SOIC 28-pin QFN 28-pin SSOP 75 Instructions; 83 with Extended Instruction Set enabled Yes Yes 28-pin PDIP 28-pin SOIC 28-pin QFN 28-pin SSOP 75 Instructions; 83 with Extended Instruction Set enabled Yes Yes 40-pin PDIP 44-pin QFN 44-pin TQFP 75 Instructions; 83 with Extended Instruction Set enabled Yes Yes Yes Yes 40-pin PDIP 44-pin QFN 44-pin TQFP 75 Instructions; 83 with Extended Instruction Set enabled PORTE には読み出し専用の 1 ビット、RE3 しかありません。LATE および TRISE レジスタは実装されていません。 28-pin PDIP 28-pin SOIC 28-pin QFN 28-pin SSOP 75 Instructions; 83 with Extended Instruction Set enabled Yes Programmable High/Low-Voltage Detect Instruction Set 1 1 4 A, B, C, (E)(1) 19 1024 3936 32768 65536 DC – 64 MHz PIC18F26K20 1 1 4 A, B, C, D, E 20 256 1536 16384 32768 DC – 64 MHz PIC18F45K20 1 1 4 A, B, C, D, E 20 1024 3936 32768 65536 DC – 64 MHz PIC18F46K20 1 internal plus 13 Input Channels Yes 1 internal plus 13 Input Channels Yes 40-pin PDIP 44-pin QFN 44-pin TQFP 75 Instructions; 83 with Extended Instruction Set enabled Yes Yes 40-pin PDIP 44-pin QFN 44-pin TQFP 75 Instructions; 83 with Extended Instruction Set enabled Yes Yes POR, BOR, POR, BOR, POR, BOR, POR, BOR, POR, BOR, POR, BOR, POR, BOR, POR, BOR, RESET RESET RESET RESET RESET RESET RESET RESET Instruction, Instruction, Instruction, Instruction, Instruction, Instruction, Instruction, Instruction, Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack Stack Full, Stack Underflow Underflow Underflow Underflow Underflow Underflow Underflow Underflow (PWRT, OST), (PWRT, OST), (PWRT, OST), (PWRT, OST), (PWRT, OST), (PWRT, OST), (PWRT, OST), (PWRT, OST), MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional), MCLR (optional), WDT WDT WDT WDT WDT WDT WDT WDT No Resets (and Delays) 1 1 A, B, C, (E)(1) 19 256 1536 16384 32768 DC – 64 MHz PIC18F25K20 MSSP, MSSP, MSSP, MSSP, MSSP, MSSP, MSSP, MSSP, Enhanced USART Enhanced USART Enhanced USART Enhanced USART Enhanced USART Enhanced USART Enhanced USART Enhanced USART Parallel Communications (PSP) Serial Communications I/O Ports 19 19 Interrupt Sources 256 768 512 256 8192 Data EEPROM Memory (Bytes) 4096 Program Memory (Instructions) 16384 DC – 64 MHz PIC18F24K20 Data Memory (Bytes) 8192 DC – 64 MHz PIC18F23K20 表 1-1: Program Memory (Bytes) Operating Frequency Features PIC18F2XK20/4XK20 デバイスの特徴 DS41303E_JP - ページ 11 PIC18F2XK20/4XK20 図 1-1: PIC18F2XK20(28 ピン ) ブロック図 Data Bus<8> Table Pointer<21> Data Latch 8 8 inc/dec logic PORTA Data Memory PCLATU PCLATH 21 Address Latch 20 PCU PCH PCL Program Counter 12 Data Address<12> 31-Level Stack 4 BSR Address Latch Program Memory (8/16/32/64 Kbytes) STKPTR 12 FSR0 FSR1 FSR2 Data Latch 4 Access Bank 12 PORTB 8 inc/dec logic Table Latch Instruction Bus <16> Address Decode ROM Latch RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/HLVDIN/C2OUT OSC2/CLKOUT(3)/RA6 OSC1/CLKIN(3)/RA7 RB0/INT0/FLT0/AN12 RB1/INT1/AN10/C12IN3RB2/INT2/AN8 RB3/AN9/CCP2(1)/C12IN2RB4/KBI0/AN11 RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD IR Instruction Decode and Control 8 State machine control signals PRODH PRODL PORTC 8 x 8 Multiply 3 8 W BITOP 8 Internal Oscillator Block OSC1(3) OSC2 (3) T1OSI LFINTOSC Oscillator T1OSO 16 MHz Oscillator Single-Supply Programming In-Circuit Debugger MCLR(2) VDD, VSS BOR HLVD FVR CVREF Comparator 注 1: 2: 3: Power-up Timer 8 8 8 8 Oscillator Start-up Timer Power-on Reset RC0/T1OSO/T13CKI RC1/T1OSI/CCP2(1) RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT ALU<8> 8 Watchdog Timer Precision Band Gap Reference Brown-out Reset Fail-Safe Clock Monitor FVR PORTE MCLR/VPP/RE3(2) Data EEPROM Timer0 Timer1 Timer2 Timer3 ECCP1 CCP2 MSSP EUSART ADC 10-bit FVR CCP2 は、構成ビット CCP2MX がセットされている場合は RC1、セットされていない場合は RB3 と多重化されます。 RE3 を使用できるのは、MCLR 機能が無効になっているときのみです。 OSC1/CLKIN および OSC2/CLKOUT を使用できるのは、オシレータ選択モードの動作時で、これらのピンがデジタル I/O として使用 されていない場合のみです。詳細は、2.0 項「オシレータ モジュール ( フェイルセーフ クロック モニタ機能付き )」を参照してください。 DS41303E_JP - ページ 12 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 1-2: PIC18F4XK20 (40/44 ピン ) ブロック図 Data Bus<8> Table Pointer<21> RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/HLVDIN/C2OUT OSC2/CLKOUT(3)/RA6 OSC1/CLKIN(3)/RA7 Data Latch 8 8 inc/dec logic PORTA Data Memory PCLATU PCLATH 21 Address Latch 20 PCU PCH PCL Program Counter 12 Data Address<12> 31-Level Stack 4 BSR Address Latch Program Memory (8/16/32/64 Kbytes) STKPTR 8 FSR0 FSR1 FSR2 12 inc/dec logic Table Latch Instruction Bus <16> RB0/INT0/FLT0/AN12 RB1/INT1/AN10/C12IN3RB2/INT2/AN8 RB3/AN9/CCP2(1)/C12IN2RB4/KBI0/AN11 RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD 4 Access Bank 12 Data Latch PORTB PORTC Address Decode ROM Latch RC0/T1OSO/T13CKI RC1/T1OSI/CCP2(1) RC2/CCP1/P1A RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT IR Instruction Decode and Control 8 State machine control signals PRODH PRODL PORTD 8 x 8 Multiply 3 W BITOP 8 Internal Oscillator Block OSC1(3) OSC2 (3) T1OSI LFINTOSC Oscillator T1OSO 16 MHz Oscillator Single-Supply Programming In-Circuit Debugger MCLR(2) VDD, VSS BOR HLVD Power-up Timer 8 8 Watchdog Timer ALU<8> 8 PORTE Brown-out Reset Fail-Safe Clock Monitor Precision Band Gap Reference FVR Data EEPROM Timer0 Timer1 Timer2 Timer3 ECCP1 CCP2 MSSP EUSART ADC 10-bit FVR CVREF Comparator 注 1: 2: 3: 8 8 Oscillator Start-up Timer Power-on Reset RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5/P1B RD6/PSP6/P1C RD7/PSP7/P1D 8 FVR RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 MCLR/VPP/RE3(2) PSP CCP2 は、構成ビット CCP2MX がセットされている場合は RC1、セットされていない場合は RB3 と多重化されます。 RE3 を使用できるのは、MCLR 機能が無効になっているときのみです。 OSC1/CLKIN および OSC2/CLKOUT を使用できるのは、オシレータ選択モードの動作時で、これらのピンがデジタル I/O として使用 されていない場合のみです。詳細は、2.0 項「オシレータ モジュール ( フェイルセーフ クロック モニタ機能付き )」を参照してください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 13 PIC18F2XK20/4XK20 表 1-2: PIC18F2XK20 入出力ピン機能一覧 Pin Name Pin Number Pin Buffer PDIP, Type Type QFN SOIC MCLR/VPP/RE3 MCLR VPP RE3 1 OSC1/CLKIN/RA7 OSC1 9 26 I P I 6 RA7 OSC2/CLKOUT/RA6 OSC2 CLKOUT RA6 10 ST Master Clear (input) or programming voltage (input) Active-low Master Clear (device Reset) input Programming voltage input Digital input Oscillator crystal or external clock input Oscillator crystal input or external clock source input ST buffer when configured in RC mode; CMOS otherwise External clock source input. Always associated with pin I CMOS function OSC1. (See related OSC1/CLKIN, OSC2/CLKOUT pins) General purpose I/O pin I/O TTL I CLKIN ST Description 7 O O I/O ST Oscillator crystal or clock output Oscillator crystal output. Connects to crystal or resonator in Crystal Oscillator mode In RC mode, OSC2 pin outputs CLKOUT which has 1/4 the — frequency of OSC1 and denotes the instruction cycle rate General purpose I/O pin TTL — 記号の説明 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミット トリガ入力 I = 入力 O = 出力 P = 電源 注 1: 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 2: 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 DS41303E_JP - ページ 14 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 1-2: PIC18F2XK20 入出力ピン機能一覧 ( 続き ) Pin Number Pin Name Pin Buffer PDIP, QFN Type Type SOIC Description PORTA is a bidirectional I/O port. RA0/AN0/C12IN0RA0 AN0 C12IN0- 2 RA1/AN1/C12IN1RA1 AN1 C12IN1- 3 RA2/AN2/VREF-/CVREF/ C2IN+ RA2 AN2 VREFCVREF C2IN+ 4 RA3/AN3/VREF+/C1IN+ RA3 AN3 VREF+ C1IN+ 5 RA4/T0CKI/C1OUT RA4 T0CKI C1OUT 6 RA5/AN4/SS/HLVDIN/ C2OUT RA5 AN4 SS HLVDIN C2OUT 7 27 I/O TTL I Analog I Analog Digital I/O Analog input 0, ADC channel 0 Comparators C1 and C2 inverting input I/O TTL I Analog I Analog Digital I/O ADC input 1, ADC channel 1 Comparators C1 and C2 inverting input I/O I I O I Digital I/O Analog input 2, ADC channel 2 A/D reference voltage (low) input Comparator reference voltage output Comparator C2 non-inverting input 28 1 TTL Analog Analog Analog Analog 2 I/O TTL I Analog I Analog I Analog Digital I/O Analog input 3, ADC channel 3 A/D reference voltage (high) input Comparator C1 non-inverting input I/O ST I ST O CMOS Digital I/O Timer0 external clock input Comparator C1 output I/O TTL I Analog I TTL I Analog O CMOS Digital I/O Analog input 4, ADC channel 4 SPI slave select input High/Low-Voltage Detect input Comparator C2 output 3 4 RA6 See the OSC2/CLKOUT/RA6 pin RA7 See the OSC1/CLKIN/RA7 pin 記号の説明 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミット トリガ入力 I = 入力 O = 出力 P = 電源 注 1: 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 2: 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 15 PIC18F2XK20/4XK20 表 1-2: PIC18F2XK20 入出力ピン機能一覧 ( 続き ) Pin Number Pin Name Pin Buffer PDIP, QFN Type Type SOIC Description PORTB is a bidirectional I/O port. PORTB can be software programmed for internal weak pull-up on each input. RB0/INT0/FLT0/AN12 RB0 INT0 FLT0 AN12 21 RB1/INT1/AN10/ C12IN3-/P1C RB1 INT1 AN10 C12IN3P1C 22 RB2/INT2/AN8/P1B RB2 INT2 AN8 P1B 23 RB3/AN9/C12IN2-/CCP2 RB3 AN9 C12IN2CCP2(2) 24 RB4/KBI0/AN11/P1D RB4 KBI0 AN11 P1D 25 RB5/KBI1/PGM RB5 KBI1 PGM 26 RB6/KBI2/PGC RB6 KBI2 PGC 27 RB7/KBI3/PGD RB7 KBI3 PGD 28 18 I/O TTL I ST I ST I Analog Digital I/O External interrupt 0 PWM Fault input for CCP1 Analog input 12, ADC channel 12 I/O TTL I ST I Analog I Analog O CMOS Digital I/O External interrupt 1 Analog input 10, ADC channel 10 Comparators C1 and C2 inverting input Enhanced CCP1 PWM output I/O TTL I ST I Analog O CMOS Digital I/O External interrupt 2 Analog input 8, ADC channel 8 Enhanced CCP1 PWM output I/O TTL I Analog I Analog I/O ST Digital I/O Analog input 9, ADC channel 9 Comparators C1 and C2 inverting input Capture 2 input/Compare 2 output/PWM 2 output I/O TTL TTL I I Analog O CMOS Digital I/O Interrupt-on-change pin Analog input 11, ADC channel 11 Enhanced CCP1 PWM output I/O I I/O TTL TTL ST Digital I/O Interrupt-on-change pin Low-Voltage ICSP™ Programming enable pin I/O I I/O TTL TTL ST Digital I/O Interrupt-on-change pin In-Circuit Debugger and ICSP™ programming clock pin I/O I I/O TTL TTL ST Digital I/O Interrupt-on-change pin In-Circuit Debugger and ICSP™ programming data pin 19 20 21 22 23 24 25 記号の説明 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミット トリガ入力 I = 入力 O = 出力 P = 電源 注 1: 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 2: 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 DS41303E_JP - ページ 16 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 1-2: PIC18F2XK20 入出力ピン機能一覧 ( 続き ) Pin Number Pin Name Pin Buffer PDIP, QFN Type Type SOIC Description PORTC is a bidirectional I/O port. RC0/T1OSO/T13CKI RC0 T1OSO T13CKI 11 RC1/T1OSI/CCP2 RC1 T1OSI CCP2(1) 12 RC2/CCP1/P1A RC2 CCP1 P1A 13 RC3/SCK/SCL RC3 SCK SCL 14 RC4/SDI/SDA RC4 SDI SDA 15 RC5/SDO RC5 SDO 16 RC6/TX/CK RC6 TX CK 17 RC7/RX/DT RC7 RX DT 18 8 I/O O I ST — ST Digital I/O Timer1 oscillator output Timer1/Timer3 external clock input 9 I/O ST I Analog I/O ST Digital I/O Timer1 oscillator input Capture 2 input/Compare 2 output/PWM 2 output I/O ST I/O ST O CMOS Digital I/O Capture 1 input/Compare 1 output Enhanced CCP1 PWM output 10 11 I/O I/O I/O ST ST ST Digital I/O Synchronous serial clock input/output for SPI mode Synchronous serial clock input/output for I2C™ mode I/O I I/O ST ST ST Digital I/O SPI data in I2C™ data I/O I/O O ST — Digital I/O SPI data out I/O O I/O ST — ST Digital I/O EUSART asynchronous transmit EUSART synchronous clock (see related RX/DT) I/O I I/O ST ST ST Digital I/O EUSART asynchronous receive EUSART synchronous data (see related TX/CK) 12 13 14 15 RE3 — — — — VSS 8, 19 5, 16 P — See MCLR/VPP/RE3 pin Ground reference for logic and I/O pins VDD 20 17 P — Positive supply for logic and I/O pins 記号の説明 : TTL = TTL 互換入力 CMOS = CMOS 互換入力または出力 ST = CMOS レベルのシュミット トリガ入力 I = 入力 O = 出力 P = 電源 注 1: 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 2: 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 17 PIC18F2XK20/4XK20 表 1-3: PIC18F4XK20 入出力ピン機能一覧 Pin Name Pin Number PDIP MCLR/VPP/RE3 MCLR VPP RE3 1 OSC1/CLKIN/RA7 OSC1 13 Pin Buffer Type Type QFN TQFP 18 18 I P I 32 30 I CLKIN I RA7 I/O OSC2/CLKOUT/RA6 OSC2 CLKOUT RA6 14 33 ST ST Description Master Clear (input) or programming voltage (input) Active-low Master Clear (device Reset) input Programming voltage input Digital input Oscillator crystal or external clock input Oscillator crystal input or external clock source input ST buffer when configured in RC mode; analog otherwise CMOS External clock source input. Always associated with pin function OSC1 (See related OSC1/CLKIN, OSC2/CLKOUT pins) General purpose I/O pin TTL ST 31 O — O — I/O TTL Oscillator crystal or clock output Oscillator crystal output. Connects to crystal or resonator in Crystal Oscillator mode In RC mode, OSC2 pin outputs CLKOUT which has 1/4 the frequency of OSC1 and denotes the instruction cycle rate General purpose I/O pin 記号の説明 : TTL = TTL 互換入力 ST = CMOS レベルのシュミット トリガ入力 O = 出力 注 1: 2: CMOS = CMOS 互換入力または出力 I = 入力 P = 電源 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 DS41303E_JP - ページ 18 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 1-3: PIC18F4XK20 入出力ピン機能一覧 ( 続き ) Pin Name Pin Number PDIP Pin Buffer Type Type QFN TQFP Description PORTA is a bidirectional I/O port. RA0/AN0/C12IN0RA0 AN0 C12IN0- 2 RA1/AN1/C12IN0RA1 AN1 C12IN0- 3 RA2/AN2/VREF-/ CVREF/C2IN+ RA2 AN2 VREFCVREF C2IN+ 4 RA3/AN3/VREF+/ C1IN+ RA3 AN3 VREF+ C1IN+ 5 RA4/T0CKI/C1OUT RA4 T0CKI C1OUT 6 RA5/AN4/SS/ HLVDIN/C2OUT RA5 AN4 SS HLVDIN C2OUT 7 19 20 21 22 23 24 19 I/O I I TTL Analog Analog Digital I/O Analog input 0, ADC channel 0 Comparator C1 and C2 inverting input I/O I I TTL Analog Analog Digital I/O Analog input 1, ADC channel 1 Comparator C1 and C2 inverting input I/O I I O I TTL Analog Analog Analog Analog Digital I/O Analog input 2, ADC channel 2 A/D reference voltage (low) input Comparator reference voltage output Comparator C2 non-inverting input I/O I I I TTL Analog Analog Analog Digital I/O Analog input 3, ADC channel 3 A/D reference voltage (high) input Comparator C1 non-inverting input I/O I O ST ST CMOS Digital I/O Timer0 external clock input Comparator C1 output I/O I I I O TTL Analog TTL Analog CMOS Digital I/O Analog input 4, ADC channel 4 SPI slave select input High/Low-Voltage Detect input Comparator C2 output 20 21 22 23 24 RA6 See the OSC2/CLKOUT/RA6 pin RA7 See the OSC1/CLKIN/RA7 pin 記号の説明 : TTL = TTL 互換入力 ST = CMOS レベルのシュミット トリガ入力 O = 出力 注 1: 2: CMOS = CMOS 互換入力または出力 I = 入力 P = 電源 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 19 PIC18F2XK20/4XK20 表 1-3: PIC18F4XK20 入出力ピン機能一覧 ( 続き ) Pin Name Pin Number PDIP Pin Buffer Type Type QFN TQFP Description PORTB is a bidirectional I/O port. PORTB can be software programmed for internal weak pull-up on each input. RB0/INT0/FLT0/AN12 RB0 INT0 FLT0 AN12 33 RB1/INT1/AN10/ C12IN3RB1 INT1 AN10 C12IN3- 34 RB2/INT2/AN8 RB2 INT2 AN8 35 RB3/AN9/C12IN2-/ CCP2 RB3 AN9 C12IN23CCP2(2) 36 RB4/KBI0/AN11 RB4 KBI0 AN11 37 RB5/KBI1/PGM RB5 KBI1 PGM 38 RB6/KBI2/PGC RB6 KBI2 PGC 39 RB7/KBI3/PGD RB7 KBI3 PGD 40 9 10 11 12 14 15 16 17 8 I/O I I I TTL ST ST Analog Digital I/O External interrupt 0 PWM Fault input for Enhanced CCP1 Analog input 12, ADC channel 12 I/O I I I TTL ST Analog Analog Digital I/O External interrupt 1 Analog input 10, ADC channel 10 Comparator C1 and C2 inverting input I/O I I TTL ST Analog Digital I/O External interrupt 2 Analog input 8, ADC channel 8 I/O I I I/O TTL Analog Analog ST Digital I/O Analog input 9, ADC channel 9 Comparator C1 and C2 inverting input Capture 2 input/Compare 2 output/PWM 2 output I/O I I TTL TTL Analog Digital I/O Interrupt-on-change pin Analog input 11, ADC channel 11 I/O I I/O TTL TTL ST Digital I/O Interrupt-on-change pin Low-Voltage ICSP™ Programming enable pin I/O I I/O TTL TTL ST Digital I/O Interrupt-on-change pin In-Circuit Debugger and ICSP™ programming clock pin I/O I I/O TTL TTL ST Digital I/O Interrupt-on-change pin In-Circuit Debugger and ICSP™ programming data pin 9 10 11 14 15 16 17 記号の説明 : TTL = TTL 互換入力 ST = CMOS レベルのシュミット トリガ入力 O = 出力 注 1: 2: CMOS = CMOS 互換入力または出力 I = 入力 P = 電源 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 DS41303E_JP - ページ 20 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 1-3: PIC18F4XK20 入出力ピン機能一覧 ( 続き ) Pin Name Pin Number PDIP Pin Buffer Type Type QFN TQFP Description PORTC is a bidirectional I/O port. RC0/T1OSO/T13CKI RC0 T1OSO T13CKI 15 RC1/T1OSI/CCP2 RC1 T1OSI CCP2(1) 16 RC2/CCP1/P1A RC2 CCP1 P1A 17 RC3/SCK/SCL RC3 SCK 18 34 35 36 37 32 23 RC5/SDO RC5 SDO 24 RC6/TX/CK RC6 TX CK 25 RC7/RX/DT RC7 RX DT 26 42 43 44 1 ST — ST Digital I/O Timer1 oscillator output Timer1/Timer3 external clock input I/O I I/O ST CMOS ST Digital I/O Timer1 oscillator input Capture 2 input/Compare 2 output/PWM 2 output I/O I/O O ST ST — Digital I/O Capture 1 input/Compare 1 output/PWM 1 output Enhanced CCP1 output I/O I/O ST ST I/O ST Digital I/O Synchronous serial clock input/output for SPI mode Synchronous serial clock input/output for I2C™ mode I/O I I/O ST ST ST Digital I/O SPI data in I2C™ data I/O I/O O ST — Digital I/O SPI data out I/O O I/O ST — ST Digital I/O EUSART asynchronous transmit EUSART synchronous clock (see related RX/DT) I/O I I/O ST ST ST Digital I/O EUSART asynchronous receive EUSART synchronous data (see related TX/CK) 35 36 37 SCL RC4/SDI/SDA RC4 SDI SDA I/O O I 42 43 44 1 記号の説明 : TTL = TTL 互換入力 ST = CMOS レベルのシュミット トリガ入力 O = 出力 注 1: 2: CMOS = CMOS 互換入力または出力 I = 入力 P = 電源 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 21 PIC18F2XK20/4XK20 表 1-3: PIC18F4XK20 入出力ピン機能一覧 ( 続き ) Pin Name Pin Number PDIP Pin Buffer Type Type QFN TQFP Description PORTD is a bidirectional I/O port or a Parallel Slave Port (PSP) for interfacing to a microprocessor port. These pins have TTL input buffers when PSP module is enabled. RD0/PSP0 RD0 PSP0 19 RD1/PSP1 RD1 PSP1 20 RD2/PSP2 RD2 PSP2 21 RD3/PSP3 RD3 PSP3 22 RD4/PSP4 RD4 PSP4 27 RD5/PSP5/P1B RD5 PSP5 P1B 28 RD6/PSP6/P1C RD6 PSP6 P1C 29 RD7/PSP7/P1D RD7 PSP7 P1D 30 38 39 40 41 2 3 4 5 38 I/O I/O ST TTL Digital I/O Parallel Slave Port data I/O I/O ST TTL Digital I/O Parallel Slave Port data I/O I/O ST TTL Digital I/O Parallel Slave Port data I/O I/O ST TTL Digital I/O Parallel Slave Port data I/O I/O ST TTL Digital I/O Parallel Slave Port data I/O I/O O ST TTL — Digital I/O Parallel Slave Port data Enhanced CCP1 output I/O I/O O ST TTL — Digital I/O Parallel Slave Port data Enhanced CCP1 output I/O I/O O ST TTL — Digital I/O Parallel Slave Port data Enhanced CCP1 output 39 40 41 2 3 4 5 記号の説明 : TTL = TTL 互換入力 ST = CMOS レベルのシュミット トリガ入力 O = 出力 注 1: 2: CMOS = CMOS 互換入力または出力 I = 入力 P = 電源 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 DS41303E_JP - ページ 22 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 1-3: PIC18F4XK20 入出力ピン機能一覧 ( 続き ) Pin Name Pin Number PDIP Pin Buffer Type Type QFN TQFP Description PORTE is a bidirectional I/O port RE0/RD/AN5 RE0 RD 8 25 25 I/O I ST TTL I Analog I/O I ST TTL I Analog I/O I ST TTL I Analog — — — 6, 29 P — See MCLR/VPP/RE3 pin Ground reference for logic and I/O pins 7, 8, 7, 28 28, 29 P — Positive supply for logic and I/O pins — — No connect AN5 RE1/WR/AN6 RE1 WR 9 26 26 AN6 RE2/CS/AN7 RE2 CS 10 27 — — VSS 12, 31 6, 30, 31 VDD 11, 32 NC — 13 Digital I/O Write control for Parallel Slave Port (see related CS and RD pins) Analog input 6, ADC channel 6 27 AN7 RE3 Digital I/O Read control for Parallel Slave Port (see related WR and CS pins) Analog input 5, ADC channel 5 12, 13, 33, 34 Digital I/O Chip Select control for Parallel Slave Port (see related RD and WR) Analog input 7, ADC channel 7 記号の説明 : TTL = TTL 互換入力 ST = CMOS レベルのシュミット トリガ入力 O = 出力 注 1: 2: CMOS = CMOS 互換入力または出力 I = 入力 P = 電源 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。 構成ビット CCP2MX がクリアされているときの、CCP2 の代替割り当てです。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 23 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 24 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 2.0 オシレータ モジュール ( フェイル セーフ クロック モニタ機能付き ) 2.1 オシレータ モジュールは 10 種類あるプライマリ ク ロック モードのいずれかに設定できます。 1. 2. 3. 4. LP XT HS HSPLL 低消費電力水晶振動子モード 水晶振動子 / 振動子モード 高速水晶振動子 / 振動子モード PLL を有効化した高速水晶振動子 / 振動子モード 5. RC RA6 を Fosc/4 出力に使用する外付け RC ( 抵抗 / コンデンサ ) モード 6. RCIO RA6 を I/O に使用する外付け RC ( 抵 抗 / コンデンサ ) モード 7. INTOSC RA6 を FOSC/4 出力、RA7 を I/O に 使用する内部オシレータ モード 8. INTOSCIO RA6 および RA7 を I/O に使用する 内部オシレータ モード 9. EC FOSC/4 を出力する外部クロック モード 10. ECIO RA6 を I/O に使用する外部クロック モード 概要 オシレータ モジュールにはクロック ソースや選択 機能が幅広く備えられており、多くのアプリケー ションで消費電力を最小限に抑えながら最大限の 性能を実現できます。 図 2-1 に、 オシレータ モジュー ルのブロック図を示します。 クロック ソースは、外部オシレータ、水晶振動子、 セラミック振動子、RC ( 抵抗 / コンデンサ ) 回路の いずれかに設定できます。また、2 種類の内部オシ レータのいずれかをシステム クロック ソースに設 定でき、動作速度はソフトウェアで選択できます。 この他のクロック機能として、次のものがあります。 • システム クロック ソースには、外部クロックま たは内部クロックをソフトウェアで選択可能。 • 外部オシレータのスタートアップからコード実 行までの遅延を最小限に抑える 2 段速スタート アップ モード。 • 外部クロックソース (LP、XT、HS、EC、RC モー ド ) の障害を検出して自動的に内部オシレータに 切り替えるフェイルセーフ クロック モニタ (FSCM) 機能。 プライマリ クロック モードは構成レジスタ CONFIG1H の FOSC<3:0> ビットで設定します。 HFINTOSC と LFINTOSC は、内部クロック ソース として使用する、工場出荷時に較正済みの、それぞ れ高周波および低周波のオシレータです。 PIC® MCU のクロック ソースのブロック図 図 2-1: PIC18F2XK20/4XK20 Primary Oscillator LP, XT, HS, RC, EC OSC2 IDLEN Sleep 4 x PLL Secondary Oscillator T1OSC T1OSO T1OSCEN Enable Oscillator OSCCON<6:4> 16 MHz FOSC<3:0> OSCCON<1:0> 31 kHz Source 4 MHz 16 MHz (HFINTOSC) 31 kHz (LFINTOSC) Postscaler Internal Oscillator Block 16 MHz Source 8 MHz 2 MHz 1 MHz 500 kHz 250 kHz Main Peripherals Internal Oscillator CPU 111 Sleep 110 101 100 011 MUX T1OSI Sleep OSCTUNE<6>(1) MUX OSC1 HSPLL, HFINTOSC/PLL 010 001 1 31 kHz 000 0 Clock Control FOSC<3:0> OSCCON<1:0> Clock Source Option for other Modules OSCTUNE<7> WDT, PWRT, FSCM and Two-Speed Start-up 注 1: HFINTOSC がプライマリ オシレータの場合のみ動作します。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 25 PIC18F2XK20/4XK20 2.2 オシレータ制御 OSCCON レジスタ ( レジスタ 2-1) は、フル パワー 動作と電源管理モードの両方で、デバイスのクロッ ク動作をさまざまな面から制御します。 • • • • メイン システム クロック選択 (SCS) 内部周波数選択ビット (IRCF) クロック ステータス ビット (OSTS、IOFS) 電源管理選択 (IDLEN) 2.2.1 2.2.4 メイン システム クロックの選択 システム クロック選択ビット SCS<1:0> により、メ イン クロックのソースを選択します。選択可能な クロック ソースは次のとおりです。 • CONFIG1H の FOSC<3:0> ビットで定義されたプ ライマリ クロック。プライマリ クロックは、プ ライマリ オシレータ、外部クロック、内部オシ レータ ブロックのいずれでもかまいません。 • セカンダリ クロック ( タイマ 1 オシレータ ) • 内部オシレータ ブロック (HFINTOSC および LFINTOSC) クロック ソースは、1 ビットまたは複数のビットへ の書き込みが完了すると、短い遷移期間を経てただ ちに変更されます。リセットは、その種類を問わず SCS ビットをクリアして、プライマリ クロックが 選択されます。 2.2.2 内部周波数の選択 内部オシレータ周波数選択ビット (IRCF<2:0>) で、 内部オシレータ ブロックの周波数出力を選択しま す。LFINTOSC ソース (31 kHz)、HFINTOSC ソース (16 MHz)、または HFINTOSC ポストスケーラから 派生した周波数のいずれか 1 つ (31.25 kHz ~ 8 MHz) より選択できます。 内部オシレータ ブロックによっ てメイン クロックを供給している場合、これらの ビットの状態が変化すると、内部オシレータの出力 もただちに変化します。デバイスをリセットする と、内部オシレータの出力周波数はデフォルト周波 数の 1 MHz に設定されます。 2.2.3 このオプションでは、クロック速度を非常に低速に して消費電力を低く抑えると同時に、高精度の調整 が可能な HFINTOSC をクロック ソースとして選択 できます。ウォッチドッグ タイマやフェイルセー フ クロック モニタなどの機能で使用するクロック ソースは、INTSRC の設定にかかわらず、常に LFINTOSC になります。 クロック ステータス OSCCON レジスタの OSTS および IOFS ビット、 T1CON レジスタの T1RUN ビットは、現在どのク ロック ソースがメイン クロックを供給しているか を示します。OSTS ビットは、オシレータ スタート アップ タイマがタイムアウトし、プライマリ ク ロックがデバイス クロックを供給していることを 示します。IOFS ビットは、内部オシレータ ブロッ クが安定し、HFINTOSC クロック モードでデバイ スのクロックを供給していることを示します。IOFS お よ び OSTS は、SCS<1:0> = 00 に 設 定 さ れ、 HFINTOSC がプライマリ クロックの場合、両方と もセットされます。T1RUN ビットは、タイマ 1 オ シレータが、セカンダリ クロック モードでデバイ ス の ク ロ ッ ク を 供 給 し て い る こ と を 示 し ま す。 SCS<1:0> 00 の場合、これら 3 つのビットのうち、 常にいずれか 1 つだけがセットされます。これらの ビ ッ ト の い ず れ も セ ッ ト さ れ て い な い 場 合 は、 LFINTOSC がクロックを供給しているか、 HFINTOSC が起動したばかりでまだ安定化してい ない状態を示しています。 2.2.5 電源管理 OSCCON レジスタの IDLEN ビットは、SLEEP 命令 を実行したときに、デバイスがスリープ モードま たは、複数のアイドル モードのうちのどれに移行 するかを決定します。 OSCCON レジスタのフラグおよび制御ビットの使 用方法は、3.0 項「電源管理モード」でより詳細に 検討します。 注 1: セカンダリ クロック ソースを選択する には、タイマ 1 オシレータを有効にして おく必要があります。このオシレータ は、T1CON レジスタの T1OSCEN ビッ トをセットすると有効になります。タイ マ 1 オシレータを有効にしておかない と、メイン オシレータが以前に選択し たソースのまま動作を続け、T1OSCEN ビットがセットされた時点で、セカンダ リ オシレータに切り替わります。 2: タイマ1 オシレータの動作が安定してか らセカンダリ クロック ソースを選択す ることを推奨します。不安定なまま選択 すると、タイマ 1 オシレータの起動を待 つ間、非常に長い遅延が発生する可能性 があります。 低周波数の選択 公称出力周波数 31 kHz を使用する場合 (IRCF<2:0> = 000) は、どちらの内部オシレータをソースとして 使用するかを、ユーザーが選択できます。OSCTUNE レジスタの INTSRC ビットによって設定します。こ のビットをセットすると、HFINTOSC ポストスケー ラ出力の 512 分周が有効となり、HFINTOSC が 31.25 kHz のクロック ソースとして選択されます。 INTSRC ビットをクリアすると、LFINTOSC ( 公称 31 kHz) がクロック ソースとして選択されます。 DS41303E_JP - ページ 26 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 2-1: OSCCON: オシレータ制御レジスタ R/W-0 R/W-0 IDLEN IRCF2 R/W-1 IRCF1 R/W-1 IRCF0 R-q OSTS (1) R-0 R/W-0 R/W-0 IOFS SCS1 SCS0 bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 U = 未実装。 「0」として読み出し q = 条件によって変化する値 -n = POR 時の値 '1' = セット '0' = クリア x = 不明 ビット 7 IDLEN: アイドル イネーブル ビット 1 = SLEEP 命令によってデバイスがアイドル モードに移行します。 0 = SLEEP 命令によってデバイスがスリープ モードに移行します。 ビット 6-4 IRCF<2:0>: 内部オシレータ周波数選択ビット 111 = 16 MHz (HFINTOSC が直接クロックを駆動します ) 110 = 8 MHz 101 = 4 MHz 100 = 2 MHz 011 = 1 MHz(3) 010 = 500 kHz 001 = 250 kHz 000 = 31 kHz (HFINTOSC/512 または LFINTOSC が直接クロックを駆動します )(2) ビット 3 OSTS: オシレータ スタートアップ タイムアウト ステータス ビット (1) 1 = CONFIG1 レジスタの FOSC<2:0> で定義されたクロックでデバイスが動作中 0 = 内部オシレータ (HFINTOSC または LFINTOSC) でデバイスが動作中 ビット 2 IOFS: HFINTOSC 周波数の安定性表示ビット 1 = HFINTOSC の周波数が安定 0 = HFINTOSC の周波数が不安定 ビット 1-0 SCS<1:0>: システム クロック選択ビット 1x = 内部オシレータ ブロック 01 = セカンダリ ( タイマ 1) オシレータ 00 = CONFIG1H[FOSC<3:0>] で定義したプライマリ クロック 注 1: 2: 3: リセットの状態は、構成ビット IESO の状態に依存します。 OSCTUNE レジスタの INTSRC ビットで選択されたソース。本文を参照してください。 リセット時の HFINTOSC のデフォルト出力周波数 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 27 PIC18F2XK20/4XK20 2.3 2.4 クロック ソース モード 外部クロック モード クロック ソース モードは外部または内部の 2 つに 分類されます。 2.4.1 • 外部クロック モードでは、クロック ソースに外部 回路を使用します。以下に例を示します。クロッ ク モジュール (EC モード )、水晶振動子またはセ ラミック振動子 (LP、XT、HS モード )、抵抗 / コ ンデンサ回路 (RC モード ) などがあります。 • チップ内のオシレータ ブロックに含まれる内部 クロック ソース。オシレータ ブロックには、 16 MHz の高周波数内部オシレータ (HFINTOSC) および 31 kHz の低周波数内部オシレータの (LFINTOSC)、2 つの内部オシレータがあります。 オシレータ モジュールが LP、XT、HS モードのい ずれかに設定されている場合、オシレータ スター トアップ タイマ (OST) は OSC1 からの発振を 1024 回カウントします。カウントは、パワーオン リセッ ト (POR) 後のパワーアップ タイマ (PWRT) のタイ ムアウト時 ( 設定されている場合 )、またはスリー プからのウェイクアップ後に実行されます。カウン ト実行中は、プログラム カウンタはインクリメン トせず、プログラム実行は一時停止します。水晶振 動子またはセラミック振動子を使用したオシレー タ回路の場合、OST によって、起動後の動作が安定 したシステム クロックをオシレータ モジュールに 供給できるようになります。クロック ソースを切 り替えた場合は、新しいクロックが安定するまで遅 延が必要です。このようなオシレータの遅延を表 21 に示します。 システム クロックに外部クロック ソースと内部ク ロック ソースのどちらを使用するかは、OSCCON レジスタのシステム クロック選択 (SCS<1:0>) ビッ トで選択します。詳細は、2.9 項「クロックの切り 替え」を参照してください。 オシレータ スタートアップ タイマ (OST) 外部オシレータのスタートアップからコード実行 までの遅延を最小限に抑えるには、2 段速クロック スタートアップ モードを選択します (2.10 項「2 段 速クロック スタートアップ モード」参照 )。 表 2-1: オシレータの遅延の例 Switch From Switch To Frequency Oscillator Delay Sleep/POR LFINTOSC HFINTOSC 31 kHz 250 kHz to 16 MHz Oscillator Warm-Up Delay (TWARM) Sleep/POR EC, RC DC – 64 MHz 2 instruction cycles LFINTOSC (31 kHz) EC, RC DC – 64 MHz 1 cycle of each Sleep/POR LP, XT, HS 32 kHz to 40 MHz 1024 Clock Cycles (OST) Sleep/POR HSPLL 32 MHz to 64 MHz 1024 Clock Cycles (OST) + 2 ms LFINTOSC (31 kHz) HFINTOSC 250 kHz to 16 MHz 1 s (approx.) 2.4.2 図 2-2: EC モード 外部クロック (EC) モードでは、外部で生成された ロジック レベルをシステム クロック ソースとして 使用できます。このモードでの動作中は、外部ク ロック ソースが OSC1 入力に接続され、OSC2 は汎 用 I/O として使用できます。EC モードにおけるピン の接続図を図 2-2 に示します。 EC モード選択時は、オシレータ スタートアップ タ イマ (OST) は無効になります。このため、パワーオ ン リセット (POR) 後またはスリープからのウェイ ク ア ップ 後 に 動 作 の 遅 延 は 発 生し ま せ ん。PIC® MCU は完全スタティック設計であるため、外部ク ロック入力を停止すると、すべてのデータがそのま まの状態でデバイスが動作を中断します。外部ク ロックが再開すると、停止直後の状態からデバイス は動作を再開します。 DS41303E_JP - ページ 28 外部クロック (EC) モードによる動作 OSC1/CLKIN Clock from Ext. System PIC® MCU I/O 注 1: Preliminary OSC2/CLKOUT(1) ピンの代替機能は、1.0 項「デバイス概要」の 一覧表を参照してください。 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 2.4.3 LP、XT、HS モード LP、XT、HS モードでは、水晶振動子またはセラ ミック振動子を OSC1 と OSC2 に接続して使用でき ます ( 図 2-3)。使用する振動子の種類や速度に合わ せてモードを切り替えることにより、内部インバー タ アンプが高 / 中 / 低ゲインに設定されます。 注 1: LP オシレータ モードでは、内部インバータ アンプ のゲインが最も低く設定されます。3 つのモードの うち、消費電流が最も少ないのがこのモードです。 このモードは、音叉タイプの水晶振動子など駆動レ ベルの仕様値が低い振動子に最も適しています。 2: アプリケーションで想定される VDD お よび温度範囲でオシレータの性能を必 ず検証してください。 3: オシレータの設計には、マイクロチップ 社の次のアプリケーション ノートを参 照してください。 XT オシレータ モードでは、内部インバータ アンプ のゲインが中間に設定されます。消費電流も 3 つの モードの中間となります。このモードは、駆動レベ ルの仕様値が中程度の振動子に最も適しています。 • AN826『Crystal Oscillator Basics and Crystal Selection for rfPIC® and PIC® Devices』(DS00826) • AN849『Basic PIC® Oscillator Design』 (DS00849) HS オシレータ モードでは、内部インバータ アンプ のゲインが最大に設定されます。3 つのモードのう ち、消費電流が最も大きくなります。このモードは、 駆動レベルを高く設定する必要がある振動子に最も 適しています。 図 2-3 と図 2-4 に、それぞれ水晶振動子とセラミッ ク振動子を使用した代表的な回路図を示します。 図 2-3: 水晶振動子の特性は、種類、パッケージ、 メーカーにより異なります。仕様および 推奨アプリケーションについては、各 メーカーのデータシートを参照してくだ さい。 • AN943『Practical PIC® Oscillator Analysis and Design』(DS00943) • AN949『Making Your Oscillator Work』 (DS00949) 図 2-4: 水晶振動子による動作 (LP、XT、HS モード ) セラミック振動子による動作 (XT、HS モード ) PIC® MCU PIC® MCU OSC1/CLKIN OSC1/CLKIN C1 To Internal Logic Quartz Crystal C2 C1 RS (1) RF(2) RP(3) RF(2) Sleep Sleep C2 Ceramic RS (1) Resonator OSC2/CLKOUT 注 1: 駆動レベルの低い水晶振動子の場合、直列抵抗 (RS) が必要となる場合があります。 2: RF の値は、選択したオシレータ モードによって 異なります ( 通常は 2 M ~ 10 M。 2009 Microchip Technology Inc. To Internal Logic OSC2/CLKOUT 注 1: 駆動レベルの低いセラミック振動子の場合、直 列抵抗 (RS) が必要となる場合があります。 2: RF の値は、選択したオシレータ モードによって 異なります ( 通常は 2 M ~ 10 M。 3: セラミック振動子を適正に動作させるには、並 列フィードバック抵抗 (RP) の追加が必要となる 場合があります。 Preliminary DS41303E_JP - ページ 29 PIC18F2XK20/4XK20 2.4.4 2.5 外部 RC モード 外部 RC ( 抵抗 / コンデンサ ) モードでは、外付けの RC 回路が使用できます。クロックの精度がそれほ ど必要ない場合は、このモードによってコストを最 小限に抑えながら、周波数選択の自由度を高められ ます。RC および RCIO の 2 つのモードがあります。 2.4.4.1 図 2-5: PIC® MCU REXT OSC1/CLKIN Internal Clock CEXT VSS FOSC/4 or I/O(2) OSC2/CLKOUT(1) 推奨値 : 10 k REXT 100 k CEXT > 20 pF 2: 2.4.4.2 1. ピンの代替機能は、1.0 項「デバイス概要」の一 覧表を参照してください。 出力は RC と RCIO の各クロック モードで異なり ます。 RCIO モード RCIO モードでは、RC 回路を OSC1 に接続します。 OSC2 は汎用 I/O ピンとして利用できます。 RC オシレータの周波数は、電源電圧、抵抗 (REXT)、 コンデンサ(CEXT)の値と動作温度の関数として決定 されます。これ以外にオシレータの周波数に影響す る要因として、次のものがあります。 • 入力スレッショルド電圧のばらつき • 部品の許容誤差 • パッケージ容量のばらつき 使用する外付け RC 部品の許容誤差によるばらつき も考慮する必要があります。 DS41303E_JP - ページ 30 2. HFINTOSC ( 高周波数内部オシレータ ) は工場 出荷時に較正されており、16 MHz で動作しま す。HFINTOSC の周波数は、OSCTUNE レジス タ ( レジスタ 2-2) を使用して、ユーザーがソフ トウェアで調整できます。 LFINTOSC ( 低周波数内部オシレータ ) は 31 kHz で動作します。 システムのクロック速度は、OSCCON レジスタの 内部オシレータ周波数選択ビットIRCF<2:0>を使用 して、ソフトウェアで選択できます。 システム クロックに外部クロック ソースと内部ク ロック ソースのどちらを使用するかは、OSCCON レジスタのシステム クロック選択 (SCS<1:0>) ビッ トで選択します。詳細は、2.9 項「クロックの切り 替え」を参照してください。 外部 RC モード VDD 注 1: オシレータ モジュールには 2 つの独立した内部オ シレータがあり、システム クロック ソースとして 設定 / 選択できます。 RC モード RC モードでは、RC 回路を OSC1 に接続します。 OSC2/CLKOUT からは 4 分周された RC オシレータ 周波数が出力されます。この信号は、外部回路、同 期、較正、テスト、その他のアプリケーションのク ロックとして使用できます。外部 RC モードの回路 図を図 2-5 に示します。 内部クロック モード 2.5.1 INTOSC および INTOSCIO モード INTOSC および INTOSCIO モードでは内部オシレー タをプライマリ クロック ソースに設定します。構 成レジスタ CONFIG1H の FOSC<3:0> ビットによっ てモードを選択します。詳細は、23.0 項「CPU の 特殊機能」を参照してください。 INTOSC モードでは、OSC1/CLKIN を汎用 I/O とし て利用できます。OSC2/CLKOUT からは、選択した 内部オシレータの 4 分周された周波数が出力されま す。CLKOUT 信号は、外部回路、同期、較正、テス ト、その他のアプリケーションのクロックとして使 用できます。 INTOSCIO モードでは、OSC1/CLKIN と OSC2/ CLKOUT の両方を汎用 I/O として利用できます。 2.5.2 HFINTOSC HFINTOSC の出力は、ポストスケーラとマルチプレ クサに接続されています ( 図 2-1 参照 )。周波数は、 OSCCON レジスタの IRCF<2:0> ビットを使用して、 8 種類のうちいずれか 1 つをソフトウェアで選択で きます。詳細は、2.5.4 項「周波数選択ビット (IRCF)」 を参照してください。 HFINTOSC は次の場合に有効になります。 • SCS1 = 1 かつ IRCF<2:0> 000 • SCS1 = 1 かつ IRCF<2:0> = 000 かつ INTSRC = 1 • CONFIG1H レジスタの IESO ビット = 1 にする と、2 段速スタートアップが有効になります。 • CONFIG1H レジスタの FCMEN ビット = 1 にす ると、2 段速スタートアップおよびフェイルセー フ モードが有効になります。 • CONFIG1H レジスタの FOSC<3:0> を選択する と、プライマリ クロックとして内部オシレータ が選択されます。 OSCCON レジスタの HF 内部オシレータ (IOFS) ビッ トには、HFINTOSC の状態 ( 安定または不安定 ) が 示されます。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 2.5.2.1 OSCTUNE レジスタ HFINTOSCは工場で較正されていますが、 OSCTUNE レジスタのTUN<5:0>ビットへの書き込みによって、 ソフトウェアでも調整できます ( レジスタ 2-2)。 TUN<5:0> のデフォルト値は「000000」です。値 は 6 ビットの 2 の補数です。 (WDT)、フェイルセーフ クロック モニタ (FSCM)、 周辺機能など、LFINTOSC クロック ソースの周波数 に依存する機能の動作は影響を受けません。 OSCTUNE レジスタには内部オシレータ ブロック の一部の機能を制御するINTSRCおよびPLLENビッ トが実装されています。 OSCTUNE レジスタを変更すると、HFINTOSC の周 波数は新たに設定した値への移行をただちに開始 します。この移行中も、コード実行は継続されます。 周波数が変化したことを知らせる手段は備えられ ていません。 INTSRC ビットでは、31 kHz の周波数オプションを 選択したときに、どちらの内部オシレータをクロッ ク ソースとして使用するかを選択できます。これ については、2.2.3 項「低周波数の選択」で詳細に 説明しています OSCTUNE レジスタの設定は、LFINTOSC の周波数 には影響しません。周波数を変更しても、パワー アップ タイマ (PWRT)、ウォッチドッグ タイマ PLLEN ビットは、内部オシレータ モードにおける 周波数逓倍器、PLL の動作を制御します。PLLEN ビットの詳細な機能は、2.6.2 項「HFINTOSC モー ドの PLL」を参照してください。 レジスタ 2-2: OSCTUNE: オシレータ調整レジスタ R/W-0 R/W-0 INTSRC PLLEN (1) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 TUN5 TUN4 TUN3 TUN2 TUN1 TUN0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 INTSRC: 内部オシレータ低周波数ソース選択ビット 1 = 16 MHz の HFINTOSC ソースから派生 (512 分周 ) した 31.25 kHz のデバイス クロックを 使用 0 = 31 kHz のデバイス クロックを内部オシレータ LFINTOSC から直接供給 ビット 6 PLLEN: HFINTOSC の周波数逓倍 PLL のイネーブル ビット (1) 1 = HFINTOSC (8 MHz および 16 MHz のみ ) に対する PLL を有効化 0 = PLL は無効 ビット 5-0 TUN<5:0>: 周波数調整ビット 011111 =最大周波数 011110 = ••• 000001 = 000000 =オシレータ モジュールは工場出荷時に較正された周波数で動作 111111 = ••• 100000 =最小周波数 注 1: PLLEN ビットが機能するのは、HFINTOSC がプライマリ クロック ソースで (FOSC<2:0> = 100X)、選 択した周波数が 8 MHz または 16 MHz の場合のみです。それ以外の場合 PLLEN ビットは使用できず、 常に「0」と読み出されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 31 PIC18F2XK20/4XK20 2.5.3 LFINTOSC 低周波数内部オシレータ (LFINTOSC) は、31 kHz の 内部クロック ソースです。 LFINTOSC の出力は、内部オシレータ ブロックの 周波数選択マルチプレクサに接続されています ( 図 2-1 参照 )。OSCCON レジスタの IRCF<2:0> ビット、 および OSCTUNE レジスタの INTSRC ビットを使用 して、ソフトウェアで 31 kHz を選択します。詳細 は、2.5.4 項「周波数選択ビット (IRCF)」を参照し てください。LFINTOSC は、パワーアップ タイマ (PWRT)、ウォッチドッグ タイマ (WDT)、フェイル セーフ クロック モニタ (FSCM) の周波数としても 使用されます。 LFINTOSC は、次のいずれかが有効になると動作し ます。 • OSCCON レジスタの IRCF<2:0> ビット = 000 かつ OSCTUNE レジスタの INTSRC ビット = 0 • パワーアップ タイマ (PWRT) • ウォッチドッグ タイマ (WDT) • フェイルセーフ クロック モニタ (FSCM) 2.5.4 周波数選択ビット (IRCF) 16 MHz HFINTOSC と 31 kHz LFINTOSC の出力は、 ポストスケーラとマルチプレクサに接続されてい ます ( 図 2-1 参照 )。OSCCON レジスタの内部オシ レータ周波数選択ビット IRCF<2:0> で、内部オシ レータの出力周波数を選択します。周波数は、ソフ トウェアで次の 8 つのいずれかを選択できます。 • 16 MHz • 8 MHz • 4 MHz • 2 MHz • 1 MHz ( リセット後のデフォルト ) • 500 kHz • 250 kHz • 31 kHz (LFINTOSC または HFINTOSC/512) 注: 2.5.5 何らかのリセットが発生すると、OSCCON レジスタの IRCF<2:0> ビットが「011」に セットされ、周波数は 1 MHz が選択され ます。IRCF ビットを変更すれば、別の周 波数を選択できます。 HFINTOSC の周波数ドリフト 内部オシレータ ブロックの出力 (HFINTOSC) は、工 場出荷時に 16 MHz で較正されます。しかし、この 周波数は VDD や温度の変化によりドリフトする可能 性があり、これがコントローラの動作にさまざまな 影響を与えます。このため OSCTUNE レジスタの TUN<5:0> ビットの値を変更することで、ソフトウェ アによる HFINTOSC 周波数の調整が可能になってい ます。この調整は、LFINTOSC クロック ソースの周 波数には影響を与えません。 DS41303E_JP - ページ 32 HFINTOSC ソースを調整する場合、いつ調整を実行 するのか、調整する方向は正か負か、場合によって は調整する量まで把握しておく必要があります。以 降の項では可能な補償方法を検討しますが、これら 以外の方法でも調整は可能です。 2.5.5.1 USART による補償 USART でフレーミング エラーが続けて発生した り、非同期モード時に誤差を含むデータを受信した りするときは、調整が必要な場合があります。フ レーミング エラーは、デバイスのクロック周波数 が高すぎることを意味します。したがって、これを 調整するにはOSCTUNEの値をデクリメントしてク ロック周波数を下げます。一方、データに誤差が含 まれるのはクロック速度が遅すぎる可能性を表し ています。これを補償するには OSCTUNE の値をイ ンクリメントしてクロック周波数を高くします。 2.5.5.2 タイマによる補償 この手法では、デバイス クロックの速度を何らかの リファレンス クロックと比較します。2 つのタイマ を使用します。1 つは周辺クロックによって動作さ せ、もう一方はタイマ 1 オシレータなどの固定され たリファレンス ソースからクロックを供給します。 両方のタイマをクリアしますが、リファレンスから クロックを供給されているタイマは割り込みを発 生します。割り込みが発生した時点で、内部クロッ クで動作するタイマの値を読み出し、両タイマをク リアします。内部クロックで動作するタイマの値が 予想より大きかった場合、内部オシレータ ブロッ クの動作が速すぎます。したがって、これを調整す るには OSCTUNE レジスタをデクリメントします。 2.5.5.3 キャプチャ モードを用いた CCP モジュールによる補償 CCP モジュールで、内部オシレータ ブロックよりク ロックを供給されたフリー ランニング状態のタイ マ 1 ( またはタイマ 3) と、周期が既知の外部のイベ ント (AC 電源の周波数など ) を使用します。第 1 の イベントの時刻を CCPRxH:CCPRxL レジスタにキャ プチャし、後ほど使用するために記録します。次に、 第 2 のイベントによるキャプチャが実行されたら、 その時刻から第 1 のイベントの時刻を引きます。外 部イベントの周期は既知であるため、イベント間の 時刻の差を計算できます。 キャプチャされた時刻の差が計算値よりはるかに 大きかった場合は、内部オシレータ ブロックの動作 が速すぎます。OSCTUNE レジスタをデクリメント して補償してください。逆に計算値よりはるかに小 さかった場合は、内部オシレータ ブロックの動作が 遅すぎます。OSCTUNE レジスタをインクリメント して補償してください。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 2.6 PLL 周波数逓倍器 2.6.2 より低周波数のオシレータ回路が必要な場合、また はデバイスを水晶振動子によって最大定格周波数 で駆動する必要がある場合のために、PLL ( フェー ズ ロック ループ ) 回路が搭載されています。この 回路は高周波の水晶振動子による EMI を懸念する ユーザー、または内部オシレータによる高速のク ロックを必要とするユーザーに適しています。PLL は、次の 3 つの条件で使用できます。 • プライマリ クロック モードが HSPLL • プライマリ クロックが HFINTOSC で、周波数に 16 MHz を選択 • プライマリ クロックが HFINTOSC で、周波数に 8 MHz を選択 2.6.1 HSPLL オシレータ モード HSPLL モードでは最大周波数 16 MHz の HS モード オシレータを使用します。PLL がこのオシレータ出 力周波数を 4 倍して、最大周波数 64 MHz までの内 部クロックを発生します。OSCTUNE レジスタの PLLEN ビットは、HFINTOSC がプライマリ クロッ クの場合にのみ機能し、HSPLL オシレータ モード では使用できません。 HFINTOSC モードの PLL 内部オシレータ ブロックに 4x 周波数逓倍器を適用 して、内部オシレータで通常可能な周波数よりも高 いデバイス クロックを発生できます。PLL を有効 にすると、最大クロック周波数として 64 MHz が得 られます。 HSPLL モードとは異なり、PLL はソフトウェアに よって制御されます。HFINTOSC を使用している場 合に、OSCTUNE レジスタの制御ビット PLLEN に よって PLL 動作を有効または無効に設定します。 PLL を使用できるのは、内部オシレータ ブロックを プライマリ クロック ソースとして使用するように 設定した場合です(FOSC<3:0> = 1001または1000)。 更に、選択した出力周波数が 8 MHz または 16 MHz のいずれかでなければなりません (OSCCON<6:4> = 111 または 110)。これら両方の条件がともに満たさ れない限り、PLL は無効となります。 制御ビット PLLEN は、PLL を使用できるこれらの 内部オシレータ モードのみで機能します。その他 のモードではいずれも強制的に「0」となり、実質 的に利用できなくなります。 PLL は、構成ビット FOSC<3:0> を HSPLL モードに プログラムした場合 (= 0110) に限り、プライマリ オシレータにのみ適用できます。 図 2-6: PLL のブロック図 (HS モード ) HS Oscillator Enable PLL Enable (from Configuration Register 1H) OSC2 HS Mode OSC1 Crystal Osc FIN Phase Comparator FOUT Loop Filter VCO MUX 2009 Microchip Technology Inc. SYSCLK Preliminary DS41303E_JP - ページ 33 PIC18F2XK20/4XK20 2.7 さまざまなクロック ソースに対する 電源管理モードの影響 この項で述べるモードの詳細は、3.0 項「電源管理 モード」を参照してください。表 3-1 は、電源管理 モードの早見表です。 PRI_IDLE モードを選択した場合、指定されたプラ イマリ オシレータが中断されることなく動作を続 けます。電源管理のその他のモードでは、いずれも OSC1 ピンを使用するオシレータが無効になりま す。OSC1 ピン ( およびオシレータが使用している 場合は OSC2 ピン ) の発振が停止します。 セカ ンダ リ クロ ック モー ド (SEC_RUN およ び SEC_IDLE) では、タイマ 1 オシレータが動作してデ バイス クロックを供給します。タイマ 1 またはタ イマ 3 にクロックを供給する必要がある場合も、タ イマ 1 のオシレータはすべての電源管理モードで動 作します。 内部オシレータ モード (INTOSC_RUN および INTOSC_IDLE) では、内部オシレータ ブロックがデ バイス クロックのソースになります。31 kHz の LFINTOSC 出力は、そのままクロック ソースとし て使用でき、電源管理モードの状態にかかわらず各 種特殊機能をサポートします (2 段速スタートアッ プ、フェイル セーフ クロック モニタ、WDT の詳 細は、2.10 項「2 段速クロック スタートアップ モー ド」、2.11 項「フェイルセーフ クロック モニタ」、 23.2 項「ウォッチドッグ タイマ (WDT)」を参照し てください )。16 MHz の HFINTOSC 出力は、デバ イス クロックとして直接使用するか、 ポストスケー ラによって分周できます。 クロックが LFINTOSC 出 力から直接供給される場合、HFINTOSC 出力は無効 になります。 スリープ モードを選択すると、すべてのクロック ソースが停止します。スリープ モードでは、トラ ンジスタのスイッチング電流が一切流れなくなる ため、デバイスの消費電流は最低になります ( リー ク電流のみ )。 スリープ中に動作する何らかのオンチップ機能を 有効にした場合、スリープ モードの消費電流が増 加します。WDT を動作させるには LFINTOSC が必 要です。タイマ 1 オシレータを動作させれば、リア ルタイム クロックをサポートできます。デバイス クロック ソースを必要としないその他の機能 (SSP 表 2-2: 2.8 電源投入時の遅延 電源投入時の遅延は 2 つのタイマで制御されるた め、ほとんどのアプリケーションでは外付けのリ セット回路は不要です。この遅延は、デバイス電源 が通常の安定状態になり、プライマリ クロックの 安定した動作が得られるまで、デバイスをリセット 状態に保つために設けられています。電源投入時の 遅延に関する詳細は、4.5 項「デバイス リセット タ イマ」を参照してください。 第 1 のタイマは、電源投入時に一定の遅延を発生さ せるパワーアップ タイマ (PWRT) です ( 表 26-10 の パラメータ 33)。 このタイマは、 構成ビット PWRTEN をクリアする (= 0) と有効になります。 第 2 のタイマは、オシレータ スタートアップ タイ マ (OST) で、これは水晶振動子が安定するまでチッ プをリセット状態に維持するためのものです (LP、 XT、HS モード )。オシレータのクロックを 1024 サ イクル数えることで、デバイスへのクロック供給開 始を遅延させます。 HSPLL オシレータ モードを選択している場合は、 HS モードの OST 遅延の後、更に 2 ms の間リセッ トを保ち、PLL が入力クロック周波数にロックでき るようにします。 POR 後、コントローラが命令を実行できるようにな るまでに TCSD ( 表 26-10 のパラメータ 38) の遅延が あります。この遅延時間は、他のすべての遅延と並 行して経過します。プライマリ クロック ソースに EC、RC、INTIO モードのいずれかを使用している 場合は、この遅延だけが発生します。 プライマリ クロックに HFINTOSC を選択した場合 は、HFINTOSC が安定するまでメイン システム ク ロックを遅延させることができます。遅延の有無 は、構成レジスタ CONFIG3H の HFOFST ビットに よってユーザーが選択できます。HFOFST ビットを クリアすると、HFINTOSC が安定するまでメイン システム クロックが遅延します。HFOFST ビットを セットした場合、メイン システム クロックはただ ちに起動します。いずれの場合も、OSCCON レジ スタの IOFS ビットを読み出すことで、HFINTOSC の状態 ( 安定または不安定 ) を判断できます。 スリープ モードにおける OSC1 および OSC2 ピンの状態 OSC Mode RC, INTOSC RCIO INTOSCIO ECIO EC LP, XT, HS and HSPLL 注: スレーブ、PSP、INTn など ) も使用できます。消費 電流を著しく増加させる周辺回路は、26.8 項「DC 特性」を参照してください。 OSC1 Pin Floating, external resistor should pull high Floating, external resistor should pull high Configured as PORTA, bit 7 Floating, pulled by external clock Floating, pulled by external clock Feedback inverter disabled at quiescent voltage level OSC2 Pin At logic low (clock/4 output) Configured as PORTA, bit 6 Configured as PORTA, bit 6 Configured as PORTA, bit 6 At logic low (clock/4 output) Feedback inverter disabled at quiescent voltage level スリープおよび MCLR リセットによるタイムアウトは 4.0 項「リセット」の表 4-2 を参照してください。 DS41303E_JP - ページ 34 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 2.9 クロックの切り替え システム クロック ソースに外部クロック ソースと 内 部 ク ロ ッ ク ソ ー ス の ど ち ら を 使 用 す る か は、 OSCCON レジスタの シ ス テ ム クロック選択 (SCS<1:0>) ビットを使用して、ソフトウェアで切り 替えることができます。 PIC18F2XK20/4XK20 デバイスは、クロック ソース を切り替える際のクロックの「グリッチ」を防止す る回路を搭載しています。クロック切り替え時に は、デバイス クロックが短時間停止します。この 一時停止の時間は、切り替える前のクロック ソー スの 2 サイクルと、切り替え後のクロック ソース の 3 ~ 4 サイクルの合計になります。ただし、この 式は切り替え後のクロックが安定していることを 前提としています。 クロックの遷移については、3.1.2 項「電源管理モー ドへの移行」で詳細に検討します。 2.9.1 システム クロック選択 (SCS<1:0>) ビット OSCCON レジスタのシステム クロック選択 (SCS<1:0>) ビットで、CPU および周辺機能に使用 するシステム クロック ソースを選択します。 • SCS<1:0> = 00 の場合、システム クロック ソース は構成レジスタ CONFIG1H の FOSC<2:0> ビット によって決まります。 • SCS<1:0> = 10 の場合、システム クロック ソース は、OSCTUNE レジスタの INTSRC ビットおよび OSCCON レジスタの IRCF<2:0>ビットで選択され た周波数の内部オシレータになります。 • SCS<1:0> = 01 の場合、システム クロック ソース はタイマ 1 と共通の 32.768 kHz のセカンダリ オ シレータになります。 リセット後は、OSCCON レジスタの SCS<1:0> ビッ トは必ずクリアされます。 注: 2.9.2 2 段速スタートアップまたはフェイルセー フ クロック モニタにおいて自動的にク ロックが切り替わった場合も、OSCCON レジスタの SCS<1:0> ビットが更新される ことは ありませ ん。現 在のシス テム ク ロック ソースを判断するには、T1CON レ ジスタの T1RUN ビットおよび OSCCON レジスタの IOFS と OSTS ビットをモニタ します。 プライマリ クロック ソースの場合、LP、XT、ある いは HS モードでオシレータ スタートアップ タイ マ (OST) がタイムアウトになったかどうかを OSTS ビットを参照することで確認できます。 2.9.3 クロック切り替えのタイミング オシレータを切り替える場合、切り替え先として省 電力動作中のオシレータは選択できません ( 図 2-7 参 照 )。こ の よ う な 場 合、OSCCON レ ジ ス タ の SCS<1:0> ビットを変更してから実際に周波数が切 り替わるまでに遅延が生じます。OSCCON レジス タの OSTS ビットと IOFS ビットには、外部および HFINTOSC のオシレータの現在のアクティブな状 態が示されます。周波数選択のタイミングは次のと おりです。 1. 2. 3. 4. 5. 6. 7. OSCCON レジスタの SCS<1:0> ビットが変更さ れます。 切り替え先のクロックが使用できるようにな るまで、現在のクロックが動作を継続します。 クロック切り替え回路が、切り替え先のクロッ クのレディ信号が真になった時点から、現在の クロックの連続する立ち上がりエッジを 2 回待 ちます。 現在のクロックの次の立ち下がりエッジから、 システム クロックが Low に保持されます。 クロック切り替え回路が、切り替え先のクロッ クの立ち上がりエッジを 2 回待ちます。 切り替え先のクロックの次の立ち下がりエッジ で Low に保持されていたシステム クロックが 解放され、新しいクロックに切り替わります。 クロック切り替えが完了します。 詳細は、図 2-1 を参照してください。 切り替え前後の周波数のソースが両方とも HFINTOSC の場合、新しい周波数が有効になるまで のスタートアップ遅延はありません。これは、変更 前と変更後のいずれの周波数も、ポストスケーラと マルチプレクサを経由して HFINTOSC から派生さ せているためです。 スタートアップ遅延の仕様は、26.0 項「電気的特 性」の AC 仕様 ( オシレータ モジュール ) を参照し てください。 オシレータ スタートアップ タイム アウト ステータス (OSTS) ビット OSCCON レジスタのオシレータ スタートアップ タ イムアウト ステータス (OSTS) ビットには、現在の システム クロックが構成レジスタ CONFIG1H の FOSC<3:0> ビットで定義された外部クロック ソー スと内部クロック ソースのどちらで動作している かが示されます。特に、プライマリ オシレータが 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 35 PIC18F2XK20/4XK20 2.10 2段速クロック スタートアップ モード 2 段速スタートアップ モードは、外部オシレータの スタートアップからコード実行までの遅延を最小 限に抑えることによって、省電力性を更に高める働 きをします。2 段速スタートアップ モードでは外部 オシレータのスタートアップ時間をスリープ期間 に含めることができるため、特にスリープ モード を多用するアプリケーションにおいてデバイスの 全体的な消費電力を削減できます。 アプリケーションでこのモードを使用すると、少数 の命令を実行するときに、スリープからウェイク アップし、プライマリのオシレータが安定するのを 待たずに HFINTOSC クロック ソースで実行を完了 し、スリープに戻ることができます。 注: SLEEP 命令を実行するとオシレータのス タートアップ時間は中断され、OSCCON レ ジスタの OSTS ビットはクリアされたまま になります。 オシレータ モジュールが LP、XT、または HS モー ドに設定されている場合、 オシレータ スタートアッ プ タイマ (OST) が有効となります (2.4.1 項「オシ レータ スタートアップ タイマ (OST)」参照 )。OST は、1024 回の発振がカウントされるまでプログラ ム実行を一時停止します。2 段速スタートアップ モードでは、OST のカウント中は内部オシレータで 動作するため、コード実行までの遅延が最小限に抑 えられます。OSCCON レジスタの OSTS ビットが セットされている場合、OST のカウント回数が 1024 に達すると、プログラムの実行は外部オシレータに 切り替わります。 2.10.1 外部クロック オシレータが LP、XT、HS 以外のモー ドに設定されている場合、2 段速スタートアップは 無効となります。これは外部クロック オシレータ が、POR 後またはスリープからのウェイクアップ後 に安定化の時間を必要としないためです。 2.10.2 1. 2. 3. 4. 5. 6. 2 段速スタートアップのシーケンス パワーオン リセットまたはスリープからウェイ アップします。 OSCCON レジスタの IRCF<2:0> ビットで設定し た周波数の内部オシレータで、命令の実行が開 始されます。 OST が有効になり、外部クロックの 1024 サイ クルをカウントします。 OST がタイムアウトし、外部クロックを使用で きるようになります。 OSTS がセットされます。 図 2-7「クロック切り替えタイミング」に従い、 クロックの切り替えが完了します。 2.10.3 2 段速クロック ステータスの確認 OSCCON レジスタの OSTS ビットの状態を参照する と、マ イ ク ロ コ ン ト ロ ー ラ が 構 成 レ ジ ス タ CONFIG1H の FOSC<2:0> ビットで定義した外部ク ロック ソースで動作しているのか、内部オシレー タで動作しているのかを確認できます。外部オシ レータの準備が整っていない場合、OSTS = 0 とな り、これはシステムが内部オシレータで動作してい ることを意味します。 2 段速スタートアップ モードの設定 2 段速スタートアップ モードは、デバイスが次の設 定条件をすべて満たしている場合にのみ有効とな ります。 • 構成レジスタ CONFIG1H の IESO ビットがセッ トされ、2 段速スタートアップ モードが有効に なっていること。デフォルトでは、フェイル セーフ モード (FCMEN = 1) でも 2 段速スタート アップが有効化されます。 • OSCCON レジスタの SCS<1:0> = 00 • 構成レジスタ CONFIG1H の FOSC<2:0> ビット が LP、XT、HS のいずれかのモードに設定され ていること。 以上のとおり設定すると、次のいずれかの時点で 2 段速スタートアップ モードに移行します。 • パワーオン リセット (POR) 後。ただしパワー アップ タイマ (PWRT) が有効な場合は、PWRT のタイムアウト後 • スリープからのウェイクアップ後 DS41303E_JP - ページ 36 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 2-7: クロック切り替えタイミング High Speed Low Speed Old Clock Start-up Time(1) Clock Sync Running New Clock New Clk Ready IRCF <2:0> Select Old Select New System Clock Low Speed High Speed Old Clock Start-up Time(1) Clock Sync Running New Clock New Clk Ready IRCF <2:0> Select Old Select New System Clock 注 1: スタートアップ時間には外部クロックの場合は TOST (1024 x TOSC)、HSPLL モードの場合は TPLL ( 約 2 ms) が含まれます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 37 PIC18F2XK20/4XK20 2.11 フェイルセーフ クロック モニタ フェイルセーフ クロック モニタ (FSCM) により、外 部オシレータに障害が発生してもデバイスは動作 を継続できます。オシレータ スタートアップ タイ マ (OST) のタイムアウト後であれば、FSCM は随時 オシレータの障害を検出できます。FSCM を有効に するには、構成レジスタ CONFIG1H の FCMEN ビッ トをセットします。FSCM はすべての外部オシレー タ モード (LP、XT、HS、EC、RC、および RCIO) に適用されます。 図 2-8: Clock Monitor Latch LFINTOSC Oscillator 64 31 kHz (~32 s) 488 Hz (~2 ms) S Q R Q Sample Clock 2.11.1 フェイルセーフ状態の解消 フェイルセーフ状態は、次のいずれかの動作によっ て解消されます。 • あらゆるリセット • OSCCON レジスタの SCS1 ビットのトグル 2.11.4 Clock Failure Detected フェイルセーフの検出 FSCM モジュールは、外部オシレータと FSCM サン プル クロックを比較することで、オシレータの障 害を検出します。サンプル クロックは LFINTOSC を 64 分周して生成します ( 図 2-8 参照 )。フェイル 検知器ブロックの内部はラッチとなっています。外 部クロックの立ち下がりエッジごとに、ラッチが セットされます。そして、サンプル クロックの立 ち上がりエッジごとに、ラッチがクリアされます。 サンプル クロックが 1/2 サイクル経過してもプライ マリ クロックが Low にならない場合に障害として 検出されます。 2.11.2 2.11.3 いずれの条件も OST を再起動します。OST の実行 中、デ バ イ ス は OSCCON レ ジ ス タ で 選 択 し た INTOSC で動作を継続します。OST がタイムアウト になると、フェイルセーフ状態が解消され、デバイ スは自動的に外部クロック ソースに切り替わりま す。OSCFIF フラグがクリアされる前にフェイル セーフ状態を解消する必要はありません。 FSCM のブロック図 External Clock FSCM によって選択される内部クロック ソースは、 OSCCON レジスタの IRCF<2:0> ビットで決定しま す。このため、障害が発生する前に内部オシレータ を設定できます。 リセットまたはスリープからの ウェイクアップ FSCM は、オシレータ スタートアップ タイマ (OST) のタイムアウト後にオシレータの障害を検出でき るように設計されています。スリープからのウェイ クアップ後、またはすべての種類のリセット後に、 OST が実行されます。EC または RC クロック モー ドでは OST が実行されないため、リセットまたは ウェイアップの完了後、ただちに FSCM がアクティ ブになります。FSCM が有効になると、2 段速スター トアップも有効になります。このため、デバイスは OST の動作中も常にコードを実行できます。 注: フェイルセーフの動作 オシレータによってスタートアップ時間 が大きく異なるため、オシレータがスター トアップ中は ( すなわちリセットまたはス リープからのウェイクアップ後でないと)、 フェイルセーフ回路はアクティブになり ません。適切な時間の経過後、OSCCON レ ジスタの OSTS ビットを参照してオシレー タ スタートアップの状態を確認し、システ ム クロックのスイッチオーバが正常に終 了したかどうかを確認してください。 外部クロックに障害が発生すると、FSCM によって デバイスのクロックが内部クロック ソースに切り 替えられ、PIR2 レジスタの OSCFIF フラグ ビット がセットされます。PIE2 レジスタの OSCFIE ビット もセットされている場合に OSCFIF フラグがセット されると、割り込みが発生します。この時点で、デ バイスのファームウェアはクロック障害の影響を 緩和 す るた めの 対 策を 実 行で きま す。デバ イ ス ファームウェアが外部オシレータを正常に再起動 し、再び外部クロック動作に切り替えるまでの間、 システムは内部クロック ソースで動作を継続しま す。障害が発生したクロック ソースに自動的に遷 移することはありません。 DS41303E_JP - ページ 38 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 2-9: FSCM のタイミング図 Sample Clock Oscillator Failure System Clock Output Clock Monitor Output (Q) Failure Detected OSCFIF Test 注: 表 2-3: Test Test 通常、システム クロックはサンプル クロックよりもはるかに高周波数です。この図では、わかりやすくするた めに両者の周波数比を小さくしてあります。 クロック ソース関連レジスタの一覧 Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Value on POR, BOR Value on all other Resets(1) CONFIG1H IESO FCMEN — — FOSC3 FOSC2 FOSC1 FOSC0 — — INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 0000 000x 0000 000x OSCCON IDLEN IRCF2 IRCF1 IRCF0 OSTS IOFS SCS1 SCS0 0011 q000 0011 q000 OSCTUNE INTSRC PLLEN TUN5 TUN4 TUN3 TUN2 TUN1 TUN0 0000 0000 000u uuuu PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 0000 0000 0000 0000 PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 0000 0000 0000 0000 IPR2 OSCFIP — — — — — — — 1111 1111 1111 1111 記号の説明 : x = 不明。u = 不変。– = 未実装、「0」として読み出し。網掛けのビットはオシレータでは使用しません。 注 1: パワーアップ以外のリセットには、MCLR リセット、および通常動作時のウォッチドッグ タイマ リセットがあります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 39 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 40 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 3.0 電源管理モード のビット設定、クロック ソース、クロックの供給 対象となるモジュールの一覧を表 3-1 に示します。 PIC18F2XK20/4XK20 デバイスには、より高効率の 電源管理を可能とする 7 つの動作モードがありま す。これらのモードは、リソースに制約のあるアプ リケーション ( バッテリ駆動の機器など ) において、 選択的に電力を節減するさまざまなオプションを 提供します。 3.1.1 SCS<1:0> ビットによって、電源管理モードで使用 するクロック ソースを次の 3 つの中から 1 つ選択 します。 • 構成ビットFOSC<3:0>によって定義されるプライ マリ クロック • セカンダリ クロック ( タイマ 1 オシレータ ) • 内部オシレータ ブロック 電源管理モードは、次の 3 種類に分類されます。 • ラン モード • アイドル モード • スリープ モード 3.1.2 各モードでは、クロックの供給対象となるデバイス の部分、場合によってはそのクロック速度を規定し ます。ラン モードおよびアイドル モードでは、3 つ のクロック ソース ( プライマリ、セカンダリ、また は内部オシレータ ブロック ) のすべてを使用可能で す。スリープ モードではクロック ソースを使用しま せん。 電源管理のアイドルまたはスリープ モードへの移 行は、SLEEP 命令の実行によって開始されます。ど のモードに移行するかは、OSCCON レジスタの IDLEN ビットの状態に依存します。 電源管理モードの選択 現在のモードおよび切り替え先のモードによって は、移行するときにこれらのビットのすべてを変更 しなくてもよい場合があります。SLEEP 命令を発行 する前に、 オシレータ選択ビットまたは IDLEN ビッ トを変更するだけで移行できる場合も少なくあり ません。更に、IDLEN ビットも既に適切に設定され ている場合は、SLEEP 命令を実行するだけで、目的 とするモードに切り替えることができます。 電源管理モードを選択する際は、次の 2 つの項目に ついて判断する必要があります。 • CPU へのクロック供給の有無 • クロック ソースの選択 OSCCON レジスタの IDLEN ビットが CPU へのク ロック供給を、OSCCON レジスタの SCS<1:0> ビッ トがクロック ソース選択を制御します。各モード 表 3-1: 電源管理モードへの移行 電源管理モード間の切り替えでは、まず OSCCON レジスタをロードします。SCS<1:0> ビットによっ てクロック ソースが選択され、どのラン モードま たはアイドル モードを使用するかが決まります。 こ れらのビットを変更すると、切り替え先のクロック ソースが動作中ならば、ただちに切り替わります。 切り替え時にクロック遷移のための遅延が発生す る場合があります。これについては、3.1.3 項「ク ロック遷移およびステータス インジケータ」以降 で説明しています。 電源管理モードには、以前の PIC® マイクロコント ローラ デバイスに搭載されていた省電力機能がい くつか含まれています。その一つが、プライマリ オ シレータの代わりにタイマ 1 オシレータを使用する クロック切り替え機能です。また、すべての PIC® マ イクロコントローラ デバイスに含まれるスリープ モードは、本デバイスにも搭載されています。この モードではデバイス クロックをすべて停止します。 3.1 クロック ソース 電源管理モード Mode OSCCON Bits Module Clocking Available Clock and Oscillator Source IDLEN(1) SCS<1:0> CPU Peripherals 0 N/A Off Off PRI_RUN N/A 00 Clocked Clocked Primary – LP, XT, HS, HSPLL, RC, EC and Internal Oscillator Block(2). This is the normal full power execution mode. SEC_RUN N/A 01 Clocked Clocked Secondary – Timer1 Oscillator RC_RUN N/A 1x Clocked Clocked Internal Oscillator Block(2) PRI_IDLE 1 00 Off Clocked Primary – LP, XT, HS, HSPLL, RC, EC SEC_IDLE 1 01 Off Clocked Secondary – Timer1 Oscillator RC_IDLE 1 1x Off Clocked Internal Oscillator Block(2) Sleep 注 1: 2: None – All clocks are disabled IDLEN の値は SLEEP 命令を実行する時点のものです。 HFINTOSC、HFINTOSC ポストスケーラ、LFINTOSC の各ソースを含みます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 41 PIC18F2XK20/4XK20 3.1.3 3.2 クロック遷移およびステータス インジケータ クロック ソース間の遷移時間は、次の値を合計し たものになります。 • 切り替え先のクロックのスタートアップ時間 • 現在のクロック ソースの 2.5 サイクル • 切り替え先のクロック ソースの 2.5 サイクル • OSTS (OSCCON レジスタ ) • IOFS (OSCCON レジスタ ) • T1RUN (T1CON レジスタ ) 通常、特定の電源管理モードに対して、これらの ビットのうちの 1 つだけがセットされます。表 3-2 に、これらのフラグとアクティブなメイン システ ム クロック ソースの関係を示します。 表 3-2: システム クロック インジケータ OSTS IOFS T1RUN Main System Clock Source 1 0 0 Primary Oscillator 0 1 0 HFINTOSC 0 0 1 Secondary Oscillator 1 1 0 HFINTOSC as primary clock 0 0 0 LFINTOSC or HFINTOSC is not yet stable . 注 1: 3.1.4 ラン モードでは、コアおよび周辺機能へのクロッ クが両方とも動作します。各モード間の違いは、ク ロック ソースです。 3.2.1 次の 3 つのフラグ ビットは、現在のクロック ソー スとその状態を示します。 SLEEP 命令を実行しても、 デバイスがス リープ モードに移行するとは限りませ ん。この命令は、IDLEN ビットの設定に 応じて、コントローラをスリープ モー ドまたは複数のアイドル モードのいず れかに移行させるトリガとして機能し ます。 DS41303E_JP - ページ 42 PRI_RUN モード PRI_RUN モードは、マイクロコントローラの通常 のフル パワー実行モードです。このモードは、2 段 速スタートアップを有効にしている場合を除き、デ バイス リセット後のデフォルトです。(2 段速スター トアップの詳細は 2.10 項「2 段速クロック スター トアップ モード」を参照してください。) このモー ドでは、OSTS ビットがセットされます。HFINTOSC がプライマリ クロック ソースで、オシレータが既 に安定に動作している場合は IOFS ビットもセット されます (2.2 項「オシレータ制御」参照 )。 3.2.2 SEC_RUN モード SEC_RUN モードは、他の PIC18 デバイスに搭載さ れた「クロック切り替え」機能とモード互換性があ ります。このモードでは、CPU および周辺機能への クロックがタイマ 1 オシレータから供給されます。 このため、ユーザーは高精度のクロック ソースを 使用しながら消費電力を低減できます。 SEC_RUN モードに移行するには、SCS<1:0> ビット を「01」に設定します。次のすべてが満たされた場 合が SEC_RUN モードです。 • メイン クロック ソースがタイマ 1 オシレータに 切り替えられている • プライマリ オシレータがシャットダウンされて いる • T1CON レジスタの T1RUN ビットがセットされ ている • OSTS ビットがクリアされている 注: スリープ コマンドの複数の機能 SLEEP 命令によって開始される電源管理モードは、 命令実行時の OSCCON レジスタの IDLEN ビットの 設定によって決まります。IDLEN ビットをクリア した状態で SLEEP を実行すると、すべてのクロッ クが停止し、消費電力が最小になります。IDLEN ビットをセットした状態で SLEEP モードを実行す ると、周辺機能には引き続きクロックを供給します が、CPU へのクロックは遮断されます。 ラン モード SEC_RUN モードに移行する前に、タイマ 1 オシレータを動作させておいてくださ い。SCS<1:0> ビットを「01」に設定して も、T1OSCEN ビットがセットされ、タイ マ1オシレータが使用可能な状態になるま で SEC_RUN モードには移行しません。 SEC_RUN モードから PRI_RUN モードに移行する 場合、プライマリ クロックが起動するまで、周辺 機能と CPU には引き続きタイマ 1 オシレータから クロックが供給されます。プライマリ クロックが 使用可能になった時点で、クロックが切り替わりま す ( 図 2-7 参照 )。クロックの切り替えが完了する と、T1RUN ビットがクリア、OSTS ビットがセット されて、プライマリ クロック ソースがメイン シス テム クロックを供給しはじめます。T1OSCEN ビッ トがセットされている限り、タイマ 1 オシレータは 動作を続けます。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 3.2.3 RC_RUN モード RC_RUN モードでは、HFINTOSC のマルチプレク サ出力のいずれか 1 つを使用して、内部オシレータ ブロックから CPU および周辺機能にクロックを供 給します。このモードでは、プライマリ オシレー タがシャットダウンされます。LFINTOSC がメイン クロック ソースの場合、RC_RUN モードはすべて のラン モードの中で最も消費電力を節減できます。 タイミング精度の影響をそれほど受けず、常時高速 のクロックを必要としないユーザー アプリケー ションならば、問題なく動作します。 プライマリ クロック ソースが内部オシレータ ブ ロック (LFINTOSC または HFINTOSC) の場合、動 作中の PRI_RUN モードと RC_RUN モードの間には 判別できる差異はありません。しかし、RC_RUN モードへの移行または同モードの終了時にはク ロック遷移の遅延が発生します。したがって、プラ イマリ クロック ソースが内部オシレータ ブロック の場合、RC_RUN モードの使用は推奨できません。 クロック切り替えの詳細は、2.9.3 項「クロック切 り替えのタイミング」を参照してください。 RC_RUN モードに移行するには、SCS1 ビットを 「1」に設定します。SCS0 ビットは「0」または「1」 のいずれでもかまいませんが、将来のデバイスとの ソフトウェア互換性を保つために「0」に設定して ください。クロック ソースがプライマリ オシレー タから HFINTOSC のマルチプレクサに切り替わる と、プライマリ オシレータはシャットダウンされ、 OSTS ビットがクリアされます。IRCF ビットは随時 変更して、クロック速度をただちに変更できます。 RC_RUN モードから PRI_RUN モードに移行する場 合、プライマリ オシレータが起動する間、デバイ スのクロックは引き続き内部オシレータ ブロック から供給されます。プライマリ オシレータが使用 可能になった時点で、クロックの切り替えが実行さ れます。クロックの切り替えが完了すると、IOFS ビットがクリア、OSTS ビットがセットされて、プ ライマリ オシレータがメイン システム クロックを 供給しはじめます。2.5.2 項「HFINTOSC」に示す 条件のいずれかが満たされている限り、HFINTOSC は動作を続けます。また、2.5.3 項「LFINTOSC」に 示 す 条 件 の い ず れ か が 満 た さ れ て い る 限 り、 LFINTOSC ソースは動作を続けます。 3.3 スリープ モード PIC18F2XK20/4XK20 デバイスの電源管理スリープ モードは、 他のすべての PIC® マイクロコントローラ デバイスが提供する従来のスリープ モードとまっ たく同じです。スリープ モードに移行するには、 IDLEN ビットをクリアして ( デバイス リセット時の デフォルト状態 )、SLEEP 命令を実行します。これ によって、選択されているオシレータがシャットダ ウンされます ( 図 3-1)。更に、すべてのクロック ソースのステータス ビットがクリアされます。 2009 Microchip Technology Inc. 他のモードからスリープ モードに移行する場合、 ク ロックの切り替えは不要です。これは、スリープ状 態に入ったコントローラにはクロックが一切不要 だからです。WDT を選択している場合、LFINTOSC ソースは引き続き動作します。タイマ 1 オシレータ も、有効化されている場合は動作を続けます。 通常、スリープ モードでウェイクアップ イベント ( 割り込み、リセット、または WDT タイムアウト ) が発生すると、SCS<1:0> ビットで選択したクロッ ク ソースが使用可能になるまで ( 図 3-2 参照 )、デ バイスにはクロックが供給されません。ただし、2 段速スタートアップまたはフェイルセーフ クロッ ク モニタのいずれかが有効になっている場合は、 内 部オシレータ ブロックがクロックを供給します (23.0 項「CPU の特殊機能」参照 )。いずれの場合 も、プライマリ クロックがデバイス クロックを供 給している間は OSTS ビットがセットされます。 IDLEN および SCS ビットは、ウェイクアップの影 響を受けません。 3.4 アイドル モード アイドル モードでは、周辺機能の動作は継続しな がら、CPU だけを選択的にシャットダウンできま す。特定のアイドル モードを選択することで、ユー ザーは消費電力をさらに細かく管理できます。 IDLEN ビットを「1」に設定して SLEEP 命令を実行 すると、周辺回路は SCS<1:0> ビットで選択された ソースからクロックを供給されますが、CPU へのク ロックは遮断されます。クロック ソースのステータ ス ビットは変化しません。IDLEN ビットをセットし て SLEEP 命令を実行すれば、特定のラン モードか ら、それに対応するアイドル モードへ簡単に切り替 えることができます。 WDT を選択している場合、LFINTOSC ソースは引 き続き動作します。タイマ 1 オシレータも、有効化 されている場合は動作を続けます。 アイドル モードでは CPU が命令を実行できないた め、モードから出るには割り込み、WDT タイムア ウト、リセットによる方法しかありません。ウェイ クアップ イベントが発生してから、CPU がコード を実行できるようになるまでに TCSD ( 表 26-10 のパ ラメータ 38) の時間だけ遅延が発生します。CPU が コードを実行しはじめる時点では、現在のアイドル モードと同じクロック ソースで動作を再開します。 例えば、RC_IDLE モードからウェイクアップする 場合、内部オシレータ ブロックが CPU および周辺 機能にクロックを供給します ( つまり RC_RUN モー ドで動作します )。IDLEN および SCS ビットは、 ウェイクアップの影響を受けません。 いずれのアイドル モードおよびスリープ モードに おいても、WDT タイムアウトが発生すると、現在 SCS<1:0> ビットによって指定されているラン モー ドへの WDT ウェイクアップが実行されます。 Preliminary DS41303E_JP - ページ 43 PIC18F2XK20/4XK20 図 3-1: スリープ モードに移行するときの遷移タイミング Q1 Q2 Q3 Q4 Q1 OSC1 CPU Clock Peripheral Clock Sleep Program Counter PC 図 3-2: PC + 2 スリープからウェイクアップするときの遷移タイミング (HSPLL) Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 OSC1 TOST(1) PLL Clock Output TPLL(1) CPU Clock Peripheral Clock Program Counter PC Wake Event 注 1: PC + 2 PC + 4 PC + 6 OSTS bit set TOST = 1024 X TOSC、TPLL = 約 2 ms 図内のこれらの時間は縮尺どおりには描かれていません。 DS41303E_JP - ページ 44 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 3.4.1 PRI_IDLE モード 3.4.2 PRI_IDLEはプライマリ デバイス クロックを停止し ないという点で、3 つの低電力アイドル モードの中 では特異です。タイミングが重要なアプリケーショ ンでは、このモードを使用することで、精度の高い プライマリ クロック ソースにより、最短の時間で デバイスの動作を再開できます。クロック ソース が「ウォームアップ」したり、他のオシレータから 遷移する時間が不要だからです。 PRI_IDLE モードに移行するには、PRI_RUN モード から IDLEN ビットをセットして、SLEEP 命令を実 行します。デバイスが PRI_RUN 以外のラン モード にいる場合は、まず IDLEN ビットをセットしてか ら SCS ビットをクリアして SLEEP を実行します。 CPU は無効化されるものの、周辺機能には構成ビッ ト FOSC<3:0> によって指定されたプライマリ ク ロック ソースからクロックが供給され続けます。 OSTS ビットはセットされたままです ( 図 3-3 参照 )。 ウェイクアップ イベントが発生すると、プライマリ クロック ソースから CPU にクロックが供給されま す。ウェイクアップ イベントからコードの実行開始 までに TCSD の遅延が必要です。これは、CPU が命 令を実行できるようになるまでに必要な時間です。 ウェイクアップ後も OSTS ビットはセットされたま まです。IDLEN および SCS ビットは、ウェイクアッ プの影響を受けません ( 図 3-4 参照 )。 図 3-3: SEC_IDLE モード SEC_IDLE モードでは、CPU が無効となり、周辺機 能には引き続きタイマ 1 オシレータからクロックが 供給されます。SEC_IDLE モードに移行するには、 SEC_RUN モードから IDLEN ビットをセットして、 SLEEP 命令を実行します。デバイスが SEC_RUN 以 外のラン モードにいる場合は、まず IDLEN ビット をセットしてから SCS<1:0> ビットを「01」にセッ トし、SLEEP を実行します。クロック ソースがタ イマ 1 オシレータに切り替わると、プライマリ オ シレータはシャットダウンされ、OSTS ビットがク リア、T1RUN ビットがセットされます。 ウェイクアップ イベントが発生しても、周辺機能 のクロックは、そのままタイマ 1 オシレータから供 給されます。ウェイクアップ イベントから TCSD の 時間が経過すると、タイマ 1 オシレータからのク ロックにより CPU がコードを実行しはじめます。 IDLEN および SCS ビットは、ウェイクアップの影 響を受けず、タイマ 1 オシレータは動作を続けます ( 図 3-4 参照 )。 注: SEC_IDLE モードに移行する前に、タイマ 1 オシレータを動作させておいてくださ い。 SLEEP命令を実行する時点でT1OSCEN ビットがセットされていないと、メイン シ ステム クロックは以前に選択されたモー ドのまま動作を続け、そのモードに対応す るアイドル モード (PRI_IDLE や RC_IDLE) に移行します。 アイドル モードに移行するときの遷移タイミング Q1 Q3 Q2 Q4 Q1 OSC1 CPU Clock Peripheral Clock Program Counter 図 3-4: PC PC + 2 アイドル モードからラン モードにウェイクアップするときの遷移タイミング Q1 Q2 Q3 Q4 OSC1 TCSD CPU Clock Peripheral Clock Program Counter PC Wake Event 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 45 PIC18F2XK20/4XK20 3.4.3 RC_IDLE モード 3.5.1 RC_IDLE モードでは、CPU が無効となりますが、 周辺機能のクロックは HFINTOSC のマルチプレク サ出力を使用して内部オシレータ ブロックから引 き続き供給されます。このモードでは、アイドル期 間の消費電力を制御できます。 RC_IDLE モードに移行するには、RC_RUN モード から IDLEN ビットをセットして、SLEEP 命令を実 行します。デバイスが RC_RUN 以外のラン モード にいる場合は、まず IDLEN ビットをセットしてか ら SCS1 ビットをセットして SLEEP を実行します。 SCS0 ビットの値は無視されますが、将来のデバイ スとのソフトウェア互換性を保つためにクリアし ておくことを推奨します。SLEEP 命令を実行する 前に IRCF ビットを変更することで、HFINTOSC の マルチプレクサからの高いクロック周波数を選択 することも可能です。 クロック ソースが HFINTOSC のマルチプレクサに切り替わると、プライマリ オ シレータはシャットダウンされ、OSTS ビットがク リアされます。 IRCF ビットがゼロ以外の任意の値にセットされて いる場合、または INTSRC ビットがセットされてい る場合に HFINTOSC 出力が有効になります。TIOBST ( 表 26-10 のパラメータ 39) の時間が経過して HFINTOSC 出力が安定すると、IOFS ビットがセッ トされます。HFINTOSC ソースが安定するまでの間 も、周辺機能へのクロック供給は継続されます。 SLEEP命令を実行する前に、 既にIRCFビットがゼロ 以外の値に設定されていたか、または INTSRC が セットされていた場合、HFINTOSC ソースの動作が 安定していれば IOFS ビットはセットされたままに なります。IRCF ビットおよび INTSRC ビットがす べてクリアされている場合はHFINTOSC出力が有効 化されず、IOFS ビットはクリアされたままです。現 在のクロック ソースが示されることもありません。 ウェイクアップ イベントが発生すると、周辺機能 のクロックは引き続き HFINTOSC のマルチプレク サ出力から供給されます。ウェイクアップ イベン トから TCSD の時間が経過すると、HFINTOSC マル チプレクサからのクロックにより CPU がコードを 実行しはじめます。IDLEN および SCS ビットは、 ウェイクアップの影響を受けません。WDT または フェイルセーフ クロック モニタのいずれかが有効 な場合、LFINTOSC ソースは動作を続けます。 3.5 アイドル モードおよびスリープ モードの終了 スリープ モードまたはアイドル モードは次のイベ ントのいずれかによって終了します。 • 割り込み • リセット • ウォッチドッグ タイマのタイムアウト ここでは電源管理モードを終了するトリガについ て説明します。クロック供給サブシステムの動作 は、各電源管理モードの説明を参照してください (3.2 項「ラン モード」 、3.3 項「スリープ モード」 、 および 3.4 項「アイドル モード」)。 DS41303E_JP - ページ 46 割り込みによる終了 使用可能な割り込みソースは、いずれもデバイスを アイドルまたはスリープ モードからラン モードに 移行させることができます。この機能を使用するに は、INTCON または PIE レジスタのいずれかに含ま れるイネーブル ビットをセットして割り込みソー スを有効にする必要があります。また、使用する割 り込みのイネーブル ビットが PIE レジスタ内にあ る場合は、PEIE ビットもセットしてください。モー ド終了のシーケンスは、対応する割り込みフラグ ビットがセットされた時点で開始されます。 SLEEP 命令の直後の命令は、割り込みによってア イドルまたはスリープ モードが終了した時点で実 行されます。INTCON レジスタの GIE/GIEH ビット がセットされている場合は、コードの実行が割り込 みベクタへと分岐します。それ以外の場合は、分岐 せずに継続されます (9.0 項「割り込み」参照 )。 ウェイクアップ イベントからスリープまたはアイ ドル モードが終了するまでには一定の遅延 TCSD が 必要です。CPU がコードを実行できる状態になるま でに必要な時間です。命令の実行は、この遅延経過 後の最初のクロック サイクルから再開されます。 3.5.2 WDT タイムアウトによる終了 WDT タイムアウトは、発生した時点でデバイスが どの電源管理モードにあったかによって異なる動 作をトリガします。 デバイスがコードを実行していないときに ( すべて のアイドルおよびスリープ モード )、WDT タイム アウトが発生すると、電源管理モードが終了します (3.2 項「ラン モード」および 3.3 項「スリープ モー ド」参照 )。デバイスがコードを実行中だった場合 は ( すべてのラン モード )、タイムアウトによって WDT リセットが実行されます (23.2 項「ウォッチ ドッグ タイマ (WDT)」参照 )。 WDT タイマおよびポストスケーラは、次のいずれ かの動作によってクリアされます。 • SLEEP 命令の実行 • CLRWDT 命令の実行 • フェイルセーフ クロック モニタが有効な場合 に、 現在選択中のクロック ソースが失われたとき • デバイス クロック ソースが内部オシレータ ブ ロックの場合に、OSCCON レジスタの IRCF ビットが変更されたとき 3.5.3 リセットによる終了 リセットによってスリープまたはアイドル モード を終了すると、コード実行はアドレス 0 から再起動 されます。詳細は、4.0 項「リセット」を参照して ください。 リセットからコード実行開始までの遅延は、ウェイ クアップ前後のクロック ソースおよびオシレータ のタイプの両方に依存します。これらの遅延を表 33 に示します。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 3.5.4 オシレータ スタートアップ遅延を 伴わない電源管理モードの終了 電源管理モードを終了するときに OST が一切起動 されない場合があります。それは、次の 2 つの場合 です。 • プライマリ クロック ソースが停止しない PRI_IDLE モード • プライマリ クロック ソースが LP、XT、HS、 HSPLL モードのいずれでもない場合 表 3-3: これらの場合、プライマリ クロック ソースは、既 に動作中であるか (PRI_IDLE モード )、通常スター ト アップ遅延が不要のモード (RC、EC、INTOSC、 INTOSCIO モード ) であることから、オシレータ ス タートアップ遅延を必要としません。ただし、この 場合もスリープまたはアイドル モードを終了して、 CPU のコード実行準備が整うまでには、ウェイク アップ イベントから一定の時間 TCSD の遅延が必要 です。命令の実行は、この遅延経過後の最初のク ロック サイクルから再開されます。 リセットによるスリープまたはアイドル モードからのウェイクアップ時に必要なモード終了 遅延 ( クロック ソースごと ) Clock Source before Wake-up Clock Source after Wake-up Exit Delay Clock Ready Status Bit (OSCCON) LP, XT, HS Primary Device Clock (PRI_IDLE mode) HSPLL EC, RC TCSD(1) HFINTOSC(2) T1OSC or LFINTOSC(1) LP, XT, HS HSPLL TOST + tPLL(3) EC, RC LP, XT, HS HFINTOSC(2) 2: 3: 4: TOST OSTS IOFS (4) OSTS EC, RC TCSD(1) HFINTOSC(1) None IOFS HSPLL EC, RC HFINTOSC(1) 注 1: TCSD(1) TIOBST(4) TOST + tPLL(3) HSPLL LP, XT, HS None (Sleep mode) IOFS TOST(3) HFINTOSC(1) OSTS TOST (3) TOST + tPLL(3) TCSD(1) TIOBST(4) OSTS IOFS TCSD ( パラメータ 38) は、スリープおよびすべてのアイドル モードからウェイクアップするときに必 要な遅延です。他の必要な遅延と並行して経過します (3.4 項「アイドル モード」参照 )。リセット 時、HFINTOSC はデフォルトの 1 MHz に設定されます。 HFINTOSC の 16 MHz ソースおよびポストスケーラによって派生した周波数の両方を含みます。 TOST はオシレータ スタートアップ タイマ ( パラメータ 32)、tPLL は PLL のロックアウト タイマ ( パラメータ F12) です。 HFINTOSC が安定化するまでの TIOBST ( パラメータ 39) の期間もコード実行は継続されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 47 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 48 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 4.0 リセット PIC18F2XK20/4XK20 デバイスには、次のような動作 の異なる各種リセットがあります。 a) b) c) d) e) f) g) h) パワーオン リセット (POR) 通常動作中の MCLR リセット 電源管理モードの MCLR リセット ウォッチドッグ タイマ (WDT) リセット ( コード実行中 ) プログラマブルなブラウンアウト リセット (BOR) RESET 命令 スタック フル リセット スタック アンダーフロー リセット ここでは、MCLR、POR、BOR によって発生するリ セット、およびさまざまなスタートアップ タイマ の動作を説明します。スタック リセット イベント は、5.1.2.4 項「スタック フルおよびアンダーフロー リセット」に記載されています。WDT リセットは、 23.2 項「ウォッチドッグ タイマ (WDT)」を参照し てください。 図 4-1: オンチップ リセット回路の概略ブロック図を図 4-1 に示します。 4.1 RCON レジスタ デバイスのリセット イベントは RCON レジスタに よって監視します ( レジスタ 4-1)。このレジスタの 下位 5 ビットが、特定のリセット イベントが発生 したことを示します。ほとんどの場合、これらの ビットはイベントによってのみクリアされ、イベン ト後はアプリケーションによってセットする必要 があります。これらのフラグ ビットの状態をまと めて読み出すことで、いま発生したリセットの種類 を特定できます。これについては、4.6 項「レジス タのリセット状態」で詳細に説明します。 RCON レジスタには割り込みの優先度を設定する 制御ビット (IPEN) と、BOR をソフトウェア制御す るための制御ビット (SBOREN) もあります。割り込 み優先度は、9.0 項「割り込み」で検討します。BOR は、4.4 項「ブラウンアウト リセット (BOR)」で説 明します。 オンチップ リセット回路の概略ブロック図 RESET Instruction Stack Full/Underflow Reset Stack Pointer External Reset MCLR MCLRE ( )_IDLE Sleep WDT Time-out VDD Detect VDD POR Brown-out Reset S BOREN OST/PWRT OST(2) 1024 Cycles Chip_Reset 10-bit Ripple Counter R OSC1 32 s LFINTOSC Q PWRT(2) 65.5 ms 11-bit Ripple Counter Enable PWRT Enable OST(1) 注 1: 2: タイムアウト時間は、表 4-2 を参照してください。 PWRT および OST カウンタは POR および BOR によってリセットされます。(4.3 および 4.4 参照 ) 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 49 PIC18F2XK20/4XK20 レジスタ 4-1: RCON: リセット制御レジスタ R/W-0 R/W-1 U-0 (1) IPEN SBOREN — R/W-1 RI R-1 TO R-1 R/W-0 PD (2) POR bit 7 R/W-0 BOR bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 IPEN: 割り込み優先度イネーブル ビット 1 = 割り込みの優先度設定が有効 0 = 割り込みの優先度設定が無効 (PIC16CXXX 互換モード ) ビット 6 SBOREN: ソフトウェア BOR イネーブル ビット (1) BOREN<1:0> = 01 の場合 : 1 = ソフトウェア BOR が有効 0 = ソフトウェア BOR が無効 BOREN<1:0> = 00、10、または 11 の場合 : ビットは使用不可。 「0」として読み出し ビット 5 未実装 :「0」として読み出し ビット 4 RI: RESET 命令フラグ ビット 1 = RESET 命令は実行されていない ( ファームウェアまたはパワーオン リセットによって セット ) 0 = RESET 命令が実行されデバイス リセットが発生 ( コードによるリセット動作後はファーム ウェアによるセットが必要 ) ビット 3 TO: ウォッチドッグ タイムアウト フラグ ビット 1 = 電源投入後に、もしくは CLRWDT または SLEEP 命令によりセット 0 = WDT タイムアウト発生 ビット 2 PD: パワーダウン検出フラグ ビット 1 = 電源投入後に、もしくは CLRWDT 命令によりセット 0 = SLEEP 命令の実行により「0」に設定される ビット 1 POR: パワーオン リセット ステータス ビット (2) 1 = パワーオン リセットは発生していない 0 = パワーオン リセットが発生した ( パワーオン リセット後はソフトウェアによるセットが 必要 ) ビット 0 BOR: ブラウンアウト リセット ステータス ビット (3) 1 = ブラウンアウト リセットは発生していない ( ファームウェアによってのみセット ) 0 = ブラウンアウト リセットが発生した ( パワーオン リセットまたはブラウンアウト リセット 後はファームウェアによるセットが必要 ) 注 1: 2: CONFIG2L[2:1] = 01 の場合、SBOREN のリセット状態は「1」となり、それ以外の場合は「0」です。 デバイス リセット時の POR の実際の値は、実行されたリセットの種類によって変わります。詳細は、 このレジスタ説明の注、および 4.6 項「レジスタのリセット状態」を参照してください。 表 4-3 参照。 3: 注 1: ブラウンアウト リセットの発生は、BOR =「0」 、POR =「1」によって表示されます (POR と BOR の両ビットが POR 後すぐに「1」にセットされていることが前提です )。 2: パワーオン リセット (POR) 後は、それ以降の POR を検出できるように、POR ビットをセットする ことを推奨します。 DS41303E_JP - ページ 50 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 4.2 マスター クリア (MCLR) 図 4-2: MCLR ピンによってデバイスの外部リセットが可 能です。このピンを Low に保持することでデバイ スをリセット状態にできます。MCLR リセット信号 のパスにはデバイス内でノイズ フィルタが接続さ れており、検出された信号が微小パルスの場合は無 視します。 外部パワーオン リセット回路 (VDD 電源の立ち上がりが遅い場合 ) D 4.3 PIC® MCU R R1 WDT を含めいずれの内部リセットも、MCLR ピン を Low に駆動することはありません。 PIC18F2XK20/4XK20 デ バイ ス では、構 成ビ ッ ト MCLRE によって MCLR 入力を無効化できます。 MCLR が無効の場合、このピンはデジタル入力にな ります。詳細は、10.6 項「PORTE、TRISE、LATE レジスタ」を参照してください。 VDD VDD MCLR C 注 1: 外部パワーオン リセット回路が必要となるの は VDD 電源の立ち上がりがきわめて遅い場合 のみです。VDD 電源が立ち下がったときは、ダ イオード D を介して急速にコンデンサを放電 します。 2: R の値は、電圧降下がデバイスの電気的仕様 に違反しないように、15 k < R < 40 k を推 奨します。 3: R1 1 k の抵抗は、静電気放電 (ESD) や電 気的オーバーストレス (EOS) によって 外 MCLR/VPP ピンの絶縁破壊が起きた場合に、 付けコンデンサ C から MCLR ピンに流れ込む 電流を制限します。 パワーオン リセット (POR) VDD が一定のスレッショルドを超えると、チップ内 でパワーオン リセット パルスが発生します。この パルスによって、デバイスは VDD が動作に適した 状態になったときに、初期化された状態から動作を 開始できます。 POR 回路を使用するには、MCLR ピンを抵抗を介 して VDD に接続します。この方法では、通常パワー オン リセットの遅延に必要とされる外付けの RC 部 品は不要です。ただし、VDD の立ち上がり速度は最 小値が仕様で規定されています ( パラメータ D004)。 これより立ち上がりが遅い場合は、図 4-2 を参照し てください。 デバイスが ( リセットを終了して ) 通常動作を開始 する際は、デバイスの動作パラメータ ( 電圧、周波 数、温度など ) が正常動作に必要な範囲になければ なりません。条件が満たされていない場合、動作条 件がこれを満たすまで、デバイスをリセット状態に 保持する必要があります。 POR イベントは RCON レジスタの POR ビットに よって検出します。このビットは、POR が発生した 場合に必ず「0」になりますが、その他のリセット イベントでは変化しません。また、いかなるハード ウェア イベントによっても、POR が「1」になるこ とはありません。イベントを複数回検出するには、 POR が発生するたびにソフトウェアによってこの ビットを「1」にセットする必要があります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 51 PIC18F2XK20/4XK20 4.4 ブラウンアウト リセット (BOR) PIC18F2XK20/4XK20 デバイスには、構成および省電 力機能に対していくつかのオプションを提供する BOR 回路が実装されています。 BOR は構成レジスタ CONFIG2L の BORV<1:0> および BOREN<1:0> ビッ トによって制御されます。BOR の設定は表 4-1 に示 すとおり、全部で 4 通りあります。 BOR のスレッショルドは BORV<1:0> ビットによっ て設定します。BOR が有効な場合 (BOREN<1:0> の 値が「00」以外の場合 )、VDD が TBOR ( パラメー タ 35) より長い時間 VBOR ( パラメータ D005) を下 回った場合、デバイスがリセットされます。VDD が VBOR を下回る時間が TBOR より短いときは、ブラ ウンアウト リセットが発生する場合と、発生しな い場合があります。VDD が上昇して VBOR を上回る まで、チップはブラウンアウト リセットの状態を 保ちます。 パワーアップ タイマが有効な場合、VDD が VBOR を 超えた時点からカウントを開始し、チップを更に TPWRT ( パラメータ 33) の時間だけリセット状態に とどめます。パワーアップ タイマの動作中に VDD が VBOR を下回った場合、チップはブラウンアウト リセットに戻り、パワーアップ タイマが初期化さ れます。VDD が VBOR を上回った時点から、再度パ ワーアップ タイマによる遅延が加わります。 BOR とパワーアップ タイマ (PWRT) は、独立して 設定します。BOR リセットを有効にしても、PWRT が自動的に有効になるわけではありません。 BOR 回路の出力が POR 回路に入力され、BOR 回路 の動作範囲内で POR の起動準備を整えます。この ように早めに POR を準備することにより、VDD が BOR 回路の動作範囲を下回った場合でも、デバイス のリセット状態を保持できるようにしてあります。 4.4.1 BOR の検出 BOR が有効な場合、BOR ビットは BOR または POR イベントが発生すると必ず「0」になります。この ため、BOR イベントが発生したかどうかを BOR の 状態を読み出すだけで判断するのは困難です。より 信頼性が高いのは、POR と BOR の両方の状態を同 時に確認する方法です。この方法では、POR と BOR ビットが、すべての POR イベント後にただちにソ フトウェアによって「1」に強制されることを前提 にしています。この方法を使えば、BOR が「0」に なり、POR が「1」のままの場合に、BOR イベント が発生したことを高い信頼度で判定できます。 4.4.2 ソフトウェア制御可能な BOR BOREN<1:0> = 01 の場合、BOR の有効、無効をユー ザーがソフトウェアから制御できます。この機能 は、RCON レジスタの制御ビット SBOREN によっ 表 4-1: て設定します。SBOREN をセットすると、BOR は 前述のとおり動作します。SBOREN をクリアする と、BOR は一切動作しなくなります。SBOREN ビッ トは、このモードのみで動作します。それ以外の モードでは「0」と読み出されます。 BOR をソフトウェアによって制御できれば、その設 定を変更するためにデバイスを再プログラムする 必要がなくなり、環境に合わせてアプリケーション を調整する柔軟性が得られます。更に、ソフトウェ アにより BOR 回路起因の消費電流増をなくすこと で、デバイスの消費電力を調整できます。BOR 回路 は通常ごく小さな電流しか消費しませんが、低電力 アプリケーションにはある程度の影響を及ぼす可 能性があります。 注: BOR をソフトウェアで制御する場合も、 BOR のリセット電圧レベルは他の場合と 同様、構成ビット BORV<1:0> によって設 定します。この値は、ソフトウェアでは変 更できません。 4.4.3 スリープ モード時の BOR の無効化 BOREN<1:0> = 10 とした場合も BOR はハードウェ ア制御により、前述のとおり動作します。ただしこ の設定では、デバイスがスリープ モードに入った ときに BOR が自動的に無効化されます。そしてデ バイスが他の動作モードのいずれかに戻ると、再度 自動的に有効化されます。 このモードにより、アプリケーションが活発にコー ドを実行し、デバイスが BOR 保護を最も必要とし ている期間は、ブラウンアウト状態からの復帰が可 能となる一方、スリープ モードでは BOR による微 小な電流増がなくなるため、消費電力が更に節減さ れます。 4.4.4 BOR 有効化の最小時間 BOR を有効化すると、固定電圧リファレンス (FVR) が、他の周辺機能が必要としていない場合にも有効 化されます。BOR は FVR が安定化してから動作し ます。したがって確実に BOR 保護を実装するには、 ソフトウェアによって BOR を有効にする場合や、 ス リープからのウェイクアップ時に自動的に有効化 される場合に、FVR のセトリング タイムを考慮す る必要があります。FVR が安定する前に、ソフト ウェアまたはスリープへの移行によって再度 BOR が無効化されると、BOR 回路が BOR 条件を検出で きなくなります。FVR が安定しているかどうかは、 CVRCON2 レジスタの FVRST ビットによって判断 できます。 BOR の設定 BOR Configuration BOREN1 BOREN0 Status of SBOREN (RCON<6>) 0 0 Unavailable 0 1 Available BOR Operation BOR disabled; must be enabled by reprogramming the Configuration bits. BOR enabled by software; operation controlled by SBOREN. 1 0 Unavailable BOR enabled by hardware in Run and Idle modes, disabled during Sleep mode. 1 1 Unavailable BOR enabled by hardware; must be disabled by reprogramming the Configuration bits. DS41303E_JP - ページ 52 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 4.5 4.5.3 デバイス リセット タイマ PIC18F2XK20/4XK20 デバイスは、パワーオン リ セット プロセスの制御に使用する、3 つの独立した オンチップ タイマを搭載しています。その主な機 能は、コードを実行する前に、デバイス クロック が安定しているかどうかを確認することです。次の 3 種類のタイマです。 • パワーアップ タイマ (PWRT) • オシレータ スタートアップ タイマ (OST) • PLL ロック タイムアウト 4.5.1 PIC18F2XK20/4XK20 デバイスのパワーアップ タ イマ (PWRT) は、クロック入力として LFINTOSC ソースを使用する、11 ビットのカウンタです。こ のカウンタによって、およそ 2048 x 32 s = 65.6 ms の時間を計測できます。PWRT のカウント中は、デ バイスがリセット状態に保たれます。 電源投入時の遅延時間は LFINTOSC クロックに依 存し、温度やプロセスばらつきによってチップごと に異なります。詳細は、DC パラメータ (33) を参照 してください。 PWRT は構成ビット PWRTEN をクリアすると有効 になります。 オシレータ スタートアップ タイマ (OST) オシレータ スタートアップ タイマ (OST) は、 PWRT 遅延の経過後に、OSC1 が入力されるオシレータの 1024 サイクル分だけ遅延を発生します ( パラメータ 32)。この遅延によって、水晶振動子やその他の振 動子が起動し安定するまでの時間を確保します。 OST が起動されるのは、XT、LP、HS、HSPLL モー ドのパワーオン リセット時、または電源管理モー ドのうち外部オシレータを停止するものすべての 終了時だけです。 表 4-2: PLL モードで PLL を有効化した場合、パワーオン リセット後のタイムアウト シーケンスは他のオシ レータ モードと若干異なります。PLL がメイン オ シレータ周波数にロックするのに十分な時間を確 保できるように、他のモードとは別の独立したタイ マによって一定時間のタイムアウトを設定します。 この PLL ロック タイムアウト (TPLL) は通常 2 ms で、オシレータ スタートアップ タイムアウトに続 いてカウントされます。 4.5.4 パワーアップ タイマ (PWRT) 4.5.2 PLL ロック タイムアウト タイムアウト シーケンス 電源投入時のタイムアウト シーケンスは次のとお りです。 1. 2. POR パルスのクリア後、PWRT が起動します ( 有効な場合 ) 続いて OST が起動します。 タイムアウトの合計時間は、オシレータの設定およ び PWRT の状態によって異なります。図 4-3、図 4-4、 図 4-5、図 4-6 および図 4-7 は、いずれもパワーアッ プ タイマが有効、かつデバイスが HS オシレータ モードによって動作しているときの、電源投入時の タイムアウト シーケンスを示したものです。図 4-3 ~図 4-6 は、XT または LP モードで動作中のデバイ スにも適用されます。一方、PWRT を無効化した RC モードのデバイスの場合、タイムアウトは一切使用 しません。 タイムアウトのカウントは POR パルスを起点とす るため、MCLR を十分長い時間 Low に保つと、そ の間にすべてのタイマがタイムアウトするので、 MCLR を High に戻した瞬間に、 ただちにプログラム の実行を開始できます ( 図 4-5)。この方法は、テス ト時や並列動作する複数の PIC18FXXK20 デバイス の同期を取るのに有効です。 各種状態におけるタイムアウト Power-up(2) and Brown-out Oscillator Configuration HSPLL PWRTEN = 1 Exit from Power-Managed Mode 1024 TOSC + 2 ms(2) 1024 TOSC + 2 ms(2) PWRTEN = 0 66 ms(1) HS, XT, LP + 1024 TOSC + 2 ms(2) 66 ms(1) + 1024 TOSC 1024 TOSC 1024 TOSC EC, ECIO (1) 66 ms — — RC, RCIO 66 ms(1) — — (1) — — INTIO1, INTIO2 注 1: 2: 66 ms 66 ms (65.5 ms) は、パワーアップ タイマ (PWRT) 遅延の公称値です。 2 ms は PLL ロックに必要な時間の公称値です。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 53 PIC18F2XK20/4XK20 図 4-3: 電源投入時のタイムアウト シーケンス (MCLR は VDD に接続、 VDD の立ち上がり時間 < TPWRT) VDD MCLR INTERNAL POR TPWRT PWRT TIME-OUT TOST OST TIME-OUT INTERNAL RESET 図 4-4: 電源投入時のタイムアウト シーケンス (MCLR を VDD に接続しない場合 ): ケース 1 VDD MCLR INTERNAL POR TPWRT PWRT TIME-OUT TOST OST TIME-OUT INTERNAL RESET 図 4-5: 電源投入時のタイムアウト シーケンス (MCLR を VDD に接続しない場合 ): ケース 2 VDD MCLR INTERNAL POR TPWRT PWRT TIME-OUT TOST OST TIME-OUT INTERNAL RESET DS41303E_JP - ページ 54 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 4-6: 立ち上がり時間が長い場合 (MCLR は VDD に接続、VDD の立ち上がり時間 > TPWRT) 5V VDD 0V MCLR INTERNAL POR TPWRT PWRT TIME-OUT TOST OST TIME-OUT INTERNAL RESET 図 4-7: PLL を有効にした場合の POR 時のタイムアウト シーケンス (MCLR は VDD に接続 ) VDD MCLR INTERNAL POR TPWRT PWRT TIME-OUT TOST OST TIME-OUT TPLL PLL TIME-OUT INTERNAL RESET 注: TOST = 1024 クロック サイクル TPLL 2 ms(max)(PWRT タイマの先頭から 3 段分 ) 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 55 PIC18F2XK20/4XK20 4.6 レジスタのリセット状態 レジスタの中にはリセットによって変化しないも のがあります。これらのレジスタの POR 後の状態 は不明であり、他のいずれのリセットによっても変 化しません。その他のレジスタは、いずれも発生し たリセットの種類に応じた「リセット状態」に、強 制的に設定されます。 表 4-4 に、特殊機能レジスタのすべてについて、リ セット状態を示します。これらは、パワーオンおよ びブラウンアウト リセット、マスター クリアおよ び WDT リセット系、WDT ウェイクアップ系の 3 つ に分類されます。 ほとんどのレジスタは、WDT ウェイクアップの影 響を受けません。これは、WDT ウェイクアップが 通常動作の再開と見なされるためです。RCON レジ スタのステータス ビット RI、TO、PD、POR、BOR は、リセットの状況によって異なる値にセット / ク リアされます ( 表 4-3 参照 )。これらのビットは、リ セットの種類を判定するためにソフトウェアで使 用されます。 表 4-3: RCON レジスタのステータス ビットの内容と初期化状態 RCON Register STKPTR Register Program Counter SBOREN RI TO PD 0000h 1 1 1 1 0 0 0 0 RESET Instruction 0000h u(2) 0 u u u u u u Brown-out Reset 0000h u(2) 1 1 1 u 0 u u MCLR during Power-Managed Run Modes 0000h u (2) u 1 u u u u u MCLR during Power-Managed Idle Modes and Sleep Mode 0000h u(2) u 1 0 u u u u WDT Time-out during Full Power or Power-Managed Run Mode 0000h u(2) u 0 u u u u u MCLR during Full Power Execution 0000h u(2) u u u u u u u Stack Full Reset (STVREN = 1) 0000h u(2) u u u u u 1 u Stack Underflow Reset (STVREN = 1) 0000h u(2) u u u u u u 1 Stack Underflow Error (not an actual Reset, STVREN = 0) 0000h u(2) u u u u u u 1 WDT Time-out during Power-Managed Idle or Sleep Modes PC + 2 u(2) u 0 0 u u u u PC + 2(1) u(2) u u 0 u u u u Condition Power-on Reset Interrupt Exit from Power-Managed Modes POR BOR STKFUL STKUNF 記号の説明 : u = 不変 注 1: GIEH または GIEL ビットがセットされた状態で、割り込みによってウェイクアップした場合、 PC ( プログラム カウンタ ) には割り込みベクタ (0008h または 0018h) がロードされます。 2: ソフトウェア BOR が有効な場合 (BOREN<1:0> = 01)、SBOREN のリセット状態は「1」です。この 値は他のどのリセットが発生しても変化しません。それ以外の場合のリセット状態は「0」です。 DS41303E_JP - ページ 56 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 4-4: 全レジスタの初期化状態 Register Applicable Devices Power-on Reset, Brown-out Reset MCLR Resets, WDT Reset, RESET Instruction, Stack Resets Wake-up via WDT or Interrupt TOSU PIC18F2XK20 PIC18F4XK20 ---0 0000 ---0 0000 ---0 uuuu(3) TOSH PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu(3) TOSL PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu(3) STKPTR PIC18F2XK20 PIC18F4XK20 00-0 0000 uu-0 0000 uu-u uuuu(3) PCLATU PIC18F2XK20 PIC18F4XK20 ---0 0000 ---0 0000 ---u uuuu PCLATH PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu PCL PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 TBLPTRU PIC18F2XK20 PIC18F4XK20 --00 0000 --00 0000 --uu uuuu 0000 0000 uuuu uuuu PC + 2(2) TBLPTRH PIC18F2XK20 PIC18F4XK20 0000 0000 TBLPTRL PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu TABLAT PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu PRODH PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu PRODL PIC18F2XK20 PIC18F4XK20 xxxx xxxx INTCON PIC18F2XK20 PIC18F4XK20 0000 000x 0000 000u uuuu uuuu(1) INTCON2 PIC18F2XK20 PIC18F4XK20 1111 -1-1 1111 -1-1 uuuu -u-u(1) INTCON3 PIC18F2XK20 PIC18F4XK20 11-0 0-00 11-0 0-00 uu-u u-uu(1) INDF0 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A POSTINC0 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A POSTDEC0 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A PREINC0 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A N/A N/A PLUSW0 PIC18F2XK20 PIC18F4XK20 N/A FSR0H PIC18F2XK20 PIC18F4XK20 ---- 0000 ---- 0000 ---- uuuu FSR0L PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu WREG PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu N/A N/A INDF1 PIC18F2XK20 PIC18F4XK20 N/A POSTINC1 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A POSTDEC1 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A PREINC1 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A PIC18F4XK20 N/A N/A N/A PLUSW1 PIC18F2XK20 記号の説明 : 注 1: 2: 3: 4: 5: 6: u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。 網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。 INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ (0008h または 0018h) がロードされます。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は 現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。 各条件下でのリセット値は、表 4-3 を参照してください。 選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。 CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 57 PIC18F2XK20/4XK20 表 4-4: 全レジスタの初期化状態 ( 続き ) Register FSR1H Power-on Reset, Brown-out Reset MCLR Resets, WDT Reset, RESET Instruction, Stack Resets Wake-up via WDT or Interrupt PIC18F4XK20 ---- 0000 ---- 0000 ---- uuuu uuuu uuuu uuuu uuuu Applicable Devices PIC18F2XK20 FSR1L PIC18F2XK20 PIC18F4XK20 xxxx xxxx BSR PIC18F2XK20 PIC18F4XK20 ---- 0000 ---- 0000 ---- uuuu INDF2 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A POSTINC2 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A N/A N/A POSTDEC2 PIC18F2XK20 PIC18F4XK20 N/A PREINC2 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A PLUSW2 PIC18F2XK20 PIC18F4XK20 N/A N/A N/A FSR2H PIC18F2XK20 PIC18F4XK20 ---- 0000 ---- 0000 ---- uuuu uuuu uuuu uuuu uuuu FSR2L PIC18F2XK20 PIC18F4XK20 xxxx xxxx STATUS PIC18F2XK20 PIC18F4XK20 ---x xxxx ---u uuuu ---u uuuu TMR0H PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu TMR0L PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu 1111 1111 uuuu uuuu T0CON PIC18F2XK20 PIC18F4XK20 1111 1111 OSCCON PIC18F2XK20 PIC18F4XK20 0011 qq00 0011 qq00 uuuu uuuu HLVDCON PIC18F2XK20 PIC18F4XK20 0-00 0101 0-00 0101 u-uu uuuu WDTCON PIC18F2XK20 PIC18F4XK20 ---- ---0 ---- ---0 ---- ---u 0u-q qquu uu-u qquu RCON(4) PIC18F2XK20 PIC18F4XK20 0q-1 11q0 TMR1H PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu TMR1L PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu T1CON PIC18F2XK20 PIC18F4XK20 0000 0000 u0uu uuuu uuuu uuuu 0000 0000 uuuu uuuu TMR2 PIC18F2XK20 PIC18F4XK20 0000 0000 PR2 PIC18F2XK20 PIC18F4XK20 1111 1111 1111 1111 1111 1111 T2CON PIC18F2XK20 PIC18F4XK20 -000 0000 -000 0000 -uuu uuuu SSPBUF PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu 0000 0000 uuuu uuuu SSPADD PIC18F2XK20 PIC18F4XK20 0000 0000 SSPSTAT PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu SSPCON1 PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu SSPCON2 PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu 記号の説明 : 注 1: 2: 3: 4: 5: 6: u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。 網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。 INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ (0008h または 0018h) がロードされます。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は 現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。 各条件下でのリセット値は、表 4-3 を参照してください。 選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。 CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。 DS41303E_JP - ページ 58 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 4-4: 全レジスタの初期化状態 ( 続き ) Register ADRESH Applicable Devices Power-on Reset, Brown-out Reset MCLR Resets, WDT Reset, RESET Instruction, Stack Resets Wake-up via WDT or Interrupt PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu PIC18F2XK20 PIC18F4XK20 --00 0000 --00 0000 --uu uuuu ADCON1 PIC18F2XK20 PIC18F4XK20 --00 0qqq --00 0qqq --uu uuuu ADCON2 PIC18F2XK20 PIC18F4XK20 0-00 0000 0-00 0000 u-uu uuuu uuuu uuuu uuuu uuuu ADRESL ADCON0 PIC18F2XK20 CCPR1H PIC18F2XK20 PIC18F4XK20 xxxx xxxx CCPR1L PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu CCP1CON PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu CCPR2H PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu CCPR2L PIC18F2XK20 PIC18F4XK20 xxxx xxxx CCP2CON PIC18F2XK20 PIC18F4XK20 --00 0000 --00 0000 --uu uuuu PSTRCON PIC18F2XK20 PIC18F4XK20 ---0 0001 ---0 0001 ---u uuuu BAUDCON PIC18F2XK20 PIC18F4XK20 0100 0-00 0100 0-00 uuuu u-uu 0000 0000 uuuu uuuu PWM1CON PIC18F2XK20 PIC18F4XK20 0000 0000 ECCP1AS PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu CVRCON PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu CVRCON2 PIC18F2XK20 PIC18F4XK20 00-- ---- 00-- ---- uu-- ---- uuuu uuuu uuuu uuuu TMR3H PIC18F2XK20 PIC18F4XK20 xxxx xxxx TMR3L PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu T3CON PIC18F2XK20 PIC18F4XK20 0000 0000 uuuu uuuu uuuu uuuu SPBRGH PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu 0000 0000 uuuu uuuu SPBRG PIC18F2XK20 PIC18F4XK20 0000 0000 RCREG PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu TXREG PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu TXSTA PIC18F2XK20 PIC18F4XK20 0000 0010 0000 0010 uuuu uuuu 0000 000x uuuu uuuu RCSTA PIC18F2XK20 PIC18F4XK20 0000 000x EEADR PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu EEADRH PIC18F26K20 PIC18F46K20 ---- --00 ---- --00 ---- --uu EEDATA PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu 0000 0000 0000 0000 uu-0 u000 uu-0 u000 EECON2 PIC18F2XK20 PIC18F4XK20 0000 0000 EECON1 PIC18F2XK20 PIC18F4XK20 xx-0 x000 記号の説明 : 注 1: 2: 3: 4: 5: 6: u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。 網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。 INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ (0008h または 0018h) がロードされます。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は 現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。 各条件下でのリセット値は、表 4-3 を参照してください。 選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。 CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 59 PIC18F2XK20/4XK20 表 4-4: 全レジスタの初期化状態 ( 続き ) Register IPR2 PIR2 PIE2 Applicable Devices PIR1 PIE1 MCLR Resets, WDT Reset, RESET Instruction, Stack Resets Wake-up via WDT or Interrupt PIC18F4XK20 1111 1111 1111 1111 uuuu uuuu PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu(1) PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu PIC18F2XK20 PIC18F4XK20 1111 1111 1111 1111 uuuu uuuu PIC18F2XK20 PIC18F4XK20 -111 1111 -111 1111 -uuu uuuu PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu(1) PIC18F2XK20 PIC18F4XK20 -000 0000 -000 0000 -uuu uuuu(1) PIC18F2XK20 PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu PIC18F2XK20 PIC18F4XK20 -000 0000 -000 0000 -uuu uuuu 0000 0000 uuuu uuuu PIC18F2XK20 IPR1 Power-on Reset, Brown-out Reset OSCTUNE PIC18F2XK20 PIC18F4XK20 0000 0000 TRISE PIC18F2XK20 PIC18F4XK20 ---- -111 ---- -111 ---- -uuu TRISD PIC18F2XK20 PIC18F4XK20 1111 1111 1111 1111 uuuu uuuu TRISC PIC18F2XK20 PIC18F4XK20 1111 1111 1111 1111 uuuu uuuu PIC18F4XK20 1111 1111 1111 1111 TRISB TRISA PIC18F2XK20 (5) (5) 1111 1111 uuuu uuuu (5) uuuu uuuu(5) PIC18F2XK20 PIC18F4XK20 1111 1111 LATE PIC18F2XK20 PIC18F4XK20 ---- -xxx ---- -uuu LATD PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu uuuu uuuu LATC PIC18F2XK20 PIC18F4XK20 xxxx xxxx LATB PIC18F2XK20 PIC18F4XK20 xxxx xxxx LATA (5) PORTE xxxx xxxx ---- -uuu uuuu uuuu (5) uuuu uuuu uuuu uuuu (5) uuuu uuuu(5) PIC18F2XK20 PIC18F4XK20 PIC18F2XK20 PIC18F4XK20 ---- x000 ---- u000 ---- uuuu ---- u--- ---- u--- PIC18F2XK20 PIC18F4XK20 ---- x--- PORTD PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu PORTC PIC18F2XK20 PIC18F4XK20 xxxx xxxx uuuu uuuu uuuu uuuu PORTB PIC18F2XK20 PIC18F4XK20 xxx0 0000 uuu0 0000 uuuu uuuu PIC18F2XK20 PIC18F4XK20 xx0x 0000(5) uu0u 0000(5) uuuu uuuu(5) PIC18F2XK20 PIC18F4XK20 ---1 1111 ---1 1111 ---u uuuu ANSEL PIC18F2XK20 PIC18F4XK20 1111 1111 1111 1111 uuuu uuuu IOCB PIC18F2XK20 PIC18F4XK20 0000 ---- 0000 ---- uuuu ---- 1111 1111 uuuu uuuu 0000 0000 uuuu uuuu PORTA(5) ANSELH (6) WPUB PIC18F2XK20 PIC18F4XK20 1111 1111 CM1CON0 PIC18F2XK20 PIC18F4XK20 0000 0000 記号の説明 : 注 1: 2: 3: 4: 5: 6: u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。 網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。 INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ (0008h または 0018h) がロードされます。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は 現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。 各条件下でのリセット値は、表 4-3 を参照してください。 選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。 CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。 DS41303E_JP - ページ 60 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 4-4: 全レジスタの初期化状態 ( 続き ) Register CM2CON0 CM2CON1 SLRCON SSPMSK Applicable Devices Power-on Reset, Brown-out Reset MCLR Resets, WDT Reset, RESET Instruction, Stack Resets Wake-up via WDT or Interrupt PIC18F4XK20 0000 0000 0000 0000 uuuu uuuu PIC18F2XK20 PIC18F4XK20 0000 ---- 0000 ---- uuuu ---- PIC18F2XK20 PIC18F4XK20 ---1 1111 ---1 1111 ---u uuuu PIC18F2XK20 PIC18F4XK20 1111 1111 1111 1111 uuuu uuuu PIC18F2XK20 記号の説明 : 注 1: 2: 3: 4: 5: 6: u = 不変。x = 不明。- = 未実装、「0」として読み出し。q = 条件により変化する値。 網掛けされた欄は、指定されたデバイスに条件が適用されないことを意味します。 INTCONx または PIRx レジスタ内の 1 ビットまたは複数のビットが影響を受けます ( ウェイクアップするため )。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、PC には割り込みベクタ (0008h または 0018h) がロードされます。 GIEL または GIEH ビットがセットされた状態で、割り込みによってウェイクアップした場合、TOSU、TOSH、TOSL は 現在の PC 値によって更新されます。STKPTR はハードウェア スタック内の次の位置を指すように変更されます。 各条件下でのリセット値は、表 4-3 を参照してください。 選択されているオシレータ モードに応じて、PORTA、LATA、TRISA のビット 6 および 7 が有効になります。PORTA ピ ンとして有効化されていない場合、このレジスタのビットは無効となり「0」と読み出されます。 CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 61 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 62 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 5.0 ます。物理的に実装されているメモリの上限と 2 MB の間のアドレスにアクセスすると、すべて「0」 (NOP 命令 ) が返されます。 メモリ構成 PIC18 拡張マイクロコントローラ デバイスは、次の 3 種類のメモリを搭載しています。 このファミリのデバイスが搭載しているメモリは 次のとおりです。 • プログラム メモリ • データ RAM • データ EEPROM • PIC18F23K20, PIC18F43K20: 8 KB のフラッシュ メモリ、最大 4,096 のシングルワード命令を格納 可能 • PIC18F24K20, PIC18F44K20: 16 KB のフラッシュ メモリ、最大 8,192 のシングルワード命令を格納 可能 • PIC18F25K20, PIC18F45K20: 32 KB のフラッシュ メモリ、最大 16,384 のシングルワード命令を格 納可能 • PIC18F26K20, PIC18F46K20: 64 KB のフラッシュ メモリ、最大 37,768 のシングルワード命令を格 納可能 ハ ー バ ー ド ア ー キ テ ク チ ャ の デ バ イ ス と し て、 PIC18 はデータとプログラムのメモリにそれぞれ独 立したバスを用います。これにより、2 つのメモリ 空間に同時にアクセスできます。データ EEPROM は一連の制御レジスタによってアドレスを指定し アクセスできることから、実用上、周辺デバイスと 見なすことができます。 フラッシュ プログラム メモリの動作に関する詳細 は、6.0 項「フラッシュ プログラム メモリ」で説明 します。また、データ EEPROM は、別途 7.0 項 「データ EEPROM メモリ」で検討しています。 5.1 PIC18 デバイスには 2 つの割り込みベクタがありま す。リセット ベクタのアドレスは 0000h、割り込み ベクタのアドレスは 0008h または 0018h です。 プログラム メモリの構成 PIC18F2XK20/4XK20 デバイスのプログラム メモリ マップを図 5-1 に示します。メモリ ブロックの詳細 は図 23-2 を参照してください。 PIC18 マイクロコントローラには、21 ビットのプロ グラム カウンタが実装されているため、2 MB のプ ログラム メモリ空間に対してアドレスを指定でき 図 5-1: PIC18F2XK20/4XK20 デバイスのプログラム メモリ マップとスタック PC<20:0> 21 CALL,RCALL,RETURN RETFIE,RETLW Stack Level 1 Stack Level 31 2000h 0000h High Priority Interrupt Vector 0008h Low Priority Interrupt Vector 0018h On-Chip Program Memory 3FFFh 4000h PIC18F23K20/ 43K20 PIC18F24K20/ 44K20 On-Chip Program Memory User Memory Space On-Chip Program Memory 1FFFh Reset Vector On-Chip Program Memory 7FFFh 8000h PIC18F25K20/ 45K20 Read ‘0’ Read ‘0’ Read ‘0’ FFFFh 10000h PIC18F26K20/ 46K20 Read ‘0’ 2009 Microchip Technology Inc. Preliminary 1FFFFFh 200000h DS41303E_JP - ページ 63 PIC18F2XK20/4XK20 5.1.1 プログラム カウンタ プログラム カウンタ (PC) は実行のためにフェッチ する命令のアドレスを指定します。PC は 21 ビット 幅で、3 つの独立した 8 ビット レジスタに格納され ています。PCL レジスタと呼ばれる下位のバイト は、読み出しと書き込みの両方可能です。上位バイ トの PCH レジスタには PC<15:8> ビットが格納さ れ、これらは直接読み出したり書き込んだりするこ とができません。PCH レジスタは PCLATH レジス タを介して更新します。最上位バイトは PCU と呼 ばれます。このレジスタには PC<20:16> ビットが格 納され、これらも直接読み出し / 書き込みができま せん。PCU レジスタは PCLATU レジスタを介して 更新します。 PCL に書き込む動作では、いずれも PCLATH およ び PCLATU の内容がプログラム カウンタに転送さ れます。同様に、PCL から読み出す動作では、プロ グラム カウンタの上位 2 バイトが PCLATH および PCLATU に転送されます。この動作は PC を計算値 によってオフセットさせる場合に役に立ちます (5.1.4.1 項「計算型 GOTO」参照 )。 PC はバイト単位でプログラム メモリのアドレスを 指定します。ワード単位で表される命令との不整合 が生ずるのを防ぐために、PCLの最下位ビット(LSb) の値は「0」に固定されています。したがって、プ ログラム メモリ内で連続する命令のアドレスを指 定する場合、PC は 2 ずつインクリメントされます。 CALL、RCALL、GOTO、およびプログラム分岐命令 では、プログラム カウンタに直接書き込みます。こ れらの命令の場合、PCLATH および PCLATU の内 容はプログラム カウンタに転送されません。 5.1.2 リターン アドレス スタック リターン アドレス スタックは、最大 31 通りのプロ グラム コールおよび割り込みの組み合わせに対応 できます。CALL または RCALL 命令が実行される か、割り込みが受信されると PC がスタックにプッ シュされます。RETURN、RETLW、RETFIE 命令が 実行されると、PC の値がスタックからポップされ ます。PCLATU および PCLATH は、RETURN または CALL 命令いずれの影響も受けません。 図 5-2: スタックは 31 ワード x 21 ビットの RAM および 5 ビットのスタック ポインタ STKPTR によって動作 します。スタック空間は、プログラム空間にもデー タ空間にも含まれません。スタック ポインタは読 み出し / 書き込み可能です。スタック最上位のアド レスも、スタック最上位 (TOS) 特殊ファイル レジ スタによって読み出し、書き込みができます。この レジスタを用いて、データをスタックにプッシュ / ポップすることも可能です。 CALL タイプの命令ではスタックへのプッシュが実 行されます。まず、スタック ポインタがインクリ メントされ、その指す位置に PC の内容 ( 既に CALL の次の命令を指しています ) が書き込まれます。 RETURN タイプの命令ではスタックからのポップが 実行されます。STKPTR が指す位置の内容が PC に 転送された後、スタック ポインタがデクリメント されます。 スタック ポインタはすべてのリセット動作後に 00000 に初期化されます。スタック ポインタの値 00000 に相当する位置は RAM 上には存在しませ ん。これは単なるリセット値です。スタックのフル 状態、オーバーフロー、アンダーフローの発生はス テータス ビットによって示されます。 5.1.2.1 スタック最上位へのアクセス リターン アドレス スタックは、 その最上位 (TOS) だ けを読み出し、書き込むことができます。STKPTR レジスタが指すスタック位置の内容は、3 つのレジ スタ TOSU:TOSH:TOSL に格納されます ( 図 5-2)。必 要ならばこれらを用いてユーザーによるソフト ウェア スタックの実装が可能になります。CALL、 RCALL、または割り込み後に、ソフトウェアによっ て TOSU:TOSH:TOSL レジスタを読み出せば、プッ シュされた値がわかるので、これをユーザーが定義 したソフトウェア スタックに格納します。そして、 呼び出し元に戻るときは、ソフトウェアによってこ れらの値を TOSU:TOSH:TOSL に戻してからリター ンします。 スタックにアクセスしている間は、誤ってスタック を破壊しないように、グローバル割り込みのイネー ブル ビットを無効にしておく必要があります。 リターン アドレス スタックと関連するレジスタ Return Address Stack <20:0> 11111 11110 11101 Top-of-Stack Registers TOSU 00h TOSH 1Ah STKPTR<4:0> 00010 TOSL 34h Top-of-Stack DS41303E_JP - ページ 64 Stack Pointer 001A34h 000D58h Preliminary 00011 00010 00001 00000 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 5.1.2.2 リターン スタック ポインタ (STKPTR) STKPTR レジスタ ( レジスタ 5-1) には、スタック ポ インタの値、STKFUL ( スタック フル ) ステータス ビット、 STKUNF ( スタック アンダーフロー) ステー タス ビットがあります。スタック ポインタが取り 得る値の範囲は 0 ~ 31 です。スタック ポインタは 値がスタックにプッシュされる前にインクリメン トされ、値がスタックからポップされた後にデクリ メントされます。リセットが発生すると、スタック ポインタの値は 0 になります。スタック ポインタ の値はユーザーによる読み出し / 書き込みが可能で す。この機能は、リアルタイム オペレーティング システム (RTOS) のリターン スタック保守に使用で きます。 PC が 31 回スタックにプッシュされると ( スタック から一度もポップしていない場合 )、STKFUL ビッ トがセットされます。STKFUL ビットはソフトウェ アまたは POR によってクリアされます。 スタックがフルになったときの動作は、構成ビット STVREN ( スタック オーバーフロー リセット イ ネーブル ) の状態によって決まります。( デバイス の構成ビットの説明は、23.1 項「構成ビット」を参 照してください。) STVREN がセットされている場 合 ( デフォルト )、31 回目のプッシュでは (PC+2) の 値がスタックに格納され、STKFUL ビットをセット してからデバイスがリセットされます。STKFUL ビットがセットされたまま、スタック ポインタが 0 に初期化されます。 STVREN がクリアされている場合は、31 回目のプッ シュで STKFUL ビットがセットされ、スタック ポ インタは 31 にインクリメントされます。それ以上 プッシュしても、31 回目にプッシュされた値は上 書きされず、STKPTR も 31 を維持します。 レジスタ 5-1: R/C-0 STKFUL(1) bit 7 スタックが完全に空になるまでポップされると、そ の次のポップでは PC に 0 が返され、スタック ポイ ンタは 0 のまま STKUNF ビットがセットされます。 STKUNFビットはソフトウェアまたはPORの発生に よってクリアされるまで、セットされたままです。 注: アンダーフロー時に PC に 0 を返す動作は、 プログラムにリセット ベクタを渡すこと と同じ効果があります。このベクタによ り、スタックの状態を検証して適切な対策 を講ずる動作を実行できます。これは、 SFR の内容が変化しない点で通常のリ セットとは異なります。 5.1.2.3 PUSH および POP 命令 スタック最上位が読み出し / 書き込み可能であるこ とから、通常のプログラム実行を妨げずにスタック に対して値をプッシュ / ポップできるのは便利な機 能です。PIC18 の命令セットには、ソフトウェア制 御による TOS の操作を可能とする 2 つの命令、PUSH と POP があります。データまたはリターン アドレ スをスタックに格納するには、TOSU、TOSH、TOSL を変更します。 PUSH 命令は現在の PC の値をスタックに格納しま す。スタック ポインタがインクリメントされ、現 在の PC の値がスタックに格納されます。 POP 命令は、スタック ポインタをデクリメントす ることで現在の TOS を破棄します。そして前回の 値がスタック最上位に押し上げられ、TOS の値に なります。 STKPTR: スタック ポインタ レジスタ R/C-0 STKUNF(1) U-0 — R/W-0 SP4 R/W-0 SP3 R/W-0 SP2 R/W-0 SP1 R/W-0 SP0 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 ビット 7 ビット 6 ビット 5 ビット 4-0 注 1: W = 書き込み可 「1」= セット U = 未実装 「0」= クリア C = クリアのみ可 x = 不明 STKFUL: スタック フル フラグ ビット (1) 1 = スタックがフルまたはオーバーフロー 0 = スタックはフルではなく、オーバーフローもしていない STKUNF: スタック アンダーフロー フラグ ビット (1) 1 = スタック アンダーフローが発生 0 = スタック アンダーフローは発生していない 未実装 :「0」として読み出し SP<4:0>: スタック ポインタ位置ビット ビット 7 およびビット 6 はユーザー ソフトウェアまたは POR によってクリアされます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 65 PIC18F2XK20/4XK20 5.1.2.4 スタック フルおよびアンダーフロー リセット スタックのオーバーフローおよびアンダーフロー が発生した場合にデバイスをリセットする機能は、 構成レジスタ 4L の STVREN ビットをセットすると 有効になります。 STVRENがセットされている場合、 スタック フルまたはアンダーフローが発生すると、 STKFUL または STKUNF の該当するビットをセット してからデバイスがリセットされます。STVREN が クリアされている場合は、同様に STKFUL または STKUNF の該当するビットがセットされますが、デ バイスはリセットされません。STKFUL および STKUNF ビットは、ユーザー ソフトウェアまたはパ ワーオン リセットによってクリアされます。 5.1.3 高速レジスタ スタック STATUS レジスタ、W レジスタ (WREG)、BSR レジ スタには、割り込みの「高速リターン」オプション を可能とする高速レジスタ スタックがあります。各 レジスタに備えられたこのスタックは 1 レベルの深 さしかなく、読み出し / 書き込みのいずれも不可で す。プロセッサが割り込みベクタによる処理を実行 する場合に、対応するレジスタの現在の値を格納し ます。どの割り込みソースでも、値はスタック レ ジスタにプッシュされます。その後、RET、FIE、 FAST 命令によって割り込みからリターンするとき に、これらのスタック レジスタ内の値が対応する レジスタに戻されます。 優先度の低い割り込みと高い割り込みの両方が有 効な場合に、優先度の低い割り込みからのリターン にスタック レジスタを使用すると信頼性を確保で きません。低優先度の割り込みの処理中に、高優先 度の割り込みが発生すると、低優先度の割り込みが スタック レジスタに保存した値が上書きされてし まいます。したがって、このような場合には、低優 先度割り込みの処理中に、ユーザーがソフトウェア によって重要なレジスタを保存しておく必要があ ります。 割り込みの優先度を使用しない場合は、すべての割 り込みのリターンに高速レジスタ スタックを使用で きます。また、割り込み動作自体を使用しない場合 は、サブルーチン コールの最後に STATUS、WREG、 BSR の各レジスタをリストアするのに、高速レジス タ スタックを使用できます。高速レジスタ スタック を サ ブ ル ー チ ン コ ー ル に 使 用 す る に は、CALL label, FAST 命令を実行して、STATUS、WREG、 BSR の各レジスタ値を高速レジスタ スタックに保存 する必要があります。その後、RETURN, FAST 命令 を実行して、高速レジスタ スタックからこれらのレ ジスタに値をリストアします。 例 5-1 に、サブルーチンのコールおよびリターンに 高速レジスタ スタックを使用したソース コードの 例を示します。 DS41303E_JP - ページ 66 例 5-1: 高速レジスタ スタックのコード例 CALL SUB1, FAST ;STATUS, WREG, BSR ;SAVED IN FAST REGISTER ;STACK RETURN, FAST SUB1 5.1.4 ;RESTORE VALUES SAVED ;IN FAST REGISTER STACK プログラム メモリ内のルックアップ テーブル プログラミングにおいて、プログラム メモリ内に データ構造あるいはルックアップ テーブルを作成 する必要が生ずる場合があります PIC18 デバイス では、次の 2 つの方法でルックアップ テーブルを 実装できます。 • 計算型 GOTO • テーブル読み出し 5.1.4.1 計算型 GOTO 計算型 GOTO は、プログラム カウンタにオフセット 値を加算することで実現します。例を例 5-2 に示し ます。 ルックアップ テーブルは、ADDWF PCL 命令および 一連の RETLW nn 命令によって作成します。テーブ ルを呼び出す前に、テーブル内でのオフセット値を W レジスタにロードします。呼び出されるルーチン の最初の命令は ADDWF PCL です。次に実行される 命令は、一連の RETLW nn 命令の中の 1 つです。 この命令は呼び出し側の関数に値 nn を返します。 W レジスタ (WREG) 内のオフセット値は、プログ ラム カウンタをどれだけ進めるかのバイト数で、2 の倍数を指定します (LSb = 0)。 この方法では、各命令の位置に 1 バイトのデータし か保存できず、更にリターン アドレス スタック上 の空きも必要になります。 例 5-2: ORG TABLE 5.1.4.2 オフセット値を用いた計算型 GOTO MOVF CALL nn00h ADDWF RETLW RETLW RETLW . . . OFFSET, W TABLE PCL nnh nnh nnh テーブル読み出しおよびテーブル 書き込み プログラム メモリへのデータ保存により適したこ の方法では、各命令の位置に 2 バイトのデータを保 存できます。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 5.2.2 テーブル読み出し / 書き込みを使用すると、プログ ラム ワードあたり 2 バイトのルックアップ テーブ ル デ ー タ を 保 存 で き ま す。テ ー ブ ル ポ イ ン タ (TBLPTR) レジスタによってバイト アドレスを指定 し、テーブル ラッチ (TABLAT) レジスタにプログラ ム メモリに対する読み出し / 書き込みデータを格納 します。プログラム メモリとの間のデータ転送は 1 度に 1 バイトずつです。 1「命令サイクル」は 4 つの Q サイクル Q1 ~ Q4 で 構成されます。命令のフェッチと実行はパイプライ ン処理されます。フェッチには 1 命令サイクルが必 要であり、デコードおよび実行には更に 1 命令サイ クルが必要です。しかし、パイプライン処理によ り、各命令は実質的に 1 サイクルで実行されます。 命令によりプログラム カウンタが変化する場合 (GOTO など )、その命令を完了するには 2 サイクル が必要になります ( 例 5-3)。 テーブル読み出しおよびテーブル書き込みの動作 は、6.1 項「テーブル読み出しおよびテーブル書き 込み」で詳細に説明します。 5.2 フェッチ サイクルは、Q1 でプログラム カウンタ (PC) がインクリメントされた時点で開始されます。 PIC18 命令サイクル 5.2.1 実行サイクルでは、フェッチされた命令がサイクル Q1 で命令レジスタ (IR) にラッチされます。次に、 この命令は Q2、Q3、Q4 のサイクル中にデコードさ れ実行されます。データ メモリは Q2 サイクル中に 読み出され ( オペランドの読み出し )、Q4 サイクル 中に書き込まれます ( 結果格納先への書き込み )。 クロック方式 マイクロコントローラへのクロック入力は、内部、 外部のソースを問わず、チップ内で 4 分周され、 オーバーラップのない 4 つの矩形波クロック (Q1、 Q2、Q3、Q4) が生成されます。内部では、プログ ラム カウンタ (PC) が Q1 ごとにインクリメントし て命令がプログラム メモリからフェッチされ、Q4 で命令レジスタ (IR) にラッチされます。命令は次の Q1 から Q4 までの間にデコードされ、実行されま す。図 5-3 にクロックと命令実行フローを示します。 図 5-3: 命令フロー / パイプライン クロック / 命令サイクル Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 OSC1 Q1 Q2 Internal Phase Clock Q3 Q4 PC PC PC + 2 PC + 4 OSC2/CLKOUT (RC mode) Execute INST (PC – 2) Fetch INST (PC) 例 5-3: TCY0 TCY1 Fetch 1 Execute 1 2. MOVWF PORTB 4. BSF Execute INST (PC + 2) Fetch INST (PC + 4) 命令パイプライン フロー 1. MOVLW 55h 3. BRA Execute INST (PC) Fetch INST (PC + 2) SUB_1 Fetch 2 TCY2 TCY3 TCY4 TCY5 Execute 2 Fetch 3 Execute 3 Fetch 4 PORTA, BIT3 (Forced NOP) Flush (NOP) Fetch SUB_1 Execute SUB_1 5. Instruction @ address SUB_1 プログラム分岐以外のすべての命令は 1 サイクルです。プログラム分岐では、新しい命令がフェッチされて実行 される間にフェッチ命令がパイプラインから「消去」されるため、2 サイクルかかります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 67 PIC18F2XK20/4XK20 5.2.3 プログラム メモリ内の命令 プログラム メモリのアドレスはバイト単位で指定 します。命令は、2 バイトまたは 4 バイト単位でプ ログラム メモリに保存されます。命令ワードの最 下位バイトは常にプログラム メモリ内の偶数アド レスに保存されます (LSb = 0) 命令の区切りがずれ ないように、PC は 2 ずつインクリメントされ、LSb には常に「0」が読み出されます (5.1.1 項「プログ ラム カウンタ」参照 )。 図 5-4 に、プログラム メモリに保存された命令ワー ドの例を示します。 図 5-4: CALL および GOTO 命令には、命令自体にプログラ ム メモリの絶対アドレスが埋め込まれます。命令は 常にワード境界に沿って保存されるため、命令に含 まれるデータはワード アドレスです。ワード アド レスは PC<20:1> に書き込まれ、これによってプロ グラム メモリ内の目的のバイト アドレスにアクセ スします。図 5-4 の Instruction #2 は、GOTO 0006h という命令をプログラム メモリにエンコードする 方法を示しています。相対アドレス オフセットをエ ンコードするプログラム分岐命令の動作も同様で す。ブランチ命令に埋め込まれたオフセット値は、 PC にオフセットとして加算するシングル ワード命 令の数を表しています。命令セットの詳細は、24.0 項「命令セットの概要」に記載されています。 プログラム メモリ内の命令 LSB = 1 LSB = 0 0Fh EFh F0h C1h F4h 55h 03h 00h 23h 56h Program Memory Byte Locations 5.2.4 Instruction 1: Instruction 2: MOVLW GOTO 055h 0006h Instruction 3: MOVFF 123h, 456h 2 ワード命令 標準の PIC18 命令セットには、CALL、MOVFF、GOTO、 LSFR の 4 つの 2 ワード命令があります。いずれの 場合も命令の 2 番目のワードは最上位 4 ビットが常 に「1111」となり、残りの 12 ビットがリテラル デー タ、通常はデータ メモリのアドレスになります。 命令の最上位 4 ビットに設定された「1111」は、特 殊な NOP 命令となります。命令が適切なシーケン スで、つまり 1 番目のワードの実行直後に実行され た場合、 2 番目のワード内のデータがアクセスされ、 例 5-4: Word Address 000000h 000002h 000004h 000006h 000008h 00000Ah 00000Ch 00000Eh 000010h 000012h 000014h 命令シーケンスによって使用されます。しかし、何 らかの理由で 1 番目のワードが飛ばされ、2 番目の ワードだけが実行されると、その命令は NOP にな ります。このような動作は、2 ワード命令の前に PC の値を変える条件命令がある場合に必要になりま す。例 5-4 に、その動作を示します。 注: 拡張命令セット内の 2 ワード命令は、5.6 項「PIC18 命令の実行と拡張命令セット」 を参照してください。 2 ワード命令 CASE 1: Object Code 0110 0110 0000 1100 0001 0010 1111 0100 0101 0010 0100 0000 0000 0011 0110 0000 Source Code TSTFSZ REG1 ; is RAM location 0? MOVFF REG1, REG2 ; No, skip this word ; Execute this word as a NOP ADDWF REG3 ; continue code 0000 0011 0110 0000 Source Code TSTFSZ REG1 ; is RAM location 0? MOVFF REG1, REG2 ; Yes, execute this word ; 2nd word of instruction ADDWF REG3 ; continue code CASE 2: Object Code 0110 0110 0000 1100 0001 0010 1111 0100 0101 0010 0100 0000 DS41303E_JP - ページ 68 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 5.3 注: データ メモリの構成 5.3.1 PIC18 拡張命令セットを使用した場合、 データ メモリの動作の一部が変わりま す。詳細は、5.5 項「データ メモリと拡張 命令セット」を参照してください。 データ メモリの領域は広いため、すべてのアドレ スに高速にアクセスするには、効率的なアドレス指 定方式が必要です。読み出しおよび書き込み時に、 すべてのアドレスを指定する必要がないのが理想 と言えます。PIC18 デバイスでは、RAM のバンク 方式によってこれを実現しています。バンク方式で は、メモリ空間を各 256 バイトの、連続する 16 バ ンクに分割します。命令に応じて、メモリ内の各位 置は 12 ビットのフル アドレスか、8 ビットの下位 アドレスと 4 ビットのバンク ポインタによって指 定できます。 PIC18 デバイスのデータ メモリは SRAM として実 装されています。データ メモリ内の各レジスタは 12 ビットのアドレスを持つため、最大 4096 バイト のデータ メモリを使用できます。メモリ空間は、各 256 バイトの 16 バンクに分割されています。図 5-5 ~図 5-7 は、PIC18F2XK20/4XK20 デバイスのデー タ メモリ構成です。 データ メモリには、特殊機能レジスタ (SFR) と汎用 レジスタ (GPR) があります。SFR はコントローラお よび周辺機能の制御および状態監視に使用し、GPR はユーザー アプリケーションによるデータ保存や スクラッチパッド動作に使用します。実装されてい ないアドレスは、常に「0」と読み出されます。 命令セットおよびアーキテクチャは、すべてのバン クにわたる動作に対応しています。データ メモリ 全体に対して直接、間接、インデックス付きのアド レス指定モードでアクセスできます。アドレス指定 モードは、この項の後半で説明します。 頻繁に使用されるレジスタ (SFR および GPR の一部 ) には単一サイクルでアクセスできるように、PIC18 デバイスにはアクセス バンクが実装されています。 これは 256 バイトのメモリ空間で、SFR および GPR バンク 0 の下位部分に、バンク選択レジスタ (BSR) を使用せずに、高速にアクセスできます。5.3.2 項 「アクセス バンク」に、アクセス RAM に関する詳 細な説明があります。 バンク選択レジスタ (BSR) PIC18 命令セットのほとんどの命令は、バンク選択 レジスタ (BSR) と呼ばれるバンク ポインタを使用 しています。この SFR にはアドレスの上位 4 ビッ トが格納され、下位 8 ビットは命令自体に含まれま す。BSR は下位 4 ビット (BSR<3:0>) だけが実装さ れています。上位 4 ビットは未使用で、常に「0」 と読み出され、書き込むことはできません。BSR は MOVLB 命令によって直接ロードできます。 BSR の値はデータ メモリのバンクを表します。命 令内の 8 ビットはバンク内の位置を表すので、この 値はバンク下限からのオフセットと見なすことが できます。BSR の値とデータ メモリのバンク分割 の関係を図 5-5 ~図 5-7 に示します。 最大 16 個のレジスタに同じ下位アドレスがあるた め、ユーザーは、データの読み出しまたは書き込み を実行する前に十分注意して、適切なバンクが選択 されていることを確認する必要があります。例え ば、8 ビット アドレス F9h にプログラム データを 書き込むときに、BSR に 0Fh が指定されているとプ ログラム カウンタがリセットされてしまいます。 バンクは任意に選択できますが、読み出し / 書き込 みを実行できるのは、実際に実装されているバンク に対してのみです。未実装のバンクに対する書き込 みは無視されます。一方、未実装のバンクからの読 み出しでは常に「0」が返されます。その場合も、 STATUS レジスタの値は、あたかも動作が正常終了 したように変化します。図 5-5 ~図 5-7 のデータ メ モリ マップには、実装されているバンクを示して あります。 PIC18 のコア命令セットでは、MOVFF 命令だけが、 読み出し元 / 書き込み先のフル アドレス 12 ビット を指定します。この命令の実行時には BSR は完全 に無視されます。その他の命令は、すべてオペラン ドとして下位アドレスしか含んでいないため、目標 とするレジスタの位置を指定するには BSR または アクセス バンクのいずれかを使用する必要があり ます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 69 PIC18F2XK20/4XK20 図 5-5: PIC18F23K20/43K20 デバイスのデータ メモリ マップ BSR<3:0> = 0000 = 0001 = 0010 = 0011 = 0100 = 0101 = 0110 = 0111 = 1000 = 1001 = 1010 = 1011 = 1100 = 1101 = 1110 = 1111 DS41303E_JP - ページ 70 「a」= 0 のとき : Data Memory Map 00h Access RAM FFh 00h GPR Bank 0 GPR Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Bank 7 Bank 8 Bank 9 000h 05Fh 060h 0FFh 100h FFh 00h 1FFh 200h FFh 00h 2FFh 300h FFh 00h 3FFh 400h FFh 00h 4FFh 500h FFh 00h 5FFh 600h FFh 00h 6FFh 700h 7FFh 800h FFh 00h FFh 00h Unused Read 00h 9FFh A00h FFh 00h AFFh B00h FFh 00h BFFh C00h FFh Bank 13 00h CFFh D00h FFh 00h DFFh E00h Bank 11 Bank 12 Bank 14 FFh 00h Unused FFh SFR Bank 15 先頭 96 バイトは 汎用 RAM です ( バンク 0)。 次の160バイトは特殊機能レ ジスタ ( バンク 15) です。 「a」= 1 のとき : BSR は命令によって使用さ れるバンクを指定します。 Access Bank Access RAM Low 00h 5Fh Access RAM High 60h (SFRs) FFh 8FFh 900h FFh 00h Bank 10 BSR は無視され、アクセス バンクが使用されます。 EFFh F00h F5Fh F60h FFFh Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 5-6: PIC18F24K20/44K20 デバイスのデータ メモリ マップ BSR<3:0> = 0000 = 0001 = 0010 = 0011 = 0100 = 0101 = 0110 = 0111 = 1000 = 1001 = 1010 = 1011 = 1100 = 1101 = 1110 = 1111 「a」= 0 のとき : Data Memory Map 00h Access RAM FFh 00h GPR Bank 0 GPR Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Bank 7 Bank 8 Bank 9 000h 05Fh 060h 0FFh 100h 1FFh 200h FFh 00h GPR FFh 00h 2FFh 300h FFh 00h 3FFh 400h FFh 00h 4FFh 500h FFh 00h 5FFh 600h FFh 00h 6FFh 700h 7FFh 800h FFh 00h FFh 00h Unused Read 00h 9FFh A00h FFh 00h AFFh B00h FFh 00h BFFh C00h FFh Bank 13 00h CFFh D00h FFh 00h DFFh E00h Bank 11 Bank 12 Bank 14 FFh 00h Unused FFh SFR Bank 15 2009 Microchip Technology Inc. 先頭 96 バイトは 汎用 RAM です ( バンク 0)。 次の160バイトは特殊機能レ ジスタ ( バンク 15) です。 「a」= 1 のとき : BSR は命令によって使用さ れるバンクを指定します。 Access Bank Access RAM Low 00h 5Fh Access RAM High 60h (SFRs) FFh 8FFh 900h FFh 00h Bank 10 BSR は無視され、アクセス バンクが使用されます。 EFFh F00h F5Fh F60h FFFh Preliminary DS41303E_JP - ページ 71 PIC18F2XK20/4XK20 図 5-7: PIC18F25K20/45K20 デバイスのデータ メモリ マップ BSR<3:0> = 0000 = 0001 = 0010 = 0011 = 0100 = 0101 = 0110 = 0111 = 1000 = 1001 = 1010 = 1011 = 1100 = 1101 = 1110 = 1111 DS41303E_JP - ページ 72 「a」= 0 のとき : Data Memory Map 00h Access RAM FFh 00h GPR Bank 0 GPR Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Bank 7 Bank 8 Bank 9 Bank 10 000h 05Fh 060h 0FFh 100h 1FFh 200h FFh 00h GPR FFh 00h 2FFh 300h 「a」= 1 のとき : BSR は命令によって使用さ れるバンクを指定します。 GPR 4FFh 500h FFh 00h GPR FFh 00h 5FFh 600h FFh 00h 6FFh 700h FFh 00h 7FFh 800h FFh 00h 8FFh 900h FFh 00h Unused Read 00h BFFh C00h FFh Bank 13 00h CFFh D00h FFh 00h DFFh E00h FFh 00h Unused FFh SFR Bank 15 Access Bank Access RAM Low 00h 5Fh Access RAM High 60h (SFRs) FFh 9FFh A00h FFh 00h Bank 14 次の160バイトは特殊機能レ ジスタ ( バンク 15) です。 3FFh 400h AFFh B00h Bank 12 先頭 96 バイトは 汎用 RAM です ( バンク 0)。 GPR FFh 00h FFh 00h Bank 11 BSR は無視され、アクセス バンクが使用されます。 EFFh F00h F5Fh F60h FFFh Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 5-8: PIC18F26K20/46K20 デバイスのデータ メモリ マップ BSR<3:0> = 0000 = 0001 = 0010 = 0011 = 0100 = 0101 = 0110 = 0111 = 1000 = 1001 = 1010 = 1011 = 1100 = 1101 = 1110 = 1111 「a」= 0 のとき : Data Memory Map 00h Access RAM FFh 00h GPR Bank 0 GPR Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Bank 7 Bank 8 Bank 9 Bank 10 Bank 11 Bank 12 GPR FFh 00h 2FFh 300h BSR は無視され、アクセス バンクが使用されます。 先頭 96 バイトは 汎用 RAM です ( バンク 0)。 次の160バイトは特殊機能レ ジスタ ( バンク 15) です。 「a」= 1 のとき : BSR は命令によって使用さ れるバンクを指定します。 GPR 3FFh 400h FFh 00h GPR 4FFh 500h FFh 00h GPR 5FFh 600h FFh 00h GPR FFh 00h 6FFh 700h GPR 7FFh 800h FFh 00h GPR FFh 00h Access Bank Access RAM Low 00h 5Fh Access RAM High 60h (SFRs) FFh 8FFh 900h GPR 9FFh A00h FFh 00h GPR FFh 00h FFh 00h FFh 00h AFFh B00h GPR BFFh C00h GPR CFFh D00h GPR DFFh E00h GPR FFh 00h GPR FFh SFR Bank 15 2009 Microchip Technology Inc. 1FFh 200h FFh 00h FFh Bank 13 00h Bank 14 000h 05Fh 060h 0FFh 100h EFFh F00h F5Fh F60h FFFh Preliminary DS41303E_JP - ページ 73 PIC18F2XK20/4XK20 図 5-9: バンク選択レジスタの使用方法 ( 直接アドレス指定 ) BSR(1) 7 0 0 0 0 Bank Select(2) 0 0 0 1 1 000h Data Memory Bank 0 100h Bank 1 200h 300h Bank 2 00h FFh 00h From Opcode(2) 7 1 1 1 1 1 1 0 1 1 FFh 00h FFh 00h Bank 3 through Bank 13 E00h Bank 14 F00h FFFh 注 1: 2: Bank 15 FFh 00h FFh 00h FFh 命令のアクセス RAM ビットを使って、選択されたバンク (BSR<3:0>) を、アクセス バンクのレジスタに よって強制的にオーバーライドできます。 MOVFF 命令には、アドレスの 12 ビットがすべて埋め込まれています。 DS41303E_JP - ページ 74 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 5.3.2 5.3.3 アクセス バンク BSR と命令に埋め込まれた 8 ビットのアドレスに よって、データ メモリの全アドレス範囲を指定でき ますが、同時にこれは、ユーザーが常に正しいバン クが選ばれているかどうかを確認しなければなら ないことを意味します。この確認を怠ると、誤った 位置に対して読み出し / 書き込みが実行されます。 動作の書き込み先が GPR であるにもかかわらず、 誤ってSFRに書き込んでしまった場合は重大な障害 を引き起こす可能性があります。しかし、データ メ モリへの読み出しや書き込みを実行するたびに BSR を変更または検証するのは、きわめて非効率的 です。 最も頻繁に使われるデータ メモリ位置へのアクセ スを合理化するために、データ メモリの一部がア クセス バンクとして構成されています。ユーザー は、BSR を指定せずに、アクセス バンクに対応づ けられたメモリ ブロックにアクセスできます。ア クセス バンクはバンク 0 の先頭 96 バイト (00h ~ 5Fh)、およびバンク 15 の末尾 160 バイト (60h ~ FFh) からなります。下位半分は「アクセス RAM」 と呼ばれ、GPR によって構成されます。上位半分は デバイスの SFR に対応づけられる場所です。これ ら 2 つの領域は、アクセス バンク内では連続的に マッピングされ、8 ビットでリニアにアドレスを指 定できます ( 図 5-5 ~図 5-7)。 アクセス バンクは PIC18 コア命令セットのうちア クセス RAM ビット ( 命令の「a」パラメータ ) を含 む命令が使用します。 「a」が「1」の場合、命令は BSR とオペコードに埋め込まれた 8 ビットのアドレ スによってデータ メモリのアドレスを指定します。 一方「a」が「0」の場合、命令はアクセス バンク のアドレス マップを使用するように強制され、BSR の現在の値は完全に無視されます。 汎用レジスタ ファイル PIC18 デバイスには、GPR 領域にバンク分けされた メモリが実装されているものがあります。これは、 すべての命令が使用できるデータ RAM です。GPR はバンク 0 の下端 ( アドレス 000h) から始まり、上 位に向けて SFR 領域の下端まで続きます。GPR は パワーオン リセットでは初期化されず、他のいず れのリセットでも変化しません。 5.3.4 特殊機能レジスタ 特殊機能レジスタ (SFR) は、CPU と周辺モジュール によって使用されるレジスタで、デバイスが必要と するさまざまな動作を制御します。これらのレジス タはスタティック RAM として実装されています。 SFR の領域はデータ メモリの最上位 (FFFh) から下 位へ向けて広がり、バンク 15 の上半分 (F60h ~ FFFh) を占有します。これらのレジスタの一覧を、 表 5-1 と表 5-2 に示します。 SFR は、デバイスの「コア」機能 (ALU、リセット、 割り込み ) に関連するものと、周辺機能に関連する ものの 2 種類に分けられます。リセットおよび割り 込みレジスタは、それぞれ章を割いて説明していま すが、ALU の STATUS レジスタは本項の後半で述 べます。周辺機能の動作に関連するレジスタは、各 周辺機能の章で説明します。 SFR は通常、これらのレジスタが制御する機能を受 け持つ周辺回路間に配分されます。SFR の未使用の 位置は未実装であり「0」と読み出されます。 この「強制的」なアドレス指定により、命令は最初 に BSR を更新する必要がなく、 単一サイクルでデー タ アドレスに対する処理を実行できます。8 ビット アドレスとして 60h 以上を指定すれば、ユーザーは SFR をより効率的に評価および操作できます。ま た、60h より下位のアクセス RAM は、直近の計算 結果や頻繁に使われるプログラム変数など、高速に アクセスする必要があるデータ値を保存する場所 として最適です。更に、アクセス RAM を使用する と、コンテキスト保存や変数を切り替える場合に、 より高速で効率のよいコードを作成できます。 拡張命令セットを有効にしている場合は ( 構成ビッ ト XINST = 1)、アクセス バンクのマッピングが若 干変わります。これについては、5.5.3 項「インデッ クス付きリテラル オフセット モードにおけるアク セス バンクのマッピング」で詳細に説明します。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 75 PIC18F2XK20/4XK20 表 5-1: PIC18F2XK20/4XK20 デバイスの特殊機能レジスタ マップ Address 注 1: 2: 3: 4: Name Address Name Address Name Address Name FFFh TOSU FD7h TMR0H FAFh SPBRG F87h —(2) FFEh TOSH FD6h TMR0L FAEh RCREG F86h —(2) FFDh TOSL FD5h T0CON FADh TXREG F85h —(2) FFCh STKPTR FD4h —(2) FACh TXSTA F84h PORTE FFBh PCLATU FD3h OSCCON FABh RCSTA F83h PORTD(3) FFAh PCLATH FD2h HLVDCON FAAh EEADRH(4) F82h PORTC FF9h PCL FD1h WDTCON FA9h EEADR F81h PORTB FF8h TBLPTRU FD0h RCON FA8h EEDATA F80h PORTA FF7h TBLPTRH FCFh TMR1H FA7h EECON2(1) F7Fh ANSELH FF6h TBLPTRL FCEh TMR1L FA6h EECON1 F7Eh ANSEL FF5h TABLAT FCDh T1CON FA5h —(2) F7Dh IOCB FF4h PRODH FCCh TMR2 FA4h —(2) F7Ch WPUB FF3h PRODL FCBh PR2 FA3h —(2) F7Bh CM1CON0 FF2h INTCON FCAh T2CON FA2h IPR2 F7Ah CM2CON0 FF1h INTCON2 FC9h SSPBUF FA1h PIR2 F79h CM2CON1 FF0h INTCON3 FC8h SSPADD FA0h PIE2 F78h SLRCON FEFh INDF0(1) FC7h SSPSTAT F9Fh IPR1 F77h SSPMSK FEEh POSTINC0(1) FC6h SSPCON1 F9Eh PIR1 F76h —(2) FEDh POSTDEC0(1) FC5h SSPCON2 F9Dh PIE1 F75h —(2) FECh PREINC0(1) FC4h ADRESH F9Ch —(2) F74h —(2) FEBh PLUSW0(1) FC3h ADRESL F9Bh OSCTUNE F73h —(2) FEAh FSR0H FC2h ADCON0 F9Ah —(2) F72h —(2) F71h —(2) FE9h FSR0L FC1h ADCON1 F99h —(2) FE8h WREG FC0h ADCON2 F98h —(2) F70h —(2) FE7h INDF1(1) FBFh CCPR1H F97h —(2) F6Fh —(2) FE6h POSTINC1(1) FBEh CCPR1L F96h TRISE(3) F6Eh —(2) FE5h POSTDEC1(1) FBDh CCP1CON F95h TRISD(3) F6Dh —(2) FE4h PREINC1(1) FBCh CCPR2H F94h TRISC F6Ch —(2) FE3h PLUSW1(1) FBBh CCPR2L F93h TRISB F6Bh —(2) FE2h FSR1H FBAh CCP2CON F92h TRISA F6Ah —(2) F69h —(2) FE1h FSR1L FB9h PSTRCON F91h —(2) FE0h BSR FB8h BAUDCON F90h —(2) F68h —(2) FDFh INDF2(1) FB7h PWM1CON F8Fh —(2) F67h —(2) FDEh POSTINC2(1) FB6h ECCP1AS F8Eh —(2) F66h —(2) FDDh POSTDEC2(1) FB5h CVRCON F8Dh LATE(3) F65h —(2) FDCh PREINC2(1) FB4h CVRCON2 F8Ch LATD(3) F64h —(2) FDBh PLUSW2 (1) FB3h TMR3H F8Bh LATC F63h —(2) FDAh FSR2H FB2h TMR3L F8Ah LATB F62h —(2) FD9h FSR2L FB1h T3CON F89h LATA F61h —(2) FD8h STATUS FB0h SPBRGH F88h —(2) F60h —(2) 物理的なレジスタではありません。 未実装のレジスタは「0」と読み出されます。 このレジスタは、PIC18F2XK20 デバイスでは使用できません。 このレジスタは、PIC18F46K20 および PIC18F26K20 デバイスにのみ実装されています。 DS41303E_JP - ページ 76 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 5-2: File Name レジスタ ファイル一覧 (PIC18F2XK20/4XK20) Bit 7 Bit 6 Bit 5 — — — Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Details on page: ---0 0000 57, 64 TOSH Top-of-Stack, High Byte (TOS<15:8>) 0000 0000 57, 64 TOSL Top-of-Stack, Low Byte (TOS<7:0>) 0000 0000 57, 64 00-0 0000 57, 65 ---0 0000 57, 64 TOSU STKPTR STKFUL STKUNF — PCLATU — — — Top-of-Stack Upper Byte (TOS<20:16>) Value on POR, BOR SP4 SP3 SP2 SP1 SP0 Holding Register for PC<20:16> PCLATH Holding Register for PC<15:8> 0000 0000 57, 64 PCL PC, Low Byte (PC<7:0>) 0000 0000 57, 64 --00 0000 57, 90 TBLPTRU — — bit 21 Program Memory Table Pointer Upper Byte (TBLPTR<20:16>) TBLPTRH Program Memory Table Pointer, High Byte (TBLPTR<15:8>) 0000 0000 57, 90 TBLPTRL Program Memory Table Pointer, Low Byte (TBLPTR<7:0>) 0000 0000 57, 90 TABLAT Program Memory Table Latch 0000 0000 57, 90 PRODH Product Register, High Byte xxxx xxxx 57, 103 PRODL Product Register, Low Byte xxxx xxxx 57, 103 INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 0000 000x 57, 107 INTCON2 RBPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RBIP 1111 -1-1 57, 108 INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF 11-0 0-00 57, 109 INTCON3 INDF0 Uses contents of FSR0 to address data memory – value of FSR0 not changed (not a physical register) N/A 57, 82 POSTINC0 Uses contents of FSR0 to address data memory – value of FSR0 post-incremented (not a physical register) N/A 57, 82 POSTDEC0 Uses contents of FSR0 to address data memory – value of FSR0 post-decremented (not a physical register) N/A 57, 82 PREINC0 Uses contents of FSR0 to address data memory – value of FSR0 pre-incremented (not a physical register) N/A 57, 82 PLUSW0 Uses contents of FSR0 to address data memory – value of FSR0 offset by W (not a physical register) – FSR0H — — — — Indirect Data Memory Address Pointer 0, High Byte N/A 57, 82 ---- 0000 57, 82 57, 82 FSR0L Indirect Data Memory Address Pointer 0, Low Byte xxxx xxxx WREG Working Register xxxx xxxx 57 INDF1 Uses contents of FSR1 to address data memory – value of FSR1 not changed (not a physical register) N/A 57, 82 POSTINC1 Uses contents of FSR1 to address data memory – value of FSR1 post-incremented (not a physical register) N/A 57, 82 POSTDEC1 Uses contents of FSR1 to address data memory – value of FSR1 post-decremented (not a physical register) N/A 57, 82 PREINC1 Uses contents of FSR1 to address data memory – value of FSR1 pre-incremented (not a physical register) N/A 57, 82 PLUSW1 Uses contents of FSR1 to address data memory – value of FSR1 offset by W (not a physical register) – value of N/A 57, 82 ---- 0000 58, 82 xxxx xxxx 58, 82 FSR1H FSR1L BSR — — — — Indirect Data Memory Address Pointer 1, High Byte Indirect Data Memory Address Pointer 1, Low Byte — — — — Bank Select Register ---- 0000 58, 69 N/A 58, 82 INDF2 Uses contents of FSR2 to address data memory – value of FSR2 not changed (not a physical register) POSTINC2 Uses contents of FSR2 to address data memory – value of FSR2 post-incremented (not a physical register) N/A 58, 82 POSTDEC2 Uses contents of FSR2 to address data memory – value of FSR2 post-decremented (not a physical register) N/A 58, 82 PREINC2 Uses contents of FSR2 to address data memory – value of FSR2 pre-incremented (not a physical register) N/A 58, 82 PLUSW2 Uses contents of FSR2 to address data memory – value of FSR2 offset by W (not a physical register) – value of N/A 58, 82 ---- 0000 58, 82 xxxx xxxx 58, 82 ---x xxxx 58, 80 FSR2H FSR2L STATUS — — — — Indirect Data Memory Address Pointer 2, High Byte Indirect Data Memory Address Pointer 2, Low Byte — — — N OV Z DC C 記号の説明 : x = 不明、u = 不変、— = 未実装、q = 条件により変化する値 注 1: SBOREN ビットを使用できるのは構成ビット BOREN<1:0> = 01 の場合のみです。それ以外の場合は使用不可で「0」と読み出されます (4.4 項「ブラウンアウト リセット (BOR)」参照 )。 2: これらのレジスタおよびビット ( または、そのいずれか一方 ) は、28 ピンデバイスには未実装で、「0」と読み出されます。リセット値は 40/44 ピン デバイスのものです。その他の各デバイスの未実装ビットのリセット値は「-」であるものと解釈してください。 3: PLLEN ビットは特定のオシレータ構成のみで使用でき、その他の場合は無効化され「0」と読み出されます (2.6.2 項「HFINTOSC モード の PLL」参照 )。 4: RE3 ビットはマスター クリア リセットが無効 ( 構成ビット MCLRE = 0) の場合のみ使用できます。その他の場合、RE3 は「0」と読み出さ れます。このビットは読み出し専用です。 5: RA6/RA7 およびこれらに関連するラッチと方向ビットは、使用する各種プライマリ オシレータ モードに基づいて、個々にポート ピンと して構成されます。無効の場合は「0」と読み出されます。 6: CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。 7: このレジスタは、PIC18F46K20 および PIC18F26K20 デバイスにのみ実装されています。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 77 PIC18F2XK20/4XK20 表 5-2: File Name レジスタ ファイル一覧 (PIC18F2XK20/4XK20) ( 続き ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Value on POR, BOR Details on page: TMR0H Timer0 Register, High Byte 0000 0000 58, 155 TMR0L Timer0 Register, Low Byte xxxx xxxx 58, 155 58, 153 T0CON OSCCON HLVDCON WDTCON RCON TMR0ON T08BIT T0CS T0SE PSA T0PS2 T0PS1 T0PS0 1111 1111 IDLEN IRCF2 IRCF1 IRCF0 OSTS IOFS SCS1 SCS0 0011 qq00 27, 58 VDIRMAG — IRVST HLVDEN HLVDL3 HLVDL2 HLVDL1 HLVDL0 0-00 0101 58, 289 — — — — — — — SWDTEN --- ---0 58, 305 IPEN SBOREN(1) — RI TO PD POR BOR 0q-1 11q0 49, 56, 116 TMR1H Timer1 Register, High Byte xxxx xxxx 58, 163 TMR1L Timer1 Register, Low Bytes xxxx xxxx 58, 163 0000 0000 58, 157 T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON TMR2 Timer2 Register 0000 0000 58, 166 PR2 Timer2 Period Register 1111 1111 58, 166 T2CON — T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 SSPBUF SSP Receive Buffer/Transmit Register SSPADD SSP Address Register in I2C™ Slave Mode. SSP Baud Rate Reload Register in I2C Master Mode. T2CKPS0 -000 0000 58, 165 xxxx xxxx 58, 199, 200 0000 0000 58, 200 SSPSTAT SMP CKE D/A P S R/W UA BF 0000 0000 58, 192, 202 SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 58, 193, 203 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000 58, 204 ADRESH SSPCON2 A/D Result Register, High Byte xxxx xxxx 59, 273 ADRESL A/D Result Register, Low Byte xxxx xxxx 59, 273 ADCON0 — — CHS3 CHS2 CHS1 CHS0 GO/DONE ADON --00 0000 59, 267 ADCON1 — — VCFG1 VCFG0 — — — — --00 ---- 59, 268 ADFM — ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0 ADCON2 CCPR1H Capture/Compare/PWM Register 1, High Byte CCPR1L Capture/Compare/PWM Register 1, Low Byte CCP1CON P1M1 P1M0 DC1B1 CCPR2H Capture/Compare/PWM Register 2, High Byte CCPR2L Capture/Compare/PWM Register 2, Low Byte DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0-00 0000 59, 269 xxxx xxxx 59, 142 xxxx xxxx 59, 142 0000 0000 59, 171 xxxx xxxx 59, 142 xxxx xxxx 59, 142 CCP2CON — — DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 --00 0000 59, 141 PSTRCON — — — STRSYNC STRD STRC STRB STRA ---0 0001 59, 185 BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 0100 0-00 59, 244 PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 59, 184 ECCP1AS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 0000 0000 59, 181 CVRCON CVREN CVROE CVRR CVRSS CVR3 CVR2 CVR1 CVR0 0000 0000 59, 287 FVREN FVRST — — — — — — CVRCON2 TMR3H Timer3 Register, High Byte TMR3L Timer3 Register, Low Byte T3CON RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 00-- ---- 59, 288 xxxx xxxx 59, 170 xxxx xxxx 59, 170 0000 0000 59, 167 記号の説明 : x = 不明、u = 不変、— = 未実装、q = 条件により変化する値 注 1: SBOREN ビットを使用できるのは構成ビット BOREN<1:0> = 01 の場合のみです。それ以外の場合は使用不可で「0」と読み出されます (4.4 項「ブラウンアウト リセット (BOR)」参照 )。 2: これらのレジスタおよびビット ( または、そのいずれか一方 ) は、28 ピンデバイスには未実装で、「0」と読み出されます。リセット値は 40/44 ピン デバイスのものです。その他の各デバイスの未実装ビットのリセット値は「-」であるものと解釈してください。 3: PLLEN ビットは特定のオシレータ構成のみで使用でき、その他の場合は無効化され「0」と読み出されます (2.6.2 項「HFINTOSC モード の PLL」参照 )。 4: RE3 ビットはマスター クリア リセットが無効 ( 構成ビット MCLRE = 0) の場合のみ使用できます。その他の場合、RE3 は「0」と読み出さ れます。このビットは読み出し専用です。 5: RA6/RA7 およびこれらに関連するラッチと方向ビットは、使用する各種プライマリ オシレータ モードに基づいて、個々にポート ピンと して構成されます。無効の場合は「0」と読み出されます。 6: CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。 7: このレジスタは、PIC18F46K20 および PIC18F26K20 デバイスにのみ実装されています。 DS41303E_JP - ページ 78 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 5-2: File Name レジスタ ファイル一覧 (PIC18F2XK20/4XK20) ( 続き ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Value on POR, BOR Details on page: 59, 237 SPBRGH EUSART Baud Rate Generator Register, High Byte 0000 0000 SPBRG EUSART Baud Rate Generator Register, Low Byte 0000 0000 59, 237 RCREG EUSART Receive Register 0000 0000 59, 234 TXREG EUSART Transmit Register 0000 0000 59, 233 TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010 59, 242 RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 59, 243 EEADR EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 — — — — — — EEADR9 EEADR8 EEADRH(7) EEDATA EEPROM Data Register EECON2 EEPROM Control Register 2 (not a physical register) EECON1 EEPGD CFGS 0000 0000 59, 88, 97 ---- --00 59, 88, 97 0000 0000 59, 88, 97 — 0000 0000 59, 88, 97 FREE WRERR WREN WR RD xx-0 x000 59, 89, 97 IPR2 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP 1111 1111 PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 0000 0000 60, 111 PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 0000 0000 60, 113 IPR1 PSPIP(2) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 1111 1111 60, 114 PIR1 PSPIF(2) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 60, 110 PIE1 PSPIE(2) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 60, 112 OSCTUNE INTSRC PLLEN(3) TUN5 TUN4 TUN3 TUN2 TUN1 TUN0 0q00 0000 31, 60 IBF OBF IBOV PSPMODE — TRISE2 TRISE1 TRISE0 0000 -111 60, 132 TRISE(2) 60, 115 TRISD(2) PORTD Data Direction Control Register 1111 1111 60, 128 TRISC PORTC Data Direction Control Register 1111 1111 60, 125 TRISB PORTB Data Direction Control Register 1111 1111 60, 122 TRISA TRISA7(5) TRISA6(5) LATE(2) — — Data Direction Control Register for PORTA — — — PORTE Data Latch Register (Read and Write to Data Latch) 1111 1111 60, 119 ---- -xxx 60, 131 LATD(2) PORTD Data Latch Register (Read and Write to Data Latch) xxxx xxxx 60, 128 LATC PORTC Data Latch Register (Read and Write to Data Latch) xxxx xxxx 60, 125 LATB PORTB Data Latch Register (Read and Write to Data Latch) xxxx xxxx 60, 122 LATA7(5) LATA6(5) — — — — RE3(4) RE2(2) RE1(2) RE0(2) PORTD(2) RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx 60, 128 PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx 60, 125 60, 122 LATA PORTE PORTA Data Latch Register (Read and Write to Data Latch) xxxx xxxx 60, 119 ---- x000 60, 131 PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxx0 0000 PORTA RA7(5) RA6(5) RA5 RA4 RA3 RA2 RA1 RA0 xx0x 0000 60, 119 — — — ANS12 ANS11 ANS10 ANS9 ANS8 ---1 1111 60, 135 ANSEL ANS7(2) ANS6(2) ANS5(2) ANS4 ANS3 ANS2 ANS1 ANS0 1111 1111 60, 134 IOCB IOCB7 IOCB6 IOCB5 IOCB4 — — — — 0000 ---- 60, 122 WPUB 60, 122 ANSELH(6) WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 1111 1111 CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0 0000 0000 60, 280 CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0 0000 0000 61, 281 CM2CON1 MC1OUT MC2OUT C1RSEL C2RSEL — — — — 0000 ---- 61, 283 SLRCON — — — SLRE(2) SLRD(2) SLRC SLRB SLRA ---1 1111 61, 136 SSPMSK MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0 1111 1111 61, 211 記号の説明 : x = 不明、u = 不変、— = 未実装、q = 条件により変化する値 注 1: SBOREN ビットを使用できるのは構成ビット BOREN<1:0> = 01 の場合のみです。それ以外の場合は使用不可で「0」と読み出されます (4.4 項「ブラウンアウト リセット (BOR)」参照 )。 2: これらのレジスタおよびビット ( または、そのいずれか一方 ) は、28 ピンデバイスには未実装で、「0」と読み出されます。リセット値は 40/44 ピン デバイスのものです。その他の各デバイスの未実装ビットのリセット値は「-」であるものと解釈してください。 3: PLLEN ビットは特定のオシレータ構成のみで使用でき、その他の場合は無効化され「0」と読み出されます (2.6.2 項「HFINTOSC モード の PLL」参照 )。 4: RE3 ビットはマスター クリア リセットが無効 ( 構成ビット MCLRE = 0) の場合のみ使用できます。その他の場合、RE3 は「0」と読み出さ れます。このビットは読み出し専用です。 5: RA6/RA7 およびこれらに関連するラッチと方向ビットは、使用する各種プライマリ オシレータ モードに基づいて、個々にポート ピンと して構成されます。無効の場合は「0」と読み出されます。 6: CONFIG3H の PBADEN ビットが「0」の場合、ANSELH レジスタの全ビットが「0」に初期化されます。 7: このレジスタは、PIC18F46K20 および PIC18F26K20 デバイスにのみ実装されています。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 79 PIC18F2XK20/4XK20 5.3.5 STATUS レジスタ レジスタ 5-2 に示す STATUS レジスタは、ALU の算 術的状態を表します。他の SFR と同様、すべての命 令のオペランドに指定できます。 Z、DC、C、OV、N ビットに影響を与える命令の出 力先として STATUS レジスタを指定すると、結果が 書き込まれるのではなく、実行された命令に応じて STATUS レジスタが更新されます。したがって、 STATUS レジスタを出力先として命令を実行した場 合、意図したものと異なる結果が得られる場合があ ります。例えば、CLRF STATUS は Z ビットのみを セットして、残りのビットは変更しません (「000u u1uu」)。 レジスタ 5-2: STATUS レジスタを変更するときは、Z、C、DC、 OV、N ビットに影響を与えない、BCF、BSF、SWAPF、 MOVFF、MOVWF 命令だけを使用することを推奨し ます。 ステータス ビットに影響を与えないその他の命令 は、表 24-2 と表 24-3 の命令セット一覧を参照して ください。 注: 減算では、C ビットがボロー、DC ビットが デジット ボロービットとして動作します。 STATUS: STATUS レジスタ U-0 U-0 — — U-0 — R/W-x N R/W-x OV R/W-x Z R/W-x DC (1) bit 7 R/W-x C(1) bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7-5 未実装 :「0」として読み出し ビット 4 N: 負号ビット このビットは符号付き算術演算に使用され (2 の補数 )、結果が負であるかどうかを示します (ALU MSB = 1)。 1 = 結果は負 0 = 結果は正 ビット 3 OV: オーバーフロー ビット このビットは符号付き算術演算に使用され (2 の補数 )、絶対値が 7 ビットをオーバーフローし、 符号ビット ( 結果のビット 7) の状態が変わったことを知らせます。 1 = 符号付き演算でオーバーフロー発生 ( この算術演算で ) 0 = オーバーフローは発生していない ビット 2 Z: ゼロ ビット 1 = 算術演算または論理演算の結果がゼロ 0 = 算術演算または論理演算の結果がゼロ以外 ビット 1 DC: デジット キャリー / ボロー ビット (ADDWF、ADDLW、SUBLW、SUBWF 命令用 )(1) 1 = 演算結果の下位 4 ビット目からキャリーが発生した 0 = 演算結果の下位 4 ビット目からキャリーが発生していない ビット 0 C: キャリー / ボロー ビット (ADDWF、ADDLW、SUBLW、SUBWF 命令用 )(1) 1 = 演算結果の最上位ビットからキャリーが発生した 0 = 演算結果の最上位ビットからキャリーが発生していない 注 1: ボローの場合は極性が逆になります。減算は、2 番目のオペランドの 2 の補数を加算することによっ て実行されます。ローテート (RRF、RLF) 命令の場合は、このビットにはソース レジスタの上位ビッ トまたは下位ビットのいずれかがロードされます。 DS41303E_JP - ページ 80 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 5.4 注: データのアドレス指定モード PIC18 コア命令セットの中には、PIC18 拡 張命令セットを有効にすると動作が変わ るものがあります。詳細は、5.5 項「デー タ メモリと拡張命令セット」を参照して ください。 プログラム メモリのアドレスを指定するには、プ ログラム カウンタを使用する方法しかありません が、データ メモリ空間内の情報についてはいくつ かの方法でアドレスを指定できます。ほとんどの命 令ではアドレス指定モードが固定されています。し かし、使用するオペランドおよび拡張命令セットの 有効 / 無効に応じて最大 3 つのモードを使用できる 命令もあります。 アドレス指定モードは次の 4 種類です。 • • • • 含意 リテラル 直接 間接 拡張命令セットを有効にしている場合は ( 構成ビッ ト XINST = 1)、もう一つのアドレス指定モードであ るインデックス付きリテラル オフセット モードを 使用できます。その動作は、5.5.1 項「リテラル オ フセットによる インデックス付きアドレス指定」で 詳細に検討します。 5.4.1 固有およびリテラル アドレス指定 PIC18 の制御命令の多くが引き数を一切必要としま せん。それらの命令は、デバイス全体に作用する か、暗黙のうちに特定の 1 レジスタに作用するため です。このようなアドレス指定モードは含意アドレ ス指定と呼ばれます。例えば、SLEEP、RESET、DAW などがこのモードを使用します。 その他の命令も同様に動作しますが、オペコード内 に更にもう 1 つ明示的な引き数が必要になります。 これは、引き数として何らかのリテラル値を必要と するため、リテラル アドレス指定モードと呼ばれ ます。このモードを使用するコマンドの例として ADDLW、MOVLW などがあります。W レジスタに対 してリテラル値をそれぞれ加算、または移動しま す。その他には、20 ビットのプログラム メモリ ア ドレスを含む CALL、GOTO などがあります。 5.4.2 直接アドレス指定 直接アドレス指定では、演算に対する入力元また は出力先アドレス ( あるいは、その両方 ) のすべて または一部をオペコード自体の中で指定します。 オプションは命令に付加する引き数によって指定 します。 PIC18 のコア命令セット内のビット指向およびバイ ト指向の命令は、デフォルトとして複数の種類があ る直接アドレス指定モードのいずれかを使用しま す。これらの命令はすべてその最下位バイトに 8 ビットのリテラル アドレスを含みます。このアド レスは命令のデータ入力元として、データ RAM の 2009 Microchip Technology Inc. いずれかのバンク内のレジスタ アドレスか (5.3.3 項 「汎用レジスタ ファイル」参照 )、アクセス バンク (5.3.2 項「アクセス バンク」参照 ) 内の位置を指定 するものです。 アドレスをどちらに解釈するかはアクセス RAM ビット「a」によって決まります。 「a」が「1」の場 合、BSR (5.3.1 項「バンク選択レジスタ (BSR)」参 照 ) の内容と、命令内で指定されたアドレスを組み 合わせてレジスタのフル アドレス 12 ビットを判断 します。 「a」が「0」の場合、アドレスはアクセス バンク内のレジスタを指すものとして解釈されま す。アクセス RAM を使用するアドレス指定は、直 接強制アドレス指定モードと呼ばれることもあり ます。 MOVFFなど少数の命令では、 オペコード内に12ビッ トのアドレス ( 入力元または出力先のいずれか ) の すべてが埋め込まれています。これらの命令の場 合、BSR は完全に無視されます。 演算結果の出力先は出力先ビット「d」によって決 まります。 「d」が「1」の場合、結果は入力元のレ ジスタに、元の値を上書きする形で格納されます。 「d」が「0」の場合、結果は W レジスタに書き込ま れます。引き数「d」を持たない命令では、結果の 出力先が暗黙に指定されており、現在演算対象と なっているレジスタまたは W レジスタのいずれか になります。 5.4.3 間接アドレス指定 間接アドレス指定では、命令内で固定アドレスを指 定せずに、データ メモリ内の目的の位置にアクセ スできます。このモードでは、読み出し / 書き込み を実行する位置へのポインタとして、ファイル選択 レジスタ (FSR) を使用します。FSR 自体も RAM 内 の特殊ファイル レジスタの 1 つに格納されている ため、プログラム制御によって直接操作できます。 このため、FSR はデータ メモリ内にテーブルや配 列などのデータ構造を実装するときに非常に便利 です。 間接ファイル オペランド (INDF) を使用する、間接 アドレス指定用のレジスタも実装されています。 INDF には自動インクリメント、自動デクリメント、 任意の値によるオフセットなど、ポインタ値を自動 的に操作する機能があります。この機能を使えば、 RAM バンクの全体をクリアする、例 5-5 のような ループを用いたコードを効率的に作成できます。 例 5-5: NEXT 間接アドレス指定による RAM ( バンク 1) のクリア方法 LFSR CLRF BTFSS BRA CONTINUE Preliminary FSR0, 100h; POSTINC0 ; ; ; FSR0H, 1; All ; NEXT ; ; Clear INDF register then inc pointer done with Bank1? NO, clear next YES, continue DS41303E_JP - ページ 81 PIC18F2XK20/4XK20 5.4.3.1 FSR レジスタと INDF オペランド 5.4.3.2 間接アドレス指定は 3 つのレジスタ セット、FSR0、 FSR1、FSR2 を中心に動作します。各セットは 1 対 の 8 ビット レジスタ FSRnH と FSRnL からなりま す。各 FSR の対には 12 ビットの値が格納されます。 したがって、FSRnH レジスタの上位 4 ビットは未 使用となります。12 ビットの FSR の値によって、 データ メモリの全範囲に対してリニアにアドレス を指定できます。FSR レジスタ対は、データ メモ リ内の位置を指すポインタとして機能します。 INDF オペランドに加えて、各 FSR レジスタ対には 更に 4 つの間接オペランドがあります。INDF 同様、 これらも直接読み出したり書き込んだりすること ができない「仮想」レジスタです。これらのレジス タへのアクセスは、実際には対応する FSR レジスタ 対が指す位置へのアクセスとなり、同時に次に示す ような FSR 値に対する特定の演算を実行できます。 • POSTDEC: FSR が指す位置にアクセスした後、 FSR を自動的に 1 だけデクリメントします。 • POSTINC: FSR が指す位置にアクセスした後、 FSR を自動的に 1 だけインクリメントします。 • PREINC: FSR を自動的に 1 だけインクリメント した後、FSR が指す位置を演算に使用します。 • PLUSW: W レジスタに格納された符号付きの値 (-127 ~ 128) を FSR の値に加算し、結果が指す 位置を演算に使用します。 間接アドレス指定は、間接ファイル オペランド INDF0 ~ INDF2 によって実現します。これらのオペ ランドは「仮想」レジスタと見なすことができます。 SFR の空間に対応づけられてはいますが、物理的に は実装されていません。特定の INDF レジスタへの 読み出し / 書き込み動作は、実際には対応する FSR レジスタ対にアクセスしています。例えば、INDF1 からの読み出しの場合、データは FSR1H:FSR1L が 指すアドレスから読み出されます。INDF レジスタ をオペランドとする命令は、実際には対応する FSR の内容を、命令対象へのポインタとして使用してい ます。INDF オペランドは、単にポインタを使いや すくするために設けられたものです。 このような INDF レジスタへのアクセスでは、対応 する FSR レジスタ内の値を、変更せずに使用して います。 同様に PLUSW レジスタにアクセスすると、 FSR の値が W レジスタの値だけオフセットされま すが、W および FSR レジスタの値自体は、いずれ もこの演算によっては変更されません。他の仮想レ ジスタへのアクセスでは FSR レジスタの値が変化 します。 間接アドレス指定では 12 ビットのフル アドレスを 使用するため、データ RAM のバンク指定は不要で す。したがって、BSR の現在の内容やアクセス RAM ビットは対象アドレスの判断に何の影響も与えま せん。 図 5-10: FSR レジスタと POSTINC、 POSTDEC、PREINC、PLUSW 間接アドレス指定 000h 間接アドレス指定用レジスタをオ ペランドとして指定する命令を使 用します。 Bank 0 ADDWF, INDF1, 1 100h Bank 1 200h 該当レジスタに関連付けられた FSR 対に格納された 12 ビットのア ドレスを使用します。 300h FSR1H:FSR1L 7 0 x x x x 1 1 1 0 7 0 Bank 2 Bank 3 through Bank 13 1 1 0 0 1 1 0 0 演算で使用するデータ メモリ位置 を判断します。 E00h ここでは、FSR1 対に格納されてい る値は ECCh です。これは、位置 ECCh の内容が W レジスタの内容 に加算され、ECCh に書き戻される ことを意味します。 Bank 14 F00h FFFh Bank 15 Data Memory DS41303E_JP - ページ 82 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 FSR に対する POSTDEC、POSTINC、PREINC 操作 はレジスタ対の両方に影響を与えます。つまり、 FSRnL レジスタで FFh から 00h へのロールオーバー が発生すると、FSRnH レジスタにキャリーが送ら れます。一方、これらの操作の結果では、STATUS レジスタのフラグ ( 例 : Z、N、OV など ) の値はい ずれも変化しません。 PLUSW レジスタは、データ メモリ空間に対して一 種のインデックス付きアドレス指定を実装するの に使用できます。W レジスタ内の値を操作すること により、ポインタ アドレスから一定の値だけオフ セットしたアドレスにアクセスできます。アプリ ケーションによっては、この機能を使用して、ソフ トウェア スタックなどの強力なプログラム制御構 造をデータ メモリ内に実装できます。 5.4.3.3 FSR による FSR に対する操作 他の FSR や仮想レジスタへの間接アドレス指定の 操作は特殊な状況を招きます。例えば、FSR によっ て仮想レジスタの 1 つを指すような操作は正常に実 行されません。具体的なケースとして、 FSR0H:FSR0L に INDF1 のアドレス EF7h が格納さ れている場合を考えます。INDF0 をオペランドとし て INDF1 の値を読み出そうとすると、00h が返され ます。また、INDF0 をオペランドとして INDF1 に 書き込もうとすると、NOP が実行されます。 これに対し、仮想レジスタを用いて FSR 対に書き 込みを実行すると、期待された結果が得られない場 合があります。これらの場合、値は FSR 対に書き 込まれますが、インクリメントやデクリメントの操 作は一切実行されません。したがって、INDF2 また は POSTDEC2 レジスタのいずれに書き込んでも、 FSR2H:FSR2Lに書き込まれる値は同じになります。 FSR は SFR 空間に対応づけられた物理的なレジス タであるため、すべての直接命令により操作が可能 です。したがって、これらのレジスタを扱う場合、 特にコードで間接アドレス指定を使用している場 合は十分な注意が必要です。 同様に、間接アドレス指定による操作は、通常他の SFR のすべてに対しても実行可能です。したがって、 デバイスの動作に影響を与える設定を誤って変更し ないように、適切な注意を払ってください。 5.5 データ メモリと拡張命令セット PIC18 拡張命令セットを有効にすると ( 構成ビット XINST = 1)、データ メモリおよびそのアドレス指定 の一部が大きく変わります。具体的には、PIC18 コ ア命令の多くでアクセス バンクの使用方法が変わ ります。これは、データ メモリ空間に新しいアド レス指定モードを導入したためです。 拡張命令セットを使用しても変わらない部分にも 注目しておく必要があります。データ メモリ空間 のサイズおよびリニアなアドレス指定は変わりま せん。SFR のマップも同じです。PIC18 コア命令 2009 Microchip Technology Inc. セットは、直接および間接アドレス指定モードの両 方で同様に動作します。含意およびリテラル命令に も一切変更はありません。FSR0 および FSR1 によ る間接アドレス指定も変わりません。 5.5.1 リテラル オフセットによる インデックス付きアドレス指定 PIC18 拡張命令セットを有効にすると、FSR2 レジ スタ対をアクセス RAM 内で使用したときの動作が 変わります。一定の条件を満たせば、アクセス バ ンクを使用する命令、つまりほとんどのビット指向 およびバイト指向命令において、命令内でオフセッ トを指定する一種のインデックス付きアドレス指 定を利用できます。この特殊なアドレス指定モード は、リテラル オフセットによるインデックス付き アドレス指定、 またはインデックス付きリテラル オ フセット モードと呼ばれます。 拡張命令セットを使用する場合、このアドレス指定 モードでは以下の条件が課されます。 • アクセス バンクの使用が強制される (「a」= 0) • ファイル アドレスの引き数は 5Fh 以下とする この場合、命令のファイル アドレスは、アドレス の下位バイト ( 直接アドレス指定で BSR と併用され る 8 ビット ) とは解釈されず、アクセス バンク内の 位置を示す 8 ビットとも見なされません。ファイル アドレスは、FSR2 で指定されたアドレス ポインタ 値に対するオフセットと見なされます。オフセット と FSR2 の内容が加算され、演算対象のアドレスが 得られます。 5.5.2 インデックス付きリテラル オフセット モードの影響を受ける命令 直接アドレス指定を使用できるPIC18コア命令セッ トは、どれもがインデックス付きリテラル オフ セット アドレス指定モードの影響を受ける可能性 があ ります。これは すべて のバイト 指向およ び ビット指向の命令、つまり標準の PIC18 命令セッ トのほぼ半分が含まれることになります。含意ま たはリテラル アドレス指定モードしか使わない命 令は影響されません。 更に、バイト指向およびビット指向命令であって も、アクセス バンクを使用しない場合 ( アクセス RAM ビット =1)、または 60h 以上のファイル アド レスを指定している場合は影響を受けません。これ らの基準を満たす命令は、以前と同様に実行されま す。拡張命令セットを有効にした場合に変化する可 能性があるアドレス指定モードを、図 5-11 で比較 しています。 インデックス付きリテラル オフセット モードでバ イト指向またはビット指向命令を使用するユー ザーは、アセンブラ構文の違いに注意してくださ い。これについては、24.2.1 項「拡張命令のシン タックス」で詳細に説明します。 Preliminary DS41303E_JP - ページ 83 PIC18F2XK20/4XK20 図 5-11: ビット指向およびバイト指向命令のアドレス指定オプションの比較 ( 拡張命令セットを有効に した場合 ) 例の命令 : ADDWF, f, d, a ( オペコード : 0010 01da ffff ffff) 「a」= 0 および f 60h のとき : 000H 命令は直接強制アドレス指定 モードで実行されます。 「f」は 060h ~ 0FFh のアクセス RAM 内の位置として解釈されま す。こ れ は デ ー タ メ モ リ の F60h ~ FFFh ( バンク 15) の 位置と同じです。 060H このアドレス指定モードでは 60h より下位の位置は使用で きません。 BANK 0 100H 00H BANK 1 THROUGH BANK 14 60H VALID RANGE FOR ‘F’ ACCESS RAM F00H FFH BANK 15 F60H SFRS FFFH 「a」= 0 および f5Fh のとき : 命令はインデックス付きリテ ラル オフセット モードで実行 されます。 「f」は FSR2 のアド レス値のオフセットとして解 釈されます。2 つの値を加算し、 命令の演算対象のレジスタの アドレスを取得します。アドレ スはデータ メモリ空間内の任 意の位置です。 000H 060H BANK 0 100H 001001DA FFFFFFFF BANK 1 THROUGH BANK 14 FSR2H FSR2L F00H このモードで、正しい構文は次 のとおりです。 ADDWF [k], d 「k」は「f」と同じです。 FFFH 「a」= 1 のとき ( すべての値が f): 000H 命令は直接モード ( 直接長形 式モードとも呼ばれます ) で 実行されます。 「f」は、データ メモリ空間の16バンクのいず れか内の位置として解釈され ます。バンクはバンク選択レ ジスタ (BSR) によって指定さ れます。アドレスはデータ メ モリ空間内に実装されている 任意のバンク内です。 DATA MEMORY BANK 15 F60H SFRS DATA MEMORY BSR 00000000 060H BANK 0 100H BANK 1 THROUGH BANK 14 001001DA FFFFFFFF F00H BANK 15 F60H SFRS FFFH DS41303E_JP - ページ 84 DATA MEMORY Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 5.5.3 インデックス付きリテラル オフセッ ト モードにおけるアクセス バンクの マッピング インデックス付きリテラル オフセット アドレス指 定モードを使用する場合、実効的にアクセス RAM の先頭 96 アドレス (00h ~ 5Fh) のマッピングが変わ ります。このモードでは、アクセス RAM に対応づ けられる内容が、バンク 0 末尾に限られません。 ユーザーがデータ メモリ空間内の任意の位置に定 義した「ウィンドウ」の内容にアクセス RAM を対 応づけることができます。ウィンドウに対応づけら れるアドレスの下端は FSR2 の値として規定し、上 端は FSR2 に 95 (5Fh) を加えた値になります。アク セス RAM 内の 5Fh を超えるアドレスは、5.3.2 項 「アクセス バンク」の説明と同様の方法でデータ メ モリに対応づけられます。このアドレス指定モード によるアクセス バンクの再マッピングの例を図 512 に示します。 図 5-12: アクセス バンクの再マッピングは、インデックス 付きリテラル オフセット モードを使用する操作に のみ適用されます。BSR を使用する動作 ( アクセス RAM ビット =「1」) では、従来の直接アドレス指 定がそのまま使われます。 5.6 PIC18 命令の実行と拡張命令セット 拡張命令セットを有効にすると、従来の PIC18 命令 セットに 8 つの新しいコマンドが加わります。これ らの命令は、24.2 項「拡張命令セット」で説明する 方法に従って実行されます。 インデックス付きリテラル オフセット アドレス指定によるアクセス バンクの再マッピング 例の状況 : ADDWF f, d, a FSR2H:FSR2L = 120h 000h FSR2 ポインタ (120h) から、 これに 05Fh を足したアドレ 100h ス (17Fh) までが、アクセス 120h RAM の下端 (00h = 05Fh) に 17Fh 対応づけられます。 F60h ~ FFFh の特殊ファイ 200h ル レジスタは、通常どおり 60h ~ FFh に対応づけられ ます。 Bank 0 Bank 1 Window 00h Bank 1 Bank 1 “Window” 5Fh 60h Bank 2 through Bank 14 バンク 0 の 5Fh より下位の アドレスも、BSR を使用し て従来どおり指定できます。 SFRs FFh Access Bank F00h Bank 15 F60h FFFh SFRs Data Memory 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 85 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 86 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 6.0 6.1 フラッシュ プログラム メモリ フラッシュ プログラム メモリは通常動作中、VDD の全範囲において読み出し、書き込み、消去が可能 です。 プログラム メモリの読み出しは 1 度に 1 バイトず つです。書き込みは、デバイスの種類に応じて 1 度 に 64、32、8 バイトのブロックごとに実行されます ( 表 6-1 参照 )。一方、消去は 64 バイト単位で実行 されます。書き込みと消去のブロック サイズが異 なるため、1 回ブロック消去を実行すると、そのブ ロックの内容を回復するには 1 ~ 8 回のブロック書 き込みが必要になります。バルク消去動作はユー ザー コードからは実行できません。 表 6-1: 書き込み / 消去のブロック サイズ Write Block Size (bytes) Erase Block Size (bytes) PIC18F43K20, PIC18F23K20 16 64 PIC18F24K20, PIC18F25K20, PIC18F44K20, PIC18F45K20 32 64 PIC18F26K20, PIC18F46K20 64 64 Device テーブル読み出しおよびテーブル 書き込み プロセッサは次の 2 つの命令によって、プログラム メモリ空間とデータ RAM 間でデータを転送して、 プログラム メモリに対して読み出しあるいは書き 込みを実行します。 • テーブル読み出し (TBLRD) • テーブル書き込み (TBLWT) プログラム メモリ空間は 16 ビット幅であるのに対 し、データ RAM 空間は 8 ビット幅です。テーブル 読み出しおよびテーブル書き込みでは、これら 2 つ のメモリ空間の間で、8 ビット幅のレジスタ (TABLAT) を介してデータを移動します。 テーブル読み出し動作では、プログラム メモリか ら 1 バイトのデータを直接取得し、TABLAT レジス タに格納します。図 6-1 に、テーブル読み出しの動 作を示します。 テーブル書き込み動作では、TABLAT レジスタから 1 バイトのデータを書き込みブロック保持レジスタ へ格納します。保持レジスタの内容をプログラム メ モリに書き込む手順は、6.5 項「フラッシュ プログ ラム メモリへの書き込み」で詳細に説明します。 図 6-2 に、プログラム メモリとデータ RAM による テーブル書き込みの動作を示します。 プログラム メモリに対する書き込みまたは消去を 実行すると、その動作が完了するまで命令のフェッ チが中断されます。書き込みまたは消去中のプログ ラム メモリにはアクセスできないため、コードを 実行できないからです。プログラム メモリの書き 込みおよび消去は、内部のプログラミング タイマ によって終了します。 テーブルはバイト単位で操作します。プログラム命 令ではなく、データを含むテーブルはワード単位で 区切りが揃っている必要はありません。したがっ て、テーブルは任意のバイト アドレスで開始および 終了することができます。ただしプログラム メモリ に実行可能なコードを書き込むためにテーブル書 き込みを使用する場合は、ワード単位でプログラム 命令の位置を揃える必要があります。 プログラム メモリに書き込む値は、必ずしも有効 な命令である必要はありません。命令として無効な 値が格納されたプログラム メモリ位置を実行した 場合は、NOP になります。 図 6-1: テーブル読み出し動作 Instruction: TBLRD* Program Memory Table Pointer(1) TBLPTRU TBLPTRH Table Latch (8-bit) TBLPTRL TABLAT Program Memory (TBLPTR) 注 1: テーブル ポインタ レジスタはプログラム メモリ内の 1 バイトを指します。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 87 PIC18F2XK20/4XK20 図 6-2: テーブル書き込み動作 Instruction: TBLWT* Program Memory Table Pointer(1) TBLPTRU TBLPTRH Holding Registers Table Latch (8-bit) TBLPTRL TABLAT Program Memory (TBLPTR<MSBs>) 注 1: 6.2 テーブル書き込み時にテーブル ポインタは直接プログラム メモリを指すわけではません。TBLPRTL の 下位ビットは、実際には書き込みブロック保持レジスタ内のアドレスを指します。一方、テーブル ポイ ンタの上位ビットは、最終的に書き込まれるブロックを指定します。保持レジスタの内容をプログラム メモリ アレイに書き込む手順は、6.5 項「フラッシュ プログラム メモリへの書き込み」で説明します。 制御レジスタ TBLRDおよびTBLWT命令は、次に示す複数の制御レ ジスタと組み合わせて使用します。 • • • • EECON1 レジスタ EECON2 レジスタ TABLAT レジスタ TBLPTR レジスタ 6.2.1 WREN ビットをセットすると、書き込み動作が有効 になります。WREN ビットは、電源投入時にクリア されます。 EECON1 および EECON2 レジスタ EECON1 レジスタ ( レジスタ 6-1) は、メモリ アク セス用の制御レジスタです。EECON2 レジスタは物 理的なレジスタではなく、メモリの書き込みおよび 消去シーケンスのみに使われます。EECON2 を読み 出すと、常に「0」になります。 制御ビット EEPGD は、アクセス対象がプログラム メモリあるいはデータ EEPROM のどちらであるか を決定します。EEPGD がクリアされている場合、以 降の動作はすべてデータ EEPROM が対象になりま す。EEPGD がセットされている場合、以降の動作 ではすべてプログラム メモリにアクセスします。 制御ビット CFGS は、アクセス対象が構成 / 較正レ ジスタか、あるいはプログラム メモリ / データ EEPROM のどちらであるかを決定します。CFGS が セットされている場合、以降の動作は EEPGD の状 態にかかわらず、すべて構成レジスタが対象になり ます (23.0 項「CPU の特殊機能」参照 )。CFGS がク リアされている場合は、EEPGD の状態に応じてア クセスするメモリが選択されます。 DS41303E_JP - ページ 88 FREE ビットはプログラム メモリの消去動作を有効 にします。FREE がセットされている場合、次の WR コマンドによって消去動作が開始されます。FREE がクリアされている場合は、書き込みだけが有効に なります。 WR ビットがセットされ、その後内部プログラミン グ タイマの時間が経過して書き込み動作が完了し、 WR ビットがクリアされると、ハードウェアによっ て WRERR ビットが設定されます。 注: 通常の動作中は、WRERR ビットは「1」 と読み出されます。これは、書き込み動作 が完了する前にリセットによって中断さ れたか、書き込み方法が不適切であったこ とを示している場合があります。 制御ビット WR によって書き込み動作が開始されま す。WR ビットはファームウェアによるセットだけ が可能でクリアはできません。書き込み動作が完了 したときに、ハードウェアによってクリアされます。 注: Preliminary 書き込みが完了すると、PIR2 レジスタの 割り込みフラグ ビット EEIF がセットされ ます。このフラグはファームウェアによっ てクリアされるまで、セットされた状態を 保ちます。 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 6-1: EECON1: データ EEPROM 制御レジスタ 1 R/W-x R/W-x U-0 R/W-0 R/W-x R/W-0 R/S-0 R/S-0 EEPGD CFGS — FREE WRERR WREN WR RD bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 S = ソフトウェアによるセット可、クリアは不可 -n = POR 時の値 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 ビット 7 EEPGD: フラッシュ プログラムまたはデータ EEPROM のメモリ選択ビット 1 = フラッシュ プログラム メモリにアクセス 0 = データ EEPROM にアクセス ビット 6 CFGS: フラッシュ プログラム メモリ / データ EEPROM または構成レジスタの選択ビット 1 = 構成レジスタにアクセス 0 = フラッシュ プログラム メモリまたはデータ EEPROM にアクセス ビット 5 未実装 :「0」として読み出し ビット 4 FREE: フラッシュメモリの行 ( ブロック ) 消去イネーブル ビット 1 = 次の WR コマンドで、TBLPTR が指定するアドレスのプログラム メモリ ブロックを消去 ( 消去動作の完了によってクリア ) 0 = 書き込みのみを実行 ビット 3 WRERR: フラッシュ プログラム メモリ / データ EEPROM のエラー フラグ ビット (1) 1 = 書き込み動作が完了前に中断された ( 内部タイマによる通常のプログラミング中に発生し た何らかのリセット、または不適切な書き込みによる ) 0 = 書き込み動作完了 ビット 2 WREN: フラッシュ プログラム メモリ / データ EEPROM の書き込みイネーブル ビット 1 = フラッシュ プログラム メモリ / データ EEPROM に対する書き込みサイクルを許可 0 = フラッシュ プログラム メモリ / データ EEPROM に対する書き込みサイクルを禁止 ビット 1 WR: 書き込み制御ビット 1 = データ EEPROM またはプログラム メモリの消去 / 書き込みサイクルを開始 ( 内蔵タイマで自動的に動作し、書き込み完了時にハードウェアによりクリア。 WR ビットはソフトウェアによるセットのみが可能で、クリアはできません。) 0 = EEPROM への書き込みサイクル完了 ビット 0 RD: 読み出し制御ビット 1 = EEPROM の読み出し開始 ( 読み出しは 1 サイクルで実行されます。 RD ビットはハードウェア によってクリアされます。RD ビットはソフトウェアによるセットのみが可能で、クリアは できません。ただし、EEPGD = 1 または CFGS = 1 の場合はセットできません。) 0 = EEPROM の読み出しを開始しない 注 1: WRERR ( 書き込みエラー ) が発生しても EEPGD および CFGS ビットはクリアされません。これによ り、エラー状況の追跡が可能になります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 89 PIC18F2XK20/4XK20 6.2.2 TABLAT – テーブル ラッチ レジスタ TBLRD が実行されると、TBLPTR の 22 ビットすべて によって、プログラム メモリから直接 TABLAT レ ジスタに読み出すバイトが指定されます。 テーブル ラッチ (TABLAT) は、SFR 空間に対応づけ られた 8 ビットのレジスタです。テーブル ラッチ レジスタはプログラム メモリとデータ RAM 間で データを転送するときに 8 ビットのデータを保持す るために使用します。 6.2.3 TBLPTR – テーブル ポインタ レジスタ テーブル ポインタ (TBLPTR) レジスタはプログラム メモ リ 内の 1 バ イ トの アド レ スを 指 定し ます。 TBLPTR は、テーブル ポインタ最上位バイト、テー ブル ポインタ上位バイト、テーブル ポインタ下位 バイト (TBLPTRU:TBLPTRH:TBLPTRL) の 3 つの SFR から構成されます。これら 3 つのレジスタの内 容を結合して 22 ビット幅のポインタとします。下 位の 21 ビットにより最大 2 MB のプログラム メモ リ空間内のアドレスを指定できます。22 番目のビッ トは、デバイス ID、ユーザー ID、および構成ビッ トへのアクセスを可能にします。 テーブル ポインタ レジスタ TBLPTR は、TBLRD お よび TBLWT 命令で使用します。 これらの命令はテー ブル操作に関する 4 種類の方法のいずれかによって TBLPTR を更新します。これらの操作を表 6-2 に示 します。これらの TBLPTR に対する操作は、下位 21 ビットに対してのみ作用します。 6.2.4 TBLWT が実行されると、TABLAT レジスタ内のバイ トが、フラッシュ メモリではなく、プログラム メ モリ書き込みの準備に使用する保持レジスタに書 き込まれます。保持レジスタはデバイスの種類に よってサイズの異なる書き込みブロックを構成し ます ( 表 6-1 参照 )。TBLPTRL レジスタの下位 3、 4、5 ビットによって、保持レジスタ ブロック内の どのアドレスに書き込むかが決まります。テーブル ポインタの上位ビットは、TBLWT 動作には何の影 響も及ぼしません。 プログラム メモリの書き込みを実行すると、保持レ ジスタ ブロック全体の内容が、TBLPTR の上位ビッ トによって決まるフラッシュ メモリのアドレスに 書き込まれます。このとき下位の 3、4、5 ビットは 無視されます。詳細は、6.5 項「フラッシュ プログ ラム メモリへの書き込み」を参照してください。 プログラム メモリの消去を実行すると、テーブル ポインタ レジスタの上位 16 ビット (TBLPTR<21:6>) が指す 64 バイトのブロックが消去されます。下位 ビット (TBLPTR<5:0>) は無視されます。 図 6-3 に、フラッシュ プラグラム メモリに対する 動作ごとの TBLPTR の境界を示します。 テーブル ポインタの境界 TBLPTR はフラッシュ プログラム メモリの読み出 し、書き込み、消去に使用します。 表 6-2: TBLRD および TBLWT 命令によるテーブル ポインタの操作 Example Operation on Table Pointer TBLRD* TBLWT* TBLPTR is not modified TBLRD*+ TBLWT*+ TBLPTR is incremented after the read/write TBLRD*TBLWT*- TBLPTR is decremented after the read/write TBLRD+* TBLWT+* TBLPTR is incremented before the read/write 図 6-3: 動作ごとのテーブル ポインタの境界 21 TBLPTRU 16 15 TBLPTRH 8 TABLE ERASE/WRITE TBLPTR<21:n+1>(1) 7 TBLPTRL 0 TABLE WRITE TBLPTR<n:0>(1) TABLE READ – TBLPTR<21:0> 注 1: ブロック サイズ 8、16、32、64 バイトに対して、それぞれ n = 3、4、5、6 DS41303E_JP - ページ 90 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 6.3 フラッシュ プログラム メモリの 読み出し 内部プログラム メモリの内容は通常ワード単位で 構成されています。アドレスの最下位ビット (LSb) が、ワードの上位バイトまたは下位バイトを選択し ます。図 6-4 に、内部プログラム メモリと TABLAT 間のインターフェースを示します。 TBLRD 命令は、プログラム メモリからデータを読 み出し、データ RAM に格納します。プログラム メ モリは 1 度に 1 バイトずつ読み出されます。 TBLPTRはプログラム空間内の1バイトを指します。 TBLRD を実行すると、TBLPTR が指す 1 バイトが TABLAT に格納されます。また、次のテーブル読み 出し動作に備えてTBLPTRを自動的に変更すること も可能です。 図 6-4: フラッシュ プログラム メモリからの読み出し Program Memory (Even Byte Address) (Odd Byte Address) TBLPTR = xxxxx0 TBLPTR = xxxxx1 Instruction Register (IR) 例 6-1: FETCH TBLRD TABLAT Read Register フラッシュ プログラム メモリからのワード読み出し MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF CODE_ADDR_UPPER TBLPTRU CODE_ADDR_HIGH TBLPTRH CODE_ADDR_LOW TBLPTRL ; Load TBLPTR with the base ; address of the word READ_WORD TBLRD*+ MOVF MOVWF TBLRD*+ MOVFW MOVF TABLAT, W WORD_EVEN TABLAT, W WORD_ODD 2009 Microchip Technology Inc. ; read into TABLAT and increment ; get data ; read into TABLAT and increment ; get data Preliminary DS41303E_JP - ページ 91 PIC18F2XK20/4XK20 6.4 フラッシュ プログラム メモリの消去 消去の最小ブロックは 32 ワード、つまり 64 バイト です。プログラム メモリのより大きなブロックを バルク消去するには、外付けのプログラマまたは ICSP™ 制御を使用する必要があります。 フラッシュ アレイはワード単位の消去には対応していません。 マイクロコントローラ自体から消去シーケンスを 開始した場合は、プログラム メモリの 64 バイトの ブロックが消去されます。テーブル ポインタの上 位16ビットTBLPTR<21:6>によって消去するブロッ クを指定します。TBLPTR<5:0> は無視されます。 消去動作は、EECON1 レジスタによって制御されま す。動作対象としてフラッシュ プログラム メモリ を選択するために EEPGD ビットをセットしてくだ さ い。ま た、書 き 込 み 動 作 を 有 効 に す る た め に WREN ビットを、消去動作を選択するために FREE ビットをそれぞれセットします。 6.4.1 項「フラッシュ プログラム メモリの消去シー ケンス」の手順 4 ~ 6 に示す EECON2 の書き込み開 始シーケンスによって、偶発的な書き込みを防止し ます。この手順は、長い書き込み ( ロング ライト ) と呼ばれることがあります。 内部フラッシュを消去するには、ロング ライトが 必要です。ロング ライト サイクル中は命令の実行 が一時停止されます。ロング ライトは内部プログ ラミング タイマによって終了します。 例 6-2: 6.4.1 フラッシュ プログラム メモリの消去 シーケンス 内部プログラム メモリの 1 ブロックを消去する手 順は次のとおりです。 1. 消去するブロックのアドレスをテーブル ポイ ンタ レジスタに格納します。 EECON1 レジスタを消去動作用に設定します。 • プログラム メモリを選択するために EEPGD ビットをセットします。 • プログラム メモリにアクセスするために CFGS ビットをクリアします。 • 書き込みを有効にするために WREN ビット をセットします。 • 消去を有効にするために FREE ビットをセッ トします。 割り込みを禁止します。 EECON2 に 55h を書き込みます。 EECON2 に 0AAh を書き込みます。 WR ビットをセットします。これによってブ ロック消去サイクルが開始されます。 消去中は CPU が停止します ( 内部タイマによる 約 2 ms)。 割り込みを再度許可します。 2. 3. 4. 5. 6. 7. 8. フラッシュ プログラム メモリのブロック消去 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF CODE_ADDR_UPPER TBLPTRU CODE_ADDR_HIGH TBLPTRH CODE_ADDR_LOW TBLPTRL ; load TBLPTR with the base ; address of the memory block BSF BCF BSF BSF BCF MOVLW MOVWF MOVLW MOVWF BSF BSF EECON1, EECON1, EECON1, EECON1, INTCON, 55h EECON2 0AAh EECON2 EECON1, INTCON, ; ; ; ; ; ERASE_BLOCK Required Sequence 6.5 EEPGD CFGS WREN FREE GIE ; write 55h ; write 0AAh ; start erase (CPU stall) ; re-enable interrupts WR GIE フラッシュ プログラム メモリへの 書き込み プログラミングするブロックのサイズはデバイス によって異なり、8、32、64 バイトのいずれかです ( 表 6-1 参照 )。ワードまたはバイト単位のプログラ ミングには対応していません。 DS41303E_JP - ページ 92 point to Flash program memory access Flash program memory enable write to memory enable block Erase operation disable interrupts フラッシュ メモリのプログラミングに必要となる 保持レジスタに、テーブル書き込みによって書き込 みデータをロードします。各デバイスは、書き込み ブロックのバイト数と同じサイズの保持レジスタ を備えています ( 表 6-1 参照 )。 テーブル ラッチ (TABLAT) は 1 バイトしかないた め、プログラミングの動作ごとに TBLWT 命令を最 大 8、32、64 回実行する必要があります。この回数 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 はデバイスの種類によって決まります。テーブル書 き込み動作は、いずれも保持レジスタへの書き込み であるため、原理的に短い書き込み ( ショート ライ ト ) になります。保持レジスタへの書き込みがすべ て完了したら、そのメモリ ブロックに対するプロ グラミング動作を開始します。それには、EECON1 レジスタをプログラム メモリへの書き込み用に設 定し、ロング ライトの手順を実行します。 EEPROM のオンチップ タイマが書き込み時間を制 御します。また、書き込み / 消去電圧はオンチップ のチャージ ポンプによって発生し、その定格はデ バイスの電圧範囲を超えた値になります。 注: 内部フラッシュをプログラミングするには、ロング ライトが必要です。ロング ライト サイクル中は命 令の実行が一時停止されます。ロング ライトは内 部プログラミング タイマによって終了します。 図 6-5: デバイスのリセット時または書き込み動 作後の保持レジスタのデフォルト値はFFh です。保持レジスタに FFh を書き込んだ場 合、そのバイトの値は変化しません。これ は、プログラム メモリ内の個々のバイト を部分的に変更できることを意味します。 ただし、 「0」から「1」に変更するビット がない場合に限ります。個々のバイトを変 更する場合、ロング ライトを実行する前 に保持レジスタ全体にデータをロードす る必要はありません。 フラッシュ プログラム メモリへのテーブル書き込み TABLAT Write Register 8 8 TBLPTR = xxxx00 TBLPTR = xxxx01 Holding Register 8 TBLPTR = xxxxYY(1) TBLPTR = xxxx02 Holding Register 8 Holding Register Holding Register Program Memory 注 1: 6.5.1 書き込みブロック サイズ 8、16、32 バイトに対して、それぞれ YY=x7、xF、1F フラッシュ プログラム メモリの 書き込みシーケンス 内部プログラム メモリに書き込む手順は次のとお りです。 1. 2. 3. 4. 5. 6. 7. 64 バイトを RAM に読み込みます。 必要に応じてRAM内のデータ値を変更します。 消去するアドレスをテーブル ポインタ レジス タに格納します。 ブロック消去手順を実行します。 書き込む最初のバイトのアドレスをテーブル ポインタ レジスタに格納します。 自動インクリメント機能を使用して、保持レジ スタに 8、32、64 バイトのブロックを書き込み ます。 EECON1 レジスタを書き込み動作用に設定し ます。 • プログラム メモリを選択するために EEPGD ビットをセットします。 • プログラム メモリにアクセスするために CFGS ビットをクリアします。 2009 Microchip Technology Inc. 8. 9. 10. 11. 12. 13. 14. 15. • バイト書き込みを有効にするために WREN ビットをセットします。 割り込みを禁止します。 EECON2 に 55h を書き込みます。 EECON2 に 0AAh を書き込みます。 WR ビットをセットします。これによって書き 込みサイクルが開始されます。 書き込み中は CPU が停止します ( 内部タイマに よる約 2 ms)。 割り込みを再度許可します。 64 バイトすべての書き込みが終了するまで、各 ブロックに対して手順 6 ~ 13 を繰り返します。 メモリの内容を検証します(テーブル読み出し)。 この手順は、メモリの各書き込みブロックを更新す るのに約 6 ms を必要とします。例 6-3 に書き込み に必要なコードの例を示します。 注: Preliminary WR ビットをセットする前に、テーブル ポ インタのアドレスを、保持レジスタ内の目 的とするアドレス範囲内に設定する必要 があります。 DS41303E_JP - ページ 93 PIC18F2XK20/4XK20 例 6-3: フラッシュ プログラム メモリへの書き込み MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF D'64’ COUNTER BUFFER_ADDR_HIGH FSR0H BUFFER_ADDR_LOW FSR0L CODE_ADDR_UPPER TBLPTRU CODE_ADDR_HIGH TBLPTRH CODE_ADDR_LOW TBLPTRL ; number of bytes in erase block TBLRD*+ MOVF MOVWF DECFSZ BRA TABLAT, W POSTINC0 COUNTER READ_BLOCK MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BUFFER_ADDR_HIGH FSR0H BUFFER_ADDR_LOW FSR0L NEW_DATA_LOW POSTINC0 NEW_DATA_HIGH INDF0 ; point to buffer MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BSF BCF BSF BSF BCF MOVLW MOVWF MOVLW MOVWF BSF BSF TBLRD*MOVLW MOVWF MOVLW MOVWF CODE_ADDR_UPPER TBLPTRU CODE_ADDR_HIGH TBLPTRH CODE_ADDR_LOW TBLPTRL EECON1, EEPGD EECON1, CFGS EECON1, WREN EECON1, FREE INTCON, GIE 55h EECON2 0AAh EECON2 EECON1, WR INTCON, GIE ; load TBLPTR with the base ; address of the memory block MOVLW MOVWF MOVLW MOVWF BlockSize COUNTER D’64’/BlockSize COUNTER2 MOVF MOVWF TBLWT+* POSTINC0, W TABLAT ; point to buffer ; Load TBLPTR with the base ; address of the memory block READ_BLOCK ; ; ; ; ; read into TABLAT, and inc get data store data done? repeat MODIFY_WORD ; update buffer word ERASE_BLOCK Required Sequence BUFFER_ADDR_HIGH FSR0H BUFFER_ADDR_LOW FSR0L ; ; ; ; ; point to Flash program memory access Flash program memory enable write to memory enable Erase operation disable interrupts ; write 55h ; ; ; ; ; write 0AAh start erase (CPU stall) re-enable interrupts dummy read decrement point to buffer WRITE_BUFFER_BACK ; number of bytes in holding register ; number of write blocks in 64 bytes WRITE_BYTE_TO_HREGS DS41303E_JP - ページ 94 Preliminary ; ; ; ; get low byte of buffer data present data to table latch write data, perform a short write to internal TBLWT holding register. 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 例 6-3: フラッシュ プログラム メモリへの書き込み ( 続き ) DECFSZ BRA COUNTER WRITE_WORD_TO_HREGS ; loop until holding registers are full BSF BCF BSF BCF MOVLW MOVWF MOVLW MOVWF BSF DCFSZ BRA BSF BCF EECON1, EEPGD EECON1, CFGS EECON1, WREN INTCON, GIE 55h EECON2 0AAh EECON2 EECON1, WR COUNTER2 WRITE_BYTE_TO_HREGS INTCON, GIE EECON1, WREN ; ; ; ; PROGRAM_MEMORY Required Sequence 6.5.2 ; ; ; ; ; ; write 0AAh start program (CPU stall) repeat for remaining write blocks re-enable interrupts disable write to memory 誤書き込み防止 フラッシュ プログラム メモリへの誤書き込みを予 防するために、書き込み開始シーケンスに従ってく ださい。詳細は、23.0 項「CPU の特殊機能」を参 照してください。 6.6 書き込み動作の予期せぬ中断 電源遮断や予期せぬリセットなどにより、予定外の 書き込み中断が発生した場合は、プログラミング中 だったメモリ位置の内容を検証し、必要に応じて再 プログラミングしてください。書き込み動作が、通 常動作中の MCLR リセットまたは WDT タイムアウ ト リセットによって中断された場合は、WRERR ビットがセットされます。ユーザーはこのビットを 確認して、対象位置の再書き込みが必要かどうかを 判断できます。 表 6-3: ; write 55h 6.5.4 書き込みの検証 アプリケーションによっては、メモリに書き込んだ 値を元の値と比較検証するプログラミング方法が 推奨される場合があります。特に、仕様限界に近い 回数まで頻繁に書き込みを実行し、ビットにストレ スを加えるアプリケーションにはこの方法を適用 してください。 6.5.3 point to Flash program memory access Flash program memory enable write to memory disable interrupts コード プロテクション実行中の フラッシュ プログラムの動作 フラッシュ プログラム メモリのコード プロテク ションの詳細は、23.3 項「プログラム検証とコード プロテクション」を参照してください。 フラッシュ プログラム メモリに関連するレジスタ Name Bit 7 Bit 6 Bit 5 TBLPTRU — — bit 21 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Program Memory Table Pointer Upper Byte (TBLPTR<20:16>) Reset Values on page 57 TBPLTRH Program Memory Table Pointer High Byte (TBLPTR<15:8>) 57 TBLPTRL Program Memory Table Pointer Low Byte (TBLPTR<7:0>) 57 TABLAT 57 Program Memory Table Latch INTCON GIE/GIEH PEIE/GIEL TMR0IE EECON2 EEPROM Control Register 2 (not a physical register) INT0IE RBIE TMR0IF INT0IF RBIF 57 59 EECON1 EEPGD CFGS — FREE WRERR WREN WR RD 59 IPR2 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP 60 PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 60 PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 60 記号の説明 : — = 未実装。 「0」として読み出し。網掛けのビットはフラッシュ /EEPROM へのアクセスでは 使用しません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 95 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 96 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 7.0 データ EEPROM メモリ データ EEPROM は、データ RAM やプログラム メ モリとは独立した不揮発メモリ アレイで、プログ ラム データの長期保存に使用します。このメモリ は、レジスタ ファイルおよびプログラム メモリ空 間のいずれにも直接は対応づけられていません。ア ドレスは特殊機能レジスタ (SFR) を介して間接的に 指定します。EEPROM は通常動作中、VDD の全範 囲において読み出し、書き込みが可能です。 データ EEPROM およびプログラム メモリに対する 読み出しおよび書き込みには 5 つの SFR を使用し ます。 • • • • • EECON1 EECON2 EEDATA EEADR EEADRH データ EEPROM では、1 バイト単位で読み出しと 書き込みを実行できます。データ メモリ ブロック にアクセスする場合、EEDATA に読み出し / 書き込 みのための 8 ビットのデータ、EEADR:EEADRH の レジスタ ペアに、アクセスする EEPROM 内のアド レスを格納します。 EEPROM データ メモリは、高い消去 / 書き込み耐 性を保証しています。バイト単位の書き込みでは、 書き込み先の番地が自動的に消去され、新しいデー タが書き込まれます (Erase-before-Write)。書き込み 時間はオンチップ タイマによって制御され、その 値は電圧、温度、チップ間のばらつきによって変化 します。正確な限界値については、D122 (26.0 項 「電気的特性」の表 26.10) を参照してください。 7.1 EEADR および EEADRH レジスタ EEADR レジスタは、データ EEPROM の読み出しお よび書き込み動作時にアドレスを指定するために 使用します。8 ビットのレジスタであるため、256 バイトのメモリ範囲 (00h ~ FFh) に対してアドレス を指定できます。EEADRH レジスタは、アドレス ビットを 2 ビット追加し、この範囲を 1024 バイト にまで拡張します。 7.2 EECON1 および EECON2 レジスタ データ EEPROM へのアクセスは、EECON1 および EECON2 の 2 つのレジスタによって制御されます。 これらはプログラム メモリへのアクセスを制御す るレジスタと同じもので、データ EEPROM に対し ても使い方は同じです。 EECON1 レジスタ ( レジスタ 7-1) は、データおよび プログラム メモリへのアクセスに使用する制御レ ジスタです。制御ビット EEPGD は、アクセス対象 がプログラム メモリあるいはデータ EEPROM のど ちらであるかを決定します。EEPGD ビットがクリ アされている場合、データ EEPROM にアクセスし ます。EEPGD ビットがセットされている場合、プ ログラム メモリがアクセスされます。 制御ビット CFGS は、アクセス対象が構成レジスタ か、あるいはプログラム メモリ / データ EEPROM のどちらであるかを決定します。CFGS ビットが セットされている場合、以降の動作は構成レジスタ にアクセスします。CFGS ビットがクリアされてい る場合は、EEPGD ビットの状態に応じてプログラ ム フラッシュ メモリか、データ EEPROM のいずれ かが選択されます。 WREN ビットをセットすると、書き込み動作が有効 になります。WREN ビットは、電源投入時にクリア されます。 WR ビットがセットされ、その後内部プログラミン グ タイマの時間が経過して書き込み動作が完了し、 WR ビットがクリアされると、ハードウェアによっ て WRERR ビットが設定されます。 注: 通常の動作中に、WRERR ビットが「1」 と読み出される場合があります。これは、 書き込み動作が完了する前にリセットに よって中断されたか、書き込み方法が不適 切であったことを示している場合があり ます。 制御ビットWRによって書き込み動作が開始されま す。ソフトウェアによってビットはセットできます が、クリアはできません。書き込み動作が完了した ときに、ハードウェアによってクリアされます。 注: 書き込みが完了すると、PIR2 レジスタの 割り込みフラグ ビット EEIF がセットされ ます。このビットはソフトウェアによって クリアする必要があります。 制御ビットの RD によって読み出し動作が開始さ れ、WR によって消去 / 書き込み動作が開始されま す。これらのビットはファームウェアによってセッ トされ、動作が完了したときにハードウェアによっ てクリアされます。 プログラム メモリへのアクセス時は (EEPGD = 1)、 RD ビットをセットできません。プログラム メモ リの読み出しにはテーブル読み出しを使用します。 テーブル読み出しに関しては、6.1 項「テーブル読 み出しおよびテーブル書き込み」を参照してくだ さい。 EECON2 レジスタは、物理的には存在しないレジス タです。メモリの書き込みおよび消去シーケンス専 用です。EECON2 を読み出すと、常に「0」になり ます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 97 PIC18F2XK20/4XK20 レジスタ 7-1: EECON1: データ EEPROM 制御レジスタ 1 R/W-x R/W-x U-0 R/W-0 R/W-x R/W-0 R/S-0 R/S-0 EEPGD CFGS — FREE WRERR WREN WR RD bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 S = ソフトウェアによるセット可、クリアは不可 -n = POR 時の値 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 ビット 7 EEPGD: フラッシュ プログラムまたはデータ EEPROM のメモリ選択ビット 1 = フラッシュ プログラム メモリにアクセス 0 = データ EEPROM にアクセス ビット 6 CFGS: フラッシュ プログラム メモリ / データ EEPROM または構成レジスタの選択ビット 1 = 構成レジスタにアクセス 0 = フラッシュ プログラム メモリまたはデータ EEPROM にアクセス ビット 5 未実装 :「0」として読み出し ビット 4 FREE: フラッシュメモリの行 ( ブロック ) 消去イネーブル ビット 1 = 次の WR コマンドで、TBLPTR が指定するアドレスのプログラム メモリ ブロックを消去 ( 消去動作の完了によってクリア ) 0 = 書き込みのみを実行 ビット 3 WRERR: フラッシュ プログラム メモリ / データ EEPROM のエラー フラグ ビット (1) 1 = 書き込み動作が完了前に中断された ( 内部タイマによる通常のプログラミング中に発生し た何らかのリセット、または不適切な書き込みによる ) 0 = 書き込み動作完了 ビット 2 WREN: フラッシュ プログラム メモリ / データ EEPROM の書き込みイネーブル ビット 1 = フラッシュ プログラム メモリ / データ EEPROM に対する書き込みサイクルを許可 0 = フラッシュ プログラム メモリ / データ EEPROM に対する書き込みサイクルを禁止 ビット 1 WR: 書き込み制御ビット 1 = データ EEPROM またはプログラム メモリの消去 / 書き込みサイクルを開始 ( 内蔵タイマで自動的に動作し、書き込み完了時にハードウェアによりクリア ) WR ビットはソフトウェアによるセットのみが可能で、クリアはできません。 0 = EEPROM への書き込みサイクル完了 ビット 0 RD: 読み出し制御ビット 1 = EEPROM の読み出し開始 ( 読み出しは 1 サイクルで実行されます。 RD ビットはハードウェア によってクリアされます。RD ビットはソフトウェアによるセットのみが可能で、クリアは できません。ただし、EEPGD = 1 または CFGS = 1 の場合はセットできません。) 0 = EEPROM の読み出しを開始しない 注 1: WRERR ( 書き込みエラー ) が発生しても EEPGD および CFGS ビットはクリアされません。 これにより、エラー状況の追跡が可能になります。 DS41303E_JP - ページ 98 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 7.3 データ EEPROM の読み出し データ メモリを読み出すには、EEADR レジスタに アドレスを書き込み、EECON1 レジスタの制御ビッ ト EEPGD をクリアしてから、制御ビット RD をセッ トします。データは、直後の命令サイクルで取得さ れるため、EEDATA レジスタは次の命令で読み出す ことができます。EEDATA レジスタに格納された値 は、次の読み出し動作、またはユーザーが ( 書き込 み動作の際に ) EEDATA レジスタにデータを書き込 むまで保持されます。 基本的なプロセスを例 7-1 に示します。 7.4 データ EEPROM への書き込み EEPROM にデータを書き込むには、まず書き込み 先のアドレスを EEADR レジスタに、書き込むデー タを EEDATA レジスタに格納します。書き込みサ イクルを開始するには、例 7-2 に示す手順に従って ください。 こ の シ ー ケ ン ス (EECON2 へ の 55h 書 き 込 み、 EECON2 への 0AAh 書き込み、WR ビットのセット ) に正確に従わないと、書き込みは開始されません。 また、このコード セグメントの実行中は、割り込 みを禁止することを強く推奨します。 例 7-1: 書き込みシーケンスの開始後は、EECON1、EEADR、 EEDATA を変更できません。WREN ビットがセッ トされていなければ、WR ビットはセットできませ ん。また、WR と WREN の両方を同じ命令でセッ トすることはできません。 書き込みサイクルが完了するとWRビットがハード ウェアによってクリアされ、EEPROM 割り込みフ ラグ ビット EEIF がセットされます。ユーザーは、 この割り込みを許可、またはこのビットをポーリン グできます。EEIF はソフトウェアによってクリア する必要があります。 7.5 書き込みの検証 アプリケーションによっては、メモリに書き込んだ 値を元の値と比較検証するプログラミング方法が 推奨される場合があります。特に、仕様限界に近い 回数まで頻繁に書き込みを実行し、ビットにストレ スを加えるアプリケーションにはこの方法を適用 してください。 データ EEPROM の読み出し MOVLW MOVWF BCF BCF BSF MOVF 例 7-2: 更に、書き込みを有効にするために、EECON1 レジ スタの WREN ビットもセットしておく必要があり ます。以上は予期せぬコード実行 ( すなわちプログ ラムの暴走 ) によるデータ EEPROM への偶発的な 書き込みを回避するための手順です。WREN ビット は、EEPROM を書き換える場合を除き、常にクリ アしておいてください。WREN ビットは、ハード ウェアではクリアされません。 DATA_EE_ADDR EEADR EECON1, EEPGD EECON1, CFGS EECON1, RD EEDATA, W ; ; ; ; ; ; Data Memory Address to read Point to DATA memory Access EEPROM EEPROM Read W = EEDATA データ EEPROM への書き込み Required Sequence MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BCF BCF BSF BCF MOVLW MOVWF MOVLW MOVWF BSF BSF DATA_EE_ADDR_LOW EEADR DATA_EE_ADDR_HI EEADRH DATA_EE_DATA EEDATA EECON1, EEPGD EECON1, CFGS EECON1, WREN INTCON, GIE 55h EECON2 0AAh EECON2 EECON1, WR INTCON, GIE ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; BCF EECON1, WREN ; User code execution ; Disable writes on write complete (EEIF set) 2009 Microchip Technology Inc. Data Memory Address to write Data Memory Value to write Point to DATA memory Access EEPROM Enable writes Disable Interrupts Write 55h Write 0AAh Set WR bit to begin write Enable Interrupts Preliminary DS41303E_JP - ページ 99 PIC18F2XK20/4XK20 7.6 コード プロテクション時の動作 データ EEPROM の構成ワード内には、コードを保 護する専用のビットがあります。このビットが有効 な場合、外部からの読み出し、書き込み動作が不可 能になります。 マイクロコントローラ自体は、コード保護の構成 ビットの状態にかかわらず、内部データ EEPROM を読み出し、書き込むことができます。詳細は、 23.0 項「CPU の特殊機能」を参照してください。 7.7 誤書き込み防止 状況によっては、データ EEPROM への書き込みを 禁止した方が望ましい場合があります。EEPROM へ の誤書き込みを防止するために、さまざまなメカニ ズムが実装されています。例えば、WREN ビットは 電源投入時にクリアされます。更に、パワーアップ タイマがタイムアウトするまで (TPWRT、パラメー タ 33)、EEPROM への書き込みが阻止されます。 また、書き込み開始シーケンスと WREN ビットの 組み合わせにより、ブラウンアウト、電源グリッ チ、ソフトウェアの不具合などに起因する偶発的な 書き込みを予防しています。 7.8 データ EEPROM の使用 データ EEPROM は書き込み耐性が高く、バイト単 位のアドレス指定が可能なメモリ アレイで、頻繁に 書き換えが必要な情報 ( プログラム変数や使用頻度 の高いデータなど ) の格納に適しています。データ EEPROM の中に、頻繁に書き換える変数とそうでな い変数が混在する場合、バイト単位では最大書き込 みサイクル数 ( 仕様 D120) を超えていなくとも、 EEPROM 全体としての最大書き込みサイクル数 ( 仕 様 D124) を超えてしまうことがあります。このよう な場合は、アレイをリフレッシュする必要がありま す。このため、あまり変化しない変数 ( 定数、ID、 較正値など ) は、フラッシュ プログラム メモリに格 納するようにしてください。 EEPROM の簡単なリフレッシュ ルーチンを例 7-3 に示します。 注: 例 7-3: データ EEPROM を定数やほとんど変更さ れないデータの保存にしか使わない場合 は、アレイ リフレッシュが必要になる可 能性は低くなります。仕様を参照してくだ さい。 データ EEPROM のリフレッシュ ルーチン CLRF BCF BCF BCF BSF EEADR EECON1, EECON1, INTCON, EECON1, BSF MOVLW MOVWF MOVLW MOVWF BSF BTFSC BRA INCFSZ BRA EECON1, RD 55h EECON2 0AAh EECON2 EECON1, WR EECON1, WR $-2 EEADR, F LOOP BCF BSF EECON1, WREN INTCON, GIE CFGS EEPGD GIE WREN Loop DS41303E_JP - ページ 100 ; ; ; ; ; ; ; ; ; ; ; ; ; Start at address 0 Set for memory Set for Data EEPROM Disable interrupts Enable writes Loop to refresh array Read current address Write 55h Write 0AAh Set WR bit to begin write Wait for write to complete ; Increment address ; Not zero, do it again ; Disable writes ; Enable interrupts Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 7-1: データ EEPROM に関連するレジスタ Name Bit 7 Bit 6 INTCON GIE/GIEH EEADR EEADR7 EEADR6 — — EEADRH (1) Bit 5 PEIE/GIEL TMR0IE Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 — — — — EEADR9 EEADR8 59 59 EEDATA EEPROM Data Register 59 EECON2 EEPROM Control Register 2 (not a physical register) 59 EECON1 EEPGD CFGS — FREE WRERR WREN WR RD 59 IPR2 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP 60 PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 60 PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 60 記号の説明 : — = 未実装。 「0」として読み出し。網掛けのビットはフラッシュ /EEPROM へのアクセスでは 使用しません。 注 1: PIC18F26K20/PIC18F46K20 のみ。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 101 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 102 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 8.0 8 x 8 ハードウェア乗算器 8.1 概要 例 8-1: MOVF MULWF すべての PIC18 デバイスは、ALU の一部として 8 x 8 のハードウェア乗算器を搭載しています。この乗 算器は符号なしの演算を実行し、16 ビットの計算 結果を積レジスタ ペア PRODH:PRODL に格納しま す。乗算器による演算は、STATUS レジスタ内のい ずれのフラグにも影響を与えません。 ARG1, W ARG2 例 8-2: 乗算をハードウェアによって実行すると、1 命令サ イクルで完了できます。この機能には計算のスルー プットが向上し、乗算アルゴリズムのコード サイ ズが小さくなるという利点があり、従来は専らデジ タル シグナル プロセッサが使われていた多くのア プリケーションにPIC18デバイスを適用できるよう になります。ハードウェアおよびソフトウェアによ るさまざまな乗算を、メモリ使用量と実行時間につ いて比較した結果を表 8-1 に示します。 8.2 8 x 8 符号なし乗算ルーチン ; ; ARG1 * ARG2 -> ; PRODH:PRODL 8 x 8 符号付き乗算ルーチン MOVF MULWF ARG1, W ARG2 BTFSC SUBWF ARG2, SB PRODH, F MOVF BTFSC SUBWF ARG2, W ARG1, SB PRODH, F ; ; ; ; ; ARG1 * ARG2 -> PRODH:PRODL Test Sign Bit PRODH = PRODH - ARG1 ; Test Sign Bit ; PRODH = PRODH ; - ARG2 動作 例 8-1 に、符号なし 8 x 8 乗算の命令シーケンスを示 します。引数の 1 つが既に W レジスタ (WREG) に格 納されている場合、必要な命令は 1 つだけです。 例 8-2 に、符号付き 8 x 8 乗算のシーケンスを示し ます。引数の符号ビットを考慮して各引数の最上 位ビット (MSb) を判定し、必要な減算を実行して います。 表 8-1: さまざまな乗算の性能比較 Routine 8 x 8 unsigned 8 x 8 signed 16 x 16 unsigned 16 x 16 signed Multiply Method Program Memory (Words) Cycles (Max) Without hardware multiply 13 Hardware multiply 1 Without hardware multiply 33 Hardware multiply 6 Without hardware multiply 21 Time @ 40 MHz @ 10 MHz @ 4 MHz 69 6.9 s 27.6 s 69 s 1 100 ns 400 ns 1 s 91 9.1 s 36.4 s 91 s 6 600 ns 2.4 s 6 s 242 24.2 s 96.8 s 242 s Hardware multiply 28 28 2.8 s 11.2 s 28 s Without hardware multiply 52 254 25.4 s 102.6 s 254 s Hardware multiply 35 40 4.0 s 16.0 s 40 s 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 103 PIC18F2XK20/4XK20 例 8-3 に、符号なし 16 x 16 乗算のシーケンスを示 します。式 8-1 は、使用したアルゴリズムです。32 ビットの計算結果は 4 つのレジスタ (RES<3:0>) に 格納されます。 式 8-1: 16 x 16 符号なし乗算アルゴリズム RES3:RES0 例 8-3: = = ARG1H:ARG1L ARG2H:ARG2L (ARG1H ARG2H 216) + (ARG1H ARG2L 28) + (ARG1L ARG2H 28) + (ARG1L ARG2L) 式 8-2: 例 8-4: 16 x 16 符号なし乗算ルーチン MOVF MULWF ARG1L, W ARG2L MOVFF MOVFF PRODH, RES1 PRODL, RES0 MOVF MULWF ARG1H, W ARG2H MOVFF MOVFF PRODH, RES3 PRODL, RES2 MOVF MULWF ARG1L, W ARG2H MOVF ADDWF MOVF ADDWFC CLRF ADDWFC PRODL, W RES1, F PRODH, W RES2, F WREG RES3, F MOVF MULWF ARG1H, W ARG2L MOVF ADDWF MOVF ADDWFC CLRF ADDWFC PRODL, W RES1, F PRODH, W RES2, F WREG RES3, F ; ARG1L * ARG2L-> ; PRODH:PRODL ; ; ARG1L * ARG2H-> PRODH:PRODL Add cross products ARG1H * ARG2L-> PRODH:PRODL Add cross products PRODH, RES1 PRODL, RES0 MOVF MULWF ARG1H, W ARG2H MOVFF MOVFF PRODH, RES3 PRODL, RES2 MOVF MULWF ARG1L, W ARG2H MOVF ADDWF MOVF ADDWFC CLRF ADDWFC PRODL, W RES1, F PRODH, W RES2, F WREG RES3, F MOVF MULWF ARG1H, W ARG2L MOVF ADDWF MOVF ADDWFC CLRF ADDWFC PRODL, W RES1, F PRODH, W RES2, F WREG RES3, F BTFSS BRA MOVF SUBWF MOVF SUBWFB ARG2H, 7 SIGN_ARG1 ARG1L, W RES2 ARG1H, W RES3 ; ARG2H:ARG2L neg? ; no, check ARG1 ; ; ; ARG1H, 7 CONT_CODE ARG2L, W RES2 ARG2H, W RES3 ; ARG1H:ARG1L neg? ; no, done ; ; ; ; ARG1H * ARG2H -> ; PRODH:PRODL ; ; ; ; ; ; ; ; ; ; ARG1L * ARG2H -> PRODH:PRODL Add cross products ; ; ; ; ; ; ; ; ; ARG1H * ARG2L -> PRODH:PRODL Add cross products ; 例 8-4 に、符号付き 16 x 16 乗算のシーケンスを示 します。式 8-2 は、使用したアルゴリズムです。32 ビットの計算結果は 4 つのレジスタ (RES<3:0>) に 格納されます。引数の符号ビットを考慮して各引数 ペアの最上位ビット (MSb) を判定し、必要な減算を 実行しています。 DS41303E_JP - ページ 104 MOVFF MOVFF ; ARG1L * ARG2L -> ; PRODH:PRODL ; ; ; ; ; ; ; ; ; ; ; ; ; ARG1L, W ARG2L ; ; ; ; ; ; ; ; ; ; 16 x 16 符号付き乗算ルーチン MOVF MULWF ; ; ; ARG1H * ARG2H-> ; PRODH:PRODL ; ; 16 x 16 符号付き乗算アルゴリズム RES3:RES0= ARG1H:ARG1L ARG2H:ARG2L = (ARG1H ARG2H 216) + (ARG1H ARG2L 28) + (ARG1L ARG2H 28) + (ARG1L ARG2L) + (-1 ARG2H<7> ARG1H:ARG1L 216) + (-1 ARG1H<7> ARG2H:ARG2L 216) ; SIGN_ARG1 BTFSS BRA MOVF SUBWF MOVF SUBWFB ; CONT_CODE : Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 9.0 9.2 割り込み PIC18F2XK20/4XK20 デバイスには複数の割り込み 要因があり、割り込みの優先度機能により、ほとん どの割り込み要因に優先度の高低を割り当てるこ とが で きま す。高い 優先 度 の割 り込 み ベク タ は 0008h、低い優先度の割り込みベクタは 0018h です。 低い優先度の割り込みを処理している間、高い優先 度の割り込みイベントはこの処理に割り込むこと ができます。 割り込み動作は、次の 10 個のレジスタによって制 御します。 • • • • RCON INTCON INTCON2 INTCON3 • PIR1、PIR2 • PIE1、PIE2 • IPR1、IPR2 これらのレジスタ内のビットのシンボル名には MPLAB® IDE に付属のマイクロチップ ヘッダ ファ イル内のものを使用することを推奨します。そうす れば、アセンブラまたはコンパイラが、規定のレジ スタ内にこれらのビットを自動的に配置します。 通常、割り込み要因には、その動作を制御する次の 3 つのビットがあります。 • フラグ ビットは、割り込みイベントが発生した ことを示します。 • イネーブル ビットは、フラグ ビットがセットさ れたときに、プログラムの実行を割り込みベク タ アドレスに分岐できるようにします。 • 優先度ビットは、高優先度と低優先度を選択し ます。 9.1 ミッドレンジ互換性 IPEN ビットがクリアされている場合 ( デフォルト 状態 )、割り込みの優先度機能は無効となり、割り 込み動作は PIC® マイクロコントローラのミッドレ ンジ デバイス互換になります。互換モードの場合、 IPRx レジスタの割り込み優先度ビットは無視され ます。INTCON レジスタの PEIE ビットは、周辺機 能によるグローバル割り込みを許可するイネーブ ル ビットです。PEIE ビットがクリアされていると 周辺機能による割り込みのみが禁止され、セットさ れている場合は、GIE ビットもセットされている場 合に周辺機能の割り込みが許可されます。INTCON レジスタの GIE ビットは、周辺機能以外のすべての 割り込みを許可するか、周辺機能を含むすべての割 り込みを禁止するグローバル割り込みのイネーブ ル ビットです。互換モードでは、すべての割り込 みがアドレス 0008h に分岐します。 2009 Microchip Technology Inc. 割り込み優先度 RCON レジスタの IPEN ビットをセットすると、割 り込み優先度機能が有効になります。割り込み優先 度を有効にした場合、互換モードのグローバル割り 込みイネーブル ビットである GIE および PEIE は、 高優先度グローバル割り込みイネーブル ビット GIEH、および低優先度グローバル割り込みイネー ブル ビット GIEL に置き換わります。INTCON レジ スタの GIEH ビットをセットすると、関連するレジ スタまたは INTCONx レジスタの優先度ビットが セットされている割り込み ( 高優先度割り込み ) が すべて許可されます。GIEH ビットがクリアされて いる場合は、低優先度に設定されたものを含め、す べての割り込みが禁止されます。INTCON レジスタ の GIEL ビットをクリアすると、対応する優先度 ビットがクリアされている割り込み ( 低優先度割り 込み ) だけが禁止されます。GIEL ビットがセット されている場合は、GIEH ビットもセットされてい れば低優先度の割り込みが許可されます。 割り込みフラグ、イネーブル ビットおよび該当す るグローバル割り込みイネーブル ビットがすべて セットされている状態で割り込みが発生すると、プ ログラムは割り込み要因の優先度ビットのレベル に応じて、高優先度の場合は 0008h、低優先度の場 合は 0018h に即座に分岐します。各割り込みは、対 応する割り込みイネーブル ビットによって個別に 禁止できます。 9.3 割り込み応答 割り込みに応答する場合、更なる割り込みを禁止す るために、グローバル割り込みイネーブル ビット がクリアされます。IPEN ビットがクリアされてい る場合は、GIE ビットがグローバル割り込みのイ ネーブル ビットになります。IPEN ビットがセット されていて、割り込みの優先度機能が有効な場合 は、GIEH ビットが高優先度の、GIEL が低優先度の グローバル割り込みイネーブル ビットになります。 高優先度の割り込み要因は、低優先度の割り込み処 理に割り込むことができます。高優先度の割り込み 処理が実行されている間は、低優先度の割り込みは 処理されません。 リターン アドレスがスタックにプッシュされ、PC には割り込みベクタ アドレス (0008h または 0018h) が格納されます。割り込みサービス ルーチン内で INTCONx および PIRx レジスタの割り込みフラグ ビットをポーリングすると、割り込み要因を特定で きます。割り込みを再び許可する前に、割り込みフ ラグ ビットをソフトウェアでクリアする必要があ ります。これにより同じ割り込みが繰り返されるこ とを防止します。 「割り込みからのリターン」命令である RETFIE は、 割り込みルーチンを終了し、GIE ビット ( 優先度レ ベルを使用している場合は GIEH または GIEL) を セットして、再度割り込みを許可します。 Preliminary DS41303E_JP - ページ 105 PIC18F2XK20/4XK20 INT ピン割り込みや PORTB 状態変化割り込みなど の外部割り込みイベントでは、割り込みレイテンシ は 3 ~ 4 命令サイクルとなります。1 サイクル命令 も 2 サイクル命令も正確なレイテンシは同じです。 対応するイネーブル ビットやグローバル割り込み イネーブル ビットの状態にかかわらず、個々の割 り込みフラグ ビットがセットされます。 注: 割り込みが 1 つでも許可されている場合 は、いずれの割り込み制御レジスタも、書 き換えに MOVFF 命令を使わないでくださ い。マイクロコントローラが不規則な動作 を示す場合があります。 図 9-1: PIC18 の割り込みロジック TMR0IF TMR0IE TMR0IP RBIF RBIE RBIP INT0IF INT0IE Wake-up if in Idle or Sleep modes (1) Interrupt to CPU Vector to Location 0008h INT1IF INT1IE INT1IP INT2IF INT2IE INT2IP SSPIF SSPIE SSPIP GIEH/GIE ADIF ADIE ADIP IPEN RCIF RCIE RCIP IPEN Additional Peripheral Interrupts High Priority Interrupt Generation Low Priority Interrupt Generation SSPIF SSPIE SSPIP ADIF ADIE ADIP RCIF RCIE RCIP Interrupt to CPU Vector to Location 0018h TMR0IF TMR0IE TMR0IP RBIF RBIE RBIP (1) GIEH/GIE GIEL/PEIE INT1IF INT1IE INT1IP Additional Peripheral Interrupts INT2IF INT2IE INT2IP 注 1: RBIF 割り込みでは、個別ピン IOCB もイネーブルする必要があります。 DS41303E_JP - ページ 106 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 9.4 INTCON レジスタ 注: INTCON レジスタは、さまざまなイネーブル、優先 度、フラグ ビットを含む、読み出し / 書き込み可能 なレジスタです。 レジスタ 9-1: 割り込み条件が発生すると、対応するイ ネーブル ビットまたはグローバル イネー ブル ビットの状態に関係なく割り込みフ ラグ ビットがセットされます。割り込み を許可する前に、該当する割り込みフラグ ビットをユーザー ソフトウェアで必ずク リアしてください。この機能により、ソフ トウェア ポーリングが可能になります。 INTCON: 割り込み制御レジスタ R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。「0」として読み出し 「1」= セット 「0」= クリア x = 不明 ビット 7 GIE/GIEH: グローバル割り込みイネーブル ビット IPEN = 0 のとき : 1 = すべてのマスクされていない割り込みを許可する 0 = 周辺割り込みを含む、すべての割り込みを禁止する IPEN = 1 のとき : 1 = すべての高優先度割り込みを許可する 0 = 低優先度の割り込みを含む、すべての割り込みを禁止する ビット 6 PEIE/GIEL: 周辺割り込みイネーブル ビット IPEN = 0 のとき : 1 = すべてのマスクされていない周辺割り込みを許可する 0 = すべての周辺割り込みを禁止する IPEN = 1 のとき : 1 = すべての低優先度割り込みを許可する 0 = すべての低優先度割り込みを禁止する ビット 5 TMR0IE: TMR0 オーバーフロー割り込みイネーブル ビット 1 = TMR0 オーバーフロー割り込みを許可する 0 = TMR0 オーバーフロー割り込みを禁止する ビット 4 INT0IE: INT0 外部割り込みイネーブル ビット 1 = INT0 外部割り込みを許可する 0 = INT0 外部割り込みを禁止する ビット 3 RBIE: RB ポート変化割り込みイネーブル ビット (2) 1 = RB ポート変化割り込みを許可する 0 = RB ポート変化割り込みを禁止する ビット 2 TMR0IF: TMR0 オーバーフロー割り込みフラグ ビット 1 = TMR0 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 ) 0 = TMR0 レジスタはオーバーフローしていない ビット 1 INT0IF: INT0 外部割り込みフラグ ビット 1 = INT0 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT0 外部割り込みは発生していない ビット 0 RBIF: RB ポート変化割り込みフラグ ビット (1) 1 = RB<7:4> ピンのうち少なくとも 1 つの状態が変化した ( ソフトウェアによるクリアが必要 ) 0 = RB<7:4> ピンの状態は、いずれも変化していない 注 1: 2: 不一致状態になるたびに、RBIF がセットされます。 PORTB を読み出すと不一致状態が終了し、このビットをクリアできます。 RB ポート変化割り込みでは、個々のピンに対応する IOCB も有効にしておく必要があります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 107 PIC18F2XK20/4XK20 レジスタ 9-2: INTCON2: 割り込み制御レジスタ 2 R/W-1 R/W-1 R/W-1 R/W-1 U-0 R/W-1 U-0 R/W-1 RBPU INTEDG0 INTEDG1 INTEDG2 — TMR0IP — RBIP bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。「0」として読み出し 「1」= セット 「0」= クリア x = 不明 ビット 7 RBPU: PORTB プルアップ イネーブル ビット 1 = すべての PORTB プルアップを無効にする 0 = ピンが入力であり、対応する WPUB ビットがセットされている場合に、PORTB プルアッ プを有効にする ビット 6 INTEDG0: 外部割り込み 0 エッジ選択ビット 1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み ビット 5 INTEDG1: 外部割り込み 1 エッジ選択ビット 1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み ビット 4 INTEDG2: 外部割り込み 2 エッジ選択ビット 1 = 立ち上がりエッジで割り込み 0 = 立ち下がりエッジで割り込み ビット 3 未実装 :「0」として読み出し ビット 2 TMR0IP: TMR0 オーバーフロー割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 1 未実装 :「0」として読み出し ビット 0 RBIP: RB ポート変化割り込み優先度ビット 1 = 高優先度 0 = 低優先度 注: 割り込み条件が発生すると、対応するイ ネーブル ビットまたはグローバル イネー ブル ビットの状態に関係なく割り込みフ ラグ ビットがセットされます。割り込み を許可する前に、該当する割り込みフラグ ビットをユーザー ソフトウェアで必ずク リアしてください。この機能により、ソフ トウェア ポーリングが可能になります。 DS41303E_JP - ページ 108 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 9-3: INTCON3: 割り込み制御レジスタ 3 R/W-1 R/W-1 U-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。「0」として読み出し 「1」= セット 「0」= クリア ビット 7 INT2IP: INT2 外部割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 6 INT1IP: INT1 外部割り込み優先度ビット 1 = 高優先度 0 = 低優先度 x = 不明 ビット 5 未実装 :「0」として読み出し ビット 4 INT2IE: INT2 外部割り込みイネーブル ビット 1 = INT2 外部割り込みを許可する 0 = INT2 外部割り込みを禁止する ビット 3 INT1IE: INT1 外部割り込みイネーブル ビット 1 = INT1 外部割り込みを許可する 0 = INT1 外部割り込みを禁止する ビット 2 未実装 :「0」として読み出し ビット 1 INT2IF: INT2 外部割り込みフラグ ビット 1 = INT2 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT2 外部割り込みは発生していない ビット 0 INT1IF: INT1 外部割り込みフラグ ビット 1 = INT1 外部割り込みが発生した ( ソフトウェアによるクリアが必要 ) 0 = INT1 外部割り込みは発生していない 注: 割り込み条件が発生すると、対応するイ ネーブル ビットまたはグローバル イネー ブル ビットの状態に関係なく割り込みフ ラグ ビットがセットされます。割り込み を許可する前に、該当する割り込みフラグ ビットをユーザー ソフトウェアで必ずク リアしてください。この機能により、ソフ トウェア ポーリングが可能になります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 109 PIC18F2XK20/4XK20 9.5 PIR レジスタ 注 1: 割り込み条件が発生すると、対応するイ ネーブル ビットまたはグローバル割り 込みイネーブル ビット (INTCON レジス タの GIE) の状態に関係なく割り込みフ ラグ ビットがセットされます。 2: 割り込みに対する処理を完了し、その割 り込みを再び許可する前に、該当する割 り込みフラグ ビットをユーザー ソフト ウェアで必ずクリアしてください。 PIR レジスタには各種周辺割り込みに対応するフラ グ ビットが含まれます。周辺割り込み要因の数が 多いことから、周辺割り込み要求フラグ レジスタ は 2 つ (PIR1 および PIR2) あります。 レジスタ 9-4: PIR1: 周辺割り込み要求 ( フラグ ) レジスタ 1 R/W-0 PSPIF(1) bit 7 R/W-0 ADIF R-0 RCIF R-0 TXIF R/W-0 SSPIF R/W-0 CCP1IF R/W-0 TMR2IF R/W-0 TMR1IF bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 PSPIF: パラレル スレーブ ポート読み出し / 書き込み割り込みフラグ ビット (1) 1 = 読み出しまたは書き込み動作が実行された ( ソフトウェアによるクリアが必要 ) 0 = 読み出しまたは書き込み動作は実行されていない ビット 6 ADIF: A/D コンバータ割り込みフラグ ビット 1 = A/D 変換が完了した ( ソフトウェアによるクリアが必要 ) 0 = A/D 変換が完了していない、または開始されていない RCIF: EUSART 受信割り込みフラグ ビット 1 = EUSART 受信バッファの RCREG がフル状態 (RCREG を読み出すことでクリア ) 0 = EUSART 受信バッファが空 TXIF: EUSART 送信割り込みフラグ ビット 1 = EUSART 送信バッファの TXREG が空 (TXREG に書き込むことでクリア ) 0 = EUSART 送信バッファがフル状態 SSPIF: マスタ同期シリアル ポート割り込みフラグ ビット 1 = 送受信が完了した ( ソフトウェアによるクリアが必要 ) 0 = 送受信待ち CCP1IF: CCP1 割り込みフラグ ビット キャプチャ モード : 1 = TMR1 レジスタ キャプチャが発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1 レジスタ キャプチャは発生していない コンペア モード : 1 = TMR1 レジスタ コンペアの一致が発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1 レジスタ コンペアの一致は発生していない PWM モード : このモードでは使用しません TMR2IF: TMR2/PR2 一致割り込みフラグ ビット 1 = TMR2/PR2 一致が発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR2/PR2 一致は発生していない TMR1IF: TMR1 オーバーフロー割り込みフラグ ビット 1 = TMR1 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 ) 0 = TMR1 レジスタはオーバーフローしていない ビット 5 ビット 4 ビット 3 ビット 2 ビット 1 ビット 0 注 1: PSPIF ビットは 28 ピンデバイスには未実装で「0」として読み出されます。 DS41303E_JP - ページ 110 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 9-5: PIR2: 周辺割り込み要求 ( フラグ ) レジスタ 2 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 OSCFIF: オシレータ障害割り込みフラグ ビット 1 = デバイス オシレータに障害が発生し、クロック入力が HFINTOSC に変更された ( ソフトウェアによるクリアが必要 ) 0 = デバイス クロックが動作中 ビット 6 C1IF: コンパレータ C1 割り込みフラグ ビット 1 = コンパレータ C1 の出力が変化した ( ソフトウェアによるクリアが必要 ) 0 = コンパレータ C1 の出力は変化していない ビット 5 C2IF: コンパレータ C2 割り込みフラグ ビット 1 = コンパレータ C2 の出力が変化した ( ソフトウェアによるクリアが必要 ) 0 = コンパレータ C2 の出力は変化していない ビット 4 EEIF: データ EEPROM/ フラッシュの書き込み動作割り込みフラグ ビット 1 = 書き込み動作が完了した ( ソフトウェアによるクリアが必要 ) 0 = 書き込み動作が完了していない、または開始されていない ビット 3 BCLIF: バス衝突割り込みフラグ ビット 1 = バス衝突が発生した ( ソフトウェアによるクリアが必要 ) 0 = バス衝突は発生していない ビット 2 HLVDIF: 低電圧検出割り込みフラグ ビット 1 = 低電圧状態が発生した ( 電圧遷移の方向は HLVDCON レジスタの VDIRMAG ビットで判定 ) 0 = 低電圧状態は発生していない ビット 1 TMR3IF: TMR3 オーバーフロー割り込みフラグ ビット 1 = TMR3 レジスタがオーバーフローした ( ソフトウェアによるクリアが必要 ) 0 = TMR3 レジスタはオーバーフローしていない ビット 0 CCP2IF: CCP2 割り込みフラグ ビット キャプチャ モード : 1 = TMR1 レジスタ キャプチャが発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1 レジスタ キャプチャは発生していない コンペア モード : 1 = TMR1 レジスタ コンペアの一致が発生した ( ソフトウェアによるクリアが必要 ) 0 = TMR1 レジスタ コンペアの一致は発生していない PWM モード : このモードでは使用しません 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 111 PIC18F2XK20/4XK20 9.6 PIE レジスタ PIE レジスタには各種周辺割り込みに対応するイ ネーブル ビットが含まれます。周辺割り込み要因の 数が多いことから、周辺割り込みイネーブル レジス タは 2 つ (PIE1 および PIE2) あります。IPEN = 0 の とき、これらの周辺割り込みのいずれかを許可する には PEIE ビットをセットする必要があります。 レジスタ 9-6: PIE1: 周辺割り込みイネーブル ( フラグ ) レジスタ 1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 PSPIE: パラレル スレーブ ポート読み出し / 書き込み割り込みイネーブル ビット (1) 1 = PSP 読み出し / 書き込み割り込みを許可する 0 = PSP 読み出し / 書き込み割り込みを禁止する ビット 6 ADIE: A/D コンバータ割り込みイネーブル ビット 1 = A/D 割り込みを許可する 0 = A/D 割り込みを禁止する ビット 5 RCIE: EUSART 受信割り込みイネーブル ビット 1 = EUSART 受信割り込みを許可する 0 = EUSART 受信割り込みを禁止する ビット 4 TXIE: EUSART 送信割り込みイネーブル ビット 1 = EUSART 送信割り込みを許可する 0 = EUSART 送信割り込みを禁止する ビット 3 SSPIE: マスタ同期シリアル ポート割り込みイネーブル ビット 1 = MSSP 割り込みを許可する 0 = MSSP 割り込みを禁止する ビット 2 CCP1IE: CCP1 割り込みイネーブル ビット 1 = CCP1 割り込みを許可する 0 = CCP1 割り込みを禁止する ビット 1 TMR2IE: TMR2/PR2 一致割り込みイネーブル ビット 1 = TMR2/PR2 一致割り込みを許可する 0 = TMR2/PR2 一致割り込みを禁止する ビット 0 TMR1IE: TMR1 オーバーフロー割り込みイネーブル ビット 1 = TMR1 オーバーフロー割り込みを許可する 0 = TMR1 オーバーフロー割り込みを禁止する 注 1: PSPIE ビットは 28 ピンデバイスには未実装で「0」として読み出されます。 DS41303E_JP - ページ 112 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 9-7: PIE2: 周辺割り込みイネーブル ( フラグ ) レジスタ 2 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 OSCFIE: オシレータ障害割り込みイネーブル ビット 1 = 許可 0 = 禁止 ビット 6 C1IE: コンパレータ C1 割り込みイネーブル ビット 1 = 許可 0 = 禁止 ビット 5 C2IE: コンパレータ C2 割り込みイネーブル ビット 1 = 許可 0 = 禁止 ビット 4 EEIE: データ EEPROM/ フラッシュの書き込み動作割り込みイネーブル ビット 1 = 許可 0 = 禁止 ビット 3 BCLIE: バス衝突割り込みイネーブル ビット 1 = 許可 0 = 禁止 ビット 2 HLVDIE: 低電圧検出割り込みイネーブル ビット 1 = 許可 0 = 禁止 ビット 1 TMR3IE: TMR3 オーバーフロー割り込みイネーブル ビット 1 = 許可 0 = 禁止 ビット 0 CCP2IE: CCP2 割り込みイネーブル ビット 1 = 許可 0 = 禁止 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 113 PIC18F2XK20/4XK20 9.7 IPR レジスタ IPR レジスタには各種周辺割り込みに対応する優先 度ビットが含まれます。周辺割り込み要因の数が多 いことから、周辺割り込み優先度レジスタは 2 つ (IPR1 および IPR2) あります。優先度ビットを使用す るには、割り込み優先度イネーブル ビット (IPEN) を セットする必要があります。 レジスタ 9-8: IPR1: 周辺割り込み優先度レジスタ 1 R/W-1 PSPIP (1) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。「0」として読み出し 「1」= セット 「0」= クリア x = 不明 ビット 7 PSPIP: パラレル スレーブ ポート読み出し / 書き込み割り込み優先度ビット (1) 1 = 高優先度 0 = 低優先度 ビット 6 ADIP: A/D コンバータ割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 5 RCIP: EUSART 受信割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 4 TXIP: EUSART 送信割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 3 SSPIP: マスタ同期シリアル ポート割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 2 CCP1IP: CCP1 割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 1 TMR2IP: TMR2/PR2 一致割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 0 TMR1IP: TMR1 オーバーフロー割り込み優先度ビット 1 = 高優先度 0 = 低優先度 注 1: PSPIF ビットは 28 ピンデバイスには未実装で「0」として読み出されます。 DS41303E_JP - ページ 114 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 9-9: IPR2: 周辺割り込み優先度レジスタ 2 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。「0」として読み出し 「1」= セット 「0」= クリア x = 不明 ビット 7 OSCFIP: オシレータ障害割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 6 C1IP: コンパレータ C1 割り込み優先度 ビット 1 = 高優先度 0 = 低優先度 ビット 5 C2IP: コンパレータ C2 割り込み優先度 ビット 1 = 高優先度 0 = 低優先度 ビット 4 EEIP: データ EEPROM/ フラッシュの書き込み動作割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 3 BCLIP: バス衝突割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 2 HLVDIP: 低電圧検出割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 1 TMR3IP: TMR3 オーバーフロー割り込み優先度ビット 1 = 高優先度 0 = 低優先度 ビット 0 CCP2IP: CCP2 割り込み優先度ビット 1 = 高優先度 0 = 低優先度 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 115 PIC18F2XK20/4XK20 9.8 RCON レジスタ RCON レジスタには、直近のリセットまたはアイド ル / スリープ モードからのウェイクアップの原因を 判断するためのフラグ ビットが含まれています。ま た、割り込み優先度を有効にする IPEN ビットもこ のレジスタ内にあります。 SBOREN ビットおよびリセット フラグ ビットの動 作については、4.1 項「RCON レジスタ」に詳細な 説明があります。 レジスタ 9-10: RCON: リセット制御レジスタ R/W-0 R/W-1 U-0 (1) IPEN SBOREN — R/W-1 R-1 RI TO R-1 R/W-0 PD (1) POR R/W-0 BOR bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア ビット 7 IPEN: 割り込み優先度イネーブル ビット 1 = 割り込みの優先度設定が有効 0 = 割り込みの優先度設定が無効 ( ミッドレンジ互換モード ) ビット 6 SBOREN: ソフトウェア BOR イネーブル ビット (1) 詳細は、レジスタ 4-1 を参照してください。 ビット 5 未実装 :「0」として読み出し ビット 4 RI: RESET 命令フラグ ビット 詳細は、レジスタ 4-1 を参照してください。 ビット 3 TO: ウォッチドッグ タイムアウト フラグ ビット 詳細は、レジスタ 4-1 を参照してください。 ビット 2 PD: パワーダウン検出フラグ ビット 詳細は、レジスタ 4-1 を参照してください。 ビット 1 POR: パワーオン リセット ステータス ビット 詳細は、レジスタ 4-1 を参照してください。 ビット 0 BOR: ブラウンアウト リセット ステータス ビット 詳細は、レジスタ 4-1 を参照してください。 注 1: x = 不明 実際のリセット値は、デバイスの構成およびデバイス リセットの種類によって決まります。 詳細は、レジスタ 4-1 を参照してください。 DS41303E_JP - ページ 116 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 9.9 INTn ピン割り込み 9.10 RB0/INT0、RB1/INT1、RB2/INT2 ピンからの外部割 り込みは、パルスのエッジによってトリガされま す。INTCON2 レジスタの対応する INTEDGx ビッ トがセットされている場合 (= 1)、割り込みは立ち 上がりエッジによってトリガされます。ビットがク リアされている場合は、立ち下がりエッジです。有 効なエッジが RBx/INTx ピンに印加されると、対応 するフラグ ビット INTxF がセットされます。これ らの割り込みは、 対応するイネーブル ビット INTxE をクリアすることよって禁止できます。この割り込 みを再び許可する前に、割り込みサービス ルーチ ン内でフラグ ビット INTxF をクリアしておく必要 があります。 すべての外部割り込み (INT0、INT1、INT2) は、プ ロセッサをアイドルまたはスリープ モードから ウェイクアップすることができます。ただし、これ らのモードに移行する前に INTxE ビットをセット しておく必要があります。グローバル割り込みイ ネーブル ビット GIE がセットされている場合、プ ロセッサはウェイクアップ後に割り込みベクタに 分岐します。 INT1 および INT2 の割り込み優先度は、INTCON3 レジスタの割り込み優先度ビット INT1IP および INT2IP に含まれる値によって決まります。INT0 に は優先度ビットが割り当てられていません。この割 り込み要因は常に高優先度として処理されます。 TMR0 割り込み 8 ビット モード ( デフォルト ) では、TMR0 レジス タがオーバーフローすると (FFh 00h)、フラグ ビット TMR0IF がセットされます。16 ビット モー ドの場合は、TMR0H:TMR0L レジスタ ペアがオー バーフローしたときに (FFFFh 0000h)、TMR0IF がセットされます。この割り込みは、INTCON レジ スタのイネーブル ビット TMR0IE をセット / クリア することによって許可 / 禁止できます。タイマ 0 (TMR0) の割り込み優先度は、INTCON2 レジスタの 割り込み優先度ビットTMR0IPに含まれる値によっ て決まります。タイマ 0 モジュールの動作について は、12.0 項「タイマ 0 モジュール」を参照してくだ さい。 9.11 PORTB 状態変化割り込み PORTB<7:4> の入力が変化すると、INTCON レジス タのフラグ ビット RBIF がセットされます。この割 り込みは、INTCON レジスタのイネーブル ビット RBIE をセット / クリアすることによって許可 / 禁止 できます。また、ピン自体も IOCB レジスタによっ て 個 々 に 有 効 に 設 定 し て お く 必 要 が あ り ま す。 PORTB 状態変化割り込みの優先度は、INTCON2 レ ジスタの割り込み優先度ビット RBIP に含まれる値 によって決まります。 9.12 割り込み中のコンテキスト保存 割り込み中は、リターン PC アドレスがスタックに 保存されます。更に、WREG、STATUS、BSR レジ スタが高速リターン スタックに保存されます。割 り込みからの高速リターンを使用しない場合 (5.1.3 項「高速レジスタ スタック」参照 )、割り込みサー ビス ルーチンの先頭で WREG、STATUS、BSR の各 レジスタの内容をユーザーが保存しなければなら ない場合があります。ユーザー アプリケーション によっては、他のレジスタの保存も必要になること があります。例 9-1 は、割り込みサービス ルーチン 内で WREG、STATUS、BSR レジスタを保存および リストアするコードの例です。 例 9-1: MOVWF MOVFF MOVFF ; ; USER ; MOVFF MOVF MOVFF STATUS、WREG、BSR レジスタの RAM への保存 W_TEMP STATUS, STATUS_TEMP BSR, BSR_TEMP ; W_TEMP is in virtual bank ; STATUS_TEMP located anywhere ; BSR_TMEP located anywhere ISR CODE BSR_TEMP, BSR W_TEMP, W STATUS_TEMP, STATUS 2009 Microchip Technology Inc. ; Restore BSR ; Restore WREG ; Restore STATUS Preliminary DS41303E_JP - ページ 117 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 118 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 10.0 I/O ポート 選択したデバイスおよび有効にした機能に応じて、 最大 5 つのポートを使用できます。I/O ポート ピン の中には、デバイスの周辺機能に使用する代替ピン として多重化されているものがあります。通常、周 辺機能を有効にした場合、そのピンは汎用 I/O ピン としては使用できません。 各ポートの動作は次の 3 つのレジスタによって制御 されます。 • TRIS レジスタ ( データ方向レジスタ ) • PORT レジスタ ( デバイス ピンのレベル読み出し ) • LAT レジスタ ( 出力ラッチ ) データ ラッチ (LAT レジスタ ) は、I/O ピンが駆動 する値に対して Read-Modify-Write 動作を実行する のに適しています。 他の周辺機能へのインターフェースを除いた汎用 I/O ポートの簡易モデルを図 10-1 に示します。 図 10-1: 汎用 I/O ポートの動作 RD LAT Data Bus D WR LAT or Port Q I/O pin(1) CK WR TRIS CK 他の PORTA ピンは、アナログ入力、アナログ VREF+ および VREF- 入力、コンパレータ電圧リファレンス 出力の機能が多重化されます。ANSEL レジスタの ANS<4:0> ビットをセットすることにより、RA<3:0> および RA5 ピンはアナログ ピンに設定されます。 こ れはパワーオン リセット後のデフォルト設定です。 RA0 ~ RA5 ピンは、CM1CON0 および CM2CON0 レジスタの該当するビットを設定することで、コン パレータの入力または出力としても使用できます。 Q PORTA ピンをアナログ入力として使用する場合も、 そのドライバは TRISA レジスタによって制御され ます。これらのピンをアナログ入力として使用する 際も、TRISA レジスタのビットをセットしたままに するよう注意してください。 D ENEN RD Port I/O ピンには、VDD および VSS に対する 保護ダイオードが接続されています。 例 10-1: PORTA、TRISA、LATA レジスタ PORTA は 8 ビット幅の双方向ポートです。これに 対応するデータ方向レジスタが TRISA です。TRISA ビットをセットする (= 1) と、対応する PORTA ピン が入力になります ( すなわち、出力ドライバが無効 になります )。TRISA ビットをクリアする (= 0) と、 対応する PORTA ピンが出力になります ( すなわち、 出力ドライバが有効になり、出力ラッチの内容が選 択したピンに出力されます )。 2009 Microchip Technology Inc. パワーオン リセット時、RA5 および RA<3:0> ピンはアナログ入力として設定 され、 「0」と読み出されます。RA4 はデ ジタル入力に設定されます。 RA4/T0CKI/C1OUTピンはシュミット トリガ入力で す。その他の PORTA ピンはいずれも入力レベルが TTL で、フル CMOS レベルの出力ドライバが接続 されています。 Input Buffer RD TRIS 10.1 RA4 ピンはタイマ 0 モジュールのクロック入力およ びコンパレータ出力の 1 つと多重化され、RA4/ T0CKI/C1OUT ピンになります。RA6 と RA7 ピンは メイン オシレータ ピンと多重化されます。構成レ ジスタ内のメイン オシレータ選択の設定によりオ シレータ ピンまたは I/O ピンになります ( 詳細は、 23.1 項「構成ビット」を参照してください )。これ らのピンをポート ピンとして使用しない場合、RA6 と RA7 および対応する TRIS および LAT ビットは 「0」と読み出されます。 Q TRIS Latch 注 1: データ ラッチ レジスタ (LATA) はメモリにも対応づ けられています。LATA レジスタに対する ReadModify-Write 動作は、PORTA のラッチされた出力値 を読み出してから書き込みます。 注: Data Latch D PORTA レジスタを読み出すとピンの状態が読み出 され、PORTA レジスタに書き込むと PORT ラッチ に書き込まれます。 PORTA の初期化 CLRF PORTA CLRF LATA MOVLW MOVWF MOVLW E0h ANSEL 0CFh MOVWF TRISA Preliminary ; ; ; ; ; ; ; ; ; ; ; ; ; Initialize PORTA by clearing output data latches Alternate method to clear output data latches Configure I/O for digital inputs Value used to initialize data direction Set RA<3:0> as inputs RA<5:4> as outputs DS41303E_JP - ページ 119 PIC18F2XK20/4XK20 表 10-1: PORTA I/O 一覧 Pin RA0/AN0/C12IN0- RA1/AN1/C12IN1- RA2/AN2/C2IN+ VREF-/CVREF Function TRIS Setting I/O I/O Type RA0 0 O DIG LATA<0> data output; not affected by analog input. 1 I TTL PORTA<0> data input; disabled when analog input enabled. AN0 1 I ANA ADC input channel 0. Default input configuration on POR; does not affect digital output. C12IN0- 1 I ANA Comparators C1 and C2 inverting input, channel 0. Analog select is shared with ADC. RA1 0 O DIG LATA<1> data output; not affected by analog input. 1 I TTL PORTA<1> data input; disabled when analog input enabled. AN1 1 I ANA ADC input channel 1. Default input configuration on POR; does not affect digital output. C12IN1- 1 I ANA Comparators C1 and C2 inverting input, channel 1. Analog select is shared with ADC. RA2 0 O DIG LATA<2> data output; not affected by analog input. Disabled when CVREF output enabled. 1 I TTL PORTA<2> data input. Disabled when analog functions enabled; disabled when CVREF output enabled. 1 I ANA ADC input channel 2. Default input configuration on POR; not affected by analog output. AN2 RA3/AN3/C1IN+/ VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/ HLVDIN/C2OUT OSC2/CLKOUT/ RA6 OSC1/CLKIN/RA7 記号の説明 : Description C2IN+ 1 I ANA Comparator C2 non-inverting input. Analog selection is shared with ADC. VREF- 1 I ANA ADC and comparator voltage reference low input. CVREF x O ANA Comparator voltage reference output. Enabling this feature disables digital I/ O. RA3 0 O DIG LATA<3> data output; not affected by analog input. 1 I TTL PORTA<3> data input; disabled when analog input enabled. AN3 1 I ANA A/D input channel 3. Default input configuration on POR. C1IN+ 1 I ANA Comparator C1 non-inverting input. Analog selection is shared with ADC. VREF+ 1 I ANA ADC and comparator voltage reference high input. RA4 0 O DIG LATA<4> data output. 1 I ST PORTA<4> data input; default configuration on POR. Timer0 clock input. T0CKI 1 I ST C1OUT 0 O DIG Comparator 1 output; takes priority over port data. RA5 0 O DIG LATA<5> data output; not affected by analog input. 1 I TTL PORTA<5> data input; disabled when analog input enabled. AN4 1 I ANA A/D input channel 4. Default configuration on POR. SS 1 I TTL Slave select input for SSP (MSSP module). HLVDIN 1 I ANA Low-Voltage Detect external trip point input. C2OUT 0 O DIG Comparator 2 output; takes priority over port data. RA6 0 O DIG LATA<6> data output. Enabled in RCIO, INTIO2 and ECIO modes only. 1 I TTL PORTA<6> data input. Enabled in RCIO, INTIO2 and ECIO modes only. OSC2 x O ANA Main oscillator feedback output connection (XT, HS and LP modes). CLKOUT x O DIG System cycle clock output (FOSC/4) in RC, INTIO1 and EC Oscillator modes. RA7 0 O DIG LATA<7> data output. Disabled in external oscillator modes. 1 I TTL PORTA<7> data input. Disabled in external oscillator modes. OSC1 x I ANA Main oscillator input connection. CLKIN x I ANA Main clock input connection. DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、 ANA = アナログ レベル入出力 x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。) DS41303E_JP - ページ 120 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 10-2: PORTA 関連レジスタの一覧 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page RA7(1) RA6(1) RA5 RA4 RA3 RA2 RA1 RA0 60 LATA LATA7(1) LATA6(1) TRISA TRISA7(1) TRISA6(1) PORTA Data Direction Control Register Name PORTA ANSEL SLRCON CM1CON0 ANS7 (2) ANS6 (2) PORTA Data Latch Register (Read and Write to Data Latch) ANS5 (2) 60 60 ANS4 ANS3 ANS2 SLRD(2) SLRC SLRB SLRA 61 C1SP C1R C1CH1 C1CH0 60 — — — SLRE(2) C1ON C1OUT C1OE C1POL ANS1 ANS0 60 CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0 61 CVRCON CVREN CVROE CVRR CVRSS CVR3 CVR2 CVR1 CVR0 59 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは PORTA では使用しません。 注 1: オシレータ構成に応じて、RA<7:6> および対応するラッチとデータ方向ビットは I/O ピンとして設定 されます。その他の場合は「0」と読み出されます。 2: PIC18F2XK20 デバイスには実装されていません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 121 PIC18F2XK20/4XK20 10.2 PORTB、TRISB、LATB レジスタ 10.3.2 状態変化割り込み PORTB は 8 ビット幅の双方向ポートです。これに 対応するデータ方向レジスタが TRISB です。TRISB ビットをセットする (= 1) と、対応する PORTB ピ ンが入力になります ( すなわち、出力ドライバが無 効になります )。TRISB ビットをクリアする (= 0) と、対応する PORTB ピンが出力になります ( すな わち、出力ドライバが有効になり、出力ラッチの内 容が選択したピンに出力されます )。 PORTB ピンのうち 4 本 (RB<7:4>) は、個別に状態 変化割り込みピンに設定できます。IOCB レジスタ の制御ビットをセット / クリアすると、各ピンの割 り込み機能が有効 / 無効になります。 データ ラッチ レジスタ (LATB) はメモリにも対応づ けられています。LATB レジスタに対する ReadModify-Write 動作は、PORTB のラッチされた出力値 を読み出してから書き込みます。 この割り込みが発生するのは、入力として設定した ピンだけです ( すなわち、出力に設定された RB<7:4> ピンは、 状態変化割り込みの比較から除外されます)。 例 10-2: CLRF CLRF CLRF MOVLW MOVWF 10.3 PORTB の初期化 PORTB ; Initialize PORTB by ; clearing output ; data latches LATB ; Alternate method ; to clear output ; data latches ANSELH ; Set RB<4:0> as ; digital I/O pins ;(required if config bit ; PBADEN is set) 0CFh ; Value used to ; initialize data ; direction TRISB ; Set RB<3:0> as inputs ; RB<5:4> as outputs ; RB<7:6> as inputs a) PORTB に対して、任意の読み出しまたは書 き込みを実行すれば不一致状態は解消され ます (PORTB が MOVFF 命令の入力元または 出力先である場合を除く )。 フラグ ビット RBIF をクリアします。 b) PORTB ピンのその他の機能 10.3.1 弱プルアップ 各 PORTB ピンには、個別に制御可能な内部弱プル アップがあります。WPUB レジスタの各ビットを セットすると、対応するピンのプルアップが有効に なります。INTCON2 レジスタの RBPU ビットをク リアすると、WPUB ビットがセットされているピン のすべてにプルアップが設定されます。RBPU ビッ トをセットすると、弱プルアップがすべて無効にな ります。出力として設定したポート ピンの弱プル アップは自動的にオフになります。プルアップはパ ワーオン リセットで無効になります。 パワーオン リセット時、デフォルトで RB<4:0> ピンはアナログ入力として設定 され、 「0」と読み出されます。RB<7:5> は デジタル入力に設定されます。 構成ビット PBADEN を「1」に設定する と、RB<4:0> は POR 時にデジタル入力に 設定されます。 DS41303E_JP - ページ 122 状態変化割り込みが許可されたピンでは、PORTB の最後の読み出し時にラッチされた値と現在の値 が比較されます。最後に実行された読み出しの「不 一致」出力が OR 演算され、INTCON レジスタの PORTB 状態変化割り込みフラグ ビット (RBIF) が セットされます。 この割り込みによって、スリープ モードあるいは すべてのアイドル モードからデバイスをウェイク アップさせることができます。ユーザーは、割り込 みサービス ルーチン内で以下の方法を使って割り 込みをクリアできます。 PORTB ピン RB<7:4> には状態変化割り込みオプ ションを設定できます。また、すべての PORTB ピ ンに弱プルアップ オプションが設けられています。 RB3ではCCP2代替周辺オプションを使用できます。 注: INTCON レジスタの RBIE ビットをセットすると、 対 応する IOCB ビットをセットされたすべてのピンの 割り込みが許可されます。RBIE ビットをクリアする と、すべての状態変化割り込みが禁止されます。 RBIF フラグ ビットは、 不一致状態になるたびにセッ トされます。PORTB に対して読み出し / 書き込みを 実行すると不一致状態が終了し、RBIF ビットをクリ アできるようになります。最後に読み出した値を保 持するラッチは、MCLR やブラウンアウト リセット の影響を受けません。いずれのリセット後も、不一 致状態が発生すれば RBIF フラグは引き続きセット されます。 注: 読み出し動作の実行中 (Q2 サイクルの開始 時 ) に I/O ピンの状態が変化した場合は、 RBIF 割り込みフラグがセットされないこ とがあります。また、ポートへの読み出し または書き込み動作は、そのポートの全 ビットに影響を与えるため、状態変化割り 込みモードのピンを複数使用するときは注 意が必要です。あるピンの変化による割り 込みに応答している間に、別のピンが変化 しても検出できない場合があるためです。 状態変化割り込み機能は、キーの押し下げによる ウェイクアップや、PORTB を状態変化割り込み機 能にしか使わない場合に限って使用することを推 奨します。 状態変化割り込み機能の使用中にPORTB をポーリングすることは推奨できません。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 10.3.3 CCP2 代替オプション CONFIG3H の構成ビット CCP2MX をクリアするこ とで、RB3 を CCP2 モジュールの代替周辺ピンに設 定できます。構成ビット CCP2MX のデフォルト状 態は「1」で、CCP2 の周辺ピンには RC1 が選択さ れます。 表 10-3: PORTB I/O 一覧 Pin RB0/INT0/FLT0/ AN12 RB1/INT1/AN10/ C12IN3-/P1C RB2/INT2/AN8/P1B RB3/AN9/C12IN2-/ CCP2 RB4/KBI0/AN11/ P1D Function TRIS Setting I/O I/O Type RB0 0 O DIG LATB<0> data output; not affected by analog input. 1 I TTL PORTB<0> data input; Programmable weak pull-up. Disabled when analog input enabled.(1) Description INT0 1 I ST External interrupt 0 input. FLT0 1 I ST Enhanced PWM Fault input (ECCP1 module); enabled by software. AN12 1 I ANA RB1 A/D input channel 12.(1) 0 O DIG LATB<1> data output; not affected by analog input. 1 I TTL PORTB<1> data input; Programmable weak pull-up. Disabled when analog input enabled.(1) INT1 1 I ST External Interrupt 1 input. AN10 1 I ANA ADC input channel 10.(1) C12IN3- 1 I ANA Comparators C1 and C2 inverting input, channel 3. Analog select is shared with ADC. P1C 0 O DIG ECCP PWM output (28-pin devices only). RB2 0 O DIG LATB<2> data output; not affected by analog input. 1 I TTL PORTB<2> data input; Programmable weak pull-up. Disabled when analog input enabled.(1) INT2 1 I ST AN8 1 I ANA ADC input channel 8.(1) P1B 0 O DIG ECCP PWM output (28-pin devices only). RB3 0 O DIG LATB<3> data output; not affected by analog input. 1 I TTL PORTB<3> data input; Programmable weak pull-up. Disabled when analog input enabled.(1) AN9 1 I ANA ADC input channel 9.(1) C12IN2- 1 I ANA Comparators C1 and C2 inverting input, channel 2. Analog select is shared with ADC. CCP2(2) 0 O DIG 1 I ST 0 O DIG LATB<4> data output; not affected by analog input. 1 I TTL PORTB<4> data input; Programmable weak pull-up. Disabled when analog input enabled.(1) RB4 External interrupt 2 input. CCP2 compare and PWM output. CCP2 capture input KBI0 1 I TTL Interrupt-on-pin change. AN11 1 I ANA ADC input channel 11.(1) P1D 0 O DIG ECCP PWM output (28-pin devices only). 記号の説明 : 注 1: 2: 3: DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、 ANA = アナログ レベル入出力 x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。) POR 時の設定は、構成ビット PBADEN によって決まります。PBADEN がセットされている場合、ピンはデフォルトで アナログ入力に設定されます。PBADEN がクリアされている場合はデジタル入力になります。 構成ビット CCP2MX が「0」の場合の、CCP2 の代替割り当てです。デフォルト割り当ては RC1 です。 ICSP または ICD が有効な場合、その他のピン機能はすべて無効になります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 123 PIC18F2XK20/4XK20 表 10-3: PORTB I/O 一覧 ( 続き ) Pin Function TRIS Setting I/O RB5 0 O DIG LATB<5> data output. 1 I TTL PORTB<5> data input; Programmable weak pull-up. KBI1 1 I TTL Interrupt-on-pin change. PGM x I ST RB6 0 O DIG 1 I TTL PORTB<6> data input; Programmable weak pull-up. KBI2 1 I TTL Interrupt-on-pin change. PGC x I ST RB7 0 O DIG LATB<7> data output. 1 I TTL PORTB<7> data input; Programmable weak pull-up. KBI3 1 I TTL Interrupt-on-pin change. PGD x O DIG Serial execution data output for ICSP and ICD operation.(3) x I ST Serial execution data input for ICSP and ICD operation.(3) RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD I/O Type Description Single-Supply Programming mode entry (ICSP™). Enabled by LVP Configuration bit; all other pin functions disabled. LATB<6> data output. Serial execution (ICSP) clock input for ICSP and ICD operation.(3) 記号の説明 : 注 1: 2: 3: DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、 ANA = アナログ レベル入出力 x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。) POR 時の設定は、構成ビット PBADEN によって決まります。PBADEN がセットされている場合、ピンはデフォルトで アナログ入力に設定されます。PBADEN がクリアされている場合はデジタル入力になります。 構成ビット CCP2MX が「0」の場合の、CCP2 の代替割り当てです。デフォルト割り当ては RC1 です。 ICSP または ICD が有効な場合、その他のピン機能はすべて無効になります。 表 10-4: Name PORTB PORTB 関連レジスタの一覧 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 60 LATB PORTB Data Latch Register (Read and Write to Data Latch) 60 TRISB PORTB Data Direction Control Register 60 WPUB WPUB7 WPUB6 WPUB5 IOCB IOCB7 IOCB6 IOCB5 IOCB4 — — — — — SLRE(1) SLRD(1) SLRC INT0IE RBIE TMR0IF INT0IF INTEDG0 INTEDG1 INTEDG2 SLRCON INTCON GIE/GIEH PEIE/GIEL TMR0IE WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 60 — — 60 SLRB SLRA 61 RBIF 57 INTCON2 RBPU — TMR0IP — RBIP 57 INTCON3 INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF 57 ANSELH — — — ANS12 ANS11 ANS10 ANS9 ANS8 60 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは PORTB では使用しません。 注 1: PIC18F2XK20 デバイスには実装されていません。 DS41303E_JP - ページ 124 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 10.4 PORTC、TRISC、LATC レジスタ PORTC は 8 ビット幅の双方向ポートです。これに 対応するデータ方向レジスタが TRISC です。TRISC ビットをセットする (= 1) と、対応する PORTC ピ ンが入力になります ( すなわち、出力ドライバが無 効になります )。TRISC ビットをクリアする (= 0) と、対応する PORTC ピンが出力になります ( すな わち、出力ドライバが有効になり、出力ラッチの内 容が選択したピンに出力されます )。 例 10-3: PORTC の初期化 CLRF PORTC CLRF LATC MOVLW 0CFh MOVWF TRISC データ ラッチ レジスタ (LATC) はメモリにも対応づ けられています。LATC レジスタに対する ReadModify-Write 動作は、PORTC のラッチされた出力値 を読み出してから書き込みます。 ; ; ; ; ; ; ; ; ; ; ; ; Initialize PORTC by clearing output data latches Alternate method to clear output data latches Value used to initialize data direction Set RC<3:0> as inputs RC<5:4> as outputs RC<7:6> as inputs PORTCは、複数の周辺機能と多重化されています ( 表 10-5)。各ピンは、シュミット トリガ入力バッ ファを備えています。CCP2 周辺ピンのデフォルト 設定はRC1です。構成ワードCONFIG3HのCCP2MX ビットをクリアすることで、CCP2 の機能を RB3 に 切り替えることができます。構成ビットCCP2MXの デフォルト状態は「1」です。 周辺機能を有効にする場合、PORTC の各ピンに対 する TRIS ビットの定義は慎重に行ってください。 EUSART および MSSP 周辺機能は、ピンの入出力を 設定するため、構成によっては TRIS ビットよりも 優先されます。詳細は、該当する周辺機能の項を参 照してください。 注: パワーオン リセット時、これらのピンは デジタル入力に設定されます。 TRISC レジスタの内容は周辺機能による置き換え の影響を受けます。周辺デバイスが 1 つまたは複数 のピンの機能を置き換えている場合もありますが、 TRISC の読み出し値は常に現在のレジスタ内容に なります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 125 PIC18F2XK20/4XK20 表 10-5: PORTC I/O 一覧 Pin RC0/T1OSO/ T13CKI RC1/T1OSI/CCP2 RC2/CCP1/P1A Function TRIS Setting I/O I/O Type RC0 0 O DIG 1 I ST T1OSO x O ANA T13CKI 1 I ST RC1 0 O DIG RC6/TX/CK RC7/RX/DT Timer1/Timer3 counter input. LATC<1> data output. I ST x I ANA Timer1 oscillator input; enabled when Timer1 oscillator enabled. Disables digital I/O. CCP2(1) 0 O DIG CCP2 compare and PWM output; takes priority over port data. 1 I ST 0 O DIG 1 I ST 0 O DIG 1 I ST P1A 0 O DIG ECCP1 Enhanced PWM output, channel A. May be configured for tri-state during Enhanced PWM shutdown events. Takes priority over port data. RC3 0 O DIG LATC<3> data output. 1 I ST 0 O DIG RC2 SCL RC5/SDO PORTC<0> data input. Timer1 oscillator output; enabled when Timer1 oscillator enabled. Disables digital I/O. 1 SCK RC4/SDI/SDA LATC<0> data output. T1OSI CCP1 RC3/SCK/SCL Description RC4 1 I ST 0 O DIG 1 I 0 O PORTC<1> data input. CCP2 capture input. LATC<2> data output. PORTC<2> data input. ECCP1 compare or PWM output; takes priority over port data. ECCP1 capture input. PORTC<3> data input. SPI clock output (MSSP module); takes priority over port data. SPI clock input (MSSP module). I2C™ clock output (MSSP module); takes priority over port data. I2C/SMB I2C clock input (MSSP module); input type depends on module setting. DIG LATC<4> data output. 1 I ST PORTC<4> data input. SDI 1 I ST SPI data input (MSSP module). SDA 1 O DIG 1 I 0 O DIG 1 I ST SDO 0 O DIG SPI data output (MSSP module); takes priority over port data. RC6 0 O DIG LATC<6> data output. RC5 I2C data output (MSSP module); takes priority over port data. I2C/SMB I2C data input (MSSP module); input type depends on module setting. LATC<5> data output. PORTC<5> data input. 1 I ST TX 1 O DIG Asynchronous serial transmit data output (USART module); takes priority over port data. User must configure as output. CK 1 O DIG Synchronous serial clock output (USART module); takes priority over port data. 1 I ST 0 O DIG LATC<7> data output. 1 I ST PORTC<7> data input. RX 1 I ST DT 1 O DIG 1 I ST RC7 PORTC<6> data input. Synchronous serial clock input (USART module). Asynchronous serial receive data input (USART module). Synchronous serial data output (USART module); takes priority over port data. Synchronous serial data input (USART module). User must configure as an input. 記号の説明 : 注 1: DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、 ANA = アナログ レベル入出力 I2C/SMB = I2C/SMBus 入力バッファ、x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出 力方向に影響を与えません。) 構成ビット CCP2MX がセットされているときの、CCP2 のデフォルト割り当てです。代替割り当ては RB3 です。 DS41303E_JP - ページ 126 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 10-6: Name PORTC PORTC 関連レジスタの一覧 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 Reset Values on page 60 LATC PORTC Data Latch Register (Read and Write to Data Latch) 60 TRISC PORTC Data Direction Control Register 60 T1CON RD16 T1RUN T3CON RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 TXSTA CSRC TX9 T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON TXEN SYNC SENDB T3SYNC TMR3CS TMR3ON BRGH TRMT TX9D 58 59 59 RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 59 SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 58 CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 59 CCP2CON — — DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 59 ECCP1AS SLRCON ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 — — — SLRE(1) SLRD(1) PSSAC0 PSSBD1 PSSBD0 59 SLRC SLRB SLRA 61 記号の説明 : — = 未実装、「0」として読み出し。網掛けのビットは PORTC では使用しません。 注 1: PIC18F2XK20 デバイスには実装されていません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 127 PIC18F2XK20/4XK20 10.5 注: PORTD、TRISD、LATD レジスタ PORTD は、40/44 ピンデバイスにおいての み使用可能です。 PORTD は 8 ビット幅の双方向ポートです。これに 対応するデータ方向レジスタが TRISD です。TRISD ビットをセットする (= 1) と、対応する PORTD ピ ンが入力になります ( すなわち、出力ドライバが無 効になります )。TRISD ビットをクリアする (= 0) と、対応する PORTD ピンが出力になります ( すな わち、出力ドライバが有効になり、出力ラッチの内 容が選択したピンに出力されます )。 データ ラッチ レジスタ(LATD)はメモリにも対応づ けられています。LATD レジスタに対する ReadModify-Write 動作は、PORTD のラッチされた出力 値を読み出してから書き込みます。 PORTD のピンには、すべてにシュミット トリガ入 力バッファが備えられています。各ピンは、個別に 入力または出力に設定できます。 PORTD ピンのうち 3 本は、拡張 CCP モジュールの P1B、P1C、P1D 出力と多重化されています。これ らの拡張 PWM 出力ピンの動作については、16.0 項 「拡張キャプチャ/ コンペア /PWM (ECCP) モジュー ル」で詳細に説明しています。 注: PORTD は、制御ビット PSPMODE (TRISE<4>) を セットすることで、8 ビット幅のマイクロプロセッ サ ポート ( パラレル スレーブ ポート ) として設定 できます。このモードでは入力バッファが TTL に なります。パラレル スレーブ ポート (PSP) の詳細 は、10.9 項「パラレル スレーブ ポート」を参照し てください。 注: 例 10-4: 拡張 PWM モードをデュアルまたはクワッ ド出力で使用する場合、PORTD の PSP 機 能は自動的に無効になります。 PORTD の初期化 CLRF PORTD CLRF LATD MOVLW 0CFh MOVWF TRISD ; ; ; ; ; ; ; ; ; ; ; ; Initialize PORTD by clearing output data latches Alternate method to clear output data latches Value used to initialize data direction Set RD<3:0> as inputs RD<5:4> as outputs RD<7:6> as inputs パワーオン リセット時、これらのピンは デジタル入力に設定されます。 DS41303E_JP - ページ 128 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 10-7: PORTD I/O 一覧 Pin RD0/PSP0 Function TRIS Setting I/O I/O Type RD0 0 O DIG LATD<0> data output. PORTD<0> data input. PSP0 RD1/PSP1 RD1 PSP1 RD2/PSP2 RD2 PSP2 RD3/PSP3 RD3 PSP3 RD4/PSP4 RD4 PSP4 RD5/PSP5/P1B RD5 PSP5 P1B RD6/PSP6/P1C RD6 PSP6 P1C RD7/PSP7/P1D 記号の説明 : RD7 Description 1 I ST x O DIG PSP read data output (LATD<0>); takes priority over port data. x I TTL PSP write data input. 0 O DIG LATD<1> data output. PORTD<1> data input. 1 I ST x O DIG PSP read data output (LATD<1>); takes priority over port data. x I TTL PSP write data input. 0 O DIG LATD<2> data output. PORTD<2> data input. 1 I ST x O DIG PSP read data output (LATD<2>); takes priority over port data. x I TTL PSP write data input. 0 O DIG LATD<3> data output. PORTD<3> data input. 1 I ST x O DIG PSP read data output (LATD<3>); takes priority over port data. x I TTL PSP write data input. 0 O DIG LATD<4> data output. PORTD<4> data input. 1 I ST x O DIG PSP read data output (LATD<4>); takes priority over port data. x I TTL PSP write data input. 0 O DIG LATD<5> data output. PORTD<5> data input. 1 I ST x O DIG PSP read data output (LATD<5>); takes priority over port data. x I TTL PSP write data input. 0 O DIG ECCP1 Enhanced PWM output, channel B; takes priority over port and PSP data. May be configured for tri-state during Enhanced PWM shutdown events. 0 O DIG LATD<6> data output. 1 I ST PORTD<6> data input. x O DIG PSP read data output (LATD<6>); takes priority over port data. x I TTL PSP write data input. 0 O DIG ECCP1 Enhanced PWM output, channel C; takes priority over port and PSP data. May be configured for tri-state during Enhanced PWM shutdown events. 0 O DIG LATD<7> data output. 1 I ST PORTD<7> data input. PSP7 x O DIG x I TTL PSP write data input. P1D 0 O DIG ECCP1 Enhanced PWM output, channel D; takes priority over port and PSP data. May be configured for tri-state during Enhanced PWM shutdown events. PSP read data output (LATD<7>); takes priority over port data. DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。) 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 129 PIC18F2XK20/4XK20 表 10-8: Name PORTD(1) PORTD 関連レジスタの一覧 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 60 LATD(1) PORTD Data Latch Register (Read and Write to Data Latch) 60 TRISD(1) PORTD Data Direction Control Register 60 TRISE (1) CCP1CON SLRCON IBF OBF IBOV PSPMODE — TRISE2 TRISE1 TRISE0 60 P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 59 — SLRE(1) SLRD(1) SLRC SLRB SLRA 61 — — 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは PORTD では使用しません。 注 1: PIC18F2XK20 デバイスには実装されていません。 DS41303E_JP - ページ 130 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 10.6 PORTE、TRISE、LATE レジスタ 選択した PIC18F2XK20/4XK20 デバイスの種類に応 じて、PORTEには2通りの機能が実装されています。 10.6.1 PIC18F4XK20 デバイスの PORTE PIC18F4XK20 デバイスの PORTE は 4 ビット幅の ポートです。3 本のピン (RE0/RD/AN5、RE1/WR/ AN6、RE2/CS/AN7) は、それぞれ個別に入力または 出力に設定できます。各ピンは、シュミット トリ ガ入力バッファを備えています。アナログ入力ピン に設定されている場合、これらのピンは「0」と読 み出されます。 このポートに対応するデータ方向レジスタはTRISE です。TRISE ビットをセットする (= 1) と、対応す る PORTE ピンが入力になります ( すなわち、出力 ドライバが無効になります )。TRISE ビットをクリ アする (= 0) と、対応する PORTE ピンが出力になり ます ( すなわち、出力ドライバが有効になり、出力 ラッチの内容が選択したピンに出力されます )。 ピンをアナログ入力に使用する場合も、RE ピンの 入出力方向は TRISE レジスタによって制御されま す。これらをアナログ入力として使用する場合も、 ピンが入力に設定されるようにしてください。 注: パワーオン リセット時、RE<2:0> はアナ ログ入力に設定されます。 TRISE レジスタの上位 4 ビットは、 パラレル スレー ブ ポートの動作も制御します。その動作について は、レジスタ 10-1 に記載されています。 データ ラッチ レジスタ (LATE) はメモリにも対応づ けられています。LATE レジスタに対する ReadModify-Write 動作は、PORTE のラッチされた出力値 を読み出してから書き込みます。 2009 Microchip Technology Inc. PORTE の 4 番目のピン (MCLR/VPP/RE3) は、入力専 用ピンです。動作は構成ビット MCLRE によって制 御されます。ポート ピンに設定されている場合 (MCLRE = 0) は、デジタル入力専用ピンとして機能 するため、 この動作に関連する TRIS または LAT ビッ トは無視されます。それ以外の場合はデバイスのマ スタ クリア入力として動作します。いずれに設定し てあっても、プログラミング時の RE3 はプログラミ ング電圧入力になります。 注: 例 10-5: CLRF CLRF MOVLW ANDWF MOVLW MOVWF 10.6.2 マスタ クリア機能が無効の場合、パワー オン リセット時に RE3 はデジタル入力専 用ピンになります。 PORTE の初期化 PORTE ; ; ; LATE ; ; ; 1Fh ; ANSEL,w ; 05h ; ; ; TRISE ; ; ; Initialize PORTE by clearing output data latches Alternate method to clear output data latches Configure analog pins for digital only Value used to initialize data direction Set RE<0> as input RE<1> as output RE<2> as input PIC18F2XK20 デバイスの PORTE PIC18F2XK20 デバイスでは、マスタ クリア機能が 無効の場合 (MCLR = 0) のみ PORTE を使用できま す。その場合、PORTE は RE3 ピンのみの 1 ビット の入力専用ポートになります。ピンの動作は前述の とおりです。 Preliminary DS41303E_JP - ページ 131 PIC18F2XK20/4XK20 レジスタ 10-1: TRISE: PORTE/PSP 制御レジスタ (PIC18F4XK20 デバイスのみ ) R-0 R-0 R/W-0 R/W-0 U-0 R/W-1 R/W-1 R/W-1 IBF OBF IBOV PSPMODE — TRISE2 TRISE1 TRISE0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 IBF: 入力バッファ フル状態ビット 1 = 1 ワードが受信され CPU による読み出し待ち 0 = 1 ワードも受信されていない ビット 6 OBF: 出力バッファ フル状態ビット 1 = 前回書き込まれたワードがまだ出力バッファに残っている 0 = 出力バッファは読み出し済み ビット 5 IBOV: 入力バッファ オーバーフロー検出ビット ( マイクロプロセッサ モードの場合 ) 1 = 前回の入力ワードがまだ読み出されていないにもかかわらず、書き込みが実行された ( ソフトウェアによるクリアが必要 ) 0 = オーバーフローは発生していない ビット 4 PSPMODE: パラレル スレーブ ポート モード選択ビット 1 = パラレル スレーブ ポート モード 0 = 汎用 I/O モード ビット 3 未実装 :「0」として読み出し ビット 2 TRISE2: RE2 方向制御ビット 1 = 入力 0 = 出力 ビット 1 TRISE1: RE1 方向制御ビット 1 = 入力 0 = 出力 ビット 0 TRISE0: RE0 方向制御ビット 1 = 入力 0 = 出力 DS41303E_JP - ページ 132 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 10-9: Pin PORTE I/O 一覧 Function TRIS Setting I/O I/O Type RE0 0 O DIG 1 I ST RE0/RD/AN5 RE1/WR/AN6 MCLR/VPP/ RE3(1,2) LATE<0> data output; not affected by analog input. PORTE<0> data input; disabled when analog input enabled. RD 1 I TTL PSP read enable input (PSP enabled). AN5 1 I ANA A/D input channel 5; default input configuration on POR. RE1 0 O DIG LATE<1> data output; not affected by analog input. 1 I ST WR 1 I TTL PSP write enable input (PSP enabled). AN6 1 I ANA A/D input channel 6; default input configuration on POR. LATE<2> data output; not affected by analog input. RE2 RE2/CS/AN7 Description PORTE<1> data input; disabled when analog input enabled. 0 O DIG 1 I ST PORTE<2> data input; disabled when analog input enabled. CS 1 I TTL PSP write enable input (PSP enabled). AN7 1 I ANA A/D input channel 7; default input configuration on POR. MCLR — I ST VPP — I ANA RE3 —(2) I ST External Master Clear input; enabled when MCLRE Configuration bit is set. High-voltage detection; used for ICSP™ mode entry detection. Always available, regardless of pin mode. PORTE<3> data input; enabled when MCLRE Configuration bit is clear. 記号の説明 : DIG = デジタル レベル出力、TTL = TTL 入力バッファ、ST = シュミット トリガ入力バッファ、 ANA = アナログ レベル入出力 x = ドントケア ( このオプションでは TRIS ビットは無視され、ポートの入出力方向に影響を与えません。) RE3 は、PIC18F2XK20 および PIC18F4XK20 の両デバイスで使用できます。その他の PORTE ピンは、いずれも PIC18F4XK20 デバイスにのみ実装されています。 RE3 にはデータ方向を制御する TRIS ビットが対応づけられていません。 注 1: 2: 表 10-10: PORTE 関連レジスタの一覧 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page PORTE — — — — RE3(1,2) RE2 RE1 RE0 60 LATE(2) — — — — — IBF OBF IBOV PSPMODE — TRISE2 TRISE1 TRISE0 60 — — — SLRE(3) SLRD(3) SLRC SLRB SLRA 61 ANS7(3) ANS6(3) ANS5(3) ANS4 ANS3 ANS2 ANS1 ANS0 60 Name TRISE (3) SLRCON ANSEL LATE Data Output Register 60 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは PORTE では使用しません。 注 1: マスタ クリア 機能が無効 ( 構成ビット MCLRE = 0) の場合にのみ使用できます。 2: PIC18F2XK20 および PIC18F4XK20 デバイスの両方に実装されている PORTE ビットは RE3 だけです。 その他のビットは、いずれも PORTE が実装されている場合にのみ ( つまり PIC18F4XK20 デバイスの み ) 実装されます。 3: PIC18F2XK20 デバイスには実装されていません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 133 PIC18F2XK20/4XK20 10.7 ポートのアナログ制御 応するデジタル入力バッファが無効化され、そのピ ンの読み出し値が常に「0」になると同時に、アナ ログ機能の適切な動作が可能になります。 ポート ピンの一部は、A/D コンバータやコンパレー タなどのアナログ機能と多重化されています。これ らの I/O ピンをアナログ入力として使用する場合 は、デジタル入力バッファを無効化する必要があり ます。デジタル入力を不適切にバイアスすることで 過剰な電流が流れるのを防ぐためです。アナログ機 能と多重化されたピンのデジタル入力バッファは、 ANSEL および ANSELH レジスタによって個別に制 御できます。ANSx ビットを High に設定すると、対 レジスタ 10-2: R/W-1 ANS7 ANSEL: アナログ選択レジスタ 1 R/W-1 (1) ANSx ビットの状態は、デジタル出力機能には影響 を与えません。対応する TRIS ビットをクリアして ANSx ビットをセットしたピンは、デジタル出力と して動作しますが、入力モードはアナログになりま す。このように設定されたポートに対して ReadModify-Write 命令を実行すると予期しない動作とな ることがあります。 ANS6 (1) R/W-1 ANS5 (1) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 ANS4 ANS3 ANS2 ANS1 ANS0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。 「0」として読み出し 「1」= セット 「0」= クリア ビット 7 ANS7: RE2 アナログ選択制御ビット (1) 1 = RE2 のデジタル入力バッファが無効 0 = RE2 のデジタル入力バッファが有効 ビット 6 ANS6: RE1 アナログ選択制御ビット (1) 1 = RE1 のデジタル入力バッファが無効 0 = RE1 のデジタル入力バッファが有効 ビット 5 ANS5: RE0 アナログ選択制御ビット (1) 1 = RE0 のデジタル入力バッファが無効 0 = RE0 のデジタル入力バッファが有効 ビット 4 ANS4: RA5 アナログ選択制御ビット 1 = RA5 のデジタル入力バッファが無効 0 = RA5 のデジタル入力バッファが有効 ビット 3 ANS3: RA3 アナログ選択制御ビット 1 = RA3 のデジタル入力バッファが無効 0 = RA3 のデジタル入力バッファが有効 ビット 2 ANS2: RA2 アナログ選択制御ビット 1 = RA2 のデジタル入力バッファが無効 0 = RA2 のデジタル入力バッファが有効 ビット 1 ANS1: RA1 アナログ選択制御ビット 1 = RA1 のデジタル入力バッファが無効 0 = RA1 のデジタル入力バッファが有効 ビット 0 ANS0: RA0 アナログ選択制御ビット 1 = RA0 のデジタル入力バッファが無効 0 = RA0 のデジタル入力バッファが有効 注 1: x = 不明 これらのビットは PIC18F2XK20 デバイスには実装されていません。 DS41303E_JP - ページ 134 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 10-3: ANSELH: アナログ選択レジスタ 2 U-0 U-0 U-0 R/W-1(1) R/W-1(1) R/W-1(1) R/W-1(1) R/W-1(1) — — — ANS12 ANS11 ANS10 ANS9 ANS8 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。 「0」として読み出し 「1」= セット 「0」= クリア ビット 7-5 未実装 :「0」として読み出し ビット 4 ANS12: RB0 アナログ選択制御ビット 1 = RB0 のデジタル入力バッファが無効 0 = RB0 のデジタル入力バッファが有効 ビット 3 ANS11: RB4 アナログ選択制御ビット 1 = RB4 のデジタル入力バッファが無効 0 = RB4 のデジタル入力バッファが有効 ビット 2 ANS10: RB1 アナログ選択制御ビット 1 = RB1 のデジタル入力バッファが無効 0 = RB1 のデジタル入力バッファが有効 ビット 1 ANS9: RB3 アナログ選択制御ビット 1 = RB3 のデジタル入力バッファが無効 0 = RB3 のデジタル入力バッファが有効 ビット 0 ANS8: RB2 アナログ選択制御ビット 1 = RB2 のデジタル入力バッファが無効 0 = RB2 のデジタル入力バッファが有効 注 1: x = 不明 デフォルト状態は、CONFIG3H の PBADEN ビットによって決まります。PBADEN =「0」の場合の デフォルト状態は「0」です。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 135 PIC18F2XK20/4XK20 10.8 ポート スルー レート制御 各ポートの出力スルー レートをプログラムできま す。標準の遷移速度を選択するか、標準の 0.1 倍の 低速遷移を選択して EMI を最小限に抑えることが できます。すべてのポートのデフォルト スルー レートは低速遷移です。 レジスタ 10-4: U-0 SLRCON: スルー レート制御レジスタ U-0 — — U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 — SLRE(1) SLRD(1) SLRC SLRB SLRA bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア ビット 7-5 未実装 :「0」として読み出し ビット 4 SLRE: PORTE スルー レート制御ビット (1) 1 = PORTE の全出力のスルー レートを制限 0 = PORTE の全出力のスルー レートを標準の速度に設定 ビット 3 SLRD: PORTD スルー レート制御ビット (1) 1 = PORTD の全出力のスルー レートを制限 0 = PORTD の全出力のスルー レートを標準の速度に設定 ビット 2 SLRC: PORTC スルー レート制御ビット 1 = PORTC の全出力のスルー レートを制限 0 = PORTC の全出力のスルー レートを標準の速度に設定 ビット 1 SLRB: PORTB スルー レート制御ビット 1 = PORTB の全出力のスルー レートを制限 0 = PORTB の全出力のスルー レートを標準の速度に設定 ビット 0 SLRA: PORTA スルー レート制御ビット 1 = PORTA の全出力のスルー レートを制限 (2) 0 = PORTA の全出力のスルー レートを標準の速度に設定 注 1: 2: x = 不明 これらのビットは PIC18F2XK20 デバイスには実装されていません。 RA6 を CLKOUT として使用する場合は、このスルー レートがデフォルトで標準速度になります。 DS41303E_JP - ページ 136 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 10.9 注: パラレル スレーブ ポート パラレル スレーブ ポートは、 PIC18F4XK20 デバイスにのみ搭載されて います。 書き込みおよび読み出しモードの制御信号タイミ ングを、それぞれ図 10-3 および図 10-4 に示します。 図 10-2: PORTD は汎用 I/O ポートとしての機能に加えて、 8 ビット幅のパラレル スレーブ ポート (PSP)、つま りマイクロプロセッサ ポートとしても機能します。 PSP の動作は TRISE レジスタ ( レジスタ 10-1) の上 位 4 ビットによって制御されます。制御ビット PSPMODE (TRISE<4>) をセットすると、拡張 CCP モジュールがデュアルまたはクワッド出力 PWM モードとして動作していない場合に限り、PSP 動作 が有効になります。スレーブ モードでは、外部よ りこのポートに対して非同期で読み出しおよび書 き込みを実行できます。 PSP は 8 ビットのマイクロプロセッサ データ バス に直接インターフェースを取ることができます。外 付けのマイクロプロセッサはPORTDラッチを8ビッ トのラッチと見なして読み出し、書き込むことがで きます。制御ビット PSPMODE をセットすると、 PORTE の I/O ピンがマイクロプロセッサ ポートの 制御入力になります。つまり、ポート ピン RE0 が RD 入力、RE1 が WR 入力、RE2 が CS ( チップ セ レクト ) 入力になります。 この機能を使用する場合、 対 応 す る TRISE レ ジ ス タ の デ ー タ 方 向 ビ ッ ト (TRISE<2:0>) を入力に設定 ( ビットをセット ) し、 ANSEL<7:5> ビットをクリアする必要があります。 One bit of PORTD Data Bus D WR LATD or WR PORTD Q RDx pin CK Data Latch Q RD PORTD TTL D ENEN RD LATD Set Interrupt Flag PSPIF (PIR1<7>) PORTE Pins Read PSP への書き込みは、CS および WR が両方とも Low になると開始され、いずれかが High になった時点 で終了します。書き込みが終了するとフラグ ビッ ト PSPIF および IBF の両方がセットされます。 PSP からの読み出しは、CS および RD が両方とも Low になると開始されます。PORTD のデータが読 み出され、OBF ビットがクリアされます。ユーザー が PORTD に新しいデータを書き込んで OBF をセッ トした場合、データをすぐに読み出すと、OBF ビッ トはセットされません。 PORTD および PORTE のブロック図 ( パラレル スレーブ ポート ) TTL RD Chip Select TTL CS Write 注: TTL WR I/O ピンには、VDD および VSS に対する 保護ダイオードが接続されています。 CSまたはRDのいずれかがHighになると、PORTDピ ンは入力状態に戻り、PSPIF ビットがセットされま す。ユーザー アプリケーションでは、PSP の処理を 実行する前にPSPIFがセットされるのを待ってくだ さい。PSPIF がセットされると、IBF および OBF ビットをポーリングできるようになり、適切な操作 を実行できます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 137 PIC18F2XK20/4XK20 図 10-3: パラレル スレーブ ポート書き込み波形 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q2 Q3 Q4 Q1 Q2 Q3 Q4 CS WR RD PORTD<7:0> IBF OBF PSPIF 図 10-4: パラレル スレーブ ポート読み出し波形 Q1 Q2 Q3 Q4 Q1 CS WR RD PORTD<7:0> IBF OBF PSPIF DS41303E_JP - ページ 138 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 10-11: パラレル スレーブ ポート関連レジスタ Name PORTD(1) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 60 LATD(1) PORTD Data Latch Register (Read and Write to Data Latch) TRISD(1) PORTD Data Direction Control Register 60 PORTE — — — — RE3 LATE(1) — — — — — TRISE(1) IBF OBF IBOV PSPMODE — — SLRE(1) SLRD(1) INT0IE RBIE SLRCON INTCON — — GIE/GIEH PEIE/GIEL TMR0IE 60 RE2(1) RE1(1) RE0(1) LATE Data Output bits TRISE2 60 60 TRISE1 TRISE0 60 SLRC SLRB SLRA 61 TMR0IF INT0IF RBIF 57 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 ANSEL ANS7(1) ANS6(1) ANS5(1) ANS4 ANS3 ANS2 ANS1 ANS0 60 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットはパラレル スレーブ ポートでは使用しません。 注 1: PIC18F2XK20 デバイスには実装されていません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 139 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 140 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 11.0 キャプチャ / コンペア /PWM (CCP) モジュール ここで説明するキャプチャおよびコンペア動作は、 標準および拡張 CCP モジュールの両方に適用され ます。 PIC18F2XK20/4XK20 デバイスは、2 つのキャプチャ / コンペア /PWM (CCP) モジュールを搭載していま す。各モジュールには 16 ビット キャプチャ レジス タ、16 ビット コンペア レジスタ、または PWM マ スタ / スレーブ デューティ サイクル レジスタのい ずれかとして動作する、16 ビットのレジスタがあ ります。 注: CCP1 は、標準のキャプチャとコンペア モード、お よび拡張 PWM モードを備えた、 拡張 CCP (ECCP) モ ジュールとして実装されています。ECCP の実装に ついては、16.0 項「拡張キャプチャ/ コンペア /PWM (ECCP) モジュール」で説明します。CCP2 は拡張機 能を持たない、標準の CCP モジュールとして実装さ れています。 レジスタ 11-1: この章および 16.0 項「拡張キャプチャ / コ ンペア /PWM (ECCP) モジュール」では、 CCP モジュール用のレジスタやビット名 を、具体的なモジュール番号ではなく、 「x」 または「y」などの一般名を使って呼ぶこ とにします。例えば、CCP1、CCP2、ECCP1 の制御レジスタは、すべて「CCPxCON」 と呼びます。 実装されている CCP モジュー ルが標準または拡張のどちらであっても、 そのモジュール制御レジスタ名は 「CCPxCON」に統一します。 CCP2CON: 標準キャプチャ / コンペア /PWM 制御レジスタ U-0 — U-0 — R/W-0 DC2B1 R/W-0 DC2B0 R/W-0 CCP2M3 R/W-0 CCP2M2 R/W-0 CCP2M1 bit 7 R/W-0 CCP2M0 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 ビット 7-6 ビット 5-4 ビット 3-0 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 未実装 :「0」として読み出し DC2B<1:0>: CCP2 モジュールの PWM デューティ サイクル ビット 1 およびビット 0 キャプチャ モード : 未使用 コンペア モード : 未使用 PWM モード : 10 ビットの PWM デューティ サイクルの下位 2 ビット ( ビット 1 およびビット 0)。 上位 8 ビット (DC2B<9:2>) は、CCPR2L に格納されます。 CCP2M<3:0>: CCP2 モード選択ビット 0000 = キャプチャ / コンペア /PWM は無効 (CCP2 モジュールをリセット ) 0001 = 予約 0010 = コンペア モード。一致時に出力をトグル (CCP2IF ビットをセット ) 0011 = 予約 0100 = キャプチャ モード。立ち下りエッジごとにキャプチャ 0101 = キャプチャ モード。立ち上がりエッジごとにキャプチャ 0110 = キャプチャ モード。立ち上がりエッジ 4 回ごとにキャプチャ 0111 = キャプチャ モード。立ち上がりエッジ 16 回ごとにキャプチャ 1000 = コンペア モード : CCP2 ピンを Low に初期化し、コンペアが一致した場合に CCP2 ピン を High に駆動 (CCP2IF ビットをセット ) 1001 = コンペア モード : CCP2 ピンを High に初期化し、コンペアが一致した場合に CCP2 ピ ンを Low に駆動 (CCP2IF ビットをセット ) 1010 = コンペア モード : コンペアが一致した場合にソフトウェア割り込みを発生 (CCP2IF ビッ トをセット。CCP2 ピンは I/O の状態を反映 ) 1011 = コンペア モード : CCP2 一致時に、タイマのリセット、A/D 変換開始などの特殊イベン トをトリガ (CCP2IF ビットをセット ) 11xx = PWM モード 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 141 PIC18F2XK20/4XK20 11.1 CCP モジュールの構成 各キャプチャ / コンペア /PWM モジュールには、制 御レジスタ ( 一般名 CCPxCON) とデータ レジスタ (CCPRx) が対応づけられています。データ レジスタ は、更に 2 つの 8 ビット レジスタ、CCPRxL ( 下位 バイト ) と CCPRxH ( 上位バイト ) から構成されま す。いずれのレジスタも読み出しおよび書き込み可 能です。 11.1.1 CCP モジュールとタイマ リソース CCP モジュールは、選択したモードに応じてタイマ 1、2、または 3 を使用します。キャプチャまたはコ ンペア モードではタイマ 1 とタイマ 3 が使用可能 です。タイマ 2 は PWM モードで使用します。 表 11-1: CCP モード – タイマ リソース CCP/ECCP Mode Timer Resource Capture Timer1 or Timer3 Compare Timer1 or Timer3 PWM Timer2 表 11-2: モジュールへの特定のタイマの割り当ては、T3CON レジスタ ( レジスタ 15-1) 内のタイマ /CCP イネーブ ル ビットの設定によって決まります。2 つのモ ジュールを同じモード ( キャプチャ/ コンペア /PWM) で動作するように設定すれば、両方のモジュールを 同時に有効にすることができ、同じタイマ リソース を共有できます。2 つのモジュールのタイマ リソー スと、両者の動作の相互作用を図 11-1 と図 11-2 に示 します。非同期カウンタ モードの場合、キャプチャ 機能は利用できません。 11.1.2 CCP2 ピン割り当て CCP2 のピン割り当て ( キャプチャ入力、コンペア および PWM の出力 ) は、デバイス構成に応じて変 更できます。CCP2 と多重化するピンは、構成ビッ ト CCP2MX によって決まります。デフォルトでは RC1 ピンになります (CCP2MX =1)。構成ビットを クリアした場合、CCP2 は RB3 と多重化されます。 CCP2 のピン割り当てを変更しても、ポート ピンに 必要な設定が自動的に変更されるわけではありま せん。CCP2 の割り当て先にかかわらず、該当する TRIS レジスタが CCP2 動作に合わせて正しく設定 されていることを確認してください。 CCP1 および CCP2 のタイマ リソースに関する相互作用 CCP1 Mode CCP2 Mode Interaction Capture Capture Each module can use TMR1 or TMR3 as the time base. The time base can be different for each CCP. Capture Compare CCP2 can be configured for the Special Event Trigger to reset TMR1 or TMR3 (depending upon which time base is used). Automatic A/D conversions on trigger event can also be done. Operation of CCP1 could be affected if it is using the same timer as a time base. Compare Capture CCP1 can be configured for the Special Event Trigger to reset TMR1 or TMR3 (depending upon which time base is used). Operation of CCP2 could be affected if it is using the same timer as a time base. Compare Compare Either module can be configured for the Special Event Trigger to reset the time base. Automatic A/D conversions on CCP2 trigger event can be done. Conflicts may occur if both modules are using the same time base. Capture PWM None Compare PWM None Capture None Compare None PWM (1) PWM(1) PWM 注 1: (1) PWM Both PWMs will have the same frequency and update rate (TMR2 interrupt). 標準および拡張 PWM 動作の両方に適用されます。 DS41303E_JP - ページ 142 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 11.2 キャプチャ モード キャプチャ モードでは対応するCCPxピンにイベン トが発生した時点で、TMR1 または TMR3 レジスタ の 16 ビットの値を CCPRxH:CCPRxL レジスタ ペア にキャプチャします。イベントとは、次のいずれか です。 • • • • すべての立ち下がりエッジ すべての立ち上がりエッジ 立ち上がりエッジ 4 回ごと 立ち上がりエッジ 16 回ごと 例 11-1: イベントは、CCPxCON レジスタのモード選択ビッ ト CCPxM<3:0> によって選択します。キャプチャが 実行されると割り込み要求フラグ ビット CCPxIF が セットされます。このビットはソフトウェアでクリ アする必要があります。CCPRx レジスタの値を読 み出す前に再度キャプチャが実行されると、以前に キャプチャした値が新たにキャプチャした値で上 書きされます。 11.2.1 キャプチャ プリスケーラ間の切り替えによって割 り込みが発生する可能性があります。この場合、プ リスケーラ カウンタがクリアされないため、切り 替え後最初のキャプチャがゼロ以外のプリスケー ラによって実行される場合があります。例 11-1 に、 キャプチャ プリスケーラを切り替える際に推奨さ れる方法を示します。この例では、切り替えと同時 にプリスケーラ カウンタをクリアし、 「誤った」割 り込みを発生しません。 CLRF MOVLW MOVWF キャプチャ プリスケーラの切り替え (CCP2 の場合 ) CCP2CON ; Turn CCP module off NEW_CAPT_PS ; Load WREG with the ; new prescaler mode ; value and CCP ON CCP2CON ; Load CCP2CON with ; this value CCP ピンの設定 キャプチャ モードでは、対応する方向ビット TRIS をセットして使用する CCPx ピンを入力に設定して ください。 注: 11.2.2 CCPx ピンを出力に設定すると、ポートに 対する書き込みでキャプチャ状態が発生 します。 タイマ 1/ タイマ 3 のモード選択 キャプチャ機能で使用するタイマ ( タイマ 1 かタイ マ 3 または両方 ) の動作モードは、タイマ モードか 同期カウンタ モードでなければなりません。非同 期カウンタ モードの場合、キャプチャ機能は利用 できません。各 CCP モジュールで使用するタイマ は T3CON レジスタで選択します (11.1.1 項「CCP モ ジュールとタイマ リソース」参照 )。 11.2.3 ソフトウェア割り込み キャプチャ モードを変更した場合、誤ってキャプ チャ割り込みが生成されることがあります。このよ うな誤動作を防ぐには、CCPxIE 割り込みイネーブ ル ビットをクリアします。また、動作モードの変 更後は、必ず割り込みフラグ ビット CCPxIF もクリ アするようにしてください。 11.2.4 CCP プリスケーラ キャプチャ モードには 4 通りのプリスケーラ設定 があります。これらは動作モードの一部としてモー ド選択ビット (CCPxM<3:0>) によって指定します。 CCP モジュールがオフされた場合、またはキャプ チャ モードが無効化された場合、プリスケーラ カ ウンタはクリアされます。これは、何らかのリセッ トが発生してもプリスケーラ カウンタがクリアさ れることを意味します。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 143 PIC18F2XK20/4XK20 図 11-1: キャプチャ モード動作のブロック図 TMR3H Set CCP1IF T3CCP2 CCP1 pin Prescaler 1, 4, 16 and Edge Detect CCP1CON<3:0> Q1:Q4 CCP2CON<3:0> 4 4 CCPR1L TMR1 Enable TMR1H TMR1L TMR3H TMR3L Set CCP2IF 4 T3CCP1 T3CCP2 CCP2 pin Prescaler 1, 4, 16 TMR3 Enable CCPR1H T3CCP2 TMR3L and Edge Detect TMR3 Enable CCPR2H CCPR2L TMR1 Enable T3CCP2 T3CCP1 DS41303E_JP - ページ 144 Preliminary TMR1H TMR1L 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 11.3 11.3.2 コンペア モード CCP モジュールのコンペア機能を使用している場 合、タイマ 1 およびタイマ 3 はタイマ モードまた は同期カウンタ モードで動作させる必要がありま す。非同期カウンタ モードの場合、コンペア機能 は利用できません。 コンペア モードでは、CCPRx レジスタの 16 ビット 値と TMR1 または TMR3 レジスタ ペアの値が継続 的に比較されます。一致した場合、CCPx ピンは次 のように動作します。 • • • • High に駆動 Low に駆動 トグル (High から Low または Low から High) 変化せず ( すなわち、I/O ラッチの状態を反映 ) 11.3.3 11.3.4 CCP ピンの設定 特殊イベント トリガ 両方の CCP モジュールに特殊イベント トリガ機能 があります。これは、コンペア モードで内部ハー ドウェア信号を発生して、他のモジュールの動作を トリガする機能です。特殊イベント トリガはコン ペア特殊イベント トリガ モードを選択すること で有効になります (CCPxM<3:0> = 1011)。 CCPx ピンは、対応する TRIS ビットをクリアして 出力に設定する必要があります。 注: ソフトウェア割り込みモード ソフトウェア割り込み生成モードを選択した場合 (CCPxM<3:0> = 1010)、対応する CCPx ピンは変化 しません。CCPxIF 割り込みフラグだけが影響を受 けます。 ピンの動作は、モード選択ビット (CCPxM<3:0>) の 値によって決まります。一致と同時に割り込みフラ グ ビット CCPxIF もセットされます。 11.3.1 タイマ 1/ タイマ 3 のモード選択 CCPxCON レジスタをクリアすると、CCPx コンペア出力ラッチ ( デバイス構成による ) は強制的にデフォルトの Low レベルになり ます。これは PORTB または PORTC の I/O データ ラッチではありません。 いずれの CCP モジュールについても、特殊イベント トリガが発生すると、モジュールのタイム ベースと してどのようなタイマ リソースを使用中であって も、タイマ レジスタのペアがリセットされます。こ の機能により、CCPRx レジスタを両タイマのプログ ラマブルな周期レジスタとして使用できます。 更に、CCP2 の特殊イベント トリガは A/D 変換を起 動できます。それには、A/D コンバータをあらかじ め有効にしておく必要があります。 図 11-2: コンペア モード動作のブロック図 CCPR1H Set CCP1IF CCPR1L Special Event Trigger (Timer1/Timer3 Reset) CCP1 pin Comparator Output Logic Compare Match S Q R TRIS Output Enable 4 CCP1CON<3:0> 0 TMR1H TMR1L 1 TMR3H TMR3L T3CCP1 0 Special Event Trigger (Timer1/Timer3 Reset, A/D Trigger) 1 T3CCP2 Set CCP2IF Comparator CCPR2H CCP2 pin Compare Match Output Logic 4 CCPR2L S Q R TRIS Output Enable CCP2CON<3:0> 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 145 PIC18F2XK20/4XK20 表 11-3: Name INTCON キャプチャ、コンペア、タイマ 1、タイマ 3 関連レジスタ Bit 7 Bit 6 Bit 5 GIE/GIEH PEIE/GIEL TMR0IE Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 IPEN SBOREN — RI TO PD POR BOR 56 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 60 PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 60 IPR2 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP 60 RCON TRISB PORTB Data Direction Control Register 60 TRISC PORTC Data Direction Control Register 60 TMR1L Timer1 Register, Low Byte 58 TMR1H Timer1 Register, High Byte 58 T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 58 TMR3H Timer3 Register, High Byte 59 TMR3L Timer3 Register, Low Byte 59 T3CON RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 59 CCPR1L Capture/Compare/PWM Register 1, Low Byte 59 CCPR1H Capture/Compare/PWM Register 1, High Byte 59 CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 59 CCPR2L Capture/Compare/PWM Register 2, Low Byte 59 CCPR2H Capture/Compare/PWM Register 2, High Byte 59 CCP2CON — — DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 59 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットはキャプチャ / コンペア、タイマ 1 または タイマ 3 では使用しません。 注 1: PIC18F2XK20 デバイスには実装されていません。 DS41303E_JP - ページ 146 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 11.4 PWM モード PWM モードは、CCP モジュールの場合は CCP2 ピ ンに、ECCP モジュールの場合は P1A から P1D ピ ンにパルス幅変調信号を出力します。以下、変調信 号の出力ピンを CCPx ピンと表記します。デュー ティ サイクル、周期、分解能は次のレジスタで設 定します。 • PR2 • T2CON • CCPRxL • CCPxCON PWM 出力 ( 図 11-4) には、タイム ベース ( 周期 ) および出力が High になる時間 ( デューティ サイク ル ) の 2 つの要素があります。 図 11-4: CCP の PWM 出力 Period Pulse Width TMR2 = PR2 TMR2 = CCPRxL:DCxB<1:0> TMR2 = 0 パルス幅変調 (PWM) モードでは、CCP モジュール が CCPx ピンに最大分解能 10 ビットの PWM 信号 を出力します。CCPx ピンは PORT データ ラッチと 多重化されているため、このピンの TRIS ビットを クリアして CCPx ピンを出力に設定することができ ます。 注: CCPxCON レジスタをクリアすると、CCPx モジュールによる CCPx ピンの制御が解除 されます。 PWM 動作の概略ブロック図を図 11.1.1 に示します。 PWM 信号の代表的な波形を図 11-4 に示します。 CCP モジュールを PWM モードで動作させる手順に ついては、11.4.7 項「PWM 動作のセットアップ」 を参照してください。 図 11-3: PWM 動作の概略ブロック図 DCxB<1:0> Duty Cycle Registers CCPRxL CCPRxH(2) (Slave) CCPx R Comparator TMR2 (1) Q S TRIS Comparator PR2 注 1: 2: Clear Timer2, toggle CCPx pin and latch duty cycle 8 ビットのタイマ レジスタ TMR2 と、2 ビット の内部システム クロック (FOSC) または 2 ビット のプリスケーラを連結して 10 ビットのタイム ベースを生成します。 PWM モードでは、CCPRxH は読み出し専用レジ スタになります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 147 PIC18F2XK20/4XK20 11.4.1 PWM の周期 11.4.2 PWM の周期は、タイマ 2 の PR2 レジスタで設定し ます。PWMの周期の計算には、 式11-1を使用します。 式 11-1: PWM の周期 PWM Period = PR2 + 1 4 T OSC (TMR2 Prescale Value) 注 : TOSC = 1/FOSC TMR2 と PR2 が等しくなると、直後のインクリメン ト サイクルで次の 3 つのイベントが発生します。 • TMR2 がクリアされる • CCPx ピンがセットされる ( 例外 : PWM のデュー ティ サイクル = 0% の場合、ピンはセットされま せん。) • CCPRxL の PWM デューティ サイクルが CCPRxH にラッチされる 注: PWM のデューティ サイクル PWM のデューティ サイクルは複数のレジスタにま たがる 10 ビットの値を書き込んで指定します。書 き込む場所は、CCPRxL レジスタと CCPxCON レジ スタの DCxB<1:0> ビットです。CCPRx には上位 8 ビット、CCPxCON レジスタの DCxB<1:0> ビット には下位 2 ビットを書き込みます。CCPRxL および CCPxCON レジスタの DCxB<1:0> ビットには、いつ 書き込んでもかまいません。周期が完了するまで ( すなわち PR2 レジスタと TMR2 レジスタが一致す るまで )、CCPRxH レジスタにはデューティ サイク ル値がラッチされません。PWM の使用中は、 CCPRxH レジスタは読み出し専用になります。 PWM のパルス幅の計算には、 式 11-2 を使用します。 PWM のデューティ サイクル比の計算には、式 11-3 を使用します。 式 11-2: パルス幅 Pulse Width = CCPRxL:DCxB<1:0> PWM の周波数は、タイマ 2 のポストス ケーラ (14.1 項「タイマ 2 の動作」参照 ) に関係なく決まります。 T OSC (TMR2 Prescale Value) 式 11-3: デューティ サイクル比 CCPRxL:DCxB<1:0> - Duty Cycle Ratio = ---------------------------------------------------------4 PR2 + 1 CCPRxH レジスタと 2 ビットの内部ラッチが PWM デューティ サイクルの 2 重バッファとして使用さ れます。この 2 重バッファは、グリッチのない PWM 動作に欠かせません。 8 ビットのタイマ レジスタ TMR2 と、2 ビットの内 部システム クロック (FOSC)、または 2 ビットのプ リスケーラを連結して 10 ビットのタイム ベースを 生成します。タイマ 2 のプリスケーラが 1:1 に設定 されている場合は、システム クロックが使用され ます。 10 ビットのタイム ベースが CCPRxH および 2 ビッ トのラッチと一致すると、CCPx ピンがクリアされ ます ( 図 11-3 参照 )。 DS41303E_JP - ページ 148 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 11.4.3 PWM の分解能 式 11-4: 分 解 能 は、あ る 一 定 の 周 期 に 対 し て 設 定 可 能 な デューティ サイクルの数を決定します。例えば分解 能 10 ビットの場合は 1024 通りのデューティ サイク ル、分解能 8 ビットの場合は 256 通りのデューティ サイクルを設定できます。 log 4 PR2 + 1 - bits Resolution = ----------------------------------------log 2 注: PR2 が 255 の場合、PWM の最大分解能は 10 ビット です。式 11-4 に示すように、分解能は PR2 レジス タの値の関数になります。 表 11-4: Timer Prescaler (1, 4, 16) PR2 Value Maximum Resolution (bits) 2.44 kHz 9.77 kHz 39.06 kHz 156.25 kHz 312.50 kHz 416.67 kHz 16 4 1 1 1 1 FFh FFh FFh 3Fh 1Fh 17h 10 10 10 8 7 6.58 19.53 kHz 78.12 kHz PWM の周波数と分解能の例 (FOSC = 20 MHz) PWM Frequency Timer Prescale (1, 4, 16) PR2 Value Maximum Resolution (bits) 表 11-6: パルス幅の値が周期より大きい場合、割 り当てられた PWM ピンは変化しなくな ります。 PWM の周波数と分解能の例 (40 MHz の場合 ) PWM Frequency 表 11-5: PWM 分解能 1.22 kHz 4.88 kHz 156.3 kHz 208.3 kHz 16 4 1 1 1 1 0xFF 0xFF 0xFF 0x3F 0x1F 0x17 10 10 10 8 7 6.6 PWM の周波数と分解能の例 (FOSC = 8 MHz) PWM Frequency Timer Prescale (1, 4, 16) PR2 Value Maximum Resolution (bits) 2009 Microchip Technology Inc. 1.22 kHz 4.90 kHz 19.61 kHz 76.92 kHz 153.85 kHz 200.0 kHz 16 4 1 1 1 1 0x65 0x65 0x65 0x19 0x0C 0x09 8 8 8 6 5 5 Preliminary DS41303E_JP - ページ 149 PIC18F2XK20/4XK20 11.4.4 11.4.7 電源管理モード時の動作 スリープ モード時は TMR2 レジスタがインクリメ ントせず、モジュールの状態は変化しません。CCPx ピンが値を駆動している場合は、その値が駆動され たままになります。デバイスがウェイクアップする と、TMR2 はスリープ前の状態からインクリメント を再開します。 CCP モジュールを PWM 動作用に設定するには、 次の手順を実行します。 1. 2. PRI_IDLE モードの場合は、プライマリ クロックが 引き続き CCP モジュールにクロックを供給します。 それ以外の電源管理モードでは、選択した電源管理 モードのクロックによってタイマ 2 が駆動されま す。これらのモードのクロック周波数は、ほとんど の場合プライマリ クロック周波数とは異なります。 3. 11.4.5 5. システム クロック周波数の変更 PWM の周波数はシステム クロック周波数から生成 されます。システム クロック周波数を変更すると、 PWM の周波数も変化します。詳細は、2.0 項「オシ レータ モジュール ( フェイルセーフ クロック モニ タ機能付き )」を参照してください。 11.4.6 4. 6. リセットの影響 何らかのリセットが発生すると、すべてのポートが 強制的に入力モードとなり、CCP レジスタはリセッ ト状態に戻ります。 7. DS41303E_JP - ページ 150 PWM 動作のセットアップ Preliminary 対応する TRIS ビットをセットして PWM ピン (CCPx) の出力ドライバを無効にします。 ECCP モジュールの場合のみ、PSTRCON レジ スタの該当する出力先設定ビットをセットし て、目標とする PWM 出力先 (P1A から P1D) を 選択します。 PR2 レジスタに値を格納して PWM 周期を設定 します。 CCPxCON レジスタに適切な値を格納して、 CCP モジュールを PWM モードに設定します。 CCPRxL レジスタおよび CCPxCON レジスタの CCPx ビットに値を格納して、PWM のデュー ティ サイクルを設定します。 タイマ 2 を設定後、起動します。 • PIR1 レジスタの割り込みフラグ ビット TMR2IF をクリアします。 • T2CON レジスタの T2CKPS ビットに値を格 納してタイマ 2 のプリスケール値を設定し ます。 • T2CON レジスタの TMR2ON ビットをセット してタイマ 2 を有効にします。 新しい PWM サイクルの開始後に PWM 出力を 有効にします。 • タイマ 2 がオーバーフローする (PIR1 レジス タの TMR2IF ビットがセットされる ) まで待 ちます。 • 対応する TRIS ビットをクリアして CCPx ピ ンの出力ドライバを有効にします。 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 11-7: Name INTCON PWM およびタイマ 2 の関連レジスタ Bit 7 Bit 6 GIE/GIEH PEIE/GIEL Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 57 IPEN SBOREN — RI TO PD POR BOR 56 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 RCON TRISB PORTB Data Direction Control Register 60 TRISC PORTC Data Direction Control Register 60 TMR2 Timer2 Register 58 PR2 Timer2 Period Register 58 T2CON — T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 58 CCPR1L Capture/Compare/PWM Register 1, Low Byte 59 CCPR1H Capture/Compare/PWM Register 1, High Byte 59 CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCPR2L Capture/Compare/PWM Register 2, Low Byte CCPR2H Capture/Compare/PWM Register 2, High Byte CCP2CON ECCP1AS PWM1CON — — ECCPASE ECCPAS2 PRSEN PDC6 CCP1M3 CCP1M2 CCP1M1 CCP1M0 59 59 59 DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 59 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 59 PDC5 PDC4 PDC3 PDC2 PDC PDC0 59 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは PWM またはタイマ 2 では使用しません。 注 1: PIC18F2XK20 デバイスには実装されていません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 151 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 152 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 12.0 タイマ 0 モジュール T0CON レジスタ ( レジスタ 12-1) は、プリスケーラ の選択をはじめとするモジュールのあらゆる機能 を制御します。読み出しおよび書き込み可能なレジ スタです。 タイマ 0 モジュールには以下の機能があります。 • ソフトウェアによって選択可能な、8 ビットおよ び 16 ビット モードのタイマまたはカウンタ動作 • 読み出しおよび書き込み可能なレジスタ • ソフトウェアによってプログラム可能な 8 ビット 専用プリスケーラ • 選択可能なクロック ソース ( 内部または外部 ) • 外部クロック用エッジ選択 • オーバーフロー割り込み レジスタ 12-1: 8 ビット モードで動作するタイマ 0 モジュールの概 略ブロック図を図 12-1 に示します。図 12-2 は、16 ビット モードで動作するタイマ 0 モジュールの概略 ブロック図です。 T0CON: タイマ 0 制御レジスタ R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 TMR0ON T08BIT T0CS T0SE PSA T0PS2 T0PS1 T0PS0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 TMR0ON: タイマ 0 オン / オフ制御ビット 1 = タイマ 0 が有効 0 = タイマ 0 を停止 ビット 6 T08BIT: タイマ 0 8 ビット /16 ビット制御ビット 1 = タイマ 0 を 8 ビット タイマ / カウンタに設定 0 = タイマ 0 を 16 ビット タイマ / カウンタに設定 ビット 5 T0CS: タイマ 0 クロック ソース選択ビット 1 = T0CKI ピンの遷移 0 = 内部命令サイクル クロック (CLKOUT) ビット 4 T0SE: タイマ 0 ソース エッジ選択ビット 1 = T0CKI ピンの High から Low への遷移でインクリメント 0 = T0CKI ピンの Low から High への遷移でインクリメント ビット 3 PSA: タイマ 0 プリスケーラ割り当てビット 1 = タイマ 0 プリスケーラを割り当てない。タイマ 0 クロックはプリスケーラを迂回して入力 0 = タイマ 0 プリスケーラを割り当てる。タイマ 0 クロックにはプリスケーラ出力を入力 ビット 2-0 T0PS<2:0>: タイマ 0 プリスケール値 ( 分周比 ) 選択ビット 111 = 1:256 110 = 1:128 101 = 1:64 100 = 1:32 011 = 1:16 010 = 1:8 001 = 1:4 000 = 1:2 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 153 PIC18F2XK20/4XK20 12.1 タイマ 0 の動作 12.2 タイマ 0 はタイマまたはカウンタとして動作しま す。モードは T0CON レジスタの T0CS ビットによっ て選択します。タイマ モード (T0CS = 0) のデフォ ルト設定では、異なるプリスケール値が選択されて いない限り (12.3 項「プリスケーラ」参照 )、モジュー ル が ク ロ ッ ク ご と に イ ン ク リ メ ン ト さ れ ま す。 TMR0 レジスタへの書き込み直後の 2 命令サイクル 間はタイマ 0 のインクリメントが禁止されます。こ の制約を回避するには、TMR0 レジスタに書き込む 値をあらかじめ調整して、スキップされるインクリ メント回数を補ってください。 T0CS ビットをセットすると (= 1)、カウンタ モード が選択されます。このモードの場合、RA4/T0CKI ピ ンの立ち上がりエッジまたは立ち下がりエッジの いずれかでタイマ 0 がインクリメントします。どち らのエッジでインクリメントするかは、T0CON レ ジスタのタイマ 0 ソース エッジ選択ビット T0SE に よって決まります。このビットをクリアすると、立 ち上がりエッジが選択されます。外部クロック入力 の制限については、この後詳しく説明します。 16 ビット モードにおけるタイマ 0 の 読み出しと書き込み 16 ビット モードで使用する TMR0H はタイマ 0 の 実際の上位バイトではなくバッファを介した値で す。実際のタイマ 0 上位バイトは、直接読み出しあ るいは書き込むことができません ( 図 12-2 参照 )。 TMR0H には、TMR0L の読み出しと同時に、タイマ 0 の上位バイトの内容が格納されます。この動作に より、読み出された上位、下位バイトが有効である かを検証せずに、タイマ 0 の 16 ビットをすべて読 み出すことができます。このような同時読み出しで はなく、上位、下位バイトを連続して読み出すと、 その間のロールオーバーによって正しい値が得ら れない場合があります。 同様に、 タイマ 0 上位バイトへの書き込みも TMR0H バッファ レジスタを介して実行する必要がありま す。TMR0H に書き込んでも、直接タイマ 0 が変化 するわけではありません。タイマ 0 の上位バイト は、TMR0L への書き込みと同時に、TMR0H の内容 によって書き換えられます。これによって、タイマ 0 の全 16 ビットを一度に更新できます。 タイマ 0 は外部クロック ソースによって駆動でき ます。ただし、外部クロックを内部位相クロック (TOSC) と確実に同期させるために、いくつかの要件 を満たす必要があります ( 表 26-11 参照 )。同期確立 からタイマ / カウンタのインクリメント開始までに は遅延があります。 図 12-1: タイマ 0 のブロック図 (8 ビット モード ) FOSC/4 0 0 1 T0CKI pin T0SE T0CS Programmable Prescaler 1 Sync with Internal Clocks Set TMR0IF on Overflow (2 TCY Delay) 8 3 T0PS<2:0> 8 PSA 注: TMR0L Internal Data Bus リセット時、タイマ 0 はプリスケール値を最大に設定した、T0CKI をクロック入力とする 8 ビット モードになります。 DS41303E_JP - ページ 154 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 12-2: タイマ 0 のブロック図 (16 ビット モード ) FOSC/4 0 0 Sync with Internal Clocks 1 Programmable Prescaler T0CKI pin T0SE T0CS 1 TMR0 High Byte TMR0L 8 Set TMR0IF on Overflow (2 TCY Delay) 3 Read TMR0L T0PS<2:0> Write TMR0L PSA 8 8 TMR0H 8 8 Internal Data Bus 注: 12.3 リセット時、タイマ 0 はプリスケール値を最大に設定した、T0CKI をクロック入力とする 8 ビット モードになります。 12.3.1 プリスケーラ タイマ 0 モジュールのプリスケーラとして 8 ビット のカウンタを使用できます。プリスケーラは直接読 み出したり書き込むことができません。プリスケー ラの割り当てやプリスケール値 ( 分周比 ) は、 T0CON レジスタの PSA および T0PS<2:0> ビットによって設 定します。 PSA ビットをクリアすると、タイマ 0 モジュールに プリスケーラが割り当てられます。プリスケーラを 割り当てると、1:2 から 1:256 までのプリスケール 値 ( 分周比 ) を 2 のべき乗の刻みで選択できるよう になります。 タイマ 0 モジュールにプリスケーラが割り当てられ る と、TMR0 レ ジ ス タ に 書き 込 む す べ て の 命 令 (CLRF TMR0、MOVWF TMR0、BSF TMR0 など ) で、 プリスケーラのカウントがクリアされます。 注: タイマ0にプリスケーラを割り当てている 場合に TMR0 への書き込みを実行すると、 プリスケーラのカウントがクリアされま すが、プリスケーラの割り当ては変更され ません。 表 12-1: Name プリスケーラの割り当てはソフトウェアで完全に 制御されます ( プログラム実行中に「その場」で変 更できます )。 12.4 タイマ 0 割り込み TMR0 レジスタが、8 ビット モードでは FFh から 00h に、 16 ビット モードでは FFFFh から 0000h モー ドにオーバーフローすると TMR0 割り込みが発生 します。このオーバーフローによってフラグ ビッ ト TMR0IF がセットされます。INTCON レジスタの TMR0IE ビットをクリアすると、この割り込みをマ スクできます。この割り込みを再び許可する前に、 割り込みサービス ルーチン内で TMR0IF ビットを クリアしておく必要があります。 スリープ モードではタイマ 0 が停止するため、 TMR0割り込みによってプロセッサをスリープから ウェイクアップすることはできません。 タイマ 0 関連レジスタ Bit 7 Bit 6 Bit 5 TMR0L Timer0 Register, Low Byte TMR0H Timer0 Register, High Byte INTCON GIE/GIEH PEIE/GIEL TMR0IE T0CON TMR0ON TRISA プリスケーラ割り当ての切り替え RA7 (1) Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page 58 58 INT0IE RBIE TMR0IF INT0IF RBIF 57 T08BIT T0CS T0SE PSA T0PS2 T0PS1 T0PS0 58 RA6(1) RA5 RA4 RA3 RA2 RA1 RA0 60 記号の説明 : 網掛けのビットはタイマ 0 では使用しません。 注 1: PORTA<7:6> およびこれらに対応する方向ビットは、使用する各種プライマリ オシレータ モードに基 づいて、個々にポート ピンとして設定します。無効の場合は「0」と読み出されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 155 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 156 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 13.0 タイマ 1 モジュール タイマ 1 タイマ / カウンタ モジュールには以下の機 能があります。 • ソフトウェアによって選択可能な、16 ビット モードのタイマまたはカウンタ動作 • 読み出し / 書き込み可能な 8 ビット レジスタ (TMR1H および TMR1L) • 選択可能なクロック ソース ( 内部または外部 )、 およびタイマ 1 オシレータに対するオプション • オーバーフロー割り込み • CCP 特殊イベント トリガによるリセット • デバイス クロック ステータス フラグ (T1RUN) タイマ 1 モジュールの概略ブロック図を図 13-1 に 示します。読み出し / 書き込みモードで動作するモ ジュールのブロック図を図 13-2 に示します。 レジスタ 13-1: モジュールにはクロック供給の選択肢を増やすた めに専用の低消費電力オシレータ ( タイマ 1 オシ レータ ) が実装されています。タイマ 1 オシレータ は、電源管理モード動作時に、マイクロコントロー ラの低消費電力クロック ソースとしても使用でき ます。 また、最低限の外付け部品およびコードの追加に よって、アプリケーションにリアルタイム クロッ ク (RTC) 機能を付加することも可能です。 タイマ 1 は制御レジスタ T1CON ( レジスタ 13-1) に よって制御します。このレジスタにはタイマ 1 オシ レータのイネーブル ビット (T1OSCEN) も含まれま す。タイマ 1 の有効または無効は、T1CON レジス タの制御ビット TMR1ON をセットまたはクリアす ることで設定します。 T1CON: タイマ 1 制御レジスタ R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS bit 7 R/W-0 TMR1ON bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 ビット 7 ビット 6 ビット 5-4 ビット 3 ビット 2 ビット 1 ビット 0 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 RD16: 16 ビット読み出し / 書き込みモード イネーブル ビット 1 = 1 回の 16 ビット動作によるタイマ 1 レジスタの読み出し / 書き込みが有効 0 = 2 回の 8 ビット動作によるタイマ 1 レジスタの読み出し / 書き込みが有効 T1RUN: タイマ 1 システム クロック ステータス ビット 1 = メイン システム クロックをタイマ 1 オシレータから供給 0 = メイン システム クロックをタイマ 1 オシレータ以外から供給 T1CKPS<1:0>: タイマ 1 入力クロック プリスケール値 ( 分周比 ) 選択ビット 11 = 1:8 10 = 1:4 01 = 1:2 00 = 1:1 T1OSCEN: タイマ 1 オシレータ イネーブル ビット 1 = タイマ 1 オシレータが有効 0 = タイマ 1 オシレータを停止 消費電力低減のため、オシレータのインバータおよびフィードバック抵抗を遮断 T1SYNC: タイマ 1 外部クロック入力同期選択ビット TMR1CS = 1 のとき : 1 = 外部クロック入力を同期させない 0 = 外部クロック入力を同期させる TMR1CS = 0 のとき : このビットは無視。TMR1CS = 0 のとき、タイマ 1 は内部クロックを使用します。 TMR1CS: タイマ 1 クロック ソース選択ビット 1 = RC0/T1OSO/T13CKI ピンから入力される外部クロック ( 立ち上がりエッジ ) 0 = 内部クロック (FOSC/4) TMR1ON: タイマ 1 オン ビット 1 = タイマ 1 が有効 0 = タイマ 1 を停止 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 157 PIC18F2XK20/4XK20 13.1 タイマ 1 の動作 (FOSC/4) ごとにインクリメントされます。セットし た場合は、タイマ 1 の外部クロック入力またはタイ マ 1 オシレータ ( 有効にしている場合 ) のいずれかの 立ち上がりエッジごとにインクリメントされます。 タイマ 1 は、次のいずれかのモードで動作します。 • タイマ • 同期カウンタ • 非同期カウンタ タイマ 1 オシレータを有効にした場合、RC1/T1OSI および RC0/T1OSO/T13CKI ピンに関連するデジタ ル回路はオフされます。これは、TRISC<1:0> の値 が無視され、ピンが「0」と読まれることを意味し ます。 動作モードは、T1CON レジスタのクロック選択ビッ ト TMR1CS によって決まります。TMR1CS をクリア した場合 (= 0)、タイマ 1 は内部の命令サイクル 図 13-1: タイマ 1 のブロック図 Timer1 Oscillator Timer1 Clock Input 1 On/Off T1OSO/T13CKI 1 FOSC/4 Internal Clock T1OSI Synchronize Prescaler 1, 2, 4, 8 0 Detect 0 2 T1OSCEN (1) Sleep Input TMR1CS Timer1 On/Off T1CKPS<1:0> T1SYNC TMR1ON Clear TMR1 (CCP Special Event Trigger) 注 1: Set TMR1IF on Overflow TMR1 High Byte TMR1L イネーブル ビット T1OSCEN をクリアすると、消費電力低減のため、インバータおよびフィードバック抵抗が 遮断されます。 図 13-2: タイマ 1 のブロック図 (16 ビット読み出し / 書き込みモード ) Timer1 Oscillator Timer1 Clock Input 1 T1OSO/T13CKI 1 FOSC/4 Internal Clock T1OSI Synchronize Prescaler 1, 2, 4, 8 0 Detect 0 2 (1) T1OSCEN T1CKPS<1:0> Sleep Input TMR1CS Timer1 On/Off T1SYNC TMR1ON Clear TMR1 (CCP Special Event Trigger) TMR1 High Byte TMR1L 8 Set TMR1IF on Overflow Read TMR1L Write TMR1L 8 8 TMR1H 8 8 Internal Data Bus 注 1: イネーブル ビット T1OSCEN をクリアすると、消費電力低減のため、インバータおよびフィードバック抵抗が 遮断されます。 DS41303E_JP - ページ 158 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 13.2 13.2.3 クロック ソースの選択 クロック ソースの選択には、T1CON レジスタの TMR1CS ビットを使用します。TMR1CS = 0 の場合、 クロック ソースは FOSC/4 となります。TMR1CS = 1 の場合、クロック ソースは外部から供給されます。 13.2.1 内部クロック ソース 内部クロック ソースを選択した場合、 TMR1H:TMR1L レジスタ ペアは、タイマ 1 のプリ スケール値で決まるTCY の倍数単位でインクリメン トします。 13.2.2 外部クロック ソース 外部クロック ソースを選択した場合、タイマ 1 モ ジュールをタイマまたはカウンタとして使用でき ます。 カウンタとして使用する場合、タイマ 1 は外部ク ロック入力 T1CKI の立ち上がりエッジでインクリ メントします。また、カウンタ モードのクロック は、マイクロコントローラのシステム クロックに 同期させることも、非同期で動作させることもでき ます。 外部クロック オシレータが必要な場合 ( およびマイ クロコントローラが CLKOUT なしで INTOSC を使 用している場合 )、LP オシレータをタイマ 1 のク ロック ソースに使用できます。 注: カウンタ モードでは、次のいずれかの状態 が 1 つ以上発生してからカウンタが立ち下 がりエッジを検出すると、立ち上がりエッ ジでのインクリメントが開始されます ( 図 13-3 参照 )。 • POR または BOR 後のタイマ 1 有効化 • TMR1H または TMR1L への書き込み • T1CKI が High の間にタイマ 1 を無効化 し (TMR1ON = 0)、T1CKI が Low の間 にタイマ 1 を有効化 (TMR1ON = 1) 図 13-3: 非同期カウンタ モードにおける タイマ 1 の読み出し / 書き込み タイマが外部の非同期クロックで動作している間 は、TMR1H または TMR1L の正しい読み出し動作 が ( ハードウェアによって ) 保証されます。ただし、 16 ビット タイマを 2 つの 8 ビット値として読み出 す場合、2 回の読み出しの間にタイマがオーバーフ ローする可能性があるため注意が必要です。 書き込みの場合は、タイマを停止してから正しい値 を書き込むことを推奨します。レジスタがインクリ メントしている間にタイマ レジスタへ書き込むと、 書き込みの競合が発生する場合があります。この場 合、TMR1H:TMR1L レジスタ ペアが予期せぬ値と なることがあります。 13.3 タイマ 1 プリスケーラ タイマ 1 のプリスケーラでは、クロック入力の 1/1、 1/2、1/4、1/8 倍の 4 通りの分周比を設定できます。 プリスケール カウンタは、T1CON レジスタの T1CKPS ビットで制御します。プリスケール カウン タは直接読んだり書き込むことができませんが、 TMR1H または TMR1L への書き込み時にクリアされ ます。 13.4 非同期カウンタ モードのタイマ 1 の 動作 T1CON レジスタの制御ビット T1SYNC をセットし た場合、外部クロック入力は同期化されません。タ イマは、内部位相クロックに対して非同期にインク リメントを継続します。タイマはスリープ時にも動 作を継続するため、オーバーフロー割り込みを生成 してプロセッサをウェイクアップできます。ただ し、タイマの読み出し / 書き込みを実行する場合は、 ソフトウェアに特別な注意を払う必要があります (13.2.3 項「非同期カウンタ モードにおけるタイマ 1 の読み出し / 書き込み」参照 )。 注 1: 動作を同期モードから非同期モードに 切り替える際は、インクリメントがス キップされる可能性があります。非同期 モードから同期モードに切り替える際 は、インクリメントが 1 回多く実行され る場合があります。 タイマ 1 のインクリメント エッジ T1CKI = 1 when TMR1 Enabled T1CKI = 0 when TMR1 Enabled 注 1: 2: 矢印は、カウンタがインクリメントする位置を示しています。 カウンタ モードでは、カウンタがクロックの立ち下がりエッジを 1 回検出してから、立ち上がりエッジによる インクリメントが開始されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 159 PIC18F2XK20/4XK20 13.5 タイマ 1 (16 ビット読み出し / 書き込みモード ) 表 13-1: Osc Type タイマ 1 には、16 ビットの読み出し / 書き込みを実 行するための設定が可能です ( 図 13-2 参照 )。 T1CON レ ジ ス タ の 制 御 ビ ッ ト RD16 を セ ッ ト す る と、 TMR1H のアドレスがタイマ 1 の上位バイトを格納 するバッファ レジスタに対応づけられます。 TMR1L を読み出すと、タイマ 1 の上位バイトの内 容が、このタイマ 1 上位バイト バッファに格納さ れます。この動作により、タイマ 1 の全 16 ビット を正確に読み出すことができます。下位バイトの前 に読み出された上位バイトが、2 回の読み出しの間 のロールオーバーまたはキャリーによって無効に なっていないかを検証する必要がありません。 TMR1H に書き込んでも、直接タイマ 1 が変化する わけではありません。タイマ 1 の上位バイトは、 TMR1L への書き込みと同時に、TMR1H の内容に よって書き換えられます。これによって、タイマ 1 の全 16 ビットを一度に更新できます。 このモードではタイマ 1 の上位バイトを直接読み出 し / 書き込むことができません。すべての読み出し / 書き込み動作は、タイマ 1 上位バイト バッファ レ ジスタを介して実行します。TMR1H に書き込んで も、タイマ 1 のプリスケーラはクリアされません。 プリスケーラがクリアされるのは TMR1L に書き込 んだ場合のみです。 13.6 タイマ 1 オシレータ オンチップの水晶振動子オシレータ回路は、T1OSI ( 入力 ) および T1OSO ( アンプ出力 ) 間に接続され ています。T1CON レジスタのタイマ 1 オシレータ イネーブル ビットT1OSCENをセットすると有効に なります。オシレータは公称周波数 32 kHz の水晶 振動子を用いた低消費電力回路です。すべての電源 管理モードで動作を継続します。代表的な LP オシ レータ回路を図 13-4 に示します。表 13-1 は、タイ マ 1 オシレータ用のコンデンサを選択するための表 です。 タイマ 1 オシレータが正常に起動するまで、ソフ トウェアによって遅延時間を確保する必要があり ます。 図 13-4: タイマ1オシレータのコンデンサ選択 LP Freq C1 32 kHz 27 pF(1) C2 27 pF(1) 注 1: これらの値は、オシレータ回路の有効性 検証に着手する際の、最初の手がかりと して示したものです。 2: コンデンサ容量を大きくするとオシ レータの安定性は増しますが、起動時間 が長くなります。 3: 水晶振動子には、それぞれ固有の特性が あります。外付け部品の適切な値に関し ては水晶振動子のメーカーに問い合わ せてください。 4: コンデンサの値は、あくまで設計上の参 考値です。 13.6.1 タイマ 1 のクロック ソースとしての 利用 タイマ 1 オシレータは、電源管理モードにおけるク ロック ソースとしても使用できます。OSCCON レ ジスタのクロック選択ビット SCS<1:0> を「01」に 設定することで、デバイスは SEC_RUN モードに移 行し、CPU と周辺機能の両方のクロックがタイマ 1 オシレータから供給されます。OSCCON レジスタ の IDLEN ビットをクリアした状態で SLEEP 命令を 実行すると、デバイスは SEC_IDLE モードに移行し ます。詳細は、3.0 項「電源管理モード」で説明し ています。 タイマ 1 オシレータをクロック ソースに使用すると きは、常に T1CON レジスタのタイマ 1 システム ク ロック ステータス フラグ T1RUN がセットされま す。ここからコントローラの現在のクロック供給 モードを判断できます。また、フェイルセーフ ク ロック モニタが使用しているクロック ソースも知 ることができます。クロック モニタを有効にして いるときに、クロックを供給中のタイマ 1 オシレー タに障害が発生した場合、T1RUN ビットをポーリ ングすれば、クロックがタイマ 1 オシレータあるい は他のソースのいずれから供給されているかがわ かります。 タイマ 1LP オシレータの外付け部品 C1 27 pF PIC® MCU T1OSI XTAL 32.768 kHz T1OSO C2 27 pF 注: コンデンサの選択に関する詳細は、表 13-1 の注 を参照してください。 DS41303E_JP - ページ 160 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 13.6.2 13.7 タイマ 1 の低消費電力オプション タイマ 1 割り込み タイマ 1 オシレータは、デバイス構成の変更により 2 つの異なる消費電力レベルで動作させることがで きます。 CONFIG3Hレジスタの構成ビットLPT1OSC をセットすると、タイマ 1 オシレータは低消費電力 モードで動作します。LPT1OSC がセットされてい ない場合、タイマ 1 の消費電力レベルが高くなりま す。特定のモードの消費電力は、デバイスの動作 モードにかかわらずほぼ一定です。タイマ 1 のデ フォルト設定は、消費電力の大きいモードです。 TMR1 レジスタ ペア (TMR1H:TMR1L) は、0000h か ら FFFFh までインクリメントすると、0000h にロー ルオーバーします。タイマ 1 割り込みを許可してい る場合、オーバーフロー時に割り込みが発生し、 PIR1 レジスタの割り込みフラグ ビット TMR1IF が ラッチされます。この割り込みは、PIE1 レジスタ の割り込みイネーブル ビット TMR1IE をセット / ク リアすることで許可 / 禁止を設定できます。 低消費電力モードは干渉を受けやすいため、ノイズ の大きい環境ではオシレータが若干不安定になる 可能性があります。したがって、低消費電力オプ ションは、消費電力が重要な設計課題となる、低ノ イズのアプリケーションに適しています。 13.8 13.6.3 タイマ 1 オシレータのレイアウト上の 注意点 タイマ 1 オシレータ回路は、動作中にごくわずかし か電力を消費しません。消費電力が小さいというこ とは、近接する信号の高速な遷移の影響を受けやす くなることを意味します。 したがって、図 13-4 に示すオシレータ回路は、マ イクロコントローラのできるだけ近傍に配置して ください。また、オシレータ回路の領域を VSS また は VDD 以外の配線が横切らないようにします。 高速で動作する回路をオシレータのそばに配置し なければならない場合 ( 出力コンペアまたは PWM モードでの CCP1 ピン、または OSC2 ピンを使用す るプライマリ オシレータなど )、図 13-5 に示すよう にオシレータ回路の周囲にグランドに接続した ガード リングを設けるとよいでしょう。この方法 は、片面のみの PCB またはグランド プレーンで使 用する場合に適用されます。 図 13-5: CCP 特殊イベント トリガによる タイマ 1 のリセット CCP モジュールのいずれかがタイマ 1 を使用し、コ ンペア モードで特殊イベント トリガを発生する設 定の場合(CCP1M<3:0>またはCCP2M<3:0> = 1011)、 このトリガ信号によってタイマ 1 がリセットされま す。また、A/D モジュールが有効な場合、CCP2 か らのトリガによって A/D 変換を起動することも可能 です (11.3.4 項「特殊イベント トリガ」参照 )。 この機能を使用する場合、モジュールをタイマまた は同期カウンタのいずれかに設定する必要があり ます。この機能における CCPRH:CCPRL レジスタ ペアは、実質的にタイマ 1 の周期レジスタとして機 能します。 タイマ 1 が非同期カウンタ モードで動作している 場合、このリセット機能は利用できません。 タイマ 1 への書き込みと特殊イベント トリガが競 合した場合は、書き込みが優先されます。 注: CCP2モジュールから特殊イベント トリガ が発生した場合、PIR1 レジスタの割り込 みフラグ ビット TMR1IF はセットされま せん。 グランド接続したガードリングで 囲まれたオシレータ回路 VDD VSS OSC1 OSC2 RC0 RC1 RC2 注 : 寸法比どおりの図ではありません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 161 PIC18F2XK20/4XK20 13.9 タイマ 1 のリアルタイム クロック (RTC) としての利用 タイマ1に外部LPオシレータを接続すると(上記13.6 項「タイマ 1 オシレータ」で述べたようなもの )、必 要に応じてアプリケーションに RTC 機能を付加で きます。安価な腕時計用の水晶振動子から正確なタ イム ベースを供給し、時間を計算する数行のアプ リケーションを追加するだけで実現可能です。電源 としてバッテリまたはスーパーキャパシタを用い、 スリープ モード中に動作させる場合は、独立した RTC デバイスやバッテリ バックアップは一切不要 です。 例 13-1 に示すアプリケーション コード ルーチン RTCisr は、割り込みサービス ルーチンによって 1 秒間隔でカウンタをインクリメントする簡単な方 法を示したものです。TMR1 レジスタ ペアのインク リメントによってオーバーフロー割り込みを生成 して、このルーチンを呼び出します。ルーチン内で は「秒」のカウンタを 1 だけインクリメントしま す。「分」または「時」のカウンタは、それより下 位のカウンタのオーバーフローによってインクリ メントします。 例 13-1: レジスタ ペアは 16 ビット幅であるため、32.768 kHz のクロック ソースの場合、オーバーフローするま でに 2 秒かかります。これを必要な 1 秒間隔で強制 的にオーバーフローさせるには、あらかじめカウン タに一定の値を格納しておく必要があります。最も 簡単な方法は、TMR1H の MSb を BSF 命令で設定 します。TMR1L レジスタは、あらかじめ値を格納 したり変更できないことに注意してください。この ような操作を実行するとサイクル数が増えるとと もに誤差が累積する場合があります。 この方法を適切に動作させるには、RTCinit ルー チンに示したように、タイマ 1 を非同期モードに設 定し、タイマ 1 オーバーフロー割り込みを許可する (PIE1<0> = 1) 必要があります。更にタイマ 1 オシ レータを有効にし、常時動作させてください。 タイマ 1 割り込みサービスによるリアルタイム クロックの実装 RTCinit MOVLW MOVWF CLRF MOVLW MOVWF CLRF CLRF MOVLW MOVWF BSF RETURN 80h TMR1H TMR1L b’00001111’ T1CON secs mins .12 hours PIE1, TMR1IE BSF BCF INCF MOVLW CPFSGT RETURN CLRF INCF MOVLW CPFSGT RETURN CLRF INCF MOVLW CPFSGT RETURN CLRF RETURN TMR1H, 7 PIR1, TMR1IF secs, F .59 secs ; Preload TMR1 register pair ; for 1 second overflow ; Configure for external clock, ; Asynchronous operation, external oscillator ; Initialize timekeeping registers ; ; Enable Timer1 interrupt RTCisr DS41303E_JP - ページ 162 secs mins, F .59 mins mins hours, F .23 hours hours ; ; ; ; Preload for 1 sec overflow Clear interrupt flag Increment seconds 60 seconds elapsed? ; ; ; ; No, done Clear seconds Increment minutes 60 minutes elapsed? ; ; ; ; No, done clear minutes Increment hours 24 hours elapsed? ; No, done ; Reset hours ; Done Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 13-2: Name INTCON タイマ / カウンタとして使用する場合のタイマ 1 関連レジスタ Bit 7 Bit 6 Bit 5 GIE/GIEH PEIE/GIEL TMR0IE Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 TMR1L Timer1 Register, Low Byte 58 TMR1H Timer1 Register, High Byte 58 T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 58 記号の説明 : 網掛けのビットはタイマ 1 モジュールでは使用しません。 注 1: これらのビットは、28 ピン デバイスには実装されていません。クリアされた状態を保ってください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 163 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 164 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 14.0 タイマ 2 モジュール 14.1 タイマ 2 の動作 • 8 ビット タイマおよび周期レジスタ ( それぞれ TMR2 および PR2) • 読み出しおよび書き込み可能 ( 両レジスタとも ) • ソフトウェアでプログラム可能なプリスケーラ (1:1、1:4、1:16) • ソフトウェアでプログラム可能なポストスケーラ (1:1 ~ 1:16) • TMR2/PR2 一致割り込み • MSSPモジュールのシフト クロックとしての利用 ( オプション ) 通常動作では、TMR2 はクロック (FOSC/4) ごとに 00h からインクリメントします。4 ビットカウンタ / プリスケーラによって直接入力、4 分周、16 分周の クロック入力オプションを使用できます。これらの 分周比は T2CON レジスタのプリスケール値選択 ビット T2CKPS<1:0> によって選択します。TMR2 の値は、周期レジスタ PR2 の値とクロック サイク ルごとに比較されます。両者が一致した場合、コン パレータがタイマ出力として一致信号を生成しま す。この信号は、次のサイクルで TMR2 の値を 00h にリセットし、出力カウンタ / ポストスケーラを駆 動します (14.2 項「タイマ 2 割り込み」参照 )。 モジュールは T2CON レジスタ ( レジスタ 14-1) に よって制御されます。このレジスタはタイマの有効 / 無効、およびプリスケーラやポストスケーラを設定 します。T2CON レジスタの制御ビット TMR2ON を クリアすればタイマ 2 が停止し、消費電力を最小限 に抑えることができます。 TMR2 レジスタと PR2 レジスタはどちらも直接読み 出し / 書き込み可能です。すべてのデバイス リセッ トで TMR2 レジスタはクリアされる一方、PR2 レジ スタは FFh に初期化されます。次のイベントが発生 すると、プリスケーラおよびポストスケーラのカウ ンタが両方ともクリアされます。 モジュールの概略ブロック図を図 14-1 に示します。 • TMR2 レジスタへの書き込み • T2CON レジスタへの書き込み • 何らかのデバイス リセット ( パワーオン リセッ ト、MCLR リセット、ウォッチドッグ タイマ リ セット、ブラウンアウト リセット ) タイマ 2 モジュールには以下の機能があります。 T2CONへの書き込みではTMR2はクリアされません。 レジスタ 14-1: T2CON: タイマ 2 制御レジスタ U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 未実装 :「0」として読み出し ビット 6-3 T2OUTPS<3:0>: タイマ 2 出力ポストスケール値 ( 分周比 ) 選択ビット 0000 = 1:1 0001 = 1:2 • • • 1111 = 1:16 ビット 2 TMR2ON: タイマ 2 オン ビット 1 = タイマ 2 が有効 0 = タイマ 2 を停止 ビット 1-0 T2CKPS<1:0>: タイマ 2 クロック プリスケール値 ( 分周比 ) 選択ビット 00 = プリスケーラは 1 01 = プリスケーラは 4 1x = プリスケーラは 16 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 165 PIC18F2XK20/4XK20 14.2 タイマ 2 割り込み 14.3 必要に応じてタイマ 2 からもデバイス割り込みを生 成できます。タイマ 2 出力信号 (TMR2/PR2 一致 ) は、4 ビットの出力カウンタ / ポストスケーラに入 力されます。このカウンタが TMR2 一致割り込みフ ラグを生成し、PIR1 レジスタの TMR2IF ビットを ラッチします。この割り込みは、PIE1 レジスタの TMR2 一致割り込みイネーブル ビット TMR2IE を セットすることで許可します。 タイマ 2 出力 TMR2 の分周していない出力は、 主に CCP モジュー ルによるPWMモード動作のタイム ベースとして使 われます。 タイマ 2 は SPI モードで動作する MSSP モジュール のシフト クロックのソースとして使用できます。 詳 細は、 17.0 項 「マスター同期シリアル ポート (MSSP) モジュール」で説明します。 T2CON レジスタのポストスケール値選択ビット T2OUTPS<3:0> によって、16 段階のポストスケール オプション (1:1 ~ 1:16) を選択できます。 図 14-1: タイマ 2 のブロック図 4 T2OUTPS<3:0> 1:1 to 1:16 Postscaler Set TMR2IF 2 T2CKPS<1:0> TMR2/PR2 Match Reset 1:1, 1:4, 1:16 Prescaler FOSC/4 TMR2 TMR2 Output (to PWM or MSSP) Comparator 8 PR2 8 8 Internal Data Bus 表 14-1: Name INTCO N タイマ / カウンタとして使用する場合のタイマ 2 関連レジスタ Bit 7 Bit 6 GIE/GIEH PEIE/GIEL Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 57 60 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF PIE1 PSPIE (1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 58 TMR2 T2CON PR2 Timer2 Register — 58 Timer2 Period Register 58 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットはタイマ 2 では使用しません。 注 1: これらのビットは、28 ピン デバイスには実装されていません。クリアされた状態を保ってください。 DS41303E_JP - ページ 166 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 15.0 タイマ 3 モジュール タイマ 3 タイマ / カウンタ モジュールには以下の機 能があります。 • ソフトウェアによって選択可能な、16 ビット モードのタイマまたはカウンタ動作 • 読み出し / 書き込み可能な 8 ビット レジスタ (TMR3H および TMR3L) • 選択可能なクロック ソース ( 内部または外部 )、 およびデバイス クロックまたは内部タイマ 1 オシレータに対するオプション • オーバーフロー割り込み • CCP 特殊イベント トリガによるモジュールの リセット レジスタ 15-1: R/W-0 RD16 bit 7 タイマ 3 モジュールの概略ブロック図を図 15-1 に 示します。読み出し / 書き込みモードで動作するモ ジュールのブロック図を図 15-2 に示します。 タイマ 3 は制御レジスタ T3CON ( レジスタ 15-1) に よって制御します。このレジスタは、CCP モジュー ルのクロック ソース オプションの選択にも使用し ます (11.1.1 項 「CCP モジュールとタイマ リソース」 参照 )。 T3CON: タイマ 3 制御レジスタ R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS R/W-0 TMR3ON bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 ビット 7 ビット 6,3 ビット 5-4 ビット 2 ビット 1 ビット 0 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 RD16: 16 ビット読み出し / 書き込みモード イネーブル ビット 1 = 1 回の 16 ビット動作によるタイマ 3 レジスタの読み出し / 書き込みが有効 0 = 2 回の 8 ビット動作によるタイマ 3 レジスタの読み出し / 書き込みが有効 T3CCP<2:1>: CCPx モジュールに対するタイマ 3 およびタイマ 1 イネーブル ビット 1x =タイマ 3 を CCP1 および CCP2 のキャプチャ / コンペア クロック ソースに設定 01 =タイマ 3 を CCP2 のキャプチャ / コンペア クロック ソースに、 タイマ 1 を CCP1 のキャプチャ / コンペア クロック ソースに設定 00 =タイマ 1 を CCP1 および CCP2 のキャプチャ / コンペア クロック ソースに設定 T3CKPS<1:0>: タイマ 3 入力クロック プリスケール値 ( 分周比 ) 選択ビット 11 = 1:8 10 = 1:4 01 = 1:2 00 = 1:1 T3SYNC: タイマ 3 外部クロック入力同期制御ビット ( デバイス クロックをタイマ 1/ タイマ 3 から供給している場合は使用できません。) TMR3CS = 1 のとき : 1 = 外部クロック入力を同期させない 0 = 外部クロック入力を同期させる TMR3CS = 0 のとき : このビットは無視。TMR3CS = 0 のとき、タイマ 3 は内部クロックを使用します。 TMR3CS: タイマ 3 クロック ソース選択ビット 1 = タイマ 1 オシレータまたは T13CKI ピンから入力される外部クロック ( 最初の立ち下がりエッジ後の各立ち上がりエッジ ) 0 = 内部クロック (FOSC/4) TMR3ON: タイマ 3 オン ビット 1 = タイマ 3 が有効 0 = タイマ 3 を停止 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 167 PIC18F2XK20/4XK20 15.1 タイマ 3 の動作 動作モードは、T3CONレジスタのクロック選択ビッ ト TMR3CS によって決まります。TMR3CS をクリ アした場合 (= 0)、タイマ 3 は内部の命令サイクル ごとにインクリメントされます (FOSC/4)。セットし た場合は、タイマ 1 の外部クロック入力またはタイ マ 1 オシレータ ( 有効にしている場合 ) のいずれか の立ち上がりエッジごとにタイマ 3 がインクリメン トされます。 タイマ 3 は、次の 3 つのモードのいずれかで動作し ます。 • タイマ • 同期カウンタ • 非同期カウンタ タイマ 1 同様、タイマ 1 オシレータを有効にした場 合、RC1/T1OSI および RC0/T1OSO/T13CKI ピンに 関連するデジタル回路はオフされます。これは、 TRISC<1:0> の値が無視され、ピンが「0」と読まれ ることを意味します。 図 15-1: タイマ 3 のブロック図 Timer1 Oscillator Timer1 Clock Input 1 T1OSO/T13CKI 1 FOSC/4 Internal Clock T1OSI Synchronize Prescaler 1, 2, 4, 8 Detect 0 0 2 T1OSCEN (1) Sleep Input TMR3CS T3CKPS<1:0> Timer3 On/Off T3SYNC TMR3ON CCP1/CCP2 Special Event Trigger CCP1/CCP2 Select from T3CON<6,3> 注 1: Clear TMR3 TMR3L TMR3 High Byte Set TMR3IF on Overflow イネーブル ビット T1OSCEN をクリアすると、消費電力低減のため、インバータおよびフィードバック抵抗が遮断されます。 DS41303E_JP - ページ 168 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 15-2: タイマ 3 のブロック図 (16 ビット読み出し / 書き込みモード ) Timer1 Oscillator Timer1 Clock Input 1 T13CKI/T1OSO 1 FOSC/4 Internal Clock T1OSI Synchronize Prescaler 1, 2, 4, 8 0 Detect 0 2 (1) T1OSCEN T3CKPS<1:0> T3SYNC Sleep Input TMR3CS Timer3 On/Off TMR3ON CCP1/CCP2 Special Event Trigger CCP1/CCP2 Select from T3CON<6,3> Clear TMR3 TMR3 High Byte TMR3L 8 Set TMR3IF on Overflow Read TMR1L Write TMR1L 8 8 TMR3H 8 8 Internal Data Bus 注 15.2 1: イネーブル ビット T1OSCEN をクリアすると、消費電力低減のため、インバータおよびフィードバック抵抗が遮断されます。 タイマ 3 (16 ビット読み出し / 書き込みモード ) 15.3 タイマ 3 には、16 ビットの読み出し / 書き込みを実 行するための設定が可能です ( 図 15-2 参照 )。 T3CON レ ジ ス タ の 制 御 ビ ッ ト RD16 を セ ッ ト す る と、 TMR3H のアドレスがタイマ 3 の上位バイトを格納 するバッファ レ ジ ス タ に 対 応 づ け ら れ ま す。 TMR3L を読み出すと、タイマ 3 の上位バイトの内 容が、このタイマ 3 上位バイト バッファ レジスタ に格納されます。この動作により、タイマ 3 の全 16 ビットを正確に読み出すことができます。下位バイ トの前に読み出された上位バイトが、2 回の読み出 しの間のロールオーバーによって無効になってい ないかを検証する必要がありません。 同様に、タイマ 3 上位バイトへの書き込みも TMR3H バッファ レジスタを介して実行する必要がありま す。タイマ 3 の上位バイトは、TMR3L への書き込 みと同時に、TMR3H の内容によって書き換えられ ます。この動作により、全 16 ビットをタイマ 3 の 上位、下位バイトの両方に同時に書き込むことがで きます。 このモードではタイマ 3 の上位バイトを直接読み出 し / 書き込むことができません。すべての読み出し / 書き込み動作は、タイマ 3 上位バイト バッファ レ ジスタを介して実行します。 タイマ 3 クロック ソースとしての タイマ 1 オシレータの利用 内部タイマ 1 オシレータをタイマ 3 のクロック ソー スとして使用できます。タイマ 1 オシレータは、 T1CON レジスタの T1OSCEN ビットをセットする と有効になります。 これをタイマ 3 のクロック ソー スとして使うには、TMR3CS ビットもセットする必 要があります。前述のとおり、このビットの設定に はタイマ 3 をオシレータ ソースの立ち上がりエッ ジごとにインクリメントさせる効果もあります。 タイマ 1 オシレータについては、13.0 項「タイマ 1 モジュール」で説明しています。 15.4 タイマ 3 割り込み TMR3 レジスタ ペア (TMR3H:TMR3L) は、0000h か ら FFFFh までインクリメントすると、0000h にオー バーフローします。タイマ 3 割り込みを許可してい る場合、オーバーフロー時に割り込みが発生し、 PIR2 レジスタの割り込みフラグ ビット TMR3IF が ラッチされます。この割り込みは、PIE2 レジスタの タイマ 3 割り込みイネーブル ビット TMR3IE をセッ ト / クリアすることで許可 / 禁止を設定できます。 TMR3H に書き込んでも、タイマ 3 のプリスケーラ はクリアされません。プリスケーラがクリアされる のは TMR3L に書き込んだ場合のみです。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 169 PIC18F2XK20/4XK20 15.5 CCP 特殊イベント トリガによる タイマ 3 のリセット CCP モジュールのいずれかがタイマ 3 を使用し、コ ンペア モードで特殊イベント トリガを発生する設 定の場合(CCP1M<3:0>またはCCP2M<3:0> = 1011)、 このトリガ信号によってタイマ 3 がリセットされま す。また、A/D モジュールが有効な場合、A/D 変換 を起動することも可能です (11.3.4 項「特殊イベント トリガ」参照 )。 この機能を使用する場合、モジュールをタイマまた は同期カウンタのいずれかに設定する必要があり ます。この機能における CCPR2H:CCPR2L レジスタ ペアは、実質的にタイマ 3 の周期レジスタとして機 能します。 タイマ 3 が非同期カウンタ モードで動作している 場合、このリセット機能は利用できません。 タイマ 3 への書き込みと CCP モジュールによる特 殊イベント トリガが競合した場合は、書き込みが 優先されます。 注: CCP2モジュールから特殊イベント トリガ が発生した場合、PIR2 レジスタの割り込 みフラグ ビット TMR3IF はセットされま せん。 表 15-1: Name INTCON タイマ / カウンタとして使用する場合のタイマ 3 関連レジスタ Bit 7 Bit 6 Bit 5 GIE/GIEH PEIE/GIEL TMR0IE Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 60 PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 60 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP 60 IPR2 TMR3L Timer3 Register, Low Byte 59 TMR3H Timer3 Register, High Byte 59 T1CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 58 T3CON RD16 T3CCP2 T3CKPS1 T3CKPS0 TMR3CS TMR3ON 59 T3CCP1 T3SYNC 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットはタイマ 3 では使用しません。 DS41303E_JP - ページ 170 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 16.0 拡張キャプチャ / コンペア /PWM (ECCP) モジュール CCP1 は、拡張 PWM 機能を持つ標準 CCP モジュー ルとして実装されます。次の機能があります。 • • • • • 2 系統または 4 系統の出力チャネルの準備 出力切り替え プログラマブルな極性 プログラマブルなデッドタイム制御 自動シャットダウンおよび自動再スタート レジスタ 16-1: 拡張機能の詳細は、16.4 項「PWM ( 拡張モード )」 を参照してください。 Enhanced Capture/Compare/PWM (ECCP: 拡張キャプ チャ/ コンペア /PWM) モジュールのキャプチャ、コ ンペア、および単一出力 PWM の機能は、標準 CCP モジュールの機能と同じです。 拡張CCPモジュールの制御レジスタをレジスタ16-1 に示します。CCP2CON レジスタと異なる点は、 PWM 機能を制御する上位 2 ビットが実装されてい る点です。 CCP1CON: ENHANCED CAPTURE/COMPARE/PWM CONTROL レジスタ R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7-6 P1M<1:0>: 拡張 PWM 出力構成ビット CCP1M<3:2> = 00、01、10 の場合 : xx = P1A をキャプチャ/ コンペア入出力として割り当てる。P1B、P1C、P1D をポート ピンとして割り当てる CCP1M<3:2> = 11 の場合 : 00 = 単一出力 : P1A、P1B、P1C、および P1D を切り替えて制御 (16.4.7 項「パルス切り替えモード」を参照 ) 01 = フルブリッジ順方向出力 : P1D 変調、P1A アクティブ、P1B と P1C 非アクティブ 10 = ハーフブリッジ出力 : P1A と P1B をデッドタイム制御で変調、P1C と P1D をポート ピンとして割り 当てる 11 = フルブリッジ逆方向出力 : P1B 変調、P1C アクティブ、P1A と P1D 非アクティブ ビット 5-4 DC1B<1:0>: PWM デューティ サイクル ビット 1 およびビット 0 キャプチャ モード : 未使用 コンペア モード : 未使用 PWM モード : 10 ビット PWM デューティ サイクルの下位 2 ビット。デューティ サイクルの上位 8 ビットは CCPR1L にある ビット 3-0 CCP1M<3:0>: 拡張 CCP モード選択ビット 0000 = キャプチャ / コンペア /PWM オフ (ECCP モジュールをリセット ) 0001 = 予約 0010 = コンペア モード。一致時に出力をトグル 0011 = 予約 0100 = キャプチャ モード、毎回の立ち下がりエッジでキャプチャ 0101 = キャプチャ モード、毎回の立ち上がりエッジでキャプチャ 0110 = キャプチャ モード、4 回目ごとの立ち上がりエッジでキャプチャ 0111 = キャプチャ モード、16 回目ごとの立ち上がりエッジでキャプチャ 1000 = コンペア モード。CCP1 ピンを Low に初期化し、 コンペア一致時に出力をセット (CCP1IF をセット ) 1001 = コンペア モード。CCP1ピンをHighに初期化し、コンペア一致時に出力をクリア(CCP1IFをセット) 1010 = コンペア モード。ソフトウェア割り込みのみを生成。CCP1 ピンは入出力状態に戻る 1011 = コンペア モード。特殊イベントをトリガ (ECCP が TMR1 または TMR3 をリセットし、CC1IF ビッ トをセット ) 1100 = PWM モード。P1A と P1C が正論理、P1B と P1D が正論理 1101 = PWM モード。P1A と P1C が正論理、P1B と P1D が負論理 1110 = PWM モード。P1A と P1C が負論理、P1B と P1D が正論理 1111 = PWM モード。P1A と P1C が負論理、P1B と P1D が負論理 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 171 PIC18F2XK20/4XK20 さまざまなモードを使用可能にする CCP1CON レジ スタおよび ECCP1AS レジスタに加えて、ECCP モ ジュールには拡張 PWM 動作および自動シャットダ ウン機能に関連する次の2つのレジスタがあります。 • PWM1CON ( デッドタイム ) • PSTRCON ( 出力切り替え ) 16.1 16.3 標準 PWM モード 単一出力モードに設定した ECCP モジュールの動作 は、PWM モードの標準 CCP モジュールの動作と同 じです (11.4 項「PWM モード」を参照 )。この動作 は、 「単一 CCP」モードとも呼ばれます ( 表 16-1 を 参照 )。 ECCP の出力と設定 拡張 CCP モジュールは、選択した動作モードに合 わせて最大4つのPWM出力を持つことができます。 これらの出力は P1A ~ P1D に指定され、PORTC お よびPORTD (PIC18F4XK20デバイス)またはPORTB (PIC18F2XK20 デバイス ) の I/O ピンで多重化され ます。アクティブな出力は、選択した CCP 動作モー ドによって決まります。 ピンの割り当てを表 16-1 に 示します。 I/OピンをPWM出力として設定するには、P1M<1:0> および CCP1M<3:0> のビットを設定して適切な PWM モードを選択する必要があります。ポート ピ ンの適切な TRISC および TRISD の方向ビットも、 出力として設定する必要があります。 16.1.1 ECCPのモジュールとタイマ リソース 標準 CCP モジュールと同様に、 ECCP モジュールは、 選択したモードに合わせて Timer1、Timer2、または Timer3 を活用できます。Timer1 と Timer3 は、キャ プチャ モードまたはコンペア モードのモジュール で使用できます。一方、Timer2 は、PWM モードの モジュールで使用できます。標準 CCP モジュールと 拡張 CCP モジュールとの連動は、 標準 CCP モジュー ルについて記載されているとおりです。タイマ リ ソースの詳細は、11.1.1 項「CCP モジュールとタイ マ リソース」を参照してください。 16.2 キャプチャ モードとコンペア モード 後 述 す る 特 殊 イ ベ ン ト ト リ ガ の 動 作 を 除 い て、 ECCP モジュールのキャプチャ モードとコンペア モードは、CCP2 の各モードの動作と同一です。こ れらのモードの詳細は、11.2 項「キャプチャ モー ド」および 11.3 項「コンペア モード」を参照して ください。28 ピンと 40/44 ピンのデバイス間での移 行では、変更は不要です。 16.2.1 特殊イベント トリガ ECCP1 の特殊イベント トリガ出力は、現在選択し ているタイマ リソースに合わせて TMR1 または TMR3 のレジスタ ペアをリセットします。これによ り、CCPR1 レジスタを効果的に、Timer1 または Timer3 用の 16 ビットのプログラマブル周期レジス タにできます。 DS41303E_JP - ページ 172 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 16.4 PWM ( 拡張モード ) PWM 出力 (P1A、P1B、P1C、P1D) は I/O ピンと多 重化されます。PWM ピンの極性は設定可能であり、 CCP1CON レジスタの CCP1M ビットを使用して選 択します。 拡張 PWM モードでは、 最大分解能 10 ビットの PWM 信号を最大 4 つの出力ピンに生成できます。拡張 PWM 出力モードには次の 4 つがあります。 • • • • 表 16-1 に、拡張 PWM の各モードにおけるピンの割 り当てを示します。 シングル PWM ハーフブリッジ PWM フルブリッジ PWM、順方向モード フルブリッジ PWM、逆方向モード 図 16-1 に、拡張 PWM モジュールの概略ブロック図 の例を示します。 注: 拡張 PWM モードを選択するには、CCP1CON レジ スタの P1M ビットを適切に設定します。 注: PWM が最初に有効になった時点で不完 全な波形が出力されるのを防ぐため、 ECCP モジュールは新しい PWM 周期が 始まるのを待ってから PWM 信号の生成 を開始します。 拡張 PWM モードが使用できるのは、拡張 キャプチャ / コンペア /PWM モジュール (CCP1) のみです。 図 16-1: 拡張 PWM モードの概略ブロック図 Duty Cycle Registers DC1B<1:0> CCP1M<3:0> 4 P1M<1:0> 2 CCPR1L CCP1/P1A CCP1/P1A TRIS CCPR1H (Slave) P1B R Comparator Output Controller Q P1B TRIS P1C TMR2 (1) Comparator PR2 1: 注 注 1: P1C TRIS S P1D Clear Timer2, toggle PWM pin and latch duty cycle P1D TRIS PWM1CON 8 ビットのタイマ TMR2 レジスタと 2 ビットの内部 Q クロック、または 2 ビットのプリスケーラを連結して 10 ビットの タイム ベースを生成します。 各 PWM 出力に対応する TRIS レジスタの値を適切に設定する必要があります。 2: CCPxCON レジスタをクリアすると、ECCP によるすべての PWM 出力ピンの制御が解除されます。 3: 拡張 PWM モードで使用しないピンは、別のピン機能に利用できます。 表 16-1: 拡張 PWM の各モードにおけるピン割り当ての例 ECCP Mode P1M<1:0> CCP1/P1A (1) (1) Yes P1C P1D (1) Yes Yes(1) Single 00 Half-Bridge 10 Yes Yes No No Full-Bridge, Forward 01 Yes Yes Yes Yes Full-Bridge, Reverse 11 Yes Yes Yes Yes 注 1: Yes P1B シングル モードでは、パルス切り替えにより出力が有効になります。レジスタ 16-4 を参照してくだ さい。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 173 PIC18F2XK20/4XK20 図 16-2: PWM ( 拡張モード ) の出力の関係 ( 正論理の例 ) Signal P1M<1:0> PR2+1 Pulse Width 0 Period 00 (Single Output) P1A Modulated Delay(1) Delay(1) P1A Modulated 10 (Half-Bridge) P1B Modulated P1A Active 01 (Full-Bridge, Forward) P1B Inactive P1C Inactive P1D Modulated P1A Inactive 11 (Full-Bridge, Reverse) P1B Modulated P1C Active P1D Inactive 関係 : 注 • Period = 4 * TOSC * (PR2 + 1) * (TMR2 Prescale Value) • Pulse Width = TOSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 Prescale Value) • Delay = 4 * TOSC * (PWM1CON<6:0>) 1: デッドタイムは PWM1CON レジスタでプログラムします (16.4.6 項「プログラマブルなデッドタイム モード」)。 DS41303E_JP - ページ 174 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 16-3: 拡張 PWM の出力の関係 ( 負論理の例 ) Signal P1M<1:0> PR2+1 Pulse Width 0 Period 00 (Single Output) P1A Modulated P1A Modulated 10 (Half-Bridge) Delay(1) Delay(1) P1B Modulated P1A Active 01 (Full-Bridge, Forward) P1B Inactive P1C Inactive P1D Modulated P1A Inactive 11 (Full-Bridge, Reverse) P1B Modulated P1C Active P1D Inactive 関係 : 注 • Period = 4 * TOSC * (PR2 + 1) * (TMR2 Prescale Value) • Pulse Width = TOSC * (CCPR1L<7:0>:CCP1CON<5:4>) * (TMR2 Prescale Value) • Delay = 4 * TOSC * (PWM1CON<6:0>) 1: デッドタイムは PWM1CON レジスタでプログラムします (16.4.6 項「プログラマブルなデッドタイム モード」)。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 175 PIC18F2XK20/4XK20 16.4.1 ハーフブリッジ モード ハーフブリッジ モードでは、2 つのピンを出力とし て使用してプッシュプル負荷を駆動します。 PWM 出 力信号は CCPx/P1A ピンに出力され、相補 PWM 出 力信号が P1B ピンに出力されます ( 図 16-5 を参照 )。 図 16-5 に示すように、このモードはハーフブリッジ アプリケーションに使用できるだけでなく、2 つの PWM 信号で 4 つのパワー スイッチを変調するフル ブリッジ アプリケーションにも使用できます。 ハーフブリッジ モードでは、プログラマブルなデッ ドタイムを使用してハーフブリッジ パワー デバイ スへの貫通電流を防ぐことができます。PWM1CON レジスタの PDC<6:0> ビットの値で、 出力をアクティ ブに駆動するまでのデッドタイムに対応する命令サ イクル数を設定します。この値がデューティ サイク ルより大きい場合、対応する出力は 1 サイクル全体 で非アクティブのままとなります。デッドタイム動 作の詳細は 16.4.6 項「プログラマブルなデッドタイ ム モード」を参照してください。 図 16-5: P1A と P1B の出力は PORT データ ラッチと多重化 されているため、P1A と P1B を出力に設定するに は、関連する TRIS ビットをクリアする必要があり ます。 図 16-4: ハーフブリッジ PWM 出力の例 Period Period Pulse Width P1A(2) td td P1B(2) (1) (1) (1) td = Dead-Band Delay 注 1: この時点で TMR2 レジスタの内容が PR2 レジスタと同じになります。 2: 出力信号は正論理として表示しています。 ハーフブリッジ アプリケーションの例 Standard Half-Bridge Circuit (“Push-Pull”) FET Driver + P1A Load FET Driver + P1B - Half-Bridge Output Driving a Full-Bridge Circuit V+ FET Driver FET Driver P1A FET Driver Load FET Driver P1B DS41303E_JP - ページ 176 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 16.4.2 フルブリッジ モード フルブリッジ モードでは、4 つのピンすべてを出力 として使用します。図 16-6 に、フルブリッジ アプ リケーションの例を示します。 順方向モードでは、ピン CCP1/P1A がアクティブ状 態に駆動され、ピン P1D が変調され、P1B および P1C が非アクティブ状態に駆動されます ( 図 16-7 を 参照 )。 逆方向モードでは、P1C がアクティブ状態に駆動さ れ、ピン P1B が変調され、P1A および P1D が非アク ティブ状態に駆動されます ( 図 16-7 を参照 )。 P1A、P1B、P1C、P1D の出力は PORT データ ラッ チと多重化されます。P1A、P1B、P1C、P1D のピン を出力に設定するには、関連する TRIS ビットをク リアする必要があります。 図 16-6: フルブリッジ アプリケーションの例 V+ FET Driver QC QA FET Driver P1A Load P1B FET Driver P1C FET Driver QD QB VP1D 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 177 PIC18F2XK20/4XK20 図 16-7: フルブリッジ PWM 出力の例 Forward Mode Period P1A (2) Pulse Width P1B(2) P1C(2) P1D(2) (1) (1) Reverse Mode Period Pulse Width P1A(2) P1B(2) P1C(2) P1D(2) (1) 注 1: 2: (1) この時点で TMR2 レジスタの内容が PR2 レジスタと同じになります。 出力信号は正論理として表示しています。 DS41303E_JP - ページ 178 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 16.4.2.1 フルブリッジ モードにおける方向 の変更 フルブリッジ モードでは、CCP1CON レジスタの P1M1 ビットで順方向 / 逆方向を制御できます。ア プリケーションのファームウェアでこの方向制御 ビットを変更すると、モジュールは次の PWM サイ クルから新しい方向に切り替わります。 方向を変更するには、 まずソフトウェアで CCP1CON レジスタの P1M1 ビットを変更します。これにより、 現在の PWM 周期が終わる前に次のシーケンスが発 生します。 • 変調出力 (P1B と P1D) が非アクティブ状態になる • 変調されていない関連出力 (P1A と P1C) の駆動 方向が反対に切り替わる • 次の周期の開始時点から PWM 変調が再開される このシーケンスを図 16-8 に示します。 フルブリッジ モードにはデッドタイムはありませ ん。一度に変調される出力は 1 つなので、通常デッ ドタイムは不要です。デッドタイムが必要となる状 況が 1 つ存在します。それは、次の条件が 2 つとも 真の場合です。 1. 2. 出力のデューティ サイクルが 100% またはその 近傍で PWM 出力の方向が変化した パワー スイッチ(パワー デバイスとドライバ回 路を含む ) のターンオフ時間がターンオン時間 よりも長い デューティ サイクルが 100% 近傍で PWM 出力を順 方向から逆方向に変更する場合の例を図 16-9 に示 します。この例では、t1 で出力 P1A と P1D が非ア クティブになり、出力 P1C がアクティブになりま す。パワー デバイスのターンオフ時間がターンオン 時間よりも長いため、 「t」の期間、パワー デバイス QC と QD に貫通電流が流れます ( 図 16-6 を参照 )。 PWM が逆方向から順方向に変化した場合も、同じ 現象がパワー デバイス QA と QB で発生します。 デューティ サイクルが高いときにPWMの方向を変 える必要があるアプリケーションでは、貫通電流を 防ぐ方法として次の 2 つがあります。 1. 2. 方向を変更する前の PWM の 1 周期で PWM の デューティ サイクルを下げる ターンオン時間よりもターンオフ時間の短い スイッチ ドライバを使用する その他にも、貫通電流を防ぐ方法があります。 図 16-8: PWM の方向変更の例 Period(1) Signal Period P1A (Active-High) P1B (Active-High) Pulse Width P1C (Active-High) (2) P1D (Active-High) Pulse Width 注 1: 2: CCP1CON レジスタの方向制御ビット P1M1 は、PWM サイクル内のいつでも書き込みできます。 方向を変更すると、現在の PWM サイクルが終了する前に P1A と P1C の信号が切り替わります。この時点で は、 P1BとP1Dの変調信号は非アクティブです。 この期間の長さは、(1/FOSC) (TMR2のプリスケール値)です。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 179 PIC18F2XK20/4XK20 図 16-9: デューティ サイクルが 100%近傍での PWM の方向を変更する例 Forward Period t1 Reverse Period P1A P1B PW P1C P1D PW TON External Switch C TOFF External Switch D Potential Shoot-Through Current 注 1: 16.4.3 T = TOFF – TON 信号はすべて正論理として表示しています。 2: TON は、パワー スイッチ QC とそのドライバのターンオン遅延です。 3: TOFF は、パワー スイッチ QD とそのドライバのターンオフ遅延です。 起動に関する注意点 どの PWM モードを使用する場合も、PWM 出力ピ ンに適切な外付けプルアップ抵抗やプルダウン抵 抗をアプリケーション ハードウェア側で使用する 必要があります。 注: 全体が完了してから PWM ピンの出力ドライバを有 効にしてください。PWM の 2 周期目の開始時点で PIR1 レジスタの TMR2IF ビットがセットされるの で、これによって PWM の 1 サイクルが完了したこ とが分かります。 マイクロコントローラのリセット状態が 解除されると、すべての I/O ピンがハイイ ンピーダンス状態になります。マイクロコ ントローラが I/O ピンを適切な信号レベル で駆動するか、PWM を出力をアクティブ にするまでの間、外部回路によってパワー スイッチ デバイスをオフ状態に保つ必要 があります。 PWM 出力ピンの各ペア (P1A/P1C と P1B/P1D) の PWM 出力信号を正論理と負論理のいずれにするか を、CCP1CON レジスタの CCP1M<1:0> ビットで選 択できます。PWM ピンの出力ドライバを有効にす る前に、PWM 出力の極性を選択する必要がありま す。アプリケーション回路を破損するおそれがある ため、PWM ピンの出力ドライバが有効なときには、 極性を変更しないことをお勧めします。 PWM モジュールの初期化時には、P1A、P1B、P1C、 P1D の出力ラッチが適切な状態でないことがあり ます。拡張 PWM モードと PWM ピンの出力ドライ バを同時に有効にすると、アプリケーション回路が 破損するおそれがあります。適切な出力モードで拡 張 PWM モードを有効にして、PWM の 1 サイクル DS41303E_JP - ページ 180 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 16.4.4 拡張 PWM 自動シャットダウン モード PWM モードは、外部シャットダウン イベント発生 時に PWM 出力を無効にする自動シャットダウン モードをサポートしています。自動シャットダウン モードでは、PWM 出力ピンがあらかじめ設定され た状態になります。このモードは、PWM によるア プリケーションの破損を防ぐ目的で使用します。 自動シャットダウンのソースは、ECCP1AS レジス タの ECCPAS<2:0> のビットで選択します。シャッ トダウン イベントは次のソースから発生できます。 • • • • FLT0 ピンにおける論理値「0」 コンパレータ C1 コンパレータ C2 ファームウェアによる ECCPASE ビットのセット シ ャ ッ ト ダ ウ ン 状 態 は、ECCP1AS レ ジ ス タ の ECCPASE ( 自動シャットダウン イベント ステータ ス ) ビットで示されます。このビットが「0」の場 レジスタ 16-2: 合、PWM ピンは通常動作中であることを示します。 このビットが「1」の場合、PWM 出力がシャットダ ウン状態であることを示します。 シャットダウン イベントが発生すると、次の 2 つの 処理が実行されます。 ECCPASE ビットが「1」にセットされる ECCPASE ビットは、ファームウェアまたは自動再スタート (16.4.5 項「自動再スタート モード」参照 ) によって クリアされるまでセットされたままです。 有効な PWM ピンは非同期的にシャットダウン状態 に移行します。PWM 出力ピンは [P1A/P1C] と [P1B/P1D] の 2 つのペアにグループ化されます。ピ ンの各ペアの状態は、ECCP1AS レジスタの PSSAC ビットと PSSBD ビットによって決まります。ピンの 各ペアは、次の 3 つの状態のいずれかに移行します。 • 論理値「1」を駆動 • 論理値「0」を駆動 • トライステート ( ハイインピーダンス ) ECCP1AS: ENHANCED CAPTURE/COMPARE/PWM AUTO-SHUTDOWN CONTROL レジスタ R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 ビット 7 ECCPASE: ECCP 自動シャットダウン イベント スタータス ビット 1 = シャットダウン イベントが発生し、ECCP 出力はシャットダウン状態 0 = ECCP 出力が動作中 ビット 6-4 ECCPAS<2:0>: ECCP 自動シャットダウン ソース選択ビット 000 = 自動シャットダウンを無効にする 001 = コンパレータ C1OUT 出力が High 010 = コンパレータ C2OUT 出力が High 011 = コンパレータ C1OUT と C2OUT のいずれかが High 100 = FLT0 ピンの VIL 101 = FLT0 ピンの VIL、またはコンパレータ C1OUT 出力が High 110 = FLT0 ピンの VIL、またはコンパレータ C2OUT 出力が High 111 = FLT0 ピンの VIL、またはコンパレータ C1OUT と C2OUT のいずれかが High ビット 3-2 PSSACn: ピン P1A および P1C のシャットダウン状態制御ビット 00 = ピン P1A と P1C を「0」に駆動 01 = ピン P1A と P1C を「1」に駆動 1x = ピン P1A と P1C をトライステートに移行 ビット 1-0 PSSBDn: ピン P1B および P1D のシャットダウン状態制御ビット 00 = ピン P1B と P1D を「0」に駆動 01 = ピン P1B と P1D を「1」に駆動 1x = ピン P1B と P1D をトライステートに移行 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 181 PIC18F2XK20/4XK20 注 1: 自動シャットダウン条件はエッジベー スの信号ではなくレベルベースの信号 で す。レ ベ ル が 存 在 す る 間 は、自 動 シャットダウン状態が持続します。 2: 自動シャットダウン状態が持続してい る間は、ECCPASE ビットへの書き込み は禁止されます。 3: 自動シャットダウン条件が解除され、 PWM を ( ファームウェアまたは自動再 スタートによって ) 再開するときには常 に、 次の PWM 周期の開始時点から PWM 信号が再開されます。 図 16-10: PWM の自動シャットダウンとファームウェアによる再スタート (PRSEN = 0) PWM Period Shutdown Event ECCPASE bit PWM Activity Normal PWM Start of PWM Period 16.4.5 ECCPASE Cleared by Shutdown Shutdown Firmware PWM Event Occurs Event Clears Resumes 自動再スタート モード 拡張 PWM は、自動シャットダウン条件が解除され た時点で PWM 信号を自動再開するように設定でき ます。自動再スタートを有効にするには、PWM1CON レジスタの PRSEN ビットをセットします。 自動再スタートを有効にした場合、ECCPASE ビッ トは自動シャットダウン状態が持続している間は セットされたままです。自動シャットダウン条件が 解除されると、ECCPASE ビットがハードウェアに よってクリアされ、通常の動作が再開します。 図 16-11: 自動再スタートを有効 (PRSEN = 1) にした場合の PWM 自動シャットダウン PWM Period Shutdown Event ECCPASE bit PWM Activity Normal PWM Start of PWM Period DS41303E_JP - ページ 182 Shutdown Shutdown Event Occurs Event Clears Preliminary PWM Resumes 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 16.4.6 プログラマブルなデッドタイム モード ハーフブリッジ アプリケーションではすべてのパ ワー スイッチが PWM 周波数で変調されるため、通 常はパワースイッチのターンオフ時間がターンオ ン時間よりも長くなります。上下のパワー スイッ チが同時に切り替わる場合 ( 片方がターンオン、も う片方がターンオフ )、片方のスイッチが完全に ターンオフするまでの間、両方のスイッチがオンに なる期間がごくわずかにあります。このわずかな期 間に 2 つのパワー スイッチの間を非常に大きな電 流 ( 貫通電流 ) が流れ、ブリッジ電源が短絡します。 このようなスイッチング時の貫通電流による破損 を防ぐため、 通常はパワー スイッチの片方のスイッ チが完全にターンオフするまで、もう片方のスイッ チのターンオンを遅延させます。 図 16-12: ハーフブリッジ PWM 出力の例 Period Period Pulse Width P1A (2) td td P1B(2) (1) (1) (1) td = Dead-Band Delay 注 1: 2: この時点で TMR2 レジスタの内容が PR2 レジ スタと同じになります。 出力信号は正論理として表示しています。 ハーフブリッジ モードでは、デジタル プログラム 可能なデッドタイムを利用して、 ブリッジ パワー ス イッチを破損する貫通電流の発生を防ぐことがで きます。このデッドタイムは非アクティブ状態から アクティブ状態への信号遷移時に発生します。詳細 は、図 16-12 を参照してください。デッドタイムは、 対応する PWM1CON レジスタ ( レジスタ 16-3) の下 位 7 ビットを使用して、マイクロコントローラの命 令サイクル (TCY または 4 TOSC) 単位で設定します。 図 16-13: ハーフブリッジ アプリケーションの例 V+ Standard Half-Bridge Circuit (“Push-Pull”) FET Driver + V - P1A Load FET Driver + V - P1B V- 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 183 PIC18F2XK20/4XK20 レジスタ 16-3: PWM1CON: ENHANCED PWM CONTROL レジスタ R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7 PRSEN: PWM 再スタート イネーブル ビット 1 = 自動シャットダウンの後、シャットダウン イベントが解消されると ECCPASE ビットが自 動的にクリアされ、PWM が自動で再スタート 0 = 自動シャットダウンの後、PWM を再スタートするにはソフトウェアによる ECCPASE ビッ トのクリアが必要 ビット 6-0 PDC<6:0>: PWM 遅延カウント ビット PDCn = PWM 信号が本来アクティブに遷移するタイミングから実際にアクティブに遷移する タイミングまでの遅延を FOSC/4 (4 * TOSC) サイクル数で指定 DS41303E_JP - ページ 184 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 16.4.7 パルス切り替えモード 単一出力モードでは、パルス切り替えを使用して任 意の PWM ピンの出力を変調信号にできます。 更に、複数のピンで同一の PWM 信号を同時に使用 できます。 単一出力モードを選択している場合 (CCP1CON レ ジスタの CCP1M<3:2> = 11、かつ P1M<1:0> = 00)、 ユーザー ファームウェアで PSTRCON レジスタの STR<D:A> のビットを適切に設定して ( 表 16-1 を参 照 )、同一の PWM 信号を 1 つ~ 4 つの出力ピンか ら出力できます。 レジスタ 16-4: 注: ピンに PWM 信号を出力するには、対応す る TRIS ビットを出力 (「0」) に設定して、 ピン出力ドライバを有効にする必要があ ります。 PWM 切り替えモードがアクティブのときには、 CCP1CON レジスタの CCP1M<1:0> ビットにより、 P1<D:A> のピンの PWM 出力の極性が決まります。 PWM 切り替えモードでも、PWM 自動シャットダ ウン動作が適用されます (16.4.4 項「拡張 PWM 自 動シャットダウン モード」を参照 )。自動シャット ダウン イベントは、PWM 信号出力を有効にしたピ ンにのみ影響します。 PSTRCON: PULSE STEERING CONTROL レジスタ (1) U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1 — — — STRSYNC STRD STRC STRB STRA bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 ビット 7-5 未実装 :「0」として読み出し ビット 4 STRSYNC: 切り替え同期ビット 1 = 出力切り替えを次の PWM 周期で更新 0 = 出力切り替えを命令のサイクル境界の開始時点で更新 ビット 3 STRD: 切り替えイネーブル ビット D 1 = P1D ピンの出力が PWM 波形で、その極性を CCPxM<1:0> で制御 0 = P1D ピンをポート ピンとして割り当てる ビット 2 STRC: 切り替えイネーブル ビット C 1 = P1C ピンの出力が PWM 波形で、その極性を CCPxM<1:0> で制御 0 = P1C ピンをポート ピンとして割り当てる ビット 1 STRB: 切り替えイネーブル ビット B 1 = P1B ピンの出力が PWM 波形で、その極性を CCPxM<1:0> で制御 0 = P1B ピンをポート ピンとして割り当てる ビット 0 STRA: 切り替えイネーブル ビット A 1 = P1A ピンの出力が PWM 波形で、その極性を CCPxM<1:0> で制御 0 = P1A ピンをポート ピンとして割り当てる 注 1: PWM 切り替えモードが使用できるのは、CCP1CON レジスタのビット CCP1M<3:2> = 11、かつ P1M<1:0> = 00 の場合のみです。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 185 PIC18F2XK20/4XK20 図 16-14: 切り替えの概略ブロック図 STRA P1A Signal CCP1M1 PORT Data 0 STRB CCP1M0 PORT Data PORT Data 0 PORT Data P1B pin TRIS P1C pin 1 0 TRIS STRD CCP1M0 TRIS 1 STRC CCP1M1 P1A pin 1 P1D pin 1 0 TRIS 注 1: この図のポート出力設定では、CCP1CON レジ スタのビット P1M<1:0> = 00、かつ CCP1M<3:2> = 11。 2: 単一 PWM 出力では、少なくとも STRx ビット の 1 つをセットする必要があります。 DS41303E_JP - ページ 186 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 16.4.7.1 切り替えの同期 PSTRCONレジスタのSTRSYNCビットを使用して、 切り替えイベントを発生させるタイミングを 2 つの 時点から選択できます。STRSYNC ビットが「0」の 場合、PSTRCON レジスタに書き込む命令の終了時 点で切り替えイベントが発生します。この場合、 P1<D:A> ピンの出力信号の PWM 波形が不完全にな ることがあります。ユーザー ファームウェアでピ ンから PWM 信号を即座に除去する必要がある場合 に、この動作は便利です。 図 16-15 および図 16-16 に、STRSYNC 設定による PWM 切り替えのタイミングを示します。 STRSYNC ビットが「1」の場合、次の PWM 周期の 開始時点で効果的な切り替え更新が発生します。こ の場合、PWM 出力のオン / オフ切り替えでは常に、 完全な PWM 波形が生成されます。 図 16-15: 命令終了時点で切り替えイベントが発生する例 (STRSYNC = 0) PWM Period PWM STRn P1<D:A> PORT Data PORT Data P1n = PWM 図 16-16: 命令開始時点で切り替えイベントが発生する例 (STRSYNC = 1) PWM STRn P1<D:A> PORT Data PORT Data P1n = PWM 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 187 PIC18F2XK20/4XK20 16.4.8 電源管理モードでの動作 スリープ モードでは、クロック ソースはすべて無 効になっています。Timer2 がインクリメントせず、 モジュールの状態は変化しません。ECCP ピンが値 を駆動している場合は、その値の駆動を継続しま す。デバイスがウェイクアップすると、この状態か ら動作を継続します。2 段階の起動速度が有効な場 合、HFINTOSC およびポストスケーラからの初期起 動周波数がすぐには安定しないことがあります。 PRI_IDLE モードでは、プライマリ クロックが変化 せずに ECCP モジュールにクロック信号を供給しま す。その他すべての電源管理モードでは、選択した 電源管理モードのクロックが Timer2 にクロック信 号を供給します。PRI_IDLE 以外の電源管理モード のクロック周波数は、多くの場合、プライマリ ク ロックの周波数とは異なります。 16.4.8.1 フェイルセーフ クロック モニタと の動作 フェイルセーフ クロック モニタを有効にした場 合、クロック障害が発生するとデバイスが強制的に RC_RUN 電源管理モードになり、PIR2 レジスタの OSCFIF ビットがセットされます。その後、ECCP は内部オシレータをクロック ソースとして使用し ますが、この内部オシレータの周波数はプライマリ クロックとは異なる場合があります。 詳細は、前の節を参照してください。 16.4.9 リセットの影響 パワーオン リセットおよびそれ以降のリセットで、 すべてのポートが強制的に入力モードになり、CCP レジスタはリセット状態に戻ります。 これにより、拡張 CCP モジュールが、標準 CCP モ ジュールと互換性のある状態に強制的にリセット されます。 DS41303E_JP - ページ 188 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 16-2: Name INTCON ECCP1 モジュール、および TIMER1 ~ TIMER3 に関連するレジスタ Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF 57 RCON IPEN SBOREN — RI TO PD POR BOR 56 PIR1 PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 60 PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 60 IPR2 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP 60 TRISB PORTB Data Direction Control Register 60 TRISC PORTC Data Direction Control Register 60 TRISD PORTD Data Direction Control Register 60 TMR1L Timer1 Register, Low Byte 58 TMR1H Timer1 Register, High Byte 58 T1CON TMR2 T2CON RD16 T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 58 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 58 Timer2 Register — 58 T2OUTPS3 PR2 Timer2 Period Register 58 TMR3L Timer3 Register, Low Byte 59 TMR3H Timer3 Register, High Byte T3CON RD16 T3CCP2 59 T3CKPS1 T3CKPS0 CCPR1L Capture/Compare/PWM Register 1, Low Byte CCPR1H Capture/Compare/PWM Register 1, High Byte T3CCP1 T3SYNC TMR3CS TMR3ON 59 59 59 CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 59 ECCP1AS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 59 PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 59 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは ECCP の動作では使用しません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 189 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 190 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.0 17.1 17.3 マスター同期シリアル ポート (MSSP) モジュール マスター SSP (MSSP) モジュールの 概要 Master Synchronous Serial Port (MSSP: マスター同期シ リアル ポート ) モジュールは、他の周辺装置やマイ クロコントローラ デバイスとの通信に役立つシリ アル インターフェースです。周辺機器として、シリ アル EEPROM、シフト レジスタ、ディスプレイ ド ライバ、A/D コンバータなどがあります。MSSP モ ジュールは、次のいずれかのモードで動作できます。 • Serial Peripheral Interface (SPI: シリアル ペリフェラル インターフェース ) • Inter-Integrated Circuit (I2C) - フルマスター モード : - スレーブ モード ( 一括アドレス呼び出し付き ) SPI モード SPI モードでは、8 ビットのデータを同期して、同 時に送受信できます。SPI の 4 つのモードをすべて サポートします。通信には通常、次の 3 つのピンを 使用します。 • シリアル データ出力 – SDO • シリアル データ入力 – SDI/SDA • シリアル クロック – SCK/SCL 更に、スレーブ モードの動作では、次の 4 つ目の ピンを使用できます。 • スレーブ選択 – SS 図 17-1 に、SPI モードで動作する MSSP モジュール のブロック図を示します。 図 17-1: MSSP のブロック図 (SPI モード ) Internal Data Bus I2C インターフェースは、ハードウェアの次のモー ドをサポートします。 • マスター モード • マルチマスター モード • スレーブ モード 17.2 Read Write SSPBUF Reg SDI/SDA SSPSR Reg 制御レジスタ Shift Clock SDO bit 0 SS SS Control Enable MSSP に関連するレジスタとして、次の 7 つのレジ スタがあります。 • • • • • • • SSPSTA – STATUS レジスタ SSPCON1 – 第 1 制御レジスタ SSPCON2 – 第 2 制御レジスタ SSPBUF – 送信 / 受信バッファ SSPSR – シフト レジスタ ( 直接アクセス不可 ) SSPADD – アドレス レジスタ SSPMSK – アドレス マスク レジスタ これらのレジスタの用途と各構成ビットは、MSSP モジュールが SPI と I2C のいずれのモードで動作し ているかによって大きく異なります。 詳細は、それぞれの節を参照してください。 Edge Select 2 Clock Select SCK/SCL SSPM<3:0> SMP:CKE 4 TMR2 Output 2 2 Edge Select Prescaler TOSC 4, 16, 64 ( ) Data to TX/RX in SSPSR TRIS bit 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 191 PIC18F2XK20/4XK20 17.3.1 レジスタ MSSP モジュールでは、SPI モードの動作用に次の 4 つのレジスタを使用します。 • • • • SSPCON1 – 制御レジスタ SSPSTAT – STATUS レジスタ SSPBUF – シリアル送信 / 受信バッファ SSPSR – シフト レジスタ ( 直接アクセス不可 ) SSPCON1 は SPI モード動作用の制御レジスタ、 SSPSTAT は STATUS レジスタです。SSPCON1 レジ スタは、読み出しと書き込みができます。SSPSTAT の下位 6 ビットは読み出し専用です。SSPSTAT の上 位 2 ビットは読み出し / 書き込みができます。 レジスタ 17-1: SSPSR は、データをシフトして入出力するシフト レジスタです。SSPBUF から SSPSR レジスタに間 接的にアクセスできます。SSPBUF はバッファ レジ スタで、データ バイトの書き込み先や読み出し元 になります。 受信動作では、SSPSR と SSPBUF の両方で 1 個の ダブル バッファ受信器を構成します。SSPSR が 1 バイトを受信すると、SSPBUF に転送され、SSPIF 割り込みがセットされます。 送信動作では、SSPBUF はダブル バッファを構成し ません。SSPBUF に書き込むと、SSPBUF と SSPSR の両方に書き込まれます。 SSPSTAT: MSSP STATUS レジスタ (SPI モード ) R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0 SMP CKE D/A P S R/W UA BF bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。 「0」として読み出し 「1」= セット 「0」= クリア x = 不明 ビット 7 SMP: サンプル ビット SPI マスター モード : 1 = データ出力の終了時に入力データをサンプリングする 0 = データ出力中に入力データをサンプリングする SPI スレーブ モード : SPI をスレーブ モードで使用するときには、SMP をクリアする必要がある ビット 6 CKE: SPI クロック選択ビット (1) 1 = クロックがアクティブからアイドルに遷移するときに出力データを変更 0 = クロックがアイドルからアクティブに遷移するときに出力データを変更 ビット 5 D/A: データ / アドレス ビット I2C モードでのみ使用 ビット 4 P: ストップ ビット I2C モードでのみ使用。MSSP モジュールが無効になり SSPEN がクリアされると、このビット がクリアされる ビット 3 S: スタート ビット I2C モードでのみ使用 ビット 2 R/W: 読み出し / 書き込み情報ビット I2C モードでのみ使用 ビット 1 UA: 更新アドレス ビット I2C モードでのみ使用 ビット 0 BF: バッファ フル状態ビット ( 受信モードのみ ) 1 = 受信完了、SSPBUF はフル 0 = 受信は未完了、SSPBUF は空 注 1: クロック状態の極性は、SSPCON1 レジスタの CKP ビットでセットします。 DS41303E_JP - ページ 192 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 17-2: SSPCON1: MSSP CONTROL 1 レジスタ (SPI モード ) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 ビット 7 WCOL: 書き込み衝突検出ビット ( 送信モードのみ ) 1 = 前のワードを送信中の SSPBUF レジスタに書き込みが行われた ( ソフトウェアでクリアする必要がある ) 0 = 衝突なし ビット 6 SSPOV: 受信オーバーフロー表示ビット (1) SPI スレーブ モード : 1 = SSPBUF レジスタが前のデータを保持しているときに新規 1 バイトを受信した。 オーバーフ ローした場合、SSPSR のデータは失われます。オーバーフローが発生するのは、スレーブ モードのみです。オーバーフロー状態のセットを防ぐには、データ受信のみの場合でも SSPBUF を読み出す必要があります ( セットされた場合、ソフトウェアでクリアする必要が ある ) 0 = オーバーフローなし ビット 5 SSPEN: 同期シリアル ポート イネーブル ビット (2) 1 = シリアル ポートを有効にして、SCK、SDO、SDI、および SS をシリアル ポート ピンとして 設定する。この場合、SDA と SCL のピンを入力として設定する必要がある 0 = シリアル ポートを無効にして、これらのピンを I/O ポート ピンとして設定する ビット 4 CKP: クロック極性選択ビット 1 = クロックのアイドル状態が High レベル 0 = クロックのアイドル状態が Low レベル ビット 3-0 SSPM<3:0>: 同期シリアル ポートのモード選択ビット (3) 0101 = SPI スレーブ モード、クロック = SCK ピン、SS ピンの制御無効、SS は I/O ピンとして 使用可能 0100 = SPI スレーブ モード、クロック = SCK ピン、SS ピンの制御有効 0011 = SPI マスター モード、クロック = TMR2 出力 /2 0010 = SPI マスター モード、クロック = FOSC/64 0001 = SPI マスター モード、クロック = FOSC/16 0000 = SPI マスター モード、クロック = FOSC/4 注 1: 2: 3: マスター モードでは、SSPBUF レジスタへの書き込みにより新規の各受信 ( および送信 ) が開始され るため、オーバーフロー ビットはセットされません。 有効にした場合、これらのピンを適切に入力または出力に設定する必要があります。 ここに記載されていないビットの組み合わせは、予約されているか、I2C モードのみで実装されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 193 PIC18F2XK20/4XK20 17.3.2 動作 SPI の初期化時に、いくつかのオプションを指定する 必要があります。オプションを指定するには、適切 な制御ビット (SSPCON1<5:0> および SSPSTAT<7:6>) をプログラムします。これらの制御ビットで、次の 項目を指定できます。 • • • • マスター モード (SCK がクロック出力 ) スレーブ モード (SCK がクロック入力 ) クロックの極性 (SCK のアイドル状態 ) データ入力サンプリング位相 ( データ出力期間 の中間または終端 ) • クロック エッジ (SCK の立ち上がり / 立ち下がり エッジでデータを出力 ) • クロック速度 ( マスター モードのみ ) • スレーブ選択モード ( スレーブ モードのみ ) MSSP には、送信 / 受信シフト レジスタ (SSPSR) と バッファ レジスタ (SSPBUF) があります。 SSPSR は、 データを最上位ビットからデバイスにシフト入力 して、デバイス外にシフト出力します。SSPBUF は、 受信データが準備できるまで、SSPSR に書き込まれ たデータを保持します。8 ビットのデータを受信す ると、そのバイトが SSPBUF レジスタに移動されま す。次に、SSPSTAT レジスタのバッファ フル検出 ビット BF と割り込みフラグ ビット SSPIF がセット されます。受信データのダブルバッファ (SSPBUF) により、受信データを読み出す前に次のバイトの受 信を開始できます。データの送受信中に SSPBUF レ ジスタへの書き込みがあった場合、その書き込みは 無視され、SSPCON1 レジスタの書き込み衝突検出 ビット WCOL がセットされます。その後の SSPBUF レジスタへの書き込みが正常に完了したかどうか を特定できるように、ユーザー ソフトウェアで WCOL ビットをクリアする必要があります。 例 17-1: LOOP アプリケーション ソフトウェアが有効なデータの 受信を予測しているときには、転送するデータの次 のバイトが SSPBUF に書き込まれる前に、SSPBUF を読み出す必要があります。SSPSTAT レジスタの バッファ フル ビット BF は、SSPBUF に受信データ がロードされたこと ( 送信完了 ) を示します。 SSPBUF を読み出すと、BF ビットがクリアされま す。SPI が単なる送信器の場合は、このデータは無 関係です。送受信が完了したかどうかを特定するに は、通常、MSSP 割り込みを使用します。SSPBUF の読み出しと書き込みの両方、またはそのいずれか を行う必要があります。割り込み方法を使用しない 場合は、ソフトウェアでポーリングを実行して書き 込み衝突の発生を防止できます。例 17-1 に、デー タ送信時の SSPBUF (SSPSR) のロードを示します。 SSPSR の読み出しと書き込みは直接実行できず、 SSPBUF レジスタのアドレス指定でのみアクセスで きます。更に、MSSP STATUS レジスタ (SSPSTAT) は、さまざまなステータスを示します。 SSPBUF (SSPSR) レジスタのロード BTFSS BRA MOVF SSPSTAT, BF LOOP SSPBUF, W ;Has data been received (transmit complete)? ;No ;WREG reg = contents of SSPBUF MOVWF RXDATA ;Save in user RAM, if data is meaningful MOVF MOVWF TXDATA, W SSPBUF ;W reg = contents of TXDATA ;New data to xmit DS41303E_JP - ページ 194 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.3.3 SPI の I/O 許可 17.3.4 シリアル ポートを有効にするには、SSPCON1 レジ スタの SSP イネーブル ビット SSPEN をセットしま す。SPI モードのリセットや再設定を行うには、 SSPEN ビットをクリアし、SSPCON レジスタを再 初期化した後に SSPEN ビットをセットします。こ れにより、SDI、SDO、SCK、および SS のピンがシ リアル ポート ピンに設定されます。ピンをシリア ル ポートとして機能させるには、ピンのデータ方 向ビット (TRIS レジスタ ) を次のようにプログラム します。 • SDI は SPI モジュールから自動制御される • SDO に対応する TRIS ビットをクリアする • SCK ( マスター モード ) に対応する TRIS ビット をクリアする • SCK ( スレーブ モード ) に対応する TRIS ビット をセットする • SS に対応する TRIS ビットをセットする 不要なシリアル ポート機能は、対応するデータ方 向 (TRIS) ビットを逆の値にプログラムすることで 無効にできます。 図 17-2: 代表的な接続 図 17-2 に、2 つのマイクロコントローラの代表的な 接続を示します。マスター コントローラ ( プロセッ サ 1) が SCK 信号を送信して、データ転送を開始し ます。プログラムされたクロック エッジで両方の シフト レジスタからデータがシフト出力され、ク ロックの逆のエッジでラッチされます。両方のプロ セッサに同じクロック極性(CKP)をプログラムする 必要があり、これにより両方のコントローラが同時 にデータを送受信します。データが意味を持つか ( またはダミー データか ) は、アプリケーション ソ フトウェアによって決まります。これにより、デー タ送信には次の 3 つのシナリオがあります。 • マスターがデータを送信–スレーブがダミー データを送信 • マスターがデータを送信–スレーブがデータを 送信 • マスターがダミー データを送信–スレーブが データを送信 SPI マスター / スレーブの接続 SPI Master SSPM<3:0> = 00xxb SPI Slave SSPM<3:0> = 010xb SDO SDI Serial Input Buffer (SSPBUF) SDI Shift Register (SSPSR) MSb Serial Input Buffer (SSPBUF) SDO LSb MSb SCK Serial Clock Processor 1 2009 Microchip Technology Inc. Shift Register (SSPSR) LSb SCK Processor 2 Preliminary DS41303E_JP - ページ 195 PIC18F2XK20/4XK20 17.3.5 マスター モード マスターは SCK を制御しているので、任意の時点 でデータ転送を開始できます。マスターはソフト ウェア プロトコルにより、 スレーブ ( プロセッサ 2、 図 17-2) がデータを一斉送信するタイミングを特定 します。 マスター モードでは、データは SSPBUF レジスタ に書き込まれると即座に送受信されます。SPI が受 信のみの場合は、SDO 出力を無効にできます ( 入力 としてプログラムする )。SSPSR レジスタは継続し て、プログラムされたクロック速度で SDI ピンに存 在する信号をシフト入力します。受信した各バイト は、通常速度で受信したバイトであるかのように SSPBUF レジスタにロードされます ( 割り込みとス テータス ビットを適切にセット )。これは、 「ライ ン アクティビティ モニタ」モードのような受信器 アプリケーションで便利です。 図 17-3: クロックの極性を選択するには、SSPCON1 レジス タの CKP ビットを適切にプログラムします。これ により、図 17-3、図 17-5、および図 17-6 に示す SPI 通信波形 ( 最上位ビットが最初に送信される ) が得 られます。マスター モードでは、SPI クロック速度 ( ビット レート ) を次のいずれかにプログラムでき ます。 • • • • FOSC/4 ( または TCY) FOSC/16 ( または 4 • TCY) FOSC/64 ( または 16 •TCY) Timer2 出力 /2 これにより最大データ レート 16.00 Mbps (64 MHz 時 ) が得られます。 図 17-3 に、マスター モードの波形を示します。CKE ビットをセットすると、SCK にクロック エッジが 発生する前に SDO データが有効になります。入力 サンプルの変化を、SMP ビットの状態に基づいて 示します。SSPBUF に受信データがロードされるタ イミングを示します。 SPI モードの波形 ( マスター モード ): Write to SSPBUF SCK (CKP = 0 CKE = 0) SCK (CKP = 1 CKE = 0) 4 Clock Modes SCK (CKP = 0 CKE = 1) SCK (CKP = 1 CKE = 1) SDO (CKE = 0) bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 SDO (CKE = 1) bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 SDI (SMP = 0) bit 0 bit 7 Input Sample (SMP = 0) SDI (SMP = 1) bit 0 bit 7 Input Sample (SMP = 1) SSPIF Next Q4 Cycle after Q2 SSPSR to SSPBUF DS41303E_JP - ページ 196 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.3.6 スレーブ モード スレーブ モードでは、SCK に外部クロック パルス が現れた時点でデータが送受信されます。最後の ビットがラッチされると、SSPIF 割り込みフラグ ビットがセットされます。 モジュールのSPIスレーブ モードを有効にする前に、 クロック ラインを適切なアイドル状態に一致させる 必要があります。クロック ラインを観察するには、 SCKピンを読み出します。 アイドル状態は、 SSPCON1 レジスタの CKP ビットで特定できます。 スレーブ モードでは、外部クロック ソースから SCK ピンに外部クロックが供給されます。この外部 クロックは、電気的仕様に記載された High と Low の最小時間に適合する必要があります。 スリープ モードでは、スレーブはデータの送受信 ができます。1 バイトを受信するとスリープ モード からデバイスがウェイクアップします。 17.3.7 スレーブ選択同期 SS ピンを使用して、同期スレーブ モードにできま す。SPI をスレーブ モードにするには、SS ピンの 制御を有効にします (SSPCON1<3:0> = 04h)。SS ピ ンを入力にするので、このピンを Low で駆動しな いでください。データ ラッチは High にする必要が 図 17-4: あります。SS ピンが Low の場合、送受信が有効に なり、SDO ピンが駆動されます。SS ピンが High に なると、バイトの送信途中でも SDO ピンの駆動が 停止し、浮動出力になります。アプリケーションに よっては、外部プルアップ / プルダウン抵抗を使用 することをお勧めします。 注 1: SPI が SS ピンの制御を有効にした (SSPCON<3:0> = 0100) スレーブ モード のときに、SS ピンを VDD に設定すると SPI モジュールがリセットされます。 2: CKE をセットして SPI をスレーブ モー ドで使用するときには、SS ピンの制御 も有効にする必要があります。 SPI モジュールのリセット時に、ビット カウンタは 強制的に「0」になります。リセットするには、SS ピンを High レベルにするか、SSPEN ビットをクリ アします。 2 線通信をエミュレートするには、SDO ピンを SDI ピンに接続します。SPI を受信器として動作させる 場合は、SDO ピンを入力に設定できます。これに より、SDO からの送信が禁止されます。SDI を常に 入力 (SDI 機能 ) にしておくと、バス矛盾が発生し ません。 スレーブ同期の波形 SS SCK (CKP = 0 CKE = 0) SCK (CKP = 1 CKE = 0) Write to SSPBUF SDO SDI (SMP = 0) bit 7 bit 6 bit 7 bit 0 bit 0 bit 7 bit 7 Input Sample (SMP = 0) SSPIF Interrupt Flag Next Q4 Cycle after Q2 SSPSR to SSPBUF 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 197 PIC18F2XK20/4XK20 図 17-5: SPI モードの波形 ( スレーブ モード、CKE = 0) SS Optional SCK (CKP = 0 CKE = 0) SCK (CKP = 1 CKE = 0) Write to SSPBUF SDO bit 7 SDI (SMP = 0) bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 0 bit 7 Input Sample (SMP = 0) SSPIF Interrupt Flag Next Q4 Cycle after Q2 SSPSR to SSPBUF 図 17-6: SPI モードの波形 ( スレーブ モード、CKE = 1) SS Not Optional SCK (CKP = 0 CKE = 1) SCK (CKP = 1 CKE = 1) Write to SSPBUF SDO bit 7 SDI (SMP = 0) bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 0 Input Sample (SMP = 0) SSPIF Interrupt Flag Next Q4 Cycle after Q2 SSPSR to SSPBUF DS41303E_JP - ページ 198 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.3.8 電源管理モードでの動作 SPI マスター モードでは、モジュールのクロックが フル パワー モードは異なる速度で動作することが あります。スリープ モードでは、クロックはすべ て停止します。 アイドル モードでは、クロックが周辺機器に供給 されます。このクロックとして、プライマリ クロッ ク ソース、セカンダリ クロック (Timer1 オシレー タ、32.768 kHz)、または INTOSC ソースを使用でき ます。詳細は、3.0 項「電源管理モード」を参照し てください。 多くの場合、マスターが SPI データを駆動するク ロック速度は重要ではありません。ただし、個々の システムで評価する必要があります。 MSSP 割り込みが有効な場合、マスターがデータ送 信を完了した後に、MSSP 割り込みによりコント ローラがウェイクアップします。 で、データを SPI 送信 / 受信シフト レジスタにシフ ト入力できます。8ビットをすべて受信するとMSSP 割り込みフラグ ビットがセットされ、MSSP 割り込 みを有効にしている場合はデバイスをウェイクし ます。 17.3.9 リセットにより MSSP モジュールが無効になり、現 在の転送を強制終了します。 17.3.10 バス モードの互換性 表 17-1 に、標準 SPI モードと、CKP および CKE の 制御ビットの状態との互換性を示します。 表 17-1: SPI バス モード Control Bits State Standard SPI Mode Terminology 0, 0, 1, 1, • スリープ モードから、スレーブ モード • アイドル モードから、スレーブ モードまたは マスター モード スリープ モードまたはアイドル モードを終了しな いようにするには、MSSP 割り込みを無効にする必 要があります。 リセットの影響 CKP CKE 0 0 1 1 1 0 1 0 0 1 0 1 データをサンプリングするタイミングを制御する SMP ビットもあります。 SPI マスター モードでは、スリープ モードを選択す るとモジュールのすべてのクロックが停止し、送受 信はデバイスがウェイクするまでその状態のまま になります。デバイスが実行モードに戻ると、デー タの送受信を再開します。 SPI スレーブ モードでは、SPI 送信 / 受信シフト レ ジスタは、デバイスとは非同期で動作します。この ため、デバイスを任意の電源管理モードにした状態 表 17-2: Name INTCON SPI の動作に関連するレジスタ Bit 7 Bit 6 Bit 5 GIE/GIEH PEIE/GIEL TMR0IE Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 60 (1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF PIE1 PSPIE (1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 60 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 60 PIR1 TRISA TRISC SSPBUF PSPIF TRISA7(2) TRISA6(2) TRISC7 TRISC6 SSP Receive Buffer/Transmit Register 58 SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 58 SSPSTAT SMP CKE D/A P S R/W UA BF 58 記号の説明 : 網掛けのビットは MSSP の SPI モードでは使用しません。 注 1: これらのビットは 28 ピンデバイスでは未実装です。常にクリアの状態にしてください。 2: PORTA<7:6> とその方向ビットは、さまざまなプライマリ オシレータ モードに合わせてポート ピンと して個々に設定します。無効にすると、これらのビットは「0」として読み出されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 199 PIC18F2XK20/4XK20 17.4 I2C モード 17.4.1 I 2C モードの MSSP モジュールは、マスターとス レーブの機能 ( 一括呼び出しサポートを含む ) をす べてフル実装し、ハードウェアで空いているバスを 特定できるスタート ビットとストップ ビットの割 り込みを提供します ( マルチ マスター機能 )。MSSP モジュールは、標準モードの仕様、および 7 ビット と 10 ビットのアドレス指定を実現しています。 データ転送には、次の 2 つのピンを使用します。 • シリアル クロック (SCL) – SCK/SCL • シリアル データ (SDA) – SDI/SDA これらのピンを入力に設定するには、 対応するTRIS ビットを使用します。 図 17-7: MSSP のブロック図 (I2C™ モード ) Internal Data Bus Read SSPBUF Reg SSPSR Reg MSb LSb SSPMSK Reg Match Detect DS41303E_JP - ページ 200 MSSP Control レジスタ 1 (SSPCON1) MSSP Control レジスタ 2 (SSPCON2) MSSP STATUS レジスタ (SSPSTAT) Serial Receive/Transmit Buffer レジスタ (SSPBUF) MSSP Shift Register (SSPSR) – 直接アクセス不可 MSSP Address レジスタ (SSPADD) MSSP Address Mask (SSPMSK) SSPCON1、および SSPCON2 は I2C モード動作用の 制御レジスタ、SSPSTAT は STATUS レジスタです。 SSPCON1 と SSPCON2 のレジスタは、読み出しと 書き込みができます。SSPSTAT の下位 6 ビットは読 み出し専用です。SSPSTAT の上位 2 ビットは読み出 し / 書き込みができます。 受信動作では、SSPSR と SSPBUF の両方で 1 個の ダブル バッファ受信器を構成します。SSPSR が 1 バイトを受信すると、SSPBUF に転送され、SSPIF 割り込みがセットされます。 Addr Match SSPADD Reg Start and Stop bit Detect • • • • • • • SSP をマスター モードに設定すると、SSPADD の下 位 7 ビットがボーレート ジェネレータのリロード値 として動作します。SSP を I2C スレーブ モードに設 定すると、SSPADD レジスタはスレーブ デバイスの アドレスを保持します。アドレス レジスタの選択 ビットを SSPMSK レジスタと比較することで、SSP を一連のアドレスに応答するように設定できます。 Shift Clock SDI/SDA MSSP モジュールでは、I2C の動作用に次の 7 つの レジスタを使用します。 SSPSR は、データのシフト入力とシフト出力を行う シフト レジスタです。SSPBUF はバッファ レジス タで、データ バイトの書き込み先や読み出し元に なります。 Write SCK/SCL レジスタ Set, Reset S, P bits (SSPSTAT Reg) 送信動作では、SSPBUF はダブル バッファを構成し ません。SSPBUF に書き込むと、SSPBUF と SSPSR の両方に書き込まれます。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 17-3: SSPADD: MSSP ADDRESS AND BAUD RATE レジスタ (I2C モード ) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ADD7 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。 「0」として読み出し 「1」= セット 「0」= クリア x = 不明 マスター モード ビット 7 未使用 : このモードでは使用しない。ビットの状態は不定 ビット 6-0 ADD<6:0>: ボーレート クロック分周器 SCL ピンのクロック周期 = ((ADD<6:0> + 1) *4)/FOSC 10 ビット スレーブ モード : 最上位アドレス バイト ビット 7-3 未使用 : 最上位アドレス バイトでは使用しない。このレジスタのビット状態は不定。マスター 「11110」にする必要がある。ただ が送信するビット パターンは I2C の仕様により固定で、 し、これらのビットはハードウェアにより比較され、このレジスタの値の影響を受けない ビット 2-1 ADD<9:8>: 10 ビット アドレスの上位 2 ビット ビット 0 未使用 : このモードでは使用しない。ビットの状態は不定 10 ビット スレーブ モード : 最下位アドレス バイト ビット 7-0 ADD<7:0>: 10 ビット アドレスの下位 8 ビット 7 ビット スレーブ モード ビット 7-1 ADD<6:0>: 7 ビット アドレス ビット 0 未使用 : このモードでは使用しない。ビットの状態は不定 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 201 PIC18F2XK20/4XK20 レジスタ 17-4: SSPSTAT: MSSP STATUS レジスタ (I2C モード ) R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0 SMP CKE D/A P(1) S(1) R/W(2, 3) UA BF bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 ビット 7 ビット 6 ビット 5 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 SMP: スルー レート制御ビット マスター モードまたはスレーブ モード : 1 = 標準速度モード (100 kHz および 1 MHz) のスルー レート制御を無効にする 0 = 高速モード (400 kHz) のスルー レート制御を有効にする CKE: SMBus 選択ビット マスター モードまたはスレーブ モード : 1 = SMBus 指定の入力を有効にする 0 = SMBus 指定の入力を無効にする D/A: データ / アドレス ビット マスター モード : 予約 スレーブ モード : 1 = 最後の送受信バイトがデータであったことを示す 0 = 最後の送受信バイトがアドレスであったことを示す ビット 4 P: ストップ ビット (1) 1 = ストップ ビットが最後に検出されたことを示す 0 = ストップ ビットがまだ検出されていないことを示す ビット 3 S: スタート ビット (1) 1 = スタート ビットが最後に検出されたことを示す 0 = スタート ビットがまだ検出されていないことを示す ビット 2 R/W: 読み出し / 書き込み情報ビット (I2C モードのみ )(2, 3) スレーブ モード : 1 = 読み出し 0 = 書き込み マスター モード : 1 = 送信中 0 = 送信中でない ビット 1 UA: 更新アドレス ビット (10 ビット スレーブ モードのみ ) 1 = SSPADD レジスタのアドレス更新が必要なことを示す 0 = アドレス更新は必要ない BF: バッファ フル状態ビット 送信モード : 1 = SSPBUF がフル 0 = SSPBUF は空 受信モード : 1 = SSPBUF がフル (ACK とストップ ビットを除く ) 0 = SSPBUF は空 (ACK とストップ ビットを除く ) ビット 0 注 1: 2: 3: Reset 時と SSPEN のクリア時にこのビットがクリアされます。 このビットは、最後のアドレス一致後の R/W ビット情報を保持します。このビットが有効な期間は、 アドレス一致後から、次のスタート ビット、ストップ ビット、または非 ACK ビットまでです。 このビットと、SEN、RSEN、PEN、RCEN、または ACKEN との論理和は、MSSP がアクティブ モー ドであるかどうかを示します。 DS41303E_JP - ページ 202 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 17-5: SSPCON1: MSSP CONTROL 1 レジスタ (I2C モード ) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 ビット 7 WCOL: 書き込み衝突検出ビット マスター送信モード : 1 = I2C の状態が送信を開始可能な状態になっていないときに、SSPBUF レジスタへの書き込み が試行された ( ソフトウェアでクリアする必要がある ) 0 = 衝突なし スレーブ送信モード : 1 = 前のワードを送信中の SSPBUF レジスタに書き込みが行われた ( ソフトウェアでクリアす る必要がある ) 0 = 衝突なし 受信モード ( マスター モードまたはスレーブ モード ): このビットは不定 ビット 6 SSPOV: 受信オーバー フロー表示ビット 受信モード : 1 = SSPBUF レジスタが前のバイトを保持しているときに 1 バイトを受信した ( ソフトウェア でクリアする必要がある ) 0 = オーバーフローなし 送信モード : 送信モードではこのビットは不定 ビット 5 SSPEN: 同期シリアル ポート イネーブル ビット 1 = シリアル ポートを有効にして、SDA と SCL のピンをシリアル ポート ピンに設定する。こ の場合、SDA と SCL のピンを入力として設定する必要がある 0 = シリアル ポートを無効にして、これらのピンを I/O ポート ピンに設定する ビット 4 CKP:SCK 解放制御ビット スレーブ モード : 1 = クロックを解放する 0 = クロックを Low に保持 ( クロック ストレッチ )。データ設定時間の確保に使用する マスター モード : このモードでは使用しない ビット 3-0 SSPM<3:0>: 同期シリアル ポート モード選択ビット 1111 = I2C スレーブ モード、10 ビット アドレスとスタート ビットとストップ ビットの割り込 みを有効にする 1110 = I2C スレーブ モード、7 ビット アドレスとスタート ビットとストップ ビットの割り込 みを有効にする 1011 = I2C ファームウェア制御マスター モード ( スレーブはアイドル ) 1000 = I2C マスター モード、クロック = FOSC/(4 * (SSPADD + 1)) 0111 = I2C スレーブ モード、10 ビット アドレス 0110 = I2C スレーブ モード、7 ビット アドレス ここに記載されていないビットの組み合わせは、予約されているか、SPI モードでのみ実装さ れる 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 203 PIC18F2XK20/4XK20 SSPCON2: MSSP CONTROL レジスタ (I2C モード ) レジスタ 17-6: R/W-0 GCEN R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ACKSTAT ACKDT(2) ACKEN(1) RCEN(1) PEN(1) RSEN(1) SEN(1) bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し x = 不明 「0」= クリア ビット 7 GCEN: 一括呼び出しイネーブル ビット ( スレーブ モードのみ ) 1 = SSPSR が一括呼び出しアドレス (0000h) を受信したときに割り込みを生成 0 = 一括呼び出しアドレスを無効にする ビット 6 ACKSTAT: 肯定応答ステータス ビット ( マスター送信モードのみ ) 1 = スレーブから ACK を受信していない 0 = スレーブから ACK を受信した ビット 5 ACKDT: 肯定応答データ ビット ( マスター受信モードのみ )(2) 1 = NACK 0 = ACK ビット 4 ACKEN: 肯定応答シーケンス イネーブル ビット ( マスター受信モードのみ )(1) 1 = SDA ピンと SCL ピンで肯定応答シーケンスを開始し、ACKDT データ ビットを送信する。 ハードウェアで自動クリアされる 0 = 肯定応答シーケンスがアイドル ビット 3 RCEN: 受信イネーブル ビット ( マスター モードのみ )(1) 1 = I2C の受信モードを有効にする 0 = 受信はアイドル ビット 2 PEN: ストップ条件イネーブル ビット ( マスター モードのみ )(1) 1 = SDA ピンと SCL ピンでストップ条件を開始する。ハードウェアで自動クリアされる 0 = ストップ条件はアイドル ビット 1 RSEN: リピート スタート条件イネーブル ビット ( マスター モードのみ )(1) 1 = SDAピンとSCLピンでリピート スタート条件を開始する。 ハードウェアで自動クリアされる 0 = リピート スタート条件はアイドル ビット 0 SEN: スタート条件イネーブル / ストレッチ イネーブル ビット (1) マスター モード : 1 = SDA ピンと SCL ピンでスタート条件を開始する。ハードウェアで自動クリアされる 0 = スタート条件はアイドル スレーブ モード : 1 = スレーブ送信とスレーブ受信の両方について、 クロック ストレッチを有効にする ( ストレッ チ有効 ) 0 = スレーブ受信のクロック ストレッチを無効にする。スレーブ送信のクロック ストレッチは 有効のまま 注 1: 2: ACKEN、RCEN、PEN、RSEN、SEN のビット : I2C モジュールがアイドル モード以外の場合、これ らのビットはセットできず ( スプーリングなし )、SSPBUF への書き込みはできません (SSPBUF への 書き込みは無効 )。 受信の最後にユーザーが肯定応答シーケンスを開始したときに送信される値です。 DS41303E_JP - ページ 204 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.4.2 動作 MSSP モジュールの機能を有効にするには、 SSPCON1レジスタのSSPENビットをセットします。 SSPCON1 レジスタで、I 2C 動作を制御できます。 SSPCON1 レジスタのモード選択ビットの 4 ビット を使用して、次のいずれかの I 2C モードを選択でき ます。 • I2C マスター モード、クロック = (FOSC/4) x (SSPADD + 1) • I 2C スレーブ モード (7 ビット アドレス ) • I 2C スレーブ モード (10 ビット アドレス ) • I 2C スレーブ モード (7 ビット アドレス )、スター ト ビットとストップ ビットの割り込み有効 • I 2C スレーブ モード (10 ビット アドレス )、 スター ト ビットとストップ ビットの割り込み有効 • I 2C ファームウェア制御マスター モード、スレー ブはアイドル SSPEN ビットをセットして I 2C モードを選択する と、対応する TRIS ビットをセットして SCL ピンと SDA ピンを入力にプログラムしている場合、これ らのピンが強制的にオープンドレインになります。 モジュールの正常な動作を確保するには、SCL ピン と SDA ピンに外部プルアップ抵抗を接続する必要 があります。 17.4.3 スレーブ モード スレーブ モードでは、SDA ピンと SCL ピンを入力 に設定する必要があります。MSSP モジュールは、 必要に応じて出力データにより入力状態を無効に します ( スレーブ送信器 )。 I 2C スレーブ モードのハードウェアは常に、アドレ ス一致時に割り込みを生成します。モード選択ビッ トを使用して、スタート ビットおよびストップ ビットによる割り込みも選択できます。 アドレスが一致した場合、またはアドレス一致後の データ転送を受信した場合、ハードウェアは自動的 に肯定応答 (ACK) パルスを生成し、現在 SSPSR レ ジスタにある受信値をSSPBUFレジスタにロードし ます。 次の条件が2つ以上あてはまる場合、MSSPモジュー ルはこの ACK パルスを送信しません。 • 転送を受信する前に、SSPSTAT レジスタのバッ ファ フル検出ビット BF がセットされている • 転送を受信する前に、SSPCON1 レジスタのオー バーフロー ビット SSPOV がセットされている この場合、SSPSR レジスタの値は SSPBUF にロー ドされず、PIR1 レジスタの SSPIF ビットがセット されます。BF ビットは SSPBUF レジスタの読み出 しでクリアされ、SSPOV ビットはソフトウェアか らクリアされます。 2009 Microchip Technology Inc. 正常な動作を確保するには、SCL クロック入力に最 小の High と Low が必要です。I2C の仕様の High と Low の期間、および MSSP モジュールの必要要件 を、タイミング パラメータ 100 およびパラメータ 101 で示します ( 表 26-19 を参照 )。 17.4.3.1 アドレス指定 有効になった MSSP モジュールは、スタート条件が 発生するまで待機します。 スタート条件の後、8 ビッ トが SSPSR レジスタにシフト入力されます。入力 ビットはすべて、クロック (SCL) ラインの立ち上が り エ ッ ジ で サ ン プ リ ン グ さ れ ま す。レ ジ ス タ SSPSR<7:1> の値が、SSPADD レジスタの値と比較 されます。8 番目のクロック (SCL) パルスの立ち下 がりエッジごとに、アドレスが比較されます。アド レスが一致し、BF ビットと SSPOV ビットがクリア されると、次のイベントが発生します。 1. 2. 3. 4. SSPSR レジスタの値が SSPBUF レジスタにロー ドされる バッファ フル ビット BF がセットされる ACK パルスが生成される 9番目のSCLパルスの立ち下がりエッジごとに、 PIR1 レジスタの MSSP 割り込みフラグ ビット SSPIF がセットされる ( 有効な場合は割り込み が生成される ) 10 ビット アドレス モードでは、スレーブがアドレ スの 2 バイトを受信する必要があります。アドレス の最初の 1 バイトの上位 5 ビットは、10 ビット ア ドレスであるかどうかを示します。スレーブ デバイ スがアドレスの 2 番目のバイトを受信できるよう に、SSPSTAT レジスタの R/W ビットには、書き込 みを指定する必要があります。10 ビット アドレス 場合、最初のバイトは「11110 A9 A8 0」となり、 「A9」と「A8」はアドレスの上位 2 ビットです。10 ビット アドレスのイベント シーケンスは次のとお りです。ステップ 7 ~ステップ 9 はスレーブ送信器 に対応します。 1. 2. 3. 4. 5. Preliminary アドレスの最初 ( 上位 ) のバイトを受信する (SSPSTAT レジスタの SSPIF、BF、および UA のビットがセットされる ) アドレスの 2 番目 ( 下位 ) のバイトで SSPADD レジスタを更新する (UA ビットをクリアし、 SCL ラインを解放する ) SSPBUF レジスタを読み出し (BF ビットをクリ ア )、フラグ ビット SSPIF をクリアする アドレスの 2 番目 ( 下位 ) のバイトを受信する (SSPIF、BF、および UA のビットがセットされ る )。アドレスが一致した場合、次のステップ まで SCL が保持される。一致しない場合は、 SCL は保持されない アドレスの最初 ( 上位 ) のバイトで SSPADD レ ジスタを更新する (UA ビットをクリアし、SCL ラインを解放する ) DS41303E_JP - ページ 205 PIC18F2XK20/4XK20 6. 7. 8. 9. SSPBUF レジスタを読み出し (BF ビットをクリ ア )、フラグ ビット SSPIF をクリアする リピート スタート条件を受信する アドレスの最初 ( 上位 ) のバイトを受信する (SSPIF、および BF のビットがセットされる ) SSPBUF レジスタを読み出し (BF ビットをクリ ア )、フラグ ビット SSPIF をクリアする 17.4.3.2 受信 アドレス バイトの R/W ビットがクリアされ、アド レスが一致すると、SSPSTAT レジスタの R/W ビッ トがクリアされます。受信したアドレスが SSPBUF レジスタにロードされ、SDA ラインが Low に保持 されます (ACK)。 アドレス バイトのオーバーフロー条件が存在する 場合は、肯定応答 (ACK) パルスは送信されません。 オーバーフロー条件は、SSPSTAT レジスタの BF ビ ッ ト の セ ッ ト、ま た は SSPCON1 レ ジ ス タ の SSPOV ビットのセットで指定します。 データ転送の各バイトについてMSSP割り込みが生 成されます。PIR1 レジスタのフラグ ビット SSPIF は、ソフトウェアでクリアする必要があります。バ イトのステータスを特定するには、SSPSTAT レジス タを使用します。 SSPCON2 レジスタの SEN ビットがセットされてい る場合、個々のデータ転送の後 SCK/SCL が Low に 保持されます ( クロック ストレッチ )。クロックを 解放するには、SSPCON1 レジスタの CKP ビットを セットします。詳細は、17.4.4 項「クロック スト レッチ」を参照してください。 DS41303E_JP - ページ 206 17.4.3.3 送信 入力アドレス バイトの R/W ビットがセットされ、 アドレスが一致すると、SSPSTAT レジスタの R/W ビ ット がセ ッ トさ れ ます。受信 し たア ド レス が SSPBUF レジスタにロードされます。9 番目のビッ トで ACK パルスが送信され、SEN の状態には関係 なく SCK/SCL が Low に保持されます ( 詳細は 17.4.4 項「クロック ストレッチ」を参照 )。クロック スト レッチにより、スレーブがデータの送信準備を完了 するまでマスターは次のクロック パルスをアサー トできなくなります。送信データを SSPBUF レジス タにロードする必要があります。これにより SSPSR レジスタにもロードされます。その後、SSPCON1 レジスタの CKP ビットをセットして、SCK/SCL ピ ンを有効にする必要があります。SCL 入力の立ち下 がりエッジで、データ 8 ビットがシフト出力されま す。これにより、SCL が High の期間、SDA 信号が 有効になります ( 図 17-9)。 マスター受信器からの ACK パルスは、9 番目の SCL 入力パルスの立ち上がりエッジごとにラッチされ ます。SDA ラインが High ( 非 ACK) の場合、デー タ転送が完了します。この場合、スレーブが ACK をラッチすると、スレーブ ロジックがリセットさ れ (SSPSTAT レジスタをリセット )、スレーブは次 のスタート ビットの受信をモニタします。SDA ラ イ ン が Low (ACK) の 場 合、次 の 送 信 デ ー タ を SSPBUF レジスタにロードする必要があります。こ の場合も、CKP ビットをセットして SCK/SCL ピン を有効にする必要があります。 データ転送の各バイトについてMSSP割り込みが生 成されます。SSPIF ビットはソフトウェアでクリア する必要があり、バイトのステータスを特定するに は、SSPSTAT レジスタを使用します。9 番目のク ロック パルスの立ち下がりエッジごとに、SSPIF ビットがセットされます。 Preliminary 2009 Microchip Technology Inc. 2009 Microchip Technology Inc. Preliminary CKP 2 A6 3 4 A4 5 A3 Receiving Address A5 6 A2 (CKP does not reset to ‘0’ when SEN = 0) SSPOV (SSPCON1<6>) BF (SSPSTAT<0>) (PIR1<3>) SSPIF 1 SCL S A7 7 A1 8 9 ACK R/W = 0 1 D7 3 4 D4 5 D3 Receiving Data D5 Cleared by software SSPBUF is read 2 D6 6 D2 7 D1 8 D0 9 ACK 1 D7 2 D6 3 4 D4 5 D3 Receiving Data D5 6 D2 7 D1 8 D0 Bus master terminates transfer P SSPOV is set because SSPBUF is still full. ACK is not sent. 9 ACK 図 17-8: SDA PIC18F2XK20/4XK20 I2C™ スレーブ モードのタイミング、SEN = 0 ( 受信、7 ビット アドレス ) DS41303E_JP - ページ 207 DS41303E_JP - ページ 208 1 Preliminary CKP 2 A6 Data in sampled BF (SSPSTAT<0>) SSPIF (PIR1<3>) S A7 3 4 A4 5 A3 6 A2 Receiving Address A5 7 A1 8 R/W = 0 9 ACK SCL held low while CPU responds to SSPIF 1 D7 3 D5 4 5 D3 CKP is set by software SSPBUF is written by software 6 D2 Transmitting Data D4 Cleared by software 2 D6 7 8 D0 9 From SSPIF ISR D1 ACK 1 D7 4 D4 5 D3 Cleared by software 3 D5 6 D2 CKP is set by software SSPBUF is written by software 2 D6 7 8 D0 9 ACK From SSPIF ISR D1 Transmitting Data P 図 17-9: SCL SDA PIC18F2XK20/4XK20 I2C™ スレーブ モードのタイミング ( 送信、7 ビット アドレス ) 2009 Microchip Technology Inc. 2009 Microchip Technology Inc. 2 1 Preliminary 4 1 5 0 7 A8 UA is set indicating that the SSPADD needs to be updated SSPBUF is written with contents of SSPSR 6 A9 8 9 (CKP does not reset to ‘0’ when SEN = 0) UA (SSPSTAT<1>) SSPOV (SSPCON1<6>) CKP 3 1 Cleared by software BF (SSPSTAT<0>) (PIR1<3>) SSPIF 1 SCL S 1 ACK R/W = 0 A7 2 4 A4 5 A3 6 A2 8 9 A0 ACK UA is set indicating that SSPADD needs to be updated Cleared by hardware when SSPADD is updated with low byte of address 7 A1 Cleared by software 3 A5 Dummy read of SSPBUF to clear BF flag 1 A6 Receive Second Byte of Address 1 D7 4 5 6 7 Cleared by software 3 8 9 1 2 4 5 6 7 8 D1 D0 Cleared by software 3 D3 D2 Receive Data Byte D1 D0 ACK D7 D6 D5 D4 Cleared by hardware when SSPADD is updated with high byte of address 2 D3 D2 Receive Data Byte D6 D5 D4 Clock is held low until update of SSPADD has taken place 9 P Bus master terminates transfer SSPOV is set because SSPBUF is still full. ACK is not sent. ACK 図 17-10: SDA Receive First Byte of Address Clock is held low until update of SSPADD has taken place PIC18F2XK20/4XK20 I2C™ スレーブ モードのタイミング、SEN = 0 ( 受信、10 ビット アドレス ) DS41303E_JP - ページ 209 DS41303E_JP - ページ 210 2 1 Preliminary CKP (SSPCON1<4>) UA (SSPSTAT<1>) BF (SSPSTAT<0>) (PIR1<3>) SSPIF 1 SCL S 1 4 1 5 0 6 7 A9 A8 8 UA is set indicating that the SSPADD needs to be updated SSPBUF is written with contents of SSPSR 3 1 9 ACK R/W = 0 1 3 4 5 Cleared by software 2 7 UA is set indicating that SSPADD needs to be updated Cleared by hardware when SSPADD is updated with low byte of address 6 A6 A5 A4 A3 A2 A1 8 A0 Receive Second Byte of Address Dummy read of SSPBUF to clear BF flag A7 9 ACK 2 3 1 4 1 Cleared by software 1 1 5 0 6 8 9 ACK R/W=1 1 2 4 5 6 7 P CKP is automatically cleared by hardware, holding SCL low CKP is set by software 9 ACK Bus master terminates transfer Completion of data transmission clears BF flag 8 D4 D3 D2 D1 D0 Cleared by software 3 D7 D6 D5 Transmitting Data Byte Clock is held low until CKP is set to ‘1’ Write of SSPBUF BF flag is clear initiates transmit at the end of the third address sequence 7 A9 A8 Cleared by hardware when SSPADD is updated with high byte of address. Dummy read of SSPBUF to clear BF flag Sr 1 Receive First Byte of Address Clock is held low until update of SSPADD has taken place 図 17-11: SDA Receive First Byte of Address Clock is held low until update of SSPADD has taken place PIC18F2XK20/4XK20 I2C™ スレーブ モードのタイミング ( 送信、10 ビット アドレス ) 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.4.3.4 SSPM<3:0> ビットをセットして I2C スレーブ モー ド (7 ビットまたは 10 ビットのアドレス ) を選択す る前に、このレジスタを設定する必要があります。 SSP マスク レジスタ SSP Mask (SSPMSK) レジスタは、I2C スレーブ モー ドで、アドレス比較動作中に SSPSR レジスタに保 持される値のマスクとして使用できます。SSPMSK レジスタの「0」ビットは、SSPSR レジスタの対応 するビットを「不定」にする効果があります。 SSP マスク レジスタは、次の期間アクティブです。 • 7ビット アドレス モード: A<7:1>のアドレス比較 • 10 ビット アドレス モード : A<7:0> のアドレス比 較のみ。アドレスの最初 ( 上位 ) のバイトの受信 時には、SSP マスクの効果はありません リセット条件ではこのレジスタのビットはすべて 「1」にリセットされ、マスク値を書き込むまで標準 の SSP 動作には影響しません。 レジスタ 17-7: SSPMSK: SSP MASK レジスタ R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0(1) bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 ビット 7-1 MSK<7:1>: マスク ビット 1 = I2C アドレス一致を検出するため、受信したアドレス ビットを SSPADD<n> と比較 0 = I2C アドレス一致の検出に、受信アドレス ビット n を使用しない ビット 0 MSK<0>: I2C スレーブ モード、10 ビット アドレスのマスク ビット (1) I2C スレーブ モード、10 ビット アドレス (SSPM<3:0> = 0111): 1 = I2C アドレス一致を検出するため、受信したアドレス ビット 0 を SSPADD<0> と比較 0 = I2C アドレス一致の検出に、受信アドレス ビット 0 を使用しない 注 1: MSK の 0 ビットは、10 ビット スレーブ モードでのみ使用します。その他すべてのモードでは、 このビットは影響しません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 211 PIC18F2XK20/4XK20 17.4.4 クロック ストレッチ 注: 9 番目のクロックの立ち下がりエッジの前 に、UA ビットをポーリングして SSPADD レジスタを更新することで UA ビットをク リ ア し た 場 合、ま た こ の エ ッ ジ の 前 に SSPBUF レジスタを読み出さず BF ビット をクリアしない場合は、CKP ビットは Low としてアサートされません。BF ビットの 状態に基づくクロック ストレッチは、 デー タ シーケンスでのみ発生します。アドレ ス シーケンスでは発生しません。 7 ビットと 10 ビットの両方のスレーブ モードで、 送信シーケンス中の自動クロック ストレッチを実 装しています。 SSPCON2 レジスタの SEN ビットを使用して、受信 中のクロック ストレッチを有効にできます。SEN ビットをセットすると、各データ受信シーケンスの 終了時点で SCL ピンが Low に保持されます。 17.4.4.1 7 ビット スレーブ受信モード (SEN = 1) のクロックストレッチ 7 ビット スレーブ受信モードでは、BF ビットがセッ トされている場合、ACK シーケンスの終了時点か ら 9 番目のクロックの立ち下がりエッジで、 SSPCON1レジスタのCKPビットが自動クリアされ、 SCL 出力を強制的に Low に保持します。CKP をク リアして「0」にすると、SCL ラインを Low にア サートします。受信を継続するには、ユーザー ISR 内で CKP ビットをセットする必要があります。SCL ラインを Low に保持することで、マスター デバイ スが次のデータ転送シーケンスを開始する前に、 ユーザーが ISR をサービスし、SSPBUF の内容を読 み出す時間を確保できます。これにより、バッファ のオーバーランを防止できます ( 図 17-13 を参照 )。 17.4.4.3 7 ビット スレーブ送信モードでは、BF ビットがクリ アされている場合、9 番目のクロックの立ち下がり エッジの後で CKP ビットをクリアすることで、ク ロック ストレッチを実行します。 クロック ストレッ チは、SEN ビットの状態には関係なく発生します。 送信を継続するには、ユーザー ISR で CKP ビット をセットする必要があります。SCL ラインを Low に保持することで、マスター デバイスが次のデー タ転送シーケンスを開始する前に、ユーザーが ISR をサービスし、SSPBUF の内容をロードする時間を 確保できます ( 図 17-9 を参照 )。 注 1: 9 番目のクロックの立ち下がりエッジよ りも前に SSPBUF の内容を読み出すと、 BF ビットがクリアされるので、このた め CKP ビットはクリアされず、クロッ ク ストレッチは発生しません。 注 1: 2: BF ビットの状態とは無関係に、ソフト ウェアで CKP ビットをセットできます。 オーバーフロー条件を防ぐため、注意し て、次の受信シーケンスの前に ISR の BF ビットをクリアする必要があります。 2: 17.4.4.2 10 ビット スレーブ受信モード (SEN = 1) のクロック ストレッチ 10 ビット スレーブ受信モードのアドレス シーケン スでは、クロック ストレッチは自動的に実行され ますが CKP はクリアされません。このシーケンス 中に、9 番目のクロックの後で UA ビットをセット すると、クロック ストレッチが開始されます。UA ビットがセットされるのは、10 ビット アドレスの 上位バイトを受信し、次に R/W ビットが「0」にク リアされた 10 ビット アドレスの 2 番目のバイトを 受信した後です。クロック ラインは、SSPADD の 更新時に解放されます。クロック ストレッチは、7 ビット モードと同様に、各データ受信シーケンス で発生します。 DS41303E_JP - ページ 212 7 ビット スレーブ送信モードの クロック ストレッチ 17.4.4.4 9 番目のクロックの立ち下がりエッジよ りも前に SSPBUF の内容をロードする と、BF ビットがセットされるので、CKP ビットはクリアされず、クロック スト レッチは発生しません。 BF ビットの状態とは無関係に、ソフト ウェアで CKP ビットをセットできます。 10 ビット スレーブ送信モードの クロック ストレッチ 10 ビット スレーブ送信モードのクロック ストレッ チは、10 ビット スレーブ受信モードと同様に、最 初の 2 つのアドレス シーケンスの期間中 UA ビット の状態で制御します。最初の 2 つのアドレス シー ケンスに続く 3 つ目のアドレス シーケンスには、10 ビット アドレスの上位ビット、および「1」にセッ トされた R/W ビットがあります。3 つ目のアドレス シーケンスの実行後は UA ビットはセットされず、 モジュールが送信モードに設定され、クロック ス トレッチは 7 ビット スレーブ送信モードと同様に BF フラグで制御されます ( 図 17-11 を参照 )。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.4.4.5 クロック同期と CKP ビット CKP ビットをクリアすると、SCL 出力は強制的に 「0」になります。ただし、CKP ビットをクリアし ても、SCL 出力が Low としてサンプリングされる まで SCL 出力 Low はアサートされません。このた め、外部 I2C マスター デバイスが SCL ラインをア サートするまで、CKP ビットは SCL ラインをアサー トしません。CKP ビットがセットされ、かつ I2C バ スのその他すべてのデバイスが SCL をデアサート するまで、SCL 出力は Low のままです。これによ り、CKP ビットの書き込みにより SCL の最小 High 期間の要件を違反することを防止できます(図17-12 を参照 )。 図 17-12: クロック同期タイミング Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 SDA DX DX – 1 SCL CKP Master device asserts clock Master device deasserts clock WR SSPCON1 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 213 DS41303E_JP - ページ 214 Preliminary CKP SSPOV (SSPCON1<6>) BF (SSPSTAT<0>) (PIR1<3>) SSPIF 1 SCL S A7 2 A6 3 4 A4 5 A3 6 A2 Receiving Address A5 7 A1 8 9 ACK R/W = 0 3 4 D4 5 D3 Receiving Data D5 Cleared by software 2 D6 If BF is cleared prior to the falling edge of the 9th clock, CKP will not be reset to ‘0’ and no clock stretching will occur SSPBUF is read 1 D7 6 D2 7 D1 9 ACK 1 D7 BF is set after falling edge of the 9th clock, CKP is reset to ‘0’ and clock stretching occurs 8 D0 3 4 D4 5 D3 Receiving Data D5 CKP written to ‘1’ in software 2 D6 Clock is held low until CKP is set to ‘1’ 6 D2 7 D1 8 D0 Bus master terminates transfer P SSPOV is set because SSPBUF is still full. ACK is not sent. 9 ACK Clock is not held low because ACK = 1 図 17-13: SDA Clock is not held low because buffer full bit is clear prior to falling edge of 9th clock PIC18F2XK20/4XK20 I2C™ スレーブ モードのタイミング、SEN = 1 ( 受信、7 ビット アドレス ) 2009 Microchip Technology Inc. 2009 Microchip Technology Inc. 2 1 Preliminary UA (SSPSTAT<1>) SSPOV (SSPCON1<6>) CKP 3 1 4 1 5 0 6 7 A9 A8 8 UA is set indicating that the SSPADD needs to be updated SSPBUF is written with contents of SSPSR Cleared by software BF (SSPSTAT<0>) (PIR1<3>) SSPIF 1 SCL S 1 9 ACK R/W = 0 A7 2 4 A4 5 A3 6 A2 Cleared by software 3 A5 7 A1 8 A0 注: 9 番目のクロックの立ち下が りエッジの前にSSPADDレジ スタを更新すると、UA には 影響せず、UA はセットのま まになります。 UA is set indicating that SSPADD needs to be updated Cleared by hardware when SSPADD is updated with low byte of address after falling edge of ninth clock Dummy read of SSPBUF to clear BF flag 1 A6 Receive Second Byte of Address 9 ACK 2 4 5 6 7 注: 9 9 番目のクロックの立ち下がりエッジの 前に SSPADD レジスタを更新すると、 UA には影響せず、UA はセットのままに なります。 Cleared by hardware when SSPADD is updated with high byte of address after falling edge of ninth clock 8 ACK 1 4 5 6 7 8 9 ACK Bus master terminates transfer P Clock is not held low because ACK = 1 SSPOV is set because SSPBUF is still full. ACK is not sent. D1 D0 Cleared by software 3 CKP written to ‘1’ by software 2 D3 D2 Receive Data Byte D7 D6 D5 D4 Clock is held low until CKP is set to ‘1’ D1 D0 Cleared by software 3 D3 D2 Dummy read of SSPBUF to clear BF flag 1 D7 D6 D5 D4 Receive Data Byte Clock is held low until update of SSPADD has taken place 図 17-14: SDA Receive First Byte of Address Clock is held low until update of SSPADD has taken place PIC18F2XK20/4XK20 I2C™ スレーブ モードのタイミング、SEN = 1 ( 受信、10 ビット アドレス ) DS41303E_JP - ページ 215 PIC18F2XK20/4XK20 17.4.5 一括呼び出しアドレスと一致した場合は、SSPSR の 内容が SSPBUF に転送され、BF フラグ ビット ( ビッ ト 8) がセットされます。また、ビット 9 (ACK ビッ ト ) の立ち下がりエッジで SSPIF 割り込みフラグ ビットがセットされます。 一括呼び出しアドレスのサポート 2 I C バスのアドレス指定手順では、通常、スタート 条件の後の第 1 バイトによりどのデバイスを、マス ターがアドレス指定するスレーブにするかが決ま ります。例外は、すべてのデバイスをアドレス指定 する一括呼び出しアドレスです。このアドレスを使 用すると、理論的にはすべてのデバイスが ACK を 返します。 割り込みを使用するときには、SSPBUF の内容を読 み出して割り込みのソースを確認できます。読み出 した値を使用して、アドレスがデバイス固有のもの か、一括呼び出しアドレスかを特定できます。 一括呼び出しアドレスは、I2C プロトコルの特殊用 途に予約されている 8 つのアドレスのうちの 1 つで す。アドレスはすべて「0」で、R/W = 0 です。 10 ビット モードでは、アドレスの後半の一致を確 認して SSPSTAT レジスタの UA ビットをセットす るために、SSPADD を更新する必要があります。 GCENビットがセットされているときに一括呼び出 しアドレスがサンプリングされたが、スレーブが 10 ビット アドレス モードに設定されている場合は、 アドレスの後半は不要となり、UA ビットはセット されずスレーブは ACK 応答後にデータ受信を開始 します ( 図 17-15)。 一 括 呼 び 出 し ア ド レ ス が 認 識 さ れ る の は、 SSPCON2 の GCEN ビットがセットされているとき です。スタート ビットの検出後、8 ビットが SSPSR にシフト入力され、アドレスが SSPADD と比較さ れます。また、アドレスは、一括呼び出しアドレス とも比較され、ハードウェア内に固定されます。 図 17-15: スレーブ モードの一括呼び出しアドレスのシーケンス (7 ビットまたは 10 ビットのアドレス モード ) Address is compared to General Call Address after ACK, set interrupt R/W = 0 ACK D7 General Call Address SDA SCL S 1 2 3 4 5 6 7 8 9 1 Receiving Data ACK D6 D5 D4 D3 D2 D1 D0 2 3 4 5 6 7 8 9 SSPIF BF (SSPSTAT<0>) Cleared by software SSPBUF is read SSPOV (SSPCON1<6>) ‘0’ GCEN (SSPCON2<7>) ‘1’ DS41303E_JP - ページ 216 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.4.6 マスター モード 注: マスター モードを有効にするには、SSPCON1 の SSPMビットを適切にセット / クリアし、SSPEN ビッ トをセットします。マスター モードでは、SCL と SDA のラインを MSSP ハードウェアで操作します。 マスター モードの動作は、スタートとストップの 条件の検出時に割り込みを生成してサポートしま す。ストップ (P) とスタート (S) のビットは、リセッ ト時、または MSSP モジュールを無効にしたときに クリアされます。I 2C バスの制御は、P ビットがセッ トされているとき、または S ビットと P ビットの両 方がクリアされている、バスのアイドル時に実行で きます。 次のイベントで、SSP 割り込みフラグ ビット SSPIF がセットされます ( 有効な場合は SSP 割り込みが 発生 )。 • • • • • ファームウェア制御マスター モードでは、スタート ビットとストップ ビットの条件に基づいて、ユー ザー コードが I 2C バスの動作をすべて実行します。 マスター モードを有効にすると、次の 6 つの動作 ができます。 3. 4. 5. 6. スタート条件 ストップ条件 データ転送バイトの送信 / 受信 ACK 送信 リピート スタート SDA と SCL にスタート条件をアサートする SDA と SCL にリピート スタート条件をアサー トする SSPBUF レジスタへの書き込みによりデータ / アドレスの送信を開始する I2C ポートをデータ受信に設定する 受信したデータ バイトの最後で肯定応答条件 を生成する SDA と SCL にストップ条件を生成する 図 17-16: MSSP のブロック図 (I2C™ マスター モード ) SSPM<3:0> SSPADD<6:0> Internal Data Bus Read Write SSPBUF SDA Baud Rate Generator Shift Clock SDA In SCL In Bus Collision 2009 Microchip Technology Inc. MSb LSb Start bit, Stop bit, Acknowledge Generate Start bit Detect Stop bit Detect Write Collision Detect Clock Arbitration State Counter for end of XMIT/RCV Preliminary Clock Cntl SCL Receive Enable SSPSR Clock Arbitrate/WCOL Detect (hold off clock source) 1. 2. MSSP モジュールを I2C マスター モードに 設定した場合、イベントをキューに入れる ことはできません。例えば、スタート条件 を開始して、そのスタート条件が完了する 前にSSPBUFレジスタに書き込みを行って 送信を開始することはできません。この場 合、SSPBUF には書き込まれず、そのこと を示す WCOL ビットがセットされます。 Set/Reset, S, P, WCOL (SSPSTAT) Set SSPIF, BCLIF Reset ACKSTAT, PEN (SSPCON2) DS41303E_JP - ページ 217 PIC18F2XK20/4XK20 17.4.6.1 I2C マスター モードの動作 代表的な送信シーケンスは次のとおりです。 マスター デバイスが、シリアル クロック パルス、 およびスタートとストップの条件をすべて生成し ます。転送は、ストップ条件、またはリピート ス タート条件で終了します。リピート スタート条件 では次のシリアル転送も開始されるので、I2C バス は解放されません。 マスター送信モードでは、シリアル データは SDA から、シリアル クロックは SCL から出力されます。 送信する最初のバイトは、受信デバイスのスレーブ アドレス (7 ビット )、および読み出し / 書き込み (R/W) ビットを持ちます。この場合、R/W ビットは 「0」です。一度に 8 ビットのシリアル データが送 信されます。各バイトの送信後、ACK ビットを受 信します。スタート条件とストップ条件は、シリア ル転送の開始と終了を示す出力です。 マスター受信モードでは、送信する最初のバイト は、送信デバイスのスレーブ アドレス (7 ビット )、 および R/W ビットを持ちます。この場合、R/W ビッ トは「1」です。したがって、送信する最初のバイ トには、7 ビットのスレーブ アドレスの後に受信 ビットを示す「1」があります。シリアル データは SDA から受信し、SCL はシリアル クロックを出力 します。一度に 8 ビットのシリアル データが受信 されます。1 バイト受信するたびに、ACK ビットを 送信します。スタート条件とストップ条件は、送信 の開始と終了を示します。 SPI モード動作用のボーレート ジェネレータを使用 して、I2C が 100 kHz、400 kHz、または 1 MHz で動 作するための SCL クロック周波数を設定します。詳 細は、17.4.7 項「ボーレート」を参照してください。 DS41303E_JP - ページ 218 1. ユーザーが SSPCON2 レジスタの SEN ビットを セットして、スタート条件を生成する 2. SSPIF がセットされる。MSSP モジュールは、 他の動作を実行する前に必要なスタート期間 だけ待機する 3. ユーザーが送信するスレーブ アドレスを SSPBUF にロードする 4. アドレスを SDA ピンからシフト出力して、8 ビットすべてを送信する 5. MSSP モジュールがスレーブ デバイスからの ACK ビットをシフト入力し、SSPCON2 レジス タの ACKSTAT ビットに値を書き込む 6. MSSP モジュールが SSPIF ビットをセットし、 9 番目のクロック サイクルの最後で割り込みを 生成する 7. ユーザーが SSPBUF に 8 ビット データをロー ドする 8. データを SDA ピンからシフト出力して、8 ビッ トすべてを送信する 9. MSSP モジュールがスレーブ デバイスからの ACK ビットをシフト入力し、SSPCON2 レジス タの ACKSTAT ビットに値を書き込む 10. MSSP モジュールが SSPIF ビットをセットし、 9 番目のクロック サイクルの最後で割り込みを 生成する 11. ユーザーが SSPCON2 レジスタの PEN ビットを セットして、ストップ条件を生成する 12. ストップ条件が完了すると割り込みを生成する Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.4.7 ボーレート 2 I C マスター モードでは、Baud Rate Generator (BRG: ボーレート ジェネレータ ) のリロード値は SSPADD レジスタにあります ( 図 17-17)。SSPBUF への書き 込みが発生すると、ボーレート ジェネレータはカ ウントを自動的に開始します。BRG は「0」までカ ウント ダウンし、次のリロードが発生するまで停 止します。Q2 と Q4 のクロックでは、命令サイクル (TCY) ごとに BRG カウントが 2 ずつ減少します。I2C マスター モードでは、BRG は自動的にリロードさ れます。 SCL の 1/2 周期は、 「[(SSPADD+1) 2]/FOSC」 です。したがって、 「SSPADD = (FCY/FSCL) -1」とな ります。 図 17-17: 指定した動作が完了すると ( つまり、最後のデータ ビットの後に ACK を送信すると )、内部クロックは カウントを自動的に停止し、SCL ピンは直前の状態 のままになります。 表 17-3 に、命令サイクルと SSPADD にロードされ る BRG 値に基づくクロック速度を示します。 ボーレートを生成するための SSPADD の最小値は 0x03 です。 ボーレート ジェネレータのブロック図 SSPM<3:0> SSPM<3:0> Reload SCL Control CLKOUT 表 17-3: 注 1: SSPADD<7:0> Reload BRG Down Counter FOSC/2 I2C™ のクロック 速度と BRG FOSC FCY BRG Value FSCL (2 Rollovers of BRG) 64 MHz 16 MHz 27h 400 kHz(1) 64 MHz 16 MHz 32h 313.7 kHz 64 MHz 16 MHz 3Fh 250 kHz 40 MHz 10 MHz 18h 400 kHz(1) 40 MHz 10 MHz 1Fh 312.5 kHz 40 MHz 10 MHz 63h 100 kHz 16 MHz 4 MHz 09h 400 kHz(1) 16 MHz 4 MHz 0Ch 308 kHz 16 MHz 4 MHz 27h 100 kHz 4 MHz 1 MHz 09h 100 kHz I2C インターフェースは 400 kHz の I2C の仕様 (100 kHz を超えるクロック速度に適用される ) のすべて を満たしてはいませんが、高いクロック速度が必要なアプリケーションで注意を払って使用できます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 219 PIC18F2XK20/4XK20 17.4.7.1 クロック調停 受信、送信、またはリピート スタート / ストップ条 件の間にマスターが SCL ピンをデアサートすると (SCL が High に上昇可 )、クロック調停が発生しま す。SCL ピンで High に上昇可能になると、ボーレー ト ジェネレータ (BRG) は、SCL ピンが実際に High としてサンプリングされるまでカウントを停止し ます。SCL ピンが High としてサンプリングされる と、ボーレート ジェネレータに SSPADD<6:0> の内 容がリロードされ、カウントを開始します。これに より、クロックが外部デバイスにより Low に保持 されるイベントで、SCL の High 期間を常に、1 以 上の BRG ロールオーバー カウント数にできます ( 図 17-18)。 図 17-18: クロック調停がある場合のボーレート ジェネレータのタイミング SDA DX DX – 1 SCL deasserted but slave holds SCL low (clock arbitration) SCL allowed to transition high SCL BRG decrements on Q2 and Q4 cycles BRG Value 03h 02h 01h 00h (hold off) 03h 02h SCL is sampled high, reload takes place and BRG starts its count BRG Reload DS41303E_JP - ページ 220 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.4.8 I2C マスター モードのスタート条件の タイミング 注: スタート条件を開始するには、SSPCON2 レジスタ のスタート イネーブル ビットSENをセットします。 SDA ピンと SCL ピンが High としてサンプリングさ れると、ボーレート ジェネレータに SSPADD<6:0> の内容がリロードされ、カウントを開始します。 ボーレート ジェネレータがタイム アウトしている とき (TBRG) に SDA ピンと SCL ピンの両方が High としてサンプリングされると、SDA ピンが Low に 駆動されます。SCL ピンが High のときに SDA ピン を Low に駆動することはスタート条件であり、 SSPSTAT1 レジスタの S ビットがセットされます。 その後、ボーレート ジェネレータに SSPADD<6:0> の内容がリロードされ、カウントを再開します。 ボーレート ジェネレータがタイム アウトすると (TBRG)、SSPCON2 レジスタの SEN ビットがハード ウェアで自動クリアされます。ボーレート ジェネ レータは一時停止し、SDA ラインが Low に保持さ れ、スタート条件が完了します。 図 17-19: スタート条件の開始時に SDA ピンと SCL ピンが Low としてサンプリングされる場 合、またはスタート条件の期間に SDA ラ インを Low に駆動する前に SCL ラインが Low としてサンプリングされる場合、バス 衝突が発生し、バス衝突割り込みフラグ BCLIF がセットされます。スタート条件は 中止され、I2C モジュールはアイドル状態 にリセットされます。 17.4.8.1 WCOL ステータス フラグ スタート シーケンスの実行中に SSPBUF に書き込 みを試行すると、WCOL がセットされ、バッファの 内容は変化しません ( 書き込みは発生しない )。 注: イベントをキューに入れることはできな い の で、ス タ ー ト 条 件 が 完 了 す る ま で SPCON2 の下位 5 ビットの書き込みは無効 です。 最初のスタート ビットのタイミング Write to SEN bit occurs here Set S bit (SSPSTAT<3>) SDA = 1, SCL = 1 TBRG At completion of Start bit, hardware clears SEN bit and sets SSPIF bit TBRG Write to SSPBUF occurs here 1st bit SDA 2nd bit TBRG SCL TBRG S 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 221 PIC18F2XK20/4XK20 17.4.9 I2C マスター モードのリピート スタート条件のタイミング 注 1: リピート スタート条件は、SSPCON2 レジスタの RSEN ビットが High にプログラムされ、かつ I2C ロ ジック モジュールがアイドル状態のときに発生し ます。RSEN ビットがセットされると、SCL ピンが Low にアサートされます。SCL ピンが Low として サンプリングされると、ボーレート ジェネレータ に SSPADD<5:0> の内容がロードされ、カウントを 開始します。ボーレート ジェネレータの 1 カウン ト (TBRG) 以内に SDA ピンが解放されます (High に なる )。ボーレート ジェネレータのタイム アウト時 に SDA が High としてサンプリングされると、SCL ピンがデアサートされます (High になる )。SCL ピ ンが High としてサンプリングされると、ボーレー ト ジェネレータに SSPADD<6:0> の内容がリロード され、カウントを開始します。1 TBRG の期間、SDA と SCL は High としてサンプリングされる必要があ ります。次に、SCL が High である 1 TBRG の間に SDA ピン (SDA = 0) がアサートされます。次に、 SSPCON2 レジスタの RSEN ビットが自動クリアさ れます。ボーレート ジェネレータはリロードされ ず、SDA ピンは Low に保持されます。SDA ピンと SCL ピンでスタート条件が検出されると、SSPSTAT レジスタの S ビットがセットされます。SSPIF ビッ トは、ボーレート ジェネレータがタイム アウトす るまでセットされません。 図 17-20: 他のイベントの実行中に RSEN をプログ ラムしても、プログラム内容は無効です。 2: リピート スタート条件では、バス衝突は 次の場合に発生します。 • SCL が Low から High になるときに SDAがLowとしてサンプリングされた • SDAがLowにアサートされる前にSCL が Low になる。これは、別のマスター によるデータ「1」の送信試行を示す 場合があります SSPIF ビットがセットされた直後に、7 ビット モー ドでは 7 ビット アドレス、10 ビット モードではデ フォルトの最初のアドレスを SSPBUF に書き込むこ とができます。最初の 8 ビットを送信し ACK を受 信した後、残りの 8 ビット アドレス (10 ビット モー ド )、または 8 ビット データ (7 ビット モード ) を送 信できます。 17.4.9.1 WCOL ステータス フラグ リピート スタート シーケンスの実行中に SSPBUF に書き込みを試行すると、WCOL がセットされ、 バッファの内容は変化しません ( 書き込みは発生し ない )。 注: イベントをキューに入れることはできな いので、リピート スタート条件が完了す るまで SPCON2 の下位 5 ビットの書き込 みは無効です。 リピート スタート条件の波形 Write to SSPCON2 occurs here. SDA = 1, SCL (no change). S bit set by hardware SDA = 1, SCL = 1 TBRG At completion of Start bit, hardware clears RSEN bit and sets SSPIF TBRG TBRG 1st bit SDA RSEN bit set by hardware on falling edge of ninth clock, end of Xmit Write to SSPBUF occurs here TBRG SCL TBRG Sr = Repeated Start DS41303E_JP - ページ 222 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.4.10 I2C マスター モードの送信 17.4.10.2 1 データ バイト、7 ビット アドレス、または 10 ビッ ト アドレスの後半を送信するには、その値を SSPBUF レジスタに書き込みます。書き込み動作に よりバッファ フル フラグ ビット BF がセットされ、 ボーレート ジェネレータのカウント開始と次の送 信が可能になります。SCL の立ち下がりエッジのア サート後、アドレス / データの各ビットが SDA ピ ンにシフト出力されます ( データ保持時間の仕様パ ラメータ 106 を参照 )。ボーレート ジェネレータの 1 ロールオーバー カウント (TBRG) の間、 SCL が Low に保持されます。SCL が High に解放される前に、 データが有効である必要があります ( データ設定時 間の仕様パラメータ 107 を参照 )。SCL ピンが High に解放されると、1 TBRG の期間 High に保持されま す。その期間、および SCL の次の立ち下がりエッ ジの後の保持期間、SDA ピンのデータが安定して いる必要があります。8 ビット目のシフト出力後 (8 クロック目の立ち下がりエッジ )、BF フラグがクリ アされ、マスターが SDA を解放します。これによ りスレーブ デバイスに対するアドレス指定が可能 になり、アドレスが一致した場合、またはデータを 正常に受信した場合、スレーブ デバイスは 9 ビッ ト目の期間に ACK ビットを応答できます。9 クロッ ク目の立ち下がりエッジで、ACK ステータスが ACKDT ビットに書き込まれます。マスターが ACK を受信すると、肯定応答ステータス ビット ACKSTAT がクリアされます。受信しない場合は、 ACKSTAT ビットはセットされたままです。9 クロッ ク目の後に SSPIF ビットがセットされ、次のデータ バイトが SSPBUF にロードされるまでマスター ク ロック ( ボーレート ジェネレータ ) は一時停止しま す。SCL は Low、SDA は直前の状態のままになり ます ( 図 17-21 を参照 )。 SSPBUF への書き込み後、アドレスの全 7 ビットお よび R/W ビットの出力が完了するまで、SCL の立 ち下がりエッジでアドレスの各ビットがシフト出 力されます。8 クロック目の立ち下がりエッジで、 マスターは SDA ピンをデアサートし、スレーブを ACK 応答可能にします。9 クロック目の立ち下がり エッジで、マスターは SDA ピンをサンプリングし、 スレーブがアドレスを認識したかどうかを調べま す。ACK ビットのステータスが、SSPCON2 レジス タの ACKSTAT ステータス ビットにロードされま す。アドレス送信の 9 クロック目の立ち下がりエッ ジの後、SSPIF がセットされ、BF フラグがクリア されます。SSPBUF への次の書き込みが発生するま でボーレート ジェネレータはオフになり、SCL は Low に保持され、SDA は変化可能になります。 17.4.10.1 BF ステータス フラグ 送信モードでは、SSPSTAT レジスタの BF ビットは、 CPU が SSPBUF に書き込むとセットされます。全 8 ビットがシフト出力されるとクリアされます。 2009 Microchip Technology Inc. WCOL ステータス フラグ 送信の実行中 (SSPSR がデータ バイトをシフト出力 中 ) に SSPBUF に書き込みを試行すると、WCOL が セットされ、バッファの内容は変化しません ( 書き 込みは発生しない )。 WCOLをソフトウェアでクリアする必要があります。 17.4.10.3 ACKSTAT ステータス フラグ 送信モードでは、SSPCON2 レジスタの ACKSTAT ビットは、スレーブが肯定応答を送信するとクリア されます (ACK = 0)。スレーブが肯定応答しないと セットされます (ACK = 1)。スレーブは、それ自体 のアドレスを認識したとき ( 一括呼び出しを含む )、 およびデータを受信したときに肯定応答を送信し ます。 I2C マスター モードの受信 17.4.11 マスター モードの受信を有効にするには、 SSPCON2 レジスタの受信イネーブル ビットRCENをプログラ ムします。 注: RCEN ビットをセットするには、MSSP モ ジュールがアイドル状態である必要があ ります。それ以外の状態では、RCEN ビッ トは無視されます。 ボーレート ジェネレータがカウントを開始し、各 ロールオーバーで SCL ピンの状態が変化し (High か ら Low/Low から High)、データが SSPSR にシフト入 力されます。8 クロック目の立ち下がりエッジの後、 受信イネーブル フラグが自動クリアされ、SSPSR の 内容が SSPBUF にロードされます。BF フラグ ビッ トがセットされ、SSPIF フラグ ビットがセットされ ます。ボーレート ジェネレータのカウントが一時停 止され、SCL が Low に保持されます。これで MSSP がアイドル状態になり、次のコマンドを待ちます。 CPU がバッファを読み出すと、BF フラグ ビットが 自動クリアされます。その後、SSPCON2 レジスタ の肯定応答シーケンス イネーブル ビットACKENを セットすることで、受信後に肯定応答ビットを送信 できます。 17.4.11.1 BF ステータス フラグ 受信動作では、アドレスまたはデータ バイトが SSPSR から SSPBUF にロードされると、BF ビット がセットされます。SSPBUF レジスタが読み出され ると、クリアされます。 17.4.11.2 SSPOV ステータス フラグ 受信動作では、BF フラグ ビットが前の受信で既に セットされているときに SSPSR に 8 ビットを受信 すると、SSPOV ビットがセットされます。 Preliminary DS41303E_JP - ページ 223 DS41303E_JP - ページ 224 S Preliminary R/W PEN SEN BF (SSPSTAT<0>) SSPIF SCL SDA A6 A5 A4 A3 A2 A1 3 4 5 Cleared by software 2 6 7 8 9 D7 1 SCL held low while CPU responds to SSPIF ACK = 0 After Start condition, SEN cleared by hardware SSPBUF written 1 SSPBUF written with 7-bit address and R/W start transmit A7 R/W = 0 3 D5 4 D4 5 D3 6 D2 7 D1 8 D0 SSPBUF is written by software Cleared by software service routine from SSP interrupt 2 D6 Transmitting Data or Second Half of 10-bit Address P Cleared by software 9 ACK 図 17-21: Transmit Address to Slave From slave, clear ACKSTAT bit SSPCON2<6> ACKSTAT in SSPCON2 = 1 17.4.11.3 SEN = 0 Write SSPCON2<0> SEN = 1 Start condition begins PIC18F2XK20/4XK20 WCOL ステータス フラグ 受信の実行中 (SSPSR がデータ バイトをシフト入力 中 ) に SSPBUF に書き込みを試行すると、WCOL が セットされ、バッファの内容は変化しません ( 書き 込みは発生しない )。 I 2C™ マスター モードの波形 ( 送信、7 ビットまたは 10 ビットのアドレス ) 2009 Microchip Technology Inc. 2009 Microchip Technology Inc. S Preliminary ACKEN SSPOV BF (SSPSTAT<0>) SDA = 0, SCL = 1 while CPU responds to SSPIF SSPIF SCL SDA 1 A7 2 4 5 6 Cleared by software 3 A6 A5 A4 A3 A2 Transmit Address to Slave 7 A1 8 9 R/W = 0 ACK ACK from Slave 2 3 5 6 7 8 D0 9 ACK 2 3 4 5 6 7 Cleared by software Set SSPIF interrupt at end of Acknowledge sequence Data shifted in on falling edge of CLK 1 D7 D6 D5 D4 D3 D2 D1 Cleared in software Set SSPIF at end of receive 9 ACK is not sent ACK P Set SSPIF interrupt at end of Acknowledge sequence Bus master terminates transfer Set P bit (SSPSTAT<4>) and SSPIF PEN bit = 1 written here SSPOV is set because SSPBUF is still full 8 D0 RCEN cleared automatically Set ACKEN, start Acknowledge sequence SDA = ACKDT = 1 Receiving Data from Slave RCEN = 1, start next receive ACK from Master SDA = ACKDT = 0 Last bit is shifted into SSPSR and contents are unloaded into SSPBUF Cleared by software Set SSPIF interrupt at end of receive 4 Cleared by software 1 D7 D6 D5 D4 D3 D2 D1 Receiving Data from Slave RCEN cleared automatically Master configured as a receiver by programming SSPCON2<3> (RCEN = 1) 図 17-22: SEN = 0 Write to SSPBUF occurs here, start XMIT Write to SSPCON2<0> (SEN = 1), begin Start condition Write to SSPCON2<4> to start Acknowledge sequence SDA = ACKDT (SSPCON2<5>) = 0 PIC18F2XK20/4XK20 I 2C™ マスター モードの波形 ( 受信、7 ビット アドレス ) DS41303E_JP - ページ 225 PIC18F2XK20/4XK20 17.4.12 17.4.13 肯定応答シーケンスのタイミング ストップ条件のタイミング 肯定応答シーケンスを有効にするには、 SSPCON2 レ ジスタの肯定応答シーケンス イネーブル ビット ACKEN をセットします。このビットをセットする と、SCL ピンが Low に駆動され、肯定応答データ ビットが SDA ピンに現れます。肯定応答を生成す るには、ACKDT ビットをクリアします。肯定応答 を生成しない場合は、肯定応答シーケンスの開始前 に ACKDT ビットをセットする必要があります。こ れによりボーレート ジェネレータが 1 ロールオー バー期間 (1 TBRG) カウントし、SCL がデアサート (High に駆動 ) されます。SCL ピンが High としてサ ンプリングされると ( クロック調停 )、ボーレート ジェネレータが 1 TBRG の期間カウントします。その 後、 SCL ピンが Low に駆動されます。 その後、 ACKEN ビットが自動クリアされ、ボーレート ジェネレータ がオフになり、MSSP モジュールがアイドル モード になります ( 図 17-23)。 SSPCON2レジスタのストップ シーケンス イネーブ ル ビット PEN をセットすることで、送受信の終了 時に SDA ピンにストップ ビットがアサートされま す。送受信の終了時に 9 クロック目の立ち下がり エッジの後、SCL ラインが Low に保持されます。 PEN ビットがセットされると、マスターが SDA ラ インを Low にアサートします。SDA ラインが Low としてサンプリングされると、ボーレート ジェネ レータがリロードされ、「0」までカウント ダウン します。ボーレート ジェネレータがタイム アウト すると、SCL ピンが High に駆動され、1 TBRG ( ボー レート ジェネレータのロールオーバー カウント ) 後、SDA ピンがデアサートされます。SCL が High のときに SDA ピンが High としてサンプリングされ ると、SSPSTAT レジスタの P ビットがセットされ ます。1 TBRG 後、PEN ビットがクリアされ、SSPIF ビットがセットされます ( 図 17-24)。 17.4.12.1 17.4.13.1 WCOL ステータス フラグ ストップ シーケンスの実行中に SSPBUF に書き込み を試行すると、WCOL ビットがセットされ、バッファ の内容は変化しません ( 書き込みは発生しない )。 肯定応答シーケンスの実行中にSSPBUFに書き込み を試行すると、WCOL がセットされ、バッファの内 容は変化しません ( 書き込みは発生しない )。 図 17-23: WCOL ステータス フラグ 肯定応答シーケンスの波形 Acknowledge sequence starts here, write to SSPCON2 ACKEN = 1, ACKDT = 0 ACKEN automatically cleared TBRG TBRG SDA ACK D0 SCL 8 9 SSPIF SSPIF set at the end of receive Cleared in software SSPIF set at the end of Acknowledge sequence Cleared in software 注 : TBRG = ボーレート ジェネレータの 1 周期 図 17-24: 送信 / 受信モードのストップ条件 SCL = 1 for TBRG, followed by SDA = 1 for TBRG after SDA sampled high. P bit (SSPSTAT<4>) is set. Write to SSPCON2, set PEN PEN bit (SSPCON2<2>) is cleared by hardware and the SSPIF bit is set Falling edge of 9th clock TBRG SCL SDA ACK P TBRG TBRG TBRG SCL brought high after TBRG SDA asserted low before rising edge of clock to setup Stop condition 注 : TBRG = ボーレート ジェネレータの 1 周期 DS41303E_JP - ページ 226 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.4.14 17.4.17 スリープ動作 2 スリープ モードのI Cモジュールはアドレスやデー タを受信でき、アドレス一致時または 1 バイト転送 の発生時にプロセッサがスリープ モードからウェ イクします (MSSP 割り込みが有効な場合 )。 17.4.15 マルチマスター モードのサポートは、バス調停に より実現されます。マスターがアドレス / データ ビットを SDA ピンに出力するとき、別のマスター が「0」をアサートしている間に、マスターが SDA に「1」を出力して SDA を High にしようとすると 調停が実行されます。SCL ピンが High になるとき には、データは安定している必要があります。SDA ピンに予測されるデータが「1」のときに、SDA ピ ンでサンプリングされたデータが「0」の場合、バ ス衝突が発生しています。これによりマスターはバ ス衝突割り込みフラグ BCLIF をセットし、I2C ポー トをアイドル状態にリセットします ( 図 17-25)。 リセットの影響 リセットにより MSSP モジュールが無効になり、現 在の転送を中止します。 17.4.16 マルチマスター モード マルチマスター モードでは、スタート条件および ストップ条件の検出時の割り込み生成によりどの バスが空いているかを特定できます。ストップ (P) とスタート (S) のビットは、リセット時、または MSSP モジュールを無効にしたときにクリアされま す。I 2C バスの制御は、SSPSTAT レジスタの P ビッ トがセットされているとき、または S ビットと P ビットの両方がクリアされている、バスのアイドル 時に実行できます。SSP 割り込みを有効にすると、 バスがビジーのときにストップ条件が発生した場 合に割り込みが生成されます。 送信の実行中にバス衝突が発生すると、送信が停止 し、BF フラグがクリアされます。SDA と SCL のラ インがデアサートされ、SSPBUF が書き込み可能にな ります。ユーザーがバス衝突割り込みサービス ルー チンを実行し、かつ I2C バスが空いている場合は、ス タート条件をアサートして通信を再開できます。 スタート、リピート スタート、ストップ、または肯 定応答の条件の実行中にバス衝突が発生した場合 は、条件が中止され、SDA と SCL のラインがデア サートされます。また、SSPCON2 レジスタの対応 する制御ビットがクリアされます。ユーザーがバス 衝突割り込みサービス ルーチンを実行し、かつ I2C バスが空いている場合は、スタート条件をアサート して通信を再開できます。 マルチマスター動作では、調停用に SDA ラインを モニタして、信号レベルが予測した出力レベルかど うかをチェックする必要があります。このチェック はハードウェアで実行され、結果が BCLIF ビット に設定されます。 マスターは、SDA ピンと SCL ピンのモニタを継続し ます。ストップ条件が発生すると、SSPIF ビットが セットされます。 調停が失われる可能性がある状態は、次のとおり です。 • • • • • アドレス転送 データ転送 スタート条件 リピート スタート条件 肯定応答条件 図 17-25: マルチマスター通信、バス衝突、 およびバス調停 SSPBUF への書き込みが行われると、バス衝突の発生 時にどの位置で送信が停止したかには関係なく、最 初のデータ ビットからデータ送信が開始されます。 マルチマスター モードでは、スタート条件およびス トップ条件の検出時の割り込み生成によりどのバ スが空いているかを特定できます。I2C バスの制御 は、SSPSTAT レジスタの P ビットがセットされてい るとき、または S ビットと P ビットの両方がクリア されている、バスのアイドル時に実行できます。 送信と肯定応答のバス衝突のタイミング Data changes while SCL = 0 SDA line pulled low by another source SDA released by master Sample SDA. While SCL is high, data doesn’t match what is driven by the master. Bus collision has occurred. SDA SCL Set bus collision interrupt (BCLIF) BCLIF 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 227 PIC18F2XK20/4XK20 17.4.17.1 スタート条件時のバス衝突 スタート条件時には、次の場合にバス衝突が発生し ます。 a) b) スタート条件の開始時に SDA または SCL が Low としてサンプリングされる ( 図 17-26) SDA が Low にアサートされる前に SCL が Low としてサンプリングされる ( 図 17-27) スタート条件時に、SDA ピンと SCL ピンの両方が モニタされている SDA ピンが既に Low の場合、または SCL ピンが既 に Low の場合、次のすべてが実行されます。 • スタート条件が中止される • BCLIF フラグがセットされる • MSSP モジュールがアイドル状態にリセットさ れる ( 図 17-26) このカウント中に SDA ピンが Low としてサンプリ ングされると、BRG がリセットされ、SDA ライン が早期にアサートされます ( 図 17-28)。ただし、 SDA ピンで「1」がサンプリングされる場合、BRG のカ ウント終了時に SDA ピンが Low としてアサートさ れます。その後ボーレート ジェネレータがリロー ドされ、「0」までカウント ダウンします。この期 間に SCL ピンが「0」としてサンプリングされると、 バス衝突は発生しません。BRG カウントの終了時 に、SCL ピンが Low にアサートされます。 注: スタート条件は、SDA ピンと SCL ピンのデアサー トから開始されます。SDA ピンが High としてサン プリングされると、ボーレート ジェネレータに SSPADD<6:0> の内容がロードされ、 「0」までカウ ント ダウンします。SDA ピンが High のときに SCL ピンが Low としてサンプリングされると、バス衝 突が発生します。これは、スタート条件時に別のマ スターがデータ「1」を駆動しようとしていると見 なされるからです。 図 17-26: スタート条件時にバス衝突が問題となら ない理由は、同時に 2 つのバス マスター がスタート条件をアサートできないから です。このため、一方のマスターが常に、 他方のマスターよりも前に SDA をアサー トします。2 つのマスターはスタート条件 の後、最初のアドレスを調停できる必要が あるため、この条件ではバス衝突は発生し ません。アドレスが同一の場合、調停によ りデータ部分、リピート スタート条件、ま たはストップ条件を継続できる必要があ ります。 スタート条件時のバス衝突 (SDA のみ ) SDA goes low before the SEN bit is set. Set BCLIF, S bit and SSPIF set because SDA = 0, SCL = 1. SDA SCL Set SEN, enable Start condition if SDA = 1, SCL = 1 SEN cleared automatically because of bus collision. SSP module reset into Idle state. SEN BCLIF SDA sampled low before Start condition. Set BCLIF. S bit and SSPIF set because SDA = 0, SCL = 1. SSPIF and BCLIF are cleared by software S SSPIF SSPIF and BCLIF are cleared by software DS41303E_JP - ページ 228 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 17-27: スタート条件時のバス衝突 (SCL = 0) SDA = 0, SCL = 1 TBRG TBRG SDA Set SEN, enable Start sequence if SDA = 1, SCL = 1 SCL SCL = 0 before SDA = 0, bus collision occurs. Set BCLIF. SEN SCL = 0 before BRG time-out, bus collision occurs. Set BCLIF. BCLIF Interrupt cleared by software 図 17-28: S ‘0’ ‘0’ SSPIF ‘0’ ‘0’ スタート条件時の SDA の調停による BRG のリセット SDA = 0, SCL = 1 Set S Less than TBRG SDA Set SSPIF TBRG SDA pulled low by other master. Reset BRG and assert SDA. SCL S SCL pulled low after BRG time-out SEN BCLIF Set SEN, enable START sequence if SDA = 1, SCL = 1 ‘0’ S SSPIF SDA = 0, SCL = 1, set SSPIF 2009 Microchip Technology Inc. Preliminary Interrupts cleared by software DS41303E_JP - ページ 229 PIC18F2XK20/4XK20 17.4.17.2 SDA が Low の場合、衝突が発生しています ( 別のマ スターがデータ「0」の送信を試行、図 17-29)。SDA が High としてサンプリングされると、 BRG がリロー ドされ、カウントを開始します。BRG がタイム ア ウトする前に SDA が High から Low になる場合、2 つのマスターは同時に SDA をアサートできないの で、バス衝突は発生しません。 リピート スタート条件時のバス衝突 リピート スタート条件時には、次の場合にバス衝 突が発生します。 a) b) SCL が Low から High になるときに SDA が Low としてサンプリングされた SDA が Low としてアサートされる前に、SCL が Low になる。これは、別のマスターによる データ「1」の送信試行を示します BRG がタイム アウトする前に SCL が High から Low になり、SDA をまだアサートしていない場合は、バ ス衝突が発生します。この場合、リピート スター ト条件時に別のマスターがデータ「1」の送信を試 行しています ( 図 17-30 を参照 )。 SDAピンをデアサートしてHighを許可すると、 BRG に SSPADD<6:0> の内容がロードされ、 「0」までカ ウント ダウンします。その後、SCL ピンがデアサー トされ、High としてサンプリングされると、SDA ピンがサンプリングされます。 図 17-29: BRG のタイムアウトの終了時に SCL と SDA の両方 が High の場合は、SDA ピンが Low に駆動され、 BRG がリロードされてカウントを開始します。カ ウントの終了時に、SCL ピンのステータスには関係 なく SCL が Low に駆動され、リピート スタート条 件が完了します。 リピート スタート条件時のバス衝突 ( ケース 1) SDA SCL Sample SDA when SCL goes high. If SDA = 0, set BCLIF and release SDA and SCL. RSEN BCLIF Cleared by software ‘0’ S ‘0’ SSPIF 図 17-30: リピート スタート条件時のバス衝突 ( ケース 2) TBRG TBRG SDA SCL BCLIF SCL goes low before SDA, set BCLIF. Release SDA and SCL. Interrupt cleared by software RSEN ‘0’ S SSPIF DS41303E_JP - ページ 230 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 17.4.17.3 ストップ条件は、SDA を Low にアサートすること から開始されます。SDA が Low としてサンプリン グされると、SCL ピンが High になることが許可さ れます。SCL ピンが High としてサンプリングされ ると ( クロック調停 )、ボーレート ジェネレータに SSPADD<6:0> の内容がロードされ、 「0」までカウ ント ダウンします。BRG のタイム アウト後、SDA がサンプリングされます。SDA が Low としてサン プリングされた場合、バス衝突が発生しています。 これは、別のマスターがデータ「0」の送信を試行 したからです ( 図 17-31)。SDA での High を許可す る前に SCL ピンが Low としてサンプリングされる 場合、バス衝突が発生します。これは、別のマス ターがデータ「0」の送信を試行した別の場合です ( 図 17-32)。 ストップ条件時のバス衝突 ストップ条件ではバス衝突は次の場合に発生します。 a) b) SDA ピンがデアサートされて High が可能に なった後で、BRG のタイム アウト後に SDA が Low としてサンプリングされる SCL ピンのデアサート後、SDA が High にな る前にSCLがLowとしてサンプリングされる 図 17-31: ストップ条件時のバス衝突 ( ケース 1) TBRG TBRG TBRG SDA SDA sampled low after TBRG, set BCLIF SDA asserted low SCL PEN BCLIF P ‘0’ SSPIF ‘0’ 図 17-32: ストップ条件時のバス衝突 ( ケース 2) TBRG TBRG TBRG SDA SCL goes low before SDA goes high, set BCLIF Assert SDA SCL PEN BCLIF P ‘0’ SSPIF ‘0’ 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 231 PIC18F2XK20/4XK20 表 17-4: I2C™ に関連するレジスタのまとめ Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 60 Name IPR2 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 60 PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 60 SSPADD SSP Address Register in I2C™ Slave Mode. SSP Baud Rate Reload Register in I2C Master Mode. SSPBUF SSP Receive Buffer/Transmit Register 58 SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPCON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN SSPMSK MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 SSPSTAT TRISC 58 SSPM2 SSPM1 SSPM0 58 RSEN SEN 58 MSK1 MSK0 61 SMP CKE D/A P S R/W UA BF 58 TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 60 記号の説明 : — = 未実装、「0」として読み出し。網掛けのビットは PORTA では使用しません。 注 1: PIC18F2XK20 デバイスでは未実装 DS41303E_JP - ページ 232 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 18.0 拡張ユニバーサル同期 / 非同期送 受信器 (EUSART) EUSART モジュールには、次の機能があります。 • • • • 拡張 ユニバーサル同期 / 非同期送受信器 (EUSART: Enhanced Universal Synchronous Asynchronous Receiver Transmitter) モジュールは、シリアル I/O 通 信用の周辺機器です。デバイスのプログラム実行と は独立してシリアル データを入出力するために必 要なクロック ジェネレータ、シフト レジスタ、お よ び デ ー タ バ ッ フ ァ を す べ て 装 備 し て い ま す。 EUSART は、シリアル通信インターフェース (SCI: Serial Communications Interface) とも呼ばれ、全二重 非同期システムまたは半二重同期システムとして 設定できます。全二重モードは、CRT 端末やパーソ ナル コンピュータなどの周辺システムとの通信に 便利です。半二重同期モードは、A/D または D/A の 集積回路、シリアル EEPROM、その他のマイクロ コントローラなどの周辺デバイスとの通信を目的 としています。これらのデバイスは通常、ボーレー ト生成用の内部クロックを装備しないので、マス ター同期デバイスが外部クロック信号を供給する 必要があります。 • • • • • • 全二重非同期の送受信 2 文字の入力バッファ 1 文字の出力バッファ 文字長を 8 ビットまたは 9 ビットにプログラム 可能 9 ビット モードでのアドレス検出 入力バッファのオーバーラン エラー検出 受信文字のフレーミング エラー検出 半二重同期マスター 半二重同期スレーブ クロックとデータの極性をプログラム可能 EUSART モジュールは次の追加機能を実装してい る の で、ロ ー カ ル 接 続 ネ ッ ト ワ ー ク (LIN: Local Interconnect Network) バス システムでの使用に理想 的です。 • ボーレートの自動検出 / 較正 • ブレーク受信時のウェイクアップ • 13 ビットのブレーク文字の送信 EUSART 送信器のブロック図を図 18-1、EUSART 受 信器のブロック図を図 18-2 に示します。 図 18-1: EUSART の送信のブロック図 Data Bus TXIE Interrupt TXIF TXREG Register 8 MSb TX/CK pin LSb (8) • • • 0 Pin Buffer and Control Transmit Shift Register (TSR) TXEN TRMT Baud Rate Generator FOSC TX9 n BRG16 +1 SPBRGH n SPBRG Multiplier x4 x16 x64 SYNC 1 X 0 0 0 BRGH X 1 1 0 0 BRG16 X 1 0 1 0 2009 Microchip Technology Inc. TX9D Preliminary DS41303E_JP - ページ 233 PIC18F2XK20/4XK20 図 18-2: EUSART の受信のブロック図 CREN RX/DT pin Baud Rate Generator Data Recovery FOSC BRG16 +1 SPBRGH SPBRG RSR Register MSb Pin Buffer and Control Multiplier x4 x16 x64 SYNC 1 X 0 0 0 BRGH X 1 1 0 0 BRG16 X 1 0 1 0 Stop RCIDL OERR (8) ••• 7 1 LSb 0 START RX9 n n FERR RX9D RCREG Register 8 FIFO Data Bus RCIF RCIE Interrupt EUSART モジュールの動作は、次の 3 つのレジスタ で制御します。 • 送信ステータスおよび制御 (TXSTA) • 受信ステータスおよび制御 (RCSTA) • ボーレート制御 (BAUDCON) これらのレジスタの詳細については、レジスタ 18-1、 レジスタ 18-2、レジスタ 18-3 をそれぞれ参照してく ださい。 EUSART のすべての動作モードについて、RX/DT お よび TX/CK のピンに対応する TRIS 制御ビットを 「1」にセットする必要があります。EUSART の制御 機能は、必要に応じて、ピンを入力から出力に自動 的に再設定します。 受信器または送信器のセクションを有効にしない場 合は、対応する RX ピンまたは TX ピンを汎用の入 力 / 出力に使用できます。 DS41303E_JP - ページ 234 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 18.1 EUSART の非同期モード 注: EUSART は、標準の非ゼロ復帰 (NRZ: Non Return to Zero) 形式を使用して、データを送受信します。NRZ は、「1」データ ビットを表す VOH のマーク状態と 「0」データ ビットを表す VOL のスペース状態の 2 つ のレベルで実現されます。NRZ は、同じ値のデータ ビットを連続して送信すると、送信する各ビットの 間で中立レベルに戻らずに、そのビットの出力レベ ルが保持されることを意味します。NRZ 通信ポート は、マーク状態ではアイドルです。各送信文字は、 1 ビットのスタート ビット、8 ビットまたは 9 ビッ トのデータ ビットで構成され、常に 1 ビット以上の ストップ ビットで終了します。スタート ビットは 常にスペースで、ストップ ビットは常にマークで す。最も一般的なデータ フォーマットは 8 ビットで す。各送信ビットは、1/( ボーレート ) の期間持続し ます。システム オシレータから標準ボーレート周波 数を得るには、オンチップの専用 8 ビット /16 ビッ ト ボーレート ジェネレータを使用します。 ボーレー トの設定例については、 表18-5を参照してください。 EUSART は、最下位ビットをはじめに送受信しま す。EUSART の送信器と受信器は独立に動作します が、データ フォーマットとボーレートは同一です。 パリティはハードウェアではサポートされません が、ソフトウェアで実装でき、データの 9 ビット目 として保存されます。 18.1.1 EUSART 非同期送信器 EUSART 送信器のブロック図を図 18-1 に示します。 送信器の中核はシリアル送信シフト レジスタ (TSR: Transmit Shift Register) で、ソフトウェアからは直接 アクセスできません。TSR は、送信バッファである TXREG レジスタからデータを取得します。 18.1.1.1 送信器の有効化 EUSART 送信器の非同期動作を有効にするには、次 の 3 つの制御ビットを設定します。 • TXEN = 1 • SYNC = 0 • SPEN = 1 EUSART のその他の制御ビットはすべて、デフォル ト状態と仮定されます。 TXSTA レジスタの TXEN ビットをセットすると、 EUSART の送信回路が有効になります。TXSTA レ ジスタの SYNC ビットをクリアすると、EUSART が 非同期動作に設定されます。RCSTA レジスタの SPEN ビットをセットすると、EUSART が有効にな り、TX/CK の I/O ピンが出力に自動設定されます。 TX/CK ピンをアナログ周辺機器と共有している場 合は、対応する ANSEL ビットをクリアして、アナ ログ I/O 機能を無効にする必要があります。 2009 Microchip Technology Inc. TXEN イネーブル ビットがセットされる と、TXIF 送信器割り込みフラグ ビットが セットされます。 18.1.1.2 データの送信 TXREG レジスタに 1 文字を書き込むと、送信が開 始されます。これが最初の文字の場合、または前の 文字が TSR からすべて出ている場合には、TXREG のデータが即座に TSR レジスタに転送されます。 TSRに前の文字のすべてまたは一部が残っている場 合は、その文字のストップ ビットが送信されるま で、新しい文字データは TXREG に保持されます。 ストップ ビットの送信直後、1 TCY で、TXREG に保 持されている文字が TSR に転送されます。TXREG から TSR にデータを転送した直後に、 スタート ビッ ト、データ ビット、およびストップ ビットの送信 シーケンスが開始されます。 18.1.1.3 送信データの極性 送信データの極性は、BAUDCONレジスタのCKTXP ビットで制御できます。このビットのデフォルト値 は「0」で、送信アイドル / データ ビットが正論理 になります。CKTXP ビットを「1」にセットする と、送信データが反転され、送信アイドル / データ ビットが負論理になります。CKTXP ビットは、非 同期モードでのみ送信データの極性を制御します。 同期モードでは、CKTXP ビットには別の機能があ ります。 18.1.1.4 割り込みフラグの送信 EUSART 送信器が有効で、かつ送信する文字が TXREG に保持されていないときには常に、PIR1 レ ジスタの TXIF 割り込みフラグ ビットがセットされ ます。つまり、TXIF ビットがクリアされるのは、 TSR が文字によりビジーで、送信する新しい文字が TXREG に入れられたときのみです。TXIF フラグ ビットは、TXREG への書き込みの直後にはクリア されません。書き込み実行後、2 回目の命令サイク ルで TXIF が有効になります。TXREG への書き込み 直後に TXIF をポーリングすると、不正な結果が返 されます。TXIF ビットは読み出し専用です。ソフ トウェアでセットやクリアはできません。 TXIF 割り込みを有効にするには、PIE1 レジスタの TXIE 割り込みイネーブル ビットをセットします。 ただし、TXREG が空のときには、TXIE イネーブル ビットの状態には関係なく TXIF フラグ ビットが セットされます。 データの送信時に割り込みを使用するには、送信す るデータが更にある場合にのみ TXIE ビットをセッ トします。送信する最後の文字を TXREG に書き込 んだら、TXIE 割り込みイネーブル ビットをクリア します。 Preliminary DS41303E_JP - ページ 235 PIC18F2XK20/4XK20 18.1.1.5 TSR のステータス 18.1.1.7 TXSTA レジスタの TRMT ビットは、TSR レジスタ のステータスを示します。このビットは読み出し専 用です。TRMT ビットは、TSR レジスタが空のとき にセットされ、TXREG から TSR レジスタに文字が 転送されるとクリアされます。TSR レジスタからす べてのビットがシフト出力されるまで、TRMT ビッ トはクリア状態です。このビットには割り込みロ ジックが組み合わされていないので、TSR のステー タスを特定するには、このビットをポーリングする 必要があります。 注: 1. 2. 3. 4. TSR レジスタはデータ メモリにマップさ れていないので、ユーザーが使用すること はできません。 18.1.1.6 5. 9 ビット文字の送信 EUSART は、9 ビット文字の送信をサポートしてい ます。TXSTA レジスタの TX9 ビットをセットする と、EUSART は送信する各文字の 9 ビットをシフト 出力します。TXSTA レジスタの TX9D ビットは、9 ビット目の最上位データ ビットです。9 ビット デー タを送信するときには、TXREG に下位 8 ビットを 書き込む前に、TX9D データ ビットを書き込む必要 があります。TXREG への書き込み直後に、全 9 ビッ トのデータが TSR シフト レジスタに転送されます。 複数の受信器用の特殊 9 ビット アドレス モードが 使用できます。このアドレス モードの詳細につい ては、18.1.2.8 項「アドレス検出」を参照してくだ さい。 図 18-3: 6. 7. 8. 9. 非同期送信の設定 SPBRGH:SPBRG レジスタ ペアおよび BRGH と BRG16 のビットを初期化して、使用するボー レートを設定します (18.3 項 「EUSART ボーレー ト ジェネレータ (BRG)」を参照 )。 RX/DT および TX/CK ピンの TRIS 制御を「1」 にセットします。 SYNC ビットをクリアし、SPEN ビットをセット して、非同期シリアル ポートを有効にします。 9 ビット送信を使用する場合は、TX9 制御ビッ トをセットします。受信器がアドレス検出用に 設定されているときには、データの 9 ビット目 をセットすると、データの下位 8 ビットがアド レスであることを示します。 送信データの極性を反転する場合は、CKTXP 制御ビットをセットします。 TXEN 制御ビットをセットして、送信を有効に します。これにより、TXIF 割り込みビットが セットされます。 割り込みを使用する場合は、TXIE 割り込みイ ネーブル ビットをセットします。INTCON レジ スタの GIE ビットと PEIE ビットもセットされ ている場合は、割り込みが即座に発生します。 9 ビット送信を選択する場合は、9 ビット目を TX9D データ ビットにロードする必要があり ます。 TXREG レジスタに 8 ビット データをロードし ます。これにより送信が開始されます。 非同期送信 Write to TXREG Word 1 BRG Output (Shift Clock) RC4/C2OUT/TX/CK pin Start bit bit 1 bit 7/8 Stop bit Word 1 TXIF bit (Transmit Buffer Reg. Empty Flag) TRMT bit (Transmit Shift Reg. Empty Flag) bit 0 1 TCY Word 1 Transmit Shift Reg DS41303E_JP - ページ 236 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 18-4: 非同期送信 ( 連続 ) Write to TXREG Word 1 BRG Output (Shift Clock) RC4/C2OUT/TX/CK pin Start bit bit 0 bit 1 Word 1 1 TCY TXIF bit (Interrupt Reg. Flag) bit 7/8 Stop bit Start bit bit 0 Word 2 1 TCY TRMT bit (Transmit Shift Reg. Empty Flag) 注: Word 2 Word 1 Transmit Shift Reg Word 2 Transmit Shift Reg このタイミング図は、2 つの連続する送信を示します。 表 18-1: Name INTCON 非同期送信に関連するレジスタ Bit 7 Bit 6 Bit 5 GIE/GIEH PEIE/GIEL TMR0IE Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 59 RCSTA TXREG EUSART Transmit Register 59 CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 59 BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 59 SPBRGH EUSART Baud Rate Generator Register, High Byte 59 SPBRG EUSART Baud Rate Generator Register, Low Byte 59 TXSTA 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは非同期送信では使用しません。 注 1: PIC18F2XK20 デバイスでは予約されています。常にクリアの状態にしてください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 237 PIC18F2XK20/4XK20 18.1.2 EUSART 非同期受信器 18.1.2.2 非同期モードは通常、RS-232 システムで使用しま す。受信器のブロック図を図 18-2 に示します。デー タは RX/DT ピンで受信され、データ復元ブロック を駆動します。データ復元ブロックは、実際には ボーレートの 16 倍の速度で動作する高速シフタで す。一 方、シ リ ア ル 受 信 シ フ ト レ ジ ス タ (RSR: Receive Shift Register) はビット レートで動作しま す。文字の 8 ビットまたは 9 ビットがすべてシフト 入力されると、そのビットが即座に 2 文字の先入れ 先出し (FIFO: First-In-First-Out) メモリに転送されま す。FIFO のバッファ動作により、2 文字を受信で き、ソフトウェアが EUSART 受信器へのサービス を開始する前に、3 文字目を開始できます。FIFO と RSR レジスタは、ソフトウェアで直接アクセスでき ません。受信データへのアクセスは、RCREG レジ スタを経由します。 18.1.2.1 受信器の有効化 EUSART 受信器の非同期動作を有効にするには、次 の 3 つの制御ビットを設定します。 • CREN = 1 • SYNC = 0 • SPEN = 1 EUSART のその他の制御ビットはすべて、デフォル ト状態と仮定されます。 RCSTA レジスタの CREN ビットをセットすると、 EUSART の受信回路が有効になります。TXSTA レ ジスタの SYNC ビットをクリアすると、EUSART が 非同期動作に設定されます。RCSTA レジスタの SPEN ビットをセットすると、EUSART が有効にな ります。対応する TRIS 制御ビットをセットして、 RX/DTのI/Oピンを入力に設定する必要があります。 RX/DT ピンをアナログ周辺機器と共有している場 合は、対応する ANSEL ビットをクリアして、アナ ログ I/O 機能を無効にする必要があります。 データの受信 最初のビットの立ち下がりエッジで、受信器のデー タ復元回路が文字の受信を開始します。最初のビッ トはスタート ビットとも呼ばれ、つねに「0」です。 データ復元回路は、スタート ビットの中央まで 1/2 ビットの期間をカウントし、そのビットがまだ「0」 かどうかをチェックします。このビットが「0」で ない場合、データ復元回路はエラーを生成せずに文 字受信を中止し、スタート ビットの立ち下がりエッ ジの検出を再開します。スタート ビット「0」の チェックに成功した場合は、データ復元回路は次の ビットの中央まで 1 ビットの期間カウントします。 次にこのビットが多数検出回路によりサンプルさ れ、得られた「0」または「1」が RSR にシフト入 力されます。この動作は、全データ ビットがサン プルされて RSR にシフト入力されるまで繰り返さ れます。最後に 1 ビットの期間が計測され、レベル がサンプルされます。これはストップ ビットで、常 に「1」です。ストップ ビットの位置でデータ復元 回路が「0」をサンプルした場合、この文字につい てフレーミング エラーがセットされます。それ以 外の場合は、この文字のフレーミング エラーはク リアされます。フレーミング エラーの詳細につい ては、18.1.2.5 項「受信フレーミング エラー」を参 照してください。 すべてのデータ ビットとストップ ビットを受信し た直後に、RSR 内の文字が EUSART の受信 FIFO に 転送され、PIR1 レジスタの RCIF 割り込みフラグ ビットがセットされます。RCREG レジスタを読み出 すことにより、FIFO の先頭の文字が転送されます。 注: 受信 FIFO がオーバーランした場合は、 オーバーラン条件が解除されるまで、それ 以降の文字は受信されません。オーバーラ ン エラーの詳細については、18.1.2.6 項 「受信オーバーラン エラー」を参照してく ださい。 18.1.2.3 受信データの極性 受信データの極性は、 BAUDCON レジスタの DTRXP ビットで制御できます。このビットのデフォルト値 は「0」で、受信アイドル / データ ビットが正論理 になります。DTRXP ビットを「1」にセットすると、 受信データが反転され、アイドル / データ ビットが 負論理になります。DTRXP ビットは、非同期モー ドでのみ受信データの極性を制御します。同期モー ドでは、DTRXP ビットには別の機能があります。 DS41303E_JP - ページ 238 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 18.1.2.4 受信割り込み EUSART 受信器が有効で、かつ読み出されていない 文字が受信 FIFO にあるときには常に、PIR1 レジス タの RCIF 割り込みフラグ ビットがセットされま す。RCIF 割り込みフラグ ビットは読み出し専用で す。ソフトウェアでセットやクリアはできません。 RCIF割り込みを有効にするには、 次のビットをセッ トします。 • PIE1 レジスタの RCIE割り込みイネーブル ビット • INTCON レジスタの PEIE 周辺割り込みイネーブ ル ビット • INTCON レジスタの GIE グローバル割り込み イネーブル ビット 読み出されていない文字が FIFO にあるときには、 割り込みイネーブル ビットの状態には関係なく RCIF 割り込みフラグ ビットがセットされます。 18.1.2.5 受信フレーミング エラー 受信FIFOバッファ内の各文字には、対応するフレー ミング エラー ステータス ビットがあります。フ レーミング エラーは、予測される時点でストップ ビットが検出されなかったことを示します。フレー ミング エラーのステータスには、RCSTA レジスタ の FERR ビット経由でアクセスします。FERR ビッ トは、受信 FIFO の先頭にある、読み出されていな い文字のステータスを示します。このため、RCREG を読み出す前に FERR ビットを読み出す必要があり ます。 FERR ビットは読み出し専用で、受信 FIFO の先頭に ある、読み出されていない文字にのみ適用されま す。フレーミング エラー (FERR = 1) により、後続 の文字受信が禁止されることはありません。FERR ビットをクリアする必要はありません。FIFO バッ ファから次の文字を読み出すと、FIFO が次の文字お よびその対応するフレーミング エラーに進みます。 RCSTAレジスタのSPENビットをクリアして、FERR ビットを強制的にクリアできます。これにより、 EUSART がリセットされます。RCSTA レジスタの CREN ビットをクリアしても、FERR ビットは影響 を受けません。フレーミング エラー自体は、割り 込みを生成しません。 注: 字は受信されません。RCSTA レジスタの CREN ビッ トをクリアするか、RCSTA レジスタの SPEN ビッ トをクリアして EUSART をリセットすることで、 エ ラーをクリアする必要があります。 18.1.2.7 9 ビット文字の受信 EUSART は、9 ビット文字の受信をサポートしてい ます。RCSTA レジスタの RX9 ビットをセットする と、EUSART は受信した各文字の 9 ビットを RSR にシフト入力します。RCSTA レジスタの RX9D ビッ トは、受信 FIFO の先頭にある、読み出されていな い文字の 9 ビット目にある最上位データ ビットで す。受信 FIFO バッファから 9 ビット データを読み 出すときには、RCREG の下位 8 ビットより前に、 RX9D データ ビットを読み出す必要があります。 18.1.2.8 アドレス検出 RS-485 システムのように複数の受信器が同一の送 信ラインを共有する場合に、特殊なアドレス検出 モードを使用できます。アドレス検出を有効にする には、RCSTA レジスタの ADDEN ビットをセット します。 アドレス検出では、9 ビット文字を受信する必要が あります。アドレス検出を有効にすると、データの 9 ビット目がセットされた文字のみが受信 FIFO バッファに転送されるので、RCIF 割り込みビット がセットされます。9 ビット目がセットされていな い文字はすべて、無視されます。 アドレス文字を受信すると、ソフトウェアが、その アドレスがソフトウェアが持つアドレスに一致す るかどうかを調べます。アドレスが一致すると、次 のストップ ビットが発生する前に、ユーザー ソフ トウェアは ADDEN ビットをクリアしてアドレス検 出を無効にする必要があります。ユーザー ソフト ウェアがメッセージ プロトコルを使用してメッ セージの後端を検出すると、ADDEN ビットをセッ トして、受信器をアドレス検出モードに戻します。 受信 FIFO のすべての受信文字にフレーミ ング エラーがある場合、RCREG を繰り返 し読み出しても、FERR ビットはクリアさ れません。 18.1.2.6 受信オーバーラン エラー 受信 FIFO バッファは 2 文字を保持できます。FIFO がアクセスされる前に、3 文字目をすべて受信した 場合、オーバーラン エラーが発生します。この場 合、RCSTA レジスタの OERR ビットがセットされ ます。既に FIFO バッファ内にある文字の読み出し はできますが、エラーを解消するまでそれ以降の文 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 239 PIC18F2XK20/4XK20 18.1.2.9 18.1.2.10 非同期受信の設定 1. SPBRGH:SPBRG レジスタ ペアおよび BRGH と BRG16 のビットを初期化して、使用するボー レートを設定します (18.3 項「EUSART ボー レート ジェネレータ (BRG)」を参照 )。 2. RX/DT および TX/CK ピンの TRIS 制御を「1」 にセットします。 3. SPEN ビット、および RX/DT ピンの TRIS ビッ トをセットして、シリアル ポートを有効にしま す。非同期動作では、SYNC ビットをクリアす る必要があります。 4. 割り込みを使用する場合は、RCIE 割り込みイ ネーブル ビットをセットし、INTCON レジスタ の GIE ビットと PEIE ビットをセットします。 5. 9 ビット受信を使用する場合は、RX9 ビットを セットします。 6. 受信した極性を反転する場合は、DTRXP ビッ トをセットします。 7. CREN ビットをセットして、受信を有効にし ます。 8. RSR から受信バッファに文字が転送されると きに、RCIF 割り込みフラグ ビットがセットさ れます。RCIE 割り込みイネーブル ビットも セットされている場合は、割り込みが生成され ます。 9. RCSTA レジスタを読み出して、エラー フラグ を取得します。9 ビット データ受信を有効にし ている場合は、エラー フラグはデータの 9 ビッ ト目です。 10. RCREG レジスタを読み出して、受信バッファか ら受信済みデータの下位8ビットを取得します。 11. オーバーランが発生した場合は、CREN 受信イ ネーブル ビットをクリアして、OERR フラグを クリアします。 このモードは通常、RS-485 システムで使用します。 アドレス検出が有効な非同期受信を設定するには、 次の手順に従います。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. DS41303E_JP - ページ 240 9 ビット アドレス検出モードの設定 Preliminary SPBRGH と SPBRG のレジスタ ペアおよび BRGH と BRG16 のビットを初期化して、使用 するボーレートを設定します (18.3 項 「EUSART ボーレート ジェネレータ (BRG)」を参照 )。 RX/DT および TX/CK ピンの TRIS 制御を「1」 にセットします。 SPEN ビットをセットして、シリアル ポートを 有効にします。非同期動作では、SYNC ビット をクリアする必要があります。 割り込みを使用する場合は、RCIE 割り込みイ ネーブル ビットをセットし、INTCON レジスタ の GIE ビットと PEIE ビットをセットします。 RX9 ビットをセットして、9 ビット受信を有効 にします。 ADDEN ビットをセットして、アドレス検出を 有効にします。 受信した極性を反転する場合は、DTRXP ビッ トをセットします。 CREN ビットをセットして、受信を有効にし ます。 RSR から受信バッファに 9 ビット目がセットさ れた文字が転送されるときに、RCIF 割り込み フラグ ビットがセットされます。RCIE 割り込 みイネーブル ビットもセットされている場合 は、割り込みが生成されます。 RCSTA レジスタを読み出して、エラー フラグ を取得します。データの 9 ビット目は常にセッ トされています。 RCREG レジスタを読み出して、受信バッファ から受信済みデータの下位 8 ビットを取得しま す。ソフトウェアが、この下位データ ビットが デバイスのアドレスであるかどうかを判定し ます。 オーバーランが発生した場合は、CREN 受信イ ネーブル ビットをクリアして、OERR フラグを クリアします。 デバイスがアドレス指定された場合は、ADDEN ビットをクリアして、すべての受信データの受 信バッファへの書き込み、および割り込みの生 成を許可します。 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 18-5: 非同期受信 Start bit bit 0 RX/DT pin bit 7/8 Stop bit bit 1 Rcv Shift Reg Rcv Buffer Reg Start bit bit 0 Start bit bit 7/8 Stop bit Word 2 RCREG Word 1 RCREG RCIDL bit 7/8 Stop bit Read Rcv Buffer Reg RCREG RCIF (Interrupt Flag) OERR bit CREN 注: 表 18-2: Name INTCON このタイミング図は、RX 入力に現れる 3 ワードを示します。3 つ目のワードの後に RCREG ( 受信バッファ ) が読み出され、 OERR ( オーバーラン ) ビットがセットされます。 非同期受信に関連するレジスタ Bit 7 Bit 6 Bit 5 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE (1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 59 RCSTA RCREG GIE/GIEH PEIE/GIEL TMR0IE Bit 4 EUSART Receive Register 59 TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 60 TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 59 RCIDL DTRXP CKTXP BRG16 — WUE ABDEN BAUDCON ABDOVF 59 SPBRGH EUSART Baud Rate Generator Register, High Byte 59 SPBRG EUSART Baud Rate Generator Register, Low Byte 59 記号の説明 : — = 未実装、「0」として読み出し。網掛けのビットは非同期受信では使用しません。 注 1: PIC18F2XK20 デバイスでは予約されています。常にクリアの状態にしてください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 241 PIC18F2XK20/4XK20 18.2 最初の方法 ( 推奨 ) では、HFINTOSC 出力の調整に OSCTUNE レジスタを使用します。OSCTUNE レジ スタの値を調整することにより、システム クロック ソースの分解能を向上できます。詳細については、 2.5 項「内部クロック モード」を参照してください。 非同期動作でのクロックの精度 内部オシレータ ブロックの出力 (HFINTOSC) は、工 場出荷時に較正されています。ただし、VDD や温度 の変化に伴って HFINTOSC の周波数がドリフトす ることがあり、このドリフトが非同期ボーレートに 直接影響します。2 つの方法で、ボーレート クロッ クを調整できます。ただし、両方の方法に何らかの リファレンス クロック ソースが必要です。 レジスタ 18-1: R/W-0 CSRC もう 1 つの方法では、ボーレート ジェネレータの 値を調整します。これは、自動ボーレート検出機能 で自動的に実行できます (18.3.1 項「自動ボーレー ト検出」を参照 )。ボーレート ジェネレータを調整 して周辺クロック周波数の段階的な変化を補正す るときに、十分な分解能がないことがあります。 TXSTA: 送信ステータスおよび制御レジスタ R/W-0 TX9 R/W-0 TXEN (1) R/W-0 R/W-0 R/W-0 R-1 R/W-0 SYNC SENDB BRGH TRMT TX9D bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 -n = POR 時の値 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア ビット 7 CSRC: クロック ソース選択ビット 非同期モード : ドントケア 同期モード : 1 = マスター モード ( クロックは内部の BRG が生成 ) 0 = スレーブ モード ( 外部クロック ソース ) ビット 6 TX9: 9 ビット送信イネーブル ビット 1 = 9 ビット送信を選択 0 = 8 ビット送信を選択 ビット 5 TXEN: 送信イネーブル ビット (1) 1 = 送信を有効にする 0 = 送信を無効にする ビット 4 SYNC: EUSART モード選択ビット 1 = 同期モード 0 = 非同期モード ビット 3 SENDB: ブレーク文字送信ビット 非同期モード : 1 = 次の送信で同期ブレークを送信 ( 完了後ハードウェアでクリア ) 0 = 同期ブレークの送信完了 同期モード : ドントケア ビット 2 BRGH: 高ボーレート選択ビット 非同期モード : 1 = 高速 0 = 低速 同期モード : 使用しない ビット 1 TRMT: 送信シフト レジスタ ステータス ビット 1 = TSR が空 0 = TSR がフル ビット 0 TX9D: 送信データの 9 ビット目 アドレス / データ ビットまたはパリティ ビットを使用可能 注 1: x = 不明 同期モードでは、SREN/CREN が TXEN よりも優先されます。 DS41303E_JP - ページ 242 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 18-2: R/W-0 SPEN bit 7 RCSTA: 受信ステータスおよび制御レジスタ (1) R/W-0 RX9 R/W-0 SREN R/W-0 CREN R/W-0 ADDEN R-0 FERR R-0 OERR R-x RX9D bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 ビット 7 ビット 6 ビット 5 ビット 4 ビット 3 ビット 2 ビット 1 ビット 0 W = 書き込み可 「1」= セット U = 未実装ビット。「0」として読み出し 「0」= クリア x = 不明 SPEN: シリアル ポート イネーブル ビット 1 = シリアル ポートを有効にする (RX/DT と TX/CK のピンをシリアル ポート ピンに設定 ) 0 = シリアル ポートを無効にする ( リセットに保持 ) RX9: 9 ビット受信イネーブル ビット 1 = 9 ビット受信を選択する 0 = 8 ビット受信を選択する SREN: シングル受信イネーブル ビット 非同期モード : ドントケア 同期モードのマスター : 1 = シングル受信を有効にする 0 = シングル受信を無効にする このビットは、受信完了後にクリアされる 同期モードのスレーブ : ドントケア CREN: 連続受信イネーブル ビット 非同期モード : 1 = 受信器を有効にする 0 = 受信器を無効にする 同期モード : 1 = イネーブル ビット CREN がクリアされるまで、連続受信を有効にする (CREN は SREN よりも優先される ) 0 = 連続受信を無効にする ADDEN: アドレス検出イネーブル ビット 非同期モード 9 ビット (RX9 = 1): 1 = アドレス検出を有効にし、RSR<8> のセット時に割り込みを有効にして受信バッファを ロードする 0 = アドレス検出を無効にする。すべてのバイトが受信され、9 ビット目をパリティ ビットと して使用可能 非同期モード 8 ビット (RX9 = 0): ドントケア FERR: フレーミング エラー ビット 1 = フレーミング エラー (RCREG レジスタの読み出しで、更新して次の有効ビットを受信で きる ) 0 = フレーミング エラーなし OERR: オーバーラン エラー ビット 1 = オーバーラン エラー (CREN ビットのクリアで解消できる ) 0 = オーバーラン エラーなし RX9D: 受信データの 9 ビット目 アドレス / データ ビットまたはパリティ ビットにすることができ、ユーザー ファームウェアで 計算する必要がある 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 243 PIC18F2XK20/4XK20 レジスタ 18-3: BAUDCON: ボーレート制御レジスタ R/W-0 R-1 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 -n = POR 時の値 U = 未実装ビット。「0」として読み出し 「1」= セット 「0」= クリア x = 不明 ビット 7 ABDOVF: 自動ボーレート検出オーバーフロー ビット 非同期モード : 1 = 自動ボーレート タイマがオーバーフローした 0 = 自動ボーレート タイマがオーバーフローしていない 同期モード : ドントケア ビット 6 RCIDL: 受信アイドル フラグ ビット 非同期モード : 1 = 受信器がアイドル 0 = スタート ビットが検出され、受信器がアクティブ 同期モード : ドントケア ビット 5 DTRXP: データ / 受信極性選択ビット 非同期モード : 1 = 受信データ (RX) を反転する ( 負論理 ) 0 = 受信データ (RX) を反転しない ( 正論理 ) 同期モード : 1 = データ (DT) を反転する ( 負論理 ) 0 = データ (DT) を反転しない ( 正論理 ) ビット 4 CKTXP: クロック / 送信極性選択ビット 非同期モード : 1 = 送信 (TX) のアイドル状態を Low にする 0 = 送信 (TX) のアイドル状態を High にする 同期モード : 1 = データはクロックの立ち下がりエッジで変化し、クロックの立ち上がりエッジでサンプルされる 0 = データはクロックの立ち上がりエッジで変化し、クロックの立ち下がりエッジでサンプルされる ビット 3 BRG16: 16 ビット ボーレート ジェネレータ ビット 1 = 16 ビット ボーレート ジェネレータを使用する (SPBRGH:SPBRG) 0 = 8 ビット ボーレート ジェネレータを使用する (SPBRG) ビット 2 未実装 :「0」として読み出し ビット 1 WUE: ウェイクアップ イネーブル ビット 非同期モード : 1 = 受信器が立ち下がりエッジを待っている。文字は受信されないが、立ち下がりエッジで RCIF が セットされる。WUE が立ち上がりエッジで自動的にクリアされる 0 = 受信器が正常動作中 同期モード : ドントケア ビット 0 ABDEN: 自動ボーレート検出イネーブル ビット 非同期モード : 1 = 自動ボーレート検出モードを有効にする ( 自動ボーレートの完了時にクリアされる ) 0 = 自動ボーレート検出モードを無効にする 同期モード : ドントケア DS41303E_JP - ページ 244 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 18.3 EUSART ボーレート ジェネレータ (BRG) 受信動作がアクティブなときにシステム クロック を変更すると、受信エラーまたはデータ喪失が発生 することがあります。この問題を防ぐには、RCIDL ビットのステータスをチェックして、システム ク ロックを変更する前に受信動作がアイドルである ことを確認します。 ボーレート ジェネレータ (BRG) は 8 ビットまたは 16 ビットのタイマで、EUSART の非同期 / 同期動作 の両方がサポートされます。デフォルトでは、BRG は 8 ビット モードで動作します。BAUDCON レジ スタの BRG16 ビットをセットすると、16 ビット モードが選択されます。 例 18-1: ボーレート エラーの計算 FOSC が 16 MHz、使用するボーレートが 9600、 非同期モード、8 ビット BRG のデバイスの場合 : SPBRGH:SPBRGレジスタ ペアにより、 動作するボー レート タイマの周期が決まります。非同期モードで は、TXSTA レジスタの BRGH ビット、および BAUDCON レジスタの BRG16 ビットの両方により、 ボーレート周期の乗数が決まります。同期モードで は、BRGH ビットは無視されます。 F OS C Desired Baud Rate = -------------------------------------------------------------------64 [SPBRGH:SPBRG] + 1 Solving for SPBRGH:SPBRG: F OS C -------------------------------------------Desired Baud Rate – 1 X = --------------------------------------------64 表 18-3 に、ボーレートの計算式を示します。例 18-1 に、ボーレートおよびボーレート エラーの計算例 を示します。 16000000 -----------------------9600 - – 1 = ----------------------64 参考として、表 18-5 に、さまざまな非同期モード の代表的なボーレートとエラーの計算値を示しま す。高ボーレート (BRGH = 1) または 16 ビット BRG (BRG16 = 1) を使用すると、ボーレート エラーの低 減に役立つことがあります。16 ビット BRG モード は、高いオシレータ周波数で低いボーレートを実現 するために使用されます。 = 25.042 = 25 16000000Calculated Baud Rate = -------------------------64 25 + 1 = 9615 SPBRGH と SPBRG のレジスタ ペアに新しい値を書 き込むと、BRG タイマはリセット ( またはクリア ) されます。これにより、BRG はタイマのオーバー フローを待つことなく新たなボーレートを出力で きます。 表 18-3: Baud Rate – Desired Baud RateError = Calc. ------------------------------------------------------------------------------------------Desired Baud Rate 9615 – 9600 = ---------------------------------- = 0.16% 9600 ボーレートの計算式 Configuration Bits BRG/EUSART Mode Baud Rate Formula 0 8-bit/Asynchronous FOSC/[64 (n+1)] 0 1 8-bit/Asynchronous 0 1 0 16-bit/Asynchronous 0 1 1 16-bit/Asynchronous 1 0 x 8-bit/Synchronous 1 x 16-bit/Synchronous SYNC BRG16 BRGH 0 0 0 1 記号の説明 : 表 18-4: FOSC/[16 (n+1)] FOSC/[4 (n+1)] x = ドントケア、n = SPBRGH、SPBRG レジスタ ペアの値 ボーレート ジェネレータに関連するレジスタ Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 59 RCSTA SPEN Name BAUDCON ABDOVF RX9 SREN CREN ADDEN FERR OERR RX9D 59 RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 59 SPBRGH EUSART Baud Rate Generator Register, High Byte 59 SPBRG EUSART Baud Rate Generator Register, Low Byte 59 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは BRG では使用しません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 245 PIC18F2XK20/4XK20 表 18-5: 非同期モードのボーレート SYNC = 0, BRGH = 0, BRG16 = 0 BAUD RATE FOSC = 64.000 MHz Actual Rate % Error SPBRG value (decimal) 300 1200 — — — — — 2400 — 9615 — 0.16 9600 FOSC = 18.432 MHz FOSC = 16.000 MHz FOSC = 11.0592 MHz Actual Rate % Error SPBRG value (decimal) — — 1200 — 0.00 — 239 — 103 2400 0.00 119 2404 0.16 103 2400 0.00 71 9600 0.00 29 9615 0.16 25 9600 0.00 17 Actual Rate — 1202 % Error SPBRG value (decimal) Actual Rate % Error SPBRG value (decimal) — 0.16 — 207 — 1200 — 0.00 — 143 10417 10417 0.00 95 10286 -1.26 27 10417 0.00 23 10165 -2.42 16 19.2k 19.23k 0.16 51 19.20k 0.00 14 19.23k 0.16 12 19.20k 0.00 8 57.6k 58.82k 111.11k 2.12 -3.55 16 8 57.60k — 0.00 7 — — — — — — — 57.60k — 0.00 2 — — 115.2k — SYNC = 0, BRGH = 0, BRG16 = 0 BAUD RATE FOSC = 8.000 MHz FOSC = 4.000 MHz SPBRG Actual % value Rate Error (decimal) FOSC = 3.6864 MHz SPBRG Actual % value Rate Error (decimal) FOSC = 1.000 MHz SPBRG Actual % value Rate Error (decimal) Actual Rate % Error SPBRG value (decimal) 300 1200 — 1202 — 0.16 — 103 300 1202 0.16 0.16 207 51 300 1200 0.00 191 47 300 1202 0.16 0.16 51 12 2400 2404 0.16 51 2404 0.16 25 2400 0.00 23 — — — 9600 9615 0.16 12 5 — — — 0.00 11 — 5 0.00 10417 — 0.00 9600 10417 — 10417 — — — — — — — 2 — — — 0.00 — 19.2k — 19.20k — — — 57.6k — — — — — — — — — — — — 57.60k — 0.00 0 — — — — — — — — 115.2k 0.00 SYNC = 0, BRGH = 1, BRG16 = 0 BAUD RATE FOSC = 64.000 MHz FOSC = 18.432 MHz FOSC = 16.000 MHz Actual Rate % Error 300 1200 — — — — — — — — — — — — — — — — — — — — — — — — 2400 — — — 9600 — — — — 9600 — 0.00 — 119 — 9615 — 0.16 — 103 — 9600 — 0.00 — 71 10417 — 0.16 — 207 10378 -0.37 110 10417 0.00 95 10473 0.53 65 19.2k — 19.23k 19.20k 0.00 59 19.23k 0.16 51 19.20k 0.00 35 57.6k 57.97k 0.64 68 57.60k 0.00 19 58.82k 2.12 16 57.60k 0.00 11 115.2k 114.29k -0.79 34 115.2k 0.00 9 111.1k -3.55 8 115.2k 0.00 5 DS41303E_JP - ページ 246 Actual Rate % Error SPBRG value (decimal) Actual Rate FOSC = 11.0592 MHz SPBRG value (decimal) Preliminary % Error SPBRG value (decimal) Actual Rate % Error SPBRG value (decimal) 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 18-5: 非同期モードのボーレート ( 続き ) SYNC = 0, BRGH = 1, BRG16 = 0 BAUD RATE FOSC = 8.000 MHz Actual Rate % Error SPBRG value (decimal) — — — 2400 — 2404 — 0.16 — 207 9600 9615 0.16 51 10417 10417 0.00 47 19.2k 19231 0.16 57.6k 55556 115.2k — 300 1200 FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz Actual Rate % Error SPBRG value (decimal) — 1202 — 0.16 — 207 2404 0.16 103 2400 0.00 95 2404 0.16 25 9615 0.16 25 9600 0.00 23 10417 0.00 23 10473 0.53 21 — 10417 — 0.00 — 5 25 19.23k 0.16 12 19.2k 0.00 11 — — — -3.55 8 — — 0.00 3 — — — 57.60k — — — 115.2k 0.00 1 — — — — — — Actual Rate — 1200 % Error SPBRG value (decimal) Actual Rate % Error SPBRG value (decimal) — 0.00 — 191 300 1202 0.16 0.16 207 51 SYNC = 0, BRGH = 0, BRG16 = 1 BAUD RATE FOSC = 64.000 MHz FOSC = 18.432 MHz FOSC = 16.000 MHz FOSC = 11.0592 MHz Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) 300 1200 300.0 1200.1 0.00 0.01 13332 3332 300.0 1200 0.00 0.00 3839 959 300.03 1200.5 0.01 0.04 3332 832 300.0 1200 0.00 0.00 2303 575 2400 2399 -0.02 1666 2400 0.00 479 2398 -0.08 416 2400 0.00 287 71 9600 9592 -0.08 416 9600 0.00 119 9615 0.16 103 9600 0.00 10417 10417 0.00 383 10378 -0.37 110 10417 0.00 95 10473 0.53 65 19.2k 19.23k 0.16 207 19.20k 0.00 59 19.23k 0.16 51 19.20k 0.00 35 57.6k 57.97k 0.64 68 57.60k 0.00 19 58.82k 2.12 16 57.60k 0.00 11 115.2k 114.29k -0.79 34 115.2k 0.00 9 111.11k -3.55 8 115.2k 0.00 5 SYNC = 0, BRGH = 0, BRG16 = 1 BAUD RATE FOSC = 8.000 MHz FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) 300 1200 299.9 1199 -0.02 -0.08 1666 416 300.1 1202 0.04 0.16 832 207 300.0 1200 0.00 0.00 767 191 300.5 1202 0.16 0.16 207 51 2400 2404 0.16 207 2404 0.16 103 2400 0.00 95 2404 0.16 25 9600 9615 0.16 51 9615 0.16 25 9600 0.00 23 10417 10417 0.00 47 10417 0.00 23 10473 0.53 21 — 10417 — 0.00 — 5 19.2k 19.23k 0.16 25 19.23k 0.16 12 19.20k 0.00 11 — — — 57.6k 55556 -3.55 8 0.00 3 115.2k — — — — — 57.60k 115.2k 0.00 1 — — — — — — 2009 Microchip Technology Inc. — — — — Preliminary DS41303E_JP - ページ 247 PIC18F2XK20/4XK20 表 18-5: 非同期モードのボーレート ( 続き ) SYNC = 0, BRGH = 1, BRG16 = 1 or SYNC = 1, BRG16 = 1 BAUD RATE 300 1200 FOSC = 64.000 MHz FOSC = 18.432 MHz FOSC = 16.000 MHz Actual Rate % Error 300 1200 0.00 0.00 53332 13332 300.0 1200 0.00 0.00 15359 3839 300.0 1200.1 0.00 0.01 13332 3332 300.0 1200 0.00 0.00 9215 2303 1151 Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate FOSC = 11.0592 MHz SPBRGH :SPBRG (decimal) % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) 2400 2400 0.00 6666 2400 0.00 1919 2399.5 -0.02 1666 2400 0.00 9600 9598.1 -0.02 1666 9600 0.00 479 9592 -0.08 416 9600 0.00 287 10417 10417 0.00 1535 10425 0.08 441 10417 0.00 383 10433 0.16 264 19.2k 19.21k 0.04 832 19.20k 0.00 239 19.23k 0.16 207 19.20k 0.00 143 57.6k 57.55k -0.08 277 57.60k 0.00 79 57.97k 0.64 68 57.60k 0.00 47 115.2k 115.11k -0.08 138 115.2k 0.00 39 114.29k -0.79 34 115.2k 0.00 23 SYNC = 0, BRGH = 1, BRG16 = 1 or SYNC = 1, BRG16 = 1 BAUD RATE FOSC = 8.000 MHz FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) Actual Rate % Error SPBRGH :SPBRG (decimal) 300 1200 300.0 1200 0.00 -0.02 6666 1666 300.0 1200 0.01 0.04 3332 832 300.0 1200 0.00 0.00 3071 767 300.1 1202 0.04 0.16 832 207 2400 2401 0.04 832 2398 0.08 416 2400 0.00 383 2404 0.16 103 25 9600 9615 0.16 207 9615 0.16 103 9600 0.00 95 9615 0.16 10417 10417 0.00 191 10417 0.00 95 10473 0.53 87 10417 0.00 23 19.2k 19.23k 0.16 103 19.23k 0.16 51 19.20k 0.00 47 19.23k 0.16 12 57.6k 57.14k -0.79 34 58.82k 2.12 16 57.60k 0.00 15 115.2k 117.6k 2.12 16 111.1k -3.55 8 115.2k 0.00 7 — — — — — — DS41303E_JP - ページ 248 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 18.3.1 自動ボーレート検出 EUSART モジュールは、ボーレートの自動検出 / 較 正をサポートしています。 自動ボーレート検出 (ABD) モードでは、BRG へのク ロックが逆方向になります。BRG が入力 RX 信号の 時間を計測するのではなく、RX 信号が BRG の時間 を計測します。ボーレート ジェネレータは、LIN バ スの同期文字である、受信した 55h (ASCII の「U」) の周期を計測するために使用されます。この文字に 独特な特徴は、ストップ ビットのエッジを含めて、 立ち上がりエッジが 5 つあることです。 BAUDCON レジスタの ABDEN ビットをセットする と、自動ボーレート較正シーケンスが開始されます ( 図 18.3.2)。ABD シーケンスの実行中、EUSART ス テート マシンはアイドルに保持されます。スター ト ビットの後、受信ラインの最初の立ち上がりエッ ジで、SPBRG が BRG カウンタを使用してカウント を開始します ( 表 18-6 を参照 )。5 つ目の立ち上が りエッジは、RX ピンで、8 ビット目の周期の後縁 で発生します。この時点で、適切な BRG 周期の合 計値が SPBRGH:SPBRG レジスタ ペアに残ります。 また、ABDEN ビットが自動的にクリアされ、RCIF 割り込みフラグがセットされます。RCIF 割り込み をクリアするには、RCREG を読み出す動作が必要 です。RCREG の内容は破棄されます。SPBRGH レ ジスタを使用しないモードの較正時には、SPBRGH レジスタの 00h をチェックして、SPBRG レジスタ がオーバーフローしていないことを確認できます。 BRG の自動ボーレート クロックは、BRG16 ビット と BRGH ビットにより決まります ( 表 18-6 を参照 )。 ABD では、BRG16 ビットの設定には関係なく、 SPBRGH と SPBRG の両方のレジスタが 16 ビット カ ウンタとして使用されます。ボーレート周期の較正 中、SPBRGH と SPBRG のレジスタは、BRG のベー 図 18-6: ス クロックの 1/8 の速度でクロック同期します。得 られるバイトの計測値は、最高速度でクロック駆動 するときの平均ビット時間です。 注 1: ABDEN ビットとともに WUE ビットを セットした場合、ブレーク文字の後のバ イトで自動ボーレート検出が実行され ます (18.3.3 項「ブレークでの自動ウェ イクアップ」を参照 )。 2: 入力文字のボーレートを、選択した BRG クロック ソースの範囲内に指定するの はユーザー側で行います。オシレータ周 波数と EUSART のボーレートとの組み合 わせの中には、使用できないものがあり ます。 3: 自動ボーレート プロセスでは、 自動ボー レート カウンタが 1 からカウントを開 始します。最高の精度を得るには、自動 ボーレート シーケンスの完了時に SPBRGH:SPBRG レジスタ ペアから 1 を 減算してください。 表 18-6: BRG カウンタのクロック速度 BRG16 BRGH BRG Base Clock BRG ABD Clock 0 0 FOSC/64 FOSC/512 0 1 FOSC/16 FOSC/128 1 0 FOSC/16 FOSC/128 1 1 FOSC/4 FOSC/32 注: ABD シーケンスでは、BRG16 の設定には 関係なく、SPBRGH と SPBRG の両方のレ ジスタが 16 ビット カウンタとして使用さ れます。 自動ボーレート較正 XXXXh BRG Value RX pin 0000h 001Ch Start Edge #1 bit 1 bit 0 Edge #2 bit 3 bit 2 Edge #3 bit 5 bit 4 Edge #4 bit 7 bit 6 Edge #5 Stop bit BRG Clock Auto Cleared Set by User ABDEN bit RCIDL RCIF bit (Interrupt) Read RCREG SPBRG XXh 1Ch SPBRGH XXh 00h 注 1: ABD シーケンスでは、EUSART モジュールを非同期モードに設定する必要があります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 249 PIC18F2XK20/4XK20 18.3.2 18.3.3.1 自動ボーレートのオーバーフロー 自動ボーレート検出中に、RX ピンで 5 番目の立ち 上がりエッジが検出される前にボーレート カウン タがオーバーフローすると、BAUDCON レジスタの ABDOVF ビットがセットされます。ABDOVF ビッ トは、SPBRGH:SPBRG レジスタ ペアの 16 ビット で表すことができる最大カウントを、カウンタの値 が超えたことを示します。ABDOVF をセットした 後、RX ピンで 5 番目の立ち上がりエッジが検出さ れるまで、カウンタはカウントを継続します。RX で 5 番目のエッジが検出されると、ハードウェアが RCIF 割り込みフラグをセットし、BAUDCON レジ スタの ABDEN ビットをクリアします。その後、 RCREG を読み出して、RCIF フラグをクリアできま す。ABDOVF フラグは、ソフトウェアで直接クリ アできます。 RCIF フラグがセットされる前に自動ボーレート プ ロセスを終了するには、ABDEN ビットをクリアし、 次に ABDOVF ビットをクリアします。ABDEN ビッ トを先にクリアしない場合、ABDOVF ビットはセッ トされたままになります。 18.3.3 ブレークでの自動ウェイクアップ スリープ モードでは、EUSART へのクロックはす べて一時停止されています。このため、ボーレート ジェネレータは非アクティブで、適切な文字の受信 を実行できません。自動ウェイクアップ機能では、 RX/DT ラインの活動により、コントローラをウェ イクアップできます。この機能は、非同期モードで のみ使用できます。 自 動 ウ ェ イ ク ア ッ プ 機 能 を 有 効 に す る に は、 BAUDCONレジスタのWUEビットをセットします。 WUE ビットをセットすると、RX/DT での通常受信 シーケンスが無効になり、EUSART がアイドル状態 のままとなって、CPU のモードとは関係なくウェイ クアップ イベントをモニタします。ウェイクアッ プ イベントは、RX/DT ラインでの High から Low へ の遷移で構成されます (LIN プロトコル用の同期ブ レークまたはウェイクアップ信号文字の開始も同 時に開始される )。 EUSART モジュールは、ウェイクアップ イベントと 同時に RCIF 割り込みを生成します。この割り込み は、通常の CPU 動作モードでは Q クロックと同期 して ( 図 18-7)、デバイスがスリープ モードの場合は Q クロックとは非同期で生成されます ( 図 18-8)。割 り込み条件は、RCREG レジスタの読み出しでクリア されます。 特殊な条件 ブレーク文字 ウェイクアップ イベント時の文字のエラーや文字 のフラグメントを防止するため、ウェイクアップ文 字はすべて「0」である必要があります。 ウェイクアップが有効なときには、データ ストリー ムの Low 時間とは無関係に、この機能が動作しま す。WUE ビットがセットされているときにゼロ以 外の有効な文字を受信した場合、スタート ビット から最初の立ち上がりエッジまでの Low 時間が ウェイクアップ イベントとして解釈されます。文 字の残りのビットはフラグメント文字として受信 され、 後続の文字でフレーミング エラーまたはオー バーラン エラーが発生することがあります。 このため、送信する最初の 1 文字のビットはすべて 「0」にする必要があります。これは 10 以上のビッ ト時間にする必要があり、LIN バスでは 13 ビット 時間をお勧めします。標準の RS-232 デバイスでは、 任意のビット時間にできます。 オシレータの起動時間 オシレータの起動時間を考慮する必要があり、特に 起動間隔が長いオシレータを使用する場合 (LP、 XT、HS/PLL のモードなど ) は特に注意する必要が あります。同期ブレーク ( またはウェイクアップ信 号 ) の文字には十分な長さが必要で、その後、選択 したオシレータが起動し、EUSART を適切に初期化 できる十分な間隔が必要です。 WUE ビット RCIFビットをセットすることにより、 ウェイクアッ プ イベントでは受信割り込みが発生します。RX/DT の立ち上がりエッジで、WUE ビットがハードウェ アによりクリアされます。その後、割り込み条件が RCREG レジスタの読み出しによりソフトウェアで クリアされ、その内容が破棄されます。 実際のデータが失われないように、WUE ビットを セットする前に RCIDL ビットをチェックして、受 信動作が実行中でないことを確認します。受信動作 を実行していない場合は、スリープ モードにする 直前に WUE ビットをセットできます。 WUE ビットは、 ブレーク終了時に RX ラインが Low から High に遷移することで自動的にクリアされま す。これにより、ブレーク イベントの終了を示し ます。この時点で EUSART モジュールがアイドル モードになり、次の文字の受信を待ちます。 DS41303E_JP - ページ 250 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 18-7: 通常動作時の自動ウェイクアップ ビット (WUE) のタイミング Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 OSC1 Auto Cleared Bit set by user WUE bit RX/DT Line RCIF 注 1: 図 18-8: Cleared due to User Read of RCREG WUE ビットがセットされているときには、EUSART はアイドルのままです。 スリープ時の自動ウェイクアップ ビット (WUE) のタイミング Q1Q2 Q3 Q4 Q1Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1Q2 Q3 Q4 OSC1 Auto Cleared Bit Set by User WUE bit RX/DT Line 注1 RCIF Sleep Command Executed 注 1: 2: Sleep Ends Cleared due to User Read of RCREG ウェイクアップ イベントで、オシレータの起動に長い時間が必要な場合、stposc 信号がアクティブな間に WUE ビットが自動的に クリアされることがあります。このシーケンスは、Q クロックの有無には依存しません。 WUE ビットがセットされているときには、EUSART はアイドルのままです。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 251 PIC18F2XK20/4XK20 18.3.4 ブレーク文字のシーケンス EUSART モジュールには、LIN バス規格に必要な特 殊文字ブレークのシーケンスを送信する機能があ ります。ブレーク文字は、スタート ビット、12 ビッ トの「0」、およびストップ ビットで構成されます。 ブレーク文字を送信するには、TXSTA レジスタの SENDB ビットと TXEN ビットをセットします。そ の後、TXREG レジスタへの書き込みによりブレー ク文字の送信が開始されます。TXREG レジスタに 書き込まれたデータの値は無視され、すべて「0」 として送信されます。 対応するストップ ビットの送信後、SENDB ビット がハードウェアにより自動的にリセットされます。 これにより、ブレーク文字の次の送信バイト ( 通常 は LIN 仕様の同期文字 ) を送信 FIFO にあらかじめ ロードしておくことができます。 TXSTA レジスタの TRMT ビットは、通常の送信時 と同様に、送信動作がアクティブかアイドルかを示 します。ブレーク文字のシーケンスのタイミングに ついては、図 18-9 を参照してください。 18.3.4.1 ブレークと同期の送信シーケンス 次のシーケンスにより、ブレークと自動ボーレート 同期バイトで構成されたメッセージ フレーム ヘッ ダが送信されます。このシーケンスは、LIN バス マ スターに典型的なものです。 1. 2. 3. 4. 5. EUSART を希望のモードに設定します。 TXEN ビットと SENDB ビットをセットして、 ブレーク シーケンスを有効にします。 TXREGレジスタにダミー文字をロードして、送 信を起動します ( 値は無視されます )。 TXREG レジスタに「55h」を書き込んで、送信 FIFO バッファに同期文字をロードします。 ブレークの送信後、SENDBビットがハードウェ アによりリセットされ、その後同期文字が送信 されます。 図 18-9: TXREG レジスタが空になると、TXIF ビットにより そのことが示され、次のデータ バイトが TXREG レ ジスタに書き込み可能になります。 18.3.5 ブレーク文字の受信 EUSART モジュールでは、ブレーク文字を 2 つの方 法で受信できます。 ブレーク文字を検出する最初の方法では、RCSTA レジスタの FERR ビット、および RCREG が示す受 信データを使用します。ボーレート ジェネレータ は、予測したボーレートで初期化済みであると見な されます。 次の状態のときに、ブレーク文字が受信済みです。 • RCIF ビット = セット • FERR ビット = セット • RCREG = 00h 2 つ目の方法では、18.3.3 項「ブレークでの自動ウェ イクアップ」に記載の自動ウェイクアップ機能を使 用します。この機能を有効にすると、EUSART は RX/DT での次の 2 つの遷移をサンプルし、RCIF 割 り込みを発生して、次のデータ バイトとその後の 割り込みを受信します。 通常は、ブレーク文字の後に、自動ボーレート検出 機能を有効にします。両方の方法で、EUSART をス リープ モードにする前に、BAUDCON レジスタの ABDEN ビットをセットできます。 ブレーク文字の送信シーケンス Write to TXREG Dummy Write BRG Output (Shift Clock) TX (pin) Start bit bit 0 bit 1 bit 11 Stop bit Break TXIF bit (Transmit interrupt Flag) TRMT bit (Transmit Shift Reg. Empty Flag) SENDB (send Break control bit) DS41303E_JP - ページ 252 SENDB Sampled Here Preliminary Auto Cleared 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 18.4 EUSART の同期モード 同期シリアル通信は通常、マスターを 1 つ、スレー ブを 1 つ以上持つシステムで使用されます。マス ター デバイスにはボーレート生成に必要な回路が あり、システム内のすべてのデバイスにクロックを 供給します。スレーブ デバイスはマスター クロッ クを活用でき、クロック生成回路を内蔵する必要が なくなります。 同期モードでは、双方向データ ラインとクロック ラインという 2 本の信号ラインがあります。スレー ブは、マスターが供給する外部クロックを使用し、 それぞれの送信 / 受信シフト レジスタにシリアル データのシフト入力とシフト出力を行います。デー タ ラインは双方向なので、同期動作は半二重のみ です。半二重ということは、マスターとスレーブの デバイスでデータの送信と受信ができる ( ただし同 時に両方は不可 ) ことを示します。EUSART は、マ スター デバイスまたはスレーブ デバイスとして動 作できます。 同期送信では、スタート ビットとストップ ビット は使用しません。 18.4.1 同期マスター モード EUSART を同期マスターとして設定するには、次の ビットを使用します。 • SYNC = 1 • CSRC = 1 • SREN = 0 ( 送信 )、SREN = 1 ( 受信 ) • CREN = 0 ( 送信 )、CREN = 1 ( 受信 ) • SPEN = 1 TXSTA レジスタの SYNC ビットをセットすると、デ バイスが同期動作に設定されます。TXSTA レジスタ のCSRCビットをセットすると、 デバイスがマスター に設定されます。RCSTA レジスタの SREN ビットと CREN ビットをクリアすると、デバイスが送信モー ドになります。その他のビット構成では、デバイス は受信モードに設定されます。RCSTA レジスタの SPEN ビットをセットすると、EUSART が有効にな ります。RX/DT または TX/CK のピンをアナログ周 辺機器と共有している場合は、 対応する ANSEL ビッ トをクリアして、アナログ I/O 機能を無効にする必 要があります。 RX/DT および TX/CK のピンに対応する TRIS ビッ トをセットする必要があります。 18.4.1.1 ビットが有効になります。各データ ビットで 1 ク ロック サイクルが生成されます。データ ビットの 数だけ、クロック サイクルが生成されます。 18.4.1.2 クロックの極性 Microwire との互換性のために、クロックの極性オ プションが用意されています。クロックの極性は、 BAUDCONレジスタのCKTXPビットで選択します。 CKTXP ビットをセットすると、クロックのアイド ル状態が High に設定されます。CKTXP ビットを セットすると、データは各クロックの立ち下がり エッジで変化し、各クロックの立ち上がりエッジで サンプルされます。CKTXP ビットをクリアすると、 アイドル状態が Low に設定されます。CKTXP ビッ トをクリアすると、データは各クロックの立ち上が りエッジで変化し、各クロックの立ち下がりエッジ でサンプルされます。 18.4.1.3 同期マスター送信 データは、RX/DT ピンからデバイス外に送信され ます。EUSART を同期マスター送信動作に設定する と、RX/DT および TX/CK のピンの出力ドライバが 自動的に有効になります。 TXREG レジスタに 1 文字を書き込むと、送信が開 始されます。TSR に前の文字のすべてまたは一部が 残っている場合は、その文字の最後のビットが送信 されるまで、新しい文字データは TXREG に保持さ れます。これが最初の文字の場合、または前の文字 が TSR からすべて出ている場合には、TXREG の データが即座に TSR レジスタに転送されます。 TXREG から TSR にデータを転送した直後に、文字 の送信シーケンスが開始されます。 各データ ビットはマスター クロックの立ち上がり エッジで変化し、次のクロックの立ち上がりエッジ まで有効です。 注: TSR レジスタはデータ メモリにマップさ れていないので、ユーザーが使用すること はできません。 18.4.1.4 データの極性 送信 / 受信データの極性は、BAUDCON レジスタの DTRXP ビットで制御できます。このビットのデ フォルト値は「0」で、送信 / 受信データが正論理 になります。DTRXP ビットを「1」にセットする と、データが反転され、送信 / 受信データが負論理 になります。 マスター クロック 同期データ送信では、データと同期する別のクロッ ク ラインを使用します。マスターとして設定された デバイスは、TX/CK ラインでクロックを送信しま す。EUSART の同期送信 / 受信動作を設定すると、 TX/CK ピンの出力ドライバが自動的に有効になり ます。シリアル データ ビットが立ち上がりエッジ で変化し、各クロックの立ち下がりエッジでデータ 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 253 PIC18F2XK20/4XK20 18.4.1.5 1. 2. 3. 4. 同期マスター送信の設定 : 5. SPBRGH と SPBRG のレジスタ ペアおよび BRGH と BRG16 のビットを初期化して、使用 するボーレートを設定します (18.3 項「EUSART ボーレート ジェネレータ (BRG)」を参照 )。 RX/DT および TX/CK ピンの TRIS 制御を「1」 にセットします。 SYNC、SPEN、および CSRC のビットをセット して、同期マスターのシリアル ポートを有効に します。RX/DT および TX/CK の I/O ピンに対 応する TRIS ビットをセットします。 SREN ビットと CREN ビットをクリアして、受 信モードを無効にします。 図 18-10: 6. 7. 8. 9. TXEN ビットをセットして、送信モードを有効 にします。 9 ビット送信を使用する場合は、TX9 ビットを セットします。 割り込みを使用する場合は、TXIE、GIE、およ び PEIE の割り込みイネーブル ビットをセット します。 9 ビット送信を選択する場合は、9 ビット目を TX9D ビットにロードする必要があります。 TXREG レジスタにデータをロードして、送信 を開始します。 同期送信 RX/DT pin bit 0 bit 1 Word 1 bit 2 bit 7 bit 0 bit 1 Word 2 bit 7 TX/CK pin (SCKP = 0) TX/CK pin (SCKP = 1) Write to TXREG Reg Write Word 1 Write Word 2 TXIF bit (Interrupt Flag) TRMT bit TXEN bit 注: ‘1’ ‘1’ 同期マスターモード、SPBRG = 0、8 ビット ワード 2 つの連続送信 図 18-11: 同期送信 (TXEN 経由 ) RX/DT pin bit 0 bit 1 bit 2 bit 6 bit 7 TX/CK pin Write to TXREG reg TXIF bit TRMT bit TXEN bit DS41303E_JP - ページ 254 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 18-7: Name INTCON 同期マスター送信に関連するレジスタ Bit 7 Bit 6 Bit 5 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 59 TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 60 59 TXREG GIE/GIEH PEIE/GIEL TMR0IE Bit 4 EUSART Transmit Register 59 CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN SPBRGH EUSART Baud Rate Generator Register, High Byte 59 SPBRG EUSART Baud Rate Generator Register, Low Byte 59 TXSTA 59 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは同期マスター送信では使用しません。 注 1: PIC18F2XK20 デバイスでは予約されています。常にクリアの状態にしてください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 255 PIC18F2XK20/4XK20 18.4.1.6 同期マスター受信 データは RX/DT ピンで受信します。EUSART を同 期マスター受信動作に設定した場合は、対応する TRIS ビットをセットして、RX/DT ピンの出力ドラ イバを無効にする必要があります。 同期モードでは、シングル受信イネーブル ビット (RCSTA レジスタの SREN)、または連続受信イネー ブル ビット (RCSTA レジスタの CREN) をセットし て、受信を有効にします。 SREN ビットをセットし、CREN ビットをクリアす ると、1 文字のデータ ビット数だけクロック サイ クルが生成されます。1 文字の完了時に、SREN ビッ トが自動的にクリアされます。CREN ビットをセッ トした場合は、CREN ビットがクリアされるまでク ロックが連続生成されます。1文字内の途中でCREN ビットがクリアされると、CK クロックがただちに 停止し、その部分の文字が破棄されます。SREN と CREN の両方のビットをセットした場合は、最初の 文字の完了時に SREN ビットがクリアされ、CREN ビットが優先されます。 受信を開始するには、 SRENビットまたはCRENビッ トをセットします。TX/CK クロック ピンの立ち下 がりエッジで RX/DT ピンでデータがサンプルされ、 受信シフト レジスタ (RSR: Receive Shift Register) に シフト入力されます。1 文字全体を RSR に受信する と RCIF ビットがセットされ、その文字が 2 文字受 信 FIFO に自動転送されます。受信 FIFO の先頭文字 の下位 8 ビットが RCREG 内に入れられます。受信 FIFOに読み出されていない文字がある間、 RCIFビッ トはセットされたままになります。 18.4.1.7 スレーブ クロック 同期データ転送では、データと同期する別のクロッ ク ラインを使用します。スレーブとして設定された デバイスは、TX/CK ラインでクロックを受信しま す。デバイスを同期スレーブ送信 / 受信動作に設定 した場合は、対応する TRIS ビットをセットして、 TX/CK ピンの出力ドライバを無効にする必要があ ります。シリアル データ ビットが立ち上がりエッ ジで変化し、各クロックの立ち下がりエッジでデー タ ビットが有効になります。各クロック サイクル で 1 データ ビットが転送されます。データ ビット の数だけ、クロック サイクルが受信されます。 18.4.1.8 受信オーバーラン エラー 受信FIFOバッファは2文字を保持できます。RCREG レジスタを読み出して FIFO にアクセスする前に、 3 文字目をすべて受信した場合、オーバーラン エ ラーが発生します。この場合、RCSTA レジスタの OERR ビットがセットされます。FIFO 内の前のデー タは上書きされません。FIFO バッファ内にある 2 文字の読み出しはできますが、エラーをクリアする までそれ以降の文字は受信されません。オーバーラ ン条件を解消することでのみ、OERR ビットをクリ アできます。SREN ビットがセット、CREN ビット DS41303E_JP - ページ 256 がクリアのときに、オーバーラン エラーが発生し た場合、RCREG レジスタを読み出すとエラーがク リアされます。CREN ビットがセットされていると きにオーバーランが発生した場合、RCSTA レジス タの CREN ビットをクリアするか、SPEN ビットを クリアして EUSART をリセットすることで、 エラー 条件が解消されます。 18.4.1.9 9 ビット文字の受信 EUSART は、9 ビット文字の受信をサポートしてい ます。RCSTA レジスタの RX9 ビットをセットする と、EUSART は受信した各文字の 9 ビットを RSR にシフト入力します。RCSTA レジスタの RX9D ビッ トは、受信 FIFO の先頭にある、読み出されていな い文字の 9 番目にある最上位データ ビットです。 受 信 FIFO バッファから 9 ビット データを読み出すと きには、RCREG の下位 8 ビットより前に、RX9D データ ビットを読み出す必要があります。 18.4.1.10 同期マスター受信の設定 : 1. 適切なボーレートを設定するために、SPBRGH、 SPBRG のレジスタ ペアを初期化します。必要 に応じて BRGH ビットと BRG16 ビットをセッ トまたはクリアして、使用するボーレートを設 定します。 2. RX/DT および TX/CK ピンの TRIS 制御を「1」 にセットします。 3. SYNC、SPEN、および CSRC の各ビットをセッ トして、同期マスターのシリアル ポートを有効 にします。対応する TRIS ビットをセットして、 RX/DT および TX/CK の出力ドライバを無効に します。 4. CREN ビットと SREN ビットをクリアします。 5. 割り込みを使用する場合は、INTCON レジスタ の GIE ビットと PEIE ビットをセットし、RCIE ビットをセットします。 6. 9 ビット受信を使用する場合は、RX9 ビットを セットします。 7. SREN ビットをセットするか、連続受信の場合 は CREN ビットをセットして、受信を開始し ます。 8. 1 文字の受信が完了すると、割り込みフラグ ビット RCIF がセットされます。イネーブル ビット RCIE がセットされている場合は、割り 込みが生成されます。 9. RCSTA レジスタを読み出して 9 ビット目を取 得し ( 有効な場合 )、受信中にエラーが発生し たかどうかを調べます。 10. RCREG レジスタを読み出して、8 ビットの受信 データを読み出します。 11. オーバーラン エラーが発生した場合は、RCSTA レジスタの CREN ビットをクリアするか、SPEN ビットをクリアしてEUSARTをリセットするこ とで、エラーを解消します。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 18-12: 同期受信 ( マスター モード、SREN) RX/DT pin bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7 TX/CK pin (SCKP = 0) TX/CK pin (SCKP = 1) Write to bit SREN SREN bit CREN bit ‘0’ ‘0’ RCIF bit (Interrupt) Read RXREG 注: タイミング図は、SREN = 1、BRGH = 0 の同期マスター モードを示します。 表 18-8: Name INTCON 同期マスター受信に関連するレジスタ Bit 7 Bit 6 Bit 5 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 (1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 RX9 SREN CREN ADDEN FERR OERR RX9D 59 TX9 TXEN SYNC SENDB BRGH TRMT TX9D 59 RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 59 RCSTA RCREG TXSTA GIE/GIEH PEIE/GIEL TMR0IE Bit 4 PSPIP SPEN EUSART Receive Register CSRC BAUDCON ABDOVF 59 SPBRGH EUSART Baud Rate Generator Register, High Byte 59 SPBRG EUSART Baud Rate Generator Register, Low Byte 59 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは同期マスター受信では使用しません。 注 1: 28 ピン デバイスでは予約されています。常にクリアの状態にしてください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 257 PIC18F2XK20/4XK20 18.4.2 同期スレーブ モード EUSART を同期スレーブとして動作させるには、次 のビットを使用します。 • SYNC = 1 • CSRC = 0 1. 2. 3. 4. • SREN = 0 ( 送信 )、SREN = 1 ( 受信 ) • CREN = 0 ( 送信 )、CREN = 1 ( 受信 ) • SPEN = 1 TXSTA レジスタの SYNC ビットをセットすると、デ バイスが同期動作に設定されます。TXSTA レジスタ の CSRC ビットをクリアすると、デバイスがスレー ブに設定されます。RCSTA レジスタの SREN ビット とCRENビットをクリアすると、 デバイスが送信モー ドになります。その他のビット構成では、デバイス は受信モードに設定されます。RCSTA レジスタの SPEN ビットをセットすると、EUSART が有効にな ります。RX/DT または TX/CK のピンをアナログ周 辺機器と共有している場合は、 対応する ANSEL ビッ トをクリアして、アナログ I/O 機能を無効にする必 要があります。 対応する TRIS ビットをセットして、RX/DT および TX/CKの出力ドライバを無効にする必要があります。 18.4.2.1 TXREG レジスタに 2 ワードが書き込まれ、その後 SLEEP 命令が実行されると、次の動作が実行され ます。 5. 18.4.2.2 1. 2. 3. 4. EUSART の同期スレーブ送信 同期マスター モードと同期スレーブ モードの動作 は、 スリープ モードの場合を除いて同じです(18.4.1.3 項「同期マスター送信」を参照 )。 5. 6. 7. 8. 表 18-9: Name INTCON PIR1 PIE1 IPR1 RCSTA TRISC TXREG TXSTA BAUDCON SPBRGH SPBRG 最初の文字が即座に TSR レジスタに転送され、 送信されます。 2 つ目のワードは TXREG レジスタに残ります。 TXIF ビットはセットされません。 最初の文字が TSR からシフト出力された後、 TXREG レジスタが 2 番目の文字を TSR に転送 し、TXIF ビットがセットされます。 PEIE ビットと TXIE ビットがセットされている 場合は、割り込みによりデバイスはスリープか らウェイクアップして次の命令を実行します。 GIE ビットもセットされている場合は、プログ ラムが割り込みサービス ルーチンを呼び出し ます。 同期スレーブ送信の設定 : SYNC ビットと SPEN ビットをセットし、CSRC ビットをクリアします。 RX/DT および TX/CK ピンの TRIS 制御を「1」 にセットします。 CREN ビットと SREN ビットをクリアします。 割り込みを使用する場合は、INTCON レジスタ の GIE ビットと PEIE ビットをセットし、TXIE ビットをセットします。 9 ビット送信を使用する場合は、TX9 ビットを セットします。 TXEN ビットをセットして、送信を有効にし ます。 9 ビット送信を選択する場合は、最上位ビット を TX9D ビットにロードします。 TXREG レジスタに下位 8 ビットを書き込んで、 送信を開始します。 同期スレーブ送信に関連するレジスタ Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE PSPIF(1) ADIF RCIF TXIF SSPIF PSPIE(1) ADIE RCIE TXIE SSPIE PSPIP(1) ADIP RCIP TXIP SSPIP RX9 SREN CREN ADDEN SPEN TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 EUSART Transmit Register SENDB CSRC TX9 TXEN SYNC ABDOVF RCIDL DTRXP CKTXP BRG16 EUSART Baud Rate Generator Register, High Byte EUSART Baud Rate Generator Register, Low Byte Bit 2 Bit 1 Bit 0 TMR0IF CCP1IF CCP1IE CCP1IP FERR TRISC2 INT0IF TMR2IF TMR2IE TMR2IP OERR TRISC1 RBIF TMR1IF TMR1IE TMR1IP RX9D TRISC0 BRGH — TRMT WUE TX9D ABDEN Reset Values on page 57 60 60 60 59 60 59 59 59 59 59 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは同期マスター送信では使用しません。 注 1: PIC18F2XK20 デバイスでは予約されています。常にクリアの状態にしてください。 DS41303E_JP - ページ 258 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 18.4.2.3 EUSART の同期スレーブ受信 18.4.2.4 同期マスター モードと同期スレーブ モードの動作 は同じですが (18.4.1.6 項「同期マスター受信」を参 照 )、次に示す点が異なります。 • スリープ • CREN ビットは常にセットされ、このため受信器 がアイドルになることはありません。 • スレーブ モードでは、SREN ビットは「ドント ケア」です。 スリープ モードになる前に CREN ビットをセット することで、スリープ モードで文字を受信できま す。文字を受信すると、RSR レジスタはデータを RCREG レジスタに送信します。RCIE イネーブル ビットがセットされている場合は、生成された割り 込みによりデバイスはスリープ モードからウェイ クアップして次の命令を実行します。GIE ビットも セットされている場合は、プログラムが割り込みベ クタに分岐します。 1. 2. 3. 4. 5. 6. 7. 8. 9. 同期スレーブ受信の設定 : SYNC ビットと SPEN ビットをセットし、CSRC ビットをクリアします。 RX/DT および TX/CK ピンの TRIS 制御を「1」 にセットします。 割り込みを使用する場合は、INTCON レジスタ の GIE ビットと PEIE ビットをセットし、RCIE ビットをセットします。 9 ビット受信を使用する場合は、RX9 ビットを セットします。 CREN ビットをセットして、受信を有効にし ます。 受信が完了すると、RCIF ビットがセットされ ます。RCIE ビットがセットされている場合は、 割り込みが生成されます。 9 ビット モードが有効な場合は、RCSTA レジ スタの RX9D ビットから最上位ビットを読み出 します。 RCREG レジスタを読み出して、受信 FIFO から 下位 8 ビットを読み出します。 オーバーラン エラーが発生した場合は、RCSTA レジスタの CREN ビットをクリアするか、SPEN ビットをクリアしてEUSARTをリセットするこ とで、エラーを解消します。 表 18-10: 同期スレーブ受信に関連するレジスタ Name INTCON Bit 7 Bit 6 Bit 5 GIE/GIEH PEIE/GIEL TMR0IE Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 PIR1 PSPIF (1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 (1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 RX9 SREN CREN ADDEN FERR OERR RX9D 59 RCSTA RCREG PSPIP SPEN EUSART Receive Register 59 CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 59 BAUDCON ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN 59 SPBRGH EUSART Baud Rate Generator Register, High Byte 59 SPBRG EUSART Baud Rate Generator Register, Low Byte 59 TXSTA 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは同期スレーブ受信では使用しません。 注 1: 28 ピン デバイスでは予約されています。常にクリアの状態にしてください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 259 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 260 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 19.0 A/D コンバータ (ADC) モジュール A/D コンバータ (ADC) は、アナログ入力信号を 10 ビットのバイナリ表現に変換します。このデバイス ではアナログ入力を多重化して、1 つのサンプル ホールド回路に入力します。サンプル ホールド回 路の出力が A/D コンバータの入力に接続されます。 A/D コンバータは逐次比較方式により 10 ビットの バイナリ値を生成し、この変換結果を ADC 結果レ ジスタ (ADRESL および ADRESH) に格納します。 ADC の電圧リファレンスとして、 VDD または外部リ ファレンス ピンに印加された電圧のいずれかをソ フトウェアで選択できます。 ADC は、変換完了時に割り込みを生成できます。こ の割り込みを使用して、デバイスをスリープ モード からウェイクアップできます。 図 19-1 に、ADC のブロック図を示します。 図 19-1: ADC のブロック図 VCFG1 = 0 AVSS VREF- VCFG1 = 1 AVDD VCFG0 = 0 VREF+ AN0 0000 AN1 0001 AN2 0010 AN3 0011 AN4 0100 AN5 0101 AN6 0110 AN7 0111 AN8 1000 AN9 1001 AN10 1010 AN11 1011 AN12 1100 Unused 1101 Unused 1110 VCFG0 = 1 ADC 10 GO/DONE ADFM 0 = Left Justify 1 = Right Justify ADON 10 VSS ADRESH ADRESL 1111 FVR CHS<3:0> 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 261 PIC18F2XK20/4XK20 19.1 ADC の設定 19.1.4 ADC の設定や使用では、次の機能を考慮する必要 があります。 • • • • • • ポート設定 チャネル選択 ADC 電圧リファレンスの選択 ADC 変換のクロック ソース 割り込み制御 結果のフォーマット 19.1.1 ポート設定 ANSEL、ANSELH、TRISA、TRISB、および TRISE のレジスタはすべて、A/D ポート ピンを設定しま す。アナログ入力として必要なポート ピンについ ては、対応する ANSx ビットをセットしてデジタル 入力バッファを無効にし、TRISx ビットをセットし てデジタル出力ドライバを無効にする必要があり ます。TRISx ビットがクリアされている場合、デジ タル出力レベル (VOH または VOL) が変換されます。 A/D 動作は、ANSx ビットおよび TRIS ビットの状 態とは関係なく実行されます。 注 1: 2: 3: 19.1.2 PORT レジスタを読み出すと、対応する ANSx ビットがセットされているピンは すべてクリア状態 (Low レベル ) として 読み出されます。ただし、デジタル入力 として設定されているピン (ANSx ビッ トがクリア、TRISx ビットがセット ) は、 正確に変換されます。 対応する ANSx ビットがクリアされてい るピンにアナログ電圧を印加すると、デ ジタル入力バッファに仕様を超える電 流が流れる場合があります。 構成レジスタ 3H の PBADEN ビットは、 ANSELH レジスタのビットのリセット 方法を制御し、PORTB ピンをアナログ ピンまたはデジタル ピンとしてリセッ トするように設定します。 チャネル選択 サンプル ホールド回路に接続するチャネルを、 ADCON0 レジスタの CHS ビットで設定します。 チャネルを変更するときには、次の変換を開始する 前に遅延が必要です。詳細については、19.2 項「ADC の動作」を参照してください。 19.1.3 ADC 電圧リファレンス ADCON1 レジスタの VCFG ビットは、正と負の電 圧リファレンスを個別に制御します。正電圧リファ レンスには、VDD または外部電圧ソースのいずれか を設定できます。同様に、負電圧リファレンスに は、VSS または外部電圧ソースのいずれかを設定で きます。 DS41303E_JP - ページ 262 アクイジション時間の選択と設定 ADCON2 レジスタを使用して、GO/DONE ビットが セットされるたびに発生するアクイジション時間 を選択できます。 アクイジション時間は、ADCON2 レジスタの ACQT<2:0> ビットで設定します。アクイジション 遅延は、2 ~ 20 x TAD の範囲をカバーします。GO/ DONE ビットがセットされているときには、A/D モ ジュールは選択したアクイジション時間中に継続 して入力をサンプルし、その後、変換を自動的に開 始します。アクイジション時間はプログラム済みな ので、チャネルを設定した後に、アクイジション時 間の経過を待たずに GO/DONE ビットをセットでき ます。 ACQT<2:0> = 000 の場合は、手動アクイジションが 選択されます。GO/DONE ビットがセットされると、 サンプリングが停止して変換が開始されます。使用 する入力チャネルを選択してから GO/DONE ビット をセットするまで、必要なアクイジション時間の経 過を確保するのは、ユーザーの責任です。また、こ のオプションは ACQT<2:0> ビットのデフォルト リ セット状態であり、アクイジション時間のプログラ ム機能がないデバイスと互換性があります。 いずれの場合でも、変換が完了すると GO/DONE ビットがクリアされ、ADIF フラグがセットされま す。また、A/D が、現在選択されているチャネルの サンプリングを再開します。アクイジション時間を プログラムした場合、アクイジション時間が終了し て変換が開始される時点は示されません。 19.1.5 変換クロック 変換クロックのソースは、ADCON2 レジスタの ADCSビットを使用してソフトウェアで選択できま す。クロックは次の 7 種類から選択できます。 • FOSC/2 • FOSC/4 • FOSC/8 • FOSC/16 • FOSC/32 • FOSC/64 • FRC ( 専用の内部オシレータ ) 1ビットの変換に必要な時間はTADと定義されます。 10 ビット全体の変換には 11 TAD の時間が必要です ( 図 19-3 を参照 )。 変換を正しく実行するには、適切な TAD の仕様を満 たす必要があります。詳細については、表 26-25 の A/D 変換の要件を参照してください。表 19-1 に、適 切な ADC クロックの選択例を示します。 注: Preliminary FRC を使用する場合を除き、システム ク ロック周波数を変更すると ADC クロック 周波数も変化するため、ADC の結果に悪 影響を与えることがあります。 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 19.1.6 この割り込みは、デバイスの動作中およびスリープ モードのいずれでも生成できます。スリープ モー ドでは、割り込みによってデバイスがウェイクアッ プします。スリープ モードからウェイクアップす ると、SLEEP 命令の次の命令が必ず実行されます。 スリープ モードからウェイクアップ後、インライ ン コード実行を再開する場合は、グローバル割り 込みを無効にしておく必要があります。グローバル 割り込みが有効な場合は、実行は割り込みサービス ルーチンに切り替わります。詳細については、19.1.6 項「割り込み」を参照してください。 割り込み ADC モジュールは、A/D 変換完了時に割り込みを 生成できます。PIR1 レジスタの ADIF ビットが ADC 割り込みフラグ ビットです。PIE1 レジスタの ADIE ビットが ADC 割り込みイネーブル ビットです。 ADIF ビットは、ソフトウェアでクリアする必要が あります。 注: ADC 割り込みが有効か無効かにかかわら ず、変換完了時には必ず ADIF ビットが セットされます。 表 19-1: ADC のクロック周期 (TAD) とデバイスの動作周波数 ADC Clock Period (TAD) ADC Clock Source Device Frequency (FOSC) ADCS<2:0> FOSC/2 64 MHz 31.25 000 FOSC/4 62.5 ns 100 16 MHz ns(2) 125 (2) 1 MHz 2.0 s 1.0 s 4.0 s(3) ns(2) 2.0 s 8.0 s(3) FOSC/8 001 400 FOSC/16 101 250 ns(2) 1.0 s 4.0 s(3) 16.0 s(3) FOSC/32 010 500 ns(2) 2.0 s 8.0 s(3) 32.0 s(3) s(3) 64.0 s(3) 1-4 s(1,4) 1-4 s(1,4) FOSC/64 110 1.0 s FRC x11 1-4 s(1,4) 500 500 ns(2) (2) 250 ns ns(2) 4 MHz ns(2) 4.0 s(3) 16.0 1-4 s(1,4) 記号の説明 : 網掛けの値は推奨範囲外。 注 1: FRC ソースの TAD 時間は 1.7 s ( 代表値 ) です。 2: これらの値は TAD 時間の最小要件を満たしていません。 3: より高速な変換には、別のクロック ソースを選択することをお勧めします。 4: デバイス周波数が 1 MHz を超えるときには、スリープ モードでの変換が必要な場合のみ FRC クロッ ク ソースを使用することをお勧めします。 19.1.7 結果のフォーマット 10 ビットの A/D 変換の結果は、右詰めと左詰めの いず れ かの フ ォー マッ ト で出 力で き ます。出 力 フォーマットは、ADCON2 レジスタの ADFM ビッ トで設定します。 図 19-2 に、2 つの出力フォーマットを示します。 図 19-2: 10 ビット A/D 変換結果のフォーマット ADRESH (ADFM = 0) ADRESL MSB LSB bit 7 bit 0 bit 7 10-bit A/D Result bit 0 Unimplemented: Read as ‘0’ MSB (ADFM = 1) bit 7 LSB bit 0 Unimplemented: Read as ‘0’ 2009 Microchip Technology Inc. bit 7 bit 0 10-bit A/D Result Preliminary DS41303E_JP - ページ 263 PIC18F2XK20/4XK20 19.2 ADC の動作 19.2.1 図 19-3 に、 GO ビットをセットして ACQT<2:0> ビッ トをクリアした後の ADC の動作を示します。変換 は、SLEEP モードでの入力を許可する後続の命令 の後に開始されます。 変換の開始 ADC モジュールを有効にするには、ADCON0 レジ ス タ の ADON ビ ッ ト を「1」に セ ッ ト し ま す。 ADCON0 レジスタの GO/DONE ビットを「1」に セットすると、ADCON2 レジスタの ACQT ビット に従って、A/D 変換を即座に開始するか、アクイジ ション遅延を開始してから A/D 変換を実行します。 図 19-3: 図 19-4 に、GO ビットをセットし、ACQT<2:0> ビッ トを 「010 に設定 ( 変換を開始する前のアクイジショ ン時間として 4 TAD を選択 ) したときの ADC の動作 を示します。 注: ADC をオンにする命令と同じ命令で GO/ DONE ビットをセットしないでください。 19.2.9 項「AD 変換の手順」を参照してく ださい。 A/D 変換の TAD サイクル (ACQT<2:0> = 000、TACQ = 0) TCY - TAD TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 TAD11 2 TAD b4 b1 b0 b6 b7 b2 b9 b8 b3 b5 Conversion starts Discharge Holding capacitor is disconnected from analog input (typically 100 ns) Set GO bit On the following cycle: ADRESH:ADRESL is loaded, GO bit is cleared, ADIF bit is set, holding capacitor is connected to analog input. 図 19-4: A/D 変換の TAD サイクル (ACQT<2:0> = 010、TACQ = 4 TAD) TAD Cycles TACQT Cycles 1 2 3 Automatic Acquisition Time 4 1 3 4 5 6 7 8 9 10 11 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 Conversion starts (Holding capacitor is disconnected from analog input) Set GO bit (Holding capacitor continues acquiring input) DS41303E_JP - ページ 264 2 2 TAD Discharge On the following cycle: ADRESH:ADRESL is loaded, GO bit is cleared, ADIF bit is set, holding capacitor is connected to analog input. Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 19.2.2 19.2.7 変換の完了 変換が完了すると、ADC モジュールは次の動作を 行います。 • GO/DONE ビットをクリアする • ADIF フラグ ビットをセットする • ADRESH:ADRESL レジスタに新しい変換結果を 書き込む 19.2.3 放電 放電段階は、コンデンサ アレイの値を初期化する ために使用します。コンデンサ アレイは、各サン プル後に放電されます。この機能は、ユニティゲイ ン アンプの最適化に役立ちます。これは、直前の 計測値に基づいて充電 / 放電するのではなく回路が 常にコンデンサ アレイを充電する必要があるから です。 19.2.4 変換の中止 変換の完了前に中止する場合は、GO/DONE ビット をソフトウェアでクリアします。完了していない A/D 変換のサンプルで ADRESH:ADRESL レジスタ が 更 新 さ れ る こ と は あ り ま せ ん。こ の 場 合、 ADRESH:ADRESL レジスタ ペアには直前の変換結 果の値が保持されます。 注: 19.2.5 デバイスをリセットすると、すべてのレジ スタが強制的にリセット状態に戻ります。 このため、ADC モジュールはオフになり、 その後の変換はすべて中止されます。 各変換の間の遅延 スリープ モードの ADC の動作 ADC モジュールはスリープ モードでも動作できま す。スリープ モードで動作させるには、ADC クロッ ク ソースを FRC に設定する必要があります。 クロッ ク ソースに FRC を選択した場合、ADC は変換の開 始前に更に 1 命令サイクルだけ長く待ちます。ここ で SLEEP 命令を実行して、変換時のシステム ノイ ズを抑えることができます。ADC 割り込みを有効 にしている場合、A/D 変換が完了するとデバイスが スリープ モードからウェイクアップします。ADC 割り込みが無効な場合は、A/D 変換完了後に ADC モジュールがオフになります (ADON ビットはセッ トされたまま )。 ADC のクロック ソースが FRC 以外の場合は、SLEEP 命令によって現在の変換が中止され、ADC モジュー ルがオフになります (ADON ビットはセットされた まま )。 19.2.8 特殊イベント トリガ CCP2 の特殊イベント トリガを使用すると、ソフト ウェアによる割り込みなしで定期的にA/D変換を実 行できます。このトリガが発生すると、GO/DONE ビットがハードウェアからセットされ、Timer1 また は Timer3 のカウンタが 0 にリセットされます。 特殊イベント トリガを使用した場合、A/D 変換が適 切なタイミングで実行されるかどうかは保証され ません。ADC のタイミング条件が満たされている かどうかは、ユーザーが確認してください。 詳細については、11.3.4 項「特殊イベント トリガ」 を参照してください。 A/D 変換の完了後または中止後、次のアクイジショ ンを開始するまで 2 TAD の待ち時間が必要です。こ の待ち時間後、現在選択されているチャネルが電荷 保持コンデンサに再接続され、次のアクイジション を開始します。 19.2.6 電源管理モードでの ADC の動作 電源管理モードでの自動アクイジション時間と A/D 変換クロックは、クロック ソースと周波数によりあ る程度決まります。 電源管理モードのデバイスで A/D を使用する場合、 そのモードで使用するクロック ソースに合わせて、 ADCON2 レジスタの ACQT<2:0> および ADCS<2:0> のビットを更新する必要があります。 電源管理モード になると、A/D アクイジションまたは A/D 変換を開 始できます。開始後、変換が完了するまでデバイスを 同じクロック ソースで駆動する必要があります。 必要に応じて、変換中にデバイスを対応するアイド ル モードにできます。デバイスのクロック周波数 が 1 MHz 未満の場合は、A/D FRC のクロック ソー スを選択する必要があります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 265 PIC18F2XK20/4XK20 19.2.9 AD 変換の手順 例 19-1: ADC を使用して A/D 変換を実行するための手順の 例を示します。 1. 2. 3. 4. 5. 6. 7. 8. ポートを設定する : • ピン出力ドライバを無効にする (TRIS レジス タを参照 ) • ピンをアナログに設定する ADC モジュールを設定する : • ADC 変換クロックを選択する • 電圧リファレンスを設定する • ADC 入力チャネルを選択する • 結果のフォーマットを選択する • アクイジション遅延を選択する • ADC モジュールをオンにする ADC 割り込みを設定する ( オプション ): • ADC 割り込みフラグをクリアする • ADC 割り込みを許可する • 周辺割り込みを許可する • グローバル割り込みを許可する (1) 必要なアクイジション時間の経過を待つ (2) GO/DONE ビットをセットして変換を開始する 次のいずれかにより、ADC 変換の完了を待つ : • GO/DONE ビットをポーリングする • ADC割り込みを待つ(割り込みが有効な場合) ADC の結果を読み出す ADC 割り込みフラグをクリアする ( 割り込みが 有効な場合は必須 ) 注 1: スリープ モードからウェイクアップ後、 インライン コードの実行を再開する場 合は、グローバル割り込みを無効にでき ます。 2: ACQTビットで遅延をゼロに設定した場 合は、ソフトウェアによる遅延が必要で す。19.3 項「A/D アクイジションの要件」 を参照してください。 DS41303E_JP - ページ 266 A/D 変換 ;This code block configures the ADC ;for polling, Vdd and Vss as reference, Frc clock and AN0 input. ; ;Conversion start & polling for completion ; are included. ; MOVLW B’10101111’ ;right justify, Frc, MOVWF ADCON2 ; & 12 TAD ACQ time MOVLW B’00000000’ ;ADC ref = Vdd,Vss MOVWF ADCON1 ; BSF TRISA,0 ;Set RA0 to input BSF ANSEL,0 ;Set RA0 to analog MOVLW B’00000001’ ;AN0, ADC on MOVWF ADCON0 ; BSF ADCON0,GO ;Start conversion ADCPoll: BTFSC ADCON0,GO ;Is conversion done? BRA ADCPoll ;No, test again ; Result is complete - store 2 MSbits in ; RESULTHI and 8 LSbits in RESULTLO MOVFF ADRESH,RESULTHI MOVFF ADRESL,RESULTLO Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 19.2.10 ADC のレジスタの定義 ADC の動作設定には次のレジスタを使用します。 注: アナログ ピンは、ANSEL および ANSELH のレジスタで制御します。ANSEL レジス タについてはレジスタ 10-2、ANSELH レ ジスタについてはレジスタ 10-3 を参照し てください。 レジスタ 19-1: ADCON0: A/D 制御レジスタ 0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — — CHS3 CHS2 CHS1 CHS0 GO/DONE ADON bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 ビット 7-6 未実装 :「0」として読み出し ビット 5-2 CHS<3:0>: アナログ チャネル選択ビット 0000 = AN0 0001 = AN1 0010 = AN2 0011 = AN3 0100 = AN4 0101 = AN5(1) 0110 = AN6(1) 0111 = AN7(1) 1000 = AN8 1001 = AN9 1010 = AN10 1011 = AN11 1100 = AN12 1101 = 予約 1110 = 予約 1111 = FVR (1.2V 固定電圧リファレンス )(2) ビット 1 GO/DONE: A/D 変換ステータス ビット 1 = A/D 変換サイクルが進行中。このビットをセットすると、A/D 変換サイクルが開始します。 このビットは、A/D 変換が完了するとハードウェアで自動的にクリアされます。 0 = A/D 変換が完了 ( 進行中でない ) ビット 0 ADON: ADC イネーブル ビット 1 = ADC を有効にする 0 = ADC を無効にし、動作電流を消費しない 注 1: 2: これらのチャネルは、PIC18F2XK20 デバイスには未実装です。 固定電圧リファレンスの計測時には、15 s より長いアクイジション時間を使用できます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 267 PIC18F2XK20/4XK20 レジスタ 19-2: ADCON1: A/D 制御レジスタ 1 U-0 U-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 — — VCFG1 VCFG0 — — — — bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア ビット 7-6 未実装 :「0」として読み出し ビット 5 VCFG1: 負電圧リファレンス選択ビット 1 = 負電圧リファレンスを VREF- ピン経由で外部から入力 0 = 負電圧リファレンスを VSS で内部入力 ビット 4 VCFG0: 正電圧リファレンス選択ビット 1 = 正電圧リファレンスを VREF+ ピン経由で外部から入力 0 = 正電圧リファレンスを VDD で内部入力 ビット 3-0 未実装 :「0」として読み出し DS41303E_JP - ページ 268 Preliminary x = 不明 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 19-3: ADCON2: A/D 制御レジスタ 2 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ADFM — ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 ビット 7 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 ADFM: A/D 変換結果フォーマット選択ビット 1 = 右詰め 0 = 左詰め ビット 6 未実装 :「0」として読み出し ビット 5-3 ACQT<2:0>: A/D アクイジション時間選択ビット。アクイジション時間とは、GO/DONE ビッ トがセットされてから変換が開始されるまで、A/D 電荷保持コンデンサが A/D チャネルに接 続されている期間です。 000 = 0(1) 001 = 2 TAD 010 = 4 TAD 011 = 6 TAD 100 = 8 TAD 101 = 12 TAD 110 = 16 TAD 111 = 20 TAD ビット 2-0 ADCS<2:0>: A/D 変換クロック選択ビット 000 = FOSC/2 001 = FOSC/8 010 = FOSC/32 011 = FRC(1) ( 専用内部オシレータのクロック、公称値 600 kHz) 100 = FOSC/4 101 = FOSC/16 110 = FOSC/64 111 = FRC(1) ( 専用内部オシレータのクロック、公称値 600 kHz) 注 1: A/D クロック ソースとして FRC を選択した場合、GO/DONE ビットをセットした後の変換の開始が 1 命令サイクル遅延され、SLEEP 命令を実行できます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 269 PIC18F2XK20/4XK20 レジスタ 19-4: ADRESH: ADC 結果レジスタ HIGH (ADRESH) ADFM = 0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x ADRES9 ADRES8 ADRES7 ADRES6 ADRES5 ADRES4 ADRES3 ADRES2 bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 -n = POR 時の値 ビット 7-0 U = 未実装ビット。 「0」として読み出し 「1」= セット x = 不明 「0」= クリア ADRES<9:2>: ADC 結果レジスタ ビット 10 ビットの変換結果の上位 8 ビット レジスタ 19-5: ADRESL: ADC 結果レジスタ LOW (ADRESL) ADFM = 0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x ADRES1 ADRES0 — — — — — — bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 -n = POR 時の値 U = 未実装ビット。 「0」として読み出し 「1」= セット ビット 7-6 ADRES<1:0>: ADC 結果レジスタ ビット 10 ビット変換結果の下位 2 ビット ビット 5-0 予約 : 使用不可 レジスタ 19-6: x = 不明 「0」= クリア ADRESH: ADC 結果レジスタ HIGH (ADRESH) ADFM = 1 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x — — — — — — ADRES9 ADRES8 bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 -n = POR 時の値 U = 未実装ビット。 「0」として読み出し 「1」= セット ビット 7-2 予約 : 使用不可 ビット 1-0 ADRES<9:8>: ADC 結果レジスタ ビット 10 ビット変換結果の上位 2 ビット レジスタ 19-7: x = 不明 「0」= クリア ADRESL: ADC 結果レジスタ LOW (ADRESL) ADFM = 1 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x ADRES7 ADRES6 ADRES5 ADRES4 ADRES3 ADRES2 ADRES1 ADRES0 bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 -n = POR 時の値 ビット 7-0 U = 未実装ビット。 「0」として読み出し 「1」= セット 「0」= クリア x = 不明 ADRES<7:0>: ADC 結果レジスタ ビット 10 ビット変換結果の下位 8 ビット DS41303E_JP - ページ 270 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 19.3 A/D アクイジションの要件 ADC で仕様どおりの精度を実現するには、電荷保持 コンデンサ (CHOLD) を入力チャネルの電圧レベルま でフルに充電する必要があります。図 19-5 にアナロ グ入力モデルを示します。ソース インピーダンス (RS) および内部サンプリング スイッチ (RSS) のイン ピーダンスは、コンデンサ CHOLD の充電時間に直接 影響します。サンプリング スイッチ (RSS) のイン ピーダンスは、デバイス電圧 (VDD) により変化しま す ( 図 19-5 を参照 )。アナログ ソースの推奨最大イ ンピーダンスは、10 k です。ソース インピーダン スが低下すると、それに伴ってアクイジション時間 が短くなります。アナログ入力チャネルの選択後 式 19-1: ( または変更後 ) には、変換を開始する前に A/D ア クイジションを実行する必要があります。最小アク イジション時間の計算には式 19-1 を使用できます。 この式では、1/2 LSb 誤差の適用を前提としていま す (ADC は 1024 ステップ )。1/2 LSb 誤差は、仕様の 分解能を ADC で実現する場合の最大許容誤差です。 アクイジション時間の例 Assumptions: Temperature 50C and external impedance of 10k 3.0V VDD T ACQ = Amplifier Settling Time + Hold Capacitor Charging Time + Temperature Coefficient = T AMP + T C + T COFF 5µs + TC + [(Temperature - 25C)(0.05µs/C)] The value for TC can be approximated with the following equations: 1 - = V CHOLD V APPLIED 1 – ---------- 2047 ;[1] VCHOLD charged to within 1/2 lsb –T C ---------- RC V APPLIED 1 – e = V CHOLD ;[2] VCHOLD charge response to VAPPLIED – Tc --------- RC 1 - V APPLIED 1 – e = V APPLIED 1 – ---------- 2047 ;combining [1] and [2] Solving for TC: T C = – C HOLD R IC + R SS + R S ln(1/2047) = – 13.5pF 1k + 700 + 10k ln(0.0004885) 1.20µs Therefore: TACQ 5µs + 1.20µs + [(50C - 25C)(0.05µs/C)] 7.45µs 注 1: リファレンス電圧 (VREF) は自己相殺されるため、上式には影響しません。 2: 変換が完了するたびに電荷保持コンデンサ (CHOLD) が放電されます。 3: アナログ ソースの推奨最大インピーダンスは、10 k です。この値はピンのリーク電流の仕様を 満たすために必要です。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 271 PIC18F2XK20/4XK20 図 19-5: アナログ入力モデル VDD Rs ANx RIC 1k CPIN 5 pF I LEAKAGE(1) VA Sampling Switch SS Rss CHOLD = 13.5 pF Discharge Switch 注 1: 図 19-6: VDD Legend: CPIN = Input Capacitance I LEAKAGE = Leakage current at the pin due to various junctions RIC = Interconnect Resistance SS = Sampling Switch CHOLD = Sample/Hold Capacitance VSS/VREF- 3.5V 3.0V 2.5V 2.0V 1.5V .1 1 10 Rss (k) 100 26.0 項「電気的特性」を参照してください。 ADC の伝達関数 Full-Scale Range 3FFh 3FEh ADC Output Code 3FDh 3FCh 1/2 LSB ideal 3FBh Full-Scale Transition 004h 003h 002h 001h 000h Analog Input Voltage 1/2 LSB ideal VSS/VREF- DS41303E_JP - ページ 272 Zero-Scale Transition VDD/VREF+ Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 19-2: Name INTCON A/D 動作に関連するレジスタ Bit 7 Bit 6 Bit 5 GIE/GIEH PEIE/GIEL TMR0IE Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page INT0IE RBIE TMR0IF INT0IF RBIF 57 PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 60 PIE1 PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 60 IPR1 PSPIP(1) ADIP RCIP TXIP SSPIP CCP1IP TMR2IP TMR1IP 60 PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 60 PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 60 IPR2 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP 60 ADRESH A/D Result Register, High Byte 59 ADRESL A/D Result Register, Low Byte 59 ADCON0 — — CHS3 CHS2 CHS1 CHS0 GO/DONE ADON 59 ADCON1 — — VCFG1 VCFG0 — — — — 59 ADCON2 ADFM ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0 59 ANSEL ANSELH PORTA (1) — (1) (1) ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 60 — — — ANS12 ANS11 ANS10 ANS9 ANS8 60 RA7(2) RA6(2) RA5 RA4 RA3 RA2 RA1 RA0 TRISA7(2) TRISA6(2) PORTA Data Direction Control Register TRISA PORTB RB7 RB6 RB5 RB4 RB3 TRISB PORTB Data Direction Control Register LATB PORTB Data Latch Register (Read and Write to Data Latch) PORTE TRISE (4) (4) LATE(4) 60 60 RB2 RB1 RB0 60 60 — — — — RE3(3) IBF OBF IBOV PSPMODE — — — — — — 60 RE2 RE1 RE0 60 TRISE2 TRISE1 TRISE0 60 PORTE Data Latch Register 60 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットは A/D 変換では使用しません。 注 1: これらのビットは PIC18F2XK20 デバイスでは未実装です。常にクリアの状態にしてください。 2: PORTA<7:6> とその方向ビットは、さまざまなプライマリ オシレータ モードに基づいてポート ピンと して個々に設定します。無効にすると、これらのビットは「0」として読み出されます。 3: RE3 ポート ピンは、MCLRE 構成ビットが「0」の場合に入力ピンとしてのみ使用できます。 4: これらのレジスタは、PIC18F2XK20 デバイスには未実装です。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 273 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 274 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 20.0 図 20-1: コンパレータ モジュール コンパレータは、2 つのアナログ電圧を比較し、そ の相対的な大きさをデジタル値で表すことでアナ ログ回路をデジタル回路に接続します。コンパレー タはプログラム実行とは独立したアナログ機能を 提供するため、ミックスド シグナル ( アナログ信号 とデジタル信号が混在する環境 ) において、きわめ て有用な構成要素です。アナログ コンパレータ モ ジュールには、次の機能があります。 • • • • • • • • • 独立したコンパレータ制御 入力選択をプログラム可能 コンパレータ出力を内部 / 外部で利用可能 出力極性をプログラム可能 状態変化割り込み スリープ モードからのウェイクアップ 速度 / 電力の最適化をプログラム可能 PWM シャットダウン プログラム可能および固定の電圧リファレンス 20.1 シングル コンパレータ VIN+ + VIN- – Output VINVIN+ Output 注 : コンパレータ出力の黒い部分は、入力オフ セットや応答時間によって変動する範囲を 表します。 コンパレータの概要 シングル コンパレータ、およびアナログ入力レベ ルとデジタル出力の関係を図 20-1 に示します。VIN+ のアナログ電圧が VIN- のアナログ電圧よりも低い 場合、コンパレータ出力はデジタル Low レベルと なります。VIN+ のアナログ電圧が VIN- のアナログ 電圧よりも高い場合、コンパレータ出力はデジタル High レベルとなります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 275 PIC18F2XK20/4XK20 図 20-2: コンパレータ C1 の概略ブロック図 C1CH<1:0> 2 D Q1 C12IN0- 0 C12IN1C12IN2- 1 MUX 2 C12IN3- 3 To Data Bus Q EN RD_CM1CON0 D Q3*RD_CM1CON0 EN CL C1R FVR C1OE 0 MUX 1 0 MUX C1VREF 1 CVREF 注 1: 2: C1RSEL 3: 4: 図 20-3: To PWM Logic Reset C1ON(1) C1IN+ Set C1IF Q C1VIN- C1VIN+ C1 + C1OUT C1SP C1OUT pin(2) C1POL C1ON = 0 の場合、C1 コンパレータは XOR ゲートに「0」を出力します。 出力は参考データとしてのみ表示しています。詳細は、I/O ポート ピンのブロック図を 参照してください。 Q1 と Q3 は、4 相システム クロック (FOSC) の位相です。 スリープ モードでは Q1 は High に保持されます。 コンパレータ C2 の概略ブロック図 D Q1 To Data Bus Q EN RD_CM2CON0 C2CH<1:0> 2 D C2ON(1) C12IN0- 0 C12IN1C12IN2- 1 MUX 2 C12IN3- 3 FVR CVREF C2RSEL C2VIN+ EN CL NRESET To PWM Logic C2OE C2OUT C2 C2OUT pin(2) C2POL 0 MUX 1 0 MUX C2VREF 1 注 1: 2: 3: 4: DS41303E_JP - ページ 276 C2VIN- C2SP C2R C2IN+ Q3*RD_CM2CON0 Set C2IF Q C2ON = 0 の場合、C2 コンパレータは XOR ゲートに「0」を出力します。 出力は参考データとしてのみ表示しています。詳細は、I/O ポート ピンのブロック図を 参照してください。 Q1 と Q3 は、4 相システム クロック (FOSC) の位相です。 スリープ モードでは Q1 は High に保持されます。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 20.2 コンパレータの制御 各コンパレータは個別に制御され、コンパレータ 1 には構成レジスタ CM1CON0、コンパレータ 2 には 構成レジスタ CM2CON0 があります。また、コンパ レータ C2 にはもう 1 つの構成レジスタとして CM2CON1 が用意されており、Timer1 との連動の制 御や、2 つのコンパレータ出力の同時読み出しに使 用します。 CM1CON0 レジスタと CM2CON0 レジスタ ( それぞ れ 20-1 と 20-2 のレジスタを参照 ) には、次の制御 ビットとステータス ビットがあります。 • • • • • • イネーブル 入力選択 リファレンス選択 出力選択 出力極性 速度選択 20.2.1 2: コンパレータの内部出力は各命令サイ クルでラッチされます。特に指定のない 限り、外部出力はラッチされません。 20.2.5 コンパレータ出力の極性 コンパレータの出力を反転することは、コンパレー タの入力を入れ替えることと機能的に等価です。コ ンパレータ出力の極性を反転するには、CMxCON0 レジスタの CxPOL ビットをセットします。CxPOL ビットをクリアすると出力は反転されません。 表 20-1: コンパレータ イネーブル コンパレータ入力の選択 CMxCON0 レジスタの CxCH<1:0> ビットは、4 つの アナログ入力ピンの 1 つをコンパレータの反転入力 に指定します。 注: CxIN+ ピンと C12INx ピンをアナログ入力 として使用するには、ANSEL レジスタの 対応するビットをセットするとともに、対 応する TRIS ビットもセットして出力ドラ イバを無効にする必要があります。 20.2.3 コンパレータのリファレンスの選択 CMxCON0 レジスタの CxR ビットをセットして、内 部電圧リファレンスまたはアナログ入力ピンのい ずれをコンパレータの非反転入力に接続するかを 選択します。内部電圧リファレンス モジュールの 詳細は、21.0 項「電圧リファレンス」を参照してく ださい。 20.2.4 CxOE ビットは PORT データ ラッチより も優先されます。CxON をセットしても ポートの無効化には影響しません。 表 20-1 に、入力条件および極性制御に対する出力 状態を示します。 CMxCON0 レジスタの CxON ビットをセットすると コンパレータの動作が可能になります。CxON ビッ トをクリアするとコンパレータが無効になり、消費 電力を最小限に抑えられます。 20.2.2 注 1: コンパレータ出力の選択 コンパレータの出力は、CMxCON0 レジスタの CxOUT ビットまたは CM2CON1 レジスタの MCxOUT ビットを読み出すことでモニタできます。 出力を外部接続して使用するには、次の条件を満た す必要があります。 コンパレータの入力条件に対する 出力状態 Input Condition CxPOL CxOUT CxVIN- > CxVIN+ 0 0 CxVIN- < CxVIN+ 0 1 CxVIN- > CxVIN+ 1 1 CxVIN- < CxVIN+ 1 0 20.2.6 コンパレータ速度の選択 プログラムの実行速度と消費電力とのトレードオ フを、CxSP 制御ビットで最適化できます。このビッ トのデフォルト値は「1」で、通常速度のモードが 選択されます。デバイスの消費電力は、CxSP ビッ トを「0」にクリアしてコンパレータの伝搬遅延を 低速にすることにより最適化できます。 20.3 コンパレータの応答時間 入力ソースの変更後や新しいリファレンス電圧の 選択後に、コンパレータの出力が不定となる期間が あります。この期間を、応答時間と呼びます。コン パレータの応答時間は、電圧リファレンスのセトリ ング タイムとは異なります。このため、コンパレー タの入力変化に対する総応答時間を決定するとき には、コンパレータの応答時間と電圧リファレンス のセトリング タイムの両方を考慮する必要があり ます。詳細は、26.0 項「電気的特性」のコンパレー タと電圧リファレンスの仕様を参照してください。 • CMxCON0 レジスタの CxOE ビットがセットされ ている • 対応する TRIS ビットがクリアされている • CMxCON0 レジスタの CxON ビットがセットされ ている 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 277 PIC18F2XK20/4XK20 20.4 20.4.1 コンパレータの割り込み動作 コンパレータの出力値が変化したときはいつでも、 コンパレータ割り込みフラグをセットできます。変 化は、2 つのラッチと 1 つの XOR ゲートで構成さ れた不一致回路で検出されます ( 図 20-2 および 図 20-3 を参照 )。CMxCON0 レジスタの読み出し時 に、一方のラッチがコンパレータ出力レベルで更新 されます。このラッチの値は、次に CMxCON0 レジ スタを読み出すか、リセットが発生するまで保持さ れます。不一致回路のもう一方のラッチは、Q1 シ ステム クロックごとに更新されます。コンパレー タ出力の変化が、Q1 クロック サイクルで動作する もう一方のラッチを経由して出力されると、不一致 条件が発生します。この時点で不一致回路の 2 つの ラッチの出力レベルが反対になり、 これがXORゲー トで検出されて割り込み回路に送られます。不一致 条件は、CMxCON0 レジスタが読み出されるか、ま たはコンパレータ出力が元の状態に戻るまで続き ます。 注 1: 2: CMxCON0レジスタに対して書き込みを 行っても、不一致条件は解消されます。 これは、すべての書き込み動作におい て、書き込みサイクルの先頭で読み出し 動作が実行されるためです。 コンパレータの割り込みは、CxOE の状 態に関係なく正しく動作します。 コンパレータの割り込みは、不一致レベルではなく 不一致エッジによってセットされます。つまり、 CMxCON0 レジスタの読み出しまたは書き込みを 行って不一致レジスタをクリアしなくても割り込 みフラグをリセットできます。不一致レジスタがク リアされると、コンパレータが元の状態に戻った時 のみ割り込みが発生し、それ以外では割り込みは発 生しません。 コンパレータ出力の状態に関する情報は、ソフト ウェアで CMxCON0 レジスタまたは CM2CON1 レジ スタを読み出して保持しておき、実際にどのような 変化が起こったかを判断する必要があります。 図 20-4 および図 20-5 を参照してください。 コンパレータの不一致回路のラッチを所望の状態 にプリセットしてから、コンパレータを有効にでき ます。コンパレータがオフのときには、CxPOL ビッ トが CxOUT レベルを制御します。CxON ビットが クリアされているときに、CxPOL ビットを所望の CxOUT 非割り込みレベルにセットします。次に、 CxON ビットをセットする命令で、所望の CxPOL レベルを設定します。レジスタへの書き込みはすべ て、読み出し - 変更 - 書き込みとして実行されるの で、不一致回路のラッチは命令の読み出し段階でク リアされ、CxON ビットと CxPOL ビットは最後の 書き込み段階で実際に設定されます。 図 20-4: コンパレータ割り込みのタイミング (CMxCON0 の読み出しを行わない 場合 ) Q1 Q3 CxIN+ TRT CxOUT Set CxIF (edge) CxIF reset by software 図 20-5: コンパレータ割り込みのタイミング (CMxCON0 の読み出しを行う場合 ) Q1 Q3 CxIN+ TRT CxOUT Set CxIF (edge) CxIF cleared by CMxCON0 read reset by software 注 1: 読み出し動作の実行中 (Q2サイクルの開 始時点 ) に CMxCON0 レジスタ (CxOUT) が変化した場合、PIR2 レジスタの CxIF 割り込みフラグがセットされないこと があります。 2: いずれかのコンパレータが最初に有効 になるときに、コンパレータ モジュー ルのバイアス回路が安定するまでは、コ ンパレータから正しい出力が得られな い場合があります。バイアス回路が安定 するまで約 1 s 待機し、次に不一致条件 と割り込みフラグをクリアしてからコ ンパレータ割り込みを有効にしてくだ さい。 PIR2 レジスタの CxIF ビットがコンパレータ割り込 みフラグです。このビットは、ソフトウェアで「0」 にクリアしてリセットする必要があります。このレ ジスタに「1」を書き込んでも、割り込みを生成で きます。 ミッドレンジの互換モードで、コンパレータの割り 込みを許可するには、PIE2 レジスタの CxIE ビット および INTCON レジスタの PEIE ビットと GIE ビッ トをすべてセットする必要があります。これらビッ トのいずれかでもクリアされていると割り込みは 発生しませんが、 その場合でもPIR2レジスタのCxIF ビットは割り込み条件の発生時にセットされます。 DS41303E_JP - ページ 278 不一致回路のラッチのプリセット Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 20.5 スリープ モードの動作 スリープ モードに入る前にコンパレータを有効に した場合、コンパレータはスリープ モードでも動 作を継続します。コンパレータの追加消費電流は、 26.0 項「電気的特性」を参照してください。コンパ レータをデバイスのウェイクアップに使用しない 場合は、コンパレータをオフにすることでスリープ モードの消費電力を最小限にできます。CMxCON0 レジスタの CxON ビットをクリアして、コンパレー タを個別にオフにできます。 コンパレータの出力が変化したときに、デバイスを スリープ モードからウェイクアップできます。コ ンパレータを使用してデバイスをスリープ モード からウェイクアップするには、PIE2レジスタのCxIE ビットと INTCON レジスタの PEIE ビットをセット する必要があります。スリープ モードからウェイ クアップすると、SLEEP 命令の次の命令が必ず実 行されます。INTCON レジスタの GIE ビットもセッ トされている場合、デバイスは割り込みサービス ルーチンを実行します。 20.6 リセットの影響 デバイスをリセットすると、CMxCON0 レジスタと CM2CON1レジスタは強制的にリセット状態に戻り ます。これにより、2 つのコンパレータと電圧リ ファレンスはオフ状態になります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 279 PIC18F2XK20/4XK20 レジスタ 20-1: CM1CON0: コンパレータ 1 制御レジスタ 0 R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。 「0」として読み出し 「1」= セット 「0」= クリア ビット 7 C1ON: コンパレータ C1 イネーブル ビット 1 = コンパレータ C1 を有効にする 0 = コンパレータ C1 を無効にする ビット 6 C1OUT: コンパレータ C1 出力ビット C1POL = 1 ( 極性反転 ) の場合 : C1VIN+ > C1VIN- の場合、C1OUT = 0 C1VIN+ < C1VIN- の場合、C1OUT = 1 C1POL = 0 ( 極性非反転 ) の場合 : C1VIN+ > C1VIN- の場合、C1OUT = 1 C1VIN+ < C1VIN- の場合、C1OUT = 0 ビット 5 C1OE: コンパレータ C1 出力イネーブル ビット 1 = C1OUT を C1OUT ピンに出力する (1) 0 = C1OUT は内部のみ ビット 4 C1POL: コンパレータ C1 出力極性選択ビット 1 = C1OUT のロジックを反転する 0 = C1OUT のロジックを反転しない ビット 3 C1SP: コンパレータ C1 速度 / 電力選択ビット 1 = C1 は通常電力、高速モードで動作 0 = C1 は低電力、低速モードで動作 ビット 2 C1R: コンパレータ C1 リファレンス選択ビット ( 非反転入力 ) 1 = C1VIN+ を C1VREF 出力に接続 0 = C1VIN+ を C1IN+ ピンに接続 ビット 1-0 C1CH<1:0>: コンパレータ C1 チャネル選択ビット 00 = C1 の C12IN0- ピンを C1VIN- に接続 01 = C1 の C12IN1- ピンを C1VIN- に接続 10 = C1 の C12IN2- ピンを C1VIN- に接続 11 = C1 の C12IN3- ピンを C1VIN- に接続 注 1: x = 不明 コンパレータから出力するには、C1OE = 1、C1ON = 1、および対応するポートの TRIS ビット = 0 の 3 つの条件をすべて満たす必要があります。 DS41303E_JP - ページ 280 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 20-2: CM2CON0: コンパレータ 2 制御レジスタ 0 R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 U = 未実装ビット。 「0」として読み出し 「1」= セット 「0」= クリア ビット 7 C2ON: コンパレータ C2 イネーブル ビット 1 = コンパレータ C2 を有効にする 0 = コンパレータ C2 を無効にする ビット 6 C2OUT: コンパレータ C2 出力ビット C2POL = 1 ( 極性反転 ) の場合 : C2VIN+ > C2VIN- の場合、C2OUT = 0 C2VIN+ < C2VIN- の場合、C2OUT = 1 C2POL = 0 ( 極性非反転 ) の場合 : C2VIN+ > C2VIN- の場合、C2OUT = 1 C2VIN+ < C2VIN- の場合、C2OUT = 0 ビット 5 C2OE: コンパレータ C2 出力イネーブル ビット 1 = C2OUT を C2OUT ピンに出力する (1) 0 = C2OUT は内部のみ ビット 4 C2POL: コンパレータ C2 出力極性選択ビット 1 = C2OUT のロジックを反転する 0 = C2OUT のロジックを反転しない ビット 3 C2SP: コンパレータ C2 速度 / 電力選択ビット 1 = C2 は通常電力、高速モードで動作 0 = C2 は低電力、低速モードで動作 ビット 2 C2R: コンパレータ C2 リファレンス選択ビット ( 非反転入力 ) 1 = C2VIN+ を C2VREF に接続 0 = C2VIN+ を C2IN+ ピンに接続 ビット 1-0 C2CH<1:0>: コンパレータ C2 チャネル選択ビット 00 = C2 の C12IN0- ピンを C2VIN- に接続 01 = C2 の C12IN1- ピンを C2VIN- に接続 10 = C2 の C12IN2- ピンを C2VIN- に接続 11 = C2 の C12IN3- ピンを C2VIN- に接続 注 1: x = 不明 コンパレータから出力するには、C2OE = 1、C2ON = 1、および対応するポートの TRIS ビット = 0 の 3 つの条件をすべて満たす必要があります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 281 PIC18F2XK20/4XK20 20.7 アナログ入力の接続に関する注意点 アナログ入力の簡単な回路を図 20-6 に示します。ア ナログ入力ピンはデジタル入力と接続を共有して いるため、VDD と VSS には、逆バイアスの静電気放 電保護ダイオードが接続されています。このため、 アナログ入力電圧は VSS と VDD の間の値である必 要があります。入力電圧がこの範囲から 0.6V を超 えて上回るか下回ると、一方のダイオードに順バイ アスがかかり、ラッチアップが発生する場合があり ます。 注 1: PORT レジスタを読み出すときに、アナ ログ入力として設定されたピンはすべ て「0」として読み出されます。デジタ ル入力として設定されたピンは、入力仕 様に基づいてアナログ入力に変換され ます。 2: デジタル入力として指定されたピンに アナログ電圧を印加すると、入力バッ ファに仕様を超える電流が流れる場合 があります。 アナログ ソースの推奨最大インピーダンスは、 10 k です。また、アナログ入力ピンにコンデンサやツェ ナー ダイオードなどの外付け部品を接続する場合 は、精度の低下を最小限にするために、可能な限り リーク電流が最小のものを使用してください。 図 20-6: アナログ入力モデル VDD RIC Rs < 10K AIN ILEAKAGE(1) CPIN 5 pF VA Vss 記号の説明 : CPIN ILEAKAGE RIC RS VA 注 1: = 入力容量 = ピンのリーク電流 ( さまざまな接合により発生 ) = 接続抵抗 = ソース インピーダンス = アナログ電圧 26.0 項「電気的特性」を参照してください。 DS41303E_JP - ページ 282 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 20.8 20.8.2 コンパレータのその他の機能 各コンパレータの非反転入力として、2 つの内部電 圧リファレンスを使用できます。その 1 つは 1.2V のFixed Voltage Reference (FVR: 固定電圧リファレン ス ) で、 もう 1 つは可変 Comparator Voltage Reference (CVREF: コンパレータ電圧リファレンス ) です。 CM2CON レジスタの CxRSEL ビットで、 コンパレー タ電圧リファレンスの出力 (CXVREF) に接続するリ ファレンスを指定します。コンパレータへのその他 の接続は、CMxCON0 レジスタの CxR ビットで指 定します。詳細は、21.1 項「コンパレータ電圧リ ファレンス」、図 20-2、および図 20-3 を参照してく ださい。 コンパレータのその他の機能として、次の 2 つがあ ります。 • コンパレータ出力の同時読み出し • 内部リファレンスの選択 20.8.1 コンパレータ出力の同時読み出し CM2CON1 レジスタの MC1OUT ビットと MC2OUT ビットには、2 つのコンパレータ出力がそのままミ ラー コピーされます。1 つのレジスタで 2 つの出力 を同時に読み出せるため、2 つのレジスタを読み出 す場合のタイミング スキューが発生しません。 注 1: 内部リファレンスの選択 CM2CON1レジスタを読み出してC1OUT または C2OUT の状態を取得しても、コ ンパレータ割り込みの不一致レジスタ には影響しません。 レジスタ 20-3: CM2CON1: コンパレータ 2 制御レジスタ 1 R-0 R-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 MC1OUT MC2OUT C1RSEL C2RSEL — — — — bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 ビット 7 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 MC1OUT: C1OUT のミラー コピー ビット ビット 6 MC2OUT: C2OUT のミラー コピー ビット ビット 5 C1RSEL: コンパレータ C1 リファレンス選択ビット 1 = CVREF を C1VREF 入力にする 0 = FVR (1.2V 固定電圧リファレンス ) を C1VREF 入力にする ビット 4 C2RSEL: コンパレータ C2 リファレンス選択ビット 1 = CVREF を C2VREF 入力にする 0 = FVR (1.2V 固定電圧リファレンス ) を C2VREF 入力にする ビット 3-0 未実装 :「0」として読み出し 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 283 PIC18F2XK20/4XK20 表 20-2: コンパレータ モジュールに関連するレジスタ Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0 60 CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0 61 CM2CON1 MC1OUT MC2OUT C1RSEL C2RSEL — — — — 61 CVRCON CVREN CVROE CVRR CVRSS CVR3 CVR2 CVR1 CVR0 59 CVRCON2 FVREN FVRST — — — — — — 59 INT0IE RBIE TMR0IF INT0IF RBIF 57 INTCON GIE/GIEH PEIE/GIEL TMR0IE PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF 60 PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 60 IPR2 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP 60 PORTA RA7(1) RA6(1) RA5 RA4 RA3 RA2 RA1 RA0 60 LATA LATA7(1) LATA6(1) PORTA Data Latch Register (Read and Write to Data Latch) 60 TRISA TRISA7(1) TRISA6(1) 60 PORTA Data Direction Control Register 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットはコンパレータ モジュールでは使用しません。 注 1: PORTA<7:6> とその方向ビット、およびラッチ ビットは、さまざまなプライマリ オシレータ モードに 合わせてポート ピンとして個々に設定します。無効にすると、これらのビットは「0」として読み出 されます。 DS41303E_JP - ページ 284 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 21.0 21.1.3 電圧リファレンス VSS にクランプされた出力 次の 2 つの独立した電圧リファレンスが使用でき ます。 CVREF 出力電圧を Vss に設定して電力を消費しない 状態にするには、 CVRCONを次のように設定します。 • プログラム可能なコンパレータ電圧リファレンス • 1.2V の固定電圧リファレンス • CVREN = 0 • CVRR = 1 • CVR<3:0> = 0000 21.1 コンパレータ電圧リファレンス コンパレータ電圧リファレンス モジュールは、内 部で電圧リファレンスを生成してコンパレータに 供給します。このモジュールには、次の機能があり ます。 • • • • • コンパレータの動作から独立 16 レベル電圧の 2 つの範囲 VSS にクランプされた出力 VDD に比例した電圧 1.2V の固定電圧リファレンス (FVR) 独立動作 コンパレータ電圧リファレンスは、コンパレータの 構成から独立しています。CVRCON レジスタの CVREN ビットをセットすると、CVREF 分圧器に電 流が流れ、電圧リファレンスが有効になります。両 方の CVREN ビットをクリアすると、CVREF 分圧器 に電流が流れなくなり、 電圧リファレンス モジュー ルの消費電力が最小限に抑えられます。 21.1.2 出力電圧の選択 CVREF 電圧リファレンスは、16 レベルの電圧範囲を 2 つ備えています。電圧範囲は、CVRCON レジスタ のCVRRビットで選択します。 16レベルは、 CVRCON レジスタの CVR<3:0> ビットで設定します。 CVREF 出力電圧は次の式で求められます。 式 21-1: 21.1.4 CVREF 出力電圧 電圧リファレンスの出力 CVRCON レジスタの CVROE ビットを「1」にセッ トして、電圧リファレンス CVREF をデバイスの CVREF ピンに出力できます。CVREF ピンに出力する リファレンス電圧を選択すると、そのピンのデジタ ル出力バッファおよびデジタル入力スレッショル ド検知器の機能が自動的に無効になります。リファ レンス電圧を出力するように設定された CVREF ピ ンを読み出すと、常に「0」が返されます。 電流駆動機能に制限があるため、CVREF を外部接続 するには、電圧リファレンス出力にバッファを使用 する必要があります。図 21-2 に、バッファ手法の 例を示します。 21.1.6 スリープ モードの動作 割り込みまたはウォッチドッグ タイマのタイムア ウトによりデバイスがウェイクアップする場合、 CVRCON レジスタの内容は影響を受けません。ス リープ モードでの消費電流を最小にするには、電 圧リファレンスを無効にする必要があります。 21.1.7 CV RR = 1 (low range): VDD に比例した電圧 コンパレータ電圧リファレンスはVDD から生成され るため、CVREF 出力は VDD の変動に合わせて変化し ます。コンパレータ電圧リファレンスのテスト済み の絶対精度は、26.0 項「電気的特性」を参照してく ださい。 21.1.5 電圧リファレンス モジュール(図 21-1)は、 CVRCON レジスタ ( レジスタ 21-1) で設定します。 21.1.1 これにより、CVREF モジュールが余分な電流を消費 することなく、コンパレータはゼロクロスを検出で きます。 リセットの影響 デバイスをリセットすると、次の項目が影響を受け ます。 CVREF = (CVRSRC/24) X CVR<3:0> + VREFCV RR = 0 (high range): CVREF = (CVRSRC/32) X (8 + CVR<3:0>) + VREFCV RSRC = V DD or [(VREF+) - (VREF-)] 注 : CVRSS = 0 の場合、VREF- は 0 • • • • • コンパレータ電圧リファレンスが無効になる 固定電圧リファレンスが無効になる CVREF ピンから CVREF が除去される 高電圧範囲が選択される CVR<3:0> 範囲選択ビットがクリアされる モジュールの構造上、VSS から VDD までの範囲全体 は設定できません。図 21-1 を参照してください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 285 PIC18F2XK20/4XK20 21.2 FVR リファレンス モジュール 21.2.1 固定電圧リファレンス モジュールを有効にした場 合、リファレンスおよびアンプ回路が安定するまで ある程度の時間がかかります。このモジュールが安 定するまで、ユーザー プログラムでわずかな遅延 を確保する必要があります。CVRCON2 の FVRST 安定ビットも、FVR リファレンスが安定するまで十 分な長さだけ動作したかどうかを示します。最小遅 延の要件は、26.0 項「電気的特性」を参照してくだ さい。 FVR リファレンスは安定した固定電圧リファレン スで、VDD から独立しており、公称出力電圧は 1.2V で す。こ の リ フ ァ レ ン ス を 有 効 に す る に は、 CVRCON2 レジスタの FVREN ビットを「1」にセッ トします。HFINTOSC、HLVD、または BOR の機能 を 1 つ以上有効にした場合、FVR のデフォルトはオ ンです。FVR 電圧リファレンスは、コンパレータま たは ADC の入力チャネルに出力できます。 図 21-1: FVR の安定化期間 電圧リファレンスのブロック図 CVRSS = 1 VREF+ VDD 8R CVRSS = 0 CVR<3:0> R CVREN R R 16-to-1 MUX R 16 Steps R CVREF R R CVRR 8R CVRSS = 1 VREF- CVRSS = 0 1.2 Volt Fixed Reference FVREN From HVLD and BOR circuits DS41303E_JP - ページ 286 EN Preliminary FVR FVRST 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 21-2: 電圧リファレンスの出力バッファの例 PIC18F2XK20/4XK20 CVREF Module R(1) Voltage Reference Output Impedance 注 1: + – CVREF Buffered CVREF Output R は、電圧リファレンス構成ビット CVR<3:0> および CVRR とは独立です。 レジスタ 21-1: CVRCON: コンパレータ電圧リファレンス制御レジスタ R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CVREN CVROE(1) CVRR CVRSS CVR3 CVR2 CVR1 CVR0 bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 W = 書き込み可 「1」= セット U = 未実装ビット。 「0」として読み出し 「0」= クリア x = 不明 ビット 7 CVREN: コンパレータ電圧リファレンス イネーブル ビット 1 = CVREF 回路に電力を供給 0 = CVREF 回路に電力を供給しない ビット 6 CVROE: コンパレータ VREF 出力イネーブル ビット (1) 1 = CVREF ピンに CVREF 電圧レベルも出力する 0 = CVREF ピンから CVREF 電圧を切断する ビット 5 CVRR: コンパレータ VREF 範囲選択ビット 1 = 0 ~ 0.667 CVRSRC、CVRSRC/24 のステップ サイズ ( 低範囲 ) 0 = 0.25 CVRSRC ~ 0.75 CVRSRC、CVRSRC/32 のステップ サイズ ( 高範囲 ) ビット 4 CVRSS: コンパレータ VREF ソース選択ビット 1 = コンパレータ リファレンス ソース、CVRSRC = (VREF+) – (VREF-) 0 = コンパレータ リファレンス ソース、CVRSRC = VDD – VSS ビット 3-0 CVR<3:0>: コンパレータ VREF 値選択ビット (0 (CVR<3:0>) 15) CVRR = 1 のとき : CVREF = ((CVR<3:0>)/24) (CVRSRC) + VREFCVRR = 0 のとき : CVREF = (CVRSRC/4) + ((CVR<3:0>)/32) (CVRSRC) + VREF- 注 1: CVROE は TRISA<2> ビットの設定より優先されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 287 PIC18F2XK20/4XK20 レジスタ 21-2: CVRCON2: コンパレータ電圧リファレンス制御 2 レジスタ R/W-0 R-0 U-0 U-0 U-0 U-0 U-0 U-0 FVREN FVRST — — — — — — bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 -n = POR 時の値 U = 未実装ビット。 「0」として読み出し 「1」= セット x = 不明 「0」= クリア ビット 7 FVREN: 固定電圧リファレンス イネーブル ビット 1 = FVR 回路に電力を供給 0 = FVREN では FVR 回路を有効にしない。他の周辺機器で FVR を有効にできる ビット 6 FVRST: 固定電圧安定ステータス ビット 1 = FVR が安定で使用できる 0 = FVR が安定しておらず、使用するべきではない ビット 5-0 未実装 :「0」として読み出し 表 21-1: コンパレータ電圧リファレンスに関連するレジスタ Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Reset Values on page CVRCON CVREN CVROE CVRR CVRSS CVR3 CVR2 CVR1 CVR0 60 CVRCON2 FVREN FVRST — — — — — — 59 CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1R C1CH1 C1CH0 60 C2OUT C2OE C2POL C2SP C2R C2CH1 C2CH0 61 — — — — 61 Name CM2CON0 C2ON CM2CON1 MC1OUT TRISA TRISA7(1) TRISA6(1) PORTA Data Direction Control Register MC2OUT C1RSEL C2RSEL 60 記号の説明 : 網掛けのビットはコンパレータ電圧リファレンスでは使用しません。 注 1: PORTA ピンは、オシレータの設定に合わせて有効にします。 DS41303E_JP - ページ 288 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 22.0 高 / 低電圧検知 (HLVD) PIC18F2XK20/4XK20 デバイスには高 / 低電圧検知モ ジュール (HLVD) があります。これはプログラム可 能な回路で、デバイスの電圧トリップ ポイント、お よびそのポイントからの変化方向を指定できます。 デバイスで、トリップ ポイントからその方向に電圧 が変化すると、割り込みフラグがセットされます。 割り込みが有効な場合、プログラムの実行が割り込 みベクタ アドレスに分岐し、その後ソフトウェアは 割り込みに応答できます。 高 / 低電圧検知制御レジスタ ( レジスタ 22-1) が、 HLVD モジュールの動作をすべて制御します。これ により、ソフトウェア制御で回路を「オフ」にで き、デバイスでの消費電流を最小に抑えます。 このモジュールを有効にするには、HLVDEN ビッ トをセットします。HLVD モジュールを有効にする たびに、回路が安定するまでの時間が必要です。 IRVST ビットは読み取り専用で、回路が安定かどう かを示します。回路が安定し、IRVST ビットがセッ トされた後でのみ、モジュールは割り込みを生成で きます。 VDIRMAG ビットは、モジュールのすべての動作を 指定します。VDIRMAG ビットがクリアされている ときには、モジュールは、あらかじめ指定したセッ ト ポイントからの VDD の低下をモニタします。 VDIRMAG ビットがセットされているときには、モ ジュールはセット ポイントからの VDD の上昇をモ ニタします。 HLVD モジュールのブロック図を図 22-1 に示します。 レジスタ 22-1: HLVDCON: 高 / 低電圧検知制御レジスタ R/W-0 U-0 R-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-1 VDIRMAG — IRVST HLVDEN HLVDL3(1) HLVDL2(1) HLVDL1(1) HLVDL0(1) bit 7 bit 0 記号の説明 : R = 読み出し可 -n = POR 時の値 ビット 7 W = 書き込み可 「1」= セット U = 未実装 「0」= クリア C = クリア可 x = 不明 VDIRMAG: 電圧方向の大きさ選択ビット 1 = 電圧 ≧ トリップ ポイント (HLVDL<3:0>) の場合にイベント発生 0 = 電圧 ≦ トリップ ポイント (HLVDL<3:0>) の場合にイベント発生 ビット 6 未実装 :「0」として読み出し ビット 5 IRVST: 内部リファレンス電圧安定フラグ ビット 1 = 電圧検知ロジックが指定の電圧範囲で割り込みフラグを生成することを示す 0 = 電圧検知ロジックが指定の電圧範囲で割り込みフラグを生成せず、HLVD 割り込みを有効 にしないことを示す ビット 4 HLVDEN: 高 / 低電圧検知電力イネーブル ビット 1 = HLVD を有効にする 0 = HLVD を無効にする ビット 3-0 HLVDL<3:0>: 電圧検知制限ビット (1) 1111 = 外部アナログ入力を使用 (HLVDIN ピンに入力 ) 1110 = 最大設定 . . . 0000 = 最小設定 注 1: 仕様は、表 26-4 を参照してください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 289 PIC18F2XK20/4XK20 22.1 動作 HLVD モジュールを有効にすると、コンパレータは 内部で生成したリファレンス電圧をセット ポイン トとして使用します。セット ポイントがトリップ ポイントと比較され、抵抗分圧器の各ノードがト リップ ポイント電圧を表します。 「トリップ ポイン ト」電圧とは、モジュールの設定に基づいてデバイ スが高電圧または低電圧のイベントを検知する電 圧レベルです。供給電圧がトリップ ポイントと等 しい場合、抵抗アレイの出力電圧は電圧リファレン ス モジュールが生成する内部リファレンス電圧と 等しくなります。その後、コンパレータは HLVDIF ビットをセットして、割り込み信号を生成します。 図 22-1: VDD HLVD モジュールには、外部ソースからモジュール にトリップ電圧を供給できる機能もあります。この モードが有効になるのは、HLVDL<3:0> ビットが 「1111」に設定されたときです。この場合、コンパ レータの入力が外部入力ピンHLVDINと多重化され ます。これにより、有効な動作範囲の任意の電圧で 高 / 低電圧検知割り込みを発生するように設定でき るので、柔軟性が得られます。 HLVD モジュールのブロック図 ( 外部入力あり ) Externally Generated Trip Point VDD HLVDL<3:0> HLVDCON Register HLVDEN HLVDIN 16-to-1 MUX HLVDIN トリップ ポイント電圧は、ソフトウェアで 16 の値の いずれにもプログラムできます。トリップ ポイント を選択するには、 HLVDCON レジスタの HLVDL<3:0> ビットをプログラムします。 VDIRMAG Set HLVDIF HLVDEN Internal Voltage Reference BOREN DS41303E_JP - ページ 290 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 22.2 HLVD の設定 HLVD モジュールを設定するには、次の手順を実行 します。 1. 2. 3. 4. 5. 所望の HLVD トリップ ポイントを選択する値 を HLVDL<3:0> ビットに書き込みます。 VDIRMAG ビットを、高電圧検知 (VDIRMAG = 1) または低電圧検知 (VDIRMAG = 0) に設定し ます。 HLVDEN ビットをセットして、HLVD モジュー ルを有効にします。 直前の割り込みによりセットされている可能 性のある、PIR2 レジスタの HLVD 割り込みフ ラグ ビットをクリアします。 割り込みを使用する場合は、PIE2 レジスタの HLVDIE ビット、および INTCON レジスタの GIE ビットと PEIE ビットをセットして、HLVD 割り込みを有効にします。IRVST ビットがセッ トされるまで、割り込みは生成されません。 22.3 消費電流 HLVD モジュールを有効にすると、HLVD のコンパ レータと分圧器が有効になり、一定の電流を消費し ます。有効にした場合の合計消費電流は、電気的仕 様のパラメータ D024B で規定されています。 図 22-2: アプリケーションによっては、HLVD モジュールが 継続的に動作する必要がないものもあります。電流 の要件を低減するために、電圧をチェックする短い 期間だけ HLVD 回路を有効にすることができます。 チェック後、HLVD モジュールを無効にできます。 22.4 HLVD の起動期間 HLVD モジュールの内部リファレンス電圧 ( 電気的 仕様のパラメータ D420 で規定 ) は、プログラム可 能なブラウンアウト リセットのような内部回路で 使用できます。デバイスの消費電流を削減するため に電圧リファレンスを使用するHLVDやその他の回 路を無効にしている場合、低 / 高電圧条件を高信頼 性で検知するには、リファレンス電圧回路が安定す るための時間が必要です。起動期間 TIRVST は、デ バイスのクロック速度とは独立した期間です。電気 的仕様のパラメータ 36 に規定されています。 リファレンス電圧が安定するまで、 TIRVST が経過し、 HLVD 割り込みフラグは有効になりません。このた め、この期間中は、セット ポイントを超えるわずか な偏位は検知されないことがあります。図 22-2 また は図 22-3 を参照してください。 低電圧検知動作 (VDIRMAG = 0) CASE 1: HLVDIF may not be set VDD VHLVD HLVDIF Enable HLVD TIVRST IRVST Internal Reference is stable HLVDIF cleared by software CASE 2: VDD VHLVD HLVDIF Enable HLVD TIVRST IRVST Internal Reference is stable HLVDIF cleared by software HLVDIF cleared by software, HLVDIF remains set since HLVD condition still exists 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 291 PIC18F2XK20/4XK20 図 22-3: 高電圧検知動作 (VDIRMAG = 1) CASE 1: HLVDIF may not be set VHLVD VDD HLVDIF Enable HLVD TIVRST IRVST HLVDIF cleared by software Internal Reference is stable CASE 2: VHLVD VDD HLVDIF Enable HLVD TIVRST IRVST Internal Reference is stable HLVDIF cleared by software HLVDIF cleared by software, HLVDIF remains set since HLVD condition still exists DS41303E_JP - ページ 292 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 22.5 22.6 アプリケーション 多くのアプリケーションで、特定のスレッショルド からの低下や上昇を検知する機能は有用です。 例えば、HLVD モジュールを定期的に有効にして、 Universal Serial Bus (USB: ユニバーサル シリアル バ ス ) の接続と切断を検出できます。これは、デバイ スが USB を接続していないときに、USB よりも低 い電圧ソースで駆動されていることを前提にして います。接続は高電圧検知 ( 例えば、USB の電圧が 3.3V から 5V に変化 )、切断は低電圧検知 ( 例えば、 USB の電圧が 5V から 3.3V に変化 ) を示します。こ の機能により、設計からいくつかの構成要素、およ び接続信号 ( 入力ピン ) を省略できます。 一般的なバッテリ アプリケーションについては、図 22-4 に電流曲線の例を示します。時間が経過する と、デバイスの電圧は減少します。デバイスの電圧 が VA に達すると、HLVD ロジックが TA の時点で 割り込みを生成します。割り込みにより ISR を実行 できるので、デバイス電圧が TB の時点でデバイス 電圧が有効な動作範囲を超える前に、アプリケー ションは「ハウスキーピング タスク」を実行し、制 御下でシャットダウンを実行できます。このよう に、HLVD により、TA と TB の差で表される、アプ リケーションが安全に終了するための時間が得ら れます。 図 22-4: スリープ モードの動作 有効にした場合、HLVD 回路はスリープ モードで継 続して動作します。デバイス電圧がトリップ ポイ ントを超えると、HLVDIF ビットがセットされ、デ バイスがスリープ モードからウェイクアップしま す。割り込みがグローバルに有効になっている場 合、デバイスの実行は割り込みベクタ アドレスか ら継続します。 22.7 リセットの影響 デバイスをリセットすると、すべてのレジスタが強 制的にリセット状態に戻ります。これにより、HLVD モジュールがオフになります。 代表的な低電圧検知の応用例 Voltage VA VB Time TA TB Legend: VA = HLVD trip point VB = Minimum valid device operating voltage 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 293 PIC18F2XK20/4XK20 表 22-1: Name 高 / 低電圧検知モジュールに関連するレジスタ Bit 7 HLVDCON VDIRMAG INTCON Bit 6 Bit 5 — IRVST GIE/GIEH PEIE/GIEL TMR0IE Bit 4 Bit 3 HLVDEN HLVDL3 Bit 2 Bit 1 Bit 0 Reset Values on Page HLVDL2 HLVDL1 HLVDL0 58 INT0IE RBIE TMR0IF INT0IF RBIF 57 60 PIR2 OSCFIF C1IF C2IF EEIF BCLIF HLVDIF TMR3IF CCP2IF PIE2 OSCFIE C1IE C2IE EEIE BCLIE HLVDIE TMR3IE CCP2IE 60 IPR2 OSCFIP C1IP C2IP EEIP BCLIP HLVDIP TMR3IP CCP2IP 60 記号の説明 : — = 未実装、「0」として読み出し。網掛けのビットは HLVD モジュールでは使用しません。 DS41303E_JP - ページ 294 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 23.0 CPU の特殊機能 PIC18F2XK20/4XK20 デバイスは、信頼性を最大に し、外付け部品を省いてコストを最小にするため に、次の機能を装備しています。 • オシレータ選択 • リセット : - パワーオン リセット (POR) - パワーアップ タイマ (PWRT) - オシレータ起動タイマ (OST) - ブラウンアウト リセット (BOR) • 割り込み • ウォッチドッグ タイマ (WDT) • コード プロテクション • ID ロケーション • インサーキット シリアル プログラミング ™ 周波数、電力、精度、およびコストに合わせて、 アプリケーション用にオシレータを設定できます。 すべてのオプションの詳細は、2.0 項「オシレータ モジュール ( フェイルセーフ クロック モニタ機能 付き )」を参照してください。 デバイスのリセットと割り込みの詳細は、このデー タシートの前の節を参照してください。 リセット用のパワーアップ タイマとオシレータ起 動タイマに加えて、PIC18F2XK20/4XK20 デバイス には、ウォッチドッグ タイマを装備しています。こ のタイマは、構成ビットにより恒常的に有効になる か、ソフトウェアから制御 ( 無効に設定した場合 ) されます。 内部 RC オシレータを装備していることにより、 FailSafe Clock Monitor (FSCM: フェイル セーフ クロック モニタ ) と 2 段階速度の起動の利点も得られます。 FSCM は周辺クロックをバックグラウンドでモニタ し、障害発生時には自動的に切り替えます。2 段階 速度の起動により、プライマリ クロックソースの起 動遅延中に、ほぼ即座にコードを実行できます。 これらすべての機能の有効化と設定は、適切な構成 レジスタのビットを設定することで行います。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 295 PIC18F2XK20/4XK20 23.1 構成ビット 構成ビットをプログラムする (「0」として読み出し ) か、プログラムしない (「1」として読み出し ) まま にして、さまざまなデバイス設定を選択できます。 これらのビットは、プログラム メモリの 300000h か ら始まる位置にマップされています。 アドレス 300000h は、ユーザー プログラム メモリ空 間外にあることに注意してください。それらはコン フィギュレーション メモリ空間 (300000h~3FFFFFh) に属し、テーブルの読み書きによってのみアクセス できます。 構成レジスタのプログラミングは、フラッシュ メ モリのプログラミングとほぼ同じです。EECON1 レ ジスタの WR ビットをセットすると、自己タイマに よる構成レジスタへの書き込みが開始されます。通 常動作モードでは、TBLWT 命令に構成レジスタを ポイントする TBLPTR を指定して、構成レジスタが 書き込むアドレスとデータを設定します。WR ビッ トをセットすると、構成レジスタへの長い書き込み が開始されます。構成レジスタには、一度に 1 バイ ト書き込まれます。構成セルの書き込みや消去を行 うには、TBLWT 命令で構成セルに「1」または「0」 を書き込みます。フラッシュのプログラミングの詳 細は、6.5 項「フラッシュ プログラム メモリへの書 き込み」を参照してください。 表 23-1: 構成ビットとデバイス ID Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Default/ Unprogrammed Value CONFIG1H IESO FCMEN — — FOSC3 FOSC2 FOSC1 FOSC0 00-- 0111 File Name 300001h 300002h CONFIG2L — — — BORV1 BORV0 BOREN1 BOREN0 PWRTEN ---1 1111 300003h CONFIG2H — — — WDTPS3 WDTPS2 WDTPS1 WDTPS0 WDTEN ---1 1111 300005h CONFIG3H MCLRE — — — HFOFST LPT1OSC PBADEN CCP2MX 1--- 1011 10-- -1-1 300006h CONFIG4L DEBUG XINST — — — LVP — STVREN 300008h CONFIG5L — — — — CP3(1) CP2(1) CP1 CP0 ---- 1111 300009h CONFIG5H CPD CPB — — — — — — 11-- ---- 30000Ah CONFIG6L — — — — WRT3(1) WRT2(1) WRT1 WRT0 ---- 1111 111- ---- 30000Bh CONFIG6H WRTD WRTB WRTC — — — — — 30000Ch CONFIG7L — — — — EBTR3(1) EBTR2(1) EBTR1 EBTR0 ---- 1111 30000Dh CONFIG7H — EBTRB — — — — — — -1-- ---- 3FFFFEh DEVID1(2) DEV2 DEV1 DEV0 REV4 REV3 REV2 REV1 REV0 qqqq qqqq(2) 3FFFFFh (2) DEV10 DEV9 DEV8 DEV7 DEV6 DEV5 DEV4 DEV3 0000 1100 DEVID2 記号の説明 : 注 1: 2: x = 不明、u = 不変、– = 未実装、q = 条件によって異なる 網掛けのセルは未実装で「0」として読み出し 実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。このビットはセットしてください。 DEVID1 の値は、レジスタ 23-12 を参照してください。DEVID レジスタは読み取り専用で、ユーザーはプログラムできま せん。 DS41303E_JP - ページ 296 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 23-1: CONFIG1H: 構成レジスタ 1 HIGH R/P-0 R/P-0 U-0 U-0 R/P-0 R/P-1 R/P-1 R/P-1 IESO FCMEN — — FOSC3 FOSC2 FOSC1 FOSC0 bit 7 bit 0 記号の説明 : R = 読み出し可 P = プログラム可 -n = 未プログラム時の値 U = 未実装ビット。 「0」として読み出し x = 不明 ビット 7 IESO: 内部 / 外部オシレータ スイッチオーバー ビット 1 = オシレータのスイッチオーバー モードを有効にする 0 = オシレータのスイッチオーバー モードを無効にする ビット 6 FCMEN: フェイルセーフ クロック モニタ イネーブル ビット 1 = フェイルセーフ クロック モニタを有効にする 0 = フェイルセーフ クロック モニタを無効にする ビット 5-4 未実装 :「0」として読み出し ビット 3-0 FOSC<3:0>: オシレータ選択ビット 11xx = 外部 RC オシレ―タ、CLKOUT 機能は RA6 101x = 外部 RC オシレ―タ、CLKOUT 機能は RA6 1001 = 内部オシレータ ブロック、CLKOUT 機能は RA6、ポート機能は RA7 1000 = 内部オシレータ ブロック、ポート機能は RA6 および RA7 0111 = 外部 RC オシレ―タ、ポート機能は RA6 0110 = HS オシレータ、PLL を有効にする ( クロック周波数 = 4 x FOSC1) 0101 = EC オシレ―タ、ポート機能は RA6 0100 = EC オシレ―タ、CLKOUT 機能は RA6 0011 = 外部 RC オシレ―タ、CLKOUT 機能は RA6 0010 = HS オシレータ 0001 = XT オシレータ 0000 = LP オシレータ 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 297 PIC18F2XK20/4XK20 レジスタ 23-2: CONFIG2L: 構成レジスタ 2 LOW U-0 U-0 U-0 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 — — — BORV1(1) BORV0(1) BOREN1(2) BOREN0(2) PWRTEN(2) bit 7 bit 0 記号の説明 : R = 読み出し可 P = プログラム可 U = 未実装ビット。「0」として読み出し -n = 未プログラム時の値 x = 不明 ビット 7-5 未実装 :「0」として読み出し ビット 4-3 BORV<1:0>: ブラウンアウト リセット電圧ビット (1) 11 = VBOR を 1.8V ( 公称値 ) に設定する 10 = VBOR を 2.2V ( 公称値 ) に設定する 01 = VBOR を 2.7V ( 公称値 ) に設定する 00 = VBOR を 3.0V ( 公称値 ) に設定する ビット 2-1 BOREN<1:0>: ブラウンアウト リセット リセット イネーブル ビット (2) 11 = ブラウンアウト リセットをハードウェアのみで有効にする (SBOREN は無効 ) 10 = ブラウンアウト リセットをハードウェアのみで有効にし、スリープ モードで無効にする (SBOREN は無効 ) 01 = ブラウンアウト リセットをソフトウェアで有効にして制御 (SBOREN が有効 ) 00 = ブラウンアウト リセットをハードウェアとソフトウェアで無効にする ビット 0 PWRTEN: パワーアップ タイマ イネーブル ビット (2) 1 = PWRT を無効にする 0 = PWRT を有効にする 注 1: 2: 仕様は、セクション 26.1「DC 特性 : 供給電圧」を参照してください。 パワーアップ タイマはブラウンアウト リセットと分離され、これらの機能を個別に制御できます。 レジスタ 23-3: CONFIG2H: 構成レジスタ 2 HIGH U-0 U-0 U-0 R/P-1 R/P-1 R/P-1 R/P-1 R/P-1 — — — WDTPS3 WDTPS2 WDTPS1 WDTPS0 WDTEN bit 7 bit 0 記号の説明 : R = 読み出し可 P = プログラム可 -n = 未プログラム時の値 U = 未実装ビット。「0」として読み出し x = 不明 ビット 7-5 未実装 :「0」として読み出し ビット 4-1 WDTPS<3:0>: ウォッチドッグ タイマ ポストスケール選択ビット 1111 = 1:32,768 1110 = 1:16,384 1101 = 1:8,192 1100 = 1:4,096 1011 = 1:2,048 1010 = 1:1,024 1001 = 1:512 1000 = 1:256 0111 = 1:128 0110 = 1:64 0101 = 1:32 0100 = 1:16 0011 = 1:8 0010 = 1:4 0001 = 1:2 0000 = 1:1 ビット 0 WDTEN: ウォッチドッグ タイマ イネーブル ビット 1 = WDT を常に有効にする。SWDTEN ビットの効果はない 0 = WDT を WDTCON レジスタの SWDTEN ビットで制御する DS41303E_JP - ページ 298 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 23-4: CONFIG3H: 構成レジスタ 3 HIGH R/P-1 U-0 U-0 U-0 R/P-1 R/P-0 R/P-1 R/P-1 MCLRE — — — HFOFST LPT1OSC PBADEN CCP2MX bit 7 bit 0 記号の説明 : R = 読み出し可 P = プログラム可 U = 未実装ビット。 「0」として読み出し -n = 未プログラム時の値 x = 不明 ビット 7 MCLRE: MCLR ピン イネーブル ビット 1 = MCLR ピンを有効にする。RE3 入力ピンを無効にする 0 = RE3 入力ピンを有効にする。MCLR を無効にする ビット 6-4 未実装 :「0」として読み出し ビット 3 HFOFST: HFINTOSC 高速起動 1 = オシレータが安定するまで待たずに HFINTOSC が CPU のクロック駆動を開始する 0 = HFINTOSC が安定するまでシステム クロックをオフにする ビット 2 LPT1OSC: 低消費電力 Timer1 オシレータ イネーブル ビット 1 = Timer1 を低消費電力動作用に設定する 0 = Timer1 を高消費電力動作用に設定する ビット 1 PBADEN: PORTB A/D イネーブル ビット (ANSELH のリセット状態に影響、ANSELH は PORTB<4:0> ピンの設定を制御 ) 1 = PORTB<4:0> ピンをリセット時にアナログ入力チャネルに設定する 0 = PORTB<4:0> ピンをリセット時にデジタル I/O に設定する ビット 0 CCP2MX: CCP2 MUX ビット 1 = CCP2 入力 / 出力を RC1 と多重化する 0 = CCP2 入力 / 出力を RB3 と多重化する レジスタ 23-5: R/P-1 DEBUG CONFIG4L: 構成レジスタ 4 LOW R/P-0 XINST U-0 — U-0 — U-0 R/P-1 — LVP(1) U-0 R/P-1 — STVREN bit 7 bit 0 記号の説明 : R = 読み出し可 P = プログラム可 U = 未実装ビット。 「0」として読み出し -n = 未プログラム時の値 x = 不明 ビット 7 DEBUG: バックグラウンド デバッガ イネーブル ビット 1 = バックグラウンド デバッガを無効にする。RB6 と RB7 を汎用 I/O ピンに設定する 0 = バックグラウンド デバッガを有効にする。RB6 と RB7 をインサーキット デバッグ専用にする ビット 6 XINST: 拡張命令セット イネーブル ビット 1 = 拡張命令セットとインデックス付きアドレス指定モードを有効にする 0 = 拡張命令セットとインデックス付きアドレス指定モードを無効にする ( レガシー モード ) ビット 5-3 未実装 :「0」として読み出し ビット 2 LVP: 単一電源 ICSP イネーブル ビット 1 = 単一電源 ICSP を有効にする 0 = 単一電源 ICSP を無効にする ビット 1 未実装 :「0」として読み出し ビット 0 STVREN: スタック フル / アンダーフロー リセット イネーブル ビット 1 = スタック フル / アンダーフローの発生時にリセットを実行する 0 = スタック フル / アンダーフローの発生時にリセットを実行しない 注 1: 高電圧プログラミング モードで、プログラマのみが変更できます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 299 PIC18F2XK20/4XK20 レジスタ 23-6: U-0 CONFIG5L: 構成レジスタ 5 LOW U-0 — — U-0 — U-0 — R/C-1 R/C-1 (1) (1) CP3 CP2 R/C-1 R/C-1 CP1 CP0 bit 7 bit 0 記号の説明 : R = 読み出し可 U = 未実装、 「0」として読み出し -n = 未プログラム時の値 C = クリアのみ可 ビット 7-4 未実装 :「0」として読み出し ビット 3 CP3: コード プロテクション ビット (1) 1 = ブロック 3 のコードを保護しない 0 = ブロック 3 のコードを保護する ビット 2 CP2: コード プロテクション ビット (1) 1 = ブロック 2 のコードを保護しない 0 = ブロック 2 のコードを保護する ビット 1 CP1: コード プロテクション ビット 1 = ブロック 1 のコードを保護しない 0 = ブロック 1 のコードを保護する ビット 0 CP0: コード プロテクション ビット 1 = ブロック 0 のコードを保護しない 0 = ブロック 0 のコードを保護する 注 1: 実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。 レジスタ 23-7: CONFIG5H: 構成レジスタ 5 HIGH R/C-1 R/C-1 U-0 U-0 U-0 U-0 U-0 U-0 CPD CPB — — — — — — bit 7 bit 0 記号の説明 : R = 読み出し可 U = 未実装、 「0」として読み出し -n = 未プログラム時の値 C = クリアのみ可 ビット 7 CPD: データ EEPROM コード プロテクション ビット 1 = データ EEPROM のコードを保護しない 0 = データ EEPROM のコードを保護する ビット 6 CPB: 起動ブロック コード プロテクション ビット 1 = 起動ブロックのコードを保護しない 0 = 起動ブロックのコードを保護する ビット 5-0 未実装 :「0」として読み出し DS41303E_JP - ページ 300 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 23-8: U-0 CONFIG6L: 構成レジスタ 6 LOW U-0 — — U-0 U-0 — R/C-1 — WRT3 (1) R/C-1 (1) WRT2 R/C-1 R/C-1 WRT1 WRT0 bit 7 bit 0 記号の説明 : R = 読み出し可 U = 未実装、 「0」として読み出し -n = 未プログラム時の値 C = クリアのみ可 ビット 7-4 未実装 :「0」として読み出し ビット 3 WRT3: 書き込みプロテクション ビット (1) 1 = ブロック 3 を書き込みから保護しない 0 = ブロック 3 を書き込みから保護する ビット 2 WRT2: 書き込みプロテクション ビット (1) 1 = ブロック 2 を書き込みから保護しない 0 = ブロック 2 を書き込みから保護する ビット 1 WRT1: 書き込みプロテクション ビット 1 = ブロック 1 を書き込みから保護しない 0 = ブロック 1 を書き込みから保護する ビット 0 WRT0: 書き込みプロテクション ビット 1 = ブロック 0 を書き込みから保護しない 0 = ブロック 0 を書き込みから保護する 注 1: 実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。 レジスタ 23-9: R/C-1 CONFIG6H: 構成レジスタ 6 HIGH R/C-1 WRTD WRTB R-1 WRTC (1) U-0 U-0 U-0 U-0 U-0 — — — — — bit 7 bit 0 記号の説明 : R = 読み出し可 U = 未実装、 「0」として読み出し -n = 未プログラム時の値 C = クリアのみ可 ビット 7 WRTD: データ EEPROM 書き込みプロテクション ビット 1 = データ EEPROM を書き込みから保護しない 0 = データ EEPROM を書き込みから保護する ビット 6 WRTB: 起動ブロック書き込みプロテクション ビット 1 = 起動ブロックを書き込みから保護しない 0 = 起動ブロックを書き込みから保護する ビット 5 WRTC: 構成レジスタ書き込みプロテクション ビット (1) 1 = 構成レジスタを書き込みから保護しない 0 = 構成レジスタを書き込みから保護する ビット 4-0 未実装 :「0」として読み出し 注 1: このビットは、通常実行モードでは読み取り専用です。プログラム モードでのみ書き込みできます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 301 PIC18F2XK20/4XK20 レジスタ 23-10: U-0 CONFIG7L: 構成レジスタ 7 LOW U-0 — — U-0 — U-0 R/C-1 (1) — EBTR3 R/C-1 EBTR2 (1) R/C-1 R/C-1 EBTR1 EBTR0 bit 7 bit 0 記号の説明 : R = 読み出し可 U = 未実装、 「0」として読み出し -n = 未プログラム時の値 C = クリアのみ可 ビット 7-4 未実装 :「0」として読み出し ビット 3 EBTR3: テーブル読み出しプロテクション ビット (1) 1 = ブロック 3 を、他のブロックで実行されるテーブル読み出しから保護しない 0 = ブロック 3 を、他のブロックで実行されるテーブル読み出しから保護する ビット 2 EBTR2: テーブル読み出しプロテクション ビット (1) 1 = ブロック 2 を、他のブロックで実行されるテーブル読み出しから保護しない 0 = ブロック 2 を、他のブロックで実行されるテーブル読み出しから保護する ビット 1 EBTR1: テーブル読み出しプロテクション ビット 1 = ブロック 1 を、他のブロックで実行されるテーブル読み出しから保護しない 0 = ブロック 1 を、他のブロックで実行されるテーブル読み出しから保護する ビット 0 EBTR0: テーブル読み出しプロテクション ビット 1 = ブロック 0 を、他のブロックで実行されるテーブル読み出しから保護しない 0 = ブロック 0 を、他のブロックで実行されるテーブル読み出しから保護する 注 1: 実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。 レジスタ 23-11: CONFIG7H: 構成レジスタ 7 HIGH U-0 R/C-1 U-0 U-0 U-0 U-0 U-0 U-0 — EBTRB — — — — — — bit 7 bit 0 記号の説明 : R = 読み出し可 U = 未実装、 「0」として読み出し -n = 未プログラム時の値 C = クリアのみ可 ビット 7 未実装 :「0」として読み出し ビット 6 EBTRB: 起動ブロック テーブル読み出しプロテクション ビット 1 = 起動ブロックを、他のブロックで実行されるテーブル読み出しから保護しない 0 = 起動ブロックを、他のブロックで実行されるテーブル読み出しから保護する ビット 5-0 未実装 :「0」として読み出し DS41303E_JP - ページ 302 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 レジスタ 23-12: DEVID1: PIC18F2XK20/4XK20 用デバイス ID レジスタ 1 R R R R R R R R DEV2 DEV1 DEV0 REV4 REV3 REV2 REV1 REV0 bit 7 bit 0 記号の説明 : R = 読み出し可 U = 未実装、 「0」として読み出し -n = 未プログラム時の値 C = クリアのみ可 ビット 7-5 DEV<2:0>: デバイス ID ビット 000 = PIC18F46K20 001 = PIC18F26K20 010 = PIC18F45K20 011 = PIC18F25K20 100 = PIC18F44K20 101 = PIC18F24K20 110 = PIC18F43K20 111 = PIC18F23K20 ビット 4-0 REV<4:0>: リビジョン ID ビット デバイスのリビジョンを示す レジスタ 23-13: DEVID2: PIC18F2XK20/4XK20 用デバイス ID レジスタ 2 R R R R R R R R DEV10 DEV9 DEV8 DEV7 DEV6 DEV5 DEV4 DEV3 bit 7 bit 0 記号の説明 : R = 読み出し可 U = 未実装、 「0」として読み出し -n = 未プログラム時の値 C = クリアのみ可 ビット 7-0 注 1: DEV<10:3>: デバイス ID ビット DEVID1 レジスタの DEV<2:0> ビットと合わせて、製品番号を示す 0010 0000 = PIC18F2XK20/4XK20 デバイス DEV<10:3> の値は他のデバイスでも使用されていることがあります。デバイスは常に、DEV<10:0> ビット全体で示されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 303 PIC18F2XK20/4XK20 23.2 ウォッチドッグ タイマ (WDT) PIC18F2XK20/4XK20デバイスのWDTは、 LFINTOSC ソースで駆動されます。WDT を有効にすると、ク ロック ソースも有効になります。WDT 周期 ( 公称 値 ) は 4 ms で、安定性は LFINTOSC オシレータと同 じです。 WDT の周期 4 ms が、16 ビット ポストスケーラで 乗算されます。WDT ポストスケーラの出力はマル チプレクサで選択され、CONFIG2H レジスタのビッ トで制御されます。使用できる周期の範囲は、4 ms ~ 131.072 秒 (2.18 分 ) です。WDT とポストスケー ラ は、SLEEP ま た は CLRWDT の 命 令 の 実 行 時、 OSCCON レジスタの IRCF ビットの変更時、または クロック障害の発生時にクリアされます。 注 1: CLRWDT と SLEEP の命令は、実行時に WDT とポストスケーラをクリアします。 2: OSCCON レジスタの IRCF ビットの設定 を変更すると、WDT とポストスケーラ のカウントがクリアされます。 3: CLRWDT 命令の実行時に、ポストスケー ラのカウントがクリアされます。 図 23-1: WDT のブロック図 SWDTEN WDTEN Enable WDT WDT Counter LFINTOSC Source Wake-up from Power Managed Modes 128 Change on IRCF bits Programmable Postscaler 1:1 to 1:32,768 CLRWDT Reset WDT Reset All Device Resets WDTPS<3:0> 4 Sleep DS41303E_JP - ページ 304 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 23.2.1 制御レジスタ レジスタ 23-14 に、WDTCON レジスタを示します。 これは読み出しと書き込みが可能なレジスタで、ソ フトウェアから WDT イネーブル構成ビットを無効 にできる ( 構成ビットで WDT を無効にした場合の み ) 制御ビットを有します。 レジスタ 23-14: WDTCON: ウォッチドッグ タイマ制御レジスタ U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 — — — — — — — SWDTEN(1) bit 7 bit 0 記号の説明 : R = 読み出し可 W = 書き込み可 -n = POR 時の値 U = 未実装ビット。「0」として読み出し 「1」= セット x = 不明 「0」= クリア ビット 7-1 未実装 :「0」として読み出し ビット 0 SWDTEN: ソフトウェアによるウォッチドッグ タイマ イネーブル / ディスエーブル ビット (1) 1 = WDT をオンにする 0 = WDT をオフにする ( リセット値 ) 注 1: 構成ビット WDTEN が有効な場合は、このビットは効果がありません。 表 23-2: Name RCON WDTCON ウォッチドッグ タイマのレジスタの一覧 Bit 0 Reset Values on page POR BOR 56 — SWDTEN 58 WDTEN 298 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 IPEN SBOREN — RI TO PD — — — — — — CONFIG2H WDTPS3 WDTPS2 WDTPS1 WDTPS0 記号の説明 : — = 未実装、 「0」として読み出し。網掛けのビットはウォッチドッグ タイマでは使用しません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 305 PIC18F2XK20/4XK20 23.3 各ブロックには、対応する 3 つのコード プロテク ション ビットがあります。 プログラム検証とコード プロテク ション PIC18 フラッシュ デバイスのコード プロテクショ ンの全体構造は、他の PIC® マイクロコントローラ デバイスとは大きく異なります。 デバイスにより、ユーザー プログラム メモリが 3 つ~ 5 つのブロックに分かれています。その 1 つ は、0.5 KB または 2 KB ( デバイスによって異なる ) の起動ブロックです。残りのメモリは、バイナリ境 界で個々のブロックに分かれています。 図 23-2: • コード プロテクション ビット (CPn) • 書き込みプロテクション ビット (WRTn) • 外部ブロック テーブル読み出しビット (EBTRn) 図 23-2 に、8 KB、16 KB、および 32 KB のデバイ スのプログラム メモリの構成、および各ブロック に対応するコード プロテクション ビットを示しま す。ビットの実際の位置は、表 23-3 に示します。 PIC18F2XK20/4XK20 のコード プロテクションが有効なプログラム メモリ MEMORY SIZE/DEVICE Block Code Protection Controlled By: 8 Kbytes (PIC18FX3K20) 16 Kbytes (PIC18FX4K20) 32 Kbytes (PIC18FX5K20) 64 Kbytes (PIC18FX6K20) Boot Block (000h-1FFh) Boot Block (000h-7FFh) Boot Block (000h-7FFh) Boot Block (000h-7FFh) CPB, WRTB, EBTRB Block 0 (200h-FFFh) Block 0 (800h-1FFFh) Block 0 (800h-1FFFh) Block 0 (800h-3FFFh) CP0, WRT0, EBTR0 Block 1 (1000h-1FFFh) Block 1 (2000h-3FFFh) Block 1 (2000h-3FFFh) Block 1 (4000h-7FFFh) CP1, WRT1, EBTR1 Block 2 (4000h-5FFFh) Block 2 (8000h-BFFFh) CP2, WRT2, EBTR2 Block 3 (6000h-7FFFh) Block 3 (C000h-FFFFh) CP3, WRT3, EBTR3 Unimplemented Read ‘0’s (2000h-1FFFFFh) Unimplemented Read ‘0’s (4000h-1FFFFFh) Unimplemented Unimplemented Read ‘0’s Read ‘0’s (8000h-1FFFFFh) (10000h-1FFFFFh) 表 23-3: (Unimplemented Memory Space) コード プロテクション レジスタの一覧 File Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 1 Bit 0 CP1 CP0 CONFIG5L — — — — 300009h CONFIG5H CPD CPB — — — — — — 30000Ah CONFIG6L — — — — WRT3(1) WRT2(1) WRT1 WRT0 30000Bh CONFIG6H WRTD WRTB WRTC — — — — — EBTR1 EBTR0 — — 30000Ch CONFIG7L — — — — CONFIG7H — EBTRB — — (1) EBTR3 — CP2 (1) 300008h 30000Dh CP3 Bit 2 (1) EBTR2 — (1) 記号の説明 : 網掛けのセルは未実装です。 注 1: 実装されていますが、PIC18FX3K20 と PIC18FX4K20 のデバイスでは使用しません。 DS41303E_JP - ページ 306 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 23.3.1 プログラム メモリのコード プロテク ション テーブル読み出しとテーブル書き込みの命令を使 用して、プログラム メモリの任意の位置の読み出 しと書き込みができます。デバイス ID は、テーブ ル読み出しで読み出しができます。構成レジスタ は、テーブル読み出しとテーブル書き込みの命令を 使用して、読み出しと書き込みができます。 きます。ブロック外の位置から実行されるテーブル 読み出し命令は読み出しが禁止され、結果は一連の 「0」になります。図 23-3 ~図 23-5 に、テーブル書 き込みとテーブル読み出しのプロテクションを示 します。 注: 通常の実行モードでは、CPn ビットには直接の効果 はありません。CPn ビットは、外部からの読み出し と書き込みを禁止します。WRTn 構成ビットが「0」 の場合、ユーザー メモリのブロックを保護できま す。EBTRn ビットはテーブル読み出しを制御しま す。EBTRn ビットが「0」にクリアされているユー ザー メモリのブロックについて、そのブロック内か ら実行されるテーブルの READ 命令は読み出しがで 図 23-3: コード プロテクション ビットの書き込み は、 「1」の状態から「0」にすることのみ ができます。 「0」の状態のビットに「1」 を書き込むことはできません。コード プ ロテクション ビットを「1」に設定するの は、フル チップ消去機能またはブロック 消去機能のみです。フル チップ消去機能 およびブロック消去機能は ICSP または外 部プログラム機能からのみ開始できます。 テーブル書き込み (WRTn) 禁止 Register Values Program Memory Configuration Bit Settings 000000h 0007FFh 000800h TBLPTR = 0008FFh PC = 001FFEh WRTB, EBTRB = 11 WRT0, EBTR0 = 01 TBLWT* 001FFFh 002000h WRT1, EBTR1 = 11 003FFFh 004000h PC = 005FFEh WRT2, EBTR2 = 11 TBLWT* 005FFFh 006000h WRT3, EBTR3 = 11 007FFFh Results: All table writes disabled to Blockn whenever WRTn = 0. 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 307 PIC18F2XK20/4XK20 図 23-4: 外部ブロック テーブル読み出し (EBTRn) 禁止 Register Values Program Memory Configuration Bit Settings 000000h 0007FFh 000800h TBLPTR = 0008FFh WRTB, EBTRB = 11 WRT0, EBTR0 = 10 001FFFh 002000h PC = 003FFEh TBLRD* WRT1, EBTR1 = 11 003FFFh 004000h WRT2, EBTR2 = 11 005FFFh 006000h WRT3, EBTR3 = 11 007FFFh Results: All table reads from external blocks to Blockn are disabled whenever EBTRn = 0. TABLAT register returns a value of ‘0’. 図 23-5: 外部ブロック テーブル読み出し (EBTRn) 許可 Register Values Program Memory Configuration Bit Settings 000000h 0007FFh 000800h TBLPTR = 0008FFh PC = 001FFEh WRTB, EBTRB = 11 WRT0, EBTR0 = 10 TBLRD* 001FFFh 002000h WRT1, EBTR1 = 11 003FFFh 004000h WRT2, EBTR2 = 11 005FFFh 006000h WRT3, EBTR3 = 11 007FFFh Results: Table reads permitted within Blockn, even when EBTRBn = 0. TABLAT register returns the value of the data at the location TBLPTR. DS41303E_JP - ページ 308 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 23.3.2 データ EEPROM のコード プロテク ション CPD と WRTD の 2 つのビットで、データ EEPROM が外部からの読み出しや書き込みから保護されま す。CPD ビットは、データ EEPROM に対する外部 からの読み出しと書き込みを禁止します。WRTD ビットは、データ EEPROM に対する内部と外部か らの書き込みを禁止します。通常動作では、プロテ クション ビットの設定に関係なく、CPU は常にデー タ EEPROM の読み出しができます。 23.3.3 構成レジスタのプロテクション 構成レジスタを書き込みから保護できます。WRTC ビットが、構成レジスタのプロテクションを制御し ます。通常の実行モードでは、WRTC ビットは読み 出し専用です。WRTC に書き込みができるのは、 ICSP または外部プログラム機能のみです。 23.4 ID ロケーション ユーザーがチェックサムやその他のコード識別番 号を格納できる ID ロケーションとして、8 つのメ モリ ロケーション (200000h-200007h) が指定されて い ま す。こ れ ら の ロ ケ ー シ ョ ン は、通 常 実 行 時 (TBLRD および TBLWT の命令を使用 )、およびプロ グラム / 検証時に読み出しと書き込みの両方ができ ます。デバイスのコード プロテクションが有効な ときに、ID ロケーションの読み出しができます。 23.5 マイクロコントローラのインサーキット デバッガ を使用するには、設計で次のピンにインサーキット プログラミングを接続する必要があります。 • MCLR/VPP/RE3 • VDD • VSS • RB7 • RB6 これにより、マイクロチップ社またはサード パー ティの開発ツール会社のインサーキット デバッガ モジュールに接続できます。 23.7 LVP 構成ビットをセットすると、単一電源 ICSP プ ログラミング ( 旧用語は低電源 ICSP プログラミン グ、LVP) が有効になります。単一源原プログラミ ングを有効にすると、MCLR/VPP/RE3 ピンに高電圧 を印加せずにマイクロコントローラのプログラム ができます。ただし、この場合 RB5/KBI1/PGM ピ ンがプログラム モードの制御専用になり、汎用 I/O ピンとしては使用できなくなります。 単一電源プログラミング モードでプログラムする ときには、 通常の実行モードと同様に VDD が MCLR/ VPP/RE3 ピンに印加されます。プログラミング モー ドにするには、VDD を PGM ピンに印加します。 注 1: 高電圧プログラミングは、LVP ビットや PGM ピンの状態には関係なく、VIHH を MCLR ピンに印加することで常に使用 できます。 2: デフォルトでは、単一電源 ICSP は、未 プログラムのデバイス ( マイクロチップ 社の出荷時の状態 )、および消去済みの デバイスで有効になっています。 3: 単一電源プログラミングを有効にする と、RB5 ピンは汎用 I/O ピンとして使用 できなくなります。 4: LVP を有効にしたときには、通常のプロ グラム実行ができるように PGM ピンを VSS に外部からプルダウンします。 インサーキット シリアル プログラ ミング PIC18F2XK20/4XK20 デバイスは、アプリケーショ ン回路でのシリアル プログラミングをサポートし ています。これは、2 本のラインをクロックとデー タに、残り 3 本のラインを電源、アース、プログラ ミング電圧にそれぞれ使用するだけで実現できま す。これにより、未プログラムのデバイスを実装し たボードを製造し、製品の出荷直前にマイクロコン トローラをプログラムできます。また、多くの最新 のファームウェアや、カスタマイズしたファーム ウェアのプログラムもできます。 23.6 単一電源 ICSP のプログラミング インサーキット デバッガ DEBUG 構成ビットを「0」にプログラムすると、イ ンサーキット デバッガの機能が有効になります。こ の機能を MPLAB® IDE とともに使用すると、簡単 なデバッガになります。マイクロコントローラでこ の機能を有効にすると、一部のリソースが通常の用 途に使用できなくなります。表 23-4 に、バックグ ラウンド デバッガに必要なリソースを示します。 表 23-4: デバッガのリソース I/O pins: RB6, RB7 Stack: 2 levels Program Memory: 512 bytes Data Memory: 10 bytes 2009 Microchip Technology Inc. 単一電源 ICSP プログラミング モードを使用しない 場合は、LVP ビットをクリアできます。これによ り、RB5/KBI1/PGM ピンをデジタル I/O ピン RB5 と して使用できます。LVP ビットのセットやクリアが できるのは、標準の高電圧プログラミングを使用 (VIHH を MCLR/VPP/RE3 ピンに印加 ) しているとき のみです。LVP を無効にした場合、標準の高電圧プ ログラミングのみが使用でき、デバイスのプログラ ミングに使用する必要があります。 コード プロテクションが有効になっていないメモ リは、ブロック消去または行ごとの消去で消去でき、 その後規定の VDD で書き込みできます。コード プ ロテクションを有効にしているメモリを消去する場 合は、ブロック消去を使用する必要があります。 Preliminary DS41303E_JP - ページ 309 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 310 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 24.0 命令セットの概要 PIC18F2XK20/4XK20 デバイスは、75 PIC18 コア命令 の標準セット、および再帰コードやソフトウェア ス タックを使用するコードを最適化する新しい 8 つの 命令を含む拡張セットを装備しています。拡張セッ トについては、この節で後述します。 24.1 標準命令セット ® PIC18 の標準命令セットは、以前の PIC MCU の命 令を大幅に強化した一方、PIC® MCU の命令セット からの移行を容易にしています。多くの命令はプロ グラム メモリの 1 ワード (16 ビット ) ですが、プロ グラム メモリの 2 つのロケーションを必要とする 命令が 4 つあります。 単一ワードの各命令は 16 ビット ワードで、命令タ イプを指定するオペコードと、命令の動作を指定す る 1 個以上のオペランドに分けられます。 命令セットは高度に直交し、次の 4 つの基本カテゴ リに分けられます。 • • • • バイト指向命令 ビット指向命令 リテラル演算 制御動作 表 24-2 の PIC18 命令セットの一覧に、バイト指向、 ビット指向、リテラル、および制御の演算を示しま す。表 24-1 に、オペコードのフィールドの説明を 示します。 多くのバイト指向の命令には、次の 3 つのオペラン ドがあります。 1. 2. 3. ファイル レジスタ (「f」で指定 ) 結果の格納先 (「d」で指定 ) アクセスするメモリ (「a」で指定 ) ファイル レジスタ指定文字は、命令によって使用 されるファイル レジスタを指定します。格納先指 定文字「d」は、演算結果を格納する場所を指定し ます。 「d」が「0」の場合、結果は WREG レジスタ に書き込まれます。「d」が「1」の場合、結果は命 令で指定されたファイル レジスタに格納されます。 すべてのビット指向の命令には、次の 3 つのオペラ ンドがあります。 1. 2. 3. ファイル レジスタ (「f」で指定 ) ファイル レジスタ内のビット (「b」で指定 ) アクセスするメモリ (「a」で指定 ) リテラル命令は、次のオペランドのいくつかを使用 できます。 • ファイル レジスタにロードされるリテラル値 (「k」で指定 ) • リテラル値がロードされる FSR レジスタ (「f」で指定 ) • オペランド不要 (「—」で指定 ) 制御命令は、次のオペランドのいくつかを使用でき ます。 • プログラム メモリのアドレス (「n」で指定 ) • CALL または RETURN の命令のモード (「s」で指定 ) • テーブル読み出しまたはテーブル書き込みの 命令のモード (「m」で指定 ) • オペランド不要 (「—」で指定 ) 4 つのダブルワード命令を除いて、すべての命令が 1 ワードです。ダブルワードの命令は、必要な情報 を 32 ビットに収めるためにダブルワードになって います。2 ワード目の上位 4 ビットは「1」です。こ の 2 ワード目 ( それ自体 ) が命令として実行される 場合、NOP として実行されます。 1 ワードの命令はすべて、1 命令サイクルで実行さ れますが、条件テストが真の場合、または命令の実 行結果によりプログラム カウンタが変更される場 合を除きます。これらの場合には、NOP 命令として 実行されるサイクルが追加されるため、実行には 2 命令サイクルかかります。 ダブルワード命令は 2 命令サイクルで実行されます。 1 命令サイクルはオシレータの 4 周期です。した がって、オシレータ周波数が 4 MHz の場合、通常 の命令実行時間は 1 s です。命令の結果によりプロ グラム カウンタが変化した場合、または条件付き テストが真の場合、命令実行時間は 2 s です。 2 ワードの分岐命令 ( 真の場合 ) は、3 s かかります。 図 24-1 に、命令の一般的な形式を示します。すべ ての例で、16 進数を表す表記規則「nnh」を使用し ています。 表 24-2 の命令セット一覧に、マイクロチップ社の アセンブラ (MPASM™) が認識する標準の命令を示 します。 24.1.1 項「標準命令セット」で、個々の命令につい て説明します。 ビット フィールドの指定文字「b」は、演算の影響 を受けるビット数を選択します。一方、ファイル レ ジスタの指定文字「f」は、ビットがあるファイル の番号を表します。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 311 PIC18F2XK20/4XK20 表 24-1: オペコードのフィールドの説明 Field Description a RAM access bit a = 0: RAM location in Access RAM (BSR register is ignored) a = 1: RAM bank is specified by BSR register bbb Bit address within an 8-bit file register (0 to 7). BSR Bank Select Register. Used to select the current RAM bank. C, DC, Z, OV, N ALU Status bits: Carry, Digit Carry, Zero, Overflow, Negative. d Destination select bit d = 0: store result in WREG d = 1: store result in file register f dest Destination: either the WREG register or the specified register file location. f 8-bit Register file address (00h to FFh) or 2-bit FSR designator (0h to 3h). fs 12-bit Register file address (000h to FFFh). This is the source address. fd 12-bit Register file address (000h to FFFh). This is the destination address. GIE Global Interrupt Enable bit. k Literal field, constant data or label (may be either an 8-bit, 12-bit or a 20-bit value). label Label name. mm The mode of the TBLPTR register for the table read and table write instructions. Only used with table read and table write instructions: * No change to register (such as TBLPTR with table reads and writes) *+ Post-Increment register (such as TBLPTR with table reads and writes) *- Post-Decrement register (such as TBLPTR with table reads and writes) Pre-Increment register (such as TBLPTR with table reads and writes) +* n The relative address (2’s complement number) for relative branch instructions or the direct address for CALL/BRANCH and RETURN instructions. PC Program Counter. PCL Program Counter Low Byte. PCH Program Counter High Byte. PCLATH Program Counter High Byte Latch. PCLATU Program Counter Upper Byte Latch. PD Power-down bit. PRODH Product of Multiply High Byte. PRODL Product of Multiply Low Byte. s Fast Call/Return mode select bit s = 0: do not update into/from shadow registers s = 1: certain registers loaded into/from shadow registers (Fast mode) TBLPTR 21-bit Table Pointer (points to a Program Memory location). TABLAT 8-bit Table Latch. TO Time-out bit. TOS Top-of-Stack. u Unused or unchanged. WDT Watchdog Timer. WREG Working register (accumulator). x Don’t care (‘0’ or ‘1’). The assembler will generate code with x = 0. It is the recommended form of use for compatibility with all Microchip software tools. zs 7-bit offset value for indirect addressing of register files (source). 7-bit offset value for indirect addressing of register files (destination). zd { } Optional argument. [text] Indicates an indexed address. (text) The contents of text. [expr]<n> Specifies bit n of the register indicated by the pointer expr. Assigned to. < > Register bit field. In the set of. italics User defined term (font is Courier). DS41303E_JP - ページ 312 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 24-1: 命令の一般的な形式 Byte-oriented file register operations 15 10 9 8 7 OPCODE d a Example Instruction 0 f (FILE #) ADDWF MYREG, W, B d = 0 for result destination to be WREG register d = 1 for result destination to be file register (f) a = 0 to force Access Bank a = 1 for BSR to select bank f = 8-bit file register address Byte to Byte move operations (2-word) 15 12 11 OPCODE 15 0 f (Source FILE #) 12 11 MOVFF MYREG1, MYREG2 0 f (Destination FILE #) 1111 f = 12-bit file register address Bit-oriented file register operations 15 12 11 9 8 7 OPCODE b (BIT #) a 0 f (FILE #) BSF MYREG, bit, B b = 3-bit position of bit in file register (f) a = 0 to force Access Bank a = 1 for BSR to select bank f = 8-bit file register address Literal operations 15 8 7 OPCODE 0 k (literal) MOVLW 7Fh k = 8-bit immediate value Control operations CALL, GOTO and Branch operations 15 8 7 OPCODE 15 0 n<7:0> (literal) 12 11 GOTO Label 0 n<19:8> (literal) 1111 n = 20-bit immediate value 15 8 7 OPCODE 15 S 0 CALL MYFUNC n<7:0> (literal) 12 11 0 n<19:8> (literal) 1111 S = Fast bit 15 OPCODE 15 OPCODE 2009 Microchip Technology Inc. 11 10 0 BRA MYFUNC n<10:0> (literal) 8 7 0 n<7:0> (literal) Preliminary BC MYFUNC DS41303E_JP - ページ 313 PIC18F2XK20/4XK20 表 24-2: PIC18FXXXX 命令セット Mnemonic, Operands Description Cycles 16-Bit Instruction Word MSb LSb Status Affected Notes BYTE-ORIENTED OPERATIONS ADDWF ADDWFC ANDWF CLRF COMF CPFSEQ CPFSGT CPFSLT DECF DECFSZ DCFSNZ INCF INCFSZ INFSNZ IORWF MOVF MOVFF f, d, a f, d, a f, d, a f, a f, d, a f, a f, a f, a f, d, a f, d, a f, d, a f, d, a f, d, a f, d, a f, d, a f, d, a fs, fd MOVWF MULWF NEGF RLCF RLNCF RRCF RRNCF SETF SUBFWB f, a f, a f, a f, d, a f, d, a f, d, a f, d, a f, a f, d, a SUBWF SUBWFB f, d, a f, d, a SWAPF TSTFSZ XORWF f, d, a f, a f, d, a 注 1: 2: 3: 4: Add WREG and f Add WREG and CARRY bit to f AND WREG with f Clear f Complement f Compare f with WREG, skip = Compare f with WREG, skip > Compare f with WREG, skip < Decrement f Decrement f, Skip if 0 Decrement f, Skip if Not 0 Increment f Increment f, Skip if 0 Increment f, Skip if Not 0 Inclusive OR WREG with f Move f 1st word Move fs (source) to fd (destination) 2nd word Move WREG to f Multiply WREG with f Negate f Rotate Left f through Carry Rotate Left f (No Carry) Rotate Right f through Carry Rotate Right f (No Carry) Set f Subtract f from WREG with borrow Subtract WREG from f Subtract WREG from f with borrow Swap nibbles in f Test f, skip if 0 Exclusive OR WREG with f 01da 00da 01da 101a 11da 001a 010a 000a 01da 11da 11da 10da 11da 10da 00da 00da ffff ffff 111a 001a 110a 01da 01da 00da 00da 100a 01da ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff C, DC, Z, OV, N C, DC, Z, OV, N Z, N Z Z, N None None None C, DC, Z, OV, N None None C, DC, Z, OV, N None None Z, N Z, N None 1 1 1 1 1 1 1 1 1 0010 0010 0001 0110 0001 0110 0110 0110 0000 0010 0100 0010 0011 0100 0001 0101 1100 1111 0110 0000 0110 0011 0100 0011 0100 0110 0101 1 1 0101 0101 11da 10da ffff ffff ffff ffff C, DC, Z, OV, N C, DC, Z, OV, N 1, 2 1 1 (2 or 3) 1 0011 0110 0001 10da 011a 10da ffff ffff ffff ffff ffff ffff None None Z, N 4 1, 2 1 1 1 1 1 1 (2 or 3) 1 (2 or 3) 1 (2 or 3) 1 1 (2 or 3) 1 (2 or 3) 1 1 (2 or 3) 1 (2 or 3) 1 1 2 None None C, DC, Z, OV, N C, Z, N Z, N C, Z, N Z, N None C, DC, Z, OV, N 1, 2 1, 2 1,2 2 1, 2 4 4 1, 2 1, 2, 3, 4 1, 2, 3, 4 1, 2 1, 2, 3, 4 4 1, 2 1, 2 1 1, 2 1, 2 1, 2 PORT レジスタの値を、そのレジスタ自体の関数として変更する場合 (MOVF PORTB, 1, 0 など )、対応するピンに表れ る値が使用されます。例えば、入力として設定されているピンのデータ ラッチが「1」で、外部デバイスから Low に駆 動されている場合、そのデータは「0」に上書きされます。 この命令を TMR0 レジスタで実行 ( 可能な場合には d に 1 を指定 ) すると、プリスケーラが TMR0 に割り当てられてい るときにはプリスケーラがクリアされます。 Program Counter (PC: プログラム カウンタ ) が変更された場合、または条件付きテストの結果が真の場合、命令実行には 2 サイクルが必要です。2 サイクル目は、NOP として実行されます。 一部の命令のサイズは 2 ワードです。命令の 1 ワード目の 16 ビットに含まれる情報が取得されない場合、命令の 2 ワー ド目は NOP として実行されます。これにより、プログラム メモリのすべてのロケーションに有効な命令が確保されます。 DS41303E_JP - ページ 314 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 24-2: PIC18FXXXX 命令セット ( 続き ) Mnemonic, Operands Description Cycles 16-Bit Instruction Word MSb LSb Status Affected Notes BIT-ORIENTED OPERATIONS BCF BSF BTFSC BTFSS BTG f, b, a f, b, a f, b, a f, b, a f, d, a Bit Clear f Bit Set f Bit Test f, Skip if Clear Bit Test f, Skip if Set Bit Toggle f 1 1 1 (2 or 3) 1 (2 or 3) 1 1001 1000 1011 1010 0111 bbba bbba bbba bbba bbba ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff None None None None None 1 (2) 1 (2) 1 (2) 1 (2) 1 (2) 1 (2) 1 (2) 2 1 (2) 2 0010 0110 0011 0111 0101 0001 0100 0nnn 0000 110s kkkk 0000 0000 1111 kkkk 0000 xxxx 0000 0000 1nnn 0000 0000 nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn kkkk kkkk 0000 0000 kkkk kkkk 0000 xxxx 0000 0000 nnnn 1111 0001 nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn kkkk kkkk 0100 0111 kkkk kkkk 0000 xxxx 0110 0101 nnnn 1111 000s None None None None None None None None None None 1 1 1 1 2 1 2 1110 1110 1110 1110 1110 1110 1110 1101 1110 1110 1111 0000 0000 1110 1111 0000 1111 0000 0000 1101 0000 0000 2 2 1 0000 0000 0000 1100 0000 0000 kkkk 0001 0000 kkkk 001s 0011 1, 2 1, 2 3, 4 3, 4 1, 2 CONTROL OPERATIONS BC BN BNC BNN BNOV BNZ BOV BRA BZ CALL n n n n n n n n n n, s CLRWDT DAW GOTO — — n NOP NOP POP PUSH RCALL RESET RETFIE — — — — n s Branch if Carry Branch if Negative Branch if Not Carry Branch if Not Negative Branch if Not Overflow Branch if Not Zero Branch if Overflow Branch Unconditionally Branch if Zero Call subroutine 1st word 2nd word Clear Watchdog Timer Decimal Adjust WREG Go to address 1st word 2nd word No Operation No Operation Pop top of return stack (TOS) Push top of return stack (TOS) Relative Call Software device Reset Return from interrupt enable RETLW RETURN SLEEP k s — Return with literal in WREG Return from Subroutine Go into Standby mode 注 1: 2: 3: 4: 1 1 2 TO, PD C None None None None None None All GIE/GIEH, PEIE/GIEL None None TO, PD 4 PORT レジスタの値を、そのレジスタ自体の関数として変更する場合 (MOVF PORTB, 1, 0 など )、対応するピンに表れ る値が使用されます。例えば、入力として設定されているピンのデータ ラッチが「1」で、外部デバイスから Low に駆 動されている場合、そのデータは「0」に上書きされます。 この命令を TMR0 レジスタで実行 ( 可能な場合には d に 1 を指定 ) すると、プリスケーラが TMR0 に割り当てられてい るときにはプリスケーラがクリアされます。 Program Counter (PC: プログラム カウンタ ) が変更された場合、または条件付きテストの結果が真の場合、命令実行には 2 サイクルが必要です。2 サイクル目は、NOP として実行されます。 一部の命令のサイズは 2 ワードです。命令の 1 ワード目の 16 ビットに含まれる情報が取得されない場合、命令の 2 ワー ド目は NOP として実行されます。これにより、プログラム メモリのすべてのロケーションに有効な命令が確保されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 315 PIC18F2XK20/4XK20 表 24-2: PIC18FXXXX 命令セット ( 続き ) Mnemonic, Operands Description Cycles 16-Bit Instruction Word MSb LSb Status Affected Notes LITERAL OPERATIONS ADDLW ANDLW IORLW LFSR k k k f, k MOVLB MOVLW MULLW RETLW SUBLW XORLW k k k k k k Add literal and WREG AND literal with WREG Inclusive OR literal with WREG Move literal (12-bit) 2nd word to FSR(f) 1st word Move literal to BSR<3:0> Move literal to WREG Multiply literal with WREG Return with literal in WREG Subtract WREG from literal Exclusive OR literal with WREG 1 1 1 2 1 1 1 2 1 1 0000 0000 0000 1110 1111 0000 0000 0000 0000 0000 0000 1111 1011 1001 1110 0000 0001 1110 1101 1100 1000 1010 kkkk kkkk kkkk 00ff kkkk 0000 kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk C, DC, Z, OV, N Z, N Z, N None 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1000 1001 1010 1011 1100 1101 1110 1111 None None None None None None None None None None None None C, DC, Z, OV, N Z, N DATA MEMORY PROGRAM MEMORY OPERATIONS TBLRD* TBLRD*+ TBLRD*TBLRD+* TBLWT* TBLWT*+ TBLWT*TBLWT+* 注 1: 2: 3: 4: Table Read Table Read with post-increment Table Read with post-decrement Table Read with pre-increment Table Write Table Write with post-increment Table Write with post-decrement Table Write with pre-increment 2 2 PORT レジスタの値を、そのレジスタ自体の関数として変更する場合 (MOVF PORTB, 1, 0 など )、対応するピンに表れ る値が使用されます。例えば、入力として設定されているピンのデータ ラッチが「1」で、外部デバイスから Low に駆 動されている場合、そのデータは「0」に上書きされます。 この命令を TMR0 レジスタで実行 ( 可能な場合には d に 1 を指定 ) すると、プリスケーラが TMR0 に割り当てられてい るときにはプリスケーラがクリアされます。 Program Counter (PC: プログラム カウンタ ) が変更された場合、または条件付きテストの結果が真の場合、命令実行には 2 サイクルが必要です。2 サイクル目は、NOP として実行されます。 一部の命令のサイズは 2 ワードです。命令の 1 ワード目の 16 ビットに含まれる情報が取得されない場合、命令の 2 ワー ド目は NOP として実行されます。これにより、プログラム メモリのすべてのロケーションに有効な命令が確保されます。 DS41303E_JP - ページ 316 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 24.1.1 標準命令セット ADDLW ADD literal to W ADDWF ADD W to f シンタックス : ADDLW シンタックス : ADDWF オペランド : 0 k 255 オペランド : 実行内容 : (W) + k W 影響を受ける ステータス : N, OV, C, DC, Z 0 f 255 d [0,1] a [0,1] 実行内容 : (W) + (f) dest 影響を受ける ステータス : N, OV, C, DC, Z 0000 エンコード : 説明 : k 1111 kkkk kkkk W の内容が 8 ビットのリテラル「k」に 加算され、結果が W に入れられます。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード 説明 : Q2 リテラル「k」 データを を読み出す 処理 ADDLW 例: 命令実行前 W = 命令実行後 W = Q3 0010 エンコード : 01da ffff ffff W をレジスタ「f」に加算します。「d」 が「0」の場合、結果は W に書き込まれ ます。「d」が「1」の場合、結果はレジ スタ「f」に書き戻されます(デフォルト)。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 Q4 Wに 書き込む 15h 10h 25h ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード Q2 ADDWF 命令実行前 W REG 命令実行後 W REG Q3 レジスタ「f」 データを を読み出す 処理 例: 注: f {,d {,a}} = = 17h 0C2h = = 0D9h 0C2h Q4 格納先に 書き込む REG, 0, 0 PIC18 の命令はすべて、記号アドレス指定で使用できるオプションのラベル引き数を、命令ニーモニッ クの前に付けることができます。ラベルを使用する場合、命令の形式は「( ラベル ) 命令 引き数 (1 つ 以上 )」になります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 317 PIC18F2XK20/4XK20 ADDWFC ADD W and CARRY bit to f ANDLW AND literal with W シンタックス : ADDWFC シンタックス : ANDLW オペランド : 0 f 255 d [0,1] a [0,1] オペランド : 0 k 255 実行内容 : (W) .AND. k W 実行内容 : (W) + (f) + (C) dest 影響を受ける ステータス : N, Z 影響を受ける ステータス : N,OV, C, DC, Z 0010 エンコード : 説明 : f {,d {,a}} 00da ffff ffff W、キャリー フラグ、およびデータ メ モリのロケーション「f」を加算しま す。 「d」が「0」の場合、結果は W に 入れられます。「d」が「1」の場合、 結果はデータ メモリのロケーション 「f」に書き込まれます。 「a」が「0」の場合、アクセス バンク が選択されます。 「a」が「1」の場合、 GPR バンクの選択に BSR が使用され ます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オ フセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード : 1 サイクル : 1 1/4 サイクルの動作 : Q1 Decode Q2 Q3 レジスタ「f」 データを を読み出す 処理 ADDWFC 例: 命令実行前 CARRY bit REG W 命令実行後 CARRY bit REG W = = = 1 02h 4Dh = = = 0 02h 50h DS41303E_JP - ページ 318 0000 エンコード : k 1011 kkkk kkkk 説明 : W と 8 ビットのリテラル「k」を AND 演 算します。結果は W に入れられます。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード Q2 リテラル「k」 データを を読み出す 処理 ANDLW 例: 命令実行前 W 命令実行後 W Q3 = A3h = 03h Q4 Wに 書き込む 05Fh Q4 格納先に 書き込む REG, 0, 1 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 ANDWF AND W with f BC Branch if Carry シンタックス : ANDWF シンタックス : BC オペランド : 0 f 255 d [0,1] a [0,1] オペランド : -128 n 127 実行内容 : if CARRY bit is ‘1’ (PC) + 2 + 2n PC 影響を受ける ステータス : なし f {,d {,a}} 実行内容 : (W) .AND. (f) dest 影響を受ける ステータス : N, Z 説明 : 01da ffff ffff W の内容をレジスタ「f」と AND 演算し ます。「d」が「0」の場合、結果は W に書き込まれます。「d」が「1」の場 合、結果はレジスタ「f」に書き戻され ます ( デフォルト )。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のとき には常にこの命令がインデックス付き リテラル オフセット アドレス指定モー ドで動作します。詳細については、24.2.3 項「イ ンデ ッ クス 付 きリ テ ラル オ フ セット モードのバイト指向命令とビッ ト指向命令」を参照してください。 ワード数 : 1 サイクル数 : 1 Q1 デコード レジスタ「f」を 読み出す ANDWF 例: = = 17h C2h = = 02h C2h Q4 データを 処理 格納先に 書き込む 1 サイクル数 : 1(2) 1/4 サイクルの動作 : ジャンプする場合 : Q1 デコード Q2 動作なし 命令実行前 PC 命令実行後 If CARRY PC If CARRY PC PC に書き込 む 動作なし Q3 Q4 Q2 HERE Q4 動作なし リテラル「n」 データを を読み出す 処理 例: Preliminary Q3 リテラル「n」 データを を読み出す 処理 動作なし REG, 0, 0 2009 Microchip Technology Inc. nnnn ワード数 : デコード Q3 nnnn CARRY ビットが「1」の場合、プログ ラムが分岐します。 2 の補数「2n」を PC に加算します。PC は次の命令をフェッチするためにイン クリメントされているので、新しいアド レスは「PC + 2 + 2n」になります。これ により、2 サイクルの命令になります。 ジャンプしない場合 : Q1 Q2 0010 説明 : 1/4 サイクルの動作 : 命令実行前 W REG 命令実行後 W REG 1110 エンコード : 0001 エンコード : n BC 動作なし 5 = address (HERE) = = = = 1; address (HERE + 12) 0; address (HERE + 2) DS41303E_JP - ページ 319 PIC18F2XK20/4XK20 BCF Bit Clear f BN Branch if Negative シンタックス : BCF シンタックス : BN オペランド : 0 f 255 0b7 a [0,1] オペランド : -128 n 127 実行内容 : if NEGATIVE bit is ‘1’ (PC) + 2 + 2n PC 影響を受ける ステータス : なし f, b {,a} 実行内容 : 0 f<b> 影響を受ける ステータス : なし 説明 : bbba ffff ffff レジスタ「f」のビット「b」をクリア します。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 1 サイクル数 : 1 Q1 例: Q2 BCF 命令実行前 FLAG_REG = 命令実行後 FLAG_REG = DS41303E_JP - ページ 320 FLAG_REG, 1 サイクル数 : 1(2) 1/4 サイクルの動作 : ジャンプする場合 : Q1 Q2 動作なし Q4 デコード 例: 47h Preliminary PC に 書き込む 動作なし Q3 Q4 Q2 HERE Q4 動作なし リテラル「n」 データを を読み出す 処理 命令実行前 PC 命令実行後 If NEGATIVE PC If NEGATIVE PC C7h Q3 リテラル「n」 データを を読み出す 処理 レジスタ「f」 に書き込む 7, 0 nnnn ワード数 : ジャンプしない場合 : Q1 Q3 nnnn NEGATIVE ビットが「1」の場合、プ ログラムが分岐します。 2 の補数「2n」を PC に加算します。PC は次の命令をフェッチするためにイン クリメントされているので、新しいアド レスは「PC + 2 + 2n」になります。これ により、2 サイクルの命令になります。 動作なし レジスタ「f」 データを を読み出す 処理 0110 説明 : デコード 1/4 サイクルの動作 : デコード 1110 エンコード : 1001 エンコード : n BN 動作なし Jump = address (HERE) = = = = 1; address (Jump) 0; address (HERE + 2) 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 BNC Branch if Not Carry BNN Branch if Not Negative シンタックス : BNC シンタックス : BNN n オペランド : -128 n 127 n オペランド : -128 n 127 実行内容 : if CARRY bit is ‘0’ (PC) + 2 + 2n PC 実行内容 : if NEGATIVE bit is ‘0’ (PC) + 2 + 2n PC 影響を受ける ステータス : なし 影響を受ける ステータス : なし 1110 エンコード : 0011 nnnn nnnn 1110 エンコード : 0111 nnnn nnnn 説明 : CARRY ビットが「0」の場合、プログ ラムが分岐します。 2 の補数「2n」を PC に加算します。PC は次の命令をフェッチするためにイン クリメントされているので、新しいアド レスは「PC + 2 + 2n」になります。これ により、2 サイクルの命令になります。 説明 : NEGATIVE ビットが「0」の場合、プ ログラムが分岐します。 2 の補数「2n」を PC に加算します。PC は次の命令をフェッチするためにイン クリメントされているので、新しいアド レスは「PC + 2 + 2n」になります。これ により、2 サイクルの命令になります。 ワード数 : 1 ワード数 : 1 サイクル数 : 1(2) サイクル数 : 1(2) 1/4 サイクルの動作 : ジャンプする場合 : Q1 デコード Q2 リテラル「n」 データを を読み出す 処理 動作なし 動作なし ジャンプしない場合 : Q1 デコード Q3 動作なし Q2 HERE 例: 命令実行前 PC 命令実行後 If CARRY PC If CARRY PC Q4 PC に 書き込む BNC 動作なし Q4 動作なし デコード Jump address (HERE) = = = = 0; address (Jump) 1; address (HERE + 2) 例: 動作なし PC に 書き込む 動作なし Q3 Q4 Q2 HERE Q4 動作なし リテラル「n」 データを を読み出す 処理 命令実行前 PC 命令実行後 If NEGATIVE PC If NEGATIVE PC Preliminary Q3 リテラル「n」 データを を読み出す 処理 ジャンプしない場合 : Q1 = 2009 Microchip Technology Inc. デコード Q2 動作なし Q3 リテラル「n」 データを を読み出す 処理 1/4 サイクルの動作 : ジャンプする場合 : Q1 BNN 動作なし Jump = address (HERE) = = = = 0; address (Jump) 1; address (HERE + 2) DS41303E_JP - ページ 321 PIC18F2XK20/4XK20 BNOV Branch if Not Overflow BNZ Branch if Not Zero シンタックス : BNOV n シンタックス : BNZ n オペランド : -128 n 127 オペランド : -128 n 127 実行内容 : if OVERFLOW bit is ‘0’ (PC) + 2 + 2n PC 実行内容 : if ZERO bit is ‘0’ (PC) + 2 + 2n PC 影響を受ける ステータス : なし 影響を受ける ステータス : なし 1110 エンコード : 0101 nnnn nnnn 1110 エンコード : 0001 nnnn nnnn 説明 : OVERFLOW ビットが「0」の場合、プ ログラムが分岐します。 2 の補数「2n」を PC に加算します。PC は次の命令をフェッチするためにイン クリメントされているので、新しいアド レスは「PC + 2 + 2n」になります。これ により、2 サイクルの命令になります。 説明 : ZERO ビットが「0」の場合、プログラ ムが分岐します。 2 の補数「2n」を PC に加算します。PC は次の命令をフェッチするためにイン クリメントされているので、新しいアド レスは「PC + 2 + 2n」になります。これ により、2 サイクルの命令になります。 ワード数 : 1 ワード数 : 1 サイクル数 : 1(2) サイクル数 : 1(2) 1/4 サイクルの動作 : ジャンプする場合 : Q1 デコード 動作なし Q2 リテラル「n」 データを を読み出す 処理 動作なし ジャンプしない場合 : Q1 デコード 例: Q3 Q2 動作なし HERE 命令実行前 PC = 命令実行後 If OVERFLOW = PC = If OVERFLOW = PC = DS41303E_JP - ページ 322 Q4 PC に 書き込む デコード Q2 動作なし Q4 ジャンプしない場合 : Q1 動作なし デコード BNOV Jump 命令実行前 PC 命令実行後 If ZERO PC If ZERO PC address (HERE) 0; address (Jump) 1; address (HERE + 2) Preliminary 動作なし Q4 PC に 書き込む 動作なし 動作なし Q3 Q4 Q2 リテラル「n」 データを を読み出す 処理 HERE 例: Q3 リテラル「n」 データを を読み出す 処理 動作なし Q3 リテラル「n」 データを を読み出す 処理 1/4 サイクルの動作 : ジャンプする場合 : Q1 BNZ 動作なし Jump = address (HERE) = = = = 0; address (Jump) 1; address (HERE + 2) 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 BRA Unconditional Branch BSF Bit Set f シンタックス : BRA シンタックス : BSF f, b {,a} オペランド : -1024 n 1023 オペランド : 0 f 255 0b7 a [0,1] 実行内容 : 1 f<b> 影響を受ける ステータス : なし n 実行内容 : (PC) + 2 + 2n PC 影響を受ける ステータス : なし 1101 エンコード : 説明 : 0nnn nnnn nnnn 2 の補数「2n」を PC に加算します。PC は次の命令をフェッチするためにインク リメントされているので、新しいアドレ スは「PC + 2 + 2n」になります。これに より、2 サイクルの命令になります。 ワード数 : 1 サイクル数 : 2 説明 : Q1 動作なし Q2 Q3 リテラル「n」 データを を読み出す 処理 動作なし 動作なし HERE 例: 命令実行前 PC 命令実行後 PC BRA Jump = address (HERE) = address (Jump) Q4 PC に 書き込む 動作なし ワード数 : 1 サイクル数 : ffff ffff 1 1/4 サイクルの動作 : Q1 デコード Q2 BSF 命令実行前 FLAG_REG 命令実行後 FLAG_REG Preliminary Q3 レジスタ「f」 データを を読み出す 処理 例: 2009 Microchip Technology Inc. bbba レジスタ「f」のビット「b」をセット します。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 1/4 サイクルの動作 : デコード 1000 エンコード : Q4 レジスタ「f」 に書き込む FLAG_REG, 7, 1 = 0Ah = 8Ah DS41303E_JP - ページ 323 PIC18F2XK20/4XK20 BTFSC Bit Test File, Skip if Clear BTFSS Bit Test File, Skip if Set シンタックス : BTFSC f, b {,a} シンタックス : BTFSS f, b {,a} オペランド : 0 f 255 0b7 a [0,1] オペランド : 0 f 255 0b<7 a [0,1] 実行内容 : skip if (f<b>) = 0 実行内容 : skip if (f<b>) = 1 影響を受ける ステータス : なし 影響を受ける ステータス : なし 1011 エンコード : 説明 : bbba ffff ffff レジスタ「f」のビット「b」が「0」の場 合、次の命令をスキップします。ビット 「b」が「0」の場合、現在の命令の実行 中にフェッチされた次の命令を破棄し、 代わりに NOP を実行して、2 サイクルの 命令にします。 「a」が「0」の場合、アクセス バンクが選 択されます。 「a」が「1」の場合、GPR バ ンクの選択に BSR が使用されます。 「a」が「0」で拡張命令セットが有効の 場合、f 95 (5Fh) のときには常にこの命 令はインデックス付きリテラル オフセッ ト アドレス指定モードで実行されます。 詳細については、24.2.3 項「インデック ス付きリテラル オフセット モードのバイ ト指向命令とビット指向命令」を参照し てください。 ワード数 : 1 サイクル数 : 1(2) 注: Q2 Q3 レジスタ「f」 データを処理 を読み出す ffff ffff レジスタ「f」のビット「b」が「1」の 場合、次の命令をスキップします。ビッ ト「b」が「1」の場合、現在の命令の実 行中にフェッチされた次の命令を破棄 し、代わりに NOP を実行して、2 サイク ルの命令にします。 「a」が「0」の場合、アクセス バンクが選 択されます。 「a」が「1」の場合、GPR バ ンクの選択に BSR が使用されます。 「a」が「0」で拡張命令セットが有効の 場合、f 95 (5Fh) のときには常にこの命 令はインデックス付きリテラル オフセッ ト アドレス指定モードで実行されます。 詳細については、24.2.3 項「インデック ス付きリテラル オフセット モードのバ イト指向命令とビット指向命令」を参照 してください。 ワード数 : 1 サイクル数 : 1(2) 注: Q4 Q1 動作なし デコード スキップする場合 : スキップする場合は 3 サイクルで、 その後 2 ワードの命令になります。 Q2 Q3 Q4 レジスタ「f」 データを を読み出す 処理 動作なし スキップする場合 : Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし スキップして 2 ワードの命令がある場合、 Q1 Q2 Q3 例: bbba 1/4 サイクルの動作 : Q1 デコード 説明 : スキップする場合は 3 サイクルで、 その後 2 ワードの命令になります。 1/4 サイクルの動作 : 1010 エンコード : Q4 Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし スキップの後 2 ワードの命令がある場合 : Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし HERE FALSE TRUE 命令実行前 PC 命令実行後 If FLAG<1> PC If FLAG<1> PC BTFSC : : FLAG, 1, 0 = address (HERE) = = = = 0; address (TRUE) 1; address (FALSE) DS41303E_JP - ページ 324 例: HERE FALSE TRUE 命令実行前 PC 命令実行後 If FLAG<1> PC If FLAG<1> PC Preliminary BTFSS : : FLAG, 1, 0 = address (HERE) = = = = 0; address (FALSE) 1; address (TRUE) 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 BTG Bit Toggle f BOV Branch if Overflow シンタックス : BTG f, b {,a} シンタックス : BOV n オペランド : 0 f 255 0b<7 a [0,1] オペランド : -128 n 127 実行内容 : if OVERFLOW bit is ‘1’ (PC) + 2 + 2n PC 影響を受ける ステータス : なし 実行内容 : (f<b>) f<b> 影響を受ける ステータス : なし 説明 : bbba ffff ffff データ メモリ ロケーション「f」の ビット「b」を反転します。 「a」が「0」の場合、アクセス バンク が選択されます。「a」が「1」の場合、 GPR バンクの選択に BSR が使用され ます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 1 サイクル数 : 1 Q1 命令実行前 : PORTC 命令実行後 : PORTC nnnn nnnn OVERFLOW ビットが「1」の場合、プ ログラムが分岐します。 2 の補数「2n」を PC に加算します。PC は次の命令をフェッチするためにイン クリメントされているので、新しいアド レスは「PC + 2 + 2n」になります。これ により、2 サイクルの命令になります。 ワード数 : 1 サイクル数 : 1(2) 1/4 サイクルの動作 : ジャンプする場合 : Q1 デコード 動作なし Q2 Q3 PORTC, 0111 0101 [75h] = 0110 0101 [65h] デコード レジスタ「f」 に書き込む 4, 0 = 2009 Microchip Technology Inc. Q1 Q4 レジスタ「f」 データを を読み出す 処理 BTG 例: 0100 説明 : Q2 Q3 リテラル「n」 データを を読み出す 処理 動作なし 動作なし Q4 PC に 書き込む 動作なし ジャンプしない場合 : 1/4 サイクルの動作 : デコード 1110 エンコード : 0111 エンコード : 例: Q2 HERE 命令実行前 PC = 命令実行後 If OVERFLOW = PC = If OVERFLOW = PC = Preliminary Q3 リテラル「n」 データを を読み出す 処理 BOV Q4 動作なし Jump address (HERE) 1; address (Jump) 0; address (HERE + 2) DS41303E_JP - ページ 325 PIC18F2XK20/4XK20 BZ Branch if Zero CALL Subroutine Call シンタックス : BZ シンタックス : CALL k {,s} オペランド : -128 n 127 オペランド : 実行内容 : if ZERO bit is ‘1’ (PC) + 2 + 2n PC 0 k 1048575 s [0,1] 実行内容 : (PC) + 4 TOS, k PC<20:1>, if s = 1 (W) WS, (Status) STATUSS, (BSR) BSRS 影響を受ける ステータス : なし 影響を受ける ステータス : n なし 1110 エンコード : 説明 : 0000 nnnn nnnn ZERO ビットが「1」の場合、プログラ ムが分岐します。 2 の補数「2n」を PC に加算します。次 の命令をフェッチするために PC がイ ンクリメントされるので、新しいアド レスは「PC + 2 + 2n」になります。こ れにより、2 サイクルの命令になりま す。 ワード数 : 1 サイクル数 : 1(2) 1/4 サイクルの動作 : ジャンプする場合 : Q1 デコード 動作なし Q2 動作なし ジャンプしない場合 : Q1 デコード Q3 リテラル「n」 データを を読み出す 処理 Q3 Q4 動作なし 命令実行前 PC 命令実行後 If ZERO PC If ZERO PC BZ address (HERE) = = = = 1; address (Jump) 0; address (HERE + 2) 2 サイクル数 : 2 1/4 サイクルの動作 : デコード Q2 動作なし 動作なし HERE 例: Preliminary Q3 Q4 リテラル「k」 PC を リテラル「k」 <7:0> を読み スタックに <19:8> を読 出す プッシュ み出し、PC に書き込む 命令実行前 PC 命令実行後 PC TOS WS BSRS STATUSS DS41303E_JP - ページ 326 kkkk0 kkkk8 ワード数 : Jump = k7kkk kkkk 2 MB のメモリ範囲全体のサブルーチン 呼び出しです。最初に、リターン アド レス (PC + 4) をリターン スタックに プッシュします。「s」= 1 の場合、W、 STATUS、および BSR のレジスタも、 対応するシャドウ レジスタである WS、 STATUSS、および BSRS のレジスタに プッシュします。「s」= 0 の場合、更新 は発生しません ( デフォルト )。その 後、20 ビットの値「k」を PC<20:1> に ロードします。 CALL は、2 サイクル の命令です。 Q1 HERE 例: 110s k19kkk 説明 : Q4 動作なし リテラル「n」 データを を読み出す 処理 1110 1111 PC に 書き込む 動作なし Q2 エンコード : 1st word (k<7:0>) 2nd word(k<19:8>) 動作なし CALL 動作なし THERE, 1 = address (HERE) = = = = = address (THERE) address (HERE + 4) W BSR Status 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 CLRF Clear f CLRWDT Clear Watchdog Timer シンタックス : CLRF f {,a} シンタックス : CLRWDT オペランド : 0 f 255 a [0,1] オペランド : なし 000h f 1Z 実行内容 : 実行内容 : 影響を受ける ステータス : Z 000h WDT, 000h WDT postscaler, 1 TO, 1 PD 影響を受ける ステータス : TO, PD 0110 エンコード : 説明 : 101a ffff ffff 指定したレジスタの内容をクリアし ます。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 1 サイクル数 : 1 デコード Q3 レジスタ「f」 データを を読み出す 処理 CLRF 例: 命令実行前 FLAG_REG 命令実行後 FLAG_REG 0000 0100 マをリセットします。WDT のプリス ケーラもリセットします。ステータス ビット TO および PD をセットします。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : 例: Q2 0000 CLRWDT 命令は、ウォッチドッグ タイ 説明 : 1/4 サイクルの動作 : Q1 0000 エンコード : Q4 レジスタ「f」 に書き込む Q1 Q2 Q3 Q4 デコード 動作なし データを 処理 動作なし CLRWDT 命令実行前 WDT カウンタ 命令実行後 WDT カウンタ WDT Postscaler TO PD = ? = = = = 00h 0 1 1 FLAG_REG, 1 = 5Ah = 00h 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 327 PIC18F2XK20/4XK20 COMF Complement f CPFSEQ Compare f with W, skip if f = W シンタックス : COMF シンタックス : CPFSEQ オペランド : 0 f 255 a [0,1] 実行内容 : (f) – (W), skip if (f) = (W) ( 符号なし比較 ) 影響を受ける ステータス : なし f {,d {,a}} 0 f 255 d [0,1] a [0,1] オペランド : 実行内容 : (f) dest 影響を受ける ステータス : N, Z 0001 エンコード : 説明 : 11da ffff ffff レジスタ「f」の内容の補数を取りま す。 「d」が「0」の場合、結果は W に 書き込まれます。 「d」が「1」の場合、 結果はレジスタ「f」に書き戻されます ( デフォルト )。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 1 サイクル数 : 1 デコード 説明 : 1(2) 注: サイクル数 : Q2 Q3 レジスタ「f」 データを を読み出す 処理 Q4 格納先に 書き込む 命令実行前 REG 命令実行後 REG W = 13h = = 13h ECh ffff ffff スキップする場合は 3 サイクル で、その後 2 ワードの命令にな ります。 1/4 サイクルの動作 : Q1 COMF 例: 001a 符号なし減算を実行して、データ メモ リ ロケーション「f」の内容と W の内 容を比較します。 「f」= W の場合、フェッチした命令を破 棄し、代わりに NOP を実行して、2 サ イクルの命令にします。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 1 ワード数 : 1/4 サイクルの動作 : Q1 0110 エンコード : f {,a} REG, 0, 0 デコード Q2 Q3 レジスタ「f」 データを を読み出す 処理 Q4 動作なし スキップする場合 : Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし スキップの後 2 ワードの命令がある場合 : Q1 Q2 Q3 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし HERE NEQUAL EQUAL 例: 命令実行前 PC Address W REG 命令実行後 If REG PC If REG PC DS41303E_JP - ページ 328 Preliminary Q4 動作なし CPFSEQ REG, 0 : : = = = HERE ? ? = = = W; Address (EQUAL) W; Address (NEQUAL) 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 CPFSGT Compare f with W, skip if f > W CPFSLT Compare f with W, skip if f < W シンタックス : CPFSGT f {,a} シンタックス : CPFSLT オペランド : 0 f 255 a [0,1] オペランド : 0 f 255 a [0,1] 実行内容 : (f) –W), skip if (f) > (W) ( 符号なし比較 ) 実行内容 : (f) –W), skip if (f) < (W) ( 符号なし比較 ) 影響を受ける ステータス : なし 影響を受ける ステータス : なし 0110 エンコード : 説明 : 010a ffff ffff 符号なし減算を実行して、データ メモ リ ロケーション「f」の内容と W の内 容を比較します。 「f」の内容が WREG の内容よりも大き い場合、フェッチした命令を破棄し、 代わりに NOP を実行して、2 サイクル の命令にします。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 1 ワード数 : 1(2) 注: サイクル : 説明 : ワード数 : 1 サイクル数 : 1(2) 注: デコード Q2 Q3 レジスタ「f」 データを を読み出す 処理 Q4 動作なし Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし HERE NGREATER GREATER CPFSGT REG, 0 : : 例: 命令実行前 PC W 命令実行後 If REG PC If REG PC = = Address (HERE) ? = = W; Address (GREATER) W; Address (NGREATER) 2009 Microchip Technology Inc. Q2 Q3 レジスタ「f」 データを を読み出す 処理 Q4 動作なし Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし スキップの後 2 ワードの命令がある場合 : Q1 Q2 Q3 Preliminary Q4 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし HERE NLESS LESS Q4 動作なし スキップする場合は 3 サイクル で、その後 2 ワードの命令にな ります。 動作なし 例: スキップの後 2 ワードの命令がある場合 : Q1 Q2 Q3 ffff スキップする場合 : スキップする場合 : Q1 ffff 1/4 サイクルの動作 : 1/4 サイクルの動作 : Q1 000a 符号なし減算を実行して、データ メモ リ ロケーション「f」の内容と W の内 容を比較します。 「f」の内容が W の内容よりも小さい場 合は、フェッチした命令を破棄し、代 わりに NOP を実行して、2 サイクルの 命令にします。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 デコード スキップする場合は 3 サイクル で、その後 2 ワードの命令にな ります。 0110 エンコード : f {,a} 命令実行前 PC W 命令実行後 If REG PC If REG PC CPFSLT REG, 1 : : = = Address (HERE) ? < = = W; Address (LESS) W; Address (NLESS) DS41303E_JP - ページ 329 PIC18F2XK20/4XK20 DAW Decimal Adjust W Register DECF Decrement f シンタックス : DAW シンタックス : DECF f {,d {,a}} オペランド : なし オペランド : 実行内容 : If [W<3:0> > 9] or [DC = 1] then (W<3:0>) + 6 W<3:0>; else (W<3:0>) W<3:0>; 0 f 255 d [0,1] a [0,1] 実行内容 : (f) – 1 dest 影響を受ける ステータス : C, DC, N, OV, Z If [W<7:4> + DC > 9] or [C = 1] then (W<7:4>) + 6 + DC W<7:4>; else (W<7:4>) + DC W<7:4> 説明 : 0000 エンコード : 説明 : 0000 0000 0111 DAW は、以前の 2 つの変数 ( いずれも パック BCD 形式 ) の加算結果である W の 8 ビット値を調整し、パック BCD の 正しい結果を生成します。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 Q2 Q3 Q4 デコード レジスタ W を読み出す データを 処理 Wに 書き込む 例 1: DAW ワード数 : 1 サイクル数 : 1 W C DC A5h 0 0 = = = 05h 1 0 = = = CEh 0 0 = = = 34h 1 0 デコード 命令実行前 W C DC DS41303E_JP - ページ 330 DECF 命令実行前 CNT Z 命令実行後 CNT Z Preliminary Q3 レジスタ「f」 データを を読み出す 処理 例: 例 2: W C DC 命令実行後 Q2 Q1 = = = ffff ffff 1/4 サイクルの動作 : 命令実行前 W C DC 命令実行後 01da レジスタ「f」をデクリメントします。 「d」が「0」の場合、結果は W に書き 込まれます。「d」が「1」の場合、結果 はレジスタ「f」に書き戻されます ( デフォルト )。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 C 影響を受ける ステータス : 0000 エンコード : = = 01h 0 = = 00h 1 CNT, Q4 格納先に 書き込む 1, 0 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 DECFSZ Decrement f, skip if 0 DCFSNZ Decrement f, skip if not 0 シンタックス : DECFSZ f {,d {,a}} シンタックス : DCFSNZ f {,d {,a}} オペランド : 0 f 255 d [0,1] a [0,1] オペランド : 0 f 255 d [0,1] a [0,1] 実行内容 : (f) – 1 dest, skip if result = 0 実行内容 : (f) – 1 dest, skip if result 0 影響を受ける ステータス : なし 影響を受ける ステータス : なし 0010 エンコード : 説明 : 11da ffff ffff レジスタ「f」の内容をデクリメントし ます。「d」が「0」の場合、結果は W に入れられます。 「d」が「1」の場合、 結果はレジスタ「f」に書き戻されます ( デフォルト )。 結果が「0」の場合、既にフェッチし た次の命令を破棄し、代わりに NOP を 実行して 2 サイクルの命令にします。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オ フセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード: 1 サイクル: 1(2) 注: スキップする場合は 3 サイクル で、その後 2 ワードの命令にな ります。 1/4 サイクルの動作 : Q1 デコード Q2 Q3 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし Q4 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし HERE DECFSZ GOTO CNT, 1, 1 LOOP 1 サイクル数 : 1(2) 注: Q1 デコード = Address (HERE) = = = = CNT - 1 0; Address (CONTINUE) 0; Address (HERE + 2) 2009 Microchip Technology Inc. ffff スキップする場合は 3 サイクル で、その後 2 ワードの命令にな ります。 Q2 Q3 Q4 レジスタ「f」 データを を読み出す 処理 格納先に 書き込む Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし スキップの後 2 ワードの命令がある場合 : Q1 Q2 Q3 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし HERE ZERO NZERO 例: 命令実行前 TEMP 命令実行後 TEMP If TEMP PC If TEMP PC Preliminary Q4 動作なし CONTINUE 命令実行前 PC 命令実行後 CNT If CNT PC If CNT PC ffff スキップする場合 : Q1 スキップの後 2 ワードの命令がある場合 : Q1 Q2 Q3 11da レジスタ「f」の内容をデクリメントし ます。「d」が「0」の場合、結果は W に入れられます。「d」が「1」の場合、 結果はレジスタ「f」に書き戻されます ( デフォルト )。 結果が「0」以外の場合、既にフェッチ 済みの命令を破棄し、代わりに NOP を 実行して、2 サイクルの命令にします。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オ フセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 格納先に 書き込む スキップする場合 : 例: 説明 : 1/4 サイクルの動作 : Q4 レジスタ「f」 データを を読み出す 処理 0100 エンコード : DCFSNZ : : TEMP, 1, 0 = ? = = = = TEMP – 1 0; Address (ZERO) 0; Address (NZERO) DS41303E_JP - ページ 331 PIC18F2XK20/4XK20 GOTO Unconditional Branch INCF Increment f シンタックス : GOTO k シンタックス : INCF オペランド : 0 k 1048575 オペランド : 実行内容 : k PC<20:1> 0 f 255 d [0,1] a [0,1] 影響を受ける ステータス : なし 実行内容 : (f) + 1 dest 影響を受ける ステータス : C, DC, N, OV, Z エンコード : 1st word (k<7:0>) 2nd word(k<19:8>) 1110 1111 1111 k19kkk k7kkk kkkk kkkk0 kkkk8 説明 : GOTO により、2 MB のメモリ範囲全体 の任意の位置に無条件で分岐できます。 20 ビットの値「k」を PC<20:1> にロー ドします。 GOTO は常に 2 サイクルの 命令です。 ワード数 : 2 サイクル数 : 2 Q1 動作なし Q2 Q3 リテラル「k」 動作なし <7:0> を読み 出す 動作なし 動作なし GOTO THERE 例: 命令実行後 PC = 10da ffff ffff レジスタ「f」の内容をインクリメント します。 「d」が「0」の場合、結果は W に入れられます。「d」が「1」の場 合、結果はレジスタ「f」に書き戻され ます ( デフォルト )。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 1/4 サイクルの動作 : デコード 0010 エンコード : 説明 : f {,d {,a}} Q4 リテラル「k」 <19:8> を読 み出し、PC に書き込む 動作なし ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Address (THERE) Q1 デコード Q2 レジスタ「f」 データを を読み出す 処理 INCF 例: 命令実行前 CNT Z C DC 命令実行後 CNT Z C DC DS41303E_JP - ページ 332 Preliminary Q3 = = = = FFh 0 ? ? = = = = 00h 1 1 1 Q4 格納先に 書き込む CNT, 1, 0 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 INCFSZ Increment f, skip if 0 INFSNZ Increment f, skip if not 0 シンタックス : INCFSZ f {,d {,a}} シンタックス : INFSNZ f {,d {,a}} オペランド : 0 f 255 d [0,1] a [0,1] オペランド : 0 f 255 d [0,1] a [0,1] 実行内容 : (f) + 1 dest, skip if result = 0 実行内容 : (f) + 1 dest, skip if result 0 影響を受ける ステータス : なし 影響を受ける ステータス : なし 0011 エンコード : 説明 : 11da ffff ffff レジスタ「f」の内容をインクリメント します。「d」が「0」の場合、結果は W に入れられます。「d」が「1」の場 合、結果はレジスタ「f」に書き戻され ます ( デフォルト )。 結果が「0」の場合、既にフェッチした 次の命令を破棄し、代わりに NOP を実 行して 2 サイクルの命令にします。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 1 サイクル数 : 1(2) 注: デコード スキップする場合は 3 サイクル で、その後 2 ワードの命令にな ります。 Q2 Q3 レジスタ「f」 データを を読み出す 処理 Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし スキップの後 2 ワードの命令がある場合 : Q1 Q2 Q3 動作なし 動作なし HERE NZERO ZERO 命令実行前 PC 命令実行後 CNT If CNT PC If CNT PC 動作なし 動作なし 例: 1(2) 注: 動作なし INCFSZ : : = Address (HERE) = = = = CNT + 1 0; Address (ZERO) 0; Address (NZERO) 2009 Microchip Technology Inc. ffff スキップする場合は 3 サイクル で、その後 2 ワードの命令にな ります。 デコード Q2 Q3 Q4 レジスタ「f」 データを を読み出す 処理 動作なし 動作なし CNT, 1, 0 格納先に 書き込む スキップする場合 : Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし スキップの後 2 ワードの命令がある場合 : Q1 Q2 Q3 Q4 ffff 1/4 サイクルの動作 : Q1 格納先に 書き込む 10da レジスタ「f」の内容をインクリメント します。 「d」が「0」の場合、結果は W に入れられます。「d」が「1」の場 合、結果はレジスタ「f」に書き戻され ます ( デフォルト )。 結果が「0」以外の場合、既にフェッチ 済みの命令を破棄し、代わりに NOP を 実行して、2 サイクルの命令にします。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 1 ワード数 : Q4 スキップする場合 : 動作なし 説明 : サイクル数 : 1/4 サイクルの動作 : Q1 0100 エンコード : 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし HERE ZERO NZERO 例: 命令実行前 PC 命令実行後 REG If REG PC If REG PC Preliminary Q4 INFSNZ REG, 1, 0 = Address (HERE) = REG + 1 0; Address (NZERO) 0; Address (ZERO) = = = DS41303E_JP - ページ 333 PIC18F2XK20/4XK20 IORLW Inclusive OR literal with W IORWF Inclusive OR W with f シンタックス : IORLW k シンタックス : IORWF オペランド : 0 k 255 オペランド : 0 f 255 d [0,1] a [0,1] 実行内容 : (W) .OR. (f) dest 影響を受ける ステータス : N, Z 実行内容 : (W) .OR. k W 影響を受ける ステータス : N, Z 0000 エンコード : 1001 kkkk kkkk 説明 : W の内容と 8 ビットのリテラル「k」を OR 演算します。結果を W に入れます。 ワード数 : 1 サイクル数 : 1 説明 : デコード Q2 リテラル「k」 データを を読み出す 処理 IORLW 例: 命令実行前 W 命令実行後 W Q3 = 9Ah = BFh 00da ffff ffff W とレジスタ「f」を OR 演算します。 「d」が「0」の場合、結果は W に入れ られます。「d」が「1」の場合、結果は レジスタ「f」に書き戻されます ( デ フォルト )。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 1/4 サイクルの動作 : Q1 0001 エンコード : f {,d {,a}} Q4 Wに 書き込む 35h ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード Q2 レジスタ「f」 データを を読み出す 処理 IORWF 例: 命令実行前 RESULT W 命令実行後 RESULT W DS41303E_JP - ページ 334 Preliminary Q3 = = 13h 91h = = 13h 93h Q4 格納先に 書き込む RESULT, 0, 1 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 LFSR Load FSR MOVF Move f シンタックス : LFSR f, k シンタックス : MOVF オペランド : 0f2 0 k 4095 オペランド : 実行内容 : k FSRf 0 f 255 d [0,1] a [0,1] 影響を受ける ステータス : なし 1110 1111 エンコード : 1110 0000 00ff k7kkk k11kkk kkkk 説明 : 12 ビットのリテラル「k」を、「f」が ポイントするファイル選択レジスタに ロードします。 ワード数 : 2 サイクル数 : 2 実行内容 : f dest 影響を受ける ステータス : N, Z Q1 Q2 Q3 Q4 リテラル 「k」の最上 位ビットを 読み出す データを 処理 リテラル 「k」の最上 位ビットを FSRfH に書 き込む デコード リテラル 「k」の最下 位ビットを 読み出す データを 処理 リテラル 「k」を FSRfL に書 き込む LFSR 2, 3ABh 例: 命令実行後 FSR2H FSR2L 00da ffff ffff 「d」のステータスに従って、レジスタ 「f」の内容を格納先に移動します。 「d」が「0」の場合、結果は W に入れら れます。「d」が「1」の場合、結果はレ ジスタ「f」に書き戻されます ( デフォ ルト )。ロケーション「f」は、256 バイ トのバンクの任意の位置にできます。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 1/4 サイクルの動作 : デコード 0101 エンコード : 説明 : f {,d {,a}} ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : = = 03h ABh Q1 デコード 命令実行前 REG W 命令実行後 REG W Preliminary Q3 レジスタ「f」 データを を読み出す 処理 MOVF 例: 2009 Microchip Technology Inc. Q2 Q4 Wに 書き込む REG, 0, 0 = = 22h FFh = = 22h 22h DS41303E_JP - ページ 335 PIC18F2XK20/4XK20 MOVFF Move f to f MOVLB Move literal to low nibble in BSR シンタックス : MOVFF fs,fd シンタックス : MOVLW k オペランド : 0 fs 4095 0 fd 4095 オペランド : 0 k 255 k BSR (fs) fd 実行内容 : 実行内容 : なし 影響を受ける ステータス : なし 影響を受ける ステータス : 0000 エンコード : エンコード : 1st word (source) 2nd word (destin.) 1100 1111 説明 : ffff ffff ffff ffff ffffs ffffd ソース レジスタ「fs」の内容を、格納 先のレジスタ「fd」に移動します。 ソース「fs」は 4096 バイトのデータ空 間 (000h ~ FFFh) の任意の位置にでき、 格納先「fd」も 000h ~ FFFh の任意の 位置にできます。 ソースと格納先のいずれかを W にでき ます ( 役に立つ特殊な状況 )。 MOVFF は特に、データ メモリ ロケー ションの内容を周辺レジスタ ( 送信 バッファや I/O ポートなど ) に移動す るのに便利です。 MOVFF 命令の格納先レジスタとして、 PCL、TOSU、TOSH、または TOSL は 使用できません。 ワード数 : 2 サイクル数 : 2 (3) 0001 kkkk kkkk 説明 : 8 ビットのリテラル「k」をバンク選択 レジスタ (BSR) にロードします。 BSR<7:4> の値は、k7:k4 の値には関係 なく、常に「0」です。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード 例: Q2 Q3 リテラル 「k」を読み 出す MOVLB 命令実行前 BSR レジスタ = 命令実行後 BSR レジスタ = データを 処理 Q4 リテラル 「k」を BSR に書き込む 5 02h 05h 1/4 サイクルの動作 : Q1 デコード デコード Q2 Q3 レジスタ「f」 データを ( ソース ) を 処理 読み出す 動作なし 動作なし ダミーを読 み出さない MOVFF 例: 命令実行前 REG1 REG2 命令実行後 REG1 REG2 動作なし レジスタ「f」 ( 格納先 ) に 書き込む REG1, REG2 = = 33h 11h = = 33h 33h DS41303E_JP - ページ 336 Q4 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 MOVLW Move literal to W MOVWF Move W to f シンタックス : MOVLW k シンタックス : MOVWF オペランド : 0 k 255 オペランド : 実行内容 : kW 0 f 255 a [0,1] 影響を受ける ステータス : なし 実行内容 : (W) f 影響を受ける ステータス : なし 0000 エンコード : 説明 : 1110 kkkk kkkk 8 ビットのリテラル「k」を W にロード します。 ワード数 : 1 サイクル数 : 1 説明 : デコード Q2 リテラル 「k」を読み 出す MOVLW 例: 命令実行後 W = Q3 Q4 データを 処理 Wに 書き込む 111a ffff ffff W のデータをレジスタ「f」に移動しま す。ロケーション「f」は、256 バイト のバンクの任意の位置にできます。 「a」が「0」の場合、アクセス バンク が選択されます。「a」が「1」の場合、 GPR バンクの選択に BSR が使用され ます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 1/4 サイクルの動作 : Q1 0110 エンコード : f {,a} 5Ah 5Ah ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード Q2 レジスタ「f」 データを を読み出す 処理 MOVWF 例: 命令実行前 W REG 命令実行後 W REG 2009 Microchip Technology Inc. Preliminary Q3 = = 4Fh FFh = = 4Fh 4Fh Q4 レジスタ「f」 に書き込む REG, 0 DS41303E_JP - ページ 337 PIC18F2XK20/4XK20 MULLW Multiply literal with W MULWF Multiply W with f シンタックス : MULLW シンタックス : MULWF オペランド : 0 k 255 オペランド : 実行内容 : (W) x k PRODH:PRODL 0 f 255 a [0,1] 影響を受ける ステータス : なし 実行内容 : (W) x (f) PRODH:PRODL 影響を受ける ステータス : なし k 0000 エンコード : 説明 : 1101 kkkk kkkk W の内容と 8 ビットのリテラル「k」と の符号なし乗算を実行します。16 ビッ トの結果を PRODH:PRODL レジスタ ペアに入れます。PRODH は上位バイ トを格納します。 W は変更されません。 影響を受けるステータス フラグはあり ません。 この演算では、オーバーフローもキャ リーも出ません。結果が「0」になる ことはありますが、検出されません。 ワード数 : 1 サイクル数 : 1 0000 エンコード : 説明 : Q1 Q2 リテラル 「k」を読み 出す MULLW 例: 命令実行前 W PRODH PRODL 命令実行後 = = = W PRODH PRODL = = = Q3 Q4 データを 処理 レジスタ PRODH: PRODL に 書き込む 0C4h E2h ? ? E2h ADh 08h ワード数 : 1 サイクル数 : 1 ffff ffff 1/4 サイクルの動作 : Q1 デコード 命令実行前 W REG PRODH PRODL 命令実行後 W REG PRODH PRODL Preliminary Q2 レジスタ 「f」を読み 出す MULWF 例: DS41303E_JP - ページ 338 001a W の内容とレジスタ ファイル ロケー ション「f」との符号なし乗算を実行 します。16 ビットの結果を PRODH:PRODL レジスタ ペアに入れ ます。PRODH は上位バイトを格納し ます。W と「f」のいずれも変更され ません。 影響を受けるステータス フラグはあ りません。 この演算では、オーバーフローも キャリーも出ません。結果が「0」に なることはありますが、検出されま せん。 「a」が「0」の場合、アクセス バンク が選択されます。 「a」が「1」の場 合、GPR バンクの選択に BSR が使用 されます。 「a」が「0」で拡張命令セットが有効 の場合、f 95 (5Fh) のときには常にこ の命令はインデックス付きリテラル オフセット アドレス指定モードで実 行されます。詳細については、24.2.3 項「インデックス付きリテラル オフ セット モードのバイト指向命令と ビット指向命令」を参照してください。 1/4 サイクルの動作 : デコード f {,a} Q3 Q4 データを 処理 レジスタ PRODH: PRODL に 書き込む REG, 1 = = = = C4h B5h ? ? = = = = C4h B5h 8Ah 94h 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 NEGF Negate f NOP No Operation シンタックス : NEGF シンタックス : NOP オペランド : 0 f 255 a [0,1] オペランド : なし (f)+1f 実行内容 : なし 実行内容 : なし 影響を受ける ステータス : N, OV, C, DC, Z 影響を受ける ステータス : 0000 1111 エンコード : 0110 エンコード : 説明 : f {,a} 110a ffff ffff 2 の補数を使用して、ロケーション 「f」を反転します。結果をデータ メモ リ ロケーション「f」に入れます。 「a」が「0」の場合、アクセス バンク が選択されます。「a」が「1」の場合、 GPR バンクの選択に BSR が使用され ます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項 「インデックス付きリテラル オ フセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 1 サイクル数 : 1 0000 xxxx 説明 : 何もしません。 ワード数 : 1 サイクル数 : 1 0000 xxxx 0000 xxxx 1/4 サイクルの動作 : Q1 Q2 Q3 Q4 デコード 動作なし 動作なし 動作なし 例: なし 1/4 サイクルの動作 : Q1 デコード Q2 レジスタ「f」 データを を読み出す 処理 NEGF 例: 命令実行前 REG 命令実行後 REG Q3 Q4 レジスタ「f」 に書き込む REG, 1 = 0011 1010 [3Ah] = 1100 0110 [C6h] 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 339 PIC18F2XK20/4XK20 POP Pop Top of Return Stack PUSH Push Top of Return Stack シンタックス : POP シンタックス : PUSH オペランド : なし オペランド : なし 実行内容 : (TOS) bit bucket 実行内容 : (PC + 2) TOS 影響を受ける ステータス : なし 影響を受ける ステータス : なし 0000 エンコード : 0000 0000 0110 0000 エンコード : 0000 0000 0101 説明 : TOS の値をリターン スタックから取り 出して破棄します。その後、TOS の値 は、リターン スタックにプッシュされ た前の値に戻ります。 この命令は、リターン スタックを適切 に管理してソフトウェア スタックを組 み込み可能にするためのものです。 説明 : PC + 2 をリターン スタックの先頭に プッシュします。前の TOS 値はスタッ クの次の位置にプッシュされます。 この命令により、TOS を変更してリ ターン スタックにプッシュすることに より、ソフトウェア スタックを実現で きます。 ワード数 : 1 ワード数 : 1 サイクル数 : 1 サイクル数 : 1 1/4 サイクルの動作 : 1/4 サイクルの動作 : Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 デコード 動作なし TOS の値を 取り出す 動作なし デコード PC + 2 を リターン スタックに プッシュ 動作なし 動作なし POP GOTO 例: NEW PUSH 例: 命令実行前 TOS Stack (1 level down) = = 0031A2h 014332h 命令実行前 TOS PC = = 345Ah 0124h 命令実行後 TOS PC = = 014332h NEW 命令実行後 PC TOS Stack (1 level down) = = = 0126h 0126h 345Ah DS41303E_JP - ページ 340 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 RCALL Relative Call RESET Reset シンタックス : RCALL シンタックス : RESET オペランド : -1024 n 1023 n オペランド : なし 実行内容 : (PC) + 2 TOS, (PC) + 2 + 2n PC 実行内容 : MCLR のリセットの影響を受けるレジ スタとフラグをすべてリセットする 影響を受ける ステータス : なし 影響を受ける ステータス : すべて 1101 エンコード : 説明 : 1nnn nnnn nnnn 現在のロケーションから最大 1 KB ジャンプするサブルーチン呼び出し。 最初に、リターン アドレス (PC + 2) を スタックにプッシュします。次に、2 の補数「2n」を PC に加算します。PC は次の命令をフェッチするためにイン クリメントされているので、新しいア ドレスは「PC + 2 + 2n」になります。 この命令は 2 サイクルの命令です。 ワード数 : 1 サイクル数 : 2 デコード Q2 Q3 リテラル「n」 データを を読み出す 処理 0000 1111 1111 説明 : この命令はソフトウェアにより MCLR リセットを実行するためのものです。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 Q2 Q3 Q4 デコード リセットを 開始 動作なし 動作なし RESET 例: 1/4 サイクルの動作 : Q1 0000 エンコード : Q4 PC に 書き込む 命令実行後 レジスタ = フラグ * = リセット値 リセット値 PC を スタックに プッシュ 動作なし 動作なし HERE 例: 命令実行前 PC = 命令実行後 PC = TOS = 動作なし 動作なし RCALL Jump Address (HERE) Address (Jump) Address (HERE + 2) 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 341 PIC18F2XK20/4XK20 RETFIE Return from Interrupt RETLW Return literal to W シンタックス : RETFIE {s} シンタックス : RETLW k オペランド : s [0,1] オペランド : 0 k 255 実行内容 : (TOS) PC, 1 GIE/GIEH or PEIE/GIEL, if s = 1 (WS) W, (STATUSS) Status, (BSRS) BSR, PCLATU, PCLATH are unchanged. 実行内容 : k W, (TOS) PC, PCLATU, PCLATH are unchanged 影響を受ける ステータス : なし GIE/GIEH, PEIE/GIEL. 説明 : 8 ビットのリテラル「k」を W にロー ドします。スタックの先頭 ( リターン アドレス ) をプログラム カウンタへ ロードします。上位アドレス ラッチ (PCLATH) は変化しません。 ワード数 : 1 サイクル数 : 2 影響を受ける ステータス : 0000 エンコード : 説明 : 0000 0001 000s 割り込みから戻ります。スタックが ポップされ、スタックの先頭 (TOS) が PC にロードされます。割り込みを有効 にするには、優先度が高または低のグ ローバル割り込みイネーブル ビットを セットします。「s」= 1 の場合、シャド ウ レジスタ WS、STATUSS、および BSRS の内容を対応するレジスタ W、 STATUS、および BSR にロードします。 「s」= 0 の場合、これらのレジスタは更 新されません ( デフォルト )。 ワード数 : 1 サイクル数 : 2 Q1 Q2 Q3 Q4 デコード 動作なし 動作なし スタックから PC にポップ GIEH または GIEL をセット 例: 1100 kkkk kkkk 1/4 サイクルの動作 : Q3 Q4 デコード Q1 リテラル 「k」を読み 出す Q2 データを 処理 スタックか ら PC をポッ プし、W に 書き込む 動作なし 動作なし 動作なし 動作なし 例: 1/4 サイクルの動作 : 動作なし 0000 エンコード : 動作なし RETFIE 割り込み終了後 PC W BSR Status GIE/GIEH, PEIE/GIEL DS41303E_JP - ページ 342 動作なし 動作なし 1 = = = = = TOS WS BSRS STATUSS 1 CALL TABLE ; ; ; ; : TABLE ADDWF PCL ; RETLW k0 ; RETLW k1 ; : : RETLW kn ; W contains table offset value W now has table value W = offset Begin table End of table 命令実行前 Preliminary W 命令実行後 = 07h W = kn の値 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 RETURN Return from Subroutine RLCF シンタックス : RETURN {s} シンタックス : RLCF オペランド : s [0,1] オペランド : 実行内容 : (TOS) PC, if s = 1 (WS) W, (STATUSS) Status, (BSRS) BSR, PCLATU, PCLATH are unchanged 0 f 255 d [0,1] a [0,1] 実行内容 : (f<n>) dest<n + 1>, (f<7>) C, (C) dest<0> 影響を受ける ステータス : C, N, Z 影響を受ける ステータス : なし Rotate Left f through Carry 0011 エンコード : 0000 エンコード : 0000 0001 001s 説明 : サブルーチンから戻ります。スタック がポップされ、スタックの先頭 (TOS) がプログラム カウンタにロードされま す。「s」= 1 の場合、シャドウ レジスタ WS、STATUSS、および BSRS の内容 を対応するレジスタ W、STATUS、お よび BSR にロードします。 「s」= 0 の 場合、これらのレジスタは更新されま せん ( デフォルト )。 ワード数 : 1 サイクル数 : 2 説明 : Q2 Q3 Q4 デコード 動作なし データを 処理 スタックから PC をポップ 動作なし 動作なし 動作なし 動作なし RETURN 例: 命令実行後 : PC = TOS ffff ffff register f C ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード Q2 RLCF 命令実行前 REG C 命令実行後 REG W C Preliminary Q3 レジスタ「f」 データを を読み出す 処理 例: 2009 Microchip Technology Inc. 01da レジスタ「f」の内容を、CARRY フラ グを通して左回りに 1 ビット移動しま す。「d」が「0」の場合、結果は W に 入れられます。 「d」が「1」の場合、 結果はレジスタ「f」に書き戻されま す ( デフォルト )。 「a」が「0」の場合、アクセス バンク が選択されます。「a」が「1」の場合、 GPR バンクの選択に BSR が使用され ます。 「a」が「0」で拡張命令セットが有効 の場合、f 95 (5Fh) のときには常にこ の命令はインデックス付きリテラル オフセット アドレス指定モードで実 行されます。詳細については、24.2.3 項「インデックス付きリテラル オフ セット モードのバイト指向命令とビッ ト指向命令」を参照してください。 1/4 サイクルの動作 : Q1 f {,d {,a}} Q4 格納先に 書き込む REG, 0, 0 = = 1110 0110 0 = = = 1110 0110 1100 1100 1 DS41303E_JP - ページ 343 PIC18F2XK20/4XK20 RLNCF Rotate Left f (No Carry) RRCF Rotate Right f through Carry シンタックス : RLNCF シンタックス : RRCF オペランド : 0 f 255 d [0,1] a [0,1] オペランド : 0 f 255 d [0,1] a [0,1] 実行内容 : (f<n>) dest<n + 1>, (f<7>) dest<0> 実行内容 : 影響を受ける ステータス : N, Z (f<n>) dest<n – 1>, (f<0>) C, (C) dest<7> 影響を受ける ステータス : C, N, Z 0100 エンコード : 説明 : f {,d {,a}} 01da ffff ffff レジスタ「f」の内容を、左回りに 1 ビット移動します。「d」が「0」の場 合、結果は W に入れられます。「d」 が「1」の場合、結果はレジスタ「f」 に書き戻されます ( デフォルト )。 「a」が「0」の場合、アクセス バンク が選択されます。「a」が「1」の場合、 GPR バンクの選択に BSR が使用され ます。 「a」が「0」で、かつ拡張命令セット を有効にしている場合、f 95 (5Fh) の ときには常にこの命令がインデックス 付きリテラル オフセット アドレス指 定モードで動作します。詳細について は、24.2.3 項「インデックス付きリテ ラル オフセット モードのバイト指向 命令とビット指向命令」を参照してく ださい。 0011 エンコード : 説明 : 1 ワード数 : 1 サイクル数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q3 レジスタ「f」 データを を読み出す 処理 RLNCF 命令実行前 REG 命令実行後 REG ffff 1/4 サイクルの動作 : Q2 例: ffff register f C ワード数 : デコード 00da レジスタ「f」の内容を CARRY フラグ を通して右回りに 1 ビット移動させま す。「d」が「0」の場合、結果は W に 入れられます。 「d」が「1」の場合、結 果はレジスタ「f」に書き戻されます ( デフォルト )。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 register f Q1 f {,d {,a}} REG, 1, 0 = 1010 1011 = 0101 0111 DS41303E_JP - ページ 344 Q4 Q1 格納先に 書き込む デコード Q2 RRCF 例: 命令実行前 REG C 命令実行後 REG W C Preliminary Q3 レジスタ「f」 データを を読み出す 処理 Q4 格納先に 書き込む REG, 0, 0 = = 1110 0110 0 = = = 1110 0110 0111 0011 0 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 RRNCF Rotate Right f (No Carry) SETF Set f シンタックス : SETF f {,a} オペランド : 0 f 255 a [0,1] 実行内容 : FFh f 影響を受ける ステータス : なし シンタックス : RRNCF オペランド : 0 f 255 d [0,1] a [0,1] 実行内容 : (f<n>) dest<n – 1>, (f<0>) dest<7> 影響を受ける ステータス : N, Z 0100 エンコード : 説明 : f {,d {,a}} 00da ffff ffff レジスタ「f」の内容を、右回りに 1 ビット移動します。「d」が「0」の場 合、結果は W に入れられます。「d」が 「1」の場合、結果はレジスタ「f」に書 き戻されます ( デフォルト )。 「a」が「0」の場合はアクセス バンク が選択され ( デフォルト )、BSR の値は 無視されます。「a」が「1」の場合は、 BSR の値に従ってアクセス バンクが選 択されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 説明 : 1 サイクル数 : 1 ワード数 : 1 サイクル数 : 1 Q1 デコード デコード レジスタ「f」 データを を読み出す 処理 RRNCF 例 1: 命令実行前 REG 命令実行後 REG 1101 0111 = 1110 1011 RRNCF ffff 命令実行前 REG 命令実行後 REG Q4 Q3 レジスタ「f」 データを を読み出す 処理 Q4 レジスタ「f」 に書き込む REG, 1 = 5Ah = FFh 格納先に 書き込む REG, 1, 0 = 例 2: 命令実行前 W REG 命令実行後 W REG Q3 Q2 SETF 例: Q2 ffff 1/4 サイクルの動作 : 1/4 サイクルの動作 : Q1 100a 指定したレジスタの内容を FFh に設定 します。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 register f ワード数 : 0110 エンコード : REG, 0, 0 = = ? 1101 0111 = = 1110 1011 1101 0111 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 345 PIC18F2XK20/4XK20 SLEEP Enter Sleep mode SUBFWB Subtract f from W with borrow シンタックス : SLEEP シンタックス : SUBFWB オペランド : なし オペランド : 実行内容 : 00h WDT, 0 WDT postscaler, 1 TO, 0 PD 0 f 255 d [0,1] a [0,1] 実行内容 : (W) – (f) – (C) dest 影響を受ける ステータス : N, OV, C, DC, Z TO, PD 影響を受ける ステータス : 0101 エンコード : 0000 エンコード : 0000 0000 0011 説明 : パワーダウン ステータス ビット (PD) をクリアします。タイムアウト ス テータス ビット (TO) をセットしま す。ウォッチドッグ タイマとそのプ リスケーラをクリアします。 オシレータを停止してプロセッサを スリープ モードにします。 ワード数 : 1 サイクル数 : 1 説明 : Q2 Q3 Q4 デコード 動作なし データを 処理 スリープ モードに する SLEEP 例: 命令実行前 TO = PD = ? ? 命令実行後 TO = PD = 1 0 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード 命令実行前 REG W C 命令実行後 REG W C Z N = = = = = = = = = = = = = = = = 例 3: 命令実行前 REG W C 命令実行後 REG W C Z N Preliminary Q2 Q3 SUBFWB 命令実行前 REG W C 命令実行後 REG W C Z N 例 2: DS41303E_JP - ページ 346 ffff レジスタ「f」 データを を読み出す 処理 例 1: WTD がウェイクアップした場合、このビットはクリアされ ます。 01da ffff W からレジスタ「f」と CARRY フラグ ( ボロー ) を減算します (2 の補数法 )。 「d」が「0」の場合、結果は W に書 き込まれます。「d」が「1」の場合、 結果はレジスタ「f」に書き戻されま す ( デフォルト )。 「a」が「0」の場合、アクセス バンク が選択されます。「a」が「1」の場 合、GPR バンクの選択に BSR が使用 されます。 「a」が「0」で拡張命令セットが有効 の場合、f 95 (5Fh) のときには常にこ の命令はインデックス付きリテラル オフセット アドレス指定モードで実 行されます。詳細については、24.2.3 項「インデックス付きリテラル オフ セット モードのバイト指向命令と ビット指向命令」を参照してください。 1/4 サイクルの動作 : Q1 f {,d {,a}} Q4 格納先に 書き込む REG, 1, 0 3 2 1 FF 2 0 0 1 ; result is negative SUBFWB REG, 0, 0 2 5 1 2 3 1 0 0 ; result is positive SUBFWB REG, 1, 0 = = = 1 2 0 = = = = = 0 2 1 1 0 ; result is zero 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 SUBLW Subtract W from literal SUBWF Subtract W from f シンタックス : SUBLW k シンタックス : SUBWF オペランド : 0 k 255 オペランド : 実行内容 : k – (W) W 0 f 255 d [0,1] a [0,1] 影響を受けるステータ N, OV, C, DC, Z ス: 0000 エンコード : 1000 kkkk kkkk 8 ビットのリテラル「k」から W を減 算します。結果を W に入れます。 説明 ワード数 : 1 サイクル数 : 1 実行内容 : (f) – (W) dest 影響を受ける ステータス : N, OV, C, DC, Z 0101 エンコード : 説明 : デコード Q2 リテラル 「k」を読み 出す SUBLW 例 1: 命令実行前 W C 命令実行後 W C Z N データを 処理 Wに 書き込む 02h 01h ? = = = = 01h 1 ; result is positive 0 0 SUBLW 02h ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード = = 02h ? = = = = 00h 1 ; result is zero 1 0 SUBLW = = 03h ? = = = = FFh (2 の補数 ) 0 ; result is negative 0 1 = = = = = = = = 例 2: 命令実行前 REG W C 命令実行後 REG W C Z N = = = = = = = = 例 3: 命令実行前 REG W C 命令実行後 REG W C Z N 2009 Microchip Technology Inc. Preliminary Q2 SUBWF 命令実行前 REG W C 命令実行後 REG W C Z N 02h ffff Q3 レジスタ「f」 データを を読み出す 処理 例 1: 例 3: 命令実行前 W C 命令実行後 W C Z N Q4 = = 例 2: 命令実行前 W C 命令実行後 W C Z N Q3 11da ffff レジスタ「f」から W を減算します (2 の補数法 )。「d」が「0」の場合、 結果は W に書き込まれます。「d」が 「1」の場合、結果はレジスタ「f」に 書き戻されます ( デフォルト )。 「a」が「0」の場合、アクセス バンク が選択されます。「a」が「1」の場 合、GPR バンクの選択に BSR が使用 されます。 「a」が「0」で拡張命令セットが有効 の場合、f 95 (5Fh) のときには常にこ の命令はインデックス付きリテラル オフセット アドレス指定モードで実 行されます。詳細については、24.2.3 項「インデックス付きリテラル オフ セット モードのバイト指向命令と ビット指向命令」を参照してください。 1/4 サイクルの動作 : Q1 f {,d {,a}} Q4 格納先に 書き込む REG, 1, 0 3 2 ? 1 2 1 ; result is positive 0 0 SUBWF REG, 0, 0 2 2 ? 2 0 1 ; result is zero 1 0 SUBWF REG, 1, 0 = = = 1 2 ? = = = = = FFh (2 の補数 ) 2 0 ; result is negative 0 1 DS41303E_JP - ページ 347 PIC18F2XK20/4XK20 SUBWFB Subtract W from f with Borrow SWAPF Swap f シンタックス : SUBWFB シンタックス : SWAPF f {,d {,a}} オペランド : 0 f 255 d [0,1] a [0,1] オペランド : 0 f 255 d [0,1] a [0,1] 実行内容 : (f) – (W) – (C) dest N, OV, C, DC, Z 実行内容 : 影響を受ける ステータス : (f<3:0>) dest<7:4>, (f<7:4>) dest<3:0> 影響を受ける ステータス : なし 0101 エンコード : 説明 : ワード数 : サイクル数 : Q2 = = = = = = = = 例 2: W C Z N ffff Q3 レジスタ「f」 データを 処理 を読み出す SUBWFB 命令実行前 REG W C 命令実行後 REG W C Z N 例 3: 命令実行前 REG W C 命令実行後 REG ffff 19h 0Dh 1 Q4 格納先に 書き込む 説明 : 1 サイクル数 : 1 Q1 デコード (0001 1001) (0000 1101) Q2 SWAPF (0001 1011) (0001 1010) = = = = = 1Bh 00h 1 1 0 SUBWFB (0001 1011) 命令実行前 REG 命令実行後 REG Q3 レジスタ「f」 データを を読み出す 処理 例: 1Bh 1Ah 0 ffff ffff 1/4 サイクルの動作 : REG, 1, 0 = = = 10da レジスタ「f」の上位 4 ビットと下位 4 ビットを入れ替えます。「d」が「0」の 場合、結果は W に入れられます。「d」 が「1」の場合、結果はレジスタ「f」 に書き戻されます ( デフォルト )。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 0Ch (0000 1100) 0Dh (0000 1101) 1 0 0 ; result is positive SUBWFB REG, 0, 0 = 53h = 35h Q4 格納先に 書き込む REG, 1, 0 ; result is zero REG, 1, 0 = = = 03h 0Eh 1 (0000 0011) (0000 1110) = F5h = = = = 0Eh 0 0 1 (1111 0101) ; [2’s comp] (0000 1110) DS41303E_JP - ページ 348 0011 エンコード : 1 例 1: 命令実行前 REG W C 命令実行後 REG W C Z N 10da レジスタ「f」から W と CARRY フラグ ( ボロー ) を減算します (2 の補数法 )。 「d」が「0」の場合、結果は W に書き込 まれます。 「d」が「1」の場合、結果は レジスタ「f」に書き戻されます ( デフォ ルト )。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 1 1/4 サイクルの動作 : Q1 デコード f {,d {,a}} ; result is negative Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 TBLRD Table Read シンタックス : TBLRD ( *; *+; *-; +*) オペランド : なし 実行内容 : if TBLRD *, (Prog Mem (TBLPTR)) TABLAT; TBLPTR – No Change; if TBLRD *+, (Prog Mem (TBLPTR)) TABLAT; (TBLPTR) + 1 TBLPTR; if TBLRD *-, (Prog Mem (TBLPTR)) TABLAT; (TBLPTR) – 1 TBLPTR; if TBLRD +*, (TBLPTR) + 1 TBLPTR; (Prog Mem (TBLPTR)) TABLAT; 影響を受ける ステータス : TBLRD Table Read ( 続き ) 例 1: TBLRD 命令実行前 TABLAT TBLPTR MEMORY (00A356h) 命令実行後 TABLAT TBLPTR 例 2: 命令実行前 TABLAT TBLPTR MEMORY (01A357h) MEMORY (01A358h) 命令実行後 TABLAT TBLPTR なし 0000 エンコード : 0000 0000 TBLRD *+ ; = = = 55h 00A356h 34h = = 34h 00A357h +* ; = = = = AAh 01A357h 12h 34h = = 34h 01A358h 10nn nn=0 * =1 *+ =2 *=3 +* 説明 : この命令は、プログラム メモリ (P.M.) の内容 の読み出しに使用します。プログラム メモリ のアドレス指定には、テーブル ポインタ (TBLPTR) と呼ばれるポインタを使用します。 TBLPTR (21 ビット ポインタ ) は、プログラ ム メモリの各バイトをポイントします。 TBLPTR のアドレス範囲は 2 MB です。 TBLPTR[0] = 0: プログラム メモリ ワー ドの最下位ビット TBLPTR[0] = 1: プログラム メモリ ワー ドの最上位ビット TBLRD 命令は、TBLPTR の値を次のように変 更できます。 • 変更なし • ポストインクリメント • ポストデクリメント • プリインクリメント ワード数 : 1 サイクル数 : 2 1/4 サイクルの動作 : Q1 Q2 Q3 Q4 デコード 動作なし 動作なし 動作なし 動作なし 動作なし ( プロ 動作なし グラム メモリを 読み出す ) 2009 Microchip Technology Inc. 動作なし (TABLAT を 書き込む ) Preliminary DS41303E_JP - ページ 349 PIC18F2XK20/4XK20 TBLWT Table Write TBLWT Table Write ( 続き ) シンタックス : TBLWT ( *; *+; *-; +*) 例 1: TBLWT *+; オペランド : なし if TBLWT*, (TABLAT) Holding Register; TBLPTR – No Change; if TBLWT*+, (TABLAT) Holding Register; (TBLPTR) + 1 TBLPTR; if TBLWT*-, (TABLAT) Holding Register; (TBLPTR) – 1 TBLPTR; if TBLWT+*, (TBLPTR) + 1 TBLPTR; (TABLAT) Holding Register; 実行内容 : 影響を受ける ステータス : 例 2: なし 0000 エンコード : 説明 : 命令実行前 TABLAT = 55h TBLPTR = 00A356h HOLDING REGISTER (00A356h) = FFh 命令実行 ( テーブル書き込み完了 ) 後 TABLAT = 55h TBLPTR = 00A357h HOLDING REGISTER (00A356h) = 55h 0000 0000 11nn nn=0 * =1 *+ =2 *=3 +* ワード数 : この命令は、TBLPTR の下位 3 ビットを 使用して、TABLAT の書き込み先となる 保持レジスタを 8 個指定します。保持レ ジスタは、プログラム メモリ (P.M.) の内 容のプログラミングに使用します ( フ ラッシュ メモリのプログラミングの詳細 については、6.0 項「フラッシュ プログ ラム メモリ」を参照 )。 TBLPTR (21 ビット ポインタ ) は、プログ ラム メモリの各バイトをポイントしま す。TBLPTR のアドレス範囲は 2 MB で す。TBLPTR の最下位ビットは、アクセ ス先となるプログラム メモリのバイト ロ ケーションを指定します。 TBLPTR[0] = 0: プログラム メモリ ワードの最下位 ビット TBLPTR[0] = 1: プログラム メモリ ワードの最上位 ビット TBLWT 命令は、TBLPTR の値を次のよう に変更できます。 • 変更なし • ポストインクリメント • ポストデクリメント • プリインクリメント 1 サイクル数 : 2 TBLWT +*; 命令実行前 TABLAT = 34h TBLPTR = 01389Ah HOLDING REGISTER (01389Ah) = FFh HOLDING REGISTER (01389Bh) = FFh 命令実行 ( テーブル書き込み完了 ) 後 TABLAT = 34h TBLPTR = 01389Bh HOLDING REGISTER (01389Ah) = FFh HOLDING REGISTER (01389Bh) = 34h 1/4 サイクルの動作 : Q1 Q2 Q3 Q4 デコード 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし (TABLAT ( 保持レジ を読み出 スタに書き す) 込む ) DS41303E_JP - ページ 350 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 TSTFSZ Test f, skip if 0 XORLW Exclusive OR literal with W シンタックス : TSTFSZ f {,a} シンタックス : XORLW k オペランド : 0 f 255 a [0,1] オペランド : 0 k 255 実行内容 : (W) .XOR. k W 実行内容 : skip if f = 0 N, Z 影響を受ける ステータス : なし 影響を受ける ステータス : 0000 エンコード : 0110 エンコード : 説明 : 011a ffff ffff 「f」が「0」の場合、現在の命令の実行 中にフェッチされた次の命令を破棄し、 代わりに NOP を実行して、2 サイクル の命令にします。 「a」が「0」の場合、アクセス バンク が選択されます。 「a」が「1」の場合、 GPR バンクの選択に BSR が使用され ます。 「a」が「0」で、かつ拡張命令セット を有効にしている場合、f 95 (5Fh) の ときには常にこの命令がインデックス 付きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 1 サイクル数 : 1(2) 注: 1010 kkkk kkkk 説明 : W の内容と 8 ビットのリテラル「k」 を XOR 演算します。結果を W に入 れます。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード Q2 リテラル 「k」を読み 出す XORLW 例: Q3 Q4 データを 処理 Wに 書き込む 0AFh 命令実行前 W 命令実行後 = B5h W = 1Ah スキップする場合は 3 サイクル で、その後 2 ワードの命令にな ります。 1/4 サイクルの動作 : Q1 デコード Q2 Q3 Q4 レジスタ「f」 データを 処理 を読み出す 動作なし スキップする場合 : Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし スキップの後 2 ワードの命令がある場合 : Q1 Q2 Q3 Q4 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし 動作なし HERE NZERO ZERO 例: 命令実行前 PC 命令実行後 If CNT PC If CNT PC TSTFSZ : : CNT, 1 = Address (HERE) = = = 00h, Address (ZERO) 00h, Address (NZERO) 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 351 PIC18F2XK20/4XK20 XORWF Exclusive OR W with f シンタックス : XORWF オペランド : 0 f 255 d [0,1] a [0,1] 実行内容 : (W) .XOR. (f) dest 影響を受ける ステータス : N, Z 0001 エンコード : 説明 : f {,d {,a}} 10da ffff ffff W とレジスタ「f」の内容を XOR 演算し ます。「d」が「0」の場合、結果は W に書き込まれます。「d」が「1」の場 合、結果はレジスタ「f」に書き戻され ます ( デフォルト )。 「a」が「0」の場合、アクセス バンクが 選択されます。 「a」が「1」の場合、GPR バンクの選択に BSR が使用されます。 「a」が「0」で、かつ拡張命令セットを 有効にしている場合、f 95 (5Fh) のと きには常にこの命令がインデックス付 きリテラル オフセット アドレス指定 モードで動作します。詳細については、 24.2.3 項「インデックス付きリテラル オフセット モードのバイト指向命令と ビット指向命令」を参照してください。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード Q2 レジスタ「f」 データを を読み出す 処理 XORWF 例: 命令実行前 REG Q3 = AFh W 命令実行後 REG = B5h = 1Ah W = B5h DS41303E_JP - ページ 352 Q4 格納先に 書き込む REG, 1, 0 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 24.2 拡張命令セットの命令一覧を表 24-3 に示します。 詳 細については、24.2.2 項「拡張命令セット」を参照 してください。表 24-1 のオペコード フィールドの 説明は、PIC18 の標準命令セットと拡張命令セット の両方に適用されます。 拡張命令セット PIC18 の命令セットの 75 個の命令に加えて、 PIC18F2XK20/4XK20 デバイスは、コア CPU の機能 を拡張するオプションの命令も用意しています。追 加機能として、間接的およびインデックス付きのア ドレス指定動作を増補する 8 個の追加命令、および PIC18 の多くの標準命令用のインデックス付きリテ ラル オフセット アドレス指定モードの実装があり ます。 注: 拡張命令の追加機能は、デフォルトでは無効になっ ています。追加機能を有効にするには、XINST 構成 ビットをセットします。 拡張セットの命令はすべて、リテラル演算として分 類でき、ファイル選択レジスタを操作するか、ファ イル選択レジスタをインデックス付きアドレス指 定に使用します。ADDFSR および SUBFSR の 2 つの 命令にはそれぞれ、FSR2 を使用するための特殊な インスタンス化が追加されています。これらのバー ジョン (ADDULNK および SUBULNK) では、実行後に 自動リターンが可能です。 24.2.1 拡張命令のシンタックス ほとんどの拡張命令がインデックス付き引数を使 用し、ファイル選択レジスタの 1 つとオフセットを 使用して、ソースまたは格納先のレジスタを指定し ます。命令の引き数をインデックス付きアドレス指 定に使用するときには、大かっこ ([ ]) で囲みます。 これにより、その引き数をインデックスまたはオフ セットとして使用することを示します。MPASM™ アセンブラは、インデックスまたはオフセット値が 大かっこで囲まれていないと判定した場合、フラグ を設定します。 拡張命令は特に、高度な言語、特に C で作成された 再入可能プログラム コード ( 再帰コード、またはソ フトウェア スタックを使用するコード ) を最適化す るために実行されています。特に、ユーザーが高度 な言語を使用して、データ構造に対する特定の動作 を一層効率的に実行できます。次の機能があります。 拡張命令セットが有効なときには、バイト指向命令 やビット指向命令でインデックス引き数を示す場 合にも大かっこを使用します。これは、それらの命 令のシンタックスの変更内容の一部です。詳細につ いては、24.2.3.1 項「拡張命令のシンタックスと PIC18 の標準コマンド」を参照してください。 • サブルーチンの開始時と終了時における、ソフト ウェア スタック空間の動的な割り当てと割り当 て解除 • 機能ポインタの呼び出し • ソフトウェアのスタック ポインタの操作 • ソフトウェア スタック内の変数の操作 表 24-3: 拡張命令セット、およびインデックス付き リテラル オフセット アドレス指定モード は、C で作成されたアプリケーションを最 適化する目的で設計されています。これら の命令をアセンブラで直接使用すること はほとんどない可能性があります。コンパ イラで生成されたコードを確認するユー ザー向けに、これらのコマンドのシンタッ クスを参考情報として示します。 注: 以前のバージョンでは、大かっこは PIC18 とそれ以前の命令セットでオプションの 引き数を表すために使用されていました。 本書では、オプションの引き数は中かっこ ({}) で示します。 PIC18 の拡張命令セット Mnemonic, Operands ADDFSR f, k ADDULNK k CALLW MOVSF zs, fd MOVSS zs, zd PUSHL k SUBFSR SUBULNK f, k k Description Cycles Add literal to FSR Add literal to FSR2 and return Call subroutine using WREG 1st word Move zs (source) to 2nd word fd (destination) 1st word Move zs (source) to 2nd word zd (destination) Store literal at FSR2, decrement FSR2 Subtract literal from FSR Subtract literal from FSR2 and return 2009 Microchip Technology Inc. 1 2 2 2 16-Bit Instruction Word MSb LSb Status Affected 1000 1000 0000 1011 ffff 1011 xxxx 1010 ffkk 11kk 0001 0zzz ffff 1zzz xzzz kkkk kkkk kkkk 0100 zzzz ffff zzzz zzzz kkkk None None None None 1 1110 1110 0000 1110 1111 1110 1111 1110 1 2 1110 1110 1001 1001 ffkk 11kk kkkk kkkk None None 2 Preliminary None None DS41303E_JP - ページ 353 PIC18F2XK20/4XK20 24.2.2 拡張命令セット ADDFSR Add Literal to FSR ADDULNK Add Literal to FSR2 and Return シンタックス : ADDFSR f, k シンタックス : ADDULNK k オペランド : 0 k 63 f [ 0, 1, 2 ] オペランド : 0 k 63 実行内容 : FSR2 + k FSR2, 実行内容 : FSR(f) + k FSR(f) 影響を受ける ステータス : なし 1110 エンコード : 説明 : (TOS) PC 影響を受ける ステータス : 1000 ffkk kkkk ワード数 : 6 ビットのリテラル「k」を、「f」が 指定する FSR の内容に加算します。 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード Q2 リテラル 「k」を読み 出す Q3 Q4 データを 処理 FSR に 書き込む なし 1110 エンコード : 説明 : 命令実行前 FSR2 命令実行後 FSR2 = 03FFh = 0422h 1/4 サイクルの動作 : Q1 デコード 動作なし Q3 Q4 リテラル 「k」を読み 出す データを 処理 書き込む 動作なし 動作なし 動作なし Q2 FSR に ADDULNK 23h 例: 命令実行前 FSR2 PC 命令実行後 FSR2 PC 注: kkkk 2 サイクル数 : ADDFSR 2, 23h 11kk 6 ビットのリテラル「k」を、が指 定する FSR2 の内容に加算します。 その後、PC に TOS をロードして、 RETURN を実行します。 この命令は 2 サイクルで実行され、2 サイクル目は NOP が実行されます。 これは、ADDFSR 命令で f = 3 (2 進数 「11」である特殊な場合と考えるこ とができます。この命令は FSR2 で のみ動作します。 1 ワード数 : 例: 1000 = = 03FFh 0100h = = 0422h (TOS) PIC18 の命令はすべて、記号アドレス指定で使用できるオプションのラベル引き数を、命令ニーモニッ クの前に付けることができます。ラベルを使用する場合、命令のシンタックスは「( ラベル ) 命令 引き 数 (1 つ以上 )」になります。 DS41303E_JP - ページ 354 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 CALLW Subroutine Call Using WREG MOVSF Move Indexed to f シンタックス : CALLW シンタックス : MOVSF [zs], fd オペランド : なし オペランド : 実行内容 : (PC + 2) TOS, (W) PCL, (PCLATH) PCH, (PCLATU) PCU 0 zs 127 0 fd 4095 実行内容 : ((FSR2) + zs) fd 影響を受ける ステータス : なし 影響を受ける ステータス : なし 0000 エンコード : 0000 0001 0100 説明 最初に、リターン アドレス (PC + 2) を リターン スタックにプッシュします。 次に、PCL に W の内容を書き込みま す。PCL の既存の値は破棄されます。 その後、PCLATH の内容を PCH、 PCLATU の内容を PCU でラッチしま す。2 サイクル目は NOP 命令として実 行し、その間に次の命令をフェッチし ます。 CALL とは異なり、W、STATUS、また は BSR のレジスタを更新するオプショ ンはありません。 ワード数 : 1 サイクル数 : 2 エンコード : 1st word (source) 2nd word (destin.) 1110 1111 Q2 Q3 Q4 デコード WREG を 読み出す PC を スタックに プッシュ 動作なし 動作なし 動作なし 動作なし 動作なし HERE 例: 命令実行前 PC PCLATH PCLATU W 命令実行後 PC TOS PCLATH PCLATU W address (HERE) 10h 00h 06h = = = = = 001006h address (HERE + 2) 10h 00h 06h 2009 Microchip Technology Inc. zzzzs ffffd ソース レジスタの内容を、格納先のレ ジスタ「fd」に移動します。ソース レジ スタの実際のアドレスは、FSR2 の値に 最初のワードの 7 ビットのリテラル オ フセット「zs」を加算して決まります。 格納先のレジスタのアドレスは、2 ワー ド目の 12 ビットのリテラル「fd」で指 定します。両方のアドレスは、4096 バ イトのデータ空間 (000h ~ FFFh) の任意 の位置にできます。 MOVSF 命令の格納先レジスタとして、 PCL、TOSU、TOSH、または TOSL は 使用できません。 結果として得られたソース アドレスが 間接アドレス指定レジスタをポイント した場合、00h の値が返されます。 ワード数 : 2 サイクル数 : 2 1/4 サイクルの動作 : Q1 デコード CALLW = = = = 0zzz ffff 説明 : 1/4 サイクルの動作 : Q1 1011 ffff デコード Q2 Q3 動作なし 動作なし ダミーを読 み出さない 例: MOVSF 命令実行前 FSR2 85h の内容 REG2 命令実行後 FSR2 85h の内容 REG2 Preliminary Q4 ソース アド ソース アド レスを特定 レスを特定 ソース レジ スタを読み 出す レジスタ「f」 ( 格納先 ) に 書き込む [05h], REG2 = = = 80h 33h 11h = = = 80h 33h 33h DS41303E_JP - ページ 355 PIC18F2XK20/4XK20 MOVSS Move Indexed to Indexed PUSHL Store Literal at FSR2, Decrement FSR2 シンタックス : MOVSS [zs], [zd] シンタックス : PUSHL k オペランド : 0 zs 127 0 zd 127 オペランド : 0k 255 ((FSR2) + zs) ((FSR2) + zd) 実行内容 : 実行内容 : k (FSR2), FSR2 – 1 FSR2 影響を受ける ステータス : なし 影響を受ける ステータス : なし エンコード : 1st word (source) 2nd word (dest.) 説明 1111 エンコード : 1110 1111 1011 xxxx 1zzz xzzz zzzzs zzzzd ソース レジスタの内容を、格納先のレ ジスタに移動します。ソース レジスタ と格納先レジスタのアドレスは、FSR2 の値に 7 ビットのリテラル オフセット 「zs」または「zd」を加算して決まりま す。両方のレジスタは、4096 バイトの データ メモリ空間 (000h ~ FFFh) の任 意の位置にできます。 MOVSS 命令の格納先レジスタとして、 PCL、TOSU、TOSH、または TOSL は 使用できません。 得られたソース アドレスが間接アドレ ス指定レジスタをポイントした場合、 00h の値が返されます。得られた格納 先アドレスが間接アドレス指定レジス タをポイントした場合、命令は NOP と して実行されます。 ワード数 : 2 サイクル数 : 2 Q2 Q3 Q4 デコード ソース アドレスを 特定 ソース アドレスを 特定 ソース レジスタを 読み出す デコード 格納先 アドレスを 特定 格納先 アドレスを 特定 格納先 レジスタに 書き込む kkkk kkkk 8 ビットのリテラル「k」を、FSR2 が指定 するデータ メモリ アドレスに書き込みま す。書き込み動作後、FSR2 を 1 デクリメ ントします。 この命令により、値をソフトウェア スタッ クにプッシュできます。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : 例: 1/4 サイクルの動作 : Q1 1010 説明 : Q1 Q2 Q3 Q4 デコード 「k」を 読み出す データを 処理 格納先に 書き込む PUSHL 08h 命令実行前 FSR2H:FSR2L Memory (01ECh) = = 01ECh 00h 命令実行後 FSR2H:FSR2L Memory (01ECh) = = 01EBh 08h MOVSS [05h], [06h] 例: 命令実行前 FSR2 85h の内容 86h の内容 命令実行後 FSR2 85h の内容 86h の内容 = = = 80h 33h 11h = = = 80h 33h 33h DS41303E_JP - ページ 356 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 SUBFSR Subtract Literal from FSR シンタックス : SUBFSR f, k シンタックス : SUBULNK k オペランド : 0 k 63 オペランド : 0 k 63 f [ 0, 1, 2 ] 実行内容 : FSR2 – k FSR2 実行内容 : FSR(f) – k FSRf 影響を受ける ステータス : なし 1110 エンコード : SUBULNK (TOS) PC 影響を受ける ステータス : 1001 ffkk kkkk 説明 : 6 ビットのリテラル「k」を、 「f」 が指定する FSR の内容から減算し ます。 ワード数 : 1 サイクル数 : 1 デコード Q2 Q3 レジスタ「f」 データを を読み出す 処理 Q4 格納先に 書き込む なし 1110 エンコード : 1001 11kk kkkk 説明: 6 ビットのリテラル「k」を、FSR2 の内容 から減算します。その後、PC に TOS を ロードして、RETURN を実行します。 この命令は 2 サイクルで実行され、2 サイ クル目は NOP が実行されます。 これは、SUBFSR 命令で f = 3 (2 進数「11」 である特殊な場合と考えることができま す。この命令は FSR2 でのみ動作します。 ワード数 : 1 サイクル数 : 2 1/4 サイクルの動作 : Q1 Subtract Literal from FSR2 and Return 1/4 サイクルの動作 : Q1 SUBFSR 2, 23h 例: 命令実行前 FSR2 命令実行後 FSR2 デコード = 03FFh = 03DCh 動作なし Q2 動作なし 命令実行前 FSR2 PC 命令実行後 FSR2 PC Preliminary 動作なし Q4 格納先に 書き込む 動作なし SUBULNK 23h 例: 2009 Microchip Technology Inc. Q3 レジスタ「f」 データを を読み出す 処理 = = 03FFh 0100h = = 03DCh (TOS) DS41303E_JP - ページ 357 PIC18F2XK20/4XK20 24.2.3 注: インデックス付きリテラル オフセット モードのバイト指向命令とビット指向 命令 PIC18の拡張命令セットを有効にすること により、レガシー アプリケーションの動 作にエラーが出たり、まったく動作しなく なることがあります。 拡張命令セットを有効にすると、拡張セットの新し い 8 個の命令だけでなく、インデックス付きリテラ ル オフセット アドレス指定モードも有効になりま す (5.5.1 項「リテラル オフセットによる インデッ クス付きアドレス指定」を参照 )。これにより、PIC18 の標準命令セットの多くのコマンドの解釈方法に 大きな影響を与えます。 拡張セットを無効にしているときには、オペコード に埋め込まれたアドレスは、アクセス バンク内の ロケーション (「a」= 0)、または BSR が指定する GPR バンク内のロケーション (「a」= 1) という、メ モリのリテラル ロケーションとして扱われます。た だし、拡張命令セットを有効にし、かつ「a」= 0 の ときには、5Fh 以下のファイル レジスタ引き数は、 リテラル アドレスではなく、FSR2 のポインタ力の オフセットとして解釈されます。具体的には、拡張 命令セットが有効なときには、アクセス RAM の ビットを引き数として使用するすべての命令、つま りバイト指向命令およびビット指向命令のすべて ( コア PIC18 の命令のほぼ半数 ) の動作が異なると いうことです。 FSR2 の内容が 00h の場合、アクセス RAM の境界 が根本的に元の値に再マップされます。これは、後 方互換コードを作成するときに便利です。この手法 を使用する場合、C とアセンブリのルーチンの間で 移動するときに、スタック ポインタを保持するた めに、FSR2 の値の保存やリストアの必要があるこ とがあります。また、拡張命令セットのシンタック スの要件も念頭に置く必要があります 24.2.3.1 項 「拡張命令のシンタックスとPIC18の標準コマンド」 を参照 )。 インデックス付きリテラル オフセット アドレス指 定モードは、スタックやポインタの動的操作に非常 に便利ですが、その一方で単純な算術計算を不正な レジスタで実行した場合には非常に面倒になるこ とがあります。PIC18 のプログラミングに慣れてい るユーザーは、拡張命令セットを有効にしたときに は、5Fh 以下のレジスタ アドレスはインデックス付 きリテラル オフセット アドレス指定に使用される ことに注意する必要があります。 インデックス付きリテラル オフセット アドレス指 定モードのバイト指向命令とビット指向命令の典 型的な例を以降のページに示し、命令が受ける影響 を示します。例に示すオペランドの条件は、これら のタイプの命令すべてに適用できます。 DS41303E_JP - ページ 358 24.2.3.1 拡張命令のシンタックスと PIC18 の 標準コマンド 拡張命令セットが有効なときには、標準のバイト指 向命令やビット指向命令のファイル レジスタ引き 数「f」がリテラル オフセット値「k」に置き換えら れます。前述したように、これは「f」が 5Fh 以下 のときのみ発生します。オフセット値を使用すると きには、大かっこ ([ ]) で囲んで示す必要がありま す。拡張命令と同様に、大かっこはコンパイラに、 値をインデックスまたはオフセットとして解釈す ることを指示します。大かっこを省略したり、5Fh よ り 大 き い 値 を 大 か っ こ で 囲 ん だ り す る と、 MPASM アセンブラでエラーが発生します。 インデックス付きリテラル オフセット アドレス指 定でインデックス引き数が適切に大かっこで囲ま れており、アクセス RAM の引き数が指定されてい ない場合は、この引き数は自動的に「0」と見なさ れます。これは、ターゲット アドレスの基礎とし て「a」が設定されている標準動作 ( 拡張命令セッ トが無効 ) とは異なります。このモードでアクセス RAM ビットを宣言しても、MPASM アセンブラで エラーが発生します。 格納先の引き数「d」は、以前と同様に機能します。 最新バージョンの MPASM™ アセンブラでは、拡張 命令セットの言語サポートを明示的に起動する必 要があります。この起動は、コマンドライン オプ ション /y、 またはソース リストの PE ディレクティ ブで行います。 24.2.4 拡張命令セットを有効にするときの 注意点 拡張命令セットが一部のユーザーにとって利点に ならない可能性があることに注意してください。特 に、ソフトウェア スタックを使用するコードを作 成しないユーザーには、拡張命令セットを使用する 利点がない場合があります。 更に、インデックス付きリテラル オフセット アド レス指定モードは、レガシー アプリケーションを PIC18 アセンブラで作成すると問題を引き起こすこ とがあります。この理由は、レガシー コードの命 令が、アクセス バンク内の 5Fh 未満のレジスタを アドレス指定しようとするからです。拡張命令セッ トを有効にすると、これらのアドレスは FSR2 から のリテラル オフセットとして解釈されるので、ア プリケーションが不正なデータ アドレスに対して、 読み出しや書き込みを行うことがあります。 アプリケーションを PIC18F2XK20/4XK20 に移植す るときには、コードのタイプを考慮することが非常 に重要です。C 言語で作成され、効率的なコンパイ ルの恩恵を受ける大型のリエントラント アプリ ケーションは、拡張命令セットを使用する場合に良 好に動作します。アクセス バンクを多用するレガ シー アプリケーションは、拡張命令を使用するこ との利点を活用できない可能性が非常に高いです。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 ADDWF ADD W to Indexed (Indexed Literal Offset mode) BSF Bit Set Indexed (Indexed Literal Offset mode) シンタックス : ADDWF シンタックス : BSF [k], b オペランド : 0 k 95 d [0,1] オペランド : 0 f 95 0b7 実行内容 : (W) + ((FSR2) + k) dest 実行内容 : 1 ((FSR2) + k)<b> 影響を受ける ステータス : なし [k] {,d} 影響を受けるステー N, OV, C, DC, Z タス: 0010 エンコード: 説明 : kkkk kkkk W の内容を、FSR2 のオフセット値「k」 が示すレジスタの内容に加算します。 「d」が「0」の場合、結果は W に書き 込まれます。 「d」が「1」の場合、結 果はレジスタ「f」に書き込まれます ( デフォルト )。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード 例: 01d0 「k」を読み 出す ADDWF Q4 データを 処理 格納先に 書き込む 17h 2Ch 0A00h 20h = = 37h 20h kkkk ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q2 Q3 Q4 レジスタ「f」 データを を読み出す 処理 BSF 例: 命令実行前 FLAG_OFST FSR2 0A0Ah の内容 命令実行後 0A0Ah の内容 [OFST] , 0 = = = = kkkk FSR2 のオフセット値「k」が示すレジ スタのビット「b」をセットします。 デコード Q3 bbb0 説明 : Q1 Q2 命令実行前 W OFST FSR2 0A2Ch の内容 命令実行後 W 0A2Ch の内容 1000 エンコード : 格納先に 書き込む [FLAG_OFST], 7 = = = 0Ah 0A00h 55h = D5h SETF Set Indexed (Indexed Literal Offset mode) シンタックス : SETF [k] オペランド : 0 k 95 実行内容 : FFh ((FSR2) + k) 影響を受ける ステータス : なし 0110 エンコード: 1000 kkkk kkkk 説明 : FSR2 のオフセット値「k」が示すレジ スタの内容を FFh に設定します。 ワード数 : 1 サイクル数 : 1 1/4 サイクルの動作 : Q1 デコード 例: Q2 「k」を読み 出す SETF 命令実行前 OFST FSR2 0A2Ch の内容 命令実行後 0A2Ch の内容 2009 Microchip Technology Inc. Preliminary Q3 Q4 データを 処理 レジスタに 書き込む [OFST] = = = 2Ch 0A00h 00h = FFh DS41303E_JP - ページ 359 PIC18F2XK20/4XK20 24.2.5 マイクロチップ社の MPLAB® IDE ツールに関する特別な注意点 マイクロチップ社の最新バージョンのソフトウェ ア ツールは、PIC18F2XK20/4XK20 デバイス ファミ リの拡張命令セットをフル サポートするように設 計されています。ソフトウェア ツールは、MPLAB C18 C コンパイラ、MPASM アセンブリ言語、およ び MPLAB 統合開発環境 (IDE) を装備しています。 ソフトウェア開発のターゲット デバイスを選択す るときに、MPLAB IDE は、デバイスの構成ビット を自動的にデフォルトに設定します。XINST 構成 ビットのデフォルト設定は「0」で、拡張命令セッ トとインデックス付きリテラル オフセット アドレ ス指定モードは無効です。拡張命令セットの利点を 活用するように、実行アプリケーションを適切に開 発するには、プログラミングで XINST をセットす る必要があります。 拡張命令セットを使用するソフトウェアを開発す るには、言語ツールで拡張命令とインデックス付き アドレス指定モードのサポートを有効にする必要 があります。使用する環境により、これは次に示す 方法で実行できます。 • 環境内のメニュー オプションまたはダイアログ ボックスで、言語ツールとプロジェクトの設定 を指定する • コマンドライン オプション • ソース コードのディレクティブ これらのオプションは、コンパイラ、アセンブラ、 および開発環境によって異なります。開発システム に付属のマニュアルから、適切な情報を参照するこ とをお勧めします。 DS41303E_JP - ページ 360 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 25.0 25.1 開発サポート PIC® マイクロコントローラは、 次に示すさまざまな ハードウェア開発ツールおよびソフトウェア開発 ツールでサポートされています。 • 統合開発環境 (IDE) - MPLAB® IDE ソフトウェア • アセンブラ / コンパイラ / リンカー - MPASM™ アセンブラ - MPLAB C18 および MPLAB C30 C コンパイラ - MPLINK™ オブジェクト リンカー / MPLIB™ オブジェクト ライブラリアン - MPLAB ASM30 アセンブラ / リンカー / ライブラリ • シミュレータ - MPLAB SIM ソフトウェア シミュレータ • エミュレータ - MPLAB ICE 2000 インサーキット エミュ レータ - MPLAB REAL ICE™ インサーキット エミュレータ • インサーキット デバッガ - MPLAB ICD 2 • デバイス プログラマ - PICSTART® Plus デバイス プログラマ - MPLAB PM3 デバイス プログラマ - PICkit™ 2 開発用プログラマ • 低価格のデモンストレーションおよび開発 ボードと評価キット MPLAB 統合開発環境ソフトウェア MPLAB IDE ソフトウェアを使用することで、従来 の 8/16 ビットマイクロコントローラ市場では考え られないほど、ソフトウェア開発が容易になりま す。MPLAB IDE は Windows® オペレーティング シ ステムをベースにしたアプリケーションで、次のよ うな特徴があります。 • すべてのデバッグ ツールに共通の GUI - シミュレータ - プログラマ ( 別売り ) - エミュレータ ( 別売り ) - インサーキット デバッガ ( 別売り ) • 色分けコンテキスト対応のフル機能エディタ • 複数のプロジェクト管理機能 • コンテンツを直接編集できるカスタマイズ可 能なデータウィンドウ • 高レベルなソースコードのデバッグ • レジスタの初期化を容易にするビジュアル デバイス イニシャライザ • マウス オーバーによる変数内容の表示 • ドラッグ & ドロップによるソースの変数表示 • 充実したオンライン ヘルプ • サード パーティ ツールの統合 ( 例 : HI-TECH Software 社製 C コンパイラおよ び IAR 社製 C コンパイラ ) MPLAB IDE を使用すると、次の操作が可能となり ます。 • ソース ファイル ( アセンブリまたは C) の編集 • ワンタッチでのアセンブル ( またはコンパイル ) と PIC MCU エミュレータおよびシミュレータ ツールへのダウンロード ( すべてのプロジェク ト情報を自動更新 ) • 次を使用したデバッグ - ソース ファイル(アセンブリ言語またはC言語) - アセンブリ言語と C 言語の混合 - マシン コード MPLAB IDE は、コスト効率の高いシミュレータか ら低価格のインサーキット デバッガおよびフル機 能のエミュレータに至る複数のデバッグツールを 単一の開発パラダイムでサポートしています。これ により、柔軟性と機能を高めたツールにアップグ レードした場合でも、短期間でその使用方法が習得 できます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 361 PIC18F2XK20/4XK20 25.2 MPASM アセンブラ MPASM アセンブラは、すべての PIC MCU に対応す るフル機能のユニバーサル マクロ アセンブラです。 MPASM アセンブラは、MPLINK オブジェクト リン カ ー 用 の 再 配 置 可 能 な オ ブ ジ ェ ク ト フ ァ イ ル、 Intel® 標準 HEX ファイル、メモリ使用量と記号参照 を説明する MAP ファイル、ソース ラインと生成さ れたマシン コードを含む絶対 LST ファイル、 デバッ グ用 COFF ファイルを生成します。 MPASM アセンブラには次の特徴があります。 • MPLAB IDE プロジェクトへの統合 • ユーザー定義マクロによる アセンブリ コード の簡略化 • 多用途ソースファイルに対応する条件付き アセンブリ • アセンブリ プロセスの完全な制御を可能にする ディレクティブ 25.3 MPLAB C18 および MPLAB C30 C コンパイラ MPLAB C18 および MPLAB C30 コード開発システ ムは、マイクロチップ社の PIC18/PIC24 ファミリの マイクロコントローラおよび dsPIC30/dsPIC33 ファ ミリのデジタル シグナル コントローラに対応す る、完全な ANSI C コンパイラです。これらのコン パイラは強力な統合機能と優れたコード最適化機 能を備え、他のコンパイラにない使いやすさを実現 しています。 ソース レベルのデバッグを容易にするため、これ らのコンパイラは最適化された記号情報を MPLAB IDE デバッガに提供します。 オブジェクト リンカー / ライブラリには、次の機能 が含まれています。 • 多数の小さいファイルの代わりに、1 つのライ ブラリを効果的にリンクする • 関連モジュールをグループ化することにより、 コードを保守しやすくする • モジュールのリスト作成、置換、削除、抽出 が簡単なライブラリを柔軟に作成する 25.5 MPLAB ASM30 アセンブラ、 リンカー、ライブラリアン MPLAB ASM30 アセンブラは、記号アセンブリ言語 から dsPIC30F デバイス向けの再配置可能マシン コードを生成します。MPLAB C30 C コンパイラは このアセンブラを使用してオブジェクト ファイル を生成します。アセンブラは、アーカイブ化でき る、または他の再配置可能オブジェクト ファイル およびアーカイブとリンクできる再配置可能なオ ブジェクトファイルを生成し、実行ファイルを作成 します。アセンブラの主な機能は次のとおりです。 • dsPIC30F 命令セット全体のサポート • 固定小数点データおよび浮動小数点データの サポート • コマンドライン インタフェース • 豊富なディレクティブ セット • 柔軟性に優れたマクロ言語 • MPLAB IDE との互換性 25.6 MPLAB SIM ソフトウェア シミュ レータ MPLINK オブジェクト リンカーは、MPASM アセン ブラと MPLAB C18 C コンパイラによって作成され た再配置可能なオブジェクトを結合します。このオ ブジェクト リンカーは、リンカースクリプトから のディレクティブを使用し、コンパイル済みライブ ラリから再配置可能なオブジェクトをリンクでき ます。 MPLAB SIM ソフトウェア シミュレータでは、PIC MCU および dsPIC® DSC を 1 つの命令レベルでシ ミュレートすることにより、PC ホスト環境での コード開発を可能にしています。任意の命令でデー タ領域を検証または変更でき、総合的なスティミュ ラス コントローラから外部信号を加えることがで きます。ランタイム分析を詳しく実行する場合、レ ジスタをファイルに記録できます。また、トレース バッファおよびロジック アナライザ ディスプレイ を使用すると、シミュレータの機能を拡張して、プ ログラムの実行、I/O の動作、大部分の周辺機能と 内部レジスタを記録および確認できます。 MPLIB オブジェクト ライブラリアンは、コンパイ ル済みコードのライブラリ ファイルの作成と変更 を管理します。ライブラリのルーチンがソース ファ イルから呼び出されると、そのルーチンが含まれて いるモジュールのみがアプリケーションにリンク されます。これにより、大きなライブラリを多様な アプリケーションで効率的に使用できます。 MPLAB SIM ソフトウェア シミュレータは、 MPLAB C18 および MPLAB C30 C コンパイラと MPASM お よび MPLAB ASM30 アセンブラを使用した記号デ バッグをフルサポートしています。このソフトウェ ア シミュレータは、ハードウェアのラボ環境にない コードの開発およびデバッグに対して柔軟性を備 えた経済的で優れたソフトウェア開発ツールです。 25.4 MPLINK オブジェクト リンカー / MPLIBオブジェクト ライブラリアン DS41303E_JP - ページ 362 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 25.7 MPLAB ICE 2000 高性能 インサーキット エミュレータ MPLAB ICE 2000 インサーキット エミュレータは製 品開発エンジニア向けの製品であり、PIC マイクロ コントローラ用のマイクロコントローラ設計ツー ル一式が付属しています。MPLAB ICE 2000 イン サーキット エミュレータのソフトウェア制御は、 MPLAB 統合開発環境によって機能向上が図られ、 1 つの環境から編集、ビルド、ダウンロード、ソー スデバッグができるようになりました。 MPLAB ICE 2000 は、拡張トレース、トリガ、デー タ モニタ機能を備えたフル機能エミュレータ シス テムです。交換可能なプロセッサ モジュールを採 用しているため、異なるプロセッサのエミュレー ションに応じて、システムを簡単に再設定できま す。MPLAB ICE 2000 インサーキット エミュレータ のアーキテクチャは、拡張することにより、新しい PIC マイクロコントローラをサポートできます。 MPLAB ICE 2000 インサーキット エミュレータ シ ステムは、通常はるかに高価な開発ツールに見られ る高度な機能を持つリアルタイム エミュレーショ ン システムとして設計されたものです。シンプル な統一アプリケーションにおいて、これらの機能を 最も効果的に使用するには、PC プラットフォーム と Microsoft® Windows® 32 ビット オペレーティング システムの組み合わせが最適です。 25.8 MPLAB REAL ICE インサーキット エミュレータ システム MPLAB REAL ICE インサーキット エミュレータ シ ステムは、マイクロチップ社の次世代型高速エミュ レータで、マイクロチップ社のフラッシュDSC デバ イスおよび MCU デバイスに対応しています。 MPLAB 統合開発環境 (IDE) の使いやすく強力なグ ラフィカル ユーザー インターフエース(GUI)を利用 して、PIC® フラッシュ MCU および dsPIC® フラッ シュ DSC のデバッグとプログラムが実行できます。 MPLAB IDE は、このエミュレータ システムのキッ トに同梱されています。 MPLAB REAL ICE プローブは、高速 USB2.0 イン ターフェースを使用して設計エンジニアの PC に接 続します。ターゲットとの接続には、MPLAB ICD 2 で採用されている一般的な接続方式 (RJ11) に対応 したコネクタか、ノイズ耐性に優れた低電圧差動信 号(LVDS)方式の新しい高速相互接続規格 (CAT5) に 対応したコネクタのいずれかを使用します。 MPLAB REAL ICE は、今後リリースされるファーム ウェアを MPLAB IDE からダウンロードすることに より、ユーザーが現場でアップグレードできます。 MPLAB IDE の今後のリリースでは、新しいデバイ スをサポートしていく予定です。また、ソフトウェ ア ブレークポイントやアセンブラコードのトレー スなどの新しい機能の追加も予定されています。 MPLAB REAL ICE には、競合エミュレータに比べ大 2009 Microchip Technology Inc. きく優れた点が複数あります。例えば、低価格の他 に、フルスピードでのエミュレーション、リアルタ イム変数監視、トレース解析、および複雑なブレー クポイント設定が可能である点、耐久性の高いプ ローブインターフェースを備え、相互接続に長い ケーブル ( 最長 3m) を使用できる点が挙げられます。 25.9 MPLAB ICD 2 インサーキット デバッガ マイクロチップ社の MPLAB ICD 2 インサーキット デバッガは、RS-232 または高速 USB インタフェー スでホスト PC と接続する強力かつ低価格のランタ イム開発ツールです。このツールはフラッシュ PIC MCU をベースにしており、PIC MCU および dsPIC DSC 向けの開発に使用できます。MPLAB ICD 2 は、 フラッシュ デバイスに組み込まれているインサー キット デバッグ機能を使用します。この機能とマ イ ク ロ チ ッ プ 社 の In-Circuit Serial Programming™ (ICSP™) プロトコルを組み合わせると、MPLAB 統 合開発環境の GUI で、コスト効率の高い、フラッ シュ デバイスのインサーキット デバッグを実現で きます。これにより、設計者はブレークポイント、 個々のステップ変数およびウォッチ変数、CPU ス テータスおよび周辺レジスタを設定し、ソース コー ドを開発およびデバッグできます。また、最高速度 で実行すると、リアルタイムでハードウェアおよび アプリケーションがテストできます。MPLAB ICD 2 は、特定の PIC デバイスの開発プログラマとしても 機能します。 25.10 MPLAB PM3 デバイス プログラマ MPLAB PM3 デバイス プログラマは CE 準拠のユニ バーサル デバイス プログラマで、VDDMIN および VDDMAX でのプログラマブル電圧検証によって信 頼性を最大限に向上させます。このデバイス プロ グラマには、メニューとエラー メッセージを表示 する大型 LCD ディスプレイ (128 × 64) と、さまざま なパッケージ タイプへの対応を可能にする脱着式 のモジュラソケット アセンブリが装備されていま す。ICSP™ ケーブル アセンブリは標準付属品です。 スタンドアロン モードの場合、MPLAB PM3 デバイ ス プログラマは、PC を使用せずに PIC デバイスの 読み取り、検証、プログラムを実行できます。この モードでは、コード プロテクションも設定できま す。MPLAB PM3 とホスト PC との接続には、RS-232 または USB ケーブルを使用します。さらに、大容 量メモリ デバイスの高速プログラムを可能にする 最適化アルゴリズムと高速通信を備え、ファイル保 存とデー タ保護アプリケー ションのための SD/ MMC カードを内蔵しています。 Preliminary DS41303E_JP - ページ 363 PIC18F2XK20/4XK20 25.11 PICSTART Plus 開発用プログラマ PICSTART Plus 開発用プログラマは、低価格でユー ザーフレンドリーなプロトタイプ プログラマです。 PC との接続には、COM (RS-232) ポートを使用しま す。MPLAB 統合開発環境ソフトウェアを使用する と、プ ロ グ ラ マ が 簡 単 か つ 効 率 的 に な り ま す。 PICSTART Plus 開発用プログラマは、40 ピン以下の DIP パッケージ採用の PIC デバイスのほとんどをサ ポートします。PIC16C92X や PIC17C76X など、 40 ピンを超えるデバイスの場合、アダプタソケッ トを使用することで対応できます。PICSTART Plus 開発用プログラマは、CE に準拠しています。 25.12 PICkit 2 開発用プログラマ PICkit™ 2 開発用プログラマは、インタフェースが 容易な低価格プログラマで、多くのユーザーに選ば れているフラッシュ デバイス デバッガです。この ツールでは、マイクロチップ社のベースライン、 ミッドレンジ、PIC18F ファミリのフラッシュ メモ リ マイクロコントローラのほとんどがプログラム できます。PICkit 2 スタータキットには、プロトタ イプ開発ボード 1 個、12 回のレッスンからなる学 習ハ ンド ブッ ク、ソ フト ウェ ア、HI-TECH 社 製 PICC™ Lite C コンパイラが含まれており、PIC® マ イクロコントローラを使用してすぐに開発を始め ることができます。このキットには、マイクロチッ プ社の高性能なミッドレンジ フラッシュ メモリ ファミリのマイクロコントローラを使用してアプ リケーションをプログラム、評価、開発する際に必 要なものがすべて含まれています。 DS41303E_JP - ページ 364 25.13 デモンストレーションボード、 開発ボード、評価ボード さまざまな PIC MCU と dsPIC DSC に対応するデモ ンストレーション ボード、開発ボード、評価ボード が豊富に取り揃えられ、フルに機能するシステムで アプリケーションを迅速に開発できます。ほとんど のボードには、カスタム回路を追加するためのプロ トタイプ領域があります。また、アプリケーション ファームウェアとソース コードが提供されている ため、検査および変更が可能です。 ボードは、LED、温度センサ、スイッチ、スピーカ、 RS-232 インタフェース、LCD ディスプレイ、ポテン ショメータ、追加 EEPROM メモリなど、さまざまな 機能をサポートします。 デモンストレーション ボードと開発ボードは、教 材として、プロトタイプのカスタム回路の試作やさ まざまなマイクロコントローラ アプリケーション に関する学習などを目的として使用できます。 PICDEM™ および dsPICDEM™ デモンストレーショ ン / 開発ボード シリーズの回路の他に、マイクロ チップ社では、アナログフィルタ設計、KEELOQ® セ キュリティ IC、CAN、IrDA®、SEEVAL® 評価システ ム、Sigma-Delta ADC、流量感知などに対応する評 価キットおよびデモンストレーション ソフトウェ アを取り揃えています。 マイクロチップ社のウェブ ページ (www.microchip. com) にアクセスして、デモンストレーション ボー ド、開発ボード、評価キットの一覧をご確認くだ さい。 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 26.0 電気的特性 絶対最大定格 (†) バイアス下での周囲温度 ............................................................................................................................-40C ~ +125C 保管温度 ........................................................................................................................................................-65C ~ +150C VSS に対する任意のピンの電圧 (VDD および MCLR を除く ) .................................................... -0.3V ~ (VDD + 0.3V) VSS に対する VDD 電圧 ..................................................................................................................................-0.3V ~ +5.0V VSS に対する MCLR の電圧 ( 注 2).................................................................................................................0V ~ +12.5V 合計消費電力 ( 注 1)........................................................................................................................................................ 1.0W VSS ピンの最大出力電流............................................................................................................................................300 mA VDD ピンの最大入力電流...........................................................................................................................................250 mA 入力クランプ電流、IIK (VI < 0 または VI > VDD) 20 mA 出力クランプ電流、IOK (VO < 0 または VO > VDD)20 mA 各 I/O ピンの最大出力シンク電流 ..............................................................................................................................25 mA 各 I/O ピンの最大出力ソース電流 ..............................................................................................................................25 mA すべてのポートの最大シンク電流 ...........................................................................................................................200 mA すべてのポートの最大ソース電流 ...........................................................................................................................200 mA 注 1: 2: 消費電力は次の式で計算されます。 Pdis = VDD x {IDD – IOH} + {(VDD – VOH) x IOH} + (VOL x IOL) ラッチアッ MCLR/VPP/RE3 ピンに VSS を下回る電圧スパイク (80 mA を超える電流を誘起 ) があると、 プが発生する場合があります。このため、MCLR/VPP/RE3 ピンに「Low」レベルを印加する場合は、 このピンを直接 VSS にプルダウンするのではなく、50 ~ 100 オームの直列抵抗を使用してください † 注意 : 上記の「絶対最大定格」を超えるストレスを加えると、デバイスに修復不能な損傷を与える可能性が あります。絶対最大定格は定格ストレスのみを示すものであり、上記の状態または本仕様書の動作条件に示 されている規定値を超える状態でデバイスが正常に機能することを示すものではありません。最大定格の状 態に長時間放置すると、デバイスの信頼性に影響を与える場合があります。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 365 PIC18F2XK20/4XK20 図 26-1: PIC18F2XK20/4XK20 の電圧と周波数のグラフ ( 拡張 ) 3.5V 3.0V Voltage 2.7V 2.2V 1.8V 10 20 30 32 40 48 50 60 64 50 60 64 Frequency (MHz) 注 : 最大周波数 20 MHz、1.8V ~ 3.0V、-40C ~ +125C 最大周波数 48 MHz、3.0V ~ 3.6V、-40C ~ +125C 図 26-2: PIC18F2XK20/4XK20 の電圧と周波数のグラフ ( 工業用 ) 3.5V 3.0V Voltage 2.7V 2.2V 1.8V 10 20 30 32 40 Frequency (MHz) 注 : 最大周波数 20 MHz、1.8V ~ 3.0V、-40C ~ +85C 最大周波数 64 MHz、3.0V ~ 3.6V、-40C ~ +85C DS41303E_JP - ページ 366 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 26.1 DC 特性 : 電源電圧、PIC18F2XK20/4XK20 PIC18F2XK20/4XK20 Param Symbol No. Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Characteristic Min Typ Max Units D001 VDD Supply Voltage 1.8 — 3.6 V D002 VDR RAM Data Retention Voltage(1) 1.5 — — V D003 VPOR VDD Start Voltage to ensure internal Power-on Reset signal — — 0.7 V D004 SVDD VDD Rise Rate to ensure internal Power-on Reset signal 0.05 — — D005 VBOR Brown-out Reset Voltage 1.8 — — BORV<1:0> = 11 Conditions See section on Power-on Reset for details V/ms See section on Power-on Reset for details V BORV<1:0> = 10 — 2.3 — V BORV<1:0> = 01 — 2.8 — V BORV<1:0> = 00 — 3.1 — V 注 1: これはスリープ モードまたはデバイスのリセット中に、RAM データを失わずに VDD を低下できる 下限値です。 26.2 DC 特性 : パワーダウン電流、PIC18F2XK20/4XK20 PIC18F2XK20/4XK20 Param No. D006 Device Characteristics Typ Power-down Current (IPD)(1) 0.1 1.0 A -40°C 0.1 1.0 A +25°C 0.4 3.0 A +85°C 2 — A +125°C D007 注 1: Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Max Units Conditions 0.1 1.0 A -40°C 0.2 1.0 A +25°C 0.5 3.0 A +85°C 3 — A +125°C VDD = 1.8V, (Sleep mode) VDD = 3.0V, (Sleep mode) スリープ モードのパワーダウン電流は、オシレータの種類には依存しません。パワーダウン電流は、 デバイスをスリープモードにし、すべての I/O ピンをハイインピーダンス状態で VDD または VSS に接 続し、デルタ電流を加える機能 (WDT、Timer1 オシレータ、BOR など ) をすべて無効にして測定します。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 367 PIC18F2XK20/4XK20 26.3 DC 特性 : RC 動作時の消費電流、PIC18F2XK20/4XK20 PIC18F2XK20/4XK20 Param No. Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Device Characteristics Typ Supply Current (IDD)(1, 2) 6 9 A -40°C 7 10 A +25°C 8 14 A +85°C 11 — A +125°C 11 15 A -40°C 12 16 A +25°C 16 25 A +85°C 26 — A +125°C D009 0.4 0.5 mA -40°C to +85°C VDD = 1.8V D009A 0.6 0.8 mA -40°C to +85°C VDD = 3.0V D010 2.1 2.5 mA -40°C to +85°C VDD = 1.8V D010A 3.7 4.4 mA -40°C to +85°C VDD = 3.0V D008 D008A 注 1: 2: Max Units Conditions VDD = 1.8V FOSC = 31 kHz (RC_RUN mode, LFINTOSC source) VDD = 3.0V FOSC = 1 MHz (RC_RUN mode, HF-INTOSC source) FOSC = 16 MHz (RC_RUN mode, HF-INTOSC source) 消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの 負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ り、これらも消費電流に影響を与えます。 アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。 OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、 VDD にプル。 MCLR = VDD、WDT は指定どおりに有効 / 無効にする。 オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、 Ir = VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。 DS41303E_JP - ページ 368 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 26.4 DC 特性 : RC アイドル時の消費電流、PIC18F2XK20/4XK20 PIC18F2XK20/4XK20 Param No. Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Device Characteristics Typ Supply Current (IDD)(1, 2) 2 5 A -40°C 2 5 A +25°C 3 9 A +85°C 8 — A +125°C 4 8 A -40°C 5 10 A +25°C 9 20 A +85°C 20 — A +125°C D012 300 400 A -40°C to +85°C VDD = 1.8V D012A 450 600 A -40°C to +85°C VDD = 3.0V D013 0.95 1.20 mA -40°C to +85°C VDD = 1.8V D013A 1.6 2.0 mA -40°C to +85°C VDD = 3.0V D011 D011A 注 1: 2: Max Units Conditions VDD = 1.8V FOSC = 31 kHz (RC_IDLE mode, LFINTOSC source) VDD = 3.0V FOSC = 1 MHz (RC_IDLE mode, HF-INTOSC source) FOSC = 16 MHz (RC_IDLE mode, HF-INTOSC source) 消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの 負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ り、これらも消費電流に影響を与えます。 アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。 OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、 VDD にプル。 MCLR = VDD、WDT は指定どおりに有効 / 無効にする。 オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、 Ir = VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 369 PIC18F2XK20/4XK20 26.5 DC 特性 : プライマリ動作時の消費電流、PIC18F2XK20/4XK20 PIC18F2XK20/4XK20 Param No. Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Device Characteristics Typ Max Units Supply Current (IDD)(1, 2) 0.35 0.45 mA -40°C to +85°C VDD = 1.8V D014A 0.55 0.75 mA -40°C to +85°C VDD = 3.0V D015 D015A 2.3 2.8 mA -40°C to +85°C VDD = 1.8V 4.1 5.0 mA -40°C to +85°C VDD = 3.0V 11.5 14.0 mA -40°C to +85°C VDD = 3.0V 2.0 2.6 mA -40°C to +85°C VDD = 1.8V 3.5 4.5 mA -40°C to +85°C VDD = 3.0V 12 15 mA -40°C to +85°C VDD = 3.0V D014 D016 D017 D017A Conditions D018 注 1: 2: 26.6 消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの 負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ り、これらも消費電流に影響を与えます。 アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。 OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、 VDD にプル。 MCLR = VDD、WDT は指定どおりに有効 / 無効にする。 オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、 Ir = VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。 DC 特性 : プライマリ アイドル時の消費電流、PIC18F2XK20/4XK20 PIC18F2XK20/4XK20 Param No. Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Device Characteristics Typ Supply Current (IDD)(1, 2) 50 70 A -40°C to +85°C VDD = 1.8V D019A 100 150 A -40°C to +85°C VDD = 3.0V D020 D020A 0.9 1.1 mA -40°C to +85°C VDD = 1.8V 1.6 1.9 mA -40°C to +85°C VDD = 3.0V 5.0 7.0 mA -40°C to +85°C VDD = 3.0V D019 FOSC = 1 MHz (PRI_RUN, EC oscillator) FOSC = 20 MHz (PRI_RUN, EC oscillator) FOSC = 64 MHz (PRI_RUN, EC oscillator) FOSC = 4 MHz 16 MHz Internal (PRI_RUN HS+PLL) FOSC = 16 MHz 64 MHz Internal (PRI_RUN HS+PLL) D021 Max Units Conditions FOSC = 1 MHz (PRI_IDLE mode, EC oscillator) FOSC = 20 MHz (PRI_IDLEmode, EC oscillator) FOSC = 64 MHz (PRI_IDLEmode, EC oscillator) 記号の説明 : TBD= 未定 注 1: 消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの 負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ り、これらも消費電流に影響を与えます。 アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。 OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、 VDD にプル。 MCLR = VDD、WDT は指定どおりに有効 / 無効にする。 2: オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、 Ir = VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。 DS41303E_JP - ページ 370 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 26.7 DC 特性 : セカンダリ オシレータの消費電流、PIC18F2XK20/4XK20 PIC18F2XK20/4XK20 Param No. D022 Device Characteristics Typ Supply Current (IDD)(1, 2) 6 9 A -40°C 7 10 A +25°C 8 14 A +85°C D022A D023 D023A 注 1: 2: 3: Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Max Units Conditions 11 15 A -40°C 12 16 A +25°C 16 25 A +85°C 2 5 A -40°C 2 5 A +25°C 3 9 A +85°C 4 8 A -40°C 5 10 A +25°C 9 20 A +85°C VDD = 1.8V VDD = 3.0V VDD = 1.8V VDD = 3.0V FOSC = 32 kHz(3) (SEC_RUN mode, Timer1 as clock) FOSC = 32 kHz(3) (SEC_IDLE mode, Timer1 as clock) 消費電流は主に動作電圧、周波数、およびモードによって変化します。他の要素として、I/O ピンの 負荷とスイッチング レート、オシレータのタイプと回路、内部コードの実行パターン、温度などがあ り、これらも消費電流に影響を与えます。 アクティブ動作モードでは、すべての IDD 測定に関して、次のテスト条件が適用されます。 OSC1 は外部からフルスイングの方形波で駆動。全 I/O ピンはトライステートとして構成し、 VDD にプル。 MCLR = VDD、WDT は指定どおりに有効 / 無効にする。 オシレータを RC 構成とした場合、REXT を流れる電流は含まれません。抵抗を流れる電流は、Ir = VDD/2REXT (mA) の式で概算できます (REXT の単位は k)。 T1 オシレータは低消費電力モード。低消費電力モードは 85C に制限されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 371 PIC18F2XK20/4XK20 26.8 DC 特性 : 周辺モジュールの消費電力、PIC18F2XK20/4XK20 Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C PIC18F2XK20/4XK20 Param No. Device Characteristics Typ Max Units Conditions Module Differential Currents (IWDT, IBOR, IHLVD, IOSCB, IAD) D024 (IWDT) Watchdog Timer D024A (IBOR) Brown-out Reset(2) D024B (IHLVD) High/Low-Voltage Detect(2) D025 (IOSCB) Timer1 Oscillator D025A (IOSCB) D026 (IAD) Timer1 Oscillator (ICVREF) A -40C to +125C VDD = 1.8V 0.8 — A -40C to +125C VDD = 3.0V 21 — A -40C to +125C VDD = 2.0V 25 — A -40C to +125C VDD = 3.3V 0 — A -40C to +125C VDD = 3.3V 13 — A -40C to +125C VDD = 1.8-3.0V 0.5 — A -40C 0.5 — A +25C 0.6 — A +85C 0.7 — A -40C 0.7 — A +25C 0.8 — A +85C 12 — A -40C 12 — A +25C 14 — A +85C 17 — A -40C 17 — A +25C Sleep mode, BOREN<1:0> = 10 VDD = 1.8V 32 kHz on Timer1(1) VDD = 3.0V 32 kHz on Timer1(1) VDD = 1.8V 32 kHz on Timer1(3) VDD = 3.0V 32 kHz on Timer1(3) 19 — A +85C — A -40C to +125C VDD = 1.8V 275 — A -40C to +125C VDD = 3.0V Comparators 5 — A -40C to +125C VDD = 1.8-3.0V LP mode 40 — A -40C to +125C VDD = 1.8-3.0V HP mode CVREF 19 — A -40C to +125C VDD = 1.8V 32 — A -40C to +125C VDD = 3.0V (ICOMP) D028 — 210 A/D Converter D027 0.5 A/D on, not converting 記号の説明 : TBD= 未定 注 1: T1 オシレータは低消費電力モード。低消費電力モードは 85C に制限されます。 2: BOR と HLVD は、内部バンド ギャップ リファレンスを有効にします。両方のモジュールを有効にした場合、 消費電力は、両方の使用の合計よりも低くなります。 3: T1 オシレータは高消費電力モード。 DS41303E_JP - ページ 372 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 26.9 DC 特性 : 入力 / 出力特性、PIC18F2XK20/4XK20 Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C DC CHARACTERISTICS Param Symbol No. VIL Characteristic D031 with Schmitt Trigger buffer RC3 and RC4 D032 Max Units VSS 0.15 VDD V VSS VSS 0.2 VDD 0.3 VDD V V Conditions Input Low Voltage I/O ports: with TTL buffer D030 Min MCLR OSC1 VSS 0.2 VDD V D033 VSS 0.3 VDD V HS, HSPLL modes D033A D033B D034 OSC1 OSC1 T13CKI VSS VSS VSS 0.2 VDD 0.3 VDD 0.3 VDD V V V RC, EC modes(1) XT, LP modes 0.25 VDD + 0.8V VDD V 0.8 VDD 0.9 VDD 0.7 VDD VDD VDD VDD V V V 0.8 VDD VDD V D043 MCLR OSC1 0.7 VDD VDD V HS, HSPLL modes D043A D043B D043C D044 OSC1 OSC1 OSC1 T13CKI 0.8 VDD 0.9 VDD 1.6 1.6 VDD VDD VDD VDD V V V V EC mode RC mode(1) XT, LP modes — 1 A VSS VPIN VDD, Pin at high-impedance — 5 A Vss VPIN VDD D062 MCLR Analog Inputs — TBD A ANSELx = 1 D063 OSC1 — 5 A Vss VPIN VDD 50 400 A VDD = 3.0V, VPIN = VSS VIH Input High Voltage I/O ports: D040 with TTL buffer D041 with Schmitt Trigger buffer RC3 and RC4 D042 IIL D060 D061 D070 Input Leakage Current(2,3) I/O ports IPU Weak Pull-up Current IPURB PORTB weak pull-up current 2.4V < VDD < 3.6V VDD < 2.4V 記号の説明 : TBD= 未定 注 1: オシレータが RC モードの場合、OSC1/CLKIN ピンはシュミット トリガ入力です。RC モードでは、 PIC® デバイスを外部クロックで駆動しないことをお勧めします。 2: MCLR ピンのリーク電流は、印加電圧のレベルにより大きく異なります。仕様のレベルは、通常の動 作条件を反映しています。異なる入力電圧では、リーク電流が更に増加する場合があります。 3: 負電流は、ピンから供給される電流として定義されます。 4: パラメータは特性解析されたものですが、検証されていません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 373 PIC18F2XK20/4XK20 26.9 DC 特性 : 入力 / 出力特性、PIC18F2XK20/4XK20 ( 続き ) Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C DC CHARACTERISTICS Param Symbol No. VOL Characteristic Min Max Units Conditions Output Low Voltage D080 I/O ports — 0.6 V IOL = 8.5 mA, VDD = 3.0V, -40C to +85C D083 OSC2/CLKOUT (RC, RCIO, EC, ECIO modes) — 0.6 V IOL = 1.6 mA, VDD = 3.0V, -40C to +85C VOH Output High Voltage(3) D090 I/O ports VDD – 0.7 — V IOH = -3.0 mA, VDD = 3.0V, -40C to +85C D092 OSC2/CLKOUT (RC, RCIO, EC, ECIO modes) VDD – 0.7 — V IOH = -1.3 mA, VDD = 3.0V, -40C to +85C Capacitive Loading Specs on Output Pins D100(4) COSC2 OSC2 pin — 15 pF In XT, HS and LP modes when external clock is used to drive OSC1 D101 CIO All I/O pins and OSC2 (in RC mode) — 50 pF To meet the AC Timing Specifications D102 CB SCL, SDA — 400 pF I2C™ Specification 記号の説明 : TBD= 未定 注 1: オシレータが RC モードの場合、OSC1/CLKIN ピンはシュミット トリガ入力です。RC モードでは、 PIC® デバイスを外部クロックで駆動しないことをお勧めします。 2: MCLR ピンのリーク電流は、印加電圧のレベルにより大きく異なります。仕様のレベルは、通常の動 作条件を反映しています。異なる入力電圧では、リーク電流が更に増加する場合があります。 3: 負電流は、ピンから供給される電流として定義されます。 4: パラメータは特性解析されたものですが、検証されていません。 DS41303E_JP - ページ 374 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 26.10 メモリのプログラミング要件 Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C DC CHARACTERISTICS Param No. Sym Characteristic Min Typ† Max Units VDD + 4.5 — 9 V — — 10 mA 100K — — E/W 1.8 — 3.6 V Conditions Internal Program Memory Programming Specifications(1) D110 VPP Voltage on MCLR/VPP/RE3 pin D113 IDDP Supply Current during Programming D120 ED Byte Endurance D121 VDRW VDD for Read/Write D122 TDEW Erase/Write Cycle Time — 4 — ms D123 TRETD Characteristic Retention 40 — — Year Provided no other specifications are violated D124 TREF Number of Total Erase/Write Cycles before Refresh(2) 1M 10M — E/W -40C to +85C D130 EP Cell Endurance 10K — — E/W -40C to +85C (NOTE 5) D131 VPR VDD for Read 1.8 — 3.6 V D132 VIW VDD for Row Erase or Write 1.8 — 3.6 V D133 TIW Self-timed Write Cycle Time — 2 — ms D134 TRETD Characteristic Retention 40 — — Year (Note 3, Note 4) Data EEPROM Memory -40C to +85C Using EECON to read/write Program Flash Memory † 注 1: 2: 3: 4: 5: Provided no other specifications are violated 「Typ」列のデータは特に指定がない限り、3.0V、25C 時のものです。このパラメータは設計の指針としての み使用します。検証されていません。 これらの仕様は、テーブル書き込み命令を使用してオンチップ プログラム メモリをプログラムする場合のも のです。 データ EEPROM の耐久性の詳細については、7.8 項「データ EEPROM の使用」を参照してください。 単一電源プログラミングを無効にした場合にのみ必要です。 MPLAB ICD 2 は可変 VPP 出力をサポートしていません。ICD 2 を使用してプログラミングやデバッグを行うと きには、ICD 2 とターゲット システムとの間に ICD 2 の VPP 電圧を制限する回路を配置する必要があります。 自己書き込みとブロック消去。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 375 PIC18F2XK20/4XK20 26.11 AC 特性 表 26-1: コンパレータの仕様 Operating Conditions: 1.8V < VDD < 3.6V, -40°C < TA < +125°C (unless otherwise stated). Param No. CM01 Sym Characteristics VIOFF Min Input Offset Voltage Typ Max Units — ±7.5 ±40 mV High-Power mode — ±7.5 ±60 mV Low-Power mode — VDD V CM02 VICM Input Common-mode Voltage 0 CM03 CMRR Common-mode Rejection Ratio 55 — — dB CM04 TRESP Response Time — 150 400 ns CM05 TMC2OV Comparator Mode Change to Output Valid* — — 10 s * 注 1: Comments Note 1 これらのパラメータは特性解析されたものですが、検証されていません。 応答時間測定時の条件は、一方のコンパレータ入力が VDD/2、他方の入力が VSS から VDD に変化。 表 26-2: CVREF 電圧リファレンスの仕様 Operating Conditions: 1.8V < VDD < 3.6V, -40°C < TA < +125°C (unless otherwise stated). Param No. Sym Characteristics Min Typ Max Units Comments CV01* CLSB Step Size(2) — — VDD/24 VDD/32 — — V V Low Range (VRR = 1) High Range (VRR = 0) CV02* CACC Absolute Accuracy — — — — 1/4 1/2 LSb LSb Low Range (VRR = 1) High Range (VRR = 0) CV03* CR Unit Resistor Value (R) — 2k — CV04* CST Settling Time(1) — — 10 s * 注 1: 2: これらのパラメータは特性解析されたものですが、検証されていません。 セトリング タイムの測定条件は、CVRR = 1、かつ CVR3:CVR0 が「0000」から「1111」に変化して いるときです。 詳細については、21.1 項「コンパレータ電圧リファレンス」を参照してください。 表 26-3: 固定電圧リファレンス (FVR) の仕様 Operating Conditions: 1.8V < VDD < 3.6V, -40°C < TA < +125°C (unless otherwise stated). VR Voltage Reference Specifications Param No. Sym Characteristics VR voltage output Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Min Typ Max Units 1.25 1.2 1.15 V VR01 VROUT VR02 TCVOUT Voltage drift temperature coefficient — TBD TBD ppm/C VR03 VROUT /VDD — TBD — V/V VR04 TSTABLE Settling Time — TBD TBD s Voltage drift with respect to VDD regulation Comments 記号の説明 : TBD = 未定 * これらのパラメータは特性解析されたものですが、検証されていません。 DS41303E_JP - ページ 376 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 26-3: 高 / 低電圧検知の特性 VDD (HLVDIF can be cleared by software) VHLVD (HLVDIF set by hardware) HLVDIF 表 26-4: 高 / 低電圧検知の特性 Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Param Symbol No. D420 Characteristic Min Typ† Max Units HLVD Voltage on VDD LVV = 0000 Transition High-to-Low LVV = 0001 1.8 V 1.9 V LVV = 0010 2.0 V LVV = 0011 2.1 V LVV = 0100 2.2 V LVV = 0101 2.3 V LVV = 0110 2.4 V LVV = 0111 2.5 V LVV = 1000 2.6 V LVV = 1001 2.7 V LVV = 1010 2.8 V LVV = 1011 2.9 V LVV = 1100 3.0 V LVV = 1101 3.3 V LVV = 1110 3.5 V Conditions † 製品は TAMB = 25C で検証済みです。制限温度を超える仕様は、特性解析により保証されています。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 377 PIC18F2XK20/4XK20 26.12 AC ( タイミング ) 特性 26.12.1 タイミング パラメータの記号 タイミング パラメータの記号は、次のいずかの形 式で作成されています。 1. TppS2ppS 2. TppS T F Frequency Lowercase letters (pp) and their meanings: pp cc CCP1 ck CLKOUT cs CS di SDI do SDO dt Data in io I/O port mc MCLR Uppercase letters and their meanings: S F Fall H High I Invalid (High-impedance) L Low 2 I C only AA output access BUF Bus free 2 TCC:ST (I C specifications only) CC HD Hold ST DAT DATA input hold STA Start condition DS41303E_JP - ページ 378 3. TCC:ST 4. Ts (I2C™ specifications only) (I2C specifications only) T Time osc rd rw sc ss t0 t1 wr OSC1 RD RD or WR SCK SS T0CKI T13CKI WR P R V Z Period Rise Valid High-impedance High Low High Low SU Setup STO Stop condition Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 26.12.2 タイミング条件 表 26-5 の温度と電圧の仕様は、特記ない限り、す べてのタイミング仕様に適用されます。図 26-4 に、 タイミング仕様の負荷条件を規定します。 表 26-5: 温度と電圧の仕様 - AC AC CHARACTERISTICS 図 26-4: Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Operating voltage VDD range as described in DC spec Section 26.1 and Section 26.9. デバイスのタイミング仕様に対する負荷条件 Load Condition 2 Load Condition 1 VDD/2 RL CL Pin VSS CL Pin RL = 464 VSS 2009 Microchip Technology Inc. CL = 50 pF Preliminary for all pins except OSC2/CLKOUT and including D and E outputs as ports DS41303E_JP - ページ 379 PIC18F2XK20/4XK20 26.12.3 タイミング図と仕様 図 26-5: 外部クロックのタイミング (PLL を除く全モード ) Q4 Q1 Q2 Q3 Q4 Q1 OSC1 1 3 4 3 4 2 CLKOUT 表 26-6: Param. No. 1A 外部クロックのタイミング要件 Symbol FOSC Characteristic External CLKIN Frequency(1) Oscillator Frequency(1) 1 TOSC External CLKIN Period(1) Oscillator Period(1) Conditions DC 64 MHz EC, ECIO Oscillator mode, (Industrial range devices) DC 48 MHz EC, ECIO Oscillator mode, (Extended range devices) DC 4 MHz RC Oscillator mode 0.1 4 4 25 MHz MHz XT Oscillator mode HS Oscillator mode 4 16 MHz HS + PLL Oscillator mode, (Industrial range devices) 4 12 MHz HS + PLL Oscillator mode, (Extended range devices) 5 200 kHz LP Oscillator mode 15.6 — ns EC, ECIO Oscillator mode, 85°C to 125°C 250 250 — 10,000 ns ns RC Oscillator mode XT Oscillator mode 40 62.5 250 250 ns ns 83.3 250 ns HS Oscillator mode HS + PLL Oscillator mode, (Industrial range devices) HS + PLL Oscillator mode, (Extended range devices) 5 200 s LP Oscillator mode — ns TCY = 4/FOSC 30 2.5 — — ns s XT Oscillator mode LP Oscillator mode 10 — ns HS Oscillator mode — 20 ns XT Oscillator mode — — 50 7.5 ns ns LP Oscillator mode HS Oscillator mode TCY Instruction Cycle TOSL, TOSH External Clock in (OSC1) High or Low Time 注 1: Units 62.5 2 TOSR, TOSF Max Time(1) 3 4 Min External Clock in (OSC1) Rise or Fall Time PLL を除くすべての設定について、命令サイクルの周期 (TCY) は、入力オシレータのタイム ベース周 期の 4 倍です。仕様に記載された値はすべて、標準の動作条件下でデバイスにコードを実行させた場 合の特定オシレータの種類の特性データに基づいています。この仕様の制限値を超えると、発振が不 安定になったり、予想以上の消費電流が流れることがあります。すべてのデバイスは、外部クロック を OSC1/CLKIN ピンに入力し「Min」値で動作を検証しています。外部クロック入力を使用する場合、 すべてのデバイスについて「Max」サイクル時間の制限値は「DC」( クロックなし ) です。 DS41303E_JP - ページ 380 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 表 26-7: Param No. F10 F11 PLL のクロック タイミングの仕様 (VDD = 1.8V ~ 3.6V) Sym FOSC FSYS Characteristic Oscillator Frequency Range On-Chip VCO System Frequency F12 trc F13 CLK CLKOUT Stability (Jitter) PLL Start-up Time (Lock Time) Min Typ† Max Units Conditions 4 — 5 MHz VDD = 1.8-3.0V 4 — 16 MHz VDD = 3.0-3.6V, -40°C to +85°C 4 — 12 MHz VDD = 3.0-3.6V, 125°C 16 — 20 MHz VDD = 1.8-3.0V 16 — 64 MHz VDD = 3.0-3.6V, -40°C to +85°C 16 — 48 MHz VDD = 3.0-3.6V, 125°C — — 2 ms -2 — +2 % † 「Typ( 標準 )」列のデータは特に指定がない限り、3V、25C 時のものです。このパラメータは設計 の指針としてのみ使用します。検証されていません。 表 26-8: AC 特性 : 内部オシレータの精度 PIC18F2XK20/4XK20 PIC18F2XK20/4XK20 Param No. OA1 OA2 Standard Operating Conditions (unless otherwise stated) Operating temperature -40°C TA +125°C Min Typ Max Units Conditions HFINTOSC Accuracy @ Freq = 16 MHz, 8 MHz, 4 MHz, 2 MHz, 1 MHz, 500 kHz, 250 kHz(1) 1 — 1 % +25°C VDD = 2.7-3.6V 3 — 3 % 25°C to +85°C VDD = 1.8-3.6V -5 — +5 % -40°C to +125°C VDD = 1.8-3.6V — 35.938 kHz -40°C to +125°C VDD = 1.8-3.6V LFINTOSC Accuracy @ Freq = 31 kHz 26.562 記号の説明 : 網掛けの行は、表を読みやすくするためのものです。 注 1: 周波数は 25C で較正されています。温度ドリフトの補正に OSCTUNE レジスタを使用できます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 381 PIC18F2XK20/4XK20 図 26-6: CLKOUT と I/O のタイミング Q1 Q4 Q2 Q3 OSC1 11 10 CLKOUT 13 19 14 12 18 16 I/O pin (Input) 15 17 I/O pin (Output) New Value Old Value 20, 21 注: 表 26-9: Param No. 負荷条件については、図 26-4 を参照してください。 CLKO と I/O のタイミング要件 Symbol Characteristic Min Typ Max Units Conditions 10 TosH2ckL OSC1 to CLKOUT — 75 200 ns (Note 1) 11 TosH2ckH OSC1 to CLKOUT — 75 200 ns (Note 1) 12 TckR CLKOUT Rise Time — 35 100 ns (Note 1) 13 TckF CLKOUT Fall Time — 35 100 ns (Note 1) 14 TckL2ioV CLKOUT to Port Out Valid 15 TioV2ckH Port In Valid before CLKOUT 16 TckH2ioI 17 TosH2ioV OSC1 (Q1 cycle) to Port Out Valid 18 TosH2ioI — — 0.5 TCY + 20 ns (Note 1) 0.25 TCY + 25 — — ns (Note 1) (Note 1) Port In Hold after CLKOUT OSC1 (Q2 cycle) to Port Input Invalid (I/O in hold time) 0 — — ns — 50 150 ns 100 — — ns 19 TioV2osH Port Input Valid to OSC1 (I/O in setup time) 0 — — ns 20 TioR Port Output Rise Time — 10 25 ns 21 TioF Port Output Fall Time — 10 25 ns 22 TINP INTx pin High or Low Time 20 — — ns 23 TRBP RB<7:4> Change KBIx High or Low Time TCY — — ns † 注 1: これらのパラメータは、内部クロックのエッジには関係のない非同期イベントです。 RC モードで、CLKOUT 出力 = 4 x TOSC として測定しています。 DS41303E_JP - ページ 382 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 26-7: リセット、ウォッチドッグ タイマ、オシレータ起動タイマ、および パワーアップ タイマのタイミング VDD MCLR 30 Internal POR 33 PWRT Time-out 32 OSC Time-out Internal Reset Watchdog Timer Reset 31 34 34 I/O pins 注: 図 26-8: 負荷条件については、図 26-4 を参照してください。 ブラウンアウト リセットのタイミング BVDD VDD 35 VBGAP = 1.2V VIVRST Enable Internal Reference Voltage Internal Reference Voltage Stable 36 表 26-10: リセット、ウォッチドッグ タイマ、オシレータ起動タイマ、パワーアップ タイマ、および ブラウンアウト リセットの要件 Param. Symbol No. 30 31 TmcL TWDT 32 33 TOST TPWRT 34 TIOZ 35 36 TBOR TIVRST 37 38 39 THLVD TCSD TIOBST Characteristic Min Typ Max Units MCLR Pulse Width (low) 2 — — Watchdog Timer Time-out Period (no — 4.00 TBD postscaler) Oscillation Start-up Timer Period 1024 TOSC — 1024 TOSC Power-up Timer Period — 65.5 TBD s ms I/O High-Impedance from MCLR Low or Watchdog Timer Reset Brown-out Reset Pulse Width Time for Internal Reference Voltage to become Stable High/Low-Voltage Detect Pulse Width CPU Start-up Time Time for INTOSC to Stabilize — ms Conditions TOSC = OSC1 period — 2 — s 200 — — 25 — TBD s s VDD BVDD (see D005) 200 5 — — — 1 — 10 — s s ms VDD VHLVD 記号の説明 : TBD = 未定 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 383 PIC18F2XK20/4XK20 図 26-9: TIMER0 と TIMER1 の外部クロックのタイミング T0CKI 41 40 42 T1OSO/T13CKI 46 45 47 48 TMR0 or TMR1 注: 負荷条件については、図 26-4 を参照してください。 表 26-11: TIMER0 と TIMER1 の外部クロックの要件 Param No. Symbol Characteristic 40 Tt0H T0CKI High Pulse Width No prescaler 41 Tt0L T0CKI Low Pulse Width No prescaler With prescaler With prescaler 42 Tt0P T0CKI Period No prescaler With prescaler 45 46 Tt1H Tt1L T13CKI High Time T13CKI Low Time Synchronous, no prescaler 48 Max Units Conditions 0.5 TCY + 20 — ns 10 — ns 0.5 TCY + 20 — ns 10 — ns TCY + 10 — ns Greater of: 20 ns or (TCY + 40)/N — ns 0.5 TCY + 20 — ns Synchronous, with prescaler 10 — ns Asynchronous 30 — ns 0.5 TCY + 5 — ns 10 — ns Synchronous, no prescaler Synchronous, with prescaler Asynchronous 47 Min 30 — ns Greater of: 20 ns or (TCY + 40)/N — ns Tt1P T13CKI Synchronous Input Period Asynchronous 60 — ns Ft1 T13CKI Oscillator Input Frequency Range DC 50 kHz 2 TOSC 7 TOSC — Tcke2tmrI Delay from External T13CKI Clock Edge to Timer Increment DS41303E_JP - ページ 384 Preliminary N = prescale value (1, 2, 4,..., 256) N = prescale value (1, 2, 4, 8) 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 26-10: キャプチャ / コンペア /PWM のタイミング ( すべての CCP モジュール ) CCPx (Capture Mode) 50 51 52 CCPx (Compare or PWM Mode) 54 53 注: 負荷条件については、図 26-4 を参照してください。 表 26-12: キャプチャ / コンペア /PWM の要件 ( すべての CCP モジュール ) Param Symbol No. 50 51 TccL TccH Characteristic Min Max Units CCPx Input Low No prescaler Time With prescaler 0.5 TCY + 20 — ns 10 — ns CCPx Input High Time 0.5 TCY + 20 — ns 10 — ns 3 TCY + 40 N — ns No prescaler With prescaler 52 TccP CCPx Input Period 53 TccR CCPx Output Fall Time — 25 ns 54 TccF CCPx Output Fall Time — 25 ns 2009 Microchip Technology Inc. Preliminary Conditions N = prescale value (1, 4 or 16) DS41303E_JP - ページ 385 PIC18F2XK20/4XK20 図 26-11: パラレル スレーブ ポートのタイミング (PIC18F4XK20) RE2/CS RE0/RD RE1/WR 65 RD7:RD0 62 64 63 注: 負荷条件については、図 26-4 を参照してください。 表 26-13: パラレル スレーブ ポートの要件 (PIC18F4XK20) Param. No. Symbol Characteristic Min Max Units 62 TdtV2wrH Data In Valid before WR or CS (setup time) 20 — ns 63 TwrH2dtI WR or CS to Data–In Invalid (hold time) 20 — ns 64 TrdL2dtV RD and CS to Data–Out Valid — 80 ns 65 TrdH2dtI RD or CS to Data–Out Invalid 10 30 ns 66 TibfINH Inhibit of the IBF Flag bit being Cleared from WR or CS — 3 TCY DS41303E_JP - ページ 386 Preliminary Conditions 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 26-12: SPI マスター モードのタイミングの例 (CKE = 0) SS 70 SCK (CKP = 0) 71 72 78 79 79 78 SCK (CKP = 1) 80 bit 6 - - - - - -1 MSb SDO LSb 75, 76 SDI MSb In bit 6 - - - -1 LSb In 74 73 注: 負荷条件については、図 26-4 を参照してください。 表 26-14: SPI モードの要件の例 ( マスター モード、CKE = 0) Param No. Symbol Characteristic 70 TssL2scH, TssL2scL SS to SCK or SCK Input 71 TscH SCK Input High Time (Slave mode) Continuous TscL SCK Input Low Time (Slave mode) Single Byte 71A 72 72A Min Max Units TCY — ns 1.25 TCY + 30 — ns Single Byte 40 — ns Continuous 1.25 TCY + 30 — ns 40 — ns 100 — ns 1.5 TCY + 40 — ns 73 TdiV2scH, TdiV2scL Setup Time of SDI Data Input to SCK Edge 73A Tb2b Last Clock Edge of Byte 1 to the 1st Clock Edge of Byte 2 74 TscH2diL, TscL2diL Hold Time of SDI Data Input to SCK Edge 100 — ns 75 TdoR SDO Data Output Rise Time — 25 ns 76 TdoF SDO Data Output Fall Time — 25 ns 78 TscR SCK Output Rise Time (Master mode) — 25 ns 79 TscF SCK Output Fall Time (Master mode) — 25 ns 80 TscH2doV, TscL2doV SDO Data Output Valid after SCK Edge — 50 ns 注 1: 2: Conditions (Note 1) (Note 1) (Note 2) パラメータ #73A を使用する必要があります。 パラメータ #71A および #72A を使用する場合のみ。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 387 PIC18F2XK20/4XK20 図 26-13: SPI マスター モードのタイミングの例 (CKE = 1) SS 81 SCK (CKP = 0) 71 72 79 73 SCK (CKP = 1) 80 78 MSb SDO bit 6 - - - - - -1 LSb bit 6 - - - -1 LSb In 75, 76 SDI MSb In 74 注: 負荷条件については、図 26-4 を参照してください。 表 26-15: SPI モードの要件の例 ( マスター モード、CKE = 1) Param. No. 71 Symbol TscH 71A 72 Characteristic SCK Input High Time (Slave mode) Min Max Units Continuous 1.25 TCY + 30 — ns Single Byte 40 — ns Continuous 1.25 TCY + 30 — ns TscL SCK Input Low Time (Slave mode) Single Byte 40 — ns 73 TdiV2scH, TdiV2scL Setup Time of SDI Data Input to SCK Edge 100 — ns 73A Tb2b Last Clock Edge of Byte 1 to the 1st Clock Edge of Byte 2 1.5 TCY + 40 — ns 74 TscH2diL, TscL2diL Hold Time of SDI Data Input to SCK Edge 100 — ns 75 TdoR SDO Data Output Rise Time — 25 ns 76 TdoF SDO Data Output Fall Time — 25 ns 78 TscR SCK Output Rise Time (Master mode) — 25 ns 79 TscF SCK Output Fall Time (Master mode) — 25 ns 80 TscH2doV, TscL2doV SDO Data Output Valid after SCK Edge — 50 ns 81 TdoV2scH, TdoV2scL SDO Data Output Setup to SCK Edge TCY — ns 72A 注 1: 2: Conditions (Note 1) (Note 1) (Note 2) パラメータ #73A を使用する必要があります。 パラメータ #71A および #72A を使用する場合のみ。 DS41303E_JP - ページ 388 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 26-14: SPI スレーブ モードのタイミングの例 (CKE = 0) SS 70 SCK (CKP = 0) 83 71 72 78 79 79 78 SCK (CKP = 1) 80 MSb SDO bit 6 - - - - - -1 LSb 77 75, 76 MSb In SDI 73 注: bit 6 - - - -1 LSb In 74 負荷条件については、図 26-4 を参照してください。 表 26-16: SPI モードの要件の例 ( スレーブ モードのタイミング、CKE = 0) Param No. Symbol Characteristic Min 70 TssL2scH, SS to SCK or SCK Input TssL2scL 71 TscH SCK Input High Time (Slave mode) Continuous TscL SCK Input Low Time (Slave mode) 71A 72 72A Max Units Conditions TCY — ns 1.25 TCY + 30 — ns Single Byte 40 — ns Continuous 1.25 TCY + 30 — ns Single Byte 40 — ns 100 — ns 1.5 TCY + 40 — ns TscH2diL, Hold Time of SDI Data Input to SCK Edge TscL2diL 100 — ns 75 TdoR SDO Data Output Rise Time — 25 ns 76 TdoF SDO Data Output Fall Time — 25 ns 73 TdiV2scH, Setup Time of SDI Data Input to SCK Edge TdiV2scL 73A Tb2b 74 Last Clock Edge of Byte 1 to the First Clock Edge of Byte 2 77 TssH2doZ SS to SDO Output High-Impedance 10 50 ns 78 TscR SCK Output Rise Time (Master mode) — 25 ns 79 TscF SCK Output Fall Time (Master mode) — 25 ns 80 TscH2doV, SDO Data Output Valid after SCK Edge TscL2doV — 50 ns 83 TscH2ssH, SS after SCK edge TscL2ssH 1.5 TCY + 40 — ns 注 1: 2: パラメータ #73A を使用する必要があります。 パラメータ #71A および #72A を使用する場合のみ。 2009 Microchip Technology Inc. Preliminary (Note 1) (Note 1) (Note 2) DS41303E_JP - ページ 389 PIC18F2XK20/4XK20 図 26-15: SPI スレーブ モードのタイミングの例 (CKE = 1) 82 SS SCK (CKP = 0) 70 83 71 72 SCK (CKP = 1) 80 MSb SDO bit 6 - - - - - -1 LSb 75, 76 SDI 注: MSb In 77 bit 6 - - - -1 LSb In 74 負荷条件については、図 26-4 を参照してください。 表 26-17: SPI スレーブ モードの要件の例 (CKE = 1) Param No. Symbol Characteristic 70 TssL2scH, SS to SCK or SCK Input TssL2scL 71 TscH 71A 72 Min TCY SCK Input High Time (Slave mode) — ns Continuous 1.25 TCY + 30 — ns Single Byte 40 — ns Continuous 1.25 TCY + 30 — ns TscL SCK Input Low Time (Slave mode) 73A Tb2b Last Clock Edge of Byte 1 to the First Clock Edge of Byte 2 74 72A Max Units Conditions Single Byte (Note 1) 40 — ns (Note 1) 1.5 TCY + 40 — ns (Note 2) TscH2diL, Hold Time of SDI Data Input to SCK Edge TscL2diL 100 — ns 75 TdoR SDO Data Output Rise Time — 25 ns 76 TdoF SDO Data Output Fall Time — 25 ns 77 TssH2doZ SS to SDO Output High-Impedance 10 50 ns 78 TscR SCK Output Rise Time (Master mode) — 25 ns 79 TscF SCK Output Fall Time (Master mode) — 25 ns 80 TscH2doV, SDO Data Output Valid after SCK Edge TscL2doV — 50 ns 82 TssL2doV SDO Data Output Valid after SS Edge — 50 ns 83 TscH2ssH, SS after SCK Edge TscL2ssH 1.5 TCY + 40 — ns 注 1: 2: パラメータ #73A を使用する必要があります。 パラメータ #71A および #72A を使用する場合のみ。 DS41303E_JP - ページ 390 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 I2C™ バスのスタート / ストップ ビットのタイミング 図 26-16: SCL 91 93 90 92 SDA Stop Condition Start Condition 注: 負荷条件については、図 26-4 を参照してください。 表 26-18: I2C™ バスのスタート / ストップ ビットの要件 ( スレーブ モード ) Param. No. Symbol 90 TSU:STA Characteristic Units ns Only relevant for Repeated Start condition ns After this period, the first clock pulse is generated 100 kHz mode 4700 — Setup Time 400 kHz mode 600 — 100 kHz mode 4000 — Hold Time 400 kHz mode 600 — Stop Condition 100 kHz mode 4700 — 92 TSU:STO 93 THD:STO Stop Condition Setup Time Hold Time 図 26-17: Max Start Condition THD:STA Start Condition 91 Min 400 kHz mode 600 — 100 kHz mode 4000 — 400 kHz mode 600 — Conditions ns ns I2C™ バスのデータのタイミング 103 102 100 101 SCL 90 106 107 91 92 SDA In 110 109 109 SDA Out 注: 負荷条件については、図 26-4 を参照してください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 391 PIC18F2XK20/4XK20 表 26-19: I2C™ バスのデータの要件 ( スレーブ モード ) Param. Symbol No. 100 THIGH Characteristic Clock High Time Min Max Units 100 kHz mode 4.0 — s PIC18FXXXX must operate at a minimum of 1.5 MHz 400 kHz mode 0.6 — s PIC18FXXXX must operate at a minimum of 10 MHz 1.5 TCY — 100 kHz mode 4.7 — s PIC18FXXXX must operate at a minimum of 1.5 MHz 400 kHz mode 1.3 — s PIC18FXXXX must operate at a minimum of 10 MHz SSP Module 101 TLOW Clock Low Time SSP Module 102 1.5 TCY — — 1000 ns 20 + 0.1 CB 300 ns 100 kHz mode — 300 ns 400 kHz mode 20 + 0.1 CB 300 ns CB is specified to be from 10 to 400 pF 100 kHz mode 4.7 — s 400 kHz mode 0.6 — s Only relevant for Repeated Start condition THD:STA Start Condition Hold 100 kHz mode Time 400 kHz mode 4.0 — s 0.6 — s 0 — ns TR 103 TF 90 SDA and SCL Rise 100 kHz mode Time 400 kHz mode SDA and SCL Fall Time TSU:STA Start Condition Setup Time 91 106 THD:DAT Data Input Hold Time 100 kHz mode 400 kHz mode 0 0.9 s 107 TSU:DAT Data Input Setup Time 100 kHz mode 250 — ns 400 kHz mode 100 — ns TSU:STO Stop Condition Setup Time 100 kHz mode 4.7 — s 400 kHz mode 0.6 — s Output Valid from Clock 100 kHz mode — 3500 ns 400 kHz mode — — ns Bus Free Time 100 kHz mode 4.7 — s 400 kHz mode 1.3 — s — 400 pF 92 109 TAA 110 TBUF D102 注 1: 2: Conditions CB Bus Capacitive Loading CB is specified to be from 10 to 400 pF After this period, the first clock pulse is generated (Note 2) (Note 1) Time the bus must be free before a new transmission can start 予期しないスタート条件やストップ条件の発生を防ぐため、送信器として使用するデバイスは、SCL の立ち下がりエッジの未定義領域をカバーする最小限の内部遅延時間 (300ns 以上 ) が必要です。 高速モードの I2C バス デバイスを標準モードの I2C バス システムで使用できますが、この場合は TSU:DAT 250 ns の要件を満たす必要があります。これは、デバイスが SCL 信号の LOW 期間をスト レッチしない場合になります。このようなデバイスが SCL 信号の LOW 期間をストレッチしない場 合、SCL ラインを解放する前に、デバイスは次のデータ ビットを SDA ラインに出力する必要があり、 TR max. + TSU:DAT = 1000 + 250 = 1250 ns ( 標準モードの I2C バスの仕様 ) である必要があります。 DS41303E_JP - ページ 392 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 26-18: マスター SSP の I2C™ バスのスタート / ストップ ビットのタイミング波形 SCL 93 91 90 92 SDA Stop Condition Start Condition 注: 負荷条件については、図 26-4 を参照してください。 表 26-20: マスター SSP の I2C™ バスのスタート / ストップ ビットの要件 Param. Symbol No. 90 Characteristic TSU:STA Start Condition Setup Time Min Max Units 100 kHz mode 2(TOSC)(BRG + 1) — ns 400 kHz mode 2(TOSC)(BRG + 1) — Only relevant for Repeated Start condition ns After this period, the first clock pulse is generated (1) 91 THD:STA Start Condition Hold Time 1 MHz mode 2(TOSC)(BRG + 1) — 100 kHz mode 2(TOSC)(BRG + 1) — 400 kHz mode 2(TOSC)(BRG + 1) — 1 MHz mode 2(TOSC)(BRG + 1) — 100 kHz mode 2(TOSC)(BRG + 1) — (1) 92 TSU:STO Stop Condition Setup Time 93 THD:STO Stop Condition Hold Time 注 1: 400 kHz mode 2(TOSC)(BRG + 1) — 1 MHz mode(1) 2(TOSC)(BRG + 1) — 100 kHz mode 2(TOSC)(BRG + 1) — 400 kHz mode 2(TOSC)(BRG + 1) — 1 MHz mode(1) 2(TOSC)(BRG + 1) — Conditions ns ns 各 I2C ピンの最大容量 = 10 pF 図 26-19: マスター SSP の I2C™ バスのデータのタイミング 103 102 100 101 SCL 90 106 91 107 92 SDA In 109 109 110 SDA Out 注: 負荷条件については、図 26-4 を参照してください。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 393 PIC18F2XK20/4XK20 表 26-21: マスター SSP の I2C™ バスのデータの要件 Param. Symbol No. 100 101 102 103 90 91 THIGH TLOW TR TF Characteristic Min Max Units Clock High Time 100 kHz mode 2(TOSC)(BRG + 1) — ms 400 kHz mode 2(TOSC)(BRG + 1) — ms 1 MHz mode(1) 2(TOSC)(BRG + 1) — ms Clock Low Time 100 kHz mode 2(TOSC)(BRG + 1) — ms 400 kHz mode 2(TOSC)(BRG + 1) — ms 1 MHz mode(1) 2(TOSC)(BRG + 1) — ms 100 kHz mode — 1000 ns 400 kHz mode 20 + 0.1 CB 300 ns 1 MHz mode(1) — 300 ns 100 kHz mode — 300 ns 400 kHz mode 20 + 0.1 CB 300 ns 1 MHz mode(1) — 100 ns 100 kHz mode 2(TOSC)(BRG + 1) — ms 400 kHz mode 2(TOSC)(BRG + 1) — ms SDA and SCL Rise Time SDA and SCL Fall Time TSU:STA Start Condition Setup Time THD:STA Start Condition Hold Time 1 MHz mode(1) 2(TOSC)(BRG + 1) — ms 100 kHz mode 2(TOSC)(BRG + 1) — ms 400 kHz mode 2(TOSC)(BRG + 1) — ms 2(TOSC)(BRG + 1) — ms THD:DAT Data Input Hold Time 100 kHz mode 0 — ns 400 kHz mode 0 0.9 ms TSU:DAT Data Input Setup Time 100 kHz mode 250 — ns 400 kHz mode 100 — ns 100 kHz mode 2(TOSC)(BRG + 1) — ms 400 kHz mode 2(TOSC)(BRG + 1) — ms 2(TOSC)(BRG + 1) — ms 100 kHz mode — 3500 ns 400 kHz mode — 1000 ns — — ns 1 MHz mode 106 107 92 TSU:STO Stop Condition Setup Time 1 MHz mode 109 TAA Output Valid from Clock 1 MHz mode 110 D102 注 1: 2: (1) TBUF CB Bus Free Time (1) (1) 100 kHz mode 4.7 — ms 400 kHz mode 1.3 — ms — 400 pF Bus Capacitive Loading Conditions CB is specified to be from 10 to 400 pF CB is specified to be from 10 to 400 pF Only relevant for Repeated Start condition After this period, the first clock pulse is generated (Note 2) Time the bus must be free before a new transmission can start I2 各 C ピンの最大容量 = 10 pF 高速モードの I2C バス デバイスを標準モードの I2C バス システムで使用できますが、この場合はパラ メータ 107 250 ns の要件を満たす必要があります。これは、デバイスが SCL 信号の LOW 期間をスト レッチしない場合になります。このようなデバイスが SCL 信号の LOW 期間をストレッチしない場合、 SCL ラインを解放する前に、デバイスは次のデータ ビットを SDA ラインに出力する必要があり、パラ メータ 102 + パラメータ 107 = 1000 + 250 = 1250 ns (100 kHz モードの場合 ) である必要があります。 DS41303E_JP - ページ 394 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 26-20: EUSART の同期送信 ( マスター / スレーブ ) のタイミング RC6/TX/CK pin 121 121 RC7/RX/DT pin 120 注: 122 負荷条件については、図 26-4 を参照してください。 表 26-22: EUSART の同期送信の要件 Param No. Min Max Units TckH2dtV SYNC XMIT (MASTER & SLAVE) Clock High to Data Out Valid — 40 ns 121 Tckrf Clock Out Rise Time and Fall Time (Master mode) — 20 ns 122 Tdtrf Data Out Rise Time and Fall Time — 20 ns 120 Symbol 図 26-21: Characteristic Conditions EUSART の同期受信 ( マスター / スレーブ ) のタイミング RC6/TX/CK pin 125 RC7/RX/DT pin 126 注: 負荷条件については、図 26-4 を参照してください。 表 26-23: EUSART の同期受信の要件 Param. No. 125 126 Symbol TdtV2ckl TckL2dtl Characteristic Min Max Units SYNC RCV (MASTER & SLAVE) Data Setup before CK (DT setup time) 10 — ns Data Hold after CK (DT hold time) 15 — ns 2009 Microchip Technology Inc. Preliminary Conditions DS41303E_JP - ページ 395 PIC18F2XK20/4XK20 表 26-24: A/D コンバータの特性 : PIC18F2XK20/4XK20 Param Symbol No. Characteristic Min Typ Max Units Conditions VREF 3.0V A01 NR Resolution — — 10 bit A03 EIL Integral Linearity Error — — <±1 LSb VREF 3.0V A04 EDL Differential Linearity Error — — <±1 LSb VREF 3.0V A06 EOFF Offset Error — — <±3 LSb VREF 3.0V A07 EGN Gain Error — — <±3 LSb VREF 3.0V A10 — Monotonicity A20 VREF Reference Voltage Range (VREFH – VREFL) A21 VREFH A22 VREFL — VSS VAIN VREF — — V V VDD 3.0V VDD 3.0V Guaranteed(1) 1.8 3 — — Reference Voltage High VDD/2 — VDD + 0.6 V Reference Voltage Low VSS – 0.3V — VDD – 3.0V V A25 VAIN Analog Input Voltage VREFL — VREFH V A30 ZAIN Recommended Impedance of Analog Voltage Source — — 2.5 k A50 IREF VREF Input Current(2) — — — — 5 150 A A 注 1: 2: A/D 変換結果は、入力電圧が増大しても減少することはありません。また、コードの欠落もありません。 VREFH 電流は、VREFH のソースとして選択した RA3/AN3/VREF+ ピンまたは VDD から流れます。 VREFL 電流は、VREFL のソースとして選択した RA2/AN2/VREF-/CVREF ピンまたは VSS から流れます。 DS41303E_JP - ページ 396 Preliminary During VAIN acquisition. During A/D conversion cycle. 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 図 26-22: A/D 変換のタイミング BSF ADCON0, GO (Note 2) 131 Q4 A/D CLK 130 132 9 A/D DATA 8 7 .. . ... 2 1 0 NEW_DATA OLD_DATA ADRES TCY ADIF GO DONE SAMPLING STOPPED SAMPLE 注 1: 2: A/D クロック ソースに RC を選択した場合、A/D クロックの開始前に TCY の時間が追加されます。 これにより、SLEEP 命令を実行できます。 これは最小の RC 遅延 ( 代表値は 100 ns) で、アナログ入力から保持コンデンサを切断します。 表 26-25: A/D 変換の要件 Param Symbol No. 130 TAD Characteristic A/D Clock Period Min Max Units 0.7 25.0(1) s TOSC based, VREF 3.0V, -40C to +85C 0.7 4.0(1) s TOSC based, VREF 3.0V, +125C TBD TBD s A/D RC mode 11 12 TAD 1.4 TBD — — s s 131 TCNV Conversion Time (not including acquisition time) (Note 2) 132 TACQ Acquisition Time (Note 3) 135 TSWC Switching Time from Convert Sample — (Note 4) 136 TDIS Discharge Time 0.2 — Conditions -40C to +85C 0C to +85C s 記号の説明 : TBD = 未定 注 1: A/D クロックの周期は、デバイスの周波数と TAD クロック分周器によって異なります。 2: ADRES レジスタは、次の TCY サイクルで読み出しができます。 3: 変換後に電圧がフル スケールで変化する場合 (VDD から VSS、または VSS から VDD) に、保持コンデ ンサに「新規」入力電圧が印加されるまでの時間。入力チャネルのソース インピーダンス (RS) は 50 です。 4: デバイスのクロックの次のサイクル。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 397 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 398 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 27.0 DC 特性と AC 特性のグラフ および表 このリビジョンでは、グラフと表はありません。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 399 PIC18F2XK20/4XK20 ノート : DS41303E_JP - ページ 400 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 28.0 パッケージ情報 28.1 パッケージのマーキング情報 28-Lead PDIP Example PIC18F25K20-E/SP XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX YYWWNNN 28-Lead SOIC (7.50 mm) e3 0810017 Example PIC18F25K20-E/SO e3 0810017 XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX YYWWNNN 40-Lead PDIP Example XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXX YYWWNNN 記号の説明 : XX...X Y YY WW NNN e3 * 注: PIC18F45K20-E/P e3 0810017 カスタマ固有情報 製造年コード ( 西暦の最終桁 ) 製造年コード ( 西暦の下 2 桁 ) 製造週コード ( 例 :1 月の第 1 週を「01」と表示 ) 英数字によるトレーサビリティ コード 鉛フリーのつや消し錫 (Sn) メッキ製品を示す JEDEC 準拠マーク このパッケージは鉛フリーです。鉛フリーを示すJEDEC準拠マーク( e3 )は このパッケージの外側に表示されています。 マイクロチップ社の製品番号全体が 1 行に収まらない場合は、次の行に続きます。 この場合にはカスタマ固有情報用の文字数が制限されます。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 401 PIC18F2XK20/4XK20 パッケージのマーキング情報 ( 続き ) 28-Lead SSOP Example XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX YYWWNNN PIC18F25K20-E/SS e3 0810017 28-Lead QFN Example XXXXXXXX XXXXXXXX YYWWNNN 18F24K20 -E/ML e3 0810017 44-Lead QFN Example XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX YYWWNNN PIC18F45K20 -E/ML e3 0810017 Example 44-Lead TQFP XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX YYWWNNN DS41303E_JP - ページ 402 PIC18F44K20 -E/PT e3 0810017 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 28.2 パッケージの詳細 本章ではパッケージの技術的詳細を示します。 28 ピン スキニー プラスチック デュアル インライン (SP) – 300 mil ボディ [SPDIP] 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging N NOTE 1 E1 1 2 3 D E A2 A L c b1 A1 b e eB Units Dimension Limits Number of Pins INCHES MIN N NOM MAX 28 Pitch e Top to Seating Plane A – – .200 Molded Package Thickness A2 .120 .135 .150 Base to Seating Plane A1 .015 – – Shoulder to Shoulder Width E .290 .310 .335 Molded Package Width E1 .240 .285 .295 Overall Length D 1.345 1.365 1.400 Tip to Seating Plane L .110 .130 .150 Lead Thickness c .008 .010 .015 b1 .040 .050 .070 b .014 .018 .022 eB – – .430 Upper Lead Width Lower Lead Width Overall Row Spacing § .100 BSC 注: 1. 2. 3. 4. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。 § 重要な特性値です。 寸法 D と E1 には、成型時のバリは含みません。成型時のバリは各側で 0.010" 以下とします。 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 Microchip Technology Drawing C04-070B 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 403 PIC18F2XK20/4XK20 28 ピン プラスチック スモール アウトライン (SO) – 厚型、7.50 mm ボディ [SOIC] 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging D N E E1 NOTE 1 1 2 3 b e h α h c φ A2 A L A1 Units Dimension Limits Number of Pins β L1 MILLIMETERS MIN N NOM MAX 28 Pitch e Overall Height A – 1.27 BSC – Molded Package Thickness A2 2.05 – – Standoff § A1 0.10 – 0.30 Overall Width E Molded Package Width E1 7.50 BSC Overall Length D 17.90 BSC 2.65 10.30 BSC Chamfer (optional) h 0.25 – 0.75 Foot Length L 0.40 – 1.27 Footprint L1 1.40 REF Foot Angle Top 0° – 8° Lead Thickness c 0.18 – 0.33 Lead Width b 0.31 – 0.51 Mold Draft Angle Top 5° – 15° Mold Draft Angle Bottom 5° – 15° 注: 1. 2. 3. 4. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。 § 重要な特性値です。 寸法 D と E1 には、成型時のバリは含みません。モールドフラッシュまたは突出部は各側で 0.15 mm 以下とします。 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値 Microchip Technology Drawing C04-052B DS41303E_JP - ページ 404 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 40 ピン プラスチック デュアル インライン (P) – 600 mil ボディ [PDIP] 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging N NOTE 1 E1 1 2 3 D E A2 A L c b1 A1 b e eB Units Dimension Limits Number of Pins INCHES MIN N NOM MAX 40 Pitch e Top to Seating Plane A – .100 BSC – .250 Molded Package Thickness A2 .125 – .195 Base to Seating Plane A1 .015 – – Shoulder to Shoulder Width E .590 – .625 Molded Package Width E1 .485 – .580 Overall Length D 1.980 – 2.095 Tip to Seating Plane L .115 – .200 Lead Thickness c .008 – .015 b1 .030 – .070 b .014 – .023 eB – – .700 Upper Lead Width Lower Lead Width Overall Row Spacing § 注: 1. 2. 3. 4. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。 § 重要な特性値です。 寸法 D と E1 には、成型時のバリは含みません。成型時のバリは各側で 0.010" 以下とします。 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 Microchip Technology Drawing C04-016B 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 405 PIC18F2XK20/4XK20 28 ピン プラスチック シュリンク スモール アウトライン (SS) – 5.30 mm ボディ [SSOP] 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging D N E E1 1 2 NOTE 1 b e c A2 A φ A1 L L1 Units Dimension Limits Number of Pins MILLIMETERS MIN N NOM MAX 28 Pitch e Overall Height A – 0.65 BSC – 2.00 Molded Package Thickness A2 1.65 1.75 1.85 Standoff A1 0.05 – – Overall Width E 7.40 7.80 8.20 Molded Package Width E1 5.00 5.30 5.60 Overall Length D 9.90 10.20 10.50 Foot Length L 0.55 0.75 0.95 Footprint L1 1.25 REF Lead Thickness c 0.09 – Foot Angle 0° 4° 0.25 8° Lead Width b 0.22 – 0.38 注: 1. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。 2. 寸法 D と E1 には、成型時のバリは含みません。成型時のバリは各側で 0.20 mm 以下とします。 3. 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値 Microchip Technology Drawing C04-073B DS41303E_JP - ページ 406 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 28 ピン プラスチック クワッド フラット、鉛フリー パッケージ (ML) – 6x6 mm ボディ [QFN] 接点長 0.55 mm 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging D D2 EXPOSED PAD e E b E2 2 2 1 1 K N N NOTE 1 L BOTTOM VIEW TOP VIEW A A3 A1 Units Dimension Limits Number of Pins MILLIMETERS MIN N NOM MAX 28 Pitch e Overall Height A 0.80 0.90 1.00 Standoff A1 0.00 0.02 0.05 Contact Thickness A3 0.20 REF Overall Width E 6.00 BSC Exposed Pad Width E2 Overall Length D Exposed Pad Length D2 3.65 3.70 4.20 b 0.23 0.30 0.35 Contact Length L 0.50 0.55 0.70 Contact-to-Exposed Pad K 0.20 – – Contact Width 0.65 BSC 3.65 3.70 4.20 6.00 BSC 注: 1. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。 2. パッケージは切削成型されています。 3. 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値 Microchip Technology Drawing C04-105B 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 407 PIC18F2XK20/4XK20 28 ピン プラスチック クワッド フラット、鉛フリー パッケージ (ML) – 6x6 mm ボディ [QFN] 接点長 0.55 mm 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging 注: 1. 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 Microchip Technology Drawing C04-2105A DS41303E_JP - ページ 408 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 44 ピン プラスチック クワッド フラット、鉛フリー パッケージ (ML) – 8x8 mm ボディ [QFN] 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging D D2 EXPOSED PAD e E E2 b 2 2 1 1 N N NOTE 1 TOP VIEW K L BOTTOM VIEW A A3 A1 Units Dimension Limits Number of Pins MILLIMETERS MIN N NOM MAX 44 Pitch e Overall Height A 0.80 0.90 1.00 Standoff A1 0.00 0.02 0.05 Contact Thickness A3 0.20 REF Overall Width E 8.00 BSC Exposed Pad Width E2 Overall Length D Exposed Pad Length D2 6.30 6.45 6.80 b 0.25 0.30 0.38 Contact Length L 0.30 0.40 0.50 Contact-to-Exposed Pad K 0.20 – – Contact Width 0.65 BSC 6.30 6.45 6.80 8.00 BSC 注: 1. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。 2. パッケージは切削成型されています。 3. 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値 Microchip Technology Drawing C04-103B 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 409 PIC18F2XK20/4XK20 44 ピン プラスチック クワッド フラット、鉛フリー パッケージ (ML) – 8x8 mm ボディ [QFN] 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging 注: 1. 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 Microchip Technology Drawing C04-2103A DS41303E_JP - ページ 410 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 44 ピン プラスチック薄型クワッド フラットパック (PT) – 10x10x1 mm ボディ、 2.00 mm [TQFP] 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging D D1 E e E1 N b NOTE 1 1 2 3 NOTE 2 α A c φ β L A1 Units Dimension Limits Number of Leads A2 L1 MILLIMETERS MIN N NOM MAX 44 Lead Pitch e Overall Height A – 0.80 BSC – 1.20 Molded Package Thickness A2 0.95 1.00 1.05 Standoff A1 0.05 – 0.15 Foot Length L 0.45 0.60 0.75 Footprint L1 Foot Angle Overall Width E 1.00 REF 0° 3.5° 7° 12.00 BSC Overall Length D 12.00 BSC Molded Package Width E1 10.00 BSC Molded Package Length D1 10.00 BSC Lead Thickness c 0.09 – 0.20 Lead Width b 0.30 0.37 0.45 Mold Draft Angle Top 11° 12° 13° Mold Draft Angle Bottom 11° 12° 13° 注: 1. 2. 3. 4. ピン 1 の位置を示す記号はさまざまですが、必ず斜線部分内にあります。 コーナー部の面取りはオプションで、サイズは異なります。 寸法 D1 と E1 には、成型時のバリは含みません。成型時のバリは各側で 0.25 mm 以下とします。 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 REF: 参考寸法。通常は公差を含まず、情報としてのみ使用される値 Microchip Technology Drawing C04-076B 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 411 PIC18F2XK20/4XK20 44 ピン プラスチック薄型クワッド フラットパック (PT) – 10x10x1 mm ボディ、 2.00 mm [TQFP] 注: 最新のパッケージ図面については、次のウェブ サイトにある「Microchip Packaging Specification」 ( マイクロチップ社パッケージ仕様 ) を参照してください。 http://www.microchip.com/packaging 注: 1. 寸法および公差は ASME Y14.5M に準拠しています。 BSC: 基準寸法。公差を含まない理論的に正確な値 Microchip Technology Drawing C04-2076A DS41303E_JP - ページ 412 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 付録 A: リビジョン E (2009 年 4 月 ) 改版履歴 リビジョン A (2006 年 7 月 ) PIC18F2XK20/4XK20 のオリジナルのデータシート データシートの題名を訂正。電源管理モード、周辺 モジュールの特長、およびアナログ機能を訂正。 26.2 の DC 特性の表を訂正。 リビジョン B (2007 年 3 月 ) 製品番号 PIC18F26K20 および PIC18F46K20 を追 加。開発サポートの節を訂正。パッケージ図面を 入れ換え。 リビジョン C (2007 年 10 月 ) 表 1 の DIL のピン 34 および 35、表 2 のピン 22 お よび 24、表 1-2 のピン RB1 および RB3、表 1-3 の ピン RB1 および RB3 を訂正。節 4.3、4.4、4.4.1、 4.4.2、4.4.4 を訂正。表 4-3 の注 2 を訂正。表 6-1 を 訂正。節 7.8 を訂正。節 9.2 を訂正。例 10-1 および 10-2 を訂正。表 10-3 のピン RB1 および RB3 を訂 正。節 12.2 ~ 12.5 を訂正。レジスタ 16-1 のビット 3-0 を訂正。節 16.1、16.2、16.4.4 を訂正。レジスタ 16-2 のビット 6 ~ 4 を訂正。表 16-2 の注 2 を訂正。 レジスタ 17-1 のビット 6 を訂正。レジスタ 17-3 を 訂正。表 17-4 を訂正。レジスタ 19-1 を訂正、注 2 を加筆。レジスタ 20-3 のビット 5 および 4 を訂正。 レジスタ 23-4 のビット 1 を訂正。レジスタ 23-12 の ビット 7 ~ 5 を訂正。節 23.3 を訂正。節 24.1.1 の 命令セットの記述を訂正。節 26.0 の MCLR の電圧 を訂正。DC 特性 26.2、26.3、26.4、26.5、26.6、26.7、 26.8、および 26.10 を訂正。表 26-1、26-6、26-7、269、26-23 を訂正。 リビジョン D (2008 年 8 月 ) 周辺モジュールの特長 (USART モジュール ) を更 新。節 2.2.6 ( オシレータの遷移 ) を削除。節 2.5.3、 2.9 を訂正。節 2.9.3 ( クロックのスイッチ タイミン グ ) を加筆。節 2.10.4 ( クロックのスイッチング タ イミング ) を削除。全体で BAUDCTL をBAUDCON に置換。表 5-2 (PLUSW0、PLUSW1、PLUSW2) を 訂正。表 7-1 に注 1 (EEADRH) を加筆。節 6.4.4 お よびレジスタ 16-2 (FLT0 ピン ) を訂正。レジスタ 17-2 および 17-5 (SSPEN) を訂正。レジスタ 17-6 (SEN) を訂正。図 18-2 の後に新規段落を加筆。節 18.1.1 の注を訂正。節 18.1.2 の注を削除。節 18.1.2.9 および 18.1.2.10 に新規の注 2 を加筆。節 18.3.1 の 注 1 を訂正。節 18.3.2 を加筆。節 18.3.5 を訂正。節 18.4.1.5、18.4.1.10、18.4.2.2、18.4.2.4 に新規の注 2 を加筆。レジスタ 21-1 (CVR) を訂正。レジスタ 236、23.8、23-10、表 23-3 の注 1 を訂正。図 26-1 を 新規追加。26.2、26.6、26.7 ( 注 3)、26.8、26.9、26.10 を訂正。表 26-1、26-2、26-3、26-6、26-7、26-8、2625 を訂正。パッケージの図面を更新。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 413 PIC18F2XK20/4XK20 付録 B: デバイス間の違い このデータシートに記載されているデバイス間の 違いを表 B-1 に示します。 表 B-1: デバイス間の違い Features PIC18F23K20 PIC18F24K20 PIC18F25K20 PIC18F26K20 PIC18F43K20 PIC18F44K20 PIC18F45K20 PIC18F46K20 Program Memory (Bytes) 8192 16384 32768 65536 8192 16384 32768 65536 Program Memory (Instructions) 4096 8192 16384 32768 4096 8192 16384 32768 Interrupt Sources 19 19 19 19 20 20 20 20 Ports A, B, C, (E) Ports A, B, C, (E) Ports A, B, C, (E) Ports A, B, C, (E) Ports A, B, C, D, E Ports A, B, C, D, E Ports A, B, C, D, E Ports A, B, C, D, E Capture/Compare/PWM Modules 1 1 1 1 1 1 1 1 Enhanced Capture/Compare/PWM Modules 1 1 1 1 1 1 1 1 Parallel Communications (PSP) No No No No Yes Yes Yes Yes 10-bit Analog-to-Digital Module 11 input channels 11 input channels 11 input channels 11 input channels 14 input channels 14 input channels 14 input channels 14 input channels 28-pin PDIP 28-pin SOIC 28-pin SSOP 28-pin QFN 28-pin PDIP 28-pin SOIC 28-pin SSOP 28-pin QFN 28-pin PDIP 28-pin SOIC 28-pin SSOP 28-pin QFN 28-pin PDIP 28-pin SOIC 28-pin SSOP 28-pin QFN 40-pin PDIP 44-pin TQFP 44-pin QFN 40-pin PDIP 44-pin TQFP 44-pin QFN 40-pin PDIP 44-pin TQFP 44-pin QFN 40-pin PDIP 44-pin TQFP 44-pin QFN I/O Ports Packages DS41303E_JP - ページ 414 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 索引 数字 2 段階速度の起動 .............................................................. 295 2 段速クロック スタートアップ モード .......................... 36 2 ワード命令 例 ................................................................................... 68 A A/D アクイジション時間の選択と設定 ......................... 262 アナログ ポート ピン、設定 ................................... 273 関連レジスタ ............................................................. 273 コンバータ特性 ......................................................... 396 特殊イベント トリガ (ECCP) .................................. 172 変換 ............................................................................. 264 放電 ............................................................................. 265 A/D コンバータ (ADC)。ADC を参照 AC ( タイミング ) 特性 ..................................................... 378 温度と電圧の仕様 ..................................................... 379 タイミング条件 ......................................................... 379 デバイス タイミング仕様に対する負荷条件 ........ 379 パラメータの記号 ..................................................... 378 ACKSTAT ........................................................................... 223 ACKSTAT ステータス フラグ ......................................... 223 AC 特性 内蔵 RC の精度 .......................................................... 381 ADC ..................................................................................... 261 A/D 変換の開始 ......................................................... 263 アクイジション時間の計算 ..................................... 271 アクイジションの要件 ............................................. 271 結果のフォーマット ................................................. 263 スリープ モードの動作 ............................................ 265 設定 ............................................................................. 262 ソース インピーダンス ............................................ 271 チャネル選択 ............................................................. 262 電源管理 ............................................................................ 265 動作 ............................................................................. 264 特殊イベント トリガ ................................................ 265 内部サンプリング スイッチ (RSS) の インピーダンス ................................................ 271 ブロック図 ................................................................. 261 変換クロック ............................................................. 262 変換の手順 ................................................................. 266 ポート設定 ................................................................. 262 リファレンス電圧 (VREF) ........................................ 262 割り込み ..................................................................... 263 ADCON0 レジスタ ............................................................ 267 ADCON1 レジスタ ............................................................ 268 ADCON2 レジスタ ............................................................ 269 ADDFSR .............................................................................. 354 ADDLW .............................................................................. 317 ADDULNK .......................................................................... 354 ADDWF ............................................................................... 317 ADDWFC ............................................................................ 318 ADRESH レジスタ (ADFM = 0) ....................................... 270 ADRESH レジスタ (ADFM = 1) ....................................... 270 ADRESL レジスタ (ADFM = 0) ....................................... 270 ADRESL レジスタ (ADFM = 1) ....................................... 270 ANDLW .............................................................................. 318 ANDWF ............................................................................... 319 2009 Microchip Technology Inc. ANSEL ( ポート アナログ制御 ) ......................................134 ANSELH レジスタ .............................................................135 ANSEL レジスタ ................................................................134 B BAUDCON レジスタ .........................................................244 BC ........................................................................................319 BCF ......................................................................................320 BF .........................................................................................223 BF ステータス フラグ .......................................................223 BN ........................................................................................320 BNC ......................................................................................321 BNN .....................................................................................321 BNOV ..................................................................................322 BNZ ......................................................................................322 BOR。ブラウンアウト リセットを参照 BOV .....................................................................................325 BRA ......................................................................................323 BRG。ボーレート ジェネレータを参照 BSF .......................................................................................323 BTFSC ..................................................................................324 BTFSS ..................................................................................324 BTG ......................................................................................325 BZ .........................................................................................326 C CALL ...................................................................................326 CALLW ................................................................................355 CCP1CON レジスタ ...........................................................171 CCP2CON レジスタ ...........................................................141 CLRF ....................................................................................327 CLRWDT .............................................................................327 CM1CON0 レジスタ ..........................................................280 CM2CON0 レジスタ ..........................................................281 CM2CON1 レジスタ ..........................................................283 COMF ..................................................................................328 CONFIG1H レジスタ .........................................................297 CONFIG2H レジスタ .........................................................298 CONFIG2L レジスタ .........................................................298 CONFIG3H レジスタ .........................................................299 CONFIG4L レジスタ .........................................................299 CONFIG5H レジスタ .........................................................300 CONFIG5L レジスタ .........................................................300 CONFIG6H レジスタ .........................................................301 CONFIG6L レジスタ .........................................................301 CONFIG7H レジスタ .........................................................302 CONFIG7L レジスタ .........................................................302 CPFSEQ ...............................................................................328 CPFSGT ...............................................................................329 CPFSLT ................................................................................329 CPU の特殊機能 .................................................................295 CVREF 電圧リファレンスの仕様 .....................................376 C コンパイラ MPLAB C18 ................................................................362 MPLAB C30 ................................................................362 D DAW ....................................................................................330 DCFSNZ ..............................................................................331 Preliminary DS41303E_JP - ページ 415 PIC18F2XK20/4XK20 非同期モード ............................................................. 235 12 ビットのブレーク文字の送信および受信 252 9 ビット アドレス検出モードの設定 ............ 240 関連レジスタ、受信 ........................................ 241 関連レジスタ、送信 ........................................ 237 クロックの精度 ................................................ 242 受信器 ................................................................ 238 送信器 ................................................................ 235 ブレークでの自動ウェイクアップ ................ 250 ボーレート ジェネレータ (BRG) ................... 245 ボーレート ジェネレータ (BRG) 関連レジスタ .................................................... 245 計算式 ................................................................ 245 高ボーレート選択 (BRGH ビット ) ................ 245 自動ボーレート検出 ........................................ 249 ボーレート エラー、計算 ............................... 245 ボーレート、非同期モード ............................ 246 割り込み 非同期受信 ........................................................ 239 非同期送信 ........................................................ 235 DC 特性 RC アイドル時の消費電流 .......................................369 RC 動作時の消費電流 ...............................................368 周辺モジュールの消費電力 .....................................372 セカンダリ オシレータの消費電流 ........................371 電源電圧 .....................................................................367 入力 / 出力 ..................................................................373 パワーダウン電流 .....................................................367 プライマリ アイドル時の消費電流 ........................370 プライマリ動作時の消費電流 .................................370 DC 特性および AC 特性 グラフおよび表 .........................................................399 DECF ....................................................................................330 DECFSZ ...............................................................................331 DEVID1 レジスタ ..............................................................303 DEVID2 レジスタ ..............................................................303 E ECCPAS レジスタ ..............................................................181 EECON1 レジスタ ..........................................................89, 98 Enhanced Capture/Compare/PWM (ECCP) 拡張 PWM モード ......................................................173 貫通電流 .............................................................183 起動に関する注意点 .........................................180 自動再スタート .................................................182 自動シャットダウン .........................................181 出力の関係 ( 正論理および負論理 ) ...............174 出力の関係図 .....................................................175 ハーフブリッジ アプリケーション ................176 ハーフブリッジ アプリケーションの例 ........183 ハーフブリッジ モード ....................................176 フルブリッジ アプリケーション ....................177 フルブリッジ モード ........................................177 フルブリッジ出力モードにおける 方向の変更 ................................................179 プログラマブルなデッドタイム .....................183 関連レジスタ .............................................................189 キャプチャ モードとコンペア モード ...................172 キャプチャ モード。 キャプチャ (ECCP モジュール ) を参照 出力と設定 .................................................................172 タイマ リソース ........................................................172 標準 PWM モード ......................................................172 EUSART ..............................................................................233 クロックの極性 同期モード .........................................................253 データの極性 同期モード .........................................................253 非同期受信 .........................................................238 非同期送信 .........................................................235 同期スレーブ モード 関連レジスタ、受信 .........................................259 受信 .....................................................................259 送信 .....................................................................258 同期マスター モード ........................................253, 258 関連レジスタ、受信 .........................................257 関連レジスタ、送信 .................................255, 258 受信 .....................................................................256 送信 .....................................................................253 DS41303E_JP - ページ 416 G GOTO .................................................................................. 332 H HLVDCON レジスタ ......................................................... 289 HLVD。高 / 低電圧検知を参照。...................................... 289 I I/O ポート ........................................................................... 119 I2 C 関連レジスタ ............................................................. 232 I2C モード (MSSP) I2C のクロック速度と BRG ..................................... 219 一括呼び出しアドレスのサポート ......................... 216 クロック ストレッチ ................................................ 212 10 ビット スレーブ受信モード (SEN = 1) ..... 212 10 ビット スレーブ送信モード ...................... 212 7 ビット スレーブ受信モード (SEN = 1) ....... 212 7 ビット スレーブ送信モード ........................ 212 クロック調停 ............................................................. 220 クロック同期と CKP ビット (SEN = 1) .................. 213 肯定応答シーケンスのタイミング ......................... 226 シリアル クロック (RC3/SCK/SCL) ....................... 206 ストップ条件のタイミング ..................................... 226 スリープ動作 ............................................................. 227 スレーブ モード ........................................................ 205 アドレス指定 .................................................... 205 受信 .................................................................... 206 送信 .................................................................... 206 動作 ............................................................................. 205 バス衝突 ストップ条件時 ................................................ 231 リピート スタート条件時 ............................... 230 ボーレート ジェネレータ ........................................ 219 マスター モード ........................................................ 217 受信 .................................................................... 223 スタート条件のタイミング ............................ 221 送信 .................................................................... 223 動作 .................................................................... 218 リピート スタート条件のタイミング ........... 222 マルチマスター モード ............................................ 227 マルチマスター通信、バスの衝突と調停 ............. 227 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 読み出し / 書き込み情報ビット (R/W ビット ) .... 205, 206 リセットの影響 ......................................................... 227 レジスタ ..................................................................... 200 ID ロケーション ........................................................ 295, 309 INCF .................................................................................... 332 INCFSZ ................................................................................ 333 INFSNZ ............................................................................... 333 INTCON2 レジスタ ........................................................... 108 INTCON3 レジスタ ........................................................... 109 INTCON レジスタ ..................................................... 107–109 Inter-Integrated Circuit。I2C を参照 IORLW ................................................................................ 334 IORWF ................................................................................ 334 IPR1 レジスタ .................................................................... 114 IPR2 レジスタ .................................................................... 115 IPR レジスタ ...................................................................... 114 L LFSR .................................................................................... 335 M MOVF .................................................................................. 335 MOVFF ................................................................................ 336 MOVLB ............................................................................... 336 MOVLW .............................................................................. 337 MOVSF ................................................................................ 355 MOVSS ................................................................................ 356 MOVWF .............................................................................. 337 MPLAB ASM30 アセンブラ、リンカ、 ライブラリアン ......................................................... 362 MPLAB ICD 2 インサーキット デバッガ ....................... 363 MPLAB ICE 2000 高性能ユニバーサル インサーキット エミュレータ ............................................................. 363 MPLAB PM3 デバイス プログラマ ................................. 363 MPLAB REAL ICE インサーキット エミュレータ システム ..................................................................... 363 MPLAB 統合開発環境ソフトウェア ............................... 361 MPLINK オブジェクト リンカ /MPLIB オブジェクト ライブラリアン ......................................................... 362 MSSP ACK パルス ....................................................... 205, 206 I2C モード。I2C モードを参照 SPI モード。SPI モードを参照 SPI マスター / スレーブの接続 ............................... 195 SSPBUF レジスタ ..................................................... 196 SSPSR レジスタ ........................................................ 196 制御レジスタ ( 全般 ) ............................................... 191 モジュールの概要 ..................................................... 191 MULLW .............................................................................. 338 MULWF .............................................................................. 338 N NEGF ................................................................................... 339 NOP ..................................................................................... 339 O OSCCON レジスタ .............................................................. 27 OSCTUNE レジスタ ............................................................ 31 P PICSTART Plus 開発用プログラマ ..................................364 PIC の標準命令の効果 .......................................................358 PIE1 レジスタ .....................................................................112 PIE2 レジスタ .....................................................................113 PIE レジスタ .......................................................................112 Pin Functions MCLR/VPP/RE3 ............................................................14 PIR1 レジスタ .....................................................................110 PIR2 レジスタ .....................................................................111 PIR レジスタ .......................................................................110 PLL 周波数逓倍器 ................................................................33 HSPLL オシレータ モード .........................................33 POP ......................................................................................340 PORTA LATA レジスタ ..........................................................119 PORTA レジスタ .......................................................119 TRISA レジスタ .........................................................119 関連レジスタ .............................................................121 PORTB LATB レジスタ ..........................................................122 PORTB レジスタ .......................................................122 TRISB レジスタ .........................................................122 関連レジスタ .............................................................124 PORTC LATC レジスタ ..........................................................125 PORTC レジスタ .......................................................125 RC3/SCK/SCL ピン ....................................................206 TRISC レジスタ .........................................................125 関連レジスタ .............................................................127 PORTD LATD レジスタ ..........................................................128 PORTD レジスタ .......................................................128 TRISD レジスタ .........................................................128 関連レジスタ .............................................................130 パラレル スレーブ ポート (PSP) 機能 ....................128 PORTE LATE レジスタ ..........................................................131 PORTE レジスタ ........................................................131 PSP モード選択 (PSPMODE ビット ) ......................128 TRISE レジスタ .........................................................131 関連レジスタ .............................................................133 POR。パワーオン リセットを参照 PRI_IDLE モード .................................................................45 PRI_RUN モード ..................................................................42 PSP。パラレル スレーブ ポート参照 PSTRCON レジスタ ...........................................................185 PUSH ....................................................................................340 PUSHL .................................................................................356 PUSH および POP 命令 .......................................................65 PWM (CCP モジュール ) 関連レジスタ .............................................................151 PWM (ECCP モジュール ) 切り替えの同期 .........................................................187 電源管理モードでの動作 .........................................188 パルス切り替え .........................................................185 フェイルセーフ クロック モニタとの動作 ...........188 リセットの影響 .........................................................188 PWM1CON レジスタ .........................................................184 PWM モード。拡張キャプチャ / コンペア / PWM を参照 ...............................................................173 P1A/P1B/P1C/P1D。拡張キャプチャ / コンペア / PWM (ECCP) を参照 ................................................. 173 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 417 PIC18F2XK20/4XK20 R SWAPF ................................................................................ 348 RAM。データ メモリ参照 RC_IDLE モード ..................................................................46 RCALL .................................................................................341 RCON レジスタ ............................................................50, 116 初期化時のビット状態 ...............................................56 RCREG .................................................................................240 RCSTA レジスタ ................................................................243 RESET ..................................................................................341 RETFIE ................................................................................342 RETLW ................................................................................342 RETURN ..............................................................................343 RLCF ....................................................................................343 RLNCF .................................................................................344 RRCF ....................................................................................344 RRNCF .................................................................................345 T S SCK ......................................................................................191 SDI .......................................................................................191 SDO ......................................................................................191 SEC_IDLE モード ................................................................45 SEC_RUN モード .................................................................42 SETF .....................................................................................345 SLEEP ..................................................................................346 SLRCON レジスタ .............................................................136 SPBRG .................................................................................245 SPBRGH ..............................................................................245 SPI モード (MSSP) SPI クロック ...............................................................196 SPI の I/O 許可 ...........................................................195 関連レジスタ .............................................................199 シリアル クロック ....................................................191 シリアル データ出力 ................................................191 シリアル データ入力 ................................................191 スレーブ モード ........................................................197 スレーブ選択 .............................................................191 スレーブ選択同期 .....................................................197 代表的な接続 .............................................................195 電源管理モードでの動作 .........................................199 動作 .............................................................................194 バス モードの互換性 ................................................199 マスター モード ........................................................196 マスター / スレーブの接続 ......................................195 リセットの影響 .........................................................199 SS .........................................................................................191 SSPADD レジスタ ..............................................................201 SSPCON1 レジスタ ....................................................193, 203 SSPCON2 レジスタ ............................................................204 SSPMSK レジスタ ..............................................................211 SSPOV .................................................................................223 SSPOV ステータス フラグ ...............................................223 SSPSTAT レジスタ ....................................................192, 202 R/W ビット .........................................................205, 206 STATUS レジスタ ................................................................80 STKPTR レジスタ ................................................................65 SUBFSR ...............................................................................357 SUBFWB .............................................................................346 SUBLW ................................................................................347 SUBULNK ...........................................................................357 SUBWF ................................................................................347 SUBWFB .............................................................................348 DS41303E_JP - ページ 418 T0CON レジスタ ............................................................... 153 T1CON レジスタ ............................................................... 157 T2CON レジスタ ............................................................... 165 T3CON レジスタ ............................................................... 167 TBLRD ................................................................................ 349 TBLWT ............................................................................... 350 Timer1 特殊イベント トリガ (ECCP) .................................. 172 TRISE レジスタ ................................................................. 132 PSPMODE ビット ..................................................... 128 TSTFSZ ............................................................................... 351 TXREG ................................................................................ 235 TXSTA レジスタ ............................................................... 242 BRGH ビット ............................................................. 245 V VREF。ADC リファレンス電圧を参照 W WCOL ................................................. 221, 222, 223, 224, 226 WCOL ステータス フラグ ............... 221, 222, 223, 224, 226 WDTCON レジスタ ........................................................... 305 WWW アドレス ................................................................. 427 WWW、オンラインサポート .............................................. 8 X XORLW ............................................................................... 351 XORWF ............................................................................... 352 あ アクセス バンク インデックス付きリテラル オフセット モード によるマッピング .............................................. 85 アセンブラ MPASM アセンブラ ................................................. 362 アナログ入力の接続に関する注意点 ............................. 282 い 一括呼び出しアドレスのサポート ................................. 216 インサーキット シリアル プログラミング (ICSP) 295, 309 インサーキット デバッガ ................................................ 309 インターネット アドレス ................................................ 427 インデックス付きリテラル オフセット アドレス指定 および PIC18 の標準命令 ......................................... 358 インデックス付きリテラル オフセット モード ........... 358 う ウォッチドッグ タイマ (WDT) ............................... 295, 304 関連レジスタ ............................................................. 305 制御レジスタ ............................................................. 305 プログラミングの注意点 ......................................... 304 お お客様サポート ................................................................. 427 お客様変更通知サービス ................................................. 427 オシレータ スタートアップ タイマ (OST) ................ 34, 53 オシレータ モジュール ...................................................... 25 HFINTOSC ................................................................... 25 LFINTOSC .................................................................... 25 オシレータ選択 ................................................................. 295 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 オシレータの切り替え 2 段速クロック スタートアップ ............................... 36 フェイルセーフ クロック モニタ ............................. 38 オシレータの構成 EC .................................................................................. 25 ECIO .............................................................................. 25 HS .................................................................................. 25 HSPLL ........................................................................... 25 INTOSC ........................................................................ 25 INTOSCIO .................................................................... 25 LP .................................................................................. 25 RC .................................................................................. 25 RCIO ............................................................................. 25 XT .................................................................................. 25 オシレータ、タイマ 1 .............................................. 157, 169 オシレータ、タイマ 3 ...................................................... 167 か 開発サポート ..................................................................... 361 改版履歴 ............................................................................. 413 各種状態におけるタイムアウト ( 表 ) .............................. 53 拡張キャプチャ / コンペア /PWM (ECCP) ..................... 171 拡張命令セット ADDFSR ..................................................................... 354 ADDULNK ................................................................. 354 CALLW ....................................................................... 355 MOVSF ....................................................................... 355 MOVSS ....................................................................... 356 PUSHL ........................................................................ 356 SUBFSR ...................................................................... 357 SUBULNK .................................................................. 357 および MPLAB ツールの使用 ................................. 360 使用時の注意点 ......................................................... 358 シンタックス ............................................................. 353 拡張ユニバーサル同期 / 非同期送受信器 (EUSART) ... 233 間接アドレス指定 ............................................................... 82 貫通電流 ............................................................................. 183 き キャプチャ (CCP モジュール ) ........................................ 143 CCPRxH:CCPRxL レジスタ ..................................... 143 CCP ピンの設定 ........................................................ 143 関連レジスタ ............................................................. 146 ソフトウェア割り込み ............................................. 143 タイマ 1/ タイマ 3 のモード選択 ............................ 143 プリスケーラ ............................................................. 143 キャプチャ (ECCP モジュール ) ...................................... 172 キャプチャ / コンペア /PWM (CCP) ............................... 141 2 つの CCP モジュール間の相互作用 .................... 142 CCPRxH レジスタ ..................................................... 142 CCPRxL レジスタ ..................................................... 142 CCP モードとタイマ リソース ............................... 142 PWM 動作のセットアップ ...................................... 150 PWM の周期 .............................................................. 148 PWM モード .............................................................. 147 PWM 周波数と分解能の例 Fosc = 20 MHz ........................................... 149 Fosc = 40 MHz ........................................... 149 Fosc = 8 MHz ............................................. 149 システム クロック周波数の変更 ................... 150 スリープ モード時の動作 ............................... 150 デューティ サイクル ....................................... 148 動作のセットアップ ........................................ 150 2009 Microchip Technology Inc. リセットの影響 .................................................150 キャプチャ モード。キャプチャ参照 コンペア モード。コンペア参照 モジュール構成 .........................................................142 く クロック ソース 31 kHz ソースの選択 ...................................................26 OSCCON レジスタによる選択 ..................................26 外部モード ...................................................................28 EC ..........................................................................28 HS ..........................................................................29 LP ..........................................................................29 OST .......................................................................28 RC .........................................................................30 XT ..........................................................................29 関連レジスタ ...............................................................39 内部モード ...................................................................30 HFINTOSC ...........................................................30 INTOSC ................................................................30 INTOSCIO ............................................................30 LFINTOSC ............................................................32 周波数選択 ...........................................................32 クロックの切り替え ............................................................35 け 計算型 GOTO ........................................................................66 こ 高 / 低電圧検知 ...................................................................289 アプリケーション .....................................................293 関連レジスタ .............................................................294 起動期間 .....................................................................291 消費電流 .....................................................................291 設定 .............................................................................291 代表的な応用例 .........................................................293 動作 .............................................................................290 スリープ モード ................................................293 特性 .............................................................................377 リセットの影響 .........................................................293 構成ビット ..........................................................................296 構成レジスタのプロテクション ......................................309 高速レジスタ スタック .......................................................66 コード プロテクション .....................................................295 コード例 16 x 16 符号付き乗算ルーチン ................................104 16 x 16 符号なし乗算ルーチン ................................104 8 x 8 符号付き乗算ルーチン ....................................103 8 x 8 符号なし乗算ルーチン ....................................103 A/D 変換 .....................................................................266 PORTA の初期化 .......................................................119 PORTB の初期化 .......................................................122 PORTC の初期化 .......................................................125 PORTD の初期化 .......................................................128 PORTE の初期化 ........................................................131 SSPBUF (SSPSR) レジスタのロード .......................194 STATUS、WREG、BSR レジスタの RAM への 保存 .....................................................................117 オフセット値を用いた計算型 GOTO .......................66 間接アドレス指定による RAM のクリア ................81 キャプチャ プリスケーラの切り替え ....................143 高速レジスタ スタック ..............................................66 タイマ 1 リアルタイム クロックの実装 ................162 Preliminary DS41303E_JP - ページ 419 PIC18F2XK20/4XK20 データ EEPROM の読み出し .....................................99 データ EEPROM のリフレッシュ ルーチン ..........100 データ EEPROM への書き込み .................................99 フラッシュ プログラム メモリからの ワード読み出し ...................................................91 フラッシュ プログラム メモリの行消去 .................92 フラッシュ プログラム メモリへの書き込み ...94–95 コンパレータ 応答時間 .....................................................................277 関連レジスタ .............................................................284 スリープ モードの動作 ............................................279 動作 .............................................................................275 リセットの影響 .........................................................279 コンパレータ モジュール .................................................275 入力条件に対する C1 の出力状態 ...........................277 コンパレータ電圧リファレンス (CVREF) 応答時間 .....................................................................277 概要 .............................................................................285 関連レジスタ .............................................................288 スリープ モードの動作 ............................................285 リセットの影響 .................................................279, 285 コンパレータの仕様 ..........................................................376 コンペア (CCP モジュール ) .............................................145 CCPRx レジスタ ........................................................145 関連レジスタ .............................................................146 ソフトウェア割り込み .............................................145 タイマ 1/ タイマ 3 のモード選択 ............................145 特殊イベント トリガ ........................................145, 170 ピンの設定 .................................................................145 コンペア (ECCP モジュール ) ..........................................172 特殊イベント トリガ ................................................172 さ さまざまなクロック ソースに対する電源管理モード の影響 ...........................................................................34 し シリアル クロック、SCK .................................................191 シリアル データ出力 (SDO) .............................................191 シリアル データ入力 (SDI) ...............................................191 シリアル ペリフェラル インターフェース。 SPI モードを参照 す スタック フル / アンダーフロー リセット .......................66 スタック最上位へのアクセス ............................................64 スリープ OSC1 および OSC2 ピンの状態 .................................34 スリープ モード ...................................................................43 スルー レート .....................................................................136 スレーブ選択 (SS) ..............................................................191 スレーブ選択同期 ..............................................................197 せ 正誤表情報 ..............................................................................8 絶対最大定格 ......................................................................365 全レジスタの初期化状態 ..............................................57–60 そ ソフトウェアシミュレータ (MPLAB SIM) ....................362 DS41303E_JP - ページ 420 た タイマ 0 .............................................................................. 153 16 ビット モードにおける読み出しと書き込み ... 154 オーバーフロー割り込み ......................................... 155 関連レジスタ ............................................................. 155 ソース エッジ選択 (T0SE ビット ) ......................... 154 ソース選択 (T0CS ビット ) ...................................... 154 動作 ............................................................................. 154 プリスケーラ ............................................................. 155 プリスケーラ プリスケーラ。タイマ 0 参照 プリスケーラ割り当て (PSA ビット ) .................... 155 プリスケーラ割り当ての切り替え ......................... 155 プリスケール値選択 (T0PS2:T0PS0 ビット ) ........ 155 タイマ 1 .............................................................................. 157 16 ビット読み出し / 書き込みモード ..................... 160 CCP 特殊イベント トリガによるリセット ........... 161 TMR1H レジスタ ...................................................... 157 TMR1L レジスタ ....................................................... 157 オーバーフロー割り込み ......................................... 157 オシレータ ......................................................... 157, 160 オシレータのレイアウト上の注意点 ..................... 161 関連レジスタ ............................................................. 163 動作 ............................................................................. 158 非同期カウンタ モード ............................................ 159 読み出し / 書き込み ......................................... 159 プリスケーラ ............................................................. 159 リアルタイム クロックとしての利用 .................... 162 割り込み ..................................................................... 161 タイマ 2 .............................................................................. 165 関連レジスタ ............................................................. 166 出力 ............................................................................. 166 動作 ............................................................................. 165 割り込み ..................................................................... 166 タイマ 3 .............................................................................. 167 16 ビット読み出し / 書き込みモード ..................... 169 TMR3H レジスタ ...................................................... 167 TMR3L レジスタ ....................................................... 167 オーバーフロー割り込み ................................. 167, 169 オシレータ ......................................................... 167, 169 関連レジスタ ............................................................. 170 動作 ............................................................................. 168 特殊イベント トリガ (CCP) ..................................... 170 タイミング図 A/D 変換 ..................................................................... 397 CLKO および I/O ....................................................... 382 EUSART の同期受信 ( マスター / スレーブ ) ....... 395 EUSART の同期送信 ( マスター / スレーブ ) ....... 395 I2C スレーブ モード (10 ビット受信、SEN = 0) ... 209 I2C スレーブ モード (10 ビット受信、SEN = 1) ... 215 I2C スレーブ モード (10 ビット送信 ) .................... 210 I2C スレーブ モード (7 ビット受信、SEN = 0) ..... 207 I2C スレーブ モード (7 ビット受信、SEN = 1) ..... 214 I2C スレーブ モード (7 ビット送信 ) ...................... 208 I2C スレーブ モードの一括呼び出しアドレスの シーケンス (7 ビットまたは 10 ビットの アドレス モード ) ............................................. 216 I2C の送信 / 受信モードのストップ条件 ............... 226 I2C バスのスタート / ストップ ビット .................. 391 I2C バスのデータ ...................................................... 391 I2C マスター モード (7 ビット受信 ) ...................... 225 I2C マスター モード (7 ビットまたは 10 ビットの 送信 ) .................................................................. 224 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 PLL を有効にした場合の POR 時のタイムアウト シーケンス (MCLR は VDD に接続 ) ................ 55 PWM 自動シャットダウン 自動再スタートを有効に設定 ........................ 182 ファームウェアによる再スタート ................ 182 PWM 出力 ( 正論理 ) ................................................. 174 PWM 出力 ( 負論理 ) ................................................. 175 PWM の方向の変更 .................................................. 179 SPI スレーブ モードの例 (CKE = 0) ....................... 389 SPI スレーブ モードの例 (CKE = 1) ....................... 390 SPI マスター モードの例 (CKE = 0) ....................... 387 SPI マスター モードの例 (CKE = 1) ....................... 388 SPI モード ( スレーブ モード、CKE = 0) .............. 198 SPI モード ( スレーブ モード、CKE = 1) .............. 198 SPI モード ( マスター モード ) ............................... 196 Timer0 と Timer1 の外部クロック .......................... 384 アイドル モードからラン モードに ウェイクアップするときの遷移タイミング .. 45 アイドル モードに移行するときの遷移 タイミング .......................................................... 45 外部クロック (PLL を除く全モード ) .................... 380 キャプチャ / コンペア /PWM (CCP) ....................... 385 クロック / 命令サイクル ............................................ 67 クロック調停がある場合のボーレート ジェネレータのタイミング ............................ 220 クロック同期 ............................................................. 213 高 / 低電圧検知動作 (VDIRMAG = 0) ..................... 291 高 / 低電圧検知動作 (VDIRMAG = 1) ..................... 292 高 / 低電圧検知の特性 .............................................. 377 肯定応答シーケンス ................................................. 226 コンパレータ出力 ..................................................... 275 最初のスタート ビットのタイミング .................... 221 自動ボーレート計算 ................................................. 250 スタート条件時の SDA の調停による BRG の リセット ............................................................ 229 スタート条件時のバス衝突 (SCL = 0) .................... 229 スタート条件時のバス衝突 (SDA のみ ) ............... 228 ストップ条件時のバス衝突 ( ケース 1) ................. 231 ストップ条件時のバス衝突 ( ケース 2) ................. 231 スリープ モードに移行するときの遷移 .................. 44 スリープからウェイクアップするときの遷移 (HSPLL) ................................................................ 44 スリープ時の自動ウェイクアップ ビット (WUE) 251 スレーブ同期 ............................................................. 197 送信と肯定応答のバス衝突のタイミング ............. 227 タイマ 1 のインクリメント エッジ ........................ 159 立ち上がり時間が長い場合 (MCLR は VDD に接続、 VDD の立ち上がり時間 > TPWRT) ..................... 55 通常動作時の自動ウェイクアップ ビット (WUE) 251 デューティ サイクルが 100%近傍での PWM の 方向変更 ............................................................ 180 電源投入時のタイムアウト シーケンス (MCLR は VDD に接続、VDD の立ち上がり 時間 < TPWRT) ...................................................... 54 電源投入時のタイムアウト シーケンス (MCLR を VDD に接続しない場合、ケース 1) 54 電源投入時のタイムアウト シーケンス (MCLR を VDD に接続しない場合、ケース 2) 54 同期受信 ( マスター モード、SREN) ..................... 257 同期送信 ..................................................................... 254 同期送信 (TXEN 経由 ) ............................................. 254 内部オシレータの切り替えタイミング ................... 37 2009 Microchip Technology Inc. ハーフブリッジ PWM 出力 ..............................176, 183 パラレル スレーブ ポート (PIC18F4XK20) ...........386 パラレル スレーブ ポート (PSP) 書き込み ............138 パラレル スレーブ ポート (PSP) 読み出し ............138 非同期受信 .................................................................241 非同期送信 .................................................................236 非同期送信 ( 連続 ) ....................................................237 フェイルセーフ クロック モニタ (FSCM) ...............39 ブラウンアウト リセット (BOR) ............................383 フルブリッジ PWM 出力 ..........................................178 ブレーク文字の送信シーケンス .............................252 マスター SSP の I2C バスのスタート / ストップ ビット .................................................................393 マスター SSP の I2C バスのデータ .........................393 リセット、ウォッチドッグ タイマ (WDT)、 オシレータ起動タイマ (OST)、 パワーアップ タイマ (PWRT) .........................383 リピート スタート条件 ............................................222 リピート スタート条件時のバス衝突 ( ケース 1) .230 リピート スタート条件時のバス衝突 ( ケース 2) .230 タイミング図と仕様 ..........................................................380 A/D 変換の要件 .........................................................397 CLKO および I/O の要件 ..........................................382 EUSART の同期受信の要件 .....................................395 EUSART の同期送信の要件 .....................................395 I2C バスのスタート / ストップ ビットの要件 ( スレーブ モード ) ...........................................391 I2C バスのデータの要件 ( スレーブ モード ) ........392 PLL クロック .............................................................381 SPI モードの要件の例 ( スレーブ モード、CKE = 0) ..........................389 ( スレーブ モード、CKE = 1) ..........................390 ( マスター モード、CKE = 0) ..........................387 ( マスター モード、CKE = 1) ..........................388 Timer0 と Timer1 の外部クロックの要件 ...............384 外部クロックの要件 .................................................380 キャプチャ / コンペア /PWM の要件 ......................385 パラレル スレーブ ポートの要件 (PIC18F4X20) ..386 マスター SSP の I2C バスのスタート / ストップ ビットの要件 .....................................................393 マスター SSP の I2C バスのデータの要件 .............394 リセット、ウォッチドッグ タイマ、 発振器起動タイマ、電源投入タイマ、 およびブラウンアウト リセットの要件 ........383 単一電源 ICSP のプログラミング ち 直接アドレス指定 ................................................................82 て 低電圧 ICSP のプログラミング。単一電源 ICSP の プログラミングを参照 データ メモリ .......................................................................69 PIC18F23K20/43K20 のマップ ...................................70 PIC18F24K20/44K20 のマップ ...................................71 PIC18F25K20/45K20 のマップ ...................................72 PIC18F26K20/46K20 のマップ ...................................73 アクセス バンク ..........................................................75 および拡張命令セット ...............................................83 特殊機能レジスタ .......................................................75 バンク選択レジスタ (BSR) ........................................69 汎用レジスタ ...............................................................75 Preliminary DS41303E_JP - ページ 421 PIC18F2XK20/4XK20 データ EEPROM EEADR および EEADRH レジスタ ...........................97 EECON1 および EECON2 レジスタ ..........................97 関連レジスタ .............................................................101 コード プロテクション ............................................309 データ EEPROM メモリ ......................................................97 書き込み .......................................................................99 書き込みの検証 ...........................................................99 コード プロテクション時の動作 ............................100 誤書き込み防止 .........................................................100 使用 .............................................................................100 読み出し .......................................................................99 データのアドレス指定モード ............................................81 インデックス付きリテラル オフセット ..................83 影響を受ける命令 ...............................................83 拡張命令セットを有効にした場合とのアドレス 指定モードの比較 ...............................................84 含意およびリテラル ...................................................81 間接 ...............................................................................81 直接 ...............................................................................81 テーブル ポインタの操作 ( 表 ) .........................................90 テーブル読み出し / テーブル書き込み .............................66 デバイス リセット タイマ ..................................................53 PLL ロック タイムアウト ..........................................53 タイムアウト シーケンス ..........................................53 パワーアップ タイマ (PWRT) ....................................53 デバイス間の違い ..............................................................414 デバイス概要 ..........................................................................9 新しいコアの機能 .........................................................9 その他の特殊機能 .......................................................10 特徴 ( 表 ) ......................................................................11 ファミリの各メンバーに関する詳細 .......................10 電圧リファレンス VR の安定化 ...............................................................286 固定電圧リファレンス (FVR) ..................................286 電圧リファレンス (VR) 仕様 .............................................................................376 電圧リファレンス。コンパレータ電圧リファレンス (CVREF) を参照 電気的特性 ..........................................................................365 電源管理モード ....................................................................41 アイドル モード ..........................................................43 PRI_IDLE ..............................................................45 RC_IDLE ..............................................................46 SEC_IDLE ............................................................45 アイドル モードおよびスリープ モードの終了 .....46 WDT タイムアウトによる方法 .........................46 スタートアップ遅延を伴わない方法 ...............47 リセットによる方法 ...........................................46 割り込みによる方法 ...........................................46 移行 ...............................................................................41 一覧 ( 表 ) ......................................................................41 および A/D 動作 ........................................................265 および PWM 動作 ......................................................188 および SPI の動作 ......................................................199 クロック遷移およびステータス インジケータ ......42 クロックソースに対する影響 ...................................34 スリープ モード ..........................................................43 選択 ...............................................................................41 複数のスリープ機能 ...................................................42 DS41303E_JP - ページ 422 ラン モード .................................................................. 42 PRI_RUN .............................................................. 42 SEC_RUN ............................................................. 42 電源投入時の遅延 ............................................................... 34 と 読者アンケート ................................................................. 428 特殊イベント トリガ ........................................................ 265 特殊イベント トリガ。コンペア(ECCPモジュール)を参照 特殊イベント トリガ。コンペア参照 (ECCP モード ) 特殊機能レジスタ ............................................................... 75 マップ ........................................................................... 76 な 内部 RC オシレータ WDT との使用 ........................................................... 304 内部オシレータ ブロック HFINTOSC の周波数ドリフト .................................. 32 HFINTOSC モードの PLL .......................................... 33 内部サンプリング スイッチ (RSS) のインピーダンス . 271 に 入出力ピン機能一覧 PIC18F2XK20 ............................................................... 14 PIC18F4XK20 ............................................................... 18 は ハードウェア乗算器 ......................................................... 103 概要 ............................................................................. 103 性能比較 ..................................................................... 103 動作 ............................................................................. 103 パッケージ情報 ................................................................. 401 マーキング ................................................................. 401 パラレル スレーブ ポート (PSP) ............................. 128, 137 CS ( チップ セレクト ) ............................................. 137 PORTD ........................................................................ 137 RD ( 読み出し入力 ) .................................................. 137 WR ( 書き込み入力 ) ................................................. 137 関連レジスタ ............................................................. 139 選択 (PSPMODE ビット ) ................................. 128, 137 パルス切り替え ................................................................. 185 パワーアップ タイマ (PWRT) ........................................... 34 パワーオン リセット (POR) ............................................... 51 タイムアウト シーケンス .......................................... 53 パワーアップ タイマ (PWRT) ................................... 53 バンク選択レジスタ (BSR) ................................................ 69 ひ 非同期動作でのクロックの精度 ..................................... 242 標準命令 ............................................................................. 311 ピン機能 MCLR/VPP/RE3 ............................................................ 18 OSC1/CLKI/RA7 .................................................... 14, 18 OSC2/CLKO/RA6 .................................................. 14, 18 RA0/AN0/C12IN0- ................................................. 15, 19 RA1/AN1/C12IN0- ....................................................... 19 RA1/AN1/C12IN1- ....................................................... 15 RA2/AN2/VREF-/CVREF/C2IN+ ............................ 15, 19 RA3/AN3/VREF+/C1IN+ ........................................ 15, 19 RA4/T0CKI/C1OUT ............................................... 15, 19 RA5/AN4/SS/HLVDIN/C2OUT ............................ 15, 19 RB0/INT0/FLT0/AN12 ........................................... 16, 20 RB1/INT1/AN10/C12IN3- ........................................... 20 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 RB1/INT1/AN10/P1C/C12IN3- .................................... 16 RB2/INT2/AN8 ............................................................. 20 RB2/INT2/AN8/P1B ..................................................... 16 RB3/AN9/CCP2/C12IN2- ....................................... 16, 20 RB4/KBI0/AN11 ........................................................... 20 RB4/KBI0/AN11/P1D .................................................. 16 RB5/KBI1/PGM ...................................................... 16, 20 RB6/KBI2/PGC ....................................................... 16, 20 RB7/KBI3/PGD ...................................................... 16, 20 RC0/T1OSO/T13CKI .............................................. 17, 21 RC1/T1OSI/CCP2 ................................................... 17, 21 RC2/CCP1/P1A ....................................................... 17, 21 RC3/SCK/SCL ........................................................ 17, 21 RC4/SDI/SDA ......................................................... 17, 21 RC5/SDO ................................................................ 17, 21 RC6/TX/CK ............................................................ 17, 21 RC7/RX/DT ............................................................ 17, 21 RD0/PSP0 ...................................................................... 22 RD1/PSP1 ...................................................................... 22 RD2/PSP2 ...................................................................... 22 RD3/PSP3 ...................................................................... 22 RD4/PSP4 ...................................................................... 22 RD5/PSP5/P1B .............................................................. 22 RD6/PSP6/P1C .............................................................. 22 RD7/PSP7/P1D ............................................................. 22 RE0/RD/AN5 ................................................................ 23 RE1/WR/AN6 ............................................................... 23 RE2/CS/AN7 ................................................................. 23 VDD ......................................................................... 17, 23 VSS .......................................................................... 17, 23 ふ ファームウェア命令 ......................................................... 311 フェイルセーフ クロック モニタ ............................. 38, 295 フェイルセーフ状態の解消 ....................................... 38 フェイルセーフの検出 ............................................... 38 フェイルセーフの動作 ............................................... 38 リセットまたはスリープからのウェイクアップ ... 38 ブラウンアウト リセット (BOR) ...................................... 52 検出 ............................................................................... 52 スリープ モード時の無効化 ...................................... 52 ソフトウェア制御可能 ............................................... 52 有効化の最小時間 ....................................................... 52 フラッシュ プログラム メモリ ......................................... 87 書き込み ....................................................................... 92 書き込みの検証 .................................................. 95 誤書き込み防止 .................................................. 95 予期せぬ中断 ...................................................... 95 書き込みシーケンス ................................................... 93 関連レジスタ ............................................................... 95 コード プロテクション時の動作 .............................. 95 消去 ............................................................................... 92 消去シーケンス ........................................................... 92 制御レジスタ ............................................................... 88 EECON1 および EECON2 .................................. 88 TABLAT ( テーブル ラッチ ) レジスタ ........... 90 TBLPTR ( テーブル ポインタ ) レジスタ ........ 90 テーブル ポインタ 動作ごとの境界 .................................................. 90 テーブル ポインタの境界 .......................................... 90 テーブル読み出しおよびテーブル書き込み ........... 87 読み出し ....................................................................... 91 2009 Microchip Technology Inc. プリスケーラ、タイマ 0 ...................................................155 ブレークでのウェイクアップ ..........................................250 ブレーク文字 (12 ビット ) の送信および受信 ...............252 プログラミング、デバイス命令 ......................................311 プログラム カウンタ ...........................................................64 PCLATH および PCLATU レジスタ .........................64 PCL、PCH、PCU レジスタ .......................................64 プログラム メモリ および拡張命令セット ...............................................85 コード プロテクション ............................................307 マップおよびスタック ( 図 ) ......................................63 命令 ...............................................................................68 2 ワード ................................................................68 リセット ベクタ ..........................................................63 ルックアップ テーブル ..............................................66 割り込みベクタ ...........................................................63 プログラム検証とコード プロテクション .....................306 関連レジスタ .............................................................306 ブロック図 16 ビット モードのタイマ 0 ....................................155 8 ビット モードのタイマ 0 ......................................154 ADC .............................................................................261 ADC の伝達関数 ........................................................272 CCP PWM ...................................................................147 EUSART の受信 .........................................................234 EUSART の送信 .........................................................233 MSSP (I2C マスター モード ) ...................................217 MSSP (I2C モード ) ....................................................200 MSSP (SPI モード ) ....................................................191 PIC18F2XK20 ...............................................................12 PIC18F4XK20 ...............................................................13 PLL (HS モード ) .........................................................33 PORTD および PORTE ( パラレル スレーブ ポート ) ..........................137 PWM ( 拡張 ) ..............................................................173 アナログ入力モデル .........................................272, 282 ウォッチドッグ タイマ ............................................304 オンチップ リセット回路 ..........................................49 外部 POR 回路 (VDD 電源の立ち上がりが遅い場合 ) ...............51 外部 RC モード ............................................................30 外部入力のある高 / 低電圧検知 ..............................290 キャプチャ モード動作 ............................................144 クロック ソース ..........................................................25 コンパレータ 1 ..........................................................276 コンパレータ 2 ..........................................................276 コンパレータ電圧リファレンス .............................286 コンペア モードの動作 ............................................145 振動子の動作 ...............................................................29 水晶振動子による動作 ...............................................29 タイマ 1 ......................................................................158 タイマ 1 (16 ビット読み出し / 書き込みモード ) ..158 タイマ 2 ......................................................................166 タイマ 3 ......................................................................168 タイマ 3 (16 ビット読み出し / 書き込みモード ) ..169 テーブル書き込み動作 ...............................................88 テーブル読み出し動作 ...............................................87 電圧リファレンスの出力バッファの例 .................287 汎用 I/O ポート ..........................................................119 フェイルセーフ クロック モニタ (FSCM) ...............38 フラッシュ プログラム メモリからの読み出し .....91 Preliminary DS41303E_JP - ページ 423 PIC18F2XK20/4XK20 フラッシュ プログラム メモリへのテーブル 書き込み ...............................................................93 ボーレート ジェネレータ ........................................219 割り込みロジック .....................................................106 へ 変更通知サービス ..............................................................427 ほ ボーレート ジェネレータ .................................................219 ま マイクロチップ社のインターネット ウェブ サイト ....427 マスター クリア (MCLR) ....................................................51 マスター同期シリアル ポート (MSSP) モジュール。 MSSP を参照 め 命令サイクル ........................................................................67 クロック方式 ...............................................................67 命令セット ..........................................................................311 ADDLW ......................................................................317 ADDWF .......................................................................317 ADDWF ( インデックス付きリテラル オフセット モード ) ..........................................359 ADDWFC ....................................................................318 ANDLW ......................................................................318 ANDWF .......................................................................319 BC ................................................................................319 BCF ..............................................................................320 BN ................................................................................320 BNC .............................................................................321 BNN .............................................................................321 BNOV ..........................................................................322 BNZ .............................................................................322 BOV .............................................................................325 BRA .............................................................................323 BSF ..............................................................................323 BSF ( インデックス付きリテラル オフセット モード ) ...............................................................359 BTFSC .........................................................................324 BTFSS ..........................................................................324 BTG .............................................................................325 BZ ................................................................................326 CALL ...........................................................................326 CLRF ...........................................................................327 CLRWDT ....................................................................327 COMF ..........................................................................328 CPFSEQ .......................................................................328 CPFSGT .......................................................................329 CPFSLT .......................................................................329 DAW ............................................................................330 DCFSNZ ......................................................................331 DECF ...........................................................................330 DECFSZ ......................................................................331 GOTO ..........................................................................332 INCF ............................................................................332 INCFSZ ........................................................................333 INFSNZ .......................................................................333 IORLW ........................................................................334 IORWF ........................................................................334 LFSR ............................................................................335 MOVF ..........................................................................335 DS41303E_JP - ページ 424 MOVFF ....................................................................... 336 MOVLB ...................................................................... 336 MOVLW ..................................................................... 337 MOVWF ..................................................................... 337 MULLW ...................................................................... 338 MULWF ...................................................................... 338 NEGF .......................................................................... 339 NOP ............................................................................. 339 POP ............................................................................. 340 PUSH ........................................................................... 340 RCALL ........................................................................ 341 RESET ......................................................................... 341 RETFIE ....................................................................... 342 RETLW ....................................................................... 342 RETURN ..................................................................... 343 RLCF ........................................................................... 343 RLNCF ........................................................................ 344 RRCF ........................................................................... 344 RRNCF ........................................................................ 345 SETF ........................................................................... 345 SETF ( インデックス付きリテラル オフセット モード ) .............................................................. 359 SLEEP ......................................................................... 346 SUBFWB .................................................................... 346 SUBLW ....................................................................... 347 SUBWF ....................................................................... 347 SUBWFB .................................................................... 348 SWAPF ....................................................................... 348 TBLRD ........................................................................ 349 TBLWT ....................................................................... 350 TSTFSZ ....................................................................... 351 XORLW ...................................................................... 351 XORWF ...................................................................... 352 一般的な形式 ............................................................. 313 オペコードのフィールドの説明 ............................. 312 拡張命令セット ......................................................... 353 命令フロー / パイプライン ................................................ 67 メモリ構成 ........................................................................... 63 データ メモリ .............................................................. 69 プログラム メモリ ...................................................... 63 り リセット ....................................................................... 49, 295 オシレータ起動タイマ (OST) .................................. 295 パワーアップ タイマ (PWRT) ................................. 295 パワーオン リセット (POR) .................................... 295 ブラウンアウト リセット (BOR) ............................ 295 リセットの影響 PWM モード .............................................................. 150 リターン アドレス スタック ............................................. 64 リターン スタック ポインタ (STKPTR) ........................... 65 れ レジスタ ADCON0 (ADC 制御 0) ............................................ 267 ADCON1 (ADC 制御 1) ............................................ 268 ADCON2 (ADC 制御 2) ............................................ 269 ADRESH (ADC 結果 High) (ADFM = 0) ................. 270 ADRESH (ADC 結果 High) (ADFM = 1) ................. 270 ADRESL (ADC 結果 Low) (ADFM = 0) .................. 270 ADRESL (ADC 結果 Low) (ADFM = 1) .................. 270 ANSEL ( アナログ選択 1) ........................................ 134 ANSEL ( ポート アナログ制御 ) ............................. 134 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 ANSELH ( アナログ選択 2) ..................................... 135 ANSELH ( ポート アナログ制御 ) .......................... 135 BAUDCON (EUSART ボーレート制御 ) ................ 244 BAUDCON ( ボーレート制御 ) ............................... 244 CCP1CON (Enhanced Capture/Compare/PWM Control) ..... 171 CCP2CON ( 標準キャプチャ / コンペア /PWM 制御 ) .... 141 CM1CON0 (C1 制御 ) ................................................ 280 CM2CON0 (C2 制御 ) ................................................ 281 CM2CON1 (C2 制御 ) ................................................ 283 CONFIG1H ( 構成 1 High) ........................................ 297 CONFIG2H ( 構成 2 High) ........................................ 298 CONFIG2L ( 構成 2 Low) .......................................... 298 CONFIG3H ( 構成 3 High) ........................................ 299 CONFIG4L ( 構成 4 Low) .......................................... 299 CONFIG5H ( 構成 5 High) ........................................ 300 CONFIG5L ( 構成 5 Low) .......................................... 300 CONFIG6H ( 構成 6 High) ........................................ 301 CONFIG6L ( 構成 6 Low) .......................................... 301 CONFIG7H ( 構成 7 High) ........................................ 302 CONFIG7L ( 構成 7 Low) .......................................... 302 CVRCON ( コンパレータ電圧リファレンス制御 ) CVRCON レジスタ ........................................... 287 CVRCON2 ( コンパレータ電圧リファレンス制御 2) CVRCON2 レジスタ ......................................... 288 DEVID1 ( デバイス ID 1) .......................................... 303 DEVID2 ( デバイス ID 2) .......................................... 303 ECCPAS (Enhanced CCP Auto-shutdown Control) ... 181 EECON1 ( データ EEPROM 制御 1) .................... 89, 98 HLVDCON ( 高 / 低電圧検知制御 ) ......................... 289 INTCON ( 割り込み制御 ) ........................................ 107 INTCON2 ( 割り込み制御 2) .................................... 108 INTCON3 ( 割り込み制御 3) .................................... 109 IPR1 ( 周辺割り込み優先度 1) ................................. 114 IPR2 ( 周辺割り込み優先度 2) ................................. 115 OSCCON ( オシレータ制御 ) ..................................... 27 OSCTUNE ( オシレータ調整 ) ................................... 31 PIE1 ( 周辺割り込みイネーブル 1) ......................... 112 PIE2 ( 周辺割り込みイネーブル 2) ......................... 113 PIR1 ( 周辺割り込み要求 1) ..................................... 110 PIR2 ( 周辺割り込み要求 2) ..................................... 111 PSTRCON (Pulse Steering Control) ........................... 185 PWM1CON (Enhanced PWM Control) ...................... 184 RCON ( リセット制御 ) ...................................... 50, 116 RCREG レジスタ ....................................................... 249 RCSTA ( 受信ステータスおよび制御 ) .................. 243 SLRCON ( ポート スルー レート制御 ) ................. 136 SSPADD (MSSP Address and Baud Rate、SPI モード ) . 201 SSPCON1 (MSSP Control 1、I2C モード ) .............. 203 SSPCON1 (MSSP Control 1、SPI モード ) .............. 193 SSPCON2 (MSSP Control 2、I2C モード ) .............. 204 SSPMSK (SSP Mask) ................................................. 211 SSPSTAT (MSSP Status、SPI モード ) ............ 192, 202 STATUS ........................................................................ 80 STKPTR ( スタック ポインタ ) ................................. 65 T0CON ( タイマ 0 制御 ) .......................................... 153 T1CON ( タイマ 1 制御 ) .......................................... 157 T2CON ( タイマ 2 制御 ) .......................................... 165 T3CON ( タイマ 3 制御 ) .......................................... 167 TRISE (PORTE/PSP 制御 ) ........................................ 132 2009 Microchip Technology Inc. TXSTA ( 送信ステータスおよび制御 ) ...................242 WDTCON ( ウォッチドッグ タイマ制御 ) .............305 レジスタ ファイル ...............................................................75 レジスタ ファイル一覧 .................................................77–79 レジスタのリセット状態 ....................................................56 わ 割り込み ..............................................................................105 割り込みソース ..................................................................295 ADC .............................................................................263 割り込み中のコンテキスト保存 ......................................117 割り込み要因 INTn ピン ....................................................................117 PORTB 状態変化割り込み .......................................117 TMR0 ...........................................................................117 TMR0 オーバーフロー ..............................................155 TMR1 オーバーフロー ..............................................157 TMR3 オーバーフロー ......................................167, 169 キャプチャ完了 (CCP) ..............................................143 コンペア完了 (CCP) ..................................................145 状態変化割り込み (RB7:RB4) ..................................122 Preliminary DS41303E_JP - ページ 425 PIC18F2XK20/4XK20 DS41303E_JP - ページ 426 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 マイクロチップ社のウェブ サイト お客様サポート マイクロチップ社は、 ウェブ サイト(www.microchip. com) でオンラインサポートを提供しています。こ のウェブ サイトを活用することで、ファイルや情 報を簡単に入手できます。ウェブ サイトには、ご 使用中のインターネット ブラウザでアクセスでき、 以下の情報が掲載されています。 マイクロチップ社製品のユーザーは、以下の複数の ルートでサポートが受けられます。 • 製品サポート – データシートと正誤表、アプ リケーション ノートとサンプル プログラム、 設計リソース、ユーザーズ ガイドとハード ウェア サポート文書、最新のソフトウェアと 過去のソフトウェア • テクニカル サポート – よくある質問 (FAQ)、 テクニカル サポート リクエスト、オンライン ディスカッション グループ、マイクロチップ 社コンサルタント プログラム メンバの一覧 • マイクロチップ社の事業 – 製品選択および 注文ガイド、マイクロチップ社の最新プレス リリース、セミナーおよびイベントの一覧、 マイクロチップ各営業所、販売代理店、担当 工場の一覧 • • • • • 販売代理店 該当地域の営業所 フィールド アプリケーション エンジニア (FAE) テクニカルサポート 開発システム情報ライン サポートが必要な場合、お客様は製品を購入した販 売代理店またはフィールド アプリケーション エン ジニア (FAE) にご連絡ください。該当地域の営業所 でもお客様へのサポートを提供しています。各営業 所と所在地の一覧は、本書の最終ページに記載され ています。 テクニカルサポートはウェブ サイト (http:// support.microchip.com) より提供されています。 お客様への変更通知サービス マイクロチップ社のお客様通知サービスにて、常に お客様にマイクロチップ社製品の最新情報を提供 させていただきます。この通知サービスを申し込ま れたお客様には、指定された製品ファミリまたは開 発ツールに関する変更、更新、改訂、あるいは正誤 表情報があるときに、常に電子メールにてお知らせ いたします。 登録するには、マイクロチップ社のウェブ サイト www.microchip.com にアクセスし、[Customer Change Notification] をクリックして登録手順に従ってくだ さい。 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 427 PIC18F2XK20/4XK20 読者アンケート マイクロチップ社では、お客様にマイクロチップ社製品を効果的にお使いいただくために、可能な限り最良の 文書を提供するように努めています。文書の構成、明瞭さ、内容、手法に関しまして、我々の文書がお客様に とりましてより良くなるためのご意見を提供していただける場合は、ファクスにて弊社のテクニカル パブリ ケーション マネージャ宛にご意見をお送りください。ファクス番号は 1-480-792-4150 ( 国際電話 ) です。 以下の欄に必要事項と本書に関するご意見をご記入の上、お送りください。 送信先 : テクニカル パブリケーション マネージャ 件名 : 送信枚数 ________ 読者アンケート 発信元 : お名前 会社名 ご住所 市町村 / 都道府県 / 郵便番号 / 国名 電話 : (_______) _________ - _________ ファクス : (______) _________ - _________ 用途 ( 任意の項目 ): 回答を希望しますか ? はい デバイス : PIC18F2XK20/4XK20 いいえ 文書番号 : DS41303E_JP 質問 : 1. 本書の中で最も良い記事はどれですか ? 2. 本書には、お客様がハードウェアおよびソフトウェアを開発する際に必要な情報が十分に記載されて いますか ? 3. 本書の構成は分かりやすいですか ? 分かりにくいと感じた場合、その理由をお書きください。 4. 本書の構成や内容を改善するには、何を追加したらよいと思われますか ? 5. 全体の有用性に影響を与えず、本書から削除してもかまわないと思われる内容があれば、お書きください。 6. 不正確な情報または誤解を与えるような情報がありますか ? もしあれば、記載ページと該当箇所を お書きください。 7. 本書を更に分かりやすくするには、どのような改善が必要だと思われますか ? DS41303E_JP - ページ 428 Preliminary 2009 Microchip Technology Inc. PIC18F2XK20/4XK20 製品識別システム 注文や資料請求、または価格や納期などの情報は、弊社工場または一覧に記載されている営業所にお問い合わ せください。 PART NO. X /XX XXX Device Temperature Range Package Pattern Device: PIC18F23K20(1), PIC18F24K20(1), PIC18F25K20(1), PIC18F26K20(1), PIC18F43K20(1), PIC18F44K20(1), PIC18F45K20(1), PIC18F46K20(1) Temperature Range: E I Package: ML P PT SO SP SS Pattern: = -40C to +125C = -40C to +85C = = = = = = 例: a) PIC18F45K20-E/P 301 = 拡張用、PDIP パッケージ、 拡張 VDD 範囲、QTP パターン #301 b) PIC18F23K20-I/SO = 工業用、SOIC パッケージ c) PIC18F44K20-E/P = 拡張用、PDIP パッケージ (Extended) (Industrial) QFN PDIP TQFP (Thin Quad Flatpack) SOIC Skinny Plastic DIP SSOP 注 1: T = テープ & リールの PLCC および TQFP のパッケージのみです。 QTP, SQTP, Code or Special Requirements (blank otherwise) 2009 Microchip Technology Inc. Preliminary DS41303E_JP - ページ 429 世界各国での販売およびサービス 北米 アジア / 太平洋 アジア / 太平洋 ヨーロッパ 本社 アジア太平洋支社 インド - バンガロール オーストリア - ヴェルス 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 テクニカル サポート : http://support.microchip.com ウェブ アドレス : www.microchip.com Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431 Tel: 91-80-3090-4444 Fax: 91-80-3090-4080 Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 インド - ニューデリー デンマーク - コペンハーゲン Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 Tel: 45-4450-2828 Fax: 45-4485-2829 オーストラリア - シドニー インド - プネ フランス - パリ Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 日本 - 横浜 ドイツ - ミュンヘン Tel: 81-45-471- 6166 Fax: 81-45-471-6122 Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 韓国 - 大邱 イタリア - ミラノ Tel: 82-53-744-4301 Fax: 82-53-744-4302 Tel: 39-0331-742611 Fax: 39-0331-466781 韓国 - ソウル オランダ - ドリューネン Tel: 82-2-554-7200 Fax: 82-2-558-5932 または 82-2-558-5934 Tel: 31-416-690399 Fax: 31-416-690340 マレーシア - クアラルンプール Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 アトランタ Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455 中国 - 北京 ボストン 中国 - 成都 Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088 シカゴ Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 クリーブランド Independence, OH Tel: 216-447-0464 Fax: 216-447-0643 ダラス Tel: 86-10-8528-2100 Fax: 86-10-8528-2104 Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 中国 - 香港 SAR Tel: 852-2401-1200 Fax: 852-2401-3431 中国 - 南京 Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 中国 - 青島 Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 中国 - 上海 デトロイト 中国 - 瀋陽 シンガポール ココモ Tel: 86-755-8203-2660 Fax: 86-755-8203-1760 ロサンゼルス Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 中国 - 厦門 サンタクララ 中国 - 西安 Santa Clara, CA Tel: 408-961-6444 Fax: 408-961-6445 トロント Mississauga, Ontario, Canada Tel: 905-673-0699 Fax: 905-673-6509 Tel: 65-6334-8870 Fax: 65-6334-8850 中国 - 深川 Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 Tel: 86-592-2388138 Fax: 86-592-2388130 Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 Tel: 44-118-921-5869 Fax: 44-118-921-5820 Tel: 63-2-634-9065 Fax: 63-2-634-9069 Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 中国 - 武漢 Tel: 60-4-227-8870 Fax: 60-4-227-4068 英国 - ウォーキンガム フィリピン - マニラ Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 Farmington Hills, MI Tel: 248-538-2250 Fax: 248-538-2260 Kokomo, IN Tel: 765-864-8360 Fax: 765-864-8387 マレーシア - ペナン スペイン - マドリッド 台湾 - 新竹 Tel: 886-3-6578-300 Fax: 886-3-6578-370 台湾 - 高雄 Tel: 886-7-536-4818 Fax: 886-7-536-4803 台湾 - 台北 Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 タイ - バンコク Tel: 66-2-694-1351 Fax: 66-2-694-1350 中国 - 珠海 Tel: 86-756-3210040 Fax: 86-756-3210049 03/26/09 DS41303E_JP - ページ 430 Preliminary 2009 Microchip Technology Inc.