From b09c44ced703e23065e23cd3e48bdafad5d0a032 Mon Sep 17 00:00:00 2001 From: Xelus22 <17491233+Xelus22@users.noreply.github.com> Date: Thu, 9 Dec 2021 18:52:07 +1100 Subject: [PATCH] [Core] Add configuration of PMW3360 lift off distance (#15424) * sensor code add * update documentation * add default #define * Update drivers/sensors/pmw3360.c Co-authored-by: Drashna Jaelre Co-authored-by: Drashna Jaelre --- docs/feature_pointing_device.md | 1 + drivers/sensors/pmw3360.c | 2 ++ drivers/sensors/pmw3360.h | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md index 031ee52c1..bd7fb3658 100644 --- a/docs/feature_pointing_device.md +++ b/docs/feature_pointing_device.md @@ -150,6 +150,7 @@ The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for su |`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` | |`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` | |`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ | +|`PMW3360_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` | |`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0` | The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI. diff --git a/drivers/sensors/pmw3360.c b/drivers/sensors/pmw3360.c index 2b27dccbb..7e830cdde 100644 --- a/drivers/sensors/pmw3360.c +++ b/drivers/sensors/pmw3360.c @@ -186,6 +186,8 @@ bool pmw3360_init(void) { spi_write_adv(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -30, 30)); + spi_write_adv(REG_Lift_Config, PMW3360_LIFTOFF_DISTANCE); + bool init_success = pmw3360_check_signature(); writePinLow(PMW3360_CS_PIN); diff --git a/drivers/sensors/pmw3360.h b/drivers/sensors/pmw3360.h index 7b2bef5b8..9aa8e13f8 100644 --- a/drivers/sensors/pmw3360.h +++ b/drivers/sensors/pmw3360.h @@ -46,6 +46,10 @@ # endif #endif +#ifndef PMW3360_LIFTOFF_DISTANCE +# define PMW3360_LIFTOFF_DISTANCE 0x02 +#endif + #ifndef ROTATIONAL_TRANSFORM_ANGLE # define ROTATIONAL_TRANSFORM_ANGLE 0x00 #endif