コード例 #1
0
int mpu9150_read(mpudata_t *mpu)
{
    if (mpu9150_read_dmp(mpu) != 0)
        return -1;

    if (mpu9150_read_mag(mpu) != 0)
        return -1;

    calibrate_data(mpu);

    return data_fusion(mpu);
}
コード例 #2
0
ファイル: mpu9150.c プロジェクト: jpoirier/linux-mpu9150
int mpu9150_read(mpudata_t *mpu)
{
	if (mpu9150_read_dmp(mpu) != 0)
		return -1;
#ifdef AK89xx_SECONDARY
	if (mpu9150_read_mag(mpu) != 0)
		return -1;
#endif
	calibrate_data(mpu);

	return data_fusion(mpu);
}
コード例 #3
0
int mpu9150_read(mpudata_t *mpu)
{
//printk("mpu9150_read...");
int _start = jiffies;
	if (mpu9150_read_dmp(mpu) != 0)
		return -1;

	if (mpu9150_read_mag(mpu) != 0)
		return -1;

	//calibrate_data(mpu);

	//printk("Time for read mpu: %d\n", jiffies_to_msecs(jiffies-_start));
	return 0; //data_fusion(mpu);
}
コード例 #4
0
ファイル: imucal.c プロジェクト: FlavioFalcao/linux-mpu9150
void read_loop(unsigned int sample_rate)
{
	int i, change;
	unsigned long loop_delay;
	mpudata_t mpu;

	if (sample_rate == 0)
		return;

	memset(&mpu, 0, sizeof(mpudata_t));

	for (i = 0; i < 3; i++) {
		minVal[i] = 0x7fff;
		maxVal[i] = 0x8000;
	}

	loop_delay = (1000 / sample_rate) - 2;

	printf("\nEntering read loop (ctrl-c to exit)\n\n");

	linux_delay_ms(loop_delay);

	while (!done) {
		change = 0;

		if (mag_mode) {
			if (mpu9150_read_mag(&mpu) == 0) {
				for (i = 0; i < 3; i++) {
					if (mpu.rawMag[i] < minVal[i]) {
						minVal[i] = mpu.rawMag[i];
						change = 1;
					}
				
					if (mpu.rawMag[i] > maxVal[i]) {
						maxVal[i] = mpu.rawMag[i];
						change = 1;
					}
				}
			}
		}
		else {
			if (mpu9150_read_dmp(&mpu) == 0) {
				for (i = 0; i < 3; i++) {
					if (mpu.rawAccel[i] < minVal[i]) {
						minVal[i] = mpu.rawAccel[i];
						change = 1;
					}
				
					if (mpu.rawAccel[i] > maxVal[i]) {
						maxVal[i] = mpu.rawAccel[i];
						change = 1;
					}
				}
			}
		}
		
		if (change) {
			if (mag_mode)
				print_mag(&mpu);
			else
				print_accel(&mpu);
		}

		linux_delay_ms(loop_delay);
	}

	printf("\n\n");
}