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.
RTOS-Threads/src/Task2_Master.cpp@30:d9b988f8d84f, 2014-05-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |