(57)【要約】【課題】複数の産業機器を同期制御するためにそれぞれの産業機器に設けられるマイコンにおいて、ＣＰＵ割込みによるオーバーヘッドとパラメータ更新プログラムの実行時間の変動によらず、パラメータの補正時刻について、高精度の同期性と遅延時間を保証する。【解決手段】マイコンは、ＣＰＵと、所定の制御パラメータに基づいて外部機器を制御する周辺モジュールと、通信インターフェースとを備える。通信インターフェースは、他の機器と時刻同期された時刻レジスタを備え、順次設定される補正時刻が時刻レジスタと一致したときに、ＣＰＵにＣＰＵ割込みを、周辺モジュールに周辺モジュール割込みを、それぞれ発行する。周辺モジュールは周辺モジュール割込みによって、制御パラメータを現状値から更新値に更新する。ＣＰＵはＣＰＵ割込みにより、更新プログラムを開始して制御パラメータの次の更新値を算出し、周辺モジュールに書き込む。【選択図】図１
2014106594.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、所定のパラメータに基づいて外部機器を制御する周辺モジュールと、ネットワークを介して他の装置と通信可能な通信インターフェースとを備え、
前記通信インターフェースは、前記ネットワークを介する通信に基づいて前記他の装置と同期を保たれる時刻を保持する第１レジスタと、第２レジスタと、前記第１レジスタに保持される値と前記第２レジスタに保持される値を比較して一致したときに、前記ＣＰＵに対してＣＰＵ割り込みを発行し、前記周辺モジュールに対して周辺モジュール割り込みを発行する、比較回路を備え、
前記周辺モジュールは、前記パラメータの現状値を保持する第３レジスタと、前記パラメータの更新値を保持する第４レジスタとを備え、前記現状値に基づいて前記外部機器を制御する制御信号を生成可能に構成され、
前記ＣＰＵは、前記ＣＰＵ割り込みにより、前記パラメータの前記更新値の算出を開始し、前記更新値を前記第４レジスタに書き込むための、パラメータ更新プログラムを実行可能であり、
前記周辺モジュールは、前記周辺モジュール割り込みにより、前記第４レジスタに格納される値を前記第３レジスタに転送可能に構成される、マイコン。
【請求項２】
請求項１において、前記周辺モジュールは、外部に接続される装置を駆動するためのパルス幅変調された制御信号を生成可能に構成され、前記パラメータは前記パルス幅変調のデューティを規定するための値であり、
前記通信インターフェースは、前記ネットワークを経由して前記通信インターフェースに入力される、前記パラメータを前記現状値から前記更新値に更新すべき補正時刻を、前記第２レジスタに書き込み可能に構成され、
前記パラメータ更新プログラムは、前記補正時刻において前記パラメータが採るべき値を、前記更新値として算出するためのプログラムである、マイコン。
【請求項３】
請求項２において、前記通信インターフェースは、１個以上のデータを保持可能で、保持されるデータを入力された順序と同じ順序で出力する第１バッファを備え、前記補正時刻を前記第１バッファに書き込み、前記第１レジスタに保持される値と前記第２レジスタに保持される値を比較して一致したときに、前記第１バッファの出力を前記第２レジスタに書き込み可能に構成される、マイコン。
【請求項４】
請求項２において、前記周辺モジュール割り込みは、割り込み選択回路を介して、前記周辺モジュールに接続される、マイコン。
【請求項５】
請求項２において、前記周辺モジュール割り込みは、前記周辺モジュールに直接接続され、
前記周辺モジュールは、ＰＷＭ生成回路と、前記第４レジスタを含み、１個以上のデータを保持可能で、保持されるデータを入力された順序と同じ順序で出力する第２バッファを備え、前記ＰＷＭ生成回路は、前記第３レジスタに保持される前記現状値に基づいてパルス幅変調された前記制御信号を生成可能に構成され、前記周辺モジュール割り込みが入力されたときに、前記第２バッファから出力される値を前記第３レジスタに転送可能に構成される、マイコン。
【請求項６】
請求項５において、前記ＰＷＭ生成回路は、３相の前記制御信号を生成可能に構成され、前記周辺モジュールは、前記３相の前記制御信号毎に挿入される可変遅延回路と、前記可変遅延回路に遅延量を供給する位相調整回路と、前記位相調整回路に位相調整用パラメータを供給する位相レジスタをさらに備える、マイコン。
【請求項７】
請求項１において、前記周辺モジュールは、外部に接続される装置を制御するためのパルス幅変調された制御信号を生成可能に構成され、前記パラメータは前記パルス幅変調のデューティを表す値であり、
前記通信インターフェースは、前記ネットワークを経由して前記通信インターフェースに入力される、起動時刻と、前記パラメータを前記現状値から前記更新値に更新すべき補正時刻を、前記第２レジスタに書き込み可能に構成され、
前記パラメータ更新プログラムは、前記起動時刻において前記パラメータの初期値を前記第３レジスタに書き込み、前記起動時刻における前記ＣＰＵ割り込みに対応して、前記周辺モジュール割り込みを許可し、以降の前記ＣＰＵ割り込みを禁止するステップを含む、マイコン。
【請求項８】
請求項７において、前記周辺モジュールは、外部に接続される複数の装置を制御するため、それぞれパルス幅変調された複数組の制御信号を生成可能に構成され、前記パラメータは前記複数組の制御信号のそれぞれに対応する前記パルス幅変調のデューティを表す複数組の値であり、
前記通信インターフェースは、前記複数組の制御信号のそれぞれに対応する複数の前記第２レジスタを備え、前記ネットワークを経由して前記通信インターフェースに入力される、前記複数組の制御信号のそれぞれに対応する、前記起動時刻と前記補正時刻を、前記複数の第２レジスタのそれぞれに書き込み可能に構成され、
前記比較回路は、前記第１レジスタに保持される値と前記複数の第２レジスタに保持される値を比較して一致したときに、前記周辺モジュールに対して前記複数組の制御信号のそれぞれに対応する複数の周辺モジュール割り込みを発行可能に構成され、
前記周辺モジュールは、前記複数組の制御信号のそれぞれに対応する複数の前記第３レジスタと前記第４レジスタとを備え、前記複数組の制御信号のそれぞれに対応する前記現状値に基づいて前記複数組の制御信号を生成可能に構成され、
前記周辺モジュールは、前記複数の周辺モジュール割り込みにより、対応する前記第４レジスタに格納される値を対応する前記第３レジスタに転送可能に構成される、マイコン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、産業機器の制御に適したマイコンに関し、特に同期制御に好適に利用できるものである。
【背景技術】
【０００２】
AC (Alternative Current)サーボ、汎用インバータ、PLC (Programmable Logic Controller)等の同期制御を必要とする産業機器では、産業用モータに特定の時間に特定の指令を出し、制御することが必要である。産業機器に搭載されているマイコンがインバータにより産業用モータを制御する指令はパルス幅変調（PWM: Pulse Width Modulation）された制御信号である。パルス幅は、High期間とLow期間の割合を%単位で表したデューティで表される。複数の産業機器を同時に稼働させて一連の工程を実施する場合には、それぞれの産業機器に搭載されているマイコンが、それぞれの産業用モータなどを制御する。特定の時系列で一連の指令を整合性良く出すためには、その複数の産業機器が時刻を合わせること（以下、時刻同期）が必要である。
【０００３】
産業機器間の時刻同期に要求される同期精度は、急速に厳しくなる傾向にあり、１μｓ以下の高い精度が要求される場合もある。産業機器間の時刻同期には、シリアル通信を応用した通信や独自の通信を使用していたが、近年、Ethernet（登録商標）に同期機能を付加した同期Ethernet通信（以下、同期Ether）の使用が増加している。特に、同期EtherにはIEEE1588規格を応用したEthernet/IPやProfinet、リングまたはデイジーチェーン（数珠つなぎ）型のネットワークを基本とするEtherCATがある。時刻の同期精度は、厳しくなる傾向にあり、IEEE1588規格に準拠した同期Etherでは、１μｓ以下の高い精度を持つものもある。
【０００４】
特許文献１には、それぞれにｎｓオーダーの計時機能を持つ時計を備えた複数のユニットを連結して構成される産業用コントローラにおいて、複数のユニットのうち１つをマスタ、他をスレーブとして、スレーブ側の時間軸を徐々にマスタ側の時間軸に近づけるように、調整する調整手段を備えた産業用コントローラが開示されている。
【０００５】
特許文献２には、互いにネットワーク接続された複数のコントローラの間で、タイミング調整をせずに連携動作のためにコントローラ間で処理プログラムの実行を同期させることができる技術が開示されている。コントローラ毎に予めプログラムしているタイムテーブルによって、連携動作を行わせる。各コントローラは、絶対時刻を計時している時計モジュールと、それらの同期を取るための時計同期手段を備えている。プログラムの実行開始のきっかけとなるイベントが発生すると、コントローラはそのイベントの発生時刻からなるトリガを他のコントローラに同報発信（一斉送信）する。トリガを受信したコントローラは、所定の遅延時間を加えた遅延トリガを発生させ、遅延トリガを起点として一連の処理プログラムを開始する。
【０００６】
特許文献３には、ネットワークに接続されたコントローラと複数のデバイスとの間で、時刻同期の精度を保つ技術が開示されている。マスタはマスタグローバルタイマを備え、各デバイスはスレーブグローバルタイマと動作周期タイマを備える。マスタはマスタグローバルタイマの示すグローバル時刻をタイムスタンプに付加したパケットを送出し、これを受信した各スレーブは、タイムスタンプが示す周期制御の同期タイミングとスレーブグローバルタイマが示す時間差を用いて、動作周期タイマを周期制御に同期させる補正を行う。
【０００７】
特許文献４には、刻々と変化するネットワーク負荷状況に合わせた同期動作を可能とし、同期ずれを起こさないモーションコントロールシステムが開示されている。マスタは通信遅れを監視し、同期動作時に現在の時刻に遅延時間を加算した時刻でスレーブに動作開始を指令する。
【０００８】
特許文献５には、通信制御装置とアクチュエータを有して制御対象を操作する複数の制御装置が、ネットワークを介して接続され、各制御装置が同期して動作することのできる通信制御システムが開示されている。実施例２には、IEEE1588の時刻同期プロトコルによって、時刻同期を行う通信制御システムが示されている。通信制御装置は、通信制御システム全体が時刻を同期させた後、各制御装置から通信遅延を取得し、各制御装置への制御指令送信の際に、通信遅延を調整する。
【０００９】
特許文献６には、受信中の画像データを他の画像情報機器からのものに切り替える、データ伝送装置が開示されている。画像情報機器は、ネットワークから受信した時刻情報と同期した現在時刻を生成するクロック処理部を備え、システムコントローラからネットワークを介して受信した指定時刻と一致したときに、受信データを切り替える。これにより、切り替え要求が切り替えを許す画像フレーム（Ｉフレーム）と次のＩフレームの中間で入力された場合であっても、Ｉフレームと同期して切り替えを実行させることができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００９−１５７９１３号公報
【特許文献２】特開２００７−２１３４７４号公報
【特許文献３】特開２００２−１６４８７２号公報
【特許文献４】特開２００７−２２６４９２号公報
【特許文献５】特開２０１２−６０２０７号公報
【特許文献６】特開２０００−５９４０６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１〜６について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【００１２】
複数の産業機器を同期制御する場合、それら複数の産業機器をネットワークに接続し、同じネットワークに接続される１台のマスタ（複数の産業機器のうちの１台がマスタとして機能してもよい）からの統一された基準時刻によって実行時刻が指定された指令に基づいて、モータなどの機器を制御する。マスタのみに基準時刻を計時するための時計を備えると、スレーブ側の産業機器では、通信による遅延のために同期制御を実現することが困難となる。特許文献４に開示される技術では、通信遅延を考慮して、スレーブ側に処理開始の時刻が指示される。通信遅延はネットワーク負荷によって変動するため、通信遅延を定期的に監視する。特許文献１に示される技術では、スレーブ側の各産業機器に時計を備え、マスタ側の時計との間で誤差を補正し、ｎｓオーダーの精度でマスタ側とスレーブ側の時計の同期をとる。特許文献３に開示される技術も同様である。スレーブ側の各産業機器が、マスタ側と同期された時計を備えており、予め処理を開始すべき時刻が決められていれば、特許文献２に示されるように、処理を開始すべき時刻を予めタイムテーブルに備えることにより、処理を同期させることができると考えられる。しかし、特許文献２においても、スレーブ側で処理開始のトリガを受信したコントローラは、所定の遅延時間を加えた遅延トリガを発生させ、遅延トリガを起点として一連の処理プログラムを開始する。特許文献５に開示される技術も同様である。処理を開始すべき時刻を予めタイムテーブルに備えただけでは、時刻同期を実現することはできない。
【００１３】
一般に産業機器においてモータなどのデバイスを制御するためには、マイコンが用いられる。マイコンは、ネットワークインターフェースとモータなどのデバイスを制御するための制御信号入出力を備えており、制御信号を生成する制御プログラムを実行する。マイコンを含むスレーブ側の産業機器には、上記特許文献１に示すように、ｎｓオーダーの精度でマスタ側と同期された時計を備えることは可能であり、特許文献２に示されるような、処理を開始すべき時刻を予め格納したタイムテーブルを備えて、マイコンに処理を開始させるためのトリガを供給することが考えられる。この場合、複数のスレーブデバイスで時刻がｎｓオーダーで同期されているので、トリガの発生時刻も同程度の高精度で実現することが期待される。マイコンはこのトリガに基づいて処理を開始するが、実際のモータなどのデバイスまでも、同程度の高精度で制御することはできない。上記トリガは、マイコンに対して割り込みとして入力されるが、マイコンの割り込み処理には、実行中のプログラムのレジスタ退避、割り込み要因の判定、割り込みのための分岐処理などのオーバーヘッドが含まれる。これらの処理は、数１０〜数１００ステップを要し、また、先行して動作中であったプログラムの状況その他の因子によって、大きく変動する。マイコンの動作が１ステップ１０ｎｓで実行されるとしても割り込み処理のオーバーヘッドは数１００ｎｓ〜数μｓとなる。即ち、トリガが入力されてから実際にモータなどのデバイスの制御信号に処理結果が反映するまでの時間は、上記数１００ｎｓ〜数μｓの割り込み処理のオーバーヘッドを含んで変動することとなる。
【００１４】
複数の産業機器の同期制御に求められる精度が数ｍｓであれば、上記数１００ｎｓ〜数μｓの変動は無視できる程度に小さいが、要求される精度が厳しくなり１μｓ以下の高い精度が要求される場合には、このような変動は無視することができない。特許文献６に示される画像情報機器では、ｎｓオーダーの精度でフレーム同期を実現しているが、フレーム受信と表示を切り替えるに過ぎず、すべてハードウェアで実現され、変動要因がない。一方、産業機器の制御を実行ステップ数などに変動要因のないハードウェアで実現することは、処理の複雑さから実質的に不可能であり、ソフトウェアで実現せざるを得ないため、割り込み処理のオーバーヘッドを含む、上記数１００ｎｓ〜数μｓの変動をなくすことはできない。このため、時刻同期性と遅延時間を保証することは、容易ではないという問題がある。
【００１５】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１６】
一実施の形態によれば、下記の通りである。
【００１７】
すなわち、産業機器においてモータなどのデバイスを制御するためのマイコンは、ＣＰＵと、所定のパラメータに基づいて外部機器を制御する周辺モジュールと、ネットワークを介して他の装置と通信可能な通信インターフェースとを備えて構成する。通信インターフェースは、ネットワークを介する通信に基づいて他の装置と同期を保たれる時刻を保持する時刻レジスタと、イベントレジスタとを備え、時刻レジスタの値とイベントレジスタに保持される値を比較して一致したときに、ＣＰＵに対してＣＰＵ割り込みを発行し、周辺モジュールに対して周辺モジュール割り込みを発行する。周辺モジュールは、外部機器を制御するためのパラメータの現状値を保持するコンペアレジスタと、そのパラメータの更新値を保持するバッファレジスタとを備える。コンペアレジスタに保持される現状値に基づいて外部機器を制御する制御信号を生成する。周辺モジュールは、周辺モジュール割り込みにより、バッファレジスタに格納されている更新値をコンペアレジスタに転送して、現状値を更新する。ＣＰＵは、ＣＰＵ割り込みにより、パラメータ更新プログラムを開始してパラメータの次の更新値の算出し、算出した更新値をバッファレジスタに書き込む。
【発明の効果】
【００１８】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１９】
すなわち、ＣＰＵ割り込みに伴うオーバーヘッドとパラメータ更新プログラムの実行時間の変動に影響されることなく、パラメータの補正時刻について、高精度の同期性と遅延時間を保証することができる。
【図面の簡単な説明】
【００２０】
【図１】図１は、実施形態１に係るマイコンの構成を表すブロック図である。
【図２】図２は、時刻同期を行う複数の装置のネットワーク構成例である。
【図３】図３は、実施形態１に係るマイコンの動作を表すタイミングチャートである。
【図４】図４は、実施形態２に係るマイコンの構成を表すブロック図である。
【図５】図５は、マイコンと外部機器との接続例を表すブロック図である。
【図６】図６は、実施形態２に係るタイマの構成例を表すブロック図である。
【図７】図７は、実施形態２に係るタイマの動作例を表すタイミングチャートである。
【図８】図８は、実施形態２に係るマイコンのリセットルーチンの一例を示すフローチャートである。
【図９】図９は、実施形態２に係るマイコンのＣＰＵ割り込みルーチンの一例を示すフローチャートである。
【図１０】図１０は、実施形態２に係るマイコンのタイマ割り込みに対する処理の一例を示すフローチャートである。
【図１１】図１１は、実施形態３に係るマイコンの構成を表すブロック図である。
【図１２】図１２は、実施形態３に係るマイコンのリセットルーチンの一例を示すフローチャートである。
【図１３】図１３は、実施形態３に係るマイコンのＣＰＵ割り込みルーチンの一例を示すフローチャートである。
【図１４】図１４は、実施形態３に係るマイコンのタイマ割り込みに対する処理の一例を示すフローチャートである。
【図１５】図１５は、実施形態４に係るマイコンの構成を表すブロック図である。
【図１６】図１６は、実施形態４に係るマイコンのリセットルーチンの一例を示すフローチャートである。
【図１７】図１７は、実施形態５に係るマイコンの構成を表すブロック図である。
【図１８】図１８は、実施形態５に係るマイコンのリセットルーチンの一例を示すフローチャートである。
【図１９】図１９は、実施形態５に係るマイコンのＣＰＵ割り込みルーチン及びタイマ割り込みに対する処理の一例を示すフローチャートである。
【図２０】図２０は、実施形態５に係るマイコンのコンペアマッチ割り込みルーチン及びカウンタのカウント方向切り替えに対する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２１】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２２】
〔１〕＜イベントレジスタと時刻レジスタの比較＞図1-3
マイコン（１）は、ＣＰＵ（２）と、所定のパラメータに基づいて外部機器を制御する周辺モジュール（４）と、ネットワーク（９２）を介して他の装置（９１）と通信可能な通信インターフェース（３、７）とを備える。
【００２３】
前記通信インターフェースは、第１レジスタ（１１）と、第２レジスタ（１２）と、比較回路（１４）を備える。前記第１レジスタは、前記ネットワークを介する通信に基づいて前記他の装置と同期を保たれる時刻を保持する。前記比較回路は、前記第１レジスタに保持される値と前記第２レジスタに保持される値を比較して一致したときに、前記ＣＰＵに対してＣＰＵ割り込み（ＩＮＴ＿Ｃ）を発行し、前記周辺モジュールに対して周辺モジュール割り込み（ＩＮＴ＿Ｔ）を発行する。
【００２４】
前記周辺モジュールは、前記パラメータの現状値を保持する第３レジスタ（２１）と、前記パラメータの更新値を保持する第４レジスタ（２２）とを備え、前記現状値に基づいて前記外部機器を制御する制御信号（３２）を生成可能に構成される。
【００２５】
前記ＣＰＵは、前記ＣＰＵ割り込みにより、前記パラメータの前記更新値の算出を開始し、前記更新値を前記第４レジスタに書き込むための、パラメータ更新プログラムを実行可能である。
【００２６】
前記周辺モジュールは、前記周辺モジュール割り込みにより、前記第４レジスタに格納される値を前記第３レジスタに転送可能に構成される。
【００２７】
これにより、ＣＰＵ割り込みに伴うオーバーヘッドとパラメータ更新プログラムの実行時間の変動に影響されることなく、パラメータの補正時刻について、高精度の同期性と遅延時間を保証することができる。
【００２８】
〔２〕＜ＰＷＭ制御＞
項１において、前記周辺モジュールは、外部に接続される装置（９３）を駆動するためのパルス幅変調された制御信号を生成可能に構成される。前記パラメータは前記パルス幅変調のデューティを指定するための値である。前記通信インターフェースは、前記ネットワークを経由して前記通信インターフェースに入力される、前記パラメータを前記現状値から前記更新値に更新すべき補正時刻（ｔｅｖｅｎｔ）を、前記第２レジスタに書き込み可能に構成される。前記パラメータ更新プログラムは、前記補正時刻において前記パラメータが採るべき値を、前記更新値として算出するためのプログラムである。
【００２９】
これにより、外部に接続される装置（９３）を、高精度な時刻同期で動作させることができる。
【００３０】
〔３〕＜イベントバッファ＞（実施例１）図4-10
項２において、前記通信インターフェースは、１個以上のデータを保持可能で、保持されるデータを入力された順序と同じ順序で出力する第１バッファ（１３）を備える。前記補正時刻を前記第１バッファに書き込み、前記第１レジスタに保持される値と前記第２レジスタに保持される値を比較して一致したときに、前記第１バッファの出力を前記第２レジスタに書き込み可能に構成される。
【００３１】
これにより、ＣＰＵ（２）から通信インターフェース（３）に補正時刻を書き込むタイミングの制限を緩和することができる。
【００３２】
〔４〕＜割り込み選択回路＞
項２において、前記周辺モジュール割り込みは、割り込み選択回路（９）を介して、前記周辺モジュールに接続される。
【００３３】
これにより、周辺モジュール割り込みの対象となる、周辺モジュールを切り替えることができ、マイコンの汎用性を高めることができる。
【００３４】
〔５〕＜ＰＷＭ生成回路＞
項２において、前記周辺モジュール割り込みは、前記周辺モジュールに直接接続される。
【００３５】
前記周辺モジュールは、ＰＷＭ生成回路（２０＿３）と、前記第４レジスタ（２２＿３）を含み、１個以上のデータを保持可能で、保持されるデータを入力された順序と同じ順序で出力する第２バッファ（１７）を備える。前記ＰＷＭ生成回路は、前記第３レジスタ（２１＿３）に保持される前記現状値に基づいてパルス幅変調された前記制御信号を生成可能に構成され、前記周辺モジュール割り込みが入力されたときに、前記第２バッファから出力される値を前記第３レジスタに転送可能に構成される。
【００３６】
これにより、ＣＰＵ（２）から周辺モジュール（４＿３）にパラメータを書き込むタイミングの制限を緩和することができる。
【００３７】
〔６〕＜位相調整回路＞
項５において、前記ＰＷＭ生成回路は、３相の前記制御信号を生成可能に構成され、前記周辺モジュールは、前記３相の前記制御信号毎に挿入される可変遅延回路（３０＿Ｕ，３０＿Ｖ，３０＿Ｗ）と、前記可変遅延回路に遅延量を供給する位相調整回路（２９）と、前記位相調整回路に位相調整用パラメータを供給する位相レジスタ（１８）をさらに備える。
【００３８】
これにより、位相調整が必要な、モータ等の外部機器の同期制御を行うことができる。
【００３９】
〔７〕＜起動時における同期＞
項１において、前記周辺モジュールは、外部に接続される装置（９３）を制御するためのパルス幅変調された制御信号を生成可能に構成される。前記パラメータは前記パルス幅変調のデューティを表す値である。
【００４０】
前記通信インターフェースは、前記ネットワークを経由して前記通信インターフェースに入力される、起動時刻（ｔｓｔａｒｔ）と、前記パラメータを前記現状値から前記更新値に更新すべき補正時刻（ｔｅｖｅｎｔ）を、前記第２レジスタに書き込み可能に構成される。
【００４１】
前記パラメータ更新プログラムは、前記起動時刻において前記パラメータの初期値を前記第３レジスタに書き込み、前記起動時刻における前記ＣＰＵ割り込みに対応して、前記周辺モジュール割り込みを許可し、以降の前記ＣＰＵ割り込みを禁止するステップを含む。
【００４２】
これにより、起動時刻においても、高精度の同期性と遅延時間を保証することができる。
【００４３】
〔８〕＜複数の装置の制御＞
項７において、前記周辺モジュールは、外部に接続される複数の装置（９３＿１、９３＿２）を制御するため、それぞれパルス幅変調された複数組の制御信号を生成可能に構成される。前記パラメータは前記複数組の制御信号のそれぞれに対応する前記パルス幅変調のデューティを表す複数組の値である。
【００４４】
前記通信インターフェースは、前記複数組の制御信号のそれぞれに対応する複数の前記第２レジスタを備え、前記ネットワークを経由して前記通信インターフェースに入力される、前記複数組の制御信号のそれぞれに対応する、前記起動時刻と前記補正時刻を、前記複数の第２レジスタのそれぞれに書き込み可能に構成される。
【００４５】
前記比較回路は、前記第１レジスタに保持される値と前記複数の第２レジスタ（１２＿１、１２＿２）に保持される値を比較して一致したときに、前記周辺モジュールに対して前記複数組の制御信号のそれぞれに対応する複数の周辺モジュール割り込み（ＩＮＴ＿Ｔ１，ＩＮＴ＿Ｔ２）を発行可能に構成される。
【００４６】
前記周辺モジュールは、前記複数組の制御信号のそれぞれに対応する複数の前記第３レジスタと前記第４レジスタとを備え、前記複数組の制御信号のそれぞれに対応する前記現状値に基づいて前記複数組の制御信号を生成可能に構成される。
【００４７】
前記周辺モジュールは、前記複数の周辺モジュール割り込みにより、対応する前記第４レジスタに格納される値を対応する前記第３レジスタに転送可能に構成される。
【００４８】
これにより、複数の外部機器の制御パラメータの補正時刻を、独立に供給することができ、より高精度且つ汎用性の高い同期制御を行うことができる。
【００４９】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００５０】
〔実施形態１〕
図１は、実施形態１に係るマイコンの構成を表すブロック図である。マイコン１は、ＣＰＵ２と、所定のパラメータに基づいて外部機器を制御する周辺モジュール４と、ネットワーク９２を介して他の装置９１と通信可能な通信インターフェース３と、メモリ５を備え、互いがバス６を介して接続されている。マイコン１は、例えば公知の設計技術、製造技術により、単一基板上に形成される集積回路（ＬＳＩ: Large Scale Integrated circuit）として構成することができる。
【００５１】
通信インターフェース３は、同期通信部１０と、時刻レジスタ１１と、イベントレジスタ１２と、比較回路１４を備える。ネットワーク９２に接続される端子３１には、同期通信部１０との間に接続される物理インターフェース７を備える。ネットワーク９２の物理層の仕様を満たす回路であり、ネットワーク９２がEthernetであれば、Ｅｔｈｅｒ回路７を備える。時刻レジスタ１１は、ネットワーク９２を介する通信に基づいて他の装置と同期を保たれるローカル時刻を計時する。所定の精度を持つクロック信号で駆動されるカウンタで構成され、ネットワーク９２を介して同期通信部１０が受信する、マスタの時刻を基準に較正される。図２は、時刻同期を行う複数の装置のネットワーク構成例である。マスタ９０とスレーブ９１＿１、スレーブ９１＿２からスレーブ９１＿Ｎが、ネットワーク９２を介して互いに接続されている。ネットワーク９２は、図２では一例としてデイジーチェーンとしたが、ハブを経由するスター型の構成を採っても良く、さらに有線か無線かを問わず、どのような形態であっても良い。マスタ９０とスレーブ９１＿１〜９１＿Ｎは、それぞれ時刻を保持する計時手段を持ち、スレーブ９１＿１〜９１＿Ｎは、マスタ９０の時刻Ａに対して、それぞれの計時手段に保持する時刻を同期させる。必ずしも等しい値である必要はなく、所定のオフセットを持たせても良い。各機器間での時刻の差異には各機器が固有に持っていたオフセット時刻とネットワークの伝播遅延があるが、例えば、IEEE1588規格ではマスタ９０の時刻ＡにＮ台のスレーブ機器（９１＿１〜９１＿Ｎ）の時刻（時刻Ｂ１、時刻Ｂ２、…時刻ＢＮ）をEthernetのフレーム通信により合わせることができる。
【００５２】
イベントレジスタは、外部機器を制御するパラメータを更新すべき時刻（補正時刻）を保持する。補正時刻は、ネットワーク９２を介してマイコン１に順次入力され、ＣＰＵ２は補正時刻を通信インターフェース３の同期通信部１０を介して受信し、順次、イベントレジスタ１２に書き込む。書き込んだ補正時刻が未だ経過していないときに、さらに新たな補正時刻を受信したときは、例えば、メモリ５に格納するなどにより保持する。
【００５３】
比較回路１４は、時刻レジスタ１１に保持される値（ローカル時刻）とイベントレジスタ１２に保持される値（補正時刻）を比較して一致したときに、ＣＰＵ２に対してＣＰＵ割り込みＩＮＴ＿Ｃを発行し、周辺モジュール４に対して周辺モジュール割り込みＩＮＴ＿Ｔを発行する。ＣＰＵ割り込みＩＮＴ＿Ｃと周辺モジュール割り込みＩＮＴ＿Ｔとは同時でも良いし、時間差があってもよい。
【００５４】
周辺モジュール４は、外部機器制御信号生成部２０と、外部機器を制御するパラメータの現状値を保持するコンペアレジスタ２１と、パラメータの更新値を保持するバッファレジスタ２２とを備える。外部機器制御信号生成部２０は、コンペアレジスタ２１に保持される現状値に基づいて外部機器を制御する制御信号３２を生成する。制御信号３２は、ポート８を介して出力される。例えば、外部機器がACモータのとき、制御信号３２はＰＷＭ信号であり、パラメータはそのデューティを決める値とすることができる。ポート８は、ＬＳＩの端子を駆動または端子から入力される信号を内部に取り込むための回路であり、周知の回路・デバイス技術を用いて構成される。駆動回路、入力回路、レベル変換回路、プルアップ回路、静電破壊からの保護回路または保護素子、その他、入出力切替回路、端子機能切替回路などを含んで構成されうる。
【００５５】
ＣＰＵ２は、例えばメモリ５に格納されるプログラムを実行することができるプロセッサで、パラメータ更新プログラムを実行することができる。パラメータ更新プログラムは、ＣＰＵ割り込みＩＮＴ＿Ｃが入力されると、パラメータの更新値の算出を開始し、算出された更新値をバッファレジスタ２２に書き込む。一方、周辺モジュール４は、前記周辺モジュール割り込みＩＮＴ＿Ｔが入力されると、バッファレジスタ２２に格納される値をコンペアレジスタ２１に転送する転送回路２３を備える。
【００５６】
メモリ５は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、またはその組み合わせであり、ＣＰＵ２で実行されるプログラムやデータを記憶することができる。バス６はＣＰＵ２とメモリ５と他の構成要素を接続する手段の一例として例示したもので、他の構成を採っても良い。例えば、外部バスインターフェースを追加して他のメモリを外付けしても良いし、キャッシュメモリやメモリ管理ユニットを内蔵しても良い。
【００５７】
図３は、実施形態１に係るマイコンの動作を表すタイミングチャートである。時刻レジスタ１１の値は、ハッチングで図示されるが刻々と計時されるローカル時刻tclockである。さらに、マスタと同期制御されることにより、ネットワーク９２に接続される複数の機器はそれぞれローカル時刻を保持しており、例えばIEEE1588規格に準拠すれば、このローカル時刻はｎｓオーダーの高精度でマスタの管理する時刻に同期されている。外部機器を制御するパラメータを更新すべき補正時刻tevent(0), tevent(1), tevent(2), …が、ネットワーク９２を介してマイコン１に順次入力される。ＣＰＵ２は、最初の補正時刻tevent(0)をイベントレジスタ１２に書き込み、合せてその補正時刻に更新すべきパラメータの更新値p(0)を、バッファレジスタ２２に書き込んでおく。時刻ｔ１において、時刻レジスタ１１に保持されるローカル時刻tclockが、イベントレジスタ１２に保持される補正時刻tevent(0)と一致すると、ＣＰＵ２に対してＣＰＵ割り込みＩＮＴ＿Ｃが発行され、周辺モジュール４に対して周辺モジュール割り込みＩＮＴ＿Ｔが発行される。周辺モジュール４では、周辺モジュール割り込みＩＮＴ＿Ｔが入力されると、バッファレジスタ２２に格納されている最初の更新値p(0)が、転送回路２３によってコンペアレジスタ２１に転送される。外部機器制御信号生成部２０は、更新値p(0)で規定されるデューティduty(p(0))の制御信号３２を生成する。周辺モジュール割り込みＩＮＴ＿Ｔが発行されてから、上記一連の動作によって更新値p(0)で規定されるデューティduty(p(0))の制御信号３２が生成されるまでの遅延は、数サイクルに抑えることができ、且つ遅延のサイクル数は一定にすることができる。ソフトウェアが介在する必要がなく、全てハードウェアで設計することができるからである。外部機器制御信号生成部２０が生成、出力する信号は、デューティ可変の信号を例に採って説明したが、これに制限されない。コンペアレジスタ２１から与えられるパラメータによって制御される如何なる制御信号でもよい。例えば、パラメータによって振幅が変動する高周波信号や、周波数が変動する交流信号でもよい。パラメータが１個の場合を例に採ったが、これに限られず、複数個であってもよい。
【００５８】
ＣＰＵ２は、時刻ｔ１にＣＰＵ割り込みＩＮＴ＿Ｃが入力されると、時刻ｔ２に次の更新値p(1)の計算を開始する。このとき、ＣＰＵ割り込みＩＮＴ＿Ｃが入力されてから、割り込み処理であるパラメータの更新値の計算が開始されるまでには、ある程度の遅延（オーバーヘッド）が生じる。ＣＰＵ割り込みＩＮＴ＿Ｃが入力されると、ＣＰＵ２は割り込み要因を判定し、ベクタテーブルを参照して判定された割り込み要因に対応する割り込み処理の分岐先アドレスを得る。合わせて、実行中の処理を中断するため、汎用レジスタなどの退避処理を行った後に、ベクタテーブルによって指定される分岐先アドレスに分岐することによって、割り込み処理を開始する。このように、割り込み信号の入力から割り込み処理の開始までは、ある程度の遅延が生じる。また、このＣＰＵ割り込みに伴うオーバーヘッドは、退避すべきデータの量や、バストラフィックによっても変動する。
【００５９】
割り込み処理において、ＣＰＵ２はパラメータ更新プログラムを実行し、パラメータの次の更新値p(1)を算出する。合わせて、ＣＰＵ２は、例えば時刻ｔ３において、イベントレジスタ１２に次の補正時刻tevent(1)を書き込む。最初のＣＰＵ割り込みにより、ＣＰＵ２は最初の補正時刻tevent(0)を既に経過したことを検知することができるので、その割り込みによって起動される割り込み処理ルーチンの中で、次の補正時刻tevent(1)のイベントレジスタ１２への書き込みを行えば良い。これにより、既に書き込んだ補正時刻に至る以前に、次の補正時刻を上書きしてしまうおそれを解消することができる。次の更新値p(1)の算出が時刻ｔ４で完了すると、その値をバッファレジスタ２２に書き込む。これも、割り込み処理ルーチンの中で行われるので、その前の更新値p(0)がコンペアレジスタ２１に転送される前で、バッファレジスタ２２の保持されているときに、その値を上書きしてしまうおそれは解消されている。
【００６０】
その後、時刻ｔ５においてローカル時刻tclockが補正時刻tevent(1)と一致すると、周辺モジュール割り込みＩＮＴ＿Ｔが発行されることにより、更新値p(1)がバッファレジスタ２２からコンペアレジスタ２１に転送され、時刻ｔ５から制御信号３２のデューティが更新値p(1)で規定される値duty(p(1))に変更される。同じく時刻ｔ５においてＣＰＵ割り込みＩＮＴ＿Ｃも発生し、これによって割り込み処理が開始され、時刻ｔ６から次の更新値p(2)の計算が開始され、計算が完了する時刻ｔ８にバッファレジスタ２２に書き込まれる。また、同じ割り込み処理ルーチンの中で、時刻ｔ７において次の補正時刻tevent(2)がイベントレジスタ１２に書き込まれる。
【００６１】
以上のように、更新値p(1)の計算が開始される時刻ｔ２は、ＣＰＵ割り込みに伴うオーバーヘッドによって変動し、さらにまた更新値p(1)の計算が完了する時刻ｔ４も変動する可能性があるが、更新値p(1)が出力である制御信号３２のデューティに反映される時刻は、ローカル時刻tclockが指定された補正時刻tevent(1)と一致した時刻ｔ５である。複数のスレーブ装置９１＿１〜９１＿Ｎに同じ補正時刻tevent(1)が設定されたとき、時刻ｔ２とｔ４は、スレーブ装置９１＿１〜９１＿Ｎ毎のＣＰＵ割り込みに伴うオーバーヘッドとパラメータ更新プログラムの実行時間の変動に影響されて変動する。一方、パラメータが更新値p(1)に更新される時刻ｔ５は、ローカル時刻tclockの同期精度と同程度の高精度で同期する。ローカル時刻tclockは複数の装置間で高精度に同期されており、時刻ｔ５はローカル時刻tclockが指定された補正時刻tevent(1)と一致した時刻であるから、同じ補正時刻tevent(1)が設定された装置間では、ローカル時刻tclockの同期精度と同程度の高精度で同期するからである。
【００６２】
これにより、ＣＰＵ割り込みに伴うオーバーヘッドとパラメータ更新プログラムの実行時間の変動に影響されることなく、パラメータの補正時刻について、高精度の同期性と遅延時間を保証することができる。
【００６３】
なお、本実施形態およびこれ以降にいうところの同じ時刻、或いは時刻の一致などの表現は、厳密な一致を意味するものではなく、パイプラインなどハードウェア構成上の数サイクルの誤差を含む。
【００６４】
〔実施形態２〕
図４は、実施形態２に係るマイコンの構成を表すブロック図である。マイコン１に含まれる通信インターフェース３は、実施形態１に示した通信インターフェース３に対してさらに、イベントバッファ１３を備える。イベントバッファ１３は、複数のレジスタ１５＿１、１５＿２を含んで構成され、バス６から書き込まれた補正時刻を、書き込まれた順序で、イベントレジスタ１２に転送する。イベントバッファ１３は例えばＦＩＦＯ（First In First Out）として動作するシフトレジスタで構成することができる。時刻レジスタ１１の値とイベントレジスタ１２の値が一致したときに、イベントバッファ１３に格納される最も古い値を、イベントレジスタ１２に転送し、ＦＩＦＯで構成したときは、以後の値を順次シフトする。イベントバッファ１３を設けることにより、ＣＰＵ２は、受信した補正時刻tevent(0), tevent(1), tevent(2), …を順次、イベントバッファ１３に書き込むことができる。イベントバッファ１３を設けない場合には、ローカル時刻tclcokが補正時刻tevent(0)に至る以前に、次の補正時刻tevent(1)をイベントレジスタ１２に書き込むと、補正時刻tevent(0)におけるパラメータの更新が、欠落することとなる。また、次の補正時刻tevent(1)をイベントレジスタ１２に書き込む時刻がtevent(1)以降になると、補正時刻tevent(1)におけるパラメータの更新が、欠落することとなる。そこで、補正時刻tevent(1)をイベントレジスタ１２に書き込むタイミングは、制限される。例えば、ローカル時刻tclcokが補正時刻tevent(0)に一致したときに発生するＣＰＵ割り込みＩＮＴ＿Ｃの割り込み処理ルーチンにおいて、次の補正時刻tevent(1)をイベントレジスタ１２に設定すればよい。この場合には、受信した補正時刻tevent(0), tevent(1), tevent(2), …は、メモリ５に格納しておく。本実施形態に示したように、イベントバッファ１３を設けることにより、ＣＰＵ２から通信インターフェース３に補正時刻を書き込むタイミングの制限を緩和することができ、また、ＣＰＵ割り込みＩＮＴ＿Ｃの割り込み処理ルーチンの負荷を軽減することができる。
【００６５】
マイコン１は、外部機器制御信号生成部２０としてＰＷＭ制御された制御信号を生成するタイマをそれぞれ含む、２個の周辺モジュール４＿１と４＿２を備える。２個の周辺モジュール４＿１と４＿２のそれぞれは、ポート８＿１とポート８＿２を介して、ＰＷＭ制御信号を端子３２＿１と３２＿２に出力する。タイマの構成及びＰＷＭ制御信号の生成動作については、後述する。マイコン１は、割り込み選択回路９をさらに備える。割り込み選択回路９は、入力される周辺モジュール割り込みＩＮＴ＿Ｔを、周辺モジュール４＿１と４＿２、または図示されない種々の周辺モジュールに選択的に接続可能な選択回路を備えて構成される。本実施形態では、周辺モジュール４＿１と４＿２への接続が選択されている。割り込み選択回路９を設けることにより、周辺モジュール割り込みの対象となる、周辺モジュールを切り替えることができ、マイコンの汎用性を高めることができる。
【００６６】
マイコン１は、さらにエンコーダ信号入力部１９を備える。エンコーダ信号入力部１９は、図示を省略したポート８＿３を介して、外部機器の動作を監視するエンコーダ信号が入力され、バス６を介してＣＰＵ２からアクセスされる。
【００６７】
図５は、マイコンと外部機器との接続例を表すブロック図である。マイコン１には、インバータ９４＿１と９４＿２をそれぞれ介して、２個のＡＣモータ９３＿１と９３＿２が接続されている。ＡＣモータ９３＿１を駆動する３相の信号Ｉｕ＿１，Ｉｖ＿１，Ｉｗ＿１は、インバータ９４＿１によって、３相相補ＰＷＭ制御信号ＴＵ１＿ＵＰ，ＴＵ１＿ＵＮ，ＴＵ１＿ＶＰ，ＴＵ１＿ＶＮ，ＴＵ１＿ＷＰ，ＴＵ１＿ＷＮから生成される。他方ＡＣモータ９３＿２を駆動する３相の信号Ｉｕ＿２，Ｉｖ＿２，Ｉｗ＿２も同様に、インバータ９４＿２によって３相相補ＰＷＭ制御信号ＴＵ２＿ＵＰ，ＴＵ２＿ＵＮ，ＴＵ２＿ＶＰ，ＴＵ２＿ＶＮ，ＴＵ２＿ＷＰ，ＴＵ２＿ＷＮから生成される。２個のＡＣモータ９３＿１と９３＿２にはそれぞれ、位置検出器として機能するエンコーダ９５＿１と９５＿２が備えられており、ＡＣモータ９３＿１と９３＿２の位置を検出したエンコーダ信号は、マイコン１のエンコーダ信号入力部１９に、ポート８＿３を経由して入力される。
【００６８】
図６は、実施形態２に係るタイマの構成例を表すブロック図である。コンペアレジスタ２１、バッファレジスタ２２と転送回路２３も合わせて示す。３相相補のＰＷＭ制御信号のそれぞれに対応するため、コンペアレジスタ２１は、レジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）を含み、バッファレジスタ２２は、レジスタＴＢＲＡ（２２＿Ａ）、ＴＢＲＢ（２２＿Ｂ），ＴＢＲＣ（２２＿Ｃ）を含む。転送回路２３は、周辺モジュール割り込みの一例であるタイマ割り込みＩＮＴ＿Ｔが入力されると、バッファレジスタＴＢＲＡ（２２＿Ａ）の値を、コンペアレジスタＴＣＲＡ（２１＿Ａ）に、ＴＢＲＢ（２２＿Ｂ）の値をＴＣＲＢ（２１＿Ｂ）に、ＴＢＲＣ（２２＿Ｃ）の値をＴＣＲＣ（２１＿Ｃ）に、それぞれ転送する。
【００６９】
周辺モジュール４の一例であるタイマモジュール４＿１と４＿２のそれぞれは、カウンタ２４＿１と２４＿２、デッドタイムレジスタＴＤＤＲ２５、比較器２７＿１と２７＿２、及び出力制御部２８を含んで構成される。タイマモジュール４＿１と４＿２は同一の構成であっても、異なる構成であっても良い。マイコンの周辺モジュールとしてのタイマは、一般に汎用性を備えているので、ここに示す構成例は、汎用タイマの設定例としても位置付けられる。カウンタ２４＿１と２４＿２は、レジスタＴＣＮＴ１とＴＣＮＴ２を備え、インクリメント／デクリメント可変のカウンタであり、さらに詳細な回路構成の図示を省略しているが、バス６を経由してＣＰＵ２によってリードライトすることができ、周辺モジュール割り込みであるタイマ割り込みにより、インクリメントとデクリメントを反転されることができるように構成される。
【００７０】
比較回路２７＿１は、カウンタ２４＿１、２４＿２のレジスタＴＣＮＴ１、ＴＣＮＴ２の値と、コンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）の値とを比較し、６通りの組合せのそれぞれの一致信号を、出力制御部２８に出力する。比較回路２７＿２は、カウンタ２４＿１、２４＿２のレジスタＴＣＮＴ１、ＴＣＮＴ２の値と、デッドタイムレジスタＴＤＤＲ（２５）の値とを比較し、２通りの組合せの一致信号を、出力制御部２８に出力する。
【００７１】
出力制御部２８は、入力された一致信号に基づいて、３相相補ＰＷＭ制御信号ＴＵ１＿ＵＰ，ＴＵ１＿ＵＮ，ＴＵ１＿ＶＰ，ＴＵ１＿ＶＮ，ＴＵ１＿ＷＰ，ＴＵ１＿ＷＮを生成して出力する。
【００７２】
図７は、実施形態２に係るタイマの動作例を表すタイミングチャートである。横軸に時間をとり、縦軸には、上から、タイマ割り込みＩＮＴ＿Ｔ、カウンタ２４＿１、２４＿２のレジスタＴＣＮＴ１、ＴＣＮＴ２の値をアナログ的に表したＴＣＮＴ、及び、３相相補ＰＷＭ制御信号ＴＵ１＿ＵＰ，ＴＵ１＿ＵＮ，ＴＵ１＿ＶＰ，ＴＵ１＿ＶＮ，ＴＵ１＿ＷＰ，ＴＵ１＿ＷＮの波形を示す。比較回路２７＿１は、タイマカウンタＴＣＮＴ１、ＴＣＮＴ２とコンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）のコンペアマッチでデューティを生成する。
【００７３】
時刻ｔ０の最初のタイマ割り込みから時刻ｔ７の次のタイマ割り込みまでの期間、カウンタ２４＿１、２４＿２は、デッドタイムレジスタＴＤＤＲ（２５）に設定される値のオフセットをもって、アップカウンタとして動作する。時刻ｔ７のタイマ割り込みにより、インクリメントからデクリメントに変更され、ダウンカウンタとして動作する。以降、タイマ割り込みの度にインクリメントとデクリメントの加算方向を逆転させる。
【００７４】
時刻ｔ０における最初のタイマ割り込みで、コンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）にそれぞれ、初期値ＴｔｈＡ１，ＴｔｈＢ１，ＴｔｈＣ１が設定される。図７には設定される値の例を、ＴＣＮＴ軸上にアナログ的に示す。時刻ｔ１でＴＣＮＴ１がコンペアレジスタＴＣＲＣ（２１＿Ｃ）と一致すると、その結果を比較回路２７＿１が出力制御部２８に出力し、出力制御部２８は３相相補ＰＷＭ制御信号のうち、ＴＵ１＿ＷＮをロウレベルからハイレベルに反転させる。以後、時刻ｔ２でＴＣＮＴ１＝ＴｔｈＢ１の一致によりＴＵ１＿ＶＮを反転させ、時刻ｔ３でＴＣＮＴ２＝ＴｔｈＣ１の一致によりＴＵ１＿ＷＰを反転させ、時刻ｔ４でＴＣＮＴ１＝ＴｔｈＡ１の一致によりＴＵ１＿ＵＮを反転させ、時刻ｔ５でＴＣＮＴ２＝ＴｔｈＢ１の一致によりＴＵ１＿ＶＰを反転させ、時刻ｔ６でＴＣＮＴ２＝ＴｔｈＡ１の一致によりＴＵ１＿ＵＰを反転させる。時刻ｔ７での次のタイマ割り込みでは、上述のように、インクリメントとデクリメントの加算方向を逆転させる。その後、時刻ｔ８でＴＣＮＴ２＝ＴｔｈＡ１の一致によりＴＵ１＿ＵＰを再び反転させ、時刻ｔ９でＴＣＮＴ２＝ＴｔｈＢ１の一致によりＴＵ１＿ＶＰを再び反転させる。また、時刻ｔ１０でＴＣＮＴ１＝ＴｔｈＡ１の一致によりＴＵ１＿ＵＮを再び反転させ、時刻ｔ１１でＴＣＮＴ２＝ＴｔｈＣ１の一致によりＴＵ１＿ＷＰを再び反転させ、時刻ｔ１２でＴＣＮＴ１＝ＴｔｈＢ１の一致によりＴＵ１＿ＶＮを再び反転させる。
【００７５】
時刻ｔ１３での次のタイマ割り込みでは、コンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）の値を、それぞれ更新値ＴｔｈＡ２，ＴｔｈＢ２，ＴｔｈＣ２に更新される。これは、タイマ割り込みＩＮＴ＿Ｔにより転送回路２３が、バッファレジスタＴＢＲＡ（２２＿Ａ）の値を、コンペアレジスタＴＣＲＡ（２１＿Ａ）に、ＴＢＲＢ（２２＿Ｂ）の値をＴＣＲＢ（２１＿Ｂ）に、ＴＢＲＣ（２２＿Ｃ）の値をＴＣＲＣ（２１＿Ｃ）に、それぞれ転送することによって行う。バッファレジスタＴＢＲＡ（２２＿Ａ）、ＴＢＲＢ（２２＿Ｂ）、ＴＢＲＣ（２２＿Ｃ）には、予めＣＰＵ２から更新値ＴｔｈＡ２，ＴｔｈＢ２，ＴｔｈＣ２が書き込まれている。その後、時刻ｔ１４から時刻ｔ２６までの期間において、時刻ｔ１〜時刻ｔ１３までの期間と同様の動作を繰り返す。コンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）の値が更新された結果、出力される３相相補ＰＷＭ制御信号ＴＵ１＿ＵＰ，ＴＵ１＿ＵＮ，ＴＵ１＿ＶＰ，ＴＵ１＿ＶＮ，ＴＵ１＿ＷＰ，ＴＵ１＿ＷＮのデューティが変更される。
【００７６】
ＣＰＵ２が、更新値ＴｔｈＡ２，ＴｔｈＢ２，ＴｔｈＣ２を算出する時刻、及びそれらを書き込む時刻は、ＣＰＵ割り込みに伴うオーバーヘッドとパラメータ更新プログラムの実行時間に影響されて変動する。しかし、コンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）の値がそれぞれ更新値ＴｔｈＡ２，ＴｔｈＢ２，ＴｔｈＣ２に更新される時刻は、時刻ｔ１３でのタイマ割り込みに同期している。時刻ｔ１３でのタイマ割り込みは、複数のスレーブ装置間で同期されたローカル時刻tclockによって発生するので、タイマ割り込みの発生時刻も、複数のスレーブ装置間で高精度に同期している。よって、複数のスレーブ装置間でコンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）の値が更新される時刻も、高精度に同期させることができる。
【００７７】
以上、タイマモジュール４＿１を使って一方のＡＣモータ９３＿１を制御する方法について説明したが、タイマモジュール４＿２を使って他方のＡＣモータ９３＿２を制御する方法も同様であるので、説明を省略する。２個のＡＣモータ９３＿１と９３＿２は、ともに他のスレーブ装置によって制御されるＡＣモータその他の外部機器と高精度に同期して制御される。
【００７８】
これにより、ＣＰＵ割り込みに伴うオーバーヘッドとパラメータ更新プログラムの実行時間の変動に影響されることなく、パラメータの補正時刻について、高精度の同期性と遅延時間を保証することができる。また、これにより、外部に接続される装置（モータ）を、高精度な時刻同期で動作させることができる。
【００７９】
次に、マイコンで３相相補ＰＷＭ出力によりモータを制御する場合の初期設定動作について説明する。図８は、実施形態２に係るマイコンのリセットルーチンの一例を示すフローチャートである。
【００８０】
マイコン起動後即ちリセットが入力された後、まず、タイマモジュール４＿１と４＿２と通信インターフェース３をモジュールスタンバイ状態から解除する（Ｓ１）。
【００８１】
次に、タイマモジュール４＿１の初期設定をする（Ｓ２）。タイマカウンタＴＣＮＴ１にデッドタイム、タイマカウンタＴＣＮＴ２に０を設定する。バッファレジスタＴＢＲＡ（２２＿Ａ）、ＴＢＲＢ（２２＿Ｂ），ＴＢＲＣ（２２＿Ｃ）に、それぞれＵ相、Ｖ相、Ｗ相のデューティを規定するためのパラメータＴｔｈＡ，ＴｔｈＢ，ＴｔｈＣを設定する。コンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）にも同じパラメータＴｔｈＡ，ＴｔｈＢ，ＴｔｈＣを設定し、デッドタイムレジスタＴＤＤＲにはデッドタイム設定する。リセットルーチンでは初期値としてＣＰＵ２が直接コンペアレジスタ２１とデッドタイムレジスタ２５の値を設定するが、以降はＣＰＵ２による更新の必要はない。タイマモジュール４＿１が汎用タイマモジュールである場合には、バッファレジスタＴＢＲＡ（２２＿Ａ）、ＴＢＲＢ（２２＿Ｂ），ＴＢＲＣ（２２＿Ｃ）に、コンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）をそれぞれ対応付ける設定を行う。また、ＴＵ１＿ＵＰ，ＴＵ１＿ＵＮ，ＴＵ１＿ＶＰ，ＴＵ１＿ＶＮ，ＴＵ１＿ＷＰ，ＴＵ１＿ＷＮの出力をイネーブルにする設定を行う。
【００８２】
以上のタイマモジュール４＿１の初期設定を終えると、通信インターフェース３からのタイマ割り込みによるタイマモジュール４＿１のパラメータ転送を許可する（Ｓ３）。通信インターフェース３からのＣＰＵ割り込みの優先度を有効なレベルに設定する（Ｓ４）。３相相補ＰＷＭ制御信号ＴＵ１＿ＵＰ，ＴＵ１＿ＵＮ，ＴＵ１＿ＶＰ，ＴＵ１＿ＶＮ，ＴＵ１＿ＷＰ，ＴＵ１＿ＷＮが接続されるポート８＿１を出力に設定する（Ｓ５）。タイマカウンタＴＣＮＴ１，ＴＣＮＴ２のカウント動作を開始する（Ｓ６）。通信インターフェース３からのＣＰＵ割り込みＩＮＴ＿Ｃを待つ（Ｓ７）。
【００８３】
次に、マイコンのＣＰＵ割り込みルーチンとタイマ割り込みに対する処理について説明する。上記の初期設定動作後、ＣＰＵ割り込みＩＮＴ＿Ｃとタイマ割り込みＩＮＴ＿Ｔを待つ。ＣＰＵ割り込みＩＮＴ＿Ｃが発生するとＣＰＵ２がＣＰＵ割り込みルーチンを実行し、タイマモジュール４＿１が所定の処理を実行する。
【００８４】
図９は、実施形態２に係るマイコンのＣＰＵ割り込みルーチンの一例を示すフローチャートである。通信インターフェース３からのＣＰＵ割り込みＩＮＴ＿Ｃが発生すると、ＣＰＵ２は通信インターフェース３からの割り込みフラグをクリアする（Ｓ１１）。ＣＰＵ２はＡＣモータ９３＿１からエンコーダ信号の入力があるか判定する（Ｓ１２）。エンコーダ信号の入力がある場合、ＣＰＵ２はエンコーダ信号入力部１９からエンコーダ信号を取り込む（Ｓ１３）。ＣＰＵ２は、パラメータ更新プログラムにおいて、Ｕ相、Ｖ相、Ｗ相の更新すべきデューティの計算を行い、対応するパラメータＴｔｈＡ，ＴｔｈＢ，ＴｔｈＣを算出する。（Ｓ１４）。Ｓ１３でエンコーダ信号を取り込んだ場合は、その値もデューティ計算時のパラメータに加える。Ｓ１４で計算したパラメータＴｔｈＡ，ＴｔｈＢ，ＴｔｈＣをタイマモジュール４＿１のバッファレジスタＴＢＲＡ（２２＿Ａ）、ＴＢＲＢ（２２＿Ｂ），ＴＢＲＣ（２２＿Ｃ）に設定することで、次に更新されるべきデューティの値が設定される（Ｓ１５）。
【００８５】
図１０は、実施形態２に係るマイコンのタイマ割り込みに対する処理の一例を示すフローチャートである。通信インターフェース３からのタイマ割り込みＩＮＴ＿Ｔが発生すると、タイマモジュール４＿１のバッファレジスタＴＢＲＡ（２２＿Ａ）、ＴＢＲＢ（２２＿Ｂ），ＴＢＲＣ（２２＿Ｃ）に設定されているパラメータＴｔｈＡ，ＴｔｈＢ，ＴｔｈＣが、コンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）にそれぞれ転送される（Ｓ１６）。コンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）の値が更新された結果、出力される３相相補ＰＷＭ制御信号ＴＵ１＿ＵＰ，ＴＵ１＿ＵＮ，ＴＵ１＿ＶＰ，ＴＵ１＿ＶＮ，ＴＵ１＿ＷＰ，ＴＵ１＿ＷＮのデューティが変更される。
【００８６】
ＣＰＵ割り込みＩＮＴ＿Ｃが発生した後、ＣＰＵ２が図９を参照して説明したＣＰＵ割り込みルーチンによって更新値ＴｔｈＡ２，ＴｔｈＢ２，ＴｔｈＣ２を算出する時刻、及びそれらを書き込む時刻は、ＣＰＵ割り込みに伴うオーバーヘッドとパラメータ更新プログラムの実行時間に影響されて変動する。一方、タイマ割り込みＩＮＴ＿Ｔが発生した後、タイマモジュール４＿１がコンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）の値をそれぞれ更新する時刻は、タイマ割り込みＩＮＴ＿Ｔから数クロックサイクル以内の一定の遅延を経た時刻であり、タイマ割り込みＩＮＴ＿Ｔに高精度に同期している。タイマ割り込みＩＮＴ＿Ｔの発生時刻は、複数のスレーブ装置間で高精度に同期している。よって、複数のスレーブ装置間でコンペアレジスタＴＣＲＡ（２１＿Ａ）、ＴＣＲＢ（２１＿Ｂ），ＴＣＲＣ（２１＿Ｃ）の値が更新される時刻も、高精度に同期させることができる。
【００８７】
以上、タイマモジュール４＿１を使って一方のＡＣモータ９３＿１を制御する方法について説明したが、タイマモジュール４＿２を使って他方のＡＣモータ９３＿２を制御する方法も同様であるので、説明を省略する。２個のＡＣモータ９３＿１と９３＿２は、ともに他のスレーブ装置によって制御されるＡＣモータその他の外部機器と高精度に同期して制御される。
【００８８】
これにより、ＣＰＵ割り込みに伴うオーバーヘッドとパラメータ更新プログラムの実行時間の変動に影響されることなく、パラメータの補正時刻について、高精度の同期性と遅延時間を保証することができる。また、これにより、外部に接続される装置（モータ）を、高精度な時刻同期で動作させることができる。
【００８９】
〔実施形態３〕
図１１は、実施形態３に係るマイコンの構成を表すブロック図である。実施形態３に係るマイコンは、実施形態２に係るマイコンが、２個の周辺モジュール４としてタイマモジュール４＿１と４＿２を備えるのに対し、１個のＡＣモータを駆動する制御信号を生成するために、ＰＷＭ信号生成部２０＿３を含む１個の周辺モジュール４＿３を備える。ＰＷＭ信号生成部２０＿３は、タイマ２０＿１、２０＿２とは異なり、直接デューティ値を与えることにより、ＰＷＭ制御された制御信号を生成し、ポート８を介してマイコン１の端子３２から出力する。ＣＰＵ２，通信インターフェース３、メモリ５及びエンコーダ１９の構成は、実施形態２に係るマイコンと同様であるが、通信インターフェース３から出力される周辺モジュール割り込みＩＮＴ＿Ｔは、割り込み選択回路９を介すことなく、直接、周辺モジュール４＿３に入力される。
【００９０】
周辺モジュール４＿３は、ＰＷＭ生成回路２０＿３とデューティバッファ１７とデューティレジスタ２１＿３と転送回路２３＿３を備える。デューティバッファ１７は、複数のレジスタ２２＿３、１５＿３、…を含み、例えばＦＩＦＯとして動作するシフトレジスタで構成され、ＣＰＵ２によりバス６から書き込まれたデューティ値を、書き込まれた順序で転送し出力する。周辺モジュール割り込みＩＮＴ＿Ｔにより、転送回路２３＿３は、デューティバッファ１７の最終段のレジスタ２２＿３から、デューティ値をデューティレジスタ２１＿３に転送し、デューティバッファ１７は、保持するデューティ値を順次シフトする。デューティバッファ１７の最終段のレジスタ２２＿３は、実施形態１及び２におけるバッファレジスタ２２に対応する。ＰＷＭ信号生成部２０＿３は、デューティレジスタ２１＿３に保持されているデューティ値に応じたデューティの制御信号を生成する。
【００９１】
デューティバッファ１７を設けたことにより、ＣＰＵ２から周辺モジュール４＿３にデューティ値を書き込むタイミングの制限を緩和することができる。
【００９２】
次に、マイコンの初期設定動作について説明する。図１２は、実施形態３に係るマイコンのリセットルーチンの一例を示すフローチャートである。
【００９３】
マイコン起動後即ちリセットが入力された後、まず、周辺モジュール４＿３と通信インターフェース３をモジュールスタンバイ状態から解除する（Ｓ２１）。次に、デューティレジスタ２１＿３の初期設定をする（Ｓ２２）。図１１には１系統のみのデューティレジスタ２１＿３を図示したが、Ｕ相、Ｖ相、Ｗ相の３系統、３個のデューティレジスタ２１＿３を備える。Ｓ２２では、それぞれに適切な初期値を与える。さらにデューティバッファ１７に、Ｕ相、Ｖ相、Ｗ相のデューティ更新値を設定する（Ｓ２３）。ＰＷＭ生成回路２０＿３に3相相補ＰＷＭ生成に必要なデッドタイム等のパラメータを設定する（Ｓ２４）。次に、タイマ割り込み毎にＰＷＭのデューティを更新するように、タイマ割り込みの初期設定を行い（Ｓ２５）、ポート８をＵ相、Ｖ相、Ｗ相の出力に設定して（Ｓ２６）、タイマ割り込みを待つ（Ｓ２７）。
【００９４】
図１３は、実施形態３に係るマイコンのＣＰＵ割り込みルーチンの一例を示すフローチャートである。通信インターフェース３からのＣＰＵ割り込みＩＮＴ＿Ｃが発生すると、ＣＰＵ２は通信インターフェース３からの割り込みフラグをクリアする（Ｓ３１）。ＣＰＵ２はエンコーダ入力部１９からエンコーダ信号の入力があるか判定する（Ｓ３２）。エンコーダ信号の入力がある場合、エンコーダ入力部１９からエンコーダ信号を取り込む（Ｓ３３）。次に、デューティの計算をする（Ｓ３４）。Ｓ３３でエンコーダ信号を取り込んだ場合は、その値もデューティ計算時のパラメータに加える。Ｓ３４で計算したデューティをデューティバッファ１７に設定することでデューティを更新する（Ｓ３５）。
【００９５】
図１４は、実施形態３に係るマイコンのタイマ割り込みに対する処理の一例を示すフローチャートである。通信インターフェース３のタイマ割り込みＩＮＴ＿Ｔが発生すると、転送回路２３＿３によってデューティバッファ１７に設定済みのデューティがデューティレジスタ２０＿３に転送される。
【００９６】
これにより、ＣＰＵ割り込みに伴うオーバーヘッドとパラメータ更新プログラムの実行時間の変動に影響されることなく、パラメータの補正時刻について、高精度の同期性と遅延時間を保証することができる。また、これにより、外部に接続される装置（モータ）を、高精度な時刻同期で動作させることができる。さらに、ＣＰＵ２から周辺モジュール４＿３にデューティ値を書き込むタイミングの制限を緩和することができる。
【００９７】
〔実施形態４〕
図１５は、実施形態４に係るマイコンの構成を表すブロック図である。実施形態４に係るマイコンは、図１１に示した実施形態３に係るマイコンに対して、さらに、ＰＷＭ信号生成部２０＿３の後段に、Ｕ相、Ｖ相、Ｗ相の出力にそれぞれ可変遅延回路３０＿Ｕ，３０＿Ｖ，３０＿Ｗと、それを制御する位相調整回路２９と、位相調整回路２９にＵ相、Ｖ相、Ｗ相の位相を供給する位相レジスタ１８を備える。
【００９８】
図１６は、実施形態４に係るマイコンのリセットルーチンの一例を示すフローチャートである。Ｓ４１〜Ｓ４６は、図１２に示したＳ２１〜Ｓ２６と同じであるので、説明を省略する。Ｓ４６の次に、位相レジスタの設定を行う（Ｓ４７）。可変遅延回路３０＿Ｕ，３０＿Ｖ，３０＿Ｗにそれぞれ遅延量、δ(0)、δ(1)、δ(2)を設定する。全ての初期設定が終わったら、タイマ割り込みＩＮＴ＿Ｔを待つ（Ｓ４８）。なお、初期設定動作後、通信インターフェース３からのＣＰＵ割り込み、及びタイマ割り込み発生後の対応動作は、図１３と図１４に示した実施例３とそれぞれ同様なので説明を省略する。
【００９９】
ＰＷＭ信号生成部２０＿３から出力されたＵ相、Ｖ相、Ｗ相の制御信号に、それぞれ独立に遅延を与えることによって、Ｕ相、Ｖ相、Ｗ相の相互の位相関係を設定することができる。これにより、位相調整が必要な、モータ等の外部機器の同期制御を行うことができる。
【０１００】
一方、ＰＷＭ信号生成部２０＿３が、１系統のみのＰＷＭ制御信号を生成するように構成し、可変遅延回路３０＿Ｕ，３０＿Ｖ，３０＿Ｗによって、互いに基本的に１２０°ずつの位相差を持つように設定することにより、デューティバッファ１７と転送回路２３＿３とデューティレジスタ２１＿３を１系統のみに抑えることができる。
【０１０１】
〔実施形態５〕
図１７は、実施形態５に係るマイコンの構成を表すブロック図である。図４に示した実施形態２に係るマイコンを簡略化し、産業用モータの制御補正でなく、産業用モータの起動のみに応用した例を示す。また、複数モータを同時に起動するとし、１台目のモータはタイマモジュール４＿１、２台目のモータはタイマモジュール４＿２で制御する。通信インターフェース３は、同期通信部１０、時刻レジスタ１１、比較回路１４の他に、２個のイベントレジスタ１２＿１と１２＿２を備え、例えばIEEE1588規格に準拠する同期Etherのプロトコル処理を実行する。比較回路１４は、時刻レジスタ１１に格納されるローカル時刻と、イベントレジスタ１２＿１と１２＿２に格納される時刻とを比較して、いずれかと一致するとＣＰＵ割り込みＩＮＴ＿Ｃを発行し、イベントレジスタ１２＿１と１２＿２と一致するとそれぞれタイマ割り込みＩＮＴ＿Ｔ１とＩＮＴ＿Ｔ２を発行する。タイマ割り込みＩＮＴ＿Ｔ１とＩＮＴ＿Ｔ２は、割り込み選択回路９により、それぞれタイマモジュール４＿１と４＿２に供給されるように選択されている。ＣＰＵ２、メモリ５、バス６、Ｅｔｈｅｒ回路７、タイマモジュール４＿１と４＿２の構成、ポート８＿１と８＿２、及び、エンコーダ信号入力部１９は、図４に示した実施形態２に係るマイコンと同様である。
【０１０２】
複数の産業機器間で同期Etherにより時刻同期したシステムで、特定の決められた起動時刻(tstart(0), tstart(1))で産業用モータを起動する実施形態について説明する。起動時刻(tstart(0), tstart(1))は同期通信部１０経由で外部からEther通信により取得してメモリ５に格納するか、または、あらかじめメモリ５に書き込んでおく。ＣＰＵ２は、モータ制御に適した演算性能を重視したCPUコアで、角速度、トルク、位相等の制御パラメータをエンコーダ経由で取り込みデューティの補正計算を行い、タイマモジュール４＿１と４＿２に所定のデューティを出力するためのパラメータを設定する。ＣＰＵ２は、また、取得した起動時刻tstart(0), tstart(1)を、起動すべきモータに対応付けて、イベントレジスタ１２＿１と１２＿２に格納する。例えば、起動時刻tstart(0)に１台目のモータを起動し、起動時刻tstart(1)に２台目のモータを起動させる場合には、１台目のモータに対応するイベントレジスタ１２＿１に起動時刻tstart(0)を、２台目のモータに対応するイベントレジスタ１２＿２に起動時刻tstart(1)をそれぞれ書き込む。比較回路１４はイベントレジスタ１２＿１と１２＿２の起動時刻と時刻レジスタ１１のローカル時刻を比較し、互いに一致した場合、ＣＰＵ割り込みＩＮＴ＿Ｃとタイマ割り込みＩＮＴ＿Ｔ１とＩＮＴ＿Ｔ２を発生する。タイマ割り込みＩＮＴ＿Ｔ１とＩＮＴ＿Ｔ２のそれぞれは、割り込み選択回路９によってタイマモジュール４＿１と４＿２に接続されている。タイマモジュール４＿１と４＿２入力されたパラメータで規定されるデューティの制御信号を生成するタイマモジュールである。生成された制御信号は、ポート８＿１と８＿２を経て、外部機器のインバータへ入力され、インバータによってモータが駆動される。モータを駆動する信号は、例えば、一般に産業用モータで使用される、３相の正相と逆相からなる３相相補ＰＷＭ信号である。それぞれのモータの角速度や位置情報は、エンコーダ信号として、エンコーダ信号入力部１９から取り込まれる。
【０１０３】
マイコンで３相相補ＰＷＭ出力によりモータを制御する場合の初期設定動作について説明する。図１８は、実施形態５に係るマイコンのリセットルーチンの一例を示すフローチャートである。
【０１０４】
マイコン起動後即ちリセットが入力された後、まず、タイマモジュール４＿１と４＿２と通信インターフェース３をモジュールスタンバイ状態から解除する（Ｓ４１）。タイマモジュール４＿１の初期設定として、デューティを規定するパラメータの初期設定、デッドタイム設定、波形出力設定等を行い（Ｓ４２）、タイマモジュール４＿２に対しても同様に初期設定として、デューティを規定するパラメータの初期設定、デッドタイム設定、波形出力設定等を行う（Ｓ４３）。イベントレジスタ１２＿１にタイマモジュール４＿１の起動時刻tstart(0)を設定し、イベントレジスタ１２＿２にタイマモジュール４＿２の起動時刻tstart(1)を設定する（Ｓ４４）。割り込み選択回路９によって、通信インターフェース３からのタイマ割り込みＩＮＴ＿Ｔ１とＩＮＴ＿Ｔ２を、タイマモジュール４＿１と４＿２にそれぞれ接続し許可する（Ｓ４５）。通信インターフェース３からのＣＰＵ割り込みの優先度を有効なレベルに設定する（Ｓ４６）。タイマモジュール４＿１と４＿２から出力される３相相補ＰＷＭ制御信号が接続される、ポート８＿１と８＿２を出力に設定する（Ｓ４７）。通信インターフェース３からのＣＰＵ割り込みＩＮＴ＿Ｃを待つ（Ｓ４８）。
【０１０５】
次に、マイコンのＣＰＵ割り込みルーチンとタイマ割り込みに対する処理について説明する。上記の初期設定動作後、ＣＰＵ割り込みＩＮＴ＿Ｃとタイマ割り込みＩＮＴ＿Ｔ１とＩＮＴ＿Ｔ２を待つ。ＣＰＵ割り込みＩＮＴ＿Ｃが発生するとＣＰＵ２がＣＰＵ割り込みルーチンを実行し、タイマ割り込みＩＮＴ＿Ｔ１とＩＮＴ＿Ｔ２が発生すると、タイマモジュール４＿１と４＿２がそれぞれ所定の処理を実行する。図１９は、実施形態５に係るマイコンのＣＰＵ割り込みルーチン及びタイマ割り込みに対する処理の一例を示すフローチャートである。通信インターフェース３からのＣＰＵ割り込みＩＮＴ＿Ｃが発生すると、ＣＰＵ２は割り込み要因を判定する（Ｓ５１）。Ｓ５１で割り込み要因がイベントレジスタ１２＿２に対応する割り込みであれば、イベントレジスタ１２＿２に対応する割り込みを禁止し（Ｓ５２）、イベントレジスタ１２＿２に対応する割り込みフラグをクリアする（Ｓ５３）。さらに、タイマモジュール４＿２のコンペアマッチ割り込みを許可し、デューティの補正を可能にする（Ｓ５４）。Ｓ５１で割り込み要因がイベントレジスタ１２＿１に対応する割り込みであれば、イベントレジスタ１２＿１に対応する割り込みを禁止し（Ｓ５５）、イベントレジスタ１２＿１に対応する割り込みフラグをクリアする（Ｓ５６）。さらに、タイマモジュール４＿１のコンペアマッチ割り込みを許可し、デューティの補正を可能にする（Ｓ５７）。
【０１０６】
通信インターフェース３からのイベントレジスタ１２＿１に対応するタイマ割り込みＩＮＴ＿Ｔ１が発生すると、タイマモジュール４＿１のタイマが起動され、（Ｓ５８）、通信インターフェース３からのイベントレジスタ１２＿２に対応するタイマ割り込みＩＮＴ＿Ｔ２が発生すると、タイマモジュール４＿２のタイマが起動される（Ｓ５９）。
【０１０７】
図２０は、実施形態５に係るマイコンのコンペアマッチ割り込みルーチン及びカウンタのカウント方向切り替えに対する処理の一例を示すフローチャートである。タイマモジュール４＿１からのコンペアマッチ割り込みが発生すると、ＣＰＵ２はタイマモジュール４＿１のコンペアマッチ割り込みフラグをクリアする（Ｓ６１）。ＣＰＵ２はエンコーダ信号の入力があるか判定し（Ｓ６２）、エンコーダ信号の入力がある場合、エンコーダ信号入力部１９からエンコーダ信号を取り込む（Ｓ６３）。次にＣＰＵ２は、デューティの計算をする（Ｓ６４）。Ｓ６３でエンコーダ信号を取り込んだ場合は、その値もデューティ計算時のパラメータに加える。計算したデューティを出力するためのパラメータを、タイマモジュール４＿１のバッファレジスタ２２＿１に設定することでデューティを更新する（Ｓ６５）。タイマモジュール４＿１のカウンタ（タイマ）２０＿１のカウント方向が（アップカウントからダウンカウント、または、ダウンカウントからアップカウント）切り替わると、タイマモジュール４＿１のバッファレジスタに設定済みのデューティを規定するパラメータが、転送制御部２３＿１によってタイマモジュール４＿１のコンペアレジスタ２１＿１に転送される。タイマモジュール４＿２からのコンペアマッチ割り込みが発生すると、ＣＰＵ２はタイマモジュール４＿２のコンペアマッチ割り込みフラグをクリアする（Ｓ６７）。ＣＰＵ２はエンコーダ信号の入力があるか判定し（Ｓ６８）、エンコーダ信号の入力がある場合、エンコーダ信号入力部１９からエンコーダ信号を取り込む（Ｓ６９）。次にＣＰＵ２は、デューティの計算をする（Ｓ７０）。Ｓ６３でエンコーダ信号を取り込んだ場合は、その値もデューティ計算時のパラメータに加える。計算したデューティを出力するためのパラメータを、タイマモジュール４＿２のバッファレジスタ２２＿２に設定することでデューティを更新する（Ｓ７１）。タイマモジュール４＿２のカウンタ（タイマ）２０＿２のカウント方向が（アップカウントからダウンカウント、または、ダウンカウントからアップカウント）切り替わると、タイマモジュール４＿２のバッファレジスタに設定済みのデューティを規定するパラメータが、転送制御部２３＿２によってタイマモジュール４＿２のコンペアレジスタ２１＿２に転送される（Ｓ７２）。
【０１０８】
これにより、複数の外部機器の起動と制御パラメータの補正時刻を、独立に供給することができ、より高精度且つ汎用性の高い同期制御を行うことができる。
【０１０９】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１１０】
例えば、ＣＰＵ２とメモリ５及びバス６からなるマイコンの基本部分は、如何なるアーキテクチャのプロセッサであってもよい。ＣＰＵ２はマルチプロセッサを含むいかなるプロセッサでも良く、バス６を階層化して、キャッシュメモリやメモリ管理ユニットを備えても良く、メモリ５はオンチップまたは外付けのＲＯＭ、ＲＡＭまたはその組み合わせであっても良い。
【符号の説明】
【０１１１】
１  マイコン
２  ＣＰＵ
３  通信インターフェース
４  周辺モジュール
５  メモリ
６  バス
７  物理インターフェース（Ｅｔｈｅｒ回路）
８  ポート
９  割り込み選択回路
１０  同期通信部
１１  時刻レジスタ
１２  イベントレジスタ
１３  イベントバッファ
１４  比較回路
１５  ＦＩＦＯレジスタ
１６、２６  内部バス
１７  デューティバッファ
１８  位相レジスタ
１９  エンコーダ信号入力回路
２０  外部機器制御信号生成回路
２１  コンペアレジスタ
２２  バッファレジスタ
２３  転送制御部
２４  カウンタ
２５  デッドタイムレジスタ
２７  比較器
２８  出力制御部
２９  位相調整回路
３０  可変遅延回路
３１  ネットワークインターフェース信号入出力端子
３２  外部機器制御信号出力端子
３３  エンコーダ信号入力端子
９０  マスターデバイス
９１  スレーブデバイス
９２  ネットワーク
９３  モータ
９４  インバータ
９５  エンコーダ
ＩＮＴ＿Ｃ  ＣＰＵ割り込み
ＩＮＴ＿Ｔ  周辺モジュール割り込み
【図１】
2014106594.tif 000003
【図２】
2014106594.tif 000004
【図３】
2014106594.tif 000005
【図４】
2014106594.tif 000006
【図５】
2014106594.tif 000007
【図６】
2014106594.tif 000008
【図７】
2014106594.tif 000009
【図８】
2014106594.tif 000010
【図９】
2014106594.tif 000011
【図１０】
2014106594.tif 000012
【図１１】
2014106594.tif 000013
【図１２】
2014106594.tif 000014
【図１３】
2014106594.tif 000015
【図１４】
2014106594.tif 000016
【図１５】
2014106594.tif 000017
【図１６】
2014106594.tif 000018
【図１７】
2014106594.tif 000019
【図１８】
2014106594.tif 000020
【図１９】
2014106594.tif 000021
【図２０】
2014106594.tif 000022