diff --git a/communications/src/serial_console.c b/communications/src/serial_console.c index 97dd04850a3c42e81b638f7a8440df4887923f10..9f53a7a3e2d012eb17032cfa56d80eb1e9bd22b0 100644 --- a/communications/src/serial_console.c +++ b/communications/src/serial_console.c @@ -147,9 +147,6 @@ uint8_t serial_console_get_num_data(void) int cm510_printf(const char *fmt, ...) { - #ifdef __REAL__ - return 0; - #else va_list ap; int i; @@ -157,7 +154,6 @@ int cm510_printf(const char *fmt, ...) i = vfprintf(stdout, fmt, ap); va_end(ap); return i; - #endif } int cm510_scanf(const char *fmt, ...) diff --git a/controllers/include/cm510_cfg.h b/controllers/include/cm510_cfg.h index 8a3546560d73e7a39f2c3240aa4d6861400bf745..8ebb4b7790e12abedfc47ceecc8435de06276c88 100644 --- a/controllers/include/cm510_cfg.h +++ b/controllers/include/cm510_cfg.h @@ -40,6 +40,6 @@ // expansion board configuration parameters #define EXP_BOARD_USE_LOOP 1 -#define EXP_BOARD_ID 192 +#define EXP_BOARD_ID 30 #endif diff --git a/dyn_devices/src/exp_board/exp_board.c b/dyn_devices/src/exp_board/exp_board.c index f4df041c21ed4b96d523966776fa3c6a79c795b0..71ddd298767dd535c434e18f1d820d0db70c66a3 100755 --- a/dyn_devices/src/exp_board/exp_board.c +++ b/dyn_devices/src/exp_board/exp_board.c @@ -26,7 +26,7 @@ #endif #ifndef EXP_BOARD_ID - #define EXP_BOARD_ID 192 + #define EXP_BOARD_ID 30 #endif uint8_t exp_board_id; diff --git a/motion/src/motion_manager.c b/motion/src/motion_manager.c index 53084cb906f797585bd28fe9863443c096252cac..dc3dc786209368eace9d7874b79ff223660fb169 100644 --- a/motion/src/motion_manager.c +++ b/motion/src/motion_manager.c @@ -185,14 +185,13 @@ uint8_t manager_init(uint8_t num_servos) manager_servos[i].center_value=0; manager_servos[i].current_value=0; manager_servos[i].module=MM_NONE; - manager_servos[i].slope=32; + manager_servos[i].slope=5; manager_servos[i].cw_limit=0; manager_servos[i].ccw_limit=0; } /* scan the bus for all available servos */ dyn_master_scan(&num,servo_ids); - manager_num_servos=0; for(i=0;i<num;i++) { @@ -208,20 +207,20 @@ uint8_t manager_init(uint8_t num_servos) manager_servos[id].current_value=get_current_position(id); get_angle_limits(id,&manager_servos[i].cw_limit,&manager_servos[id].ccw_limit); manager_servos[id].module=MM_ACTION; - manager_servos[id].slope=32; + manager_servos[id].slope=5; manager_num_servos++; } else if(model==0x0C00)// Emmulated servos from the expansion board pan&tilt servos { enable_servo(id); - manager_servos[id].angle=300; + manager_servos[id].angle=180; manager_servos[id].max_value=1023; manager_servos[id].min_value=0; manager_servos[id].center_value=512; manager_servos[id].current_value=get_current_position(id); get_angle_limits(id,&manager_servos[i].cw_limit,&manager_servos[id].ccw_limit); manager_servos[id].module=MM_JOINTS; - manager_servos[id].slope=32; + manager_servos[id].slope=5; manager_num_servos++; } } diff --git a/motion/src/pan_tilt.c b/motion/src/pan_tilt.c index 66f1ab55340aaec90197d597d212c5e1403d2075..768cef43266d87d018eaecfede18b6e009b28c62 100644 --- a/motion/src/pan_tilt.c +++ b/motion/src/pan_tilt.c @@ -60,14 +60,16 @@ void pan_move_angle(int8_t pan_angle) } else { - pan_current_angle=manager_servos[pan_servo_id].current_value<<7; - pan_target_angle=((uint32_t)(((int32_t)pan_angle*(int32_t)manager_servos[pan_servo_id].max_value)/((int32_t)manager_servos[pan_servo_id].angle))+(uint32_t)manager_servos[pan_servo_id].center_value); + pan_target_angle=(uint32_t)((((int32_t)pan_angle*(int32_t)manager_servos[pan_servo_id].max_value)/((int32_t)manager_servos[pan_servo_id].angle)+(int32_t)manager_servos[pan_servo_id].center_value)); if(pan_target_angle>manager_servos[pan_servo_id].ccw_limit) pan_target_angle=manager_servos[pan_servo_id].ccw_limit; else if(pan_target_angle<manager_servos[pan_servo_id].cw_limit) pan_target_angle=manager_servos[pan_servo_id].cw_limit; - pan_target_angle=pan_target_angle<<7; - pan_moving=0x01; + if(manager_servos[pan_servo_id].current_value==pan_target_angle) + pan_moving=0x00; + else + pan_moving=0x01; + pan_target_angle=(pan_target_angle<<7); } } } @@ -99,14 +101,16 @@ void tilt_move_angle(int8_t tilt_angle) } else { - tilt_current_angle=manager_servos[tilt_servo_id].current_value<<7; - tilt_target_angle=(((int32_t)tilt_angle*(int32_t)manager_servos[tilt_servo_id].max_value)/((int32_t)manager_servos[tilt_servo_id].angle))+manager_servos[tilt_servo_id].center_value; + tilt_target_angle=(int32_t)((((int32_t)tilt_angle*(int32_t)manager_servos[tilt_servo_id].max_value)/((int32_t)manager_servos[tilt_servo_id].angle)+(int32_t)manager_servos[tilt_servo_id].center_value)); if(tilt_target_angle>manager_servos[tilt_servo_id].ccw_limit) tilt_target_angle=manager_servos[tilt_servo_id].ccw_limit; else if(tilt_target_angle<manager_servos[tilt_servo_id].cw_limit) tilt_target_angle=manager_servos[tilt_servo_id].cw_limit; - tilt_target_angle=tilt_target_angle<<7; - tilt_moving=0x01; + if(manager_servos[tilt_servo_id].current_value==tilt_target_angle) + tilt_moving=0x00; + else + tilt_moving=0x01; + tilt_target_angle=(tilt_target_angle<<7); } } } @@ -161,7 +165,7 @@ void pan_tilt_process(void) if(pan_current_angle<=pan_target_angle) { pan_current_angle=pan_target_angle; - pan_moving=0x00; + pan_moving=0x00; } } } @@ -203,7 +207,7 @@ void pan_tilt_process(void) tilt_moving=0x00; } } - } + } } manager_servos[tilt_servo_id].current_value=(tilt_current_angle>>7); }