aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXelus22 <17491233+Xelus22@users.noreply.github.com>2021-12-09 18:52:07 +1100
committerGitHub <noreply@github.com>2021-12-08 23:52:07 -0800
commitb09c44ced703e23065e23cd3e48bdafad5d0a032 (patch)
treeb4c59ea8e40e5425857e2a5d469dbed60791657d
parentb2576dcf12bf9dc217b336ab3652b37ec84b47b7 (diff)
downloadqmk_firmware-b09c44ced703e23065e23cd3e48bdafad5d0a032.tar.gz
qmk_firmware-b09c44ced703e23065e23cd3e48bdafad5d0a032.zip
[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 <drashna@live.com> Co-authored-by: Drashna Jaelre <drashna@live.com>
-rw-r--r--docs/feature_pointing_device.md1
-rw-r--r--drivers/sensors/pmw3360.c2
-rw-r--r--drivers/sensors/pmw3360.h4
3 files changed, 7 insertions, 0 deletions
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
150|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` | 150|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
151|`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` | 151|`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
152|`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ | 152|`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
153|`PMW3360_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` |
153|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0` | 154|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0` |
154 155
155The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI. 156The 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) {
186 186
187 spi_write_adv(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -30, 30)); 187 spi_write_adv(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -30, 30));
188 188
189 spi_write_adv(REG_Lift_Config, PMW3360_LIFTOFF_DISTANCE);
190
189 bool init_success = pmw3360_check_signature(); 191 bool init_success = pmw3360_check_signature();
190 192
191 writePinLow(PMW3360_CS_PIN); 193 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 @@
46# endif 46# endif
47#endif 47#endif
48 48
49#ifndef PMW3360_LIFTOFF_DISTANCE
50# define PMW3360_LIFTOFF_DISTANCE 0x02
51#endif
52
49#ifndef ROTATIONAL_TRANSFORM_ANGLE 53#ifndef ROTATIONAL_TRANSFORM_ANGLE
50# define ROTATIONAL_TRANSFORM_ANGLE 0x00 54# define ROTATIONAL_TRANSFORM_ANGLE 0x00
51#endif 55#endif