3.タッチセンサーの使用
TOP
5.光センサーの使用

4.強制終了

タッチセンサーを使用したプログラムを動かしたとき、 Run ボタンを押しても、プログラムが直ぐに終了しないようになってしまいせんでしたか? また、場合によっては Run ボタンや On-Off ボタンを押してもプログラムが動き続けて しまうことを経験したかもしれません。

これは、wait_event の処理に CPU が占有されてしまって、キー入力に対応する 処理がなかなか実行されないようになってしまったことによるものです。 次の様なタスクを用意することで、このような状況を回避することができます。 なお、タスクに関する詳細な説明は、9.タスクについてを参 照して下さい。
#include <conio.h>
#include <dmotor.h>

tid_t t_stop;

int stop(){ // rcx stop function
	int stopchar;
	stopchar=getchar();
	if(stopchar==KEY_RUN){
		cputs("stop");
		motor_a_dir(brake);
		motor_c_dir(brake);
		killall(20);
	}
	return 0;
}
int main(int argc, char *argv[]) {

        t_stop=execi(&stop,0,NULL,20,DEFAULT_STACK_SIZE);

(略)
}
conio.h は、コンソール入出力関数(getchar, cputs)を使う場合に必要なヘッダ ファイルです。getchar()は、8.ボタンの制御、 cputs()は、7. LCDの使用および API Referenceを参照し て下さい。killall(20)は優先度 20 以下のタスクを全てストップします。優 先度の概念は、9.タスクについてを参 照して下さい。

課題

 「3.タッチセンサーの使用」の課題で作成したプログラムに stop タスクを追加して、Run ボタンが押さ れたたら即座に停止するようにせよ。

3.タッチセンサーの使用
TOP
5.光センサーの使用