Ian Hua / Quadcopter-mbedRTOS
Committer:
pHysiX
Date:
Mon May 12 04:43:38 2014 +0000
Revision:
30:d9b988f8d84f
Parent:
28:aa72bd4ff103
Child:
31:3dde2201e54d
WIP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pHysiX 27:18b6580eb0b1 1 /* File: Task2_Master.cpp
pHysiX 27:18b6580eb0b1 2 * Author: Trung Tin Ian HUA
pHysiX 27:18b6580eb0b1 3 * Date: May 2014
pHysiX 27:18b6580eb0b1 4 * Purpose: Thread2: Gyro sample and PID Control loop
pHysiX 30:d9b988f8d84f 5 * Settings: 100Hz
pHysiX 30:d9b988f8d84f 6 * Timing: 40us
pHysiX 27:18b6580eb0b1 7 */
pHysiX 27:18b6580eb0b1 8 #include "Task2_Slave.h"
pHysiX 27:18b6580eb0b1 9 #include "setup.h"
pHysiX 27:18b6580eb0b1 10 #include "PID.h"
pHysiX 27:18b6580eb0b1 11
pHysiX 27:18b6580eb0b1 12 /* YPR Adjust */
pHysiX 27:18b6580eb0b1 13
pHysiX 27:18b6580eb0b1 14 volatile float adjust_attitude[3] = {0.0, 0.0, 0.0};
pHysiX 27:18b6580eb0b1 15
pHysiX 27:18b6580eb0b1 16 //bool counterTask2Master = false;
pHysiX 27:18b6580eb0b1 17
pHysiX 30:d9b988f8d84f 18 #ifdef TIME_TASK2M
pHysiX 30:d9b988f8d84f 19 Timer _t2m;
pHysiX 30:d9b988f8d84f 20 #endif
pHysiX 27:18b6580eb0b1 21 void Task2_Master(void const *argument)
pHysiX 27:18b6580eb0b1 22 {
pHysiX 30:d9b988f8d84f 23 #ifndef TIME_TASK2M
pHysiX 30:d9b988f8d84f 24 if (armed) {
pHysiX 30:d9b988f8d84f 25 #endif
pHysiX 30:d9b988f8d84f 26 switch (mode) {
pHysiX 30:d9b988f8d84f 27 case RATE:
pHysiX 30:d9b988f8d84f 28 break;
pHysiX 28:aa72bd4ff103 29
pHysiX 30:d9b988f8d84f 30 case ATTITUDE:
pHysiX 30:d9b988f8d84f 31 default:
pHysiX 30:d9b988f8d84f 32 #ifdef TIME_TASK2M
pHysiX 30:d9b988f8d84f 33 _t2m.reset();
pHysiX 30:d9b988f8d84f 34 _t2m.start();
pHysiX 30:d9b988f8d84f 35 #endif
pHysiX 30:d9b988f8d84f 36 Task1(NULL);
pHysiX 30:d9b988f8d84f 37
pHysiX 30:d9b988f8d84f 38 if (counterTask1) {
pHysiX 30:d9b988f8d84f 39 pitchPIDstable.setProcessValue((int) (ypr[1] - ypr_offset[1]));
pHysiX 30:d9b988f8d84f 40 rollPIDstable.setProcessValue((int) (ypr[2] - ypr_offset[2]));
pHysiX 30:d9b988f8d84f 41 }
pHysiX 27:18b6580eb0b1 42
pHysiX 30:d9b988f8d84f 43 pitchPIDstable.setSetPoint(inputYPR[1]);
pHysiX 30:d9b988f8d84f 44 rollPIDstable.setSetPoint(inputYPR[2]);
pHysiX 30:d9b988f8d84f 45
pHysiX 30:d9b988f8d84f 46 adjust_attitude[1] = pitchPIDstable.compute();
pHysiX 30:d9b988f8d84f 47 adjust_attitude[2] = rollPIDstable.compute();
pHysiX 30:d9b988f8d84f 48 adjust_attitude[2] *= -1;
pHysiX 27:18b6580eb0b1 49
pHysiX 30:d9b988f8d84f 50 counterTask1 = false;
pHysiX 30:d9b988f8d84f 51 //counterTask2Master = true;
pHysiX 30:d9b988f8d84f 52 #ifdef TIME_TASK2M
pHysiX 30:d9b988f8d84f 53 _t2m.stop();
pHysiX 30:d9b988f8d84f 54 BT.printf("%d\n", _t2m.read_us());
pHysiX 30:d9b988f8d84f 55 #endif
pHysiX 30:d9b988f8d84f 56 break;
pHysiX 30:d9b988f8d84f 57 }
pHysiX 30:d9b988f8d84f 58 #ifndef TIME_TASK2M
pHysiX 27:18b6580eb0b1 59 }
pHysiX 30:d9b988f8d84f 60 #endif
pHysiX 27:18b6580eb0b1 61 }