-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: RN-Minicontrol und DS1621, Probleme

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.07.2006
    Beiträge
    53

    RN-Minicontrol und DS1621, Probleme

    Anzeige

    Hi,
    ich habe nun endlich meine Minicontrol zumlaufen gebracht. Nun will ich über den I2C und dem daran angeschloßenen Temp. sensor DS1621 die Temp. auslesen.

    Ich habe den DS1621 so an den I2C angeschloßen :

    DS1621 I2C
    SDA - SDA
    SCL - SCl
    Gnd - GND
    Tout -
    Vdd - 5V
    A0 - GND
    A1 - GND
    A2 - GND

    Ist das so richtig?

    Hier ist der Code den ich von hier geladen habe, was muss ich ändern das er mir einfach via Com port die Temp zeigt? Würde mich echt freuen wenn ihr mir helfen könntet

    Code:
    
    '------------------------------------die anweisungen für prozessor,use.-------------------------------------------------
    $regfile = "m168def.dat"
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    $hwstack = 32
    $framesize = 32
    $swstack = 32
    
    
    Config Scl = Portc.5
    Config Sda = Portc.4
    
    Config Pind.6 = Output
    Portd.6 = 0
    
    Dim ___lcdno As Bit
    Config Lcdpin = Pin , E = Portc.3 , E2 = Portd.7 , Rs = Portc.2 , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5
    Config Lcd = 20 * 4
    Dim Convert_strg As String * 10
    Declare Sub Showvalue_komma1(byval Format As String)as Byte
    Dim Device As Byte
    Dim Deviceread As Byte
    Dim Lowtemp As Byte
    Dim Hightemp As Byte
    Dim Value As Word                                           '!!!!!!!
    I2cinit
    
    Device = 144                                                'Wenn alle Adressleitungen des 1621 auf GND sind.
    Deviceread = 145
    
    '----------------------------------------------Hauptprogramm------------------------------------------------------------
    Do
    
    I2cstart
    I2cwbyte Device
    I2cwbyte &HEE                                               'Temperaturmessung anstoßen
    I2cstop
    
    I2cstart
    I2cwbyte Device
    I2cwbyte &HAA                                               'Temperaturmessung Lesekommando
    I2cstop
    
    I2cstart
    I2cwbyte Deviceread
    I2crbyte Lowtemp , Ack                                      'LSB holen
    I2crbyte Hightemp , Nack                                    'MSB holen
    I2cstop
    
    Value = Lowtemp * 10
    If Hightemp = 128 Then
    Value = Value + 5
    End If
    
    Print
    Cursor Off
    Cls
    Cursor 1 , 1
    Lcd Showvalue_komma1()
    Waitms 500                                                  'kurze Pause
    Loop
    End
    '------------------------------------------------------------
    Sub Showvalue_komma1()
    Convert_strg = Str(value)
    Convert_strg = Format(convert_strg , " 0.00")
    Lcd Convert_strg
    End Sub

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    anschluss passt, Programm hab ich das grad probiert:
    Code:
    ' 
    $regfile = "attiny2313.dat"
    $crystal = 16000000
    $baud = 9600
    
    Config Scl = Portb.7
    Config Sda = Portb.5
    
    Dim Device As Byte
    Dim Deviceread As Byte
    Dim Lowtemp As Byte
    Dim Hightemp As Byte
    
    I2cinit
    
    Device = &H90
    Deviceread = &H91
    
    Print
    Print "DS1621 Temperatur"
    
    ' Hauptprogramm
    Do
        I2cstart
        I2cwbyte Device
        I2cwbyte &HEE                                          'Temperaturmessung anstoßen
        I2cstop
    
        I2cstart
        I2cwbyte Device
        I2cwbyte &HAA                                          'Temperaturmessung Lesekommando
    
        I2cstart
        I2cwbyte Deviceread
        I2crbyte Lowtemp , Ack                                 'LSB holen
        I2crbyte Hightemp , Nack                               'MSB holen
        I2cstop
    
        Print Lowtemp ; "," ;
    
        If Hightemp = &H80 Then
            Print "5"
        Else
            Print "0"
        End If
    
        Waitms 700
    Loop
    
    End
    Ich hab jetzt aber nicht genauer geschaut, ob das mit einer negativen Temperatur mit dem ,5 so stimmt !

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    25.07.2006
    Beiträge
    53
    Ok, wenn ich daheim bin werde ich es gleich mal testen. THX

    Noch eine kleine Frage, und zwar Arbeite ich zum ersten mal mit dieser Programmiersprache, wenn ich eine Funktion erstelle z.B:

    Sub Test_Funktion()
    Print "Test"
    End Sub

    Wie kann ich diese ausführen? Bei C war es ja einfach nur :

    Test_Funktion();

    und dann ging es ... wie mache ich das hier?

    MfG
    Placa und nochmal THX für die Hilfe

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    versuch mal "call Test_Funktion()"

    wobei es hier keine Funktion sondern eine Sub ist.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    25.07.2006
    Beiträge
    53
    OK und wie erstelle ich eine Funktion

    ThX

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    nicht mir "sub" sondern "Function"

    declare function test() as Integer
    bla
    bla
    bla
    text=bla
    end function

    EASY? In der Bascom-Hilfe müssten Beispiele Hierzu sein

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    25.07.2006
    Beiträge
    53
    Alles klar, nun habe ich aber noch ein weiteres Problem und zwar scheint es so also ob sich die MiniControl aufhängt nach : "I2cwbyte Device", an was kann das liegen?

    MfG
    Placa

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Sollte eigentlich nur passieren, wenn der I2C-Bus nicht richtig zusammengeschraubt ist, zB. keine Pullups.
    Bei mir funktioniert es (mein Beispiel)

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    25.07.2006
    Beiträge
    53
    Also ich habe meine Minicontrol fertig gekauft, gibt es möglichkeiten um herauszufinden was kaputt ist?

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Als erstes könnte man messen ob an den beiden Leitungen vom I2C-Bus in etwa 5V anliegen, dann kommts auch noch drauf an wie lange das Kabel zum 1621 ist.
    Je länger umso schlechter die Datenübertragung.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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