OSDN Git Service

876daab2b70fce5771470451fdbd5e0a1851d33f
[nxt-jsp/etrobo-atk.git] / nxtOSEK / samples / rms / rms.c
1 /* rms.c */ \r
2 #include "kernel.h"\r
3 #include "kernel_id.h"\r
4 #include "ecrobot_interface.h"\r
5 \r
6 /* OSEK declarations */\r
7 DeclareCounter(SysTimerCnt);\r
8 DeclareTask(Task1);\r
9 DeclareTask(Task2);\r
10 DeclareTask(TaskLCD);\r
11 \r
12 /* LEJOS OSEK hooks */\r
13 void ecrobot_device_initialize()\r
14 {\r
15   nxt_motor_set_speed(NXT_PORT_A, 0, 1); \r
16   nxt_motor_set_speed(NXT_PORT_B, 0, 1); \r
17 }\r
18 \r
19 void ecrobot_device_terminate()\r
20 {\r
21   nxt_motor_set_speed(NXT_PORT_A, 0, 1); \r
22   nxt_motor_set_speed(NXT_PORT_B, 0, 1); \r
23 }\r
24 \r
25 /* LEJOS OSEK hook to be invoked from an ISR in category 2 */\r
26 void user_1ms_isr_type2(void)\r
27 {\r
28   StatusType ercd;\r
29 \r
30   ercd = SignalCounter(SysTimerCnt); /* Increment OSEK Alarm Counter */ \r
31   if(ercd != E_OK)\r
32   {\r
33     ShutdownOS(ercd);\r
34   }\r
35 }\r
36 \r
37 /* Task1 executed every 1msec */\r
38 TASK(Task1)\r
39 {\r
40   if (ecrobot_get_touch_sensor(NXT_PORT_S1))\r
41   {\r
42     nxt_motor_set_speed(NXT_PORT_A, 0, 1);\r
43   }\r
44   else\r
45   { \r
46     nxt_motor_set_speed(NXT_PORT_A, 50, 1);\r
47   }\r
48 \r
49   TerminateTask();\r
50 }\r
51 \r
52 /* Task2 executed every 500msec */\r
53 TASK(Task2)\r
54 {\r
55   if (ecrobot_get_touch_sensor(NXT_PORT_S1))\r
56   {\r
57     nxt_motor_set_speed(NXT_PORT_B, 0, 1);\r
58   }\r
59   else\r
60   { \r
61     nxt_motor_set_speed(NXT_PORT_B, 50, 1);\r
62   }\r
63 \r
64   TerminateTask();\r
65 }\r
66 \r
67 /* TaskLCD executed every 500msec */\r
68 TASK(TaskLCD)\r
69 {\r
70   ecrobot_status_monitor("RMS");\r
71 \r
72   TerminateTask();\r
73 }\r
74 \r