den swap verstehe ich auch nicht, nach Datenblatt müßte das MSB zuerst rauskommen. Also Vorzeichen, 2^6, 2^5, 2^4, ...,2^0, 2^-1, 7x 0. Der LM75 schickt hinten sieben Nullen, der DS75 bietet drei weitere Nachkommastellen.ProgFred hat geschrieben:danach wird (in einem Zwischenspeicher? > swap) der Wert bitweise verschoben, wohl um die unteren (Status-)Bits zu entfernen und den eigentlichen Wert an richtiger Stelle zu haben:Code: Alles auswählen
aInt:= swap(aInt) shr 7;
Korrekt. Die sign extension fehlt hier, d.h. schieben unter Beibehaltung des höchsten bits. Genau das ist unser Problem -- aus wenig minus wird dann viel plus!IMHO geht dabei die Vorzeicheninformation verloren!
Durch zwei teilen weil Auflösung = 0,5°C. Um acht Stellen schieben hätte die Nachkommastelle getötet, damals war es ja noch ein Integer. IIRC wird die aber ohnehin nicht ausgegeben, so daß man bei Integer hätte bleiben können.Hier stellt sich mir noch die Frage: Warum durch 2 teilen?
Hätte man da vorher nicht gleich um 8 Bit schieben können?
Gruß
Patrick