-         

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

Thema: LCD am I2C Bus ohne Erweiterungsplatine

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.01.2006
    Beiträge
    18

    LCD am I2C Bus ohne Erweiterungsplatine

    Anzeige

    Hi,

    Ich habe ein LCD, dass über den I2C bus gesteuert wird, an meinen Robby angeschloßen, doch dann musste ich leider feststellen, dass der einfache Robby ohne Erweiterungen keine Unterstützung für den I2C Bus bietet. Ich habe auch schon nach der emulierten Version des I2C Bus gesucht und bin fündig geworden, doch trotzdem konnte ich keine Erfolge erzielen.
    Das LCD habe ich an SDA und SCL angeschloßen. Kann mir jemand bei der Software helfen? Ich Suche Lösungsideen und/oder kleine Codeschnipsel

    Verzweifelte Grüße

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Markus16,

    nicht verzweifeln ... !

    Du kannst nur eine emulierte I2C-Version nehmen. Je nach dem, was die Software da vorsieht, must du 2 Ports des CCRP5 für den emulierten I2C-Bus nehmen. Es empfiehlt sich, Ports 9 und 10 dafür zu nehmen.
    Die Software muss darauf dann abgestimmt sein.

    An den Pins SCL und SDA kannst du nichts anschließen, weil die nur nutzbar sind, wenn du einen I2C-Treiber in die 256-Byte für Maschinensprache-Treiber laden würdest. Da drin ist aber der Treiber für den CCRP5.

    Gruß Dirk

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.01.2006
    Beiträge
    18
    Hallo Dirk,

    vielen dank für die schnelle Hilfe. Warum kann ich denn die Pins SCL und SDA nicht benutzen? Auch nicht mit der emulierten Version des I2C Bus?

    Mit Software abstimmen meinst du nur das ändern der Ports im Code oder? also nur die Zeile "define sda port[4] " in den gewünschten Port ändern? Und natürlich die Zeile für scl auch?

    Also kann ich die Pins SCL und SDA eigentlich garnicht gebrauchen?

    Viele Grüße Markus

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Markus16,

    Genau: SCL und SDA der C-Control I kannst du mit einem emulierten I2C (in CCBASIC programmiert) nicht benutzen. Das geht nur mit einem Maschinensprachetreiber. Da ist aber der P5DRIV12.s19 drin und belegt den ganzen Platz.

    Du must die von dir schon genannten Zeilen (define sda ... und define scl ...) so ändern, wie du den Bus anschließen willst.

    Gruß Dirk

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    12.01.2006
    Beiträge
    18
    Hallo Dirk,

    Nochmals vielen Dank für die schnelle Hilfe und die Mühe.

    Ich habe allerdings noch ein paar kleine Fragen zum Programmieren mit dem emulierten I2C Bus. Wie spreche ich das LCD genau an? Brauche ich dazu die Adresse des LCD? Wenn ja wo übergebe ich sie im Programm? Oder reicht das Aufrufen von "start_i2c"? Und wie genau funktioniert das Senden an das LCD? Einfach nur den Wert von "i2c_byte" ändern und "write_byte_i2c" aufrufen?

    Viele Grüße Markus

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Markus16,

    ich kenne die I2C-Routinen, die du gefunden hast, nicht genau.
    Vielleicht kannst du sie oder den Link dazu einmal posten.

    Gruß Dirk

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    12.01.2006
    Beiträge
    18
    Halo Dirk,

    den Quellcode hab ich hier im Board gefunden. Du kannst ihn im Downloadbereich ( Codeschnipsel / Quellcode -> Code für C-Control / M-Unit -> E-I2C SUBROUTINES v2.0 for CCIv1.1 & v2.0. ) herunterladen. Das senden der einzelnen Bytes habe ich mittlerweile verstanden und ich bin mir recht sicher das ich nur den Wert der Variable "i2c_byte" ändern muss. Ich versteh jedoch nicht wo und wie ich die Adresse des LCDs übergeben muss. Muss ich sie überhaupt übergeben?

    Schonmal vielen Dank für deine Hilfe und Mühe

    Viele Grüße Markus

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Markus16,

    ja, du must nacheinander die Bytes senden, die dein I2C-LCD braucht. Da ist immer auch die Adresse des LCD dabei. Das kann dann z.B. so aussehen:
    gosub I2CSTART
    I2C_BYTE=&HC0:gosub I2CWBYTE 'Adresse C0
    I2C_BYTE=0:gosub I2CWBYTE 'Register 0 lesen
    gosub I2CSTOP

    Hier wird HC0 (Adresse) und 0 gesendet. Bei deinem LCD sieht das sicher anders aus. Die Anleitung wird's sagen.

    Gruß Dirk

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    12.01.2006
    Beiträge
    18
    Hallo Dirk,

    nochmals vielen Dank für die Hilfe.

    Ich hab jedoch noch immer einige Probleme: Ich habe keine Informationen zu Steuerzeichen oder anderen Zeichen des LCDs gefunden. Weder im Internet noch in der Anleitung zum LCD. Und durch rumspielen habe ich auch nichts erreicht. Ich habe einige Bytes an das LCD gesendet, doch ohne jeglichen Erfolg.
    Ich kenne jedoch schon die Adresse des LCDs.
    Mein Code:

    gosub start_i2c
    I2C_BYTE=&H40:gosub write_byte_i2c
    I2C_BYTE=4:gosub write_byte_i2c
    gosub stop_i2c

    Kann mir jemand helfen? Weiß jemand welche Bytes das LCD braucht/verwendet? Ich habe nur Tabellen zu anderen LCDs gefunden...

    Viele Grüße Markus
    mfg Markus

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Markus16,
    Ich habe keine Informationen zu Steuerzeichen oder anderen Zeichen des LCDs gefunden. Weder im Internet noch in der Anleitung zum LCD.
    Da kann ich nicht helfen: Ich weiss nicht, welches I2C-LCD du hast. Du kannst da nur nach Anleitung gehen oder hier die genaue Bezeichnung des Displays posten.

    Gruß Dirk

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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