Hello Tomas,
I was sure I had tried that combination as I had gone through all 4 possibilities for those two bits but after taking your suggestions along with looking for a falling edge seems to have resolved this issue. Thank you for your help :smileyhappy: For others who may find this and wonder what my final setup for this was and how I did it in mbed I have included the setup code for both the FXAS21002 as well as for the interrupt on the FRDM-KL25Z
int fxas_init() {
int return_val = 0;
sensor_data[0] = i2c_read(FXAS_ADDRESS_W, FXAS_WHO_AM_I);
// pc.printf("Expected ID from FXAS21002C is 0xD7\n\r");
// pc.printf("Returned value: %X\n\n\r", sensor_data[0]);
if (sensor_data[0] == FXAS_ID){
return_val = 0;
return_val += i2c_write_verify(FXAS_ADDRESS_W, FXAS_CTRL_REG_1, 0x00);
return_val += i2c_write_verify(FXAS_ADDRESS_W, FXAS_F_SETUP, 0x00);
// return_val += i2c_write_verify(FXAS_ADDRESS_W, FXAS_F_SETUP, 0x54);
return_val += i2c_write_verify(FXAS_ADDRESS_W, FXAS_CTRL_REG_0, 0x03);
return_val += i2c_write_verify(FXAS_ADDRESS_W, FXAS_CTRL_REG_2, 0x0E);//AF
return_val += i2c_write_verify(FXAS_ADDRESS_W, FXAS_CTRL_REG_3, 0x08);//0x0C for INT2 to be used as sampling control or 0x08 for software control
return_val += i2c_write_verify(FXAS_ADDRESS_W, FXAS_CTRL_REG_1, 0x13);
}
else{
return_val = -1;
}
pc.printf("Returned value A: %d\n\n\r", return_val);
return return_val;
}
int main() {
int initialized = 0;
//Configure interrupts
fxas_int1_21002.rise(&read_fxas_data);
//initialize the FXOS8700CQ Accelorometer & the FXAS21002C Gyroscope
initialised = fxas_init() & fxos_init();
pc.printf("Returned value: %d\n\n\r", initialized);
if (initialized == 0){
led_2.write(0);
}
else{
led_1.write(0);
}
while(1) {