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.mak
Aodai03.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;
};
};