この投稿では、マルチタスクでのタスク間通信、割込み-タスク間通信が必要な理由について説明致します。
優先順位の異なるマルチタスクOSのタスク間通信や割込み-タスク間通信が必要な理由は、下図のように下位タスク実行中に上位タスクまたは割込みで下位タスクのインタフェース変数の情報を更新することで下位タスクの処理が不整合となる場合があります。
この問題を回避するためには、タスク間通信や割込み-タスク間通信が必要となります。具体的には、上位タスクまたは割込みから下位タスクへのインタフェース変数はReadを1箇所(下図のReceive Copy)にし、下位タスクから上位タスクまたは割込みへのインタフェース変数へのインタフェース変数はWriteを1箇所(下図のSend Copy)にする。また、図のReceiveおよびSendのCopyには、連動するインタフェース変数を考慮して割込み禁止処理等を行う必要します。