-
Notifications
You must be signed in to change notification settings - Fork 101
Description
Hi
I'm trying to use quick2wire to communicate between my Pi (rev B) and an HMC5843 magnetometer.
When I run sudo i2cdetect -y 1 it shows the 5843 is assigned i2c address 1e. I've created a script to get some data from the 5843. Everytime I run my script, it returns some bytes showing empty [](as you can see, the example here shows the second and fourth are empty):
[b'\x10']
[b' ']
[b'\x10']
[b' ']
[b'\x10']
[b'\x01']
Sometimes I get an I/O error:
File "/usr/local/lib/python3.2/dist-packages/quick2wire_api-0.0.0.2-py3.2.egg/quick2wire/i2c.py", line 78, in transaction
ioctl(self.fd, I2C_RDWR, ioctl_arg)
IOError: [Errno 5] Input/output error
Sometimes I get both errors (empty brackets along withthe I/O error.
Here's is my code:
from quick2wire.i2c import I2CMaster, writing_bytes,reading
import time
address = 0x1e
with I2CMaster() as bus:
# Get data from hmc5843 register
# for continuous measurement mode, send bytes 0x3C 0x02 0x00
bus.transaction(writing_bytes(address,0x3C))
bus.transaction(writing_bytes(address,0x02))
bus.transaction(writing_bytes(address,0x00))
time.sleep(0.01) # allow to settle
# want to start reading from address 0x03
bus.transaction(writing_bytes(address,0x03))
xLSB = bus.transaction(reading(address,1))
xMSB = bus.transaction(reading(address,1))
yLSB = bus.transaction(reading(address,1))
yMSB = bus.transaction(reading(address,1))
zMSB = bus.transaction(reading(address,1))
zLSB = bus.transaction(reading(address,1))
print(xLSB)
print(xMSB)
print(yLSB)
print(yMSB)
print(zLSB)
print(zMSB)Any idea what I am doing wrong? Thanks for your help...