Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed PID ADXL345 Camera_LS_Y201 ITG3200 RangeFinder mbos xbee_lib Motor Servo
Diff: main.cpp
- Revision:
- 32:74608bce78f6
- Parent:
- 10:c8d73680b9fd
- Child:
- 33:f85d47baaeb4
--- a/main.cpp Wed Apr 03 13:48:30 2013 +0000
+++ b/main.cpp Sat Apr 27 11:00:25 2013 +0000
@@ -16,8 +16,9 @@
* Input
* Output
*/
-
-/*#include "mbed.h"
+
+/*
+#include "mbed.h"
#include "mbos.h"
DigitalOut myled(LED1);
@@ -32,33 +33,39 @@
//modification
}
}*/
+
#include "mbed.h"
#include "mbos.h"
-
-#define TASK1_ID 1 // Id for task 1 (idle task is 0)
-#define TASK1_PRIO 50 // priority for task 1
-#define TASK1_STACK_SZ 32 // stack size for task 1 in words
-#define TASK2_ID 2 // Id for task 2
-#define TASK2_PRIO 60 // priority for task 2
-#define TASK2_STACK_SZ 32 // stack size for task 2 in words
-#define TIMER0_ID 0 // Id for timer 0
-#define TIMER0_PERIOD 1000 // Time period in milliseconds
-#define TIMER0_EVENT 1 // Event flag (1 << 0)
-#define T1_TO_T2_EVENT 2 // Event flag (1 << 1)
+#include "os.h"
+
void task1(void); // task function prototypes
void task2(void);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
-mbos os(2, 1); // Instantiate mbos with 2 tasks & 1 timer
+DigitalOut led3(LED3);
+mbos os(2, 2); // Instantiate mbos with 7 tasks & 7 timer
+
int main(void)
{
// Configure tasks and timers
- os.CreateTask(TASK1_ID, TASK1_PRIO, TASK1_STACK_SZ, task1);
- os.CreateTask(TASK2_ID, TASK2_PRIO, TASK2_STACK_SZ, task2);
- os.CreateTimer(TIMER0_ID, TIMER0_EVENT, TASK1_ID);
+ os.CreateTask(TASK_COM, TASK_COM_PRIO, TASK_COM_STACK_SZ, task1);
+ os.CreateTask(TASK_DETEC, TASK_DETEC_PRIO, TASK_DETEC_STACK_SZ, task2);
+ /*os.CreateTask(TASK_MOUV, TASK_MOUV_PRIO, TASK_MOUV_STACK_SZ, task1);
+ os.CreateTask(TASK_TRAJ, TASK_TRAJ_PRIO, TASK_TRAJ_STACK_SZ, task2);
+ os.CreateTask(TASK_BATT, TASK_BATT_PRIO, TASK_BATT_STACK_SZ, task1);
+ os.CreateTask(TASK_VIDEO, TASK_VIDEO_PRIO, TASK_VIDEO_STACK_SZ, task2);
+ os.CreateTask(TASK_ARRET_URGENT, TASK_ARRET_URGENT_PRIO, TASK_ARRET_URGENT_STACK_SZ, task1);*/
+
+ os.CreateTimer(TIMER_COM_ID, TASK_COM, TIMER_EVENT);
+ os.CreateTimer(TIMER_DETEC_ID, TASK_DETEC, TIMER_EVENT);
+ /*os.CreateTimer(TIMER_MOUV_ID, TIMER_MOUV_PERIOD, TIMER_MOUV_EVENT);
+ os.CreateTimer(TIMER_BATT_ID, TIMER_BATT_PERIOD, TIMER_BATT_EVENT);
+ os.CreateTimer(TIMER_VIDEO_ID, TIMER_VIDEO_PERIOD, TIMER_VIDEO_EVENT);
+ os.CreateTimer(TIMER_ARRET_URGENT_ID, TIMER_ARRET_URGENT_PERIOD, TIMER_ARRET_URGENT_EVENT);*/
+
// Start mbos
os.Start();
// never return!
@@ -66,22 +73,28 @@
void task1(void)
{
- os.SetTimer(TIMER0_ID, TIMER0_PERIOD, TIMER0_PERIOD);
+ os.SetTimer(TIMER_COM_ID, TIMER_COM_PERIOD, TIMER_COM_PERIOD);
while(1){
- os.WaitEvent(TIMER0_EVENT);
+ os.WaitEvent(TIMER_EVENT);
led1 = !led1;
- os.SetEvent(T1_TO_T2_EVENT, TASK2_ID);
+ os.SetEvent(COMMUNICATION_EVENT, TASK_DETEC);
}
}
void task2(void)
{
+ os.SetTimer(TIMER_DETEC_ID, TIMER_DETEC_PERIOD, TIMER_DETEC_PERIOD);
while(1){
- os.WaitEvent(T1_TO_T2_EVENT);
- led2 = 1;
- wait_ms(100);
- led2 = 0;
+ os.WaitEvent(TIMER_EVENT | COMMUNICATION_EVENT);
+ /*switch(os.GetEvent()){
+ case TIMER_EVENT:
+ led2 = !led2;
+ break;
+ case COMMUNICATION_EVENT:
+ led3 = !led3;
+ break;
+ }*/
+ if(os.GetEvent() & TIMER_EVENT) led2 = !led2;
+ if(os.GetEvent() & COMMUNICATION_EVENT) led3 = !led3;
}
}
-/*@endcode
- */
\ No newline at end of file
