Subscribing to all sensors can cause a burden on the MCU communication
channels. Add a new '-s' command line option to data_logger.py that
allows a user to request the subscriptions that they wish to capture.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Increase ADC report time from every 15ms to every 10ms and batch every
5 reports into a single message. This should improve the
responsiveness and reduce the communication overhead when using ADC
buttons.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Change the get_last_value() method to return time first then value
(instead of value, then time). This makes get_last_value() match the
order of parameters that is used in the adc update callback.
This also fixes ads1x1x to return the "print_time" instead of a system
time.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Allow the user to deselect CONFIG_WANT_TRIGGER_ANALOG even if one of
the sensors could utilize the support.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Replace the integer values of STOP_ON_ENDSTOP with string values and
deprecate the older format. The newer string values should make the
commands easier to understand and allow for more homing options in the
future.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This adds host and firmware support for the Bosch BMI160 IMU. It includes support for both SPI and I2C communication protocols.
The firmware implementation includes a specific SPI wake-up sequence (dummy read) required to switch the sensor interface mode reliably. Validated on Linux MCU (SPI) and RP2040 (I2C) with stable 1600Hz ODR.
Signed-off-by: FranciscoStephens <francisco.stephens.g@gmail.com>
Commit 2a1027ce changed the "probe:update_results" event to take a
list, but failed to update the callers to utilize that modified list
in its results.
Change axis_twist_compensation to update all members in the list and
change the callers to use the resulting list.
Reported by @ritzi26.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
If the bus is write only, with new i2c_transfer code
it is possible to at least provide some feedback on error
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
PROBE_CALIBRATE will try to adjust z_offset
Which will produce a confusing outcome and
will not do what it is supposed to do
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
There are some rare corner cases where reporting the peak time could
cause hard to debug issues (for example, the peak time could
theoretically be a significant time prior to the actual trigger time,
which could possibly cause unexpected clock rollover issues). Now
that the host code does not utilize the peak time for "tap" detection,
it can be removed from the mcu code.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
To cancel out any lag, filter data on the host
Then to avoid derivatives lag,
compute central difference.
Assume that peak velocity is always the moment
right before collision happens.
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
To implement host-side analysis of tap data,
we need a way to apply the same filtering as on the mcu.
As bonus, it cancels the induced signal delay.
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Use SOS filters + derivative filter to generate dF/dT on mcu.
Feed that to the MCU's trigger_analog peak detection.
Interpret peak time as a tap event
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>