嗨,
我试图让lsm303c在INT_XL引脚上输出“低电平有效”中断。
这是我的初始代码:
void LSM303C_AccInit(void)
{
uint8_t result = 0;
ACCELERO_IO_Write(LSM303C_CTRL_REG1_A,0b00100101); //禁用y轴以避免mg
ACCELERO_IO_Write(LSM303C_CTRL_REG2_A,0b00000000);
ACCELERO_IO_Write(LSM303C_CTRL_REG3_A,0b00001000);
ACCELERO_IO_Write(LSM303C_CTRL_REG4_A,0b00000000);
ACCELERO_IO_Write(LSM303C_CTRL_REG5_A,0b00000011); //中断低电平有效,开漏
ACCELERO_IO_Write(LSM303C_FIFO_CTRL,0b01000000); //流模式
ACCELERO_IO_Write(LSM303C_IG_CFG1_A,0b11100010); // y中断禁用
ACCELERO_IO_Write(LSM303C_IG_THS_X1_A,5);
ACCELERO_IO_Write(LSM303C_IG_THS_Y1_A,5);
ACCELERO_IO_Write(LSM303C_IG_THS_Z1_A,5);
ACCELERO_IO_Write(LSM303C_IG_DUR1_A,0b10000001); //中断延迟
}
嵌入式控制器的引脚配置为弱上拉输入。
示波器显示出对加速的良好中断反应,但不是我配置的:没有中断时INT_XL为低电平,但一旦检测到加速度,信号就会变为高电平约40ms然后再次回到低电平状态。
我究竟做错了什么?
谢谢,
吉尔
以上来自于谷歌翻译
以下为原文
Hi,
I am trying to get lsm303c output an "ac
tive low" interrupt on pin INT_XL.
here is my init code:
void LSM303C_AccInit(void)
{
uint8_t result = 0;
ACCELERO_IO_Write(LSM303C_CTRL_REG1_A, 0b00100101); // disable y axis to avoid mg
ACCELERO_IO_Write(LSM303C_CTRL_REG2_A, 0b00000000);
ACCELERO_IO_Write(LSM303C_CTRL_REG3_A, 0b00001000);
ACCELERO_IO_Write(LSM303C_CTRL_REG4_A, 0b00000000);
ACCELERO_IO_Write(LSM303C_CTRL_REG5_A, 0b00000011); //interrupt active low, open-drain
ACCELERO_IO_Write(LSM303C_FIFO_CTRL, 0b01000000); //stream mode,
ACCELERO_IO_Write(LSM303C_IG_CFG1_A, 0b11100010); //y interrupt disabled
ACCELERO_IO_Write(LSM303C_IG_THS_X1_A, 5);
ACCELERO_IO_Write(LSM303C_IG_THS_Y1_A, 5);
ACCELERO_IO_Write(LSM303C_IG_THS_Z1_A, 5);
ACCELERO_IO_Write(LSM303C_IG_DUR1_A, 0b10000001); //interrupt delay
}
The embedded controller's pin is configured as input with weak pull up.
The oscilloscope shows a good interrupt reaction to acceleration, but not as i configured it: the INT_XL is low when no interrupt, but as soon as there is acceleration detected, the signal goes high for about 40ms and then goes back to low again forever.
What am i doing wrong?
Thanks,
Gil