|  | 
| 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