@@ -391,6 +391,7 @@ uint8_t get_limit_switch_status(void){
391391
392392uint8_t get_power_status (void ){
393393 uint16_t power_adc_value = getAnalogPinValue (59 );
394+ // DB_PRINT_STR( "%d\r\n", power_adc_value );
394395
395396 if ( power_adc_value > 100 ){
396397 return 1 ;
@@ -399,39 +400,43 @@ uint8_t get_power_status(void){
399400 }
400401}
401402
402-
403-
404403void check_motor_positon (void ){
405- if ( sys .state == STATE_IDLE ){
404+ if ( sys .state == STATE_IDLE && uarm . motor_state_bits == 0x0F /*&& uarm.power_state*/ ){
406405 float current_angle_l = 0 , current_angle_r = 0 , current_angle_b = 0 ;
407- // get_current_angle( sys.position[X_AXIS], sys.position[Y_AXIS], sys.position[Z_AXIS],
408- // ¤t_angle_l, ¤t_angle_r, ¤t_angle_b );
406+
409407 coord_to_angle ( uarm .coord_x , uarm .coord_y , uarm .coord_z , & current_angle_l , & current_angle_r , & current_angle_b );
410408
411409 float reg_angle_l = calculate_current_angle (CHANNEL_ARML );
412410 float reg_angle_r = calculate_current_angle (CHANNEL_ARMR );
413411 float reg_angle_b = calculate_current_angle (CHANNEL_BASE ) ;
414412
415413 if ( fabs (current_angle_l - reg_angle_l )> 0.5 || fabs (current_angle_r - reg_angle_r )> 0.5 || fabs (current_angle_b - reg_angle_b + 90 )> 0.5 ){
416-
417414 char l_str [20 ], r_str [20 ], b_str [20 ];
418- dtostrf ( current_angle_l , 5 , 4 , l_str );
419- dtostrf ( current_angle_r , 5 , 4 , r_str );
420- dtostrf ( current_angle_b , 5 , 4 , b_str );
421-
422- DB_PRINT_STR ( "angle1: %s, %s, %s\r\n" , l_str , r_str , b_str );
423-
424- dtostrf ( reg_angle_l , 5 , 4 , l_str );
425- dtostrf ( reg_angle_r , 5 , 4 , r_str );
426- dtostrf ( reg_angle_b , 5 , 4 , b_str );
427-
428- DB_PRINT_STR ( "angle2: %s, %s, %s\r\n" , l_str , r_str , b_str );
429415
416+ memset (& sys , 0 , sizeof (system_t )); // Clear all system variables
417+ plan_sync_position ();
418+ gc_sync_position ();
419+
430420 uarm .init_arml_angle = reg_angle_l ;
431421 uarm .init_armr_angle = reg_angle_r ;
432422 uarm .init_base_angle = reg_angle_b ;
433423 beep_tone (260 , 1000 );
434424
425+ uarm .target_step [X_AXIS ] = sys .position [X_AXIS ];
426+ uarm .target_step [Y_AXIS ] = sys .position [Y_AXIS ];
427+ uarm .target_step [Z_AXIS ] = sys .position [Z_AXIS ];
428+
429+ /* angle_to_coord( uarm.init_arml_angle, uarm.init_armr_angle, uarm.init_base_angle-90,
430+ &(uarm.coord_x), &(uarm.coord_y), &(uarm.coord_z) );
431+
432+
433+ dtostrf( uarm.coord_x, 5, 4, l_str );
434+ dtostrf( uarm.coord_y, 5, 4, r_str );
435+ dtostrf( uarm.coord_z, 5, 4, b_str );
436+
437+ DB_PRINT_STR( "coord: %s, %s, %s\r\n", l_str, r_str, b_str );*/
438+
439+
435440 float target [3 ] = {0 };
436441 target [X_AXIS ] = uarm .coord_x ;
437442 target [Y_AXIS ] = uarm .coord_y ;
0 commit comments