49 #if (LIS302DL_USE_SPI) || defined(__DOXYGEN__)
62 (n == 1) ? (cmd = reg | LIS302DL_RW) : (cmd = reg | LIS302DL_RW | LIS302DL_MS);
64 spiSend(spip, 1, &cmd);
65 spiReceive(spip, n, b);
81 (n == 1) ? (cmd = reg) : (cmd = reg | LIS302DL_MS);
83 spiSend(spip, 1, &cmd);
123 osalDbgCheck((ip != NULL) && (axes != NULL));
129 "acc_read_raw(), invalid state");
132 #if LIS302DL_SHARED_SPI
133 osalDbgAssert((devp->config->spip->state == SPI_READY),
134 "acc_read_raw(), channel not ready");
136 spiAcquireBus(devp->config->spip);
137 spiStart(devp->config->spip,
138 devp->config->spicfg);
143 LIS302DL_AD_OUT_X + (i * 2), 1, &tmp);
144 axes[i] = (int32_t)((int8_t)tmp);
147 #if LIS302DL_SHARED_SPI
148 spiReleaseBus(devp->config->spip);
177 osalDbgCheck((ip != NULL) && (axes != NULL));
183 "acc_read_cooked(), invalid state");
187 axes[i] = (raw[i] * devp->accsensitivity[i]) - devp->accbias[i];
209 osalDbgCheck((ip != NULL) && (bp != NULL));
215 "acc_set_bias(), invalid state");
218 devp->accbias[i] = bp[i];
238 osalDbgCheck(ip != NULL);
244 "acc_reset_bias(), invalid state");
247 devp->accbias[i] = LIS302DL_ACC_BIAS;
271 osalDbgCheck((ip != NULL) && (sp != NULL));
274 "acc_set_sensivity(), invalid state");
277 devp->accsensitivity[i] = sp[i];
297 osalDbgCheck(ip != NULL);
303 "acc_reset_sensivity(), invalid state");
307 devp->accsensitivity[i] = LIS302DL_ACC_SENS_2G;
310 devp->accsensitivity[i] = LIS302DL_ACC_SENS_8G;
313 "acc_reset_sensivity(), accelerometer full scale issue");
337 osalDbgCheck(devp != NULL);
340 "acc_set_full_scale(), invalid state");
341 osalDbgAssert((devp->config->spip->state == SPI_READY),
342 "acc_set_full_scale(), channel not ready");
346 newfs = LIS302DL_ACC_2G;
349 newfs = LIS302DL_ACC_8G;
356 if(newfs != devp->accfullscale) {
358 scale = newfs / devp->accfullscale;
359 devp->accfullscale = newfs;
362 #if LIS302DL_SHARED_SPI
363 spiAcquireBus(devp->config->spip);
364 spiStart(devp->config->spip,
365 devp->config->spicfg);
371 #if LIS302DL_SHARED_SPI
372 spiReleaseBus(devp->config->spip);
376 cr &= ~(LIS302DL_CTRL_REG1_FS_MASK);
380 #if LIS302DL_SHARED_SPI
381 spiAcquireBus(devp->config->spip);
382 spiStart(devp->config->spip,
383 devp->config->spicfg);
389 #if LIS302DL_SHARED_SPI
390 spiReleaseBus(devp->config->spip);
396 devp->accsensitivity[i] *= scale;
397 devp->accbias[i] *= scale;
426 devp->
vmt = &vmt_device;
446 uint8_t cr[2] = {0, 0};
447 osalDbgCheck((devp != NULL) && (config != NULL));
450 "lis302dlStart(), invalid state");
452 devp->config = config;
456 cr[0] = LIS302DL_CTRL_REG1_XEN | LIS302DL_CTRL_REG1_YEN |
457 LIS302DL_CTRL_REG1_ZEN | LIS302DL_CTRL_REG1_PD |
458 devp->config->accoutputdatarate |
459 devp->config->accfullscale;
464 #if LIS302DL_USE_ADVANCED || defined(__DOXYGEN__)
465 if(devp->config->hpmode != LIS302DL_HPM_BYPASSED)
466 cr[1] = devp->config->acchighpass;
471 #if LIS302DL_SHARED_SPI
472 spiAcquireBus((devp)->config->
spip);
474 spiStart((devp)->config->
spip, (devp)->config->spicfg);
479 #if LIS302DL_SHARED_SPI
480 spiReleaseBus((devp)->config->
spip);
486 devp->accfullscale = LIS302DL_ACC_2G;
487 if(devp->config->accsensitivity == NULL)
489 devp->accsensitivity[i] = LIS302DL_ACC_SENS_2G;
492 devp->accsensitivity[i] = devp->config->accsensitivity[i];
495 devp->accfullscale = LIS302DL_ACC_8G;
496 if(devp->config->accsensitivity == NULL)
498 devp->accsensitivity[i] = LIS302DL_ACC_SENS_8G;
501 devp->accsensitivity[i] = devp->config->accsensitivity[i];
504 osalDbgAssert(FALSE,
"lis302dlStart(), accelerometer full scale issue");
508 if(devp->config->accbias != NULL)
510 devp->accbias[i] = devp->config->accbias[i];
513 devp->accbias[i] = LIS302DL_ACC_BIAS;
516 osalThreadSleepMilliseconds(10);
530 osalDbgCheck(devp != NULL);
534 "lis302dlStop(), invalid state");
538 #if LIS302DL_SHARED_SPI
539 spiAcquireBus((devp)->config->spip);
540 spiStart((devp)->config->spip,
541 (devp)->config->spicfg);
546 spiStop((devp)->config->spip);
547 #if LIS302DL_SHARED_SPI
548 spiReleaseBus((devp)->config->spip);