diff --git a/src/imu.c b/src/imu.c index e7925854577a476426157709ec5289cfbf2d830c..bbaed728d98168aec6e571a9473b1edc91b65dbc 100755 --- a/src/imu.c +++ b/src/imu.c @@ -258,7 +258,7 @@ void imu_accel_convert_data(uint8_t *data_in,uint8_t *data_out) for(i=0;i<3;i++) { - accel_data[i]=(data_in[i*2]+(data_in[i*2+1]<<8)); + accel_data[i]=(int16_t)(data_in[i*2]+(data_in[i*2+1]<<8)); data_out[i*2]=accel_data[i]%256; data_out[i*2+1]=accel_data[i]/256; } diff --git a/src/motion_manager.c b/src/motion_manager.c index 4d61378490962f3f53f417208d94010dcee1a4fd..709777ce8271035a18f40769eed8599aa0ecb010 100755 --- a/src/motion_manager.c +++ b/src/motion_manager.c @@ -149,10 +149,10 @@ void manager_balance(void) manager_balance_offset[R_ANKLE_PITCH]=((((int64_t)gyro_y*(int64_t)ankle_pitch_gain)/12000)>>9); manager_balance_offset[L_KNEE]=((((int64_t)gyro_y*(int64_t)knee_gain)/12000)>>9); manager_balance_offset[L_ANKLE_PITCH]=-((((int64_t)gyro_y*(int64_t)ankle_pitch_gain)/12000)>>9); - manager_balance_offset[R_HIP_ROLL]=-((((int64_t)gyro_x*(int64_t)hip_roll_gain)/12000)>>9); - manager_balance_offset[L_HIP_ROLL]=-((((int64_t)gyro_x*(int64_t)hip_roll_gain)/12000)>>9); - manager_balance_offset[R_ANKLE_ROLL]=((((int64_t)gyro_x*(int64_t)ankle_roll_gain)/12000)>>9); - manager_balance_offset[L_ANKLE_ROLL]=((((int64_t)gyro_x*(int64_t)ankle_roll_gain)/12000)>>9); + manager_balance_offset[R_HIP_ROLL]=((((int64_t)gyro_x*(int64_t)hip_roll_gain)/12000)>>9); + manager_balance_offset[L_HIP_ROLL]=((((int64_t)gyro_x*(int64_t)hip_roll_gain)/12000)>>9); + manager_balance_offset[R_ANKLE_ROLL]=-((((int64_t)gyro_x*(int64_t)ankle_roll_gain)/12000)>>9); + manager_balance_offset[L_ANKLE_ROLL]=-((((int64_t)gyro_x*(int64_t)ankle_roll_gain)/12000)>>9); } // fall detection (using accelerometer) imu_get_accel_data(&accel_x,&accel_y,&accel_z);