NOT FINISHED YET!!! My first try to get a self built fully working Quadrocopter based on an mbed, a self built frame and some other more or less cheap parts.

Dependencies:   mbed MODI2C

Committer:
maetugr
Date:
Wed Sep 26 12:15:00 2012 +0000
Revision:
0:0c4fafa398b4
Child:
1:5a64632b1eb9
Sensor Test; Acc, Gyro working, result on LCD (servo lib included)

Who changed what in which revision?

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