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 DIE HARD - 25.12.2004 20:03)
 Als Antwort auf DS1621 unter CCBasic von Stefan Süßmann - 25.12.2004 19:47

> Hallo,
>
> hat es inzwischen jemand geschafft, einen DS1621 unter CCBasic zum Laufen zu bringen?
> Mir gelingt es jedenfalls nicht.
> Des Sensor wird als Device gefunden und das war es. Ich bekomme keine Daten oder das Config-Register ausgelesen.
>
> mfg
>
> Stefan
>
>
Ich habe was für den 1631.
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'IIIIIII  DEMO ZUM BASIC-COMPUTER UNIT M 1.2/2.0 (by DIE HARD)  IIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'--------------------------------------------------------------------
' Beispiel zum BASIC-COMPUTER    mit dem Programmer/Application-Board
'--------------------------------------------------------------------
' ANWENDUNG:         IIC_BUS - TEMPERATURSENSOR (xxxxxx)
'                    TEMPERATUR DS1631 AM IIC-BUS-BUS ABFRAGEN
'
'--------------------------------------------------------------------
' Eine kleine DEMO welchedie TEMPERATUR eines DS1631 am IIC-BUS abfragt

' Beschreibung:
' Der DS1631 wird angesprochen indem zunächst die START-Bedingung und
' danach die ADRESSE zusammen mit dem READ/WRITE-Bit gesendet wird.
' Die Adresse besteht aus einem festen, nicht veränderbaren Anteil und
' einem vom Benutzer wählbaren Teil (drei Jumper). Das letzte Bit
' legt fest ob eine READ (Eingabe) oder WRITE (Ausgabe) über den PCF 8574
' erfolgt
' Es ist nur die Schreibadresse als Konstante definiert, die Leseadresse
' berechnet der Treiber zu Schreibadresse+1
' In diesem Beispiel hat der DS1631 die Adresse 7 (alle Bits auf HI)
' d.h. alle Jumper müssen abgezogen sein.
' Damit ergibt sich für eine READ-Operation folgender Wert:
'
' 1 0 0 1 1 1 1 1       READ-Operation ADR 159
' I------I-----I-I
' FIX ADR  ADR  R/W
'
' Für eine WRITE-Operation ist das letzte Bit LO und es ergibt sich
' folgender Wert:
'
' 1 0 0 1 1 1 1 0       WRITE-Operation ADR 158
' I------I-----I-I
' FIX ADR  ADR  R/W
'-----------------------------------------------------------------------
'Programm:
'Das Unterprogramm DS1631GET_TEMP liefert in TEMP einen 9 Bit-Wert,
'der allerdings linksbündig verschoben ist. Für eine richtige Anzeige
'ist eine entsprechende Korrektur notwendig. Diese 9 Bit liefern eine
'Auflösung von 0.5 Grad.
'Das Programm liset den DS 1631 im "ONE SHOT" Modus, d.h. der Sensor ist
'nur während der Temperaturwandlung/Übertragung Strom (1mA). Sonst beträgt
'die Stromaufnahme des Sensor selbst < 1uA
'Die Demo ist im neg. Temperaturbereich nicht getestet.
'------------------------------------------------------------------------



'--------------------------
'------ I/O PORTS ---------
'--------------------------
define LIGHT         port[16]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
define TEMP         word[1]
define TEMPHI       byte[1]
define TEMPLO       byte[2]
define SCONFIG      byte[3]
define DATA         byte[4]


'--------------------------
define DS1631 158  'IIC ADDRESS $9E
'--------------------------
'--- DS1631 COMMANDS ------
'--------------------------
define CONVERT          &H51
define STOP_CONVERT     &H22
define READ_TEMP        &HAA
define CONFIG           &HAC
define RESET            &H54
'---------------------------



#INIT
LIGHT=off
'----------- EINSCHALT MELDUNG ------------------------
print"#ON_LCD#";
print"#INIT#";
print"READ DS1631 TEMP";
print"#OFF#";
'-----------------------------------------------------
'gosub DS1631RESET
DATA=1:gosub DS1631WRITE_STATUS  ' ONE SHOT MODE
pause 10
data=0
'-------------------------------------------------------------
'-----            LOOP READING TEMPERATURE                 ---
'-------------------------------------------------------------
#LOOP
gosub DS1631CONVERT
#WAIT_READY
gosub DS1631GET_STATUS
if (DATA and &H80)=0 then goto WAIT_READY
gosub DS1631GET_TEMP
if TEMPHI>128 then goto NEGTEMP
TEMP=TEMP shr 7:goto show
#NEGTEMP TEMP=(TEMP shr 7)or &HFE
#show
print"#ON_LCD#";"#L201#";"TEMP: ";TEMP/2;".";(TEMPLO and 1)*5;" C        ";"#OFF#";
goto LOOP
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII





'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'IIIII             DS1631  DRIVER                 III
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

'------------------   DS1631 RESET  ------------------
#DS1631RESET
print"#ON_IIC#";"#START#";:put DS1631:put RESET:print"#STOP#";"#OFF#";
goto IIC_STATUS
'------------------   DS1631 CONVERT ------------------
#DS1631CONVERT
print"#ON_IIC#";"#START#";:put DS1631:put CONVERT:print"#STOP#";"#OFF#";
goto IIC_STATUS
'----------------- GET DS1631 STATUS -----------------
#DS1631GET_STATUS
print"#ON_IIC#";"#START#";:put DS1631:put CONFIG:print"#STOP#";"#OFF#";
print"#ON_IIC#";"#START#";:put DS1631+1:get DATA:print"#STOP#";"#OFF#";
goto IIC_STATUS
'----------------- WRITE DS1631 STATUS -----------------
#DS1631WRITE_STATUS
print"#ON_IIC#";"#START#";:put DS1631:put CONFIG:put DATA:print"#STOP#";"#OFF#";
goto IIC_STATUS
'----------------- GET DS1631 TEMPERATURE -----------------
#DS1631GET_TEMP
print"#ON_IIC#";"#START#";:put DS1631:put READ_TEMP:print"#STOP#";"#OFF#";
print"#ON_IIC#";"#START#";:put DS1631+1:get TEMPHI:get TEMPLO:print"#STOP#";"#OFF#";
goto IIC_STATUS
'-----------------------------------------------------
'----- CONFIG REGISTER ABFRAGE UND ERROR CLEAR -------
'-----------------------------------------------------
#IIC_STATUS
print"#ON_CONFIG#";        'UMLEITUNG ZUM CONFIG MODULE
get SCONFIG                 'CONFIG REGISTER LESEN
put (SCONFIG and &B10111111)'IIC ERROR FLAG IN CONFIG LÖSCHEN
print"#OFF#";
if (SCONFIG and &B01000000)>0 then LIGHT=on else LIGHT=off
return


 Antwort schreiben

Bisherige Antworten:

Re: DS1621 unter CCBasic (von pasch - 8.06.2006 14:08)
    Re: DS1621 unter CCBasic (von ManfredW - 8.06.2006 17:19)
Re: DS1621 unter CCBasic (von Stefan Süßmann - 25.12.2004 20:29)
    Re: DS1621 unter CCBasic (von DIE HARD - 25.12.2004 20:34)
        Re: DS1621 unter CCBasic (von Stefan Süßmann - 27.12.2004 19:51)
            Re: DS1621 unter CCBasic (von DIE HARD - 27.12.2004 20:59)
                Re: DS1621 unter CCBasic (von Stefan Süßmann - 28.12.2004 14:30)
                    Re: DS1621 unter CCBasic (von DIE HARD - 28.12.2004 15:15)
                       Re: DS1621 unter CCBasic (von peter - 11.07.2006 20:00)
                       Re: DS1621 unter CCBasic (von Stefan Süßmann - 28.12.2004 15:45)
            Re: DS1621 unter CCBasic (von André H. - 27.12.2004 20:09)
        Re: DS1621 unter CCBasic (von Mihael - 26.12.2004 15:13)