(57)【特許請求の範囲】
【請求項１】
それぞれ独立した機能を有し、シリアルポートで相互に接続されている３個以上の中央演算処理装置間で通信を行う際の中央演算処理装置間の通信方法であって、
時分割された通信可能な時間帯のそれぞれに前記３個以上の中央演算処理装置のうちの信号を送信可能な中央演算処理装置および信号を受信可能な中央演算処理装置の組み合わせを割り当て、割り当てられた時間帯においてのみその組み合わせで、対応する中央演算処理装置の各シリアルポートを介して通信を行う装置において、
クロック信号をカウントし、一定の周期でカウント値が循環するカウンタを有し、
前記各中央演算処理装置は、それぞれ、前記クロック信号の入力によって開始される割り込み処理により、前記カウント値に基づいて、自己の中央演算処理装置が、現在の時間帯において、いずれの中央演算処理装置へ信号を送信可能か、または、いずれの中央演算処理装置から信号を受信可能か、または、通信不可能かを判別し、その判別結果に従って通信を行うことを特徴とする中央演算処理装置間の通信方法。
【請求項２】
前記組み合わせは、信号を送信可能な１つの中央演算処理装置と、信号を受信可能な１つの中央演算処理装置との組み合わせの集合である請求項１に記載の中央演算処理装置間の通信方法。
【請求項３】
所定の組み合わせについては、その組み合わせで通信可能な時間帯の比率を他より高くする請求項１または２に記載の中央演算処理装置間の通信方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、中央演算処理装置間の通信方法に関する。
【０００２】
【従来の技術】
各種家電製品、電気機器、光学機器等に内蔵され、それぞれ独立した機能を有する３個以上の中央演算処理装置間で通信を行う場合には、通常１個の中央演算処理装置をマスターとし、他の２個以上の中央演算処理装置をスレーブとして通信を行う。
【０００３】
しかし、このような通信方法の場合、マスター中央演算処理装置とスレーブ中央演算処理装置間の通信は直接行われるが、スレーブ中央演算処理装置とスレーブ中央演算処理装置間の通信は、スレーブ中央演算処理装置間で直接行わず、マスター中央演算処理装置を一旦経由して行われるので、マスター中央演算処理装置の負担が大きいものとなる。
【０００４】
このため、マスター中央演算処理装置は、スレーブ間での通信の間はその中継動作のために拘束され、本来の処理動作の実行が中断され、処理速度の低下を招く。
【０００５】
【発明が解決しようとする課題】
本発明の目的は、それぞれ独立した機能を有する３個以上の中央演算処理装置間で通信を行う場合、それぞれの中央演算処理装置間において直接通信可能な中央演算処理装置間の通信方法を提供することにある。
【０００６】
【課題を解決するための手段】
このような目的は、下記（１）〜（３）の本発明により達成される。
【０００７】
（１）  それぞれ独立した機能を有し、シリアルポートで相互に接続されている３個以上の中央演算処理装置間で通信を行う際の中央演算処理装置間の通信方法であって、
時分割された通信可能な時間帯のそれぞれに前記３個以上の中央演算処理装置のうちの信号を送信可能な中央演算処理装置および信号を受信可能な中央演算処理装置の組み合わせを割り当て、割り当てられた時間帯においてのみその組み合わせで、対応する中央演算処理装置の各シリアルポートを介して通信を行う装置において、
クロック信号をカウントし、一定の周期でカウント値が循環するカウンタを有し、
前記各中央演算処理装置は、それぞれ、前記クロック信号の入力によって開始される割り込み処理により、前記カウント値に基づいて、自己の中央演算処理装置が、現在の時間帯において、いずれの中央演算処理装置へ信号を送信可能か、または、いずれの中央演算処理装置から信号を受信可能か、または、通信不可能かを判別し、その判別結果に従って通信を行うことを特徴とする中央演算処理装置間の通信方法。
【０００８】
（２）  前記組み合わせは、信号を送信可能な１つの中央演算処理装置と、信号を受信可能な１つの中央演算処理装置との組み合わせの集合である上記（１）に記載の中央演算処理装置間の通信方法。
【０００９】
（３）  所定の組み合わせについては、その組み合わせで通信可能な時間帯の比率を他より高くする上記（１）または（２）に記載の中央演算処理装置間の通信方法。
【００１１】
【実施例】
以下、本発明の中央演算処理装置間の通信方法を添付図面に示す好適実施例に基づいて詳細に説明する。なお、本発明の中央演算処理装置間の通信方法は、それぞれ独立した機能を有する３個以上の中央演算処理装置間で通信を行う際の通信方法であるが、代表的に中央演算処理装置が３個の場合について説明する。
【００１２】
図１は、本発明の中央演算処理装置間の通信方法を適用した装置の中央演算処理装置周辺の構成例を示すブロック図である。
図示される装置は、第１ＣＰＵ（Central Processing Unit ）１、第２ＣＰＵ２、第３ＣＰＵ３、発信器４およびカウンタ５を有している。
【００１３】
第１ＣＰＵ１、第２ＣＰＵ２および第３ＣＰＵ３は、それぞれ独立した機能を有する中央演算処理装置、すなわち独立した機能を有するマイクロコンピュータである。
【００１４】
例えば、本発明をカメラ内のＣＰＵ間の通信に適用した場合、ＣＰＵの機能としては、例えば、スイッチ回路、測光、測距等を含む主制御、シャッター駆動やフィルム巻き上げ等のメカ制御および表示システムの制御などが挙げられる。
【００１５】
この場合、「それぞれ独立した機能を有する中央演算処理装置」とは、ＣＰＵを構成する回路やチップが独立しているという意味ではなく、前述したような各制御のそれぞれを担当するＣＰＵの１単位をいう。例えば、第１ＣＰＵ１が前記主制御、第２ＣＰＵ２が前記メカ制御、第３ＣＰＵ３が前記表示システムの制御をそれぞれ担当する場合、各ＣＰＵは、それぞれ独立した機能を有するということとなる。
従って、各ＣＰＵ１〜３は、１つのチップに形成されていてもよく、または複数のチップに形成されていてもよい。
【００１６】
各ＣＰＵ１〜３は、それぞれ、通信用インターフェース回路（シリアルインターフェース）を内蔵しており、シリアルデータを送信するための端子ＳＯ（Serial data Output）、シリアルデータを受信するための端子ＳＩ（Serial data Input ）、シリアルデータのクロック信号を送受信するための端子ＳＣＫ（Serial data Clock ）、割り込みのクロック信号を受信するための端子（割り込み入力端子）ＩＮＴ（Interrupt ）等を有している。また、各ＣＰＵ１〜３は、それぞれ、端子ＳＯとＳＩ、端子ＳＣＫ同士が互いに接続されている。
【００１７】
このような構成の回路において、発振器４では一定の周期のクロック信号が生成され、生成されたクロック信号は、カウンタ５の端子ＣＬＫおよび各ＣＰＵ１〜３の割り込み入力端子ＩＮＴのそれぞれに入力される。
【００１８】
各ＣＰＵ１〜３は、それぞれ割り込み入力端子ＩＮＴからクロック信号が入力されると、後述する通信割り込み処理を開始する。なお、この通信割り込み処理は、通常、そのＣＰＵでの主な処理をメインルーチンとした場合のサブルーチンとしてプログラムされている。
【００１９】
カウンタ５はリングカウンタであり、このカウンタ５では、入力されるクロック信号に基づいて、０、１、２、３、４および５の順にカウント値がカウントアップされ、そのカウント値は一定の周期で循環される。このとき、カウンタ５からは、各カウント値０〜５のそれぞれに対応する３ビットのデジタル信号が出力され、３本のライン６１、６２および６３を通じて各ＣＰＵ１〜３のそれぞれに入力される。なお、各ライン６１〜６３は、それぞれ３ビットのデジタル信号のうちの１ビット分を担当している。
【００２０】
本発明の中央演算処理装置間の通信方法は、各ＣＰＵ１〜３のうち信号（シリアルデータ）を送信可能なＣＰＵおよび信号を受信可能なＣＰＵの組み合わせと、時分割された通信可能な時間帯とを設定し、この各時間帯のそれぞれに前記組み合わせを割り当て、割り当てられた時間帯においてのみその組み合わせで通信を行うことを可能とするものであり、本実施例では下記表１に示すように、カウンタ５の各カウント値０〜５と、この各カウント値に対応する時分割された各時間帯と、この時分割された各時間帯にのみ送信可能なＣＰＵおよび受信可能なＣＰＵの各組み合わせとが予め設定されている。この場合、送信可能なＣＰＵと、受信可能なＣＰＵとは、それぞれ１個ずつ組み合わされている。
なお、下記表１中の時分割された各時間帯は、全時間帯をｔ（ｔは任意の所定単位時間）とした場合のものである。
【００２１】
【表１】
0003758689.tif 000002
【００２２】
カウンタ５から、カウント値０〜５に対応するデジタル信号が順次各ＣＰＵ１〜３のそれぞれに送出された場合において、例えば、カウント値０に対応するデジタル信号が送出されてからカウント値１に対応するデジタル信号が送出されるまでの時間帯、すなわちカウント値０に対応する時間帯０〜ｔ／６は、表１に示すように第１ＣＰＵ１から第２ＣＰＵ２への通信のみが可能となり、この他の組み合わせによる通信は禁止される。
【００２３】
次に、カウントアップされてカウント値１となると、次の時間帯ｔ／６〜２ｔ／６の間は、表１に示すように第１ＣＰＵ１から第３ＣＰＵ３への通信のみが可能となり、この他の組み合わせによる通信は禁止される。
以下同様に、カウント値２〜５に対応する時間帯についても表１に示す組み合わせによる通信のみが可能となる。
【００２４】
各ＣＰＵ１〜３は、それぞれ通信するシリアルデータがある場合には、前記所定の時間帯に通信を行い、通信するシリアルデータがない場合には、前記時間帯であっても通信を行わない。
【００２５】
例えば、第１ＣＰＵ１から第２ＣＰＵ２へ通信する場合には、第１ＣＰＵ１は、シリアルデータのクロック信号を発信するとともにシリアルデータを送信し、第２ＣＰＵ２は、シリアルデータのクロック信号を受信するとともに、このシリアルデータのクロック信号に基づいてシリアルデータを受信する。なお、受信の際には、ＣＰＵはシリアルデータを一旦シリアルインターフェース内のレジスタに格納した後、ＣＰＵ内のメモリーに格納する。以下、この他の組み合わせについても同様に、一方のＣＰＵから他方のＣＰＵに通信が行われる。
【００２６】
なお、通常は、時分割された各時間帯のそれぞれにおいてＣＰＵ間の通信以外の処理も行われるので、前記時間帯の一部の期間をＣＰＵ間の通信用に割り当てるのが好ましい。この場合、前記時間帯の残りの期間は、例えばメインルーチンの処理が行われる。
なお、本実施例において、通信されるシリアルデータは、８ビットのデジタル信号であるが、本発明はこれに限定されるものではない。
【００２７】
このように本発明では、時分割された各時間帯のそれぞれに送信可能なＣＰＵおよび受信可能なＣＰＵの組み合わせを割り当て、割り当てられた時間帯においてのみその組み合わせで通信を行うので、送信するＣＰＵと受信するＣＰＵとの間で直接通信を行うことが可能であり、このため、従来のように２つのスレーブＣＰＵ間で通信を行う際に必ずマスターＣＰＵを経由していたのに比べて、通信を行わないＣＰＵへの負担が軽減される。
【００２８】
本実施例では、カウント値が１つアップされる時間、すなわちｔ／６に相当する時間は特に限定されないが、この時間は、通信されるデータ量等を考慮して適宜決定される。例えば、通信するデータが４〜３２ビット程度のシリアルデータであれば、ｔ／６に相当する時間は、１〜１００ｍ秒程度とすることができる。但し、これに限定されるものではない。
【００２９】
次に、本実施例における通信処理（通信割り込み処理）について説明する。
図２は、通信の際の第１ＣＰＵ１の動作を示すフローチャートである。以下、代表的に第１ＣＰＵ１の動作をこのフローチャートに基づいて説明する。
図示されるプログラムは、メインプログラム中のサブルーチンとしてプログラムされているものであり、第１ＣＰＵ１の割り込み入力端子ＩＮＴに、割り込みのクロック信号が入力されると、このサブルーチンがコールされ、第１ＣＰＵ１の通信割り込み処理が開始される。なお、メインプログラムは本発明とは特に関係ないので図示を省略する。
【００３０】
第１ＣＰＵ１は、カウンタ５のカウント値を検出し（ステップ１００）、カウント値が０または１であるか否かを判断する（ステップ１０１）。
ステップ１０１において、カウント値が０または１と判断された場合には、第１ＣＰＵ１を出力モードにする（ステップ１０２）。すなわち、第１ＣＰＵ１の端子ＳＣＫおよびＳＯをそれぞれハイインピーダンス状態からローインピーダンス状態に変更し、第１ＣＰＵ１は送信可能な状態となる。
【００３１】
次いで、カウント値が０であるか否かを判断する（ステップ１０３）。
ステップ１０３において、カウント値が０と判断された場合には、第２ＣＰＵ２へ送信すべきシリアルデータを送信する（ステップ１０４）。なお、この送信されたシリアルデータは、第２ＣＰＵ２のみにより受信される（カウント値０では、第２ＣＰＵ２は受信待ち状態となり、第３ＣＰＵ３は受信待ち状態とはならない）ので、これにより第１ＣＰＵ１から第２ＣＰＵ２への通信が行われる。
【００３２】
送信が終了したら第１ＣＰＵ１を入力モードにする（ステップ１０６）。すなわち、第１ＣＰＵ１の端子ＳＣＫおよびＳＯをそれぞれローインピーダンス状態からハイインピーダンス状態に変更し、第１ＣＰＵ１は送信不可能な状態となり、メインルーチンに戻る。
【００３３】
また、ステップ１０３において、カウント値が１と判断された場合には、第３ＣＰＵ３へ送信すべきシリアルデータを送信する（ステップ１０５）。なお、この送信されたシリアルデータは、第３ＣＰＵ３のみにより受信される（カウント値１では、第３ＣＰＵ３は受信待ち状態となり、第２ＣＰＵ２は受信待ち状態とはならない）ので、これにより第１ＣＰＵ１から第３ＣＰＵ３への通信が行われる。
【００３４】
送信が終了したら第１ＣＰＵ１は入力モードになる（ステップ１０６）。すなわち、第１ＣＰＵ１の端子ＳＣＫおよびＳＯをそれぞれローインピーダンス状態からハイインピーダンス状態に変更し、第１ＣＰＵ１は送信不可能な状態となり、メインルーチンに戻る。
【００３５】
また、ステップ１０１において、カウント値が０または１と判断されなかった場合、すなわち、カウント値が２、３、４および５のいずれかと判断された場合には、さらに、カウント値が２または４であるか否かを判断する（ステップ１０７）。
【００３６】
ステップ１０７において、カウント値が２または４と判断されなかった場合、、すなわち、カウント値が３または５と判断された場合には、第１ＣＰＵ１は通信を行わず、メインルーチンに戻る。
【００３７】
また、ステップ１０７において、カウント値が２または４と判断された場合には、第１ＣＰＵ１は入力モードのうちの受信待ち状態になる（ステップ１０８）。なお、第１ＣＰＵ１の端子ＳＣＫおよびＳＯはそれぞれハイインピーダンス状態になっている。
【００３８】
なお、この状態において、第２ＣＰＵ２または第３ＣＰＵ３からシリアルデータが送信された場合には、そのシリアルデータは、第１ＣＰＵ１に内蔵されているシリアルインターフェース内のレジスタに一旦格納される。
【００３９】
次いで、第２ＣＰＵ２または第３ＣＰＵ３から送信されたシリアルデータの受信が終了したか否かを判断する（ステップ１０９）。この判断方法としては、例えば第１ＣＰＵ１に入力されるシリアルデータのクロック信号の個数をカウントし、このクロック信号がシリアルデータのビット数（本実施例では８ビット）と同数カウントされたところで受信終了とする。
【００４０】
ステップ１０９において、受信が終了していないと判断された場合には、時間切れか否かを判断する（ステップ１１０）。この場合、例えば内蔵するタイマーを起動して、第１ＣＰＵ１が受信待ち状態になってからの時間を計り、この時間が予め設定されている通信終了時間となったところで時間切れとする。なお、予め設定される通信終了時間は、通常、送信されたシリアルデータをすべて受信するのに十分であり、しかも時間切れとなっても次の処理に影響が及ばない程度の時間とされる。
【００４１】
ステップ１１０において、時間切れではないと判断された場合には、ステップ１０９に戻り、再びステップ１０９を実行する。
また、ステップ１１０において、時間切れと判断された場合には、第１ＣＰＵ１は通信を行わなかったものとみなされ、メインルーチンに戻る。
【００４２】
また、ステップ１０９において、受信終了と判断された場合には、カウント値が２であるか否かを判断する（ステップ１１１）。
ステップ１１１において、カウント値が２と判断された場合には、第２ＣＰＵ２から送信された受信済のシリアルデータ、すなわちシリアルインターフェース内のレジスタに格納されているシリアルデータを第１ＣＰＵ１内のメモリー（例えば、第２ＣＰＵ２からのシリアルデータを格納するために予め設定されているメモリー内の所定の領域）に格納し（ステップ１１２）、メインルーチンに戻る。
【００４３】
また、ステップ１１１において、カウント値が４と判断された場合には、第３ＣＰＵ３から送信された受信済のシリアルデータ、すなわちシリアルインターフェース内のレジスタに格納されているシリアルデータを第１ＣＰＵ１内のメモリー（例えば、第３ＣＰＵ３からのシリアルデータを格納するために予め設定されているメモリー内の所定の領域）に格納し（ステップ１１３）、メインルーチンに戻る。以上でこのサブルーチンプログラムは終了し、メインルーチンへ復帰する。
【００４４】
なお、ここでは代表的に第１ＣＰＵ１における通信処理について説明したが、第２ＣＰＵ２および第３ＣＰＵ３のそれぞれにおける通信処理についても前述した第１ＣＰＵ１の場合と実質的に同様で、そのフローチャートは、ステップ１０１，１０３，１０７，１１１等を表１に沿ってそれぞれ変更したものとなる。
【００４５】
ここで、本実施例では前述した通信割り込み処理は、割り込み入力端子ＩＮＴに割り込みのクロック信号が入力される毎に行われるよう構成されているが、本発明はこれに限定されず、例えば、所定の期間は所定のＣＰＵが通信割り込み処理を行わないよう構成してもよい。
【００４６】
通信割り込みを休止させる方法としては、例えば、ＣＰＵの通信割り込みをマスクして、そのＣＰＵの通信割り込みを禁止する方法等が挙げられる。
なお、通信割り込みを休止する状況としては、例えば、指令を受けた所定のＣＰＵが何らかの時間のかかる処理を行い、その処理期間中は通信割り込みがあっては困るような場合等が挙げられる。
【００４７】
例えば、第１ＣＰＵ１から指令を受けて第２ＣＰＵ２が何らかの時間のかかる処理を行い、その処理期間中は第２ＣＰＵ２に通信割り込みがあっては困るような場合には、第２ＣＰＵ２は自己の通信割り込みをマスクし、処理が終了した後に、第２ＣＰＵ２は第１ＣＰＵ１に対し処理が終了した旨を知らせるための返信をし、この後第２ＣＰＵ２は自己の通信割り込みのマスクを解除するような構成とする。この他の組み合わせについても前記と同様に構成する。
【００４８】
また、本実施例では、表１に示すように、送信可能なＣＰＵおよび受信可能なＣＰＵの各組み合わせについて、その組み合わせで通信可能な時間帯の比率を互いに同一に設定したが、本発明はこれに限定されず、所定の組み合わせについては、その組み合わせで通信可能な時間帯の比率を他より高く設定してもよい。
【００４９】
例えば、通信を行う頻度の高い組み合わせ、通信されるシリアルデータの量の多い組み合わせ、通信時間の短縮が特に要求される組み合わせ等がある場合には、その組み合わせについての通信可能な時間帯の比率を他より高くすることにより、全体の通信処理に要する時間を短縮できる。
【００５０】
所定の組み合わせについての通信可能な時間帯の比率を他より高くするには、例えば、その所定の組み合わせに対応するカウント値を複数設定する方法等が挙げられる。例えば、第１ＣＰＵ１から第３ＣＰＵ３への通信を許可する組み合わせに対応するカウント値を複数設定する場合において、カウント値、時間帯およびＣＰＵの組み合わせの設定を示す一例を下記表２に示す。
【００５１】
【表２】
0003758689.tif 000003
【００５２】
なお、この場合にはカウンタ５では、発振器４からのクロック信号に基づいて、０、１、２、３、４、５および６のカウントが一定の周期で繰り返し行われ、各カウント値０〜６のそれぞれに対応する３ビットのデジタル信号が、３本のライン６１、６２および６３を通じて各ＣＰＵ１〜３のそれぞれに送出される。
【００５３】
次に、前記表２に示すように、第１ＣＰＵ１から第３ＣＰＵ３への通信を許可する組み合わせに対応するカウント値を複数設定した場合の通信割り込み処理について説明する。
図３は、通信の際の第１ＣＰＵ１の動作を示すフローチャートである。以下、代表的に第１ＣＰＵ１の動作をこのフローチャートに基づいて説明する。
【００５４】
図示されるプログラムは、メインプログラム中のサブルーチンとしてプログラムされているものであり、第１ＣＰＵ１の割り込み入力端子ＩＮＴに、割り込みのクロック信号が入力されると、このサブルーチンがコールされ、第１ＣＰＵ１の通信割り込み処理が開始される。
【００５５】
第１ＣＰＵ１は、カウンタ５のカウント値を検出し（ステップ２００）、カウント値が０、１または６であるか否かを判断する（ステップ２０１）。
ステップ２０１において、カウント値が０、１または６と判断された場合には、第１ＣＰＵ１を出力モードにする（ステップ２０２）。すなわち、第１ＣＰＵ１の端子ＳＣＫおよびＳＯをそれぞれハイインピーダンス状態からローインピーダンス状態に変更し、第１ＣＰＵ１は送信可能な状態となる。
【００５６】
次いで、カウント値が０であるか否かを判断する（ステップ２０３）。
ステップ２０３において、カウント値が０と判断された場合には、第２ＣＰＵ２へ送信すべきシリアルデータを送信する（ステップ２０４）。なお、この送信されたシリアルデータは、第２ＣＰＵ２のみにより受信される（カウント値０では、第２ＣＰＵ２は受信待ち状態となり、第３ＣＰＵ３は受信待ち状態とはならない）ので、これにより第１ＣＰＵ１から第２ＣＰＵ２への通信が行われる。
【００５７】
送信が終了したら第１ＣＰＵ１を入力モードにする（ステップ２０６）。すなわち、第１ＣＰＵ１の端子ＳＣＫおよびＳＯをそれぞれローインピーダンス状態からハイインピーダンス状態に変更し、第１ＣＰＵ１は送信不可能な状態となり、メインルーチンに戻る。
【００５８】
また、ステップ２０３において、カウント値が１または６と判断された場合には、第３ＣＰＵ３へ送信すべきシリアルデータを送信する（ステップ２０５）。なお、この送信されたシリアルデータは、第３ＣＰＵ３のみにより受信される（カウント値１または６では、第３ＣＰＵ３は受信待ち状態となり、第２ＣＰＵ２は受信待ち状態とはならない）ので、これにより第１ＣＰＵ１から第３ＣＰＵ３への通信が行われる。
【００５９】
送信が終了したら第１ＣＰＵ１は入力モードになる（ステップ２０６）。すなわち、第１ＣＰＵ１の端子ＳＣＫおよびＳＯをそれぞれローインピーダンス状態からハイインピーダンス状態に変更し、第１ＣＰＵ１は送信不可能な状態になり、メインルーチンに戻る。
【００６０】
また、ステップ２０１において、カウント値が０、１または６と判断されなかった場合、すなわち、カウント値が２、３、４および５のいずれかと判断された場合には、さらに、カウント値が２または４であるか否かを判断する（ステップ２０７）。
【００６１】
ステップ２０７において、カウント値が２または４と判断されなかった場合、、すなわち、カウント値が３または５と判断された場合には、第１ＣＰＵ１は通信を行わず、メインルーチンに戻る。
【００６２】
また、ステップ２０７において、カウント値が２または４と判断された場合には、第１ＣＰＵ１は入力モードのうちの受信待ち状態になる（ステップ２０８）。なお、第１ＣＰＵ１の端子ＳＣＫおよびＳＯはそれぞれハイインピーダンス状態になっている。
【００６３】
なお、この状態において、第２ＣＰＵ２または第３ＣＰＵ３からシリアルデータが送信された場合には、そのシリアルデータは、第１ＣＰＵ１に内蔵されているシリアルインターフェース内のレジスタに一旦格納される。
【００６４】
次いで、第２ＣＰＵ２または第３ＣＰＵ３から送信されたシリアルデータの受信が終了したか否かを判断する（ステップ２０９）。この判断方法としては、例えば第１ＣＰＵ１に入力されるシリアルデータのクロック信号の個数をカウントし、このクロック信号がシリアルデータのビット数（本実施例では８ビット）と同数カウントされたところで受信終了とする。
【００６５】
ステップ２０９において、受信が終了していないと判断された場合には、時間切れか否かを判断する（ステップ２１０）。この場合、例えば内蔵するタイマーを起動して、第１ＣＰＵ１が受信待ち状態になってからの時間を計り、この時間が予め設定されている通信終了時間となったところで時間切れとする。なお、予め設定される通信終了時間は、通常、送信されたシリアルデータをすべて受信するのに十分であり、しかも時間切れとなっても次の処理に影響が及ばない程度の時間とされる。
【００６６】
ステップ２１０において、時間切れではないと判断された場合には、ステップ２０９に戻り、再びステップ２０９を実行する。
また、ステップ２１０において、時間切れと判断された場合には、第１ＣＰＵ１は通信を行わなかったものとみなされ、メインルーチンに戻る。
【００６７】
また、ステップ２０９において、受信終了と判断された場合には、カウント値が２であるか否かを判断する（ステップ２１１）。
ステップ２１１において、カウント値が２と判断された場合には、第２ＣＰＵ２から送信された受信済のシリアルデータ、すなわちシリアルインターフェース内のレジスタに格納されているシリアルデータを第１ＣＰＵ１内のメモリー（例えば、第２ＣＰＵ２からのシリアルデータを格納するために予め設定されているメモリー内の所定の領域）に格納し（ステップ２１２）、メインルーチンに戻る。
【００６８】
また、ステップ２１１において、カウント値が４と判断された場合には、第３ＣＰＵ３から送信された受信済のシリアルデータ、すなわちシリアルインターフェース内のレジスタに格納されているシリアルデータを第１ＣＰＵ１内のメモリー（例えば、第３ＣＰＵ３からのシリアルデータを格納するために予め設定されているメモリー内の所定の領域）に格納し（ステップ２１３）、メインルーチンに戻る。以上でこのサブルーチンプログラムは終了し、メインルーチンへ復帰する。
【００６９】
以上のようなプログラムでは、第１ＣＰＵ１から第３ＣＰＵ３への通信が許可される時間が長く、第１ＣＰＵ１から第３ＣＰＵ３への通信が可能になる確率が高くなる。すなわち、第１ＣＰＵ１から第３ＣＰＵ３への通信の際の待ち時間が短いものとなる。
【００７０】
なお、ここでは代表的に第１ＣＰＵ１における通信処理について説明したが、第２ＣＰＵ２および第３ＣＰＵ３のそれぞれにおける通信処理についても前述した第１ＣＰＵ１の場合と実質的に同様で、そのフローチャートは、ステップ２０１、２０３、２０７、２１１等を表２に沿ってそれぞれ変更したものとなる。
【００７１】
以上述べた実施例では、表１および表２に示すように、送信可能なＣＰＵと、受信可能なＣＰＵとをそれぞれ１個ずつ組み合わせているが、本発明はこれに限定されず、例えば、１個の送信可能なＣＰＵと、１個または複数の受信可能なＣＰＵとを組み合わせてもよい。
【００７２】
この場合、
▲１▼（送信可能な１個のＣＰＵ→受信可能な１個のＣＰＵ）、
▲２▼（送信可能な１個のＣＰＵ→受信可能な複数のＣＰＵ）、
の２パターンのうちの１パターンのみ、あるいは各パターンを組み合わせて（併用して）設定してもよい。
【００７３】
また、本実施例では、表１および表２に示すように、時分割された通信可能な時間帯を、各ＣＰＵ同士のすべての組み合わせに割り当てているが、本発明はこれに限定されず、例えば、通信のあり得ない組み合わせについては、通信可能な時間帯を割り当てないような設定であってもよい。このような構成によれば、カウンタ５の最大カウント値が小さくなり、カウンタ５から送出されるカウント値に対応するデジタル信号のビット数を少なくできるとともに、全体の通信処理に要する時間を短縮できる。
【００７４】
また、本実施例では、送信可能なＣＰＵおよび受信可能なＣＰＵの各組み合わせを表１および表２に示す順序で配列し、各組み合わせと各カウント値とを対応させているが、各組み合わせと各カウント値との対応はこれに限定されるものではない。
【００７５】
また、本実施例では図１に示すように、発振器４およびカウンタ５を各ＣＰＵ１〜３の外付け回路としているが、本発明はこれに限定されない。
例えば、各ＣＰＵ１〜３のうちのいずれかのＣＰＵに内蔵されている発振器により一定の周期のクロック信号を生成し、生成されたクロック信号をカウンタ５の端子ＣＬＫおよび各ＣＰＵ１〜３の割り込み入力端子ＩＮＴのそれぞれに入力させるよう構成してもよい。これにより外付の発振器４が省略され、回路の簡素化が図れる。
【００７６】
また、例えば、カウンタ５によるカウント動作を各ＣＰＵ１〜３に内蔵されているカウンタのそれぞれが行うよう構成してもよい。これにより外付のカウンタ５が省略され、回路の簡素化が図れる。
【００７７】
また、本実施例では、カウンタによるカウント値に基づいて時分割（通信可能な時間帯の分割）を行っているが、時分割の方法はこれに限定されない。
また、本実施例では、有線による通信の例を示すが、本発明では、ＣＰＵ間のデータまたはクロック信号の通信、ＣＰＵへの送信等は、無線による通信であってもよい。
【００７８】
なお、本発明の中央演算処理装置間の通信方法の用途は特に限定されない。本発明の中央演算処理装置間の通信方法は、例えば、一眼レフカメラ、コンパクトカメラ、ビデオカメラ、シネカメラ、スチルビデオカメラ等の各種光学機器、テレビジョン、ビデオデッキ、オーディオ機器、エアコン、冷蔵庫、ワードプロセッサー等の各種家電製品、業務用の各種電気製品、各種電気機器など、複数の中央演算処理装置を搭載した装置に広く適用される。
以上、本発明の中央演算処理装置間の通信方法を図示の構成例に基づいて説明したが、本発明はこれに限定されるものではない。
【００７９】
【発明の効果】
以上説明したように、本発明の中央演算処理装置間の通信方法によれば、所望の中央演算処理装置間での通信を直接行うことが可能となる。このため、従来の１個の中央演算処理装置をマスターとし、他の中央演算処理装置をスレーブとし、必ずマスターを経由して通信を行う場合に比較して、特定の中央演算処理装置への負担が軽減される。
【００８０】
また、本発明の中央演算処理装置間の通信方法によれば、所望の中央演算処理装置間での通信を直接行えるので、全体の通信処理に要する時間を前記従来の通信方法の場合に比較して短縮すること、または短縮しうる設計が可能となる。
【図面の簡単な説明】
【図１】本発明の中央演算処理装置間の通信方法を適用した装置の中央演算処理装置周辺の構成例を示すブロック図である。
【図２】本発明における通信の際の第１ＣＰＵの動作の一例を示すフローチャートである。
【図３】本発明における通信の際の第１ＣＰＵの動作の一例を示すフローチャートである。
【符号の説明】
１            第１ＣＰＵ
２            第２ＣＰＵ
３            第３ＣＰＵ
４            発振器
５            カウンタ
６１、６２、６３  ライン
１００〜１１３  ステップ
２００〜２１３  ステップ
【図１】
0003758689.tif 000004
【図２】
0003758689.tif 000005
【図３】
0003758689.tif 000006