JP2009199424A - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP2009199424A
JP2009199424A JP2008041436A JP2008041436A JP2009199424A JP 2009199424 A JP2009199424 A JP 2009199424A JP 2008041436 A JP2008041436 A JP 2008041436A JP 2008041436 A JP2008041436 A JP 2008041436A JP 2009199424 A JP2009199424 A JP 2009199424A
Authority
JP
Japan
Prior art keywords
task
periodic
cycle
cpu
periodic task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008041436A
Other languages
English (en)
Inventor
Masano Terabe
雅能 寺部
Hideaki Ishihara
秀昭 石原
Masatoyo Mizawa
勝豊 見澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2008041436A priority Critical patent/JP2009199424A/ja
Publication of JP2009199424A publication Critical patent/JP2009199424A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)
  • Microcomputers (AREA)

Abstract

【課題】任意のタイミングで発生する割込みを処理しつつ、周期的な信号入力処理又は信号出力処理を実行できるマイクロコンピュータを提供する。
【解決手段】マイクロコンピュータは、CPUが制御周期の冒頭で周期タスクの実行を開始し、その周期タスクの実行が終了した後に非周期タスクの実行を開始するように構成され、周期タスクにおいて周期的な信号入力処理又は信号出力処理を実行し、割込みが発生した場合は、その割込み処理を非周期タスクで実行する。
【選択図】図1

Description

本発明は、CPUが一定の制御周期に基づく処理を繰り返し実行するように構成されるマイクロコンピュータに関する。
例えば、モータをPWM(Pulse Width Modulation)制御する場合に、PWM信号によりモータに通電を行った場合の電流値を、マイクロコンピュータがA/D変換して取得し、通電電流を監視する処理を行うケースがある。この時、マイコンが行うA/D変換処理は、PWM信号の出力タイミング(搬送波周期)に同期して行うことが好ましい。
図10は、上記の処理を行うマイクロコンピュータの構成例を示す。マイクロコンピュータ1は、CPU2,PWM回路3,A/D変換器4,タイマ5等で構成されており、これらはアドレス及びデータバス6を介して接続されている。
PWM回路3は、内部にカウンタ7,サイクルレジスタ8,デューティレジスタ9等を備えている。CPU2は、サイクルレジスタ8,デューティレジスタ9にデータを書き込むことで、PWM信号の搬送波周期及びデューティ比を設定する。そして、PWM回路3は、カウンタ7のカウントデータとレジスタ8,9に設定されたデータとを図示しないコンパレータにより比較することで、所定周期,所定デューティ比のPWM信号を生成出力する。尚、PWM回路3は、PWM信号の立上がりエッジのタイミングで、CPU2に対してPWM割込みを発生させる。
タイマ5は、内部にカウンタ10,コンペアレジスタ11等を備えている。CPU2は、コンペアレジスタ11にデータを書き込むことで、コンペア割込みの発生タイミングを設定する。そして、タイマ5は、カウンタ10のカウントデータとコンペアレジスタ11に設定されたデータとを図示しないコンパレータにより比較することで、CPU2に対してコンペア割込みを発生させる。
尚、CPU2に対しては、例えばマイコン1の外部より通信要求割込み等も発生するようになっており、これらの各種割込みは、図示しない割込み制御回路を介してCPU2に与えられる。
図11は、マイコン1の動作を示すタイミングチャートである。図11(c)に示すようにPWM信号の出力タイミングでPWM割込みが発生すると、CPU2は、タイマ5よりカウンタ10のデータ値を読み出す(図11(e)参照)。カウンタ10は例えば4ビットカウンタであるとする。この場合、カウントデータが「1」であり、CPU2は、コンペアレジスタ11にデータ「7」をセットする(図11(d)参照)。次回のPWM割込みタイミングにおけるカウントデータ「B(HEX)」の場合、コンペアデータは「1」となる。
そして、タイマ5のカウントデータが「7」に達するとコンペア割込みが発生し(図11(f)参照)、CPU2は、A/D変換器4にA/D変換を実行させる(図11(g)参照)。A/D変換結果のデータは、図示しないデータレジスタに格納され(図11 (h)参照)、CPU2は、そのレジスタに格納されたデータ値を読み出す。但しデータレジスタは、CPU2の内部レジスタであっても良い。
尚、上記のような処理を行うマイクロコンピュータは極一般的な構成であるため、先行技術文献を特段に提示する必要はないと考える。
ここで、マイコン1が専ら上記の処理のみを実行する場合には問題ないが、それ以外の処理も並行して行う場合に、より優先度が高い処理要求が割込みとして発生すると(図11(b),割込みA参照)、その割込み処理が先立って開始される。すると、その処理中にコンペア割込みが発生してもマスクされて受付けられず、A/D変換処理がPWM搬送波周期に同期して実行されないケースが生じ、取得したデータの処理精度が低下するという問題があった。
本発明は上記事情に鑑みてなされたものであり、その目的は、任意のタイミングで発生する割込みを処理しつつ、周期的な信号入力処理又は信号出力処理を実行できるマイクロコンピュータを提供することにある。
請求項1記載のマイクロコンピュータによれば、CPUは、制御周期の冒頭で周期タスクの実行を開始し、その周期タスクの実行が終了した後に非周期タスクの実行を開始する。そして、周期タスクにおいて周期的な信号入力処理又は信号出力処理を実行し、割込みが発生した場合は、その割込み処理を非周期タスクで実行する。したがって、周期的な信号入力処理又は信号出力処理を実行するべきタイミングでCPUに割込みが発生しても、その割込みを処理するために周期的な信号処理が妨げられることがなく、信号処理の等時性を維持することができる。
請求項2記載のマイクロコンピュータによれば、周期信号出力回路が、CPUにより設定された周期に基づいて信号を出力する場合、CPUは、その信号出力周期を制御周期と同一に設定し、前記信号の出力に関連して行う入力信号処理を周期タスクで実行する。したがって、マイクロコンピュータが周期的に出力する信号に伴い、変化を呈する可能性がある信号の状態を監視する必要がある場合に、その信号を監視するタイミングが遅延することはなく、監視を一定の周期で確実に行うことができる。
請求項3記載のマイクロコンピュータによれば、信号出力周期を生成するためのタイマカウンタを、下位ビット側をハードウエアカウンタとし、上位ビット側は、CPUがハードウエアカウンタのカウント終了回数を計数するソフトウエアカウンタとして構成する。したがって、ハードウエアとして用意するカウンタの規模(ビット数)を小さくすることができる。
請求項4記載のマイクロコンピュータによれば、プログラムカウンタ制御ユニットには、制御周期に相当するサイクル数をカウントする時間計測手段のカウントデータが与えられると共に、停止タイミングレジスタから非周期タスクの停止タイミングを示すサイクル数が与えられる。そして、プログラムカウンタ制御ユニットは、時間計測手段のカウントデータと停止タイミングを示すサイクル数とを比較し、両者が一致すると、プログラムカウンタを停止して非周期タスクの実行を中断させる。
この後、プログラムカウンタ制御ユニットは、時間計測手段のカウントデータが制御周期の終わりを示す値に一致すると、周期タスクレジスタに格納された周期タスクの先頭アドレスをプログラムカウンタに格納させて、周期タスクの実行を開始させる。すなわち、時間計測手段のカウント数が停止タイミングを示すサイクル数に一致すると、非周期タスクの実行が中断されて周期タスクの実行が開始されるので、周期タスクを周期的に実行させることができる。
(第1実施例)
以下、本発明の第1実施例について図1乃至図7を参照して説明する。本実施例のマイクロコンピュータ(以下、マイコンという)は、周期処理(以下、周期タスクという)と非周期処理(以下、非周期タスクという)とを実行することで所望の処理を行う。具体的には、周期タスクを周期的に実行し、その周期タスクと周期タスクとの間に非周期タスクを実行する。周期タスクは、例えばタイマのカウントや通信処理を行うものなどで、非周期タスクは、例えば周期的な実行を必要としないアプリケーションを実行するもの(割込み処理など)である。
図3は、マイコンのブロック構成図である。この図に示されるように、マイコンM1は、ROM100と、RAM200と、CPU300とを備えており、各々が、アドレスを転送するために用いられるアドレスバス400、データを転送するために用いられるデータバス500に接続されている。
ROM100には、マイコンM1が搭載された製品に、上述のように周期的な処理を実行させる周期タスクと、上記製品の機能等を実現させるアプリケーションとしての非周期タスクとがプログラムとして書き込まれており、それぞれがCPU300により読み出されて実行される。RAM200は、CPU300が周期タスクや非周期タスクを実行する上でデータの書き込み・読み出しを行う際に用いられる。CPU300は、アドレスバス400およびデータバス500を介してROM100に内蔵された各タスクのプログラムを読み出して、周期タスクを周期的に実行すると共に周期タスクの処理の間に非周期タスクを実行し、その際に、読み出した命令を解読(デコード)し、解読した命令に従いデータの移動や演算、加工等を行う。
図4は、CPU300のブロック構成図である。CPU300は、タスクの実行状況を制御する制御ユニット310と、データの格納や算術・論理演算を実行するデータパス320とを備えている。制御ユニット310は、命令デコーダ311と、プログラムカウンタ制御ユニット312とを備えている。命令デコーダ311は、ROM100から取り込んだタスクが示す命令コードをデータパス320を介して格納すると、その命令コードを解読する。プログラムカウンタ制御ユニット312は、命令デコーダ311により解読された命令に基づき演算制御信号を出力してデータパス320を制御する。
データパス320は、ロードストアユニット321と、実行ユニット322と、プログラムカウンタ323(以下、PCと称す)と、レジスタファイル324とを備えている。ロードストアユニット321は、CPU300の外部(例えばROM100)からのデータ読み込み、および外部(例えばRAM200)へのデータ書き込みを制御する。実行ユニット322は、命令デコーダ311で解読された命令コードに従い、プログラムカウンタ制御ユニット312から入力される演算制御信号に応じて算術・論理演算を実行する。
PC323は、次に実行する命令が格納されているROM100のフェッチアドレスを示すもので、CPU300がROM100から命令(プログラム)の読み込みを行なう際、その命令を読み出すためのフェッチアドレスが、PC323からロードストアユニット321を介してアドレスバス400に出力される。また、CPU300がROM100から命令を読み込む度に、読み取った命令の分だけPC323のフェッチアドレス値が増加する。
レジスタファイル324は、実行ユニット322による実行結果データもしくはCPU300の外部より取り込まれたデータを格納するもので、周期タスクの先頭アドレスを格納する周期タスクレジスタ325と、マシンサイクルに同期してカウントダウンするカウンタ326(時間計測手段)と、非周期タスクの停止タイミングを格納する停止タイミングレジスタ327とを備えて構成されている。
上記構成を有するマイコンM1において、CPU300は、メモリから命令を読み込むIF(フェッチ)ステージと、命令を解読するDEC(デコード)ステージと、解読された命令に従って算術・演算やメモリアクセス等のアドレス演算を行うEXE(実行)ステージと、データのメモリ(例えばRAM200)への読み書きを行うMA(メモリアクセス)ステージと、メモリから読み込んだ結果や算術演算の結果をレジスタ(例えばレジスタファイル324)に書き込むWB(ライトバック)ステージからなるパイプライン処理を行うようになっている。
図5は、CPU300が実行するパイプライン処理の一例を示した図である。まず、本実施形態では、CPU300で実行される命令を以下の3種類とする。
(1)論理・算術命令A:RAM200もしくはROM100へのアクセスを必要とせず、レジスタファイル324から格納データを読み込み演算し、演算結果をレジスタファイル324に書き込む動作をする命令
(2)ロードストア命令B:CPU300の外部メモリ(RAM200もしくはROM100)からレジスタファイル324へデータを書き込むためのロードデータを読み込むロード命令、レジスタファイル324から外部メモリへストアデータを書き込むストア命令
(3)分岐命令C:レジスタファイル324の格納データから分岐先アドレスを取得してPC323に書き込み、分岐先アドレスが書き込まれる前のPC323のアドレスをレジスタファイル324に格納する動作を行う命令(PC323のアドレスを変更してタスクの命令順序を変更する命令)
上記各命令のうち、命令Aおよび命令Cは4サイクル、命令Bは5サイクルで1つの命令を処理するようになっている。
図5に示すパイプライン処理のサイクル0において、PC323のアドレスが0x00である場合、IFステージが実行される。すなわち、アドレス0x00を示すフェッチアドレスがPC323からロードストアユニット321、アドレスバス400を介してROM100に入力される。そして、ROM100に記憶されたタスクのアドレス0x00の命令がデータパス320を介してCPU300に入力される。なお、CPU300がROM100からアドレス0x00の命令Aを読み込んだ際、PC323のフェッチアドレスの値が0x01に増加される。
次に、サイクル1では、アドレス0x00の命令AについてDECステージが実行される。すなわち、図4に示されるCPU300の命令デコーダ311にて命令が解読され、解読された命令がプログラムカウンタ制御ユニット312に入力される。また、PC323のアドレス0x01について上記と同様に命令AのIFステージが実行される。
続いて、サイクル2では、アドレス0x00の命令AについてはEXEステージが実行される。すなわち、プログラムカウンタ制御ユニット312から実行ユニット322に演算制御信号が入力され、命令に従った演算が実行される。また、アドレス0x01の命令Aについては上記と同様に命令AのDECステージが実行される。さらに、PC323のアドレス0x02について上記と同様に命令AのIFステージが実行される。
この後、サイクル3では、アドレス0x00の命令AについてWBステージが実行される。すなわち、実行ユニット322にて実行された演算の結果がレジスタファイル324に書き込まれる。また、アドレス0x01の命令Aについて上記と同様に命令AのEXEステージが実行され、アドレス0x02の命令Aについて上記と同様に命令AのDECステージが実行される。さらに、PC323のアドレス0x03について命令BのIFステージが実行される。以後、サイクル数の増加に伴い、上記各アドレスの各ステージが順を追って実行されていく。
ここで、上記アドレス0x03の命令Bが実行される場合は、EXEステージの後にMAステージが実行されるが、前記MAステージと同じサイクル(サイクル6)で実行される下位のアドレスの各ステージ(図5に示される例では、アドレス0x04の命令AのEXEステージ、アドレス0x05の命令AのDECステージ、アドレス0x07の命令C(0xA0への分岐)のIFステージ)はストールされ、実行されない。
具体的には、上記MAステージの実行中(サイクル6)は、プログラムカウンタ制御ユニット312からPC323にPCストール信号が入力され、PC323のアドレスの更新が停止される。また、制御ユニット310からロードストアユニット321にフェッチ/ロードストア許可信号が入力されてロードストアが許可されるように制御され、他命令のパイプラインがストールされる。これにより2サイクルが必要となるが、メモリアクセスが必要な命令のみ、IFステージとMAステージとの競合を避けることができる。
このようにIFステージとMAステージとの競合を避ける理由は、CPU300からRAM200にデータが書き込まれるためにMAステージによりデータパス320が占有され、他の命令ステージがデータパス320を使用できなくなるからである。上記のようにしてストールされたサイクル6の各ステージは、次のサイクル7で実行される。
すなわち、アドレス0x07の命令CのIFステージがサイクル7で実行される。この場合、アドレス0x03のWBステージ時にPC323の値が分岐先アドレス0xA0に書き換えられて分岐が行われる。このため、図5においてアドレス0x08、0x09の各命令Aを破棄するため、プログラムカウンタ制御ユニット312にてWB停止信号が生成されてレジスタファイル324に入力され、実行ユニット322からレジスタファイル324に対するデータの書き込みが停止される。また、制御ユニット310からロードストアユニット321にフェッチ/ロードストア許可信号が入力され、ロードストアユニット321にてIFステージのみ許可するように制御される。こうして分岐されたアドレス0xA0以降の各命令が実行されていく。以上がパイプライン処理の一例である。
次に、上記のようにパイプライン処理を行うCPU300が、実行サイクルのズレなく周期タスクを周期的に実行する動作について説明する。本実施例では、50サイクルごとに演算を行う必要がある周期タスクを実行する場合を説明する。図6は、各タスクの実行内容を示したもので、周期タスクレジスタ325の設定を行うタスク、停止タイミングレジスタ327の設定を行うタスク、周期タスク、非周期タスクが実行されるようになっている。このうち、レジスタ325,327の設定を行うタスクはCPU300の起動時にだけ実行され、その後は周期タスクおよび非周期タスクが繰り返し実行される。これらの各タスクは、それぞれROM100に記憶されている。
すなわち、周期タスクおよび非周期タスクを実行するに際し、まず、CPU300のリセット直後(もしくはCPU300に電源が供給された直後)に実行するタスクのアドレス(CPU300からROM100にアクセスするアドレス)により周期タスクレジスタ325の設定を行うタスクが実行される。この周期タスクレジスタ325の設定を行うタスクは、周期タスクの先頭アドレスを周期タスクレジスタ325に書き込む周期タスクレジスタ設定命令を実行する。
上述のように、周期タスクレジスタ325の設定を行うタスクは、そのアドレスが例えば0x00とされ、CPU300がROM100にアクセスすることにより読み出されて実行される。続いて、停止タイミングレジスタ327の設定を行うタスクが実行される。このタスクは、停止タイミングレジスタ327に周期タスク起動準備期間を書き込む停止タイミングレジスタ設定命令を実行する。周期タスク起動準備期間とは、非周期タスクを停止させてから周期タスクが開始するまでの期間である。
また、本実施例では、停止タイミングを「最大の処理サイクル数+非周期処理の再開アドレスを退避するために必要なサイクル数」と定義する。このうち、最大の処理サイクル数とは、DECステージからMAステージまでのサイクル数に相当する。
このような定義に従い、周期タスク起動準備期間が例えば6サイクルとされ、この周期タスク起動準備期間が停止タイミングとしてプログラムカウンタ制御ユニット312に入力される。なお、この周期タスクレジスタ325の設定を行うタスクは、そのアドレスが例えば0x02とされる。この後に周期タスクが実行される。この周期タスクは、カウンタ設定を行う命令と、カウンタ設定後に実行される周期タスクを実行する命令と、周期タスクの実行が完了した後、非周期処理へ分岐する命令とにより構成されている。
カウンタ設定を行う命令は、制御周期をカウントするためのカウント数をカウンタ326に設定するもので、当該命令が実行されることでレジスタファイル324のカウンタ326にカウント数(本実施形態では50)が書き込まれると共に、カウントダウンが開始され、カウント値がプログラムカウンタ制御ユニット312に入力される。上記カウンタ設定を行う命令が実行された後、周期タスクを実行する命令により周期タスクが実行される。周期タスクが実行されていく間、カウンタ326にてカウントダウンが行われる。
そして、周期タスクの実行が終了した後、非周期タスクへ分岐する非周期タスク開始命令が実行されると、非周期タスクの実行が開始される。カウンタ326のカウントダウンと共に非周期タスクが実行され、停止タイミングレジスタ327の値(本実施形態では6)とカウンタ326の値とが一致したサイクルから、周期タスク起動準備期間が開始される。
このタスク起動準備期間における処理シーケンスを、図7を参照して説明する。図7は、非周期タスクから周期タスクに切り替わる処理シーケンスを示した図である。周期タスク起動準備期間の第1サイクル(図7のカウント値6、停止タイミング)において、プログラムカウンタ制御ユニット312からPC323にPCストール信号が入力されてPC323の値の更新が停止され、命令フェッチ動作が停止される。これにより、周期タスク起動準備期間の第1サイクルの時点で、DECステージ以降が実行中となっている命令はWBステージまで通常通り実行される。
非周期処理停止シーケンス中に分岐命令のWBステージが実行された場合、通常の分岐命令を実行する場合と同様にPC323の値がPCストール信号より優先して分岐先アドレスに書き換えられる。そして、以後の命令が破棄され、プログラムカウンタ制御ユニット312からレジスタファイル324にWB停止信号が入力され、制御ユニット310からロードストアユニット321にフェッチ/ロードストア停止信号が入力されることで、メモリ書き込み・WBステージが禁止される。
カウンタ326のカウント値が「1」のとき、プログラムカウンタ制御ユニット312から実行ユニットに対して開始タスク読み込みトリガ信号が発行され、実行ユニットでは周期タスクレジスタの値がPC323にロードされる。また、カウント値が「1」の時点でPC323に書き込まれていたアドレス(非周期タスクの最終アドレス;退避PC値)は、実行ユニット322およびロードストアユニット321を介してRAM200に書き込まれる(PCMA)。そして、カウント「0」のとき、周期タスクレジスタ325に書き込まれているアドレスと同じアドレスからタスクが開始される。
このようにして1制御周期が確実に終了し、再び周期タスクが実行されることとなる。そして、非周期タスクへの分岐が行われた場合、先に実行された非周期タスクAの最終アドレスがRAM200からロードストアユニット321を介してレジスタファイル324に書き込まれ、格納データとして実行ユニット322を介してPC323に書き込まれる。これにより、図6に示される非周期タスクBが非周期タスクAの続きとして実行され、以後は、上記周期タスクおよび非周期タスクが制御周期ごとに繰り返し実行される。
すなわち、制御周期内でCPU300に周期タスクと非周期タスクとを実行させる場合、周期タスクが終了すると直ちに非周期タスクを実行させる。また、非周期タスクの実行後は、制御周期の残りカウントが非周期タスクの停止タイミング相当値になると非周期タスクを中断させて、当該残りカウントを周期タスク起動準備期間とする。したがって、周期タスクを周期的に実行させるための割込み信号が不要となる。また、周期タスク終了後に直ちに非周期タスクを実行させるので、CPU300がアイドル状態となる期間がなく、CPU300の処理能力の有効利用を図ることができる。
図2は、その他の周辺回路も併せて示すマイコンM1の全体構成図である。尚、図10と同一の構成には同一の符号を付して示す。マイコンM1は、CPU300と(ROM100及びRAM200の図示は省略),PWM回路3(周期信号出力回路),A/D変換器4,割込み制御回路12等で構成されている。また、マイコンM1に対して外部より、例えば通信要求などの割込みを発生させる外部回路13が配置されているとする。但し、この構成では、PWM回路3は、PWM信号の出力タイミングでCPU300に対して割込みを発生させることはない。
次に、本実施例の作用について図1も参照して説明する。CPU300は、PWM回路3に対するレジスタ8,9の設定は図10,図11のケースと同様に行うが、この設定処理は、例えば図6に示す「周期プログラムレジスタ設定」内で行っても良いし、周期タスク,非周期タスクの最初の実行時に行っても良い。そして、CPU300は、PWM信号の出力タイミング(信号出力処理)に同期して行うA/D変換処理(信号入力処理)を周期タスク内で行い、外部回路13が発生した割込みの処理を非周期タスク内で行う。
また、CPU300は、PWM搬送波周期を、タスクの制御周期と同一に設定する。これにより、図10に示す構成のように外部のタイマ5を使用せずとも、CPU300は、PWM信号の出力タイミングに同期して(出力タイミングから一定時間後に)A/D変換処理を行うことが可能となっている。すなわち、CPU300が周期タスク内における所定のタイミングでA/D変換処理を行うようにプログラミングされている。マイコンM1内の各回路動作が共通のシステムクロックに同期していれば、タスクの制御周期とPWM搬送波周期とにずれが生じることはない。
したがって、図1(b)に示すように周期タスクの実行期間中に、外部回路13が発生した割込みAはその実行期間中に処理されることはなく、非周期タスクの実行が開始されると、当該タスク内において処理される。その結果、割込みAの発生により、PWM信号の出力タイミングに同期したA/D変換処理のタイミングが遅延することはなく、常にPWM搬送波周期−制御周期に一致するタイミングで実行される。
以上のように本実施例によれば、マイコンM1は、CPU300が制御周期の冒頭で周期タスクの実行を開始し、その周期タスクの実行が終了した後に非周期タスクの実行を開始するように構成され、周期タスクにおいて周期的な信号入力処理を実行し、割込みが発生した場合は、その割込み処理を非周期タスクで実行するようにした。したがって、周期的な信号入力処理を実行するべきタイミングでCPU300に割込みが発生しても、その割込みを処理するために周期的な信号処理が妨げられることがなく、信号処理の等時性を維持することができる。
具体的には、PWM回路3が、CPU300により設定された周期に基づいてPWM信号を出力する場合、CPU300は、PWM搬送波周期をタスクの制御周期と同一に設定し、PWM信号の出力に同期して行うA/D変換処理を周期タスクで実行する。すなわち、マイコンM1が周期的に出力するPWM信号に伴い、変化を呈する可能性がある信号の状態を監視する必要がある場合、例えば、モータをPWM制御により駆動する場合のモータの駆動電流をCPU300がA/D変換して監視する場合などに、監視を一定の周期で確実に行うことができる。
そして、マイコンM1は、プログラムカウンタ制御ユニット312に、制御周期に相当するサイクル数をカウントするカウンタ326のカウントデータが与えられると共に、停止タイミングレジスタ327から非周期タスクの停止タイミングを示すサイクル数が与えられると、プログラムカウンタ制御ユニット312は、カウンタ326のカウントデータと停止タイミングを示すサイクル数とを比較し、両者が一致するとPC323を停止して非周期タスクの実行を中断させるようにした。
この後、プログラムカウンタ制御ユニット312は、カウンタ326のカウントデータが制御周期の終わりを示す値に一致すると、周期タスクレジスタ325に格納された周期タスクの先頭アドレスをPC323に格納させて、周期タスクの実行を開始させる。すなわち、カウンタ326のカウント数が停止タイミングを示すサイクル数と一致すると非周期タスクの実行が中断されて周期タスクの実行が開始されるので、周期タスクを周期的に実行させることができる。
(第2実施例)
図8及び図9は本発明の第2実施例を示すものであり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。第2実施例では、PWM回路3A内のカウンタ7Aのビットサイズを第1実施例のカウンタ7よりも削減しており、カウンタ7Aがカウントアップすると、CPU300Aに対してPWMタイマ割込みを発生させるようになっている。
そして、CPU300Aは、周期タスクにおいてPWMタイマ割込みを受け付けて図9に示す処理を行い、その処理中でタイマ割込み回数をカウントし(ステップS1)、そのカウント値が所定値に達すると(ステップS2:YES)A/D変換処理を実行する(ステップS3)。その後は、上記カウント値をクリアして(ステップS4)リターンする。また、カウント値が所定値に達していなければ(ステップS2:NO)そのままリターンする。
すなわち、第2実施例では、PWM搬送波周期をカウントするためのカウンタ7A(ハードウエアカウンタ)が下位ビット側に対応し、CPU300Aが周期タスク内でカウントを行うソフトウエアカウンタが上位ビット側に対応するようになっている。例えば、第1実施例のカウンタのビットサイズが8ビットであるとすると、例えばカウンタ7Aが下位4ビット,ソフトウエアカウンタが上位4ビットをカウントする。但しこの場合、カウンタ7Aが発生するPWMタイマ割込みは、必ず周期タスクの実行期間中に発生するように割込み周期を調整する必要がある。
以上のように第2実施例によれば、PWM信号の出力周期を生成するためのタイマカウンタを、下位ビット側をハードウエアカウンタ7Aとし、上位ビット側は、CPU300Aが、ハードウエアカウンタのカウント終了回数を計数するソフトウエアカウンタとして構成したので、ハードウエアとして用意するカウンタ7Aの規模(ビット数)を小さくすることができる。
本発明は上記し且つ図面に記載した実施例にのみ限定されるものではなく、以下のような変形または拡張が可能である。
例えば、制御周期内における周期タスクと非周期タスクとの実行比率をそれぞれ50%とすれば、特開平6−250857号公報に開示されているマイクロコンピュータが実行するLタスクを周期タスク,Aタスクを非周期タスクとみなすことができる。したがって、上記構成のマイクロコンピュータにおいても同様に、本発明の制御内容を実行させることができる。
各カウンタのカウント動作は、ダウンカウントであっても良い。
制御周期は50サイクルに限ることなく、個別の設計に応じて適宜変更すれば良い。
マイクロコンピュータが周期的に出力する信号はPWM信号に限ることなく、パルス幅が一定の信号でも良い。また、ロウアクティブ信号でも良い。
信号入力処理は、A/D変換処理に限ることなく、例えば入力ポートの信号レベル(ハイ,ロウ)を読み取る処理や、メモリやレジスタのデータを読み出す処理でも良い。
また、周期タスクにおいては、周期的な信号入力処理をトリガとして、信号出力処理を周期的に行うようにしても良い。
第2実施例におけるハードウエアカウンタ7Aの下位側ビットサイズと、ソフトウエアカウンタの上位側ビットサイズとは、個別の設計に応じて適宜変更すれば良い。
本発明の第1実施例であり、マイクロコンピュータの処理内容を示すタイミングチャート 周辺回路を含むマイクロコンピュータの全体構成図 マイクロコンピュータの内部構成図 CPUの内部構成を中心に示す機能ブロック図 CPUが実行するパイプライン処理の一例を示す図 各タスクの実行内容を示す図 タスク起動準備期間における処理シーケンスを示す図 本発明の第2実施例を示す図2の一部相当図 CPUが行うPWMタイマ割込み処理を示すフローチャート 従来技術を示す図2相当図 図1相当図
符号の説明
図面中、3はPWM回路(周期信号出力回路)、7Aはカウンタ(ハードウエアカウンタ)300はCPU、312プログラムカウンタ制御ユニット、323はプログラムカウンタ、325は周期タスクレジスタ、326はカウンタ(時間計測手段)、327は停止タイミングレジスタ、M1はマイクロコンピュータを示す。

Claims (4)

  1. CPUが一定の制御周期に基づく処理を繰り返し実行するもので、前記制御周期においては、当該周期の冒頭で周期タスクの実行を開始し、当該周期タスクの実行が終了した後に非周期タスクの実行を開始するマイクロコンピュータであって、
    前記CPUは、前記周期タスクにおいて周期的な信号入力処理又は信号出力処理を実行し、
    前記CPUに対する割込みが発生した場合には、前記非周期タスクにおいて割込み処理を実行することを特徴とするマイクロコンピュータ。
  2. 前記CPUにより、信号出力周期が設定可能に構成され、前記周期設定に基づいて信号を出力する周期信号出力回路を備え、
    前記CPUは、前記信号の出力周期を前記制御周期と同一に設定し、前記信号の出力に関連して行う入力信号処理を、前記周期タスクにおいて実行することを特徴とする請求項1記載のマイクロコンピュータ
  3. 前記信号出力周期を生成するためのタイマカウンタは、
    下位ビット側がハードウエアカウンタで構成され、
    上位ビット側は、前記CPUが、前記ハードウエアカウンタのカウント終了回数を計数するソフトウエアカウンタとして構成されていることを特徴とする請求項2記載のマイクロコンピュータ。
  4. 前記非周期タスクの実行を停止させる停止タイミングを示すサイクル数を格納する停止タイミングレジスタと、
    前記制御周期に相当するサイクル数をカウントする時間計測手段と、
    前記周期タスクの先頭アドレスを格納する周期タスクレジスタと、
    前記周期タスクもしくは前記非周期タスクを実行すべくフェッチする命令のフェッチアドレスを格納すると共に、前記フェッチする命令を読み出す度に前記フェッチアドレスを更新するプログラムカウンタと、
    前記時間計測手段がカウントするカウント数と、前記停止タイミングレジスタに格納された停止タイミングを示すサイクル数とがそれぞれ入力されると共に、
    前記カウント数と前記サイクル数とが一致したときに前記プログラムカウンタを停止させることで前記非周期タスクの実行を中断させ、
    この後、前記時間計測手段から入力されるカウント数が前記制御周期の終わりを示すカウント数に一致した場合、前記周期タスクレジスタに格納された前記周期タスクの先頭アドレスを前記プログラムカウンタに格納して前記周期タスクの実行を開始させるプログラムカウンタ制御ユニットとを備えることを特徴とする請求項1乃至3の何れかに記載のマイクロコンピュータ。
JP2008041436A 2008-02-22 2008-02-22 マイクロコンピュータ Pending JP2009199424A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008041436A JP2009199424A (ja) 2008-02-22 2008-02-22 マイクロコンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008041436A JP2009199424A (ja) 2008-02-22 2008-02-22 マイクロコンピュータ

Publications (1)

Publication Number Publication Date
JP2009199424A true JP2009199424A (ja) 2009-09-03

Family

ID=41142839

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008041436A Pending JP2009199424A (ja) 2008-02-22 2008-02-22 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP2009199424A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016091479A (ja) * 2014-11-11 2016-05-23 株式会社明電舎 カウンタユニット

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5923854U (ja) * 1982-07-31 1984-02-14 日本電気ホームエレクトロニクス株式会社 マイクロコンピユ−タのインタラプト回路
JPS62151969A (ja) * 1985-12-25 1987-07-06 Nec Corp 情報処理装置
JPH03122723A (ja) * 1989-10-06 1991-05-24 Nec Corp 割込処理装置
JPH08212090A (ja) * 1995-02-03 1996-08-20 Fujitsu Ltd サーバシステム
JP2002108724A (ja) * 2000-10-03 2002-04-12 Auto Network Gijutsu Kenkyusho:Kk Romのデータチェック方法
JP2002202830A (ja) * 2000-12-28 2002-07-19 Denso Corp マイクロコンピュータ

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5923854U (ja) * 1982-07-31 1984-02-14 日本電気ホームエレクトロニクス株式会社 マイクロコンピユ−タのインタラプト回路
JPS62151969A (ja) * 1985-12-25 1987-07-06 Nec Corp 情報処理装置
JPH03122723A (ja) * 1989-10-06 1991-05-24 Nec Corp 割込処理装置
JPH08212090A (ja) * 1995-02-03 1996-08-20 Fujitsu Ltd サーバシステム
JP2002108724A (ja) * 2000-10-03 2002-04-12 Auto Network Gijutsu Kenkyusho:Kk Romのデータチェック方法
JP2002202830A (ja) * 2000-12-28 2002-07-19 Denso Corp マイクロコンピュータ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016091479A (ja) * 2014-11-11 2016-05-23 株式会社明電舎 カウンタユニット

Similar Documents

Publication Publication Date Title
JP4770664B2 (ja) マイクロプロセッサおよびそれを用いたマイクロコンピュータ
US8006114B2 (en) Software programmable timing architecture
CN105988400B (zh) 微控制器单元
US9785538B2 (en) Arbitrary instruction execution from context memory
AU2006221114A1 (en) Single-cycle low-power CPU architecture
US20050149931A1 (en) Multithread processor architecture for triggered thread switching without any cycle time loss, and without any switching program command
JP2009199424A (ja) マイクロコンピュータ
US6502181B1 (en) Method and apparatus for an enhanced processor
KR100321745B1 (ko) 외부메모리액세스를위한마이크로컨트롤러유닛
JP2005234968A (ja) 演算処理装置
JP2010102567A (ja) 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム
CN108090001B (zh) 一种内核dma稳态调度方法及装置
JP4975586B2 (ja) 複数本のシーケンスプログラムを並列して実行可能なプログラマブルコントローラ
EP0933705B1 (en) Data processor with robust interrupt branching and method of operation
JP2005100017A (ja) プロセッサシミュレータおよび割込遅延カウントプログラム、並びにプロセッサのシミュレート方法
JP2001014161A (ja) プログラマブルコントローラ
JPH04275603A (ja) プログラマブル・コントローラ
JP7384374B2 (ja) 中央演算処理装置
US5987559A (en) Data processor with protected non-maskable interrupt
JP3755168B2 (ja) プログラマブルコントローラ
JP2721610B2 (ja) プログラマブルコントローラ
JP2013167945A (ja) 情報処理装置、タスク起床制御方法、及びタスク起動制御プログラム
JP2003029966A (ja) データ処理装置
JP2006236215A (ja) マイクロコンピュータ
JP2559929B2 (ja) プログラマブルコントローラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100330

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111129

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120321