Hallo! Für meine Facharbeit entwickle ich zur Zeit ein Steuerteil, mit dem Temperaturen erfasst und ausgewertet werden sollen. Hierfür benutze ich einen PIC16F873A als Controller und einen LM75 als Temperatursensor. Dieser wird über den I2C-Bus abgefragt. Programmiert werden soll der PIC in C (CCS-Compiler). Jetzt habe ich folgendes Problem: Es werden aus dem LM75 2 mal 8 bit ausgelesen. Das MSB aus dem ersten Byte gibt an, ob die Temperatur positiv (0) oder negativ (1) ist. Die nächsten 7 Bit enthalten den eigentlichen Temperaturwert als Binärzahl. Bei negativer Temperatur (MSB = 1) liegt der Temperaturwert im Zweierkomplement-Format vor. Im zweiten Byte spielt nur die erste Bitstelle eine Rolle. Sie gibt Auskunft darüber, ob der gemessene Wert auf ,5 C endet. Die übrigen 7 Bits sind überflüssig. Jetzt zu meinem Problem. Ich kann diese 8 Bit-Pakete ja ganz einfach z.B. in eine char-Variable einlesen ( char a; a = i2c_read(); ). Nur wie kann ich die einzelnen bits einlesen und daraus eine Dezimalzahl machen? Des weiteren soll der Wert auch auf dem LCD-Display ausgegeben werden. Dafür wäre es ja notwendig, eine Typumwandlung von (short) int nach char zu machen!?! Wie ist das möglich? Danke für eure Hilfe! Mfg Stephan
ich benutze den CC5X-Compiler, der besitzt diese Sonderfunktion i2_read() nicht. Aber versuch doch mal in folgenden Forum nachzufragen. Dort kriegst du bestimmt eine Antwort: http://www.forenshop.net/cgi-bin/forenserver/foren/F_1402/cutecast.pl
Hallo StefanW: seh Dir mal die CCS example files an. Im Anhang eine Funktion davon abgeleitet die ich bei mir verwende. Gerhard
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.