37 #include "drv_digital_in.h" 38 #include "drv_i2c_master.h" 39 #include "drv_spi_master.h" 52 #define PEDOMETER3_MAP_MIKROBUS( cfg, mikrobus ) \ 53 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \ 54 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \ 55 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \ 56 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \ 57 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \ 58 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \ 59 cfg.trg = MIKROBUS( mikrobus, MIKROBUS_AN ); \ 60 cfg.it2 = MIKROBUS( mikrobus, MIKROBUS_RST ); \ 61 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT ); 68 #define PEDOMETER3_MASTER_I2C 0 69 #define PEDOMETER3_MASTER_SPI 1 76 #define PEDOMETER3_RETVAL uint8_t 78 #define PEDOMETER3_OK 0x00 79 #define PEDOMETER3_ERROR 0xFF 80 #define PEDOMETER3_INIT_ERROR 0xFF 87 #define PEDOMETER3_REG_MANUFACTURING_ID 0x00 88 #define PEDOMETER3_REG_PART_ID 0x01 89 #define PEDOMETER3_REG_X_AXIS_HIGH_PASS_LOW 0x02 90 #define PEDOMETER3_REG_X_AXIS_HIGH_PASS_HIGH 0x03 91 #define PEDOMETER3_REG_Y_AXIS_HIGH_PASS_LOW 0x04 92 #define PEDOMETER3_REG_Y_AXIS_HIGH_PASS_HIGH 0x05 93 #define PEDOMETER3_REG_Z_AXIS_HIGH_PASS_LOW 0x06 94 #define PEDOMETER3_REG_Z_AXIS_HIGH_PASS_HIGH 0x07 95 #define PEDOMETER3_REG_X_AXIS_OUTPUT_LOW 0x08 96 #define PEDOMETER3_REG_X_AXIS_OUTPUT_HIGH 0x09 97 #define PEDOMETER3_REG_Y_AXIS_OUTPUT_LOW 0x0A 98 #define PEDOMETER3_REG_Y_AXIS_OUTPUT_HIGH 0x0B 99 #define PEDOMETER3_REG_Z_AXIS_OUTPUT_LOW 0x0C 100 #define PEDOMETER3_REG_Z_AXIS_OUTPUT_HIGH 0x0D 101 #define PEDOMETER3_REG_PAD_STEP_LOW 0x0E 102 #define PEDOMETER3_REG_PAD_STEP_HIGH 0x0F 103 #define PEDOMETER3_REG_COMMAND_TEST_RESPONSE 0x10 104 #define PEDOMETER3_REG_WHO_AM_I 0x11 105 #define PEDOMETER3_REG_CURRENT_TILT_POSITION 0x12 106 #define PEDOMETER3_REG_PREVIOUS_TILT_POSITION 0x13 107 #define PEDOMETER3_REG_INS1 0x14 108 #define PEDOMETER3_REG_INS2 0x15 109 #define PEDOMETER3_REG_INS3 0x16 110 #define PEDOMETER3_REG_STATUS 0x17 111 #define PEDOMETER3_REG_INT_REL 0x19 112 #define PEDOMETER3_REG_CONTROL_1 0x1A 113 #define PEDOMETER3_REG_CONTROL_2 0x1B 114 #define PEDOMETER3_REG_CONTROL_3 0x1C 115 #define PEDOMETER3_REG_CONTROL_4 0x1D 116 #define PEDOMETER3_REG_CONTROL_5 0x1E 117 #define PEDOMETER3_REG_OUTPUT_DATA_CONTROL 0x1F 118 #define PEDOMETER3_REG_INTERRUPT_CONTROL_1 0x20 119 #define PEDOMETER3_REG_INTERRUPT_CONTROL_2 0x21 120 #define PEDOMETER3_REG_INTERRUPT_CONTROL_3 0x22 121 #define PEDOMETER3_REG_INTERRUPT_CONTROL_4 0x23 122 #define PEDOMETER3_REG_INTERRUPT_CONTROL_5 0x24 123 #define PEDOMETER3_REG_INTERRUPT_CONTROL_6 0x25 124 #define PEDOMETER3_REG_INTERRUPT_CONTROL_7 0x26 125 #define PEDOMETER3_REG_TILT_TIMER 0x27 126 #define PEDOMETER3_REG_TAP_REPORT_CONTROL 0x28 127 #define PEDOMETER3_REG_DOUBLE_TAP_EVENT 0x29 128 #define PEDOMETER3_REG_TAP_THRESHOLD_HIGH 0x2A 129 #define PEDOMETER3_REG_TAP_THRESHOLD_LOW 0x2B 130 #define PEDOMETER3_REG_FTD 0x2C 131 #define PEDOMETER3_REG_STD 0x2D 132 #define PEDOMETER3_REG_TLT 0x2E 133 #define PEDOMETER3_REG_TWS 0x2F 134 #define PEDOMETER3_REG_FREE_FALL_THRESHOLD 0x30 135 #define PEDOMETER3_REG_FREE_FALL_COUNTER 0x31 136 #define PEDOMETER3_REG_FREE_FALL_CONTROL 0x32 137 #define PEDOMETER3_REG_TILT_ANGLE_LL 0x34 138 #define PEDOMETER3_REG_TILT_ANGLE_HL 0x35 139 #define PEDOMETER3_REG_HYSTERESIS_SET 0x36 140 #define PEDOMETER3_REG_LOW_POWER_CONTROL 0x37 141 #define PEDOMETER3_REG_WUFTH 0x3C 142 #define PEDOMETER3_REG_BTSWUFTH 0x3D 143 #define PEDOMETER3_REG_BTSTH 0x3E 144 #define PEDOMETER3_REG_BTS_MOTION_DETECTION 0x3F 145 #define PEDOMETER3_REG_WUF_MOTION_DETECTION 0x40 146 #define PEDOMETER3_REG_PED_STPWM_LOW 0x41 147 #define PEDOMETER3_REG_PED_STPWM_HIGH 0x42 148 #define PEDOMETER3_REG_PEDOMETER_CONTROL_1 0x43 149 #define PEDOMETER3_REG_PEDOMETER_CONTROL_2 0x44 150 #define PEDOMETER3_REG_PEDOMETER_CONTROL_3 0x45 151 #define PEDOMETER3_REG_PEDOMETER_CONTROL_4 0x46 152 #define PEDOMETER3_REG_PEDOMETER_CONTROL_5 0x47 153 #define PEDOMETER3_REG_PEDOMETER_CONTROL_6 0x48 154 #define PEDOMETER3_REG_PEDOMETER_CONTROL_7 0x49 155 #define PEDOMETER3_REG_PEDOMETER_CONTROL_8 0x4A 156 #define PEDOMETER3_REG_PEDOMETER_CONTROL_9 0x4B 157 #define PEDOMETER3_REG_PEDOMETER_CONTROL_10 0x4C 158 #define PEDOMETER3_REG_SELF_TEST 0x4D 159 #define PEDOMETER3_REG_BUFFER_CONTROL_1 0x5A 160 #define PEDOMETER3_REG_BUFFER_CONTROL_2 0x5B 161 #define PEDOMETER3_REG_BUFFER_STATUS_1 0x5C 162 #define PEDOMETER3_REG_BUFFER_STATUS_2 0x5D 163 #define PEDOMETER3_REG_BUFFER_CLEAR 0x5E 164 #define PEDOMETER3_REG_BUFFER_READ 0x5F 171 #define PEDOMETER3_POSITON_BIT_LEFT_X_NEGATIVE 0x20 172 #define PEDOMETER3_POSITON_BIT_RIGHT_X_POSITIVE 0x10 173 #define PEDOMETER3_POSITON_BIT_DOWN_Y_NEGATIVE 0x08 174 #define PEDOMETER3_POSITON_BIT_UP_Y_POSITIVE 0x04 175 #define PEDOMETER3_POSITON_BIT_FACE_DOWN_Y_NEGATIVE 0x02 176 #define PEDOMETER3_POSITON_BIT_FACE_UP_Y_POSITIVE 0x01 183 #define PEDOMETER3_INS1_STPOVI 0x80 184 #define PEDOMETER3_INS1_STPWMI 0x40 185 #define PEDOMETER3_INS1_TLE 0x20 186 #define PEDOMETER3_INS1_TRI 0x10 187 #define PEDOMETER3_INS1_TDO 0x08 188 #define PEDOMETER3_INS1_TUO 0x04 189 #define PEDOMETER3_INS1_TFD 0x02 190 #define PEDOMETER3_INS1_TFU 0x01 197 #define PEDOMETER3_INS2_FFS 0x80 198 #define PEDOMETER3_INS2_BFI 0x40 199 #define PEDOMETER3_INS2_WMI 0x20 200 #define PEDOMETER3_INS2_DRDY 0x10 201 #define PEDOMETER3_INS2_TDTS_NO_TAP 0x00 202 #define PEDOMETER3_INS2_TDTS_SINGLE_TAP 0x04 203 #define PEDOMETER3_INS2_TDTS_DOUBLE_TAP 0x08 204 #define PEDOMETER3_INS2_STPINCI 0x02 205 #define PEDOMETER3_INS2_TPS 0x01 212 #define PEDOMETER3_INS3_WUFS 0x80 213 #define PEDOMETER3_INS3_BTS 0x40 214 #define PEDOMETER3_INS3_XNWU 0x20 215 #define PEDOMETER3_INS3_XPWU 0x10 216 #define PEDOMETER3_INS3_YNWU 0x08 217 #define PEDOMETER3_INS3_YPWU 0x04 218 #define PEDOMETER3_INS3_ZNWU 0x02 219 #define PEDOMETER3_INS3_ZPWU 0x01 226 #define PEDOMETER3_STATUS_NO_INT 0x00 227 #define PEDOMETER3_STATUS_INT_ACTIVE 0x10 228 #define PEDOMETER3_STATUS_BACK_TO_SLEEP 0x00 229 #define PEDOMETER3_STATUS_WAKE_UP 0x01 236 #define PEDOMETER3_CNTL1_MODE_STAND_BY 0x00 237 #define PEDOMETER3_CNTL1_MODE_LOW_POWER 0x80 238 #define PEDOMETER3_CNTL1_RES_MODE_HIGHER_NOISE 0x00 239 #define PEDOMETER3_CNTL1_RES_MODE_LOWER_NOISE 0x40 240 #define PEDOMETER3_CNTL1_DATA_READY_DISABLE 0x00 241 #define PEDOMETER3_CNTL1_DATA_READY_ENABLE 0x20 242 #define PEDOMETER3_CNTL1_G_RANGE_2g 0x00 243 #define PEDOMETER3_CNTL1_G_RANGE_4g 0x08 244 #define PEDOMETER3_CNTL1_G_RANGE_8g 0x10 245 #define PEDOMETER3_CNTL1_TAP_DISABLE 0x00 246 #define PEDOMETER3_CNTL1_TAP_ENABLE 0x04 247 #define PEDOMETER3_CNTL1_PEDOMETER_DISABLE 0x00 248 #define PEDOMETER3_CNTL1_PEDOMETER_ENABLE 0x02 249 #define PEDOMETER3_CNTL1_TILT_DISABLE 0x00 250 #define PEDOMETER3_CNTL1_TILT_ENABLE 0x01 257 #define PEDOMETER3_CNTL2_SOFTWARE_RESET_ACTIVE 0x80 258 #define PEDOMETER3_CNTL2_SOFTWARE_RESET_NO_ACTIVE 0x00 259 #define PEDOMETER3_CNTL2_COMMAND_TEST_ACTIVE 0x40 260 #define PEDOMETER3_CNTL2_COMMAND_TEST_NO_ACTIVE 0x00 261 #define PEDOMETER3_CNTL2_LEFT_STATE_ENABLE 0x20 262 #define PEDOMETER3_CNTL2_RIGHT_STATE_ENABLE 0x10 263 #define PEDOMETER3_CNTL2_DOWN_STATE_ENABLE 0x08 264 #define PEDOMETER3_CNTL2_UP_STATE_ENABLE 0x04 265 #define PEDOMETER3_CNTL2_FACE_DOWN_STATE_ENABLE 0x02 266 #define PEDOMETER3_CNTL2_FACE_UP_STATE_ENABLE 0x01 273 #define PEDOMETER3_CNTL3_OTP_OUTPUT_DATA_RATE_1_563Hz 0x00 274 #define PEDOMETER3_CNTL3_OTP_OUTPUT_DATA_RATE_6_25Hz 0x40 275 #define PEDOMETER3_CNTL3_OTP_OUTPUT_DATA_RATE_12_5Hz 0x80 276 #define PEDOMETER3_CNTL3_OTP_OUTPUT_DATA_RATE_50Hz 0xC0 277 #define PEDOMETER3_CNTL3_TAP_OUTPUT_DATA_RATE_50Hz 0x00 278 #define PEDOMETER3_CNTL3_TAP_OUTPUT_DATA_RATE_100Hz 0x08 279 #define PEDOMETER3_CNTL3_TAP_OUTPUT_DATA_RATE_200Hz 0x10 280 #define PEDOMETER3_CNTL3_TAP_OUTPUT_DATA_RATE_400Hz 0x18 281 #define PEDOMETER3_CNTL3_TAP_OUTPUT_DATA_RATE_12_5Hz 0x20 282 #define PEDOMETER3_CNTL3_TAP_OUTPUT_DATA_RATE_25Hz 0x28 283 #define PEDOMETER3_CNTL3_TAP_OUTPUT_DATA_RATE_800Hz 0x30 284 #define PEDOMETER3_CNTL3_TAP_OUTPUT_DATA_RATE_1600Hz 0x38 285 #define PEDOMETER3_CNTL3_OWUF_OUTPUT_DATA_RATE_0_781Hz 0x00 286 #define PEDOMETER3_CNTL3_OWUF_OUTPUT_DATA_RATE_1_563Hz 0x01 287 #define PEDOMETER3_CNTL3_OWUF_OUTPUT_DATA_RATE_3_125Hz 0x02 288 #define PEDOMETER3_CNTL3_OWUF_OUTPUT_DATA_RATE_6_250Hz 0x03 289 #define PEDOMETER3_CNTL3_OWUF_OUTPUT_DATA_RATE_12_5Hz 0x04 290 #define PEDOMETER3_CNTL3_OWUF_OUTPUT_DATA_RATE_25Hz 0x05 291 #define PEDOMETER3_CNTL3_OWUF_OUTPUT_DATA_RATE_50Hz 0x06 292 #define PEDOMETER3_CNTL3_OWUF_OUTPUT_DATA_RATE_100Hz 0x07 299 #define PEDOMETER3_CNTL4_COUNTER_CLEAR_MODE 0x00 300 #define PEDOMETER3_CNTL4_COUNTER_DECREMENT_MODE 0x80 301 #define PEDOMETER3_CNTL4_THRESHOLD_MODE_ABSOLUTE 0x00 302 #define PEDOMETER3_CNTL4_THRESHOLD_MODE_RELATIVE 0x40 303 #define PEDOMETER3_CNTL4_WAKE_UP_DISABLE 0x00 304 #define PEDOMETER3_CNTL4_WAKE_UP_ENABLE 0x20 305 #define PEDOMETER3_CNTL4_BACK_TO_SLEEP_DISABLE 0x00 306 #define PEDOMETER3_CNTL4_BACK_TO_SLEEP_ENABLE 0x10 307 #define PEDOMETER3_CNTL4_HIGH_PASS_DISABLE 0x00 308 #define PEDOMETER3_CNTL4_HIGH_PASS_ENABLE 0x08 309 #define PEDOMETER3_CNTL4_OBTS_OUTPUT_DATA_RATE_0_781Hz 0x00 310 #define PEDOMETER3_CNTL4_OBTS_OUTPUT_DATA_RATE_1_563Hz 0x01 311 #define PEDOMETER3_CNTL4_OBTS_OUTPUT_DATA_RATE_3_125Hz 0x02 312 #define PEDOMETER3_CNTL4_OBTS_OUTPUT_DATA_RATE_6_250Hz 0x03 313 #define PEDOMETER3_CNTL4_OBTS_OUTPUT_DATA_RATE_12_5Hz 0x04 314 #define PEDOMETER3_CNTL4_OBTS_OUTPUT_DATA_RATE_25Hz 0x05 315 #define PEDOMETER3_CNTL4_OBTS_OUTPUT_DATA_RATE_50Hz 0x06 316 #define PEDOMETER3_CNTL4_OBTS_OUTPUT_DATA_RATE_100Hz 0x07 323 #define PEDOMETER3_CNTL5_MANUAL_WAKE_UP_0 0x00 324 #define PEDOMETER3_CNTL5_MANUAL_WAKE_UP_1 0x02 325 #define PEDOMETER3_CNTL5_MANUAL_SLEEP_UP_0 0x00 326 #define PEDOMETER3_CNTL5_MANUAL_SLEEP_UP_1 0x01 333 #define PEDOMETER3_ODCNTL_IR_BYPASS_FILTERING_APPLIED 0x00 334 #define PEDOMETER3_ODCNTL_IR_BYPASS_FILTER_BYPASSED 0x80 335 #define PEDOMETER3_ODCNTL_LPRO_ODR_9 0x00 336 #define PEDOMETER3_ODCNTL_LPRO_ODR_2 0x40 337 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_12_5Hz 0x00 338 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_25Hz 0x01 339 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_50Hz 0x02 340 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_100Hz 0x03 341 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_200Hz 0x04 342 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_400Hz 0x05 343 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_800Hz 0x06 344 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_1600Hz 0x07 345 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_0_781Hz 0x08 346 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_1_563Hz 0x09 347 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_3_125Hz 0x0A 348 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_6_25Hz 0x0B 349 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_3200Hz 0x0C 350 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_6400Hz 0x0D 351 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_12800Hz 0x0E 352 #define PEDOMETER3_ODCNTL_OSA_OUTPUT_DATA_RATE_25600Hz 0x0F 359 #define PEDOMETER3_INC1_PULSE_INTERRUPT_1_50uSec 0x00 360 #define PEDOMETER3_INC1_PULSE_INTERRUPT_1_OSA_PERIOD 0x40 361 #define PEDOMETER3_INC1_PULSE_INTERRUPT_1_OSA2_PERIOD 0x80 362 #define PEDOMETER3_INC1_PULSE_INTERRUPT_1_OSA4_PERIOD 0xC0 363 #define PEDOMETER3_INC1_PHYSICAL_INTERRUPT_DISABLE 0x00 364 #define PEDOMETER3_INC1_PHYSICAL_INTERRUPT_ENABLE 0x20 365 #define PEDOMETER3_INC1_INTERRUPT_ACTIVE_LEVEL_LOW 0x00 366 #define PEDOMETER3_INC1_INTERRUPT_ACTIVE_LEVEL_HIGH 0x10 367 #define PEDOMETER3_INC1_INTERRUPT_LATCHED 0x00 368 #define PEDOMETER3_INC1_INTERRUPT_PULSED 0x08 369 #define PEDOMETER3_INC1_SELF_TEST_POLARITY_NEGATIVE 0x00 370 #define PEDOMETER3_INC1_SELF_TEST_POLARITY_POSITIVE 0x02 371 #define PEDOMETER3_INC1_3_WIRE_SPI_INTERFACE_DISABLE 0x00 372 #define PEDOMETER3_INC1_3_WIRE_SPI_INTERFACE_ENABLED 0x01 379 #define PEDOMETER3_INC2_AOI_ACTIVE_STATE_IN_OR 0x00 380 #define PEDOMETER3_INC2_AOI_ACTIVE_STATE_IN_AND 0x40 381 #define PEDOMETER3_INC2_X_NEGATIVE_DISABLE 0x00 382 #define PEDOMETER3_INC2_X_NEGATIVE_ENABEL 0x20 383 #define PEDOMETER3_INC2_Y_NEGATIVE_DISABLE 0x00 384 #define PEDOMETER3_INC2_Y_NEGATIVE_ENABEL 0x08 385 #define PEDOMETER3_INC2_Z_NEGATIVE_DISABLE 0x00 386 #define PEDOMETER3_INC2_Z_NEGATIVE_ENABEL 0x02 387 #define PEDOMETER3_INC2_X_POSITIVE_DISABLE 0x00 388 #define PEDOMETER3_INC2_X_POSITIVE_ENABEL 0x10 389 #define PEDOMETER3_INC2_Y_POSITIVE_DISABLE 0x00 390 #define PEDOMETER3_INC2_Y_POSITIVE_ENABEL 0x04 391 #define PEDOMETER3_INC2_Z_POSITIVE_DISABLE 0x00 392 #define PEDOMETER3_INC2_Z_POSITIVE_ENABEL 0x01 399 #define PEDOMETER3_INC3_ALTERNATE_TAP_DISABLE 0x00 400 #define PEDOMETER3_INC3_ALTERNATE_TAP_ENABLE 0x40 401 #define PEDOMETER3_INC3_LEFT_STATE_DISABLE 0x00 402 #define PEDOMETER3_INC3_LEFT_STATE_ENABLE 0x20 403 #define PEDOMETER3_INC3_RIGHT_STATE_DISABLE 0x00 404 #define PEDOMETER3_INC3_RIGHT_STATE_ENABLE 0x10 405 #define PEDOMETER3_INC3_DOWN_STATE_DISABLE 0x00 406 #define PEDOMETER3_INC3_DOWN_STATE_ENABLE 0x08 407 #define PEDOMETER3_INC3_UP_STATE_DISABLE 0x00 408 #define PEDOMETER3_INC3_UP_STATE_ENABLE 0x04 409 #define PEDOMETER3_INC3_FACE_DOWN_STATE_DISABLE 0x00 410 #define PEDOMETER3_INC3_FACE_DOWN_STATE_ENABLE 0x02 411 #define PEDOMETER3_INC3_FACE_UP_STATE_DISABLE 0x00 412 #define PEDOMETER3_INC3_FACE_UP_STATE_ENABLE 0x01 419 #define PEDOMETER3_INC4_FREE_FALL_INTERRUPT_1_DISABLE 0x00 420 #define PEDOMETER3_INC4_FREE_FALL_INTERRUPT_1_ENABLE 0x80 421 #define PEDOMETER3_INC4_BUFFER_FULL_INTERRUPT_1_DISABLE 0x00 422 #define PEDOMETER3_INC4_BUFFER_FULL_INTERRUPT_1_ENABLE 0x40 423 #define PEDOMETER3_INC4_WATERMARK_INTERRUPT_1_DISABLE 0x00 424 #define PEDOMETER3_INC4_WATERMARK_INTERRUPT_1_ENABLE 0x20 425 #define PEDOMETER3_INC4_DATA_READY_INTERRUPT_1_DISABLE 0x00 426 #define PEDOMETER3_INC4_DATA_READY_INTERRUPT_1_ENABLE 0x10 427 #define PEDOMETER3_INC4_BACK_TO_SLEEP_INTERRUPT_1_DISABLE 0x00 428 #define PEDOMETER3_INC4_BACK_TO_SLEEP_INTERRUPT_1_ENABLE 0x08 429 #define PEDOMETER3_INC4_TAP_INTERRUPT_1_DISABLE 0x00 430 #define PEDOMETER3_INC4_TAP_INTERRUPT_1_ENABLE 0x04 431 #define PEDOMETER3_INC4_WAKE_UP_INTERRUPT_1_DISABLE 0x00 432 #define PEDOMETER3_INC4_WAKE_UP_INTERRUPT_1_ENABLE 0x02 433 #define PEDOMETER3_INC4_TILT_POSITION_INTERRUPT_1_DISABLE 0x00 434 #define PEDOMETER3_INC4_TILT_POSITION_INTERRUPT_1_ENABLE 0x01 441 #define PEDOMETER3_INC5_PULSE_INTERRUPT_2_50uSec 0x00 442 #define PEDOMETER3_INC5_PULSE_INTERRUPT_2_OSA_PERIOD 0x40 443 #define PEDOMETER3_INC5_PULSE_INTERRUPT_2_OSA2_PERIOD 0x80 444 #define PEDOMETER3_INC5_PULSE_INTERRUPT_2_OSA4_PERIOD 0xC0 445 #define PEDOMETER3_INC5_PHYSICAL_INTERRUPT_DISABLE 0x00 446 #define PEDOMETER3_INC5_PHYSICAL_INTERRUPT_ENABLE 0x20 447 #define PEDOMETER3_INC5_INTERRUPT_ACTIVE_LEVEL_LOW 0x00 448 #define PEDOMETER3_INC5_INTERRUPT_ACTIVE_LEVEL_HIGH 0x10 449 #define PEDOMETER3_INC5_INTERRUPT_LATCHED 0x00 450 #define PEDOMETER3_INC5_INTERRUPT_PULSED 0x08 451 #define PEDOMETER3_INC5_LATCHED_INTERRUPT_2_DISABLE 0x00 452 #define PEDOMETER3_INC5_LATCHED_INTERRUPT_2_ENABLE 0x02 453 #define PEDOMETER3_INC5_LATCHED_INTERRUPT_1_DISABLE 0x00 454 #define PEDOMETER3_INC5_LATCHED_INTERRUPT_1_ENABLE 0x01 461 #define PEDOMETER3_INC6_FREE_FALL_INTERRUPT_2_DISABLE 0x00 462 #define PEDOMETER3_INC6_FREE_FALL_INTERRUPT_2_ENABLE 0x80 463 #define PEDOMETER3_INC6_BUFFER_FULL_INTERRUPT_2_DISABLE 0x00 464 #define PEDOMETER3_INC6_BUFFER_FULL_INTERRUPT_2_ENABLE 0x40 465 #define PEDOMETER3_INC6_WATERMARK_INTERRUPT_2_DISABLE 0x00 466 #define PEDOMETER3_INC6_WATERMARK_INTERRUPT_2_ENABLE 0x20 467 #define PEDOMETER3_INC6_DATA_READY_INTERRUPT_2_DISABLE 0x00 468 #define PEDOMETER3_INC6_DATA_READY_INTERRUPT_2_ENABLE 0x10 469 #define PEDOMETER3_INC6_BACK_TO_SLEEP_INTERRUPT_2_DISABLE 0x00 470 #define PEDOMETER3_INC6_BACK_TO_SLEEP_INTERRUPT_2_ENABLE 0x08 471 #define PEDOMETER3_INC6_TAP_INTERRUPT_2_DISABLE 0x00 472 #define PEDOMETER3_INC6_TAP_INTERRUPT_2_ENABLE 0x04 473 #define PEDOMETER3_INC6_WAKE_UP_INTERRUPT_2_DISABLE 0x00 474 #define PEDOMETER3_INC6_WAKE_UP_INTERRUPT_2_ENABLE 0x02 475 #define PEDOMETER3_INC6_TILT_POSITION_INTERRUPT_2_DISABLE 0x00 476 #define PEDOMETER3_INC6_TILT_POSITION_INTERRUPT_2_ENABLE 0x01 483 #define PEDOMETER3_INC7_STEP_OVERFLOW_INTERRUPT_2_DISABLE 0x00 484 #define PEDOMETER3_INC7_STEP_OVERFLOW_INTERRUPT_2_ENABLE 0x40 485 #define PEDOMETER3_INC7_STEP_WATERMARK_INTERRUPT_2_DISABLE 0x00 486 #define PEDOMETER3_INC7_STEP_WATERMARK_INTERRUPT_2_ENABLE 0x20 487 #define PEDOMETER3_INC7_STEP_INCREMENT_INTERRUPT_2_DISABLE 0x00 488 #define PEDOMETER3_INC7_STEP_INCREMENT_INTERRUPT_2_ENABLE 0x10 489 #define PEDOMETER3_INC7_STEP_OVERFLOW_INTERRUPT_1_DISABLE 0x00 490 #define PEDOMETER3_INC7_STEP_OVERFLOW_INTERRUPT_1_ENABLE 0x04 491 #define PEDOMETER3_INC7_STEP_WATERMARK_INTERRUPT_1_DISABLE 0x00 492 #define PEDOMETER3_INC7_STEP_WATERMARK_INTERRUPT_1_ENABLE 0x02 493 #define PEDOMETER3_INC7_STEP_INCREMENT_INTERRUPT_1_DISABLE 0x00 494 #define PEDOMETER3_INC7_STEP_INCREMENT_INTERRUPT_1_ENABLE 0x01 501 #define PEDOMETER3_TDTRC_DOUBLE_TAP_INTERRUPT_DISABLE 0x00 502 #define PEDOMETER3_TDTRC_DOUBLE_TAP_INTERRUPT_ENABLE 0x02 503 #define PEDOMETER3_TDTRC_SINGLE_TAP_INTERRUPT_DISABLE 0x00 504 #define PEDOMETER3_TDTRC_SINGLE_TAP_INTERRUPT_ENABLE 0x01 511 #define PEDOMETER3_FFCNTL_FREE_FALL_DISABLE 0x00 512 #define PEDOMETER3_FFCNTL_FREE_FALL_ENABLE 0x80 513 #define PEDOMETER3_FFCNTL_FREE_FALL_INTERRUPT_LATCH_DISABLE 0x00 514 #define PEDOMETER3_FFCNTL_FREE_FALL_INTERRUPT_UNLATCH_ENABLE 0x40 515 #define PEDOMETER3_FFCNTL_DEBOUNCE_METHODOLOGY_DISABLE 0x00 516 #define PEDOMETER3_FFCNTL_DEBOUNCE_METHODOLOGY_ENABLE 0x08 517 #define PEDOMETER3_FFCNTL_OFFI_OUTPUT_DATA_RATE_12_5Hz 0x00 518 #define PEDOMETER3_FFCNTL_OFFI_OUTPUT_DATA_RATE_25Hz 0x01 519 #define PEDOMETER3_FFCNTL_OFFI_OUTPUT_DATA_RATE_50Hz 0x02 520 #define PEDOMETER3_FFCNTL_OFFI_OUTPUT_DATA_RATE_100Hz 0x03 521 #define PEDOMETER3_FFCNTL_OFFI_OUTPUT_DATA_RATE_200Hz 0x04 522 #define PEDOMETER3_FFCNTL_OFFI_OUTPUT_DATA_RATE_400Hz 0x05 523 #define PEDOMETER3_FFCNTL_OFFI_OUTPUT_DATA_RATE_800Hz 0x06 524 #define PEDOMETER3_FFCNTL_OFFI_OUTPUT_DATA_RATE_1600Hz 0x07 531 #define PEDOMETER3_LP_CNTL_NO_AVERAGING 0x00 532 #define PEDOMETER3_LP_CNTL_2_SAMPLES_AVERAGED 0x10 533 #define PEDOMETER3_LP_CNTL_4_SAMPLES_AVERAGED 0x20 534 #define PEDOMETER3_LP_CNTL_8_SAMPLES_AVERAGED 0x30 535 #define PEDOMETER3_LP_CNTL_16_SAMPLES_AVERAGED 0x40 536 #define PEDOMETER3_LP_CNTL_32_SAMPLES_AVERAGED 0x50 537 #define PEDOMETER3_LP_CNTL_64_SAMPLES_AVERAGED 0x60 538 #define PEDOMETER3_LP_CNTL_128_SAMPLES_AVERAGED 0x70 545 #define PEDOMETER3_PED_CNTL1_STEP_TH_NO_STEPS 0x00 546 #define PEDOMETER3_PED_CNTL1_STEP_TH_2_STEPS 0x01 547 #define PEDOMETER3_PED_CNTL1_STEP_TH_4_STEPS 0x02 548 #define PEDOMETER3_PED_CNTL1_STEP_TH_6_STEPS 0x03 549 #define PEDOMETER3_PED_CNTL1_STEP_TH_8_STEPS 0x04 550 #define PEDOMETER3_PED_CNTL1_STEP_TH_10_STEPS 0x05 551 #define PEDOMETER3_PED_CNTL1_STEP_TH_12_STEPS 0x06 552 #define PEDOMETER3_PED_CNTL1_STEP_TH_14_STEPS 0x07 559 #define PEDOMETER3_PED_CNTL2_HIGH_PASS_FILTER_1 0x00 560 #define PEDOMETER3_PED_CNTL2_HIGH_PASS_FILTER_2 0x10 561 #define PEDOMETER3_PED_CNTL2_HIGH_PASS_FILTER_4 0x20 562 #define PEDOMETER3_PED_CNTL2_HIGH_PASS_FILTER_8 0x30 563 #define PEDOMETER3_PED_CNTL2_HIGH_PASS_FILTER_16 0x40 564 #define PEDOMETER3_PED_CNTL2_HIGH_PASS_FILTER_32 0x50 565 #define PEDOMETER3_PED_CNTL2_HIGH_PASS_FILTER_64 0x60 566 #define PEDOMETER3_PED_CNTL2_HIGH_PASS_FILTER_128 0x70 567 #define PEDOMETER3_PED_CNTL2_ODR_SELECT_100Hz 0x0C 568 #define PEDOMETER3_PED_CNTL2_ODR_SELECT_50Hz 0x06 575 #define PEDOMETER3_SLAVE_ADDRESS_0 0x1E 576 #define PEDOMETER3_SLAVE_ADDRESS_1 0x1F 583 #define PEDOMETER3_TILT_POSITION_LEFT 1 584 #define PEDOMETER3_TILT_POSITION_RIGHT 2 585 #define PEDOMETER3_TILT_POSITION_DOWN 3 586 #define PEDOMETER3_TILT_POSITION_UP 4 587 #define PEDOMETER3_TILT_POSITION_FACE_DOWN 5 588 #define PEDOMETER3_TILT_POSITION_FACE_UP 6 595 #define PEDOMETER3_TAP_X_NEGATIVE 0x10 596 #define PEDOMETER3_TAP_X_POSITIVE 0x11 597 #define PEDOMETER3_TAP_Y_NEGATIVE 0x20 598 #define PEDOMETER3_TAP_Y_POSITIVE 0x21 599 #define PEDOMETER3_TAP_Z_NEGATIVE 0x30 600 #define PEDOMETER3_TAP_Z_POSITIVE 0x31 976 #endif // _PEDOMETER3_H_ uint8_t previous_pos
Definition: pedometer3.h:693
uint8_t pedometer3_get_tap_detection(pedometer3_t *ctx)
Functions for get Tap detection.
void pedometer3_set_step_watermark(pedometer3_t *ctx, uint16_t value)
Functions for sets pedometer step counter Watermark.
void(* pedometer3_master_io_t)(struct pedometer3_s *, uint8_t, uint8_t *, uint8_t)
Function pointer for master input/output type.
Definition: pedometer3.h:618
void pedometer3_get_tilt_position(pedometer3_t *ctx, pedometer3_tilt_position_t *tilt)
Functions for get Tilt current and previous position.
pin_name_t int_pin
Definition: pedometer3.h:663
void pedometer3_get_highpass_accel_axis(pedometer3_t *ctx, pedometer3_axis_t *axis)
Functions for read High Pass Accel axis data.
uint8_t pedometer3_get_interrupt_1(pedometer3_t *ctx)
Functions for read INT pin state.
Axis structure.
Definition: pedometer3.h:679
pin_name_t sda
Definition: pedometer3.h:653
void pedometer3_get_accel_axis(pedometer3_t *ctx, pedometer3_axis_t *axis)
Functions for read Accel axis data.
hal_i2c_speed_t i2c_speed
Definition: pedometer3.h:667
void pedometer3_pedometer_cfg(pedometer3_t *ctx, uint8_t odr)
Functions for pedometer configuration.
pin_name_t sck
Definition: pedometer3.h:656
pin_name_t scl
Definition: pedometer3.h:652
Click configuration structure definition.
Definition: pedometer3.h:648
pin_name_t cs
Definition: pedometer3.h:657
pin_name_t it2
Definition: pedometer3.h:662
PEDOMETER3_RETVAL pedometer3_test_communication(pedometer3_t *ctx)
Functions for test first comunication width chip.
pedometer3_select_t sel
Definition: pedometer3.h:672
void pedometer3_default_cfg(pedometer3_t *ctx)
Click Default Configuration function.
spi_master_t spi
Definition: pedometer3.h:634
Tilt position structure.
Definition: pedometer3.h:690
void pedometer3_generic_write(pedometer3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function.
uint8_t current_pos
Definition: pedometer3.h:692
digital_in_t trg
Definition: pedometer3.h:627
pedometer3_master_io_t read_f
Definition: pedometer3.h:640
int16_t y
Definition: pedometer3.h:682
void pedometer3_generic_read(pedometer3_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function.
#define PEDOMETER3_RETVAL
Definition: pedometer3.h:76
hal_spi_speed_t spi_speed
Definition: pedometer3.h:669
uint16_t pedometer3_get_step_counter(pedometer3_t *ctx)
Functions for get pedometer step counter.
hal_i2c_address_t i2c_address
Definition: pedometer3.h:668
PEDOMETER3_RETVAL pedometer3_init(pedometer3_t *ctx, pedometer3_cfg_t *cfg)
Initialization function.
digital_in_t it2
Definition: pedometer3.h:628
int16_t x
Definition: pedometer3.h:681
pedometer3_master_io_t write_f
Definition: pedometer3.h:639
i2c_master_t i2c
Definition: pedometer3.h:633
pedometer3_select_t master_sel
Definition: pedometer3.h:641
uint8_t pedometer3_get_trigger_interrupt(pedometer3_t *ctx)
Functions for read AN pin state.
Click ctx object definition.
Definition: pedometer3.h:623
pin_name_t miso
Definition: pedometer3.h:654
uint8_t pedometer3_get_interrupt_2(pedometer3_t *ctx)
Functions for read RST pin state.
pin_name_t trg
Definition: pedometer3.h:661
digital_in_t int_pin
Definition: pedometer3.h:629
void pedometer3_cfg_setup(pedometer3_cfg_t *cfg)
Config Object Initialization function.
pin_name_t mosi
Definition: pedometer3.h:655
hal_spi_mode_t spi_mode
Definition: pedometer3.h:670
hal_i2c_address_t slave_address
Definition: pedometer3.h:638
struct pedometer3_s pedometer3_t
Click ctx object definition.
int16_t z
Definition: pedometer3.h:683
uint8_t pedometer3_select_t
Comunication select type.
Definition: pedometer3.h:613