This is a simple device driver for the 3 axis accelerometer MMA8452 that works with mbed.
Dependents: MMA8452_test S05APP3_routeur
Revision 5:b3d0abd97e55, committed 2013-10-16
- Comitter:
- nherriot
- Date:
- Wed Oct 16 18:55:16 2013 +0000
- Parent:
- 4:27aa3cd43234
- Child:
- 6:8aa5123d403f
- Commit message:
- adding method for getting control reg 1.;
Changed in this revision
MMA8452.cpp | Show annotated file Show diff for this revision Revisions of this file |
MMA8452.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/MMA8452.cpp Wed Oct 16 16:26:26 2013 +0000 +++ b/MMA8452.cpp Wed Oct 16 18:55:16 2013 +0000 @@ -57,6 +57,39 @@ } +// Get 'Fast Read Mode' called F_READ. If bit 1 is set '1' then F_READ is active. Fast read will skip LSB when reading xyz +// resisters from 0x01 to 0x06. When F_READ is '0' then all 6 registers will be read. + +int Accelerometer_MMA8452::get_CTRL_Reg1(int& CTRL_Reg) +{ +{ + char mcu_address = (MMA8452_ADDRESS<<1); + m_i2c.start(); + if( m_i2c.write( mcu_address & 0xFE) == 0) // just good practice to force bit 1 to a '0' by ANDing with 0xFE + { + return 1; // we failed to write the mcu address on the bus to initiate dialogue + } + if( m_i2c.write( CTRL_REG_1) == 0) + { + return 1; // we failed to write 'status' to the chip + } + m_i2c.start(); + if( m_i2c.write( mcu_address | 0x01) == 0) // this is asking to read the slave mcu address - even though it's a 'write' method!!! Crap API... + { + return 1; // we failed to request a read from that mcu - this really is just writing the mcu vaule on the bus + } + CTRL_Reg = m_i2c.read(0); + m_i2c.stop(); + return 0; + + +} + + + + +} + // Setting the control register bit 1 to true to activate the MMA8452 int Accelerometer_MMA8452::standby() {
--- a/MMA8452.h Wed Oct 16 16:26:26 2013 +0000 +++ b/MMA8452.h Wed Oct 16 18:55:16 2013 +0000 @@ -187,6 +187,16 @@ int standby(); + /** get_CTRL_Reg1 the MMA8452 (not required) + * returns 0 for success in activating the chip + * returns 1 for failure in activating the chip + * -currrently no retries or waiting is done, this method tries 1 time the exits. + * + * This will return the state of the control register 1. This holds and sets values for auto wake, sleep mode + * output data rate, fast read mode and active/standby. More info on 6.7 of pdf for MMA8452 Freescale doc. + */ + int get_CTRL_Reg1(int& CTRL_Reg); + /** Initialization of device MMA8452 (required) */