Remove Chip Select transitions. It affects other devices in the same bus.

Committer:
elrafapadron
Date:
Sun Nov 28 01:01:52 2010 +0000
Revision:
1:a948fcfd705e
Parent:
0:efba8208b490

        

Who changed what in which revision?

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