Previous: 10.1. 低電力モードの種類 |
Up: 10. 低電力モード |
Next: 10.3. 低電力モードを利用する前に:クロック周波数の変更 |
低電力モード(STANDBYモード以外)に入るための命令にはWFI命令とWFE命令があります。この2つの命令は、低電力モードからRUNモードに復帰する際のきっかけが違います。WFIはWait For Interruptの略であり、「割込みを待つ」ということになります。WFI命令で低電力モードに移行した場合には、周辺回路で割込みが発生した時に、RUNモードに復帰します。WFEはWait For Eventの略であり、「イベントを待つ」という意味です。WFE命令で低電力モードに移行した場合には、EXTIイベントが発生した場合に、RUNモードに復帰します。
低電力モードに移行する際に、どちらの命令を使うかを選択する必要があるわけですが、違いは、割込みハンドラが実行されるかどうかと、復帰原因をコントロールする必要があるかどうかです。
WFI命令で低電力モードに入った後にRUNモードに復帰する際には割込みが必要です逆に言えばRUNモード復帰時は割込みが発生しているので、RUNモードに復帰した時には、まずはその割込み原因に対応する割込みハンドラが実行された後に、WFI命令の次の命令からプログラムの実行が再開されます(図 16?1)。
WFE命令で低電力モードに入った後にRUNモードに復帰した場合には、WFE命令の次の命令からプログラムの実行が再開されます。
図 16?1 WFIとWFEの復帰手順の違い
マイコンのプログラム中で低電力モードに入るポイントがたくさんある一方で、RUNモードへの復帰時には一定の処理を実行したい場合があります。例えば復帰時に液晶画面に復帰したと表示させたり、その他画面の表示内容を更新したりしたいような場合がこれにあたります。この場合、割込みハンドラにその処理を記述しておき、WFI命令を使用して低電力モードに入れば、プログラムのどこから低電力モードに入ったとしても、復帰時には一定の処理を行うことができます。
もっとも割込みハンドラの処理とそこからの復帰はそれ自体に一定の処理時間が必要であり、システムにとってはオーバーヘッドとなります。そこで低電力モードからの復帰時にできる限り迅速に処理を再開したいような場合には、WFE命令で低電力モードに移行すると、復帰時に余計なオーバーヘッドを生じさせずに済みます。
WFI命令による低電力モードへの移行は、復帰原因の選択が簡単というメリットもあります。復帰させるかどうかは要は割込みが発生するかどうかです。複数の割込み原因のうち、特定の割込みだけで復帰させたい場合には、WFI命令の実行前に、NVICの設定を変更し、不要な割込みを無効にするだけです。WFEでも復帰原因をコントロールすることはできるのですが、EXTIの設定自体を変更する必要がありますから、若干面倒です。
Previous: 10.1. 低電力モードの種類 |
Up: 10. 低電力モード |
Next: 10.3. 低電力モードを利用する前に:クロック周波数の変更 |