#define DEBUG_LOW 1
#define DEBUG_HIGH 2
-#define DEBUG 3
+#define DEBUG 0
#if DEBUG
#define PRINTD(l, ...) do { if (DEBUG & (l)) { printf ("\r%5lu %s: ", ao_tick_count, __func__); printf(__VA_ARGS__); flush(); } } while(0)
static uint8_t
ao_adxl375_reg_read(uint8_t addr)
{
- uint8_t d[1];
+ uint8_t d[2];
d[0] = addr | AO_ADXL375_READ;
ao_adxl375_start();
- ao_spi_send(d, 1, AO_ADXL375_SPI_INDEX);
- ao_spi_recv(d, 1, AO_ADXL375_SPI_INDEX);
+ ao_spi_duplex(d, d, 2, AO_ADXL375_SPI_INDEX);
ao_adxl375_stop();
- PRINTD(DEBUG_LOW, "read %x = %x\n", addr, d[0]);
+ PRINTD(DEBUG_LOW, "read %x = %x\n", addr, d[1]);
- return d[0];
+ return d[1];
}
static void
#if DEBUG & DEBUG_LOW
d[0] = addr | AO_ADXL375_READ;
+ d[1] = 0;
ao_adxl375_start();
- ao_spi_send(d, 1, AO_ADXL375_SPI_INDEX);
- ao_spi_recv(d, 1, AO_ADXL375_SPI_INDEX);
+ ao_spi_duplex(d, d, 2, AO_ADXL375_SPI_INDEX);
ao_adxl375_stop();
- PRINTD(DEBUG_LOW, "readback %x\n", d[0]);
+ PRINTD(DEBUG_LOW, "readback %x %x\n", d[0], d[1]);
#endif
}
d[0] = AO_ADXL375_DATAX0 | AO_ADXL375_READ | AO_ADXL375_MULTI_BYTE;
ao_adxl375_start();
- ao_spi_send(d, 1, AO_ADXL375_SPI_INDEX);
- ao_spi_recv(value, 6, AO_ADXL375_SPI_INDEX);
+ ao_spi_duplex(d, d, 7, AO_ADXL375_SPI_INDEX);
ao_adxl375_stop();
+ memcpy(value, &d[1], 6);
}
struct ao_adxl375_total {
#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))