Control Program for H8/3664 Core

概要

 CP/3664 Coreは、タスク制御機能を提供します。H8/3664は、RAMの容量がが限られているため、タスク数を4に制限しています。また、プログラムは、全てROM上で動くことを想定しているため、タスク生成・消滅等は、サポートしていません。また、メモリ管理機能・ファイルI/O機能もありません。

タスク制御

 タスク制御は、タイマーVによる割り込みを利用した単純な時分割で行っています。実行可能なタスクのうち、優先度を考慮して、順番に実行します。優先度は、0〜255までです。値が小さいほど、優先度が高くなります。実行可能状態のタスクのうち1つは優先度が0でなければなりません。実行するタスクが無くなると、再起動します。

タスクの状態

 タスクの状態は、3種類です。実行(RUN)・実行可能状態(READY)・停止(SUSPEND)のみです。

装置制御

 R/Cサーボ制御機能をCoreに含めています。これは、32μS単位での信号制御を行うためです。

APIリファレンス

起動時間変数

unsigned long _lifetime
起動時間変数です。CP/3664起動後の秒数が得られます。
起動時間変数2 unsigned long _timeslice
起動時間変数です。CP/3664起動後のTimerV割込回数が得られます。
プライオリティ変数 unsigned char _task0prio
  unsigned char _task1prio
  unsigned char _task2prio
  unsigned char _task3prio
各タスクの優先度の取得・設定のための変数です。
R/Cサーボ制御信号変数 unsigned char receive[8]
PORT1に接続した受信機からのパルス幅がここに入ります。パルス幅は32〜63までの値になります。
変数は8バイト分ありますが、7バイト分のみ有効です。
R/Cサーボ制御変数 unsigned char servo[8]
PORT8に接続したR/Cサーボへの信号幅を設定します。値は32〜63までが有効です。
指定タスク停止待ち void tss_wait(int)
指定したタスクがSUSPENDになるまで待ちます。
タスク切換待ち void tss_sleep(void)
タスク切換が発生するまで待ちます。
指定タスク実行 void tss_ready(int)
指定したタスクを実行可能状態にします。
指定タスク停止 void tss_suspend(int)
指定したタスクを停止状態にします。
文字列出力 void putstring(char *)
指定した文字列をシリアルポートに出力します。
タイマーW値取得 int _timerw()
タイマーWの値を得ます。

->INDEX