library acel

Committer:
JonasMF
Date:
Mon Apr 28 13:05:23 2014 +0000
Revision:
0:b1e3d3177fce
program

Who changed what in which revision?

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