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:
Mon Sep 17 10:39:19 2012 +0000
Revision:
4:8046894b947e
Parent:
3:7b83694c7292
Child:
5:122a504fcfa3
Added bit mask replace version of ADXL345::setDataFormatControl() as an overload.

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
Digixx 0:1e4aa22fc1a1 57 ADXL345::ADXL345(PinName sda, PinName scl) : i2c_(sda, scl) {
Digixx 0:1e4aa22fc1a1 58
Digixx 0:1e4aa22fc1a1 59 //400kHz, allowing us to use the fastest data rates.
Digixx 0:1e4aa22fc1a1 60 //there are other chips on board, sorry
Digixx 1:45faba962a46 61 i2c_.frequency(100000);
Digixx 0:1e4aa22fc1a1 62 // initialize the BW data rate
Digixx 0:1e4aa22fc1a1 63 char tx[2];
Digixx 0:1e4aa22fc1a1 64 tx[0] = ADXL345_BW_RATE_REG;
Digixx 0:1e4aa22fc1a1 65 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 66 i2c_.write( ADXL345_WRITE , tx, 2);
Digixx 0:1e4aa22fc1a1 67
Digixx 0:1e4aa22fc1a1 68 //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 69
Digixx 0:1e4aa22fc1a1 70 char rx[2];
Digixx 0:1e4aa22fc1a1 71 rx[0] = ADXL345_DATA_FORMAT_REG;
Digixx 0:1e4aa22fc1a1 72 rx[1] = 0x0B;
Digixx 0:1e4aa22fc1a1 73 // full res and +_16g
Digixx 0:1e4aa22fc1a1 74 i2c_.write( ADXL345_WRITE , rx, 2);
Digixx 0:1e4aa22fc1a1 75
Digixx 0:1e4aa22fc1a1 76 // Set Offset - programmed into the OFSX, OFSY, and OFXZ registers, respectively, as 0xFD, 0x03 and 0xFE.
Digixx 0:1e4aa22fc1a1 77 char x[2];
Digixx 0:1e4aa22fc1a1 78 x[0] = ADXL345_OFSX_REG ;
Digixx 0:1e4aa22fc1a1 79 x[1] = 0xFD;
Digixx 0:1e4aa22fc1a1 80 i2c_.write( ADXL345_WRITE , x, 2);
Digixx 0:1e4aa22fc1a1 81 char y[2];
Digixx 0:1e4aa22fc1a1 82 y[0] = ADXL345_OFSY_REG ;
Digixx 0:1e4aa22fc1a1 83 y[1] = 0x03;
Digixx 0:1e4aa22fc1a1 84 i2c_.write( ADXL345_WRITE , y, 2);
Digixx 0:1e4aa22fc1a1 85 char z[2];
Digixx 0:1e4aa22fc1a1 86 z[0] = ADXL345_OFSZ_REG ;
Digixx 0:1e4aa22fc1a1 87 z[1] = 0xFE;
Digixx 0:1e4aa22fc1a1 88 i2c_.write( ADXL345_WRITE , z, 2);
Digixx 0:1e4aa22fc1a1 89 }
Digixx 0:1e4aa22fc1a1 90
Digixx 0:1e4aa22fc1a1 91
Digixx 0:1e4aa22fc1a1 92 char ADXL345::SingleByteRead(char address){
Digixx 0:1e4aa22fc1a1 93 char tx = address;
Digixx 0:1e4aa22fc1a1 94 char output;
Digixx 0:1e4aa22fc1a1 95 i2c_.write( ADXL345_WRITE , &tx, 1); //tell it what you want to read
Digixx 0:1e4aa22fc1a1 96 i2c_.read( ADXL345_READ , &output, 1); //tell it where to store the data
Digixx 0:1e4aa22fc1a1 97 return output;
Digixx 0:1e4aa22fc1a1 98
Digixx 0:1e4aa22fc1a1 99 }
Digixx 0:1e4aa22fc1a1 100
Digixx 0:1e4aa22fc1a1 101
Digixx 0:1e4aa22fc1a1 102 /*
Digixx 0:1e4aa22fc1a1 103 ***info on the i2c_.write***
Digixx 0:1e4aa22fc1a1 104 address 8-bit I2C slave address [ addr | 0 ]
Digixx 0:1e4aa22fc1a1 105 data Pointer to the byte-array data to send
Digixx 0:1e4aa22fc1a1 106 length Number of bytes to send
Digixx 0:1e4aa22fc1a1 107 repeated Repeated start, true - do not send stop at end
Digixx 0:1e4aa22fc1a1 108 returns 0 on success (ack), or non-0 on failure (nack)
Digixx 0:1e4aa22fc1a1 109 */
Digixx 0:1e4aa22fc1a1 110
Digixx 0:1e4aa22fc1a1 111 int ADXL345::SingleByteWrite(char address, char data){
Digixx 0:1e4aa22fc1a1 112 int ack = 0;
Digixx 0:1e4aa22fc1a1 113 char tx[2];
Digixx 0:1e4aa22fc1a1 114 tx[0] = address;
Digixx 0:1e4aa22fc1a1 115 tx[1] = data;
Digixx 0:1e4aa22fc1a1 116 return ack | i2c_.write( ADXL345_WRITE , tx, 2);
Digixx 0:1e4aa22fc1a1 117 }
Digixx 0:1e4aa22fc1a1 118
Digixx 0:1e4aa22fc1a1 119
Digixx 0:1e4aa22fc1a1 120 void ADXL345::multiByteRead(char address, char* output, int size) {
Digixx 0:1e4aa22fc1a1 121 i2c_.write( ADXL345_WRITE, &address, 1); //tell it where to read from
Digixx 0:1e4aa22fc1a1 122 i2c_.read( ADXL345_READ , output, size); //tell it where to store the data read
Digixx 0:1e4aa22fc1a1 123 }
Digixx 0:1e4aa22fc1a1 124
Digixx 0:1e4aa22fc1a1 125
Digixx 0:1e4aa22fc1a1 126 int ADXL345::multiByteWrite(char address, char* ptr_data, int size) {
Digixx 0:1e4aa22fc1a1 127 int ack;
Digixx 0:1e4aa22fc1a1 128
Digixx 0:1e4aa22fc1a1 129 ack = i2c_.write( ADXL345_WRITE, &address, 1); //tell it where to write to
Digixx 0:1e4aa22fc1a1 130 return ack | i2c_.write( ADXL345_READ, ptr_data, size); //tell it what data to write
Digixx 0:1e4aa22fc1a1 131
Digixx 0:1e4aa22fc1a1 132 }
Digixx 0:1e4aa22fc1a1 133
Digixx 0:1e4aa22fc1a1 134
Digixx 0:1e4aa22fc1a1 135 void ADXL345::getOutput(int* readings){
Digixx 0:1e4aa22fc1a1 136 char buffer[6];
Digixx 0:1e4aa22fc1a1 137 multiByteRead(ADXL345_DATAX0_REG, buffer, 6);
Digixx 0:1e4aa22fc1a1 138
gltest26 3:7b83694c7292 139 readings[0] = wordExtend(&buffer[0]);
gltest26 3:7b83694c7292 140 readings[1] = wordExtend(&buffer[2]);
gltest26 3:7b83694c7292 141 readings[2] = wordExtend(&buffer[4]);
Digixx 0:1e4aa22fc1a1 142
Digixx 0:1e4aa22fc1a1 143 }
Digixx 0:1e4aa22fc1a1 144
Digixx 0:1e4aa22fc1a1 145
Digixx 0:1e4aa22fc1a1 146
Digixx 0:1e4aa22fc1a1 147 char ADXL345::getDeviceID() {
Digixx 0:1e4aa22fc1a1 148 return SingleByteRead(ADXL345_DEVID_REG);
Digixx 0:1e4aa22fc1a1 149 }
Digixx 0:1e4aa22fc1a1 150 //
Digixx 0:1e4aa22fc1a1 151 int ADXL345::setPowerMode(char mode) {
Digixx 0:1e4aa22fc1a1 152
Digixx 0:1e4aa22fc1a1 153 //Get the current register contents, so we don't clobber the rate value.
Digixx 0:1e4aa22fc1a1 154 char registerContents = (mode << 4) | SingleByteRead(ADXL345_BW_RATE_REG);
Digixx 0:1e4aa22fc1a1 155
Digixx 0:1e4aa22fc1a1 156 return SingleByteWrite(ADXL345_BW_RATE_REG, registerContents);
Digixx 0:1e4aa22fc1a1 157
Digixx 0:1e4aa22fc1a1 158 }
Digixx 0:1e4aa22fc1a1 159
Digixx 0:1e4aa22fc1a1 160 char ADXL345::getPowerControl() {
Digixx 0:1e4aa22fc1a1 161 return SingleByteRead(ADXL345_POWER_CTL_REG);
Digixx 0:1e4aa22fc1a1 162 }
Digixx 0:1e4aa22fc1a1 163
Digixx 0:1e4aa22fc1a1 164 int ADXL345::setPowerControl(char settings) {
Digixx 0:1e4aa22fc1a1 165 return SingleByteWrite(ADXL345_POWER_CTL_REG, settings);
Digixx 0:1e4aa22fc1a1 166
Digixx 0:1e4aa22fc1a1 167 }
Digixx 0:1e4aa22fc1a1 168
Digixx 0:1e4aa22fc1a1 169
Digixx 0:1e4aa22fc1a1 170
Digixx 0:1e4aa22fc1a1 171 char ADXL345::getDataFormatControl(void){
Digixx 0:1e4aa22fc1a1 172
Digixx 0:1e4aa22fc1a1 173 return SingleByteRead(ADXL345_DATA_FORMAT_REG);
Digixx 0:1e4aa22fc1a1 174 }
Digixx 0:1e4aa22fc1a1 175
Digixx 0:1e4aa22fc1a1 176 int ADXL345::setDataFormatControl(char settings){
Digixx 0:1e4aa22fc1a1 177
Digixx 0:1e4aa22fc1a1 178 return SingleByteWrite(ADXL345_DATA_FORMAT_REG, settings);
Digixx 0:1e4aa22fc1a1 179
Digixx 0:1e4aa22fc1a1 180 }
Digixx 0:1e4aa22fc1a1 181
gltest26 4:8046894b947e 182 int ADXL345::setDataFormatControl(char settings, char mask, char *prev){
gltest26 4:8046894b947e 183 char old = SingleByteRead(ADXL345_DATA_FORMAT_REG);
gltest26 4:8046894b947e 184 if(prev)
gltest26 4:8046894b947e 185 *prev = old;
gltest26 4:8046894b947e 186 return SingleByteWrite(ADXL345_DATA_FORMAT_REG, (old | (settings & mask)) & (settings | ~mask));
gltest26 4:8046894b947e 187 }
gltest26 4:8046894b947e 188
Digixx 0:1e4aa22fc1a1 189 int ADXL345::setDataRate(char rate) {
Digixx 0:1e4aa22fc1a1 190
Digixx 0:1e4aa22fc1a1 191 //Get the current register contents, so we don't clobber the power bit.
Digixx 0:1e4aa22fc1a1 192 char registerContents = SingleByteRead(ADXL345_BW_RATE_REG);
Digixx 0:1e4aa22fc1a1 193
Digixx 0:1e4aa22fc1a1 194 registerContents &= 0x10;
Digixx 0:1e4aa22fc1a1 195 registerContents |= rate;
Digixx 0:1e4aa22fc1a1 196
Digixx 0:1e4aa22fc1a1 197 return SingleByteWrite(ADXL345_BW_RATE_REG, registerContents);
Digixx 0:1e4aa22fc1a1 198
Digixx 0:1e4aa22fc1a1 199 }
Digixx 0:1e4aa22fc1a1 200
Digixx 0:1e4aa22fc1a1 201
Digixx 0:1e4aa22fc1a1 202 char ADXL345::getOffset(char axis) {
Digixx 0:1e4aa22fc1a1 203
Digixx 0:1e4aa22fc1a1 204 char address = 0;
Digixx 0:1e4aa22fc1a1 205
Digixx 0:1e4aa22fc1a1 206 if (axis == ADXL345_X) {
Digixx 0:1e4aa22fc1a1 207 address = ADXL345_OFSX_REG;
Digixx 0:1e4aa22fc1a1 208 } else if (axis == ADXL345_Y) {
Digixx 0:1e4aa22fc1a1 209 address = ADXL345_OFSY_REG;
Digixx 0:1e4aa22fc1a1 210 } else if (axis == ADXL345_Z) {
Digixx 0:1e4aa22fc1a1 211 address = ADXL345_OFSZ_REG;
Digixx 0:1e4aa22fc1a1 212 }
Digixx 0:1e4aa22fc1a1 213
Digixx 0:1e4aa22fc1a1 214 return SingleByteRead(address);
Digixx 0:1e4aa22fc1a1 215 }
Digixx 0:1e4aa22fc1a1 216
Digixx 0:1e4aa22fc1a1 217 int ADXL345::setOffset(char axis, char offset) {
Digixx 0:1e4aa22fc1a1 218
Digixx 0:1e4aa22fc1a1 219 char address = 0;
Digixx 0:1e4aa22fc1a1 220
Digixx 0:1e4aa22fc1a1 221 if (axis == ADXL345_X) {
Digixx 0:1e4aa22fc1a1 222 address = ADXL345_OFSX_REG;
Digixx 0:1e4aa22fc1a1 223 } else if (axis == ADXL345_Y) {
Digixx 0:1e4aa22fc1a1 224 address = ADXL345_OFSY_REG;
Digixx 0:1e4aa22fc1a1 225 } else if (axis == ADXL345_Z) {
Digixx 0:1e4aa22fc1a1 226 address = ADXL345_OFSZ_REG;
Digixx 0:1e4aa22fc1a1 227 }
Digixx 0:1e4aa22fc1a1 228
Digixx 0:1e4aa22fc1a1 229 return SingleByteWrite(address, offset);
Digixx 0:1e4aa22fc1a1 230
Digixx 0:1e4aa22fc1a1 231 }
Digixx 0:1e4aa22fc1a1 232
Digixx 0:1e4aa22fc1a1 233
Digixx 0:1e4aa22fc1a1 234 char ADXL345::getFifoControl(void){
Digixx 0:1e4aa22fc1a1 235
Digixx 0:1e4aa22fc1a1 236 return SingleByteRead(ADXL345_FIFO_CTL);
Digixx 0:1e4aa22fc1a1 237
Digixx 0:1e4aa22fc1a1 238 }
Digixx 0:1e4aa22fc1a1 239
Digixx 0:1e4aa22fc1a1 240 int ADXL345::setFifoControl(char settings){
Digixx 0:1e4aa22fc1a1 241 return SingleByteWrite(ADXL345_FIFO_STATUS, settings);
Digixx 0:1e4aa22fc1a1 242
Digixx 0:1e4aa22fc1a1 243 }
Digixx 0:1e4aa22fc1a1 244
Digixx 0:1e4aa22fc1a1 245 char ADXL345::getFifoStatus(void){
Digixx 0:1e4aa22fc1a1 246
Digixx 0:1e4aa22fc1a1 247 return SingleByteRead(ADXL345_FIFO_STATUS);
Digixx 0:1e4aa22fc1a1 248
Digixx 0:1e4aa22fc1a1 249 }
Digixx 0:1e4aa22fc1a1 250
Digixx 0:1e4aa22fc1a1 251
Digixx 0:1e4aa22fc1a1 252
Digixx 0:1e4aa22fc1a1 253 char ADXL345::getTapThreshold(void) {
Digixx 0:1e4aa22fc1a1 254
Digixx 0:1e4aa22fc1a1 255 return SingleByteRead(ADXL345_THRESH_TAP_REG);
Digixx 0:1e4aa22fc1a1 256 }
Digixx 0:1e4aa22fc1a1 257
Digixx 0:1e4aa22fc1a1 258 int ADXL345::setTapThreshold(char threshold) {
Digixx 0:1e4aa22fc1a1 259
Digixx 0:1e4aa22fc1a1 260 return SingleByteWrite(ADXL345_THRESH_TAP_REG, threshold);
Digixx 0:1e4aa22fc1a1 261
Digixx 0:1e4aa22fc1a1 262 }
Digixx 0:1e4aa22fc1a1 263
Digixx 0:1e4aa22fc1a1 264
Digixx 0:1e4aa22fc1a1 265 float ADXL345::getTapDuration(void) {
Digixx 0:1e4aa22fc1a1 266
Digixx 0:1e4aa22fc1a1 267 return (float)SingleByteRead(ADXL345_DUR_REG)*625;
Digixx 0:1e4aa22fc1a1 268 }
Digixx 0:1e4aa22fc1a1 269
Digixx 0:1e4aa22fc1a1 270 int ADXL345::setTapDuration(short int duration_us) {
Digixx 0:1e4aa22fc1a1 271
Digixx 0:1e4aa22fc1a1 272 short int tapDuration = duration_us / 625;
Digixx 0:1e4aa22fc1a1 273 char tapChar[2];
Digixx 0:1e4aa22fc1a1 274 tapChar[0] = (tapDuration & 0x00FF);
Digixx 0:1e4aa22fc1a1 275 tapChar[1] = (tapDuration >> 8) & 0x00FF;
Digixx 0:1e4aa22fc1a1 276 return multiByteWrite(ADXL345_DUR_REG, tapChar, 2);
Digixx 0:1e4aa22fc1a1 277
Digixx 0:1e4aa22fc1a1 278 }
Digixx 0:1e4aa22fc1a1 279
Digixx 0:1e4aa22fc1a1 280 float ADXL345::getTapLatency(void) {
Digixx 0:1e4aa22fc1a1 281
Digixx 0:1e4aa22fc1a1 282 return (float)SingleByteRead(ADXL345_LATENT_REG)*1.25;
Digixx 0:1e4aa22fc1a1 283 }
Digixx 0:1e4aa22fc1a1 284
Digixx 0:1e4aa22fc1a1 285 int ADXL345::setTapLatency(short int latency_ms) {
Digixx 0:1e4aa22fc1a1 286
Digixx 0:1e4aa22fc1a1 287 latency_ms = latency_ms / 1.25;
Digixx 0:1e4aa22fc1a1 288 char latChar[2];
Digixx 0:1e4aa22fc1a1 289 latChar[0] = (latency_ms & 0x00FF);
Digixx 0:1e4aa22fc1a1 290 latChar[1] = (latency_ms << 8) & 0xFF00;
Digixx 0:1e4aa22fc1a1 291 return multiByteWrite(ADXL345_LATENT_REG, latChar, 2);
Digixx 0:1e4aa22fc1a1 292
Digixx 0:1e4aa22fc1a1 293 }
Digixx 0:1e4aa22fc1a1 294
Digixx 0:1e4aa22fc1a1 295 float ADXL345::getWindowTime(void) {
Digixx 0:1e4aa22fc1a1 296
Digixx 0:1e4aa22fc1a1 297 return (float)SingleByteRead(ADXL345_WINDOW_REG)*1.25;
Digixx 0:1e4aa22fc1a1 298 }
Digixx 0:1e4aa22fc1a1 299
Digixx 0:1e4aa22fc1a1 300 int ADXL345::setWindowTime(short int window_ms) {
Digixx 0:1e4aa22fc1a1 301
Digixx 0:1e4aa22fc1a1 302 window_ms = window_ms / 1.25;
Digixx 0:1e4aa22fc1a1 303 char windowChar[2];
Digixx 0:1e4aa22fc1a1 304 windowChar[0] = (window_ms & 0x00FF);
Digixx 0:1e4aa22fc1a1 305 windowChar[1] = ((window_ms << 8) & 0xFF00);
Digixx 0:1e4aa22fc1a1 306 return multiByteWrite(ADXL345_WINDOW_REG, windowChar, 2);
Digixx 0:1e4aa22fc1a1 307
Digixx 0:1e4aa22fc1a1 308 }
Digixx 0:1e4aa22fc1a1 309
Digixx 0:1e4aa22fc1a1 310 char ADXL345::getActivityThreshold(void) {
Digixx 0:1e4aa22fc1a1 311
Digixx 0:1e4aa22fc1a1 312 return SingleByteRead(ADXL345_THRESH_ACT_REG);
Digixx 0:1e4aa22fc1a1 313 }
Digixx 0:1e4aa22fc1a1 314
Digixx 0:1e4aa22fc1a1 315 int ADXL345::setActivityThreshold(char threshold) {
Digixx 0:1e4aa22fc1a1 316 return SingleByteWrite(ADXL345_THRESH_ACT_REG, threshold);
Digixx 0:1e4aa22fc1a1 317
Digixx 0:1e4aa22fc1a1 318 }
Digixx 0:1e4aa22fc1a1 319
Digixx 0:1e4aa22fc1a1 320 char ADXL345::getInactivityThreshold(void) {
Digixx 0:1e4aa22fc1a1 321 return SingleByteRead(ADXL345_THRESH_INACT_REG);
Digixx 0:1e4aa22fc1a1 322
Digixx 0:1e4aa22fc1a1 323 }
Digixx 0:1e4aa22fc1a1 324
Digixx 0:1e4aa22fc1a1 325 //int FUNCTION(short int * ptr_Output)
Digixx 0:1e4aa22fc1a1 326 //short int FUNCTION ()
Digixx 0:1e4aa22fc1a1 327
Digixx 0:1e4aa22fc1a1 328 int ADXL345::setInactivityThreshold(char threshold) {
Digixx 0:1e4aa22fc1a1 329 return SingleByteWrite(ADXL345_THRESH_INACT_REG, threshold);
Digixx 0:1e4aa22fc1a1 330
Digixx 0:1e4aa22fc1a1 331 }
Digixx 0:1e4aa22fc1a1 332
Digixx 0:1e4aa22fc1a1 333 char ADXL345::getTimeInactivity(void) {
Digixx 0:1e4aa22fc1a1 334
Digixx 0:1e4aa22fc1a1 335 return SingleByteRead(ADXL345_TIME_INACT_REG);
Digixx 0:1e4aa22fc1a1 336
Digixx 0:1e4aa22fc1a1 337 }
Digixx 0:1e4aa22fc1a1 338
Digixx 0:1e4aa22fc1a1 339 int ADXL345::setTimeInactivity(char timeInactivity) {
Digixx 0:1e4aa22fc1a1 340 return SingleByteWrite(ADXL345_TIME_INACT_REG, timeInactivity);
Digixx 0:1e4aa22fc1a1 341
Digixx 0:1e4aa22fc1a1 342 }
Digixx 0:1e4aa22fc1a1 343
Digixx 0:1e4aa22fc1a1 344 char ADXL345::getActivityInactivityControl(void) {
Digixx 0:1e4aa22fc1a1 345
Digixx 0:1e4aa22fc1a1 346 return SingleByteRead(ADXL345_ACT_INACT_CTL_REG);
Digixx 0:1e4aa22fc1a1 347
Digixx 0:1e4aa22fc1a1 348 }
Digixx 0:1e4aa22fc1a1 349
Digixx 0:1e4aa22fc1a1 350 int ADXL345::setActivityInactivityControl(char settings) {
Digixx 0:1e4aa22fc1a1 351 return SingleByteWrite(ADXL345_ACT_INACT_CTL_REG, settings);
Digixx 0:1e4aa22fc1a1 352
Digixx 0:1e4aa22fc1a1 353 }
Digixx 0:1e4aa22fc1a1 354
Digixx 0:1e4aa22fc1a1 355 char ADXL345::getFreefallThreshold(void) {
Digixx 0:1e4aa22fc1a1 356
Digixx 0:1e4aa22fc1a1 357 return SingleByteRead(ADXL345_THRESH_FF_REG);
Digixx 0:1e4aa22fc1a1 358
Digixx 0:1e4aa22fc1a1 359 }
Digixx 0:1e4aa22fc1a1 360
Digixx 0:1e4aa22fc1a1 361 int ADXL345::setFreefallThreshold(char threshold) {
Digixx 0:1e4aa22fc1a1 362 return SingleByteWrite(ADXL345_THRESH_FF_REG, threshold);
Digixx 0:1e4aa22fc1a1 363
Digixx 0:1e4aa22fc1a1 364 }
Digixx 0:1e4aa22fc1a1 365
Digixx 0:1e4aa22fc1a1 366 char ADXL345::getFreefallTime(void) {
Digixx 0:1e4aa22fc1a1 367
Digixx 0:1e4aa22fc1a1 368 return SingleByteRead(ADXL345_TIME_FF_REG)*5;
Digixx 0:1e4aa22fc1a1 369
Digixx 0:1e4aa22fc1a1 370 }
Digixx 0:1e4aa22fc1a1 371
Digixx 0:1e4aa22fc1a1 372 int ADXL345::setFreefallTime(short int freefallTime_ms) {
Digixx 0:1e4aa22fc1a1 373 freefallTime_ms = freefallTime_ms / 5;
Digixx 0:1e4aa22fc1a1 374 char fallChar[2];
Digixx 0:1e4aa22fc1a1 375 fallChar[0] = (freefallTime_ms & 0x00FF);
Digixx 0:1e4aa22fc1a1 376 fallChar[1] = (freefallTime_ms << 8) & 0xFF00;
Digixx 0:1e4aa22fc1a1 377
Digixx 0:1e4aa22fc1a1 378 return multiByteWrite(ADXL345_TIME_FF_REG, fallChar, 2);
Digixx 0:1e4aa22fc1a1 379
Digixx 0:1e4aa22fc1a1 380 }
Digixx 0:1e4aa22fc1a1 381
Digixx 0:1e4aa22fc1a1 382 char ADXL345::getTapAxisControl(void) {
Digixx 0:1e4aa22fc1a1 383
Digixx 0:1e4aa22fc1a1 384 return SingleByteRead(ADXL345_TAP_AXES_REG);
Digixx 0:1e4aa22fc1a1 385
Digixx 0:1e4aa22fc1a1 386 }
Digixx 0:1e4aa22fc1a1 387
Digixx 0:1e4aa22fc1a1 388 int ADXL345::setTapAxisControl(char settings) {
Digixx 0:1e4aa22fc1a1 389 return SingleByteWrite(ADXL345_TAP_AXES_REG, settings);
Digixx 0:1e4aa22fc1a1 390
Digixx 0:1e4aa22fc1a1 391 }
Digixx 0:1e4aa22fc1a1 392
Digixx 0:1e4aa22fc1a1 393 char ADXL345::getTapSource(void) {
Digixx 0:1e4aa22fc1a1 394
Digixx 0:1e4aa22fc1a1 395 return SingleByteRead(ADXL345_ACT_TAP_STATUS_REG);
Digixx 0:1e4aa22fc1a1 396
Digixx 0:1e4aa22fc1a1 397 }
Digixx 0:1e4aa22fc1a1 398
Digixx 0:1e4aa22fc1a1 399
Digixx 0:1e4aa22fc1a1 400
Digixx 0:1e4aa22fc1a1 401 char ADXL345::getInterruptEnableControl(void) {
Digixx 0:1e4aa22fc1a1 402
Digixx 0:1e4aa22fc1a1 403 return SingleByteRead(ADXL345_INT_ENABLE_REG);
Digixx 0:1e4aa22fc1a1 404
Digixx 0:1e4aa22fc1a1 405 }
Digixx 0:1e4aa22fc1a1 406
Digixx 0:1e4aa22fc1a1 407 int ADXL345::setInterruptEnableControl(char settings) {
Digixx 0:1e4aa22fc1a1 408 return SingleByteWrite(ADXL345_INT_ENABLE_REG, settings);
Digixx 0:1e4aa22fc1a1 409
Digixx 0:1e4aa22fc1a1 410 }
Digixx 0:1e4aa22fc1a1 411
Digixx 0:1e4aa22fc1a1 412 char ADXL345::getInterruptMappingControl(void) {
Digixx 0:1e4aa22fc1a1 413
Digixx 0:1e4aa22fc1a1 414 return SingleByteRead(ADXL345_INT_MAP_REG);
Digixx 0:1e4aa22fc1a1 415
Digixx 0:1e4aa22fc1a1 416 }
Digixx 0:1e4aa22fc1a1 417
Digixx 0:1e4aa22fc1a1 418 int ADXL345::setInterruptMappingControl(char settings) {
Digixx 0:1e4aa22fc1a1 419 return SingleByteWrite(ADXL345_INT_MAP_REG, settings);
Digixx 0:1e4aa22fc1a1 420
Digixx 0:1e4aa22fc1a1 421 }
Digixx 0:1e4aa22fc1a1 422
Digixx 0:1e4aa22fc1a1 423 char ADXL345::getInterruptSource(void){
Digixx 0:1e4aa22fc1a1 424
Digixx 0:1e4aa22fc1a1 425 return SingleByteRead(ADXL345_INT_SOURCE_REG);
Digixx 0:1e4aa22fc1a1 426
Digixx 0:1e4aa22fc1a1 427 }
Digixx 0:1e4aa22fc1a1 428
Digixx 0:1e4aa22fc1a1 429
Digixx 0:1e4aa22fc1a1 430
Digixx 0:1e4aa22fc1a1 431