Program to control an accelerometer, motors and a rangefinder using the ScmRTOS ported to mbed. (Work in progress and buggy)
Hexacopter/processes.h@0:9b057566f9ee, 2010-11-01 (annotated)
- Committer:
- jberry
- Date:
- Mon Nov 01 20:39:01 2010 +0000
- Revision:
- 0:9b057566f9ee
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jberry | 0:9b057566f9ee | 1 | #pragma once |
jberry | 0:9b057566f9ee | 2 | |
jberry | 0:9b057566f9ee | 3 | #ifndef PROCESSES_H |
jberry | 0:9b057566f9ee | 4 | #define PROCESSES_H |
jberry | 0:9b057566f9ee | 5 | #include <event_flags.h> |
jberry | 0:9b057566f9ee | 6 | //#include <Servo_Control.h> |
jberry | 0:9b057566f9ee | 7 | |
jberry | 0:9b057566f9ee | 8 | // Process types |
jberry | 0:9b057566f9ee | 9 | // |
jberry | 0:9b057566f9ee | 10 | |
jberry | 0:9b057566f9ee | 11 | /* |
jberry | 0:9b057566f9ee | 12 | typedef OS::process<OS::pr0, 1400> PING_PROC; |
jberry | 0:9b057566f9ee | 13 | typedef OS::process<OS::pr1, 1000> TProc2; |
jberry | 0:9b057566f9ee | 14 | typedef OS::process<OS::pr2, 3000> Accelo_proc; |
jberry | 0:9b057566f9ee | 15 | typedef OS::process<OS::pr3, 1000> Servo_control; |
jberry | 0:9b057566f9ee | 16 | typedef OS::process<OS::pr4, 3000> Command_handler; |
jberry | 0:9b057566f9ee | 17 | typedef OS::process<OS::pr5, 1000> Motor_controller; |
jberry | 0:9b057566f9ee | 18 | typedef OS::process<OS::pr6, 4000> Serial_Out; |
jberry | 0:9b057566f9ee | 19 | */ |
jberry | 0:9b057566f9ee | 20 | |
jberry | 0:9b057566f9ee | 21 | typedef OS::process<OS::pr0, 2000> PING_PROC; |
jberry | 0:9b057566f9ee | 22 | typedef OS::process<OS::pr1, 1400> TProc2; |
jberry | 0:9b057566f9ee | 23 | typedef OS::process<OS::pr2, 3000> Accelo_proc; |
jberry | 0:9b057566f9ee | 24 | typedef OS::process<OS::pr3, 2000> Servo_control; |
jberry | 0:9b057566f9ee | 25 | typedef OS::process<OS::pr4, 3000> Command_handler; |
jberry | 0:9b057566f9ee | 26 | typedef OS::process<OS::pr5, 2000> Motor_controller; |
jberry | 0:9b057566f9ee | 27 | typedef OS::process<OS::pr6, 4000> Serial_Out; |
jberry | 0:9b057566f9ee | 28 | |
jberry | 0:9b057566f9ee | 29 | //typedef OS::process<OS::pr3, 300> TProc4; |
jberry | 0:9b057566f9ee | 30 | |
jberry | 0:9b057566f9ee | 31 | //--------------------------------------------------------------------------- |
jberry | 0:9b057566f9ee | 32 | // |
jberry | 0:9b057566f9ee | 33 | // Process objects |
jberry | 0:9b057566f9ee | 34 | // |
jberry | 0:9b057566f9ee | 35 | PING_PROC PING_PROCESS; |
jberry | 0:9b057566f9ee | 36 | TProc2 Proc2; |
jberry | 0:9b057566f9ee | 37 | Accelo_proc Accelerometer_process; |
jberry | 0:9b057566f9ee | 38 | Servo_control Servo_process; |
jberry | 0:9b057566f9ee | 39 | Command_handler Com_Handler; |
jberry | 0:9b057566f9ee | 40 | Serial_Out Serial_Out_Proc; |
jberry | 0:9b057566f9ee | 41 | Motor_controller M_cont_process; |
jberry | 0:9b057566f9ee | 42 | |
jberry | 0:9b057566f9ee | 43 | //--------------------------------------------------------------------------- |
jberry | 0:9b057566f9ee | 44 | |
jberry | 0:9b057566f9ee | 45 | |
jberry | 0:9b057566f9ee | 46 | |
jberry | 0:9b057566f9ee | 47 | // IO Pins |
jberry | 0:9b057566f9ee | 48 | // |
jberry | 0:9b057566f9ee | 49 | //DigitalOut led1(LED1); |
jberry | 0:9b057566f9ee | 50 | //DigitalOut led2(LED2); |
jberry | 0:9b057566f9ee | 51 | |
jberry | 0:9b057566f9ee | 52 | |
jberry | 0:9b057566f9ee | 53 | //--------------------------------------------------------------------------- |
jberry | 0:9b057566f9ee | 54 | |
jberry | 0:9b057566f9ee | 55 | |
jberry | 0:9b057566f9ee | 56 | //--------------------------------------------------------------------------- |
jberry | 0:9b057566f9ee | 57 | //extra declarations |
jberry | 0:9b057566f9ee | 58 | |
jberry | 0:9b057566f9ee | 59 | |
jberry | 0:9b057566f9ee | 60 | |
jberry | 0:9b057566f9ee | 61 | |
jberry | 0:9b057566f9ee | 62 | |
jberry | 0:9b057566f9ee | 63 | |
jberry | 0:9b057566f9ee | 64 | |
jberry | 0:9b057566f9ee | 65 | |
jberry | 0:9b057566f9ee | 66 | BusOut leds(LED1, LED2, LED3, LED4); |
jberry | 0:9b057566f9ee | 67 | |
jberry | 0:9b057566f9ee | 68 | |
jberry | 0:9b057566f9ee | 69 | //--------------------------------------------------------------------------- |
jberry | 0:9b057566f9ee | 70 | template<> OS_PROCESS void TProc2::Exec() |
jberry | 0:9b057566f9ee | 71 | { |
jberry | 0:9b057566f9ee | 72 | for(;;) |
jberry | 0:9b057566f9ee | 73 | { |
jberry | 0:9b057566f9ee | 74 | Sleep(500); //suspend process |
jberry | 0:9b057566f9ee | 75 | //printf("e\n"); |
jberry | 0:9b057566f9ee | 76 | //led1 = !led1; |
jberry | 0:9b057566f9ee | 77 | //leds = 0x1; |
jberry | 0:9b057566f9ee | 78 | } |
jberry | 0:9b057566f9ee | 79 | } |
jberry | 0:9b057566f9ee | 80 | |
jberry | 0:9b057566f9ee | 81 | //--------------------------------------------------------------------------- |
jberry | 0:9b057566f9ee | 82 | |
jberry | 0:9b057566f9ee | 83 | |
jberry | 0:9b057566f9ee | 84 | |
jberry | 0:9b057566f9ee | 85 | void OS::SystemTimerUserHook() |
jberry | 0:9b057566f9ee | 86 | { |
jberry | 0:9b057566f9ee | 87 | static int cnt=0; |
jberry | 0:9b057566f9ee | 88 | if (++cnt == 2000) |
jberry | 0:9b057566f9ee | 89 | { |
jberry | 0:9b057566f9ee | 90 | cnt = 0; |
jberry | 0:9b057566f9ee | 91 | //led2.write(1); |
jberry | 0:9b057566f9ee | 92 | timerEvent.SignalISR(); |
jberry | 0:9b057566f9ee | 93 | } |
jberry | 0:9b057566f9ee | 94 | } |
jberry | 0:9b057566f9ee | 95 | |
jberry | 0:9b057566f9ee | 96 | //--------------------------------------------------------------------------- |
jberry | 0:9b057566f9ee | 97 | void OS::IdleProcessUserHook() |
jberry | 0:9b057566f9ee | 98 | { |
jberry | 0:9b057566f9ee | 99 | __WFI(); //sleep the ucontroller and wait for interrupt |
jberry | 0:9b057566f9ee | 100 | } |
jberry | 0:9b057566f9ee | 101 | //----------------------------------------------------------------------------- |
jberry | 0:9b057566f9ee | 102 | |
jberry | 0:9b057566f9ee | 103 | #endif |
jberry | 0:9b057566f9ee | 104 | |
jberry | 0:9b057566f9ee | 105 |