LM 76 Auslesen Zweierkomplement ??

M

Martin Jahn

Guest
Hallo,

wünsche erst mal noch allen Lesern alles Gute und Erfolg für das neue Jahr
2006.
Ich arbeite an einer Temperaturauswertung mit einem LM 76 von National,
dieser kommuniziert über I2C mit einem PIC Controller, programmiert habe ich
das mit einem Basic - Compiler (Pic Basic 2 von Ralf Pagel). Alles klappt
gut nur bei der Auswertung der negativen Teperaturen bin ich ins Straucheln
geraten, diese werden im sog. Zweierkomplement übertragen. Umwandlung durch
Invertierung und Addition von 1. Soweit alles noch klar, bei der Ausführung
bin jetzt jedoch auf das Problem gestossen, dass es entweder keinen Bereich
von 0 bis - 1 Grad gibt oder mir 1 Minus Grad über den ganzen negativen
Bereich fehlt. Ich habe die Funktion der Invertierung am Vorhandensein des
negativen Vorzeichenbits festgemacht, nun beginnt der negative Bereich aber
bereits bei 0,0625 Grad. Wenn ich jetzt sage "if Vorzeichenbit = 1 then
Einerstelle = Einerstelle + 1" erhalte ich den Wert 1,0625 Grad was in
diesem Fall definitiv 1 Grad zu kalt wäre. Lasse ich die Addition aber weg
erhalte ich z.B. bei dem im Datenblatt genannten Punkt von - 25 Grad nur
eine Anzeige von - 24. Wenn ich sage " if Einerstelle >1 then Einerstelle =
Einerstelle +1 " verschiebe ich das Problem um ein Grad, löse es aber nicht.
Wäre schön wenn mir jemand erklären könnte wie man das richtig macht.
Beste Grüße
Martin
 
Martin Jahn wrote:
wünsche erst mal noch allen Lesern alles Gute und Erfolg für das neue Jahr
2006.
Ich arbeite an einer Temperaturauswertung mit einem LM 76 von National,
dieser kommuniziert über I2C mit einem PIC Controller, programmiert habe ich
das mit einem Basic - Compiler (Pic Basic 2 von Ralf Pagel). Alles klappt
gut nur bei der Auswertung der negativen Teperaturen bin ich ins Straucheln
geraten, diese werden im sog. Zweierkomplement übertragen. Umwandlung durch
Invertierung und Addition von 1. Soweit alles noch klar, bei der Ausführung
Das mit dem 1 addieren bezieht sich auf normale Ganzzahlen. Bei
Fixpunktzahlen darfst du natürlich nicht 1,0 addieren. Entweder du
betrachtest das erstmal als normale Ganzzahl addierst dann eine 1 und
betrachtest es erst danach als Fixpunkt. Oder du musst im Fall deines
LM76 halt halt 0,0625 addieren.

Jan
 
Hallo Martin,

Martin Jahn schrieb:

Alles klappt
gut nur bei der Auswertung der negativen Teperaturen bin ich ins
Straucheln
geraten, diese werden im sog. Zweierkomplement übertragen.
[...]
Wäre schön wenn mir jemand erklären könnte wie man das richtig macht.
ich beziehe mich mal auf die Beispiele in figure 2 im Datenblatt:

0,1001,0110,0000(bin) = 2400 -> 2400 * 0.0625 Grad = 150 Grad
0,0111,1101,0000(bin) = 2000 -> 2000 * 0.0625 Grad = 125 Grad
0,0000,0000,0001(bin) = 1 -> 1 * 0.0625 Grad = 0.0625 Grad
0,0000,0000,0000(bin) = 0 -> 0 * 0.0625 Grad = 0 Grad
1,1111,1111,1111(bin) = -1 -> -1 * 0.0625 Grad = -0.0625 Grad
1,1110,0111,0000(bin) = -400 -> -400 * 0.0625 Grad = -25 Grad
1,1100,1001,0000(bin) = -880 -> -880 * 0.0625 Grad = -55 Grad

HTH
Ernst
 

Welcome to EDABoard.com

Sponsor

Back
Top