Example to show how to read various sensors with STM32 Nucleo board

Dependencies:   mbed

Committer:
joe_tijerina
Date:
Wed Aug 27 17:35:24 2014 +0000
Revision:
4:de41ec16d765
Parent:
3:6d8574d8c9c1
Added descriptions for each sensor

Who changed what in which revision?

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