altos: More bmx160 debugging
authorKeith Packard <keithp@keithp.com>
Fri, 21 Feb 2020 05:58:58 +0000 (21:58 -0800)
committerKeith Packard <keithp@keithp.com>
Fri, 21 Feb 2020 05:58:58 +0000 (21:58 -0800)
Signed-off-by: Keith Packard <keithp@keithp.com>
ao-tools/ao-eeprom/ao-eeprom.c
ao-tools/lib/ao-eeprom-read.h
src/drivers/ao_bmx160.c
src/drivers/ao_bmx160.h

index 91a6ccb352ac1740da8f89280dcdbc3c2769cfeb..2f0762420432fece69f082c618a6a0a20b296bbf 100644 (file)
@@ -351,6 +351,16 @@ main (int argc, char **argv)
                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;
@@ -398,6 +408,7 @@ main (int argc, char **argv)
                                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:
index 82893f246638481005a5989d148b2457068c1d86..e4a9b0ccba23b171bea671a4d2407bf0ed45a618 100644 (file)
@@ -44,6 +44,7 @@
 #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 {
index 0cb663845fce1d53cfea2437a9b5cc7b1ecaf00b..0c503d28bc62f7d4abd42d8d2c719f5b75d29e3d 100644 (file)
@@ -183,6 +183,8 @@ _ao_bmx160_wait_alive(void)
 static void
 _ao_bmx160_setup(void)
 {
+       int r;
+
        if (ao_bmx160_configured)
                return;
 
@@ -216,6 +218,9 @@ _ao_bmx160_setup(void)
                             (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:
         *
@@ -319,11 +324,16 @@ ao_bmx160_show(void)
        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,
index 2b7e7bd768c27caaf51e88af3372a3688024d4ea..e62f172da9bfe8711f23a32b26a96b20c8c91b0a 100644 (file)
@@ -130,8 +130,6 @@ ao_bmx160_init(void);
 #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