(57)【要約】【課題】同一チップ上のマイクロコントローラのＣＰＵ動作がリセットされる度にリアルタイムクロックの時計機能もリセットされ、時計機能の再設定を行っていた。【解決手段】本発明は、同一チップ上にＣＰＵとリアルタイムクロックを有するマイクロコントローラであって、電源電圧が第１の電圧値以下になったとき前記ＣＰＵを停止させる信号を出力する第１の低電圧検出回路と、電源電圧が前記第１の電圧値より低い第２の電圧値になったときに前記リアルタイムクロックを停止させるリセット信号を出力する第２の低電圧検出回路を有するマイクロコントローラを提供する。【選択図】図１
2009037456.tif 000002
【特許請求の範囲】
【請求項１】
同一チップ上にＣＰＵとリアルタイムクロックを有するマイクロコントローラであって、
電源電圧が第１の電圧値以下になったとき前記ＣＰＵを停止させる信号を出力する第１の低電圧検出回路と、
電源電圧が前記第１の電圧値より低い第２の電圧値になったときに前記リアルタイムクロックを停止させる信号を出力する第２の低電圧検出回路と、
を有するマイクロコントローラ。
【請求項２】
前記第１の電圧値は、ＣＰＵの動作保障最低電圧である請求項１に記載のマイクロコントローラ。
【請求項３】
前記ＣＰＵの動作保障最低電圧は、ＣＰＵとメモリの通信に必要な電圧である請求項２に記載のマイクロコントローラ。
【請求項４】
前記第１の低電圧検出回路は、
第１の基準電圧源と、
前記第１の基準電圧源から出力される電圧と前記第１の電圧値に基づいて生成される電圧に応じて、前記ＣＰＵを停止させる信号を生成する第１の比較器と、
を有する請求項１から請求項３のいずれか１項に記載のマイクロコントローラ。
【請求項５】
前記第２の低電圧検出回路は、
第２の基準電圧源と、
前記第２の基準電圧源から出力される電圧と前記第２の電圧値に基づいて生成される電圧に応じて、前記リアルタイムクロックを停止させる信号を生成する第２の比較器と、
を有する請求項１から請求項４のいずれか１項に記載のマイクロコントローラ。
【請求項６】
電源電圧が第１の電圧値以下になったときＣＰＵを停止し、
電源電圧が前記第１の電圧値より低い第２の電圧値になったときに前記ＣＰＵと同一のチップ上にあるリアルタイムクロックを停止するマイクロコントローラの制御方法。
【請求項７】
前記第１の電圧値は、ＣＰＵの動作保障最低電圧である請求項６に記載のマイクロコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに関するものである。特にＣＰＵとリアルタイムクロック等の機能を同一チップ上に有するマイクロコントローラに関する。
【背景技術】
【０００２】
近年、様々な家電等の電子機器が、日付や時刻表示等の時計機能を搭載している。このような時計機能は、通常、機器を制御するマイクロコントローラ内のリアルタイムクロック（ＲＴＣ）のカウンタの値を、同じくマイクロコントローラ内のＣＰＵが読み出し実現している。
【０００３】
しかし、機器に電力を供給するメインの電池やＡＣ電源が抜かれた場合や、バッテリが供給する電圧が落ちた場合等に、時計機能にリセットがかかり停止を余儀なくされる。よって、再びユーザや機器のシステムが時計機能を利用する場合、前述したようなリセットがかかる度にユーザが時刻情報を再設定する必要がある。
【０００４】
このような問題が生じる理由として、従来、機器制御を行うマイクロコントローラは内部のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を中心に考えられており、電源電圧の低下によるマイクロコントローラの暴走を防ぐためＣＰＵの動作保障最低電圧付近で、マイクロコントローラ全体にリセットをかけ、動作を停止するよう設計されていることが上げられる。また、マイクロコントローラは内部のＣＰＵが中心に考えられている理由としては、マイクロコントローラ内部の周辺機能は、ＣＰＵからの信号により動作を制御され周辺機能で得た値をＣＰＵで処理するため、ＣＰＵがリセットされているときは周辺機能の動作制御や周辺機能から得た値の利用ができないことが上げられる。
【０００５】
ここで従来技術の一例として、図６に特許文献１のマイクロコンピュータ等のハードウエアブロック構成を示す（以下、従来技術とする）。この従来技術では、リセット端子から入力を受けたリセット回路５４０からのリセット信号がバスを介し、ＲＴＣ５６０、ＣＰＵ５１０、その他の周辺機能に接続されている。通常、マイクロコントローラでは、前述したように電源電圧が下がると、ＣＰＵの動作保障最低電圧近くでＣＰＵの暴走を防ぐためリセットする必要があり、この従来技術のリセット回路５４０からのリセット信号もマイクロコントローラ全体にかかる。
【０００６】
ここで、一般的に上述したようなリセットがかからなければＣＰＵよりリアルタイムクロックの方がより低電圧で動作が可能である。なぜならば、ＣＰＵ動作にはフラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリからのデータの読み出し、または書き込み時にチャージポンプやセンスアンプを動作させる必要があり、ＣＰＵが有するロジックのみが利用する電圧よりも大きな電圧が必要となるからである。一方、ロジックのみで構成されるリアルタイムクロックはより低い電圧で動作可能である。
【０００７】
しかし、前述したリセットは、マイクロコントローラ全体にかかるため、本来ならさらに低電圧でも動作可能なリアルタイムクロックまでリセットがかかってしまう。これは、上述したように、従来のマイクロコントローラが、ＣＰＵを中心に考えて設計されていることに起因する。よって、メインの電池やＡＣ電源が抜かれた場合や、バッテリからの電圧供給能力が落ちた場合等に、リアルタイムクロックの関わる時計機能にもリセットがかかることになり、ユーザや機器のシステムが再び時計機能を利用する場合、前記リセットがかかる度にユーザの手により再設定することを余儀なくされる。これは、このようなマイクロコントローラを有する機器を使用するユーザの利便性を損なう結果となる。
【０００８】
また、メインの電源が抜かれた場合やバッテリからの電力供給能力が落ちた場合等に備えて、充電されたキャパシタンスをバックアップ用の予備用電源とし、マイクロコントローラを駆動する機器が存在する。しかし、キャパシタンスの放電の過程で出力電圧が低下する。よって、キャパシタンスからの出力電圧が、マイクロコントローラ内のＣＰＵの動作保障最低電圧付近になると、キャパシタンス内に電荷が残っていたとしても、やはりマイクロコントローラ全体がリセットされてしまう。
【０００９】
ここで、より低電圧でＲＴＣを動作させるためには、マイクロコントローラとは別に外付けでＲＴＣを用意する必要があるが、別のチップを用意しなければならず基板面積の増加、製造工程の増加等、製造コスト増加の要因となる。
【００１０】
以上のことから、製造コスト等の増加やユーザの利便性を損なわないためにも、１チップのマイクロコントローラにおいて、低電圧下でより長時間リアルタイムクロックを動作させたいという要求が存在する。
【特許文献１】特開２００６−７９３３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
従来技術では、マイクロコントローラ内のリアルタイムクロックの時計機能動作を低電圧で継続できず、同一チップのＣＰＵ動作がリセットされる度に、時計機能の再設定を行っていた。
【課題を解決するための手段】
【００１２】
本発明は、同一チップ上にＣＰＵとリアルタイムクロックを有するマイクロコントローラであって、電源電圧が第１の電圧値以下になったとき前記ＣＰＵを停止させる信号を出力する第１の低電圧検出回路と、電源電圧が前記第１の電圧値より低い第２の電圧値になったときに前記リアルタイムクロックを停止させるリセット信号を出力する第２の低電圧検出回路を有するものである。
【００１３】
本発明にかかるマイクロコントローラにより、電源電圧が所定の第１の電圧値以下になりマイクロコントローラ内のＣＰＵがリセットされ動作が停止しても、更に低電圧の第２の電圧値以下にならない限り、リアルタイムクロックは停止することがない。
【発明の効果】
【００１４】
本発明によれば、電源電圧が低下し、ＣＰＵがリセットされてもリアルタイムクロックはリセットされず、時計機能の再設定を行う必要がない。
【発明を実施するための最良の形態】
【００１５】
＜発明の実施の形態１＞
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。図１に本実施の形態にかかるマイクロコントローラ１００の構成の一例を示す。
【００１６】
マイクロコントローラ１００は、同一チップ上に、低電圧検出回路１１０と、低電圧検出回路１２０と、ＣＰＵ１３０と、フラッシュＲＯＭ１３１と、ＲＡＭ１３２と、リアルタイムクロック１４０と、その他の周辺機能１５０と、内部バス１６０を有する。また、マイクロコントローラ１００は、電源電圧ＶＤＤが入力される高電位側電源電圧端子１８１と、ＧＮＤレベルの電圧ＶＳＳが入力される低電位側電源電圧端子１８２と、水晶振動子１７０が接続される外部端子１７１、１７２と、ユーザからの設定データを入力したり、ＣＰＵ１３０からの外部ディスプレイ表示データを出力するデータ入出力端子１５１を有する。
【００１７】
低電圧検出回路１１０（広義の意味での第１の低電圧検出回路）は、高電位側電源電圧端子１８１と低電位側電源電圧端子１８２間に直列に接続された抵抗素子Ｒ１１１とＲ１１２と、その抵抗素子Ｒ１１１とＲ１１２と並列に接続された基準電圧源１１１と、抵抗素子Ｒ１１１とＲ１１２間のノードＡの電圧を非反転端子に入力し、基準電圧源１１１の出力電圧を反転端子に入力するコンパレータ１１２と、コンパレータ１１２の出力を反転増幅するインバータ１１３を有する。
【００１８】
ここで、抵抗素子Ｒ１１１とＲ１１２間のノードＡの電圧は、回路構成からもわかるように高電位側電源電圧端子１８１の電圧（以下ＶＤＤとする）と低電位側電源電圧端子１８２の電圧（以下ＶＳＳとする）の差分を分圧した電圧である。例えば、抵抗素子Ｒ１１１とＲ１１２が同じ抵抗値であるとすると、ＶＤＤが２．０Ｖの時、ノードＡには、１．０Ｖの電圧が現れることになる。なお、抵抗素子Ｒ１１１とＲ１１２の抵抗値は、回路構成に合わせて変えてもよい。
【００１９】
また、基準電圧源１１１は、レギュレータ等で構成されており、所定の電圧を出力する。ここで基準電圧源１１１が出力する所定の電圧は、ＶＤＤがＣＰＵ１３０やその他の周辺機能１５０を含めた動作保証最低電圧のときノードＡに現れる電圧と同じ電圧とする。また、このＣＰＵ１３０やその他の周辺機能１５０を含めた動作保証最低電圧を検出電圧１（広義の意味での第１の電圧値）とする。よって、ノードＡの電圧が基準電圧源１１１の出力電圧より高い時は、コンパレータ１１２は、「Ｈ」レベルの信号を出力し、ノードＡの電圧が基準電圧源１１１の出力電圧より低い時は、コンパレータ１１２は、「Ｌ」レベルの信号を出力する。
【００２０】
またここで、インバータ１１３が出力する論理信号は、リセット信号１として内部バス１６０を経て、ＣＰＵ１３０とその他の周辺機能１５０に入力される。このリセット信号１は「Ｌ」レベルの時、有効となりＣＰＵ等のマイクロコントローラ内の機能をリセットし、動作を停止させる。
【００２１】
低電圧検出回路１２０（広義の意味での第２の低電圧検出回路）は、高電位側電源電圧端子１８１と低電位側電源電圧端子１８２間に直列に接続された抵抗素子Ｒ１２１とＲ１２２と、その抵抗素子Ｒ１２１とＲ１２２と並列に接続された基準電圧源１２１と、抵抗素子Ｒ１２１とＲ１２２間のノードＢの電圧を非反転端子に入力し、基準電圧源１２１の出力電圧を反転端子に入力するコンパレータ１２２と、コンパレータ１２２の出力を反転増幅するインバータ１２３を有する。
【００２２】
ここで、抵抗素子Ｒ１２１とＲ１２２間のノードＢの電圧は、基準電圧源１１１と同様、ＶＤＤとＶＳＳの差分を分圧した電圧である。また、抵抗素子Ｒ１２１とＲ１２２の抵抗値は、回路構成に合わせて変えてもよい。
【００２３】
基準電圧源１２１は、レギュレータ等で構成されており、基準電圧源１１１より低い所定の電圧を出力する。ここで基準電圧源１２１が出力する所定の電圧は、ＶＤＤがリアルタイムクロック１４０の動作保証最低電圧のときノードＢに現れる電圧と同じ電圧とする。また、このリアルタイムクロック１４０の動作保証最低電圧を検出電圧２（広義の意味での第２の電圧値）とする。よって、ノードＢの電圧が基準電圧源１２１の出力電圧より高い時は、コンパレータ１２２は、「Ｈ」レベルの信号を出力し、ノードＢの電圧が基準電圧源１２１の出力電圧より低い時は、コンパレータ１２２は、「Ｌ」レベルの信号を出力する。
【００２４】
またここで、インバータ１２３が出力する論理信号は、リセット信号２として内部バス１６０を経て、リアルタイムクロック１４０に入力される。このリセット信号２は「Ｌ」レベルの時、有効となりリアルタイムクロック１４０をリセットし、動作を停止させる。
【００２５】
ここで、低電圧検出回路１１０、１２０は、基本的な性能に影響を与えない範囲内において異なる構成で実現してもよい。例えば、ＣＰＵ１３０等は、リセット信号１、２が「Ｌ」レベルの時にリセットするよう構成されているが、「Ｈ」レベルでリセットするよう構成してもよい。その場合では信号のアンプ機能等はなくなるが、上記インバータ１１３や１２３を省略可能となる。また、基準電圧源１１０、１２０を構成するレギュレータやコンパレータ１１２、１２２の電源を図示している電源電圧ＶＤＤとは別の電源電圧から利用する等が考えられる。この場合は、コンパレータ１１２、１２２の反転入力端子に直接電源電圧ＶＤＤを入力し、非反転入力端子には、ＣＰＵ１３０やリアルタイムクロック１４０の動作保証最低電圧と同電圧を出力する基準電圧源１１０、１２０を用いることができる。
【００２６】
リアルタイムクロック１４０は、時計機能、カレンダー機能を実現するため、年月日時分秒などのカウンタを持ち、水晶振動子１７０など（精度が求められない場合セラミック振動子等でもよい）の発振をカウントし、日付、時刻を自動更新するものである。上記リセット信号２が「Ｌ」レベルで入力された時、リセットされ動作を停止する。
【００２７】
図２にリアルタイムクロック１４０のブロック構成の一例を示す。図に示すように、リアルタイムクロック１４０は、サブカウンタ２０１１を内部に有する発振回路２０１、秒カウンタ２０２、分カウンタ２０３、時カウンタ２０４、日カウンタ２０５、月カウンタ２０６、年カウンタ２０７、動作／停止レジスタ２０８を有する。発振回路２０１は、外部端子１７１、１７２に水晶振動子１０７を接続する。発振回路２０１内のサブカンウタ２０１１は、外部接続されている水晶振動子の振動周波数（例えば約３２ｋＨｚ）をカウントし、１秒をカウントする。１秒をカウントしたら秒カウンタ２０２へ秒カウント信号を出力する。
【００２８】
秒カウンタ２０２は、サブカウンタ２０１１からの秒カウント信号を受け取り、１分をカウントする。１分をカウントしたら分カウンタ２０３へ分カウント信号を出力する。以下、分カウンタ２０３、時カウンタ２０４、日カウンタ２０５、月カウンタ２０６、年カウンタ２０７も同様の動作を行い、上記各カウンタの値をＣＰＵ信号としてＣＰＵが読み出し、外部ディスプレイに出力する等の処理を行う。ここで、前記「Ｌ」レベルのリセット信号２が入力されると、リアルタイムクロック１４０の各カウンタの値および動作／停止レジスタ２０８の値をリセットする。
【００２９】
また、動作／停止レジスタ２０８は、リアルタイムクロック１４０が動作している場合は「１」の値を保持し、停止している場合は「０」の値を保持する。また、リアルタイムクロック１４０は、ユーザ等からの時刻設定により各カウンタに時刻情報を設定しないと動作せず、動作／停止レジスタ２０８は「０」を保持し、時刻設定後、動作／停止レジスタ２０８は「１」になりサブカウンタ２０１１（それに伴い各カウンタ）が動作する。この時刻設定データの各カウンタへの設定、および、動作／停止レジスタ２０８の「０」から「１」への書き換えはＣＰＵ１３０からのＣＰＵ信号により行われる。
【００３０】
ＣＰＵ１３０は、制御プログラムや入力データに基づいて、機器内の各種処理を行う中央制御装置である。また、前記リセット信号１が「Ｌ」レベルで入力された時、リセットされ動作を停止する。
【００３１】
ここで、ＣＰＵ１３０は、リアルタイムクロック１４０内の動作／停止レジスタ２０８の値をＣＰＵ信号として読み出す。読み出した動作／停止レジスタ２０８の値が「１」の場合、リアルタイムクロック１４０が動作していると判断し、各カウンタの値を読み出し、外部ディスプレイへ表示したり、機器システム内部の時間管理に用いたりする。また、前記動作／停止レジスタ２０８の値が「０」の場合、リアルタイムクロック１４０が停止していると判断し、例えば、時刻情報の再設定をユーザに求めるメッセージデータをデータ入出力端子１５１を経由して外部ディスプレイに送信し、メッセージ内容を表示させる等の処理を行う。さらに、ユーザが時刻の設定を行った場合、その時刻設定データをデータ入出力端子１５１を経由して受け取る。さらに、受け取ったデータをＣＰＵ信号としてリアルタイムクロック１４０に送り、各カウンタの値を時刻設定データに合わせセットする。また、時刻設定後、動作／停止レジスタ２０８の値を「０」から「１」へ書き換える。
【００３２】
また、ＣＰＵ１３０は、フラッシュＲＯＭやＲＡＭとの間でデータの読み出し、書き込みを行う。ここで、ＣＰＵ１３０は、データの読み出し、書き込み時にＣＰＵ内のチャージポンプやセンスアンプを動作させる必要があり（特にフラッシュＲＯＭからデータの読み出す場合、高電圧動作が必要）、リアルタイムクロック１４０に比べると高い電圧が必要となり、動作保障最低電圧が高くなる。
【００３３】
フラッシュＲＯＭ１３１は、ＣＰＵ１３０が処理を行うための制御プログラムやデータ等が格納されている。ＲＡＭ１３２は、ＣＰＵ１３０等により使用される記憶装置であり、フラッシュＲＯＭ１３１等から読み出された制御プログラムやデータ等が展開される。
【００３４】
その他の周辺機能１５０は、バスコントローラ、通信制御回路、ディスプレイドライバ、Ａ／Ｄ変換器、クロック発生器、入出力ドライバ等がある。また、このうち入出力ドライバは、データ入出力端子１５１と内部バス１６０に接続している。さらに、データ入出力端子１５１は、例えば、外部ディスプレイやキーボード等の入力装置と接続される。このデータ入出力端子１５１からは、外部ディスプレイに表示される時刻再設定要求メッセージデータやキーボードで入力されたユーザからの時刻設定データ等の入出力データが入出力される。
【００３５】
これらのその他の周辺機能１５０は、前記リセット信号１が「Ｌ」レベルで入力された時、リセットされ動作を停止する。これらその他の周辺機能１５０は主にＣＰＵ１３０と制御信号やデータの送受信を行っており、リセット信号１によりＣＰＵ１３０がリセットされ停止すると、ＣＰＵ１３０と制御信号等の送受信が行えなくなる。このため、その他の周辺機能１５０もＣＰＵ１３０と同時にリセットし、動作停止状態にすることが妥当であると考えられる。また、その他の周辺機能１５０自体の電源電圧ＶＤＤの低下による暴走を防ぐためにも、リセット信号１によりリセットされることが妥当であると考えられる。また、反対にＣＰＵ１３０と制御信号等の送受信等を必ずしも行わない機能であって、かつＣＰＵ１３０より低い電圧で動作できるならば、リセット信号２によりリセットされ動作を停止してもよい。
【００３６】
内部バス１６０は、マイクロコントローラ１００を構成する要素（ＣＰＵやリアルタイムクロック等）間の信号を伝送するバスである。内部バス１６０では、リセット信号１、リセット信号２、ＣＰＵ信号（例えば、ＣＰＵ１３０からリアルタイムクロック１４０への時刻設定データやリアルタイムクロック１４０からＣＰＵ１３０への時刻情報、動作／停止レジスタ２０８のレジスタ値情報や読み出し、書き込み制御信号等）、入出力データ（外部ディスプレイの表示メッセージデータ、ユーザが入力した時刻設定データ等）等が伝送される。
【００３７】
次に、図３と図４のタイムチャートを用いて、本実施の形態のマイクロコントローラ１００の動作を説明する。図３は、電源電圧ＶＤＤが検出電圧１（例えば２．０Ｖ）以下になるが検出電圧２（例えば１．０Ｖ）にはならない場合を示す。図４は、電源電圧ＶＤＤが検出電圧２（例えば１．０Ｖ）以下になってしまった場合を示す。なお図３と図４にはリアルタイムクロック１４０の秒カウンタの値を示す。本来は、前述したように分カウンタ、時カウンタ等もあるが図を簡素化するために、秒カウンタのみを示す。このカウンタの値をＣＰＵ１３０が時刻情報として利用するものとする。
【００３８】
図３のタイムチャートにおける本実施の形態のマイクロコントローラの動作説明を行う。まず、時刻ｔ１までの期間では、バッテリやキャパシタ等の出力電圧ＶＤＤが、ある時期に徐々に低下するが検出電圧１以上である場合を想定している。ここで検出電圧１は、前述したがＣＰＵ１３０およびその他の周辺機能１５０を動作させることが可能な電圧である。この場合、低電圧検出回路１１０における抵抗素子Ｒ１１１とＲ１１２間のノードＡの電位は、基準電圧源１１１の出力電位より高いため、コンパレータ１１２の出力は「Ｌ」レベルとなる。よって、リセット信号１であるインバータ１１３の出力は「Ｈ」レベルとなり、ＣＰＵ１３０やその他の周辺機能１５０は通常動作を行う。
【００３９】
また同様に低電圧検出回路１２０における抵抗素子Ｒ１２１とＲ１２２間のノードＢの電位は、基準電圧源１２１の出力電位より高いため、コンパレータ１２２の出力も、やはり「Ｌ」レベルとなる。よって、リセット信号２であるインバータ１２３の出力も「Ｈ」レベルとなり、リアルタイムクロック１４０は通常動作を行う。よって、リアルタイムクロック１４０は停止していないため、動作／停止レジスタ２０８が保持する値は「１」のままであり、秒カウンタも停止しないためカウント値は通常通り増加する。よって、ＣＰＵ１４０は、リアルタイムクロック１４０の秒カウンタから時刻情報を取得する。
【００４０】
次に、時刻ｔ１からｔ２の期間では、更に電源電圧ＶＤＤが下がり検出電圧１を下回った場合、および、バッテリの充電や電池の交換等により電源電圧ＶＤＤが上昇するが検出電圧１以下である場合を想定している。よって、この期間では電源電圧ＶＤＤは検出電圧１以下となるが検出電圧２以上である。この場合、低電圧検出回路１１０におけるノードＡの電位は、基準電圧源１１１の出力電位より低くなり、コンパレータ１１２の出力は「Ｈ」レベルとなる。よって、リセット信号１であるインバータ１１３の出力は「Ｌ」レベルとなり、ＣＰＵ１３０やその他の周辺機能１５０はリセットされ、動作を停止する。
【００４１】
ここで低電圧検出回路１２０におけるノードＢの電位は、時刻ｔ１以前と同様、基準電圧源１２１の出力電位より高いため、コンパレータ１２２の出力は「Ｌ」レベルである。よって、リセット信号２であるインバータ１２３の出力も「Ｈ」レベルであり、リアルタイムクロック１４０は通常動作を行い続ける。よって、リアルタイムクロック１４０は停止していないため、動作／停止レジスタ２０８が保持する値は「１」のままであり、秒カウンタも停止しないためカウント値は増加を続ける。
【００４２】
次に、時刻ｔ２からｔ３の期間では、電源電圧ＶＤＤが再び検出電圧１より上回った場合を想定している。この場合、低電圧検出回路１１０におけるノードＡの電位は、基準電圧源１１１の出力電位より高くなり、コンパレータ１１２の出力は「Ｌ」レベルとなる。よって、リセット信号１であるインバータ１１３の出力は「Ｈ」レベルとなり、ＣＰＵ１３０やその他の周辺機能１５０はリセットが解除され、動作を開始する（基本的に、その他の周辺機能はＣＰＵ１３０からの信号により動作開始する）。
【００４３】
低電圧検出回路１２０におけるノードＢの電位は、基準電圧源１２１の出力電位より高いため、コンパレータ１２２の出力は「Ｌ」レベルである。よって、リセット信号２であるインバータ１２３の出力も「Ｈ」レベルであり、リアルタイムクロック１４０は通常動作を行う。よって、リアルタイムクロック１４０は停止していないため、動作／停止レジスタ２０８が保持する値は「１」のままであり、秒カウンタのカウント値は増加する。
【００４４】
ここで、ＣＰＵ１３０は、リセットから復帰したことから時刻情報を再度取得するため、リアルタイムクロック１４０が動作しているかどうかを確認するため動作／停止レジスタ２０８の値を読み出す。上述したように動作／停止レジスタ２０８の値は、時刻ｔ１からｔ２の期間、リアルタイムクロック１４０が停止していないため、「１」のままである。よって、ＣＰＵ１３０は、リアルタイムクロック１４０が動作していると確認した後、秒カウンタの時刻情報を取得する。
【００４５】
時刻ｔ３以後は、電源電圧ＶＤＤが検出電圧１以上であり、ＣＰＵ１３０が時刻情報取得済みの場合である。よってこの期間は時刻ｔ１以前と同様の動作を行う。以上が図３のタイムチャートにおける本実施の形態のマイクロコントローラの動作の説明である。
【００４６】
次に、図４のタイムチャートにおける本実施の形態のマイクロコントローラ１００の動作説明を行う。まず、時刻ｔ４までの期間では、電源電圧ＶＤＤが低下するが検出電圧１以上である場合である。この場合、低電圧検出回路１１０における抵抗素子Ｒ１１１とＲ１１２間のノードＡの電位は、基準電圧源１１１の出力電位より高いため、コンパレータ１１２の出力は「Ｌ」レベルとなる。よって、リセット信号１であるインバータ１１３の出力は「Ｈ」レベルとなり、ＣＰＵ１３０やその他の周辺機能１５０は通常動作を行う。
【００４７】
また同様に低電圧検出回路１２０における抵抗素子Ｒ１２１とＲ１２２間のノードＢの電位は、基準電圧源１２１の出力電位より高いため、コンパレータ１２２の出力も、やはり「Ｌ」レベルとなる。よって、リセット信号２であるインバータ１２３の出力も「Ｈ」レベルとなり、リアルタイムクロック１４０は通常動作を行う。よって、リアルタイムクロック１４０は停止していないため、動作／停止レジスタ２０８の値は「１」のままであり、秒カウンタも停止しないためカウント値が増加する。よって、ＣＰＵ１３０は、リアルタイムクロック１４０の秒カウンタから時刻情報を取得する。
【００４８】
次に、時刻ｔ４からｔ５の期間では、更に電源電圧ＶＤＤが下がり検出電圧１以下となるが検出電圧２以上の場合である。この場合、低電圧検出回路１１０におけるノードＡの電位は、基準電圧源１１１の出力電位より低くなり、コンパレータ１１２の出力は「Ｈ」レベルとなる。よって、リセット信号１であるインバータ１１３の出力は「Ｌ」レベルとなり、ＣＰＵ１３０やその他の周辺機能１５０はリセットされ、動作を停止する。
【００４９】
ここで低電圧検出回路１２０におけるノードＢの電位は、時刻ｔ１以前と同様、基準電圧源１２１の出力電位より高いため、コンパレータ１２２の出力は「Ｌ」レベルである。よって、リセット信号２であるインバータ１２３の出力も「Ｈ」レベルであり、リアルタイムクロック１４０は通常動作を行い続ける。よって、リアルタイムクロック１４０は停止していないため、動作／停止レジスタ２０８の値は「１」のままであり、秒カウンタも停止しないためカウント値は増加を続ける。
【００５０】
次に、時刻ｔ５からｔ６の期間では、更に電源電圧ＶＤＤが下がり検出電圧２以下となる場合である。この場合、低電圧検出回路１１０におけるノードＡの電位は、基準電圧源１１１の出力電位より低いままであり、コンパレータ１１２の出力は「Ｈ」レベルである。よって、リセット信号１であるインバータ１１３の出力は「Ｌ」レベルであり、ＣＰＵ１３０やその他の周辺機能１５０は動作を停止したままである。
【００５１】
ここで、低電圧検出回路１２０におけるノードＢの電位も、基準電圧源１２１の出力電位より低くなるため、コンパレータ１２２の出力は「Ｈ」レベルとなる。よって、リセット信号２であるインバータ１２３の出力は「Ｌ」レベルとなり、リアルタイムクロック１４０はリセットされ、動作を停止する。よって、動作／停止レジスタ２０８の値は「０」となり、秒カウンタもリセットされカウンタの値は「０」となる。
【００５２】
次に、時刻ｔ６からｔ７の期間は、電源電圧ＶＤＤが上がり検出電圧２以上となるが検出電圧１以下の場合である。この場合、低電圧検出回路１１０におけるノードＡの電位は、基準電圧源１１１の出力電位より低いままであり、コンパレータ１１２の出力は「Ｈ」レベルである。よって、リセット信号１であるインバータ１１３の出力は「Ｌ」レベルであり、ＣＰＵ１３０やその他の周辺機能１５０は動作を停止したままである。
【００５３】
ここで、低電圧検出回路１２０におけるノードＢの電位は、基準電圧源１２１の出力電位は高くなるため、コンパレータ１２２の出力は「Ｌ」レベルとなる。よって、リセット信号２であるインバータ１２３の出力は「Ｈ」レベルとなり、リアルタイムクロック１４０は動作可能状態となる。ただし、上述のようにＣＰＵ１３０のリセットが解除されていないため、時刻情報が設定されず、また動作／停止レジスタ２０８の値も「０」のままである。よって、サブカウンタ２０１１も動作せず、秒カウンタの値も「０」のままであり、リアルタイムクロック１４０は動作停止の状態を続ける。
【００５４】
次に、時刻ｔ７からｔ８の期間では、電源電圧ＶＤＤが上がり検出電圧１以上となる場合である。この場合、低電圧検出回路１１０におけるノードＡの電位は、基準電圧源１１１の出力電位より高くなり、コンパレータ１１２の出力は「Ｌ」レベルとなる。よって、リセット信号１であるインバータ１１３の出力は「Ｈ」レベルとなり、ＣＰＵ１３０やその他の周辺機能１５０はリセットが解除され、動作を開始する。
【００５５】
ここで低電圧検出回路１２０におけるノードＢの電位は、基準電圧源１２１の出力電位より高いため、コンパレータ１２２の出力は「Ｌ」レベルである。よって、リセット信号２であるインバータ１２３の出力も「Ｈ」レベルであり、リアルタイムクロック１４０は時刻ｔ６からｔ７の期間と同様動作可能であるが停止状態である。
【００５６】
ここで、ＣＰＵ１３０は、リセットから復帰したことから時刻情報を再度取得するため、リアルタイムクロック１４０が動作しているかどうか動作／停止レジスタ２０８の値を読み出す。上述したように動作／停止レジスタ２０８の値は、時刻ｔ５からｔ７の期間、リアルタイムクロック１４０が停止していたため、「０」のままである。よって、ＣＰＵ１３０は、リアルタイムクロック１４０が動作していないことを確認後、例えば、ユーザに対し時刻情報を再設定するメッセージを外部ディスプレイに表示する等の処理を行い、時刻設定情報を取得し、この取得した時刻設定情報に基づきリアルタイムクロック１４０の秒カウンタにカウンタ値を設定（本例では「３４」の値を設定）する。また、動作／停止レジスタ２０８の値を「０」から「１」に書き換え、サブカウンタ２０１１を動作させ、リアルタイムクロック１４０が再び動作を開始する。以後、時刻ｔ８以降は、時刻ｔ４以前の期間と同様の動作となる。
【００５７】
ここで、本例のマイクロコントローラを有する機器システムが、現在時刻を利用せず、主にシステム内部のローカル時間でリアルタイムクロック１４０を利用する場合（例えば、ある時刻間の秒カウンタの値の差分のみ利用する等）では、時刻の再設定が必要ないため、電源電圧ＶＤＤが検出電圧２以上になった時点でリアルタイムクロック１４０は動作してもよい。
【００５８】
以上が図４のタイムチャートにおける本実施の形態のマイクロコントローラの動作の説明である。
【００５９】
ここで、補足として電源電圧ＶＤＤが低下し、例えばレギュレータ等で構成される基準電圧源１１１や１２１の動作限界電圧以下（例えば、０．７Ｖ以下）になった場合を説明する。この様な条件下では、基準電圧源１１１、１２１から所定の電圧が出力されなくなりノードＡ、Ｂの電圧と比較するコンパレータ１１２、１２２の出力、同時にインバータ１１３、１２３が出力するリセット信号１、２が反転する可能性がある（リセット信号１、２が「Ｈ」レベルになる可能性がある）。よって、電源電圧ＶＤＤが低下した状態でＣＰＵ１３０等が起動し、機器が暴走する可能性が考えられる。
【００６０】
しかし、そもそもこの場合、電源電圧ＶＤＤは、ＣＰＵ１３０、その他の周辺機能１５０、リアルタイムクロック１４０の動作限界電圧を下回っており、動作することができない。またここで、低電圧で動作可能なリアルタイムクロック１４０であっても、水晶振動子の発振が止まってしまうため動作することができない。よって以上のことから、電源電圧ＶＤＤの低下により、基準電圧源１１１、１２１の動作限界電圧以下になったとしても問題は生じないことがわかる。
【００６１】
次に、図５に図３、図４の動作状態を含めた本実施の形態のマイクロコントローラ１００の動作処理手順を示す。
【００６２】
まず、マイクロコントローラ１００は、低電圧検出回路１１０において電源電圧ＶＤＤが検出電圧１（例えば２．０Ｖ）より高いかどうかを判断する（Ｓ１０１）。次に、Ｓ１０１で電源電圧ＶＤＤが検出電圧１より低いと判断された場合（Ｓ１０１ＮＯ）、Ｓ１０１に戻る。
【００６３】
一方、Ｓ１０１で電源電圧ＶＤＤが検出電圧１より高いと判断された場合（Ｓ１０１ＹＥＳ）、リセット信号１はディセーブルとなり、ＣＰＵ１３０が動作を開始する（Ｓ１０２）。続いて、ＣＰＵ１３０はリアルタイムクロック１４０の動作／停止レジスタ２０８が保持する値を読み出し、リアルタイムクロック１４０が動作しているかどうかを判断する（Ｓ１０３）。
【００６４】
次に、Ｓ１０３でリアルタイムクロック１４０が動作をしていると判断された場合（Ｓ１０３ＹＥＳ）、リアルタイムクロック１４０の各カウンタの時刻情報をＣＰＵ１３０が読み取り、処理に利用する。また、その他の周辺機能１５０の初期設定を行い、動作を開始する（Ｓ１０４）。一方、Ｓ１０３でリアルタイムクロック１４０が動作をしていないと判断された場合（Ｓ１０３ＮＯ）、リアルタイムクロック１４０の初期設定（時刻情報セット）を行い、動作を開始させる。また、その他の周辺機能１５０の初期設定を行い、動作を開始する（Ｓ１１４）。続いて、ＣＰＵ１３０、その他の周辺機能１５０、リアルタイムクロック１４０の動作を継続させる（Ｓ１０５）。続いて、低電圧検出回路１１０において電源電圧ＶＤＤが検出電圧１（例えば２．０Ｖ）より低いかどうかを判断する（Ｓ１０６）。次に、Ｓ１０６で電源電圧ＶＤＤが検出電圧１より高いと判断された場合（Ｓ１０６ＮＯ）、Ｓ１０５に戻る。
【００６５】
一方、Ｓ１０６で電源電圧ＶＤＤが検出電圧１より高いと判断された場合（Ｓ１０６ＹＥＳ）、リセット信号１はイネーブルとなり、ＣＰＵ１３０、その他の周辺機能１５０がリセットされる（Ｓ１０７）。
【００６６】
次に、リアルタイムクロック１４０が動作をしている場合（Ｓ１０８ＹＥＳ）、ＣＰＵ１３０、その他の周辺機能１５０は機能停止状態を継続し、リアルタイムクロック１４０は動作状態を継続する（Ｓ１０９）。一方、リアルタイムクロック１４０が動作をしていない場合（Ｓ１０８ＮＯ）、ＣＰＵ１３０、その他の周辺機能１５０、リアルタイムクロック１４０は機能停止状態を継続する（Ｓ１１５）。続いて、低電圧検出回路１１０において電源電圧ＶＤＤが検出電圧１より低いかどうかを判断する（Ｓ１１０）。次に、Ｓ１１０で電源電圧ＶＤＤが検出電圧１より高いと判断された場合（Ｓ１１０ＮＯ）、Ｓ１０２に戻る。
【００６７】
一方、Ｓ１１０で電源電圧ＶＤＤが検出電圧２より低いと判断された場合（Ｓ１１０ＹＥＳ）、低電圧検出回路１２０において電源電圧ＶＤＤが検出電圧２より低いかどうかを判断する（Ｓ１１１）。次に、Ｓ１１１で電源電圧ＶＤＤが検出電圧２より高いと判断された場合（Ｓ１１１ＮＯ）、Ｓ１０８に戻る。
【００６８】
一方、Ｓ１１１で電源電圧ＶＤＤが検出電圧２より低いと判断された場合（Ｓ１１１ＹＥＳ）、リセット信号２はイネーブルとなり、リアルタイムクロック１４０がリセットされる（Ｓ１１２）。続いて、ＣＰＵ１３０、その他の周辺機能１５０、リアルタイムクロック１４０は機能停止状態を継続する（Ｓ１１３）。その後、Ｓ１１１に戻る。以上、マイクロコントローラ１００の動作処理手順の説明とする。
【００６９】
以上のことから、本発明による実施の形態のマイクロコントローラは以下のような効果がある。従来のマイクロコントローラは、ＣＰＵを中心に考えて設計されており、電源電圧の低下によるマイクロコントローラの暴走を防ぐため、ＣＰＵの最低動作限度電圧を基準にして同一チップ上にある全ての機能（例えば、リアルタイムクロック等）にリセットをかけていた。よって、ＣＰＵの最低動作限度電圧になるたびに同一チップ上にあるリアルタイムクロック等のＣＰＵよりも低電圧で動作する機能を含めて全て動作を停止してしまうため、ユーザに対し時刻情報の再設定等、製品の利便性を損なう操作を強いていた。
【００７０】
本発明による実施の形態のマイクロコントローラは、同一チップ上にあるにも関わらず、比較的高い動作保障最低電圧で動作するＣＰＵ等の機能を検出電圧１でリセット信号１によりリセットし、より低い動作保障最低電圧で動作するリアルタイムクロック等の機能を検出電圧２でリセット信号２によりリセットする。このことにより、バッテリ等の電源電圧が低下しＣＰＵ等がリセットされても、より低い電源電圧になるまでリアルタイムクロックが動作可能であり、ＣＰＵのリセットによる時刻情報の再設定を行わなくてよくなる。このため、ユーザの利便性を損なわず、さらにワンチップによりマイクロコントローラを実現できるため、製造コスト等の増加も伴わない。
【００７１】
なお、本発明は上記実施の形態に限られたものでなく、趣旨を逸脱しない範囲で適宜変更することが可能である。よって、検出電圧２までリセットされない機能としては、リアルタイムクロック以外のものであってもよい。つまり、同一チップ上において、少なくとも２以上の電圧検出回路を有し、それぞれが異なる検出電圧（上述した例で言うところの検出電圧１、２）で電源電圧を検出し、リセット信号を出力する機能を有する全てのマイクロコントローラに有効である。例えば、上述した実施の形態では、リセット信号２で制御されている機能として、リアルタイムクロックを記載しているが、リアルタイムクロックの代わりに、外付けＩＣへのクロック供給を行ったり圧電ブザーへブザー出力を行ったりするクロック出力回路を用いてもよい。この場合だと、例えば電源電圧ＶＤＤが下がりＣＰＵがリセット信号１によりリセットされても、クロック出力回路はリセット信号１ではリセットされず動作し続ける。このため、クロック出力回路のクロック出力をブザー出力として使用し、ユーザへ電圧低下をブザーにより知らせることができる機能をワンチップのマイクロコントローラで実現できる。
【図面の簡単な説明】
【００７２】
【図１】実施の形態にかかるマイクロコントローラの構成の一例
【図２】実施の形態にかかるリアルタイムクロックの構成の一例
【図３】実施の形態にかかるマイクロコントローラのタイムチャートの一例
【図４】実施の形態にかかるマイクロコントローラのタイムチャートの一例
【図５】実施の形態にかかるマイクロコントローラの動作順序のチャートの一例
【図６】従来技術にかかるマイクロコントローラの構成の一例
【符号の説明】
【００７３】
１００  マイクロコントローラ
１１０、１２０  低電圧検出回路
１１１、１２１  基準電圧源
１１２、１２２  コンパレータ
１１３、１２３  インバータ
１３０  ＣＰＵ
１３１  フラッシュＲＯＭ
１３２  ＲＡＭ
１４０  リアルタイムクロック
１５０  その他の周辺機能
１５１  データ入出力端子
１６０  内部バス
１７０  水晶振動子
１７１、１７２、１８１、１８２  外部端子
Ｒ１１１、Ｒ１１２、Ｒ１２１、Ｒ１２２  抵抗素子
【図１】
2009037456.tif 000003
【図２】
2009037456.tif 000004
【図３】
2009037456.tif 000005
【図４】
2009037456.tif 000006
【図５】
2009037456.tif 000007
【図６】
2009037456.tif 000008