diff options
Diffstat (limited to 'src/drivers/ao_adxl375.h')
-rw-r--r-- | src/drivers/ao_adxl375.h | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/drivers/ao_adxl375.h b/src/drivers/ao_adxl375.h new file mode 100644 index 00000000..a1ed216d --- /dev/null +++ b/src/drivers/ao_adxl375.h @@ -0,0 +1,107 @@ +/* + * Copyright © 2018 Keith Packard <keithp@keithp.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ + +#ifndef _AO_ADXL375_H_ +#define _AO_ADXL375_H_ + +#define AO_ADXL375_READ 0x80 /* read mode */ +#define AO_ADXL375_MULTI_BYTE 0x40 /* multi-byte mode */ + +#define AO_ADXL375_DEVID 0x00 +#define AO_ADXL375_DEVID_ID 0xe5 +#define AO_ADXL375_THRESH_SHOCK 0x1d +#define AO_ADXL375_OFSX 0x1e +#define AO_ADXL375_OFSY 0x1f +#define AO_ADXL375_OFSZ 0x20 +#define AO_ADXL375_DUR 0x21 +#define AO_ADXL375_LATENT 0x22 +#define AO_ADXL375_WINDOW 0x23 +#define AO_ADXL375_THRESH_ACT 0x24 +#define AO_ADXL375_THRESH_INACT 0x25 +#define AO_ADXL375_TIME_INACT 0x26 +#define AO_ADXL375_ACT_INACT_CTL 0x27 +#define AO_ADXL375_SHOCK_AXES 0x2a +#define AO_ADXL375_ACT_SHOCK_STATUS 0x2b +#define AO_ADXL375_BW_RATE 0x2c + +#define AO_ADXL375_BW_RATE_LOW_POWER 4 +#define AO_ADXL375_BW_RATE_RATE 0 +#define AO_ADXL375_BW_RATE_RATE_3200 0xf +#define AO_ADXL375_BW_RATE_RATE_1600 0xe +#define AO_ADXL375_BW_RATE_RATE_800 0xd +#define AO_ADXL375_BW_RATE_RATE_400 0xc +#define AO_ADXL375_BW_RATE_RATE_200 0xb +#define AO_ADXL375_BW_RATE_RATE_100 0xa +#define AO_ADXL375_BW_RATE_RATE_50 0x9 +#define AO_ADXL375_BW_RATE_RATE_25 0x8 +#define AO_ADXL375_BW_RATE_RATE_12_5 0x7 +#define AO_ADXL375_BW_RATE_RATE_6_25 0x6 +#define AO_ADXL375_BW_RATE_RATE_3_13 0x5 +#define AO_ADXL375_BW_RATE_RATE_1_56 0x4 +#define AO_ADXL375_BW_RATE_RATE_0_78 0x3 +#define AO_ADXL375_BW_RATE_RATE_0_39 0x2 +#define AO_ADXL375_BW_RATE_RATE_0_20 0x1 +#define AO_ADXL375_BW_RATE_RATE_0_10 0x0 + +#define AO_ADXL375_POWER_CTL 0x2d +#define AO_ADXL375_POWER_CTL_LINK 5 +#define AO_ADXL375_POWER_CTL_AUTO_SLEEP 4 +#define AO_ADXL375_POWER_CTL_MEASURE 3 +#define AO_ADXL375_POWER_CTL_SLEEP 2 +#define AO_ADXL375_POWER_CTL_WAKEUP 0 +#define AO_ADXL375_POWER_CTL_WAKEUP_8 0 +#define AO_ADXL375_POWER_CTL_WAKEUP_4 1 +#define AO_ADXL375_POWER_CTL_WAKEUP_2 2 +#define AO_ADXL375_POWER_CTL_WAKEUP_1 3 + +#define AO_ADXL375_INT_ENABLE 0x2e +#define AO_ADXL375_INT_MAP 0x2f +#define AO_ADXL375_INT_SOURCE 0x30 +#define AO_ADXL375_DATA_FORMAT 0x31 +# define AO_ADXL375_DATA_FORMAT_FIXED 0x0b /* these bits must be set to 1 */ +# define AO_ADXL375_DATA_FORMAT_SELF_TEST 7 +# define AO_ADXL375_DATA_FORMAT_SPI 6 +# define AO_ADXL375_DATA_FORMAT_SPI_3_WIRE 0 +# define AO_ADXL375_DATA_FORMAT_SPI_4_WIRE 1 +# define AO_ADXL375_DATA_FORMAT_INT_INVERT 5 +# define AO_ADXL375_DATA_FORMAT_JUSTIFY 2 +#define AO_ADXL375_DATAX0 0x32 +#define AO_ADXL375_DATAX1 0x33 +#define AO_ADXL375_DATAY0 0x34 +#define AO_ADXL375_DATAY1 0x35 +#define AO_ADXL375_DATAZ0 0x36 +#define AO_ADXL375_DATAZ1 0x37 +#define AO_ADXL375_FIFO_CTL 0x38 +#define AO_ADXL375_FIFO_CTL_FIFO_MODE 6 +#define AO_ADXL375_FIFO_CTL_FIFO_MODE_BYPASS 0 +#define AO_ADXL375_FIFO_CTL_FIFO_MODE_FIFO 1 +#define AO_ADXL375_FIFO_CTL_FIFO_MODE_STREAM 2 +#define AO_ADXL375_FIFO_CTL_FIFO_MODE_TRIGGER 3 +#define AO_ADXL375_FIFO_CTL_TRIGGER 5 +#define AO_ADXL375_FIFO_CTL_SAMPLES 0 + +#define AO_ADXL375_FIFO_STATUS 0x39 + +struct ao_adxl375_sample { + int16_t x; + int16_t y; + int16_t z; +}; + +extern struct ao_adxl375_sample ao_adxl375_current; + +void +ao_adxl375_init(void); + +#endif /* _AO_ADXL375_H_ */ |