最終更新: aodairoboconken 2011年12月05日(月) 14:50:13履歴
Makefile
# Target specific macros NXTOSEK_ROOT = /nxtOSEK TARGET = Aodai03 TARGET_SOURCES = Aodai03.c TOPPERS_OSEK_OIL_SOURCE = ./Aodai03.oil # Don't modify below part O_PATH ?= build include $(NXTOSEK_ROOT)/ecrobot/ecrobot.makAodai03.c
/****************************************************************************** * Aodai03.c 画面にセンサー値やモータ角度を表示する(モータ角度をリセットする) *****************************************************************************/ #include "kernel.h" #include "kernel_id.h" #include "ecrobot_interface.h" /* マクロ定義 */ typedef enum InputPort { PORT_GYRO = NXT_PORT_S1, /* ジャイロセンサ用ポート : 1番 */ PORT_SONAR = NXT_PORT_S2, /* 超音波センサ用ポート : 2番 */ PORT_LIGHT = NXT_PORT_S3, /* 光センサ用ポート : 3番 */ PORT_TOUCH = NXT_PORT_S4 /* タッチセンサ用ポート : 4番 */ } InputPort; /* 初期処理 */ void ecrobot_device_initialize(void){ ecrobot_init_sonar_sensor(PORT_SONAR); /* 超音波センサI2C通信用に初期化する */ ecrobot_set_light_sensor_active(PORT_LIGHT); /* 光センサのLEDをON */ } /* 終了処理 */ void ecrobot_device_terminate(void){ ecrobot_term_sonar_sensor(PORT_SONAR); /* 超音波センサI2C通信用設定を解除する */ ecrobot_set_light_sensor_inactive(PORT_LIGHT); /* 光センサのLEDをOFF */ } void user_1ms_isr_type2(void){} TASK(DisplayTask) { nxt_motor_set_count(NXT_PORT_A, 0); /* ポートAのモータ角度をリセット*/ nxt_motor_set_count(NXT_PORT_B, 0); /* ポートBのモータ角度をリセット*/ nxt_motor_set_count(NXT_PORT_C, 0); /* ポートCのモータ角度をリセット*/ while(1) { ecrobot_status_monitor("Aodairoboconken"); systick_wait_ms(500); /* 500ミリ秒待機する */ } }Aodai03.oil
#include "implementation.oil" CPU ATMEL_AT91SAM7S256 { OS LEJOS_OSEK { STATUS = EXTENDED; STARTUPHOOK = FALSE; ERRORHOOK = FALSE; SHUTDOWNHOOK = FALSE; PRETASKHOOK = FALSE; POSTTASKHOOK = FALSE; USEGETSERVICEID = FALSE; USEPARAMETERACCESS = FALSE; USERESSCHEDULER = FALSE; }; APPMODE appmode1{}; TASK DisplayTask { AUTOSTART = TRUE { APPMODE = appmode1; }; PRIORITY = 1; ACTIVATION = 1; SCHEDULE = FULL; STACKSIZE = 512; }; };
このページへのコメント
ZCqgTP Great, thanks for sharing this blog.Thanks Again. Keep writing.
VnR7YK Awesome blog. Want more.