Пример #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;
}
Пример #2
0
static int
yas_init(void)
{
	uint8_t id = 0;

	if (module.initialized)
		return YAS_ERROR_INITIALIZE;
	module.cbk.usleep(YAS_POWERUP_TIME);
	if (module.cbk.device_open(YAS_TYPE_ACC) < 0)
		return YAS_ERROR_DEVICE_COMMUNICATION;
	if (yas_read_reg(YAS_WHO_AM_I, &id) < 0) {
		module.cbk.device_close(YAS_TYPE_ACC);
		return YAS_ERROR_DEVICE_COMMUNICATION;
	}
	printk("who_am_i_val:%02x\n", id);
	accel_product_id = id;
	
	if (id != YAS_WHO_AM_I_VAL) {
		module.cbk.device_close(YAS_TYPE_ACC);
		return YAS_ERROR_CHIP_ID;
	}
	module.enable = 0;
	module.delay = YAS_DEFAULT_SENSOR_DELAY;
	module.position = YAS_DEFAULT_POSITION;
	yas_set_odr(module.delay);
	yas_power_down();
	module.cbk.device_close(YAS_TYPE_ACC);
	module.initialized = 1;
	return YAS_NO_ERROR;
}
static int
yas_init(void)
{
    uint8_t id;

    if (module.initialized)
        return YAS_ERROR_INITIALIZE;
    module.cbk.usleep(YAS_STARTUP_TIME);
    if (module.cbk.device_open(YAS_TYPE_ACC) < 0)
        return YAS_ERROR_DEVICE_COMMUNICATION;
    if (yas_read_reg(YAS_BGW_CHIPID, &id) < 0) {
        module.cbk.device_close(YAS_TYPE_ACC);
        return YAS_ERROR_DEVICE_COMMUNICATION;
    }
    if (id != YAS_BGW_CHIPID_VAL) {
        module.cbk.device_close(YAS_TYPE_ACC);
        return YAS_ERROR_CHIP_ID;
    }
    module.enable = 0;
    module.delay = YAS_DEFAULT_SENSOR_DELAY;
    module.position = YAS_DEFAULT_POSITION;
    yas_set_sd(module.delay);
    yas_power_down();
    module.cbk.device_close(YAS_TYPE_ACC);
    module.initialized = 1;
    return YAS_NO_ERROR;
}