已回答假定已回答

ADXL345中断清除不稳定

tom_yin 在 2015-9-8 詢問的問題
最後回覆由neilzhao於2015-9-11提供

使用stm8l驱动adxl345做运动检测,设置运动中断使能,其他中断禁止,中断引脚映射为INT2,并使用此引脚触发stm8l的外部中断,ADXL345的初始化函数如下:

adxl345_write_reg(0X31,0X0B);  //低电平中断输出,13位全分辨率,输出数据右对齐,16g量程

adxl345_write_reg(0x2C,0x1A);  //数据输出速度为100Hz,低功耗模式

adxl345_write_reg(0x2D,0x08);   //链接使能,测量模式,省电特性

adxl345_write_reg(0X1E,0x00);   //X,Y,Z补偿值

adxl345_write_reg(0X1F,0x00);

adxl345_write_reg(0X20,0x05);

adxl345_write_reg(0X24,0x10);   //活动检测阈值为1.0g=62.5mg*16

adxl345_write_reg(0X27,0xF0);   //X、Y、Z轴检测运动,交流耦合

adxl345_write_reg(0X2F,0x10);   //运动中断引脚为INT2,其他中断引脚INT1

adxl345_write_reg(0X2E,0x10);  //使能运动中断

 

在stm8l的外部中断函数中通过读取ADXL345中断源寄存器的值清除中断标志

source = adxl345_read_reg(0x30); //读ADXL345中断源寄存器,清中断标志位

 

但在测试的过程中,INT2的引脚电平有时不能被拉低,通过mcu的调试工具查看,此种异常状态时,ADXL345中断源寄存器读到的数据为0x93,此值正常。

故不知此种异常现象的原因,请各位帮忙分析分析,谢谢

結果