Program to control an accelerometer, motors and a rangefinder using the ScmRTOS ported to mbed. (Work in progress and buggy)

Dependencies:   mbed

Committer:
jberry
Date:
Mon Nov 01 20:39:01 2010 +0000
Revision:
0:9b057566f9ee

        

Who changed what in which revision?

UserRevisionLine numberNew 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