Special
» 2014年02月25日 00時00分 UPDATE

宮崎 仁のマイコン基礎の基礎:第17回 MSP430™ LaunchPadの入出力機能を拡張する、省電力モードを活用したプログラミング

[PR/EDN Japan]
PR

 前回に引き続き、テキサス・インスツルメンツ社(TI)のMSP430™ LaunchPadバリュー・ライン開発キットを用いて、実際のマイコンのハードウェア、ソフトウェアの開発方法を体験しながら学びます。今回は、マイコンの省電力モードへの移行と、省電力モードから復帰するための割り込みについて説明します。

省電力モードはなぜ必要?

 マイコンにとってやるべき仕事は、いつも同じようにあるわけではありません。例えば、マイコンを使ってデジタル時計を作った場合、マイコンがやるべき仕事は1秒ごとに発生します。基本的には、

(1)1秒ごとに秒カウントを1増やす。
(2)もし、秒カウントが60秒になれば、分カウントを1増やして秒カウントをクリア。
(3)もし、分カウントが60分になれば、時カウントを1増やして分カウントをクリア。
(4)もし、時カウントが24時になれば、時カウントをクリア。
(5)分、時、秒を表示する。

という仕事を繰り返すだけです。そして、多くのマイコンにとってはこの1回の仕事はごく短時間に終わってしまいます。1秒ごとにタタタタッと仕事をしては、その後は次の1秒(マイコンから見るととても長い時間)をただ待っているだけです。

 ただの時計ではなく、キッチンタイマやストップウォッチのように、人間の操作で時間をカウントする機械では、さらに待ち時間が長くなります。人間が機械を操作する頻度は、数分に1度とか、数時間に1度とか、数日に1度とか、長ければ数カ月〜数年にわたって何も操作が行われない場合もあります。

 このような場合でも、昔のマイコンはひたすら動作し続けて、時間がたつのを待っていました。マイコンというのは、基本的に常に一定のクロックに従ってプログラムの命令を取ってきては実行するように作られているためです。

 電池で動作する機器にマイコンがたくさん使われるようになると、これが問題になります。ただ待っているだけでも、マイコンが動作していればその間に少しずつ電力を消費するので、電池が減ってしまうのです。

省電力モードへの移行と、省電力モードからの復帰

 最近のマイコンでは、ただ待っているだけのときは命令の実行を停止して、電力の消費をなるべく抑えるように、実行モードの他に省電力モードを用意することが多くなっています。命令の実行を停止するだけでなく、その他の機能を停止したりクロック発振を停止して、より消費電力を削減したものも多くなっています。

(注)省電力モードはマイコンによって「スリープ」、「スタンバイ」、「アイドル」などいろいろな呼び方があって、機能もいろいろなので、ここでは総称して「省電力モード」と呼ぶことにします。

 省電力モードから実行モードへの復帰には、割り込みのしくみが利用されます。元々、割り込みとは、マイコンがプログラムを実行している最中に外部から信号が入力されると、プログラムの実行を中断して特別なプログラムを実行させるためのしくみです。これを拡張して、省電力モードのときに外部から信号が入力されると、省電力モードを中断して特別なプログラムを実行するようにしたものです。

(注)割り込みによって実行される特別なプログラムは「割り込みサービスルーチン」「割り込みハンドラ」などと呼ばれます。ここでは、簡単に「ハンドラ」と呼ぶことにします。

図 通常の割り込みと、省電力モードからの復帰のための割り込み

mm140225_miconbasic1a.jpg (a) 通常の割り込み
外部信号が入力されると、プログラムの実行を中断して、ハンドラという別のプログラムを実行する。その後は元のプログラムの続きを実行する。
mm140225_miconbasic1b.jpg (b) 省電力モードからの復帰のための割り込み-その1
外部信号が入力されると、省電力モードを中断して、ハンドラという別のプログラムを実行する。その後は実行モードに戻ってプログラムの続きを実行する。
mm140225_miconbasic1c.jpg (c) 省電力モードからの復帰のための割り込み-その2
外部信号が入力されると、省電力モードを中断して、ハンドラという別のプログラムを実行する。その後は省電力モードに戻る。

 省電力モードからの復帰には、復帰後に実行モードに戻るものと、復帰後に省電力モードに戻るものがあります。MSP430では、この両方を簡単に使い分けられます。

MSP430の省電力モードとプログラミング

 MSP430の場合、LPM0からLPM4まで5レベル(最近の製品はさらにレベルを細分化したものもある)の省電力モードをもちます。それぞれ、実行モード中に所定のレジスタを設定するだけで省電力モードに移行します。本連載の第15回に、LPM4とLPM0を使った割り込みプログラムの実例があるので見てみましょう。なお、今回はプログラムのうちメインルーチンとハンドラだけを掲載します。プログラム全体は、第15回を参照してください。

LPM4とスイッチ割り込みを使ったプログラミングの例

 リスト1は、LPM4の省電力モードからスイッチ割り込みでハンドラを実行し、その後は省電力モードに戻るプログラムです。LPM4ではCPUとすべてのクロックが停止し、入出力ポートだけが機能を続行します。MSP430の内蔵タイマも止まってしまうので、タイマ割り込みで復帰することができません。

mm140225_miconbasic_list1.jpg リスト1 LPM4とスイッチ割り込みを使った例

 メインルーチンは、46〜48行目のわずか3行です。46行目のinitialize()と47行目のdisplay()を実行した後、48行目の

_BIS_SR(LPM4_bits + GIE)

でLPM4に移行します。この48行目の「LPM4_bits」をセットすると、MSP430はLPM4になります。

 メインルーチンはここで終わっています。このプログラムでは、LPM4に入ったら通常の実行モードには戻りません。この続きのプログラムを書いたとしても、実行されることはありません。

 そして、スイッチが押されたときだけスイッチ割り込みが入り、53〜58行目の割り込みハンドラが実行されます。ということは、スイッチが押されない限り、MSP430はほとんど停止したような状態であり、LEDの点灯以外の電力はほとんど消費しないということです。

 なお、MSP430を実行モードに復帰させたい場合には、この割り込みハンドラの中で「LPM4_bits」をリセットします。そうすると、割り込みハンドラの終了後に49行目から命令を実行しようとします。したがって、その場合は49行目以降にメインルーチンの続きを書いておかないと、最悪の場合は暴走してしまいます。

LPM0とタイマ割り込みを使ったプログラミングの例

 リスト2は、LPM0の省電力モードからタイマ割り込みでハンドラを実行し、その後は省電力モードに戻るプログラムです。LPM0ではCPUとメインクロック(MCLK)は停止しますが、サブクロック(SMCLKとACLK)は停止せず、タイマも動作を継続します。

mm140225_miconbasic_list2.jpg リスト2 LPM0とタイマ割り込みを使った例

※MSP430はTexas Instruments Incorporatedの商標です。その他すべての商標および登録商標はそれぞれの所有者に帰属します。

TIのマイコン製品の詳細はこちら


Copyright© 2017 ITmedia, Inc. All Rights Reserved.


提供:日本テキサス・インスツルメンツ株式会社
アイティメディア営業企画/制作:EDN Japan 編集部/掲載内容有効期限:2014年3月31日

設計に役立つヒント集

宮崎 仁のQ&Aでよく分かるマイコン基礎の基礎:
第24回 割り込みっていろいろあるのですか?どんな種類があるか教えてください。

今回は、外部割り込み、内部割り込み、ソフトウェア割り込みについて詳しく解説しています
全文を読む


電源IC選択のヒント集
電源IC 使用時の注意点をわかりやすく説明しているほか、使用時に発生する可能性のあるさまざまなトラブルとその対処法についても紹介しています。ぜひご利用ください。ダウンロードには myTI アカウントが必要です。
Part 1をダウンロード
Part 2をダウンロード


アナログ回路設計式一覧ポケット・ガイド
日本語版 PDF

英語版で高い評価を受けてきたポケット・ガイドの日本語版が完成しました。基板レベルやシステム・レベルの回路設計でよく使われるアナログ設計式を紹介しています。ダウンロードには myTI アカウントが必要です。
ダウンロード



facebook & twitter

製品情報、セミナーや展示会などのイベント情報をお知らせしています。

RSSフィード

EDN 海外ネットワーク

All material on this site Copyright © 2005 - 2017 ITmedia Inc. All rights reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.