cancel
Showing results for 
Search instead for 
Did you mean: 

LSM303D Interrupt

timmycninja
Associate II
Posted on December 01, 2016 at 12:40

I am having trouble getting the click interrupts to work for the LSM303D. using the library provided by Pololu for arduino I can get this code working for the DLHC

[code]

#include <Wire.h>

#include <LSM303.h>

long thisLong = 0;

LSM303 compass;

const byte interruptPin = 2;

void setup()

{

  Serial.begin(9600);

  Wire.begin();

  compass.init();

  compass.enableDefault();  

  compass.writeAccReg(LSM303::CTRL3,     0b11000000);

  compass.writeAccReg(LSM303::CTRL0,     0b00000000);

  compass.writeAccReg(LSM303::CLICK_CFG, 0b00010000);

  compass.writeAccReg(LSM303::CLICK_THS, 0b00011111);

  compass.writeAccReg(LSM303::TIME_LIMIT, 0b00011111);

  delay(100);

  attachInterrupt(digitalPinToInterrupt(interruptPin), reset, CHANGE);

}

void loop()

{

  Serial.print(thisLong);

  Serial.println('''');

  thisLong++;

  delay(100);

}

void reset() {

  thisLong = 0;

}

[/code]

But when I try it on the LSM303D it doesn't seem to generate the interrupt. I can read the CLICK_SRC register and the interrupt shows active, but the INT1 pin never goes from low to high. Anyone work with these at all?
2 REPLIES 2
timmycninja
Associate II
Posted on February 09, 2017 at 01:19

Seriously no one has had issues like this?

Miroslav BATEK
ST Employee
Posted on February 09, 2017 at 10:20

Unfortunately the complete configuration of the sensor is not visible from you code (for example used ODR?).

Anyway your configuration for click detection seems to me quite strict, and it is difficult to trigger the interrupt.

You can try following configuration (ODR=25Hz):

0690X00000606DVQAY.png