(57)【要約】      （修正有）【課題】マスターとスレーブの通信開始が同時に発生しても、通信に失敗することなく、安定した通信が可能な同期式シリアル通信システムを提供する。【解決手段】送信動作を開始した第２情報処理装置が、通信相手である第１情報処理装置から予め定められたデータを受信した場合に、第１情報処理装置が送信動作を開始したと判断して、第２情報処理装置が受信動作に切替えることで、通信に失敗せずに通信を継続できるようにしたシリアル通信システム。【選択図】図１１
2014086992.tif 000002
【特許請求の範囲】
【請求項１】
第１情報処理装置と第２情報処理装置と、
前記第１情報処理装置と前記第２情報処理装置との間でシリアル通信によりデータを送受信するための信号線とを有し、
前記第１及び前記第２情報処理装置との間で同期して通信するための同期信号を、前記第１又は前記第２情報処理装置が出力するシリアル通信システムであって、
前記第１情報処理装置は、前記第２情報処理装置にデータを送信する第１送信動作を開始する際に、前記第２情報処理装置に、前記第１情報処理装置から送信されたデータを受信をする第１受信動作の実行を要求する第１要求信号を出力し、
前記第２情報処理装置は、前記第１情報処理装置にデータを送信する第２送信動作を開始する際に、前記第１情報処理装置に、前記第２情報処理装置から送信されたデータを受信する第２受信動作の実行を要求する第２要求信号を出力し、
前記第１情報処理装置は、前記第２受信動作中に、前記第１送信動作で前記２情報処理装置へのデータの送信に用いる信号線を介して、予め定められたデータを送信し、
前記第２情報処理装置は、前記第２送信動作において、前記予め定められたデータを受信しない場合には、前記第２送信動作から前記第１受信動作に切替えることを特徴とするシリアル通信システム。
【請求項２】
第１情報処理装置と第２情報処理装置と、
前記第１情報処理装置と前記第２情報処理装置との間でシリアル通信によりデータを送受信するための複数の信号線とを有し、
前記第１及び前記第２情報処理装置との間で同期して通信するための同期信号を、前記第１又は前記第２情報処理装置が出力するシリアル通信システムであって、
前記第１情報処理装置は、前記第２情報処理装置にデータを送信する第１送信動作を開始する際に、前記第２情報処理装置に、前記第１情報処理装置から送信されたデータを受信する第１受信動作の実行を要求する第１要求信号を出力し、
前記第２情報処理装置は、前記第１情報処理装置にデータを送信する第２送信動作を開始する際に、前記第１情報処理装置に、前記第２情報処理装置から送信されたデータを受信する第２受信動作の実行を要求する第２要求信号を出力し、
前記第１情報処理装置は、前記第１送信動作中に、該第１送信動作で前記２情報処理装置へのデータの送信に用いる信号線を介して、予め定められたデータを送信し、
前記第２情報処理装置は、前記第２送信動作において、前記予め定められたデータを受信した場合には、前記第２送信動作から前記第１受信動作に切替えることを特徴とするシリアル通信システム。
【請求項３】
前記データを送受信するための信号線は、前記第１情報処理装置が前記第２情報処理装置に、前記第１要求信号を出力する第１信号線と、前記第２情報処理装置が前記第１情報処理装置に、前記第２要求信号を出力する第２信号線とを有し、
前記第２情報処理装置が、前記第１要求信号に対して、前記第２信号線から受信動作の実行を示す信号を送信し、前記第１情報処理装置が、前記第２信号線から、前記受信動作の実行を示す信号を受信することにより前記第１送信動作を実行するように構成するか、又は、
前記第１情報処理装置が、前記第２要求信号に対して、前記第１信号線から受信動作の実行を示す信号を送信し、前記第２情報処理装置が、前記第１信号線から、前記受信動作の実行を示す信号を受信することにより前記第２送信動作を実行するように構成することにより、
前記第１信号線と前記第２信号線の少なくともいずれかを、受信動作の実行を示す信号を送信する信号線と兼用したことを特徴とする請求項１又は２に記載のシリアル通信システム。
【請求項４】
前記第２情報処理装置は、前記第１受信動作中に、前記第２送信動作で前記第１情報処理装置へのデータの送信に用いる信号線を介して、前記第１情報処理装置に所定のチェック用データを送信し、
前記第１情報処理装置は、前記第１送信動作中に、前記第２情報処理装置から、前記所定のチェック用データを受信することにより正常にデータが送信されたと判断し、前記所定のチェック用データを受信しない場合に正常にデータが送信されなかったと判断し、
前記第２情報処理装置は、前記第２送信動作から前記第１受信動作に切り替えたときに、前記第２送信動作で前記第１情報処理装置へのデータの送信に用いる信号線から、前記所定のチェック用データを送信することを特徴とする請求項１〜３のいずれか１項に記載のシリアル通信システム。
【請求項５】
前記第１送信動作において送信されるデータが複数バイトのデータで構成され、
前記第２情報処理装置は、前記第１受信動作において、前記第１送信動作で送信される第２バイト以降のデータを受信する際に、前記第２送信動作で前記第１情報処理装置へのデータの送信に用いる信号線を介して、所定のチェック用のデータを送信し、
前記第１情報処理装置は、前記第１送信動作において、第２バイト以降のデータを送信する際に、該第２バイト以降のデータの送信とともに、前記第２情報処理装置から送信される前記チェック用データを受信し、
前記第２情報処理装置は、前記第２送信動作において、前記第１情報処理装置から送信される第１バイトのデータが、前記予め定められたデータではない場合に、前記第２送信動作から前記第１受信動作に切替えるとともに、該第１受信動作において、前記第１情報処理装置が前記第２バイト以降のデータを送信するときに、前記所定のチェック用データを送信することを特徴とする請求項１に記載のシリアル通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主情報処理装置（マスター）と従情報処理装置（スレーブ）との間の同期式シリアル通信方式に関するものである。
【背景技術】
【０００２】
腕時計などの機器において、機器の操作部の入力処理や表示等の機能を含む機器の基本的な処理を主情報処理装置のマイクロコンピュータ（以下マスター）が行い、これとは別に、外部機器との通信処理や、気温や気圧などの各種周辺情報の計測処理、などの、製品に固有の処理を従情報処理装置のマイクロコンピュータ（以下スレーブ）が行い、これらのマイクロコンピュータ間で必要なデータを通信し全体の制御を行うことが多い。これにより、処理を個々のマイクロコンピュータへ分割するので、全体の処理速度の低下を防止することができる。また、製品間で基本機能を処理するマスターを共通化できるのでコストを低く抑えられる。
【０００３】
マスターとスレーブ間の同期式シリアル通信では、マスターが通信要求信号（ＣＤＲＥＱ）を送出し、これを受信したスレーブが通信可能信号（ＣＤＲＤＹ）を送出することにより開始され、クロック信号に同期してデータがシリアルデータとして送られる。そしてあらかじめ定められた一連のデータの送信を行って通信要求に対する通信処理を終了する。
【０００４】
また、スレーブの処理中に直ちにマスターへ情報を通知すべきイベントが発生した場合、スレーブから通信を開始する必要がある。
特許文献１によれば、通信可能信号経路を介してスレーブからマスターへ通信開始を要求する通信要求信号（ＣＤＲＤＹ）の送出を可能にし、スレーブからも通信を開始できるようにしたものである。
【０００５】
スレーブの通信要求信号は、マスターから通信を開始したときには、通信を許可する通信可能信号に兼用され、スレーブから通信可能信号として送出される。同様に、マスターの通信要求信号は、スレーブから通信を開始したときには、通信を許可する通信可能信号に兼用され、マスターから通信可能信号として送出される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−４６５４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の同期式シリアル通信方式では、マスターとスレーブが同時に通信要求信号を送出した場合、マスターが通信を開始しようとして通信要求信号のつもりで送信した信号が、自らが通信要求信号を送出しているスレーブは、通信を許可する通信可能信号として解釈することとなる。マスターもまた、同様である。
【０００８】
従って、マスターとスレーブが通信要求信号を同時に送出した場合、マスターは通信可能信号により通信開始と判断して通信を始め、スレーブも通信要求信号により通信開始と判断して通信を始めてしまい、つまりは、双方が発信側として動作し、結果、通信が失敗してしまう、という問題があった。
【０００９】
また、仮に、通信要求信号を通信可能信号と兼用していなくても、マスターとスレーブが同時に通信要求信号を送出すると、双方共に通信を開始する動作を行なっているために通信要求信号を受信した側が、通信可能信号を出さないことにより、通信を開始できず、エラーとなってしまうという問題があった。
【００１０】
本発明の目的は、マスターとスレーブの通信開始が同時に発生しても、通信に失敗することなく、安定した通信が可能な同期式シリアル通信システムを実現することである。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明は、第１情報処理装置と第２情報処理装置と、前記第１情報処理装置と前記第２情報処理装置との間でシリアル通信によりデータを送受信するための信号線とを有し、前記第１及び前記第２情報処理装置との間で同期して通信するための同期信号を、前記第１又は前記第２情報処理装置が出力するシリアル通信システムであって、前記第１情報処理装置は、前記第２情報処理装置にデータを送信する第１送信動作を開始する際に、前記第２情報処理装置に、前記第１情報処理装置から送信されたデータを受信をする第１受信動作の実行を要求する第１要求信号を出力し、前記第２情報処理装置は、前記第１情報処理装置にデータを送信する第２送信動作を開始する際に、前記第１情報処理装置に、前記第２情報処理装置から送信されたデータを受信する第２受信動作の実行を要求する第２要求信号を出力し、前記第１情報処理装置は、前記第２受信動作中に、前記第１送信動作で前記２情報処理装置へのデータの送信に用いる信号線を介して、予め定められたデータを送信し、前記第２情報処理装置は、前記第２送信動作において、前記予め定められたデータを受信しない場合には、前記第２送信動作から前記第１受信動作に切替えることを特徴とする。
【００１２】
また、第１情報処理装置と第２情報処理装置と、前記第１情報処理装置と前記第２情報処理装置との間でシリアル通信によりデータを送受信するための複数の信号線とを有し、前記第１及び前記第２情報処理装置との間で同期して通信するための同期信号を、前記第１又は前記第２情報処理装置が出力するシリアル通信システムであって、前記第１情報処理装置は、前記第２情報処理装置にデータを送信する第１送信動作を開始する際に、前記第２情報処理装置に、前記第１情報処理装置から送信されたデータを受信する第１受信動作の実行を要求する第１要求信号を出力し、前記第２情報処理装置は、前記第１情報処理装置にデータを送信する第２送信動作を開始する際に、前記第１情報処理装置に、前記第２情報処理装置から送信されたデータを受信する第２受信動作の実行を要求する第２要求信号を出力し、前記第１情報処理装置は、前記第１送信動作中に、該第１送信動作で前記２情報処理装置へのデータの送信に用いる信号線を介して、予め定められたデータを送信し、前記第２情報処理装置は、前記第２送信動作において、前記予め定められたデータを受信した場合には、前記第２送信動作から前記第１受信動作に切替えることを特徴とする。
【００１３】
また、前記データを送受信するための信号線は、前記第１情報処理装置が前記第２情報処理装置に、前記第１要求信号を出力する第１信号線と、前記第２情報処理装置が前記第１情報処理装置に、前記第２要求信号を出力する第２信号線とを有し、前記第２情報処理装置が、前記第１要求信号に対して、前記第２信号線から受信動作の実行を示す信号を送信し、前記第１情報処理装置が、前記第２信号線から、前記受信動作の実行を示す信号を受信することにより前記第１送信動作を実行するように構成するか、又は、前記第１情報処理装置が、前記第２要求信号に対して、前記第１信号線から受信動作の実行を示す信号を送信し、前記第２情報処理装置が、前記第１信号線から、前記受信動作の実行を示す信号を受信することにより前記第２送信動作を実行するように構成することにより、前記第１信号線と前記第２信号線の少なくともいずれかを、受信動作の実行を示す信号を送信する信号線と兼用したことを特徴とする。
【００１４】
また、前記第２情報処理装置は、前記第１受信動作中に、前記第２送信動作で前記第１情報処理装置へのデータの送信に用いる信号線を介して、前記第１情報処理装置に所定のチェック用データを送信し、前記第１情報処理装置は、前記第１送信動作中に、前記第２情報処理装置から、前記所定のチェック用データを受信することにより正常にデータが送信されたと判断し、前記所定のチェック用データを受信しない場合に正常にデータが送信されなかったと判断し、前記第２情報処理装置は、前記第２送信動作から前記第１受信動作に切り替えたときに、前記第２送信動作で前記第１情報処理装置へのデータの送信に用いる信号線から、前記所定のチェック用データを送信することを特徴とする。
【００１５】
また、前記第１送信動作において送信されるデータが複数バイトのデータで構成され、前記第２情報処理装置は、前記第１受信動作において、前記第１送信動作で送信される第２バイト以降のデータを受信する際に、前記第２送信動作で前記第１情報処理装置へのデータの送信に用いる信号線を介して、所定のチェック用のデータを送信し、前記第１情報処理装置は、前記第１送信動作において、第２バイト以降のデータを送信する際に、該第２バイト以降のデータの送信とともに、前記第２情報処理装置から送信される前記チェック用データを受信し、前記第２情報処理装置は、前記第２送信動作において、前記第１情報処理装置から送信される第１バイトのデータが、前記予め定められたデータではない場合に、前記第２送信動作から前記第１受信動作に切替えるとともに、該第１受信動作において、前記第１情報処理装置が前記第２バイト以降のデータを送信するときに、前記所定のチェック用データを送信することを特徴とする。
【発明の効果】
【００１６】
本発明は、上記に示した構成を採用しているので、マスターとスレーブの通信開始が同時に発生しても、通信に失敗することなく、安定した通信が可能な同期式シリアル通信システムを実現する、という効果を発揮するものである。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施の形態における腕時計の回路構成を示すブロック図である。
【図２】本発明の第１の実施の形態におけるマスターのシリアル通信部と、スレーブのシリアル通信部の接続を表わしたブロック図である。
【図３】本発明の第１の実施の形態におけるシリアル通信部の信号線の説明を示した図である。
【図４】本発明の第１の実施の形態における通信データの形式を示した図である。
【図５】本発明の第１の実施の形態における、マスターから送信されるデータの例を示した図である。
【図６】本発明の第１の実施の形態における、スレーブから送信されるデータの例を示した図である。
【図７】本発明の第１の実施の形態における、マスターから３バイトのデータ送信を実行する場合のタイミングチャートを示した図である。
【図８】本発明の第１の実施の形態における、マスターから３バイトのデータ送信を実行する場合の、ＭＯＳＩ信号線とＭＩＳＯ信号線のそれぞれで送信されるデータの値の例を示した図である。
【図９】本発明の第１の実施の形態における、スレーブから３バイトのデータ送信を実行する場合のタイミングチャートを示した図である。
【図１０】本発明の第１の実施の形態における、スレーブから３バイトのデータ送信を実行する場合の、ＭＯＳＩ信号線とＭＩＳＯ信号線のそれぞれで送信されるデータの値の例を示した図である。
【図１１】本発明の第１の実施の形態における、マスターから３バイト、スレーブから３バイトのデータ送信を同時に実行する場合のタイミングチャートを示した図である。
【図１２】図１１の通信における、ＭＯＳＩ信号線とＭＩＳＯ信号線のそれぞれで送信されるデータの値の例を示した図である。
【図１３】本発明の第１の実施の形態における、図１１の通信後に、スレーブが送信保留データの送信を開始するタイミングを示した図である。
【図１４】図１３の通信における、ＭＯＳＩ信号線とＭＩＳＯ信号線のそれぞれで送信されるデータの値の例を示した図である。
【図１５】本発明の第１の実施の形態における、送信側として動作する場合のマスターのフローチャートを示した図である。
【図１６】本発明の第１の実施の形態における、マスターがＲＤＹの立ち下りエッジを検知してから受信側として動作する場合のフローチャートを示した図である。
【図１７】本発明の第１の実施の形態における、送信側として動作する場合のスレーブのフローチャートを示した図である。
【図１８】本発明の第１の実施の形態における、スレーブがＳＳ信号線のLowレベルを検知してから受信側として動作する場合のフローチャートを示した図である。
【図１９】ＲＥＱ信号線を追加する場合の、マスターのシリアル通信部と、スレーブのシリアル通信部の接続を表わしたブロック図である。
【図２０】ＲＥＱ信号線を追加する場合の、スレーブから３バイトのデータ送信を実行する場合のタイミングチャートを示した図である。
【発明を実施するための形態】
【００１８】
図面に基づいて、本発明の（第１の）実施形態における通信システムを説明する。
図１は、本発明の実施例としての腕時計の回路構成を示すブロック図である。第１情報処理装置としての主情報処理装置１００は、操作部の入力処理や表示等の機能を含む、時計の基本的な処理を行なう。第２情報処理装置としての従情報処理装置２００は、外部機器との通信処理や、周辺情報の計測処理、を行う。
【００１９】
主情報処理装置１００は、ROM１０２と、RAM１０３と、計時部１０６と、表示部１０７と、入力部１０８と、内部クロック発生部１２０、をメイン・マイクロコンピュータであるマスター１０１に接続し、マスター１０１内にシリアル通信部１１０を内蔵する構成となっている。マスター１０１は、主情報処理装置１００全体の制御を司る。マスター１０
１のシリアル通信部１１０は、スレーブ２０１と同期式シリアル通信を行なうためのインターフェース部で、スレーブ２０１のシリアル通信部２１０と接続している。ＲＯＭ１０２は、マスター１０１が主情報処理装置１００全体を制御するためのプログラムなどが記憶される。ＲＡＭ１０３は、マスター１０１のワークエリアとして使用される。計時部１０６は、基準発信周波数を元に現在の時刻を計時する。表示部１０７は、前記計時部１０６で計時している現在時刻と、スレーブ２０１から取得した情報に応じた内容、を表示する。表示部１０７は、例えば、複数の針による表示形態でもよいし、液晶表示等によるデジタルの表示形態でもよい。
【００２０】
入力部１０８は、スイッチやりゅうずなど、入力装置の状態を検出する。送信データ記憶部１０４は、シリアル通信部１１０からスレーブ２０１へ送信するデ−タを記憶する部で、RAM１０３内に配置されている。受信データ記憶部１０５は、シリアル通信部１１０でスレーブ２０１から受信したデ−タを記憶し、RAM１０３内に配置されている。送信データ記憶部１０４、および受信データ記憶部１０５の記憶容量は、少なくとも、スレーブ２０１と同期式シリアル通信で通信する形式の最大バイト数があればよい。タイマー１０９は、同期式シリアル通信のエラーを検出するためのタイマー部である。内部クロック発生部１２０は、基本クロック発信器を元に、ＣＰＵクロックを発生させる。前記ＣＰＵクロックを元に、マスター１０１は内部回路の同期をとって動作している。基本クロック発信器としては、水晶発振器やシリコン発振器などがある。
【００２１】
従情報処理装置２００は、ROM２０２と、RAM２０３と、計測部２０６と、外部通信部２０７と、内部クロック発生部２２０、をサブ・マイクロコンピュータであるスレーブ２０１に接続し、スレーブ２０１内にシリアル通信部２１０を内蔵する構成となっている。スレーブ２０１は、従情報処理装置２００全体の制御を司る。スレーブ２０１のシリアル通信部２１０は、マスター１０１と同期式シリアル通信を行なうためのインターフェース部で、シリアル通信部１１０と接続している。ＲＯＭ２０２は、スレーブ２０１が従情報処理装置２００全体を制御するためのプログラムなどが記憶される。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。計測部２０６は、気温や気圧などの周辺情報を計測する。外部通信部２０７は、携帯電話や自動車など、外部機器と有線、または無線による通信を行なう。
【００２２】
送信データ記憶部２０４は、シリアル通信部２１０からマスター１０１へ送信するデ−タを記憶し、RAM２０３内に配置されている。受信データ記憶部２０５は、シリアル通信部２１０でマスター１０１から受信したデ−タを記憶し、RAM２０３内に配置されている。送信保留データ記憶部２０８は、シリアル通信部２１０からマスター１０１へのデータ送信をキャンセルした場合に送信デ−タを記憶し、RAM２０３内に配置されている。送信データ記憶部２０４、および受信データ記憶部２０５、および送信保留データ記憶部２０８の記憶容量は、少なくとも、マスター１０１と同期式シリアル通信で通信する形式の最大バイト数があればよい。タイマー２０９は、同期式シリアル通信のエラーを検出するためのタイマー部である。内部クロック発生部２２０は、基本クロック発信器を元に、ＣＰＵクロックを発生させる。前記ＣＰＵクロックを元に、スレーブ２０１は内部回路の同期をとって動作している。
【００２３】
図２は、マスター１０１のシリアル通信部１１０と、スレーブ２０１のシリアル通信部２１０の接続を表わしたブロック図で、図３でそれぞれの接続線を説明した。
【００２４】
マスター１０１のシリアル通信部１１０、スレーブ２０１のシリアル通信部２１０には、「ＲＤＹ」「ＳＳ」「ＳＣＫ」「ＭＯＳＩ」「ＭＩＳＯ」の入力端子又は出力端子が設けられ、同じ名称の端子どうしが接続線で接続されている。
【００２５】
ＳＳ信号線（スレーブ・セレクト）は、マスター１０１側は出力端子１１２、スレーブ２０１側は入力端子２１２である。これらを接続するＳＳ信号線は、マスター１０１側から通信を開始する場合に、マスター１０１からスレーブ２０１に通信開始を通知する信号（第１要求信号）を出力して受信動作を要求する機能を果たす第１信号線として用いられ、また、スレーブ２０１側から通信を開始する場合にマスター１０１からスレーブ２０１に対して通信許可を通知する信号線として用いられる。
【００２６】
ＲＤＹ信号線（通信準備完了）はスレーブ２０１側が出力端子２１１、マスター１０１側は入力端子１１１である。これらを接続するＲＤＹ信号線は、スレーブ２０１が、マスター１０１に対して送信するデータが準備完了したことを、スレーブ２０１からマスター１０１に通知する。スレーブ２０１から送信を開始する場合、ＲＤＹ信号線は、マスター１０１に通信開始を通知する信号（第２要求信号）を出力して受信動作を要求する機能を果たす第２信号線として用いられる。
【００２７】
ＳＣＫ信号線は、マスター１０１側が出力端子１１３、スレーブ２０１側が入力端子２１３である。これらを接続するＳＣＫ信号線で、マスター１０１がプログラムでHighレベルとLowレベルを交互に発生させ、スレーブ２０１はＳＣＫ信号線のレベルの変化を利用してマスター１０１と同期する。
【００２８】
ＭＯＳＩ信号線（マスター・アウト・スレーブ・イン）は、マスター１０１側が出力端子１１４、スレーブ側が入力端子２１４である。これらを接続するＭＯＳＩ信号線は、マスター１０１側からスレーブ２０１側へデータを送信する第１信号線である。ＭＩＳＯ信号線（マスター・イン・スレーブ・アウト）はスレーブ２０１側が出力端子２１５、マスター１０１側が入力端子１１５である。これらを接続するＭＩＳＯ信号線は、スレーブ２０１側からマスター１０１側へデータを送信する第２信号線である。
【００２９】
図４に本発明の第１の実施の形態による通信データの形式を示した。
【００３０】
送信側からの送信データは、コマンド（CMD）、データバイト数（ｎ）、ｎバイトのデータ（Ｄ（１）〜Ｄ（ｎ））、コマンドからデータまでをXORしたチェックサム（SUM）、の第ｎ＋３バイトの複数データから成る。本発明における同期式シリアル通信においては、１バイト通信毎に双方向で送信が行なわれるため、受信側からもデータが送信される。受信側からの送信データは、第１バイトには予め定められたデータとして、例えばＮＵＬＬ（００Ｈ）を準備し、第２〜第ｎ＋３バイトは、所定のチェック用データとして前回送信側から送信されて受信した第１〜第ｎ＋２バイトのデータをそのまま送るものとする。マスター１０１からの送信は、スレーブ２０１に対し、外部機器との通信処理や、気温や気圧などの各種周辺情報の計測処理、などの処理を実行させる必要が発生した場合や、スレーブ２０１からの要求に応じた情報を返す場合に実行される。図５がその一例である。
【００３１】
図５は、マスター１０１から送信されるデータを示し、１段目と２段目は３バイトで構成されるデータの例、３段目〜５段目は、４バイトで構成されるデータの例である。１段目の「無線接続」と２段目の「無線切断」は、第１バイトのコマンドが「８１Ｈ」と「８２Ｈ」、第２バイトのデータ数がいずれも「０」、第３バイトにチェックサムが付与されている。３段目〜５段目は、第１バイトのコマンドが、「８３Ｈ」「８４Ｈ」「８５Ｈ」、第２バイトのデータ数がいずれも「１」、第３バイトのデータが「残量」「位置」「位置」、第４バイトにチェックサムが付与されている。
スレーブ２０１からの送信は、マスター１０１に対し、表示内容変更の指示や、マスター１０１が管理する機器の状態に関する情報を要求する場合に実行される。図６がその一例である。
【００３２】
図６は、スレーブ２０１から送信されるデータを示し、１段目は９バイトで構成されるデータの例、２段目は３バイトで構成されるデータの例、３段目と４段目は４バイトで構成されるデータの例である。１段目の「時刻設定」は、第１バイトのコマンドが「０２H」、第２バイトのデータ数が「６」、第３バイトのデータが「年」、第４バイトのデータが「月」、第５バイトのデータが「日」、第６バイトのデータが「時」、第７バイトのデータが「分」、第８バイトのデータが「秒」、第９バイトにチェックサムが付与されている。２段目の「電池残量問い合わせ」は、第１バイトのコマンドが「０１H」、第２バイトのデータ数が「０」、第３バイトのデータにチェックサムが付与されている。３段目〜４段目は、第１バイトのコマンドが、「０３Ｈ」「０４Ｈ」、第２バイトのデータ数がいずれも「１」、第３バイトのデータが「秒針位置」「分針位置」、第４バイトにチェックサムが付与されている。
【００３３】
次に、本発明における同期式シリアル通信の動作について説明する。
本発明の同期式シリアル通信の動作には３つの動作がある。１つ目は、マスター１０１がスレーブ２０１に対して受信動作を要求してからマスター１０１がデータを送信し（マスターが第１送信動作を行い）、スレーブ２０１がマスター１０１から送信されるデータを受信する（第１受信動作を行う）場合の通信動作である。２つ目は、スレーブ２０１がマスター１０１に対して受信動作を要求してからスレーブ２０１がデータを送信し（スレーブ２０１が第２送信動作を行い）、マスター１０１がスレーブ２０１から送信されるデータを受信する（マスター１０１が第２受信動作を行う）場合の通信動作である。３つめは、マスター１０１とスレーブ２０１が同時に通信相手に対して受信動作を要求して、それぞれが、同時に第１及び第２送信動作を開始してから、スレーブ２０１が、第１受信動作に切替る場合の通信動作である。
【００３４】
尚、以下に説明する各通信動作において、送信でＭＩＳＯ信号線、ＭＯＳＩ信号線にセットするレベルは、送信する値が１の場合はHighレベル、０の場合はLowレベルとする。受信でＭＩＳＯ信号線、ＭＯＳＩ信号線がHighレベルの場合は受信値は１とし、Lowレベルの場合は受信値は０とする。
【００３５】
まず、マスター１０１がスレーブ２０１に対して受信動作を要求してからマスター１０１がデータを送信し（マスターが第１送信動作を行い）、スレーブ２０１がマスター１０１から送信されるデータを受信する（第１受信動作を行う）場合の動作について説明する。
図７は、マスター１０１から３バイトの送信を実行する場合のタイミングチャートである。ここで、マスター１０１、スレーブ２０１の双方の送信データは図８の内容とする。
マスター１０１において、スレーブ２０１へ通信する必要が発生した場合、送信データを送信データ記憶部１０４に格納し、通信（第１送信動作）を開始する。具体的には、送信データ記憶部１０４の先頭の第１バイトの記憶領域から、８１H、００H、８１Hの順に格納する。
【００３６】
まず、マスター１０１は、ＳＳ信号線をLowレベルにして第１要求信号を出力することにより、通信開始および通信許可をスレーブ２０１に通知する（図７のａ）。スレーブ２０１は、ＳＳ信号線がLowレベルであることを検知すると（図７のａ）、以下のように受信側として通信（第１受信動作）を開始する。送信データ記憶部２０４の第１バイト用の記憶領域に、受信側であることを示す所定値、ＮＵＬＬを格納する。送信データ記憶部２０４の第１バイト用の記憶領域に記憶した値ＮＵＬＬを構成するLSB側の第１ビットの値を送信用のデータとしてＭＩＳＯ信号線にセットした後（図７のｂ）、ＲＤＹ信号線が一定期間だけLowレベルとなるＲＤＹパルスを出力する（図７のｃ）。前記ＲＤＹパルスを出力することにより、１バイト目の通信準備完了をマスター１０１へ通知する。すなわち、ＲＤＹパルスによって、スレーブ２０１による受信動作の実行が、マスター１０１に通
知される。この動作により、スレーブ２０１から送信する第１バイトのデータのうちの第１ビットのデータを送信する（図７のｂ）。前記ＲＤＹパルスのLowレベルを保持する時間は、マスター１０１でＲＤＹ信号線をポーリングするために十分な時間であればよい。
【００３７】
マスター１０１では、ＲＤＹ信号線の立ち下りエッジを検知すると（図７のｃ）、以下のように送信側として第１送信動作を実行する。送信データ記憶部１０４に記憶した第１バイトの値８１Ｈを構成するLSB側の第１ビットの値を送信用のデータとしてＭＯＳＩ信号線にセットしてから（図７のＡ）、ＳＣＫ信号線をHighレベルにする（図７のＢ）。そして、ＭＩＳＯ信号線に入力されるレベル（図７のｂのレベル）を受信データ記憶部１０５における第１バイトのLSB側の第１ビット用の記憶領域に受信したデータとして記憶した後、ＳＣＫ信号線をLowレベルにする（図７のＣ）。これらの動作により、マスター１０１から送信する第１バイトのデータのうちの第１ビットのデータを送信し（図７のＡ）、スレーブ２０１から送信される第１バイトのデータのうちの第１ビットのデータを受信する（図７のｂ）。
【００３８】
次に、送信データ記憶部１０４に記憶されている第１バイトの値８１Ｈを構成するLSB側の第２ビットの値を送信用のデータとしてＭＯＳＩ信号線にセットしてから（図７のＤ）、ＳＣＫ信号線をHighレベルにする（図７のＥ）。そして、ＭＩＳＯ信号線に入力されるレベル（図７のｄのレベル）を受信データ記憶部１０５における第１バイトのLSB側の第２ビット用の記憶領域に受信したデータとして記憶した後、ＳＣＫ信号線をLowレベルにする（図７のＦ）。これらの動作により、マスター１０１から送信する第１バイトのデータのうちの第２ビットのデータを送信し（図７のＤ）、スレーブ２０１から送信される第１バイトのデータうちの第２ビットのデータを受信する（図７のｄ）。第３ビットから第８ビットも同様にして繰返す。以上で第１バイトの通信を終了し、マスター１０１は、２バイト目のＲＤＹパルスの立ち下りエッジ（図７のe）を検知することを待つ状態となる。
【００３９】
スレーブ２０１は、ＳＣＫ信号線の立ち上がりエッジを検知すると（図７のＢ）、ＭＯＳＩ信号線に入力されるレベル（図７のＡのレベル）を受信データ記憶部２０５における第１バイトのLSB側の第１ビット用の記憶領域に受信したデータとして記憶する。そして、ＳＣＫ信号線の立ち下りエッジを検知すると（図７のＣ）、送信データ記憶部２０４に記憶されている第１バイトの値ＮＵＬＬを構成するLSB側の第２ビットの値を送信用のデータとしてＭＩＳＯ信号線にセットする（図７のｄ）。
【００４０】
次に、ＳＣＫ信号線が立ち上がりエッジを検知すると（図７のＥ）、ＭＯＳＩ信号線に入力されるレベル（図７のＤのレベル）を受信データ記憶部２０５における第１バイトのLSB側の第２ビット用の記憶領域に受信したデータとして記憶する。これらの動作により、マスター１０１から送信される第１バイトのデータのうちの第２ビットまでのデータ（図７のAとDのデータ）を受信し、スレーブ２０１から送信する第１バイトのデータのうちの第２ビットまでのデータ（図７のｂとｄのデータ）を送信する。第３ビットから第８ビットも同様にして繰返して第１バイトの通信を行なう。２バイト目の送信データは、１バイト目で受信した、受信データ記憶部２０５に記憶されている第１バイトの値８１Ｈである。これを送信データ記憶部２０４における第２バイト用の記憶領域に格納する。送信データ記憶部２０４に記憶されている第２バイトの値８１Hを構成するLSB側の第１ビットの値をＭＩＳＯ信号線に送信用のデータとしてセットした後、ＲＤＹパルスを出力することにより（図７のe）、２バイト目の通信準備完了をマスター１０１へ通知する。その後、ＳＣＫ信号線の立ち上がりエッジを検知するまで待ち状態となる。
【００４１】
マスター１０１からスレーブ２０１への送信データの２バイト目は送信データ記憶部１０４に記憶されている第２バイトの値００H、３バイト目は送信データ記憶部１０４に記
憶されている第３バイトの値８１Hである。スレーブ２０１からマスター１０１への送信データの３バイト目は、２バイト目でマスター１０１から受信し、送信データ記憶部２０４の第３バイト用の記憶領域に記憶した値００Ｈである。このように、マスター１０１から送信される複数バイトのデータのうち、２バイト目以降のデータを受信するときに、スレーブ２０１は、１バイト前の通信でマスター１０１から受信したデータ（所定のチェック用データ）をマスター１０２に送信する。マスター１０１は、２バイト目以降のデータを送信するときに、１バイト前の通信で自ら送信したデータ（所定のチェック用データ）をスレーブ２０１から受信する。
【００４２】
３バイトの通信が終了すると、スレーブ２０１は、ＲＤＹパルスを出力することにより、通信終了および通信禁止をマスター１０１へ通知する。（図７のｆ）
マスター１０１は３バイトの通信後に、ＲＤＹ信号線の立ち下りエッジを検知すると（図７のｆ）、ＳＳ信号線をHighレベルにすることにより、通信終了および通信禁止をスレーブ２０１に通知する（図７のｇ）。
【００４３】
次に、スレーブ２０１がマスター１０１に対して受信動作を要求してからスレーブ２０１がデータを送信し（スレーブ２０１が第２送信動作を行い）、マスター１０１がスレーブ２０１から送信されるデータを受信する（マスター１０１が第２受信動作を行う）場合の通信動作について説明する。図９は、スレーブ２０１から３バイトの送信を実行する場合のタイミングチャートである。ここで、マスター１０１、スレーブ２０１の双方の送信データは図１０の内容とする。
【００４４】
スレーブ２０１において、マスター１０１へ通信する必要が発生した場合、ＳＳ信号線がLowレベルである場合は、マスター１０１が通信処理中であるので、ＳＳ信号線がHighレベルになるのを待つ。ＳＳ信号線がHighレベルである場合は、送信データを送信データ記憶部２０４に格納し、通信（第２送信動作）を開始する。具体的には、送信データ記憶部２０４の先頭の第１バイトの記憶領域から、０１H、００H、０１Hを順に格納する。
まず、スレーブ２０１は、送信データ記憶部２０４の第１バイト用の記憶領域に記憶された値０１Ｈを構成するLSB側の第１ビットの値１を送信用のデータとしてＭＩＳＯ信号線にセットした後（図９のb）、第２要求信号としてＲＤＹパルスを出力することにより、通信開始および１バイト目の通信準備完了をマスター１０１へ通知する（図９のｃ）。
【００４５】
マスター１０１は、ＲＤＹ信号線の立ち下りエッジを検知すると（図９のｃ）、以下のように受信側として通信（第２受信動作）を開始する。送信データ記憶部１０４の第１バイト用の記憶領域に、受信側であるとこを示す所定値、ＮＵＬＬを格納する。ＳＳ信号線をLowレベルにしてスレーブ２０１に対して通信許可を通知する（図９のａ）。すなわち、ＳＳ信号線をLowレベルにすることによって、マスター１０１の受信動作の実行が、スレーブ２０１に通知される。その後、送信データ記憶部１０４の第１バイト用の記憶領域に記憶された値ＮＵＬＬを構成するLSB側の第１ビットの値を送信用のデータとしてＭＯＳＩ信号線にセットしてから（図９のＡ）、ＳＣＫ信号線をHighレベルにする（図９のＢ）。そして、ＭＩＳＯ信号線に入力されるレベル（図９のｂのレベル）を受信データ記憶部１０５における第１バイトのLSB側の第１ビット用の記憶領域に記憶した後、ＳＣＫ信号線をLowレベルにする（図９のＣ）。これらの動作により、マスター１０１から送信する第１バイトのデータのうちの第１ビットのデータを送信し（図９のＡ）、スレーブ２０１から送信される第１バイトのデータのうちの第１ビットのデータを受信する（図９のｂ）。
【００４６】
次に、送信データ記憶部１０４に記憶されている第１バイトの値ＮＵＬＬを構成するLSB側の第２ビットの値０を送信用のデータとしてＭＯＳＩ信号線にセットしてから（図９のＤ）、ＳＣＫ信号線をHighレベルにする（図９のＥ）。そして、ＭＩＳＯ信号線に入力
されるレベル（図９のｄのレベル）を受信データ記憶部１０５における第１バイトのLSB側の第２ビット用の記憶領域に受信データとして記憶した後、ＳＣＫ信号線をLowレベルにする（図９のＦ）。これらの動作により、マスター１０１から送信する第１バイトのデータのうちの第２ビットのデータを送信し（図９のＤ）、スレーブ２０１から送信される第１バイトのデータうちの第２ビットのデータを受信する（図９のｄ）。第３ビットから第８ビットも同様にして繰返して１バイト通信を終了する。２バイト目の送信データは、１バイト目で受信した、受信データ記憶部１０５の第１バイト用の記憶領域に記憶されている値０１Ｈである。これを送信データ記憶部１０４の第２バイト用の記憶領域に格納する。その後、マスター１０１は、２バイト目のＲＤＹ信号線の立ち下りエッジ（図９のｅ）の検知を待つ状態となる。
【００４７】
スレーブ２０１は、ＳＳ信号線のLowレベルを検知することにより（図９のａ）、通信が開始されたと判断する。まず、ＳＣＫ信号線の立ち上がりエッジを検知すると（図９のＢ）、ＭＯＳＩ信号線に入力されるレベル（図９のＡのレベル）を受信データ記憶部２０５における第１バイトのLSB側の第１ビット用の記憶領域に受信データとして記憶する。そして、ＳＣＫ信号線の立ち下りエッジを検知すると（図９のＣ）、送信データ記憶部２０４の第１バイト用の記憶領域に記憶された値０１Ｈを構成するLSB側の第２ビットの値０を送信用のデータとしてＭＩＳＯ信号線にセットする（図９のｄ）。
【００４８】
次に、ＳＣＫ信号線の立ち上がりエッジを検知すると（図９のＥ）、ＭＯＳＩ信号線に入力されるレベル（図９のＤのレベル）を受信データ記憶部２０５における第１バイトのLSB側の第２ビット用の記憶領域に受信データとして記憶する。これらの動作により、マスター１０１から送信される第１バイトのデータのうちの第２ビットまでのデータ（図９のAとDのデータ）を受信し、スレーブ２０１から送信する第１バイトのデータのうちの第２ビットまでのデータ（図９のｂとｄのデータ）を送信する。第３ビットから第８ビットも同様にして繰返して第１バイトの通信を行なう。
【００４９】
スレーブ２０１からマスター１０１への送信データの２バイト目は送信データ記憶部２０４の第２バイト用の記憶領域に記憶されている値００Hである。前記００Ｈを構成するLSB側の第１ビットの値０を送信用のデータとしてＭＩＳＯ信号線にセットした後、ＲＤＹパルスを出力することにより（図９のｅ）、２バイト目の通信準備完了をマスター１０１へ通知する。その後、ＳＣＫ信号線の立ち上がりエッジを検知するまで待ち状態となる。
【００５０】
スレーブ２０１からマスター１０１への送信データの３バイト目は送信データ記憶部２０４における第３バイト用の記憶領域に記憶されている値０１Hである。
マスター１０１からスレーブ２０１への送信データの３バイト目は、２バイト目でスレーブ２０１から受信し、送信データ記憶部１０４における第３バイト用の記憶領域にコピーして記憶した値００Ｈである。
【００５１】
３バイトの通信が終了すると、スレーブ２０１は、ＲＤＹパルスを出力することにより、通信終了および通信禁止をマスター１０１へ通知する（図９のｆ）。
マスター１０１は３バイトの通信後のＲＤＹパルスの立ち下りエッジを検知すると（図９のｆ）、ＳＳ信号線をHighレベルにすることにより、通信終了および通信禁止をスレーブ２０１に通知する（図９のｇ）。
【００５２】
次に、マスター１０１とスレーブ２０１が同時に通信相手に対して受信動作を要求して、それぞれが、同時に第１及び第２送信動作を開始してから、スレーブ２０１が、第１受信動作に切替る場合の動作について説明する。
【００５３】
図１１は、マスター１０１とスレーブ２０１が同時に送信を開始するタイミングを示し
た図である。ここで、マスター１０１は、図１２（ａ）に示すように、図８のＭＯＳＩの送信データを送信するものとする。具体的には、送信データ記憶部１０４の先頭の第１バイト用の記憶領域から、８１H、００H、８１Hの順に格納する。また、スレーブ２０１は、図１２（ａ）に示すように、図１０のＭＩＳＯの送信データを送信するものとする。具体的には、送信データ記憶部２０４の先頭の第１バイト用の記憶領域から、０１H、００H、０１Hを順に格納する。
【００５４】
マスター１０１は、送信側として通信（第１送信動作）を開始する。すなわち、通信開始および通信許可をスレーブ２０１に通知するため、ＳＳ信号線をLowレベルにして第１要求信号を出力する（図１１のａ）。そして、ＲＤＹ信号線の立下りを検出するのを待つ。
【００５５】
スレーブ２０１もまた、送信側として通信（第２送信動作）を開始する。すなわち、送信データ記憶部２０４に記憶されている第１バイトの値０１Ｈを構成するLSB側の第１ビットの値を送信用のデータとしてＭＩＳＯ信号線にセットした後（図１１のb）、第２要求信号であるＲＤＹパルスを出力することにより、通信開始および１バイト目の通信準備完了をマスター１０１へ通知する（図１１のｃ）。
【００５６】
マスター１０１は、ＲＤＹパルスを検出して（図１１のｃ）、このパルスをスレーブ２０１の通信準備完了の信号、すなわち、スレーブ２０１の受信動作の実行を通知する信号であると判断し、以下のように送信側として通信を継続する。
【００５７】
送信データ記憶部１０４に記憶されている第１バイトの値８１Ｈを構成するLSB側の第１ビットの値を送信用のデータとしてＭＯＳＩ信号線にセットしてから（図１１のＡ）、ＳＣＫ信号線をHighレベルにする（図１１のＢ）。そして、ＭＩＳＯ信号線に入力されるレベル（図１１のｂのレベル）を受信データ記憶部１０５における第１バイトのLSB側の第１ビット用の記憶領域に受信したデータとして記憶した後、ＳＣＫ信号線をLowレベルにする（図１１のＣ）。これらの動作により、マスター１０１から送信する第１バイトのデータのうちの第１ビットのデータを送信し（図１１のＡ）、スレーブ２０１から送信される第１バイトのデータのうちの第１ビットのデータを受信する（図１１のｂ）。
【００５８】
次に、送信データ記憶部１０４における第１バイトの値８１Ｈを構成するLSB側の第２ビットの値を送信用のデータとしてＭＯＳＩ信号線にセットしてから（図１１のＤ）、ＳＣＫ信号線をHighレベルにする（図１１のＥ）。そして、ＭＩＳＯ信号線に入力されるレベル（図１１のｄのレベル）を受信データ記憶部１０５における第１バイトのLSB側の第２ビット用の記憶領域に受信データとして記憶した後、ＳＣＫ信号線をLowレベルにする（図１１のＦ）。これらの動作により、マスター１０１から送信する第１バイトのデータのうちの第２ビットのデータを送信し（図１１のＤ）、スレーブ２０１から送信される第１バイトのデータうちの第２ビットのデータを受信する（図１１のｄ）。第３ビットから第８ビットも同様にして繰返す。以上で１バイト目の通信を終了し、マスター１０１は、２バイト目のＲＤＹの立ち下りエッジ（図１１のe）を検知することを待つ状態となる。
【００５９】
スレーブ２０１もまた、ＳＳ信号線のLowレベルを検知することにより、マスター１０１の受信動作の実行を通知する信号であると判断して、以下のように送信側として通信（第２送信動作）を開始する。まず、ＳＣＫ信号線の立ち上がりエッジを検知すると（図１１のＢ）、ＭＯＳＩ信号線に入力されるレベル（図１１のＡのレベル）を受信データ記憶部２０５における第１バイトのLSB側の第１ビット用の記憶領域に受信したデータとして記憶し、ＳＣＫ信号線の立ち下りエッジを検知すると（図１１のＣ）、送信データ記憶部２０４に記憶されている第１バイトの値０１Ｈを構成するLSB側の第２ビットの値を送信用のデータとしてＭＩＳＯ信号線にセットする（図１１のｄ）。
【００６０】
次に、ＳＣＫ信号線の立ち上がりエッジを検知すると（図１１のＥ）、ＭＯＳＩ信号線に入力されるレベル（図１１のＤのレベル）を受信データ記憶部２０５における第１バイトのLSB側の第２ビット用の記憶領域に受信したデータとして記憶する。これらの動作により、マスター１０１から送信される第１バイトのデータのうちの第２ビットまでのデータ（図１１のAとDのデータ）を受信し、スレーブ２０１から送信する第１バイトのデータのうちの第２ビットまでのデータ（図１１のｂとｄのデータ）を送信する。第３ビットから第８ビットも同様にして繰返し、１バイト目の通信を行なう。
【００６１】
図１１の第１バイトの通信が終了したとき、マスター１０１が受信して、受信データ記憶部１０５における第１バイト用の記憶領域に記憶されたデータの値は０１Hであり、これは１バイト目の通信で、スレーブ２０１から送信したコマンドの値である。また、スレーブ２０１が受信して、受信データ記憶部２０５における第１バイト用の記憶領域に記憶されたデータの値は８１Hであり、これは１バイト目の通信でマスター１０１から送信したコマンドの値である。この１バイト目の通信が行われた時点で、スレーブ２０１は、マスター１０１から１バイト目に受信したデータである８１Hが、受信側であることを示す所定値であるＮＵＬＬと異なることにより、マスター１０１が送信側として１バイト目にコマンドを送信してきたと判断する。そして、スレーブ２０１は、送信データ記憶部２０４に格納された送信データを送信保留データ記憶部２０８へコピーした後、受信側の動作（第１受信動作）に切り換えて通信を継続する。
【００６２】
スレーブ２０１の２バイト目の送信データは、１バイト目でマスター１０１から受信した、受信データ記憶部２０５に記憶されている第１バイトの値８１Ｈとなる。これを送信データ記憶部２０４における第２バイト用の記憶領域に記憶する。送信データ記憶部２０４における第２バイト用記憶領域に記憶されている値８１Hを構成するLSB側の第１ビットの値（所定のチェック用データを構成するデータ）を送信用のデータとしてＭＩＳＯ信号線にセットした後（図１１のｈ）、ＲＤＹパルスを出力することにより、２バイト目の通信準備完了をマスター１０１へ通知する（図１１のe）。その後、ＳＣＫ信号線の立ち上がりエッジを検知するまで待ち状態となる。
【００６３】
マスター１０１は、スレーブ２０１から送信された１バイト目の値にかかわらず、そのまま送信動作を継続する。マスター１０１からスレーブ２０１への送信データの２バイト目は送信データ記憶部１０４に記憶されている第２バイトの値００H、３バイト目は送信データ記憶部１０４に記憶されている第３バイトの値８１Hである。
【００６４】
スレーブ２０１の３バイト目の送信データは、２バイト目でマスター１０１から受信した、受信データ記憶部２０５に記憶されている第２バイトの値００Ｈとなる。これを送信データ記憶部２０４における第３バイト用の記憶領域に記憶する。
【００６５】
３バイトの通信が終了すると、スレーブ２０１は、ＲＤＹパルスを出力することにより、通信終了および通信禁止をマスター１０１へ通知する（図１１のｆ）。
マスター１０１は３バイトの通信後に、ＲＤＹ信号線の立ち下りエッジを検知すると（図１１のｆ）、ＳＳ信号線をHighレベルにすることにより、通信終了および通信禁止をスレーブ２０１に通知する（図１１のｇ）。
【００６６】
図１２（ｂ）は、図１１の通信で、マスター１０１からＭＯＳＩ信号線で送信された送信データと、スレーブ２０１からＭＩＳＯ信号線で送信された送信データの内容となる。ＭＯＳＩにおいては、第１バイトの値は８１Ｈ、第２バイトの値は００Ｈ、第３バイトの値は８１Ｈ、であり、ＭＩＳＯにおいては、第１バイトの値は０１Ｈ、第２バイトの値は８１Ｈ、第３バイトの値は００Ｈ、である。送信された図１２（ｂ）のデータにおいて、
スレーブ２０１からＭＩＳＯ信号線で送信したデータは、通信開始時の図１２（ａ）のデータと比較して、第２バイトのデータが００Ｈから８１Ｈに替わり、第３バイトのデータが０１Ｈから００Ｈに替わっている。
【００６７】
図１３は、図１１の通信でスレーブ２０１が送信を保留した送信データを、マスター１０１へ送信する通信のタイミングを示した図である。
スレーブ２０１は、図１１の通信が終了し、ＳＳ信号線がHighレベルになったことを検出すると（図１１のｇ）、送信保留データ記憶部２０８に格納した送信データをマスター１０１へ送信する作業を開始する。具体的には、送信保留データ記憶部２０８に格納した図１２（ａ）の送信データを送信データ記憶部２０４の先頭の第１バイトの記憶領域から、０１H、００H、０１Hの順に格納する。そして、送信データ記憶部２０４に記憶されている第１バイトの値０１Ｈを構成するLSB側の第１ビットの値１を送信用のデータとしてＭＩＳＯ信号線にセットした後（図１３のｂ）、ＲＤＹパルスを出力することにより、通信開始および１バイト目の通信準備完了をマスター１０１へ通知する（図１３のｃ）。
マスター１０１は、ＲＤＹ信号線の立ち下りエッジを検知すると（図１３のｃ）、受信側として通信を開始する。送信データ記憶部１０４の第１バイト用の記憶領域に、受信側であるとこを示す所定値、ＮＵＬＬを記憶する。そして、マスター１０１は、ＳＳ信号線をLowレベルにしてスレーブ２０１に対して通信許可を通知する（図１３のａ）。その後、送信データ記憶部１０４に記憶されている第１バイトの値ＮＵＬＬを構成するLSB側の第１ビットの値を送信用のデータとしてＭＯＳＩ信号線にセットしてから（図１３のＡ）、ＳＣＫ信号線をHighレベルにする（図１３のＢ）。そして、ＭＩＳＯ信号線に入力されているレベル（図１３のｂのレベル）を受信データ記憶部１０５における第１バイトのLSB側の第１ビット用の記憶領域に受信したデータとして記憶した後、ＳＣＫ信号線をLowレベルにする（図１３のＣ）。これらの動作により、マスター１０１から送信する第１バイトのデータのうちの第１ビットのデータを送信し（図１３のＡ）、スレーブ２０１から送信される第１バイトのデータのうちの第１ビットのデータを受信する（図１３のｂ）。
次に、送信データ記憶部１０４に記憶されている第１バイトの値ＮＵＬＬを構成するLSB側の第２ビットの値０を送信用のデータとしてＭＯＳＩ信号線にセットしてから（図１３のＤ）、ＳＣＫ信号線をHighレベルにする（図１３のＥ）。そして、ＭＩＳＯ信号線に入力されているレベル（図１３のｄのレベル）を受信データ記憶部１０５における第１バイトのLSB側の第２ビット用の記憶領域に受信したデータとして記憶した後、ＳＣＫ信号線をLowレベルにする（図７のＦ）。これらの動作により、マスター１０１から送信する第１バイトのデータのうちの第２ビットのデータを送信し（図１３のＤ）、スレーブ２０１から送信される第１バイトのデータうちの第２ビットのデータを受信する（図１３のｄ）。第３ビットから第８ビットも同様にして繰返して１バイト通信を終了する。２バイト目の送信データは、１バイト目で受信した、受信データ記憶部１０５に記憶されている第１バイトの値０１Ｈである。これを送信データ記憶部１０４における第２バイト用の記憶領域に記憶する。その後、マスター１０１は、２バイト目のＲＤＹの立ち下りエッジ（図１３のｅ）の検知を待つ状態となる。
【００６８】
スレーブ２０１は、ＳＳ信号線のLowレベルを検知することにより（図１３のａ）、通信が開始されたと判断する。まず、ＳＣＫ信号線の立ち上がりエッジを検知すると（図１３のＢ）、ＭＯＳＩ信号線に入力されているレベル（図１３のＡのレベル）を受信データ記憶部２０５における第１バイトのLSB側の第１ビット用の記憶領域に受信したデータとして記憶し、ＳＣＫ信号線の立ち下りエッジを検知すると（図１３のＣ）、送信データ記憶部２０４に記憶されている第１バイトの値０１Ｈを構成するLSB側の第２ビットの値０を送信用のデータとしてＭＩＳＯ信号線にセットする（図１３のｄ）。
【００６９】
次に、ＳＣＫ信号線の立ち上がりエッジを検知すると（図１３のＥ）、ＭＯＳＩ信号線に入力されているレベル（図１３のＤのレベル）を受信データ記憶部２０５における第１
バイトのLSB側の第２ビット用の記憶領域に受信したデータとして記憶する。これらの動作により、マスター１０１から送信される第１バイトのデータのうちの第２ビットまでのデータ（図１３のAとDのデータ）を受信し、スレーブ２０１から送信する第１バイトのデータのうちの第２ビットまでのデータ（図１３のｂとｄのデータ）を送信する。第３ビットから第８ビットも同様にして繰返して１バイト通信を行なう。
【００７０】
スレーブ２０１からマスター１０１への送信データの２バイト目は送信データ記憶部２０４に記憶されている第２バイトの値００Hである。００Ｈを構成するLSB側の第１ビットの値０を送信用のデータとしてＭＩＳＯ信号線にセットした後、ＲＤＹパルスを出力することにより（図１３のｅ）、２バイト目の通信準備完了をマスター１０１へ通知する。その後、ＳＣＫ信号線の立ち上がりエッジを検知するまで待ち状態となる。
【００７１】
スレーブ２０１からマスター１０１への送信データの３バイト目は送信データ記憶部２０４に記憶されている第３バイトの値０１Hである。
マスター１０１からスレーブ２０１への送信データの３バイト目は、２バイト目でスレーブ２０１から受信し、送信データ記憶部１０４の第３バイト用の記憶領域に記憶した値００Ｈである。
【００７２】
３バイトの通信が終了すると、スレーブ２０１は、ＲＤＹパルスを出力することにより、通信終了および通信禁止をマスター１０１へ通知する（図１３のｆ）。
マスター１０１は３バイトの通信後のＲＤＹパルスの立ち下りエッジを検知すると（図１３のｆ）、ＳＳ信号線をHighレベルにすることにより、通信終了および通信禁止をスレーブ２０１に通知する（図１３のｇ）。
図１４は、図１３の通信で、マスター１０１からＭＯＳＩ信号線で送信される送信データと、スレーブ２０１からＭＩＳＯ信号線で送信される送信データの内容となる。ＭＯＳＩにおいては、第１バイトの値はＮＵＬＬ、第２バイトの値は０１Ｈ、第３バイトの値は００Ｈ、であり、ＭＩＳＯにおいては、第１バイトの値は０１Ｈ、第２バイトの値は００Ｈ、第３バイトの値は０１Ｈ、である。
【００７３】
以上のように、スレーブ２０１は、送信開始後、マスター１０１から１バイト目に受信したデータが、受信側であることを示す所定値である場合には、送信動作を継続し、受信側であることを示す所定値でない場合には、送信動作を中止するとともに、マスター１０１からの送信動作に基づくデータとして受信する受信動作に切り替えるので、マスター１０１とスレーブ２０１の両方から同時に通信が開始された場合においても、通信に失敗することなく、安定した通信が可能な同期式シリアル通信システムを実現可能である。
【００７４】
次に、本実施例における通信エラーの検出方法について、フローチャートを用いて説明する。
図１５は、送信側として動作する場合のマスター１０１のフローチャートである。ステップＳ１は、送信データを送信データ記憶部１０４に格納する工程である。ステップＳ２は、タイマー１０９をクリアして時間カウントを開始する工程である。ステップＳ３は、ＳＳ信号線をLowレベルにすることにより、通信開始および通信許可をスレーブ２０１に通知する工程である。ステップＳ４は、タイマー１０９の時間カウントが通信タイムアウト時間を経過したかどうかの判定する工程である。通信タイムアウト時間は、スレーブ２０１がＲＤＹパルスを出力したときのＲＤＹ信号線の立下りから、スレーブ２０１との間で１バイトの通信を経て、スレーブ２０１が再びＲＤＹパルスを出力するまでの時間（図７のＴ１）よりも長い時間とする。
【００７５】
ステップＳ４で通信タイムアウト時間か経過した場合は、スレーブ２０１からの応答が無いので通信エラーが発生したと判断し、ステップＳ６０へ移行する。ステップＳ４で通
信タイムアウト時間か経過していない場合は、ステップＳ５へ移行する。ステップＳ５は、ＲＤＹ信号線レベルの立下がりを判定する工程である。立下りでない場合はステップＳ４へ移行し、立下りである場合はステップＳ５０へ移行する。ステップＳ５０は、タイマー１０９の時間カウントをクリアする工程である。ステップＳ６は残りの送信データの有無を判定する工程である。全ての送信データを送信済みで、残り０バイトの場合は、ステップＳ９へ移行する。未送信の送信データが残っている場合は、ステップＳ７へ移行する。
【００７６】
ステップＳ７は、ＳＣＫ信号線クロックを出力し、１バイトの通信を行なう工程である。ステップＳ８は、２バイト目以降の場合に、前回に送信した１バイトの値と、今回にスレーブ２０１から受信した１バイトの値との照合結果を判定する工程である。２値が異なる場合はＮＧと判定し、通信エラーが発生したと判断し、ステップＳ６０へ移行する。２値が等しい場合はＯＫと判定し、正常であると判断し、ステップＳ４へ移行する。
【００７７】
ステップＳ６０は、通信終了後に送信データを再送するように再送設定する工程である。再送設定がされている場合、通信終了後、スレーブ２０１の通信タイムアウトが発生するのに十分な時間が経過後、送信データの再送を開始する。ステップＳ９は、ＳＳ信号線をHighレベルにすることにより、通信終了および通信禁止をスレーブ２０１に通知する工程である。ステップＳ１０は、タイマー１０９をクリアして時間カウントを終了する工程である。
【００７８】
このように、マスター１０１は、スレーブ２０１から送信される１バイト目のデータの内容にかかわらず、送信動作を続ける。
【００７９】
図１８は、受信側として動作する場合の、スレーブ２０１のフローチャートである。
スレーブ２０１は、ＳＳ信号線のLowレベルを検知してから、ステップＳ４４の工程において、タイマー２０９をクリアして時間カウントを開始する。ステップＳ３５は、ＲＤＹパルスを出力することにより、通信開始および１バイトの通信準備完了をマスター１０１へ通知する工程である。ステップ３６は、タイマー２０９の時間カウントが通信タイムアウト時間を経過したかどうかの判定する工程である。通信タイムアウト時間は、１バイトの通信を経て、ＲＤＹパルスを出力後、マスター１０１からＳＣＫ信号線のクロックを入力するまでの時間（図７のＴ２）よりも長い時間とする。
通信タイムアウト時間か経過した場合は、マスター１０１からの応答が無いので通信エラーが発生したと判断し、ステップＳ４１へ移行する。マスター１０１のステップＳ８で、照合結果がＮＧの場合、マスター１０１が通信を終了するので、マスター１０１からの応答が無くなり、通信タイムアウト時間か経過する。通信タイムアウト時間か経過していない場合は、ステップＳ３７へ移行する。
ステップＳ３７は、ＳＣＫ信号線のクロック入力が発生しているかを判定する工程である。ＳＣＫ信号線のクロック入力が発生している場合には、ステップＳ５３へ移行する。マスター１０１がＲＤＹ信号線レベルの立下がりを検出してＳＣＫ信号線クロックを出力するまでの、ＳＣＫ信号線のクロック入力が発生していない場合には、ステップＳ３６へ移行する。ステップＳ５３は、タイマー２０９の時間カウントをクリアする工程である。ステップＳ３８は、ＳＣＫ信号線のクロックに同期して、１バイトの通信を行なう工程である。
ステップＳ３９は、残りの受信データの有無を判定する工程である。全ての受信データを受信済みの場合は、ステップＳ４０へ移行する。未受信の受信データが残っている場合は、ステップＳ３５へ移行する。ステップＳ４０は、受信データ記憶部２０５に格納された受信データのうち、コマンドからデータまでをXORしたチェックサムの値と、最終受信バイトの値との照合結果を判定する工程である。２値が異なる場合はＮＧと判定し、受信データが不正な値であると判断し、ステップＳ４１へ移行する。２値が等しい場合はＯＫと
判定し、正常であると判断し、ステップＳ４２へ移行する。ステップＳ４１は、受信データ記憶部２０５に格納された受信データをクリアする、エラー処理の工程である。ステップ４２は、ＲＤＹパルスを出力することにより、通信終了および通信禁止をマスター１０１へ通知する工程である。ステップＳ４３は、タイマー２０９をクリアして時間カウントを終了する工程である。
【００８０】
図１７は、送信側として動作する場合のスレーブ２０１のフローチャートである。ステップＳ２１は、送信データを送信データ記憶部１０４に格納する工程である。ステップＳ２２は、タイマー２０９をクリアして時間カウントを開始する工程である。ステップＳ２３は、ＲＤＹパルスを出力することにより、通信開始および１バイトの通信準備完了をマスター１０１へ通知する工程である。ステップ２４は、タイマー２０９の時間カウントが通信タイムアウト時間を経過したかどうかの判定する工程である。通信タイムアウト時間は、１バイトの通信を経て、ＲＤＹパルスを出力後、マスター１０１からＳＣＫ信号線のクロックを入力するまでの時間（図９のＴ２）よりも長い時間とする。通信タイムアウト時間か経過した場合は、マスター１０１からの応答が無いので通信エラーが発生したと判断し、ステップＳ６１へ移行する。通信タイムアウト時間か経過していない場合は、ステップＳ２５へ移行する。
【００８１】
ステップＳ２５は、ＳＣＫ信号線のクロック入力が発生しているかを判定する工程である。ＳＣＫ信号線のクロック入力が発生している場合には、ステップＳ５２へ移行する。マスター１０１がＲＤＹ信号線レベルの立下がりを検出してＳＣＫ信号線クロックを出力するまでの、ＳＣＫ信号線のクロック入力が発生していない場合には、ステップＳ２４へ移行する。ステップＳ５２は、タイマー２０９の時間カウントをクリアする工程である。ステップＳ２６は、ＳＣＫ信号線のクロックに同期して、１バイトの通信を行なう工程である。ステップＳ２７は、残りの送信データの有無を判定する工程である。全ての送信データを送信済みの場合は、ステップＳ２８へ移行する。未送信の送信データが残っている場合は、ステップＳ２９へ移行する。
【００８２】
ステップＳ２８は、ＲＤＹパルスを出力することにより、通信終了および通信禁止をマスター１０１へ通知する工程である。ステップS２９は、１バイト目の通信である場合はステップS３１へ移行し、２バイト目以降の通信である場合はステップS３０へ移行する、判定工程である。ステップＳ３１は、１バイト目の通信でマスター１０１から受信した値が、受信側であることを示す所定値であるＮＵＬＬであるかを判定する工程である。ＮＵＬＬである場合はステップＳ３０へ移行し、ＮＵＬＬで無い場合はステップＳ３２へ移行する。ステップＳ３２は、受信側に切り換えるために、送信データ記憶部２０４に格納された送信データを送信保留データ記憶部２０８へコピーする工程である。ステップＳ３２から、受信側として通信を継続するために、図１８に示す、受信側として動作する場合のスレーブ２０１の、フローチャートのＳ３５の工程へ移行する（図１７のＡ）。
【００８３】
図１７のステップ３２から移行した（図１８のＡ）ステップＳ３５の工程では、ＲＤＹパルスを出力することにより、通信開始および１バイトの通信準備完了をマスター１０１へ通知する。ステップＳ３５から後は、図１８のフローチャートに処理を移し、受信側としての動作を継続する。ステップＳ３０は、２バイト目以降の場合に、前回に送信した１バイトの値と、今回にマスター１０１から受信した１バイトの値との照合結果を判定する工程である。２値が異なる場合はＮＧと判定し、通信エラーが発生したと判断し、ステップＳ６１へ移行する。２値が等しい場合はＯＫと判定し、正常であると判断し、ステップＳ２３へ移行する。ステップＳ６１は、通信終了後に送信データを再送するように再送設定する工程である。再送設定がされている場合、通信終了後、マスター１０１の通信タイムアウトが発生するのに十分な時間が経過後、送信データの再送を開始する。ステップＳ３４は、タイマー２０９をクリアして時間カウントを終了する工程である。
【００８４】
このように、スレーブ２０１は、送信側として動作を開始しても、ステップＳ３１で、マスター１０１から送信される１バイト目のデータがＮＵＬＬでないと判断した場合には、図１８のステップＳ３５から受信側として動作を切替えるので、送信側として動作を開始したマスター１０１は、そのまま送信動作を継続することができ、通信のエラーも発生しない。
【００８５】
図１６は、受信側として動作する場合のマスター１０１のフローチャートである。マスター１０１は、スレーブ２０１が送信側としてＲＤＹパルスを出力してから、ＲＤＹ信号線の立ち下りエッジを検知すると、ステップＳ１１の工程において、タイマー１０９をクリアして時間カウントを開始する。ステップＳ１２は、ＳＳ信号線をLowレベルにすることにより、通信開始および通信許可をスレーブ２０１に通知する工程である。ステップＳ１３は、ＳＣＫ信号線にクロックを出力し、１バイトの通信を行なう工程である。ステップＳ１４は、タイマー１０９の時間カウントが通信タイムアウト時間を経過したかどうかの判定する工程である。
【００８６】
通信タイムアウト時間は、スレーブ２０１がＲＤＹパルスを出力したときのＲＤＹ信号線の立下りから１バイトの通信を経て、スレーブ２０１が再びＲＤＹパルスを出力するまでの時間（図９のＴ１）よりも長い時間とする。通信タイムアウト時間か経過した場合は、スレーブ２０１からの応答が無いので通信エラーが発生したと判断し、ステップＳ１８へ移行する。図１７におけるスレーブ２０１のステップＳ３０で、照合結果がＮＧの場合、スレーブ２０１が通信を終了するので、スレーブ２０１からの応答が無くなり、通信タイムアウト時間か経過する。通信タイムアウト時間か経過していない場合は、ステップＳ１５へ移行する。
【００８７】
ステップＳ１５は、ＲＤＹ信号線レベルの立下がりを判定する工程である。立下りでない場合はステップＳ１４へ移行し、立下りである場合はステップＳ５１へ移行する。ステップＳ５１は、タイマー１０９の時間カウントをクリアする工程である。ステップＳ１６は残りの受信データの有無を判定する工程である。全ての受信データを受信済みで、残り０バイトの場合は、ステップＳ１７へ移行する。未受信の受信データが残っている場合は、ステップＳ１３へ移行する。
【００８８】
ステップＳ１７は、受信データ記憶部１０５に格納された受信データのうち、コマンドからデータまでをXORしたチェックサムの値と、最終受信バイトの値との照合結果を判定する工程である。２値が異なる場合はＮＧと判定し、受信データが不正な値であると判断し、ステップＳ１８へ移行する。２値が等しい場合はＯＫと判定し、正常であると判断し、ステップＳ１９へ移行する。ステップＳ１８は、受信データ記憶部１０５に格納された受信データをクリアする、エラー処理の工程である。ステップＳ１９は、ＳＳ信号線をHighレベルにすることにより、通信終了および通信禁止をスレーブ２０１に通知する工程である。ステップＳ２０は、タイマー１０９をクリアして時間カウントを終了する工程である。
【００８９】
マスター１０１の図１５の送信処理におけるＳ６０の再送処理、あるいは、マスター１０１の図１６の受信処理におけるＳ１８のエラー処理、を実行するが、マスター１０１の出力ポートとスレーブ２０１のリセット端子を接続し、通信エラー発生時にマスター１０１の前記出力ポートからリセットパルスを出力することにより、スレーブ２０１をリセットしてもよい。これにより、スレーブ２０１が、プログラムの暴走などの異常が発生したことに起因して通信エラーが発生している場合にも、スレーブ２０１を正常な状態に復帰させることが可能である。
【００９０】
以上のように、本実施例においては、送信側は、送信したデータが次の１バイト通信で受信した受信データと照合することで、通信が正常に行なわれているか判断し、受信側は、受信したデータのチェックサムと、送信側から受信したチェックサムとを照合することで、通信が正常に行なわれているか判断し、また、送信側または受信側の装置に異常が発生して、通信が途切れた場合にも、タイマーの時間カウントが通信タイムアウト時間を経過ことを検知して、通信エラーと判断するので、容易に通信エラーを検出でき、通信エラーによるプログラムの不正処理を未然に防ぐことが可能である。
【００９１】
本実施例では、ＲＤＹ信号線を、1バイトデータの通信準備完了を通知する目的と、スレーブ２０１がマスター１０１に通信開始を通知する目的とに兼用しているが、ＲＤＹ信号線とは別に、ＲＥＱ信号線を追加してもよい。図１９は、ＲＥＱ信号線を追加した場合のブロック図である。図１９のブロック図は、図２のブロック図に、ＲＥＱ信号線を追加した点が異なるだけである。ＲＥＱ信号線は、スレーブ２０１の出力端子２１６と、マスター１０１の入力端子１１６に接続される。ＲＥＱ信号線は、スレーブ２０１がマスター１０１に通信開始を通知する信号（第２要求信号）を出力して受信動作を要求する機能を果たす第２信号線として用いられ、通常はHighレベルとする。ＲＤＹ信号線は、１バイト毎のスレーブ側のデータの通信準備完了を通知するために用いられる。
【００９２】
図２０は、ＲＥＱ信号線を使用してスレーブ２０１から3バイトの送信を実行する場合のタイミングチャートである。スレーブ２０１において、マスター１０１へ通信する必要が発生した場合、送信データを送信データ記憶部２０４に格納し、通信（第２送信動作）を開始する。まず、スレーブ２０１は、第２要求信号としてＲＥＱ信号線をLowレベルにすることにより、通信開始および受信動作の要求をマスター１０１へ通知する（図２０のb）。マスター１０１は、ＲＥＱ信号線のLowレベルを検知すると（図２０のb）、ＳＳ信号線をLowレベルにしてスレーブ２０１に対して受信動作開始および通信許可を通知する（図２０のa）。これは、図７のａに相当し、以降は図７の実施例のように通信を行なう。ただし、マスター１０１は受信側として、スレーブ２０１は送信側として、通信を行なう。マスター１０１は、通信が終了し、ＳＳ信号線がHighレベルになったのを検知すると、ＲＥＱ信号線をHighレベルにする。以上で、ＲＥＱ信号線は、通常はHighレベルとしたが、通常がLowレベルで通信時がHighレベルであってもよい。
【００９３】
ＲＥＱ信号線を追加した場合において、マスター１０１から通信を開始する場合は、図７の実施例の通信を行なう。すなわち、マスター１０１は、ＳＳ信号線をLowレベルにすることにより、通信開始および通信許可をスレーブ２０１に通知する（図７のａ）。
【００９４】
ＲＥＱ信号線を追加した場合においても、マスター１０１とスレーブ２０１が同時に送信を開始した場合、以下のように双方が送信側として通信を開始する。
【００９５】
スレーブ２０１は、送信側として通信（第２送信動作）を開始するため、第２要求信号としてＲＥＱ信号線をLowレベルにすることにより、通信開始および受信動作の要求をマスター１０１へ通知する。
【００９６】
マスター１０１は、送信側として通信（第１送信動作）を開始するため、第１要求信号としてＳＳ信号線をLowレベルにすることにより、通信開始および通信許可をスレーブ２０１に通知する。
【００９７】
スレーブ２０１は、ＳＳ信号線のLowレベルを検知することにより、マスター１０１の受信動作の実行を通知する信号（第２要求信号に対する応答）であると判断して、送信側として通信（第２送信動作）を開始し、ＲＤＹパルスを出力する。
マスター１０１は、ＲＤＹパルスを検出して、このパルスをスレーブ２０１の通信準備完
了の信号、すなわち、スレーブ２０１の受信動作の実行を通知する信号（第１要求信号に対する応答）であると判断して、送信側として通信を開始する。以上の場合においても、マスター１０１あるいはスレーブ２０１が、送信開始後、１バイト目に受信したデータが、受信側であることを示す所定値である場合には、送信動作を継続し、受信側であることを示す所定値でない場合には、受信動作に切り替えるので、通信に失敗することなく、安定した通信が可能な同期式シリアル通信システムを実現可能である。
【００９８】
スレーブ２０１にＲＥＱ信号線を追加した場合の例を説明したが、マスター１０１だけに、ＲＥＱ信号線に対応する信号線を追加した場合も同様に、マスター１０１とスレーブ２０１の双方が送信側として通信を開始することが起こり得る。この場合も同様に、スレーブ２０１が、第２送信動作から第１受信動作に切替るように構成することで、通信に失敗せずに、安定した通信が可能である。
【００９９】
このように、少なくとも、マスター１０１の第１要求信号の信号線とマスター１０１における受信動作の実行を通知する信号を送信する信号線とが兼用されているか、又は、スレーブ２０１の第２要求信号の信号線とスレーブ２０１における受信動作の実行を通知する信号を送信する信号線とが兼用されている場合に、マスター１０１とスレーブ２０１の双方が送信側として通信を開始することが起こり得る。本実施例の構成では、第１又は第２信号線と受信動作の実行を通知する信号を送信する信号線とを兼用することで信号線を減らしても、安定した通信をすることができる。
【０１００】
本実施例において、受信側が通信する場合の１バイト目が受信側であることを示す所定値としたが、２バイト目以降であってもよい。例えば、通信するデータのフォーマットの、先頭の１バイトまたは複数バイトが、送信側と受信側で通信時に必ず交換する情報である場合、これらを通信した後、送信側はコマンド以降のデータを送信し、受信側は受信側であることを示す所定値以降のデータを通信する。この場合の交換情報とは、電源電圧、センサー入力、運針状態など、マスター及びスレーブが各々必要とする双方の情報である。
【０１０１】
本実施例において、受信側が通信の１バイト目に受信側であることを示す所定値を送信するが、送信側が通信の１バイト目に送信側であることを示す所定値を送信し、受信側が通信の１バイト目に送信側であることを示す所定値以外の任意の値、または、受信側であることを示す所定値を送信するようにしてもよい。この場合、マスター１０１とスレーブ２０１が同時に送信側として通信を開始すると、スレーブ２０１は、マスター１０１から１バイト目に受信したデータが、送信側であることを示す所定値でない場合には、送信動作を継続し、送信側であることを示す所定値である場合には、送信動作を中止するとともに、マスター１０１から送信されるデータを、マスター１０１からの送信動作に基づくデータとして受信する受信動作に切り替える。
【０１０２】
但し、受信側が通信の１バイト目に受信側であることを示す所定値を送信する場合に対して、送信側が通信の１バイト目に送信側であることを示す所定値を送信すると、送信側のデータが１バイト長くなるため、前者の方がこの好ましい。
【０１０３】
本実施例において、スレーブ２０１が、マスター１０１から１バイト目に受信したデータが、受信側であることを示す所定値であるＮＵＬＬと異なることにより、受信側に切り換えて通信を継続するが、マスター１０１が、スレーブ２０１から１バイト目に受信したデータが、受信側であることを示す所定値であるＮＵＬＬと異なることにより、受信側に切り換えて通信を継続するようにしてもよい。この場合、マスター１０１は、スレーブ２０１から全データを受信した後に、ＲＤＹ信号線の立ち下りエッジを検知すると、ＳＳ信号線をHighレベルにして通信終了および通信禁止をスレーブ２０１に通知した後、再びＳ
Ｓ信号線をLowレベルにして、送信データの通信を開始する。
【０１０４】
本実施例において、受信側が通信の１バイト目で送信する、受信側であるとこを示す所定値としてＮＵＬＬ（００H）を用いたが、ＦＦＨやＡＡＨや５５Ｈなど、コマンドに使用している値以外であれば特にこれに限るものではない。
【０１０５】
本実施例において、ＳＳおよびＲＤＹ信号線のレベルを検出する方法として、プログラムによるポーリングを例に説明したが、ＲＤＹ信号線をマスター１０１の外部割込み入力端子に接続し、ＳＳ信号線をスレーブ２０１の外部割込み入力端子に接続し、レベル変化によって割り込みが発生して、プログラムの割込みハンドラが起動する方法であってもよい。この場合にも、信号線のレベル変化が発生してから、実際に割り込みハンドラが呼び出されるまでには、システム上の様々な要因により遅延時間が発生する。この遅延時間により、同様にマスター１０１、スレーブ２０１の双方が送信側として動作を開始することを防ぐことができる。
【０１０６】
また、本実施例において、ＳＣＫ信号線は、非通信中の通常状態はLowレベルで、立上がりのタイミングでＭＯＳＩ信号線とＭＩＳＯ信号線からデータを取り込む設定であるが、通常状態がLowレベルで立下りがデータ取り込み、あるいは、通常状態がHighレベルで立上がりがデータ取り込み、あるいは、通常状態がHighレベルで立下りがデータ取り込みであってもよい。ＭＯＳＩ信号線とＭＩＳＯ信号線に読み書きするデータはＬＳＢからの順であるが、ＭＳＢからの順であってもよい。ＳＳ信号線は、通信許可がHighレベルで、通信禁止がLowレベルであってもよい。ＲＤＹ信号線は非通信中の通常状態がLowレベルで、ＲＤＹパルスがHighレベルを一定期間だけ出力するものであってもよい。
【符号の説明】
【０１０７】
１００  主情報処理装置
１０１  マスター（メイン・マイクロコンピュータ）
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  送信データ記憶部
１０５  受信データ記憶部
１０６  計時部
１０７  表示部
１０８  入力部
１０９  タイマー
１１０  シリアル通信部
１１１  ＲＤＹ入力端子
１１２  ＳＳ出力端子
１１３  ＳＣＫ出力端子
１１４  ＭＯＳＩ出力端子
１１５  ＭＩＳＯ入力端子
１１６  ＲＥＱ入力端子
１２０  内部クロック発生部
２００  従情報処理装置
２０１  スレーブ（サブ・マイクロコンピュータ）
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  送信データ記憶部
２０５  受信データ記憶部
２０６  計時部
２０７  外部通信部
２０８  送信保留データ記憶部
２０９  タイマー
２１０  シリアル通信部
２１１  ＲＤＹ出力端子
２１２  ＳＳ入力端子
２１３  ＳＣＫ入力端子
２１４  ＭＯＳＩ入力端子
２１５  ＭＩＳＯ出力端子
２１６  ＲＥＱ出力端子
２２０  内部クロック発生部
Ｓ１  送信データ準備工程
Ｓ２  タイマー開始工程
Ｓ３  ＳＳ信号線レベルLowセット工程
Ｓ４  タイムアウト判定
Ｓ５  ＲＤＹ信号線立下り判定
Ｓ６  残り送信データ有無判定
Ｓ７  １バイト通信工程
Ｓ８  データ照合判定
Ｓ９  ＳＳ信号線レベルHighセット工程
Ｓ１０  タイマー終了工程
Ｓ１１  タイマー開始工程
Ｓ１２  ＳＳ信号線レベルLowセット工程
Ｓ１３  １バイト通信工程
Ｓ１４  タイムアウト判定
Ｓ１５  ＲＤＹ信号線立下り判定
Ｓ１６  残り受信データ有無判定
Ｓ１７  チェックサム照合判定
Ｓ１８  エラー処理工程
Ｓ１９  ＳＳ信号線レベルHighセット工程
Ｓ２０  タイマー終了工程
Ｓ２１  送信データ準備工程
Ｓ２２  タイマー開始工程
Ｓ２３  ＲＤＹパルス出力工程
Ｓ２４  タイムアウト判定
Ｓ２５  ＳＣＫ立上がり判定
Ｓ２６  １バイト通信工程
Ｓ２７  残り送信データ有無判定
Ｓ２８  ＲＤＹパルス出力工程
Ｓ２９  １バイト目判定
Ｓ３０  データ照合判定
Ｓ３１  １バイト目受信データのＮＵＬＬ照合判定
Ｓ３２  受信切換工程
Ｓ３４  タイマー終了工程
Ｓ４４  タイマー開始工程
Ｓ３５  ＲＤＹパルス出力工程
Ｓ３６  タイムアウト判定
Ｓ３７  ＳＣＫ立上がり判定
Ｓ３８  １バイト通信工程
Ｓ３９  残り受信データ有無判定
Ｓ４０  チェックサム照合判定
Ｓ４１  エラー処理工程
Ｓ４２  ＲＤＹパルス出力工程
Ｓ４３  タイマー終了工程
Ｓ５０  タイマークリア工程
Ｓ５１  タイマークリア工程
Ｓ５２  タイマークリア工程
Ｓ５３  タイマークリア工程
Ｓ６０  再送処理工程
Ｓ６１  再送処理工程
【図１】
2014086992.tif 000003
【図２】
2014086992.tif 000004
【図３】
2014086992.tif 000005
【図４】
2014086992.tif 000006
【図５】
2014086992.tif 000007
【図６】
2014086992.tif 000008
【図７】
2014086992.tif 000009
【図８】
2014086992.tif 000010
【図９】
2014086992.tif 000011
【図１０】
2014086992.tif 000012
【図１１】
2014086992.tif 000013
【図１２】
2014086992.tif 000014
【図１３】
2014086992.tif 000015
【図１４】
2014086992.tif 000016
【図１５】
2014086992.tif 000017
【図１６】
2014086992.tif 000018
【図１７】
2014086992.tif 000019
【図１８】
2014086992.tif 000020
【図１９】
2014086992.tif 000021
【図２０】
2014086992.tif 000022