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.
Dependencies: X_NUCLEO_IKS01A2 mbed
Fork of AccpiuGiroscopio_timer by
Revision 6:7a7f36ab6c20, committed 2016-11-23
- Comitter:
- cparata
- Date:
- Wed Nov 23 16:45:36 2016 +0000
- Parent:
- 5:61e1b61c7e7d
- Child:
- 7:12afd7461180
- Commit message:
- Move interrupt settings inside component drivers
Changed in this revision
--- a/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.cpp Wed Nov 23 15:53:51 2016 +0000
+++ b/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.cpp Wed Nov 23 16:45:36 2016 +0000
@@ -51,7 +51,7 @@
* @param i2c object of an helper class which handles the I2C peripheral
* @param address the address of the component's instance
*/
-LSM6DSLSensor::LSM6DSLSensor(DevI2C &i2c) : dev_i2c(i2c)
+LSM6DSLSensor::LSM6DSLSensor(DevI2C &i2c, PinName INT1_pin, PinName INT2_pin) : dev_i2c(i2c), INT1_irq(INT1_pin), INT2_irq(INT2_pin)
{
address = LSM6DSL_ACC_GYRO_I2C_ADDRESS_HIGH;
};
@@ -60,7 +60,7 @@
* @param i2c object of an helper class which handles the I2C peripheral
* @param address the address of the component's instance
*/
-LSM6DSLSensor::LSM6DSLSensor(DevI2C &i2c, uint8_t address) : dev_i2c(i2c), address(address)
+LSM6DSLSensor::LSM6DSLSensor(DevI2C &i2c, PinName INT1_pin, PinName INT2_pin, uint8_t address) : dev_i2c(i2c), INT1_irq(INT1_pin), INT2_irq(INT2_pin), address(address)
{
};
--- a/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.h Wed Nov 23 15:53:51 2016 +0000
+++ b/X_NUCLEO_IKS01A2/Components/LSM6DSLSensor/LSM6DSLSensor.h Wed Nov 23 16:45:36 2016 +0000
@@ -119,8 +119,8 @@
class LSM6DSLSensor : public MotionSensor, public GyroSensor
{
public:
- LSM6DSLSensor(DevI2C &i2c);
- LSM6DSLSensor(DevI2C &i2c, uint8_t address);
+ LSM6DSLSensor(DevI2C &i2c, PinName INT1_pin, PinName INT2_pin);
+ LSM6DSLSensor(DevI2C &i2c, PinName INT1_pin, PinName INT2_pin, uint8_t address);
virtual int Init(void *init);
virtual int ReadID(uint8_t *id);
virtual int Get_X_Axes(int32_t *pData);
@@ -175,6 +175,66 @@
int WriteReg(uint8_t reg, uint8_t data);
/**
+ * @brief Attaching an interrupt handler to the INT1 interrupt.
+ * @param fptr An interrupt handler.
+ * @retval None.
+ */
+ void AttachINT1IRQ(void (*fptr)(void))
+ {
+ INT1_irq.rise(fptr);
+ }
+
+ /**
+ * @brief Enabling the INT1 interrupt handling.
+ * @param None.
+ * @retval None.
+ */
+ void EnableINT1IRQ(void)
+ {
+ INT1_irq.enable_irq();
+ }
+
+ /**
+ * @brief Disabling the INT1 interrupt handling.
+ * @param None.
+ * @retval None.
+ */
+ void DisableINT1IRQ(void)
+ {
+ INT1_irq.disable_irq();
+ }
+
+ /**
+ * @brief Attaching an interrupt handler to the INT2 interrupt.
+ * @param fptr An interrupt handler.
+ * @retval None.
+ */
+ void AttachINT2IRQ(void (*fptr)(void))
+ {
+ INT2_irq.rise(fptr);
+ }
+
+ /**
+ * @brief Enabling the INT2 interrupt handling.
+ * @param None.
+ * @retval None.
+ */
+ void EnableINT2IRQ(void)
+ {
+ INT2_irq.enable_irq();
+ }
+
+ /**
+ * @brief Disabling the INT2 interrupt handling.
+ * @param None.
+ * @retval None.
+ */
+ void DisableINT2IRQ(void)
+ {
+ INT2_irq.disable_irq();
+ }
+
+ /**
* @brief Utility function to read data.
* @param pBuffer: pointer to data to be read.
* @param RegisterAddr: specifies internal address register to be read.
@@ -206,7 +266,10 @@
/* Helper classes. */
DevI2C &dev_i2c;
-
+
+ InterruptIn INT1_irq;
+ InterruptIn INT2_irq;
+
/* Configuration */
uint8_t address;
--- a/X_NUCLEO_IKS01A2/x_nucleo_iks01a2.cpp Wed Nov 23 15:53:51 2016 +0000
+++ b/X_NUCLEO_IKS01A2/x_nucleo_iks01a2.cpp Wed Nov 23 16:45:36 2016 +0000
@@ -52,7 +52,7 @@
magnetometer(new LSM303AGR_MAG_Sensor(*dev_i2c)),
accelerometer(new LSM303AGR_ACC_Sensor(*dev_i2c)),
pt_sensor(new LPS22HBSensor(*dev_i2c)),
- acc_gyro(new LSM6DSLSensor(*dev_i2c))
+ acc_gyro(new LSM6DSLSensor(*dev_i2c, IKS01A2_PIN_LSM6DSL_INT1, IKS01A2_PIN_LSM6DSL_INT2))
{
ht_sensor->Init(NULL);
magnetometer->Init(NULL);
