bool ms5611_read_prom_cmd_send(MS5611_t *structure) { Twi_t *TwiStruct = structure->TWI; TwiStruct->MasterSlaveAddr = MS5611_ADDR; TwiStruct->TxBuff[0] = MS5611_CONVERT_PROM_READ_C1_CMD; if(!SetupI2CReception(TwiStruct, 1, 2)) return false; structure->prom_data.C0 = (TwiStruct->RxBuff[0] << 8) + TwiStruct->RxBuff[1]; TwiStruct->TxBuff[0] = MS5611_CONVERT_PROM_READ_C2_CMD; if(!SetupI2CReception(TwiStruct, 1, 2)) return false; structure->prom_data.C1 = (TwiStruct->RxBuff[0] << 8) + TwiStruct->RxBuff[1]; TwiStruct->TxBuff[0] = MS5611_CONVERT_PROM_READ_C3_CMD; if(!SetupI2CReception(TwiStruct, 1, 2)) return false; structure->prom_data.C2 = (TwiStruct->RxBuff[0] << 8) + TwiStruct->RxBuff[1]; TwiStruct->TxBuff[0] = MS5611_CONVERT_PROM_READ_C4_CMD; if(!SetupI2CReception(TwiStruct, 1, 2)) return false; structure->prom_data.C3 = (TwiStruct->RxBuff[0] << 8) + TwiStruct->RxBuff[1]; TwiStruct->TxBuff[0] = MS5611_CONVERT_PROM_READ_C5_CMD; if(!SetupI2CReception(TwiStruct, 1, 2)) return false; structure->prom_data.C4 = (TwiStruct->RxBuff[0] << 8) + TwiStruct->RxBuff[1]; TwiStruct->TxBuff[0] = MS5611_CONVERT_PROM_READ_C6_CMD; if(!SetupI2CReception(TwiStruct, 1, 2)) return false; structure->prom_data.C5 = (TwiStruct->RxBuff[0] << 8) + TwiStruct->RxBuff[1]; TwiStruct->TxBuff[0] = MS5611_CONVERT_PROM_READ_C7_CMD; if(!SetupI2CReception(TwiStruct, 1, 2)) return false; structure->prom_data.C6 = (TwiStruct->RxBuff[0] << 8) + TwiStruct->RxBuff[1]; TwiStruct->TxBuff[0] = MS5611_CONVERT_PROM_READ_C8_CMD; if(!SetupI2CReception(TwiStruct, 1, 2)) return false; structure->prom_data.C7 = (TwiStruct->RxBuff[0] << 8) + TwiStruct->RxBuff[1]; return true; }
bool mhc5883_mode_set(MHC5883_t *structure, unsigned char Value) { Twi_t *TwiStruct = structure->TWI; TwiStruct->MasterSlaveAddr = MHC5883_ADDR; TwiStruct->TxBuff[0] = MHC5883_MODE_REG; if(!SetupI2CReception(TwiStruct, 1, 1)) return false; TwiStruct->TxBuff[1] = (TwiStruct->RxBuff[0] & ~MHC5883_MODE_REG_MD_gm) | ((Value << MHC5883_MODE_REG_MD_gp) & MHC5883_MODE_REG_MD_gm); if(!SetupI2CTransmit(TwiStruct, 2)) return false; return true; }
/* ** Reads the data from registers of Power Management IC(PMIC). */ void ReadFromPMIC(char regAddr, char*data) { count = 0; rCount = 0; dataToPmic[0] = regAddr; SetupI2CTransmit2(1); SetupI2CReception(1); *data = dataFromSlave[rCount]; }
bool mhc5883_data_get(MHC5883_t *structure, signed short *X_Axis, signed short *Y_Axis, signed short *Z_Axis) { Twi_t *TwiStruct = structure->TWI; TwiStruct->MasterSlaveAddr = MHC5883_ADDR; TwiStruct->TxBuff[0] = MHC5883_DATA_OUT_X_H; if(!SetupI2CReception(TwiStruct, 1, 6)) return false; *X_Axis = (TwiStruct->RxBuff[0] << 8) + TwiStruct->RxBuff[1]; *Z_Axis = (TwiStruct->RxBuff[2] << 8) + TwiStruct->RxBuff[3]; *Y_Axis = (TwiStruct->RxBuff[4] << 8) + TwiStruct->RxBuff[5]; return true; }
bool ms5611_adc_get_cmd_send(MS5611_t *structure, unsigned long *data, unsigned char osr) { timer_interval(&structure->Timeout_Timer, 15); Twi_t *TwiStruct = structure->TWI; TwiStruct->MasterSlaveAddr = MS5611_ADDR; TwiStruct->TxBuff[0] = MS5611_ADC_READ_CMD; while(!SetupI2CReception(TwiStruct, 1, 3)) { if(timer_tick(&structure->Timeout_Timer)) return false; } if(TwiStruct->RxBuff[0] == 0 && TwiStruct->RxBuff[1] == 0 && TwiStruct->RxBuff[2] == 0) return false; *data = (TwiStruct->RxBuff[0] << 16) + (TwiStruct->RxBuff[1] << 8) + TwiStruct->RxBuff[2]; return true; }