TRR 2018 / Mbed 2 deprecated biniou-TRR2019-DLVV

Dependencies:   mbed MPU6050

Committer:
GaspardD
Date:
Sun Sep 29 00:43:58 2019 +0000
Revision:
3:1b7eb426247e
Parent:
2:e9d928fd327a
Child:
4:efa207509f63
init esc nouveau chassis ok

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GaspardD 1:8faddee0e52f 1 #include "sm_esc.h"
GaspardD 1:8faddee0e52f 2
GaspardD 1:8faddee0e52f 3 PwmOut pwm_ESC(PD_12);
GaspardD 1:8faddee0e52f 4 DigitalOut relay_ESC(PG_0);
GaspardD 1:8faddee0e52f 5 E_STATE_ESC e_stateESC;
GaspardD 1:8faddee0e52f 6
GaspardD 1:8faddee0e52f 7 void init_sm_esc()
GaspardD 1:8faddee0e52f 8 {
GaspardD 1:8faddee0e52f 9 e_stateESC = ESC_DISABLED;
GaspardD 1:8faddee0e52f 10 return;
GaspardD 1:8faddee0e52f 11 }
GaspardD 1:8faddee0e52f 12
GaspardD 1:8faddee0e52f 13 void update_sm_esc()
GaspardD 1:8faddee0e52f 14 {
GaspardD 3:1b7eb426247e 15 E_STATE_ESC next_state = e_stateESC;
GaspardD 1:8faddee0e52f 16
GaspardD 1:8faddee0e52f 17 switch(e_stateESC) {
GaspardD 1:8faddee0e52f 18 case ESC_DISABLED:
GaspardD 3:1b7eb426247e 19 if(b_UTILS_flag_button && !b_UTILS_flag_emergency_stop) {
GaspardD 1:8faddee0e52f 20 next_state = ESC_INIT;
GaspardD 1:8faddee0e52f 21 b_UTILS_flag_button = false;
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 1:8faddee0e52f 28 if(b_UTILS_flag_emergency_stop)
GaspardD 1:8faddee0e52f 29 {
GaspardD 1:8faddee0e52f 30 next_state = ESC_DISABLED;
GaspardD 1:8faddee0e52f 31 }
GaspardD 1:8faddee0e52f 32 break;
GaspardD 1:8faddee0e52f 33 default:
GaspardD 1:8faddee0e52f 34 break;
GaspardD 1:8faddee0e52f 35 }
GaspardD 1:8faddee0e52f 36
GaspardD 1:8faddee0e52f 37 e_stateESC = next_state;
GaspardD 1:8faddee0e52f 38 return;
GaspardD 1:8faddee0e52f 39 }
GaspardD 1:8faddee0e52f 40
GaspardD 1:8faddee0e52f 41 void output_sm_esc()
GaspardD 1:8faddee0e52f 42 {
GaspardD 1:8faddee0e52f 43 switch(e_stateESC) {
GaspardD 1:8faddee0e52f 44 case ESC_DISABLED:
GaspardD 3:1b7eb426247e 45 if(b_UTILS_flag_emergency_stop){
GaspardD 3:1b7eb426247e 46 relay_ESC = 1;
GaspardD 3:1b7eb426247e 47 wait(0.5);
GaspardD 3:1b7eb426247e 48 relay_ESC = 0;
GaspardD 3:1b7eb426247e 49 }
GaspardD 1:8faddee0e52f 50 break;
GaspardD 1:8faddee0e52f 51 case ESC_INIT:
GaspardD 3:1b7eb426247e 52 pc.printf("init the ESC\n");
GaspardD 3:1b7eb426247e 53 pwm_ESC.period_ms(ESC_PERIOD_DURATION_MS); //20 ms is default
GaspardD 3:1b7eb426247e 54 pwm_ESC.pulsewidth_us(0);
GaspardD 3:1b7eb426247e 55
GaspardD 1:8faddee0e52f 56 relay_ESC = 1;
GaspardD 3:1b7eb426247e 57 wait(0.5);
GaspardD 3:1b7eb426247e 58 relay_ESC = 0;
GaspardD 3:1b7eb426247e 59 wait(0.1);
GaspardD 3:1b7eb426247e 60
GaspardD 3:1b7eb426247e 61 pwm_ESC.pulsewidth_us(ESC_PULSE_MIN_US);
GaspardD 3:1b7eb426247e 62 wait(3);
GaspardD 3:1b7eb426247e 63 pwm_ESC.pulsewidth_us(ESC_PULSE_MAX_US);
GaspardD 3:1b7eb426247e 64 wait(1);
GaspardD 3:1b7eb426247e 65 pwm_ESC.pulsewidth_us(ESC_PULSE_IDLE_US);
GaspardD 1:8faddee0e52f 66 wait(1);
GaspardD 1:8faddee0e52f 67 break;
GaspardD 1:8faddee0e52f 68 case ESC_COMMAND:
GaspardD 1:8faddee0e52f 69 wait(1);
GaspardD 3:1b7eb426247e 70 pc.printf("send pulse 1600 to esc\n");
GaspardD 1:8faddee0e52f 71 pwm_ESC.pulsewidth_us(1600);
GaspardD 1:8faddee0e52f 72 wait(1);
GaspardD 3:1b7eb426247e 73 pc.printf("send pulse 1700 to esc\n");
GaspardD 1:8faddee0e52f 74 pwm_ESC.pulsewidth_us(1700);
GaspardD 1:8faddee0e52f 75 wait(1);
GaspardD 3:1b7eb426247e 76
GaspardD 3:1b7eb426247e 77 pc.printf("send pulse 1300 to esc\n");
GaspardD 3:1b7eb426247e 78 pwm_ESC.pulsewidth_us(1300);
GaspardD 3:1b7eb426247e 79 wait(3);
GaspardD 3:1b7eb426247e 80
GaspardD 3:1b7eb426247e 81 pc.printf("send pulse 1600 to esc\n");
GaspardD 3:1b7eb426247e 82 pwm_ESC.pulsewidth_us(1600);
GaspardD 1:8faddee0e52f 83 wait(1);
GaspardD 3:1b7eb426247e 84 pc.printf("send pulse 1700 to esc\n");
GaspardD 3:1b7eb426247e 85 pwm_ESC.pulsewidth_us(1700);
GaspardD 1:8faddee0e52f 86 wait(1);
GaspardD 3:1b7eb426247e 87
GaspardD 3:1b7eb426247e 88 pc.printf("send pulse 1500 to esc\n");
GaspardD 3:1b7eb426247e 89 pwm_ESC.pulsewidth_us(1500);
GaspardD 1:8faddee0e52f 90 wait(1);
GaspardD 3:1b7eb426247e 91
GaspardD 3:1b7eb426247e 92 pc.printf("emergency stop\n");
GaspardD 1:8faddee0e52f 93 b_UTILS_flag_emergency_stop = true;
GaspardD 1:8faddee0e52f 94 break;
GaspardD 1:8faddee0e52f 95 default:
GaspardD 1:8faddee0e52f 96 break;
GaspardD 1:8faddee0e52f 97 }
GaspardD 1:8faddee0e52f 98
GaspardD 1:8faddee0e52f 99 return;
GaspardD 1:8faddee0e52f 100 }