TRR 2018 / Mbed 2 deprecated biniou-TRR2019-DLVV

Dependencies:   mbed MPU6050

Committer:
GaspardD
Date:
Thu Oct 03 23:28:56 2019 +0000
Revision:
9:1b54bac6d9a7
Parent:
8:f23601373e8b
Child:
12:58ad06f9847d
a tester ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GaspardD 1:8faddee0e52f 1 #include "sm_esc.h"
GaspardD 6:ab9f3695633f 2 #include "sm_sections.h"
GaspardD 1:8faddee0e52f 3
GaspardD 1:8faddee0e52f 4 PwmOut pwm_ESC(PD_12);
GaspardD 1:8faddee0e52f 5 DigitalOut relay_ESC(PG_0);
GaspardD 8:f23601373e8b 6 E_STATE_ESC e_ESC_state;
GaspardD 1:8faddee0e52f 7
GaspardD 1:8faddee0e52f 8 void init_sm_esc()
GaspardD 1:8faddee0e52f 9 {
GaspardD 8:f23601373e8b 10 e_ESC_state = ESC_DISABLED;
GaspardD 1:8faddee0e52f 11 return;
GaspardD 1:8faddee0e52f 12 }
GaspardD 1:8faddee0e52f 13
GaspardD 1:8faddee0e52f 14 void update_sm_esc()
GaspardD 1:8faddee0e52f 15 {
GaspardD 8:f23601373e8b 16 E_STATE_ESC next_state = e_ESC_state;
GaspardD 1:8faddee0e52f 17
GaspardD 8:f23601373e8b 18 switch(e_ESC_state) {
GaspardD 1:8faddee0e52f 19 case ESC_DISABLED:
GaspardD 8:f23601373e8b 20 if(b_UTILS_flag_button_ESC && !b_UTILS_flag_emergency_stop) {
GaspardD 1:8faddee0e52f 21 next_state = ESC_INIT;
GaspardD 1:8faddee0e52f 22 }
GaspardD 1:8faddee0e52f 23 break;
GaspardD 1:8faddee0e52f 24 case ESC_INIT:
GaspardD 1:8faddee0e52f 25 next_state = ESC_COMMAND;
GaspardD 1:8faddee0e52f 26 break;
GaspardD 1:8faddee0e52f 27 case ESC_COMMAND:
GaspardD 5:8bbe640528bc 28 if(b_UTILS_flag_emergency_stop) {
GaspardD 5:8bbe640528bc 29 next_state = ESC_DISABLED;
GaspardD 5:8bbe640528bc 30 }
GaspardD 1:8faddee0e52f 31 break;
GaspardD 1:8faddee0e52f 32 default:
GaspardD 5:8bbe640528bc 33 break;
GaspardD 1:8faddee0e52f 34 }
GaspardD 1:8faddee0e52f 35
GaspardD 8:f23601373e8b 36 e_ESC_state = next_state;
GaspardD 1:8faddee0e52f 37 return;
GaspardD 1:8faddee0e52f 38 }
GaspardD 1:8faddee0e52f 39
GaspardD 1:8faddee0e52f 40 void output_sm_esc()
GaspardD 1:8faddee0e52f 41 {
GaspardD 8:f23601373e8b 42 switch(e_ESC_state) {
GaspardD 1:8faddee0e52f 43 case ESC_DISABLED:
GaspardD 5:8bbe640528bc 44 if(b_UTILS_flag_emergency_stop) {
GaspardD 9:1b54bac6d9a7 45 rs_LOG_pc.printf("EMERGENCY STOP\r\n");
GaspardD 4:efa207509f63 46 b_UTILS_flag_emergency_stop = false;
GaspardD 8:f23601373e8b 47 if(b_CHASSIS_with_pushbutton) {
GaspardD 5:8bbe640528bc 48 relay_ESC = 1;
GaspardD 5:8bbe640528bc 49 wait(0.5);
GaspardD 5:8bbe640528bc 50 }
GaspardD 3:1b7eb426247e 51 relay_ESC = 0;
GaspardD 3:1b7eb426247e 52 }
GaspardD 1:8faddee0e52f 53 break;
GaspardD 5:8bbe640528bc 54
GaspardD 1:8faddee0e52f 55 case ESC_INIT:
GaspardD 9:1b54bac6d9a7 56 rs_LOG_pc.printf("Init esc\r\n");
GaspardD 8:f23601373e8b 57 b_UTILS_flag_button_ESC = false;
GaspardD 3:1b7eb426247e 58 pwm_ESC.period_ms(ESC_PERIOD_DURATION_MS); //20 ms is default
GaspardD 3:1b7eb426247e 59 pwm_ESC.pulsewidth_us(0);
GaspardD 5:8bbe640528bc 60
GaspardD 1:8faddee0e52f 61 relay_ESC = 1;
GaspardD 8:f23601373e8b 62 if(b_CHASSIS_with_pushbutton) {
GaspardD 6:ab9f3695633f 63 wait(0.5);
GaspardD 6:ab9f3695633f 64 relay_ESC = 0;
GaspardD 5:8bbe640528bc 65 }
GaspardD 3:1b7eb426247e 66 wait(0.1);
GaspardD 5:8bbe640528bc 67
GaspardD 3:1b7eb426247e 68 pwm_ESC.pulsewidth_us(ESC_PULSE_MIN_US);
GaspardD 3:1b7eb426247e 69 wait(3);
GaspardD 3:1b7eb426247e 70 pwm_ESC.pulsewidth_us(ESC_PULSE_MAX_US);
GaspardD 3:1b7eb426247e 71 wait(1);
GaspardD 3:1b7eb426247e 72 pwm_ESC.pulsewidth_us(ESC_PULSE_IDLE_US);
GaspardD 1:8faddee0e52f 73 wait(1);
GaspardD 9:1b54bac6d9a7 74 log_start(10000);
GaspardD 1:8faddee0e52f 75 break;
GaspardD 5:8bbe640528bc 76
GaspardD 1:8faddee0e52f 77 case ESC_COMMAND:
GaspardD 8:f23601373e8b 78 switch(e_SECTIONS_state) {
GaspardD 6:ab9f3695633f 79 case RUNNING_SECTION:
GaspardD 8:f23601373e8b 80 pwm_ESC.pulsewidth_us(s_UTILS_currentSection->targetSpeed_mps);
GaspardD 6:ab9f3695633f 81 break;
GaspardD 6:ab9f3695633f 82 case STOPPED:
GaspardD 6:ab9f3695633f 83 break;
GaspardD 6:ab9f3695633f 84 default:
GaspardD 6:ab9f3695633f 85 break;
GaspardD 8:f23601373e8b 86 }
GaspardD 1:8faddee0e52f 87 break;
GaspardD 1:8faddee0e52f 88 default:
GaspardD 5:8bbe640528bc 89 break;
GaspardD 1:8faddee0e52f 90 }
GaspardD 5:8bbe640528bc 91
GaspardD 1:8faddee0e52f 92 return;
GaspardD 1:8faddee0e52f 93 }