Code:
Accelerometer_Init:
'Axes
I2CAddress_3D = $20 'CTRL_REG1
TEMP = %01000111 'DR=0, PD=1, FS=0, STP=00, Zen=1, Yen=1, Xen=1 (X,Y,Z enable, Output 100Hz)
gosub I2C_Write_3D
'---------------------
'Filters
I2CAddress_3D = $21 'CTRL_REG2
TEMP = %00000111 'SIM = 0, BOOT = 0, --, FDS = 0, HP FF_WU2 = 0, HP FF_WU1 = 1, HP coeff2 = 1, HP coeff1 = 1 (HP 0.25Hz for FF_WU1)
gosub I2C_Write_3D
'---------------------
'Interrupts
I2CAddress_3D = $22 'CTRL_REG3
TEMP = %00000001 'IHL = 0, PP_OD = 0, I2CFG2-0 = 000, I1CFG2-0 = 001 (FF_WU 1 = INT1)
gosub I2C_Write_3D
'---------------------
'Sensitivity
I2CAddress_3D = $32 'FF_WU_THS_1
TEMP = $02 'DCRM = 0, THS6 = 0, THS5 = 0, THS4 = 0, THS3 = 0, THS2 = 0, THS1 = 1, THS0 = 0 (~36mg wake-up threshold, ~18mg step)
gosub I2C_Write_3D
'---------------------
'Duration
I2CAddress_3D = $33 'FF_DURATION_1
TEMP = $0D 'D7 = 0, D6 = 0, D5 = 0, D4 = 0, D3 = 1, D2 = 1, D1 = 0, D0 = 1 (130ms, 0 - 2.55s, 10ms step)
gosub I2C_Write_3D '0Ah = 100ms, 0Fh = 150ms, 14h = 200ms, 28h = 400ms, 32h = 500ms,
'---------------------
'Wake-Up Thresholds
I2CAddress_3D = $30 'FF_WU_GFG_1
TEMP = %01101010 'AOI = 0, LIR = 1, ZHIE = 1, ZLIE = 0, YHIE = 1, YLIE = 0, XHIE = 1, XLIE = 0 (wake-up above thresholde on x,y,z)
gosub I2C_Write_3D
'---------------------
Code how to deal when INT will occur:
Bookmarks