]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/lx-rocon.git/commitdiff
TUMBL firmware check: do not multiply current by 3/2 for 3-phase motor.
authorPavel Pisa <ppisa@pikron.com>
Thu, 23 Apr 2015 17:01:38 +0000 (19:01 +0200)
committerPavel Pisa <ppisa@pikron.com>
Thu, 23 Apr 2015 17:01:38 +0000 (19:01 +0200)
Signed-off-by: Pavel Pisa <ppisa@pikron.com>
hw/lx-rocon_firmware/firmware.c

index c7cc60d210b04e8905f53481da43fc1840e740cc..a8f37ac33cef315048c18bdff5cb27ffbd7e48a4 100644 (file)
 #include "pxmcc_types.h"
 #include "tumbl_addr.h"
 
-/* k3 = math.sqrt(3) / 2 */
-
-#define CONST16_K3   56756
-
-/* 1 / k3 * 65536 */
-
-#define RECI16_K3    75674
-
-/* 1 / (2 * k3) * 65536 */
-#define RECI16_2_K3  37837
+/* 1 / sqrt(3) * 65536 */
+#define RECI16_SQRT3  37837
 
 #define offsbychar(_ptr, _offs) \
    ((typeof(&(_ptr)[0]))((char*)(_ptr) + (_offs)))
@@ -171,7 +163,7 @@ void main(void)
         pwm_bet = pwm_d * pxmcc->ptsin + pwm_q * pxmcc->ptcos;
 
         if (pxmcc->mode == PXMCC_MODE_BLDC) {
-          pwm_bet_div_2_k3 = RECI16_2_K3 * (pwm_bet >> 16);
+          pwm_bet_div_2_k3 = RECI16_SQRT3 * (pwm_bet >> 16);
 
          #ifndef SUPPRESS_CONDITIONALS
           if (pwm_bet > 0)
@@ -556,10 +548,7 @@ void main(void)
         }
        #endif /*SUPPRESS_CONDITIONALS*/
 
-        cur_alp *= 3;
-        cur_alp >>= 1;
-
-        cur_bet *= CONST16_K3;
+        cur_bet *= RECI16_SQRT3;
         cur_bet >>= 16;
       } else {
         int32_t bet_pwm = pxmcc->pwm_prew[2];