Forked from Uwe Gartmann's ADXL345 library, customized as part of the 9DOF stick from Sparkfun.com

Fork of ADXL345 by Uwe Gartmann

ADXL345 is triple axis, digital interface, accelerometer.

This library is forked from Uwe Gartmann and Peter Swanson's work.

This library is for specific application using 9DoF-Stick.

Datasheet:

http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf

ADXL345は3軸のデジタルインターフェースを備えた加速度センサです。

このライブラリは 9DoF-Stick を使用した特定の企画のために保守しています。

mbed IDEが日本語をサポートするまでは英語でコメントを書いていきますが、サポートした後もきっと英語で書いていくでしょう。

Committer:
gltest26
Date:
Sat Sep 29 14:15:24 2012 +0000
Revision:
5:122a504fcfa3
Parent:
4:8046894b947e
Added a new constructor to accept an external I2C interface object.

Who changed what in which revision?

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