Dependents:   ADXL345 TCPspittertobi ADXL345 RS485R_2 ... more

Committer:
nimbusgb
Date:
Wed Feb 02 07:01:39 2011 +0000
Revision:
1:92fa975dab32
Parent:
0:3957077e9775

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nimbusgb 0:3957077e9775 1 /**
nimbusgb 0:3957077e9775 2 * @author Jose R. Padron
nimbusgb 0:3957077e9775 3 *
nimbusgb 0:3957077e9775 4 * @section LICENSE
nimbusgb 0:3957077e9775 5 *
nimbusgb 0:3957077e9775 6 * Copyright (c) 2010 ARM Limited
nimbusgb 0:3957077e9775 7 *
nimbusgb 0:3957077e9775 8 * Permission is hereby granted, free of charge, to any person obtaining a copy
nimbusgb 0:3957077e9775 9 * of this software and associated documentation files (the "Software"), to deal
nimbusgb 0:3957077e9775 10 * in the Software without restriction, including without limitation the rights
nimbusgb 0:3957077e9775 11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
nimbusgb 0:3957077e9775 12 * copies of the Software, and to permit persons to whom the Software is
nimbusgb 0:3957077e9775 13 * furnished to do so, subject to the following conditions:
nimbusgb 0:3957077e9775 14 *
nimbusgb 0:3957077e9775 15 * The above copyright notice and this permission notice shall be included in
nimbusgb 0:3957077e9775 16 * all copies or substantial portions of the Software.
nimbusgb 0:3957077e9775 17 *
nimbusgb 0:3957077e9775 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
nimbusgb 0:3957077e9775 19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
nimbusgb 0:3957077e9775 20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
nimbusgb 0:3957077e9775 21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
nimbusgb 0:3957077e9775 22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
nimbusgb 0:3957077e9775 23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
nimbusgb 0:3957077e9775 24 * THE SOFTWARE.
nimbusgb 0:3957077e9775 25 *
nimbusgb 0:3957077e9775 26 * @section DESCRIPTION
nimbusgb 0:3957077e9775 27 *
nimbusgb 0:3957077e9775 28 * ADXL345, triple axis, digital interface, accelerometer.
nimbusgb 0:3957077e9775 29 *
nimbusgb 0:3957077e9775 30 * Datasheet:
nimbusgb 0:3957077e9775 31 *
nimbusgb 0:3957077e9775 32 * http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
nimbusgb 0:3957077e9775 33 */
nimbusgb 0:3957077e9775 34
nimbusgb 0:3957077e9775 35 /**
nimbusgb 0:3957077e9775 36 * Includes
nimbusgb 0:3957077e9775 37 */
nimbusgb 0:3957077e9775 38 #include "ADXL345_I2C.h"
nimbusgb 0:3957077e9775 39
nimbusgb 0:3957077e9775 40 ADXL345_I2C::ADXL345_I2C(PinName sda,
nimbusgb 0:3957077e9775 41 PinName scl) : i2c_(sda,scl) {
nimbusgb 0:3957077e9775 42
nimbusgb 0:3957077e9775 43
nimbusgb 0:3957077e9775 44 //100KHz, as specified by the datasheet.
nimbusgb 0:3957077e9775 45 i2c_.frequency(100000);
nimbusgb 0:3957077e9775 46 wait_us(500);
nimbusgb 0:3957077e9775 47
nimbusgb 0:3957077e9775 48 }
nimbusgb 0:3957077e9775 49
nimbusgb 0:3957077e9775 50 char ADXL345_I2C::getDevId(void) {
nimbusgb 0:3957077e9775 51
nimbusgb 0:3957077e9775 52 return oneByteRead(ADXL345_DEVID_REG);
nimbusgb 0:3957077e9775 53
nimbusgb 0:3957077e9775 54 }
nimbusgb 0:3957077e9775 55
nimbusgb 0:3957077e9775 56 int ADXL345_I2C::getTapThreshold(void) {
nimbusgb 0:3957077e9775 57
nimbusgb 0:3957077e9775 58 return oneByteRead(ADXL345_THRESH_TAP_REG);
nimbusgb 0:3957077e9775 59
nimbusgb 0:3957077e9775 60 }
nimbusgb 0:3957077e9775 61
nimbusgb 0:3957077e9775 62 void ADXL345_I2C::setTapThreshold(int threshold) {
nimbusgb 0:3957077e9775 63
nimbusgb 0:3957077e9775 64 oneByteWrite(ADXL345_THRESH_TAP_REG, threshold);
nimbusgb 0:3957077e9775 65
nimbusgb 0:3957077e9775 66 }
nimbusgb 0:3957077e9775 67
nimbusgb 0:3957077e9775 68 int ADXL345_I2C::getOffset(int axis) {
nimbusgb 0:3957077e9775 69
nimbusgb 0:3957077e9775 70 int address = 0;
nimbusgb 0:3957077e9775 71
nimbusgb 0:3957077e9775 72 if (axis == ADXL345_X) {
nimbusgb 0:3957077e9775 73 address = ADXL345_OFSX_REG;
nimbusgb 0:3957077e9775 74 } else if (axis == ADXL345_Y) {
nimbusgb 0:3957077e9775 75 address = ADXL345_OFSY_REG;
nimbusgb 0:3957077e9775 76 } else if (axis == ADXL345_Z) {
nimbusgb 0:3957077e9775 77 address = ADXL345_OFSZ_REG;
nimbusgb 0:3957077e9775 78 }
nimbusgb 0:3957077e9775 79
nimbusgb 0:3957077e9775 80 return oneByteRead(address);
nimbusgb 0:3957077e9775 81
nimbusgb 0:3957077e9775 82 }
nimbusgb 0:3957077e9775 83
nimbusgb 0:3957077e9775 84 void ADXL345_I2C::setOffset(int axis, char offset) {
nimbusgb 0:3957077e9775 85
nimbusgb 0:3957077e9775 86 char address = 0;
nimbusgb 0:3957077e9775 87
nimbusgb 0:3957077e9775 88 if (axis == ADXL345_X) {
nimbusgb 0:3957077e9775 89 address = ADXL345_OFSX_REG;
nimbusgb 0:3957077e9775 90 } else if (axis == ADXL345_Y) {
nimbusgb 0:3957077e9775 91 address = ADXL345_OFSY_REG;
nimbusgb 0:3957077e9775 92 } else if (axis == ADXL345_Z) {
nimbusgb 0:3957077e9775 93 address = ADXL345_OFSZ_REG;
nimbusgb 0:3957077e9775 94 }
nimbusgb 0:3957077e9775 95
nimbusgb 0:3957077e9775 96 return oneByteWrite(address, offset);
nimbusgb 0:3957077e9775 97
nimbusgb 0:3957077e9775 98 }
nimbusgb 0:3957077e9775 99
nimbusgb 0:3957077e9775 100 int ADXL345_I2C::getTapDuration(void) {
nimbusgb 0:3957077e9775 101
nimbusgb 0:3957077e9775 102 return oneByteRead(ADXL345_DUR_REG)*625;
nimbusgb 0:3957077e9775 103
nimbusgb 0:3957077e9775 104 }
nimbusgb 0:3957077e9775 105
nimbusgb 0:3957077e9775 106 void ADXL345_I2C::setTapDuration(int duration_us) {
nimbusgb 0:3957077e9775 107
nimbusgb 0:3957077e9775 108 int tapDuration = duration_us / 625;
nimbusgb 0:3957077e9775 109
nimbusgb 0:3957077e9775 110 oneByteWrite(ADXL345_DUR_REG, tapDuration);
nimbusgb 0:3957077e9775 111
nimbusgb 0:3957077e9775 112 }
nimbusgb 0:3957077e9775 113
nimbusgb 0:3957077e9775 114 float ADXL345_I2C::getTapLatency(void) {
nimbusgb 0:3957077e9775 115
nimbusgb 0:3957077e9775 116 return oneByteRead(ADXL345_LATENT_REG)*1.25;
nimbusgb 0:3957077e9775 117
nimbusgb 0:3957077e9775 118 }
nimbusgb 0:3957077e9775 119
nimbusgb 0:3957077e9775 120 void ADXL345_I2C::setTapLatency(int latency_ms) {
nimbusgb 0:3957077e9775 121
nimbusgb 0:3957077e9775 122 int tapLatency = latency_ms / 1.25;
nimbusgb 0:3957077e9775 123
nimbusgb 0:3957077e9775 124 oneByteWrite(ADXL345_LATENT_REG, tapLatency);
nimbusgb 0:3957077e9775 125
nimbusgb 0:3957077e9775 126 }
nimbusgb 0:3957077e9775 127
nimbusgb 0:3957077e9775 128 float ADXL345_I2C::getWindowTime(void) {
nimbusgb 0:3957077e9775 129
nimbusgb 0:3957077e9775 130 return oneByteRead(ADXL345_WINDOW_REG)*1.25;
nimbusgb 0:3957077e9775 131
nimbusgb 0:3957077e9775 132 }
nimbusgb 0:3957077e9775 133
nimbusgb 0:3957077e9775 134 void ADXL345_I2C::setWindowTime(int window_ms) {
nimbusgb 0:3957077e9775 135
nimbusgb 0:3957077e9775 136 int windowTime = window_ms / 1.25;
nimbusgb 0:3957077e9775 137
nimbusgb 0:3957077e9775 138 oneByteWrite(ADXL345_WINDOW_REG, windowTime);
nimbusgb 0:3957077e9775 139
nimbusgb 0:3957077e9775 140 }
nimbusgb 0:3957077e9775 141
nimbusgb 0:3957077e9775 142 int ADXL345_I2C::getActivityThreshold(void) {
nimbusgb 0:3957077e9775 143
nimbusgb 0:3957077e9775 144 return oneByteRead(ADXL345_THRESH_ACT_REG);
nimbusgb 0:3957077e9775 145
nimbusgb 0:3957077e9775 146 }
nimbusgb 0:3957077e9775 147
nimbusgb 0:3957077e9775 148 void ADXL345_I2C::setActivityThreshold(int threshold) {
nimbusgb 0:3957077e9775 149
nimbusgb 0:3957077e9775 150 oneByteWrite(ADXL345_THRESH_ACT_REG, threshold);
nimbusgb 0:3957077e9775 151
nimbusgb 0:3957077e9775 152 }
nimbusgb 0:3957077e9775 153
nimbusgb 0:3957077e9775 154 int ADXL345_I2C::getInactivityThreshold(void) {
nimbusgb 0:3957077e9775 155
nimbusgb 0:3957077e9775 156 return oneByteRead(ADXL345_THRESH_INACT_REG);
nimbusgb 0:3957077e9775 157
nimbusgb 0:3957077e9775 158 }
nimbusgb 0:3957077e9775 159
nimbusgb 0:3957077e9775 160 void ADXL345_I2C::setInactivityThreshold(int threshold) {
nimbusgb 0:3957077e9775 161
nimbusgb 0:3957077e9775 162 return oneByteWrite(ADXL345_THRESH_INACT_REG, threshold);
nimbusgb 0:3957077e9775 163
nimbusgb 0:3957077e9775 164 }
nimbusgb 0:3957077e9775 165
nimbusgb 0:3957077e9775 166 int ADXL345_I2C::getTimeInactivity(void) {
nimbusgb 0:3957077e9775 167
nimbusgb 0:3957077e9775 168 return oneByteRead(ADXL345_TIME_INACT_REG);
nimbusgb 0:3957077e9775 169
nimbusgb 0:3957077e9775 170 }
nimbusgb 0:3957077e9775 171
nimbusgb 0:3957077e9775 172 void ADXL345_I2C::setTimeInactivity(int timeInactivity) {
nimbusgb 0:3957077e9775 173
nimbusgb 0:3957077e9775 174 oneByteWrite(ADXL345_TIME_INACT_REG, timeInactivity);
nimbusgb 0:3957077e9775 175
nimbusgb 0:3957077e9775 176 }
nimbusgb 0:3957077e9775 177
nimbusgb 0:3957077e9775 178 int ADXL345_I2C::getActivityInactivityControl(void) {
nimbusgb 0:3957077e9775 179
nimbusgb 0:3957077e9775 180 return oneByteRead(ADXL345_ACT_INACT_CTL_REG);
nimbusgb 0:3957077e9775 181
nimbusgb 0:3957077e9775 182 }
nimbusgb 0:3957077e9775 183
nimbusgb 0:3957077e9775 184 void ADXL345_I2C::setActivityInactivityControl(int settings) {
nimbusgb 0:3957077e9775 185
nimbusgb 0:3957077e9775 186 oneByteWrite(ADXL345_ACT_INACT_CTL_REG, settings);
nimbusgb 0:3957077e9775 187
nimbusgb 0:3957077e9775 188 }
nimbusgb 0:3957077e9775 189
nimbusgb 0:3957077e9775 190 int ADXL345_I2C::getFreefallThreshold(void) {
nimbusgb 0:3957077e9775 191
nimbusgb 0:3957077e9775 192 return oneByteRead(ADXL345_THRESH_FF_REG);
nimbusgb 0:3957077e9775 193
nimbusgb 0:3957077e9775 194 }
nimbusgb 0:3957077e9775 195
nimbusgb 0:3957077e9775 196 void ADXL345_I2C::setFreefallThreshold(int threshold) {
nimbusgb 0:3957077e9775 197
nimbusgb 0:3957077e9775 198 oneByteWrite(ADXL345_THRESH_FF_REG, threshold);
nimbusgb 0:3957077e9775 199
nimbusgb 0:3957077e9775 200 }
nimbusgb 0:3957077e9775 201
nimbusgb 0:3957077e9775 202 int ADXL345_I2C::getFreefallTime(void) {
nimbusgb 0:3957077e9775 203
nimbusgb 0:3957077e9775 204 return oneByteRead(ADXL345_TIME_FF_REG)*5;
nimbusgb 0:3957077e9775 205
nimbusgb 0:3957077e9775 206 }
nimbusgb 0:3957077e9775 207
nimbusgb 0:3957077e9775 208 void ADXL345_I2C::setFreefallTime(int freefallTime_ms) {
nimbusgb 0:3957077e9775 209
nimbusgb 0:3957077e9775 210 int freefallTime = freefallTime_ms / 5;
nimbusgb 0:3957077e9775 211
nimbusgb 0:3957077e9775 212 oneByteWrite(ADXL345_TIME_FF_REG, freefallTime);
nimbusgb 0:3957077e9775 213
nimbusgb 0:3957077e9775 214 }
nimbusgb 0:3957077e9775 215
nimbusgb 0:3957077e9775 216 int ADXL345_I2C::getTapAxisControl(void) {
nimbusgb 0:3957077e9775 217
nimbusgb 0:3957077e9775 218 return oneByteRead(ADXL345_TAP_AXES_REG);
nimbusgb 0:3957077e9775 219
nimbusgb 0:3957077e9775 220 }
nimbusgb 0:3957077e9775 221
nimbusgb 0:3957077e9775 222 void ADXL345_I2C::setTapAxisControl(int settings) {
nimbusgb 0:3957077e9775 223
nimbusgb 0:3957077e9775 224 oneByteWrite(ADXL345_TAP_AXES_REG, settings);
nimbusgb 0:3957077e9775 225
nimbusgb 0:3957077e9775 226 }
nimbusgb 0:3957077e9775 227
nimbusgb 0:3957077e9775 228 int ADXL345_I2C::getTapSource(void) {
nimbusgb 0:3957077e9775 229
nimbusgb 0:3957077e9775 230 return oneByteRead(ADXL345_ACT_TAP_STATUS_REG);
nimbusgb 0:3957077e9775 231
nimbusgb 0:3957077e9775 232 }
nimbusgb 0:3957077e9775 233
nimbusgb 0:3957077e9775 234 void ADXL345_I2C::setPowerMode(char mode) {
nimbusgb 0:3957077e9775 235
nimbusgb 0:3957077e9775 236 //Get the current register contents, so we don't clobber the rate value.
nimbusgb 0:3957077e9775 237 char registerContents = oneByteRead(ADXL345_BW_RATE_REG);
nimbusgb 0:3957077e9775 238
nimbusgb 0:3957077e9775 239 registerContents = (mode << 4) | registerContents;
nimbusgb 0:3957077e9775 240
nimbusgb 0:3957077e9775 241 oneByteWrite(ADXL345_BW_RATE_REG, registerContents);
nimbusgb 0:3957077e9775 242
nimbusgb 0:3957077e9775 243 }
nimbusgb 0:3957077e9775 244
nimbusgb 0:3957077e9775 245 int ADXL345_I2C::getPowerControl(void) {
nimbusgb 0:3957077e9775 246
nimbusgb 0:3957077e9775 247 return oneByteRead(ADXL345_POWER_CTL_REG);
nimbusgb 0:3957077e9775 248
nimbusgb 0:3957077e9775 249 }
nimbusgb 0:3957077e9775 250
nimbusgb 0:3957077e9775 251 void ADXL345_I2C::setPowerControl(int settings) {
nimbusgb 0:3957077e9775 252
nimbusgb 0:3957077e9775 253 oneByteWrite(ADXL345_POWER_CTL_REG, settings);
nimbusgb 0:3957077e9775 254
nimbusgb 0:3957077e9775 255 }
nimbusgb 0:3957077e9775 256
nimbusgb 0:3957077e9775 257 int ADXL345_I2C::getInterruptEnableControl(void) {
nimbusgb 0:3957077e9775 258
nimbusgb 0:3957077e9775 259 return oneByteRead(ADXL345_INT_ENABLE_REG);
nimbusgb 0:3957077e9775 260
nimbusgb 0:3957077e9775 261 }
nimbusgb 0:3957077e9775 262
nimbusgb 0:3957077e9775 263 void ADXL345_I2C::setInterruptEnableControl(int settings) {
nimbusgb 0:3957077e9775 264
nimbusgb 0:3957077e9775 265 oneByteWrite(ADXL345_INT_ENABLE_REG, settings);
nimbusgb 0:3957077e9775 266
nimbusgb 0:3957077e9775 267 }
nimbusgb 0:3957077e9775 268
nimbusgb 0:3957077e9775 269 int ADXL345_I2C::getInterruptMappingControl(void) {
nimbusgb 0:3957077e9775 270
nimbusgb 0:3957077e9775 271 return oneByteRead(ADXL345_INT_MAP_REG);
nimbusgb 0:3957077e9775 272
nimbusgb 0:3957077e9775 273 }
nimbusgb 0:3957077e9775 274
nimbusgb 0:3957077e9775 275 void ADXL345_I2C::setInterruptMappingControl(int settings) {
nimbusgb 0:3957077e9775 276
nimbusgb 0:3957077e9775 277 oneByteWrite(ADXL345_INT_MAP_REG, settings);
nimbusgb 0:3957077e9775 278
nimbusgb 0:3957077e9775 279 }
nimbusgb 0:3957077e9775 280
nimbusgb 0:3957077e9775 281 int ADXL345_I2C::getInterruptSource(void){
nimbusgb 0:3957077e9775 282
nimbusgb 0:3957077e9775 283 return oneByteRead(ADXL345_INT_SOURCE_REG);
nimbusgb 0:3957077e9775 284
nimbusgb 0:3957077e9775 285 }
nimbusgb 0:3957077e9775 286
nimbusgb 0:3957077e9775 287 int ADXL345_I2C::getDataFormatControl(void){
nimbusgb 0:3957077e9775 288
nimbusgb 0:3957077e9775 289 return oneByteRead(ADXL345_DATA_FORMAT_REG);
nimbusgb 0:3957077e9775 290
nimbusgb 0:3957077e9775 291 }
nimbusgb 0:3957077e9775 292
nimbusgb 0:3957077e9775 293 void ADXL345_I2C::setDataFormatControl(int settings){
nimbusgb 0:3957077e9775 294
nimbusgb 0:3957077e9775 295 oneByteWrite(ADXL345_DATA_FORMAT_REG, settings);
nimbusgb 0:3957077e9775 296
nimbusgb 0:3957077e9775 297 }
nimbusgb 0:3957077e9775 298
nimbusgb 0:3957077e9775 299 void ADXL345_I2C::setDataRate(int rate) {
nimbusgb 0:3957077e9775 300
nimbusgb 0:3957077e9775 301 //Get the current register contents, so we don't clobber the power bit.
nimbusgb 0:3957077e9775 302 char registerContents = oneByteRead(ADXL345_BW_RATE_REG);
nimbusgb 0:3957077e9775 303
nimbusgb 0:3957077e9775 304 registerContents &= 0x10;
nimbusgb 0:3957077e9775 305 registerContents |= rate;
nimbusgb 0:3957077e9775 306
nimbusgb 0:3957077e9775 307 oneByteWrite(ADXL345_BW_RATE_REG, registerContents);
nimbusgb 0:3957077e9775 308
nimbusgb 0:3957077e9775 309 }
nimbusgb 0:3957077e9775 310
nimbusgb 0:3957077e9775 311 int ADXL345_I2C::getAx(){
nimbusgb 0:3957077e9775 312
nimbusgb 0:3957077e9775 313 char buffer[2];
nimbusgb 0:3957077e9775 314
nimbusgb 0:3957077e9775 315 TwoByteRead(ADXL345_DATAX0_REG, buffer);
nimbusgb 0:3957077e9775 316
nimbusgb 0:3957077e9775 317 return ((int)buffer[1] << 8 | (int)buffer[0]);
nimbusgb 0:3957077e9775 318 }
nimbusgb 0:3957077e9775 319
nimbusgb 0:3957077e9775 320
nimbusgb 0:3957077e9775 321 int ADXL345_I2C::getAy(){
nimbusgb 0:3957077e9775 322
nimbusgb 0:3957077e9775 323 char buffer[2];
nimbusgb 0:3957077e9775 324
nimbusgb 0:3957077e9775 325 TwoByteRead(ADXL345_DATAY0_REG, buffer);
nimbusgb 0:3957077e9775 326
nimbusgb 0:3957077e9775 327 return ((int)buffer[1] << 8 | (int)buffer[0]);
nimbusgb 0:3957077e9775 328 }
nimbusgb 0:3957077e9775 329
nimbusgb 0:3957077e9775 330 int ADXL345_I2C::getAz(){
nimbusgb 0:3957077e9775 331
nimbusgb 0:3957077e9775 332 char buffer[2];
nimbusgb 0:3957077e9775 333
nimbusgb 0:3957077e9775 334 TwoByteRead(ADXL345_DATAZ0_REG, buffer);
nimbusgb 0:3957077e9775 335
nimbusgb 0:3957077e9775 336 return ((int)buffer[1] << 8 | (int)buffer[0]);
nimbusgb 0:3957077e9775 337 }
nimbusgb 0:3957077e9775 338
nimbusgb 0:3957077e9775 339
nimbusgb 0:3957077e9775 340
nimbusgb 0:3957077e9775 341 void ADXL345_I2C::getOutput(int* readings){
nimbusgb 0:3957077e9775 342
nimbusgb 0:3957077e9775 343 char buffer[2];
nimbusgb 0:3957077e9775 344
nimbusgb 0:3957077e9775 345 TwoByteRead(ADXL345_DATAX0_REG, buffer);
nimbusgb 0:3957077e9775 346 readings[0] = (int)buffer[1] << 8 | (int)buffer[0];
nimbusgb 0:3957077e9775 347 TwoByteRead(ADXL345_DATAY0_REG, buffer);
nimbusgb 0:3957077e9775 348 readings[1] = (int)buffer[1] << 8 | (int)buffer[0];
nimbusgb 0:3957077e9775 349 TwoByteRead(ADXL345_DATAZ0_REG, buffer);
nimbusgb 0:3957077e9775 350 readings[2] = (int)buffer[1] << 8 | (int)buffer[0];
nimbusgb 0:3957077e9775 351
nimbusgb 0:3957077e9775 352 }
nimbusgb 0:3957077e9775 353
nimbusgb 0:3957077e9775 354 int ADXL345_I2C::getFifoControl(void){
nimbusgb 0:3957077e9775 355
nimbusgb 0:3957077e9775 356 return oneByteRead(ADXL345_FIFO_CTL);
nimbusgb 0:3957077e9775 357
nimbusgb 0:3957077e9775 358 }
nimbusgb 0:3957077e9775 359
nimbusgb 0:3957077e9775 360 void ADXL345_I2C::setFifoControl(int settings){
nimbusgb 0:3957077e9775 361
nimbusgb 0:3957077e9775 362 oneByteWrite(ADXL345_FIFO_STATUS, settings);
nimbusgb 0:3957077e9775 363
nimbusgb 0:3957077e9775 364 }
nimbusgb 0:3957077e9775 365
nimbusgb 0:3957077e9775 366 int ADXL345_I2C::getFifoStatus(void){
nimbusgb 0:3957077e9775 367
nimbusgb 0:3957077e9775 368 return oneByteRead(ADXL345_FIFO_STATUS);
nimbusgb 0:3957077e9775 369
nimbusgb 0:3957077e9775 370 }
nimbusgb 0:3957077e9775 371
nimbusgb 0:3957077e9775 372 char ADXL345_I2C::oneByteRead(char address) {
nimbusgb 0:3957077e9775 373
nimbusgb 0:3957077e9775 374
nimbusgb 0:3957077e9775 375 char rx[1];
nimbusgb 0:3957077e9775 376 char tx[1];
nimbusgb 0:3957077e9775 377
nimbusgb 0:3957077e9775 378 // nCS_ = 1;
nimbusgb 0:3957077e9775 379 tx[0]=address;
nimbusgb 0:3957077e9775 380
nimbusgb 0:3957077e9775 381
nimbusgb 0:3957077e9775 382 i2c_.write(ADXL345_I2C_WRITE, tx,1);
nimbusgb 0:3957077e9775 383 i2c_.read(ADXL345_I2C_READ,rx,1);
nimbusgb 0:3957077e9775 384
nimbusgb 0:3957077e9775 385 //nCS_ = 0;
nimbusgb 0:3957077e9775 386 return rx[0];
nimbusgb 0:3957077e9775 387
nimbusgb 0:3957077e9775 388 }
nimbusgb 0:3957077e9775 389
nimbusgb 0:3957077e9775 390 void ADXL345_I2C::oneByteWrite(char address, char data) {
nimbusgb 0:3957077e9775 391 // nCS_ = 1;
nimbusgb 0:3957077e9775 392 char tx[2];
nimbusgb 0:3957077e9775 393
nimbusgb 0:3957077e9775 394 tx[0]=address;
nimbusgb 0:3957077e9775 395 tx[1]=data;
nimbusgb 0:3957077e9775 396
nimbusgb 0:3957077e9775 397 i2c_.write(ADXL345_I2C_WRITE,tx,2);
nimbusgb 0:3957077e9775 398
nimbusgb 0:3957077e9775 399 //nCS_ = 0;
nimbusgb 0:3957077e9775 400 }
nimbusgb 0:3957077e9775 401
nimbusgb 0:3957077e9775 402 void ADXL345_I2C::TwoByteRead(char startAddress, char* buffer) {
nimbusgb 0:3957077e9775 403
nimbusgb 0:3957077e9775 404
nimbusgb 0:3957077e9775 405 // nCS_ = 1;
nimbusgb 0:3957077e9775 406 //Send address to start reading from.
nimbusgb 0:3957077e9775 407 char tx[1];
nimbusgb 0:3957077e9775 408 tx[0]=startAddress;
nimbusgb 0:3957077e9775 409 i2c_.write(ADXL345_I2C_WRITE,tx,1);
nimbusgb 0:3957077e9775 410 i2c_.read(ADXL345_I2C_READ,buffer,2);
nimbusgb 0:3957077e9775 411
nimbusgb 0:3957077e9775 412 //nCS_ = 0;
nimbusgb 0:3957077e9775 413 }
nimbusgb 0:3957077e9775 414
nimbusgb 0:3957077e9775 415 void ADXL345_I2C::TwoByteWrite(char startAddress, char* buffer) {
nimbusgb 0:3957077e9775 416
nimbusgb 0:3957077e9775 417 //nCS_ = 1;
nimbusgb 0:3957077e9775 418 //Send address to start reading from.
nimbusgb 0:3957077e9775 419 char tx[1];
nimbusgb 0:3957077e9775 420 tx[0]=startAddress;
nimbusgb 0:3957077e9775 421 i2c_.write(ADXL345_I2C_WRITE,tx,1);
nimbusgb 0:3957077e9775 422 i2c_.write(ADXL345_I2C_WRITE,buffer,2);
nimbusgb 0:3957077e9775 423
nimbusgb 0:3957077e9775 424
nimbusgb 0:3957077e9775 425 //nCS_ = 0;
nimbusgb 0:3957077e9775 426
nimbusgb 0:3957077e9775 427 }