};
#define AO_ADC_DUMP(p) \
- printf("tick: %5u A: %5d B: %5d C: %5d D: %5d drogue: %5d main: %5d batt: %5d pbatt: %5d temp: %5d\n", \
+ printf("tick: %5lu A: %5d B: %5d C: %5d D: %5d drogue: %5d main: %5d batt: %5d pbatt: %5d temp: %5d\n", \
(p)->tick, \
(p)->adc.sense[0], (p)->adc.sense[1], (p)->adc.sense[2], \
(p)->adc.sense[3], (p)->adc.sense[4], (p)->adc.sense[5], \
/*
+ * Here are the required sensor signs:
*
- * If the board is laying component side up with
- * the antenna (nose) pointing north
+ * +along nose up
+ * +across USB down
+ * +through TH down
*
- * +along north +roll left up
- * +across west +pitch nose down
- * +through up +yaw left turn
+ * With the board aligned to have positive accel for the relevant
+ * axis, looking down from above we have:
+ *
+ * +roll counter clockwise (nose up)
+ * +pitch counter clockwise (USB down)
+ * +yaw counter clockwise (TH down)
*/
/*
- * mpu6000
- *
- * pin 1 NW corner of chip
+ * On TMega v5, MPU6000 pin 1 (NW corner of chip) is placed towards
+ * the USB and antenna edges of the board. Relative to MPU6000 specs,
+ * we don't need to change any signs and so the correct values are:
*
* +along +Y +roll +Y
- * +across -X +pitch -X
+ * +across +X +pitch +X
* +through +Z +yaw +Z
*
*/
#define HAS_IMU 1
#define ao_mpu6000_along(m) ((m)->accel_y)
-#define ao_mpu6000_across(m) (-(m)->accel_x)
+#define ao_mpu6000_across(m) ((m)->accel_x)
#define ao_mpu6000_through(m) ((m)->accel_z)
#define ao_mpu6000_roll(m) ((m)->gyro_y)
-#define ao_mpu6000_pitch(m) (-(m)->gyro_x)
+#define ao_mpu6000_pitch(m) ((m)->gyro_x)
#define ao_mpu6000_yaw(m) ((m)->gyro_z)
#define ao_data_along(packet) ao_mpu6000_along(&(packet)->mpu6000)
/*
*
- * If the board is laying component side up with
- * the antenna (nose) pointing north
+ * Here are the required sensor signs:
*
- * +along north +roll left up
- * +across west +pitch nose down
- * +through up +yaw left turn
+ * +along nose up
+ * +across USB down
+ * +through TH down
+ *
+ * With the board aligned to have positive accel for the relevant
+ * axis, looking down from above we have:
+ *
+ * +roll counter clockwise (nose up)
+ * +pitch counter clockwise (USB down)
+ * +yaw counter clockwise (TH down)
*/
/*
- * bmi088
- *
- * pin 1 NE corner of chip
+ * On TMega v6, bmi088 pin 1 (NE corner of chip) is placed towards the
+ * USB and antenna edges of the board. Relative to bmi088 specs, to
+ * get the above values, we need to flip the Y axis, assigning values
+ * as follows:
*
- * +along +Y +roll +Y
- * +across -X +pitch -X
+ * +along +X +roll +X
+ * +across -Y +pitch -Y
* +through +Z +yaw +Z
*/
#define AO_BMI088_GYR_CS_PIN 13
#define HAS_IMU 1
-#define ao_bmi088_along(m) ((m)->acc.y)
-#define ao_bmi088_across(m) (-(m)->acc.x)
+#define ao_bmi088_along(m) ((m)->acc.x)
+#define ao_bmi088_across(m) (-(m)->acc.y)
#define ao_bmi088_through(m) ((m)->acc.z)
-#define ao_bmi088_roll(m) ((m)->gyr.y)
-#define ao_bmi088_pitch(m) (-(m)->gyr.x)
+#define ao_bmi088_roll(m) ((m)->gyr.x)
+#define ao_bmi088_pitch(m) (-(m)->gyr.y)
#define ao_bmi088_yaw(m) ((m)->gyr.z)
#define ao_data_along(packet) ao_bmi088_along(&(packet)->bmi088)