-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: I2C Spezialisten gesucht

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2005
    Ort
    Stuttgart
    Alter
    53
    Beiträge
    11

    I2C Spezialisten gesucht

    Anzeige

    Hallo,

    bin seit 2 Tagen am versuchen, meinem M8 Slave das senden von 2 bytes an den Master beizubringen, bisher ohne erfolg. Kann mir jemand mal erklären wie so etwas geht???

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609
    Hi,

    nicht sehr viele Infos.

    -Wie sieht die HW aus?
    -Funktioniert beim Master das Empfangen eines Bytes?
    -Wiki gelesen?
    MfG
    Tido

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

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.03.2006
    Beiträge
    200
    Um die Funktionsweise des I2C zu verstehen würde ich dir raten erst mal einen einfachen I2C Baustein anzusteuern, damit musst du dich nur um den Master kümmern. Empfehlen würde ich dem LM75, den kann man dann sicher auch für die eine oder andere Bastelei nutzen.

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2005
    Ort
    Stuttgart
    Alter
    53
    Beiträge
    11
    Dank erstmal an alle.

    zu der HW:
    master M32, slave M8. Weiter noch am Bus eingebunden DS1621 und DS 1307, diese funkionieren ohne Probleme. In TWI-Praxis vorhandenes Beispiel funktioniert auch ohne Probleme, leider wird da nur ein byte vom M8Slave an den Master gesendet, bei zwei byte wird nur das erste übertragen. Und da fangen meine Probleme an.........!!

    MfG Wolfgang

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Hast du dort auch geschaut ?
    http://www.roboternetz.de/wissen/ind...is_Multimaster

    Zum Verständnis:
    mit "M8Slave an Master" meinst du "master holt sich die Bytes" ?
    Also M8 = Slavetransmitter, M32 = masterreceiver ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2005
    Ort
    Stuttgart
    Alter
    53
    Beiträge
    11
    Hallole Picnick

    Ja, auch da geschaut (TWI_Praxis_Multimaster ), Forum durchsucht.......
    zu 2. Ja richtig master holt sich 2 bytes vom slave.
    M8 = Slavetransmitter, M32 = masterreceiver

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2005
    Ort
    Stuttgart
    Alter
    53
    Beiträge
    11
    Wie muss man den code von TWI-Praxis (Transmitter) verändern, das 2 bytes übertragen werden können??
    MfG Wolfgang

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609
    Hi,

    ich habe das folgendermaßen gelöst (Slave):

    Code:
    Do
        If Register = 0 Then Gosub Sensoren                     'Sensoren auswerten
    
        Twi_control = Twcr And &H80                             'prüfen, ob TWINT gesetzt ist; Bit7 von Controlregister
        If Twi_control = &H80 Then
            Twi_status = Twsr And &HF8                          ' Status
    
            If Twi_status = &H80 Or Twi_status = &H88 Then      'Wert, der gelesen werden soll
                Register = Twdr                                 'in Register speichern
            End If
            If Twi_status = &HA8 Or Twi_status = &HB8 Then      'Master will ein Byte haben
                If Register = 1 Then Twdr = High(druck)         'Druck MSB
                If Register = 2 Then Twdr = Low(druck)          'Druck LSB
                If Register = 3 Then Twdr = Wasser              'Wasser (Byte)
                If Register = 4 Then Twdr = High(tiefe)         'Echo MSB
                If Register = 5 Then Twdr = Low(tiefe)          'Echo LSB
             End If
    
            Twcr = &B11000100                                   ' TWINT löschen, mit ACK
        End If
    
    Loop
    Der Master sendet einen Wert von 0-5 an den Slave. Der Slave antwortet je nach gesendetem Wert (wird in "Register" abgelegt) mit dem entsprechendem Byte.
    Alternativ kann der Slave nach jedem gesendetetem Byte einen Zähler erhöhen und antwortet bei der nächsten Anfrage mit dem nächsten Byte.
    Mit meiner Lösung muss ich aber nicht alle Byte auslesen, wenn ich nur eins haben will. Will ich z.B. nur das "Wasser"-Byte haben, sendet der Master eine 3 an den Slave.
    MfG
    Tido

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

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2005
    Ort
    Stuttgart
    Alter
    53
    Beiträge
    11
    Hy Tido,

    danke für deine Idee, dies so umzusetzen. Werd das mal ausprobieren.

    Was mich wundert ist, das niemand dies mit einem "I2C-protokoll" macht. Dabei müsste es doch machbar sein, da viele "I2C-Geräte" die bytes nacheinander auslesen können, ohne irgendwelche kunstgriffe machen zu müssen. Werd mal an dem Thema dranbleiben.

    MfG Wolfgang

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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