first cut at turnon scripts for EasyTimer v2
[fw/altos] / src / drivers / ao_adxl375.c
index 66d39ff915b625c6f87acac828594ff1f8a6ad4b..70bf92a5f1fb72e6a44d0f711de58623a711a222 100644 (file)
 #define DEBUG          0
 
 #if DEBUG
-#define PRINTD(l, ...) do { if (DEBUG & (l)) { printf ("\r%5u %s: ", ao_tick_count, __func__); printf(__VA_ARGS__); flush(); } } while(0)
+#define PRINTD(l, ...) do { if (DEBUG & (l)) { printf ("\r%5lu %s: ", ao_tick_count, __func__); printf(__VA_ARGS__); flush(); } } while(0)
 #else
 #define PRINTD(l,...)
 #endif
 
+#define AO_ADXL375_SPI_SPEED   ao_spi_speed(AO_ADXL375_SPI_INDEX, 5000000)
+
 struct ao_adxl375_sample       ao_adxl375_current;
 
 static void
@@ -53,7 +55,7 @@ ao_adxl375_reg_read(uint8_t addr)
        ao_spi_duplex(d, d, 2, AO_ADXL375_SPI_INDEX);
        ao_adxl375_stop();
 
-       PRINTD(DEBUG_LOW, "read %x = %x\n", addr, d);
+       PRINTD(DEBUG_LOW, "read %x = %x\n", addr, d[1]);
 
        return d[1];
 }
@@ -71,7 +73,7 @@ ao_adxl375_reg_write(uint8_t addr, uint8_t value)
        ao_adxl375_stop();
 
 #if DEBUG & DEBUG_LOW
-       d[0] = addr | AO_ADXL375_READ
+       d[0] = addr | AO_ADXL375_READ;
        d[1] = 0;
        ao_adxl375_start();
        ao_spi_duplex(d, d, 2, AO_ADXL375_SPI_INDEX);
@@ -103,7 +105,7 @@ struct ao_adxl375_total {
 
 #define MIN_LSB_G      18.4
 #define MAX_LSB_G      22.6
-#define SELF_TEST_MIN_G        6.0
+#define SELF_TEST_MIN_G        5.0
 #define SELF_TEST_MAX_G        6.8
 
 #define MIN_SELF_TEST  ((int32_t) (MIN_LSB_G * SELF_TEST_MIN_G * AO_ADXL375_SELF_TEST_SAMPLES + 0.5))
@@ -127,7 +129,7 @@ ao_adxl375_total_value(struct ao_adxl375_total *total, int samples)
 #define AO_ADXL375_DATA_FORMAT_SETTINGS(self_test) (                   \
                AO_ADXL375_DATA_FORMAT_FIXED |                          \
                (self_test << AO_ADXL375_DATA_FORMAT_SELF_TEST) |       \
-               (AO_ADXL375_DATA_FORMAT_SPI_4_WIRE << AO_ADXL375_DATA_FORMAT_SPI_4_WIRE) | \
+               (AO_ADXL375_DATA_FORMAT_SPI_4_WIRE << AO_ADXL375_DATA_FORMAT_SPI) | \
                (0 << AO_ADXL375_DATA_FORMAT_INT_INVERT) |              \
                (0 << AO_ADXL375_DATA_FORMAT_JUSTIFY))
 
@@ -143,7 +145,7 @@ ao_adxl375_setup(void)
 
        uint8_t devid = ao_adxl375_reg_read(AO_ADXL375_DEVID);
        if (devid != AO_ADXL375_DEVID_ID)
-               ao_sensor_errors = 1;
+               AO_SENSOR_ERROR(AO_DATA_ADXL375);
 
        /* Set the data rate */
        ao_adxl375_reg_write(AO_ADXL375_BW_RATE,
@@ -204,12 +206,12 @@ ao_adxl375_setup(void)
        self_test_value = z_change;
 
        if (z_change < MIN_SELF_TEST)
-               ao_sensor_errors = 1;
+               AO_SENSOR_ERROR(AO_DATA_ADXL375);
 
        /* This check is commented out as maximum self test is unreliable
 
           if (z_change > MAX_SELF_TEST)
-               ao_sensor_errors = 1;
+               AO_SENSOR_ERROR(AO_DATA_ADXL375);
 
        */
 
@@ -235,13 +237,13 @@ static struct ao_task ao_adxl375_task;
 static void
 ao_adxl375_dump(void)
 {
-       printf ("ADXL375 value %d %d %d self test %d min %d max %d\n",
+       printf ("ADXL375 value %d %d %d self test %ld min %ld max %ld\n",
                ao_adxl375_current.x,
                ao_adxl375_current.y,
                ao_adxl375_current.z,
-               self_test_value,
-               MIN_SELF_TEST,
-               MAX_SELF_TEST);
+               (long) self_test_value,
+               (long) MIN_SELF_TEST,
+               (long) MAX_SELF_TEST);
 }
 
 const struct ao_cmds ao_adxl375_cmds[] = {