A system demonstrating interface of 6DOF sensor to Android

Dependencies:   ITG3200 mbed

Fork of 6dof_new_workwith_v2 by Chen Zhai

Committer:
Vigneshwar
Date:
Mon Mar 18 02:32:48 2013 +0000
Revision:
1:6ec19e5615d9
Parent:
0:5ca44aa85a30
Micropower Wireless Health sensors

Who changed what in which revision?

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