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, ®) < 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; }
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; }
/*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; }
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; }
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; }