(57)【要約】【課題】部品点数を増加を抑制しつつ入出力端子間のショートを検出する。【解決手段】中央処理装置と、中央処理装置からの信号を入出力端子に入出力するための複数の入出力ポートと、を備え、複数の入出力ポートは、入出力端子を論理レベルがハイとなる電圧へ引き上げる第１ドライバ素子と、第１素子とは異なる駆動力で入出力端子を論理レベルがローとなる電圧に引き下げる第２ドライバ素子と、を有する、マイクロコンピュータにおいて、第１，第２ドライバ素子は、第１，第２ドライバ素子の双方で入出力端子を駆動したときに所定時間内に入出力端子が論理レベルがハイとなる電圧または論理レベルがローとなる電圧に固定されるように駆動力が調整されている。【選択図】図１
2018085028.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置と、
前記中央処理装置からの信号を入出力端子に入出力する複数の入出力ポートと、
を備え
前記複数の入出力ポートは、前記入出力端子を論理レベルがハイとなる電圧へ引き上げる第１ドライバ素子と、前記第１ドライバ素子とは異なる駆動力で前記入出力端子を論理レベルがローとなる電圧に引き下げる第２ドライバ素子と、を有する、
マイクロコンピュータであって、
前記第１，第２ドライバ素子は、前記第１，第２ドライバ素子の双方で前記入出力端子を駆動したときに所定時間内に前記入出力端子が論理レベルがハイとなる電圧または論理レベルがローとなる電圧に固定されるように駆動力が調整されている、
マイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータに関し、詳しくは、中央処理装置と、入出力ポートと、を備えるマイクロコンピュータに関する。
【背景技術】
【０００２】
従来、この種のマイクロコンピュータを備えるシステムとして、マイクロコンピュータの他に、信号出力回路を備えるものが提案されている（例えば、特許文献１参照）。信号出力回路は、第１，第２の出力バッファと、第１，第２の出力端子と、を備えている。第１，第２の出力端子は、第１，第２の出力バッファからの信号をマイクロコンピュータに出力している。信号出力回路は、更に、第１出力バッファと第１出力端子との間に接続された第１抵抗素子と、第２出力バッファと第２出力端子との間に接続され第１抵抗素子より抵抗値が大きい第２抵抗素子と、を備えている。そして、信号出力回路は、第１の出力端子からハイレベルを維持する信号を出力し、第２の出力端子から一定周期のパルス信号を出力する。第１抵抗素子の抵抗値が第２抵抗素子の抵抗値より小さいから、第１の出力端子と第２の出力端子とがショート（短絡）すると、第１の出力バッファにより第２の出力端子の電圧がハイレベルに維持される。そして、マイクロコンピュータで、第１の出力端子からの信号と第２の出力端子からの信号とを調べることで、第１の出力端子と第２の出力端子とのショートを検出している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１０７７５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の装置におけるショートの検出方法をマイクロコンピュータに適用する場合、マイクロコンピュータの入出力ポートと入出力端子との間に抵抗素子を接続することになる。入出力ポートと入出力端子との間に抵抗素子を接続すると、入出力ポートと入出力端子との間の信号の遅延が大きくなってしまう。こうした信号の遅延を抑制してショートを検出する手法として、ショートを検出するための専用のショート検出回路を設ける手法がある。しかしながら、この手法では、部品点数が増加してしまう。
【０００５】
本発明のマイクロコンピュータは、部品点数の増加を抑制しつつ入出力端子間のショートを検出することを主目的とする。
【課題を解決するための手段】
【０００６】
本発明のマイクロコンピュータは、上述の主目的を達成するために以下の手段を採った。
【０００７】
本発明のマイクロコンピュータは、
中央処理装置と、
前記中央処理装置からの信号を入出力端子に入出力する複数の入出力ポートと、
を備え
前記複数の入出力ポートは、前記入出力端子を論理レベルがハイとなる電圧へ引き上げる第１ドライバ素子と、前記第１ドライバ素子とは異なる駆動力で前記入出力端子を論理レベルがローとなる電圧に引き下げる第２ドライバ素子と、を有する、
マイクロコンピュータであって、
前記第１，第２ドライバ素子は、前記第１，第２ドライバ素子の双方で前記入出力端子を駆動したときに所定時間内に前記入出力端子が論理レベルがハイとなる電圧または論理レベルがローとなる電圧に固定されるように駆動力が調整されている、
ことを要旨とする。
【０００８】
この本発明のマイクロコンピュータでは、第１，第２ドライバ素子は、第１，第２ドライバ素子の双方で入出力端子を駆動したときに所定時間内に入出力端子が論理レベルがハイとなる電圧または論理レベルがローとなる電圧に固定されるように駆動力が調整されている。第１，第２ドライバ素子は、第１，第２ドライバ素子の双方で入出力端子を駆動したときに所定時間内に入出力端子が論理レベルがハイとなる電圧または論理レベルがローとなる電圧に固定されるように駆動力が調整されているから、２つの入出力端子間にショート（短絡）が生じると、中央処理装置からの信号に拘わらず、２つの入出力端子が論理レベルがハイとなる電圧または論理レベルがローとなる電圧に固定される。したがって、中央処理装置からの信号と、２つの入出力端子の信号と、を比較することで、２つの入出力端子間にショートが生じているか否かを検出することができる。抵抗素子や専用のショート検出回路を設ける必要がないから、部品点数の増加を抑制しつつ入出力端子間のショートを検出できる。
【０００９】
こうした本発明のマイクロコンピュータにおいて、前記第１，第２ドライバ素子は、ＭＯＳトランジスタとしてもよいし、バイポーラトランジスタとしてもよい。
【００１０】
また、本発明のマイクロコンピュータにおいて、前記第１，第２ドライバ素子は、ＰＭＯＳトランジスタであり、第２ドライバ素子は、ＮＭＯＳトランジスタであり、更に、前記第１，第２ドライバ素子は、ＣＭＯＳインバータを構成していてもよいし、前記第１，第２ドライバ素子は、バイポーラトランジスタであり、更に、前記第１，第２ドライバ素子は、ＴＴＬインバータを構成していてもよいし、前記第１，第２ドライバ素子は、ＭＯＳトランジスタであり、更に、前記第１，第２ドライバ素子は、コンパレータを構成していてもよい。
【００１１】
また、本発明のマイクロコンピュータにおいて、前記中央処理装置は、複数の入出力ポートから２つの入出力ポートを選択し、選択した２つの入出力ポートのうち一方の入出力ポートに第１ドライバ素子を作動させる第１出力指令を出力し、他方の入出力ポートに第２ドライバ素子を作動させる第２出力指令を出力し、前記入出力ポートは、前記第１，第２出力指令が入力されているときに前記２つの入出力端子の双方がハイ側の電圧またはロー側の電圧に固定されているときに、前記２つの入出力端子間にショートが発生していることを検出してもよい。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施例としてのマイコン２０の構成の概略を示す構成図である。
【図２】ＣＰＵ２２により実行されるショート検出処理ルーチンの一例を示すフローチャートである。
【図３】入出力端子ＩＯ１と入出力端子ＩＯ２との間にショートが発生しているときに出力バッファ４０から出力バッファ４２へ流れる電流の一例を示す説明図である。
【図４】変形例のショート検出処理ルーチンの一例を示すフローチャートである。
【図５】マイコン間通信システム１００の構成の概略を示す構成図である。
【発明を実施するための形態】
【００１３】
次に、本発明を実施するための形態を実施例を用いて説明する。
【実施例】
【００１４】
図１は、本発明の一実施例としてのマイクロコンピュータ（以下、「マイコン」という）２０の構成の概略を示す構成図である。マイコン２０は、中央処理演算装置（以下、「ＣＰＵ」という）２２を中心とするマイクロプロセッサとして構成されており、ＣＰＵ２２の他に、出力ポート２４，２６と、入力ポート２８，３０と、図示はしないが、処理プログラムを記憶するＲＯＭやデータを一時的に記憶するＲＡＭなどと、を備える。ＣＰＵ２２や出力ポート２４，２６，入力ポート２８，３０、図示しないＲＯＭ，ＲＡＭは、内部バス３２を介して互いに信号をやりとりしている。
【００１５】
ＣＰＵ２２は、各種の演算や図示しないＲＯＭ，ＲＡＭなどに対する各種制御，出力ポート２４，２６，入力ポート２８，３０との信号のやりとりなどを実行している。
【００１６】
出力ポート２４は、インバータＩＮＶ１と、出力バッファ４０と、を備えている。インバータＩＮＶ１は、ＣＰＵ２２からの信号の論理レベルを反転させて、出力バッファ４０に出力する。出力バッファ４０は、ＣＭＯＳインバータとして構成されており、インバータＩＮＶ１からの信号の論理レベルに応じた電圧で入出力端子ＩＯ１に接続された外部回路を駆動する。出力バッファ４０は、ハイサイドトランジスタＰ１と、ローサイドトランジスタＮ１とを備えている。ハイサイドトランジスタＰ１は、ＰＭＯＳトランジスタとして構成されており、ソースが電源に接続されている。ローサイドトランジスタＮ１は、ドレインとゲートがハイサイドトランジスタＰ１のドレインとゲートに接続され、ソースが接地に接続されている。ローサイドトランジスタＮ１は、ハイサイドトランジスタＰ１とローサイドトランジスタＮ１との双方で入出力端子ＩＯ１を駆動したときに、参照時間Ｔｒｅｆ（例えば、マイコン２０の動作クロック信号の１周期の長さなど）内に入出力端子ＩＯ１が論理レベルがハイの電圧に固定されるように、ハイサイドトランジスタＰ１の駆動力より弱くなるように（同一のゲート電圧で流れる電流が小さくなるように）調整されている。
【００１７】
出力ポート２６は、出力ポート２４と同様に、インバータＩＮＶ２と、出力バッファ４２と、を備えている。出力バッファ４２は、出力バッファ４０と同様に、ＣＭＯＳインバータとして構成されており、インバータＩＮＶ１からの信号の論理レベルに応じた電圧で入出力端子ＩＯ１に接続された外部回路を駆動する。出力バッファ４２は、ハイサイドトランジスタＰ２と、ローサイドトランジスタＮ２とを備えている。ハイサイドトランジスタＰ２は、ＰＭＯＳトランジスタとして構成されており、ハイサイドトランジスタＰ１と同一の駆動力となるように（同一のゲート電圧で流れる電流が同一となるように）形成されている。ハイサイドトランジスタＰ２は、ソースが電源に接続されている。ローサイドトランジスタＮ２は、ＮＭＯＳトランジスタとして構成されており、ローサイドトランジスタＮ１と同一の駆動力となるように（同一のゲート電圧で流れる電流が同一となるように）形成されている。ローサイドトランジスタＮ２は、ドレインとゲートがハイサイドトランジスタＰ１のドレインとゲートに接続され、ソースが接地に接続されている。つまり、ローサイドトランジスタＮ２は、ハイサイドトランジスタＰ２とローサイドトランジスタＮ２との双方で入出力端子ＩＯ２を駆動したときに、参照時間Ｔｒｅｆ内に入出力端子ＩＯ２の論理レベルがハイの電圧に固定されるように、ハイサイドトランジスタＰ１より駆動力が弱くなるように（同一のゲート電圧で流れる電流が小さくなるように）調整されている。
【００１８】
入力ポート２８，３０は、入出力端子ＩＯ１，ＩＯ２からの信号をＣＰＵ２２へ出力する。
【００１９】
こうして構成されたマイコン２０では、ＣＰＵ２２からの信号を内部バス３２，出力ポート２４，２６を介して入出力端子ＩＯ１，ＩＯ２に出力したり、入出力端子ＩＯ１．ＩＯ２からの信号を入力ポート２８，３０，内部バス３２を介してＣＰＵ２２に入力する。
【００２０】
ＣＰＵ２２からの信号を入出力端子ＩＯ１，ＩＯ２に出力するときの動作は、以下の通りである。最初に、ＣＰＵ２２は、内部バス３２を介して出力指令ＯＰ１＊，ＯＰ２＊を出力ポート２４，２６に出力する。出力指令ＯＰ１＊，ＯＰ２＊は、論理レベルにおけるＨｉ（ハイ）レベルまたはＬｏ（ロー）レベルの電圧の信号である。出力指令ＯＰ１＊，ＯＰ２＊を受信した出力ポート２４，２６は、出力指令ＯＰ１＊，ＯＰ２＊をインバータＩＮＶ１，ＩＮＶ２を介して出力バッファ４０，４２のハイサイドトランジスタＰ１，Ｐ２と、ローサイドトランジスタＮ１，Ｎ２のゲートに入力する。出力指令ＯＰ１＊がＨｉレベルであるときには、インバータＩＮＶ１によりＬｏレベルの電圧が出力バッファ４０のハイサイドトランジスタＰ１，ローサイドトランジスタＮ１のゲートに入力される。これにより、ハイサイドトランジスタＰ１がオンとなり、ローサイドトランジスタＮ１がオフとなって入出力端子ＩＯ１がＨｉレベルの電圧に引き上げられる。出力指令ＯＰ２＊がＨｉレベルであるときには、出力指令ＯＰ１＊がＨｉレベルであるときと同様に、ハイサイドトランジスタＰ２がオンとなり、ローサイドトランジスタＮ２がオフとなって入出力端子ＩＯ１がＨｉレベルの電圧に引き上げられる。出力指令ＯＰ１＊がＬｏレベルであるときには、インバータＩＮＶ１によりＨｉレベルの電圧が出力バッファ４０のハイサイドトランジスタＰ１，ローサイドトランジスタＮ１のゲートに入力される。これにより、ハイサイドトランジスタＰ１がオフとなり、ローサイドトランジスタＮ１がオンとなって入出力端子ＩＯ１がＬｏレベルの電圧に引き下げられる。出力指令ＯＰ２＊がＬｏレベルであるときには、出力指令ＯＰ１＊がＬｏレベルであるときと同様に、ハイサイドトランジスタＰ２がオフとなり、ローサイドトランジスタＮ２がオンとなって入出力端子ＩＯ２がＬｏレベルの電圧に引き下げられる。
【００２１】
次に、こうして構成されたマイコン２０の動作、特に、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショート（短絡）を検出する際の動作について説明する。図２は、ＣＰＵ２２により実行されるショート検出処理ルーチンの一例を示すフローチャートである。このルーチンは、マイコン２０が起動された直後に実行される。
【００２２】
本ルーチンが実行されると、ＣＰＵ２２は、出力指令ＯＰ１＊をＨｉレベルに設定すると共に出力指令ＯＰ２＊をＬｏレベルに設定して、出力指令ＯＰ１＊，ＯＰ２＊を出力ポート２４，２６に出力する処理を実行する（ステップＳ１００）。Ｈｉレベルの出力指令ＯＰ１＊が入力された出力ポート２４では、ハイサイドトランジスタＰ１がオンすると共にローサイドトランジスタＮ１がオフする。Ｌｏレベルの出力指令ＯＰ２＊が入力された出力ポート２６は、ハイサイドトランジスタＰ２がオフすると共にローサイドトランジスタＮ２がオンする。
【００２３】
続いて、入力ポート２８，３０から入出力端子ＩＯ１，ＩＯ２の論理レベルを示す信号である出力信号ＯＰ１，ＯＰ２を入力し（ステップＳ１１０）、出力信号ＯＰ１を調べる（ステップＳ１２０）と共に出力信号ＯＰ２を調べる（ステップＳ１３０）。
【００２４】
ステップＳ１２０，Ｓ１３０の処理で、出力信号ＯＰ１がＨｉレベルであり、且つ、出力信号がＬｏレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないと判断して、続いて、出力指令ＯＰ１＊をＬｏレベルに設定すると共に出力指令ＯＰ２＊をＨｉレベルに設定して、出力指令ＯＰ１＊，ＯＰ２＊を出力ポート２４，２６に出力する（ステップＳ１４０）。Ｌｏレベルの出力指令ＯＰ１＊が入力された出力ポート２４では、ハイサイドトランジスタＰ１がオフすると共にローサイドトランジスタＮ１がオンする。Ｈｉレベルの出力指令ＯＰ２＊が入力された出力ポート２６では、ハイサイドトランジスタＰ２がオンすると共にローサイドトランジスタＮ２がオフする。ここで、ステップＳ１２０，Ｓ１３０の処理で出力信号ＯＰ１がＨｉレベルであり、且つ、出力信号ＯＰ２がＬｏレベルであると判定されたときに、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないと判断する理由について説明する。
【００２５】
図３は、入出力端子ＩＯ１と入出力端子ＩＯ２との間にショートが発生しているときに出力バッファ４０から出力バッファ４２へ流れる電流の一例を示す説明図である。図中、太線矢印は、電流の流れを示している。入出力端子ＩＯ１と入出力端子ＩＯ２との間にショートが発生したときに、出力指令ＯＰ１＊をＨｉレベルに設定し且つ出力指令ＯＰ２＊をＬｏレベルに設定すると、出力バッファ４０のハイサイドトランジスタＰ１と出力バッファ４２のローサイドトランジスタＮ２がオンして、ハイサイドトランジスタＰ１から入出力端子ＩＯ１，ＩＯ２を介してローサイドトランジスタＮ２に電流が流れる。出力バッファ４０，４２では、上述したように、ハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）とローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）の双方でオンとなり入出力端子ＩＯ１，ＩＯ２を駆動したときに、参照時間Ｔｒｅｆ内に入出力端子ＩＯ１，ＩＯ２の論理レベルがハイの電圧に固定されるように、ハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）よりローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）の駆動力が弱くなるように（同一のゲート電圧で流れる電流が小さくなるように）調整されている。そのため、出力バッファ４０のハイサイドトランジスタＰ１から入出力端子ＩＯ１，ＩＯ２を介して出力バッファ４２のローサイドトランジスタＮ２に電流が流れると、ローサイドトランジスタＮ２が入出力端子ＩＯ２の電圧をＬｏレベルの電圧まで引き下げることができなくなり、入出力端子ＩＯ１，ＩＯ２が共にＨｉレベルとなる。すなわち、出力指令ＯＰ１＊をＨｉレベルとし、且つ、出力指令ＯＰ２＊をＬｏレベルとした場合において、入出力端子ＩＯ１，ＩＯ２が共にＨｉレベルとなるときには入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生しており、入出力端子ＩＯ１，ＩＯ２のいずれかがＬｏレベルのときには入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生しないと判断できるのである。こうした理由から、ステップＳ１２０，Ｓ１３０の処理で、出力信号ＯＰ１がＨｉレベルであり、且つ、出力信号ＯＰ２がＬｏレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないと判断するのである。
【００２６】
ステップＳ１４０の処理で、出力指令ＯＰ１＊，ＯＰ２＊を出力ポート２４，２６に出力すると、続いて、入力ポート２８，３０から出力信号ＯＰ１，ＯＰ２を入力し（ステップＳ１５０）、出力信号ＯＰ１を調べる（ステップＳ１６０）と共に出力信号ＯＰ２を調べる（ステップＳ１７０）。
【００２７】
ステップＳ１６０，Ｓ１７０の処理で、出力信号ＯＰ１がＬｏレベルであり、出力信号ＯＰ２がＨｉレベルであると判定されたときには、正常である（入出力端子ＩＯ１，ＩＯ２にショートは発生していない）と判定して（ステップＳ１８０）、本ルーチンを終了する。
【００２８】
ステップＳ１２０の処理で出力信号ＯＰ１がＬｏレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないが、出力指令ＯＰ１＊がＨｉレベルであるにも拘わらず入出力端子ＩＯ１がＬｏレベルであるから、入出力端子ＩＯ１と入出力端子ＩＯ２とは異なる他の端子（接地端子）との間でショートが発生していると判定して（ステップＳ２００）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ１と他の端子（接地端子）との間のショートを検出することができる。
【００２９】
ステップＳ１２０，Ｓ１３０の処理で、出力信号ＯＰ１がＨｉレベルであり、且つ、出力信号ＯＰ２がＨｉレベルであると判定されたとき、すなわち、ステップＳ１００の処理で出力指令ＯＰ１＊をＨｉレベル，出力指令ＯＰ２＊をＬｏレベルに設定しているが、入出力端子ＩＯ１，ＩＯ２が共にＨｉレベルとなっているときには、入出力端子ＩＯ１と入出力端子ＩＯ２とがショートしている可能性があると判断して、ステップＳ２１０以降の入出力端子ＩＯ１と入出力端子ＩＯ２との間にショートが生じているか否かを確定する処理を実行する。
【００３０】
ステップＳ２１０の処理では、出力指令ＯＰ１＊をＬｏレベルに設定すると共に出力指令ＯＰ２＊をＨｉレベルに設定して、出力指令ＯＰ１＊，ＯＰ２＊を出力ポート２４，２６に出力する（ステップＳ２１０）。Ｌｏレベルの出力指令ＯＰ１＊が入力された出力ポート２４では、ハイサイドトランジスタＰ１がオフすると共にローサイドトランジスタＮ１がオンする。Ｈｉレベルの出力指令ＯＰ２＊が入力された出力ポート２６では、ハイサイドトランジスタＰ２がオンすると共にローサイドトランジスタＮ２がオフする。
【００３１】
続いて、出力信号ＯＰ１を入力し（ステップＳ２２０）、出力信号ＯＰ１を調べる（ステップＳ２３０）。ステップＳ２３０の処理で出力信号ＯＰ１がＬｏレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生していないと判断する。ここで、ステップＳ２３０の処理で出力信号ＯＰ１がＬｏレベルであると判定されたときに、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないと判断する理由について説明する。
【００３２】
入出力端子ＩＯ１と入出力端子ＩＯ２との間にショートが発生したときに、出力指令ＯＰ１＊をＬｏレベルに設定し且つ出力指令ＯＰ２＊をＨｉレベルに設定すると、出力バッファ４２のハイサイドトランジスタＰ２と出力バッファ４０のローサイドトランジスタＮ１がオンして、ハイサイドトランジスタＰ２から入出力端子ＩＯ２，ＩＯ１を介してローサイドトランジスタＮ１に電流が流れる。出力バッファ４０，４２では、上述したように、ハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）とローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）の双方でオンとなり入出力端子ＩＯ１，ＩＯ２を駆動したときに、参照時間Ｔｒｅｆ内に入出力端子ＩＯ１，ＩＯ２の論理レベルがＨｉレベルの電圧に固定されるように、ハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）よりローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）の駆動力が弱くなるように（同一のゲート電圧で流れる電流が小さくなるように）調整されている。そのため、出力バッファ４２のハイサイドトランジスタＰ２から入出力端子ＩＯ１，ＩＯ２を介して出力バッファ４０のローサイドトランジスタＮ１に電流が流れると、ローサイドトランジスタＮ１が入出力端子ＩＯ１の電圧をＬｏレベルの電圧に引き下げることができなくなり、入出力端子ＩＯ１，ＩＯ２が共にＨｉレベルとなる。すなわち、出力指令ＯＰ１＊をＬｏレベルとして、且つ、出力指令ＯＰ２をＨｉレベルとした場合にはおいて、入出力端子ＩＯ１，ＩＯ２が共にＨｉレベルのときには入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生しており、入出力端子ＩＯ１，ＩＯ２のいずれかがＬｏレベルのときには入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生しないと判断できるのである。こうした理由から、ステップＳ２３０の処理で、出力信号ＯＰ１がＬｏレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないと判断するのである。
【００３３】
ステップＳ２３０の処理で出力信号ＯＰ１がＬｏレベルであると判定されたときには、入出力端子ＩＯ２と入出力端子ＩＯ１と異なる他の端子（例えば、接地端子）との間でショートが発生していると判定して（ステップＳ１９０）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ２と他の端子との間のショートを検出することができる。
【００３４】
ステップＳ２３０の処理で出力信号ＯＰ１がＨｉレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生していると判定して（ステップＳ２４０）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートを検出することができる。そして、マイコン２０にショートを検出するための抵抗素子やショート検出回路を付加する必要がないから、部品点数の増加を抑制しつつ、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートを検出することができる。
【００３５】
ステップＳ１６０の処理で、出力信号ＯＰ１がＨｉレベルであると判定されたとき、つまり、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生しておらずステップＳ１４０の処理で出力指令ＯＰ１＊をＨｉレベルからＬｏレベルに切り替えたにも拘わらず入出力端子ＩＯ１がＨｉレベルのままであるときには、入出力端子ＩＯ１と電源電圧が供給されている入出力端子ＩＯ２とは異なる他の端子（例えば、電源電圧を供給する図示しない電源端子）との間でショートが発生していると判定して（ステップＳ２００）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ１と他の端子（電源端子）との間のショートを検出することができる。
【００３６】
ステップＳ１６０，Ｓ１７０の処理で、出力信号ＯＰ１，出力信号ＯＰ２が共にＬｏレベルであると判定されたとき、ステップＳ１４０の処理で出力指令ＯＰ１＊をＨｉレベルからＬｏレベルに切り替えることにより入出力端子ＩＯ１がＨｉレベルからＬｏレベルに切り替わっているが、出力指令ＯＰ２＊をＬｏレベルからＨｉレベルに切り替えても入出力端子ＩＯ２がＬｏレベルのままであるときには、入出力端子ＩＯ２と接地電圧が供給されている入出力端子ＩＯ２とは異なる他の端子（例えば、図示しない接地端子）との間でショートが発生していると判定して（ステップＳ１９０）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ２と他の端子（接地端子）との間のショートを検出することができる。
【００３７】
以上説明した実施例のマイコン２０によれば、ハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）とローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）の双方をオンして入出力端子ＩＯ１，ＩＯ２を駆動したときに、参照時間Ｔｒｅｆ内に入出力端子ＩＯ１，ＩＯ２のＨｉレベルの電圧に固定されるように、ハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）よりローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）の駆動力を弱く調整しているから、入出力端子ＩＯ１と入出力端子ＩＯ２とのショートを検出することができる。
【００３８】
実施例のマイコン２０では、ハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）よりローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）の駆動力を弱く調整しているが、ローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）よりハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）の駆動力を弱く調整してもよい。この場合、図２に例示したショート検出ルーチンに代えて、図４に例示した変形例のショート検出ルーチンを実行すればよい。
【００３９】
図４に例示したショート検出ルーチンでは、最初に、ＣＰＵ２２は、出力指令ＯＰ１＊をＬｏレベルに設定すると共に出力指令ＯＰ２＊をＨｉレベルに設定して、出力指令ＯＰ１＊，ＯＰ２＊を出力ポート２４，２６に出力する（ステップＳ３００）。Ｌｏレベルの出力指令ＯＰ１＊が入力された出力ポート２４では、ハイサイドトランジスタＰ１がオフすると共にローサイドトランジスタＮ１がオンする。Ｈｉレベルの出力指令ＯＰ２＊が入力された出力ポート２６では、ハイサイドトランジスタＰ２がオンすると共にローサイドトランジスタＮ２がオフする。
【００４０】
続いて、入力ポート２８，３０から入出力端子ＩＯ１，ＩＯ２の論理レベルを示す信号である出力信号ＯＰ１，ＯＰ２を入力し（ステップＳ３１０）、出力信号ＯＰ１を調べる（ステップＳ３２０）と共に出力信号ＯＰ２を調べる（ステップＳ３３０）。
【００４１】
ステップＳ３２０，Ｓ３３０の処理で、出力信号ＯＰ１がＬｏレベルであり、且つ、出力信号がＨｉレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないと判断して、ステップＳ３４０以降の処理に進む。ここで、ステップＳ３２０，Ｓ３３０の処理で、出力信号ＯＰ１がＬｏレベルであり、且つ、出力信号がＨｉレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないと判断する理由について説明する。
【００４２】
出力バッファ４０，４２では、上述したように、ハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）とローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）の双方でオンとなり入出力端子ＩＯ１，ＩＯ２を駆動したときに、参照時間Ｔｒｅｆ内に入出力端子ＩＯ１，ＩＯ２のＬｏレベルの電圧に固定されるように、ローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）よりハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）の駆動力が弱くなるように（同じゲート電圧で流れる電流が小さくなるように）調整されている。そのため、入出力端子ＩＯ１と入出力端子ＩＯ２との間にショートが発生して、出力バッファ４２のハイサイドトランジスタＰ２から入出力端子ＩＯ１，ＩＯ２を介して出力バッファ４０のローサイドトランジスタＮ１に電流が流れると、ハイサイドトランジスタＰ２が入出力端子ＩＯ２の電圧をＨｉ側に引き上げることができなくなり、入出力端子ＩＯ１，ＩＯ２が共にＬｏレベルとなる。すなわち、出力指令ＯＰ１＊をＬｏレベルとし、且つ、出力指令ＯＰ２をＨｉレベルとした場合において、入出力端子ＩＯ１，ＩＯ２が共にＬｏレベルのときには入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生しており、入出力端子ＩＯ１，ＩＯ２のいずれかがＨｉレベルのときには入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生しないと判断する
【００４３】
ステップＳ３４０の処理では、出力指令ＯＰ１＊をＨｉレベルに設定すると共に出力指令ＯＰ２＊をＬｏレベルに設定して、出力指令ＯＰ１＊，ＯＰ２＊を出力ポート２４，２６に出力する（ステップＳ３４０）。Ｈｉレベルの出力指令ＯＰ１＊が入力された出力ポート２４では、ハイサイドトランジスタＰ１がオンすると共にローサイドトランジスタＮ１がオフする。Ｌｏレベルの出力指令ＯＰ２＊が入力された出力ポート２６では、ハイサイドトランジスタＰ２がオフすると共にローサイドトランジスタＮ２がオンする。
【００４４】
続いて、入力ポート２８，３０から出力信号ＯＰ１，ＯＰ２を入力し（ステップＳ３５０）、出力信号ＯＰ１を調べる（ステップＳ３６０）と共に出力信号ＯＰ２を調べる（ステップＳ３７０）。
【００４５】
ステップＳ３６０，Ｓ３７０の処理で、出力信号ＯＰ１がＨｉレベルであり、出力信号ＯＰ２がＬｏレベルであると判定されたときには、正常である（入出力端子ＩＯ１，ＩＯ２にショートは発生していない）と判定して（ステップＳ３８０）、本ルーチンを終了する。
【００４６】
ステップＳ３２０の処理で出力信号ＯＰ１がＨｉレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないが、出力指令ＯＰ１＊がＬｏレベルであるにも拘わらず入出力端子ＩＯ１がＨｉレベルであるから、入出力端子ＩＯ１と入出力端子ＩＯ２とは異なる他の端子（電源端子）との間でショートが発生していると判定して（ステップＳ４００）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ１と他の端子（接地端子）との間のショートを検出することができる。
【００４７】
ステップＳ３２０，Ｓ３３０の処理で、出力信号ＯＰ１がＬｏレベルであり、且つ、出力信号ＯＰ２がＬｏレベルであると判定されたとき、すなわち、ステップＳ３００の処理で出力指令ＯＰ１＊をＬｏレベル，出力指令ＯＰ２＊をＨｉレベルに設定しているが、入出力端子ＩＯ１，ＩＯ２が共にＬｏレベルとなっているときには、入出力端子ＩＯ１と入出力端子ＩＯ２とがショートしている可能性があると判断して、ステップＳ４１０の処理以降の入出力端子ＩＯ１と入出力端子ＩＯ２との間にショートが生じているか否かを確定する処理を行なう。
【００４８】
ステップＳ４１０の処理では、出力指令ＯＰ１＊をＨｉレベルに設定すると共に出力指令ＯＰ２＊をＬｏレベルに設定して、出力指令ＯＰ１＊，ＯＰ２＊を出力ポート２４，２６に出力する（ステップＳ４１０）。Ｈｉレベルの出力指令ＯＰ１＊が入力された出力ポート２４では、ハイサイドトランジスタＰ１がオンすると共にローサイドトランジスタＮ１がオフする。Ｌｏレベルの出力指令ＯＰ２＊が入力された出力ポート２６では、ハイサイドトランジスタＰ２がオフすると共にローサイドトランジスタＮ２がオンする。
【００４９】
続いて、出力信号ＯＰ１を入力し（ステップＳ４２０）、出力信号ＯＰ１を調べる（ステップＳ４３０）。ステップＳ４３０の処理で出力信号ＯＰ１がＨｉレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生していないと判断する。入出力端子ＩＯ１と入出力端子ＩＯ２との間にショートが発生したときに、出力指令ＯＰ１＊をＨｉレベルに設定し且つ出力指令ＯＰ２＊をＬｏレベルに設定すると、出力バッファ４０ハイサイドトランジスタＰ１から入出力端子ＩＯ１，ＩＯ２を介して出力バッファ４２のローサイドトランジスタＮ２に電流が流れる。このとき、出力バッファ４０，４２では、上述したように、ハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）とローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）の双方でオンとなり入出力端子ＩＯ１，ＩＯ２を駆動したときに、参照時間Ｔｒｅｆ内に入出力端子ＩＯ１，ＩＯ２の論理レベルがＬｏレベルの電圧に固定されるように、ローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）よりハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）の駆動力が弱く（同じゲート電圧で流れる電流が小さくなるように）調整されている。そのため、ハイサイドトランジスタＰ１が入出力端子ＩＯ１の電圧をＨｉレベル側の電圧に引き上げることができなくなり、入出力端子ＩＯ１，ＩＯ２が共にＬｏレベルとなる。すなわち、出力指令ＯＰ１＊をＨｉレベルとし、且つ、出力指令ＯＰ２＊をＬｏレベルとして場合において、入出力端子ＩＯ１，ＩＯ２が共にＬｏレベルのときには入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生しており、入出力端子ＩＯ１，ＩＯ２のいずれかがＨｉレベルのときには入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生しないと判断できるのである。こうした理由から、ステップＳ４３０の処理で、出力信号ＯＰ１がＨｉレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生していないと判断するのである。
【００５０】
ステップＳ４３０の処理で出力信号ＯＰ１がＨｉレベルであると判定されたときには、入出力端子ＩＯ２と入出力端子ＩＯ１と異なる他の端子（例えば、電源端子）との間でショートが発生していると判定して（ステップＳ３９０）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ２と他の端子との間のショートを検出することができる。
【００５１】
ステップＳ４３０の処理で出力信号ＯＰ１がＬｏレベルであると判定されたときには、入出力端子ＩＯ１と入出力端子ＩＯ２との間でショートが発生していると判定して（ステップＳ４４０）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートを検出することができる。そして、マイコン２０にショートを検出するための抵抗素子やショート検出回路を付加する必要がないから、部品点数の増加を抑制しつつ、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートを検出することができる。
【００５２】
ステップＳ３６０の処理で、出力信号ＯＰ１がＬｏレベルであると判定されたとき、つまり、入出力端子ＩＯ１と入出力端子ＩＯ２との間のショートが発生しておらず、ステップＳ３４０の処理で出力指令ＯＰ１＊をＬｏレベルからＨｉレベルに切り替えたにも拘わらず入出力端子ＩＯ１がＬｏレベルのままであるときには、入出力端子ＩＯ１と接地電圧が供給されている入出力端子ＩＯ２とは異なる他の端子（例えば、接地端子）との間でショートが発生していると判定して（ステップＳ４００）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ１と他の端子（例えば、電源端子）との間のショートを検出することができる。
【００５３】
ステップＳ３６０，Ｓ３７０の処理で、出力信号ＯＰ１，出力信号ＯＰ２が共にＨｉレベルであると判定されたときには、すなわち、ステップＳ３４０の処理で出力指令ＯＰ２＊をＨｉレベルからＬｏレベルに切り替えたにも拘わらず入出力端子ＩＯ２がＨｉレベルのままであるときには、入出力端子ＩＯ２と電源電圧が供給されている入出力端子ＩＯ１とは異なる他の端子（例えば、電源端子）との間でショートが発生していると判定して（ステップＳ３９０）、本ルーチンを終了する。こうした処理により、入出力端子ＩＯ２と他の端子（電源端子）との間のショートを検出することができる。このように、ローサイド側のトランジスタ（ローサイドトランジスタＮ１，Ｎ２）よりハイサイド側のトランジスタ（ハイサイドトランジスタＰ１，Ｐ２）の駆動力を弱く調整することにより、入出力端子ＩＯ１と入出力端子ＩＯ２とのショートを検出すうことができる。
【００５４】
実施例のマイクロコンピュータ２０では、出力バッファ４０，４２は、ＣＭＯＳインバータとして構成しているが、ＴＴＬインバータとして構成してもよいし、参照電圧と入力電圧とを比較して比較結果を出力信号ＯＰ１，ＯＰ２として出力するコンパレータとして構成してもよい。
【００５５】
実施例では、本発明をマイクロコンピュータ２０に適用する場合について例示しているが、図５に例示するマイコン間通信システム１００に適用してもよい。マイコン間通信システム１００は、マイクロコンピュータ１２０ａ，１２０ｂと、マイクロコンピュータ１２０ａ，１２０ｂ間の通信を調整するトランシーバ１２６と、を備える。マイクロコンピュータ１２０ａ，１２０ｂを、実施例のマイクロコンピュータ２０と同様の構成とし、それぞれで図３に例示したショート検出処理ルーチンを実行することにより、マイクロコンピュータ１２０ａ，１２０ｂの入出力端子ＩＯ１，ＩＯ２のショートを検出することができる。
【００５６】
実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係について説明する。実施例では、ＣＰＵ２２が「中央処理装置」に相当し、出力ポート２４，２６と入力ポート２８，３０とが「入出力ポート」に相当し、ハイサイドトランジスタＰ１，Ｐ２が「第１ドライバ素子」に相当し、ローサイドトランジスタＮ１，Ｎ２が「第２ドライバ素子」に相当する。
【００５７】
なお、実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係は、実施例が課題を解決するための手段の欄に記載した発明を実施するための形態を具体的に説明するための一例であることから、課題を解決するための手段の欄に記載した発明の要素を限定するものではない。即ち、課題を解決するための手段の欄に記載した発明についての解釈はその欄の記載に基づいて行なわれるべきものであり、実施例は課題を解決するための手段の欄に記載した発明の具体的な一例に過ぎないものである。
【００５８】
以上、本発明を実施するための形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において、種々なる形態で実施し得ることは勿論である。
【産業上の利用可能性】
【００５９】
本発明は、マイクロコンピュータの製造産業などに利用可能である。
【符号の説明】
【００６０】
２０，１２０ａ，１２０ｂ  マイクロコンピュータ（マイコン）、２２  ＣＰＵ，２４，２６  出力ポート、２８，３０  入力ポート、３２  内部バス、１００  マイコン間通信システム、１２６  トランシーバ、ＩＮＶ１，ＩＮＶ２  インバータ  Ｎ１，Ｎ２  ローサイドトランジスタ、Ｐ１，Ｐ２  ハイサイドトランジスタ。
【図１】
2018085028.tif 000003
【図２】
2018085028.tif 000004
【図３】
2018085028.tif 000005
【図４】
2018085028.tif 000006
【図５】
2018085028.tif 000007