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 

 DS1621 Minuswerte Kategorie: Programmierung Basic (von Lorenz - 30.01.2005 11:26)
Ich habe von Henrik Reimers das Demo DS1621_auswertung_genau heruntergeladen. Im plus Bereich funkt es rechtgut, im minus Bereich habe ich den wert 254 usw. bekommen. Ich als Leihe habe probiert es umzuschreiben. Im null bereich springt die anzeige von 0 nach -1,5 und nicht von 0 nach -0,9 nach-0,8 usw.
Kann da jemand mir helfen.
 Anschließend die abgeänderte Demo.

Gruß Lorenz

     




'----------- Beispiel für C-Control1 Version 2x -------------------
'
'--- Nützliche Funktionen für die Auswertung des Temperatursensors-
'-------------------------- DS1621 --------------------------------
'
'Dieses Demoprogramm unterstützt die erweiterte Genauigkeit des
'IC. Gerundet wird auf 10tel Grad Celsius. Theoretisch kann
'eine Auflösung von 0,07 Grad Celsius erreicht werden, in der
'Praxis ist das aber unsinnig.

'Henrik Reimers Jan. 2004              http://www.henrik-reimers.de
'-------------------------------------------------------------------


'---- Variablen definieren-----------------------------------------

DEFINE value          AS    WORD
DEFINE temperatur     AS    WORD
DEFINE temp           AS    BYTE
DEFINE data           AS    BYTE
DEFINE counter        AS    BYTE
DEFINE slope          AS    BYTE
DEFINE dev            AS    BYTE

DEFINE temp1   AD [1]

'---- Funktionsdeklarationen --------------------------------------

DECLARE FUNCTION readtemp()

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

#INIT
'*** entbehrlich wenn die Pullups nicht eingeschaltet werden müssen

CONFIG.INIT                            'auf Config Register umleiten
CONFIG.GET TEMP                        'den aktuellen Wert lesen
temp = temp OR 30h
CONFIG.PUT TEMP                        'Bits setzten und zurück schreiben
CONFIG.OFF                             'Umleitung abschalten

'sollte immer sofort erfolgen, bevor I2C benutzt wird

LCD.INIT
LCD.PRINT "1621 TEST"
PAUSE 100
LCD.OFF

'--------- HAUPTPROGRAMM -----------------------------------------

#main

#main1
dev = 144            'Alle Useraddresseingänge auf 0 - ggf.
                     'anpassen.
readtemp()           'ruft die readroutine für ds1621 auf

LCD.INIT SWITCHONLY
LCD.clr
LCD.POS 1, 5
LCD.PRINT value/10 & "," & value mod 10 & " ßC "
LCD.POS 2,5
value =temp1*10 / 2 -250
LCD.PRINT value/10 & "," & value mod 10 & " ßC "
LCD.OFF

GOTO main1

'---- Funktionen -------------------------------------------------

FUNCTION readtemp()

IIC.INIT

IIC.start
IIC.SEND DEV
IIC.SEND EEh           'temperaturmessung anstoßen
IIC.STOP

PAUSE 10

IIC.start
IIC.SEND dev
IIC.SEND 22h            'temperaturmessung stoppen
IIC.stop

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

IIC.start
IIC.SEND DEV
IIC.SEND AAh            'temperaturmessung Lesekommando
IIC.stop

IIC.start
IIC.SEND (DEV+1)        'lowtemperaturbyte auslesen
IIC.GET value
temperatur = value
IIC.stop
'------------------------------
IIC.start
IIC.SEND DEV
IIC.SEND A8h           'Counter Lesekommando
IIC.stop

IIC.start
IIC.SEND (dev+1)       'Counter auslesen
IIC.GET value
counter = value
IIC.stop
'-----------------------------

IIC.start
IIC.SEND DEV
IIC.SEND A9h           'Slope Lesekommando
IIC.stop

IIC.start
IIC.SEND (DEV+1)       'Slope auslesen
IIC.GET value
slope = value
IIC.stop

IIC.OFF
IF temperatur < 128 THEN
                  value=((temperatur * 100 - 25)+((slope-counter)*100/slope*100)/100)/10
         ELSE
         temperatur = (255 XOR temperatur)+1
         value=((temperatur * 100 - 25)+((slope-counter)*100/slope*100)/100)/10
         value = (NOT value)
       END IF        
END FUNCTION




 Antwort schreiben

Bisherige Antworten:

Re: DS1621 Minuswerte (von Stefan Tappertzhofen - 30.01.2005 11:51)
    Re: DS1621 Minuswerte (von Lorenz - 30.01.2005 13:42)
        Re: DS1621 Minuswerte (von Henrik - 30.01.2005 14:10)
        Re: DS1621 Minuswerte (von Stefan Tappertzhofen - 30.01.2005 14:01)
            Re: DS1621 Minuswerte (von Lorenz - 30.01.2005 14:10)
                Re: DS1621 Minuswerte - bin ja kein Unmensch (von Henrik - 30.01.2005 16:17)
                Re: DS1621 Minuswerte (von Henrik - 30.01.2005 14:17)
                    Re: DS1621 Minuswerte (von Lorenz - 30.01.2005 18:45)