|
73 | 73 | _LSM6DS_CTRL3_C = const(0x12) |
74 | 74 | _LSM6DS_CTRL_5_C = const(0x14) |
75 | 75 | _LSM6DS_MASTER_CONFIG = const(0x14) |
| 76 | +_LSM6DS_CTRL8_XL = const(0x17) |
76 | 77 | _LSM6DS_CTRL9_XL = const(0x18) |
77 | 78 | _LSM6DS_CTRL10_C = const(0x19) |
78 | 79 | _LSM6DS_OUT_TEMP_L = const(0x20) |
@@ -157,6 +158,17 @@ class Rate(CV): |
157 | 158 | ('RATE_1_6_HZ', 11, 1.6, None) |
158 | 159 | )) |
159 | 160 |
|
| 161 | +class AccelHPF(CV): |
| 162 | + """Options for the accelerometer high pass filter""" |
| 163 | + pass #pylint: disable=unnecessary-pass |
| 164 | + |
| 165 | +AccelHPF.add_values(( |
| 166 | + ('SLOPE', 0, 0, None), |
| 167 | + ('HPF_DIV100', 1, 0, None), |
| 168 | + ('HPF_DIV9', 2, 0, None), |
| 169 | + ('HPF_DIV400', 3, 0, None), |
| 170 | +)) |
| 171 | + |
160 | 172 |
|
161 | 173 | class LSM6DS: #pylint: disable=too-many-instance-attributes |
162 | 174 |
|
@@ -220,6 +232,9 @@ class LSM6DS: #pylint: disable=too-many-instance-attributes |
220 | 232 | _ped_enable = RWBit(_LSM6DS_TAP_CFG, 6) |
221 | 233 | _func_enable = RWBit(_LSM6DS_CTRL10_C, 2) |
222 | 234 |
|
| 235 | + high_pass_filter_enabled = RWBit(_LSM6DS_CTRL8_XL, 2) |
| 236 | + _pass_filter = RWBits(2, _LSM6DS_CTRL8_XL, 5) |
| 237 | + |
223 | 238 | CHIP_ID = None |
224 | 239 |
|
225 | 240 | def __init__(self, i2c_bus, address=_LSM6DS_DEFAULT_ADDRESS): |
@@ -360,6 +375,18 @@ def pedometer_enable(self, enable): |
360 | 375 | self._func_enable = enable |
361 | 376 | self.pedometer_reset = enable |
362 | 377 |
|
| 378 | + @property |
| 379 | + def high_pass_filter(self): |
| 380 | + """The high pass filter applied to accelerometer data""" |
| 381 | + return self._pass_filter |
| 382 | + |
| 383 | + @high_pass_filter.setter |
| 384 | + def high_pass_filter(self, value): |
| 385 | + if not AccelHPF.is_valid(value): |
| 386 | + raise AttributeError("range must be an `AccelHPF`") |
| 387 | + self._pass_filter = value |
| 388 | + |
| 389 | + |
363 | 390 | class LSM6DSOX(LSM6DS): #pylint: disable=too-many-instance-attributes |
364 | 391 |
|
365 | 392 | """Driver for the LSM6DSOX 6-axis accelerometer and gyroscope. |
|
0 commit comments