How to write a variable to a MMA8451 register using SDK 2.1?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

How to write a variable to a MMA8451 register using SDK 2.1?

跳至解决方案
1,677 次查看
marks
Contributor IV

Hello, I would like to write a variable value to a threshold register in the MMA8451. Using SDK 2.1. The register write drivers are all set up to  use constants. For example, to write to the CTRL_REG1 you need to do all this:

// Each entry in a RegisterWriteList is composed of: register address, value to write, bit-mask to apply to write (0 enables)
const registerwritelist_t MMA845x_IDLE[] =
{
    { MMA845x_CTRL_REG1, 0x00, 0x01 },
    __END_WRITE_DATA__
};

int8_t MMA845x_Idle(struct PhysicalSensor *sensor, SensorFusionGlobals *sfg)
{
int32_t status;
if(sensor->isInitialized == F_USING_ACCEL) {
    status = Sensor_I2C_Write(sensor->bus_driver, &sensor->deviceInfo, sensor->addr, MMA845x_IDLE );
    sensor->isInitialized = 0;
    sfg->Accel.isEnabled = false;
} else {
    return SENSOR_ERROR_INIT;
}
    return status;
}

And once you had all of that done you would use it by:

global_I2C_status = MMA845x_IDLE(&(sensors[0]), &sfg);

And the above method works well for writing a constant. However, I would like to write a variable. Could someone please be kind enough to help me out. I miss the good old days where something like WriteI2CByte_MMA8451(MMA8451_CTRL_REG1,0x06) would work but I can not find anything simple like that.

Best regards,

Mark

0 项奖励
1 解答
1,605 次查看
marks
Contributor IV

Never mind. I ended up just defining 5 constants as thresholds and used those.

Thanks for reading!

Mark

在原帖中查看解决方案

0 项奖励
1 回复
1,606 次查看
marks
Contributor IV

Never mind. I ended up just defining 5 constants as thresholds and used those.

Thanks for reading!

Mark

0 项奖励
%3CLINGO-SUB%20id%3D%22lingo-sub-868175%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20SDK%202.1%20%E5%B0%86%E5%8F%98%E9%87%8F%E5%86%99%E5%85%A5%20MMA8451%20%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%9F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-868175%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%E6%88%91%E6%83%B3%E5%90%91%20MMA8451%20%E4%B8%AD%E7%9A%84%E9%98%88%E5%80%BC%E5%AF%84%E5%AD%98%E5%99%A8%E5%86%99%E5%85%A5%E4%B8%80%E4%B8%AA%E5%8F%AF%E5%8F%98%E5%80%BC%E3%80%82%E4%BD%BF%E7%94%A8%20SDK%202.1%E3%80%82%E5%AF%84%E5%AD%98%E5%99%A8%E5%86%99%E5%85%A5%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E9%83%BD%E8%AE%BE%E7%BD%AE%E4%BD%BF%E7%94%A8%E5%B8%B8%E9%87%8F%E3%80%82%E4%BE%8B%E5%A6%82%EF%BC%8C%E8%A6%81%E5%86%99%E5%85%A5%20CTRL_REG1%EF%BC%8C%E5%B0%B1%E9%9C%80%E8%A6%81%E5%AE%8C%E6%88%90%E6%89%80%E6%9C%89%E8%BF%99%E4%BA%9B%E6%93%8D%E4%BD%9C%EF%BC%9A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%2F%2F%20RegisterWriteList%20%E4%B8%AD%E7%9A%84%E6%AF%8F%E4%B8%AA%E6%9D%A1%E7%9B%AE%E5%8C%85%E6%8B%AC%EF%BC%9A%E5%AF%84%E5%AD%98%E5%99%A8%E5%9C%B0%E5%9D%80%E3%80%81%E8%A6%81%E5%86%99%E5%85%A5%E7%9A%84%E5%80%BC%E3%80%81%E5%BA%94%E7%94%A8%E4%BA%8E%E5%86%99%E5%85%A5%E7%9A%84%E4%BD%8D%E6%8E%A9%E7%A0%81%EF%BC%880%20%E4%BD%BF%E8%83%BD%EF%BC%89%3CBR%20%2F%3Econst%20registerwritelist_t%20MMA845x_IDLE%5B%5D%20%3D%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%20%7B%20MMA845x_CTRL_REG1%2C%200x00%2C%200x01%20%7D%2C%3CBR%20%2F%3E%20__END_WRITE_DATA__%3CBR%20%2F%3E%7D%EF%BC%9B%3C%2FP%3E%3CP%3Eint8_t%20MMA845x_Idle(struct%20PhysicalSensor%20*sensor%2C%20SensorFusionGlobals%20*sfg)%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%20int32_t%20status%EF%BC%9B%3CBR%20%2F%3E%20if(sensor-%26gt%3BisInitialized%20%3D%3D%20F_USING_ACCEL)%20%7B%3CBR%20%2F%3E%20status%20%3D%20Sensor_I2C_Write(sensor-%26gt%3Bbus_driver%2C%26amp%3Bsensor-%26gt%3BdeviceInfo%2C%20sensor-%26gt%3Baddr%2C%20MMA845x_IDLE%20)%3B%3CBR%20%2F%3E%20sensor-%26gt%3BisInitialized%20%3D%200%3B%3CBR%20%2F%3E%20sfg-%26gt%3BAccel.isEnabled%20%3D%20false%3B%3CBR%20%2F%3E%20%7D%20else%20%7B%3CBR%20%2F%3E%20return%20SENSOR_ERROR_INIT%3B%3CBR%20%2F%3E%20%7D%3CBR%20%2F%3E%20return%20status%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3E%E4%B8%80%E6%97%A6%E4%BD%A0%E5%AE%8C%E6%88%90%E4%BA%86%E8%BF%99%E4%B8%80%E5%88%87%EF%BC%8C%E4%BD%A0%E5%B0%B1%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E5%AE%83%E4%BA%86%EF%BC%9A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3Eglobal_I2C_status%20%3D%20MMA845x_IDLE(%26amp%3B(sensors%5B0%5D)%2C%26amp%3Bsfg)%EF%BC%9B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E4%B8%8A%E8%BF%B0%E6%96%B9%E6%B3%95%E5%AF%B9%E4%BA%8E%E7%BC%96%E5%86%99%E5%B8%B8%E9%87%8F%E4%B9%9F%E5%BE%88%E6%9C%89%E6%95%88%E3%80%82%E4%B8%8D%E8%BF%87%EF%BC%8C%E6%88%91%E6%83%B3%E5%86%99%E4%B8%80%E4%B8%AA%E5%8F%98%E9%87%8F%E3%80%82%E8%B0%81%E8%83%BD%E5%A5%BD%E5%BF%83%E5%B8%AE%E5%B8%AE%E6%88%91%EF%BC%9F%E6%88%91%E5%BE%88%E6%80%80%E5%BF%B5%E8%BF%87%E5%8E%BB%E7%9A%84%E7%BE%8E%E5%A5%BD%E6%97%B6%E5%85%89%EF%BC%8CWriteI2CByte_MMA8451(MMA8451_CTRL_REG1%2C0x06)%E4%B9%8B%E7%B1%BB%E7%9A%84%E5%91%BD%E4%BB%A4%E5%B0%B1%E8%83%BD%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%8C%E4%BD%86%E6%88%91%E6%89%BE%E4%B8%8D%E5%88%B0%E7%B1%BB%E4%BC%BC%E7%9A%84%E7%AE%80%E5%8D%95%E5%91%BD%E4%BB%A4%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%3CP%3EMark%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-868176%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20write%20a%20variable%20to%20a%20MMA8451%20register%20using%20SDK%202.1%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-868176%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E6%B2%A1%E5%85%B3%E7%B3%BB%E3%80%82%E6%9C%80%E5%90%8E%EF%BC%8C%E6%88%91%E5%8F%AA%E5%AE%9A%E4%B9%89%E4%BA%86%205%20%E4%B8%AA%E5%B8%B8%E9%87%8F%E4%BD%9C%E4%B8%BA%E9%98%88%E5%80%BC%EF%BC%8C%E5%B9%B6%E4%BD%BF%E7%94%A8%E4%BA%86%E8%BF%99%E4%BA%9B%E5%B8%B8%E9%87%8F%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%84%9F%E8%B0%A2%E6%82%A8%E7%9A%84%E9%98%85%E8%AF%BB%EF%BC%81%3C%2FP%3E%3CP%3EMark%3C%2FP%3E%3C%2FLINGO-BODY%3E