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
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