- LiTime Speicher und Akkus         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Terra-Steuerung mit C-Control I Station 2.0

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2007
    Ort
    Sutherland
    Beiträge
    12
    Anzeige

    Powerstation Test
    danke dir ich versuchs

    irgendwie muss ich das ja hinbekommen bei der ganzen hilfe...

    vielen dank

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2007
    Ort
    Sutherland
    Beiträge
    12
    da sind sie wieder meine vielen fehler und ich sehe nimmer durch hehe
    zuerst der code für die steuerung...

    Code:
    '------------Thermometer Modul----------------------
    
    define temp   as word    'Messwert (9 bit)
    define TEMPHI as byte    'oberer Teil
    define TEMPLO as byte    'unterer Teil
    const  ADR = 158         '(9EH) Adresse=111, LSB=O=W
    
    import "C:\DS1631_GENERIC.bas"
    
    '-----------------------------------------------------
    
    LCD.init                         'LCD wird hier bentzt
    LCD.print  "READ DS1631 Temp"    
    LCD.Off                          'Bus frei machen für IIC
    
    '-----------------------------------------------------
    
    DS1631RESET(ADR)                 'aus der Bibliothek
    DS1631SET_STATUS(ADR,1)          'auslesen vorbereiten
    
    '----------------------------------------------------- 
    
    #LOOP
    pause 5                          'Einstellzeit abwarten 
    
    DS1631CONVERT(ADR)               'DA-Umsetzung starten
    DS1631WAIT_READY(ADR)            'auf Bereitmeldung warten
    TEMP=DS1631GET_TEMP(ADR)         'Messwert an Variable
    
    LCD.init switchonly              'LCD reaktivieren
    LCD pos 2,1                      'Cursor auf Zeile 2, Pos. 1
    TEMP=TEMP shr 7                  'Messwert rechtsbündig
    LCD.print "Temp: " & TEMP/2 & "." & (TEMP and 1) +5 & "C"
    LCD.off                          'Bus wieder frei machen
    
    goto LOOP
    und nun die generic.bas

    Code:
    'DS1631_GENERIC.BAS 
    '-------------------------- 
    IIC.INIT 
    config.init 
    '-------------------------- 
    '------ I/O PORTS --------- 
    '-------------------------- 
    define LIGHT port[16] 
    '-------------------------- 
    '---- SYSTEM MEMORY ------- 
    '-------------------------- 
    define TEMP as word 
    define TEMPHI as byte 
    define TEMPLO as byte 
    DEFINE SDA AS PORT[9] 
    DEFINE SCL AS PORT[10] 
    
    SDA = ON 
    SCL = ON 
    IIC.init 
    DEFINE pLED1 AS PORT[25] 
    DEFINE pLED2 AS PORT[26] 
    DEFINE pLED3 AS PORT[27] 
    DEFINE pLED4 AS PORT[28] 
    DEFINE pKuehlung AS PORT[29]                  'Kuehlung ein / aus 
    DEFINE pSchuetz AS PORT[31]                   'Hauptschuetz Ein/Aus 
    DEFINE pKlappenAussen AS PORT[32]             'Aussenklappen Ein/Aus 
    DEFINE pHeizung AS PORT[73]                   'Heizung Ein/Aus 
    DEFINE pWarmwasserAuf AS PORT[74]             'Heizung Ein/Aus 
    DEFINE pWarmwasserZu AS PORT[75]              'Heizung Ein/Aus 
    DEFINE pZuluftEin AS PORT[76]                 'Zuluft einschalten 80% 
    DEFINE pZuluftHigh AS PORT[77]                'Zuluft maximal 100% 
    DEFINE pAbluftEin AS PORT[78]                 'Abluft einschalten 80% 
    DEFINE pAbluftHigh AS PORT[79]                'Abluft maximal 100% 
    DEFINE pAbluftLow AS PORT[80]                 'Abluft drosseln 70% 
    
    pLED1 =OFF 
    pLED2 =OFF 
    pLED3 =OFF 
    pLED4 =OFF 
    pHeizung =OFF 
    pWarmwasserAuf =OFF 
    pWarmwasserZu =OFF 
    pZuluftEin =OFF 
    pZuluftHigh =OFF 
    pAbluftEin =OFF 
    pAbluftHigh =OFF 
    pAbluftLow =OFF
    und nun die fehler welche ich bei meinem wissen nicht zuordnen kann, ich weis in der sache ist mein wissen nicht weit her ^^

    Log File für C:\Programme\basicpp2006\compiler\cc.bas
    9 Fehler.

    "C:\DS1631_GENERIC.bas" 12: Bezeichner kann nicht verwendet werden oder ist mehrfach deklariert. (1)
    "C:\DS1631_GENERIC.bas" 13: Bezeichner kann nicht verwendet werden oder ist mehrfach deklariert. (1)
    "C:\DS1631_GENERIC.bas" 14: Bezeichner kann nicht verwendet werden oder ist mehrfach deklariert. (1)
    "C:\Programme\basicpp2006\compiler\cc.bas" 18: Befehl oder Bezeichner unbekannt. (9)
    "C:\Programme\basicpp2006\compiler\cc.bas" 19: Befehl oder Bezeichner unbekannt. (9)
    "C:\Programme\basicpp2006\compiler\cc.bas" 26: Befehl oder Bezeichner unbekannt. (9)
    "C:\Programme\basicpp2006\compiler\cc.bas" 27: Befehl oder Bezeichner unbekannt. (9)
    "C:\Programme\basicpp2006\compiler\cc.bas" 28: Befehl oder Bezeichner unbekannt. (9)
    "C:\Programme\basicpp2006\compiler\cc.bas" 31: Befehl oder Bezeichner unbekannt. (9)
    habe dieses bsp. aus der eam ausgabe 14 seite 66

  3. #13
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    47
    Beiträge
    622
    Hi,

    woher hast du die DS1631_Generic.bas? Wie auf Seite 66 steht, liegt diese im Basic++-Unterverzeichnis "lib" und sieht dann so aus:

    Code:
    'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
    'III      BASIC++  DEMO ZUM BASIC-COMPUTER UNIT M 1.2/2.0       IIIII
    'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
    '--------------------------------------------------------------------
    ' Beispiel zum BASIC-COMPUTER    mit dem Programmer/Application-Board
    '--------------------------------------------------------------------
    ' LIBRARY:                           COMMON DS1631 CONTROL ROUTINES
    '                                    
    '---------------------------------------------------------------------
    'DS1631RESET(ADDR as byte)                    RESET
    'DS1631CONVERT(ADDR as byte)                  START CONVERSION
    'DS1631GET_STATUS(ADDR as byte)               READ STATUS REGISTER,RETURN BYTE
    'DS1631SET_STATUS(ADDR as byte,DATA as byte)  WRITE STATUS REGISTER 
    'DS1631GET_TEMP(ADDR as byte)                 RETURN WORD WITH TEMP
    '-------------------------------------------------------------------
    
    '--------------------------
    '--- DS1631 COMMANDS ------
    '--------------------------
    const CONVERT=51h
    const STOP_CONVERT=22h
    const READ_TEMP=AAh
    const CONF=ACh
    const RESET=54h
    
    '-----------------------------------------------------
    '------------------   DS1631 RESET  ------------------
    '-----------------------------------------------------
    FUNCTION DS1631RESET(ADDR as byte)
    IIC.INIT
    IIC.START
    IIC.SEND ADDR
    IIC.SEND RESET
    IIC.STOP
    IIC.OFF
    END FUNCTION
    '-----------------------------------------------------
    '------------------   DS1631 CONVERT  ----------------
    '-----------------------------------------------------
    FUNCTION DS1631CONVERT(ADDR as byte)
    IIC.INIT
    IIC.START
    IIC.SEND ADDR
    IIC.SEND CONVERT
    IIC.STOP
    IIC.OFF
    END FUNCTION
    '-----------------------------------------------------
    '----------------- GET DS1631 STATUS -----------------
    '-----------------------------------------------------
    FUNCTION DS1631GET_STATUS(ADDR as byte)
    define DATA as byte
    IIC.INIT
    IIC.START
    IIC.SEND ADDR
    IIC.SEND CONF
    IIC.STOP
    
    IIC.START
    IIC.SEND (ADDR+1)
    IIC.GET DATA
    IIC.STOP
    IIC.OFF
    RETURN DATA
    END FUNCTION
    '-------------------------------------------------------
    '----------------- SET DS1631 STATUS -----------------
    '-------------------------------------------------------
    FUNCTION DS1631SET_STATUS(ADDR as byte,DATA as byte)
    IIC.INIT
    IIC.START
    IIC.SEND ADDR
    IIC.SEND CONF
    IIC.SEND DATA
    IIC.STOP
    END FUNCTION
    '-------------------------------------------------------
    '----------------- WAIT DS1631 READY   -----------------
    '-------------------------------------------------------
    FUNCTION DS1631WAIT_READY(ADDR as byte)
    #WT
    if (DS1631GET_STATUS(ADDR)) and 80h = 0 then goto WT
    END FUNCTION
    '-----------------------------------------------------
    '----------------- GET DS1631 TEMP -----------------
    '-----------------------------------------------------
    FUNCTION DS1631GET_TEMP(ADDR as byte)
    define TEMP as word
    define DATA as byte
    
    IIC.INIT
    IIC.START
    IIC.SEND ADDR
    IIC.SEND READ_TEMP
    IIC.STOP
    
    IIC.START
    IIC.SEND (ADDR+1)
    IIC.GET DATA
    TEMP=DATA*256
    IIC.GET DATA
    TEMP=TEMP+DATA
    IIC.STOP
    IIC.OFF
    RETURN TEMP
    END FUNCTION
    Desweiteren schreibt man "sein" Programm in der "Hauptdatei" und bindet nur die benötigten Treiber (hier für den DS1631) ein.
    Dadurch, dass du eine andere Generic.bas verwendest, in der die Variablen doppelt deklariert werden, bekommst du die ersten Fehlermeldungen.
    Die restlichen FM erhälst du, weil die im Hauptprog aufgerufenen Funktionen (z.B. DS1631Reset(ADR)) nicht in der importierten Datei enthalten sind.

    Weitere Vorgehensweise:
    1. Verwende die richtige DS1631_Generic.bas
    2. Verwende das Original-Hauptprogramm von Seite 66
    3 Bringe dies durch Upload in die C-Control zum Laufen
    4. Ändere/Erweitere nach belieben das Hauptprgramm um weitere Funktionen (z.B. 10s Temp anzeigen, 10s Uhrzeit anzeigen)
    5. Wenn du dich damit ein wenig vertraut gemacht hast, schreibe das eigentliche Programm...
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2007
    Ort
    Sutherland
    Beiträge
    12
    alles gut, danke für deine geduld tido

    habe nun nur noch einen fehler aber den werde ich wohl von selber raus bekommen, zumindest versuche ichs solange bis er weg ist ^^

    mfg physicus

    ps. gibt es eigentlich auch für den TEMPERATURFÜHLER DS18S20 eine generic.bas ?
    gefunden habe ich nur andere.

  5. #15
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    47
    Beiträge
    622
    Hi,

    nutze mal auf folgenden Seiten die SuFu:

    http://ccintern.dharlos.de/
    http://www.tappertzhofen.eu/

    EDIT: Ok, habe ich selbst mal gemacht und nichts konkretes gefunden...
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    29.12.2007
    Ort
    Sutherland
    Beiträge
    12
    hm ja ich such weiter, die seite von herrn tappertzhofen kenne ich auch schon ne weile
    auch schon ohne erfolg dort gesucht, aber ansonsten ist die auch ok

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2008
    Beiträge
    7
    Irgendwie bin ich auch am verzweifeln.
    Ich habe noch eine Frage: wie addressiere ich das Thermometer Modul richtig???
    Ich hab mir die Lib Datei inzwischen in meine Funktionen eingebaut.
    Und ich brauche nur noch die richtige Addresse, nur bei der Auswahl derselben tue ich mich etwas schwer...
    Imrahil
    *EDIT*
    Ich habe mitlerweile folgende Addressen ausprobiert:
    145, 147, 149, 151, 153, 155, 157, 159
    Keine hat einen brauchbaren Wert zurückgegeben.
    Meine Aufrufe:
    Code:
    ADR=159
    DS1631RESET(ADR)
    DS1631SET_STATUS(ADR,1)
    Code:
    LCD.Off
    DS1631CONVERT(ADR)               'DA-Umsetzung starten
    DS1631WAIT_READY(ADR)            'auf Bereitmeldung warten
    aussentemp=DS1631GET_TEMP(ADR)   'Messwert an Variable 
    LCD.Init
    Letzterer wird mittels Interrupt wiederholt aufgerufen.
    Vollständiger Quellcode (zu einer Heizungssteuerung, vorsicht, ist vorwiegend unkommentiert):
    Angehängte Dateien Angehängte Dateien

  8. #18
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    47
    Beiträge
    622
    Hi,

    ist schon spät, deshalb habe ich mir den vollständigen Code noch nicht angeschaut.
    Warum verwendest du nicht mal zum Testen die Beispiele aus dem Heft???
    Zwecks Adressierung solltest du dir noch mal Seite 59 antun, da steht alles wichtige darüber, auch dass die Schreibadresse gerade und die Leseadress ungerade ist. Zum Auslesen des Sensors musst du erst schreibend auf ihn zugreifen (Reset usw.)

    LCD.INIT wird normalerweise nur einmal am Programmanfang verwendet, soll das LCD nach einem LCD.OFF erneut aktiviert werden, so schreibt man LCD.SWITCHONLY (das nur am Rande).

    Evtl. habe ich morgen mal mehr Zeit...
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    21.01.2008
    Beiträge
    7
    zum Thema Heft: das hab ich nicht
    Allerdings bin ich inzwischen auch etwas säuerlich, ich hab immerhin ca 200 euro für eine Station und Sensoren ausgegeben...
    Die Dokumentation ist jedenfalls Bullshit.
    Die Switchonly anweisung funktioniert jedenfalls nicht (er kennt sie einfach nicht).
    Für welche Anweisungen muss ich denn die Schreibaddresse und für welche die Leseaddresse verwenden?
    Imrahil
    *EDIT*
    Ich vergass das wichtigste: danke für die Hilfe

  10. #20
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    47
    Beiträge
    622
    Hi,

    habe nicht gesehen, dass du nicht pysikus bist...
    Oben in "meiner" Generic.bas stehen alle erforderlichen IIC-Funktionen drin, für ADR ist eine gerade "Schreibadresse" einzugeben. Wird in der Funktion von Chip gelesen, so muss man nichts ändern, da dort (s. Generic.bas) schon z.B.

    IIC.SEND (ADDR+1)

    programmiert wurde und die Adresse zum Lesen um 1 erhöht wird.

    Zum Thema "richtige Adressierung": Im Datenblatt zum 1631 steht, welche Adresse sich abhängig der Pegel an den Ports A0-A2 ergibt.

    Bei LCD.SWITCHONLY hat sich der Fehlerteufel eingeschlichen, es fehlt das "INIT":

    LCD.INIT switchonly
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus