Hallo an alle

So es funktioniert jetzt so einigermaßen. Nur die Temperaturs stimmt noch nicht wirklich.

Hier nun die read Funktion:
Code:
int lm75_read(void)
{

  i2cSendStart();
  i2cSendByte(LM75_ADRESS | 1); //Sende Adresse mit read Bit
  i2cSendStart();
  i2cReceiveByte(FALSE);
  temp.high = i2cGetReceivedByte();
  i2cReceiveByte(FALSE);
   temp.low = i2cGetReceivedByte();
  i2cSendStop();
}
Der Prototyp von i2cGetReceivedByte():
Code:
inline u08 i2cGetReceivedByte(void)
{
	// retieve received data byte from I2C TWDR
	return( inb(TWDR) );
}
temp.low ist ja die Kommastelle. Sie steht linksbündig in der Variable temp.low. Wenn ich sie nach Rechts verschiebe und mit 5 Multipliziere, hab ich die Kommastelle oder??

temp.low = (temp.low>>=7)*5;

Soe meine ich das.

Die High Variable macht mir jedoch noch mehr Sorgen. Ich bekomm immer 0xFF (255) empfangen. Den empfangenen Wert muss ich ja durch 2 Teilen, oder??

125°C entspricht 1111 1010 = 0xFA = 250
25°C enspricht 110010 = 32 = 50

Daraus schleiße ich, dass ich den Wert durch 2 dividieren muss, oder?? Muss ich sonst noch etwas mit der Zahl machen??

Danke im Voraus

Gruß Robert