mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitte um Hilfe: Sitronix ST7541


Autor: Seyhan Kozan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Benötige dringend Hilfe

Ich habe da ein Problem mit einem Sitronix ST7541:

Das Display an sich funktioniert zwar, aber wenn im gleichen I2C Bus
noch ein anderes IC ist haben wir das folgende verhalten (In unserer
Anwendung ist noch ein Eeprom im gleichen I2C Bus):

 - Wenn das Eeprom adressiert ist und aus dem Eeprom das Byte 0x78
(=Slave Adresse des Displays) gelesen wird, fühlt sich das Display
adressiert und die folgenden Daten, die aus dem Eeprom gelesen werden,
werden dann auch auf dem Display angezeigt.

 Auch der folgende Code zeigt dies:



    I2CStart ();
    c8I2CWriteByte (0x55);  // Dummy Byte
    c8I2CWriteByte (0x78);  // LCD slave address
    c8I2CWriteByte (0x40);
    c8I2CWriteByte (0xFF);
    c8I2CWriteByte (0xFF);
    I2CStop();

Obwohl nach der Startsequenz zuerst ein 0x55 gesendet wird und somit
nur das IC mit dieser Adresse adressiert sein sollte, generiert das
Display nach dem senden des zweiten Bytes (0x78) ein Acknowledge und
übernimmt dann alle folgenden Daten.

Gruss + Danke

Seyhan

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welches EEPROM wird denn mit 0x55 (01010101b) selektiert?
Üblich wäre 1010xxxRb xxx=Busadresse/Seitenadresse, R=R/W

Autor: Seyhan Kozan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0x55 ist nur ein Beispiel. Denn nach der I2C Startsequenz sollte jede
andere Slaveadresse als diejenige des LCD (0x78 und 0x79) bewirken,
dass das LCD die folgenden I2C Daten ignoriert bis die nächste
Startsequenz eintritt.
Unser Eeprom hat die Adresse 0xA0 und 0xA1, der Fehler tritt genau so
auf wie mit 0x55 als Slaveadresse

Grüsse

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann würde ich darauf tippen, daß eine ungewünschte Start-Bedingung
erzeugt wird.

Autor: Seyhan Kozan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo arc

Danke für den Tip. Falls nichts geht melde ich mich wieder.

Noch einmal vielen Dank. Wenn ich "nur" das Problem beheben kann.

Grüsse

seyhan

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Benötige dringend Hilfe

Ich habe da ein Problem mit einem Sitronix ST7541:

Das Display an sich funktioniert zwar, aber wenn im gleichen I2C Bus
noch ein anderes IC ist haben wir das folgende verhalten (In unserer
Anwendung ist noch ein Eeprom im gleichen I2C Bus):

 - Wenn das Eeprom adressiert ist und aus dem Eeprom das Byte 0x78
(=Slave Adresse des Displays) gelesen wird, fühlt sich das Display
adressiert und die folgenden Daten, die aus dem Eeprom gelesen werden,
werden dann auch auf dem Display angezeigt.

 Auch der folgende Code zeigt dies:



    I2CStart ();
    c8I2CWriteByte (0x55);  // Dummy Byte
    c8I2CWriteByte (0x78);  // LCD slave address
    c8I2CWriteByte (0x40);
    c8I2CWriteByte (0xFF);
    c8I2CWriteByte (0xFF);
    I2CStop();

Obwohl nach der Startsequenz zuerst ein 0x55 gesendet wird und somit
nur das IC mit dieser Adresse adressiert sein sollte, generiert das
Display nach dem senden des zweiten Bytes (0x78) ein Acknowledge und
übernimmt dann alle folgenden Daten.

Gruss + Danke

Seyhan

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo;

Hat leider nicht funktioneiert. Was könnte ich sonst noch tun?

Grüss + Danke

Seyhan

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schonmal den I²C-Bus analysiert? Ich fahre die Geschwindigkeit bei
solchen Fällen auf 0,5 bis 1 Hz herunter, dann kann man die einzelnen
Bits mit zwei Leuchtdioden an SDA und SCL sehen. Damit sollte sich eine
Startbedingung, die irgendwo nicht hingehört, finden lassen. Ich tippe
auch auf eine Startbedingung zuviel.
Die c8I2CWriteByte() - Funktion solltest Du auch mal posten, vielleicht
ist da ser Wurm drin.
Es wäre auch sinnvoll, wenn Du mal kurz beschreibst, was Du alles
bisher überprüft hast, sonst stochert man im Dunkeln.

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo thkais

Vielen Dank für den Tip. Falls ich nicht weiterkommen sollte werde ich
den Beitrag entsprechend erweitern.

Gruss + Dank

seyhan

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Leider auch nichts;

Den i2C BUS habe ich genau analysiert. Ich habe den Signalverlauf auch
auf dem Oszilloskop angeschaut und nach einer Startbedingung gesucht
und ich habe das Programm im Einzelschritt durchlaufen, aber keine
Startsequenz gefunden. Und wie gesagt, mit einem anderen LCD Kontroller
funktioniert es.
Hier noch die WriteByte Funktion:



/*---------------------------------------------------------------------- 
-------
 * Function     : (EXTERNAL)   c8I2C_WriteByte
 * Description  : Schreibt ein Byte über die I2C Schnittstelle
 *
 * Parameter    :  card8 c8Data        | Datenbyte
 * Return Value :  card8 c8ReturnValue | TRUE, FALSE

*----------------------------------------------------------------------- 
---
*/
card8 c8I2CWriteByte (card8 c8Data)
{
  card8 i;
  card8 c8Status = TRUE;

  // Byte senden
  SDA_MODE = OUTPUT;
  for (i=0;i<8;i++)
  {
    // Bit bereitstellen
    if(c8Data & 0x80)
      SDA = HIGH;
    else
      SDA = LOW;

    c8Data <<= 1;

    // SCL Puls Generieren
    SCL = HIGH;
    //_NOP ();
    SCL = LOW;
  }

  // Acknowledge Empfangen
  asm("nop");
  SDA_MODE = INPUT;
  SCL      = HIGH;
  while(i-- > 5);
  if (SDA == HIGH) c8Status = FALSE;
  SCL      = LOW;
  asm("nop");
  asm("nop");
  SDA      = HIGH;
  SDA_MODE = OUTPUT;

  return c8Status;
}

Ich werde nun eine Liste von allen bereits geprüften und beachteten
Dingen zusammen.

Grüsse + Danke

Seyhan

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OT: Warum muss ein Datentyp "card8" benannt werden? Steckt dahinter
ein tieferer Sinn?

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rufus

Vielen Dank für Deine Antwort. Hier die Antwort:

card8 = unsigned char

Kannst Du was damit anfangen?

Gruss + Danke

Seyhan

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen

Bin leider noch nicht weitergekommen. Wer kann mir weiterhelfen.

Grüsse + Danke im Voraus.

Seyhan

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Bin leider nicht weiter gekommen. Bitte um Hilfe.

Grüsse

Seyhan

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen

Falls mir jemand weiterhelfen kann bin ich sehr dankbar und habe ein
offenes Ohr.

Grüsse

seyhan

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Erwarte noch immer gerne Ratschläge, Tips oder Tricks.

Grüsse

Seyhan

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheinbar kennt sich niemand mit deinem Controller etc aus, oder alle
sind wegen deiner "Unnachgiebigkeit" genervt.
Übrigens habe ich dir in deinem anderen Thread zum selben Thema schon
geantwortet: Schalte notfalls den Bus zum Display an.

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Meine Unnachgiebigkeit hat seinen Grund. Zu Deiner Info:

Ein getrennter Bus ist ein Workaround der natürlich funktioniert. Dies
ist aber in unserem Design nicht möglich weil wir keine zusätzlichen
Prozessorpins mehr zur verfügung haben.

Gruss

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast IMO auch noch keine Angaben zum Display gemacht. Um welches
handelt es sich? Vielleicht hast du irgendwas vergessen zu
konfigurieren.

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es handelt sich um ein kundenspezifisches COG Grafik LCD
(128x88 dot) mit Controller Sitronix ST7541.

Gruss + Danke für die Bemühungen

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zäme

Werde Heute den ganzen Tag ausser Hause sein. Kann erst am Abend wieder
antworten. Bin jedoch immer noch auf der Suche nach Hilfe.

Grüsse

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte um weitere Unterstützung allerseits.

Grüsse + Danke

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Bin wieder online und erwarte gerne EURE HILFE

DANKE

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir den niemand weiterhelfen?

Grüsse + Danke

as

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Sitronix ST7541 Controller springt auf Daten vom Bus an und ein
anderer LCD Controller nicht.

Da ist vielleicht ein Bug im Sitronix ST7541 Controller? Was meint die
Firma Sitronix dazu? Appnote? Datenblatt-Revision?

Könntest du nicht viel Zeit und Energie sparen, wenn du den
funktionierenden Controller verwendest?

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan

Da es sich um ein kundenspezifisches COG LCD handelt ist dies zum
jetzigen Zeitpunkt nicht sehr einfach. Ich denke das ich noch einige
Versuche machen werde. Trotzdem Danke.

Grüsse

as

Autor: Seyhan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin wieder da und noch immer nicht klar gekommen.

Wer kann mir weiterhelfen. Von Seiten Sitronix ist nicht viel zu
erwarten.

Grüsse

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, fassen wir mal zusammen:
- Der Sitronix-Controller funktioniert nicht.
- Ein anderer Controller tut aber.

Ergo: Problem liegt beim Sitronix-Controller.

- keine Hilfe von Sitronix zu erwarten

Ergebnis: Das Ding wegwerfen.


Das einzige, was mir noch einfällt: Könnte es sein, dass der Controller
eine zusätzliche Select (oder Enable) - Leitung hat?

Ansonsten sehe ich mehr als schwarz für Dich. Es könnte theoretisch
auch sein, dass Sitronix den I²C-Bus nur unvollständig implementiert
hat und keine weiteren Devices auf dem gleichen Bus duldet. Aber ohne
eine Information seitens Sitronix wirst Du da rumprobieren können bis
zum St.-Nimmerleins-Tag.
Ein erweiterter Workaround: Mit einem PCF8574 und einem 4066 den Bus
zwischen EEProm und Display umschalten. Das braucht keine zusätzlichen
Portpins.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.