' Der i2c-Treiber ist hier im anhang einzufügen.
CON 'All the I2C registers for the HMC5843 mag I2C address maximum bus speed is ???kHz.
HMC5843 = %0011_1100
HMC5843_CONFIG_A = $00
HMC5843_CONFIG_B = $01
HMC5843_MODE = $02
HMC5843_DATA_X_MSB = $03
HMC5843_DATA_X_LSB = $04
HMC5843_DATA_Y_MSB = $05
HMC5843_DATA_Y_LSB = $06
HMC5843_DATA_Z_MSB = $07
HMC5843_DATA_Z_LSB = $08
HMC5843_STATUS = $09
HMC5843_ID_A = $0A
HMC5843_ID_B = $0B
HMC5843_ID_C = $0C
VAR
long XC, YC, ZC 'Compass
PUB start
waitcnt(clkfreq + cnt) 'start-up delay
writeValue(HMC5843, HMC5843_ID_A)
if readValue24(HMC5843) == $00483433 '"H43"
' OK
writeLocation(HMC5843, HMC5843_CONFIG_A, $3C)
writeLocation(HMC5843, HMC5843_CONFIG_B, $02)
writeLocation(HMC5843, HMC5843_MODE, $00)
repeat
emc
else
' nOK
PRI emc
XC := readLocation16(HMC5843, HMC5843_DATA_X_MSB)
YC := readLocation16(HMC5843, HMC5843_DATA_Y_MSB)
ZC := readLocation16(HMC5843, HMC5843_DATA_Z_MSB)
i2c.spin