(57)【要約】【課題】スタンバイから通常動作に復帰する場合、誤動作する可能性がある。【解決手段】本発明は、電源電圧が第１の電圧値以下のとき第１の検出信号を生成する第１の電圧検出回路と、電源電圧が第１の電圧値より低い第２の電圧値のとき第２の検出信号を生成する第２の電圧検出回路と、通常動作を行う通常動作モードと、通常動作よりも低消費電力動作するスタンバイモードを切り替える機能を有し、第１の検出信号が生成されると、通常動作モードからスタンバイモードに移行するための割り込み処理動作を行い、第２の検出信号が生成されると、割り込み処理動作に関わらず、スタンバイモードに移行する中央処理回路と、中央処理回路が、割り込み処理動作完了前に、スタンバイモードに移行したことを示す情報を記憶する第１の記憶回路と、を有するマイクロコントローラである。【選択図】図１
2010092194.tif 000002
【特許請求の範囲】
【請求項１】
電源電圧が第１の電圧値以下に低下したとき、第１の検出信号を生成する第１の電圧検出回路と、
前記電源電圧が前記第１の電圧値より低い第２の電圧値以下に低下したとき、第２の検出信号を生成する第２の電圧検出回路と、
通常動作を行う通常動作モードと、通常動作よりも低消費電力で動作するスタンバイモードを切り替える機能を有し、
前記第１の検出信号が生成されると、前記通常動作モードから前記スタンバイモードに移行するための割り込み処理動作を行い、
前記第２の検出信号が生成されると、前記割り込み処理動作に関わらず、前記スタンバイモードに移行する
中央処理回路と、
前記中央処理回路が、前記割り込み処理動作完了前に、前記スタンバイモードに移行したことを示す情報を記憶する第１の記憶回路と、
を有するマイクロコントローラ。
【請求項２】
第２の記憶回路を有し、
前記割り込み処理動作は、前記中央処理回路が、前記スタンバイモードから通常動作モードに復帰するために必要な情報を、前記第２の記憶回路へバックアップする処理動作であって、
前記第１の記憶回路の記憶する情報は、前記バックアップ処理動作の完了前に前記スタンバイモードに移行したことを示す情報である
請求項１に記載のマイクロコントローラ。
【請求項３】
前記電源電圧が前記第２の電圧値より低い第３の電圧値以下に低下したとき、第３の検出信号を生成する第３の電圧検出回路と、を有し、
前記中央処理回路は、前記第３の検出信号が生成されるとリセットされる
請求項２に記載のマイクロコントローラ。
【請求項４】
前記第１の記憶回路は、前記第３の検出信号が生成されたことを示す情報を更に記憶する
請求項３に記載のマイクロコントローラ。
【請求項５】
前記第１の検出信号を入力し、前記中央処理回路に対して前記割り込み処理動作を行わせる割り込み信号を出力する割り込み制御回路と、
前記第２の検出信号を入力し、前記中央処理回路に対して前記割り込み処理動作に関わらず、前記スタンバイモードに移行させるスタンバイ信号を出力するスタンバイ制御回路と、
前記第３の検出信号を入力し、前記中央処理回路に対してリセットをかけるリセット信号を出力するリセット回路と、を有する
請求項３または請求項４に記載のマイクロコントローラ。
【請求項６】
前記第１の記憶回路は、
前記第１の電圧検出回路が前記第１の検出信号を生成したことを示す第１の情報を記憶し、
前記第２の電圧検出回路が前記第２の検出信号を生成したことを示す第２の情報を記憶し、
前記中央処理回路が前記割り込み処理動作を完了させたことを示す第３の情報を記憶し、
前記第３の電圧検出回路が前記第３の検出信号を生成したことを示す第４の情報を記憶する
請求項３〜請求項５のいずれか１項に記載のマイクロコントローラ。
【請求項７】
前記中央処理回路は、前記スタンバイモードから前記通常動作モードに復帰したとき、前記第１の記憶回路が、前記バックアップ処理動作の完了前に前記スタンバイモードに移行したことを示す情報を記憶している場合、前記第２の記憶回路へバックアップした情報を利用しない
請求項２に記載のマイクロコントローラ。
【請求項８】
前記中央処理回路は、前記スタンバイモードから前記通常動作モードに復帰したとき、前記第１の記憶回路が、前記バックアップ処理動作の完了前に前記スタンバイモードに移行したことを示す情報を記憶していない場合、前記第２の記憶回路へバックアップした情報を利用する
請求項２に記載のマイクロコントローラ。
【請求項９】
前記中央処理回路は、前記スタンバイモードから前記通常動作モードに復帰したとき、前記第１の記憶回路が、前記第３の検出信号が生成されたことを示す情報を記憶している場合、前記第２の記憶回路をリセットする
請求項４に記載のマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに関するものである。
【背景技術】
【０００２】
電圧検出機能を有するマイクロコントローラとして、特許文献１のような技術がある。特許文献１のマイクロコントローラ１は、リセット回路２と、ＣＰＵ３とを有する。リセット回路２は、電圧検出用ＩＣ２１、２２を有している。ＣＰＵ３は、レジスタ情報退避用のメモリである内部ＲＡＭ３１を有する。
【０００３】
電圧検出用ＩＣ２１、２２により、電源電圧ＶＡが、所定の電圧ＶＲ以下になると、ロウレベルの割り込み信号であるＮＭＩ（ノンマスカブルインターラプト）信号ＶｎｍｉをＣＰＵ３に出力する。なお、所定の電圧ＶＲの電圧値は、マイクロコントローラ１の正常動作が可能な電圧値が設定される。また、ＮＭＩ信号Ｖｎｍｉはロウアクティブである。
【０００４】
電源電圧ＶＡが低下すると電圧検出用ＩＣ２１がロウレベルのＮＭＩ信号ＶｎｍｉをＣＰＵ３へ出力する。このＮＭＩ信号ＶｎｍｉをＣＰＵ３が入力すると、ＣＰＵ３は、割り込みルーチンにより内部ＲＡＭ３１にレジスタ情報を退避させるバックアップ前処理動作を行う。その後、電源電圧ＶＡが、電圧ＶＲより低い電圧Ｖ１以下になった場合、電圧検出用ＩＣ２２の出力信号Ｖｓｔｎｂｙをロウレベルにして、ＣＰＵ３をスタンバイする。但し、上述したバックアップ前処理動作には、少なくとも内部ＲＡＭ３１にレジスタ情報を退避させる時間が必要であり、そのバックアップ前処理動作に必要な時間を期間Ｔｐｓとする。この期間Ｔｐｏを確保するよう、電源電圧ＶＡを供給する電源回路の平滑コンデンサの容量の設定を行う。
【０００５】
以上のようにマイクロコントローラ１は、電源電圧ＶＡが変動し、電圧ＶＲより低い電圧になった場合、ＣＰＵ３からＲＡＭ３１に必要な情報を退避し、データのバックアップを行う。
【特許文献１】特開昭６２−８０７１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ここで、マイクロコントローラ１は、電源電圧ＶＡが所定の電圧ＶＲ以下になってから電圧Ｖ１になるまで、少なくとも期間Ｔｐｏが必要である。これは、この期間Ｔｐｏで、内部ＲＡＭ３１にレジスタ情報を退避させるバックアップ前処理動作を完了させる必要があるためである。そして、例えば充電等の操作により電源電圧ＶＡが上昇した場合、マイクロコントローラ１は、期間Ｔｐｏに行ったバックアップ前処理動作により内部ＲＡＭ３１に保持するデータを利用することで、通常動作状態に復帰可能となる。
【０００７】
しかし、例えば電源回路の故障等で電源電圧ＶＡが急速に低下し、期間Ｔｐｏが終了するまでに電圧Ｖ１以下になった場合、ＣＰＵ３が行う内部ＲＡＭ３１にレジスタ情報を退避させるバックアップ前処理動作が完了せず、途中で終了してしまう。この場合、再び電源電圧ＶＡが所定の電圧ＶＲ以上に上昇し、マイクロコントローラ１が通常動作モードになったとき、このバックアップした内部ＲＡＭ３１のデータに基づいてＣＰＵ３が動作を再開することになる。しかし、この内部ＲＡＭ３１保持しているデータは、上述したように途中で終了したバックアップ前処理動作に基づいており、正しいデータの値を保持していない。このため、ＣＰＵ３がこの正しくないデータにより動作を再開すると、ＣＰＵ３が誤動作を起こす可能性がある。
【０００８】
また、期間Ｔ１を十分取れるためには、電源回路にある平滑コンデンサの容量を大きくしなければならない。しかし、この場合、非常に大きな容量のコンデンサを用いることになり回路規模が増大したり、この大容量の平滑コンデンサを充電するため起動時間が長くなる問題が生じる。
【課題を解決するための手段】
【０００９】
本発明は、電源電圧が第１の電圧値以下に低下したとき、第１の検出信号を生成する第１の電圧検出回路と、前記電源電圧が前記第１の電圧値より低い第２の電圧値以下に低下したとき、第２の検出信号を生成する第２の電圧検出回路と、通常動作を行う通常動作モードと、通常動作よりも低消費電力で動作するスタンバイモードを切り替える機能を有し、前記第１の検出信号が生成されると、前記通常動作モードから前記スタンバイモードに移行するための割り込み処理動作を行い、前記第２の検出信号が生成されると、前記割り込み処理動作に関わらず、前記スタンバイモードに移行する中央処理回路と、前記中央処理回路が、前記割り込み処理動作完了前に、前記スタンバイモードに移行したことを示す情報を記憶する第１の記憶回路と、を有するマイクロコントローラである。
【００１０】
本発明にかかるマイクロコントローラによれば、通常動作モードからスタンバイモードに移行する割り込み処理動作が完了したか否かが、第１の記憶回路が記憶する情報により判定できる。よって、電源電圧が上昇し、当該マイクロコントローラが通常動作モードで動作するとき、割り込み処理動作が正確に完了していない場合にはリセット等の処理をして中央処理回路の誤作動を起こすのを防ぐことができる。
【発明の効果】
【００１１】
本発明にかかるマイクロコントローラは、スタンバイモードから復帰した場合の誤動作を防ぐことができる。
【発明を実施するための最良の形態】
【００１２】
発明の実施の形態１
以下、本発明を適用した具体的な実施の形態１について、図面を参照しながら詳細に説明する。図１に本実施の形態１にかかるマイクロコントローラ１００の構成の一例を示す。図１に示すように、マイクロコントローラ１００は、電圧検出器１１１〜１１３と、割り込みコントローラ１２１と、スタンバイコントローラ１２２と、リセットコントローラ１２３と、ＣＰＵ１３０と、ＲＯＭ１４１、ＲＡＭ１４２と、フラッシュメモリ１４３と、スペシャルファンクションレレジスタ１４４と、フラグレジスタ１５０と、外部リセット信号入力端子１６０とを有している。
【００１３】
ＣＰＵ（中央処理回路）１３０は、マイクロコントローラ１００が通常動作モード時には、制御プログラムや入力データに基づいて、マイクロコントローラ１００内の各種処理を行う中央制御装置である。また、ＣＰＵ１３０は、プログラムカウンタ（ＰＣ）１３１、プロセッサステータスワード（ＰＳＷ）１３２等を有し、電源電圧ＶＤＤを電源として動作する。プログラムカウンタ１３１は、ＣＰＵ１３０が次に実行する命令が格納されているＲＡＭ１４２等のアドレスを記憶する。プロセッサステータスワード１３２は、ＣＰＵ１３０の現在の動作モードや演算器にオーバーフローが発生しているか等のプロセッサの状態を保持する。また、ＣＰＵ１３０は、マイクロコントローラ１００がスタンバイモード時では動作を停止する。
【００１４】
ここで、本実施の形態１で言うマイクロコントローラ１００のスタンバイモードとは、ＣＰＵ１３０が通常動作モードで行っていた処理動作を停止する状態をいうものとする。よって、ＣＰＵ１３０が動作しないため、ＣＰＵ命令を格納するＲＡＭ１４２、フラッシュメモリ１４３、スペシャルファンクションレレジスタ１４４等も動作を停止する。このことにより、マイクロコントローラ１００のシステムが、ほぼ停止状態となり、マイクロコントローラ１００は、低消費電力動作が可能となる。但し、このスタンバイモードでは、ＲＡＭ１４２、スペシャルファンクションレレジスタ１４４等の記憶するデータは保持される。このため、ＲＡＭ１４２、スペシャルファンクションレレジスタ１４４等には記憶データが破壊されないよう最低限の電力供給が行われる。但し、ＣＰＵ１３０は、このスタンバイモード時に完全に動作停止せず、後述する割り込み信号Ｓｉｇ＿Ｉやリセット信号が入力された場合は、その信号入力に応じた処理動作を行うものとする。
【００１５】
以後、「ＣＰＵ１３０がスタンバイ状態にある」と表現する場合、マイクロコントローラ１００がスタンバイモードであるのと同様の意味であるとし、「ＣＰＵ１３０が通常動作モードにある」と表現する場合、マイクロコントローラ１００が通常動作モードであるのと同様の意味であるとする。
【００１６】
なお、スタンバイモードの他の態様として、ＣＰＵ１３０の動作クロック周波数を低下する等の動作状態としてもよい。このことにより、ＣＰＵ１３０は、低消費電力モードへ移行し、電源電圧ＶＤＤが更に低下しても動作可能となる。このように、「スタンバイ」の定義として、電源電圧ＶＤＤが通常動作時よりも低い状態であっても、マイクロコントローラ１００のシステムが誤作動を起こさない動作モードを指すものとする。
ＲＯＭ１４１は、ＣＰＵ１３０が処理を行うための制御プログラム等が格納されている。読み出し専用であり保持するデータの書き換え等はできない。ＲＡＭ１４２は、ＣＰＵ１３０により使用される主記憶装置であり、ＲＯＭ１４１やフラッシュメモリ１４３等から読み出された制御プログラムやデータ等のＣＰＵ命令が展開される。ＣＰＵ１３０は、このＣＰＵ命令に従い処理動作を行う。ＲＡＭ１４２は、電源電圧の供給がないと記憶したデータの保持ができない。なお、上述したようにＣＰＵ１３０がスタンバイ状態、つまり、動作を停止した状態では、ＣＰＵ命令を記憶する当該ＲＡＭ１４２も動作を停止する。
【００１７】
フラッシュメモリ１４３は、不揮発性の記憶装置であり、電源の供給が無くても記憶した情報を保持することができる。また、情報の書き換え等が可能である。フラッシュメモリ１４３もＲＡＭ１４２同様、ＣＰＵ命令やデータを記憶することが可能であり、ＣＰＵ１３０がスタンバイ状態のとき動作を停止する。
【００１８】
スペシャルファンクションレレジスタ１４４は、ＣＰＵ１３０の動作を決定させたり動作状態を調べたりするためのレジスタである。ＣＰＵ１３０がスタンバイ状態のとき、同様に動作を停止する。
【００１９】
電圧検出器１１１は、電源電圧ＶＤＤをモニターし、電源電圧ＶＤＤが所定の電圧値ＶＩに低下した場合、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｉを割り込みコントローラ１２１へ出力する。更に、電圧検出器１１１は、電源電圧ＶＤＤが所定の電圧値ＶＩ以上になった場合、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉを割り込みコントローラ１２１へ出力する。この電圧ＶＩは、例えば、ＣＰＵ１３０がフラッシュメモリ１４３に対して行うデータの書き込み、読み出しに必要な電圧２．７Ｖより少し高電位（一例として２．９Ｖ程度）等に設定される。
【００２０】
割り込みコントローラ１２１は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｉを入力すると、割り込み信号Ｓｉｇ＿Ｉにより、ＣＰＵ１３０に対してスタンバイ状態に移行するための割り込み処理動作を開始させる。このため、ＣＰＵ１３０は、スタンバイ状態に移行するための割り込みルーチンをＲＯＭ１４１もしくはＲＡＭ１４２等から呼び出し、その処理動作を行う。このスタンバイ状態に移行するための処理動作では、ＣＰＵ１３０内部のプログラムカウンタ１３１、プロセッサステータスワード１３２の情報、スペシャルファンクションレジスタ１４４のレジスタ情報等、ＣＰＵ処理動作に密接に関係する情報を、ＲＡＭ１４２もしくはフラッシュメモリ１４３に退避させる等の処理が行われる（以後、この処理動作を「スタンバイ用退避処理」と称す）。なお、ＲＡＭ１４２、フラッシュメモリ１４３は、退避した情報をバックアップする記憶回路（第２の記憶回路）ということもできる。
【００２１】
ここで、ＣＰＵ１３０は、このスタンバイ用退避処理が完了した場合、フラグレジスタ１５０にマスク制御信号を出力する。もしくは、スタンバイ用退避処理が完了した場合、ＣＰＵ１３０は、電圧検出器１１２に対して、動作しないように制御する動作停止信号を送ってもよい。更に、スタンバイコントローラ１２２に対しても動作しないように制御する動作停止信号を送ってもよい。
【００２２】
また、割り込みコントローラ１２１は、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉを入力すると、割り込み信号Ｓｉｇ＿Ｉにより、スタンバイモード下で動作を停止しているＣＰＵ１３０を起動させ通常動作モードへ復帰させる。このため、ＣＰＵ１３０は、スタンバイからの復帰用の割り込みルーチンをＲＯＭ１４１等から呼び出し、スタンバイ復帰のための処理動作を行う（以後、この処理動作を「スタンバイ復帰処理」と称す）。このスタンバイ復帰処理において、ＣＰＵ１３０は、後述するフラグレジスタ１５０が記憶するフラグ「Ｉ」「Ｓ」「Ｒ」の値に応じて、上述したＲＡＭ１４２もしくはフラッシュメモリ１４３等へ退避させたデータをもとにスタンバイ直前の状態に復帰するか否かを判断する。
【００２３】
また、このスタンバイ復帰処理時には電源電圧ＶＤＤが電圧ＶＩ以上になっており、ＣＰＵ１３０は通常動作モードで動作可能である。このため、ＣＰＵ１３０は、後述するフラグレジスタ１５０の記憶するフラグの値をリセット、つまり「０」にするようにしてもよい。
【００２４】
電圧検出器１１２は、電源電圧ＶＤＤをモニターし、電源電圧ＶＤＤが所定の電圧値ＶＳに低下した場合、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｓをスタンバイコントローラ１２２へ出力する。但し、電圧値ＶＩとＶＳの関係は、ＶＩ＞ＶＳである。なお、ＣＰＵ１３０から動作停止信号を入力している場合は、このハイレベルの検出信号Ｖｄｔｃｔ＿Ｓを出力しない。なお、電圧検出器１１２は、電源電圧ＶＤＤが所定の電圧値ＶＳ以上になった場合、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｓをスタンバイコントローラ１２２へ出力する。
【００２５】
ここで、電圧ＶＳ以下の電圧では、ＣＰＵ１３０は通常動作モードで、正常な処理動作が困難であり、誤作動を起こす可能性があるものとする。よって、上述したスタンバイ用退避処理動作中に、電源電圧ＶＤＤが電圧ＶＳ以下になると、この割り込み処理が正常に行えない可能性がある。この場合、スタンバイ用退避処理において、ＲＡＭ１４２やフラッシュメモリ１４３に書き込まれる情報が正しいか否か補償されない。更にはＣＰＵ１３０が誤作動し、ＲＡＭ１４２やフラッシュメモリ１４３の保持する他のデータを破壊する可能性もある。
【００２６】
スタンバイコントローラ１２２は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｓを入力すると、ＣＰＵ１３０に対して、スタンバイ信号を出力する。このスタンバイコントローラ１２２から出力されるスタンバイ信号により、ＣＰＵ１３０は、強制的にスタンバイ状態に移行する。但し、既にスタンバイ用退避処理が完了している場合、既にＣＰＵ１３０がスタンバイ状態となっており、このスタンバイ信号は無視される。なお、ＣＰＵ１３０から動作停止信号を入力している場合、スタンバイコントローラ１２２はこのスタンバイ信号を出力しない。
【００２７】
電圧検出器１１３は、電源電圧ＶＤＤをモニターし、電源電圧ＶＤＤが所定の電圧値ＶＲに低下した場合、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｒをリセットコントローラ１２３へ出力する。但し、電圧値ＶＳとＶＲの関係は、ＶＳ＞ＶＲである。ここで、電圧ＶＲ以下の電圧では、ＣＰＵ１３０の動作はもちろん、ＲＡＭ１４２やスペシャルファンクションレレジスタ１４４も記憶している情報の保持動作が困難であるものとする。
【００２８】
リセットコントローラ１２３は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｒを入力するとリセット信号をＣＰＵ１３０へ出力する。このリセット信号によりＣＰＵ１３０、ＲＡＭ１４２、後述するフラグレジスタ１５０等がリセットされる。つまり、マイクロコントローラ１００のシステムがリセットされる。また、リセットコントローラ１２３は、外部リセット信号入力端子１６０から入力した外部リセット信号やウオッチドッグタイマ１４５等の信号に応じてもリセット信号をＣＰＵ１３０等へ出力し、リセットすることが可能である。なお、フラッシュメモリ１４３は不揮発性記憶装置のため、この時点では保持情報をリセットされない。しかし、上述したようにマイクロコントローラ１００のシステム全体がリセットされるため、その後、マイクロコントローラ１００が通常動作モードとなったとき、ＣＰＵ１３０により、当該フラッシュメモリ１４３にスタンバイ用退避処理時に記憶した情報は破棄（リセット）される。
【００２９】
図２に電圧検出器１１１〜１１３の回路構成の一例を示す。なお、電圧検出器１１１〜１１３は、同様の構成であるため、電圧検出器１１１を例に説明する。電圧検出器１１１は、抵抗素子Ｒ３０１、Ｒ３０２と、基準電圧源３０３と、コンパレータ３０４とを有する。抵抗素子Ｒ３０１、Ｒ３０２は電源電圧ＶＤＤと接地電圧ＧＮＤ間に直列に接続される。抵抗素子Ｒ３０１、Ｒ３０２の中間ノードが、コンパレータ３０４の反転入力端子に入力される。基準電圧源３０３は、所定の電圧をコンパレータ３０４の非反転入力端子に入力する。基準電圧源３０３の生成する電圧は、電源電圧ＶＤＤが電圧ＶＩになったときの抵抗素子Ｒ３０１、Ｒ３０２の中間ノードの電位と同じ電圧値とする。コンパレータ３０４は、反転入力端子と非反転入力端子の電圧を比較し、比較結果を出力端子から出力する。このコンパレータ３０４の出力信号が検出信号Ｖｄｔｃｔ＿Ｉとなる。
【００３０】
このような構成により、電圧検出器１１１は、電源電圧ＶＤＤが電圧ＶＩ以下になるとハイレベル、つまり論理値「１」の検出信号Ｖｄｔｃｔ＿Ｉを出力する。電圧検出器１１２、１１３も同様に、電源電圧ＶＤＤがそれぞれ電圧ＶＳ、ＶＲ以下になるとハイレベル、つまり論理値「１」の検出信号Ｖｄｔｃｔ＿Ｓ、Ｖｄｔｃｔ＿Ｒをそれぞれ出力する。
【００３１】
フラグレジスタ１５０（第１の記憶回路）は、電圧検出器１１１〜１１３の出力するそれぞれの検出信号Ｖｄｔｃｔ＿Ｉ、Ｖｄｔｃｔ＿Ｓ、Ｖｄｔｃｔ＿Ｒの値に応じて、フラグ「Ｉ」「Ｓ」「Ｒ」の値を変化させ記憶する。具体的には、検出信号Ｖｄｔｃｔ＿Ｉがハイレベルとなるとフラグ「Ｉ」の値を「０」から「１」とする。また、検出信号Ｖｄｔｃｔ＿Ｓがハイレベルとなるとフラグ「Ｓ」の値を「０」から「１」とする。検出信号Ｖｄｔｃｔ＿Ｒがハイレベルとなるとフラグ「Ｒ」の値を「０」から「１」とする。但し、上述したスタンバイ用退避処理が完了した場合、ＣＰＵ１３０からのマスク制御信号が入力される。このマスク制御信号が入力されると、フラグレジスタ１５０は、フラグ「Ｓ」の値をマスクし、検出信号Ｖｄｔｃｔ＿Ｓがハイレベルとなっても「１」への書き換えはできないようになる。但し、電圧検出器１１２がＣＰＵ１３０からの動作停止信号により動作停止している場合、このマスク処理は行わなくてよい。
【００３２】
なお、各検出信号がハイレベルになり変化したフラグの値は、各検出信号がロウレベルになっても、「０」に戻らず「１」が保持される。そして、スタンバイ状態から通常動作へ復帰したＣＰＵ１３０は、これらのフラグの値を確認し、その値に応じた復帰処理を行う。そして、ＣＰＵ１３０は、マイクロコントローラ１００が通常動作モードに移行後、フラグレジスタ１５０を初期化しフラグの値を全て「０」に戻す。
【００３３】
ここで、電源電圧ＶＤＤが電圧ＶＲより低下した場合には、リセットコントローラ１２３により当該フラグレジスタ１５０もリセットされる。但し、フラグ「Ｒ」の値はリセットされず「１」を保持するものとする。また、フラグレジスタ１５０は、ロジック回路で構成され、低電圧下でも動作が可能であり、電源電圧ＶＤＤが電圧ＶＲより低下しても記憶した各フラグの値を保持することができるものとする。
【００３４】
外部リセット信号入力端子１６０は、外部リセット信号を入力する。リセットコントローラ１２３が、この外部リセット信号を入力すると、検出電圧信号Ｖｄｔｃｔ＿Ｒに関わらず、ＣＰＵ１３０等にリセット信号を出力する。また、この外部リセット信号により、フラグレジスタ１５０がリセットされるようにしてもよい。但し、上述した動作と同様、フラグ「Ｒ」の値はリセットされず「１」を保持するものとする。
【００３５】
次に、本実施の形態１にかかるマイクロコントローラ１００の動作について図面を参照しながら詳細に説明する。図３〜６に電源電圧ＶＤＤが低下し、再び上昇する４パターンに対する検出信号Ｖｄｔｃｔ＿Ｉ、Ｖｄｔｃｔ＿Ｓ、Ｖｄｔｃｔ＿Ｒの信号波形を示す。また、フラグレジスタ１５０の各フラグの値を示す。
【００３６】
図３に示すパターンでは、時刻ｔ１以前に、電源電圧ＶＤＤは、電圧ＶＩ以上である。このため、マイクロコントローラ１００が通常動作を行い、ＣＰＵ１３０は通常の処理動作を行っている。時刻ｔ１に、電源電圧ＶＤＤが電圧ＶＩより低下する。このため、電圧検出器１１１は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｉを割り込みコントローラ１２１に出力する。また、フラグレジスタ１５０のフラグ「Ｉ」の値が、「０」から「１」に書き換えられる。
【００３７】
割り込みコントローラ１２１は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｉを入力し、ＣＰＵ１３０をスタンバイ状態にさせるための割り込み信号Ｓｉｇ＿Ｉを出力する。ＣＰＵ１３０は、この割り込み信号Ｓｉｇ＿Ｉに応じて、通常動作を停止し、スタンバイ用退避処理を開始する。このスタンバイ用退避処理動作は期間Ｔｐｓを要し、時刻ｔ２に完了してＣＰＵ１３０がスタンバイとなる。よって、マイクロコントローラ１００がスタンバイモードとなる。
【００３８】
その後、電源電圧ＶＤＤは、電圧ＶＳ以下には低下せず、時刻ｔ３に再び電圧ＶＩ以上に上昇する。このため、電圧検出器１１１は、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉを割り込みコントローラ１２１に出力する。この割り込みコントローラ１２１からの割り込み信号Ｓｉｇ＿Ｉに応じて、ＣＰＵ１３０は通常動作モードへ復帰するためのスタンバイ復帰処理を開始する。このスタンバイ復帰処理において、ＣＰＵ１３０はフラグレジスタ１５０のフラグ「Ｉ」「Ｓ」「Ｒ」の値を確認する。そして、フラグ「Ｉ」の値が「１」、「Ｓ」「Ｒ」の値が「０」であることを確認し、スタンバイ用退避処理でＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報が正しい値で記憶されていると判定する。その後、ＣＰＵ１３０は、ＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報を利用し、スタンバイの直前の状態に復帰する。また、ＣＰＵ１３０は、マイクロコントローラ１００が通常動作モードへ移行後、フラグレジスタ１５０をリセットする。
【００３９】
なお、図３の時刻ｔ２以降で、マイクロコントローラ１００がスタンバイモードになった後、電源電圧ＶＤＤが電圧ＶＳ以下に低下する場合も考えられる。この場合、時刻ｔ２で既にＣＰＵ１３０がスタンバイ状態に移行完了している。このため、電源電圧ＶＤＤが電圧ＶＳ以下に低下したときに強制スタンバイは行われない。このため、マイクロコントローラ１００のシステムにとって、電源電圧ＶＤＤが電圧ＶＳ以下に低下しても何ら問題がない。また、この場合では、スタンバイ用退避処理の完了後、ＣＰＵ１３０のマスク制御信号に応じて、フラグレジスタ１５０はフラグ「Ｓ」の値をマスクする。よって、このフラグ「Ｓ」の値は変更されず、「０」のままとなる。この後、電源電圧ＶＤＤが電圧ＶＩより高くなり、ＣＰＵ１３０が通常動作モードへ復帰する場合、復帰処理において、ＣＰＵ１３０はフラグレジスタ１５０のフラグ「Ｉ」の値が「１」、「Ｓ」「Ｒ」の値が「０」であることを確認し、スタンバイ用退避処理でＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報が正しい値で記憶されていると判定する。
【００４０】
また、更に時刻ｔ２以降で、電源電圧ＶＤＤが電圧ＶＲ以下に低下マイクロコントローラ１００がスタンバイモードになった後、電源電圧ＶＤＤが電圧ＶＲ以下に低下する場合も考えられる。この場合でも、既にＣＰＵ１３０がスタンバイ状態に移行完了しており、電圧ＶＲ以下になるまで、フラグレジスタ１５０のフラグ「Ｓ」の値は「０」である。その後、電圧ＶＲ以下に低下し、電圧検出器１１３は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｒをリセットコントローラ１２３に出力する。リセットコントローラ１２３は、リセット信号をＣＰＵ１３０に出力し、マイクロコントローラ１００のシステムをリセット（ＲＡＭ１４２等をリセット）する。また、フラグレジスタ１５０のフラグ「Ｒ」の値を「１」、「Ｉ」「Ｓ」の値を「０」にする。その後、電源電圧ＶＤＤが電圧ＶＩより高くなり、ＣＰＵ１３０が通常動作モードへ復帰する場合、スタンバイ復帰処理において、ＣＰＵ１３０はフラグレジスタ１５０の記憶したフラグの値を確認する。そして、フラグ「Ｒ」の値が「１」であることを確認し、ＣＰＵ１３０は、マイクロコントローラ１００のシステムがリセットされた判定する。その後、ＣＰＵ１３０は、フラッシュメモリ１４３に退避させた情報を廃棄し、マイクロコントローラ１００のシステムを初期化する。
【００４１】
また、図４に示すパターンでは、時刻ｔ１に電源電圧ＶＤＤが電圧ＶＩより低下し、上述したマイクロコントローラ１００のスタンバイ移行の割り込み処理が開始される。しかし、割り込み処理が完了する期間Ｔｐｓ内の時刻ｔ２で再び電源電圧ＶＤＤが電圧ＶＩより上昇する。この場合、時刻ｔ２で、電圧検出器１１１は、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉを割り込みコントローラ１２１に出力する。この割り込みコントローラ１２１からの割り込み信号Ｓｉｇ＿Ｉに応じて、ＣＰＵ１３０は、スタンバイ復帰処理を中止し、通常動作モードへ復帰する。このとき、ＣＰＵ１３０はスタンバイへ移行していないため、通常動作モードへの復帰処理においてＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報は利用しない。また、図３のパターンと同様、ＣＰＵ１３０は、通常動作モードへ移行後、フラグレジスタ１５０をリセットする。
【００４２】
次に、図５のパターンを説明する。時刻ｔ１以前は、図３のパターンと同様である。時刻ｔ１に、電源電圧ＶＤＤが電圧ＶＩより低下する。この後、図３のパターンと同様、割り込みコントローラ１２１からの割り込み信号Ｓｉｇ＿Ｉに応じて、ＣＰＵ１３０は通常動作を停止し、スタンバイ移行のための割り込み処理動作を開始する。しかし、図３のパターンとは異なり、スタンバイ用退避処理が完全に完了する時刻ｔ３より前の時刻ｔ２に電源電圧ＶＤＤが電圧ＶＳより低下する。つまり、時刻ｔ１から期間Ｔｐｓより短い期間Ｔ１で電源電圧ＶＤＤが電圧ＶＳより低下する。このため、電圧検出器１１２は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｓをスタンバイコントローラ１２２に出力する。ＣＰＵ１３０は、スタンバイコントローラ１２２からのスタンバイ信号に応じて、スタンバイ用退避処理を中止し、強制的にスタンバイ状態に移行する。また、このとき、フラグレジスタ１５０のフラグ「Ｓ」の値が、「０」から「１」に書き換えられる。
【００４３】
その後、電源電圧ＶＤＤが上昇し、時刻ｔ４に電圧ＶＳより高くなり、時刻ｔ５に電圧ＶＩより高くなる。このため、時刻ｔ５に電圧検出器１１１は、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉを割り込みコントローラ１２１に出力する。割り込みコントローラ１２１は、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉに応じた割り込み信号Ｓｉｇ＿ＩをＣＰＵ１３０に出力する。この割り込み信号Ｓｉｇ＿Ｉを入力したＣＰＵ１３０は、スタンバイ復帰処理を開始する。このスタンバイ復帰処理において、ＣＰＵ１３０はフラグレジスタ１５０の記憶するフラグの値を確認する。そして、フラグ「Ｉ」「Ｓ」の値が「１」、「Ｒ」の値が「０」であることを確認する。このことから、ＣＰＵ１３０は、スタンバイ用退避処理が中断されＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報が正しい値で記憶されていないと判定する。その後、ＣＰＵ１３０は、ＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報を廃棄し、マイクロコントローラ１００のシステムを初期化する。
【００４４】
なお、この図５のパターンでは、電源電圧ＶＤＤが電圧ＶＩより上昇した時点で、ＣＰＵ１３０がスタンバイ復帰処理を開始しているが、電源電圧ＶＤＤが電圧ＶＳ以上に上昇した時点（時刻ｔ４）で、この復帰処理を開始してもよい。
【００４５】
また、図６に示すパターンでは、図５のパターンと同様、スタンバイ用退避処理が完全に完了する時刻ｔ３より前の時刻ｔ２に電源電圧ＶＤＤが電圧ＶＳより低下する。このため、図５のパターンと同様、ＣＰＵ１３０は、スタンバイ用退避処理を中止し、強制的にスタンバイ状態に移行する。よって、フラグレジスタ１５０のフラグ「Ｓ」の値は「１」となる。そして、更に時刻ｔ４に電源電圧ＶＤＤが電圧ＶＲより低下する。このため、電圧検出器１１３は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｒをリセットコントローラ１２３に出力する。また、フラグレジスタ１５０のフラグ「Ｒ」の値が「０」から「１」となる。
【００４６】
そして、リセットコントローラ１２３は、リセット信号をＣＰＵ１３０に出力しリセットする。これに応じて、ＣＰＵ１３０内のプログラムカウンタ１３１、プロセッサステータスワード１３２等がリセットされる。更に、ＲＡＭ１４２、スペシャルファンクションレレジスタ１４４等もリセットされ、マイクロコントローラ１００のシステムがリセットされる。但し、フラグレジスタ１５０のフラグ「Ｒ」の値は、リセットされず、「１」を保持する。
【００４７】
その後、電源電圧ＶＤＤが上昇し、時刻ｔ５に電圧ＶＲより高くなり、時刻ｔ６に電圧ＶＳより高くなる。更に、時刻７で電源電圧ＶＤＤが電圧ＶＩより高くなり、図５のパターンと同様、ＣＰＵ１３０がスタンバイ復帰処理を開始する。このスタンバイ復帰処理において、ＣＰＵ１３０はフラグレジスタ１５０の記憶するフラグの値を確認する。そして、フラグ「Ｒ」の値が「１」であることを確認する。このことから、ＣＰＵ１３０は、マイクロコントローラ１００のシステムがリセットされた判定する。その後、ＣＰＵ１３０は、フラッシュメモリ１４３に退避させた情報を廃棄し、マイクロコントローラ１００のシステムを初期化する。
【００４８】
ここで、図７のフローチャートを用いて、上述したマイクロコントローラ１００が、スタンバイから通常動作モード動作に復帰するための手順を示す。図７に示すように、ＣＰＵ１３０は、電源電圧ＶＤＤが電圧ＶＩ以上である場合（Ｓ１０１）、フラグレジスタ１５０が記憶するフラグの値を確認する（Ｓ１０２）。フラグ「Ｒ」の値が「１」であるか否か判定する（Ｓ１０３）。Ｒ＝１である場合（Ｓ１０３ＹＥＳ）、マイクロコントローラ１００のシステムを初期化する（Ｓ１０４）。その後、マイクロコントローラ１００は、通常のシステム動作を行う（Ｓ１０５）。
【００４９】
Ｒ＝１でなくＲ＝０の場合（Ｓ１０３ＮＯ）、ＣＰＵ１３０は、フラグ「Ｓ」の値が「１」であるか否か判定する（Ｓ１０６）。Ｓ＝１である場合（Ｓ１０６ＹＥＳ）、スタンバイ用退避処理が途中で終了されたとみなし、マイクロコントローラ１００のシステムを初期化する（Ｓ１０７）。その後、マイクロコントローラ１００は、通常のシステム動作を行う（Ｓ１０８）。
【００５０】
Ｓ＝１でなくＳ＝０の場合（Ｓ１０６ＮＯ）、ＣＰＵ１３０は、フラグ「Ｉ」の値が「１」であるか否か判定する（Ｓ１０９）。Ｉ＝１である場合（Ｓ１０９ＹＥＳ）、スタンバイ用退避処理が完了したとみなし、ＣＰＵ１３０は、ＲＡＭ１４２等にバックアップした情報を基にスタンバイ直前の状態への復帰処理を行う（Ｓ１１０）。その後、マイクロコントローラ１００は、通常のシステム動作を行う（Ｓ１１１）。
【００５１】
Ｉ＝１でなくＩ＝０の場合（Ｓ１０９ＮＯ）は、マイクロコントローラ１００の電源立ち上げ初期状態であるため、ＣＰＵ１３０は、マイクロコントローラ１００のシステムを初期化する（Ｓ１１２）。その後、マイクロコントローラ１００は、通常のシステム動作を行う（Ｓ１１３）。
【００５２】
ここで、従来のマイクロコントローラ１は、図８に示すように、時刻ｔ１に電源電圧ＶＡが所定の電圧ＶＲ以下になると、ロウアクティブの割り込み信号ＮＭＩ信号Ｖｎｍｉをロウレベルにし、ＣＰＵ３が割り込みルーチンにより内部ＲＡＭ３１にレジスタ情報を退避させるバックアップ前処理動作を行う。ここで、このバックアップ前処理動作が完了するには、期間Ｔｐｏが必要である。このために、電源電圧ＶＡを供給する電源回路の平滑コンデンサの容量を十分大きくし、ＣＰＵ３をスタンバイさせる電圧Ｖ１以下になる期間を十分確保している。しかし、図８に示すように、電源回路の故障等により電源電圧ＶＡが急激に低下し、期間Ｔｐｏが終了する前の時刻ｔ２に電源電圧ＶＡが電圧Ｖ１以下になった場合、前記バックアップ前処理動作が途中で終了し、ＣＰＵ３がスタンバイとなるか、もしくは、リセットされる。時刻ｔ１からｔ２の期間をＴ２とすると、Ｔｐｏ＞Ｔ２となる。期間Ｔ２では、バックアップ前処理動作が完了せず、内部ＲＡＭ３１にバックアップされるデータが正確である保証が得られない。
【００５３】
このように、マイクロコントローラ１では、バックアップ前処理動作が途中で終了すると、内部ＲＡＭ３１にバックアップされるデータが不完全な状態で記憶される。このため、再び電源電圧ＶＡが所定の電圧ＶＲ以上に上昇し、マイクロコントローラ１が、この内部ＲＡＭ３１のデータを基に再び通常動作を行うと誤作動を起こす可能性が高い。
【００５４】
ここで、本実施の形態１のマイクロコントローラ１００は、スタンバイ用退避処理が途中で終了されたかどうか、またはシステムがリセットされたかどうかをＣＰＵ１３０が判断することが可能なフラグレジスタ１５０を有している。このフラグレジスタ１５０の記憶するフラグの値をＣＰＵ１３０が、スタンバイから通常動作モードへの復帰処理時、もしくは、リセットから通常動作モードへの復帰処理時に確認することで、ＲＡＭ１４２、もしくはフラッシュメモリ１４３にバックアップされたデータが正しいか否かが判定できる。さらに、スタンバイ用退避処理が途中で終了されたと判定した場合、またはシステムがリセットされたと判定した場合は、ＣＰＵ１３０はバックアップされたデータを破棄し、マイクロコントローラ１００を初期化する。よって、本実施の形態１のマイクロコントローラ１００は、スタンバイ状態からの復帰後の誤作動を起こすことを防ぐことができる。
【００５５】
更に、本実施の形態１のマイクロコントローラ１００は、従来のマイクロコントローラ１のように、電源回路（不図示）に対して、必要以上に大きい平滑コンデンサの容量を要求しない。
【００５６】
発明の実施の形態２
以下、本発明を適用した具体的な実施の形態２について、図面を参照しながら詳細に説明する。図９に本実施の形態２にかかるマイクロコントローラ２００の構成の一例を示す。
【００５７】
図９に示すように、マイクロコントローラ２００は、電圧検出器１１１〜１１３と、割り込みコントローラ１２１と、スタンバイコントローラ１２２と、リセットコントローラ１２３と、ＣＰＵ１３０と、ＲＯＭ１４１、ＲＡＭ１４２と、フラッシュメモリ１４３と、スペシャルファンクションレレジスタ１４４と、フラグレジスタ２５０と、外部リセット信号入力端子１６０とを有している。
【００５８】
なお、図９に示された符号のうち、図１と同じ符号を付した構成は、図１と同じか又は類似の構成を示している。実施の形態１と異なる点はフラグレジスタ２５０の構成である。よって、本実施の形態２では、その部分を重点的に説明する。
【００５９】
フラグレジスタ２５０は、電圧検出器１１１〜１１３の出力するそれぞれの検出信号Ｖｄｔｃｔ＿Ｉ、Ｖｄｔｃｔ＿Ｓ、Ｖｄｔｃｔ＿Ｒの値に応じて、フラグ「Ｉ」「Ｓｍ」「Ｒ」の値を変化させ記憶する。フラグ「Ｉ」の値は、実施の形態１と同様、検出信号Ｖｄｔｃｔ＿Ｉがハイレベルになった場合、「０」から「１」に変化する。フラグ「Ｓｍ」は、検出信号Ｖｄｔｃｔ＿Ｓがハイレベルになった場合、「０」から「１」に変化する。フラグ「Ｓｎｍ」は、マイクロコントローラ２００のスタンバイ用退避処理が完全に完了した場合に、ＣＰＵ１３０から出力される書き換え信号により「０」から「１」に変化する。最上位ビットの「Ｒ」は、実施の形態１と同様、検出信号Ｖｄｔｃｔ＿Ｒがハイレベルになった場合、「０」から「１」に変化する。
【００６０】
なお、実施の形態１と同様、各検出信号がハイレベルになり変化したフラグの値は、各検出信号がロウレベルになっても、「０」に戻らず「１」が保持される。そして、スタンバイ状態から復帰したＣＰＵ１３０は、これらのフラグの値を確認し、その値に応じた復帰処理を行う。そして、ＣＰＵ１３０は、マイクロコントローラ２００が通常動作モードに移行後、フラグレジスタ２５０を初期化しフラグの値を全て「０」に戻す。
【００６１】
ここで、電源電圧ＶＤＤが電圧ＶＲより低下した場合には、当該フラグレジスタ２５０もリセットされる。但し、フラグ「Ｒ」の値はリセットされず「１」を保持するものとする。また、フラグレジスタ２５０は、ロジック回路で構成され、低電圧下でも動作が可能であり、電源電圧ＶＤＤが電圧ＶＲより低下しても記憶した各フラグの値を保持することができるものとする。
【００６２】
ＣＰＵ１３０は、上記フラグレジスタ２５０の記憶したフラグの値をスタンバイから通常動作モードへの復帰処理時、もしくは、リセットから通常動作モードへの復帰処理時に確認し、ＲＡＭ１４２、もしくはフラッシュメモリ１４３のバックアップデータを利用するか否かを判断する。
【００６３】
次に、本実施の形態２にかかるマイクロコントローラ２００の動作について図面を参照しながら詳細に説明する。図１０、図１１、図１２に電源電圧ＶＤＤが低下し、再び上昇する３パターンに対する検出信号Ｖｄｔｃｔ＿Ｉ、Ｖｄｔｃｔ＿Ｓ、Ｖｄｔｃｔ＿Ｒの信号波形とフラグレジスタ２５０の各フラグの値を示す。
【００６４】
ただし、電源電圧ＶＤＤが電圧ＶＳ以下に低下しないパターン、つまり実施の形態１の図３、図４のパターンでは、フラグレジスタ２５０のフラグ「Ｉ」の値のみ「０」から「１」に変化し、「Ｓｍ」「Ｓｎｍ」「Ｒ」の値は「０」のままである。このため、マイクロコントローラ２００は、基本的にマイクロコントローラ１００と同様の動作となるため、説明は省略する。
【００６５】
図１０に示すパターンでは、時刻ｔ１以前に、電源電圧ＶＤＤは、電圧ＶＩ以上である。このため、マイクロコントローラ２００が通常動作を行い、ＣＰＵ１３０は通常の処理動作を行っている。時刻ｔ１に、電源電圧ＶＤＤが電圧ＶＩより低下する。このため、電圧検出器１１１は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｉを割り込みコントローラ１２１に出力する。また、フラグレジスタ２５０のフラグ「Ｉ」の値が、「０」から「１」に書き換えられる。
【００６６】
割り込みコントローラ１２１は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｉを入力し、ＣＰＵ１３０をスタンバイ状態にさせるための割り込み信号Ｓｉｇ＿Ｉを出力する。ＣＰＵ１３０は、この割り込み信号Ｓｉｇ＿Ｉに応じて、通常動作状態を停止し、スタンバイ用退避処理を開始する。このスタンバイ用退避処理の完了に期間Ｔｐｓ必要である。このスタンバイ用退避処理には期間Ｔｐｓを要し、時刻ｔ２に完了する。スタンバイ用退避処理完了後、ＣＰＵ１３０がフラグレジスタ２５０のフラグ「Ｓｍ」の値を、「０」から「１」に書き換える。その後、ＣＰＵ１３０がスタンバイ状態となり、マイクロコントローラ２００がスタンバイモードとなる。
【００６７】
時刻ｔ３に電源電圧ＶＤＤが電圧ＶＳ以下に低下する。このため、電圧検出器１１２は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｉをスタンバイコントローラ１２２に出力する。また、フラグレジスタ２５０のフラグ「Ｓｎｍ」の値が、「０」から「１」に書き換えられる。ここで、スタンバイ用退避処理の完了期間Ｔｐｓよりも、時刻ｔ１からｔ３までの期間Ｔ２の方が長い。よって、時刻ｔ３では、既にマイクロコントローラ２００がスタンバイ状態に移行完了しており、ＣＰＵ１３０は動作を停止している。このため、スタンバイコントローラ１２２からのスタンバイ信号をＣＰＵ１３０が受け付けない。
【００６８】
その後、電源電圧ＶＤＤが上昇し、時刻ｔ４に電圧ＶＳより高くなり、時刻ｔ５に電圧ＶＩより高くなる。このため、時刻ｔ５に電圧検出器１１１は、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉを割り込みコントローラ１２１に出力する。割り込みコントローラ１２１は、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉに応じた割り込み信号Ｓｉｇ＿ＩをＣＰＵ１３０に出力する。この割り込み信号Ｓｉｇ＿Ｉを入力したＣＰＵ１３０は、スタンバイ状態から通常動作へ復帰するスタンバイ復帰処理を開始する。このスタンバイ復帰処理において、ＣＰＵ１３０はフラグレジスタ２５０の記憶したフラグの値を確認する。そして、フラグ「Ｉ」「Ｓｍ」「Ｓｎｍ」の値が共に「１」、フラグ「Ｒ」の値が「０」であることを確認する。このことから、ＣＰＵ１３０は、スタンバイ用退避処理でＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報が正しい値で記憶されていると判定する。その後、ＣＰＵ１３０は、ＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報を利用し、スタンバイ直前の状態に復帰する。また、ＣＰＵ１３０は通常動作モードへ移行後、フラグレジスタ２５０をリセットする。
【００６９】
次に、図１１のパターンを説明する。時刻ｔ１以前は、図１０のパターンと同様である。時刻ｔ１に、電源電圧ＶＤＤが電圧ＶＩより低下する。この後、図１０のパターンと同様、割り込みコントローラ１２１からの割り込み信号Ｓｉｇ＿Ｉに応じて、ＣＰＵ１３０は通常動作を停止し、スタンバイ状態に移行するための割り込み処理動作を開始する。しかし、図１０のパターンとは異なり、スタンバイ用退避処理が完了する時刻ｔ３より前の時刻ｔ２に電源電圧ＶＤＤが電圧ＶＳより低下する。つまり、時刻ｔ１から期間Ｔｐｓより短い期間Ｔ１で電源電圧ＶＤＤが電圧ＶＳより低下する。このため、電圧検出器１１２は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｓをスタンバイコントローラ１２２に出力する。ＣＰＵ１３０は、スタンバイコントローラ１２２からのスタンバイ信号に応じて、スタンバイ用退避処理を中止し、強制的にスタンバイ状態に移行する。また、このとき、フラグレジスタ２５０のフラグ「Ｓｍ」の値が、「０」から「１」に書き換えられる。ここで、図１０のパターンではスタンバイ用退避処理が完了し、フラグレジスタ２５０のフラグ「Ｓｎｍ」の値が「１」になっていたが、図１１のパターンではスタンバイ用退避処理が完了していないため、フラグ「Ｓｎｍ」の値は「０」のままである。
【００７０】
その後、電源電圧ＶＤＤが上昇し、時刻ｔ４に電圧ＶＳより高くなり、時刻ｔ５に電圧ＶＩより高くなる。このため、時刻ｔ５に電圧検出器１１１は、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉを割り込みコントローラ１２１に出力する。割り込みコントローラ１２１は、ロウレベルの検出信号Ｖｄｔｃｔ＿Ｉに応じた割り込み信号Ｓｉｇ＿ＩをＣＰＵ１３０に出力する。この割り込み信号Ｓｉｇ＿Ｉを入力したＣＰＵ１３０は、スタンバイから通常動作モードへ復帰するスタンバイ復帰処理を開始する。このスタンバイ復帰処理において、ＣＰＵ１３０はフラグレジスタ２５０の記憶したフラグの値を確認する。そして、フラグ「Ｉ」「Ｓｍ」の値が共に「１」、フラグ「Ｓｎｍ」、「Ｒ」の値が共に「０」であることを確認する。このことから、ＣＰＵ１３０は、スタンバイ用退避処理が中断されＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報が正しい値で記憶されていないと判定する。その後、ＣＰＵ１３０は、ＲＡＭ１４２やフラッシュメモリ１４３に退避させた情報を廃棄し、マイクロコントローラ２００のシステムを初期化する。
【００７１】
また、図１２に示すパターンでは、図１１のパターンと同様、スタンバイ用退避処理が完全に完了する時刻ｔ３より前の時刻ｔ２に電源電圧ＶＤＤが電圧ＶＳより低下する。このため、図１１のパターンと同様、ＣＰＵ１３０は、スタンバイ用退避処理を中止し、強制的にスタンバイ状態に移行する。この時点でフラグレジスタ２５０のフラグ「Ｉ」「Ｓｍ」の値が「１」、フラグ「Ｓｎｍ」「Ｒ」の値が「１」となっている。
【００７２】
そして、更に時刻ｔ４に電源電圧ＶＤＤが電圧ＶＲより低下する。このため、電圧検出器１１３は、ハイレベルの検出信号Ｖｄｔｃｔ＿Ｒをリセットコントローラ１２３に出力する。また、フラグレジスタ２５０のフラグ「Ｒ」の値が、「０」から「１」に書き換えられる。
【００７３】
そして、リセットコントローラ１２３は、リセット信号をＣＰＵ１３０に出力しリセットする。これに応じて、ＲＡＭ１４２、スペシャルファンクションレレジスタ１４４等もリセットされ、マイクロコントローラ２００のシステムがリセットされる。但し、フラグレジスタ２５０のフラグ「Ｒ」の値は、リセットされず、「１」を保持する。
【００７４】
その後、電源電圧ＶＤＤが上昇し、時刻ｔ５に電圧ＶＲより高くなり、時刻ｔ６に電圧ＶＳより高くなる。更に、時刻７で電源電圧ＶＤＤが電圧ＶＩより高くなり、図１１のパターンと同様、ＣＰＵ１３０がスタンバイから通常動作モードへ復帰するスタンバイ復帰処理を開始する。このスタンバイ復帰処理において、ＣＰＵ１３０はフラグレジスタ２５０の記憶したフラグの値を確認する。そして、フラグ「Ｒ」の値が「１」であることを確認する。このことから、ＣＰＵ１３０は、マイクロコントローラ２００のシステムがリセットされた判定する。その後、ＣＰＵ１３０は、フラッシュメモリ１４３に退避させた情報を廃棄し、マイクロコントローラ２００のシステムを初期化する。
【００７５】
なお、図１０のパターンのように電源電圧ＶＤＤが電圧ＶＳより低下する前にマイクロコントローラ２００のスタンバイ用退避処理が完全に完了し、更にその後、電源電圧ＶＤＤが電圧ＶＲより低下する場合も考えられる。この場合、電源電圧ＶＤＤが電圧ＶＳより低下するまでにフラグレジスタ２５０のフラグ「Ｓｎｍ」の値が「１」となる。しかし、結局、電源電圧ＶＤＤが電圧ＶＲより低下すると、フラグ「Ｒ」の値以外はリセットされ「０」となるため、その後のＣＰＵ１３０等の動作は図１２と同様となる。よって、図を用いた詳細な説明は省略する。
【００７６】
ここで、図１３のフローチャートを用いて、上述したマイクロコントローラ２００が、スタンバイから通常動作モード動作に復帰するときのＣＰＵ１３０の動作手順を示す。図１３に示すように、ＣＰＵ１３０は、電源電圧ＶＤＤが電圧ＶＩ以上である場合（Ｓ２０１）、フラグレジスタ２５０の記憶したフラグの値を確認する（Ｓ２０２）。
【００７７】
フラグ「Ｒ」の値が「１」であるか否か判定する（Ｓ２０３）。Ｒ＝１である場合（Ｓ２０３ＹＥＳ）、リセットされたとみなし、マイクロコントローラ２００のシステムを初期化する（Ｓ２０４）。その後、マイクロコントローラ２００は、通常のシステム動作を行う（Ｓ２０５）。
【００７８】
Ｒ＝１でなくＲ＝０の場合（Ｓ２０３ＮＯ）、ＣＰＵ１３０は、フラグ「Ｓｍ」の値が「１」であるか否か判定する（Ｓ２０６）。Ｓｍ＝１である場合（Ｓ２０６ＹＥＳ）、更にフラグ「Ｓｎｍ」の値が「１」であるか否か判定する（Ｓ２０７）。Ｓｎｍ＝１である場合（Ｓ２０７ＹＥＳ）、スタンバイ用退避処理が完了したとみなし、ＣＰＵ１３０は、ＲＡＭ１４２等にバックアップした情報を基にスタンバイ直前の状態への復帰処理を行う（Ｓ２０８）。その後、マイクロコントローラ２００は、通常のシステム動作を行う（Ｓ２０９）。
【００７９】
Ｓｎｍ＝１でなくＳｎｍ＝０の場合（Ｓ２０７ＮＯ）、スタンバイ用退避処理が途中で終了されたとみなし、マイクロコントローラ２００のシステムを初期化する（Ｓ２１０）。その後、マイクロコントローラ２００は、通常のシステム動作を行う（Ｓ２１１）。
【００８０】
一方、Ｓｍ＝１でなくＳｍ＝０の場合（Ｓ２０６ＮＯ）、ＣＰＵ１３０は、フラグ「Ｉ」の値が「１」であるか否か判定する（Ｓ２１２）。Ｉ＝１である場合（Ｓ２１２ＹＥＳ）、スタンバイ用退避処理が完了したとみなし、ＣＰＵ１３０は、ＲＡＭ１４２等にバックアップした情報を基にスタンバイ直前の状態への復帰処理を行う（Ｓ２１３）。その後、マイクロコントローラ２００は、通常のシステム動作を行う（Ｓ２１４）。
【００８１】
Ｉ＝１でなくＩ＝０の場合（Ｓ２１５ＮＯ）は、マイクロコントローラ２００の電源立ち上げ初期状態であるため、ＣＰＵ１３０は、マイクロコントローラ２００のシステムを初期化する（Ｓ２１５）。その後、マイクロコントローラ２００は、通常のシステム動作を行う（２１６）。
【００８２】
以上のように、実施の形態２のマイクロコントローラ２００では、フラグレジスタ２５０に、電源電圧ＶＤＤが電圧ＶＳより低下したかを示すフラグ「Ｓｍ」と、スタンバイ用退避処理が完全に完了したことを示すフラグ「Ｓｎｍ」を用意した。このことにより、ＣＰＵ１３０が、スタンバイから通常動作モードへのスタンバイ復帰処理時に、フラグ「Ｓｎｍ」、「Ｓｍ」の値を確認することで、スタンバイ用退避処理が完了した、もしくは、スタンバイ用退避処理が途中で終了したかを判定できる。このため、単にフラグレジスタ２５０のフラグを書き換える処理ですみ、実施の形態１のマイクロコントローラ１００のように、フラグレジスタ１５０に対するマスク処理動作とその機構、もしくは、電圧検出器１１２に対する動作停止処理とその機構を有する等の必要がない。
【００８３】
その後、ＣＰＵ１３０は、フラグ「Ｓｎｍ」、「Ｓｍ」の値が「１」の場合、ＲＡＭ１４２、もしくはフラッシュメモリ１４３にバックアップされたデータを利用し、スタンバイ直前の状態に復帰する。反対に、フラグ「Ｓｎｍ」の値が「０」、フラグ「Ｓｍ」が「１」の場合、ＣＰＵ１３０はＲＡＭ１４２、もしくはフラッシュメモリ１４３にバックアップされたデータを破棄し、マイクロコントローラ２００を初期化する。よって、実施の形態１と同様、マイクロコントローラ２００は、スタンバイ状態からの復帰後の誤作動を起こすことを防ぐことができる。その他の効果は、実施の形態１と同様である。
【００８４】
なお、本発明は上記実施の形態に限られたものでなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、当該マイクロコントローラは１チップで構成されてもよい。
【図面の簡単な説明】
【００８５】
【図１】実施の形態１にかかるマイクロコントローラの構成の一例である。
【図２】実施の形態１にかかる電圧検出器の構成の一例である。
【図３】実施の形態１にかかるマイクロコントローラの動作を説明するタイミングチャートである。
【図４】実施の形態１にかかるマイクロコントローラの動作を説明するタイミングチャートである。
【図５】実施の形態１にかかるマイクロコントローラの動作を説明するタイミングチャートである。
【図６】実施の形態１にかかるマイクロコントローラの動作を説明するタイミングチャートである。
【図７】実施の形態１にかかるマイクロコントローラの通常動作モードへの復帰の手順をしめすフローチャートである。
【図８】従来技術の問題点を説明するためのタイミングチャートである。
【図９】実施の形態２にかかるマイクロコントローラの構成の一例である。
【図１０】実施の形態２にかかるマイクロコントローラの動作を説明するタイミングチャートである。
【図１１】実施の形態２にかかるマイクロコントローラの動作を説明するタイミングチャートである。
【図１２】実施の形態２にかかるマイクロコントローラの動作を説明するタイミングチャートである。
【図１３】実施の形態２にかかるマイクロコントローラの通常動作モードへの復帰の手順をしめすフローチャートである。
【符号の説明】
【００８６】
１００、２００  マイクロコントローラ
１１１〜１１３  電圧検出器
１２１  割り込みコントローラ
１２２  スタンバイコントローラ
１２３  リセットコントローラ
１３０  ＣＰＵ
１４１  ＲＯＭ
１４２  ＲＡＭ
１４３  フラッシュメモリ
１４４  スペシャルファンクションレレジスタ
１４５  ウォッチドッグタイマ
１５０、２５０  フラグレジスタ
【図１】
2010092194.tif 000003
【図２】
2010092194.tif 000004
【図３】
2010092194.tif 000005
【図４】
2010092194.tif 000006
【図５】
2010092194.tif 000007
【図６】
2010092194.tif 000008
【図７】
2010092194.tif 000009
【図８】
2010092194.tif 000010
【図９】
2010092194.tif 000011
【図１０】
2010092194.tif 000012
【図１１】
2010092194.tif 000013
【図１２】
2010092194.tif 000014
【図１３】
2010092194.tif 000015
【手続補正書】
【提出日】平成21年12月25日(2009.12.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
電源電圧が第１の電圧値以下に低下したとき、第１の検出信号を生成する第１の電圧検出回路と、
前記電源電圧が前記第１の電圧値より低い第２の電圧値以下に低下したとき、第２の検出信号を生成する第２の電圧検出回路と、
第１の記憶回路と、
中央処理回路と、を有し、
前記中央処理回路は、
前記第２の電圧以上で通常動作する通常動作モードと、前記第２の電圧以下で動作し前記通常動作モードより低消費電力で動作する低消費電力モードとを切り替える機能を有し、
前記第１の検出信号が生成されると、前記通常動作モードから前記低消費電力モードに移行するための割り込み処理動作を行い、
前記割り込み処理動作の終了より前に、前記第２の検出信号が生成されると、前記割り込み処理動作に関わらず、前記低消費電力モードに移行し、
前記第１の記憶回路は、前記中央処理回路が、前記割り込み処理動作完了前に、前記低消費電力モードに移行したことを示す情報を記憶し、
第２の記憶回路を更に有し、
前記割り込み処理動作は、前記中央処理回路が、前記低消費電力モードから通常動作モードに復帰するために必要な情報を、前記第２の記憶回路へバックアップする処理動作であって、
前記第１の記憶回路の記憶する情報は、前記バックアップ処理動作の完了前に前記低消費電力モードに移行したことを示す情報であり、
前記電源電圧が前記第２の電圧値より低い第３の電圧値以下に低下したとき、第３の検出信号を生成する第３の電圧検出回路を更に有し、
前記中央処理回路は、前記第３の検出信号が生成されるとリセットされ、
前記第１の検出信号を入力し、前記中央処理回路に対して前記割り込み処理動作を行わせる割り込み信号を出力する割り込み制御回路と、
前記第２の検出信号を入力し、前記中央処理回路に対して前記割り込み処理動作に関わらず、前記低消費電力モードに移行させる低消費電力モード信号を出力する低消費電力モード制御回路と、
前記第３の検出信号を入力し、前記中央処理回路に対してリセットをかけるリセット信号を出力するリセット回路と、を更に有する
マイクロコントローラ。
【請求項２】
電源電圧が第１の電圧値以下に低下したとき、第１の検出信号を生成する第１の電圧検出回路と、
前記電源電圧が前記第１の電圧値より低い第２の電圧値以下に低下したとき、第２の検出信号を生成する第２の電圧検出回路と、
第１の記憶回路と、
中央処理回路と、を有し、
前記中央処理回路は、
前記第２の電圧以上で通常動作する通常動作モードと、前記第２の電圧以下で動作し前記通常動作モードより低消費電力で動作する低消費電力モードとを切り替える機能を有し、
前記第１の検出信号が生成されると、前記通常動作モードから前記低消費電力モードに移行するための割り込み処理動作を行い、
前記割り込み処理動作の終了より前に、前記第２の検出信号が生成されると、前記割り込み処理動作に関わらず、前記低消費電力モードに移行し、
前記第１の記憶回路は、前記中央処理回路が、前記割り込み処理動作完了前に、前記低消費電力モードに移行したことを示す情報を記憶し、
第２の記憶回路を更に有し、
前記割り込み処理動作は、前記中央処理回路が、前記低消費電力モードから通常動作モードに復帰するために必要な情報を、前記第２の記憶回路へバックアップする処理動作であって、
前記第１の記憶回路の記憶する情報は、前記バックアップ処理動作の完了前に前記低消費電力モードに移行したことを示す情報であり、
前記電源電圧が前記第２の電圧値より低い第３の電圧値以下に低下したとき、第３の検出信号を生成する第３の電圧検出回路を更に有し、
前記中央処理回路は、前記第３の検出信号が生成されるとリセットされ、
前記第１の記憶回路は、
前記第１の電圧検出回路が前記第１の検出信号を生成したことを示す第１の情報を記憶し、
前記第２の電圧検出回路が前記第２の検出信号を生成したことを示す第２の情報を記憶し、
前記中央処理回路が前記割り込み処理動作を完了させたことを示す第３の情報を記憶し、
前記第３の電圧検出回路が前記第３の検出信号を生成したことを示す第４の情報を記憶する
マイクロコントローラ。
【請求項３】
前記第１の記憶回路は、
前記第１の電圧検出回路が前記第１の検出信号を生成したことを示す第１の情報を記憶し、
前記第２の電圧検出回路が前記第２の検出信号を生成したことを示す第２の情報を記憶し、
前記中央処理回路が前記割り込み処理動作を完了させたことを示す第３の情報を記憶し、
前記第３の電圧検出回路が前記第３の検出信号を生成したことを示す第４の情報を記憶する
請求項１に記載のマイクロコントローラ。
【請求項４】
前記第１の記憶回路は、前記第３の検出信号が生成されたことを示す情報を更に記憶する
請求項１〜請求項３のいずれか１項に記載のマイクロコントローラ。
【請求項５】
前記中央処理回路は、前記低消費電力モードから前記通常動作モードに復帰したとき、前記第１の記憶回路が、前記第３の検出信号が生成されたことを示す情報を記憶している場合、前記第２の記憶回路をリセットする
請求項４に記載のマイクロコントローラ。
【請求項６】
前記中央処理回路は、前記低消費電力モードから前記通常動作モードに復帰したとき、前記第１の記憶回路が、前記バックアップ処理動作の完了前に前記低消費電力モードに移行したことを示す情報を記憶している場合、前記第２の記憶回路へバックアップした情報を利用しない
請求項１〜請求項５のいずれか１項に記載のマイクロコントローラ。
【請求項７】
前記中央処理回路は、前記低消費電力モードから前記通常動作モードに復帰したとき、前記第１の記憶回路が、前記バックアップ処理動作の完了前に前記低消費電力モードに移行したことを示す情報を記憶していない場合、前記第２の記憶回路へバックアップした情報を利用する
請求項１〜請求項５のいずれか１項に記載のマイクロコントローラ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明の一態様は、電源電圧が第１の電圧値以下に低下したとき、第１の検出信号を生成する第１の電圧検出回路と、前記電源電圧が前記第１の電圧値より低い第２の電圧値以下に低下したとき、第２の検出信号を生成する第２の電圧検出回路と、第１の記憶回路と、中央処理回路と、を有し、前記中央処理回路は、前記第２の電圧以上で通常動作する通常動作モードと、前記第２の電圧以下で動作し前記通常動作モードより低消費電力で動作する低消費電力モードとを切り替える機能を有し、前記第１の検出信号が生成されると、前記通常動作モードから前記低消費電力モードに移行するための割り込み処理動作を行い、前記割り込み処理動作の終了より前に、前記第２の検出信号が生成されると、前記割り込み処理動作に関わらず、前記低消費電力モードに移行し、前記第１の記憶回路は、前記中央処理回路が、前記割り込み処理動作完了前に、前記低消費電力モードに移行したことを示す情報を記憶し、第２の記憶回路を更に有し、前記割り込み処理動作は、前記中央処理回路が、前記低消費電力モードから通常動作モードに復帰するために必要な情報を、前記第２の記憶回路へバックアップする処理動作であって、前記第１の記憶回路の記憶する情報は、前記バックアップ処理動作の完了前に前記低消費電力モードに移行したことを示す情報であり、前記電源電圧が前記第２の電圧値より低い第３の電圧値以下に低下したとき、第３の検出信号を生成する第３の電圧検出回路を更に有し、前記中央処理回路は、前記第３の検出信号が生成されるとリセットされ、前記第１の検出信号を入力し、前記中央処理回路に対して前記割り込み処理動作を行わせる割り込み信号を出力する割り込み制御回路と、前記第２の検出信号を入力し、前記中央処理回路に対して前記割り込み処理動作に関わらず、前記低消費電力モードに移行させる低消費電力モード信号を出力する低消費電力モード制御回路と、前記第３の検出信号を入力し、前記中央処理回路に対してリセットをかけるリセット信号を出力するリセット回路と、を更に有するマイクロコントローラである。
本発明の他の態様は、電源電圧が第１の電圧値以下に低下したとき、第１の検出信号を生成する第１の電圧検出回路と、前記電源電圧が前記第１の電圧値より低い第２の電圧値以下に低下したとき、第２の検出信号を生成する第２の電圧検出回路と、第１の記憶回路と、中央処理回路と、を有し、前記中央処理回路は、前記第２の電圧以上で通常動作する通常動作モードと、前記第２の電圧以下で動作し前記通常動作モードより低消費電力で動作する低消費電力モードとを切り替える機能を有し、前記第１の検出信号が生成されると、前記通常動作モードから前記低消費電力モードに移行するための割り込み処理動作を行い、前記割り込み処理動作の終了より前に、前記第２の検出信号が生成されると、前記割り込み処理動作に関わらず、前記低消費電力モードに移行し、前記第１の記憶回路は、前記中央処理回路が、前記割り込み処理動作完了前に、前記低消費電力モードに移行したことを示す情報を記憶し、第２の記憶回路を更に有し、前記割り込み処理動作は、前記中央処理回路が、前記低消費電力モードから通常動作モードに復帰するために必要な情報を、前記第２の記憶回路へバックアップする処理動作であって、前記第１の記憶回路の記憶する情報は、前記バックアップ処理動作の完了前に前記低消費電力モードに移行したことを示す情報であり、前記電源電圧が前記第２の電圧値より低い第３の電圧値以下に低下したとき、第３の検出信号を生成する第３の電圧検出回路を更に有し、前記中央処理回路は、前記第３の検出信号が生成されるとリセットされ、前記第１の記憶回路は、前記第１の電圧検出回路が前記第１の検出信号を生成したことを示す第１の情報を記憶し、前記第２の電圧検出回路が前記第２の検出信号を生成したことを示す第２の情報を記憶し、前記中央処理回路が前記割り込み処理動作を完了させたことを示す第３の情報を記憶し、前記第３の電圧検出回路が前記第３の検出信号を生成したことを示す第４の情報を記憶するマイクロコントローラである。