// Mpu6050 xuat ra gia tri 16bit signed int16 GetdataMpu6050(unsigned int8 RegAddr) { unsigned int8 LSB; unsigned int8 MSB; MSB=ReadMpu6050(RegAddr); LSB=ReadMpu6050(RegAddr+1); return (make16(MSB,LSB)); }
// Self test MPU6050 void SelftestMpu6050() { Write2Mpu6050(MPU6050_RA_PWR_MGMT_1, 0x00); // internal 8MHz, disabled SLEEP mode, disable CYCLE mode Write2Mpu6050(MPU6050_RA_SMPLRT_DIV, 0x07); //sample rate: 8khz Write2Mpu6050(MPU6050_RA_CONFIG, 0x06); //DLPF disable Write2Mpu6050(MPU6050_RA_GYRO_CONFIG, 0xe0); //Enable Selftest Gyroscope Write2Mpu6050(MPU6050_RA_ACCEL_CONFIG, 0xf0); //Enable Selftest Acceleromenter delay_ms(5); unsigned int8 xg,yg,zg; char temp[16]; xg=ReadMpu6050(MPU6050_RA_SELF_TEST_X); yg=ReadMpu6050(MPU6050_RA_SELF_TEST_Y); zg=ReadMpu6050(MPU6050_RA_SELF_TEST_Z); delay_ms(5); sprintf(temp,"%ux%uy%uz\r\n",xg,yg,zg); fprintf(com1,temp);// Truyen du lieu len PC }
void get_sensor_data(void) { uint32_t current_millis = millis(); if((current_millis - s_sample_start_millis) > SAMPLE_PERIOD) { s_sample_start_millis = current_millis; ReadMpu6050(&mpu6050_data_value); } }