U8 sel_mpu6050_reg(U8 reg) { if(OK!=iic_start())return ERROR; if(OK!=i2c_senddat(W_MPU6050_ADDRESS)) { iic_stop(); return ERROR; }; if(OK!=i2c_senddat(reg)) { iic_stop(); return ERROR; }; return OK; }
static U8 sel_hmc5883l_reg(U8 reg) { if(OK!=iic_start())return ERROR; if(OK!=i2c_senddat(HMC58X3_ADDR)) { iic_stop(); return ERROR; }; if(OK!=i2c_senddat(reg)) { iic_stop(); return ERROR; }; return OK; }
static U8 single_write_hmc5883l(U8 reg,U8 dat) { if(OK!=sel_hmc5883l_reg(reg))return ERROR; if(OK!=i2c_senddat(dat)) { iic_stop(); return ERROR; }; return iic_stop(); }
U8 read_mpu6050(U8 reg) { U8 DATA; if(OK!=sel_mpu6050_reg(reg))return ERROR; if(OK!=iic_rstart())return ERROR; if(OK!=i2c_senddat(R_MPU6050_ADDRESS)) { iic_stop(); return ERROR; }; DATA=i2c_recedat(); iic_stop(); return DATA; }
U8 write_mpu6050(U8 reg,U8 *datbuf,U16 datl) { if(OK!=sel_mpu6050_reg(reg)) return ERROR; for(;datl!=0;datl--) { if(OK!=i2c_senddat(*datbuf)) { iic_stop(); return ERROR; }; datbuf++; } return iic_stop(); }
static U8 read_hmc5883l(U8 reg,U8 *datbuf,U16 datl) { if(OK!=sel_hmc5883l_reg(reg))return ERROR; if(OK!=iic_rstart())return ERROR; if(OK!=i2c_senddat(HMC58X3_ADDR+1))//not really right { iic_stop(); return ERROR; }; for(;datl!=0;datl--) { *datbuf=i2c_recedat(datl); datbuf++; } return iic_stop(); }