Jens Frank Jensen / Mbed 2 deprecated foc-ed_in_the_bot_compact

Dependencies:   mbed FastPWM3

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() {