Der Anschluß SDO wird beim I2C-Bus zum Eingang und dient der Adressumschaltung
VCC ADXL345 = %0011_1010 I2C Addresse
GND ADXL345 = %1010_0110
=== Softwaremodule ==
' Der i2c-Treiber ist hier im anhang einzufügen.
CON 'All the I2C registers for the ADXL345
' ADXL345 = %0011_1010 acc I2C address maximum bus speed is 100kHz.
ADXL345 = %1010_0110
ADXL345_ID = $00
ADXL345_BW_RATE = $2C
ADXL345_POWER_CTL = $2D
ADXL345_DATA_FORMAT = $31
ADXL345_OUTX_L = $32
ADXL345_OUTX = $33
ADXL345_OUTY_L = $34
ADXL345_OUTY = $35
ADXL345_OUTZ_L = $36
ADXL345_OUTZ = $37
ADXL345_FIFO_CTL = $38
VAR
long XA, YA, ZA 'Acc
PUB start
waitcnt(clkfreq + cnt) 'start-up delay
XA := YA := ZA := 0
if ReadLocation(ADXL345, ADXL345_ID) == %1110_0101
WriteLocation(ADXL345, ADXL345_POWER_CTL, %0000_0000) 'Standby mode
WriteLocation(ADXL345, ADXL345_POWER_CTL, %0000_1000) 'Measurement mode
WriteLocation(ADXL345, ADXL345_DATA_FORMAT, %0000_1000) '±2G
' WriteLocation(ADXL345, ADXL345_DATA_FORMAT, %0000_1001) '±4G
' WriteLocation(ADXL345, ADXL345_DATA_FORMAT, %0000_1010) '±8G
' WriteLocation(ADXL345, ADXL345_DATA_FORMAT, %0000_1011) '±16G
WriteLocation(ADXL345, ADXL345_BW_RATE, %0000_1010) '100Hz
WriteLocation(ADXL345, ADXL345_POWER_CTL, %0000_1000)
WriteLocation(ADXL345, ADXL345_FIFO_CTL, %0000_0000) 'bypass mode
' OK
adxl345
else
' nOK
PRI adxl45
XA := readLocation16(ADXL345, ADXL345_OUTX_L)
XA := (XA>>8 + XA <<8) & $FFFF ' H<>L
YA := readLocation16(ADXL345, ADXL345_OUTY_L)
YA := (YA>>8 + YA <<8) & $FFFF ' H<>L
ZA := readLocation16(ADXL345, ADXL345_OUTZ_L)
ZA := (ZA>>8 + ZA <<8) & $FFFF ' H<>L