(57)【要約】      （修正有）【課題】１つの入出力ポートに複数の割込み信号を入力することが可能な情報処理装置を提供する。【解決手段】外部から通知された信号に対応した処理をＣＰＵ１５が行う情報処理装置１００であって、複数の信号線が接続されたセレクタ２１と、前記セレクタの１つの出力線が入力される端子２２と、クロック信号を２つ以上の異なる分周期で分周する分周手段２５と、信号を記憶する記憶素子が複数個配置された信号記憶手段２３と、分周手段が分周した複数のクロック信号の位相に基づき、前記端子と前記信号記憶手段の各記憶素子を択一的に接続する信号分配回路２４と、前記複数の記憶素子の1つ以上に信号が格納されると、前記端子が信号を取得したことをＣＰＵに通知する信号取得通知手段１２と、を有する。【選択図】図２
2013101568.tif 000002
【特許請求の範囲】
【請求項１】
外部から通知された信号に対応した処理をＣＰＵが行う情報処理装置であって、
複数の信号線が接続されたセレクタと、
前記セレクタの１つの出力線が接続される端子と、
クロック信号を２つ以上の異なる分周期で分周する分周手段と、
信号を記憶する記憶素子が複数個配置された信号記憶手段と、
前記分周手段が分周した複数のクロック信号の位相に基づき、前記端子と前記信号記憶手段の各記憶素子を択一的に接続する信号分配回路と、
前記記憶素子の1つ以上に信号が格納されると、前記端子が信号を取得したことをＣＰＵに通知する信号取得通知手段と、
を有する情報処理装置。
【請求項２】
前記信号記憶手段の各記憶素子に優先度を割り当てる優先度割り当て手段と、
前記ＣＰＵと前記信号取得通知手段を独立に接続する第１の割込み線及び第２の割込み線と、
前記ＣＰＵが最も優先度が高い前記記憶素子の信号に基づく処理のために使用する、第１の制御バスと、
前記ＣＰＵが優先度が最高でない前記記憶素子の信号に基づく処理のために使用する、第２の制御バスと、を有する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記信号取得通知手段は、最も優先度が高い前記記憶素子に信号が格納された場合、前記第１の割込み線を介してＣＰＵに通知し、
前記信号取得通知手段は、優先度が最高でない前記記憶素子に信号が格納された場合、前記第１の割込み線が使用されていないことを条件に、前記第１の割込み線を介してＣＰＵに通知し、前記第１の割込み線が使用されている場合、前記第２の割込み線を介してＣＰＵに通知する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
複数のＣＰＵを有し、
各ＣＰＵが、それぞれＣＰＵに固有の前記第1の割込み線及び前記第２の割込み線を介して前記信号取得通知手段と接続されており、
前記第１の制御バス及び前記第２の制御バスは各ＣＰＵに共通である、
ことを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記第１の制御バスがいずれか１つ以上のＣＰＵにより使用中であることを示す使用中情報記憶手段、を有し、
前記使用中情報記憶手段が前記第１の制御バスが使用中でないことを示す場合、
前期信号取得通知手段は、前記第１の割込み線を介して、優先度が最高でない前記記憶素子に信号が格納されたことをＣＰＵに通知する、
ことを特徴とする請求項４記載の情報処理装置。
【請求項６】
ＣＰＵは、前記使用中情報記憶手段が前記第１の制御バスが使用中でないことを示す場合、前記第１の制御バスを使用して、優先度が最高でない前記記憶素子の信号に基づく処理を行い、
前記使用中情報記憶手段が前記第１の制御バスが使用中であることを示す場合、前記第２の制御バスを使用して、優先度が最高でない前記記憶素子の信号に基づく処理を行う、
ことを特徴とする請求項５記載の情報処理装置。
【請求項７】
ＣＰＵは、前記信号記憶手段の２つ以上の記憶素子が優先度が最高でない信号を格納している場合、１つの信号に基づく処理を行う毎に、前記使用中情報記憶手段が前記第１の制御バスが使用中であることを示すか否かを判定する、
ことを特徴とする請求項６記載の情報処理装置。
【請求項８】
複数の前記セレクタの出力線がそれぞれ入力される複数の端子と、
複数の前記信号記憶手段と、
各端子毎に、端子と記信号記憶手段の各記憶素子を択一的に接続する複数の信号分配回路と、
各端子をＣＰＵに対応づけるＣＰＵ対応付け手段と、を有し、
前記信号取得通知手段は、前記記信号記憶手段が接続されている前記端子に基づき、前記ＣＰＵ対応付け手段が対応づけたＣＰＵに、前記端子が信号を取得したことを通知する、
ことを特徴とする請求項４〜７いずれか１項記載の情報処理装置。
【請求項９】
外部から通知された信号に対応した処理をＣＰＵが行う情報処理装置の情報処理方法であって、
複数の信号線が接続されたセレクタが１つの信号を選択するステップと、
端子が、セレクタの１つの出力線から信号の入力を受け付けるステップと、
分周手段が、クロック信号を２つ以上の異なる分周期で分周するステップと、
信号分配回路が、前記分周手段が分周した複数のクロック信号の位相に基づき、前記端子と、記憶素子が複数個配置された信号記憶手段の１つの記憶素子を択一的に接続するステップと、
信号取得通知手段が、前記複数の記憶素子の1つ以上に信号が格納されると、前記端子が信号を取得したことをＣＰＵに通知するステップと、
を有する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部から通知された信号に対応した処理をＣＰＵが行う情報処理装置に関する。
【背景技術】
【０００２】
マイコンには外部からのデータを入出力するためのいくつかの入出力ポートが設けられている。外部からマイコンにデータを入力するには、マイコンが有する割込みの仕組みが利用されることが多い。しかしながら、マイコンに多くの機能を搭載するという試みがあり、入出力対象のデータの数に対し、マイコンの入出力ポートの数が足りなくなる状況が生じ始めた。より入出力ポートの数の多いマイコンを採用すれば解決されるが、マイコンのサイズが増大しコスト増となってしまう。
【０００３】
そこで、マイコンの入出力ポートの数よりも多くの種類のデータを入出力する場合、多重割り込み制御方式が採用されることがある（例えば、特許文献１参照。）。図９は、特許文献１のマイコンの構成図の一例を示す。エンコーダには複数の割り込み要因信号が接続されており、エンコーダは割込み信号の種類を、割込み要因信号の数よりも少ないビット数の２進符号にエンコードする。マイコンは、２進符号から割り込み要因信号を特定し、各割り込み要因に対応した処理へ分岐する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０５−２７４１６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１が図示する例では、４本の割込み信号線により２の４乗の１６種類の割込みを判別可能なので、マイコンに必要な入出力ポートの数を１５から４に減少させることができる。しかしながら、この技術でも、マイコンに入力されるデータの数（割込み信号線の数）が３個以上になると、少なくともマイコンの入出力ポートが２個以上必要になるという問題がある。
【０００６】
また、特許文献１に限らず、割込みをＮ倍に多重化すると、本来、１つの割込みがＮ個の割込み処理を必要とするため、プロセッサ及び制御バスの処理負荷がＮ倍に増加してしまうという問題も生じさせる。特に、シングルＣＰＵのマイコンでは負荷分散が困難である。
【０００７】
また、特許文献１の不都合を回避するため、１つの入出力ポートに複数の割込み信号を多重化することが検討される。しかし、このように多重化すると、割込みは優先度の高いものを優先するという原則があるが、割込みの優先度が逆転する現象が生じるおそれがある。
【０００８】
図１０は、優先度の異なる割込みの発生順と割込み処理について説明する図の一例である。図１０では、マイコンの１つの入出力ポートに８個の割込み信号を多重化している。８個の割込み信号はそれぞれGPIOx0〜GPIOx7に格納される。ここではGPIOx0に格納される割込みの優先度が最も高く、GPIOx7に格納される割込み信号の優先度が最も低いとする。
【０００９】
マイコンはシステムクロックの１周期毎に１つのGPIOxxを監視するので、８個のGPIOx0〜GPIOx7を全て監視するには、８クロックが必要になる。ここでは、GPIOx7から順番にGPIOx0までを監視している。
【００１０】
例えば、GPIOx0とGPIOx5に同じタイミングで割込みが発生した場合、マイコンはGPIOx5の割込みをGPIOx0よりも先に検出する。このため、優先度が高いGPIOx0よりも優先度が低いGPIOx5の割込み処理の方が先に開始され、優先度が高いGPIOx0の割込み処理が待たされることになる。マイコンが、常に、優先度が高いGPIOx0から先に割込みを検出すればよいが、割込み信号は車両の種類やグレードなどによっても変わってくるので、マイコンへの割込みの入力時に優先度順を確定することは困難である。
【００１１】
本発明は、上記課題に鑑み、１つの入出力ポートに複数の割込み信号を入力することが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、外部から通知された信号に対応した処理をＣＰＵが行う情報処理装置であって、複数の信号線が接続されたセレクタと、前記セレクタの１つの出力線が接続される端子と、クロック信号を２つ以上の異なる分周期で分周する分周手段と、信号を記憶する記憶素子が複数個配置された信号記憶手段と、前記分周手段が分周した複数のクロック信号の位相に基づき、前記端子と前記信号記憶手段の各記憶素子を択一的に接続する信号分配回路と、前記記憶素子の1つ以上に信号が格納されると、前記端子が信号を取得したことをＣＰＵに通知する信号取得通知手段と、を有することを特徴とする。
【発明の効果】
【００１３】
１つの入出力ポートに複数の割込み信号を入力することが可能な情報処理装置を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態の割込み処理の概略的な特徴を説明する図の一例である。
【図２】拡張ポート機構部を説明する図の一例である。
【図３】ＩＮＴＣ及びポートレジスタの構成図の一例である。
【図４】ＩＮＴＣの機能ブロック図の一例である。
【図５】GPIO‐xレジスタのレジスタGPIO‐00〜07のレジスタイメージを説明する図の一例である。
【図６】割込み処理実施中フラグ設定テーブル、優先度設定テーブル、割当設定テーブルの一例を示す図である。
【図７】マイコンが割込み処理する際の全体的な動作手順を説明するフローチャート図の一例である。
【図８】制御バスＡと制御バスＢによる割込みの効率化を説明する図の一例である。
【図９】特許文献１のマイコンの構成図の一例である。
【図１０】優先度の異なる割込みの発生順と割込み処理について説明する図の一例である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図１は、本実施形態の割込み処理の概略的な特徴を説明する図の一例である。マイコン１００には、拡張ポート機構部１１が搭載されている。拡張ポート機構部１１は、１つの入出力ポート２２（以下、区別する場合、入出力ポートGPIO‐0〜GPIO‐2という）に接続されたセレクタ２１及びGPIO‐xレジスタ（図ではｘは0〜2）が対となる構成を有する。
（１）１つのセレクタ２１には複数の割込み信号線が接続されており、セレクタ２１が１つの割込み信号を選択して入出力ポート２２と接続する。１つのGPIO‐xレジスタは、割込み信号線の数以上のレジスタGPIO‐00〜GPIO‐07を有している（図では８個であり、GPIO‐1レジスタのレジスタGPIO‐10〜GPIO‐17、GPIO‐2レジスタのレジスタGPIO‐20〜GPIO‐27は不図示）。レジスタGPIO‐00〜GPIO‐07は対応する割込み信号を記憶する。レジスタGPIO‐00〜GPIO‐07はそれぞれＩＮＴＣ１２と接続されているので、ＩＮＴＣ１２に割込み信号線の割込みを個別に通知できる。したがって、少ない（１つの）入出力ポート２２で、２つ以上の割込み信号を取り込むことができる。
（２）また、複数のＰＥ（Processor  Element）１５が制御バスＡと制御バスＢと接続されている（以下、区別する場合ＰＥ１〜３という）。ＩＮＴＣ１２は割込みを検出すると、レジスタGPIO‐00〜GPIO‐07の優先度に従って、最も優先度が高い割込みの割込み処理を、２本の制御バス１６のうち制御バスＡを使用して行う。それ以外の割込みに（以下、通常割込みという）対しては、制御バスＢを使用して割込み処理を行う。これにより、ＰＥ１〜３が優先度に応じて制御バスＡと制御バスＢを使い分けるので、割込みを多重化したために生じるＰＥ１５や制御バスの負荷が増大することを抑制できる。
（３）また、制御バスＡを最優先の割込み専用の制御バスとすることで、最優先の割込みが通常割込みにより待たされることを防止できる。一方、ＰＥ１〜３は制御バスＡが空いている場合は、最優先以外の割込みでも、制御バスＡを使用して割込み処理を行う。したがって、制御バスＡが空いている場合は、制御バスＡとＢが共に使用され、さらに処理効率を向上できる。
【００１６】
このように、本実施形態のマイコン１００は従来技術の課題を適切に解決することができる。
【実施例１】
【００１７】
図１について詳細に説明する。マイコン１００は、３つの入出力ポート２２、制御バスＡ及び制御バスＢに接続された、拡張ポート機構部１１、ＩＮＴＣ１２、ＲＯＭ１３、ＲＡＭ１４、並びに、ＰＥ１〜３を有している。マイコン１００は電子制御ユニット（ＥＣＵ：Electronic  Controller  Unit）に搭載され、燃費向上や運転者の負担軽減、安全性の向上などをもたらすため、エンジンなどの各種の車載装置を制御する。
【００１８】
ＰＥ１〜３は、プロセッサ、ＣＰＵ、又は、ＣＰＵコアと同様に、演算装置、キャッシュメモリ、及び、レジスタ等を有する中央処理装置の一態様である。ＰＥ１〜３は別々のプログラムを独立に実行することもできるし、ロックステップ方式を採用して全く同じプログラムを実行してもよい。図では、ＰＥ１がエンジン制御、ＰＥ２がボディ系の制御、ＰＥ３がナビ系の処理を行うとしている。なお、ＰＥの数は２つ以上であればよく、４つ以上でもよい。エンジン制御では、例えば、アクセル開度等を検出してスロットル開度や燃料噴射量を決定し、また、クランク角に基づきイグナイタの点火タイミングを制御する。ボディ制御では、例えば、電子キーと無線通信した結果によりドアロックを解除したり、ドアロックを施錠する。また、ドアの開閉によるカーテシスイッチのオン／オフを検出し車内灯を制御することなどが行われる。ナビ系の処理では、例えば、ＧＮＳＳ（Global  Navigation  Satellite  Systems）などを使用して車両の位置情報を検出し、周辺の道路地図に自車位置アイコンを液晶ディスプレイなどの表示装置に表示する処理が行われる。また、ラジオやテレビの受信装置、ＢＤプレーヤと連携して、表示装置にＡＶ系の画面やＵＩ（User  Interface）を表示する処理が行われる。
【００１９】
ＲＯＭ１３にはＰＥ１〜３が実行するプログラム、ＯＳ（Operating  System）等が記憶されている。ＲＡＭ１４はＰＥ１〜３が作業領域に使用するランダムアクセスメモリである。
【００２０】
拡張ポート機構部１１はポートレジスタ２３及びセレクタ２１を有する。ポートレジスタ２３は、入出力ポートGPIO‐0〜GPIO‐2のそれぞれに対応して、GPIO‐0レジスタ、GPIO‐1レジスタ、GPIO‐2レジスタを有する（以下、区別しない場合、GPIO‐xレジスタという場合がある）。１つのGPIO‐xレジスタは少なくともセレクタ２１に接続された割込み信号線の数以上のレジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27を有する。セレクタ２１には、車速センサ、ブレーキセンサ、オイルセンサ、レインセンサなどの各種センサが接続されている。
【００２１】
GPIO‐xレジスタとセレクタ２１は、それぞれが１つの入出力ポート２２を介して接続されている。図では入出力ポートGPIO‐0〜GPIO‐2は３つだが４つ以上とすることも可能である。なお、GPIO‐xレジスタのレジスタGPIO‐00〜GPIO‐07にどの割込み信号が記憶されるかは固定である。
【００２２】
図示する態様ではセレクタ２１は、不図示の電子制御ユニットの基板上に固定されている。また、図ではセレクタ２１がマイコン１００の外部に接続されているが、マイコン１００にスペースがあればマイコン内にセレクタ２１を配置してもよい。
【００２３】
ＩＮＴＣ１２は割込みコントローラであり、GPIO‐0レジスタのレジスタGPIO‐00〜GPIO‐07に割込み信号が記録されているか否かを判定する。GPIO‐1レジスタ、GPIO‐2レジスタについても同様である。割込み信号は、例えばＨｉｇｈ＝0x1（つまり“１”）とする。割込み信号が記録されている場合、ＩＮＴＣ１２はレジスタGPIO‐00〜GPIO‐07の優先度に応じて最優先割込み線又は通常割込み線を使用して、入出力ポートGPIO‐1〜GPIO‐2に対応したＰＥ１〜３に割込みする。本実施形態では、最優先の割込み信号は、GPIO‐0レジスタのレジスタGPIO‐00、GPIO‐1レジスタのレジスタGPIO‐10、GPIO‐2レジスタのレジスタGPIO‐20、に割込み信号が記憶された場合に発生する。ただし、後述する優先度設定テーブルにより、最優先の割込み信号のレジスタは可変である。割込みされたＰＥ１〜３は割込み処理を開始する。
【００２４】
図２は、拡張ポート機構部１１を説明する図の一例である。図２（ａ）において図１と同一部の説明は省略する。図２（ａ）では、入出力ポートGPIO‐０〜GPIO‐2のうち入出力ポートGPIO‐０に関係する構成のみを図示した。
【００２５】
拡張ポート機構部１１のGPIO‐0レジスタにはデマルチプレクサ２４が接続されている。デマルチプレクサ２４は、セレクタ２１から入出力ポートGPIO‐０に送信された割込み信号を、GPIO‐0レジスタのレジスタGPIO‐00〜GPIO‐07に振り分ける。セレクタ２１及びデマルチプレクサ２４には共通の制御信号が供給される。制御信号は、システムクロックを１／２、１／４、１／８分周したクロック信号であり、３つのクロック信号の位相状態（Ｈ  or  Ｌ）の組み合わせが制御信号となる。このため、マイコン１００はＰＥ１〜３に供給されるシステムクロックを分周器２５〜２７に分岐する。システムクロックは、１／２分周器２７、１／４分周器２６、１／８分周器２５、によりそれぞれ分周される。分周されたクロック信号は、デマルチプレクサ２４及び端子２８を介してセレクタ２１に供給される。
【００２６】
図２（ｂ）は制御信号を模式的に説明する図の一例である。セレクタ２１は、制御信号に基づき、入出力ポートGPIO‐０に出力する割込み信号を順番に切り換える。本実施形態では割込み信号の番号の昇順に切り換えるものとする。デマルチプレクサ２４は、８種類の割込み信号を制御信号に基づき分割し、GPIO‐0レジスタのレジスタGPIO‐00〜GPIO‐07に記憶する。
【００２７】
図２（ｂ）に示すように１／２分周、１／４分周、１／８分周により、３つのクロック信号の位相の組み合わせで８つの状態が得られる。セレクタ２１は、１／２分周のクロック信号がＬ、１／４分周のクロック信号がＬ、１／８分周のクロック信号がＬ（以下、ＬＬＬと記述する）の場合に、GPIO‐00向けの割込み信号を出力する。以下、３つのクロック信号の位相の組み合わせに応じて、GPIO‐01〜GPIO‐07向けの割込み信号を出力する。
【００２８】
一方、デマルチプレクサ２４は、システムクロックの例えば立ち上がりエッジを契機に、割込み信号を取り込む。取り込んだ割込み信号は、３つのクロック信号の位相の組み合わせに応じてGPIO‐01〜GPIO‐07に記憶する（例えば、ＬＬＬならGPIO‐00に記憶する。）。
【００２９】
割込み信号の数は７以下又は９以上とすることもできるので、割込み信号の数が変わった場合、分周器２５〜２７の数や種類が変動する。また、セレクタ２１の多重度とデマルチプレクサ２４の分解能を８としているがあくまで一例である。
【００３０】
図３は、ＩＮＴＣ１２及びポートレジスタ２３の構成図の一例を示す。図３では説明のため、ＩＮＴＣ１２とポートレジスタ２３の位置が図１，２と逆になっている。ＩＮＴＣ１２については図４にて詳細に説明する。
【００３１】
上記のように、ポートレジスタ２３は３つの入出力ポートGPIO‐０〜GPIO‐2に対応してGPIO‐0レジスタ〜GPIO‐2レジスタを有する。GPIO‐0レジスタは、入出力ポートGPIO‐0から入力された各割込み信号をレジスタGPIO‐00〜GPIO‐07に記憶し、GPIO‐1レジスタは入出力ポートGPIO‐1から入力された各割込み信号をレジスタGPIO‐10〜GPIO‐17に記憶し、GPIO‐2レジスタは入出力ポートGPIO‐2から入力された各割込み信号をレジスタGPIO‐20〜GPIO‐27に記憶する。
【００３２】
レジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27は１つが１bitの記憶素子である。入出力ポートGPIO‐xから割込み信号が出力されたGPIO‐00〜GPIO‐07等は“0x1”を記憶する。この割込み信号は、ＰＥ１〜３が消去（Write  Clear）するまで保持される。また、GPIO‐00〜GPIO‐07等はそれぞれがbit単位のマスクレジスタMSK0〜7、10〜17、20〜27を有しており、割込み信号が出力されても、ＰＥ１〜３がマスクレジスタMSK0〜7、10〜17、20〜27に“１”を設定することで、ＩＮＴＣ１２への割込みを“０”とすることができる。
【００３３】
ＩＮＴＣ１２は優先制御部３１及びバス監視部３２を有し、優先制御部３１とバス監視部３２の間に制御部３３及びメモリ部３４を有する。優先制御部３１は、GPIO‐xレジスタのレジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27の割込み信号を設定するための優先度bit０〜７を有する。
【００３４】
バス監視部３２は優先度0保持部３２１、バス切替部３２２、優先度1‐7保持部３２３、及び、３つのセレクタ３２４〜３２６を有している。優先度0保持部３２１及び優先度1‐7保持部３２３はそれぞれ３つのセレクタ３２４〜３２６の入力側と接続され、バス切替部３２２は制御線により３つのセレクタ３２４〜３２６と接続されている。セレクタ３２４は最優先割込み線Ａ１によりＰＥ１と、セレクタ３２５は最優先割込み線Ａ２によりＰＥ２と、セレクタ３２６は最優先割込み線Ａ３によりＰＥ３と、それぞれ接続されている。優先度1‐7保持部３２３は、通常割込み線Ｂ１〜Ｂ３によりＰＥ１〜３と接続されている。
【００３５】
このように、最優先割込み線Ａ１〜Ａ３は、優先度0保持部３２１と、優先度1‐7保持部３２３の両方から使用される。
【００３６】
図４は、ＩＮＴＣ１２のより詳細な機能ブロック図の一例である。ＩＮＴＣ１２は、割込み信号を取得すると割込み信号に優先度を与え、ＰＥ１〜３に割込みを通知する。
【００３７】
優先制御部３１は、１つのＰＥ毎に優先度bit０〜７を有する。GPIO‐0レジスタ、GPIO‐1レジスタ、GPIO‐2レジスタとＰＥ１〜３の対応付けは、後述する割当設定テーブルにより行われる。また、GPIO‐xレジスタの各レジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27は後述する優先度設定テーブルにより優先度bit０〜７に対応づけられている。制御部３３は、GPIO‐xレジスタのレジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、又は、GPIO‐20〜GPIO‐27に“0x1”が記憶されていると、割当設定テーブルと優先度設定テーブルに基づき対応付けられるＰＥ１〜３の優先度bit０〜７に“0x1”を設定する。この対応付けは、割当設定テーブルと優先度設定テーブルに基づくので、レジスタGPIO‐00〜GPIO‐07、レジスタGPIO‐10〜GPIO‐17、レジスタGPIO‐20〜GPIO‐27と優先度bit０〜７の対応は任意である。
【００３８】
最優先割込みとして扱われる優先度bit０及び通常割込みとして扱われる優先度bit1‐7は、割込み先のＰＥ１〜３毎に優先度0保持部３２１と優先度1‐7保持部３２３に出力される。バス切替部３２２はこれを利用して、割込み信号の出力先のバスを制御バスＡ及び／又は制御バスＢに切り換える。
【００３９】
バス切替部３２２は、優先度0保持部３２１から取得したＰＥ1〜３それぞれの優先度bit0をＡＮＤ回路３３１〜３３３に出力する。同様に、バス切替部３２２は、優先度1‐7保持部３２３から取得したＰＥ1〜３それぞれの優先度bit1‐7をＡＮＤ回路３３１〜３３３に出力する。
【００４０】
ＡＮＤ回路３３１の入力側にはＰＥ１の優先度0保持部３２１の反転出力と、ＰＥ１の優先度1‐7保持部３２３の出力が接続されている。ＡＮＤ回路３３２の入力側にはＰＥ２の優先度0保持部３２１の反転出力と、ＰＥ２の優先度1‐7保持部３２３の出力が接続されている。ＡＮＤ回路３３３の入力側にはＰＥ３の優先度0保持部３２１の反転出力と、ＰＥ３の優先度1‐7保持部３２３の出力が接続されている。ＡＮＤ回路３３１〜３３３の出力はセレクタ３２４〜３２６の制御線としてセレクタ３２４〜３２６と接続されている。
【００４１】
優先度0保持部３２１が“１”を出力すれば、反転されＡＮＤ回路３３１〜３３３に供給されるので、ＡＮＤ回路３３１〜３３３は優先度1‐7保持部３２３の出力に関係なく“０”を出力する。優先度0保持部３２１が“０”を出力すれば、反転されＡＮＤ回路３３１〜３３３に供給されるので、ＡＮＤ回路３３１〜３３３は優先度1‐7保持部３２３の出力が“１”の場合に“１”を出力する。優先度0保持部３２１が“０”を出力し、優先度1‐7保持部３２３が“０”を出力する場合、そもそも割込み要求がないことになるので、この場合は除外してよい。
【００４２】
したがって、ＡＮＤ回路３３１〜３３３の出力は、
・優先度0保持部３２１が“１”を出力する場合に“０”となる。
・優先度0保持部３２１が“０”を出力する場合に“１”となる。
【００４３】
セレクタ３２４〜３２６への制御線が“０”の場合、セレクタ３２４〜３２６は優先度0保持部３２１の割込み信号を選択して最優先割込み線Ａを介しＰＥ１〜３に出力する。セレクタ３２４〜３２６への制御線が“１”の場合、優先度1‐7保持部３２３の割込み信号を選択して通常割込み線Ｂを介しＰＥ１〜３に出力する。よって、GPIO‐xレジスタにより最優先割込みされた場合、セレクタ３２４〜３２６は最優先割込み線Ａを使用してＰＥ１〜３に最優先度の割込みをする。
【００４４】
一方、GPIO‐xレジスタにより最優先割込みされていない場合、バス切替部３２２は最優先割込み線Ａと通常割込み線Ｂの両方を使って割込みする場合と、通常割込み線Ｂのみを使って割込みする場合とがある。
【００４５】
例えば、ＰＥ１が制御バスＡを使用していなくても、ＰＥ２、３の１つ以上が制御バスＡを使用している場合があり得る。ＰＥ１が制御バスＡを使用していないが、ＰＥ２又はＰＥ３が制御バスＡを使用している場合、ＰＥ１は制御バスＡを使用すべきでない。このため、ＳＷ１〜３が、優先度bit1‐7保持部とセレクタ３２４〜３２６の間の接続をオン／オフする。
【００４６】
ＳW１〜３のオン／オフには、ＡＮD回路３３１〜３３３の状態が利用される。ＡＮＤ回路３３１の出力はＰＥ１が制御バスＡを使用しているか否かを示すフラグＦＬＡＧ１となり、ＡＮＤ回路３３２の出力はＰＥ２が制御バスＡを使用しているか否かを示すＦＬＡＧ２となり、ＡＮＤ回路３３３の出力はＰＥ３が制御バスＡを使用しているか否かを示すＦＬＡＧ３となる。
【００４７】
制御バスＡは１本しかないので、ＰＥ１〜３の１つでも制御バスＡを使用していれば、使用中と判定される。このため、フラグFLAG１〜３の３つの状態から、改めて制御バスＡ未使用フラグを定義する。
・制御バスＡ未使用フラグが“１”とはフラグＦＬＡＧ１〜３が全て“１”である場合である。
・制御バスＡ未使用フラグが“０”とはフラグＦＬＡＧ１〜３が１つでも“０”である場合である。
制御部３３はＡＮＤ回路３３１〜３３３の出力を監視してフラグＦＬＡＧ１〜３をそれぞれ更新する。そして、バス切替部はＳW１〜３を制御バスＡ未使用フラグの状態に基づき制御する。
【００４８】
ＳW１〜３について説明する。優先度1‐7保持部３２３と、セレクタ３２４〜３２６は、ＳＷ１〜３により接続がオン／オフされる。バス切替部３２２は、制御バス未使用フラグが“１”の場合、ＳW１〜３をオンにして、制御バス未使用フラグが“０”の場合、ＳW１〜３をオフにする。
【００４９】
ＳＷ１〜３がオンの場合、優先度1‐7保持部３２３とセレクタ３２４〜３２６が接続されるので、優先度0保持部３２１がＰＥ１〜３の全てについて“0x0”を出力する場合（制御バスＡ未使用フラグが“１”の場合）、優先度1‐7保持部３２３は、最優先割込み線Ａと通常割込み線Ｂの両方からＰＥ１〜３に割込みすることができる。したがって、制御バスＡがどのＰＥ１〜３にも使用されていない場合にだけ、ＰＥ１〜３は通常割込みに制御バスＡを使用することができる。一方、制御バスＡ未使用フラグが“０”の場合、優先度1‐7保持部３２３は、通常割込み線ＢのみからＰＥ１〜３に割込みすることができる。
【００５０】
なお、最優先割込み線Ａ、Ｂが使用された割込みに対し、ＰＥ１〜３は以下のように割込み処理に使用する制御バスＡ，Ｂを使い分ける。
ａ）最優先割込み線Ａにて割込みされた場合
ＰＥ１〜３は、割込み要因を確認して、最優先割込みの場合は制御バスＡを使用する。通常割込みの場合は、制御バスＡ未使用フラグが”１”の場合は制御バスＡを使用し、制御バスＡ未使用フラグが”０”の場合は制御バスＢを使用する。
ｂ）通常割込み線Ｂにて割込みされた場合
ＰＥ１〜３は、制御バスＢを使用する。
【００５１】
最優先割込み線Ａは通常優先度の割込みにも使用されるので、最優先割込み線Ａにより割込みされても、制御バスＡの使用状態によって、制御バスＢを使用して割込み処理することで、制御バスＡを最優先割込みに解放することができる。通常割込み線Ｂは通常優先度の割込みにしか使用されないので、常に、制御バスＢを使用することで制御バスＡを最優先割込みに解放することができる。
【００５２】
メモリ部３４は、各種のテーブルを記憶するレジスタである。メモリ部３４には、GPIO‐xレジスタのレジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27と優先度を対応づける優先度設定テーブル、入出力ポートGPIO‐xとＰＥ１〜３を割り当てる割当設定テーブル、制御バスＡ未使用フラグ、及び、割込み処理実施中フラグを記憶している。詳しくは図５，６により説明する。
【００５３】
なお、図４はハード的な回路や接続線によりバス切替部３２２を実現している。しかし、バス切替部３２２はソフトウェアにより実現することもできる。この場合、バス切替部３２２は、優先度0保持部３２１が“１”を出力する場合に、フラグＦＬＡＧ１〜３に“０”を設定し、優先度0保持部３２１が“０”を出力する場合に“１”を設定する。
【００５４】
〔レジスタ、テーブルの構成例〕
図５は、GPIO‐xレジスタのレジスタイメージを説明する図の一例である。これまで説明したようにGPIO‐0レジスタはレジスタGPIO‐00〜GPIO‐07を、GPIO‐1レジスタはレジスタGPIO‐10〜GPIO‐17を、GPIO‐2レジスタはレジスタGPIO‐20〜GPIO‐27をそれぞれ有している。GPIO‐xの各レジスタは1bitとなっている。
【００５５】
レジスタGPIO‐00〜GPIO‐07、レジスタGPIO‐10〜GPIO‐17、レジスタGPIO‐20〜GPIO‐27には、それぞれマスクレジスタがbit単位で割り当てられている。図では、GPIO‐0レジスタのレジスタGPIO‐00〜GPIO‐07にマスクレジスタMSK00〜MSK07が、GPIO‐1レジスタのレジスタGPIO‐10〜GPIO‐17にマスクレジスタMSK10〜MSK17が、GPIO‐2レジスタのレジスタGPIO‐20〜GPIO‐27にマスクレジスタMSK20〜MSK27が、割り当てられている。
【００５６】
レジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27は“0x0”が割込みなしを、“0x１”が割込み有りを意味する。いったん、レジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27が“0x１”になると、割込みがない状態でＰＥ１〜３が“0x１”を消去するまで、割込み有り状態を保持する。
【００５７】
MSK00〜MSK07、MSK10〜MSK17、MSK20〜MSK27は、“0x0”がマスク未設定を、“0x１”がマスク設定有りを意味する。MSK00〜MSK07、MSK10〜MSK17、MSK20〜MSK27が“0x１”の場合、対応するレジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27が“0x１”になっていても、レジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27の“0x１”がＩＮＴＣ１２に出力されることはない。
【００５８】
MSK00〜MSK07、MSK10〜MSK17、MSK20〜MSK27はＰＥ１〜３が初期設定されていると共に、必要に応じてＰＥ１〜３が設定する。
【００５９】
図６（ａ）は、制御バスA未使用フラグと割込み処理実施中フラグ設定テーブルを説明する図の一例である。１つのGPIO‐xレジスタに対し、８つの割込み処理実施中フラグ及び１つのフラグFLAGが対応づけて登録されている。ING00〜07、ING10〜17、ING20〜27が“0x0”の場合、割込み処理が未実施であることを示し、“0x1”の場合、“0x1”となっている優先度の割込み処理が実施中であることを示す。
【００６０】
例えば、割込み処理実施中フラグING00〜07は、入出力ポートGPIO‐0によりどの優先度（すなわち、どの割込み信号）の割込み処理が実施中かを示す。入出力ポートGPIO‐1、入出力ポートGPIO‐2についても同様である。割込み処理実施中フラグING11〜07の１つが”0x１”の場合、制御部３３はＰＥ１に新たな割込みを通知しない（ING00が“１”でも通常優先度の割込みは並行に行われる）。
【００６１】
ＰＥ１〜３は、入出力ポートGPIO‐0による割込み処理の実行を開始する際、“0x１”になっているレジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27と対応するフラグING00〜07、ING10〜17、ING20〜27に“0x１”を設定する。割込み処理の終了後、処理が終了したレジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27を“0x0”に消去（Write  Clear）した後、フラグING00〜07、ING10〜17、ING20〜27、に“0x0”を設定する。
フラグFLAG１〜３については上記のとおり、ＡＮＤ回路３３１〜３３３の出力と対応しており、これらにより制御バスＡ未使用フラグの状態が判定される。
【００６２】
図６（ｂ）は割込み信号の優先度設定テーブルの一例を示す図である。優先度設定テーブルはGPIO‐xレジスタに共通である。優先度設定テーブルは、GPIO‐xレジスタのレジスタGPIO‐00〜GPIO‐07（GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27も同様）のそれぞれに、３bitの優先度設定bitが（PRI00〜PRI72）が対応づけられた構成になっている。３bitとしたのは、優先度が０〜７の８段階だからであり、優先度の種類の数に応じてbit数は増減される。
この例では、GPIO‐xレジスタのレジスタGPIO‐0は優先度０、GPIO‐1は優先度１、GPIO‐2は優先度２、GPIO‐3は優先度３、GPIO‐4は優先度４、GPIO‐5は優先度５、GPIO‐6は優先度６、GPIO‐7は優先度７、となっている。よって、図の設定例ではレジスタGPIO‐0が最も優先度が高く、GPIO‐7が最も優先度が低くなる。開発者等が優先度設定テーブルを変更することでGPIO‐00〜GPIO‐07に格納される各割込み信号の優先度を変更することができる。
【００６３】
なお、優先度設定テーブルにおいて、GPIO‐00〜GPIO‐07の２つ以上に同じ優先度設定bitを設定することもできる。この場合、優先度設定bitが同じレジスタGPIO‐00〜GPIO‐07は同じ優先度なので、同じ優先度設定bitのレジスタに“１”が設定された順に割込み処理される。
【００６４】
図６（ｃ）は、割当設定テーブルの一例を示す。割当設定テーブルは、入出力ポートGPIO‐xとＰＥ１〜３を対応づけるテーブルである。例えば開発者は、入出力ポートGPIO‐xの割込み信号を必要とするとＰＥ１〜３を考慮して、割当設定テーブルを作成する。図の例では、ＰＥが６つある場合を示し、ＰＥ１がPE00、ＰＥ２がPE01、ＰＥ３がPE10、ＰＥ４がPE11、ＰＥ５がPE20、ＰＥ６がPE21、のように対応している。ＰＥがＰＥ１〜３の３つしかない場合、入出力ポートGPIO‐0はＰＥ１，入出力ポートGPIO‐1はＰＥ２に、入出力ポートGPIO‐2はＰＥ３に、対応づけられている。入出力ポートGPIO‐xの数とＰＥの数には制約がなく、入出力ポートGPIO‐xの数とＰＥは適宜、対応づけることができる。
【００６５】
〔動作手順〕
以上の構成に基づき、マイコン１００の全体的な動作手順について説明する。
図７は、マイコン１００が割込み処理する際の全体的な動作手順を説明するフローチャート図の一例である。
【００６６】
マイコン１００が起動すると、制御部３３は割当設定テーブルをメモリ部３４のレジスタ（不図示）に設定することで、入出力ポートGPIO‐0〜GPIO‐2とＰＥ１〜３を割り当てる（Ｓ１）。上記のように、入出力ポートGPIO‐0とＰＥ１、入出力ポートGPIO‐1とＰＥ２、入出力ポートGPIO‐2とＰＥ３がそれぞれ対応づけられている。
【００６７】
次に、制御部３３は、優先度設定テーブルをメモリ部３４のレジスタ（不図示）に設定することで、入出力ポートGPIO‐xのレジスタGPIO‐00〜GPIO‐07、GPIO‐10〜GPIO‐17、GPIO‐20〜GPIO‐27に優先度bit０〜７を割り当てる（Ｓ２）。
【００６８】
ここで、入出力ポートGPIO‐1から割込み信号が入力されたものとする（Ｓ３）。制御部３３は、割当設定テーブルにより割込みするＰＥを決定する。ここではＰＥ２に割込みすると決定される。
【００６９】
最優先割込みが発生したとする。GPIO‐1レジスタのGPIO‐10に“１”が設定された場合、最優先割込みである。最優先割込みの場合、少なくともＦＬＡＧ２は“０”になり、制御バスＡ未使用フラグも“０”となる。
【００７０】
この場合、最優先割込みのみか、通常割込みを含むのかにより処理が分かれる（Ｓ４）。
【００７１】
＜最優先割込みのみの場合＞
最優先割込みのみの場合（Ｓ４のＹｅｓ）、フラグＦＬＡＧ２が“０”なので、優先度0保持部３２１からセレクタ３２５を介して、ＰＥ２の最優先割込み線Ａ２を経由してＰＥ２に割込みが通知される（Ｓ５）。
【００７２】
ＰＥ２は入出力ポートGPIO‐1からの割込み信号に対応した割込みハンドラを実行して、制御バスＡを介して入出力ポートGPIO‐1に割込み要因を確認する（Ｓ６）。
【００７３】
ＰＥ２は割込み要因に応じた割込み処理を実行する（Ｓ７）。ＰＥ２は、割込み処理実施中フラグING10に“１”を設定する。
【００７４】
ＰＥ２は制御バスＡを介してレジスタGPIO‐10をクリア（Write  Clear）する（Ｓ８）。ＰＥは割込み要因を確認しているので、レジスタGPIO‐10をクリアすればよいことが分かっている。
【００７５】
この後、ＰＥ２は割込み処理中フラグ設定テーブルING10を“０”に戻す。レジスタGPIO‐10が“０”にクリアされたので、フラグＦＬＡＧ２は“１”に戻る。ただし、制御バスＡ未使用フラグは、他のフラグＦＬＡＧ１，３の状態により“０”“１”のどちらにもなる可能性がある。
【００７６】
＜最優先割込みと通常割込みが混載の場合＞
ステップＳ４に戻り、最優先割込みのみでない場合（Ｓ４のＮｏ）、通常割込みのみか否かにより処理が分岐される（Ｓ１０）。
【００７７】
通常割込みのみでない場合（Ｓ１０のＮｏ）、GPIO‐1レジスタのGPIO‐10に“１”が、GPIO‐11〜17の1つ以上に“１”が設定された、最優先割込みと通常割込みの混載状態である。
【００７８】
この場合は、最優先割込みから先に処理されるので、ステップＳ１１〜Ｓ１４にて最優先割込みが処理される。処理内容はＳ５〜Ｓ８と同様である。これにより、割込み信号は通常割込みのみになる。
【００７９】
＜通常割込のみの場合＞
通常割込みのみの場合（Ｓ１０のＹｅｓ）、制御バスＡ未使用フラグの状態により処理が制御される（Ｓ１５）。制御バスＡ未使用フラグが“０”の場合（Ｓ１５のＹｅｓ）、制御バスＡがＰＥ１，３のいずれかに使用されているので、ＳＷ１〜３がオフになり、バス監視部３２の優先度1‐7保持部３２３が通常割込み線Ｂ２を経由してＰＥ２に割込みを通知する（Ｓ１６）。
ＰＥ２は入出力ポートGPIO‐1からの割込み信号に対応した割込みハンドラを実行して、制御バスＢを介して入出力ポートGPIO‐1に割込み要因を確認する（Ｓ１７）。
【００８０】
ここで、通常割込みは複数ある可能性があるので、ＰＥ２は割込み要因が複数か否かを判定する（Ｓ１８）。例えば、レジスタGPIO‐13だけが“１”であるとする。割込み要因が複数でない場合（Ｓ１８のＮｏ）、ＰＥ２は割込み要因に応じた割込み処理を実行する（Ｓ１９）。ＰＥ２は、割込み処理実施中フラグING13に“１”を設定する。
【００８１】
割込み処理が終了するとＰＥ２は制御バスＢを介してレジスタGPIO‐13をクリア（Write  Clear）する（Ｓ２０）。また、ＰＥ２は割込み処理実施中フラグING13をクリアする。
【００８２】
割込み要因が複数である場合（Ｓ１８のＹｅｓ）、ＰＥ２は割込み処理を繰り返す（Ｓ２２、Ｓ２３）。例えば、レジスタGPIO‐13とレジスタGPIO‐15が“１”、であるとする。
【００８３】
具体的な処理はＳ１９、Ｓ２０と同様であるが、ＰＥ２は優先度の高いレジスタGPIO‐13の割込み処理を先に行う。
【００８４】
・１巡目
ＰＥ２は割込み要因に応じた割込み処理を実行する（Ｓ２２）。ＰＥ２は、割込み処理実施中フラグING13に“１”を設定する。
【００８５】
割込み処理が終了するとＰＥ２は制御バスＢを介してレジスタGPIO‐13をクリア（Write  Clear）する（Ｓ２３）。また、ＰＥ２は割込み処理実施中フラグING13をクリアする。
【００８６】
・２巡目
ＰＥ２は入出力ポートGPIO‐1からの割込み信号に対応した割込みハンドラを実行して、制御バスＢを介して入出力ポートGPIO‐1に割込み要因を確認する（Ｓ１７）。
割込み要因はすでに１つになっている（Ｓ１８のＹｅｓ）。ＰＥ２は割込み要因に応じた割込み処理を実行する（Ｓ１９）。ＰＥ２は、割込み処理実施中フラグING15に“１”を設定する。
【００８７】
割込み処理が終了するとＰＥ２は制御バスＢを介してレジスタGPIO‐15をクリア（Write  Clear）する（Ｓ２０）。また、ＰＥ２は割込み処理実施中フラグING15をクリアする。
【００８８】
＜制御バスＡが未使用の場合＞
ステップＳ１５に戻り、制御バスＡ未使用フラグが“０”でない場合（Ｓ１５のＮｏ）、ＰＥ１〜３がすべて制御バスＡを使用していないので、ＳＷ１〜３がオンになり、バス切替部３２２は制御バスＡを経由してＰＥ２に割込みを通知することができる（Ｓ２４）。すなわち、ＰＥ２の最優先割込みの割込み処理は終了しているので、ＡＮＤ回路３３２は“１”を出力し（フラグFLAG２は“１”）、セレクタ３２５は優先度1‐7保持部３２３と最優先割込み線Ａを接続する。
【００８９】
ＰＥ２は入出力ポートGPIO‐1からの割込み信号に対応した割込みハンドラを実行して、制御バスＡを介して入出力ポートGPIO‐1に割込み要因を確認する（Ｓ２５）。
【００９０】
ここで、通常割込みは複数ある可能性があるので、ＰＥ２は割込み要因が複数か否かを判定する（Ｓ２６）。例えば、レジスタGPIO‐13だけが“１”であるとする。割込み要因が複数でない場合（Ｓ２６のＮｏ）、ＰＥ２は、制御バスＡ未使用フラグの状態により使用する制御バスを切り替える（Ｓ２７）。これにより、制御バスＡはＰＥ１、３の最優先割込みに優先的に開放される。
【００９１】
制御バスＡ未使用フラグが“０”の場合（Ｓ２７のＹｅｓ）、ＰＥ２は制御バスＢを経由して割込み要因に応じた割込み処理を実行する（Ｓ２８）。ＰＥ２は、割込み処理実施中フラグING13に“１”を設定する。
【００９２】
ＰＥ２は制御バスＢを介して、レジスタGPIO‐13をクリア（Write  Clear）する（Ｓ２９）。この後、ＰＥ２は割込み処理中フラグING13を“０”に戻す。
【００９３】
制御バスＡ未使用フラグが“０”でない場合（Ｓ２７のＮｏ）、ＰＥ２は制御バスＡを経由して割込み処理を実行する（Ｓ３０）。ＰＥ２は、割込み処理実施中フラグING13に“１”を設定する。
【００９４】
割込み処理が終了するとＰＥ２はレジスタGPIO‐13をクリア（Write  Clear）する（Ｓ３１）。また、ＰＥ２は割込み処理実施中フラグING13をクリアする。
【００９５】
ステップＳ２６において、割込み要因が複数である場合（Ｓ２６のＹｅｓ）、ＰＥ２は割込み処理を繰り返す（Ｓ３３〜Ｓ３６）。例えば、レジスタGPIO‐13、レジスタGPIO‐15が“１”であるとする。
【００９６】
ＰＥ２は、制御バスＡ未使用フラグの状態により使用する制御バスを切り替える（Ｓ２７）。これにより、制御バスＡはＰＥ１、３の最優先割込みに優先的に開放される。
【００９７】
制御バスＡ未使用フラグが“０”の場合（Ｓ３３のＹｅｓ）、ＰＥ２は制御バスＢを使用してレジスタGPIO‐13に応じた割込み処理を実行する（Ｓ３４）。ＰＥ２は、制御バスＢを使用して割込み処理実施中フラグING13に“１”を設定する。
【００９８】
割込み処理が終了するとＰＥ２はレジスタGPIO‐13をクリア（Write  Clear）する（Ｓ３５）。また、ＰＥ２は割込み処理実施中フラグING13をクリアする。
【００９９】
制御バスＡ未使用フラグが“０”でない場合（Ｓ３３のＮｏ）、ＰＥ２は制御バスＡを使用してレジスタGPIO‐13に応じた割込み処理を実行する（Ｓ３６）。ＰＥ２は、制御バスＡを使用して割込み処理実施中フラグING13に“１”を設定する。
【０１００】
割込み処理が終了するとＰＥ２はレジスタGPIO‐13をクリア（Write  Clear）する（Ｓ３７）。また、ＰＥ２は割込み処理実施中フラグING13をクリアする。
【０１０１】
割込み要因が複数あったので、処理はステップＳ２５に戻り、ＰＥ２は制御バスＡを介して入出力ポートGPIO‐1に割込み要因を確認する（Ｓ２５）。ここでは、レジスタGPIO‐15が“１”のまま残っている。これにより処理はステップＳ２６に戻る。レジスタGPIO‐15のみなので、Ｓ２７〜Ｓ３１が実行される。
【０１０２】
ＰＥ２は、制御バスＡ未使用フラグの状態により使用する制御バスを切り替える（Ｓ２７）。このように、ＩＮＴＣ１２が通常割込み線ＢでＰＥに割込んだ場合、ＰＥ２は１つの割込み処理を実行するごとに制御バスＡ未使用フラグの状態を確認する。
【０１０３】
制御バスＡ未使用フラグが“０”の場合（Ｓ２７のＹｅｓ）、ＰＥ２は制御バスＢを経由して割込み要因に応じた割込み処理を実行する（Ｓ２８）。ＰＥ２は割込み処理実施中フラグING15を“１”に設定する。
【０１０４】
ＰＥ２は制御バスＢを介して、レジスタGPIO‐15をクリア（Write  Clear）する（Ｓ２９）。また、ＰＥ２は割込み処理中フラグING15を“０”に戻す。
【０１０５】
制御バスＡ未使用フラグが“０”でない場合（Ｓ２７のＮｏ）、ＰＥ２は制御バスＡを経由して割込み処理を実行する（Ｓ３０）。ＰＥ２は、割込み処理実施中フラグING15に“１”を設定する。
【０１０６】
割込み処理が終了するとＰＥ２はレジスタGPIO‐15をクリア（Write  Clear）する（Ｓ３１）。また、ＰＥ２は割込み処理実施中フラグING15をクリアする。
【０１０７】
〔効果〕
本実施形態のマイコン１００は拡張ポート機構部１１を有することで、上記の課題を解決することができる。
（１）例えば図２に示したように、マイコン外部にてＮ：１セレクタ、マイコン内部にて１：Ｎデマルチプレクサを配置することで、１つの入出力ポートGPIO‐xにN本の割込み信号を多重化することができる。したがって、拡張ポート機構部１１は実際の端子数よりも多くの外部からの割込み信号を1本の入出力ポートでマイコン１００に通知することができる。
【０１０８】
また、ポートレジスタ２３は1つ以上のGPIO‐xレジスタを有し、多重化された割込み信号を格納できるので、マイコン１００は入出力ポートGPIO‐xを複数個、有することも可能である。
【０１０９】
また、セレクタ２１及びデマルチプレクサ２４の制御信号は、システムクロックを分周することで生成されるので、レジスタGPIO‐00〜GPIO‐07を指定するレジスタ等を別途、用意する必要がない。また、システムクロックを使用することで、セレクタ２１やデマルチプレクサ２４はGPIO‐xレジスタなどの内部処理と同期をとることが可能となり、個別の同期処理が不要となる。
【０１１０】
（２）また、本実施形態では、ＩＮＴＣ１２が、割込みの優先度に応じて最優先割込み線Ａと通常割込み線Ｂを使い分けて１つのＰＥに割り込むので、制御バスやＰＥの負荷を低減できる。
【０１１１】
（３）また、従来、割込み信号を多重化すると優先度と割込み処理の順序が逆転するおそれがあった。本実施形態のマイコン１００は、制御バスＡと制御バスＢによりＩＮＴＣ１２とＰＥ１〜３を多重に接続し、最優先割込みは優先的に制御バスＡを介してＰＥ１〜３に通知する。これにより、最優先割込みよりも通常割込みが優先されることを防止できる。
【０１１２】
図８は、制御バスＡと制御バスＢによる割込みの効率化を説明する図の一例である。まず、入出力ポートGPIO‐2、GPIO‐0、GPIO‐1から、割込みがランダムに発生している。図８では、このような割込みに対し、(i)制御バスが1本の場合、(ii)最優先割込み専用の制御バスＡと通常割込み専用の制御バスＢを配置した場合、(iii)最優先割込みが優先されるが通常割込みも使用可能な制御バスＡと通常割込み専用の制御バスＢを配置した場合（本実施形態）、のバスの使用頻度を模式的に示している。
【０１１３】
(i)では、多重化により最優先割込みと通常割込みがランダムに発生することで、最優先割込みが通常割込みにより待たされる状況が生じうる。
【０１１４】
(ii)では、最優先割込みは必ず、制御バスＡを使用して処理されるので、最優先割込みが通常割込みにより待たされる状況が生じることはない。また、制御バスが２本あることで、全体的な処理時間が短縮される。しかし、制御バスＡは最優先割込みによってしか使用されないので、制御バスＡの使用頻度が低下している。
【０１１５】
(iii)では、最優先割込みがない場合、ＰＥは通常割込みを制御バスＡを使用して処理できるので、制御バスＡの使用頻度が向上している。最優先割込みがある場合、必ず、ＰＥは通常割込みよりも優先して制御バスＡを使用できるので、最優先割込みが通常割込みにより待たされる状況が生じることもない。また、通常割込みが制御バスＡを使用して処理されるので、(ii)よりもさらに全体的な処理時間が短縮される。
【符号の説明】
【０１１６】
１１    拡張ポート機構部
１２    ＩＮＴＣ
１３    ＲＯＭ
１４    ＲＡＭ
１５    ＰＥ
１６    制御バス
２１    セレクタ
２２    入出力ポート
２３    ポートレジスタ
２４    デマルチプレクサ
２５〜２７  分周器
３１    優先制御部
３２    バス監視部
３３    制御部
３４    メモリ部
１００  マイコン
【図１】
2013101568.tif 000003
【図２】
2013101568.tif 000004
【図３】
2013101568.tif 000005
【図４】
2013101568.tif 000006
【図５】
2013101568.tif 000007
【図６】
2013101568.tif 000008
【図７】
2013101568.tif 000009
【図８】
2013101568.tif 000010
【図９】
2013101568.tif 000011
【図１０】
2013101568.tif 000012