case AO_LOG_FORMAT_MICROPEAK2:
len = 2;
break;
+ case AO_LOG_FORMAT_TELEMEGA_4:
+ len = 32;
+ break;
+ max_adc= 4095;
+ adc_ref = 3.3;
+ batt_r1 = 5600;
+ batt_r2 = 10000;
+ sense_r1 = 100e3;
+ sense_r2 = 27e3;
+ break;
}
if (arg_len)
len = arg_len;
case AO_LOG_FORMAT_TELEMEGA:
case AO_LOG_FORMAT_TELEMEGA_3:
case AO_LOG_FORMAT_EASYMEGA_2:
+ case AO_LOG_FORMAT_TELEMEGA_4:
log_mega = (struct ao_log_mega *) &eeprom->data[pos];
switch (log_mega->type) {
case AO_LOG_FLIGHT:
#define AO_LOG_FORMAT_EASYMEGA_2 16 /* 32 byte typed telemega records with 32 bit gyro cal, mpu9250 rotated 90° and adxl375 */
#define AO_LOG_FORMAT_TELESTATIC 17 /* 32 byte typed telestatic records */
#define AO_LOG_FORMAT_MICROPEAK2 18 /* 2-byte baro values with header */
+#define AO_LOG_FORMAT_TELEMEGA_4 19 /* 32 byte typed telemega records with 32 bit gyro cal and Bmx160 */
#define AO_LOG_FORMAT_NONE 127 /* No log at all */
enum ao_pyro_flag {
static void
_ao_bmx160_setup(void)
{
+ int r;
+
if (ao_bmx160_configured)
return;
(BMX160_ACC_CONF_ACC_ODR_200 << BMX160_ACC_CONF_ACC_ODR));
_ao_bmx160_reg_write(BMX160_ACC_RANGE,
BMX160_ACC_RANGE_16G);
+ for (r = 0x4; r <= 0x17; r++)
+ (void) _ao_bmx160_reg_read(r);
+
/* Configure gyro:
*
uint8_t gyr_conf = _ao_bmx160_reg_read(BMX160_GYR_CONF);
uint8_t gyr_range = _ao_bmx160_reg_read(BMX160_GYR_RANGE);
uint8_t mag_conf = _ao_bmx160_reg_read(BMX160_MAG_CONF);
+ uint8_t status = _ao_bmx160_reg_read(BMX160_MAG_CONF);
+ uint8_t acc_x_lo = _ao_bmx160_reg_read(BMX160_ACCEL_X_0_7);
+ uint8_t acc_x_hi = _ao_bmx160_reg_read(BMX160_ACCEL_X_8_15);
ao_bmx160_spi_put();
printf("ACC_CONF %02x ACC_RANGE %02x GYR_CONF %02x GYR_RANGE %02x MAG_CONF %02x\n",
acc_conf, acc_range, gyr_conf, gyr_range, mag_conf);
+ printf("STATUS %02x ACCEL_X_0_7 %02x ACCEL_X_8_15 %02x\n", status, acc_x_lo, acc_x_hi);
+
printf ("Accel: %7d %7d %7d Gyro: %7d %7d %7d Mag: %7d %7d %7d\n",
ao_bmx160_current.acc_x,
ao_bmx160_current.acc_y,
#define BMX160_ACC_RANGE_4G 0x5
#define BMX160_ACC_RANGE_8G 0x8
#define BMX160_ACC_RANGE_16G 0xc
-#define BMX160_ACC_RANGE_
-#define BMX160_ACC_RANGE_
#define BMX160_GYR_CONF 0x42
#define BMX160_GYR_CONF_GYR_ODR 0
#define BMX160_GYR_CONF_GYR_ODR_25 0x6