//3秒直進して止まる #include "kernel.h" #include "ecrobot_interface.h" //カウンタの宣言 DeclareCounter(SysTimerCnt); //液晶ディスプレイに表示するシステム名設定 const char target_subsystem_name[] = "sample1"; //初期処理 void ecrobot_device_initialize() { nxt_motor_set_speed(NXT_PORT_A, 0, 1); nxt_motor_set_speed(NXT_PORT_C, 0, 1); } //後始末処理 void ecrobot_device_terminate() { nxt_motor_set_speed(NXT_PORT_A, 0, 1); nxt_motor_set_speed(NXT_PORT_C, 0, 1); } //Function to be invoked from a category 2 interrrupt void user_1ms_isr_type2(void) { StatusType ercd; //increment OSEK Alarm System Timer Count ercd = SignalCounter(SysTimerCnt); if(ercd != E_OK) { ShutdownOS(ercd); } } //DisplayTask用の関数 TASK(DisplayTask) { //液晶ディスプレイに表示する ecrobot_status_monitor(target_subsystem_name); //自タスクの終了 TerminateTask(); } //ActionTask用の関数 TASK(ActionTask) { //モーターをスピード80で順回転させる nxt_motor_set_speed(NXT_PORT_A, 80, 1); nxt_motor_set_speed(NXT_PORT_C, 80, 1); //3000ミリ秒待つ systick_wait_ms(3000); //モーターを止める nxt_motor_set_speed(NXT_PORT_A, 0, 1); nxt_motor_set_speed(NXT_PORT_C, 0, 1); //自タスクの終了 TerminateTask(); }