Program to control an accelerometer, motors and a rangefinder using the ScmRTOS ported to mbed. (Work in progress and buggy)
Hexacopter/processes.h
- Committer:
- jberry
- Date:
- 2010-11-01
- Revision:
- 0:9b057566f9ee
File content as of revision 0:9b057566f9ee:
#pragma once #ifndef PROCESSES_H #define PROCESSES_H #include <event_flags.h> //#include <Servo_Control.h> // Process types // /* typedef OS::process<OS::pr0, 1400> PING_PROC; typedef OS::process<OS::pr1, 1000> TProc2; typedef OS::process<OS::pr2, 3000> Accelo_proc; typedef OS::process<OS::pr3, 1000> Servo_control; typedef OS::process<OS::pr4, 3000> Command_handler; typedef OS::process<OS::pr5, 1000> Motor_controller; typedef OS::process<OS::pr6, 4000> Serial_Out; */ typedef OS::process<OS::pr0, 2000> PING_PROC; typedef OS::process<OS::pr1, 1400> TProc2; typedef OS::process<OS::pr2, 3000> Accelo_proc; typedef OS::process<OS::pr3, 2000> Servo_control; typedef OS::process<OS::pr4, 3000> Command_handler; typedef OS::process<OS::pr5, 2000> Motor_controller; typedef OS::process<OS::pr6, 4000> Serial_Out; //typedef OS::process<OS::pr3, 300> TProc4; //--------------------------------------------------------------------------- // // Process objects // PING_PROC PING_PROCESS; TProc2 Proc2; Accelo_proc Accelerometer_process; Servo_control Servo_process; Command_handler Com_Handler; Serial_Out Serial_Out_Proc; Motor_controller M_cont_process; //--------------------------------------------------------------------------- // IO Pins // //DigitalOut led1(LED1); //DigitalOut led2(LED2); //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //extra declarations BusOut leds(LED1, LED2, LED3, LED4); //--------------------------------------------------------------------------- template<> OS_PROCESS void TProc2::Exec() { for(;;) { Sleep(500); //suspend process //printf("e\n"); //led1 = !led1; //leds = 0x1; } } //--------------------------------------------------------------------------- void OS::SystemTimerUserHook() { static int cnt=0; if (++cnt == 2000) { cnt = 0; //led2.write(1); timerEvent.SignalISR(); } } //--------------------------------------------------------------------------- void OS::IdleProcessUserHook() { __WFI(); //sleep the ucontroller and wait for interrupt } //----------------------------------------------------------------------------- #endif