アプリケーションが使っていない周辺モジュールの消費電力は通常きわめて限定的です が、最新世代のPIC16F1(PIC16F183xx、PIC16F188xx等)が備えているPMD制御レジ スタを使うと、これらの周辺モジュールを全面的に無効にする事で消費電力を完全に除 去できます。
無効にされた周辺モジュールはクロックと入力スティミュラスを受信しなくなります。マイクロ コントローラ コアはこの周辺モジュールのレジスタを使えなくなり、割り当てられていた全 てのI/Oは解放されたのち、ピン優先度に従って次の周辺モジュール/オプションに戻さ れます。
周辺モジュールが再度有効になると、デバイス データシートに記載されているPORリセッ ト条件に戻ります。
XLP の達成
アプリケーションで超低消費電力を達成するためには、単にスリープへ移行するより、
ずっと多くの事項を考慮する必要があります。以下に挙げる項目は、デバイスの消費電力 に大きく影響する可能性があるため、これをチェックしてスリープへ移行する前に無効に する事を推奨します。
• フローティングのままになっているI/Oピン
• I/Oピンから電流をシンクする外部回路
• 弱プルアップ オプション(有効な場合)
• LFintOSCを使っているモジュール (フェイルセーフ クロック監視)
• オ シ レ ー タ に直接 接 続し た ま ま に な っ て い る CIP(CWG ま た は NCOと HFIntOSC)
• 内部参照電圧(FVR)を使用するアナログ モジュール(DAC、BOR、OPA、コンパ レータ等) (使われている場合)
MCC が生成する API
MCCでは、各モジュールに対して複数の初期化関数を簡単に生成できます。例えば 、 SYSTEM_Initialize()シーケンスで使われる既定値の初期化以外に、スリープへの移 行前に使われる低消費電力構成を作成できます。
例
FVRモジュール用に新しい初期化関数を作成して「Sleep」という名前を付け、モジュール 全体を無効にするように設定します。
// < MCC generated code >
void FVR_Sleep(void) {
// CDAFVR off; TSRNG Lo_range; TSEN disabled;
// FVREN disabled; FVRRDY disabled; ADFVR off;
FVRCON = 0x00;
}
// < MCC generated code >
アプリケーションの電力消費を不必要に上昇させる可能性のある各モジュールを無効化 する各関数を入手し、スリープ移行前にこれらを呼び出します。
// turn all things off (but the chosen wake up) FVR_Sleep();
ADC_Sleep();
// ...
// go to lowest power mode CLRWDT();
SLEEP();
NOP();
ホームワーク
• 厳密な低消費電力設計には十分に考え抜いた計画が必要です。モジュール間 の相互依存性を明確に把握し、アプリケーションに最善の設定を見つけるため に、デバイス データシートに記載された各周辺モジュールの「スリープ中の動 作」セクションを常に確認しましょう。
• 状態変化割り込みの復帰機能を、外部(デジタル) イベントの検出に使った場合 のCLC割り込みと比較してみましょう。
• 必ずデータシートを参照して、アプリケーションの温度および電圧レンジ内での 最大消費電力値を確認しましょう。
• Jack Ganssleによる秀逸な低消費電力レポート(下記リンク参照)を読みましょう。
このレポートは超低消費電力アプリケーションに関する多くの通説を払拭し、信 頼性の高い(かつ現実的な)性能/バッテリ寿命のバランスを取るための優れたガ イドラインを提供します。
オンライン リソース
http://www.ganssle.com/reports/ultra-low-power-design.html
『AN1416 - 低消費電力設計ガイド』
『AN1337 - MCP1640を用いたDC昇圧型コンバータにおけるバッテリ寿命の最適化』
『AN1088 - Selecting the Right Battery System for Cost-Sensitive Portable Applications While Maintaining Excellent Quality』
『AN1288 - Design Practices for Low-Power External Oscillators』
PIC16マイクロコントローラの製品番号割り当て方式は、ごく限られた関係者以外にとって は不可解です。大半の製品番号は強力な乱数アルゴリズムを使って生成されたとか 、
Keeloq暗号化アルゴリズムが使われたのだろうと考える人もいますが、このような通説を
一掃するために以下の図表を作成しました。
この解読リングは、1989年から2014年までの間に導入されたPIC16シリーズのPICマイ クロコントローラにあてはまります(例外あり)。
PIC16F5xで始まる製品はオリジナルのPICベースラインコアを備えています。
PIC16Fの後に3桁が続く製品は、ミッドレンジのコアを備えています。
PIC16F1の後に3桁が続く製品は、エンハンスト ミッドレンジのコアとCIPを備
えています。
2014年後半にPIC16ファミリのデバイス数が1,000を超えたため、新しい製品番号割り当 て方式が採用されました。
これは最大5桁の英数字によって識別できます。
6ピンと8ピンは現在、製品番号の4桁目に標準で含まれているため、PIC10とPIC12で 始まる製品番号は廃止されています。
この新しい方式により、デバイスのピン数とメモリ容量を勘で推測される事がほとんどなく なると期待されています。2桁の数字のファミリ識別コードは存続しており、過去の世代 との類似性(9: LCD、7: アナログ、5: エントリレベル、6と8: 汎用等)を維持するために今 後も継続されると考えられます。
8/16ビットタイマ...35
ADC - A/Dコンバータ...116
ANSEL – アナログ選択...62
AT – 位相角タイマ...127
BOR – ブラウンアウト リセット...89
CCP – キャプチャ/コンペア/PWM...39
CLC - 構成可能なロジックセル...64
COG – 相補出力ジェネレータ...45
CRC - メモリスキャナ付き巡回冗長検査 ...83
CWG – 相補波形ジェネレータ...45
DAC – D/Aコンバータ...110
Doze...137
DSM - データ信号モジュレータ...71
EUSART – 非同期シリアルポート...98
FSCM - フェイルセーフ クロック監視...90
FVR - 固定参照電圧...114
HCVD - 静電容量式センシング ...119
HEF - 高書き込み耐性フラッシュ...79
HIDRV – 100 mA...63
HLT - ハードウェア リミットタイマ...53
I2C – Inter Integrated Circuitバス...91
INLV – 入力レベル...63
IOC – 状態変化割り込み...63
LAT - 出力ラッチ...62
LPBOR – 低消費電力BOR...90
MCLR - マスタクリア...90
MLA – Microchipアプリケーション用ライブラリ – タッチライブラリ...120
MPLAB Code Configurator...14
MPLAB X...11
Header Filesフォルダ...18
Source Filesフォルダ...18
[New File]ウィザード...19
[New Project]ウィザード...15
論理フォルダ...18
MPLAB XC8...12
MPLAB Xのインストール...11
NCO - 数値制御オシレータ...49
ODCON – オープンドレイン制御...62
OPA - オペアンプ...124
PICkit™ 3...8
PMD - 周辺モジュール無効化...138