This commit is contained in:
Ladyada 2019-08-20 23:40:28 -04:00
parent 5e608243f4
commit e0f3708684
2 changed files with 69 additions and 64 deletions

View file

@ -138,7 +138,7 @@ void Adafruit_MSA301::enableAxes(bool enableX, bool enableY, bool enableZ) {
/**************************************************************************/
/*!
@brief Set the power mode, MSA301_NORMALMODE, MSA301_LOWPOWERMODE or
@brief Set the power mode, MSA301_NORMALMODE, MSA301_LOWPOWERMODE or
MSA301_SUSPENDMODE
@param mode Enumerated msa301_powermode_t
*/
@ -154,7 +154,8 @@ void Adafruit_MSA301::setPowerMode(msa301_powermode_t mode) {
/**************************************************************************/
/*!
@brief Get the power mode
@returns Enumerated msa301_powermode_t, MSA301_NORMALMODE, MSA301_LOWPOWERMODE or
@returns Enumerated msa301_powermode_t, MSA301_NORMALMODE,
MSA301_LOWPOWERMODE or
MSA301_SUSPENDMODE
*/
/**************************************************************************/
@ -166,7 +167,6 @@ msa301_powermode_t Adafruit_MSA301::getPowerMode(void) {
return (msa301_powermode_t)powermodebits.read();
}
/**************************************************************************/
/*!
@brief Set the bandwidth, ranges from 1.95Hz to 500Hz
@ -181,7 +181,6 @@ void Adafruit_MSA301::setBandwidth(msa301_bandwidth_t bandwidth) {
bandwidthbits.write((uint8_t)bandwidth);
}
/**************************************************************************/
/*!
@brief Get the bandwidth
@ -299,7 +298,8 @@ void Adafruit_MSA301::read(void) {
@param tap_quiet TAP_QUIET flag (check datasheet for details)
@param tap_shock TAP_SHOCK flag (check datasheet for details)
@param tapduration How long to listen for a tap (check datasheet for details)
@param tapthresh How strong the tap signal has to be (check datasheet for details)
@param tapthresh How strong the tap signal has to be (check datasheet for
details)
*/
/**************************************************************************/
@ -328,7 +328,8 @@ void Adafruit_MSA301::setClick(bool tap_quiet, bool tap_shock,
/**************************************************************************/
/*!
@brief Gets the most recent click detect status register value
@returns 8 bits of interrupt status, check datasheet for what CLICKSTATUS bits are
@returns 8 bits of interrupt status, check datasheet for what CLICKSTATUS
bits are
*/
/**************************************************************************/
uint8_t Adafruit_MSA301::getClick(void) {
@ -403,11 +404,11 @@ void Adafruit_MSA301::mapInterruptPin(bool singletap, bool doubletap,
IntMap1.write(irqs);
}
/**************************************************************************/
/*!
@brief Gets the most recent motion interrupt status register value
@returns 8 bits of interrupt status, check datasheet for what MOTION bits are
@returns 8 bits of interrupt status, check datasheet for what MOTION bits
are
*/
/**************************************************************************/
@ -421,7 +422,8 @@ uint8_t Adafruit_MSA301::getMotionInterruptStatus(void) {
/**************************************************************************/
/*!
@brief Gets the most recent data interrupt status register value
@returns 8 bits of interrupt status, check datasheet for what DATAINT bits are
@returns 8 bits of interrupt status, check datasheet for what DATAINT bits
are
*/
/**************************************************************************/
@ -435,7 +437,8 @@ uint8_t Adafruit_MSA301::getDataInterruptStatus(void) {
/**************************************************************************/
/*!
@brief Gets the most recent sensor event, Adafruit Unified Sensor format
@param event Pointer to an Adafruit Unified sensor_event_t object that we'll fill in
@param event Pointer to an Adafruit Unified sensor_event_t object that
we'll fill in
@returns True on successful read
*/
/**************************************************************************/
@ -460,7 +463,8 @@ bool Adafruit_MSA301::getEvent(sensors_event_t *event) {
/**************************************************************************/
/*!
@brief Gets the sensor_t device data, Adafruit Unified Sensor format
@param sensor Pointer to an Adafruit Unified sensor_t object that we'll fill in
@param sensor Pointer to an Adafruit Unified sensor_t object that we'll
fill in
*/
/**************************************************************************/
void Adafruit_MSA301::getSensor(sensor_t *sensor) {

View file

@ -24,28 +24,29 @@
/*=========================================================================
I2C ADDRESS/BITS
-----------------------------------------------------------------------*/
#define MSA301_I2CADDR_DEFAULT (0x26) ///< Fixed I2C address
#define MSA301_I2CADDR_DEFAULT (0x26) ///< Fixed I2C address
/*=========================================================================*/
#define MSA301_REG_PARTID 0x01 ///< Register that contains the part ID
#define MSA301_REG_OUT_X_L 0x02 ///< Register address for X axis lower byte
#define MSA301_REG_OUT_X_H 0x03 ///< Register address for X axis higher byte
#define MSA301_REG_OUT_Y_L 0x04 ///< Register address for Y axis lower byte
#define MSA301_REG_OUT_Y_H 0x05 ///< Register address for Y axis higher byte
#define MSA301_REG_OUT_Z_L 0x06 ///< Register address for Z axis lower byte
#define MSA301_REG_OUT_Z_H 0x07 ///< Register address for Z axis higher byte
#define MSA301_REG_PARTID 0x01 ///< Register that contains the part ID
#define MSA301_REG_OUT_X_L 0x02 ///< Register address for X axis lower byte
#define MSA301_REG_OUT_X_H 0x03 ///< Register address for X axis higher byte
#define MSA301_REG_OUT_Y_L 0x04 ///< Register address for Y axis lower byte
#define MSA301_REG_OUT_Y_H 0x05 ///< Register address for Y axis higher byte
#define MSA301_REG_OUT_Z_L 0x06 ///< Register address for Z axis lower byte
#define MSA301_REG_OUT_Z_H 0x07 ///< Register address for Z axis higher byte
#define MSA301_REG_MOTIONINT 0x09 ///< Register address for motion interrupt
#define MSA301_REG_DATAINT 0x0A ///< Register address for data interrupt
#define MSA301_REG_CLICKSTATUS 0x0B ///< Register address for click/doubleclick status
#define MSA301_REG_DATAINT 0x0A ///< Register address for data interrupt
#define MSA301_REG_CLICKSTATUS \
0x0B ///< Register address for click/doubleclick status
#define MSA301_REG_RESRANGE 0x0F ///< Register address for resolution range
#define MSA301_REG_ODR 0x10 ///< Register address for data rate setting
#define MSA301_REG_POWERMODE 0x11 ///< Register address for power mode setting
#define MSA301_REG_INTSET0 0x16 ///< Register address for interrupt setting #0
#define MSA301_REG_INTSET1 0x17 ///< Register address for interrupt setting #1
#define MSA301_REG_INTMAP0 0x19 ///< Register address for interrupt map #0
#define MSA301_REG_INTMAP1 0x1A ///< Register address for interrupt map #1
#define MSA301_REG_TAPDUR 0x2A ///< Register address for tap duration
#define MSA301_REG_TAPTH 0x2B ///< Register address for tap threshold
#define MSA301_REG_ODR 0x10 ///< Register address for data rate setting
#define MSA301_REG_POWERMODE 0x11 ///< Register address for power mode setting
#define MSA301_REG_INTSET0 0x16 ///< Register address for interrupt setting #0
#define MSA301_REG_INTSET1 0x17 ///< Register address for interrupt setting #1
#define MSA301_REG_INTMAP0 0x19 ///< Register address for interrupt map #0
#define MSA301_REG_INTMAP1 0x1A ///< Register address for interrupt map #1
#define MSA301_REG_TAPDUR 0x2A ///< Register address for tap duration
#define MSA301_REG_TAPTH 0x2B ///< Register address for tap threshold
/** The accelerometer ranges */
typedef enum {
@ -57,9 +58,9 @@ typedef enum {
/** The accelerometer axes */
typedef enum {
MSA301_AXIS_X = 0x0, ///< X axis bit
MSA301_AXIS_Y = 0x1, ///< Y axis bit
MSA301_AXIS_Z = 0x2, ///< Z axis bit
MSA301_AXIS_X = 0x0, ///< X axis bit
MSA301_AXIS_Y = 0x1, ///< Y axis bit
MSA301_AXIS_Z = 0x2, ///< Z axis bit
} msa301_axis_t;
/** The accelerometer data rate */
@ -91,39 +92,39 @@ typedef enum {
} msa301_bandwidth_t;
/** The accelerometer power mode */
typedef enum {
MSA301_NORMALMODE = 0b00, ///< Normal (high speed) mode
MSA301_LOWPOWERMODE = 0b01, ///< Low power (slow speed) mode
MSA301_SUSPENDMODE = 0b010, ///< Suspend (sleep) mode
} msa301_powermode_t;
typedef enum {
MSA301_NORMALMODE = 0b00, ///< Normal (high speed) mode
MSA301_LOWPOWERMODE = 0b01, ///< Low power (slow speed) mode
MSA301_SUSPENDMODE = 0b010, ///< Suspend (sleep) mode
} msa301_powermode_t;
/** The accelerometer read resolution */
typedef enum {
MSA301_RESOLUTION_14 = 0b00, ///< 14-bit resolution
MSA301_RESOLUTION_12 = 0b01, ///< 12-bit resolution
MSA301_RESOLUTION_10 = 0b10, ///< 10-bit resolution
MSA301_RESOLUTION_8 = 0b11, ///< 8-bit resolution
} msa301_resolution_t;
typedef enum {
MSA301_RESOLUTION_14 = 0b00, ///< 14-bit resolution
MSA301_RESOLUTION_12 = 0b01, ///< 12-bit resolution
MSA301_RESOLUTION_10 = 0b10, ///< 10-bit resolution
MSA301_RESOLUTION_8 = 0b11, ///< 8-bit resolution
} msa301_resolution_t;
/** Tap duration parameter */
typedef enum {
MSA301_TAPDUR_50_MS = 0b000, ///< 50 millis
MSA301_TAPDUR_100_MS = 0b001, ///< 100 millis
MSA301_TAPDUR_150_MS = 0b010, ///< 150 millis
MSA301_TAPDUR_200_MS = 0b011, ///< 200 millis
MSA301_TAPDUR_250_MS = 0b100, ///< 250 millis
MSA301_TAPDUR_375_MS = 0b101, ///< 375 millis
MSA301_TAPDUR_500_MS = 0b110, ///< 500 millis
MSA301_TAPDUR_700_MS = 0b111, ///< 50 millis700 millis
} msa301_tapduration_t;
typedef enum {
MSA301_TAPDUR_50_MS = 0b000, ///< 50 millis
MSA301_TAPDUR_100_MS = 0b001, ///< 100 millis
MSA301_TAPDUR_150_MS = 0b010, ///< 150 millis
MSA301_TAPDUR_200_MS = 0b011, ///< 200 millis
MSA301_TAPDUR_250_MS = 0b100, ///< 250 millis
MSA301_TAPDUR_375_MS = 0b101, ///< 375 millis
MSA301_TAPDUR_500_MS = 0b110, ///< 500 millis
MSA301_TAPDUR_700_MS = 0b111, ///< 50 millis700 millis
} msa301_tapduration_t;
/** Interrupts available */
typedef enum {
MSA301_INT_ORIENT = 0b100000, ///< Orientation change interrupt
MSA301_INT_SINGLETAP, ///< Single tap interrupt
MSA301_INT_DOUBLETAP, ///< Double tap interrupt
MSA301_INT_ACTIVE, ///< Active motion interrupt
MSA301_INT_NEWDATA, ///< New data interrupt
typedef enum {
MSA301_INT_ORIENT = 0b100000, ///< Orientation change interrupt
MSA301_INT_SINGLETAP, ///< Single tap interrupt
MSA301_INT_DOUBLETAP, ///< Double tap interrupt
MSA301_INT_ACTIVE, ///< Active motion interrupt
MSA301_INT_NEWDATA, ///< New data interrupt
} msa301_interrupt_t;
/** Class for hardware interfacing with an MSA301 accelerometer */
@ -170,12 +171,12 @@ public:
*/
int16_t x, ///< The last read X acceleration in raw units
y, ///< The last read Y acceleration in raw units
z; ///< The last read Z acceleration in raw units
int16_t x, ///< The last read X acceleration in raw units
y, ///< The last read Y acceleration in raw units
z; ///< The last read Z acceleration in raw units
float x_g, ///< The last read X acceleration in 'g'
y_g, ///< The last read Y acceleration in 'g'
z_g; ///< The last read X acceleration in 'g'
y_g, ///< The last read Y acceleration in 'g'
z_g; ///< The last read X acceleration in 'g'
private:
Adafruit_I2CDevice *i2c_dev;