モータの回転位置に応じて生成するPWM信号の状態を遷移させる演算コアと、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号から選択した比較対象検出信号と前記3相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記PWM信号の状態を次状態に遷移させるモータの駆動制御プログラム。前記PWM信号の状態が遷移した後の所定の期間は前記コンパレータの出力結果によらず前記コンパレータ積分値をカウントアップ又はカウントダウンする請求項1に記載のモータの駆動制御プログラム。前記所定の期間は、前記PWM信号の状態が維持される一期間の所定の割合の期間として予め設定される請求項2に記載のモータの駆動制御プログラム。前記モータの回転位置の遷移が検出されたことに応じて選択する前記比較対象検出信号を切り換える請求項1乃至3のいずれか1項に記載のモータの駆動制御プログラム。前記ドライバ回路は、電源配線と接地配線との間にハイサイドトランジスタとローサイドトランジスタとが直列に接続される3組の駆動段回路を有し、前記PWM信号により選択された2組の前記駆動段回路の前記ハイサイドトランジスタと前記ローサイドトランジスタとが排他的に導通状態に制御され、前記比較対象検出信号は、前記3組にお駆動段回路のうち非選択の駆動段回路の出力ノードに生成される駆動信号である請求項1乃至4のいずれか1項に記載のモータの駆動制御プログラム。モータの回転位置に応じて生成するPWM信号の状態を遷移させるPWM信号生成回路と、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバが前記PWM信号に基づき生成した3相の駆動信号から選択した1相の駆動信号と前記3相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有するモータ駆動装置を用いたモータの駆動制御方法であって、前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記PWM信号の状態を次状態に遷移させるモータの駆動制御方法。モータの回転位置に応じて生成するPWM信号の状態を遷移させるPWM信号生成回路と、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバが前記PWM信号に基づき生成した3相の駆動信号から選択した1相の駆動信号と前記3相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有し、前記PWM信号生成回路は、前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記PWM信号の状態を次状態に遷移させるモータの駆動制御装置。しかしながら、一般的に、センサレスブラシレス直流モータにおいて駆動信号と基準電圧とを比較する場合、非通電相の駆動信号を入力段分圧抵抗等で信号振幅を減衰させた後にコンパレータ等で非通電相の駆動信号の大きさを判定する。このとき、入力段分圧抵抗は分圧比誤差を持つ。また、非通電相の駆動信号の大きさを判定するコンパレータは、入力オフセット電圧や入力ノイズ電圧等誤差要因を持つ。さらに、モータが低い回転速度で回転する起動時等では大きな誘起電圧を望めないため、電機子巻線の電圧と基準電圧との比較電位差が微小になる。このようなことから、特許文献1に記載の技術では、モータの低回転領域において誘起電圧とノイズ電圧との間に十分なSN比を確保できなくなり比較結果が不安定となる。結果として、特許文献1に記載の技術では、誘起電圧が基準電圧と交差する時に位置検出信号が不確定に複数回発生し、低回転速度領域における位置検出の間隔を正確に計時することが困難である。また、特許文献2の図3、図4では、コンパレータへの入力ノイズにより生じる誤差の問題が明らかであるが、特許文献2では、このノイズをマスクすることで、ゼロクロス点の計算結果にこの誤差の影響が反映されないようにしている。しかしながら、特許文献2では、図3、図4、図8及びそれに関連する記載からも明らかなように、駆動信号のステートを遷移させる周期が予め決められていなければゼロクロス点の算出ができない問題がある。つまり、特許文献2は、モータの回転速度の変化に対応できない問題がある。例えば、PWM信号のデューティ比を可変することでモータの回転速度を制御する場合などモータの回転速度が変化するような用途では、特許文献2の技術は利用できない。また、モータは、回転速度がゼロの状態から回転を開始しなければならないが、回転速度が最大回転数に達する前の段階では特許文献2の技術は利用できない。このようなことから、特許文献2では、特にモータが最大回転速度以外の回転速度で回転している場合におけるモータの制御性が悪化する問題がある。また、特許文献1では、ゼロクロス検出点が検出されたタイミングに応じてPWM信号の状態を次状態へと遷移させるタイミングを切り換える。そのため、特許文献1では、ゼロクロス検出点がずれた場合、モータの制御性が悪化する問題がある。また、上記問題を回避する為にコンパレータにヒステリシス持たせる事が一般的であるが、コンパレータにヒステリシスによる不感帯を持たせることにより比較結果を安定化させた場合、端子Rの電圧が基準電圧Vdc/2と交わるゼロクロス検出点が実際のゼロクロス検出点とずれモータの制御性が悪化する問題がある。誘起電圧がヒステリシス範囲以内である場合、ゼロクロス検出する事が出来ないため、低回転速度に限界が発生する。つまり、特許文献1に記載の技術では、センサレスブラシレス直流モータを低回転速度で制御する場合に制御性が悪化する問題を解決できない。本発明にかかるモータの駆動制御プログラムの一態様は、モータの回転位置に応じて生成するPWM信号の状態を遷移させる演算コアと、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号から選択した比較対象検出信号と前記3相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記PWM信号の状態を次状態に遷移させる。本発明にかかるモータの駆動制御方法の一態様は、モータの回転位置に応じて生成するPWM信号の状態を遷移させるPWM信号生成回路と、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバが前記PWM信号に基づき生成した3相の駆動信号から選択した1相の駆動信号と前記3相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有するモータ駆動装置を用いたモータの駆動制御方法であって、前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記PWM信号の状態を次状態に遷移させる。本発明にかかるモータの駆動制御装置の一態様は、モータの回転位置に応じて生成するPWM信号の状態を遷移させるPWM信号生成回路と、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバが前記PWM信号に基づき生成した3相の駆動信号から選択した1相の駆動信号と前記3相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有し、前記PWM信号生成回路は、前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記PWM信号の状態を次状態に遷移させる。本発明にかかるモータの駆動制御プログラム、駆動制御方法及び駆動制御装置では、比較対象検出信号とセンタータップ電圧とが入力されるコンパレータの出力結果を積分したコンパレータ積分値に基づきモータの回転位置を検出する。これにより、コンパレータが入力オフセットを有する場合、或いは、ノイズに対する対策例えば、ヒステリシス特性を有するコンパレータの利用を行ってない場合であっても、これらのコンパレータの特性がモータの回転検出タイミングに与える影響を抑制することができる。本発明にかかるモータの駆動制御プログラム、駆動制御方法及び駆動制御装置によれば、モータを低回転速度でモータの制御した場合の制御性を向上させることができる。実施の形態1以下、図面を参照して本発明の実施の形態について説明する。まず、図1に実施の形態1にかかるモータ駆動制御装置1のブロック図を示す。図1に示すように、モータ駆動制御装置1はマイクロコンピュータである。つまり、実施の形態1にかかるモータ駆動制御装置1は、マイクロコンピュータ上で実行されるモータ駆動制御プログラムによりモータの駆動動作を実現する。なお、図1に示すブロック図では、プリドライバ回路2、ドライバ回路3、及び、モータ4を示した。プリドライバ回路2は、モータ駆動制御装置1が生成するPWM信号のレベル変換を行う。ドライバ回路3は、プリドライバ回路2を介して入力されるPWM信号に応じて3相例えば、U相、V相、W相の駆動信号を生成し、当該駆動信号によりモータ4を駆動する。モータ4は、制御対象であって、3相の駆動信号の中点電圧センタータップ電圧CTを出力する。なお、このセンタータップ電圧は、モータにセンタータップ電圧の取り出し端子から取り出しても良く、また、3相の駆動信号が入力される抵抗網を用いて人工的に合成されたアーティフィシャルセンタータップ電圧Artificialcentertapvoltageであっても良い。以下の説明で用いられるセンタータップ電圧は、生成方法に関わらず3相の駆動信号の中点電圧を示すものとする。図1に示すように、モータ駆動制御装置1は、ハードウェアとして、演算コア10、プログラムメモリ11、RAMRandomAccessMemory12、GPIOGeneralPurposeInputOutput13、セレクタ14、コンパレータ15、アナログデジタル変換器16、タイマ17を有する。モータ駆動制御装置1では、これらのブロックがバスを介して互いに接続される。プログラムメモリ11には、モータ駆動制御プログラムが格納される。このプログラムメモリ11は、ROMReadOnlyMemory、フラッシュメモリ等により構成される。演算コア10は、プログラムメモリ11からモータ駆動制御プログラムを読み出して実行する。そして、演算コア10は、モータ駆動制御プログラムに従って、PWM信号を生成する。また、演算コア10は、コンパレータ15の出力に基づきモータの回転を検出して、モータの検出結果に応じてPWM信号の状態を遷移させる。演算コア10の動作についての詳細は後述する。RAM12は、演算コア10がモータ駆動制御プログラムの実行する際に用いるデータを格納する記憶装置である。GPIO13は、汎用入出力装置である。モータ駆動制御装置1は、GPIOを介して図示しない他の回路から速度制御信号、PWMデューティ制御信号を受信する。温度制御信号は、モータ駆動制御装置1が組み込まれる装置の温度に応じて生成される。PWMデューティ制御信号は、例えば、モータがファンの回転を制御するものである場合、当該ファンの回転速度を示す回転速度指示値をモータ駆動制御装置1に指示する。温度制御信号及びPWMデューティ制御信号により示される値は、GPIO13を介して演算コア10に与えられる。また、GPIO13は、図示しない他の回路にモータ4の回転速度と比例した周波数の通知信号以下、回転速度通知信号と称すを出力する。回転速度通知信号は、例えば、演算コア10が生成し、GPIO13を介して出力されるものである。さらに、モータ駆動制御装置1では、演算コア10において生成されたPWM信号は、GPIO13を介してプリドライバ回路2に出力される。セレクタ14は、演算コア10からの指示に基づき、3相信号から選択した非駆動相を比較対象検出信号SPとして出力する。より具体的には、モータ4としてセンサレスブラシレス直流モータを利用する場合、セレクタ14は、非通電相を比較対象検出信号SPとして選択する。コンパレータ15は、比較対象検出信号SPと、センタータップ電圧とを比較して、出力信号をハイレベルとローレベルとのいずれかの論理レベルとする。本実施の形態では、コンパレータ15は、比較対象検出信号SPよりもセンタータップ電圧CTの方が高い場合は出力信号をハイレベルとし、比較対象検出信号SPよりもセンタータップ電圧CTの方が低い場合は出力信号をローレベルとする。図1に示す例では、ドライバ回路3のソース側に電流検出抵抗Ri及びローパスフィルタが設けられる。電流検出抵抗Riは、ドライバ回路3を介して流れるモータ4の駆動電流を電圧に変換する。アナログデジタル変換器16は、アナログ値をデジタル値に変換する回路である。実施の形態1にかかるモータ駆動制御装置1では、アナログデジタル変換器16によって、電流検出抵抗Riにより生成された電圧値をデジタル値に変換し、駆動電流の大きさに応じたデジタル値を得る。なお、ローパスフィルタは、電流検出抵抗R1により生成された電圧値の高周波ノイズを除去するものであるが、図面を簡略化するために図示を省略した。タイマ17は、モータ駆動制御装置1として動作するマイクロコンピュータの動作クロックをカウントして、当該カウント値に応じて割り込み要求を出力する。割り込み要求は、演算コア10に与えられる。演算コア10は、入力された割り込み要求の種類に応じて、予め規定された動作を行う。実施の形態1にかかるモータ駆動制御装置1では、タイマ17には、第1の設定値と第2の設定値が設定される。そして、タイマ17は、カウント値が第1の設定値に達したことに応じて第1の割り込み信号を出力し、カウント値が第2の設定値に達したことに応じて第2の割り込み信号を出力する。より具体的には、モータ駆動制御装置1では、第1の設定値として、PWM信号のオンタイムPWM信号がハイレベルとなる期間よりも小さな値が設定され、第2の設定値として、PWM信号の1周期の期間に相当する値が設定される。なお、第1の設定値は、PWM信号をオンステートからオフステートに切り換えるタイミングを指定するものであり、PWM信号のオンタイムより若干小さな値に設定されるものとする。また、以下の説明では、第1の割り込み要求をBEMFバックEMFタイマ割り込みと称し、第2の割り込み要求を周期タイマ割り込みと称す。実施の形態1にかかるモータ駆動制御装置1では、演算コア10がモータ駆動制御プログラムを実行することでモータの駆動を制御するPWM信号のデューディ制御及び状態制御を行う。そこで、演算コア10がモータ駆動制御プログラムを実行することにより実現される機能を演算コア10の機能ブロックとした場合のモータ駆動制御装置1のブロック図を図2に示す。なお、図1のブロック図に示したブロックと同じ構成要素については、図1と同じ符号を付して説明を省略する。図2に示すように、モータ駆動制御プログラムを実行することで、演算コア10には、PWMデモジュレータ21、PWMモジュレータ22、定電流駆動制御部23、ロータ位置検出部24、回転制御部25、回転速度制御部26、PWMデューティ制御部27が機能ブロックとして実現される。なお、図2に示したモータ駆動制御装置1では、設定値及び変数の初期化処理等の一般的な処理を行うブロックについては記載を省略した。また、モータ駆動制御装置1は、PWMパルスのカウント処理を行い、PWMパルスのカウント値に基づき様々な処理を行うが、PWMパルスのカウント値をカウントするブロックについては、図2では記載を省略した。このように記載を省略したブロックの機能は、マイクロコンピュータの一般的な演算処理にて実現されるものとする。PWMデモジュレータ21は、PWM信号のデモジュレーション処理を行う。より具体的には、PWMデモジュレータ21は、BEMFタイマ割り込みが入力されたことに応じてコンパレータ15の出力信号CMP_OUT及びモータを駆動する駆動電流をサンプリングする。なお、駆動電流の値は、PWMデモジュレータ21が定電流駆動制御部23にサンプリング指示を与えることに基づいて定電流駆動制御部23においてサンプリングされる。また、PWMデモジュレータ21は、周期タイマ割り込みが入力されたことに応じて、タイマ17の第1の設定値の値を更新する。そして、PWMデモジュレータ21は、出モジュレーション処理が終了したことに応じてPWMモジュレータ22に処理の開始を指示する。PWMモジュレータ22は、PWMデモジュレータ21からの処理開始指示に基づきPWM信号の論理レベルを切り換える。このとき、PWMモジュレータ22は、回転制御部25の指示値に基づき、複数のPWM信号をハイレベルとするか、ローレベルとするかを決定する。PWMモジュレータ22が出力するPWM信号は、GPIO13を介してプリドライバ回路2に出力される。定電流駆動制御部23は、定電流駆動制御処理を行う。定電流駆動制御処理では、モータ4を定電流駆動するための帰還制御値を生成する。ロータ位置検出部24は、コンパレータ積分値を有する。そして、ロータ位置検出部24は、コンパレータ積分値算出処理、フライバックフィルタ処理、フライバック適応フィルタ更新処理、ロータ位置検出処理、ステートテーブル更新処理を行う。コンパレータ積分値算出処理では、PWMデモジュレータ21でサンプリングされたコンパレータ15の出力信号CMP_OUTに基づきコンパレータ15の出力値の積算を行う。フライバックフィルタ処理では、非通電相の駆動信号に発生するフライバックパルスをフィルタする。このフライバックフィルタを適用している期間中は、コンパレータ15の出力信号CMP_OUTによらず、コンパレータ積分値を単純増加又は単純減少させる。フライバック適応フィルタ更新処理では、フライバックフィルタの条件を更新する。ロータ位置検出処理では、ロータの位置検出処理を行い、PWM信号の状態の遷移タイミングを指示する。ステートテーブル更新処理では、PWM信号の状態を決定するオフステートテーブルとオンステートテーブルの更新処理を行う。回転制御部25は、ステート制御処理を行う。より詳細には、ステート制御処理では、回転速度検出処理、スタッキング検出処理、ステート更新処理が行われる。回転速度検出処理では、モータ4の回転速度の検出処理が行われる。スタッキング検出処理では、モータ4のロータのスタックを検出する。ステート更新処理では、PWM信号の状態の次状態を決定と、PWM信号を次状態に遷移させるか否かを決定する。回転速度制御部26は、定回転制御処理を行う。定回転制御処理では、モータ4の現在の回転速度と外部から与えられた回転速度指示値との誤差を算出し、モータ4を回転速度指示値に沿った回転速度に制御するための帰還制御値を生成する。なお、回転速度指示値としては、PWMデューティ制御信号に起因するものの他に、温度制御に由来する速度制御信号に基づくものも含むものとする。PWMデューティ制御部は、レギュレーションループ調停処理と、PWMプリモジュレーション処理とを行う。レギュレーションループ調停処理では、PWM信号の次周期のデューティ比を決定する帰還制御値として、定電流駆動制御部23が生成した帰還制御値と、回転速度制御部26が生成した帰還制御値と、のいずれを用いるかの調停処理を行う。PWMプリモジュレーション処理は、レギュレーションループ調停処理にて決定された帰還制御値に基づきPWM信号の次周期のオンタイムの値を決定する。また、PWMプリモジュレーション処理では、PWMデモジュレータ21に決定したオンタイムの値を与える。続いて、モータ駆動制御プログラムにより実現される機能を用いたモータの駆動制御についてさらに詳細に説明する。そこで、図3~図15にモータ駆動制御装置1の動作手順を示すフローチャートを示す。そして、この図3~図15を参照して、モータ駆動制御装置1の動作についてさらに詳細に説明する。図3では、モータ駆動制御装置1の動作の全体を示すフローチャートを示した。図3に示すように、モータ駆動制御プログラムは、メインルーチンがスタートすると、まず、変数初期化処理を行うステップS1。続いて、モータ駆動制御プログラムは、アナログデジタル変換器16を利用して、マイクロコンピュータ1に供給されている電源電圧の電圧値をサンプリングするステップS2。続いて、モータ駆動制御プログラムは、サンプリングした電源電圧の電圧値が最低起動電圧よりも大きいか否かを判断するステップS3。ステップS3において、電源電圧が最低起動電圧以下であると判断された場合、ステップS1の変数初期化処理に戻る。一方、電源電圧が最低起動電圧よりも大きいと判断された場合、演算コア10へのタイマ割り込みを許可するステップS4。なお、起動を許可するか否かを判断する電源電圧としては、ドライバ回路3に与えられる電源電圧とマイクロコンピュータ1に与えられる電源電圧とのうち高い電圧値を有する電源電圧を用いる。本実施の形態では、ドライバ回路3の電源からマイクロコンピュータ1の電源を作るため、ドライバ回路3の電源電圧を監視することが好ましい。この場合、アナログデジタル変換器16によりドライバ回路3の電源電圧を測定する。そして、モータ駆動制御プログラムは、タイマ割り込みの発生を待ち、タイマ割り込みが発生したことに起因してモータ駆動動作処理を行うステップS5、S6。また、モータ駆動制御プログラムは、モータ駆動動作処理が完了した時点で、ロータのスタック状態を示すスタックロータ検出フラグSTC_DETがTRUEであるか否かを判断するステップS7。ステップS7においてスタックロータ検出フラグSTC_DETがFALSEであると判断された場合、つまり、モータが回転していると判断された場合、再びタイマ割り込みの発生を待つ。一方、ステップS7においてスタックロータ検出フラグSTC_DETがTRUEで有ると判断された場合、つまり、モータが回転していないと判断された場合、ステップS1の変数初期化処理に戻る。続いて、ステップS1の変数初期化処理について詳細に説明する。変数初期化処理の詳細な動作手順を示すフローチャートを図4に示す。図4に示すように、変数初期化処理では、まず、タイマの初期化処理を行うステップS10。より具体的には、ステップS10では、タイマ17のレジスタにPWM信号のオンタイム期間に基づき第1の設定値と、PWM信号の1周期の長さを指定する第2の設定値を格納する。次いで、移動平均ステートPWMパルス数ST_PWM_PLS_AVEと、PWMパルス数PWM_PLS[0]~PWM_LPLS[5]と、を最大パルスカウント数とする。移動平均ステートPWMパルス数ST_PWM_PLS_AVEは、モータを一回転させるために、6つの状態を利用する場合は、この6状態に含まれる各状態の平均PWMパルス数を示すものである。PWMパルス数PWM_PLS[0]~PWM_LPLS[5]は、状態0~状態5の各状態の期間の長さを規定するPWM信号のパルス数である。最大パルスカウント数は、例えば、モータ4を最低回転速度で動作させた場合における一状態の間のPWM信号のパルス数であって、予め設定される値である。次いで、起動時のフライバックパルス継続PWMパルス数FB_MASKの値を設定するステップS12。ステップS12では、フライバックパルス継続PWMパルス数FB_MASKにモータ4の最大回転速度に相当する6ステートPWMパルス数の6分の1の値を設定する。モータ4が無負荷状態で回転を開始した場合、回転速度が高い状態で回転を開始する場合があるが、起動時のフライバックパルス継続PWMパルス数FB_MASKをこのような値に設定することで、無負荷状態でモータ4が回転を開始したとしても、ロータの回転位置と駆動信号の状態とがずれて意図した回転方向と逆の回転方向でモータ4が回転することを防止することができる。次いで、定電流制御指示値CNST_CRNT_SETを最大電流値MAX_CRNTの3分の1の値に設定するステップS13。この最大電流値MAX_CRNTは、ドライバ回路3を構成するトランジスタに許容される所定時間当りの最大電流に相当する値である。通常、3相の駆動信号を生成する場合、ドライバ回路3は3組の駆動段回路を有する。そのため、モータを一回転させるために、3組の駆動段回路が導通状態となる期間はモータを一回転させる時間の3分の1の時間である。しかし、回転開始時は、モータが停止状態にあり、駆動段回路が導通状態となる時間がモータの回転時よりも長くなる。そのため、回転開始時に、定電流制御指示値CNST_CRNT_SETを最大電流値MAX_CRNTした場合、駆動段回路のそれぞれに流れる電流が最大電流を超えるおそれがある。そこで、定電流制御指示値CNST_CRNT_SETを最大電流値MAX_CRNTの3分の1の値に設定する。これにより、PWM信号の一状態の長さが長くなったとしても、駆動段回路を構成するトランジスタには、最大電流以上の電流が流れることを防止することができる。次いで、スタックロータ検出フラグをFALSEに設定するステップS14。モータの回転開始前は、モータは停止状態であるため、その状態を確定させるためである。次いで、回転速度誤差積分値ROT_ERR_INTGと、電流誤差積分値CRNT_ERR_INTGをカウント初期値例えば、ゼロに初期化するステップS15。回転速度誤差積分値ROT_ERR_INTG及び電流誤差積分値CRNT_ERR_INTGは、初期化を行わない場合、値が不定であり、初期化前の値を用いた場合、モータ駆動制御装置1が正常に動作しない可能性がある。そこで、この初期化処理により値をゼロとすることで、モータ駆動制御装置1の動作開始時の回転速度誤差積分値ROT_ERR_INTG及び電流誤差積分値CRNT_ERR_INTGの値を確定させる。続いて、図3のステップS6で示したモータ駆動動作処理の詳細について説明する。そこで、モータ駆動動作処理の動作手順を示すフローチャートを図5に示す。図5に示すように、モータ駆動動作処理は、PWMデモジュレーション処理ステップS20及びPWMモジュレーション処理ステップS30、及び、PWM信号設定処理ステップS40により構成される。PWMデモジュレーション処理は、図2のPWMデモジュレータ21にて実行される処理である。また、PWMモジュレーション処理は、図2のPWMモジュレータ22で実行される処理である。PWMデモジュレーション処理では、まず、入力された割り込みがBEMFタイマ割り込みであるであるか否かを判断するステップS21。そして、割り込みがBEMFタイマ割り込みであると判断された場合、BEMFタイマ割り込みをクリアするステップS22。次いで、コンパレータ15の出力信号CMP_OUTの出力値をサンプリングする。次いで、アナログデジタル変換器16からモータの駆動電流の電流値をサンプリングする。なお、駆動電流の電流値は、定電流駆動制御部23にて利用される。次いで、PWMデモジュレーション処理の終了を受けて、PWMモジュレーション処理が開始される。割り込みがBEMFタイマ割り込みに応じて開始されるPWMモジュレーション処理では、まず、PWM信号のオンタイムPWM_ONがPWM信号の周期PWM_TRMよりも小さいか否かを判断するステップS31。そして、PWM信号のオンタイムPWM_ONがPWM信号の周期PWM_TRMよりも小さいと判断された場合、オフステートのPWM信号をGPIO13に出力するステップS32。なお、モータ駆動制御プログラムでは、モータ4が3相駆動方式である場合6つのPWM信号を生成するが、6つのPWM信号のいずれのPWM信号をオフステートとするか、又は、オンステートとするかをステートテーブルの記述に従って決定する。ステートテーブルには、PWM信号の状態毎にオンステートとオフステートとを切り換えるPWM信号の指定、及びオフステートとしてハイサイドオフの状態とするかローサイドオフの状態とするかの指定が規定される。その後、PWM信号のオフステートサイドを反転するステップS33。このステップS33では、PWM信号の信号パターンを指示するステートテーブルのオフステートのパターンをハイサイドオフの状態とするかローサイドオフの状態とするかを切り換える処理である。例えば、PWM信号の現周期でステートテーブルのオフステートがハイサイドオフを指示している場合、PWM信号の次周期ではステートテーブルのオフステートがローサイドオフを指示するように更新する。このステップS33は、実施の形態1にかかるモータ駆動制御装置1が、PWM信号の周期毎にPWM信号のオフステート期間としてハイサイドオフステートとローサイドオフステートとを交互に切り換えるオルタネートPWM方式の動作のために行われる処理である。一方、ステップS31において、PWM信号のオンタイムPWM_ONがPWM信号の周期PWM_TRM以上と判断された場合、PWM信号をオンステートで維持するステップS34。つまり、モータ駆動制御装置1は、PWM信号のオンタイムPWM_ONがPWM信号の一周期よりも小さい場合、BEMFタイマ割り込みが発生をトリガとして、コンパレータ15の出力信号CMP_OUTのサンプリングと、PWM信号のオンステートからオフステートへの切り換えを行う。また、モータ駆動制御装置1は、オンタイムPWM_ONがPWM信号の一周期以上である場合、BEMFタイマ割り込みが発生をトリガとして、コンパレータ15の出力信号CMP_OUTのサンプリングを行うが、PWM信号のオンステートからオフステートへの切り換えは行わない。そして、ステップS33又はステップS34の処理が完了すると、モータ駆動制御プログラムは、モータ駆動制御処理を終了させる。一方、ステップS21において割り込みがBEMFタイマ割り込みではない判断された場合、つまり、割り込みが周期タイマ割り込みである場合、周期タイマ割り込みをクリアするステップS25。次いで、PWM信号の現周期において算出されたPWM信号のオンタイムPWM_ONの値で次周期のPWM信号のオンタイムPWM_ONを更新する。次いで、PWMデモジュレーション処理の処理結果を受けて、PWMモジュレーション処理が開始される。割り込みがBEMFタイマ割り込みに応じて開始されるPWMモジュレーション処理では、まず、PWM信号のオンタイムPWM_ONがゼロよりも大きいか否かを判断するステップS35。つまり、ステップS35では、生成するPWM信号にオン期間があるか否かを判断する。そして、ステップS35において、PWM信号のオンタイムPWM_ONがゼロよりも大きいと判断された場合、オンステートのPWM信号をGPIO13に出力するステップS36。次いで、BEMFタイマ割り込みを許可するステップS37。一方、ステップS35において、PWM信号のオンタイムPWM_ONがゼロ以下であると判断された場合、オフステートを維持したPWM信号をGPIO13に出力するステップS38。その後、ステップS33と同様にPWM信号のオフステートの反転を行うステップS39。このオフステートの反転処理は、実施の形態1にかかるモータ駆動制御装置1が、PWM信号の周期毎にPWM信号のオフステート期間としてハイサイドオフステートとローサイドオフステートとを交互に切り換えるオルタネートPWM方式の動作のために行われる処理である。そして、ステップS37又はステップS39の処理が完了すると、モータ駆動制御プログラムは、PWM信号設定処理を行うステップS40。PWM信号設定処理が完了した場合は、モータ駆動制御処理を終了する。続いて、ステップS40のPWM信号設定処理について説明する。PWM信号設定処理では、次周期のPWM信号のオンタイムPWM_ONの算出処理及びPWM信号のステートの更新処理を行う。これらの処理を行うための、PWM信号設定処理の詳細なフローチャートを図6に示す。図6に示すように、PWM信号設定処理では、まず、ステートPWMパルス数ST_PWM_PLSのカウントアップ処理を行うステップS41。このステートPWMパルス数ST_PWM_PLSは、PWM信号が現状態に遷移した後の経過時間を示す値である。実施の形態1にかかるモータ駆動制御プログラムでは、各状態の経過時間をPWM信号のパルス数をカウントすることで算出する。なお、ステートPWMパルス数ST_PWM_PLSのカウントアップ処理は、図2のロータ位置検出部24にて行われる処理である。次いで、モータ駆動制御プログラムは、回転速度指示値ROT_SETの値を更新するステップS42。回転速度指示値ROT_SETは、例えば、モータ駆動制御装置1の外部から与えられるPWMデューティ制御信号によって与えられる。なお、回転速度指示値ROT_SETの更新処理は、図2の回転速度制御部26で行われる処理である。次いで、モータ駆動制御プログラムは、定電流制御処理を行うステップS43。この定電流制御処理は、モータ4を定電流駆動する場合の帰還制御値を生成する処理である。定電流制御処理の詳細については後述する。なお、定電流制御処理は、図2の定電流駆動制御部23で行われる処理である。次いで、モータ駆動制御プログラムは、ステートPWMパルス数PWM_PLSとフライバックパルス継続PWMパルス数FB_MASKとを比較するステップS44。そして、ステートPWMパルス数PWM_PLSがフライバックパルス継続PWMパルス数FB_MASKよりも小さい場合、フライバックパルスフィルタ処理を行うステップS45。一方、ステートPWMパルス数PWM_PLSがフライバックパルス継続PWMパルス数FB_MASK以上であった場合、ロータ位置検出処理ステップS49を行う。なお、ロータ位置検出処理の中でステート制御処理も行われる。ステップS44、S45の処理は、図2のロータ位置検出部24にて行われ、ステップS49の処理は、ロータ位置検出部24、回転制御部25及び回転速度制御部26にて行われる。フライバックフィルタ処理と、ロータ位置検出処理の詳細については、後述する。3相駆動のモータでは、非通電相の駆動信号に、PWM信号の状態遷移の直後にフライバックパルスが生じる。このフラバックパルスが生じている期間は、センタータップ電圧CTと比較対象検出信号SP非通電相の駆動信号の電圧関係がロータの位置がPWM信号の状態を次状態へ切り替えるタイミングに達した場合の比較対象検出信号SPとセンタータップ電圧CTとの関係と同じになる。そこで、実施の形態1にかかるモータ駆動制御プログラムでは、PWM信号の状態が遷移した後の所定の期間はコンパレータの出力信号CMP_OUTの値によらずコンパレータ積分値CMP_INTGをカウントアップ又はカウントダウンする。実施の形態1では、この所定の期間をPWM信号の状態が維持される一期間の所定の割合の期間として予め設定する。図6に示す例では、この所定の期間を規定する変数として、フライバックパルス継続PWMパルス数FB_MASKとの変数を設けた。そして、このフライバックパルス継続PWMパルス数FB_MASKとして、モータ4の起動時は最大回転速度に相当する6ステートPWMパルス数の6分の1の値を設定し、モータ4が回転を開始した後は移動平均ステートPWMパルス数ST_PWM_PLS_AVEの4分の1を設定する。次いで、ステップS45又はステップS49の処理が完了すると、モータ駆動制御プログラムは、レギュレーションループ調停処理が行われるステップS46。レギュレーションループ調停処理では、定電流制御処理ステップS43で算出された制御帰還値と、ステップS49内のステート制御処理でモータ4の回転速度に基づき生成される制御帰還値と、のいずれの値に基づき次周期のPWM信号のデューティ比を設定するかの調停処理が行われる。なお、レギュレーションループ調停処理は、図2のPWMデューティ制御部にて行われる。また、レギュレーションループ調停処理の詳細については、後述する。次いで、モータ駆動制御プログラムは、PWMプリモジュレーション処理を行うステップS47。PWMプリモジュレーション処理では、レギュレーションループ調停処理において決定された制御帰還値に基づき次周期のPWM信号のデューティ比が決定され、当該デューティ比に基づきPWM信号のオンタイムPWM_ONが決定される。このPWMプリモジュレーション処理は、図2のPWMデューティ制御部にて行われる。また、PWMプリモジュレーション処理の詳細については、後述する。次いで、モータ駆動制御プログラムは、次周期のPWM信号のオンステートとオフステートとを設定するステップS48。このステップS48の処理は、6ステートテーブルのうちPWM信号の次周期のステートカウント値ST_CNTに応じたステートテーブルのPWM信号パターンを読み込む処理である。PWM信号のパターンは、例えば、更新後の状態において導通相とする駆動信号を生成するドライバ回路3の駆動段回路にPWM信号を与え、非導通相とする相の駆動信号を生成するドライバ回路3の駆動段回路にはPWM信号の供給を停止するPWM信号のパターンを指示するものである。また、ステップS48において設定されるオフステートは、ステップS33、S39で選択されたサイドのオフステートが設定される。ここで、ステップS43の定電流制御処理についてさらに詳細に説明する。そこで、定電流制御処理の詳細な動作手順を示すフローチャートを図7に示す。図7に示すように、定電流制御処理では、まず、定電流制御指示値CNST_CRNT_SETと、図5のステップS24でサンプリングしたモータの駆動電流MIと、の電流誤差CRNT_ERRを算出するステップS50。次いで、ステップS50で算出した電流誤差CRNT_ERRと電流誤差積分値CRNT_ERR_INTGとを加算して、電流誤差積分値CRNT_ERR_INTGの値を更新するステップS51。次いで、ステップS51で算出した電流誤差積分値CRNT_ERR_INTGのクランプ処理を行うステップS52。実施の形態1にかかるモータ駆動制御プログラムでは、予めCRNT_ERR_INTGの最大値と最小値が規定されている。そして、ステップS52のクランプ処理では、回転速度誤差積分値ROT_ERR_INTGの値が予め規定された最大値と最小値との間の値であって、所定のビット幅で表せる値に変換する。電流誤差積分値CRNT_ERR_INTGは、定電流駆動制御部23で生成される制御帰還値に相当する値である。続いて、ステップS45のフライバックフィルタ処理の詳細について説明する。そこで、フライバックフィルタ処理の詳細な動作手順を示すフローチャートを図8に示す。図8に示すように、フライバックフィルタ処理では、まず、モータ駆動制御プログラムは、回転方向指示フラグFWDがTRUEであるか否かを判断するステップS60。回転方向指示フラグFWDは、モータ4を正回転方向で制御するか、逆回転方向で制御するかを指示する値であって、外部入力信号により設定される値である。回転方向指示フラグFWADがTRUEである場合、モータ駆動制御装置1はモータ4を正回転方向で制御し、回転方向指示フラグFWADがFALSEである場合、モータ駆動制御装置1はモータ4を逆回転方向で制御する。ステップS60において、回転方向指示フラグFWDがモータ4を正回転方向で制御することを指示していると判断された場合、モータ駆動制御プログラムは、ステートカウント値ST_CNTを参照し、値が奇数であるか偶数であるかを判定するステップS61。このステートカウント値ST_CNTは、PWM信号の状態がいずれの制御状態であるかを示す値である。実施の形態1にかかるモータ駆動制御装置1では、ステートカウント値ST_CNTが奇数である場合、比較対象検出信号となる非通電相の電圧がセンタータップ電圧CTに対して小さな状態から大きな状態に遷移する。また、実施の形態1にかかるモータ駆動制御装置1では、ステートカウント値ST_CNTが偶数である場合、比較対象検出信号となる非通電相の電圧がセンタータップ電圧CTに対して大きな状態から小さな状態に遷移する。つまり、フライバックパルスがないとすると、ステートカウント値ST_CNTが奇数である期間中にコンパレータ15の出力信号CMP_OUTは、0から1に遷移する。また、フライバックパルスがないとすると、ステートカウント値ST_CNTが偶数である期間中にコンパレータ15の出力信号CMP_OUTは、1から0に遷移する。そのため、モータ駆動制御プログラムは、ステップS61においてステートカウント値ST_CNTが奇数であると判断された場合は、コンパレータ積分値CMP_INTGから1を減算するステップS62。また、モータ駆動制御プログラムは、ステップS61においてステートカウント値ST_CNTが偶数であると判断された場合は、コンパレータ積分値CMP_INTGに1を加算するステップS63。そして、ステップS62又はステップS63の処理が終了するとフライバックフィルタ処理を終了する。一方、ステップS60において、回転方向指示フラグFWDがモータ4を逆回転方向で制御することを指示していると判断された場合も、モータ駆動制御プログラムは、ステートカウント値ST_CNTを参照し、値が奇数であるか偶数であるかを判定するステップS64。ここで、回転方向指示フラグFWDがモータ4を正回転方向で制御することを指示していると判断された場合、モータ4のロータに流れる駆動電流は正回転している場合の逆となる。そのため、ステートカウント値ST_CNTが奇数である場合のコンパレータ15の出力信号の遷移方向は、モータ4が正回転方向で回転している場合の逆になる。そのため、モータ駆動制御プログラムは、ステップS64においてステートカウント値ST_CNTが奇数であると判断された場合は、コンパレータ積分値CMP_INTGに1を加算するステップS65。また、モータ駆動制御プログラムは、ステップS64においてステートカウント値ST_CNTが偶数であると判断された場合は、コンパレータ積分値CMP_INTGから1を減算するステップS66。そして、ステップS65又はステップS66の処理が終了するとフライバックフィルタ処理を終了する。続いて、ステップS49のロータ位置検出処理の詳細について説明する。そこで、ロータ位置検出処理の詳細な動作手順を示すフローチャートを図9に示す。図9に示すように、モータ駆動制御プログラムは、まず、図5のステップS23でサンプリングされたコンパレータ15の出力信号CMP_OUTの値が1であるか否かを判断するステップS70。ステップS70において、コンパレータ15の出力信号CMP_OUTが1であった場合、コンパレータ積分値CMP_INTGをカウントアップする。一方、コンパレータ15の出力信号CMP_OUTが1であった場合、コンパレータ積分値CMP_INTGをカウントダウンする。つまり、モータ駆動制御プログラムは、コンパレータ15の出力信号CMP_OUTの値をサンプリングした時点で、比較対象検出信号非通電相の駆動信号の電圧値がセンタータップ電圧CTよりも大きいと判断された場合は、コンパレータ積分値を増加させ、比較対象検出信号の電圧値がセンタータップ電圧CTよりも小さいと判断された場合は、コンパレータ積分値を減少させる。次いで、モータ駆動制御プログラムは、ステートPWMパルス数ST_PWM_PLSが最大パルスカウント数MAXCNTよりも大きいか否かを判断するステップS73。このステップS73において、ステートPWMパルス数ST_PWM_PLSが最大パルスカウント数よりも大きい場合、ステート制御処理ステップS74を行った後に有効スタートアップフラグSTUPをFALSEとしステップS75、ゼロクロスカウント値ZC_CNTにゼロを設定するステップS76。そして、ステップS76の処理が完了したことに伴い、ロータ位置検出処理を終了する。モータ駆動制御プログラムの最大パルスカウント数は、モータ4が最低回転速度で回転している場合の1状態のステートPWMパルス数を規定するものである。つまり、ステップS73において、ステートPWMパルス数ST_PWM_PLSが最大パルスカウント数よりも大きい場合、モータ4は、最低回転速度以下の回転速度で回転しているか、停止しているかのいずれかである。そのため、この場合は、有効スタートアップフラグSTUPをFALSEとし、ゼロクロスが生じた回数をカウントするゼロクロスカウント値ZC_CNTをゼロにリセットする。一方、ステップS73において、ステートPWMパルス数ST_PWM_PLSが最大パルスカウント数以下である場合、モータ駆動制御プログラムは、コンパレータ積分値CMP_INTGがゼロであるか否かを判断するステップS77。ステップS77において、モータ駆動制御プログラムは、コンパレータ積分値CMP_INTGがゼロであると判断された場合、ステート制御処理を行うステップS78。そして、ゼロクロスカウント値ZC_CNTに1を加算するステップS79。次いで、モータ駆動制御プログラムは、ゼロクロスカウント値が5よりも大きいか否かを判断するステップS80。ステップS80においてゼロクロスカウント値ZC_CNTが5よりも大きいと判断された場合、ゼロクロスカウント値ZC_CNTを5よりも大きな値例えば、6に設定するステップS81。また、有効スタートアップフラグSTUPをTRUEとするステップS82。実施の形態1にかかるモータ駆動制御プログラムでは、PWM信号の各状態の開始直後の所定の期間においてフライバックフィルタ処理ステップS45が行われ、ステップS77の判断処理が最初に行われる時点では、コンパレータ積分値CMP_INTGは、正の値と負の値のいずれかの値となっている。そのため、コンパレータ積分値CMP_INTGがゼロとなると言うことは、比較対象検出信号SPとセンタータップ電圧CTとの電圧関係が逆転するゼロクロスが発生したことを意味する。そのため、上記説明のように、モータ駆動制御プログラムは、この場合は、ゼロクロスカウント値ZC_CNTを加算する。そして、ゼロクロスカウント値ZC_CNTが5以上の値となったことに応じて、モータ4が電気角で一回転以上したと判断して有効スタートアップフラグSTUPをTRUEとする。一方、ステップS77においてコンパレータ積分値CMP_INTGがゼロに達していないと判断された場合、モータ駆動制御プログラムは、有効スタートアップフラグSTUPがTRUEであるか否かを判断するステップS83。このステップS83において有効スタートアップフラグSTUPがFALSEであると判断された場合、モータ駆動制御プログラムは、ロータの位置検出ができないと判断してロータ位置検出処理を終了する。一方、ステップS83において有効スタートアップフラグSTUPがTRUEであると判断された場合、ステートPWMパルス数ST_PWM_PLSが移動平均ステートPWMパルス数ST_PWM_PLS_AVEよりも大きいか否かを判断するステップS84。ステップS84においてステートPWMパルス数ST_PWM_PLSが移動平均ステートPWMパルス数ST_PWM_PLS_AVE以下の値であると判断された場合、モータ駆動制御プログラムは、PWM信号の一状態が維持される最大許容期間を未だに経過していないと判断してロータ位置検出処理を終了する。一方、ステップS84においてステートPWMパルス数ST_PWM_PLSが移動平均ステートPWMパルス数ST_PWM_PLS_AVEより大きな値であると判断された場合、モータ駆動制御プログラムは、ステート制御処理ステップS85を行った後にロータ位置検出処理を終了する。ロータ位置検出処理において行われるステート制御処理ステップS74、S78、S85は、同じ処理ルーチンである。このステート制御処理では、PWM信号を次状態に遷移させるための処理である。つまり、実施の形態1にかかるモータ駆動制御プログラムは、モータ4の回転速度が最低回転速度以下である場合ステップS73のYESの枝、コンパレータ積分値CMP_INTGがゼロとなることに応じてロータの位置が検出された場合ステップS77のYESの枝、及び、モータ4が回転している状態でロータの位置検出が行われないもののPWM信号の現状態の継続期間が移動平均ステートPWMパルス数ST_PWM_PLS_AVEで示される長さに達してしまった場合ステップS84のYESの枝に、PWM信号の状態を次状態に遷移させる。なお、ステート制御処理では、PWM信号の周期毎に更新する必要はないが、所定の頻度では更新が必要な変数の算出処理が行われる。続いて、ステップS74、S78、S85のステート制御処理の詳細について説明する。そこで、ステート制御処理の詳細な動作手順を示すフローチャートを図10に示す。図10に示すように、ステート制御処理では、モータ駆動制御プログラムは、回転速度検出処理ステップS90を行う。この回転速度検出処理では、モータ駆動制御プログラムは、PWM信号が現状態を維持した期間の長さを示すPWMパルス数PWM_PLS[ST_CNT]に図6のステップS41で更新されたステートPWMパルス数ST_PWM_PLSを代入するステップS90a。そして、6つの状態のそれぞれで算出されたPWMパルス数PWM_PLS[0]~PWM_PLS[6]を加算して6ステート合計PWMパルス数TTL_ST_PWM_PLSを算出するステップS90b。次いで、6ステート合計PWMパルス数TTL_ST_PWM_PLSを状態の数である6で除算して移動平均ステートPWMパルス数ST_PWM_PLS_AVEを算出するステップS90c。ここで、6ステート合計PWMパルス数TTL_ST_PWM_PLSは、モータ4が電気角で一回転する間に生成されたPWM信号のパルスの合計値であって、モータ4が電気角で一回転する時間を示す。つまり、6ステート合計PWMパルス数TTL_ST_PWM_PLSによりモータ4の回転速度を知ることができる。なお、ステップS90の回転速度検出処理は、図2の回転制御部25で行われる。次いで、モータ駆動制御プログラムは、スタッキング検出処理を行うステップS91。スタッキング検出処理は、6ステート合計PWMパルス数TTL_ST_PWM_PLSがスタックロータ検出設定値STC_DET_SETよりも小さいか否かを判断するステップS91a。スタックロータ検出設定値STC_DET_SETは、モータ4の最大回転速度よりも十分に高い回転速度に相当する値であり、予め設定される値である。ここで、最大回転速度よりも十分に高い回転速度とは、モータの機械的な構造から決まる限界速度以上ではあるが電気的には可能な回転速度である。例えば、モータ4の機械的な構造から決まる限界速度が7000rpmであった場合、8000~10000rpmの回転速度に相当する値がスタックロータ検出設定値STC_DET_SETとして設定される。モータ4がスタック状態である場合、PWM信号を与えてもモータ4が機械的に回転していない状態であり、コンパレータ積分値CMP_INTGが極端に短い時間でゼロに達してしまう。そのため、モータ4がスタック状態である場合、ロータは機械的には回転していないが、ステータの回転磁界は、ロータの回転速度を超えて電気的に回転している状態となる。このため、PWM信号の一状態が継続する期間が短くなり、6ステート合計PWMパルス数TTL_ST_PWM_PLSがスタックロータ検出設定値STC_DET_SETよりも小さくなる。このようなことから、6ステート合計PWMパルス数TTL_ST_PWM_PLSがスタックロータ検出設定値STC_DET_SETよりも小さいことを検出することでモータ4のスタック状態を検出することができる。なお、6ステート合計PWMパルス数TTL_ST_PWM_PLSは、モータ4が回転している状態においては、無損失かつ無負荷の状態で駆動される、或いは、外部動力によってモータが駆動されない限り、スタックロータ検出設定値STC_DET_SETよりも小さい状態とはならない。そして、モータ駆動制御プログラムは、ステップS91aにおいて、モータ4がスタック状態であると判断された場合、スタックロータ検出フラグSTC_DETをTRUEとするステップS91b。また、モータ駆動制御プログラムは、ステップS91aにおいて、モータ4がスタック状態ではないと判断された場合、スタックロータ検出フラグSTC_DETをFALSEとするステップS91c。なお、ステップS91のスタッキング検出処理は、図2の回転制御部25で行われる。そして、スタッキング検出処理ステップS91が完了したことに応じて、モータ駆動制御プログラムは、定回転速度制御処理ステップS92、ステート更新処理ステップS93、フライバックパルス適応フィルタ更新処理ステップS94を行う。また、フライバックパルス適応フィルタ更新処理ステップS94の処理の後に、モータ駆動制御プログラムは、コンパレータ積分値CMP_INTG及びステートPWMパルス数ST_PWM_PLSのリセット処理を行うステップS95。また、PWM信号の状態が更新されたことに応じて次状態のステートカウント値ST_CNTに基づきセレクタ14が選択する検出信号相を切り換える。ここで、定回転速度制御処理ステップS92、ステート更新処理ステップS93、フライバックパルス適応フィルタ更新処理ステップS94についてより詳細に説明する。なお、定回転速度制御処理ステップS92は、回転速度制御部26で行われる処理であり、ステート更新処理ステップS93及びフライバックパルス適応フィルタ更新処理は、ロータ位置検出部24にて行われる処理である。まず、ステップS92の定回転速度制御処理の詳細な動作手順を示すフローチャートを図11に示す。図11示すように、定回転速度制御処理では、モータ駆動制御プログラムは、6ステート合計PWMパルス数TTL_ST_PWM_PLSから回転速度指示値ROT_SETを減じて回転速度誤差ROT_ERRを算出するステップS100。次いで、モータ駆動制御プログラムは、回転速度誤差ROT_ERRを用いてスタッキング防止加減速制限処理を行うステップS101。スタッキング防止加減速制限処理では、まず、移動平均ステートPWMパルス数ST_PWM_PLS_AVEと加速係数aとを乗算して最大許容加速度MAX_ALW_ACLを算出するステップS101a。次いで、移動平均ステートPWMパルス数ST_PWM_PLS_AVEと減速係数bとを乗算して最大許容減速度MAX_ALW_DCLを算出するステップS101b。次いで、モータ駆動制御プログラムは、回転速度誤差ROT_ERRと最大許容加速度MAX_ALW_ACLとの比較処理を行うステップS101c。そして、ステップS101cにおいて、回転速度誤差ROT_ERRが最大許容加速度MAX_ALW_ACLよりも大きい場合は、回転速度誤差ROT_ERRを最大許容加速度MAX_ALW_ACLで更新するステップS101d。一方、ステップS101cにおいて、回転速度誤差ROT_ERRが最大許容加速度MAX_ALW_ACL以下である場合は、回転速度誤差ROT_ERRの更新は行わない。次いで、モータ駆動制御プログラムは、回転速度誤差ROT_ERRと最大許容減速度MAX_ALW_DCLとの比較処理を行うステップS101e。そして、ステップS101eにおいて、回転速度誤差ROT_ERRが最大許容減速度MAX_ALW_DCLよりも小さい場合は、回転速度誤差ROT_ERRを最大許容減速度MAX_ALW_DCLで更新するステップS101f。一方、ステップS101eにおいて、回転速度誤差ROT_ERRが最大許容減速度MAX_ALW_DCL以上である場合は、回転速度誤差ROT_ERRの更新は行わない。次いで、モータ駆動制御プログラムは、回転速度誤差積分値ROT_ERR_INTGに回転速度誤差ROT_ERRを加算して、回転速度誤差積分値ROT_ERR_INTGを更新するステップS102。その後、モータ駆動制御プログラムは、更新後の回転速度誤差積分値ROT_ERR_INTGのクランプ処理を行うステップS103。このクランプ処理では、回転速度誤差積分値ROT_ERR_INTGの値が予め規定された最大値と最小値との間の値であって、所定のビット幅で表せる値に変換する。回転速度誤差積分値ROT_ERR_INTGは、回転速度制御部26で生成される制御帰還値に相当する値である。続いて、ステップS93のステート更新処理について詳細に説明する。そこで、ステート更新処理の詳細な動作手順を示すフローチャートを図12に示す。図12に示すように、ステート更新処理では、まず、回転方向指示フラグFWDを参照して、モータ4の回転方向を判断するステップS110。ステップS110において、回転方向指示フラグFWDがTRUEであった場合、ステートカウント値ST_CNTに1を加算するステップS111。その後、更新後のステートカウント値ST_CNTが5より大きいか否かを判断するステップS112。そして、ステップS112において、ステートカウント値ST_CNTが5よりも大きいと判断された場合は、ステートカウント値ST_CNTをゼロにリセットして、ステート更新処理を終了するステップS113。一方、ステップS110において、回転方向指示フラグFWDがFALSEであった場合、ステートカウント値ST_CNTから1を減算するステップS114。その後、更新後のステートカウント値ST_CNTが0より小さい否かを判断するステップS115。そして、ステップS115において、ステートカウント値ST_CNTが0よりも小さいと判断された場合は、ステートカウント値ST_CNTを5にリセットして、ステート更新処理を終了するステップS116。続いて、ステップS94のフライバックパルス適応フィルタ更新処理について詳細に説明する。そこで、フライバックパルス適応フィルタ更新処理の詳細な動作手順を示すフローチャートを図13に示す。図13に示すように、フライバックパルス適応フィルタ更新処理では、モータ駆動制御プログラムは、有効スタートアップフラグSTUPがTRUEであるか否かを判断するステップS120。そして、ステップS120において、有効スタートアップフラグSTUPがFALSEであると判断された場合、モータ4が有効に回転していないと判断し、フライバックパルス適応フィルタの更新は行わずに処理を終了する。一方、ステップS120において、有効スタートアップフラグSTUPがTRUEであると判断された場合、定電流制御指示値CNST_CRNTを最大電流値MAX_CRNTとするステップS121。次いで、モータ駆動制御プログラムは、フライバックパルス継続パルス数FB_MASKを移動平均ステートPWMパルス数ST_PWM_PLS_AVEの4分の1に設定するステップS122。その後、モータ駆動制御プログラムは、更新後のフライバックパルス継続パルス数FB_MASKがフライバックパルス継続パルス数の最低値MIN_FB_MASKとの比較処理を行うステップS123。そして、フライバックパルス継続パルス数FB_MASKがフライバックパルス継続パルス数の最低値MIN_FB_MASK以上の値であれば、そのまま処理を終了する。一方、フライバックパルス継続パルス数FB_MASKがフライバックパルス継続パルス数の最低値MIN_FB_MASKよりも小さい場合、フライバックパルス継続パルス数FB_MASKをフライバックパルス継続パルス数の最低値MIN_FB_MASKに設定した後に処理を終了するステップS124。続いて、図6のステップS46のレギュレーションループ調停処理について詳細に説明する。そこで、図14にレギュレーションループ調停処理の詳細な動作手順を示すフローチャートを示す。このレギュレーションループ調停処理は、図2のPWMデューティ制御部27により行われる。図14に示すように、レギュレーションループ調停処理では、モータ駆動制御プログラムは、回転速度誤差積分値ROT_ERR_INTGと電流誤差積分値CRNT_ERR_INTGとの比較処理を行うステップS130。そして、ステップS130において、回転速度誤差積分値ROT_ERR_INTGが電流誤差積分値CRNT_ERR_INTGよりも小さいと判断された場合、電流誤差積分値CRNT_ERR_INTGの値を回転速度誤差積分値ROT_ERR_INTGの値で更新するステップS131。その後、モータ駆動制御プログラムは、回転速度誤差積分値ROT_ERR_INTGをPWM信号のオンタイムPWM_ONとした後にレギュレーションループ調停処理を終了するステップS132。一方、ステップS130において、回転速度誤差積分値ROT_ERR_INTGが電流誤差積分値CRNT_ERR_INTG以上であると判断された場合、回転速度誤差積分値ROT_ERR_INTGの値を電流誤差積分値CRNT_ERR_INTGの値で更新するステップS133。その後、モータ駆動制御プログラムは、電流誤差積分値CRNT_ERR_INTGをPWM信号のオンタイムPWM_ONとした後にレギュレーションループ調停処理を終了するステップS134。このようなレギュレーションループ調停処理を行うことで、制御ループを定電流制御系と定回転制御系との間で切り換えた場合において、その切り換え時に切り換え後に利用される制御ループが飽和状態から制御を開始することを防止することができる。そして、切り換え直後の制御ループが飽和状態から制御を開始しないことで、制御ループの切り換えをスムーズに行うことができる。続いて、図6のステップS47のPWMプリモジュレーション処理について詳細に説明する。そこで、図15にPWMプリモジュレーション処理の詳細な動作手順を示すフローチャートを示す。PWMプリモジュレーション処理は、図2のPWMデューティ制御部27により行われる。図15に示すように、PWMプリモジュレーション処理では、モータ駆動制御プログラムは、まず、ステップS46のレギュレーションループ調停処理にて決定されたPWM信号のオンタイムPWM_ONに繰越PWMオンタイムCRY_PWM_ONを加算するステップS140。このとき、加算される繰越PWMオンタイムCRY_PWM_ONは、現周期のPWM信号のオンタイムを決定する際に算出された値である。次いで、モータ駆動制御プログラムは、ステップS140で算出されたPWM信号のオンタイムPWM_ONと最大デューティ設定値MAX_DUTYとの比較処理を行うステップS141。この最大デューティ設定値MAX_DUTYは、モータ駆動制御装置1が生成可能なパルス幅の制限に基づき設定される。ステップS141において、PWM信号のオンタイムPWM_ONが最大デューティ設定値MAX_DUTYよりも大きいと判断された場合、繰越PWMオンタイムCRY_PWM_ONにPWM信号のオンタイムPWM_ONからPWM周期PWM_TRMを減じた値を設定するステップS142。その後、PWM信号のオンタイムPWM_ONとしてPWM周期PWM_TRMを設定するステップS143。つまり、ステップS142の処理によりPWM信号のオンタイムPWM_ONが生成された場合、次周期のPWM信号はオフステートにはならない。一方、ステップS141において、PWM信号のオンタイムPWM_ONが最大デューティ設定値MAX_DUTYよりも小さいと判断された場合、PWM信号のオンタイムPWM_ONと最小デューティ設定値MIN_DUTYとの比較処理を行うステップS144。ステップS144において、PWM信号のオンタイムPWM_ONが最小デューティ設定値MIN_DUTYよりも小さいと判断された場合、繰越PWMオンタイムCRY_PWM_ONとしてPWM信号のオンタイムPWM_ONを設定するステップS145。その後、PWM信号のオンタイムPWM_ONをゼロに設定するステップS146。つまり、ステップS146の処理によりPWM信号のオンタイムPWM_ONが生成された場合、次周期のPWM信号はオンステートにはならない。一方、ステップS144において、PWM信号のオンタイムPWM_ONが最小デューティ設定値MIN_DUTY以上であると判断された場合、繰越PWMオンタイムCRY_PWM_ONとしてゼロを設定するステップS147。つまり、ステップS147の処理によりPWM信号のオンタイムPWM_ONが生成された場合、次周期のPWM信号はPWM信号のオンタイムPWM_ONの値に応じた長さのオンステートを有する。上記説明では、モータ駆動制御装置1、つまり、モータ駆動制御プログラムによる動作について説明した。以下では、具体的な波形を示してモータ駆動制御装置1の動作について説明する。まず、図16に、モータ駆動制御装置1がモータ4を停止状態から回転状態とするモータ駆動制御の初期の挙動を説明するタイミングチャートを示す。図16に示すタイミングチャートでは、PWM信号の状態が遷移する毎にハイレベルとローレベルが切り替わる信号としてステート信号で示した。このステート信号がハイレベルである期間は、ステータの駆動相が奇数番目、つまり、PWM信号が奇数番目の状態であることを示し、ローレベルであるき間は、ステータの駆動相が偶数番目、つまり、PWM信号が偶数番目の状態であることを示す。また、PWM信号が6状態を経る毎にハイレベルとローレベルが切り替わる信号として6ステート信号を示した。また、図16では、ロータの回転状態を示すために有効スタートアップフラグSTUPを示した。なお、図16に示すタイミングチャートは、回転開始の動作を示す一例として、ロータが状態0に対応する位置で静止している状態から回転を開始する例について示すものである。まず、実施の形態1にかかるモータ駆動装置1は、変数初期化処理ステップS1において、電流誤差積分値CRNT_ERR_INTG及び回転速度誤差積分値ROT_REE_INTGをゼロにリセットした状態でモータの制御を開始する。そのため、実施の形態1にかかるモータ駆動装置1は、モータを制御するPWM信号の状態を状態0としてモータ制御を開始するが、この制御開始時点での駆動電流はゼロである。このようなことから、図16に示すように、駆動制御が開始された直後の状態0では、モータ4のロータに回転トルクが生じず停止したままの状態となる。また、ロータが回転していないことから、非通電相の駆動信号とセンタータップ電圧CTとの間でゼロクロスが生じない。また、図16に示す例では、ロータの位置が駆動対象のステータ以下、励磁ステータと称すの位置とよりも位相が遅れた状態であり、かつ、ゼロクロスが発生しないため、コンパレータ積分値CMP_INTGがゼロに達することはない。そして、最初の状態0においては、コンパレータ積分値CMP_INTGが最大パルスカウント値MAXCNTに達したことに応じて、モータ駆動制御装置1は、PWM信号の状態を状態0から状態1に遷移させる図9のステップS74以降の処理。このようにコンパレータ積分値CMP_INTGが最大パルスカウント値MAXCNTに達する状態を、以下では、タイムアウト検出と称す。そして、モータ駆動制御装置1は、PWM信号の状態を遷移させる毎に駆動電流を増加させながら、モータ4の起動処理を継続する。ここで、モータ4の起動時における駆動電流の増加手順について説明する。まず、最初の状態0では、回転速度指示値ROT_SETはゼロを維持するのに対して、駆動電流MIがゼロであるため駆動電流MIと定電流制御設定値CONST_CRNT_SETとの誤差は最大駆動電流の大きさに一致する。そのため、最初の状態0では、レギュレーションループ調停処理ステップS46、及び、図14の処理により電流誤差積分値CRNT_ERR_INTGはゼロに維持される。続いて、タイムアウト検出によりPWM信号の状態が状態0から状態1に遷移すると、モータ駆動制御装置1では、ステップS92及び図11の処理が行われ、回転速度誤差値ROT_INTGの値として、回転速度指示値ROT_SETを最大許容加速度MAX_ALW_ACLで制限した値を設定する。これに対して、状態1では、駆動電流MIに対する電流誤差積分値CRNT_INTGとして、駆動電流MIと定電流制御設定値CONST_CRNT_SETとの誤差値が算出される。このとき、最初の状態1では駆動電流MIは、当初ゼロであり、電流誤差積分値CRNT_INTGは最大駆動電流の大きさに一致する。そのため、回転モータ駆動制御装置1では、レギュレーションループ調停処理ステップS46、及び、図14の処理により、電流誤差積分値CRNT_INTGに回転速度誤差積分値ROT_INTGの値を代入する。つまり、PWM信号の状態が遷移した場合に増加する駆動電流の増加量は、最大許容加速度ROT_ALW_ACLで制限された値になる。このように、PWM信号の状態が遷移させた場合の駆動電流の増加量は、最大許容加速度ROT_ALW_ACLで制限された値になるため、モータ4の始動制御においては、回転速度誤差積分値ROT_ERR_INTGが電流誤差積分値CRNT_ERR_INTGよりも小さい状態が続く。つまり、モータ4の回転が開始されるまでの期間は、PWM信号の状態が遷移する度に増加させる駆動電流は、最大許容加速度ROT_ALW_ACLにより制限され、駆動電流は、徐々に大きくなる。このように、モータ駆動制御装置1は、ロータに印加する駆動トルクを徐々に大きくする。そして、ロータに印加される駆動トルクがロータの静止トルクを上回るとロータの回転が開始される。しかし、ロータが回転しても、ロータの回転周波数及び回転位相と、励磁ステータの駆動周波数及び駆動位相と、が一致しなければ、モータの回転は持続しない。例えば、駆動トルクが不十分である場合、ロータが回転しない状態が発生する。また、駆動トルクが十分であって、ロータが回転する状態であっても、励磁ステータの駆動位相とロータの回転位相とが不一致であった場合、ロータに印加する駆動トルクが不適切な状態となり、ロータが逆回転又は次状態の励磁ステータの駆動対象位置を通過する位置まで回転してしまい、モータの回転が持続しない状態となる。さらに、励磁ステータの駆動周波数とロータの回転周波数とが不一致である場合、連続して適切な駆動トルクをロータに印加できないため、モータの回転は持続しない。このように、モータ4の回転を持続させるためには、十分な駆動トルクと、励磁ステータの駆動周波数及び駆動位相とロータの回転周波数及び回転位相とを一致させることと、が必要になる。そこで、実施の形態1にかかるモータ駆動制御装置1では、駆動電流をPWM信号の状態を遷移させる毎に徐々に増加させると共に、PWM信号の状態を遷移させて励磁ステータの駆動周波数及び駆動位相がロータの回転周波数及び回転位相と一致する状態を探る。より具体的には、実施の形態1にかかるモータ駆動制御装置1は、フライバックパルスフィルタ処理と、コンパレータ積分値CMP_INTGと、最大パルスカウント数MAXCNTと、を用いて、励磁ステータの駆動周波数及び駆動位相とロータの回転周波数及び回転位相とが一致する状態を探る。まず、モータ駆動制御装置1は、PWM信号の状態を遷移させた直後は、フライバックパルスフィルタ処理図6のステップS44、S45及び図8の処理により、コンパレータ積分値CMP_INTGを増加、又は、減少させる。そして、フライバックパルスフィルタ処理の終了後に、駆動トルクが静止トルク以上、かつ、励磁ステータの駆動位相に対するロータの回転位相差が±30°未満の位置である場合は、ロータが回転してゼロクロスが検出できる可能性がある。そこで、タイムアウト検出期間経過前ステートPWMパルス数ST_PWM_PLSが最大パルスカウント値MAXCNT以下である期間にコンパレータ積分値CMP_INTGがゼロに達したことを検出できれば、モータ駆動制御装置1は、ゼロクロスが生じたと判定して、PWM信号を次状態に遷移させる。しかし、フライバックパルスフィルタ処理終了後の状態が、励磁ステータの駆動位相に対してロータの回転位相が30°以上進んでいた状態である場合は、フライバックパルスフィルタ処理が終了した時点でコンパレータの出力が期待する論理レベルとは逆の論理レベルとなっているため、タイムアウト検出期間経過前にコンパレータ積分値CMP_INTGがゼロに達する。つまり、このような場合は、モータ駆動制御装置1は、フライバックパルスフィルタ処理が終了する前にゼロクロスが発生したと判断し、タイムアウト検出期間の経過を待たずにPWM信号の状態を状態に遷移させる。このような動作に相当する状態は、例えば、図16においてコンパレータ積分値に基づく状態遷移で示される状態である。なお、モータ駆動制御装置1では、変数初期化処理図3のステップS1、及び図4の処理において、有効スタートアップフラグSTUPがFALSEからTRUEに切り替るまでのフライバックパルス継続PWMパルス数FB_MASKを小さく例えば、最大回転速度に相当する6ステートPWMパルス数の6分の1に設定しているため、フラバックパルスフィルタ処理終了前にゼロクロスが発生したと判断される状態の期間は後述するタイムアウト検出に基づく状態遷移が行われる場合に比べて極端に短くなる。また、フライバックパルスフィルタ処理終了後の状態が、励磁ステータの駆動位相に対してロータの回転位相が30°以上遅れた状態である場合は、フライバックパルスフィルタ処理が終了した時点でコンパレータの出力が期待する論理レベルとなっているため、コンパレータ積分値CMP_INTGの絶対値が増加する。しかし、励磁ステータの駆動位相に対してロータの回転位相が30°以上遅れた状態である場合、ロータに適切な負荷トルクを印加することができないため、ロータが回転しない。そのため、タイムアウト検出期間が経過してもコンパレータの出力が反転せずコンパレータ積分値CMP_INTGの絶対値が減少に転じることがない。つまり、このような場合は、モータ駆動制御装置1は、タイムアウト検出がなされるまでゼロクロスの発生を待ち、タイムアウト検出期間が経過した時点でPWM信号の状態を状態に遷移させる。このような動作に相当する状態は、例えば、図16においてタイムアウト検出に基づく状態遷移で示される状態である。なお、フライバックパルスフィルタ処理終了後に、実際にはゼロクロスが生じている場合であっても、コンパレータ積分値CMP_INTGがゼロに達する前にロータがさらに回転してロータの回転位相が現状態に対応する回転位相とは異なる状態に対応する回転位相の位置まで到達した場合にはコンパレータ積分値CMPCMP_INTGがゼロに達する前にタイムアウト検出期間が経過してしまうことがある。そのため、このような場合においてもモータ駆動制御装置1は、タイムアウト検出に基づきPWM信号の状態を遷移させる。このように、モータ駆動制御装置1では、ゼロクロスの発生が既に発生したと判断した場合には、即座にPWM信号を次状態に移行させる。また、モータ駆動制御装置1は、ゼロクロスの発生の可能性がある場合には、タイムアウト検出期間の間コンパレータ積分値CMP_INTGがゼロに達することを待つ。そして、タイムアウト検出期間中に、コンパレータ積分値CMP_INTGがゼロに達しない場合、モータ駆動制御装置1は、ロータの回転周波数がタイムアウト検出期間を一周期とする駆動周波数よりも遅いと判断し、タイムアウト検出期間の経過に応じてPWM信号を次状態に移行させる。また、モータ駆動制御装置1は、タイムアウト検出期間中にコンパレータ積分値CMP_INTGがゼロに達したことを検出できた場合、ロータの回転周波数がタイムアウト検出期間を一周期とする駆動周波数よりも速いと判断して、コンパレータ積分値CMP_INTGがゼロに達したことに応じてPWM信号の状態を次状態に遷移させる。そして、コンパレータ積分値CMP_INTGがゼロに達したことに応じた状態遷移図9のステップS78が6回連続して発生したことに応じて、モータ駆動制御装置1は、有効スタートアップフラグSTUPをFALSEからTRUEに切り換えるステップS82。このように、コンパレータ積分値CMP_INTGがゼロに達したことに応じた状態遷移が6回連続して発生したことは、即ち、ロータの回転周波数及び回転位相と、励磁ステータの駆動周波数及び駆動位相と、が一致したことを意味する。なお、有効スタートアップフラグSTUPがTRUEとなる直前の期間図16のゼロクロス検出アンバランス回転では、モータは加速状態であって、ステートPWMパル数ST_PWM_PLSが移動平均ステートPWMパルス数ST_PWM_PLS_AVEに達する前に、コンパレータ積分値CMP_INTGがゼロに達する状態が継続する。そのため、有効スタートアップフラグSTUPがTRUEとなる直前の期間では、各状態の一期間が徐々に短くなる。また、このゼロクロス検出アンバランス回転の状態は、ステート間の長さは不均一であるが、ロータと励磁ステータとは周波数及び位相が一致した安定した回転状態であると判定できる。そして、有効スタートアップフラグSTUPがTRUEに切り替った後は、モータ駆動制御装置1は、定電流制御指示値CNST_CRNT_SETを最大電流値MAX_CRNTの3分の1から最大電流値MAX_CRNTに増加させる図14のステップS120、S121と共に、フライバックパルス継続PWMパルス数FB_MASKを移動平均ステートPWMパルス数ST_PWM_PLS_AVEの4分の1に設定する。そして、モータ駆動制御装置1は、定電流制御によりモータ4の回転速度を回転速度指示値ROT_SETまで上昇させる。実施の形態1にかかるモータ駆動制御装置1では、上記処理によりモータ4を起動することでモータ4が逆回転状態を継続することを防止することができる。まず、モータ駆動制御装置1では、モータ4を駆動する駆動電流をゼロとして起動制御を開始する。そして、モータ駆動制御装置1は、駆動電流を徐々に増加させながら状態遷移を進める。これにより、ロータの静止トルクよりも遙かに大きな駆動トルクが急に印加されることを防止する。このように、駆動電流を徐々に大きくすることで、ロータと励磁ステータとの位相関係がロータを逆回転意図しない回転方向させる関係である場合であっても、ロータが逆回転方向に過剰に回転することを防止する。また、モータ駆動制御装置1では、コンパレータ15の出力状態から、フライバックパルスフィルタ処理が終了する前にゼロクロスが発生したと判断される場合には、タイムアウト検出期間の経過を待たずに即座にPWM信号の状態を次状態に遷移させる。このとき、有効スタートアップフラグSTUPがFALSEである期間において、モータ駆動制御装置1では、フライバックパルス継続PWMパルス数FB_MASKの値を小さく設定することで逆回転方向の駆動トルクがロータに印加される期間を短くする。一方、モータ駆動制御装置1は、フライバックパルスフィルタ処理が終了した後にゼロクロスの発生が期待できる場合には、タイムアウト検出期間が経過するまでコンパレータ積分値CMP_INTGがゼロ達することを待つ。つまり、モータ駆動制御装置1では、ロータに正回転意図した回転方向の駆動トルクが印加される状態ではロータの回転位相が次状態の回転位置に達することをできる限り待ち、ロータに逆回転の駆動トルクが印加される状態ではロータに駆動トルクが印加される期間を短くする。また、モータ駆動制御装置1は、コンパレータ積分値CMP_INTGがゼロに達したことに応じたPWM信号の状態遷移が6回連続して発生したことに応じてモータ4が正常な回転状態となったと判断する有効スタートアップフラグSTUPをTRUEとする。例えば、コンパレータ積分値CMP_INTGがゼロに達したことに応じたPWM信号の状態遷移が6回連続して発生しない場合、いずれかの駆動相において、ロータの回転周波数及び回転位相と、励磁ステータの駆動周波数及び駆動位相とが不一致となっている。このような状態で、駆動電流を最大電流値まで増加させた場合、不一致な駆動位相において意図した駆動トルクがロータに印加されず、回転が停止又は逆回転する可能性がある。一方、コンパレータ積分値CMP_INTGがゼロに達したことに応じたPWM信号の状態遷移が6回連続して発生している状態は、ロータの回転周波数及び回転位相と、励磁ステータの駆動周波数及び駆動位相とが一致していることを意味する。従って、コンパレータ積分値CMP_INTGがゼロに達したことに応じたPWM信号の状態遷移が6回連続して発生したことに応じて、モータ4が有効な回転状態となったことを判断することで、モータ4に逆回転方向の過剰な駆動トルクが印加されることを防止し、モータ4が逆回転する状態が継続することを防止することができる。続いて、モータ4が回転状態になった後のモータ駆動制御プログラムの動作について説明する。実施の形態1にかかるモータ駆動制御プログラムは、PWM信号の周期毎にオフステートとしてハイサイドオフステートとローサイドオフステートとを切り換えるオルタネートPWM方式でモータ4を制御する。そこで、まず、モータ駆動制御プログラムが行うオルタネートPWM方式について説明する。モータ駆動制御プログラムは、デューティ比によりPWM信号のオンステートとオフステートとの比を決定する。そして、モータ駆動制御プログラムは、PWM信号のオンステート時に電源からモータ4に駆動電流を与える。また、モータ駆動制御プログラムは、PWM信号のオフステート時は、モータ4のコイルに流れる電流をドライバ回路3内のトランジスタ及びコイルの寄生抵抗により消費する。このオフステートにおいて、ハイサイドオフステートとローサイドオフステートとのいずれか一方のみを採用した場合、センタータップ電圧CT及び非通電相の駆動信号の電圧レベルが電源電圧側又は接地電圧側のいずれか一方に偏る。そして、この電圧レベルの偏りに起因してセンタータップ電圧CTと非通電相の駆動信号との電圧関係が逆転するゼロクロス点が時間的に前又は後ろにずれる問題が生じる。一方、実施の形態1にかかるモータ駆動制御プログラムは、オルタネートPWM方式を採用することで、センタータップ電圧CT及び非通電相の駆動信号の電圧レベルが電源電圧側又は接地電圧側のいずれか一方に偏ることを防止する。具体的には、実施の形態1にかかるモータ駆動制御プログラムでは、センタータップ電圧CT及び非通電相の駆動信号の電圧レベルが電源電圧側に偏る周期と接地電圧側に偏る周期がPWM信号の周期毎に繰り返され、一方に偏ることが防止される。さらに、入力されるセンタータップ電圧CTと比較対象検出信号SP非通電相の駆動信号との電圧レベルがPWM信号の周期毎に上下の偏りを持たせることで、モータ駆動制御装置1のコンパレータ15が入力オフセットを有していても、入力オフセットによる誤差は、コンパレータ積分値CMP_INTGを算出する段階で相殺される。つまり、実施の形態1にかかるモータ駆動制御プログラムは、オルタネートPWM方式を採用することでコンパレータ積分値CMP_INTGに基づくPWM信号の状態遷移タイミングの精度を向上させることができる。モータ4は、3相駆動のモータであり、6状態のPWM信号により制御される。そして、オルタネートPWM方式による動作を行う場合、回転動作を行うために、ドライバ回路3を構成するトランジスタのいずれをオンさせるかが状態毎に異なる。そこで、図17~図22に状態0~状態5の各状態のオンステートとオフステートの制御状態を説明するドライバ回路3の回路図を示す。ここで、オンステートとオフステートのドライバ回路の制御状態を説明する前に、図17~図22を参照してドライバ回路3の回路について説明する。図17~図22に示すように、ドライバ回路3は、U相、V相、W相の3つの駆動信号を生成するために、3組の駆動段回路を有する。図17~図22に示す例では、3組の駆動段回路は、PMOSトランジスタによりハイサイドトランジスタが形成され、NMOSトランジスタによりローサイドトランジスタが形成される。そして、図17~図22に示すように、U相の駆動信号を生成する駆動段回路は、ハイサイドトランジスタPUとローサイドトランジスタNUとが電源配線と接地配線との間に直列に接続される。また、ハイサイドトランジスタPUのゲートにはPWM信号UHが入力され、ローサイドトランジスタNUのゲートにはPWM信号ULが入力される。V相の駆動信号を生成する駆動段回路は、ハイサイドトランジスタPVとローサイドトランジスタNVとが電源配線と接地配線との間に直列に接続される。また、ハイサイドトランジスタPVのゲートにはPWM信号VHが入力され、ローサイドトランジスタNVのゲートにはPWM信号VLが入力される。W相の駆動信号を生成する駆動段回路は、ハイサイドトランジスタPWとローサイドトランジスタNWとが電源配線と接地配線との間に直列に接続される。また、ハイサイドトランジスタPWのゲートにはPWM信号WHが入力され、ローサイドトランジスタNWのゲートにはPWM信号WLが入力される。続いて、オンステートとオフステートのドライバ回路の制御状態を説明する。図17は、状態0におけるオンステートとオフステートのドライバ回路3の制御状態を示す回路図である。図17に示すように、状態0のオンステートでは、ハイサイドトランジスタPUとローサイドトランジスタNVがオン状態となる。そして、モータ4のU相のコイルLUからV相のコイルLVに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPUが属する駆動段回路のローサイドトランジスタNUと、オンステートにおいてオン状態であったローサイドトランジスタNVと、がオン状態となる。そして、コイルLU、LVに流れていたフライバック電流はローサイドトランジスタNU、NVにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPUと、オンステートにおいてオン状態であったローサイドトランジスタNVが属する駆動段回路のハイサイドトランジスタPVと、がオン状態となる。そして、コイルLU、LVに流れていたフライバック電流はハイサイドトランジスタPU、PVにより消費される。図18は、状態1におけるオンステートとオフステートのドライバ回路3の制御状態を示す回路図である。図18に示すように、状態1のオンステートでは、ハイサイドトランジスタPUとローサイドトランジスタNWがオン状態となる。そして、モータ4のU相のコイルLUからW相のコイルLWに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPUが属する駆動段回路のローサイドトランジスタNUと、オンステートにおいてオン状態であったローサイドトランジスタNWと、がオン状態となる。そして、コイルLU、LWに流れていたフライバック電流はローサイドトランジスタNU、NWにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPUと、オンステートにおいてオン状態であったローサイドトランジスタNWが属する駆動段回路のハイサイドトランジスタPWと、がオン状態となる。そして、コイルLU、LWに流れていたフライバック電流はハイサイドトランジスタPU、PWにより消費される。図19は、状態2におけるオンステートとオフステートのドライバ回路3の制御状態を示す回路図である。図19に示すように、状態2のオンステートでは、ハイサイドトランジスタPVとローサイドトランジスタNWがオン状態となる。そして、モータ4のV相のコイルLVからW相のコイルLWに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPVが属する駆動段回路のローサイドトランジスタNVと、オンステートにおいてオン状態であったローサイドトランジスタNWと、がオン状態となる。そして、コイルLV、LWに流れていたフライバック電流はローサイドトランジスタNV、NWにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPVと、オンステートにおいてオン状態であったローサイドトランジスタNWが属する駆動段回路のハイサイドトランジスタPWと、がオン状態となる。そして、コイルLV、LWに流れていたフライバック電流はハイサイドトランジスタPV、PWにより消費される。図20は、状態3におけるオンステートとオフステートのドライバ回路3の制御状態を示す回路図である。図20に示すように、状態3のオンステートでは、ハイサイドトランジスタPVとローサイドトランジスタNUがオン状態となる。そして、モータ4のV相のコイルLVからU相のコイルLUに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPVが属する駆動段回路のローサイドトランジスタNVと、オンステートにおいてオン状態であったローサイドトランジスタNUと、がオン状態となる。そして、コイルLV、LUに流れていたフライバック電流はローサイドトランジスタNV、NUにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPVと、オンステートにおいてオン状態であったローサイドトランジスタNUが属する駆動段回路のハイサイドトランジスタPUと、がオン状態となる。そして、コイルLU、LVに流れていたフライバック電流はハイサイドトランジスタPU、PVにより消費される。図21は、状態4におけるオンステートとオフステートのドライバ回路3の制御状態を示す回路図である。図21に示すように、状態4のオンステートでは、ハイサイドトランジスタPWとローサイドトランジスタNUがオン状態となる。そして、モータ4のW相のコイルLWからU相のコイルLUに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPWが属する駆動段回路のローサイドトランジスタNWと、オンステートにおいてオン状態であったローサイドトランジスタNUと、がオン状態となる。そして、コイルLU、LWに流れていたフライバック電流はローサイドトランジスタNU、NWにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPWと、オンステートにおいてオン状態であったローサイドトランジスタNUが属する駆動段回路のハイサイドトランジスタPUと、がオン状態となる。そして、コイルLU、LWに流れていたフライバック電流はハイサイドトランジスタPU、PWにより消費される。図22は、状態5におけるオンステートとオフステートのドライバ回路3の制御状態を示す回路図である。図22に示すように、状態5のオンステートでは、ハイサイドトランジスタPWとローサイドトランジスタNVがオン状態となる。そして、モータ4のW相のコイルLWからV相のコイルLVに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPWが属する駆動段回路のローサイドトランジスタNWと、オンステートにおいてオン状態であったローサイドトランジスタNVと、がオン状態となる。そして、コイルLV、LWに流れていたフライバック電流はローサイドトランジスタNV、NWにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタPWと、オンステートにおいてオン状態であったローサイドトランジスタNVが属する駆動段回路のハイサイドトランジスタPVと、がオン状態となる。そして、コイルLV、LWに流れていたフライバック電流はハイサイドトランジスタPV、PWにより消費される。なお、オフステートにおいて、オフされたトランジスタと対になる反対側のトランジスタをオンする動作は、同期整流動作と呼ばれる。つまり、実施の形態1にかかるモータ駆動制御プログラムにおけるオルタネートPWM方式の動作は、同期整流動作を含む。このような同期整流動作を行うことで、従来は、オフ状態のトランジスタのボディダイオードで消費されたフライバック電流を、オン状態のトランジスタにおいて消費することが可能になり電力効率を向上させることができる。そこで、同期整流動作の有無による入出力特性を比較するグラフを図23に示す。図23に示すように、同期整流動作を行った場合、入力される電力が小さい場合の出力回転速度×トルクが同期整流動作を行わない場合に比べて低くなっていることがわかる。また、入力電力の範囲が同じである場合、出力の範囲が同期整流動作を行った場合の方が広くなっていることがわかる。上記説明より、実施の形態1にかかるモータ駆動制御プログラムでは、オルタネートPWM方式によりPWM信号のオフステートの状態を制御する。オフステートの制御としては、オルタネートPWM方式の他に、ハイサイドオフステートとローサイドオフステートとのいずれか一方の状態のみの制御を行うことも考えられる。しかし、オフステートとしてハイサイドオフステートとローサイドオフステートとのいずれか一方しか行わない場合、センタータップ電圧CT及び非通電相の駆動信号の電圧レベルが電源電圧側又は接地電圧側のいずれか一方に偏る。また、モータ4の回転速度が低い場合、ハイインピーダンス状態となる非通電相の電位変化の傾きが緩やかになる。そのため、オフステートとしてハイサイドオフステートとローサイドオフステートとのいずれか一方しか行わない場合、モータ4の回転速度が低い状態で、センタータップ電圧CT及び非通電相の駆動信号の電圧関係が逆転するゼロクロスタイミングのずれが顕著になりゼロクロス点のずれが顕著になる問題がある。しかし、実施の形態1にかかるモータ駆動制御プログラムでは、オルタネートPWM方式を採用することで、センタータップ電圧CT及び非通電相の駆動信号の電圧レベルのずれ方向がPWM信号の周期毎に上下する。これにより、コンパレータ15が入力オフセットを有する場合であっても、入力オフセットに起因するコンパレータ積分値CMP_INTGのずれが、センタータップ電圧CT及び非通電相の駆動信号の電圧レベルのずれ方向の変動により相殺される。また、コンパレータ15は、入力ノイズの影響により誤判定を生じることがあるが、オルタネートPWM方式を採用することでセンタータップ電圧CT及び非通電相の駆動信号の電圧レベルの上下方向の変動が入力ノイズを相殺する。そのため、実施の形態1にかかるモータ駆動制御プログラムを用いた場合、コンパレータ15にヒステリシス特性を持たせる必要がない。これにより、実施の形態1にかかるモータ駆動制御プログラムでは、モータ4の回転速度が遅くセンタータップ電圧CTと非通電相の駆動信号との傾きが緩やかな状態であっても、コンパレータ15の入力オフセット及びヒステリシス特性に起因するゼロクロス検出タイミングのずれの影響を受けることない。そして、実施の形態1にかかるモータ駆動制御プログラムでは、コンパレータ積分値CMP_INTGにより精度の高いタイミングでPWM信号の状態を遷移させることができる。即ち、実施の形態1にかかるモータ駆動制御プログラムは、低回転速度領域におけるモータの制御性を高めることができる。また、実施の形態1にかかるモータ駆動制御プログラムは、低回転速度側の制御性が高めることで、広い回転速度範囲でモータの制御性を高めることができる。このようなオルタネートPWM方式による動作は、PWM信号のデューティ比が100未満の状態で行われる。そこで、オルタネートPWM方式による動作が行われるPWM信号のデューティ比が50である状態を例にモータ駆動制御プログラムの動作について説明する。なお、以下の説明では、モータ駆動制御プログラムの動作に基づき生成されるPWM信号は、モータ駆動制御装置1から出力されるものであるため、モータ駆動制御プログラムの動作としてモータ駆動制御装置1の動作を説明する。ここでは、PWM信号の波形と、モータ4を駆動する駆動信号の波形及び駆動信号に応じたモータ駆動制御装置1の動作をより詳細に説明するために、状態0の動作状態を例に、モータ駆動制御装置1の動作について説明する。まず、図24に、モータ駆動制御装置1が生成するPWM信号、当該PWM信号に応じて生成されるモータ4の駆動信号及びモータ4のセンタータップ電圧CTのタイミングチャートを示す。図24に示すように、モータ駆動制御装置1では、デューティ比が50となる基準PWM信号を生成する。そして、モータ駆動制御装置1は、基準PWM信号に基づき3相の駆動信号を生成するための6つのPWM信号UH、UL、VH、VL、WH、WLを生成する。状態0は、U相からV相に向かって駆動電流を流す状態である。また、状態0では、W相の駆動信号はハイインピーダンス状態Zステートとなる。そこで、状態0では、モータ駆動制御装置1は、基準PWM信号のオンステートハイレベルの期間においてPWM信号UH、ULをローレベルとする。また、状態0では、モータ駆動制御装置1は、基準PWM信号のオンステートにおいてPWM信号VH、VLをハイレベルとする。さらに、状態0では、モータ駆動制御装置1は、基準PWM信号のオンステートにおいてPWM信号WHをハイレベル、PWM信号WLをローレベルとする。これにより、基準PWM信号のオンタイムにおいて、U相の駆動信号はハイレベルとなり、V相の駆動信号はローレベルとなる。そして、U相からV相に対して駆動電流が流れる。また、W相の駆動信号はハイインピーダンス状態であるため、U相の駆動信号とV相の駆動信号との間の電圧値になる。このW相の駆動信号の電圧値は、ロータの回転位置に従って電圧値が徐々に低下する。また、実施の形態1では、オルタネートPWM方式による動作を行うため、基準PWM信号のオフステートとしてハイサイドオフステートと、ローサイドオフステートと、を有する。そして、図24に示すように、実施の形態1にかかるモータ駆動制御装置1は、ハイサイドオフステートとローサイドオフステートとをPWM信号の周期毎に切り換える。そこで、まず、状態0におけるハイサイドオフステート時のPWM信号UH、UL、VH、VL、WH、WLについて説明する。状態0では、U相からV相に向かって駆動電流を流し、W相の駆動信号はハイインピーダンス状態となる。そこで、状態0のハイサイドオフステートでは、モータ駆動制御装置1は、基準PWM信号のオフステートローレベルの期間においてPWM信号UH、ULをハイレベルとする。また、状態0のハイサイドオフステートでは、モータ駆動制御装置1は、基準PWM信号のオフステートにおいてPWM信号VH、VLをハイレベルとする。さらに、状態0のハイサイドオフステートでは、モータ駆動制御装置1は、基準PWM信号のオフステートにおいてPWM信号WHをハイレベル、PWM信号WLをローレベルとする。これにより、基準PWM信号のオフタイムにおいて、U相の駆動信号、V相の駆動信号及びW相の駆動信号はローレベルとなる。そして、U相とV相との間において電流が流れる。続いて、状態0におけるローサイドオフステート時のPWM信号UH、UL、VH、VL、WH、WLについて説明する。状態0では、U相からV相に向かって駆動電流を流し、W相の駆動信号はハイインピーダンス状態となる。そこで、状態0のローサイドオフステートでは、モータ駆動制御装置1は、基準PWM信号のオフステートローレベルの期間においてPWM信号UH、ULをローレベルとする。また、状態0のローサイドオフステートでは、モータ駆動制御装置1は、基準PWM信号のオフステートにおいてPWM信号VH、VLをローレベルとする。さらに、状態0のローサイドオフステートでは、モータ駆動制御装置1は、基準PWM信号のオフステートにおいてPWM信号WHをハイレベル、PWM信号WLをローレベルとする。これにより、基準PWM信号のオフタイムにおいて、U相の駆動信号、V相の駆動信号及びW相の駆動信号はハイレベルとなる。そして、U相とV相との間において電流が流れる。上記説明のように、モータ駆動制御装置1は、PWM信号の周期毎にオンステートとオフステートとを切り替える。さらに、モータ駆動制御装置1は、オフステートの制御状態を、PWM信号の周期毎にハイサイドオフステートとローサイドオフステートとに切り換える。このような制御を行うことで、モータ駆動制御装置1は、オンステートにおいてU相からV相に駆動電流を流す。そして、ハイインピーダンス状態となる非通電相状態0ではW相の駆動信号の電圧は、ハイレベルからローレベルに向かって変化する。この非通電相の電圧変化は、ロータの回転位置に応じて変化する。なお、PWM信号の状態が変化した直後は、非通電相にフライバックパルスが生じる。センタータップ電圧CTは、U相、V相、W相の駆動信号の電圧値に基づき生成される。このとき、オンステートにおいてU相の駆動信号はハイレベルであり、V相の駆動信号はローレベルであるため、センタータップ電圧CTは、非通電相のW相の駆動信号の電圧に応じた変動を示す。続いて、状態0におけるモータ駆動制御装置1のPWM信号制御処理について説明する。図25に、デューティ比が50のPWM信号を生成した場合の状態0のモータ駆動制御装置1の動作を説明するタイミングチャートを示す。図25に示すように、PWM信号のデューティ比が50である場合、モータ駆動制御装置1は、BEMFタイマ割り込みが生じたことに応じて、PWM信号をオンステートからオフステートに切り換える。この動作は、図5のステップS32の動作に相当するものである。また、モータ駆動制御装置1は、PWM周期割り込みに応じて、PWM信号をオフステートからオンステートに切り換える。この動作は、図5のステップS36の動作に相当するものである。なお、モータ駆動制御装置1は、一状態の中でPWM信号のデューティ比をPWM信号の周期毎に更新するが、図25では、説明を簡単にするために全期間に亘りPWM信号のデューティ比を50とした。状態0では、非通電相はW相の駆動信号である。そのため、モータ駆動制御装置1は、W相の駆動信号を比較対象検出信号SPとして選択する。つまり、モータ駆動制御装置1のコンパレータ15には、W相の駆動信号を比較対象検出信号SPとセンタータップ電圧CTとが入力される。そして、コンパレータ15は、比較対象検出信号SPがセンタータップ電圧CTよりも高い場合、出力信号CMP_OUTをハイレベルとし、比較対象検出信号SPがセンタータップ電圧CTよりも低い場合、出力信号CMP_OUTをローレベルとする。そして、モータ駆動制御装置1は、BEMF割り込みが発生するとコンパレータ15の出力信号CMP_OUTの値をサンプリングする。この動作は、図5のステップS23の動作に相当するものである。図25に示す例では、コンパレータ15の出力信号CMP_OUTとして、PWMデモジュレータ21によりサンプリングされた出力信号CMP_OUTを示した。なお、図25に示す例では、コンパレータ15の出力信号CMP_OUTが比較対象検出信号SPとセンタータップ電圧CTとの電圧関係を誤判定する期間例えば、コンパレータ15の出力信号がパルス状の波形となる期間が存在する。この現象は、コンパレータ15に入力されるノイズ、或いは、オルタネートPWM方式の動作に起因して生じるものである。また、モータ駆動制御装置1は、サンプリングされたコンパレータ15の出力信号CMP_OUTの値に基づきコンパレータ積分値を増減させる。より具体的には、モータ駆動制御装置1は、フライバックパルスフィルタ処理がなされる期間例えば、フライバックパルス継続PWMパルス数FB_MASKで示す期間においては、比較対象検出信号SPとセンタータップ電圧CTとの電圧関係に関わらずコンパレータ積分値CMP_INTGを増加させる。この動作は、図6のステップS44及び図8のステップS63の動作に相当するものである。また、モータ駆動制御装置1は、フライバックパルスフィルタ処理がなされる期間が終了すると、コンパレータ15の出力信号CMP_OUTがハイレベルである場合コンパレータ積分値CMP_INTGを増加させ、コンパレータ15の出力信号CMP_OUTがローレベルである場合コンパレータ積分値CMP_INTGを減少させる。この動作は、図9のステップS70~S72の動作に相当するものである。また、モータ駆動制御装置1は、PWM周期タイマ割り込みが発生する毎にステートPWMパルス数ST_PWM_PLSを増加させる。この動作は、図6のステップS41の動作に相当するものである。モータ駆動制御装置1は、第1の条件と第2の条件のいずれか一方を満たした場合、PWM信号の状態を次状態に遷移させる。ここで、第1の条件とは、現状態例えば、状態0のステートPWMパルス数ST_PWM_PLS[0]が移動平均ステートPWMパルス数ST_PWM_PLS_AVEに達したことである。なお、また、移動平均ステートPWMパルス数ST_PWM_PLS_AVEは、前状態例えば、状態0のステートPWMパルス数ST_PWM_PLS[0]と、前状態よりも前の5つの状態のステートPWMパルス数ST_PWM_PLS[5]~ST_PWM_PLS[1]との合計値を状態数である6で除算して得られる値である。また、第2の条件は、コンパレータ積分値CMP_INTGがカウント初期値例えば、ゼロに達したことである。第1の条件に応じて生じる状態の遷移は、図9のステップS84及びステップS85の動作に相当するものである。第2の条件に応じて生じる条件の遷移は、図9のステップS77及びステップS78の動作に相当するものである。図25に示す例では、コンパレータ積分値CMP_INTGがゼロに達したこと、つまり、第2の条件を満たしたことに応じてPWM信号の状態遷移が行われた例を示した。続いて、モータ駆動制御装置1がモータ4を一回転させる期間の動作について説明する。モータ駆動制御装置1は、モータ4を一回転させる間にPWM信号を6回状態遷移させる。そこで、図26に、モータ駆動制御装置1においてデューティ比が50のPWM信号を生成した場合の状態0~状態5の駆動信号及びセンタータップ電圧を説明するタイミングチャートを示す。なお、PWM信号UH、UL、VH、VL、WH、WLの信号波形は、図24で説明した状態0の信号波形と同等の波形が状態の遷移に対応したものであるあるため、ここでは信号波形についての詳細な説明は省略する。図26に示すように、モータ駆動制御装置1は、状態0において、PWM信号WHをハイレベル、PWM信号WLをローレベルとすることでW相の駆動信号を非通電相とする。一方、モータ駆動制御装置1は、PWM信号UH、UL、VH、VLを制御してオンステートにおいてU相からV相に向かって駆動電流を流し、オフステートにおいてU相とV相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧CTは、W相の駆動信号の電圧変動に対応した電圧変動を生じる。また、モータ駆動制御装置1は、状態1において、PWM信号VHをハイレベル、PWM信号VLをローレベルとすることでV相の駆動信号を非通電相とする。一方、モータ駆動制御装置1は、PWM信号UH、UL、WH、WLを制御してオンステートにおいてU相からW相に向かって駆動電流を流し、オフステートにおいてU相とW相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧CTは、V相の駆動信号の電圧変動に対応した電圧変動を生じる。また、モータ駆動制御装置1は、状態2において、PWM信号UHをハイレベル、PWM信号ULをローレベルとすることでU相の駆動信号を非通電相とする。一方、モータ駆動制御装置1は、PWM信号VH、VL、WH、WLを制御してオンステートにおいてV相からW相に向かって駆動電流を流し、オフステートにおいてV相とW相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧CTは、U相の駆動信号の電圧変動に対応した電圧変動を生じる。また、モータ駆動制御装置1は、状態3において、PWM信号WHをハイレベル、PWM信号WLをローレベルとすることでW相の駆動信号を非通電相とする。一方、モータ駆動制御装置1は、PWM信号UH、UL、VH、VLを制御してオンステートにおいてV相からU相に向かって駆動電流を流し、オフステートにおいてV相とU相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧CTは、W相の駆動信号の電圧変動に対応した電圧変動を生じる。また、モータ駆動制御装置1は、状態4において、PWM信号VHをハイレベル、PWM信号VLをローレベルとすることでV相の駆動信号を非通電相とする。一方、モータ駆動制御装置1は、PWM信号UH、UL、WH、WLを制御してオンステートにおいてW相からU相に向かって駆動電流を流し、オフステートにおいてW相とU相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧CTは、V相の駆動信号の電圧変動に対応した電圧変動を生じる。また、モータ駆動制御装置1は、状態5において、PWM信号UHをハイレベル、PWM信号ULをローレベルとすることでU相の駆動信号を非通電相とする。一方、モータ駆動制御装置1は、PWM信号VH、VL、WH、WLを制御してオンステートにおいてW相からV相に向かって駆動電流を流し、オフステートにおいてW相とV相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧CTは、U相の駆動信号の電圧変動に対応した電圧変動を生じる。続いて、図27に、モータ駆動制御装置1においてデューティ比が50のPWM信号を生成した場合の状態0~状態5のモータ駆動制御装置1の動作を説明するタイミングチャートを示す。なお、フライバックパルスフィルタ、コンパレータ積分値CMP_INTG、ステートPWMパルス数ST_PWM_PLSに関する動作は、図25で説明した状態0の動作と同等の動作であるため、ここでは、これらの動作に関する詳細な説明は省略する。図27に示すように、モータ駆動制御装置1は、状態0において比較対象検出信号SPとしてW相の駆動信号を選択し、状態1において比較対象検出信号SPとしてV相の駆動信号を選択し、状態2において比較対象検出信号SPとしてU相の駆動信号を選択し、状態3において比較対象検出信号SPとしてW相の駆動信号を選択し、状態4において比較対象検出信号SPとしてV相の駆動信号を選択し、状態5において比較対象検出信号SPとしてU相の駆動信号を選択する。そして、各状態において、コンパレータ15により、比較対象検出信号SPとセンタータップ電圧CTとを比較する。そして、コンパレータ15の出力信号CMP_OUTの値に基づきコンパレータ積分値CMP_INTGを算出する。このとき、コンパレータ積分値CMP_INTGは、偶数番目の状態では増加後に減少する変動を示し、奇数番目の状態では減少後に増加する変動を示す。なお、図27に示す例では、いずれの状態においても、コンパレータ15が2つの入力信号間の電圧関係を誤判定する状態が生じている。しかし、モータ駆動制御装置1では、コンパレータ積分値CMP_INTGがゼロになったことにより比較対象検出信号SPとセンタータップ電圧CTとの間のゼロクロスを検出して、ロータの位置検出を行うことができる。また、モータ駆動制御装置1は、現状態と現状態より以前の5つの状態のステートPWMパルス数ST_PWM_PLSの合計値から次状態で利用される移動平均ステートPWMパルス数ST_PWM_PLS_AVEを算出する。そして、モータ駆動制御装置1は、ステートPWMパルス数ST_PWM_PLSが移動平均ステートPWMパルス数ST_PWM_PLS_AVEに達したこと、又は、コンパレータ積分値CMP_INTGがゼロに達したことのいずれか一方の条件が満たされたことに応じてPWM信号の状態を遷移させる。続いて、PWM信号のデューティ比を100とした場合のモータ駆動制御装置1の動作について説明する。図28に、デューティ比が100のPWM信号を生成した場合の状態0~状態5の駆動信号及びセンタータップ電圧を説明するタイミングチャートを示す。図28に示すように、状態0では、モータ駆動制御装置1は、駆動電流の経路となるハイサイドトランジスタPU及びローサイドトランジスタNVを導通状態とする。そのため、モータ駆動制御装置1は、PWM信号UH及びPWM信号VLのみをオンステートとし、その他のPWM信号はオフステートとする。これにより、非通電相となるW相の駆動信号にロータ位置に従った電位変動が生じる。状態1では、モータ駆動制御装置1は、駆動電流の経路となるハイサイドトランジスタPU及びローサイドトランジスタNWを導通状態とする。そのため、モータ駆動制御装置1は、PWM信号UH及びPWM信号WLのみをオンステートとし、その他のPWM信号はオフステートとする。これにより、非通電相となるV相の駆動信号にロータ位置に従った電位変動が生じる。状態2では、モータ駆動制御装置1は、駆動電流の経路となるハイサイドトランジスタPV及びローサイドトランジスタNWを導通状態とする。そのため、モータ駆動制御装置1は、PWM信号VH及びPWM信号WLのみをオンステートとし、その他のPWM信号はオフステートとする。これにより、非通電相となるU相の駆動信号にロータ位置に従った電位変動が生じる。状態3では、モータ駆動制御装置1は、駆動電流の経路となるハイサイドトランジスタPV及びローサイドトランジスタNUを導通状態とする。そのため、モータ駆動制御装置1は、PWM信号VH及びPWM信号ULのみをオンステートとし、その他のPWM信号はオフステートとする。これにより、非通電相となるW相の駆動信号にロータ位置に従った電位変動が生じる。状態4では、モータ駆動制御装置1は、駆動電流の経路となるハイサイドトランジスタPW及びローサイドトランジスタNUを導通状態とする。そのため、モータ駆動制御装置1は、PWM信号WH及びPWM信号ULのみをオンステートとし、その他のPWM信号はオフステートとする。これにより、非通電相となるV相の駆動信号にロータ位置に従った電位変動が生じる。状態5では、モータ駆動制御装置1は、駆動電流の経路となるハイサイドトランジスタPW及びローサイドトランジスタNVを導通状態とする。そのため、モータ駆動制御装置1は、PWM信号WH及びPWM信号VLのみをオンステートとし、その他のPWM信号はオフステートとする。これにより、非通電相となるU相の駆動信号にロータ位置に従った電位変動が生じる。続いて、図29に、モータ駆動制御装置1においてデューティ比が100のPWM信号を生成した場合の状態0~状態5のモータ駆動制御装置1の動作を説明するタイミングチャートを示す。なお、フライバックパルスフィルタ、コンパレータ積分値CMP_INTG、ステートPWMパルス数ST_PWM_PLSに関する動作は、図25で説明した状態0の動作と同等の動作であるため、ここでは、これらの動作に関する詳細な説明は省略する。図29に示すように、モータ駆動制御装置1は、状態0において比較対象検出信号SPとしてW相の駆動信号を選択し、状態1において比較対象検出信号SPとしてV相の駆動信号を選択し、状態2において比較対象検出信号SPとしてU相の駆動信号を選択し、状態3において比較対象検出信号SPとしてW相の駆動信号を選択し、状態4において比較対象検出信号SPとしてV相の駆動信号を選択し、状態5において比較対象検出信号SPとしてU相の駆動信号を選択する。そして、各状態において、コンパレータ15により、比較対象検出信号SPとセンタータップ電圧CTとを比較する。そして、コンパレータ15の出力信号CMP_OUTの値に基づきコンパレータ積分値CMP_INTGを算出する。このとき、コンパレータ積分値CMP_INTGは、偶数番目の状態では増加後に減少する変動を示し、奇数番目の状態では減少後に増加する変動を示す。なお、図29に示す例では、いずれの状態においても、コンパレータ15は2つの入力信号間の電圧関係について誤判定を生じることなく正しく判定している。これは、モータ4の回転速度が高く、一状態の時間が短いすなわちステートPWMパルス数ST_PWMPLSが小さいため、非通電相の電位変化の傾きが大きい。そのため、コンパレータ15に入力される2つの信号の電位差が小さな期間が小さい。このようなことから、モータ4の回転速度が高い場合、コンパレータ15が入力信号の電圧関係を誤判定確率が小さくなる。また、非通電相の電位変化の傾きが大きいため、コンパレータ15の入力オフセットがコンパレータ積分値CMP_INTGに与える影響も少なくなる。なお、モータ駆動制御装置1では、コンパレータ積分値CMP_INTGがゼロになったことにより比較対象検出信号SPとセンタータップ電圧CTとの間のゼロクロスを検出するため、モータ4の回転速度によらず、ロータの位置検出精度を保つことができる。また、モータ駆動制御装置1は、現状態と現状態より以前の5つの状態のステートPWMパルス数ST_PWM_PLSの合計値から次状態で利用される移動平均ステートPWMパルス数ST_PWM_PLS_AVEを算出する。そして、モータ駆動制御装置1は、ステートPWMパルス数ST_PWM_PLSが移動平均ステートPWMパルス数ST_PWM_PLS_AVEに達したこと、又は、コンパレータ積分値CMP_INTGがゼロに達したことのいずれか一方の条件が満たされたことに応じてPWM信号の状態を遷移させる。続いて、実施の形態1にかかるモータ駆動制御装置1におけるPWM信号の生成方法について具体的な波形を示して説明する。つまり、実施の形態1にかかるモータ駆動制御装置1における図15で示したPWMプリモジュレーション処理についてここで説明する。モータ駆動制御装置1は、図14のレギュレーションループ調停処理において決定されたPWM信号のオンタイムPWM_ONに基づきPWM信号のデューティ比を決定する。まず、レギュレーションループ調停処理において決定されたPWM信号のデューティ比が最大デューティ設定値よりも大きな場合のPWM信号のオンタイムPWMの決定手順を示すタイミングチャートを図30に示す。図30に示すように、この場合、レギュレーションループ調停処理により決定されたPWM信号のデューティ比に基づき生成されるオリジナルPWM信号は、PWM信号のオンタイムPWM_ONが最大デューティ設定値MAX_DUTYよりも長くなる。そのため、PWM信号のオンタイムPWM_ONからPWM信号の周期PWM_TRMを引いた値を繰越オンタイムCRY_PWM_ONとして算出する。そして、周期TRM1のPWM信号のオンタイムPWM_ONとしてPWM信号の周期PWM_TRMと同じ値を設定する。この場合、モータ駆動制御装置1は、周期TRM1のBEMFタイマ割り込みを周期タイマ割り込みの少し前に発生させることになる。そして、周期TRM1の次の周期TRM2において、PWM信号のオンタイムPWM_ONに周期TRM1で算出された繰越オンタイムCRY_PWM_ONを加算して周期TRM2のPWM信号のオンタイムPWM_ONを算出する。図30で示したようにPWM信号のオンタイムPWM_ONを決定することで、ハードウェアの限界により決定される最大デューティ比よりも大きなデューディ比のPWM信号を生成することができる。なお、この処理は、図15のステップS140~S142の処理に該当するものである。続いて、レギュレーションループ調停処理において決定されたPWM信号のデューティ比が最小デューティ設定値よりも小さな場合のPWM信号のオンタイムPWMの決定手順を示すタイミングチャートを図31に示す。図31に示すように、この場合、レギュレーションループ調停処理により決定されたPWM信号のデューティ比に基づき生成されるオリジナルPWM信号は、PWM信号のオンタイムPWM_ONが最小デューティ設定値MIN_DUTYよりも短くなる。そのため、PWM信号のオンタイムPWM_ONを繰越オンタイムCRY_PWM_ONとして算出する。そして、周期TRM2のPWM信号のオンタイムPWM_ONとしてゼロを設定する。この場合、モータ駆動制御装置1は、周期TRM2においてオンタイムがないためBEMFタイマ割り込みを発生させない。そして、周期TRM2の次の周期TRM3において、PWM信号のオンタイムPWM_ONに周期TRM2で算出された繰越オンタイムCRY_PWM_ONを加算して周期TRM2のPWM信号のオンタイムPWM_ONを算出する。図31で示したようにPWM信号のオンタイムPWM_ONを決定することで、ハードウェアの限界により決定される最小デューティ比よりも小さなデューディ比のPWM信号を生成することができる。なお、この処理は、図15のステップS143~S145の処理に該当するものである。続いて、レギュレーションループ調停処理において決定されたPWM信号のデューティ比が最小デューティ設定値以上、且つ、最大デューティ設定値以下の場合のPWM信号のオンタイムPWMの決定手順を示すタイミングチャートを図32に示す。図32に示すように、この場合、レギュレーションループ調停処理により決定されたPWM信号のデューティ比に基づき生成されるオリジナルPWM信号は、PWM信号のオンタイムPWM_ONが最小デューティ設定値MIN_DUTYよりも長く、かつ、最大デューティ設定値よりも短くなる。そのため、モータ駆動制御装置1は、繰越オンタイムCRY_PWM_ONにゼロを設定し、オリジナルPWM信号と同じオンタイムのPWM信号を生成する。なお、この処理は、図15のステップS146の処理に該当するものである。上記説明より、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、コンパレータ積分値CMP_INTGに基づきロータの位置検出を行う。そして、ロータの位置検出結果に基づきPWM信号の状態を遷移させる。ここで、コンパレータ15は、一般的に、入力オフセット及び入力ノイズ等の誤判定要因を有する。しかし、コンパレータ積分値CMP_INTGでは、コンパレータ15において誤判定が生じたとしても、PWM信号がオルタネートPWM方式で生成されることによって交流化された複数の誤判定の成分により誤判定の成分が互いに相殺される。そのため、コンパレータ積分値CMP_INTGに基づきロータの位置を検出することで、コンパレータ15の誤判定要因によらず精度の高いロータの位置検出を行うことができる。特に、モータ4が低速で回転している場合、非通電相の電圧変化が緩やかであり、誤判定が生じる頻度が多くなる。しかし、コンパレータ積分値CMP_INTGに基づきロータの位置を検出することで、モータ4の回転速度が低い場合であっても、ロータの位置検出精度を低下させることがない。このようなことから、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1は、モータ4の回転速度によらず、精度の高いロータ位置検出を行うことが可能であり、モータ4に対する制御性を向上させることができる。また、従来のモータ駆動方法では、モータを一回転させる間に利用される複数の状態間の時間差を解消することが難しい問題があった。例えば、従来のモータ駆動方法では、コンパレータを用いてセンタータップ電圧CTと駆動信号とのゼロクロス、又は、基準電圧と駆動信号とのゼロクロスを検出し、当該検出結果に基づきPWM信号の状態遷移タイミングを算出していた。例えば、コンパレータを用いてセンタータップ電圧CTと駆動信号とのゼロクロスを検出した場合、コンパレータの入力オフセット電圧等に起因して奇数番目の状態と偶数番目の状態とでゼロクロスの検出タイミングがずれて、状態間に時間差が生じる。また、コンパレータを用いて基準電圧と駆動信号とのゼロクロスを検出した場合、ステート毎に動的に基準電圧を変化させることでゼロクロスの検出タイミングのずれを解消できるが、この基準電圧の調整には再帰的な挙動を伴うため安定した状態に収束させることが難しい問題がある。状態間の時間差がある場合、相対的に長い状態では平均電力が大きくなり、相対的に短い状態では平均電力が小さくなるという現象が生じる。そして、このような現象が発生すると、モータが一回転する間の回転トルク及び回転速度が不安定になり、ビートが発生する問題が発生する問題が生じる。また、状態間の時間差がある場合、最大回転トルク又は最大回転速度が相対的に長い状態で発生するが、相対的に短い状態においては最大回転トルク又は最大回転速度を発生できない。つまり、一回転を通じて最大回転トルク又は最大回転速度を発生できず、一回転を通じて発生される平均最大トルク又は最大回転速度が低下する問題が生じる。しかし、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、現状態を含む6状態の合計値から次状態で利用される移動平均ステートPWMパルス数ST_PWM_PLS_AVEを算出する。そして、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1は、ステートPWMパルス数ST_PWM_PLSが移動平均ステートPWMパルス数ST_PWM_PLS_AVEに達した場合、コンパレータ積分値CMP_INTGがゼロに達していなくてもPWM信号を次状態に遷移させる。このように強制的にPWM信号の状態を遷移させることで、コンパレータ積分値CMP_INTGがゼロに達するまでの時間がそれ以前の6状態の平均値よりも長い場合にも、PWM信号の状態を遷移させ、状態間の時間差を解消することができる。つまり、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、コンパレータ積分値CMP_INTGに基づく制御だけでは相対的に長くなる状態の期間を強制的に短くし、それに伴って、コンパレータ積分値CMP_INTGに基づく制御だけでは相対的に短くなる状態の期間を長くする。このように、状態間の時間差を解消することで、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1は、モータをより低速まで安定して駆動することが可能になる。また、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、一回転を通じて一定の回転トルク又は回転速度を維持できるため、ビートの発生を防止することができる。さらに、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、状態間の時間差を解消できるため、一回転を通じて最大回転トルク又は最大回転速度を発揮することができ、モータの回転効率を向上させることができる。また、オルタネートPWM方式による動作を行うことで、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1は、コンパレータ15の入力オフセット及び入力ノイズがコンパレータ積分値CMP_INTGに及ぼす影響を低減することができる。これにより、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1は、モータ4が低速で回転している場合におけるPWM信号の状態遷移タイミングの精度をさらに向上させることが可能である。なお、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1のオルタネートPWM方式の動作は、同期整流動作を含み、電力効率を向上させる効果がある。また、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、PWM信号のデューティ比がハードウェア上の最大デューティ比又は最小デューティ比を超えたものであったとしても、複数の周期のPWM信号を利用して一つのパルスを生成する。これにより、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、ハードウェア上の最大デューティ比又は最小デューティ比の制限を超えたデューティ比のPWM信号を生成することができる。また、PWM信号のデューティ比の設定範囲が広いことから、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1は従来の一般的なモータ制御装置よりもモータ4の制御範囲を拡大することができる。また、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、ロータのスタッキングを防止することができる。スタッキングは、ロータの加速量が高すぎると、ロータの回転速度が速度制御を超えてオーバーシュートしロータ回転とステータ回転磁界の位相差が180°となる状態で発生する。180°位相差を持つ信号が利得1以上で負帰還すると異常発振ロータスタックの原因となる。減速時も同様である。しかし、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、図11のステップS101で示したように、現在の回転速度に係数を乗じて得られた最大許容加速度又は最大許容減速度に応じて速度誤差の負帰還量を制限する。つまり、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、加速度又は減速度を一定に制限する。つまり、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、加速度減速度を制限することで、負帰還量を制限し、制御速度から回転速度のオーバーシュートアンダーシュートを防ぐことができる。つまり、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、ロータがスタックする原因を除去し、ロータのスタッキングを防止することができる。さらに、また、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、ロータのスタッキングに伴うモータの唸りを防止することができる。スタッキング発生後の唸り音防止は、速度制御ループによって実施される。スタッキング発生中は、本来の回転速度範囲を超えて回転磁界が発生する。この時、速度制御ループは、PWMデューティを低下させる事で回転速度を低下させようとし、結果としてPWMデューティが限りなくゼロに近づき、駆動電力が低下し唸り音が低下する結果となる。また、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、スタックロータ検出設定値よりも6ステート合計PWMパルス数TTL_ST_PWM_PLSが小さくなったことに応じて、スタッキングが発生したことを検出する。そして、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、モータ4のスタッキングが検出された場合は、再度初期状態から制御を再開することができる図3のステップS7。これにより、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、モータ4をスタッキング状態から脱出させることができる。また、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、タイマ割り込みのみ上記説明では、BEMFタイマ割り込みと周期タイマ割り込みでPWM信号のオンステートとオフステート切り換え及びPWM信号の周期の切り換えを行う。より具体的には、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、PWM信号の周期を次周期に移行させる周期タイマ割り込みの発生に応じて、次周期のPWM信号のデューティ比の決定と、状態を遷移させるか否かについて判断する。また、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、BEMFタイマ割り込みに応じて、コンパレータ15の出力信号CMP_OUTの値のサンプリング及びPWM信号のオンステートからオフステートへの切り換えを行う。このように、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、割り込み要因をタイマ割り込みだけとすることで、演算コア10に要求される演算能力の小さくすることができる。つまり、演算能力の高い演算コアを必要としないため、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1は、より多くのマイクロコンピュータにおいて実行又は実現することができる。さらに、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、BEMFタイマ割り込みに応じてコンパレータ15の出力信号CMP_OUTをサンプリングする。つまり、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、常に、PWM信号のオンステートに最も近い時点においてコンパレータ15の出力信号CMP_OUTをサンプリングすることができる。一般的に、PWM信号のオンステートの終期が最もセンタータップ電圧CT及び比較対象検出信号SPの値が安定する時点であり、このタイミングでコンパレータ15の出力信号CMP_OUTをサンプリングすることで、より精度の高いゼロクロス検出を行うことが可能である。ここで、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、BEMFタイマ割り込みに応じてコンパレータ15の出力信号CMP_OUTをサンプリングするが、これは、PWMデモジュレーション処理の動作に相当する。このように、PWMデモジュレーション処理によりコンパレータ15の出力信号CMP_OUTをサンプリングことで、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、PWM信号のパルスをデジタルサンプリングによるバンドノッチフィルタリングしているのでアナログフィルタを必要としない。これは、BEMFタイマ割り込みが発生するタイミングは、PWM信号のオンステートの終期の直前であるため、PWM信号のオフステートで生成されるパルスの影響がサンプリングする値に影響を与えないためである。このようなことから、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1によれば、PWM信号のパルスをフィルタリングするアナログフィルタ等を設ける必要がないため、回路設計の容易化、実装面積の小面積化を実現することができる。また、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、セレクタ14により3つの駆動信号のうち非通電相となる駆動信号を比較対象駆動信号SPとして選択し、1つのコンパレータにより比較対象駆動信号SPとセンタータップ電圧CTとの比較処理を行う。つまり、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、3相の駆動信号に対する比較動作においてチャンネル間誤差が生じない。このようなことから、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1によれば、比較対象駆動信号SPとセンタータップ電圧CTとの比較精度を高めることができる。また、従来のモータの制御方法では、PWM信号のオンステートからオフステートへの切り換えは、駆動電流のモニタ結果に応じて行われる。例えば、従来のモータの制御方法では、駆動電流が基準電流値を超えたことに応じてPWM信号をオンステートからオフステートに移行させる。このとき、一般的な制御ループでは、駆動電流をモニタした後、そのモニタ結果が出力に反映されるまでの間に所定の遅延時間が発生する。そして、PWM生成を行う場合、この遅延時間により、PWM信号の最小デューティ比が決定される。ここで、定電流駆動制御を行う場合は、負荷トルクが重くなった場合パルス入力電流を一定に維持しながら平均入力電流を減少させます。このとき、平均出力駆動電流は一定であるためロータの永久磁石が減磁される可能性を防止できます。また、負荷の静止トルクが一定の駆動電流で賄える駆動トルクよりも重い場合、モータ4を回転始動させることは出来ません。また、ロータが機械的に拘束された場合、最小デューティ比よりも短いパルス幅の電流を作ることが出来ない場合、電流制限が機能しなくなる問題が生じます。電流制限が機能しない場合、パワーMOSFETが焼損する原因となります。また、この状態が継続された場合、ロータの温度上昇により永久磁石が減磁される問題があります。また、駆動電流のモニタ結果に基づきPWM信号をオフステートとする場合、電流制限によるパワーMOSFETのターンオフタイミングがいつ発生するかが負荷状態により変化する。そのため、非通電相の駆動信号の電圧値をいつのタイミングでサンプリングするのかが不確定となるもう一つ問題点が生じる。結果として定電流駆動制御がアクティブとなったとたん、センサレス回転制御を継続させることが出来なくなり、モータ4の回転が検出できなかった場合、一旦駆動を停止させて時間を置いて再起動させるシーケンスが必要となります。一方、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1における定電流駆動制御では、負荷トルクが重くなった時にパルス入力電流が増加しますが平均入力電流を一定に維持することが可能です。そして、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1は、平均出力駆動電流を増加させて定電力でモータ4を回転させる。これにより、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1では、重い静止トルクが負荷となった場合であってもロータを回転させることが可能になる。また、モータ4が機械的に拘束され最小デューティ比よりも短いパルス幅の電流が要求された時、実施の形態1にかかるモータ駆動制御プログラム及びモータ駆動制御装置1は、PWMプリモジュレータが0デューティのスキップパルスを挿入することにより、結果として平均入力電流が一定に保持される様に制御を行う。これにより、パワーMOSFETが焼損される可能性を防ぐことができる。また、PWMデモジュレータ21がPWMモジュレータ22を駆動する設計では、パワーMOSFETを何時ターンオフさせるかが確定的である為、定電流駆動制御がアクティブとなった状態においても非通電相の駆動信号の電圧を適切なタイミングでサンプリングさせることが可能であり、回転を継続させることが出来ます。実施の形態2実施の形態2では、実施の形態1で説明したオルタネートPWM方式の動作の変形例について説明する。そこで、実施の形態2にかかるモータ駆動制御プログラムが生成するPWM信号に基づくオルタネートPWM方式の動作を説明するための図を図33~図38に示す。なお、図33~図38は、図17~図22の回路図に対応するものであり、図33~図38において図17~図22に対応するものについては同じ符号を付して説明を省略する。図33は、実施の形態2にかかるモータ駆動制御装置の状態0におけるオルタネートPWM方式の動作を説明するためのドライバ回路のブロック図である。図33に示すように、実施の形態2では、状態0のハイサイドオフステートにおいてローサイドトランジスタNU、NVに加えてローサイドトランジスタNWをオンさせる。また、実施の形態2では、状態0のローサイドオフステートにおいてハイサイドトランジスタPU、PVに加えてハイサイドトランジスタPWをオンさせる。図34は、実施の形態2にかかるモータ駆動制御装置の状態1におけるオルタネートPWM方式の動作を説明するためのドライバ回路のブロック図である。図34に示すように、実施の形態2では、状態1のハイサイドオフステートにおいてローサイドトランジスタNU、NWに加えてローサイドトランジスタNVをオンさせる。また、実施の形態2では、状態1のローサイドオフステートにおいてハイサイドトランジスタPU、PWに加えてハイサイドトランジスタPVをオンさせる。図35は、実施の形態2にかかるモータ駆動制御装置の状態2におけるオルタネートPWM方式の動作を説明するためのドライバ回路のブロック図である。図35に示すように、実施の形態2では、状態2のハイサイドオフステートにおいてローサイドトランジスタNV、NWに加えてローサイドトランジスタNUをオンさせる。また、実施の形態2では、状態2のローサイドオフステートにおいてハイサイドトランジスタPV、PWに加えてハイサイドトランジスタPUをオンさせる。図36は、実施の形態2にかかるモータ駆動制御装置の状態3におけるオルタネートPWM方式の動作を説明するためのドライバ回路のブロック図である。図36に示すように、実施の形態2では、状態3のハイサイドオフステートにおいてローサイドトランジスタNV、NUに加えてローサイドトランジスタNWをオンさせる。また、実施の形態2では、状態3のローサイドオフステートにおいてハイサイドトランジスタPV、PUに加えてハイサイドトランジスタPWをオンさせる。図37は、実施の形態2にかかるモータ駆動制御装置の状態4におけるオルタネートPWM方式の動作を説明するためのドライバ回路のブロック図である。図37に示すように、実施の形態2では、状態4のハイサイドオフステートにおいてローサイドトランジスタNW、NUに加えてローサイドトランジスタNVをオンさせる。また、実施の形態2では、状態4のローサイドオフステートにおいてハイサイドトランジスタPW、PUに加えてハイサイドトランジスタPVをオンさせる。図38は、実施の形態2にかかるモータ駆動制御装置の状態5におけるオルタネートPWM方式の動作を説明するためのドライバ回路のブロック図である。図37に示すように、実施の形態2では、状態5のハイサイドオフステートにおいてローサイドトランジスタNV、NWに加えてローサイドトランジスタNUをオンさせる。また、実施の形態2では、状態5のローサイドオフステートにおいてハイサイドトランジスタPV、PWに加えてハイサイドトランジスタPUをオンさせる。このようなオルタネートPWM方式の動作を行うことで、実施の形態1では、オフ状態であった非通電相に対応した駆動段回路のトランジスタのボディダイオードで消費されたフライバック電流を、オン状態のトランジスタにおいて消費することが可能になる。このような動作は、ロータに対する回生ブレーキとして機能する。そこで、回生ブレーキ動作の有無による入出力特性を比較するグラフを図39に示す。図39に示すように、回生ブレーキ動作を行った場合、入力される電力が小さい場合の回転速度が回生ブレーキ動作を行わない場合に比べて低くなっていることがわかる。また、入力電力の範囲が同じである場合、モータ4の回転速度の制御範囲が回生ブレーキ動作を行った場合の方が広くなっていることがわかる。ここで、回生ブレーキ動作を伴うオルタネートPWM方式の動作を行った場合のPWM信号について説明する。そこで、実施の形態2にかかるモータ駆動制御装置においてデューティ比が50のPWM信号を生成した場合の状態0の駆動信号及びセンタータップ電圧を説明するタイミングチャートを図40に示す。図40に示すように、回生ブレーキ動作を行う場合、状態0において非通電相となるW相の駆動信号に対応するPWM信号WH、WLにもパルスを与える。より具体的には、PWM信号WHは、ローサイドオフステートの期間においてローレベルとなり、その他の期間はハイレベルを維持する。また、PWM信号WLは、ハイサイドオフステートの期間においてハイレベルとなり、その他の期間はローレベルを維持する。これにより、ハイサイドオフステート期間とローサイドオフステート期間において回生ブレーキ動作が行われる。続いて、実施の形態2にかかるモータ駆動制御装置においてデューティ比が50のPWM信号を生成した場合の状態0~状態5の駆動信号及びセンタータップ電圧の動作を説明するタイミングチャートを図41に示す。図41に示すように、状態1~状態5においても状態0と同様に非通電相となる駆動信号に対応するPWM信号に回生ブレーキ動作のためのパルスが与えられる。上記説明より、実施の形態2にかかるモータ駆動制御プログラムによれば、ハイサイドオフステート期間においてローサイドトランジスタをすべてオンさせ、ローサイドオフステート期間においてハイサイドトランジスタをすべてオンさせる。これにより、実施の形態2にかかるモータ駆動制御プログラムは、ハイサイドオフステート期間とローサイドオフステート期間において回生ブレーキ動作を行う。そして、この回生ブレーキ動作により、モータ4の回転速度が抑制されるため、同じ入力電力に対してより低い回転速度でモータ4を回転させることができる。このとき、回生ブレーキの効力は、PWM信号のデューティ比が小さいほど大きくなる。つまり、回生ブレーキ動作を行うことで、モータ4の回転速度は、低速側においてより低回転になり、高速側では回生ブレーキ動作がない場合と同等となる。従って、実施の形態2にかかるモータ駆動制御プログラムによれば、同じ入力電力の範囲に対して、モータ4の回転速度の制御範囲を広げることができる。なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本願発明は、別の観点から以下の発明を含む。付記1モータの回転位置に応じて生成するPWM信号の状態を遷移させる演算コアと、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記PWM信号の現状態の前記PWM信号のパルス数をカウントしたPWM信号カウント数が、前記モータを一回転させる間に遷移した各状態における前記PWM信号の平均パルス数を示す平均PWM信号パルス数に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記PWM信号の状態を次状態に遷移させるモータの駆動制御プログラム。付記2前記コンパレータの出力が前記比較対象検出信号よりも前記センタータップ電圧の方が低いことを示す場合はコンパレータ積分値をカウントアップし、前記コンパレータの出力が前記比較対象検出信号よりも前記センタータップ電圧の方が高いことを示す場合はコンパレータ積分値をカウントダウンし、前記PWM信号の現状態の前記PWM信号のパルス数をカウントしたPWM信号カウント数が、前記平均PWM信号パルス数に達する前に、前記コンパレータ積分値がカウント初期値に達した場合、前記コンパレータ積分値に基づき前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記PWM信号の状態を次状態に遷移させる付記1に記載のモータの駆動制御プログラム。付記3モータの回転位置に応じて生成するPWM信号の状態を遷移させる演算コアと、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記ドライバに流れる駆動電流と電流指示値との間の誤差を示す電流誤差又は前記モータの回転速度と回転速度指示値との間の誤差を示す回転誤差から前記PWM信号のデューティ比を算出し、前記デューティ比から計算される前記PWM信号のパルス幅が最小パルス幅を下回った場合、複数の周期の前記PWM信号のオン期間を合算して1つのオンパルスを生成し、最大パルス幅を超えた場合、複数の周期の前記PWM信号のオフ期間を合算して1つのオフパルスを生成するモータの駆動制御プログラム。付記4モータの回転位置に応じて生成するPWM信号の状態を遷移させる演算コアと、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記モータの回転速度と回転速度指示値との間の誤差を示す回転誤差が予め設定される最大許容加速度を超えた場合、前記回転誤差として前記最大許容加速度とし、前記回転誤差が予め設定される最大許容減速度よりも小さくなった場合、前記回転誤差として前記最大許容減速度とし、前記回転誤差に基づき前記PWM信号のデューティ比を算出し、当該デューティ比を有する前記PWM信号を生成するモータの駆動制御プログラム。付記5モータの回転位置に応じて生成するPWM信号の状態を遷移させる演算コアと、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記モータを一回転させる期間に用いられる複数の状態の前記PWM信号のパルス数を示す合計PWM信号パルス数が予め設定されたロータスタック検出値よりも小さくなったことに応じて前記モータの停止状態を検出するモータの駆動制御プログラム。付記6前記ロータスタック検出値は、前記モータに対して規定される最高回転速度で前記モータが一回転する期間に生成される前記PWM信号のパルス数が設定される付記5に記載のモータ駆動制御プログラム。付記7電源配線と接地配線との間にハイサイドトランジスタとローサイドトランジスタとが直列に接続される3組の駆動段回路を有し、選択された2組の前記駆動段回路の前記ハイサイドトランジスタと前記ローサイドトランジスタとが排他的に導通状態に制御されるドライバ回路に対してPWM信号を出力し、モータの回転位置に応じて前記PWM信号の状態を遷移させる演算コアと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号のうち非選択の前記駆動段回路が出力する比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記PWM信号により、前記3組の駆動段回路のうちの1組の駆動段回路のハイサイドトランジスタを導通状態とし、前記3組の駆動段回路の他の1組の駆動段回路のローサイドトランジスタを導通状態とするオンステートと、前記オンステートにおいてハイサイドトランジスタが導通状態される駆動段回路のローサイドトランジスタを導通状態とし、前記他の1組の駆動段回路のローサイドトランジスタを導通状態とするハイサイドオフステートと、前記1組の駆動段回路のハイサイドトランジスタを導通状態とし、前記オンステートにおいてローサイドトランジスタが導通状態される駆動段回路のローサイドトランジスタを導通状態とするローサイドオフステートと、に制御し、前記ハイサイドオフステートと前記ローサイドオフステートとを前記PWM信号の生成サイクル毎に切り換えるモータの駆動制御プログラム。付記8前記PWM信号を、前記ハイサイドオフステート駆動において、前記オンステートにおいてハイサイドトランジスタとローサイドトランジスタとがいずれもオフ状態とされる駆動段回路のローサイドトランジスタを導通状態とし、前記ローサイドオフステート駆動において、前記オンステートにおいてハイサイドトランジスタとローサイドトランジスタとがいずれもオフ状態とされる駆動段回路のハイサイドトランジスタを導通状態とするように生成する付記7のモータの駆動制御プログラム。付記9前記電源配線と前記接地配線との間にハイサイドトランジスタとローサイドトランジスタとが直列に接続され、ハイサイドトランジスタとローサイドトランジスタとが排他的に導通状態に制御される3組の駆動段回路を有するドライバ回路にPWM信号を出力し、モータの回転位置に応じて前記PWM信号の状態を遷移させる演算コアと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号から選択した1相の駆動信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記PWM信号により、ドライバ回路を、前記モータに電流が供給されるオンステートと、前記モータへの前記電流の供給を停止するオフステートと、に制御し、前記PWM信号は、前記オフステートにおいて接地配線を介して前記モータに流れる電流を循環させるハイサイドオフステート駆動と、電源配線を介して前記モータに流れる電流を循環させるローサイドオフステート駆動と、を前記PWM信号の生成サイクル毎に切り換えるモータの駆動制御プログラム。付記10モータの回転位置に応じて生成するPWM信号の状態を遷移させる演算コアと、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、第1、第2の設定値に応じて第1、第2のタイマ割り込み要求を前記演算コアに出力するタイマと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記モータの回転状態に応じて算出される前記PWM信号のオンタイム期間に対応する値により、前記第1の設定値を更新し、前記第1の設定値に基づき生成された第1のタイマ割り込み要求に応じて前記PWM信号を前記モータへの駆動電流の供給を指示するオンステートから前記モータへの駆動電流の停止を指示するオフステートに移行させ、前記第2の設定値に応じて前記PWM信号を前記オフステートから前記オンステートに移行させるモータの駆動制御プログラム。付記11前記PWM信号のオンタイム期間が前記PWM信号の一周期の時間よりも長い場合、前記演算コアは、前記PWM信号をオンステートに維持する付記10に記載のモータの駆動制御プログラム。付記12モータの回転位置に応じて生成するPWM信号の状態を遷移させる演算コアと、ドライバ回路を介して前記PWM信号をモータに出力する出力インタフェースと、前記ドライバ回路が前記PWM信号に基づき生成した3相の駆動信号から選択した比較対象検出信号と前記3相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記コンパレータの出力信号の値に応じてコンパレータ積分値を増減し、前記PWM信号の一状態が継続する最大期間を規定するタイムアウト検出期間中に前記コンパレータ積分値がカウント初期値に達した場合は、前記コンパレータ積分値がカウント初期値に達したことに応じて前記PWM信号の状態を次状態に遷移させ、前記タイムアウト検出期間中に前記コンパレータ積分値がカウント初期値に達しなかった場合は、前記タイムアウト検出期間の経過に応じて前記PWM信号の状態を次状態に遷移させ、前記モータを駆動する駆動電流の初期値をゼロとし、前記PWM信号の状態を遷移させる毎に前記駆動電流を徐々に増加させ、前記コンパレータ積分値がカウント初期値に達したことに応じた前記PWM信号の状態の遷移が6回連続して生じたこと応じて前記モータが有効な回転状態となったと判定するモータ駆動制御プログラム。付記13前記モータ駆動制御プログラムは、さらに、状態遷移後に生成される前記PWM信号のパルス数が前記フライバックパルスフィルタ継続パルス数に達するまでの期間に前記コンパレータの出力信号の値によらず、前記コンパレータ積分値を単調増加又は単調減少させるフライバックパルスフィルタ処理を行い。前記モータが有効な回転状態となる前の前記フラバックパルスフィルタ継続パルス数を、前記モータが有効な回転状態となった後よりも小さく設定する付記12に記載のモータ駆動制御プログラム。