projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altoslib: Check for negative tick wrap when importing flight records
[fw/altos]
/
src
/
drivers
/
ao_adxl375.c
diff --git
a/src/drivers/ao_adxl375.c
b/src/drivers/ao_adxl375.c
index f53fb59d7ad2147aa04eb2872bd779e706d7ad1a..70bf92a5f1fb72e6a44d0f711de58623a711a222 100644
(file)
--- 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_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)
#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 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;
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)
{
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();
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();
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
}
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;
#if DEBUG & DEBUG_LOW
d[0] = addr | AO_ADXL375_READ;
+ d[1] = 0;
ao_adxl375_start();
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();
ao_adxl375_stop();
- PRINTD(DEBUG_LOW, "readback %x
\n", d[0
]);
+ PRINTD(DEBUG_LOW, "readback %x
%x\n", d[0], d[1
]);
#endif
}
#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();
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();
ao_adxl375_stop();
+ memcpy(value, &d[1], 6);
}
struct ao_adxl375_total {
}
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) | \
#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))
(0 << AO_ADXL375_DATA_FORMAT_INT_INVERT) | \
(0 << AO_ADXL375_DATA_FORMAT_JUSTIFY))