I am using one of the MAX31855 breakout boards on a oven controller I'm building and went to the github site for the Adafruit code. I found a number of issues with the existing code, to the point that I rewrote it and posted the revised code on my website: http://www.seanet.com/~karllunt/max31855.html

Note that my code is C, not C++. If you are heavily into Arduino, this is going to look very different from the sketches you're used to.

One question I had with the code is it doesn't appear to handle negative thermocouple values correctly in gcc-avr. It does seem to handle negative reference values properly, but that doesn't help you with the thermocouple.

Specifically, this code in Adafruit_MAX31855::readCelsius(void) seems wrong:========================== // get rid of internal temp data, and any fault bits v >>= 18; <-- this does not sign-extend in the gcc-avr compiler //Serial.println(v, HEX);

Notice that the true sign bit of the data value is tested and recorded in temp but is never subsequently used.

There is a println() immediately after the right-shift of v, so this code was tested under at least some conditions; was it tested with negative temperature values generated by the device? Does the Arduino compiler do sign-extension on right-shift? (I don't use that toolset so can't test.)