Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 2:ed14e6196255, committed 2016-06-21
- Comitter:
- 5hel2l2y
- Date:
- Tue Jun 21 20:51:25 2016 +0000
- Parent:
- 1:924c7dea286e
- Commit message:
- Adding interrupt.
Changed in this revision
| LSM6DS3.cpp | Show annotated file Show diff for this revision Revisions of this file |
| LSM6DS3.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/LSM6DS3.cpp Mon Jun 20 19:15:31 2016 +0000
+++ b/LSM6DS3.cpp Tue Jun 21 20:51:25 2016 +0000
@@ -44,6 +44,9 @@
setAccelODR(aODR); // Set the accel data rate.
setAccelScale(aScale); // Set the accel range.
+ // Interrupt initialization stuff;
+ initIntr();
+
// Once everything is initialized, return the WHO_AM_I registers we read:
return xgTest;
}
@@ -74,6 +77,27 @@
i2c.write(xgAddress, cmd, 4);
}
+void LSM6DS3::initIntr()
+{
+ char cmd[2];
+
+ cmd[0] = TAP_CFG;
+ cmd[1] = 0x0E;
+ i2c.write(xgAddress, cmd, 2);
+ cmd[0] = TAP_THS_6D;
+ cmd[1] = 0x03;
+ i2c.write(xgAddress, cmd, 2);
+ cmd[0] = INT_DUR2;
+ cmd[1] = 0x7F;
+ i2c.write(xgAddress, cmd, 2);
+ cmd[0] = WAKE_UP_THS;
+ cmd[1] = 0x80;
+ i2c.write(xgAddress, cmd, 2);
+ cmd[0] = MD1_CFG;
+ cmd[1] = 0x48;
+ i2c.write(xgAddress, cmd, 2);
+}
+
void LSM6DS3::readAccel()
{
// The data we are going to read from the accel
@@ -112,6 +136,17 @@
az = az_raw * aRes;
}
+void LSM6DS3::readIntr()
+{
+ char data[1];
+ char subAddress = TAP_SRC;
+
+ i2c.write(xgAddress, &subAddress, 1, true);
+ i2c.read(xgAddress, data, 1);
+
+ intr = (float)data[0];
+}
+
void LSM6DS3::readTemp()
{
// The data we are going to read from the temp
--- a/LSM6DS3.h Mon Jun 20 19:15:31 2016 +0000
+++ b/LSM6DS3.h Tue Jun 21 20:51:25 2016 +0000
@@ -150,6 +150,8 @@
A_BW_105 = 0x6, // 105 Hz (0x6)
A_BW_50 = 0x7 // 50 Hz (0x7)
};
+
+
// We'll store the gyro, and accel, readings in a series of
// public class variables. Each sensor gets three variables -- one for each
@@ -164,6 +166,7 @@
float gx, gy, gz;
float ax, ay, az;
float temperature_c, temperature_f; // temperature in celcius and fahrenheit
+ float intr;
/** LSM6DS3 -- LSM6DS3 class constructor
@@ -217,6 +220,9 @@
*/
void readTemp();
+ /** Read Interrupt **/
+ void readIntr();
+
/** setGyroScale() -- Set the full-scale range of the gyroscope.
* This function can be called to set the scale of the gyroscope to
* 245, 500, or 2000 degrees per second.
@@ -281,6 +287,9 @@
*/
void initAccel();
+ /** Setup Interrupt **/
+ void initIntr();
+
/** calcgRes() -- Calculate the resolution of the gyroscope.
* This function will set the value of the gRes variable. gScale must
* be set prior to calling this function.