Hallo, versuche gerade einen DS1621 Temperatursensor mit I2C-Ansteuerung an einem AVR dranzustricken. Soweit eigentlich problemlos, bis auf folgendes: Der Sensor kann hat standardmäßig eine Auflösung von 0,5 Grad, kann aber trickreich auf 0,1 Grad gebracht werden. Dazu werden weitere Register des Bausteins ausgelesen und darüber rechnerisch das Ergebnis auf 0,1 Grad gebracht. Und genau da liegt der Haken: wie bekomme ich eine Formel der Art Temperatur = (Slope - Counter) / Slope If Temp_Read AND (0x08) Temp_Read = 128 - (Temp_Read & 0x7F) Temperatur = Temperatur - 0,25 - Temp_Read ELSE Temperatur = Temperatur + 0,25 - Temp_Read ENDIF mit Slope, Counter und Temp_Read = 8bit-Werte aus Sensorregistern und Temperatur = ? in Assembler (und vor allem Integer) in den AVR getütet, um eine Anzeige z.B. 17,8°C auf einem LCD zu bekommen? Gruß R A L F
Hallo R A L F, Divisionsroutine findest Du bei Atmels-Homepage. Am einfachsten rechnest Du mit 16Bit-Werten (jeweils 2 Register zusammenfassen). Alle Werte werden mit 4 Multipliziert, das eleminiert die 0.25 zu 1. Zum Schluß "brauchst" Du nur die Temperatur wieder durch 4 zu teilen und hast die eigentliche Temperatur. Hier muß man aber noch ein wenig Gedankenarbeit einfließen lassen, damit man das als Fließkomma aufs LCD bekommt... Grüße Oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.