応用例1: HW ISRを使用した多重割込み

HW ISRを利用すると簡単に多重割込みが実現できます。従来の割込みでは割込み信号線に優先度を対応させ、多重割込みを実現していましたが、HW ISRでは起動されるタスクの優先度により多重割込みを実現します。優先度は、数値が小さい方が優先度が高いとします。下記ではタスクAが優先度が最高となります。割込み線にそれぞれHW ISRでセマフォ6の解放、セマフォ3の解放、セマフォ4の解放のシステムコールが実行されるように設定します。割込みが発生すると、待ち状態のタスクの優先度に従って多重割込みが実現できます。

画像
HW-RTOS応用例1: HW ISRを使用した多重割込み

応用例2: サイクリック起動タスク

HW-RTOSにはサイクリックハンドラ機能がありません。しかし、HW ISRを使用することにより、同等な機能を実現できます。さらに、HW ISR機能を使用したサイクリック起動タスクは、従来のソフトウェアRTOS上で動作するサイクリックハンドラより起動時間が高速です。手順は簡単です。R-INエンジン実装製品の内蔵タイマの出力をHW ISRの入力として定義します。図の例ではタスクAがサイクリック起動タスクになります。起動時間は最悪3.5usec@100MHzになりますので、極めてリアルタイム性の高い周期処理が可能になります。

画像
HW-RTOS応用例2: サイクリック起動タスク

応用例1で示した多重割込みとあわせてシステムを構築することにより、複数のサイクリック起動タスクを実現できます。図は2つのサイクリック起動タスクです。タスクBはタスクAの5倍の周期で起動するサイクリック起動タスクです。実際には、3つ以上のサイクリック起動タスクを定義することができますし、また全く同期の取れていない周期での起動や、外部端子からのサイクリック起動も可能です。

画像
HW-RTOS応用例: 複数のサイクリック起動タスク

応用例3: 網同期によるサイクリック起動タスク

R-INエンジンの実装された製品ではIEEE1588を実現するためのハードウェアが実装されています。IEEE1588プロトコルソフトウェアを実装することにより、ネットワークを介してステーション間で時刻同期を取ることができます。この同期信号をタイマに入力し、応用例2を実現することにより、ネットワークを介して離れた場所にあるHW-RTOSにおいて、同時にサイクリックタスクを周期的に起動することができるようになります。サイクリックタスクの起動誤差は極めて小さく、IEEE1588による誤差に最悪で3.5μ秒の遅延が加算されます。時刻同期はEtherCATにより実現することも可能です。

画像
HW-RTOS応用例3: 網同期によるサイクリック起動タスク