(57)【要約】  マイクロコンピュータのＣＰＵが、外部のノイズ、電源電圧の不安定、他の原因でそのプログラムの実行が不能となり、いわゆる暴走などの致命的エラーを起こしても、極めて短時間でなるべくシステム全体の初期化をせずに、元の状態に復帰することを目的とする。  通常のソフトウェア処理の実行中に、割込み信号とリセット信号を任意のタイミングで出力し、マイクロコンピュータのＣＰＵが暴走状態になったと判定したときは、復帰情報としてＲＡＭに保存したデータを読み出して、ＣＰＵを暴走前の状態に復帰させる。  これにより実行中のソフトウェアは、短時間で致命的エラーから復帰するため、あたかも致命的エラーが発生していないかのようにソフトウェア処理を継続することができる。
2011046217.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵとＣＰＵバスを介して接続されているＲＡＭと、
割込み処理の実行開始を要求するための割込み要求信号を前記ＣＰＵに出力する割込み要求信号出力手段と、
前記割込み要求信号出力手段が前記割込み要求信号を出力した後、ＣＰＵリセット処理の開始を要求するためのＣＰＵリセット信号を前記ＣＰＵに出力するＣＰＵリセット信号出力手段と
を備え、
前記ＣＰＵは、前記割込み要求信号を受信すると、当該ＣＰＵ上で実行されている応用プログラムの処理を中断するとともに、当該ＣＰＵのＣＰＵレジスタの情報を復帰情報として前記ＲＡＭに保存し、さらに、前記ＣＰＵリセット信号を受信すると、当該ＣＰＵは、リセットされるとともに、当該ＲＡＭに保存されている当該復帰情報を当該ＣＰＵレジスタにコピーすることを特徴とするマイクロコンピュータ。
【請求項２】
前記ＣＰＵリセット信号及び前記割込み要求信号を周期的に発生させるタイマカウンタ回路をさらに備えることを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項３】
前記タイマカウンタ回路は、付加タイマを備え、
前記ＣＰＵは前記ＣＰＵレジスタの情報が正常であるか判定し、前記ＣＰＵレジスタの情報が正常であると判定された場合のみ、前記付加タイマは、前記ＣＰＵリセット信号が前記ＣＰＵへ供給される間作動し、前記ＣＰＵリセット処理の実行を禁止することを特徴とする請求項２に記載のマイクロコンピュータ。
【請求項４】
マイクロコンピュータ全体をリセットするためのシステムリセット信号源と、
論理和回路と
をさらに備え、
前記ＣＰＵ信号出力手段及び前記システムリセット信号源は、前記論理和回路の入力側に接続されており、前記ＣＰＵは、論理和回路の出力側に接続されていることを特徴とする請求項１乃至３のいずれか一項に記載のマイクロコンピュータ。
【請求項５】
割込み処理の実行開始を要求するための割込み要求信号を、タイマカウンタ回路からＣＰＵに出力するステップと、
前記ＣＰＵによって、前記割込み要求信号を受信し、当該ＣＰＵ上で実行されている応用プログラムの処理を中断するステップと、
前記ＣＰＵによって、当該ＣＰＵのＣＰＵレジスタの情報を復帰情報としてＲＡＭに保存するステップと、
前記割込み要求信号が出力された後、ＣＰＵリセット処理の開始を要求するためのＣＰＵリセット信号を、前記タイマカウンタ回路から前記ＣＰＵに出力するステップと、
前記ＣＰＵにおいて、前記ＣＰＵリセット信号を受信し、当該ＣＰＵをリセットするステップと、
前記ＣＰＵによって、前記ＲＡＭに保存されている前記復帰情報を前記ＣＰＵレジスタにコピーするステップと、
を含むマイクロコンピュータの動作方法。
【請求項６】
前記ＣＰＵリセット信号及び前記割込み要求信号を、前記タイマカウンタ回路によって周期的に発生させることを特徴とする請求項５に記載のマイクロコンピュータの動作方法。
【請求項７】
前記ＣＰＵによって、前記ＣＰＵレジスタの情報が正常であるか判定し、前記ＣＰＵレジスタの情報が正常であると判定された場合のみ、前記ＣＰＵリセット信号が前記ＣＰＵへ供給される間、前記ＣＰＵをリセットするステップの実行を禁止するステップをさらに含むことを特徴とする請求項６に記載のマイクロコンピュータの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータの動作方法に関する。より詳細には、マイクロコンピュータの中央処理装置（ＣＰＵ）において、いわゆる暴走などのエラーが発生した場合に、ＣＰＵを自動的に復帰させる回路とその使用方法に関する。
【背景技術】
【０００２】
マイクロコンピュータのＣＰＵにおいて、外部の電気的なノイズ、静電気、電源電圧の不安定、及び、その他の原因で致命的なエラーが発生する。これにより、そのＣＰＵがプログラムを実行することができないことがある。そのような致命的なエラーの状態の例としては、いわゆるＣＰＵの暴走などが挙げられる。このマイクロコンピュータのＣＰＵの致命的なエラーへの対策としては、ウオッチドッグとして知られる方法が一般的である。この方法は、ソフトウェアの処理の繰り返し（ループ）時間より十分に長いタイマを設け、ソフトウェア処理のループにおいて、このタイマをリセットする。ＣＰＵに致命的なエラーが発生した場合、ソフトウェア処理が正常に動作しないため、タイマはリセットされずに終了し、タイマの終了をトリガとして、マイクロコンピュータ全体にリセットが与えられる。一方、ＣＰＵが正常に動作している場合（致命的なエラーが発生していない場合）、タイマは終了する前にリセットされるので、マイクロコンピュータはリセットされない。【０００３】
しかし、この方法では、ＣＰＵの致命的なエラー状態が、タイマの開始から終了までの長い間継続する可能性がある。したがって、ＣＰＵの致命的なエラー発生からタイマが終了するまでの時間がマイクロコンピュータの使用に悪影響を及ぼすような環境や、その時間中のマイクロコンピュータの誤動作によって使用者に危険が及ぶような環境ではウオッチドッグは必ずしも有効でないが他に手段がなく採用されている。【０００４】
さらに、ウオッチドッグを用いたＣＰＵの致命的なエラーの対策では、ＣＰＵにおいて致命的なエラーが発生した後、そのＣＰＵの状態を、そのようなエラーが発生する直前の状態に戻すことは困難である。その理由は、ＣＰＵの致命的なエラーが検出される迄に時間がかかっているため、ＣＰＵの致命的なエラーが検出された時点のＣＰＵレジスタの情報などの状態が、致命的なエラーが発生した直前の状態とは異なるからである。【０００５】
従来、マイクロコンピュータは、ＣＰＵの致命的なエラーを検出すると、ＣＰＵの致命的なエラーを検出した時点のＣＰＵレジスタの情報などを破棄して、マイクロコンピュータ全体を初期化していた。したがって、従来、ＣＰＵを致命的なエラーから復帰させるためには、そのＣＰＵの致命的なエラーを検出するための時間に加えて、マイクロコンピュータ全体を初期化するための時間が必要となっていた。そして、マイクロコンピュータを、ＣＰＵで致命的なエラーが発生する前の状態に戻すために、そのエラーが発生する前の実行中の処理（応用プログラム（アプリケーションプログラム）の処理）を、ＣＰＵの初期化後に再現しなければならない。実行中であった処理を再現することは容易ではなく、さらに、その再現を実行するための処理時間が必要となる。したがって、マイクロコンピュータを使用している環境によって、ＣＰＵの致命的なエラーからマイクロコンピュータを復帰させることは大きな問題になる可能性がある。例えば、ＣＰＵの致命的なエラーから初期化迄の時間に機械が停止できずに事故が起こり得る、また、金銭の勘定が失われる等の深刻な事態も起こり得る。【０００６】
一般的に、マイクロコンピュータを用いたワンチップマイコンには、初期化のための信号は１つしか用いられていない。このため、初期化はマイクロコンピュータ全体に対して行われる。よって、マイクロコンピュータの初期化は、全体を初期化するのに見合う重大なエラーの場合に行うことが想定されている。したがって、ＣＰＵの致命的なエラーからの復帰に時間がかかることや、その致命的なエラーが発生するまでの情報などが失われることは、従来、止むを得ないと考えられていた。【０００７】
さらに、別の方法としては、特許文献１に記載されている様に、周期的な割込みの代わりに、リセットを周期的にＣＰＵのみに与える方法もある。この方法を用いた場合、ＣＰＵ上で実行される応用プログラムの実行開始から終了までの時間は、リセットの周期内でなければならない。なぜならば、応用プログラムの実行中にＣＰＵがリセットされた場合、プログラムカウンタやスタックなどのＣＰＵレジスタの情報もリセットされ、応用プログラム中の命令についてのアドレスが消去されるからである。したがって、ＣＰＵのみを周期的にリセットする場合、応用プログラムは、処理開始から終了までの時間がＣＰＵのリセットの周期の間隔内に収まるような極めて小さなサイズとする必要が有る。そのため、一般的なプログラムに比べて、必要となる応用プログラムのサイズは小さくなる。これにより、その応用プログラムの数は膨大な数となる。また、応用プログラムの作成者は、応用プログラムの処理内容だけではなく、リセットの周期を意識して応用プログラムの作成を行わなくてはならないという問題がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平６−７１０２４号公報
【特許文献２】特開平９−３１９６０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、マイクロコンピュータのＣＰＵで致命的なエラーが発生した場合、マイクロコンピュータ全体の初期化又はリセットを行うことなく、ＣＰＵのみをリセットすることによって、マイクロコンピュータのＣＰＵを致命的なエラー状態から極めて短時間に復帰させることを目的とする。また、本発明は、マイクロコンピュータ上で実行中の応用プログラムに影響を与えることなく、ＣＰＵをリセットすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明によるマイクロコンピュータは、ＣＰＵと、そのＣＰＵとＣＰＵバスを介して接続されているＲＡＭと、割込み処理の実行開始を要求するための割込み要求信号をＣＰＵに出力する割込み要求信号出力手段と、その割込み要求信号出力手段が割込み要求信号を出力した後、ＣＰＵリセット処理の開始を要求するためのＣＰＵリセット信号をＣＰＵに出力するＣＰＵリセット信号出力手段とを備え、ＣＰＵは、割込み要求信号を受信すると、そのＣＰＵ上で実行されている応用プログラムの処理を中断するとともに、ＣＰＵレジスタの情報を復帰情報としてＲＡＭに保存し、さらに、ＣＰＵリセット信号を受信すると、ＣＰＵは、リセットされるとともに、ＲＡＭに保存されている復帰情報をＣＰＵレジスタにコピーすることができる。【００１１】
本発明によるマイクロコンピュータは、ＣＰＵリセット信号及び割込み要求信号を周期的に発生させるタイマカウンタ回路をさらに備えることができる。【００１２】
本発明によるマイクロコンピュータにおいて、タイマカウンタ回路は、付加タイマを備え、ＣＰＵはＣＰＵレジスタの情報が正常であるか判定し、そのＣＰＵレジスタの情報が正常であると判定された場合のみ、付加タイマは、ＣＰＵリセット信号がＣＰＵへ供給される間作動し、ＣＰＵリセット処理の実行を禁止するができる。【００１３】
本発明によるマイクロコンピュータは、マイクロコンピュータ全体をリセットするためのシステムリセット信号源と、論理和回路とをさらに備え、ＣＰＵ信号出力手段及びシステムリセット信号源は、論理和回路の入力側に接続されており、ＣＰＵは、論理和回路の出力側に接続されているよう構成することができる。【００１４】
本発明によるマイクロコンピュータの動作方法は、割込み処理の実行開始を要求するための割込み要求信号をタイマカウンタ回路からＣＰＵに出力するステップと、そのＣＰＵによって、割込み要求信号を受信し、ＣＰＵ上で実行されている応用プログラムの処理を中断するステップと、ＣＰＵによって、そのＣＰＵレジスタの情報を復帰情報としてＲＡＭに保存するステップと、割込み要求信号が出力された後、ＣＰＵリセット処理の開始を要求するためのＣＰＵリセット信号をＣＰＵに出力するステップと、ＣＰＵにおいて、ＣＰＵリセット信号を受信し、ＣＰＵをリセットするステップと、そのＣＰＵによって、ＲＡＭに保存されている復帰情報をＣＰＵレジスタにコピーするステップとを含むようにすることができる。【００１５】
本発明によるマイクロコンピュータの動作方法は、ＣＰＵリセット信号及び割込み要求信号を、タイマカウンタ回路によって周期的に発生させることができる。【００１６】
本発明によるマイクロコンピュータの動作方法は、ＣＰＵによって、ＣＰＵレジスタの情報が正常であるか判定し、ＣＰＵレジスタの情報が正常であると判定された場合のみ、ＣＰＵリセット信号がＣＰＵへ供給される間、ＣＰＵをリセットするステップの実行を禁止するステップをさらに含むようにすることができる。
【発明の効果】
【００１７】
マイクロコンピュータのＣＰＵで致命的なエラーが発生しているのを早期に検出し、致命的なエラーからの復帰を可能とすることによって、マイクロコンピュータを用いた応用装置が異常な動作、時には危険であったりする誤動作を大幅に低減することができる。【００１８】
特に、自動車、飛行機、船舶、産業用ロボットなどの分野で用いられる機械系を制御する機器において、それら機器の誤動作は大事故に繋がる恐れがある（例えば、自動車のブレーキ制御やステアリング制御など）。本発明によるマイクロコンピュータのＣＰＵの致命的なエラーからの復帰に必要な時間は、機械系を制御する機器における誤動作の検出及びその誤動作からの復帰に必要な時間と比較してはるかに短い。よって、マイクロコンピュータのＣＰＵの致命的なエラーに起因するこれら機器の誤動作の検出及びその誤動作から復帰させるための処理を、機器ではなくマイクロコンピュータで行うことは有用である。【００１９】
また、上記分野において、電気的なノイズなどの致命的なエラーを生じさせる原因は他の分野の機器と比べてより多く発生する。したがって、機械系を制御する機器に本発明を用いることによって、電気的なノイズなどのための従前の多くの対策を大幅に軽減でき、さらに、従前より強固な対策が行えるため、コスト低下と信頼性の向上を併せて図ることができる。また、マイクロコンピュータのＣＰＵにおいて致命的なエラーが継続的に発生している場合、継続的なＣＰＵの致命的なエラーを検出し、その検出結果に基づいて、機器の誤動作を警告するための情報を入出力インタフェースを介して提供することもできる。【００２０】
更に、本発明は、マイクロコンピュータのＣＰＵで致命的なエラーが発生した場合、マイクロコンピュータ全体をリセットするのではなく、ＣＰＵのみをリセットすることから、致命的なエラーからの復帰を極めて短い時間で行うことができる。また、本発明は、ＣＰＵで致命的なエラーが発生した時に実行されていた応用プログラムを中断した後、ＣＰＵをリセットし、そして、その致命的なエラーが発生する前の時点から応用プログラムの実行を再開することができる。【００２１】
本発明の活用が期待される分野における一例を挙げれば、エレベーターが動作中に、落雷、電源のノイズ、設計上の不備によるノイズによって、エレベーターの制御を行うマイクロコンピュータのＣＰＵに致命的なエラーが発生し、そして、そのＣＰＵによってエレベーターが誤動作した場合であっても、エレベーターのマイクロコンピュータに本発明のマイクロコンピュータを採用することによって、エレベーターを安定した状態の動作に極めて短い時間で復帰させることができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施例に係るマイクロコンピュータの全体を示したブロック図である。
【図２】図１のクロック発生回路、タイマカウンタ回路、及び、ＣＰＵをより詳細に示したブロック図である。
【図３】第１の実施例によるマイクロコンピュータの動作を示したフロー図である。
【図４】第２の実施例によるマイクロコンピュータの動作を示したフロー図である。
【図５】割込み処理の動作を示したフロー図である。
【図６】ＣＰＵリセット処理の動作を示したフロー図である。
【図７】ＣＰＵが正常に動作している場合の第１の実施例についてのタイムチャートである。
【図８】ＣＰＵにおいて致命的なエラーが発生した場合の第１の実施例についてのタイムチャートである。
【図９】ＣＰＵにおいて致命的なエラーが発生した場合の第２の実施例についてのタイムチャートである。
【発明を実施するための形態】
【００２３】
図１は本発明の一実施例に係るマイクロコンピュータの全体を示したブロック図である。ここで、マイクロコンピュータ１００は、中央処理装置（ＣＰＵ）１０１、主記憶装置（ＲＡＭ）１０５、ＲＯＭ１１０、通信用回路１１５、ユニバーサルカウンタタイマ１２０、入出力ポート１２５、論理和回路（ＯＲ回路）１３０、システムリセット信号源１３５、クロック発生回路１４０、タイマカウンタ回路１４５、付加タイマ１５０、ウオッチドッグ回路１５５、違法命令検出回路及び正域外アクセス検出回路１６０、システムリセット用バス１６５、ＣＰＵバス１７０を備える。
【００２４】
システムリセット信号源１３５は、電源が投入されたときなどに、システムリセット用信号を発生させ、システムリセット用バス１６５を介してシステムリセット用信号を送信する。システムリセット用信号は、マイクロコンピュータ全体をリセットさせるための信号である。システムリセット用信号は、ＣＰＵ１０１のみではなく、例えば、入出力ポート１２５、通信回路１１５、ユニバーサルカウンタタイマ１２０などをリセットするためにも用いられる。
【００２５】
ウオッチドッグ回路１５５、及び、違法命令検出回路及び正域外アクセス検出回路１６０は、それぞれ、ＣＰＵ１０１が正常に動作しているか否かを判定する。ＣＰＵ１０１が正常に動作していないと判定された場合、ウオッチドッグ回路１５５、又は、違法命令検出回路及び正域外アクセス検出回路１６０は、システムリセット用バス１６５を介してＣＰＵ１０１や通信回路１１５などにシステムリセット用信号を送信し、マイクロコンピュータ１００全体をリセットする。
【００２６】
クロック発生回路１４０は、システムのクロック信号を発生させる回路である。タイマカウンタ回路１４５は第１の処理信号（割込み要求信号）および第２の処理信号（ＣＰＵリセット信号）を発生させる回路である。論理和回路１３０は、タイマカウンタ回路１４５からのＣＰＵリセット信号がシステムリセット用バス１６５へ送信されるのを防止して、ＣＰＵリセット信号をＣＰＵ１０１のみに供給するための回路である。論理和回路には、ＣＰＵリセット信号及びシステムリセット用信号が入力として供給される。したがって、ＣＰＵリセット信号は、ＣＰＵ１０１以外の通信用回路１１５やユニバーサルカウンタタイマ１２０などへは供給されない。ＣＰＵ１０１は、マイクロコンピュータ１００のための制御及び演算を実行する回路である。
【００２７】
図２は、図１のクロック発生回路１４０、タイマカウンタ回路１４５、及び、ＣＰＵ１０１をより詳細に示したブロック図である。ＣＰＵ１０１は、ＣＰＵレジスタ２３５を備える。クロック発生回路１４０は、クロック発生器２１０、分周器２１５からなる。タイマカウンタ回路１４５は、カウンタ２２０、付加タイマ２２５、比較器２３０、レジスタ２５５、ＣＰＵリセット信号用フリップフロップ回路２４０、割込み要求信号用フリップフロップ回路２４５、システムリセット用フリップフロップ回路２５０からなる。
【００２８】
ＣＰＵ１０１は、ＣＰＵバス１７０を介して、レジスタ２５５及びシステムリセット用フリップフロップ回路２５０に接続されている。クロック発生器２１０はシステムのクロック信号を発生させる回路である。
【００２９】
クロック発生器２１０が発生させた第１のクロック信号は、ＣＰＵ１０１と分周器２１５に供給される。分周器２１５は、第１のクロック信号の周波数を、適当な周波数である第２のクロック信号に変更する。分周器２１５は、第２のクロック信号をカウンタ２２０に供給する。
【００３０】
カウンタ２２０は、第２のクロック信号をカウントする。第２のクロック信号は、第２のクロック信号のカウント値がカウント上限値に到達するまでカウントされる。ここで、第２のクロック信号のカウント値は、カウンタ２２０が第２のクロック信号をカウントした値である。第２のクロック信号のカウント値がカウント上限値に到達した場合、カウンタ２２０はＣＰＵリセット信号を発生させ、ＣＰＵリセット信号用フリップフロップ回路２４０をセットし、ＣＰＵをリセットするのに充分な数クロック後に、フリップフロップ回路２４０をリセットする。さらに、カウンタ２２０は、第２のクロック信号のカウント値がカウント上限値に到達した後、第２のクロック信号のカウント値をリセットし、カウントを再開する。他の実施例として、上記カウント上限値を、ＣＰＵ１０１が初期化処理などにおいて設定するよう構成することができる。なお、電気的なノイズなどの影響によって第２のクロック信号のカウント値が変更された場合であっても、フリーランのカウンタであるカウンタ２２０は、第２のクロック信号のカウントを停止することはない。
【００３１】
他の実施例として、クロック発生器２１０は、分周器２１５を用いることなく、第１のクロック信号をカウンタ２２０に供給することができる。この場合、カウンタ２２０は、クロック信号として第２のクロック信号の代わりに第１のクロック信号を用いる。
【００３２】
ＣＰＵリセット信号用フリップフロップ回路２４０は、カウンタ２２０から受信したＣＰＵリセット信号を短いパルス幅であるパルス信号に波形整形し、ＣＰＵ１０１へ供給する。他の実施例として、カウンタ２２０がＣＰＵリセット信号を短いパルス幅であるパルス信号として発生させることができる場合、カウンタ２２０は、ＣＰＵリセット信号用フリップフロップ回路２４０を介することなく、ＣＰＵリセット信号をＣＰＵ１０１へ直接供給することができる。
【００３３】
ＣＰＵ１０１には、電源投入時などにシステムリセット用バス１６５を介してシステムリセット用信号が供給される。ＣＰＵ１０１は、システムリセット用信号を受信すると、システムリセット用フリップフロップ回路２５０をリセットする。他の実施例として、電源投入時などに、システムリセット信号源１３５が、システムリセット用バスを介してシステムリセット用フリップフロップ回路２５０をリセットすることもできる。他の実施例として、ＣＰＵ１０１は、システムリセット用信号をタイマカウンタ回路１４５に供給し、タイマカウンタ回路１４５内の要素の全部又は一部をリセットすることもできる。
【００３４】
その後、ＣＰＵ１０１は、初期化処理において、システムリセット用フリップフロップ回路２５０をセットする。カウンタ２２０は、システムリセット用フリップフロップ回路２５０がリセットである間、第２のクロック信号をカウントしない。初期化処理において、システムリセット用フリップフロップ回路２５０がセットされると、カウンタ２２０は第２のクロック信号のカウントを開始する。
【００３５】
初期化処理において、ＣＰＵ１０１は、所定の数値である比較対象値をＣＰＵバス１７０を介してレジスタ２５５に供給する。レジスタ２５５は、その比較対象値を保存する。
【００３６】
比較器２３０は、第２のクロック信号のカウント値とレジスタ２５５が保存している比較対象値とを比較する。第２のクロック信号のカウント値と比較対象値とが一致した場合、比較器２３０は、割込み要求信号を発生させ、割込み要求信号用フリップフロップ回路２４５に供給する。
【００３７】
割込み要求信号用フリップフロップ回路２４５は、比較器２３０から受信した割込み要求信号を短いパルス幅であるパルス信号に調整し、ＣＰＵ１０１へ供給する。他の実施例として、比較器２３０が割込み要求信号を短いパルス幅であるパルス信号として発生させることができる場合、比較器２３０は、割込み要求信号用フリップフロップ回路２４５を介することなく、割込み要求信号をＣＰＵ１０１へ直接供給することができる。
【００３８】
他の実施例として、カウンタ２２０は、付加タイマ２２５を備えることができる。付加タイマ２２５は、予め設定された時間だけタイマを作動させる。付加タイマ２２５は、タイマが作動している間、カウンタ２２０を制御することによって、カウンタ２２０がＣＰＵリセット信号用フリップフロップ回路２４０へＣＰＵリセット信号を供給することを禁止することができる。他の実施例として、付加タイマ２２５は、タイマが作動している間、ＣＰＵリセット信号用フリップフロップ回路２４０をリセットし、ＣＰＵリセット信号用フリップフロップ回路２４０がＣＰＵリセット信号をＣＰＵ１０１へ供給することを禁止する。
【実施例１】
【００３９】
以下、図２の回路の動作を説明する。
まず電源が投入された時に、システムリセット信号源１３５は、タイマカウンタ回路１４５内のカウンタ２２０、及び、全てのフリップフロップ回路２４０、２４５、及び、２５０をリセットする。他の実施例として、システムリセット用フリップフロップ回路２５０はＣＰＵ１０１によってリセットされるようにしてもよい。電源が投入された後、ＣＰＵ１０１は初期化処理を行う。初期化処理において、ＣＰＵ１０１は、まずレジスタ２５５に適当な比較対象値を設定する。【００４０】
比較対象値は、比較器２３０が割込み要求信号を発生させるときに用いる値である。比較器２３０は、第２のクロック信号のカウント値と比較対象値とを比較し、一致した場合に割込み要求信号を発生させる。そして、ＣＰＵ１０１は割込み要求信号を受信し、割込み処理を実行する。したがって、割込み処理は、第２のクロック信号のカウントが開始された後、第２のクロック信号のカウント値が比較対象値に達するまでカウントされる間の時間（比較対象時間）が経過するときに実行される。したがって、所定の時間間隔ごとに、割込み要求信号が発生する。これにより、ＣＰＵ１０１は、所定の時間間隔で割込み要求信号を受信し、割込み要求処理を実行する。ここで、比較対象時間は、第２のクロック信号のカウント値が比較対象値に達するまでカウントされる間の時間であって、（第２のクロック信号の周期）×（比較対象値）によって得られる。【００４１】
ここで、割込み処理とは、処理の優先順位が少なくとも応用プログラムより高い処理である。そして、割込み処理がトリガされると、ＣＰＵ１０１は、応用プログラムの処理を中断するとともに、割込み処理を開始する。【００４２】
システムリセット用フリップフロップ回路２５０は、マイクロコンピュータ１００の電源投入時などにシステムリセット用信号が発生された場合にのみ、ＣＰＵ１０１又はシステムリセット信号源１３５によってリセットされる。その後、初期化処理において、ＣＰＵ１０１はシステムリセット用フリップフロップ回路２５０をセットする。カウンタ２２０は、システムリセット用フリップフロップ回路２５０がセットされた後、第２のクロック信号のカウントを開始する。ソフトウェアからリセットする手段を設けない理由は、ＣＰＵで致命的なエラーが発生した場合にシステムリセット用フリップフロップ回路２５０がリセットされないようにするためである。ＣＰＵで致命的なエラーが発生した時、システムリセット用フリップフロップ回路２５０がリセットされないよう動作することが保証されている場合、ソフトウェアがシステムリセット用フリップフロップ回路２５０をリセットする手段を設けてもよい。【００４３】
比較器２３０は、第２のクロック信号のカウント値とレジスタ２５５が保存している比較対象値とを比較する。つまり、第２のクロック信号のカウントが開始又は再開されてから比較対象時間が経過していないか確認する。第２のクロック信号のカウント値と比較対象値とが一致した場合、比較器２３０は、割込み要求信号を発生させ、割込み要求信号用フリップフロップ回路２４５をセットし、数クロック後にリセットする。割込み要求信号用フリップフロップ回路２４５は、割込み要求信号を短いパルス幅であるパルス信号に波形整形する。パルス信号に整形された割込み要求信号は、ＣＰＵ１０１に供給される。【００４４】
他の実施例として、比較器２３０が割込み要求信号を短いパルス幅であるパルス信号として発生させることができる場合、比較器２３０は、割込み要求信号用フリップフロップ回路２４５を介することなくＣＰＵ１０１に割込み要求信号を供給することができる。ＣＰＵ１０１は、割込み要求信号を受信すると、割込み処理を実行する。【００４５】
カウンタ２２０は、第２のクロック信号のカウント値がカウント上限値に達したか否かを確認する。つまり、カウンタ２２０は、第２のクロック信号のカウントが開始又は再開されてから、カウンタ上限時間が経過していないか確認する。ここで、カウンタ上限時間は、第２のクロック信号のカウント値がカウント上限値に達するまでカウントされる間の時間であって、（第２のクロック信号の周期）×（カウント上限値）によって得られる。【００４６】
カウンタ２２０は、第２のクロック信号のカウント値がカウント上限値に達したことを確認すると、ＣＰＵリセット信号を発生させ、ＣＰＵリセット信号用フリップフロップ回路２４０をセットする。ＣＰＵリセット信号用フリップフロップ回路２４０は、ＣＰＵリセット信号を短いパルス幅であるパルス信号に波形整形する。パルス信号に整形されたＣＰＵリセット信号は、ＣＰＵ１０１に供給される。【００４７】
他の実施例として、カウンタ２２０がＣＰＵリセット信号を短いパルス幅であるパルス信号として発生させることができる場合、カウンタ２２０は、ＣＰＵリセット信号用フリップフロップ回路２４０を介することなくＣＰＵ１０１にＣＰＵリセット信号を供給することができる。【００４８】
ＣＰＵ１０１は、ＣＰＵリセット信号を受信すると、ＣＰＵリセット処理を実行する。ＣＰＵリセット信号用フリップフロップ回路２４０は、セットされた後すぐに、カウンタ２２０などによってリセットされる。【００４９】
割込み要求信号を受信したことによって実行される割込み処理の実行開始から終了までの時間（割込み処理の実行時間）について説明する。ここで、比較対象時間はカウンタ上限時間より短い時間である。そして、割込み処理はカウンタ２２０が第２のクロック信号のカウントを開始又は再開する時であるカウント開始時から比較対象時間に到達した時に実行される。ＣＰＵリセット処理は、そのカウント開始時又は再開時からカウンタ上限時間に到達した時に実行される。そして、割込み処理は、ＣＰＵリセット処理の実行前に終了している必要がある。その理由については、後述する。したがって、カウンタ上限時間から比較対象時間を引いた時間は、割込み処理の実行時間より長い時間でなければならない。具体的には、割込み処理の実行に要する時間が５０マイクロ秒である場合、（カウンタ上限時間）−（比較対象時間）は、５０マイクロ秒より長い必要がある。したがって、カウンタ上限時間が５ミリ秒である場合、比較対象時間は、４９５０マイクロ秒より短くなければならない。割込み処理の実行時間は、カウンタ２２０の上限時間の２〜５％程度の時間に設定されることが好ましい。
【実施例２】
【００５０】
タイマカウンタ回路１４５は、さらに、付加タイマ２２５を備えることができる。付加タイマ２２５は、割込み処理においてＣＰＵ１０１などによって起動が開始される。付加タイマ２２５は、ＣＰＵリセット信号が発生する時に（カウント開始又は再開時からカウンタ上限時間に到達した時に）、ＣＰＵリセット信号の発生を禁止する。付加タイマ２２５は、ＣＰＵリセット信号用フリップフロップ回路２４０がセットされるのを禁止する信号であるＣＰＵリセット禁止信号をこのフリップフロップ回路２４０に供給する。他の実施例として、付加タイマ２２５は、カウンタ２２０を制御することによって、カウンタ２２０によるＣＰＵリセット信号の発生を禁止することもできる。第２の実施例によるマイクロコンピュータ１００は、ＣＰＵリセット処理を定期的に実行しないため、第１の実施例によるマイクロコンピュータ１００と比較してＣＰＵ１０１などへの負担を軽減することができる。【００５１】
図３は、第１の実施例によるマイクロコンピュータ１００の動作を示したフロー図である。最初に、マイクロコンピュータ１００に電源が投入される（ステップ３０５）。そして、初期化処理において、マイクロコンピュータ１００の初期化が行われる（ステップ３１０）。初期化処理の終了後、カウンタ２２０は、供給されるクロック信号をカウントする（ステップ３１５）。【００５２】
比較器２３０は、クロック信号のカウント値が比較対象値に達したか否かを判定する（ステップ３２０）。ここで、クロック信号のカウント値は、カウンタ２２０がクロック信号をカウントした値である。クロック信号のカウント値が比較対象値に達していない場合、比較器２３０は、クロック信号のカウント値が比較対象値になるまで待機する。クロック信号のカウント値が比較対象値に達した場合、比較器２３０は、割込み要求信号を発生させ、ＣＰＵ１０１へ供給する（ステップ３２５）。【００５３】
ＣＰＵ１０１は、割込み要求信号を受信すると、実行中の応用プログラムの処理を中断するとともに、割込み処理を実行する（ステップ３３０）。割込み処理については後述する。【００５４】
割込み処理が終了すると、カウンタ２２０は、クロック信号のカウント値がカウント上限値に達するまで待機する。（ステップ３３５）。クロック信号のカウント値がカウント上限値に達した後、カウンタ２２０は、ＣＰＵリセット信号を発生させ、ＣＰＵ１０１へ供給する（ステップ３４０）。さらに、カウンタ２２０は、クロック信号のカウント値をリセットするとともに、クロック信号のカウントを再び開始する。【００５５】
ＣＰＵ１０１は、ＣＰＵリセット信号を受信すると、ＣＰＵリセット処理を実行する（ステップ３４５）。ＣＰＵリセット処理については後述する。【００５６】
図４は、第２の実施例によるマイクロコンピュータ１００の動作を示したフロー図である。図４のフロー図は、一部が図３のフロー図と同じである。図４のステップ４０５、４１０、４１５、４２０、４２５、４３０、４５０、４５５、及び、４６０は、それぞれ、図３のステップ３０５、３１０、３１５、３２０、３２５、３３０、３３５、３４０、及び、３４５に相当する。【００５７】
図４のフロー図は、このフロー図のステップ４４５、４５０、及び、４５５を図３のフロー図に追加したものに相当する。以下、図３と図４との違いについて説明する。ＣＰＵ１０１は、ＣＰＵレジスタ２３５の情報を取得する（ステップ４３５）。ＣＰＵ１０１は、取得した情報が正常か否かを判定する（ステップ４４０）。ＣＰＵレジスタ２３５の情報が正常であるか否かは、ＣＰＵレジスタ２３５の値が正常な範囲に収まっているか、適切な値になっているかなどによって判定することができる。【００５８】
取得した情報が正常ではないと判断された場合、図３におけるフロー図のステップ３３５、３４０、及び３４５にそれぞれ相当するステップ４５０、４５５、及び、４６０が実行される。取得した情報が正常であると判断された場合、付加タイマ２２５がＣＰＵリセット信号の発生を禁止する（ステップ４４５）。なお、ＣＰＵ１０１が、付加タイマ２２５を起動するようにすることもできる。したがって、ＣＰＵ１０１に致命的なエラーが発生した場合、付加タイマ２２５が起動されないため、付加タイマ２２５はＣＰＵリセット信号の発生を禁止することができない。これにより、ＣＰＵリセット信号がＣＰＵに供給され、ＣＰＵリセット処理が実行される。付加タイマ２２５が起動されない場合の例としては、ＣＰＵ１０１に致命的なエラーが発生しているため、ＣＰＵ１０１が付加タイマ２２５を起動する処理である割込み処理を受け付けないときなどがある。【００５９】
図５は、割込み処理の動作を示したフロー図である。割込み処理は、ＣＰＵ１０１が割込み要求信号を受信することによって実行される（図３のステップ３２５及び３３０又は図４のステップ４２５及び４３０参照）。最初に、ＣＰＵ１０１は、割込み開始時点（応用プログラム中断時点）のＣＰＵレジスタ２３５の情報をＲＡＭ１０５に保存する（ステップ５０５）。そして、ＣＰＵ１０１は、この割込み処理が正常な動作であるか否かを判定する（ステップ５１０）。【００６０】
正常な動作であるか否かは、ＣＰＵ１０１が、ＲＡＭ１０５に保存されている特定の情報が正しいことを確認することによって判定される。例えば、初期化処理において、ＣＰＵ１０１は、一又は二以上の所定の値を予めＲＡＭ１０５に保存し、そして、割込み処理において、その値が変更されていないことを確認する。ここで、それら所定の値は、ＣＰＵ１０１が正常に動作している場合、初期化処理以外において変更されないが、ＣＰＵ１０１で致命的なエラーが発生した場合、例えば、ＣＰＵ１０１の誤動作により、それら所定の値が変更される可能性がある。所定の値が変更された場合、致命的なエラーが生じたこととなる。【００６１】
また、前回の割込み処理おいて、ＣＰＵ１０１が、その割込み処理開始時点のＣＰＵレジスタ２３５の情報を復帰情報としてＲＡＭ１０５に保存しており、そして、現在実行されている割込み処理において、ＣＰＵ１０１が、ＲＡＭ１０５に保存されている現在の割込み処理開始時点のＣＰＵレジスタ２３５の情報と、ＲＡＭ１０５に保存されている前回の割込み処理時点の復帰情報と、を比較し、所定のデータが正常であるか否かを判定する。【００６２】
さらに、ＣＰＵ１０１が、所定のフラグがオンになっているか否かを確認し、所定のデータが正常であるか否かを判定する。所定のフラグの例としては、割込み処理終了フラグをＲＡＭ１０５に設けることができる。割込み処理終了フラグがオンになっている場合、ＣＰＵ１０１はＲＡＭ１０５に保存されている情報が正しいと判定する。割込み処理終了フラグを用いる場合、ＣＰＵ１０１は、ステップ５１０の後で、割込み処理終了フラグをオフにし、割込み処理の終了時にオンに戻す。これにより、前回の割込み処理が実行されている間に致命的なエラーが生じた場合、現在の割込み処理時のステップ５１０において、割込み処理終了フラグがオフであるため、ＣＰＵ１０１はＲＡＭ１０５に保存されている特定の情報が正しくないと判定する。【００６３】
さらに、前回の割込み処理おいて、ＣＰＵ１０１は、上記ＣＰＵレジスタ２３５の情報及び／又は上記所定のフラグを、ＲＡＭ１０５の領域の１箇所だけではなく、２箇所以上に保存することができる。そして、現在実行されている割込み処理において、ＣＰＵ１０１は、ＲＡＭ１０５に保存されている前回の割込み処理時点の上記２以上のＣＰＵレジスタ２３５の情報それぞれ、及び／又は、上記２以上の所定のフラグそれぞれが同じであるか否かを確認する。そして、それら情報及び／又はフラグが同じである場合、ＣＰＵ１０１は所定のデータが正常であると判定する。これにより、所定のデータが正常であるか否かの判定が、より正確に実行される。一実施例として、上記保存される情報又はフラグの数を３つにすることもできる。これにより、それら３つの情報又はフラグのうち１つが異なる場合であっても、ＣＰＵ１０１は、残り２つの情報又はフラグを正しいものとして利用することができる。これにより、ＲＡＭ１０５上のデータが一部破損した場合であっても、ＣＰＵ１０１は、所定のデータが正常であるか否かの判定を行うことができる。これら判定についての実施例は例示であり、他の実施例によって同様に判定することもできる。【００６４】
割込み処理が正常な動作であると判定された場合、ＣＰＵ１０１は、ＲＡＭ１０５に保存されている割込み処理開始時点のＣＰＵレジスタ２３５の情報が正常であるか否かを判定する（ステップ５１５）。割込み処理開始時点のＣＰＵレジスタ２３５の情報が正常であるか否かは、ＣＰＵレジスタ２３５の情報の値が正常な範囲に収まっているか、適切な値になっているかなどによって判定することができる。【００６５】
割込み処理開始時点のＣＰＵレジスタ２３５の情報が正常であると判定された場合、ＣＰＵ１０１は、正常であると判定されたＣＰＵレジスタ２３５の情報を復帰情報としてＲＡＭ１０５の別の領域に保存する（ステップ５２０）。他の実施例として、ＣＰＵ１０１は、以前の割り込み処理においてＲＡＭ１０５に既に保存されている復帰情報をＲＡＭ１０５の他の場所にコピーし、復帰情報の履歴を管理することができる。さらに他の実施例として、割込み処理終了フラグを用いている場合、割込み処理終了フラグをオンにする。【００６６】
ステップ５１０において、割込み処理が正常な動作でないと判定された場合、ＣＰＵ１０１は、ＲＡＭ１０５に保存されている情報が正常であるか否かを判定する（ステップ５２５）。ステップ５２５の判定は、前述のＲＡＭ１０５に保存されている特定の情報などを用いて実行される。【００６７】
ステップ５２５において、ＲＡＭ１０５に保存されている情報が正常でないと判定された場合、マイクロコンピュータ１００全体をリセットするため、システムリセットが行われる（ステップ５３０）。システムリセットが行われた後、ステップ５３０以降の処理が中止され、マイクロコンピュータ１００は初期化される。他の実施例では、ステップ５３０において、入出力ポート１２５などのＣＰＵの致命的なエラーの影響を受けにくい要素はリセットされないようにすることができる。【００６８】
ステップ５１５において、ＲＡＭ１０５レジスタ２３５に保存されている情報が正常でないと判定された場合、又は、ステップ５２５において、割込み処理開始時点のＣＰＵレジスタ２３５の情報が正常であると判定された場合、ＣＰＵ１０１は、ＲＡＭ１０５に履歴として保存されている復帰情報などを用いて、ＣＰＵレジスタ２３５の情報の復旧処理を行う（ステップ５３５）。他の実施例として、ステップ５３５の後にステップ５１０が実行するよう構成することができる。復旧処理の一実施例として、ＣＰＵ１０１は、履歴としてＲＡＭ１０５に保存されている復帰情報を用いて、ＣＰＵレジスタ２３５を復旧することができる。【００６９】
他の実施例として、割込み処理はステップ５０５及びステップ５２０のみからなるよう構成することもできる。【００７０】
図６は、ＣＰＵリセット処理の動作を示したフロー図である。ＣＰＵリセット処理は、ＣＰＵ１０１がＣＰＵリセット信号を受信することによって実行される（図３のステップ３４０及び３４５又は図４のステップ４５５及び４６０参照）。【００７１】
最初に、ＣＰＵ１０１のリセットが行われる（ステップ６１０）。これにより、ＣＰＵレジスタ２３５の情報もクリアされる。ＣＰＵリセット処理（ステップ３４５又はステップ４６０）を実行するためのトリガとなるＣＰＵリセット信号は、タイマカウンタから周期的に必ず与えられる。よって、ＣＰＵリセット処理（ステップ３４５又はステップ４６０）は、割込み処理（ステップ３３０又はステップ４３０）が直前に実行されていなくても実行される。したがって、ＣＰＵ１０１において致命的なエラーが発生したことによって、割込み処理が実行されない場合であっても、ＣＰＵリセット処理は割込み処理に依存することなく実行される。【００７２】
ＣＰＵ１０１は、ＲＡＭ１０５に保存されている復帰情報をＣＰＵレジスタ２３５にコピーする（ステップ６１５）。これにより、ＣＰＵレジスタ２３５の情報は割込み処理において保存された情報（図５のステップ５２０）であるため、割込み処理が実行される前に実行されていた応用プログラムは、ＣＰＵ１０１をリセットすることによる影響を受けることなく再開される。【００７３】
他の実施例として、ＣＰＵ１０１は、復帰情報をＣＰＵレジスタ２３５にコピーする前に、復帰情報が正常な値であるか、又は、復帰情報が妥当であるかなどをチェックするよう構成されていてもよい。これにより、復帰情報が正常又は妥当な値ではない場合、システムリセットなどが行われるようにすることができる。【００７４】
また、ＣＰＵ１０１において致命的なエラーが発生した後に、そのＣＰＵ１０１がリセットされた場合、ステップ６１５の処理によって、ＣＰＵレジスタ２３５の情報がＲＡＭ１０５に保存された時点の復帰情報で上書きされる。したがって、復帰情報がＣＰＵ１０１における致命的なエラーによる影響を受けていない場合、ＣＰＵ１０１で致命的なエラーが発生したとしても、本発明は、ＣＰＵ１０１を致命的なエラーから回復させることができる。【００７５】
ここで、前述した、割込み処理がＣＰＵリセット処理の実行前に終了している必要がある理由は、ＣＰＵ１０１に致命的なエラーが発生していない場合、ＣＰＵリセット処理のステップ６１５において、ＲＡＭ１０５に保存されている復帰情報をＣＰＵレジスタ２３５にコピーするために、予め、復帰情報がＲＡＭ１０５に保存されている（図５のステップ５２０参照）必要があり、割込み処理が正常に終了し、ＣＰＵ１０１は、ＣＰＵリセット処理を実行するために待機に入っている必要が有るからである。【００７６】
他の実施例として、ＣＰＵレジスタ２３５又はＲＡＭ１０５にＣＰＵリセット処理実行可能フラグが保存されるようにすることができる。例えば、割込み処理において復帰情報がＲＡＭ１０５に保存される時に、ＣＰＵ１０１がＣＰＵリセット処理実行可能フラグをオンにする。そして、ＣＰＵリセット処理実行可能フラグがオンである場合のみ、ＣＰＵリセット処理を実行し、ＣＰＵリセット処理完了時に、ＣＰＵ１０１がＣＰＵリセット処理実行可能フラグをオフにする。これにより、ＣＰＵに致命的なエラーが発生し、割込み処理において復帰情報がＲＡＭ１０５へ更新されない場合、ＣＰＵリセット処理において、致命的なエラーが発生する前に保存された復帰情報を使い続けることを回避することができる。割込み処理において復帰情報がＲＡＭ１０５へ更新されない場合、マイクロコンピュータ１００全体をリセットするなど他の手段により、ＣＰＵ１０１の致命的なエラーを回避することができる。【００７７】
他の実施例として、ＣＰＵリセット処理は、ＣＰＵのリセット以後（ステップ６１０以後）、ＲＡＭ１０５に保存されている復帰情報が正常ではない場合、復帰情報を回復させるステップを含むことができる。ここで、復帰情報が正常であるか否かは、復帰情報の値が正常な範囲に収まっているか、適切な値になっているかなどによってＣＰＵ１０１が判定することができる。復帰情報を回復させる処理の例として、ＣＰＵ１０１は、ＲＡＭ１０５に保存されている復帰情報の履歴から正常である復帰情報を選択し、選択した復帰情報をＣＰＵレジスタ２３５にコピーすることができる。【００７８】
さらに他の実施例として、割込み処理は、ＣＰＵのリセット以後（ステップ６１０以後）、マイクロコンピュータを正常に動作させることができない場合、システムリセットを行うステップを含むことができる。ここで、マイクロコンピュータを正常に動作させることができるか否かは、ＣＰＵ１０１が、ＲＡＭ１０５に保存されている特定の情報が正しいことを確認することによって判定することができる。ここで、特定の情報が正しいか否かは、初期化処理のみで変更される特定の情報が、致命的なエラーが発生したことに起因して、初期化処理以外の処理によって、変更されているか否かを判定することによって行われる。さらに、マイクロコンピュータを正常に動作させることができるか否かは、ＣＰＵ１０１が、履歴としてＲＡＭ１０５に保存されている複数の復帰情報から、正常な範囲又は適切な値である復帰情報が有るか否かを確認することによって判定することができる。正常な範囲又は適切な値である復帰情報が一つもない場合、マイクロコンピュータは正常に動作することができないと判断される。【００７９】
図７は、ＣＰＵ１０１が正常に動作している場合の第１の実施例（図３参照）についてのタイムチャートである。そのタイムチャートは、時刻Ｔ１、Ｔ２・・・Ｔ５、Ｔ６の順に時間が進んでいることを示す。状態７０１、７１５、及び、７３０は、応用プログラムの処理が実行されていること示す。状態７０５及び７２０は、割込み処理が実行されていることを示す。状態７１０及び７２５は、ＣＰＵリセット処理が実行されていることを示す。【００８０】
時刻Ｔ1より前において、応用プログラムの処理が実行されている（状態７０１）。時刻Ｔ1において、ＣＰＵ１０１は、割込み要求信号を受信する。ＣＰＵ１０１は、割込み要求信号の受信をトリガとして、応用プログラムの処理を中断し、割込み処理を開始する（状態７０５）。割込み処理において、ＣＰＵ１０１は、割込み処理開始時点のＣＰＵレジスタ２３５の情報を復帰情報としてＲＡＭ１０５に保存する。【００８１】
時刻Ｔ2において、割込み処理が終了し、ＣＰＵ１０１は、ＣＰＵリセット信号を受信する。ＣＰＵ１０１は、ＣＰＵリセット信号の受信をトリガとして、ＣＰＵリセット処理を開始する（状態７１０）。ＣＰＵリセット処理において、ＣＰＵ１０１がリセットされた後、ＣＰＵ１０１は、ＲＡＭ１０５に保存されている復帰情報をＣＰＵレジスタ２３５にコピーする。これにより、時刻Ｔ3において、ＣＰＵ１０１は、中断された応用プログラムをＴ1時点の処理から再開する。時刻Ｔ4、Ｔ5、及び、Ｔ6において、時刻Ｔ1、Ｔ2、及び、Ｔ3と同様に、応用プログラムの中断、割込み処理、及び、ＣＰＵリセット処理が実行される。【００８２】
図８は、ＣＰＵ１０１において致命的なエラーが発生した場合の第１の実施例（図３参照）についてのタイムチャートである。時刻Ｔ1、Ｔ2、Ｔ3において、応用プログラムの処理、割込み処理、ＣＰＵリセット処理が実行される（状態８０１、８０５、及び、８１０）。状態８０５の割込み処理において、ＣＰＵ１０１は、時刻Ｔ1におけるＣＰＵレジスタ２３５の情報である復帰情報をＲＡＭ１０５に保存している。【００８３】
応用プログラムの処理実行中の（状態８１５）Ｔ4において、ＣＰＵ１０１に致命的なエラーが発生したとする。これにより、ＣＰＵ１０１は正常に処理を実行することができないことから、状態８２０は、応用プログラムの処理が実行されていないことを示す。さらに、状態８２５は割込み処理が実行されていないことを示す。【００８４】
時刻Ｔ6において、ＣＰＵ１０１は、ＣＰＵリセット信号を受信する。ＣＰＵ１０１は、ＣＰＵリセット信号の受信をトリガとして、ＣＰＵリセット処理を開始する（状態８３０）。ＣＰＵリセット処理において、ＣＰＵ１０１がリセットされた後、ＣＰＵ１０１は、ＲＡＭ１０５に保存されている復帰情報をＣＰＵレジスタ２３５にコピーする。これにより、時刻Ｔ7において、ＣＰＵ１０１は、中断された応用プログラムをＴ1時点の処理から再開する（状態８３５）。【００８５】
図９は、ＣＰＵ１０１において致命的なエラーが発生した場合の第２の実施例（図４参照）についてのタイムチャートである。時刻Ｔ1、Ｔ2において、応用プログラムの処理、割込み処理が実行される（状態９０１及び９０５）。状態９０５の割込み処理において、ＣＰＵ１０１は、時刻Ｔ1におけるＣＰＵレジスタ２３５の情報である復帰情報をＲＡＭ１０５に保存している。【００８６】
時刻Ｔ2において、ＣＰＵリセット信号の発生を禁止する処理が実行される（状態９１０）。これにより、ＣＰＵリセット処理が実行されない。ＣＰＵリセット処理が実行されないため、割込み処理が終了した後、時刻Ｔ2において、応用プログラムの処理が再開される（状態９１５）。【００８７】
応用プログラムの処理実行中の（状態９１５）Ｔ4において、ＣＰＵ１０１に致命的なエラーが発生したとする。これにより、ＣＰＵ１０１は正常に処理を実行することができないことから、状態９２０の応用プログラムの処理及び状態９２５の割込み処理は実行されず、さらに、時刻Ｔ2において実行されていたＣＰＵリセット信号の発生を禁止する処理も実行されない。【００８８】
時刻Ｔ6において、ＣＰＵリセット信号の発生を禁止する処理が実行されないため、ＣＰＵ１０１は、ＣＰＵリセット信号を受信する。ＣＰＵ１０１は、ＣＰＵリセット信号の受信をトリガとして、ＣＰＵリセット処理を開始する（状態９３０）。ＣＰＵリセット処理において、ＣＰＵ１０１がリセットされた後、ＣＰＵ１０１は、ＲＡＭ１０５に保存されている復帰情報をＣＰＵレジスタ２３５にコピーする。これにより、ＣＰＵ１０１は、時刻Ｔ7において、中断された応用プログラムをＴ1時点の処理から再開する（状態９４０）。【００８９】
本発明により、ＣＰＵにおいて、いわゆる暴走などの致命的なエラーが発生した場合、マイクロコンピュータ全体をリセットすることなく、ＣＰＵのみをリセットすることによって、致命的なエラーからマイクロコンピュータを復帰させることができる。これにより、産業界で広く使われている組込み用マイクロコンピュータのＣＰＵで発生する致命的なエラーへの対策をより高速に、かつ、簡単に実現することができる。メカトロニクス、ロボット、パチンコ、パチスロ台を含むゲーム機器、自動車のエンジンコントロール、ブレーキのコントロール、エレベーターのコントロールなどの分野において、マイクロコンピュータにおけるＣＰＵの致命的なエラーは事故や危険、ないしは金銭の損害を生じさせる可能性がある。したがって、このような分野において、本発明によるマイクロコンピュータを用いることによって、事故や損害を大幅に軽減することができる。
【符号の説明】
【００９０】
１００  マイクロコンピュータ
１０１  中央処理装置（ＣＰＵ）
１０５  主記憶装置（ＲＡＭ）
１１０  ＲＯＭ
１１５  通信用回路
１２０  ユニバーサルカウンタタイマ
１２５  入出力ポート
１３０  論理和回路（ＯＲ回路）
１３５  システムリセット信号源
１４０  クロック発生回路
１４５  タイマカウンタ回路
１５０  付加タイマ
１５５  ウオッチドッグ回路
１６０  違法命令検出回路及び正域外アクセス検出回路
１６５  システムリセット用バス
１７０  ＣＰＵバス
２１０  クロック発生器
２１５  分周器
２２０  カウンタ
２２５  付加タイマ
２３０  比較器
２３５  ＣＰＵレジスタ
２４０  ＣＰＵリセット信号用フリップフロップ回路
２４５  割込み要求信号用フリップフロップ回路
２５０  システムリセット用フリップフロップ回路
２５５  レジスタ
【図１】
2011046217.tif 000003
【図２】
2011046217.tif 000004
【図３】
2011046217.tif 000005
【図４】
2011046217.tif 000006
【図５】
2011046217.tif 000007
【図６】
2011046217.tif 000008
【図７】
2011046217.tif 000009
【図８】
2011046217.tif 000010
【図９】
2011046217.tif 000011
【国際調査報告】
2011046217.tif 000012
2011046217.tif 000013