1

Dependencies:   mbed-dev_spine

Revision:
6:aad89fd109c2
Parent:
5:6a95726e45b0
Child:
8:95a914f962bd
--- a/DATA_COMMAND/data_command.cpp	Tue Oct 08 04:35:23 2019 +0000
+++ b/DATA_COMMAND/data_command.cpp	Mon Dec 02 14:22:07 2019 +0000
@@ -1,14 +1,15 @@
 #include "data_command.h"
 
 
-Serial      command(PC_10, PC_11);
-DigitalOut  sf_m_c(PC_12);
+Serial      command(PC_12, PD_2);
+//DigitalOut  sf_m_c(PC_12);
 
 int enabled = 0;                                                                // 进入电机模式标志位
 int counter = 0;                                                                // 输出计数器
 int c_control = 0;                                                              // 命令帧标志位
 float SP_pf = 0, SP_df = 0;
 int c_lock = 2;                                                                 // 位置锁定标志位 
+int return_zero = 0;                                                            // 电机回0标志位
 
 unsigned int flag_A = 0, flag_B = 0;
 unsigned int Snum = 0;
@@ -89,7 +90,7 @@
         SP_df = 0 - SP_df;
     
     
-    sf_m_c = 1;                                                                 // 切换为发送模式
+    //sf_m_c = 1;                                                                 // 切换为发送模式
     wait_us(200);
     
     switch(Suse[0])
@@ -97,26 +98,40 @@
         case('e'):
             command.printf("\n\rPF exiting motor mode\r");
             ExitMotorMode(&PF_can);
-            c_lock = 1;                                                         // 电机位置解锁
+            return_zero = 0;                                                    // 停止回0
+            c_lock = 2;                                                         // 电机位置锁无效
             send_enable = 0;                                                    // main不发送CAN位置命令
             break;
         case('m'):
             command.printf("\n\rPF entering PC motor mode\r");
             EnterMotorMode(&PF_can);
-            c_lock = 1;                                                         // 电机位置锁定
+            return_zero = 0;
+            c_lock = 1;                                                         // 电机位置锁定 
             send_enable = 1;                                                    // main发送CAN位置命令
             break;
         case('M'):
             command.printf("\n\rPF entering BOARD motor mode\r");
             EnterMotorMode(&PF_can);
+            return_zero = 0;
             c_lock = 0;                                                         // 电机位置解锁
-            send_enable = 0;                                                    // M模式下,命令是否发送,命令是什么由calculate决定
+            send_enable = 0;                                                    // M模式下,命令是否发送,命令是什么由calculate决定 
             break;
         case('z'):
             command.printf("\n\rPF zeroing\r");
             Zero(&PF_can);
-            break;   
+            return_zero = 0; 
+            c_lock = 2;
+            send_enable = 0;
+            break;
+        case('r'):
+            command.printf("\n\rPF return zero\r");
+            EnterMotorMode(&PF_can);
+            return_zero = 1;
+            c_lock = 2;
+            send_enable = 1;
+            break;      
     }
+    /*
     switch(Suse[5])
     {
         case('e'):
@@ -142,9 +157,10 @@
             Zero(&DF_can);
             break;   
     }
+    */
     
     wait_ms(2);
-    sf_m_c = 0;                                                                 // 恢复接收模式
+    //sf_m_c = 0;                                                                 // 恢复接收模式
     wait_us(200);