Переход на C++
Очередная попытка реализовать чтение IMU как в рабочей прошивке оказалась провальной. Поэтому было принято решение перенести проект на C++ и писать его подобно рабочей прошивке. Реализован драйвер для I2C. Добавлены файлы интерфейса IMU и конкретного ICM20948.
This commit is contained in:
@@ -25,7 +25,7 @@ control_channels_t ctrl_chs;
|
||||
|
||||
Vector3 euler;
|
||||
|
||||
void imu_callback(uint8_t* buf);
|
||||
void imu_callback(uint8_t* buf, uint8_t size);
|
||||
void delay_ms(uint32_t ms);
|
||||
|
||||
int main(void)
|
||||
@@ -91,29 +91,29 @@ int main(void)
|
||||
}
|
||||
}
|
||||
|
||||
void imu_callback(uint8_t* buf)
|
||||
void imu_callback(uint8_t* buf, uint8_t size)
|
||||
{
|
||||
imu_raw.ax = (buf[0] << 8) | buf[1];
|
||||
imu_raw.ay = (buf[2] << 8) | buf[3];
|
||||
imu_raw.az = (buf[4] << 8) | buf[5];
|
||||
imu_raw.ax = Rev16((buf[0] << 8) | buf[1]);
|
||||
imu_raw.ay = Rev16((buf[2] << 8) | buf[3]);
|
||||
imu_raw.az = Rev16((buf[4] << 8) | buf[5]);
|
||||
|
||||
imu_raw.gx = (buf[6] << 8) | buf[7];
|
||||
imu_raw.gy = (buf[8] << 8) | buf[9];
|
||||
imu_raw.gz = (buf[10] << 8) | buf[11];
|
||||
imu_raw.gx = Rev16((buf[6] << 8) | buf[7]);
|
||||
imu_raw.gy = Rev16((buf[8] << 8) | buf[9]);
|
||||
imu_raw.gz = Rev16((buf[10] << 8) | buf[11]);
|
||||
|
||||
imu_process_raw(&imu, &imu_raw, &allowed_calib);
|
||||
imu_process_raw(&imu, &imu_raw, &allowed_calib);
|
||||
|
||||
irs.gyro.x = imu.gx;
|
||||
irs.gyro.y = imu.gy;
|
||||
irs.gyro.z = imu.gz;
|
||||
irs.gyro.x = imu.gx;
|
||||
irs.gyro.y = imu.gy;
|
||||
irs.gyro.z = imu.gz;
|
||||
|
||||
irs.accel.x = imu.ax;
|
||||
irs.accel.y = imu.ay;
|
||||
irs.accel.z = imu.az;
|
||||
irs.accel.x = imu.ax;
|
||||
irs.accel.y = imu.ay;
|
||||
irs.accel.z = imu.az;
|
||||
|
||||
IRS_update(&irs, IMU_DT);
|
||||
|
||||
euler = QuatToEuler(&irs.q);
|
||||
IRS_update(&irs, IMU_DT);
|
||||
|
||||
euler = QuatToEuler(&irs.q);
|
||||
}
|
||||
|
||||
void TIM6_DAC_IRQHandler()
|
||||
@@ -122,7 +122,7 @@ void TIM6_DAC_IRQHandler()
|
||||
{
|
||||
TIM6->SR &= ~TIM_SR_UIF;
|
||||
|
||||
i2c_read_async(ICM_ADDR, 0x2D, 12, imu_callback);
|
||||
imu_get_async(imu_callback);
|
||||
control_update_flag = 1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user