コード例 #1
0
/* set l3g4200d digital gyroscope bandwidth */
int l3g4200d_set_bandwidth(char bw)
{
	int res = 0;
	unsigned char data;

	res = i2c_smbus_read_word_data(gyro->client, CTRL_REG1);
	if (res >= 0)
		data = res & 0x000F;

	data = data + bw;
	res = l3g4200d_i2c_write(CTRL_REG1, &data, 1);
	return res;
}
コード例 #2
0
int l3g4200d_set_selftest(char status)
{
	int res = 0;
	unsigned char data;
	
	res = i2c_smbus_read_word_data(gyro->client, CTRL_REG4);
	if (res >= 0)
		data = res & 0x00F1;

	data = status + data;
	res = l3g4200d_i2c_write(CTRL_REG4, &data, 1);
	return res;	
}
コード例 #3
0
int l3g4200d_set_range(char range)
{
	int res = 0;
	unsigned char data;
	
	res = i2c_smbus_read_word_data(gyro->client, CTRL_REG4);
	if (res >= 0)
		data = res & 0x00CF;

	data = range + data;
	res = l3g4200d_i2c_write(CTRL_REG4, &data, 1);
	return res;

}
コード例 #4
0
int l3g4200d_set_mode(char mode)
{
	int res = 0;
	unsigned char data;

	res = i2c_smbus_read_word_data(gyro->client, CTRL_REG1);
	if (res >= 0)
		data = res & 0x00F7;

	data = mode + data;

	res = l3g4200d_i2c_write(CTRL_REG1, &data, 1);
	return res;
}
コード例 #5
0
ファイル: m040_l3gd20.c プロジェクト: WenBinWu/m040
static int selftest_init_l3g4200d(void)
{
	unsigned char buf[5];
	pr_info("%s\n", __func__);

	/* BDU=1, ODR=200Hz, Cut-Off Freq=50Hz, FS=2000 DPS */
	/* Noted by qudao, for l3gd20:
	 * ODR = 190Hz, Cut-Off Freq = 50Hz, x/y/z anxis enabled, Normal mode, FS = 2000DPS
	 */
	buf[0] = 0x6F;
	buf[1] = 0x00;
	buf[2] = 0x00;
	buf[3] = 0xA0;
	buf[4] = 0x02;

	return l3g4200d_i2c_write(CTRL_REG1, &buf[0], 5);
}
コード例 #6
0
ファイル: m040_l3gd20.c プロジェクト: WenBinWu/m040
int l3g4200d_set_range(char range)
{
	int ret = 0;
	unsigned char data;

	if (!gyro || !gyro->client) {
		pr_err("%s(), Sorry, Gyro driver L3GD20 has not been initialized properly!\n", __func__);
		return -1;
	}

	ret = i2c_smbus_read_word_data(gyro->client, CTRL_REG4);
	if (ret >= 0)
		data = ret & 0x00CF;

	data = range + data;
	ret = l3g4200d_i2c_write(CTRL_REG4, &data, 1);
	return ret;
}
コード例 #7
0
ファイル: m040_l3gd20.c プロジェクト: WenBinWu/m040
/* set l3g4200d digital gyroscope bandwidth */
int l3g4200d_set_bandwidth(char bw)
{
	int ret = 0;
	unsigned char data;

	if (!gyro || !gyro->client) {
		pr_err("%s(), Error!gyro has not been initialized properly!\n", __func__);
		return -1;
	}

	ret = i2c_smbus_read_word_data(gyro->client, CTRL_REG1);
	if (ret >= 0)
		data = ret & 0x000F;

	data = data + bw;
	ret = l3g4200d_i2c_write(CTRL_REG1, &data, 1);
	return ret;
}
コード例 #8
0
ファイル: m040_l3gd20.c プロジェクト: WenBinWu/m040
int l3g4200d_set_mode(char mode)
{
	int ret = 0;
	unsigned char data;

	if (!gyro || !gyro->client) {
		pr_err("%s(), Sorry, Gyro driver L3GD20 has not been initialized properly!\n", __func__);
		return -1;
	}

	pr_info("%s(), gyro is %p, gyro->client is %p\n", __func__, gyro, gyro->client);

	ret = i2c_smbus_read_word_data(gyro->client, CTRL_REG1);
	if (ret >= 0)
		data = ret & 0x00F7;

	data = mode + data;

	ret = l3g4200d_i2c_write(CTRL_REG1, &data, 1);
	return ret;
}