The VL53L1CB proximity sensor, based on ST’s FlightSense™, Time-of-Flight technology.
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Dependents: VL53L1CB_noshield_1sensor_polls_auton VL53L1CB_noshield_1sensor_interrupt_auton X_NUCLEO_53L1A2
Based on VL53L1 library, this is a library for the VL53L1CB ToF chip.
Diff: src/vl53l1_core.c
- Revision:
- 18:0696efe39d08
- Parent:
- 7:1add29d51e72
diff -r ca0ce4daf573 -r 0696efe39d08 src/vl53l1_core.c --- a/src/vl53l1_core.c Wed Jun 23 12:57:26 2021 +0000 +++ b/src/vl53l1_core.c Wed Jul 21 17:06:38 2021 +0200 @@ -1222,7 +1222,10 @@ LOG_FUNCTION_START(""); - timeout_mclks = + if (macro_period_us == 0) + timeout_mclks = 0; + else + timeout_mclks = ((timeout_us << 12) + (macro_period_us>>1)) / macro_period_us; @@ -2395,27 +2398,36 @@ - if (pxtalk_data->signal_events_sum > 0) { + + + tmp64_1 = + (uint64_t)pxtalk_data->effective_spad_count_sum * + (uint64_t)pxtalk_data->peak_duration_us_sum; + + if (pxtalk_data->signal_events_sum < 0) { + pxtalk_data->signal_events_sum = 0; + tmp64_0 = - ((uint64_t)pxtalk_data->signal_events_sum * - (uint64_t)pxtalk_data->sample_count * - (uint64_t)pxtalk_data->event_scaler_avg * 256U) << 9U; - tmp64_1 = - (uint64_t)pxtalk_data->effective_spad_count_sum * - (uint64_t)pxtalk_data->peak_duration_us_sum; - - - - if (tmp64_1 > 0U) { - - tmp64_0 = tmp64_0 + (tmp64_1 >> 1U); - xtalk_per_spad = do_division_u(tmp64_0, tmp64_1); - } else { - xtalk_per_spad = (uint64_t)tmp64_0; + ((uint64_t)pxtalk_data->sample_count * + (uint64_t)pxtalk_data->event_scaler_avg * 256U) << 9U; + if (tmp64_0 > 0) { + pxtalk_data->signal_events_sum = (int32_t) + do_division_u((50U * tmp64_1), tmp64_0); } - + } + tmp64_0 = + ((uint64_t)pxtalk_data->signal_events_sum * + (uint64_t)pxtalk_data->sample_count * + (uint64_t)pxtalk_data->event_scaler_avg * 256U) << 9U; + + + + if (tmp64_1 > 0U) { + + tmp64_0 = tmp64_0 + (tmp64_1 >> 1U); + xtalk_per_spad = do_division_u(tmp64_0, tmp64_1); } else { - status = VL53L1_ERROR_XTALK_EXTRACTION_SIGMA_LIMIT_FAIL; + xtalk_per_spad = (uint64_t)tmp64_0; } pxtalk_data->xtalk_rate_kcps_per_spad = (uint32_t)xtalk_per_spad; @@ -3622,6 +3634,8 @@ VL53L1_calc_macro_period_us( fast_osc_frequency, vcsel_period_a); + if (macro_period_us == 0) + macro_period_us = 1;