i2c ansteuerung mit PCF8574(ohne Bibliothek)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • i2c ansteuerung mit PCF8574(ohne Bibliothek)

      Hallo,

      Ich bin neu im Forum, befasse mich z.Z. mit der LCD-Ansteuerung über i2C.

      Habe schon alles mögliche versucht, auch viel gegoogelt.

      Dazu habe ich im Lexikon o.g. Artikel gefunden. Damit scheint mein LDC zum ersten Mal stabil zu funktionieren (bisher über Bibliotheken nur sporadisch)

      Jedoch verstehe ich die Funktion folgender Programmteile nicht:

      [*]'toggle the E -line
      I2csend Pcf8574_w , &B0011_0100
      I2csend Pcf8574_w , &B0011_0000
      Waitms 4
      'set 8-bit mode (attention)
      I2csend Pcf8574_w , &B0011_0100
      I2csend Pcf8574_w , &B0011_0000
      Waitms 1
      'set 8-bit mode (attention)
      I2csend Pcf8574_w , &B0011_0100
      I2csend Pcf8574_w , &B0011_0000

      hier wird doch 3 mal das gleiche gesendet, wozu ?

      ----------------------------------------------------------------------------------------

      und dieses hier: (ist bei dir auch auskommentiert)


      ' Hintergrundbeleuchtung einschalten:
      ' set lcd_temp.3 = 1

      Bascom (Demo) quittiert das mit einer Fehlermeldung

      ich habe die Hintergrundbeleuchtung (Pin 4 am PCF8574 ) direkt mit einem "i2cw Adresse, &B 0000_1000" eingeschaltet.
      damit werden aber alle anderen Leitungen auf 0 gesetzt, was sicher Fehlfunktionen beim LCD auslösen kann.

      Kann ich die Leitung schalten, ohne die anderen zu beeinflussen, oder muss ich den aktuellen Stand erst abfragen, dann diese Leitung UND-verknüpft zuschalten
      und wieder senden?

      Ich hoffe, ich habe mich verständlich ausgedrückt.

      Mit freundlichen Grüßen

      DS1074
    • wie oben schon geschrieben, habe ich die Ansteuerung über verschiedene Bibliotheken versucht.
      Manchmal hat es funktioniert, aber oft kamen nur wirre Zeichen oder das LCD blieb leer.
      Bin jetzt dabei, die Funktion des PCF8574 zu analysieren, ob da was auf der Strecke bleibt.
      Auch die Frequenzeinstellung mit "I2cdelay" habe ich schon von 15-1 durchgetestet, leider auch nur mit sporadischem Erfolg.

      Vielleicht habt Ihr noch Ideen, die mir weiterhelfen können.

      Grüße ds1074
    • Erst mal Danke für die Infos,

      hatte schon im Netz nach der Schaltung zum PCF8574 gesucht, habe das Teil mit dem LCD über A.. bekommen (China)
      o.g. Schaltung hier scheint auch die zu sein, welche ich habe.

      Steuere das ganze zum Testen über einen Atmega8A auf einem Pollin - Board mit Portsplitter an.
      Soll später das Anzeigedisplay für die Fernsteuerung eines Roboters dienen (umgebauter 'Real Robot')

      Pullups sind auf der Platine bereits installiert (je 10k).

      Werde aber alles noch mal durchchecken. Hab mir mittlerweile einen Oszi geleistet, wie aus meinem Namen ersichtlich ist.
      Hoffe damit weiterzukommen.

      Hab mir auch die YwRobot-LIB mal mit dem Texteditor näher angesehen, komme nur nicht klar damit.
      Vielleicht kann die noch mal mehr erklärt werden. Damit hat die Anzeige wenigstens ab und zu mal funktioniert.

      Bin also dankbar für weitere Tipps.

      Bis dahin
    • Ich stelle mal einen Codeschnipsel für PCF8574 bzw.PCF8574A ein. Die Dezimalwerte gelten für gelieferte Platinen ohne das daran Lötarbeiten an A0,A1,A3 vorgenommen worden sind.Der einsatz eines I2C -Scanners
      ist ebenfalls sinnvoll.Siehe Bascomforum -Codeschnipsel.

      BASCOM-Quellcode: Attiny 85

      1. Config Lcd = 16x2
      2. Config Scl = Portb.2
      3. Config Sda = Portb.0
      4. $lib "YwRobot_Lcd_i2c.lib" 'YwRobot Treiber für LCD
      5. Const Pcf8574_lcd = 126 'Dezimaladresse des I2C-LCDs
      6. 'Pcf8574_lcd = 78 Dezimal
      7. 'Pcf8574A_lcd = 126 Dezimal
      8. Dim Lcd_backlight As Byte '1 = an; 0 = aus. Wird erst durch einen LCD-Befehl umgesetzt!
      9. Config I2cdelay = 1 '1=1Mhz,5=200Khz,10=100Khz,15=66,66Khz
      10. 'Wenn in Lcd keine Anzeige muß der Delaywert erhöht werden.Mit Wert 15 beginnen und dann langsam verringern , erspart.viel in der Fehlersuche.
      11. Waitms 300
      12. Cls
      13. Cursor Off
      Alles anzeigen
    • Hallo an alle,

      habe den Code bei mir eingebunden und getestet. Scheint z.Z. zu laufen. Teste weiter in meinen Programmen.
      Kann es sein, dass die Reihenfolge der Konfiguration eine Rolle spielt.
      Habe z.B. die $lib "YwRobot_Lcd_i2c.lib" immer mit als erstes bei den Einstellungen zum Chip gesetzt, später erst die
      Zeilen 1 - 13

      Also erst mal vielen Dank für Eure Hilfe. Werde weiter ausgiebig testen.

      Grüße ds1074
    • Hallo,
      melde mich nach längerer Zeit mal wieder,

      Ich versuche z.Z. mein älteres LCD-Display "EA DIP204-4" per I2C-Portexpander wieder zum Leben zu erwecken.
      Hatte es bisher im Parallel-modus an der entsprechenden Anzahl Ports betrieben, hat auch ohne Probleme funktioniert

      Es verwendet aber den KS0073 Befehlscode.

      Dazu meine Frage:
      Kann ich das auch über die "YwRobot_Lcd_i2c.lib" ansteuern, oder macht da der Befehlssatz des KS0073 Probleme.
      Bisher erhalte ich nur schwarze Blöcke.
      Die "LCD-Backlight"-Steuerung funktioniert.

      Man kann laut Datenblatt auch eine Brücke auf SPI um löten, aber da traue ich mich z.Z. noch nicht dran, da ich dann auch nicht weiß, ob ich das dann mit o. g. Bibliothek ansteuern kann.

      Vielleicht hat jemand das Teil und kann mir weiterhelfen.


      Vielen Dank im Voraus