minor modifications to adapt syntax to FreeIMU

Dependencies:   mbed

Fork of ADXL345_I2C by Peter Swanson

Committer:
pommzorz
Date:
Mon Jun 24 19:43:13 2013 +0000
Revision:
2:755d80b05eea
Parent:
1:d9412b56f98a
minor modifications to adapt syntax

Who changed what in which revision?

UserRevisionLine numberNew contents of line
peterswanson87 0:d0adb548714f 1 /**
peterswanson87 0:d0adb548714f 2 * @author Peter Swanson
pommzorz 2:755d80b05eea 3 *
peterswanson87 1:d9412b56f98a 4 *
peterswanson87 0:d0adb548714f 5 * @section LICENSE
peterswanson87 0:d0adb548714f 6 *
peterswanson87 0:d0adb548714f 7 * Permission is hereby granted, free of charge, to any person obtaining a copy
peterswanson87 0:d0adb548714f 8 * of this software and associated documentation files (the "Software"), to deal
peterswanson87 0:d0adb548714f 9 * in the Software without restriction, including without limitation the rights
peterswanson87 0:d0adb548714f 10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
peterswanson87 0:d0adb548714f 11 * copies of the Software, and to permit persons to whom the Software is
peterswanson87 0:d0adb548714f 12 * furnished to do so, subject to the following conditions:
peterswanson87 0:d0adb548714f 13 *
peterswanson87 0:d0adb548714f 14 * The above copyright notice and this permission notice shall be included in
peterswanson87 0:d0adb548714f 15 * all copies or substantial portions of the Software.
peterswanson87 0:d0adb548714f 16 *
peterswanson87 0:d0adb548714f 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
peterswanson87 0:d0adb548714f 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
peterswanson87 0:d0adb548714f 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
peterswanson87 0:d0adb548714f 20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
peterswanson87 0:d0adb548714f 21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
peterswanson87 0:d0adb548714f 22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
peterswanson87 0:d0adb548714f 23 * THE SOFTWARE.
peterswanson87 0:d0adb548714f 24 *
peterswanson87 0:d0adb548714f 25 * @section DESCRIPTION
peterswanson87 0:d0adb548714f 26 *
peterswanson87 0:d0adb548714f 27 * ADXL345, triple axis, I2C interface, accelerometer.
peterswanson87 0:d0adb548714f 28 *
peterswanson87 0:d0adb548714f 29 * Datasheet:
peterswanson87 0:d0adb548714f 30 *
peterswanson87 0:d0adb548714f 31 * http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
peterswanson87 0:d0adb548714f 32 */
peterswanson87 0:d0adb548714f 33
peterswanson87 0:d0adb548714f 34 /**
peterswanson87 0:d0adb548714f 35 * Includes
peterswanson87 0:d0adb548714f 36 */
peterswanson87 0:d0adb548714f 37 #include "ADXL345_I2C.h"
peterswanson87 0:d0adb548714f 38
peterswanson87 0:d0adb548714f 39 //#include "mbed.h"
peterswanson87 0:d0adb548714f 40
pommzorz 2:755d80b05eea 41 //ADXL345_I2C::ADXL345_I2C(PinName sda, PinName scl) : i2c_(sda, scl) {
pommzorz 2:755d80b05eea 42
pommzorz 2:755d80b05eea 43 ADXL345_I2C::ADXL345_I2C(I2C i2c_) :i2c_(i2c_){
pommzorz 2:755d80b05eea 44 //this->i2c_ = i2c_;
peterswanson87 0:d0adb548714f 45
peterswanson87 0:d0adb548714f 46 //400kHz, allowing us to use the fastest data rates.
peterswanson87 0:d0adb548714f 47 i2c_.frequency(400000);
peterswanson87 0:d0adb548714f 48 // initialize the BW data rate
peterswanson87 0:d0adb548714f 49 char tx[2];
peterswanson87 0:d0adb548714f 50 tx[0] = ADXL345_BW_RATE_REG;
peterswanson87 0:d0adb548714f 51 tx[1] = ADXL345_1600HZ; //value greater than or equal to 0x0A is written into the rate bits (Bit D3 through Bit D0) in the BW_RATE register
peterswanson87 0:d0adb548714f 52 i2c_.write( ADXL345_I2C_WRITE , tx, 2);
peterswanson87 0:d0adb548714f 53
peterswanson87 0:d0adb548714f 54 //Data format (for +-16g) - This is done by setting Bit D3 of the DATA_FORMAT register (Address 0x31) and writing a value of 0x03 to the range bits (Bit D1 and Bit D0) of the DATA_FORMAT register (Address 0x31).
peterswanson87 0:d0adb548714f 55
peterswanson87 0:d0adb548714f 56 char rx[2];
peterswanson87 0:d0adb548714f 57 rx[0] = ADXL345_DATA_FORMAT_REG;
peterswanson87 0:d0adb548714f 58 rx[1] = 0x0B;
peterswanson87 0:d0adb548714f 59 // full res and +_16g
peterswanson87 0:d0adb548714f 60 i2c_.write( ADXL345_I2C_WRITE , rx, 2);
peterswanson87 0:d0adb548714f 61
peterswanson87 0:d0adb548714f 62 // Set Offset - programmed into the OFSX, OFSY, and OFXZ registers, respectively, as 0xFD, 0x03 and 0xFE.
peterswanson87 0:d0adb548714f 63 char x[2];
peterswanson87 0:d0adb548714f 64 x[0] = ADXL345_OFSX_REG ;
peterswanson87 0:d0adb548714f 65 x[1] = 0xFD;
peterswanson87 0:d0adb548714f 66 i2c_.write( ADXL345_I2C_WRITE , x, 2);
peterswanson87 0:d0adb548714f 67 char y[2];
peterswanson87 0:d0adb548714f 68 y[0] = ADXL345_OFSY_REG ;
peterswanson87 0:d0adb548714f 69 y[1] = 0x03;
peterswanson87 0:d0adb548714f 70 i2c_.write( ADXL345_I2C_WRITE , y, 2);
peterswanson87 0:d0adb548714f 71 char z[2];
peterswanson87 0:d0adb548714f 72 z[0] = ADXL345_OFSZ_REG ;
peterswanson87 0:d0adb548714f 73 z[1] = 0xFE;
peterswanson87 0:d0adb548714f 74 i2c_.write( ADXL345_I2C_WRITE , z, 2);
peterswanson87 0:d0adb548714f 75 }
peterswanson87 0:d0adb548714f 76
peterswanson87 0:d0adb548714f 77
peterswanson87 0:d0adb548714f 78 char ADXL345_I2C::SingleByteRead(char address){
peterswanson87 0:d0adb548714f 79 char tx = address;
peterswanson87 0:d0adb548714f 80 char output;
peterswanson87 0:d0adb548714f 81 i2c_.write( ADXL345_I2C_WRITE , &tx, 1); //tell it what you want to read
peterswanson87 0:d0adb548714f 82 i2c_.read( ADXL345_I2C_READ , &output, 1); //tell it where to store the data
peterswanson87 0:d0adb548714f 83 return output;
peterswanson87 0:d0adb548714f 84
peterswanson87 0:d0adb548714f 85 }
peterswanson87 0:d0adb548714f 86
peterswanson87 0:d0adb548714f 87
peterswanson87 0:d0adb548714f 88 /*
peterswanson87 0:d0adb548714f 89 ***info on the i2c_.write***
peterswanson87 0:d0adb548714f 90 address 8-bit I2C slave address [ addr | 0 ]
peterswanson87 0:d0adb548714f 91 data Pointer to the byte-array data to send
peterswanson87 0:d0adb548714f 92 length Number of bytes to send
peterswanson87 0:d0adb548714f 93 repeated Repeated start, true - do not send stop at end
peterswanson87 0:d0adb548714f 94 returns 0 on success (ack), or non-0 on failure (nack)
peterswanson87 0:d0adb548714f 95 */
peterswanson87 0:d0adb548714f 96
peterswanson87 0:d0adb548714f 97 int ADXL345_I2C::SingleByteWrite(char address, char data){
peterswanson87 0:d0adb548714f 98 int ack = 0;
peterswanson87 0:d0adb548714f 99 char tx[2];
peterswanson87 0:d0adb548714f 100 tx[0] = address;
peterswanson87 0:d0adb548714f 101 tx[1] = data;
peterswanson87 0:d0adb548714f 102 return ack | i2c_.write( ADXL345_I2C_WRITE , tx, 2);
peterswanson87 0:d0adb548714f 103 }
peterswanson87 0:d0adb548714f 104
peterswanson87 0:d0adb548714f 105
peterswanson87 0:d0adb548714f 106
peterswanson87 0:d0adb548714f 107 void ADXL345_I2C::multiByteRead(char address, char* output, int size) {
peterswanson87 0:d0adb548714f 108 i2c_.write( ADXL345_I2C_WRITE, &address, 1); //tell it where to read from
peterswanson87 0:d0adb548714f 109 i2c_.read( ADXL345_I2C_READ , output, size); //tell it where to store the data read
peterswanson87 0:d0adb548714f 110 }
peterswanson87 0:d0adb548714f 111
peterswanson87 0:d0adb548714f 112
peterswanson87 0:d0adb548714f 113 int ADXL345_I2C::multiByteWrite(char address, char* ptr_data, int size) {
peterswanson87 0:d0adb548714f 114 int ack;
peterswanson87 0:d0adb548714f 115
peterswanson87 0:d0adb548714f 116 ack = i2c_.write( ADXL345_I2C_WRITE, &address, 1); //tell it where to write to
peterswanson87 0:d0adb548714f 117 return ack | i2c_.write( ADXL345_I2C_READ, ptr_data, size); //tell it what data to write
peterswanson87 0:d0adb548714f 118
peterswanson87 0:d0adb548714f 119 }
peterswanson87 0:d0adb548714f 120
peterswanson87 0:d0adb548714f 121
peterswanson87 0:d0adb548714f 122 void ADXL345_I2C::getOutput(int* readings){
peterswanson87 0:d0adb548714f 123 char buffer[6];
peterswanson87 0:d0adb548714f 124 multiByteRead(ADXL345_DATAX0_REG, buffer, 6);
peterswanson87 0:d0adb548714f 125
peterswanson87 0:d0adb548714f 126 readings[0] = (int)buffer[1] << 8 | (int)buffer[0];
peterswanson87 0:d0adb548714f 127 readings[1] = (int)buffer[3] << 8 | (int)buffer[2];
peterswanson87 0:d0adb548714f 128 readings[2] = (int)buffer[5] << 8 | (int)buffer[4];
peterswanson87 0:d0adb548714f 129
peterswanson87 0:d0adb548714f 130 }
peterswanson87 0:d0adb548714f 131
pommzorz 2:755d80b05eea 132 void ADXL345_I2C::getOutput(int *x, int *y, int *z) {
pommzorz 2:755d80b05eea 133 int* readings;
pommzorz 2:755d80b05eea 134 getOutput(readings);
pommzorz 2:755d80b05eea 135
pommzorz 2:755d80b05eea 136 // each axis reading comes in 10 bit resolution, ie 2 bytes. Least Significat Byte first!!
pommzorz 2:755d80b05eea 137 // thus we are converting both bytes in to one int
pommzorz 2:755d80b05eea 138 *x = readings[0];
pommzorz 2:755d80b05eea 139 *y = readings[1];
pommzorz 2:755d80b05eea 140 *z = readings[2];
pommzorz 2:755d80b05eea 141 }
pommzorz 2:755d80b05eea 142
peterswanson87 0:d0adb548714f 143
peterswanson87 0:d0adb548714f 144
peterswanson87 0:d0adb548714f 145 char ADXL345_I2C::getDeviceID() {
peterswanson87 0:d0adb548714f 146 return SingleByteRead(ADXL345_DEVID_REG);
peterswanson87 0:d0adb548714f 147 }
peterswanson87 0:d0adb548714f 148 //
peterswanson87 0:d0adb548714f 149 int ADXL345_I2C::setPowerMode(char mode) {
peterswanson87 0:d0adb548714f 150
peterswanson87 0:d0adb548714f 151 //Get the current register contents, so we don't clobber the rate value.
peterswanson87 0:d0adb548714f 152 char registerContents = (mode << 4) | SingleByteRead(ADXL345_BW_RATE_REG);
peterswanson87 0:d0adb548714f 153
peterswanson87 0:d0adb548714f 154 return SingleByteWrite(ADXL345_BW_RATE_REG, registerContents);
peterswanson87 0:d0adb548714f 155
peterswanson87 0:d0adb548714f 156 }
peterswanson87 0:d0adb548714f 157
peterswanson87 0:d0adb548714f 158 char ADXL345_I2C::getPowerControl() {
peterswanson87 0:d0adb548714f 159 return SingleByteRead(ADXL345_POWER_CTL_REG);
peterswanson87 0:d0adb548714f 160 }
peterswanson87 0:d0adb548714f 161
peterswanson87 0:d0adb548714f 162 int ADXL345_I2C::setPowerControl(char settings) {
peterswanson87 0:d0adb548714f 163 return SingleByteWrite(ADXL345_POWER_CTL_REG, settings);
peterswanson87 0:d0adb548714f 164
peterswanson87 0:d0adb548714f 165 }
peterswanson87 0:d0adb548714f 166
peterswanson87 0:d0adb548714f 167
peterswanson87 0:d0adb548714f 168
peterswanson87 0:d0adb548714f 169 char ADXL345_I2C::getDataFormatControl(void){
peterswanson87 0:d0adb548714f 170
peterswanson87 0:d0adb548714f 171 return SingleByteRead(ADXL345_DATA_FORMAT_REG);
peterswanson87 0:d0adb548714f 172 }
peterswanson87 0:d0adb548714f 173
peterswanson87 0:d0adb548714f 174 int ADXL345_I2C::setDataFormatControl(char settings){
peterswanson87 0:d0adb548714f 175
peterswanson87 0:d0adb548714f 176 return SingleByteWrite(ADXL345_DATA_FORMAT_REG, settings);
peterswanson87 0:d0adb548714f 177
peterswanson87 0:d0adb548714f 178 }
peterswanson87 0:d0adb548714f 179
peterswanson87 0:d0adb548714f 180 int ADXL345_I2C::setDataRate(char rate) {
peterswanson87 0:d0adb548714f 181
peterswanson87 0:d0adb548714f 182 //Get the current register contents, so we don't clobber the power bit.
peterswanson87 0:d0adb548714f 183 char registerContents = SingleByteRead(ADXL345_BW_RATE_REG);
peterswanson87 0:d0adb548714f 184
peterswanson87 0:d0adb548714f 185 registerContents &= 0x10;
peterswanson87 0:d0adb548714f 186 registerContents |= rate;
peterswanson87 0:d0adb548714f 187
peterswanson87 0:d0adb548714f 188 return SingleByteWrite(ADXL345_BW_RATE_REG, registerContents);
peterswanson87 0:d0adb548714f 189
peterswanson87 0:d0adb548714f 190 }
peterswanson87 0:d0adb548714f 191
peterswanson87 0:d0adb548714f 192
peterswanson87 0:d0adb548714f 193 char ADXL345_I2C::getOffset(char axis) {
peterswanson87 0:d0adb548714f 194
peterswanson87 0:d0adb548714f 195 char address = 0;
peterswanson87 0:d0adb548714f 196
peterswanson87 0:d0adb548714f 197 if (axis == ADXL345_X) {
peterswanson87 0:d0adb548714f 198 address = ADXL345_OFSX_REG;
peterswanson87 0:d0adb548714f 199 } else if (axis == ADXL345_Y) {
peterswanson87 0:d0adb548714f 200 address = ADXL345_OFSY_REG;
peterswanson87 0:d0adb548714f 201 } else if (axis == ADXL345_Z) {
peterswanson87 0:d0adb548714f 202 address = ADXL345_OFSZ_REG;
peterswanson87 0:d0adb548714f 203 }
peterswanson87 0:d0adb548714f 204
peterswanson87 0:d0adb548714f 205 return SingleByteRead(address);
peterswanson87 0:d0adb548714f 206 }
peterswanson87 0:d0adb548714f 207
peterswanson87 0:d0adb548714f 208 int ADXL345_I2C::setOffset(char axis, char offset) {
peterswanson87 0:d0adb548714f 209
peterswanson87 0:d0adb548714f 210 char address = 0;
peterswanson87 0:d0adb548714f 211
peterswanson87 0:d0adb548714f 212 if (axis == ADXL345_X) {
peterswanson87 0:d0adb548714f 213 address = ADXL345_OFSX_REG;
peterswanson87 0:d0adb548714f 214 } else if (axis == ADXL345_Y) {
peterswanson87 0:d0adb548714f 215 address = ADXL345_OFSY_REG;
peterswanson87 0:d0adb548714f 216 } else if (axis == ADXL345_Z) {
peterswanson87 0:d0adb548714f 217 address = ADXL345_OFSZ_REG;
peterswanson87 0:d0adb548714f 218 }
peterswanson87 0:d0adb548714f 219
peterswanson87 0:d0adb548714f 220 return SingleByteWrite(address, offset);
peterswanson87 0:d0adb548714f 221
peterswanson87 0:d0adb548714f 222 }
peterswanson87 0:d0adb548714f 223
peterswanson87 0:d0adb548714f 224
peterswanson87 0:d0adb548714f 225 char ADXL345_I2C::getFifoControl(void){
peterswanson87 0:d0adb548714f 226
peterswanson87 0:d0adb548714f 227 return SingleByteRead(ADXL345_FIFO_CTL);
peterswanson87 0:d0adb548714f 228
peterswanson87 0:d0adb548714f 229 }
peterswanson87 0:d0adb548714f 230
peterswanson87 0:d0adb548714f 231 int ADXL345_I2C::setFifoControl(char settings){
peterswanson87 0:d0adb548714f 232 return SingleByteWrite(ADXL345_FIFO_STATUS, settings);
peterswanson87 0:d0adb548714f 233
peterswanson87 0:d0adb548714f 234 }
peterswanson87 0:d0adb548714f 235
peterswanson87 0:d0adb548714f 236 char ADXL345_I2C::getFifoStatus(void){
peterswanson87 0:d0adb548714f 237
peterswanson87 0:d0adb548714f 238 return SingleByteRead(ADXL345_FIFO_STATUS);
peterswanson87 0:d0adb548714f 239
peterswanson87 0:d0adb548714f 240 }
peterswanson87 0:d0adb548714f 241
peterswanson87 0:d0adb548714f 242
peterswanson87 0:d0adb548714f 243
peterswanson87 0:d0adb548714f 244 char ADXL345_I2C::getTapThreshold(void) {
peterswanson87 0:d0adb548714f 245
peterswanson87 0:d0adb548714f 246 return SingleByteRead(ADXL345_THRESH_TAP_REG);
peterswanson87 0:d0adb548714f 247 }
peterswanson87 0:d0adb548714f 248
peterswanson87 0:d0adb548714f 249 int ADXL345_I2C::setTapThreshold(char threshold) {
peterswanson87 0:d0adb548714f 250
peterswanson87 0:d0adb548714f 251 return SingleByteWrite(ADXL345_THRESH_TAP_REG, threshold);
peterswanson87 0:d0adb548714f 252
peterswanson87 0:d0adb548714f 253 }
peterswanson87 0:d0adb548714f 254
peterswanson87 0:d0adb548714f 255
peterswanson87 0:d0adb548714f 256 float ADXL345_I2C::getTapDuration(void) {
peterswanson87 0:d0adb548714f 257
peterswanson87 0:d0adb548714f 258 return (float)SingleByteRead(ADXL345_DUR_REG)*625;
peterswanson87 0:d0adb548714f 259 }
peterswanson87 0:d0adb548714f 260
peterswanson87 0:d0adb548714f 261 int ADXL345_I2C::setTapDuration(short int duration_us) {
peterswanson87 0:d0adb548714f 262
peterswanson87 0:d0adb548714f 263 short int tapDuration = duration_us / 625;
peterswanson87 0:d0adb548714f 264 char tapChar[2];
peterswanson87 0:d0adb548714f 265 tapChar[0] = (tapDuration & 0x00FF);
peterswanson87 0:d0adb548714f 266 tapChar[1] = (tapDuration >> 8) & 0x00FF;
peterswanson87 0:d0adb548714f 267 return multiByteWrite(ADXL345_DUR_REG, tapChar, 2);
peterswanson87 0:d0adb548714f 268
peterswanson87 0:d0adb548714f 269 }
peterswanson87 0:d0adb548714f 270
peterswanson87 0:d0adb548714f 271 float ADXL345_I2C::getTapLatency(void) {
peterswanson87 0:d0adb548714f 272
peterswanson87 0:d0adb548714f 273 return (float)SingleByteRead(ADXL345_LATENT_REG)*1.25;
peterswanson87 0:d0adb548714f 274 }
peterswanson87 0:d0adb548714f 275
peterswanson87 0:d0adb548714f 276 int ADXL345_I2C::setTapLatency(short int latency_ms) {
peterswanson87 0:d0adb548714f 277
peterswanson87 0:d0adb548714f 278 latency_ms = latency_ms / 1.25;
peterswanson87 0:d0adb548714f 279 char latChar[2];
peterswanson87 0:d0adb548714f 280 latChar[0] = (latency_ms & 0x00FF);
peterswanson87 0:d0adb548714f 281 latChar[1] = (latency_ms << 8) & 0xFF00;
peterswanson87 0:d0adb548714f 282 return multiByteWrite(ADXL345_LATENT_REG, latChar, 2);
peterswanson87 0:d0adb548714f 283
peterswanson87 0:d0adb548714f 284 }
peterswanson87 0:d0adb548714f 285
peterswanson87 0:d0adb548714f 286 float ADXL345_I2C::getWindowTime(void) {
peterswanson87 0:d0adb548714f 287
peterswanson87 0:d0adb548714f 288 return (float)SingleByteRead(ADXL345_WINDOW_REG)*1.25;
peterswanson87 0:d0adb548714f 289 }
peterswanson87 0:d0adb548714f 290
peterswanson87 0:d0adb548714f 291 int ADXL345_I2C::setWindowTime(short int window_ms) {
peterswanson87 0:d0adb548714f 292
peterswanson87 0:d0adb548714f 293 window_ms = window_ms / 1.25;
peterswanson87 0:d0adb548714f 294 char windowChar[2];
peterswanson87 0:d0adb548714f 295 windowChar[0] = (window_ms & 0x00FF);
peterswanson87 0:d0adb548714f 296 windowChar[1] = ((window_ms << 8) & 0xFF00);
peterswanson87 0:d0adb548714f 297 return multiByteWrite(ADXL345_WINDOW_REG, windowChar, 2);
peterswanson87 0:d0adb548714f 298
peterswanson87 0:d0adb548714f 299 }
peterswanson87 0:d0adb548714f 300
peterswanson87 0:d0adb548714f 301 char ADXL345_I2C::getActivityThreshold(void) {
peterswanson87 0:d0adb548714f 302
peterswanson87 0:d0adb548714f 303 return SingleByteRead(ADXL345_THRESH_ACT_REG);
peterswanson87 0:d0adb548714f 304 }
peterswanson87 0:d0adb548714f 305
peterswanson87 0:d0adb548714f 306 int ADXL345_I2C::setActivityThreshold(char threshold) {
peterswanson87 0:d0adb548714f 307 return SingleByteWrite(ADXL345_THRESH_ACT_REG, threshold);
peterswanson87 0:d0adb548714f 308
peterswanson87 0:d0adb548714f 309 }
peterswanson87 0:d0adb548714f 310
peterswanson87 0:d0adb548714f 311 char ADXL345_I2C::getInactivityThreshold(void) {
peterswanson87 0:d0adb548714f 312 return SingleByteRead(ADXL345_THRESH_INACT_REG);
peterswanson87 0:d0adb548714f 313
peterswanson87 0:d0adb548714f 314 }
peterswanson87 0:d0adb548714f 315
peterswanson87 0:d0adb548714f 316 //int FUNCTION(short int * ptr_Output)
peterswanson87 0:d0adb548714f 317 //short int FUNCTION ()
peterswanson87 0:d0adb548714f 318
peterswanson87 0:d0adb548714f 319 int ADXL345_I2C::setInactivityThreshold(char threshold) {
peterswanson87 0:d0adb548714f 320 return SingleByteWrite(ADXL345_THRESH_INACT_REG, threshold);
peterswanson87 0:d0adb548714f 321
peterswanson87 0:d0adb548714f 322 }
peterswanson87 0:d0adb548714f 323
peterswanson87 0:d0adb548714f 324 char ADXL345_I2C::getTimeInactivity(void) {
peterswanson87 0:d0adb548714f 325
peterswanson87 0:d0adb548714f 326 return SingleByteRead(ADXL345_TIME_INACT_REG);
peterswanson87 0:d0adb548714f 327
peterswanson87 0:d0adb548714f 328 }
peterswanson87 0:d0adb548714f 329
peterswanson87 0:d0adb548714f 330 int ADXL345_I2C::setTimeInactivity(char timeInactivity) {
peterswanson87 0:d0adb548714f 331 return SingleByteWrite(ADXL345_TIME_INACT_REG, timeInactivity);
peterswanson87 0:d0adb548714f 332
peterswanson87 0:d0adb548714f 333 }
peterswanson87 0:d0adb548714f 334
peterswanson87 0:d0adb548714f 335 char ADXL345_I2C::getActivityInactivityControl(void) {
peterswanson87 0:d0adb548714f 336
peterswanson87 0:d0adb548714f 337 return SingleByteRead(ADXL345_ACT_INACT_CTL_REG);
peterswanson87 0:d0adb548714f 338
peterswanson87 0:d0adb548714f 339 }
peterswanson87 0:d0adb548714f 340
peterswanson87 0:d0adb548714f 341 int ADXL345_I2C::setActivityInactivityControl(char settings) {
peterswanson87 0:d0adb548714f 342 return SingleByteWrite(ADXL345_ACT_INACT_CTL_REG, settings);
peterswanson87 0:d0adb548714f 343
peterswanson87 0:d0adb548714f 344 }
peterswanson87 0:d0adb548714f 345
peterswanson87 0:d0adb548714f 346 char ADXL345_I2C::getFreefallThreshold(void) {
peterswanson87 0:d0adb548714f 347
peterswanson87 0:d0adb548714f 348 return SingleByteRead(ADXL345_THRESH_FF_REG);
peterswanson87 0:d0adb548714f 349
peterswanson87 0:d0adb548714f 350 }
peterswanson87 0:d0adb548714f 351
peterswanson87 0:d0adb548714f 352 int ADXL345_I2C::setFreefallThreshold(char threshold) {
peterswanson87 0:d0adb548714f 353 return SingleByteWrite(ADXL345_THRESH_FF_REG, threshold);
peterswanson87 0:d0adb548714f 354
peterswanson87 0:d0adb548714f 355 }
peterswanson87 0:d0adb548714f 356
peterswanson87 0:d0adb548714f 357 char ADXL345_I2C::getFreefallTime(void) {
peterswanson87 0:d0adb548714f 358
peterswanson87 0:d0adb548714f 359 return SingleByteRead(ADXL345_TIME_FF_REG)*5;
peterswanson87 0:d0adb548714f 360
peterswanson87 0:d0adb548714f 361 }
peterswanson87 0:d0adb548714f 362
peterswanson87 0:d0adb548714f 363 int ADXL345_I2C::setFreefallTime(short int freefallTime_ms) {
peterswanson87 0:d0adb548714f 364 freefallTime_ms = freefallTime_ms / 5;
peterswanson87 0:d0adb548714f 365 char fallChar[2];
peterswanson87 0:d0adb548714f 366 fallChar[0] = (freefallTime_ms & 0x00FF);
peterswanson87 0:d0adb548714f 367 fallChar[1] = (freefallTime_ms << 8) & 0xFF00;
peterswanson87 0:d0adb548714f 368
peterswanson87 0:d0adb548714f 369 return multiByteWrite(ADXL345_TIME_FF_REG, fallChar, 2);
peterswanson87 0:d0adb548714f 370
peterswanson87 0:d0adb548714f 371 }
peterswanson87 0:d0adb548714f 372
peterswanson87 0:d0adb548714f 373 char ADXL345_I2C::getTapAxisControl(void) {
peterswanson87 0:d0adb548714f 374
peterswanson87 0:d0adb548714f 375 return SingleByteRead(ADXL345_TAP_AXES_REG);
peterswanson87 0:d0adb548714f 376
peterswanson87 0:d0adb548714f 377 }
peterswanson87 0:d0adb548714f 378
peterswanson87 0:d0adb548714f 379 int ADXL345_I2C::setTapAxisControl(char settings) {
peterswanson87 0:d0adb548714f 380 return SingleByteWrite(ADXL345_TAP_AXES_REG, settings);
peterswanson87 0:d0adb548714f 381
peterswanson87 0:d0adb548714f 382 }
peterswanson87 0:d0adb548714f 383
peterswanson87 0:d0adb548714f 384 char ADXL345_I2C::getTapSource(void) {
peterswanson87 0:d0adb548714f 385
peterswanson87 0:d0adb548714f 386 return SingleByteRead(ADXL345_ACT_TAP_STATUS_REG);
peterswanson87 0:d0adb548714f 387
peterswanson87 0:d0adb548714f 388 }
peterswanson87 0:d0adb548714f 389
peterswanson87 0:d0adb548714f 390
peterswanson87 0:d0adb548714f 391
peterswanson87 0:d0adb548714f 392 char ADXL345_I2C::getInterruptEnableControl(void) {
peterswanson87 0:d0adb548714f 393
peterswanson87 0:d0adb548714f 394 return SingleByteRead(ADXL345_INT_ENABLE_REG);
peterswanson87 0:d0adb548714f 395
peterswanson87 0:d0adb548714f 396 }
peterswanson87 0:d0adb548714f 397
peterswanson87 0:d0adb548714f 398 int ADXL345_I2C::setInterruptEnableControl(char settings) {
peterswanson87 0:d0adb548714f 399 return SingleByteWrite(ADXL345_INT_ENABLE_REG, settings);
peterswanson87 0:d0adb548714f 400
peterswanson87 0:d0adb548714f 401 }
peterswanson87 0:d0adb548714f 402
peterswanson87 0:d0adb548714f 403 char ADXL345_I2C::getInterruptMappingControl(void) {
peterswanson87 0:d0adb548714f 404
peterswanson87 0:d0adb548714f 405 return SingleByteRead(ADXL345_INT_MAP_REG);
peterswanson87 0:d0adb548714f 406
peterswanson87 0:d0adb548714f 407 }
peterswanson87 0:d0adb548714f 408
peterswanson87 0:d0adb548714f 409 int ADXL345_I2C::setInterruptMappingControl(char settings) {
peterswanson87 0:d0adb548714f 410 return SingleByteWrite(ADXL345_INT_MAP_REG, settings);
peterswanson87 0:d0adb548714f 411
peterswanson87 0:d0adb548714f 412 }
peterswanson87 0:d0adb548714f 413
peterswanson87 0:d0adb548714f 414 char ADXL345_I2C::getInterruptSource(void){
peterswanson87 0:d0adb548714f 415
peterswanson87 0:d0adb548714f 416 return SingleByteRead(ADXL345_INT_SOURCE_REG);
peterswanson87 0:d0adb548714f 417
peterswanson87 0:d0adb548714f 418 }
peterswanson87 0:d0adb548714f 419
peterswanson87 0:d0adb548714f 420
peterswanson87 0:d0adb548714f 421
peterswanson87 0:d0adb548714f 422