Hi,

du hast glaube ich einen Fehler beim einlesen! Durch das Overlay ersparst du dir das shiften, deswegen springen deine Werte (wegen dem Shiften) um den Wert 256 Bild  
Probier mal so:
Code:
Dim Imx As Integer
Dim Imy As Integer
Dim Imz As Integer

Dim Imx_tmp(2) As Byte At Imx Overlay
Dim Imy_tmp(2) As Byte At Imy Overlay
Dim Imz_tmp(2) As Byte At Imz Overlay

Sub Magnet_readsensordata()    
 
I2cstart    
I2cwbyte Magnet_w_addr   
I2cwbyte Out_x_h_m   
I2cstart   
I2cwbyte Magnet_r_addr     
I2crbyte Imx_tmp(1) , Ack   
I2crbyte Imx_tmp(2) , Ack    
I2crbyte Imy_tmp(1) , Ack   
I2crbyte Imy_tmp(2) , Ack    
I2crbyte Imz_tmp(1) , Ack    
I2crbyte Imz_tmp(2) , Nack    
I2cstop  

End Sub
Kann sein, dass du zuerst das zweite Byte auslesen musst, das kommt drauf an, ob dein Sensor MSB oder LSB zuerst ausgibt.

Gruß
Chris