论坛大神
  
- 积分
- 1473
- 金钱
- 1473
- 注册时间
- 2013-4-12
- 在线时间
- 77 小时
|
发表于 2016-1-1 23:23:34
|
显示全部楼层
试试这个
// FF_THR寄存器
/*
* 获取自由落体的加速度阈值。
* 这个寄存器为自由落体的阈值检测进行配置。FF_THR的单位是1LSB = 2mg。当加速度传感器测量而得的三个轴的绝对值都小于检测阈值时,就可以测得自由落体值。这种情况下,自由落体时间计数器计数一次 (寄存器30)。当自由落体时间计数器达到FF_DUR中规定的时间时,自由落体被中断。
*
* 更多自由落体中断检测的相关信息,详见8.2节的MPU-6000/MPU-6050产品规格文件和该文件下的寄存器56和寄存器58.
*
* @返回当前自由落体加速度阈值(LSB = 2mg)
* @请参见MPU6050_RA_FF_THR字段
*/
uint8_t MPU6050::getFreefallDetectionThreshold() {
I2Cdev::readByte(devAddr, MPU6050_RA_FF_THR, buffer);
return buffer[0];
}
/*
* 获取自由落体加速度阈值
* @新自由落体加速度阈值参数(LSB = 2mg)
* @请参见getFreefallDetectionThreshold()字段
* @请参见MPU6050_RA_FF_THR字段
*/
void MPU6050::setFreefallDetectionThreshold(uint8_t threshold) {
I2Cdev::writeByte(devAddr, MPU6050_RA_FF_THR, threshold);
}
// FF_DUR寄存器
/*
* 获取自由落体时间阈值
* 这个寄存器为自由落体时间阈值计数器进行配置。时间计数频率为1 khz,因此FF_DUR的单位是 1 LSB = 1毫秒。
*
* 当加速度器测量而得的绝对值都小于检测阈值时,自由落体时间计数器计数一次。当自由落体时间计数器达到该寄存器的规定时间时,自由落体被中断。
*
* 更多自由落体中断检测的相关信息,详见8.2节的MPU-6000/MPU-6050产品规格文件和该文件下的寄存器56和寄存器58文件.
*
* 返回当前自由落体加速度阈值(LSB = 1ms)
* 请参见MPU6050_RA_FF_DUR字段
*/
uint8_t MPU6050::getFreefallDetectionDuration() {
I2Cdev::readByte(devAddr, MPU6050_RA_FF_DUR, buffer);
return buffer[0];
}
/*
* 获取自由落体时间阈值
* 自由落体时间阈值参数(LSB = 1ms)
* 请参见getFreefallDetectionDuration()字段
* 请参见MPU6050_RA_FF_DUR字段
*/
void MPU6050::setFreefallDetectionDuration(uint8_t duration) {
I2Cdev::writeByte(devAddr, MPU6050_RA_FF_DUR, duration);
}
/**设定自由落体加速度阈值..
* @新运动检测加速度阈值参数(LSB = 2mg)
* @请参见getMotionDetectionThreshold()字段
* @请参见MPU6050_RA_MOT_THR字段
*/
void MPU6050::setMotionDetectionThreshold(uint8_t threshold) {
I2Cdev::writeByte(devAddr, MPU6050_RA_MOT_THR, threshold);
} |
|