CP/3664 Coreは、タスク制御機能を提供します。H8/3664は、RAMの容量がが限られているため、タスク数を4に制限しています。また、プログラムは、全てROM上で動くことを想定しているため、タスク生成・消滅等は、サポートしていません。また、メモリ管理機能・ファイルI/O機能もありません。
タスク制御は、タイマーVによる割り込みを利用した単純な時分割で行っています。実行可能なタスクのうち、優先度を考慮して、順番に実行します。優先度は、0〜255までです。値が小さいほど、優先度が高くなります。実行可能状態のタスクのうち1つは優先度が0でなければなりません。実行するタスクが無くなると、再起動します。
タスクの状態は、3種類です。実行(RUN)・実行可能状態(READY)・停止(SUSPEND)のみです。
R/Cサーボ制御機能をCoreに含めています。これは、32μS単位での信号制御を行うためです。
起動時間変数
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の値を得ます。