初级会员

- 积分
- 90
- 金钱
- 90
- 注册时间
- 2016-6-30
- 在线时间
- 16 小时
|
发表于 2016-7-21 12:02:32
|
显示全部楼层
我也遇到了这个问题 自动休眠进不去
我先使能了活动检测中断,静止检测中断,电源工作在测量模式
Single_Write_ADXL345(THRESH_ACT,0x01); //活动阀值(xy)1000MG 62.5mg/L
Single_Write_ADXL345(THRESH_INACT,0x03); // 静止阀值(xyz?)(根据实际调整) 时阈
Single_Write_ADXL345(TIME_INACT,0x02); //时阈 5s
// Single_Write_ADXL345(DUR,0xF0); //敲击检测时阈
Single_Write_ADXL345(ACT_INACT_CTL,0xEE); //1110 1110 直(交)流耦合 活动检测使能xy 静止检测使能XY
Single_Write_ADXL345(INT_MAP,0x10); //中断引脚映射INT_MAP , 活动中断配置到INT2,静止中断到INT1
Single_Write_ADXL345(INT_ENABLE,0x18); //中断使能 INT_ENABLLE 0x18
然后在外部中断服务中设置 :
void exter0() interrupt 0 //检测到静止
{
beep=0;
delay(200);
beep=1;
delay(200);
Single_Read_ADXL345(ACT_TAP_STATUS);
Single_Read_ADXL345(INT_SOURCE);
Single_Write_ADXL345(POWER_CTL,0x00);
Single_Write_ADXL345(INT_ENABLE,0x00);
Single_Write_ADXL345(THRESH_ACT,0x01); //活动阀值(xy)1000MG 62.5mg/L
Single_Write_ADXL345(ACT_INACT_CTL,0xEE); //0110 0110 直(交)流耦合 活动检测使能xy 静止检测使能XY
Single_Write_ADXL345(INT_MAP,0x10); //中断引脚映射INT_MAP , 活动中断配置到INT2,静止中断到INT1
Single_Write_ADXL345(INT_ENABLE,0x10); //中断使能 INT_ENABLLE
Single_Write_ADXL345(POWER_CTL,0x0f); //电源设置 休眠使能 0x38 0x08 0x34
Single_Write_ADXL345(0x1E,0x00); //X 偏移量 根据测试传感器的状态写入pdf29页
Single_Write_ADXL345(0x1F,0x00); //Y 偏移量 根据测试传感器的状态写入pdf29页
Single_Write_ADXL345(0x20,0x05); //Z 偏移量 根据测试传感器的状态写入pdf29页
// stepshezhi();
}
void exter1() interrupt 2 //检测到活动
{
D=0;
delay(200);
D=1;
delay(200);
Single_Read_ADXL345(ACT_TAP_STATUS);
Single_Read_ADXL345(INT_SOURCE);
Single_Write_ADXL345(POWER_CTL,0x00);
Single_Write_ADXL345(INT_ENABLE,0x00);
Single_Write_ADXL345(THRESH_ACT,0x03); //修改 继续使能活动检测(2)
Single_Write_ADXL345(THRESH_INACT,0x03); // 静止阀值(xyz?)(根据实际调整) 时阈
Single_Write_ADXL345(TIME_INACT,0x02); //时阈 5s
// Single_Write_ADXL345(DUR,0xF0); //敲击检测时阈
Single_Write_ADXL345(ACT_INACT_CTL,0xEE); //0110 0110 直(交)流耦合 活动检测使能xy 静止检测使能XY
Single_Write_ADXL345(INT_MAP,0x10); //中断引脚映射INT_MAP , 活动中断配置到INT2,静止中断到INT1
Single_Write_ADXL345(INT_ENABLE,0x18); //中断使能 INT_ENABLLE (2)
// Single_Read_ADXL345(INT_SOURCE); //清零中断
Single_Write_ADXL345(POWER_CTL,0x08); //电源设置 测量模式 0x38 0x08 0x34
Single_Write_ADXL345(0x1E,0x00); //X 偏移量 根据测试传感器的状态写入pdf29页
Single_Write_ADXL345(0x1F,0x00); //Y 偏移量 根据测试传感器的状态写入pdf29页
Single_Write_ADXL345(0x20,0x05); //Z 偏移量 根据测试传感器的状态写入pdf29页
}
通过这种方法,检测到静止会进入休眠,然后检测到活动会进入测量
如果你解决了自动休眠的问题可以交流一下 |
|