RQSTとEVNTマクロ命令

A)RQSTマクロ命令

【RQSTマクロ命令の機能】

・RQSTマクロは各タスクから入出力タスクなど別のタスクの起動をし
 かつイベント待ち合わせをする時使う。
 この時起動を要求する相手タスクが既に起動中の時には、一旦
 そのタスクが終了するまで待ち合わせるため、要求元タスクを
 RQST WAIT状態にする。
 その後はPICROSのスケジューラ内で相手タスクの終了を監視し
 終了後直ちに相手タスクを再起動し、要求元タスクのRQST WAIT
 を解除し、続けてEVENT WAIT状態に変更する。
 このEVENT WAIT状態は、起動した相手タスクから、EVNTマクロを
 発行されると解除され実行可能状態に戻る。

・PICROSはバッファ管理をしていないので、相手タスクにデータを
 渡す必要がある場合には、別途タスク同士で格納場所を取り決
 めておく必要がある。

・RQSTマクロを発行すると、そのままPICROSのスケジューラに行き
 タスクには戻って来ないのでタスク側は処理を続けて書くことは
 出来ません。発行元タスクで処理を続けるには、RQSTマクロの前に
 NEXTマクロを実行して、Stageを上げておき、RQSTマクロのwaitが
 解除された時には、次のStageの処理に進むようにしてからRQST
 マクロを実行する様にします。

【RQSTマクロ命令の使い方】

RQSTマクロ命令はこれを実行したタスクに直ぐ戻るので、タスク側は
マクロ命令の後に続けて処理を行うことが出来る。
下図の様に、RQSTマクロ命令の前に、NEXT命令を実行しておき、
RQSTの待ちが解除されて戻って来たとき、次のstageを実行する。



【Calling Sequence】

RQSTマクロの呼び出し方は下記。

BCF   INTCON,GIE  ;割り込み禁止
MOVLW  TaskID    ;起動相手タスクのNo
CLRF   PCLATH    ;Bnak0指定
GOTO   RQST     ;RQSTマクロ呼び出し
(次の処理は続けず別Stageとする)


B)EVNTマクロ命令

【EVNTマクロ命令の機能】

・EVNTマクロは入出力タスクの中などで使い、要求された処理を
 終了した時点で要求元タスクに対して発行し、要求元タスクの
 EVENT Waitの待ち合わせを解除する。

・RQSTマクロと対で使用することでタスク間の同期をとった処理が
 可能となる。

・PICROSはバッファ管理機能を持っていないので、入力処理タスク
 のような場合に、相手タスクにデータを渡す必要がある場合には、
 別途タスク同士で格納場所を取り決めておく必要がある。

・EVENTマクロは発行元に直ぐ戻るので、タスク側では次の処理を
 続けて書くことが出来る。

・パラメータは無い。

【EVNTマクロ命令の使い方】

EVNTマクロ命令は発行元タスクに直ぐ戻るので、タスクでは次の
処理を続けることが出来る。
そしてそのタスクが、EXITマクロで終了した時点でスケジューラに
戻り、イベント待ちを解除したタスクが次に実行されることになる。




【Calling Sequence】

EVNTマクロの呼び出し方は下記。

BCF   INTCON,GIE  ;割り込み禁止
CLRF   PCLATH    ;Bnak0指定
CALL   EVNT     ;EVNTマクロ呼び出し

 



  次のページへ     目次ページへ