
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
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 |