X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fdrivers%2Fao_adxl375.c;h=4f6b816948709632e5462e1d8d0460a0f3911b49;hb=refs%2Fheads%2Fmaster;hp=f53fb59d7ad2147aa04eb2872bd779e706d7ad1a;hpb=3fb95b34a85fb79713c258937a9005faf6f89a03;p=fw%2Faltos diff --git a/src/drivers/ao_adxl375.c b/src/drivers/ao_adxl375.c index f53fb59d..70bf92a5 100644 --- a/src/drivers/ao_adxl375.c +++ b/src/drivers/ao_adxl375.c @@ -18,7 +18,7 @@ #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) @@ -26,7 +26,7 @@ #define PRINTD(l,...) #endif -#define AO_ADXL375_SPI_SPEED ao_spi_speed(5000000) +#define AO_ADXL375_SPI_SPEED ao_spi_speed(AO_ADXL375_SPI_INDEX, 5000000) struct ao_adxl375_sample ao_adxl375_current; @@ -48,17 +48,16 @@ ao_adxl375_stop(void) { 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 @@ -75,11 +74,11 @@ ao_adxl375_reg_write(uint8_t addr, uint8_t value) #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 } @@ -90,9 +89,9 @@ ao_adxl375_value(struct ao_adxl375_sample *value) 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 { @@ -130,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))