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/Task4.cpp
- Committer:
- pHysiX
- Date:
- 2014-05-13
- Revision:
- 36:d95e3d6f2fc4
- Parent:
- 34:228d87c45151
- Child:
- 37:29feef05d848
File content as of revision 36:d95e3d6f2fc4:
/* File: Task4.h * Author: Trung Tin Ian HUA * Date: May 2014 * Purpose: Thread4: ESC pulsewidth update. Note this is INDEPENDENT of the pulse frequency. * Settings: 400Hz * 200Hz <= PWM frequency <= 400Hz * Frequency: 400Hz * Refer to tasks.h to change PWM frequency * Timing: //1500us */ #include "tasks.h" #include "setup.h" int ESCpower[4] = {0, 0, 0, 0}; int stallESC = 0; bool armed = false; bool ESC_check = false; bool calibration_mode = false; // ================== // === ESC UPDATE === // ================== //Timer void Task4(void const *argurment) { //Timer if (armed) { if (calibration_mode) { for (int i = 0; i < 4; i++) ESC[i].pulsewidth_us(RCCommand[3]); } else if (RCCommand[3] > 1100) { if (counterESC) { for (int i = 0; i < 3; i++) adjust[i] /= 2.0; int throttle = RCCommand[3] * 9/10; ESCpower[0] = constrainESC(throttle + (adjust[1]) + (adjust[2]) - adjust[0]); ESCpower[1] = constrainESC(throttle + (adjust[1]) - (adjust[2]) + adjust[0]); ESCpower[2] = constrainESC(throttle - (adjust[1]) - (adjust[2]) - adjust[0]); ESCpower[3] = constrainESC(throttle - (adjust[1]) + (adjust[2]) + adjust[0]); for (int i = 0; i < 4; i++) ESC[i].pulsewidth_us(ESCpower[i]); counterESC = false; } else { stallESC++; if (stallESC > 1) { imu.debugSerial.printf("ESC NOT UPDATED FAST ENOUGH!\n"); BT.printf("ESC NOT UPDATED FAST ENOUGH!\n"); stallESC = 0; } } } else { for (int i = 0; i < 4; i++) { ESCpower[i] = 980; ESC[i].pulsewidth_us(ESCpower[i]); } } } else { if (ESC_check) { BT.printf("Need to ARM to check ESC output!\n"); ESC_check = false; } for (int i = 0; i < 4; i++) { ESCpower[i] = 990; ESC[i].pulsewidth_us(ESCpower[i]); } } //Timer } // ************************ // *** Helper functions *** // ************************ int constrainESC(float input) { if (input < 1100.0) return 1100; else if (input > 2000.0) return 2000; else return (int) input; }