Member Since: May 25, 2013

Country: United States

  • I’m also having this problem, though I’m reading it out on a Raspberry Pi. I’m getting 0xFF (-1 C) most of the time, and occasionally 0x00 (0C), in ambient conditions around 25C. I never get any other values. Everything else works perfectly, except temp.

    I’ve tried reading it both before and after the magnetic values (since the device seems to do some magic when you read the X MSB), and with and without delays in between them (just to see what’s up). I’ve even tried reading all the registers at once, and I am getting correct values in every register, including those immediately before (Z user offset LSB) and immediately after (CTRL 1) the DIE_TEMP register. It’s just DIE_TEMP that is haywire.

    I know that -1C and 0C are both theoretically “valid” temperatures, but 0xFF and 0x00 sure look a lot like either hardware problems (letting SDA float high, or holding it low) or else programming problems (-1 and 0 are both often used as “error conditions”).

    Does anyone have one with a sane DIE_TEMP? Or do we just have faulty units?

    EDIT: After doing some research, I found a newer datasheet ( http://cache.freescale.com/files/sensors/doc/data_sheet/MAG3110.pdf ) which indicates that the temperature offset is NOT set by the factory, the user has to determine the offset on their own (fun). After playing around with warming up the sensor, it appears that I was lucky/unlucky enough to get a sensor that just happened to have its 0 be at my current room temperature. I am now able to get temperature changes, so I am just going to assume that that is the problem for now unless I ever see it start drastically diverging from other temperature sensors I have.

    SparkFun folks, can you update the link to the newest revision of the datasheet?

No public wish lists :(