Bayley Wang
/
foc-ed_in_the_bot_compact
robot
Diff: main.cpp
- Revision:
- 204:74714d52a936
- Parent:
- 203:cb2a3ea31dce
- Child:
- 205:5cfe6d7e08a3
--- a/main.cpp Mon Feb 12 03:41:12 2018 +0000 +++ b/main.cpp Mon Feb 12 04:12:07 2018 +0000 @@ -87,6 +87,16 @@ /*set outputs*/ float va, vb, vc, voff; + + invclarke(foc.valpha, foc.vbeta, &va, &vb); + vc = -va - vb; + + /*SVPWM*/ + voff = (fminf(va, fminf(vb, vc)) + fmaxf(va, fmaxf(vb, vc)))/2.0f;//don't think about it + va = va - voff; + vb = vb - voff; + vc = vc - voff; + switch (BREMS_mode) { case MODE_CFG: va = 0.0f; @@ -94,13 +104,6 @@ vc = 0.0f; break; case MODE_RUN: - invclarke(foc.valpha, foc.vbeta, &va, &vb); - vc = -va - vb; - /*SVPWM*/ - voff = (fminf(va, fminf(vb, vc)) + fmaxf(va, fmaxf(vb, vc)))/2.0f;//don't think about it - va = va - voff; - vb = vb - voff; - vc = vc - voff; break; case MODE_ZERO: va = 0.9f; @@ -113,27 +116,12 @@ } /*safety checks, reset integral*/ - if (!checks_passed()) { - /*do this even in disabled state, to keep integral down*/ - go_disabled(); - } - - /*some modes disable output*/ - switch (BREMS_mode) { - case MODE_CFG: + if (!checks_passed() || !mode_enables_output()) { go_disabled(); - break; - case MODE_RUN: - case MODE_ZERO: - case MODE_CHR: - break; - default: - go_disabled(); - break; } /*log data*/ - if (_ENABLE_LOGGING) log(); + if (_ENABLE_LOGGING && mode_enables_logging()) log(); /*disable outputs if necessary*/ if (!control.enabled) { @@ -171,19 +159,6 @@ } void log() { - switch (BREMS_mode) { - case MODE_RUN: - send_packet(); - break; - case MODE_CFG: - case MODE_ZERO: - case MODE_CHR: - default: - break; - } -} - -void send_packet() { float packet[8]; packet[0] = read.w / 8.0f; packet[1] = control.d_ref / 2.0f + 128.0f;