Jelajahi Sumber

1. app.c 更新
2. 加入mcu reset src的event log
3. z100 工程改为 servo, 支持被拖电机

Signed-off-by: unknown <huhui@sharkgulf.com>

unknown 2 tahun lalu
induk
melakukan
5434906453

+ 34 - 49
Applications/app/app.c

@@ -25,54 +25,57 @@
 extern float target_d;
 extern float target_q;
 #endif
-static u32 _app_low_task(void *args);
-static u32 _app_report_task(void *args);
-static u32 _app_plot_task(void *args);
+static u32 app_low_task(void *args);
+static u32 app_report_task(void *args);
+static u32 app_plot_task(void *args);
 //static u32 _app_trq_test_task(void *args);
 extern void PMSM_FOC_LogDebug(void);
 extern void mc_err_code_log(void);
 extern void encoder_log(void);
 extern void sample_log(void);
 extern void thro_torque_log(void);
-extern void eCtrl_debug_log(void);
 extern bool can_is_connect_pc(void);
 extern measure_time_t g_meas_hall;
 extern measure_time_t g_meas_foc;
 extern measure_time_t g_meas_MCTask;
 
-
-#if 0
-static s16 test_rpm = 0000;
-static float test_trq = 0;
-static float test_id = 0;
-static float test_iq = 0;
-static u32 _app_trq_test_task(void *args) {
-	DQ_t dq;
-	motor_mpta_fw_lookup(test_rpm, test_trq, &dq);
-	test_id = dq.d;
-	test_iq = dq.q;
-	sys_debug("lookup: %d, %f, %f, %f\n", test_rpm, test_trq, test_id, test_iq);
-	test_rpm = 8000;
-	test_trq += 5.0f;
-	return 500;
-}
-#endif
 void app_start(void){
 	can_debug(true);
 	can_message_init();
 	nv_storage_init();
 	mc_conf_init();
-	mc_err_block_init();
+	mc_err_block_init(FOC_Reset_Reson);
 	mc_init();
-	shark_task_create(_app_low_task, NULL);
-	shark_task_create(_app_report_task, NULL);
-	shark_task_create(_app_plot_task, NULL);
-	//shark_task_create(_app_trq_test_task, NULL);
+	shark_task_create(app_low_task, NULL);
+	shark_task_create(app_report_task, NULL);
+	shark_task_create(app_plot_task, NULL);
 	sys_debug("mc start\n");
 	shark_task_run();
 }
 
-static u32 _app_report_task(void *p) {
+static void app_print_log(void) {
+	//sys_debug("Slow: %d - %d\n", g_meas_MCTask.intval_time, g_meas_MCTask.exec_time);
+	//sys_debug("Fast: %d - %d, err: %d-%d-%d\n", g_meas_foc.intval_time, g_meas_foc.exec_time, g_meas_foc.intval_hi_err, g_meas_foc.intval_low_err, g_meas_foc.exec_max_error_time);
+	//sys_debug("FOC time err %d %d\n", g_meas_foc.intval_time_h_error, g_meas_foc.intval_time_l_error);
+	//sys_debug("acc vol %d, bid %d\n", get_acc_vol(), gpio_board_id());
+	//sys_debug("throttle %f\n", get_throttle_float());
+	//sys_debug("ADC Vref %f, %f\n", get_adc_vref(), adc_5vref_compesion());
+	//sys_debug("dead time %d\n", get_deadtime());
+	//thro_torque_log();
+	//sys_debug("_>%f, %f, %f\n", ladrc_observer_get()->ld, ladrc_observer_get()->lq, ladrc_observer_get()->poles);
+	encoder_log();
+	//motor_debug();
+	sample_log();
+	//PMSM_FOC_LogDebug();
+	//F_debug();
+	//eCtrl_debug_log();
+	//sys_debug("enc err %d, %d\n", foc_observer_enc_errcount(), foc_observer_sensorless_stable());
+	//mc_err_code_log();
+	//sys_debug("=====\n");
+
+}
+
+static u32 app_report_task(void *p) {
 	static u32 loop = 0;
 
 	can_report_ext_status(0x43);
@@ -99,26 +102,8 @@ static u32 _app_report_task(void *p) {
 		can_report_mot_params_ested(mot_params_get_est_flux(), FLUX_TYPE);
 	}
 
-	if (++loop % 5 == 0) {
-		//sys_debug("rst 0x%x\n", get_mcu_reset_source());
-		//sys_debug("Slow: %d - %d\n", g_meas_MCTask.intval_time, g_meas_MCTask.exec_time);
-		//sys_debug("Fast: %d - %d, err: %d-%d-%d\n", g_meas_foc.intval_time, g_meas_foc.exec_time, g_meas_foc.intval_hi_err, g_meas_foc.intval_low_err, g_meas_foc.exec_max_error_time);
-		//sys_debug("FOC time err %d %d\n", g_meas_foc.intval_time_h_error, g_meas_foc.intval_time_l_error);
-		//sys_debug("acc vol %d, bid %d\n", get_acc_vol(), gpio_board_id());
-		//sys_debug("throttle %f\n", get_throttle_float());
-		//sys_debug("ADC Vref %f, %f\n", get_adc_vref(), adc_5vref_compesion());
-		//sys_debug("dead time %d\n", get_deadtime());
-		//thro_torque_log();
-		//sys_debug("_>%f, %f, %f\n", ladrc_observer_get()->ld, ladrc_observer_get()->lq, ladrc_observer_get()->poles);
-		encoder_log();
-		//motor_debug();
-		sample_log();
-		//PMSM_FOC_LogDebug();
-		//F_debug();
-		//eCtrl_debug_log();
-		//sys_debug("enc err %d, %d\n", foc_observer_enc_errcount(), foc_observer_sensorless_stable());
-		//mc_err_code_log();
-		//sys_debug("=====\n");
+	if (++loop % 10 == 0) {
+		app_print_log();
 	}
 	return 200;
 }
@@ -131,7 +116,7 @@ static void plot_smo_angle(void) {
 	delta = fast_atan2(s, c)/PI*180.0f;
 	can_plot3(foc()->in.mot_angle, smo_angle, delta);
 }
-static u32 _app_plot_task(void * args) {
+static u32 app_plot_task(void * args) {
 	if (plot_type == 1) {
 		s16 plot_arg1 = (s16)foc_observer_sensorless_speed();
 		s16 plot_arg2 = (s16)mot_contrl_get_speed(&motor.controller);
@@ -166,7 +151,7 @@ static u32 _app_plot_task(void * args) {
 	}
 	return 20;
 }
-static u32 _app_low_task(void *args) {
+static u32 app_low_task(void *args) {
 	wdog_reload();
 	if (!mot_contrl_is_start(&motor.controller)) {
 		mc_err_block_save();

+ 1 - 0
Applications/foc/core/controller.h

@@ -78,6 +78,7 @@ typedef enum {
 	FOC_EV_MOS_Limit_L,
 	FOC_EV_THRO_START_V,
 	FOC_START_Err_Code,
+	FOC_Reset_Reson,
 }ctrl_event_r_t;
 
 

+ 3 - 2
Applications/foc/mc_error.c

@@ -13,7 +13,7 @@ static bool _w_pending_rt = false;
 #define ERR_MAX_SIZE 255
 #define RUNTIME_MAX_SIZE 50
 
-void mc_err_block_init(void) {
+void mc_err_block_init(int rst_event) {
 	_e_nv = (err_nv_t *)page_buff;
 	nv_read_crit_errblock(page_buff, one_page_size);
 	u16 crc16 = crc16_get((u8 *)_e_nv->node, one_page_size - sizeof(err_nv_t));
@@ -33,7 +33,8 @@ void mc_err_block_init(void) {
 		nv_write_runtime_block(page_buff_runtime, one_page_size);
 		sys_debug("mc rt crc\n");
 	}
-
+	u32 rst_src = get_mcu_reset_source();
+	mc_crit_err_add(rst_event, (rst_src&0xFFFF), (rst_src>>16&0xFFFF));
 	sys_debug("mc err size %d -%d\n", sizeof(err_node_t) * ERR_MAX_SIZE + sizeof(err_nv_t), sizeof(runtime_node_t) * RUNTIME_MAX_SIZE+ sizeof(runtime_nv_t));
 }
 

+ 1 - 1
Applications/foc/mc_error.h

@@ -48,7 +48,7 @@ typedef struct{
 	runtime_node_t node[0];
 }runtime_nv_t;
 
-void mc_err_block_init(void);
+void mc_err_block_init(int rst_event);
 void mc_crit_err_add(u8 code, s16 value1, s16 value2);
 void mc_crit_err_add_s16(u8 code, s16 value);
 void mc_err_block_save(void);

+ 8 - 8
Project/MC105_V3_Z100.uvoptx → Project/MC105_V3_SERVO.uvoptx

@@ -77,7 +77,7 @@
         <tvExpOptDlg>0</tvExpOptDlg>
         <IsCurrentTarget>1</IsCurrentTarget>
       </OPTFL>
-      <CpuCode>255</CpuCode>
+      <CpuCode>0</CpuCode>
       <DebugOpt>
         <uSim>0</uSim>
         <uTrg>1</uTrg>
@@ -171,7 +171,7 @@
 
   <Group>
     <GroupName>Application</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -227,7 +227,7 @@
 
   <Group>
     <GroupName>Foc</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -391,7 +391,7 @@
 
   <Group>
     <GroupName>Motor</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -495,7 +495,7 @@
 
   <Group>
     <GroupName>Proto</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -595,7 +595,7 @@
 
   <Group>
     <GroupName>BSP</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -759,7 +759,7 @@
 
   <Group>
     <GroupName>Libs</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -1071,7 +1071,7 @@
 
   <Group>
     <GroupName>StartUp</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>

+ 4 - 4
Project/MC105_V3_Z100.uvprojx → Project/MC105_V3_SERVO.uvprojx

@@ -49,7 +49,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>MC105</OutputName>
+          <OutputName>MC105_SERVO</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
@@ -72,7 +72,7 @@
           <BeforeMake>
             <RunUserProg1>1</RunUserProg1>
             <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name>SharkFwVersion gen ..\Applications\version.h  .\version_mc105_z100.cfg</UserProg1Name>
+            <UserProg1Name>SharkFwVersion gen ..\Applications\version.h  .\version_mc105_servo.cfg</UserProg1Name>
             <UserProg2Name></UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
@@ -82,8 +82,8 @@
           <AfterMake>
             <RunUserProg1>1</RunUserProg1>
             <RunUserProg2>1</RunUserProg2>
-            <UserProg1Name>fromelf --bin --output ./Output/MC105.bin ./Objects/MC105.axf</UserProg1Name>
-            <UserProg2Name>SharkFwVersion copy  ./Output/MC105.bin</UserProg2Name>
+            <UserProg1Name>fromelf --bin --output ./Output/MC105_SERVO.bin ./Objects/MC105_SERVO.axf</UserProg1Name>
+            <UserProg2Name>SharkFwVersion copy  ./Output/MC105_SERVO.bin</UserProg2Name>
             <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
             <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
             <nStopA1X>0</nStopA1X>

+ 1 - 1
Project/version_mc105_z100.cfg → Project/version_mc105_servo.cfg

@@ -1,3 +1,3 @@
-project: MC105_ADV30
+project: MC105_SERVO
 version: 01
 debug: 0