DE_4.2.2 Project 1b 150208 *has errors I dont know how to fix
Fork of MMA8451Q8 by
Diff: MMA8451Q8.cpp
- Revision:
- 9:a9cba88ad7f6
- Parent:
- 8:993bb9e96a4b
- Child:
- 10:d250f3661e3a
--- a/MMA8451Q8.cpp Tue Feb 03 17:59:00 2015 +0000 +++ b/MMA8451Q8.cpp Wed Feb 04 06:50:25 2015 +0000 @@ -30,6 +30,17 @@ #define REG_PULSE_SRC 0x22 #define REG_PULSE_CFG 0x21 +// pulse threshold for x, y , & z Registers +#define PULSE_THSX 0x23 +#define PULSE_THSY 0x24 +#define PULSE_THSZ 0x25 + +// Pulse Time limit first pulse +#define PULSE_TMLT 0x26 + +// Latency time for 2nd pulse +#define PULSE_LTCY 0x27 + #define UINT14_MAX 16383 #define MAX_2G 0x00 @@ -71,17 +82,63 @@ // Also add function prototype to .h file void MMA8451Q::setPulseConfiguration(uint8_t latch,uint8_t axisSet) { uint8_t configBits; - uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode + uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode /// Q: is 0x00 saying switch off? +// set up configuration bits. + configBits = latch | axisSet; /// Q: what does the "|" do? + writeRegs(data, NUM_DATA); // put in standby /// Q: is it sending data[NUM_DATA] or two seperate vars? + data[ADDRESS_INDEX ] = REG_PULSE_CFG; /// is this a function after it is put into standby? + data[DATA_INDEX] = configBits; + writeRegs(data, NUM_DATA); /// Q: what is it doing here? standby again? + data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode // how is this back in active mode? + data[DATA_INDEX] = 0x01; + writeRegs(data, 2); // make active //Q: what is the 2 here? +} + + + +// added to .h file + void setPulseThreshold (uint8_t axisSelect, uint8_t threshold) { + uint8_t configBits; + uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode // set up configuration bits. - configBits = latch | axisSet; - writeRegs(data, NUM_DATA); // put in standby - data[ADDRESS_INDEX ] = REG_PULSE_CFG; - data[DATA_INDEX] = configBits; - writeRegs(data, NUM_DATA); - data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode - data[DATA_INDEX] = 0x01; - writeRegs(data, 2); // make active + configBits = axisSelect | threshold; + writeRegs(data, NUM_DATA); // put in standby + data[ADDRESS_INDEX ] = PULSE_THSZ; // Set it to Z axis Threshold + data[DATA_INDEX] = configBits; + writeRegs(data, NUM_DATA); + data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode + data[DATA_INDEX] = 0x01; + writeRegs(data, 2); // make active } + +void setPulseTimeLimit (uint8_t timeLimit){ + uint8_t configBits; + uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode +// set up configuration bits. + configBits = timeLimit; + writeRegs(data, NUM_DATA); // put in standby + data[ADDRESS_INDEX ] = PULSE_TMLT; // Set it to Pulse Time limit Register + data[DATA_INDEX] = configBits; + writeRegs(data, NUM_DATA); + data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode + data[DATA_INDEX] = 0x01; + writeRegs(data, 2); // make active +} + + void setPulseLatency (uint8_t latencyTime){ + uint8_t configBits; + uint8_t data[NUM_DATA] = {REG_CTRL_REG_1, 0x00}; // put in standby mode +// set up configuration bits. + configBits = latencyTime; + writeRegs(data, NUM_DATA); // put in standby + data[ADDRESS_INDEX ] = PULSE_LTCY; // Set it to Pulse Latency Register + data[DATA_INDEX] = configBits; + writeRegs(data, NUM_DATA); + data[ADDRESS_INDEX ] = REG_CTRL_REG_1; // put back in active mode + data[DATA_INDEX] = 0x01; + writeRegs(data, 2); // make active +} + float MMA8451Q::getAccX() { return (float(getAccAxis(REG_OUT_X_MSB))/gScaling[gChosen]); }