Just as an update, I have it working now!
Here's the code I needed to do to make it work:
pressure_lsb = read_register16(PRESSURE_LSB);
pressure_lsb &= 0x0000FFFF;
Does this make any sense at all?
My read_register16 function looks thus:
float read_register16(char register_name)
{
byte in_byte1;
byte in_byte2;
float in_word;
register_name <<= 2;
register_name &= B11111100; //Read command
digitalWrite(SLAVESELECT,LOW); //Select SPI Device
spi_transfer(register_name); //Write byte to device
in_byte1 = spi_transfer(0x00);
in_byte2 = spi_transfer(0x00);
digitalWrite(SLAVESELECT,HIGH);
in_word = UBLB(in_byte1,in_byte2);
return(in_word);
}
Could this be because of the cast from float to unsigned long? I'm using Arduino 0013, did the types change between then and now?