Exemplo n.º 1
0
static int
yas_power_up(void)
{
	uint8_t reg;
	int i;

	if (yas_write_reg(YAS_CTRL_REG2, YAS_CTRL_REG2_SRST) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	for (i = 0; i < YAS_SOFTRESET_COUNT_MAX; i++) {
		module.cbk.usleep(YAS_SOFTRESET_WAIT_TIME);
		if (yas_read_reg(YAS_CTRL_REG2, &reg) < 0)
			continue;
		if (reg == 0x00)
			break;
	}
	if (i == YAS_SOFTRESET_COUNT_MAX)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	if (yas_write_reg(YAS_DATA_CTRL_REG, module.odr))
		return YAS_ERROR_DEVICE_COMMUNICATION;
	if (yas_write_reg(YAS_CTRL_REG1
			  , YAS_CTRL_REG1_PC1
			  | YAS_CTRL_REG1_RES
			  | YAS_CTRL_REG1_GSEL
			  ) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	module.cbk.usleep(module.startup_time);
	return YAS_NO_ERROR;
}
static int
yas_power_down(void)
{
	if (yas_write_reg(YAS_CTRL_REG1, 0) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	if (yas_write_reg(YAS_CTRL_REG4, 0) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	return YAS_NO_ERROR;
}
static int
yas_power_up(void)
{
	if (yas_write_reg(YAS_CTRL_REG1, module.odr
			  | YAS_CTRL_XYZ_ENABLE) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	if (yas_write_reg(YAS_CTRL_REG4, YAS_CTRL_RANGE
			  | YAS_CTRL_HR_ENABLE | YAS_CTRL_BDU_ENABLE) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	module.cbk.usleep(module.turn_on_time);
	return YAS_NO_ERROR;
}
static int
yas_power_down(void)
{
    if (yas_write_reg(YAS_PMU_LPW, YAS_PMU_LPW_DSUS) < 0)
        return YAS_ERROR_DEVICE_COMMUNICATION;
    return YAS_NO_ERROR;
}
Exemplo n.º 5
0
static int
yas_power_up(void)
{
	if (yas_write_reg(YAS_BGW_SOFTRESET, YAS_BGW_SOFTRESET_VAL) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	module.cbk.usleep(YAS_SOFTRESET_WAIT_TIME);
	if (yas_write_reg(YAS_PMU_RANGE, YAS_PMU_RANGE_VAL) < 0) {
		yas_write_reg(YAS_PMU_LPW, YAS_PMU_LPW_DSUS);
		return YAS_ERROR_DEVICE_COMMUNICATION;
	}
	if (yas_write_reg(YAS_PMU_LPW, module.lpw) < 0) {
		yas_write_reg(YAS_PMU_LPW, YAS_PMU_LPW_DSUS);
		return YAS_ERROR_DEVICE_COMMUNICATION;
	}
	return YAS_NO_ERROR;
}
Exemplo n.º 6
0
/*When 0xCA is written to this register, the MEMS self-test function is enabled.  
Writing 0x00 to this register will return the accelerometer to normal operation.*/
static int
yas_self_test(void)
{
	int err=0;
	if (!module.initialized)
		return YAS_ERROR_INITIALIZE;

	//if(acceld->accel_drdy == 0) 
        err = yas_write_reg(YAS_SELF_TEST, 0xca);

	if (err < 0) return err;
	
	module.cbk.usleep(100000);

	err = yas_write_reg(YAS_SELF_TEST,0);
	if (err < 0) return err;	

	return YAS_NO_ERROR;
}
Exemplo n.º 7
0
static int
yas_set_delay(int delay)
{
	if (!module.initialized)
		return YAS_ERROR_INITIALIZE;
	if (delay < 0)
		return YAS_ERROR_ARG;
	module.delay = delay;
	yas_set_odr(delay);
	if (!module.enable)
		return YAS_NO_ERROR;
	if (yas_write_reg(YAS_CTRL_REG1, 0x00) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	if (yas_write_reg(YAS_DATA_CTRL_REG, module.odr))
		return YAS_ERROR_DEVICE_COMMUNICATION;
	if (yas_write_reg(YAS_CTRL_REG1
			  , YAS_CTRL_REG1_PC1
			  | YAS_CTRL_REG1_RES
			  | YAS_CTRL_REG1_GSEL
			  ) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	module.cbk.usleep(module.startup_time);
	return YAS_NO_ERROR;
}
Exemplo n.º 8
0
static int
yas_set_delay(int delay)
{
	if (!module.initialized)
		return YAS_ERROR_INITIALIZE;
	if (delay < 0)
		return YAS_ERROR_ARG;
	module.delay = delay;
	yas_set_sd(delay);
	if (!module.enable)
		return YAS_NO_ERROR;
	if (yas_write_reg(YAS_PMU_LPW, module.lpw) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	return YAS_NO_ERROR;
}
static int
yas_set_delay(int delay)
{
	if (!module.initialized)
		return YAS_ERROR_INITIALIZE;
	if (delay < 0)
		return YAS_ERROR_ARG;
	module.delay = delay;
	yas_set_odr(delay);
	if (!module.enable)
		return YAS_NO_ERROR;
	if (yas_write_reg(YAS_CTRL_REG1, module.odr
			  | YAS_CTRL_XYZ_ENABLE) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	module.cbk.usleep(module.turn_on_time);
	return YAS_NO_ERROR;
}