TRR 2018 / Mbed 2 deprecated biniou-TRR2019-DLVV

Dependencies:   mbed MPU6050

Committer:
GaspardD
Date:
Sun Sep 29 20:22:43 2019 +0000
Revision:
7:23bb20892c8c
Parent:
6:ab9f3695633f
Child:
8:f23601373e8b
code du  crash 1 a 2000 us

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 1:8faddee0e52f 6 E_STATE_ESC e_stateESC;
GaspardD 6:ab9f3695633f 7 Timer t_emergency_brake;
GaspardD 7:23bb20892c8c 8 int pulsewidth_test = 1650;
GaspardD 1:8faddee0e52f 9
GaspardD 1:8faddee0e52f 10 void init_sm_esc()
GaspardD 1:8faddee0e52f 11 {
GaspardD 1:8faddee0e52f 12 e_stateESC = ESC_DISABLED;
GaspardD 1:8faddee0e52f 13 return;
GaspardD 1:8faddee0e52f 14 }
GaspardD 1:8faddee0e52f 15
GaspardD 1:8faddee0e52f 16 void update_sm_esc()
GaspardD 1:8faddee0e52f 17 {
GaspardD 3:1b7eb426247e 18 E_STATE_ESC next_state = e_stateESC;
GaspardD 1:8faddee0e52f 19
GaspardD 1:8faddee0e52f 20 switch(e_stateESC) {
GaspardD 1:8faddee0e52f 21 case ESC_DISABLED:
GaspardD 3:1b7eb426247e 22 if(b_UTILS_flag_button && !b_UTILS_flag_emergency_stop) {
GaspardD 1:8faddee0e52f 23 next_state = ESC_INIT;
GaspardD 1:8faddee0e52f 24 }
GaspardD 1:8faddee0e52f 25 break;
GaspardD 1:8faddee0e52f 26 case ESC_INIT:
GaspardD 1:8faddee0e52f 27 next_state = ESC_COMMAND;
GaspardD 1:8faddee0e52f 28 break;
GaspardD 1:8faddee0e52f 29 case ESC_COMMAND:
GaspardD 5:8bbe640528bc 30 if(b_UTILS_flag_emergency_stop) {
GaspardD 5:8bbe640528bc 31 next_state = ESC_DISABLED;
GaspardD 5:8bbe640528bc 32 }
GaspardD 1:8faddee0e52f 33 break;
GaspardD 1:8faddee0e52f 34 default:
GaspardD 5:8bbe640528bc 35 break;
GaspardD 1:8faddee0e52f 36 }
GaspardD 1:8faddee0e52f 37
GaspardD 1:8faddee0e52f 38 e_stateESC = next_state;
GaspardD 1:8faddee0e52f 39 return;
GaspardD 1:8faddee0e52f 40 }
GaspardD 1:8faddee0e52f 41
GaspardD 1:8faddee0e52f 42 void output_sm_esc()
GaspardD 1:8faddee0e52f 43 {
GaspardD 5:8bbe640528bc 44 switch(e_stateESC) {
GaspardD 1:8faddee0e52f 45 case ESC_DISABLED:
GaspardD 5:8bbe640528bc 46 if(b_UTILS_flag_emergency_stop) {
GaspardD 4:efa207509f63 47 pc.printf("EMERGENCY STOP\r\n");
GaspardD 4:efa207509f63 48 b_UTILS_flag_emergency_stop = false;
GaspardD 5:8bbe640528bc 49 if(b_chassis_with_pushbutton) {
GaspardD 5:8bbe640528bc 50 relay_ESC = 1;
GaspardD 5:8bbe640528bc 51 wait(0.5);
GaspardD 5:8bbe640528bc 52 }
GaspardD 3:1b7eb426247e 53 relay_ESC = 0;
GaspardD 3:1b7eb426247e 54 }
GaspardD 1:8faddee0e52f 55 break;
GaspardD 5:8bbe640528bc 56
GaspardD 1:8faddee0e52f 57 case ESC_INIT:
GaspardD 4:efa207509f63 58 pc.printf("Init esc\r\n");
GaspardD 6:ab9f3695633f 59 odroid.printf("pulsewidth_test: %d\r\n",pulsewidth_test);
GaspardD 4:efa207509f63 60 b_UTILS_flag_button = false;
GaspardD 3:1b7eb426247e 61 pwm_ESC.period_ms(ESC_PERIOD_DURATION_MS); //20 ms is default
GaspardD 3:1b7eb426247e 62 pwm_ESC.pulsewidth_us(0);
GaspardD 5:8bbe640528bc 63
GaspardD 1:8faddee0e52f 64 relay_ESC = 1;
GaspardD 5:8bbe640528bc 65 if(b_chassis_with_pushbutton) {
GaspardD 6:ab9f3695633f 66 wait(0.5);
GaspardD 6:ab9f3695633f 67 relay_ESC = 0;
GaspardD 5:8bbe640528bc 68 }
GaspardD 3:1b7eb426247e 69 wait(0.1);
GaspardD 5:8bbe640528bc 70
GaspardD 3:1b7eb426247e 71 pwm_ESC.pulsewidth_us(ESC_PULSE_MIN_US);
GaspardD 3:1b7eb426247e 72 wait(3);
GaspardD 3:1b7eb426247e 73 pwm_ESC.pulsewidth_us(ESC_PULSE_MAX_US);
GaspardD 3:1b7eb426247e 74 wait(1);
GaspardD 3:1b7eb426247e 75 pwm_ESC.pulsewidth_us(ESC_PULSE_IDLE_US);
GaspardD 1:8faddee0e52f 76 wait(1);
GaspardD 6:ab9f3695633f 77 t_emergency_brake.start();
GaspardD 6:ab9f3695633f 78 t_emergency_brake.reset();
GaspardD 1:8faddee0e52f 79 break;
GaspardD 5:8bbe640528bc 80
GaspardD 1:8faddee0e52f 81 case ESC_COMMAND:
GaspardD 6:ab9f3695633f 82 if(t_emergency_brake.read_ms() < 2000) {
GaspardD 6:ab9f3695633f 83 pwm_ESC.pulsewidth_us(pulsewidth_test);
GaspardD 6:ab9f3695633f 84 } else {
GaspardD 6:ab9f3695633f 85 pc.printf("emergency stop flag raised\r\n");
GaspardD 6:ab9f3695633f 86 b_UTILS_flag_emergency_stop = true;
GaspardD 6:ab9f3695633f 87 t_emergency_brake.stop();
GaspardD 6:ab9f3695633f 88 t_emergency_brake.reset();
GaspardD 6:ab9f3695633f 89 }
GaspardD 6:ab9f3695633f 90 /*switch(e_stateSections) {
GaspardD 6:ab9f3695633f 91 case RUNNING_SECTION:
GaspardD 6:ab9f3695633f 92 pwm_ESC.pulsewidth_us(1660);
GaspardD 6:ab9f3695633f 93 break;
GaspardD 6:ab9f3695633f 94 case STOPPED:
GaspardD 6:ab9f3695633f 95 pc.printf("emergency stop flag raised\r\n");
GaspardD 6:ab9f3695633f 96 b_UTILS_flag_emergency_stop = true;
GaspardD 6:ab9f3695633f 97 break;
GaspardD 6:ab9f3695633f 98 default:
GaspardD 6:ab9f3695633f 99 break;
GaspardD 6:ab9f3695633f 100 }*/
GaspardD 1:8faddee0e52f 101 break;
GaspardD 1:8faddee0e52f 102 default:
GaspardD 5:8bbe640528bc 103 break;
GaspardD 1:8faddee0e52f 104 }
GaspardD 5:8bbe640528bc 105
GaspardD 1:8faddee0e52f 106 return;
GaspardD 1:8faddee0e52f 107 }