Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Probleme mit i2c / ds1621 Temperatur-ic Kategorie: C-Control I V1.1 (von Henrik, Homepage - 8.11.2004 21:02)
 Als Antwort auf Re: Probleme mit i2c / ds1621 Temperatur-ic von Eltor - 8.11.2004 12:22
Hallo,

erstmal freut es mich, daß mein Code doch nicht völlig vergebens gepostet wurde :-)
 
> Dann hab ich es mal mit dem CCBasic++ probiert und siehe da, es funktionierte alles so wie es
> sollte. Sogar zehntel Grad kann der  ds1621 anzeigen!

Rechnerisch gehen sogar 0,07 Grad - nur ergibt das in Verbindung der Genauigkeit des
Chips kaum Sinn.
Der Vollständigkeit halber sei au erwähnt, daß ich in meinem Code darauf verzichtet
habe, den Single Shot Modus zu benutzen. Das ist aber wurscht, da auch im continuos
Modus nsch einem Stop die Konvertierung erst vokllständig durchegeführt wird, nachdem
wie hier ein Stop Kommando erfolgt.


> Um auf des Rätsel's Lösung zu kommen habe ich den funktionierenden CBasic++ Quellcode
> umgeschrieben, damit der unter der C-Control 2.0 IDE läuft. Das Ergebnis vorweg: Es lief da
> nicht, keine sinnvollen Werte,  wie gehabt....

Versuche  mal mit Copy und paste die untenstehende Subroutine (ggf auch direkt, dann das
return loschen) auszuprobieren,

Sieht fast genauso aus wie Dein Code, aber ich war zu faul, das nun Buchstabe für Buchstabe zu überprüfen. Das läuft soeben bei mir völlig fehlerfrei mit dem alten Compiler auf einer V2.

Grüße
Henrik



#READTEMP
print "#OFF#";
print "#ON_IIC#";

print"#START#";
put dev
put &hEE       'temperaturmessung anstoßen
print"#STOP#";

print"#START#";
put dev
put &h22          'temperaturmessung stoppen
print"#STOP#";

'---------------------------

print"#START#";
put dev
put &hAA           'temperaturmessung Lesekommando
print"#STOP#";


print"#START#";
put dev+1         'lowtemperaturbyte auslesen
get value
temperatur = value
print"#STOP#";
'------------------------------
print"#START#";
put dev
put &hA8           'Counter Lesekommando
print"#STOP#";

print"#START#";
put dev+1         'Counter auslesen
get value
counter = value
print"#STOP#";
'-----------------------------

print"#START#";
put dev
put &hA9           'Slope Lesekommando
print"#STOP#";

print"#START#";
put dev+1         'Slope auslesen
get value
slope = value
print"#STOP#";

print"#OFF#";

value = ((temperatur*100-25) + ((slope-counter)*100/slope*100)/100)/10

return             'ggf löschen




Meine Homepage: http://www.henrik-reimers.de/control/mmsr.htm

 Antwort schreiben

Bisherige Antworten: