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: DS1621 unter CCBasic Kategorie: C-Control I V1.2/2.0 (von André H. - 27.12.2004 20:09)
 Als Antwort auf Re: DS1621 unter CCBasic von Stefan Süßmann - 27.12.2004 19:51
Hallo Stefan,

> der negative Bereich funktioiniert nicht. Wenn die Temperatur weiter unter 0°C sinkt, dann wechselt die Anzeige immer zwischen 255.0 C und 255.5 C.
>

Es kann nicht funzen, da in den Routinen von Die Hard die negativen Temperaturen
nicht korrekt berechnet werden.

Hier ein Bsp. zum Auslesen der Temperatur mit der CC1 V1.1 auf zwei Nachkommastellen.
Die Berechnung sollte für die CC1 V2 übernommen werden können:

'--------------------------------------------------------------
'Ansteuereungsbeispiele für I²C-Bus-Multitreiber "int_i2c.s19"
'Ansteuerung des DS1631-Temperatursensor
'CCTools 2004 cctools.hs-control.de
'--------------------------------------------------------------

'--------------------------------------------------------------
'Einsprungadressen von "int_i2c.s19" Release 19.09.04
'--------------------------------------------------------------
' PCF8574:
define PCFwrite   &h101
define PCFread    &h107
'--------------------------------------------------------------
' Bausteine mit Byte-Adress-Register
define WrByteBReg &h123
define WrWordBReg &h12F
define RdByteBReg &h15C
define RdWordBReg &h162
'--------------------------------------------------------------
' Bausteine mit Word-Adress-Register
define WrByteWReg &h139
define WrWordWReg &h141
define RdByteWReg &h16D
define RdWordWReg &h175
'--------------------------------------------------------------
' PCFLCD:
define putCmd8Bit &h1a9
define putCmd     &h17D
define putChar    &h1a3
define prnLCD     &h1C2
'--------------------------------------------------------------

define pop DA[1] 'Trick zum Auslesen des Stacks(siehe ccintern.dharlos.de)

define data word[1]

define Wordwert word[2]
define MSB byte[3]
define LSB byte[4]

define DS1631addr &b10010000

sys WrByteBReg,&b1100,&hAC,DS1631addr 'Init
sys PCFwrite,&h51,DS1631addr 'Init Kommando &h51

#DS1631_Loop
 sys RdWordBReg,&hAA,DS1631addr 'Sensor auslesen
 Wordwert=pop
 ' Temperatur berechnen
 if MSB and &h80 then goto negnum
  data=MSB * 100
  goto endif
 #negnum
  data = (128 - (MSB and &h7F))*(-100)
 #endif
  data=(((LSB shr 4) * 25)/4)+data

 'Ausgabe über Terminal:
 put 12
 print "Temperatur: ";data/100;",";
 data=abs(data) mod 100
 print data/10;data mod 10;" °C";
 pause 25
goto DS1631_Loop

syscode "int_i2c.s19" 'nur einmal laden, dann auskommentieren


MfG André H.

 Antwort schreiben

Bisherige Antworten: