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.
Diff: main.cpp
- Revision:
- 201:5d1a3aa50fe0
- Parent:
- 199:c160a2c03781
- Child:
- 202:1baff0df86d1
--- a/main.cpp Sun Feb 11 08:17:08 2018 +0000 +++ b/main.cpp Mon Feb 12 00:02:50 2018 +0000 @@ -78,10 +78,12 @@ constrain_norm(&foc.vd, &foc.vq, 1.0f, 1.0f, 1.0f + _OVERMODULATION_FACTOR); + /* if (!control.enabled) { foc.vd = 0.0f; foc.vq = 0.0f; } + */ float pv = foc.p + read.w / _V_PHASE_SWIZZLE; float sin_pv = sinf(pv); @@ -92,14 +94,40 @@ float va, vb, vc, voff; - invclarke(foc.valpha, foc.vbeta, &va, &vb); - vc = -va - vb; + //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; + //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; + + /*set outputs*/ + switch (BREMS_mode) { + case MODE_CFG: + va = 0.0f; + vb = 0.0f; + 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; + vb = -0.9f; + vc = -0.9f; + break; + case MODE_CHR: + //i have no idea lol; + break; + } /*safety checks, reset integral*/ if (!checks_passed()) { @@ -121,27 +149,6 @@ break; } - /*output to timers*/ - switch (BREMS_mode) { - case MODE_CFG: - set_dtc(io.a, 0.5f); - set_dtc(io.b, 0.5f); - set_dtc(io.c, 0.5f); - break; - case MODE_RUN: - set_dtc(io.a, 0.5f + 0.5f * va * LINEAR_MODULATION_MAX); - set_dtc(io.b, 0.5f + 0.5f * vb * LINEAR_MODULATION_MAX); - set_dtc(io.c, 0.5f + 0.5f * vc * LINEAR_MODULATION_MAX); - break; - case MODE_ZERO: - set_dtc(io.a, 0.95f); - set_dtc(io.b, 0.05f); - set_dtc(io.c, 0.05f); - break; - case MODE_CHR: - //i have no idea lol; - break; - } /*log data*/ if (_ENABLE_LOGGING) { @@ -156,6 +163,15 @@ break; } } + + if (!control.enabled) { + va = 0.0f; vb = 0.0f; vc = 0.0f; + } + + //output to timers + set_dtc(io.a, 0.5f + 0.5f * va * LINEAR_MODULATION_MAX); + set_dtc(io.b, 0.5f + 0.5f * vb * LINEAR_MODULATION_MAX); + set_dtc(io.c, 0.5f + 0.5f * vc * LINEAR_MODULATION_MAX); } void slow_loop() {