Forum: Mikrocontroller und Digitale Elektronik Saintsmart LCD2004 (HD44780 + PCF8574) an AVR-NET-IO


von Ellen Moore (Gast)


Lesenswert?

Ich versuche seit einiger Zeit das ding mit einem Pollin AVR-Net-IO und 
Ethersex zum laufen zu bekommen. Die Pinbelegung habe ich bereits 
angepasst:

/* port mapping lcd -> pcf8574x pin */
#define HD44780_PCF8574x_DB4      (4)
#define HD44780_PCF8574x_DB5      (5)
#define HD44780_PCF8574x_DB6      (6)
#define HD44780_PCF8574x_DB7      (7)
#define HD44780_PCF8574x_RS        (0)
#define HD44780_PCF8574x_WR        (1)
#define HD44780_PCF8574x_EN        (2)
#define HD44780_PCF8574x_BL        (3)

... aber das ding will einfach nicht. Backlight An/Aus funktioniert und 
ist Positiv geschaltet. Es zeigt auch was an ... undefinierte Zeichen, 
in etwa so:

*****

*****

*****

*****

Davon 2 - 3 mal so viel, wie eigentlich vorhanden sein sollten. Hat 
jemand eine Erklärung dafür? Meine Vermutung ist:

a) Initialisierung des 4-bit Modus funktioniert nicht richtig
b) Signal ist Invertiert

kann mir jemand weiter helfen?

von Ellen Moore (Gast)


Lesenswert?

b) Signal ist Invertiert

kann denke ich ausgeschlossen werden ... ich habe einfach alle signale 
invertiert, und es hat nicht geholfen. Es wird wohl eher die 
Intitialisierung sein, welche für das Pollin expansionsboard geschrieben 
wurde ... mag mir jemand sagen, wie man die initialisierung auch für 
dieses Display hinbekommt? Ich habe den code bereits mit dem der 
LiquidCrystal abgeglichen und nichts ungewöhnliches gefunden ...

von isnah (Gast)


Lesenswert?

Um eine befriedigende Antwort zu erhalten, musst uns schon noch ein paar 
Informationen mehr über dein "Geheimprojekt" geben (z.B. Schaltbild)

von Ellen Moore (Gast)


Lesenswert?

Wie du sicher aus meinem Text erkennen kannst, funktioniert die 
Kommunikation mit dem  PCF8574 (Backlight lässt sich an und 
ausschalten)... ich habe einfach das I2C Display mit folgenden Pins am 
ABR-NET-IO verbunden:

2   PC0 (SCL)
3   PC1 (SDA)
15   5V
18   GND

http://www.ethersex.de/index.php/I2C_%28Deutsch%29

Entsprechend des quellcodes (i2c_master.c) setzt ethersex auch die 
Pullups:

    /* Enable the i2c pullups */
    PIN_SET(SDA);
    PIN_SET(SCL);

Das ist denke ich nicht das Problem. Den Rest der Schaltung habe ich 
nicht in der Hand, da er eingekauft ist. Die Belegung die ich oben 
gefunden habe stimmt mit einigen Quellen im Internet überein.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Mach 4K7 Pullups an SCL und SDA und erforsche ob der interne HD44780 
wirklich einer ist. Es gibt einige kompatible Typen, die nicht ganz 
kompatibel sind. Vor allem was die Initialisierung angeht. Dann gehst du 
stoisch der Init-Sequenz nach, die im DB angegeben ist. Dann wirds auch 
funzen.

von isnah (Gast)


Lesenswert?

"Warum nicht gleich?"
Du hast ein I2C-Display, also ist es egal ob in der LCD-Firmware 4-oder 
8-Bit Initialisierung statt findet.
Was aber viel wichtiger ist:
Was ist die I2c-Adresse vom PCF8574 und vom LCD2004 und sind sie in 
i2c_master.c richtig eingetragen?

von Ellen Moore (Gast)


Lesenswert?

> Mach 4K7 Pullups an SCL und SDA
Wird geprüft

> Mach 4K7 Pullups an SCL und SDA und erforsche ob der interne HD44780
wirklich einer ist.

Ich habe keine genauen Informationen dazu gefunden. In der LiquidCrystal 
Library wird auf die Init Sequenz des Datenblkattes des originalen 
HD44780 verwiesen - mit ein paar Workarounds, die ich auch versucht habe 
einzubinden.

> Du hast ein I2C-Display, also ist es egal ob in der LCD-Firmware 4-oder
8-Bit Initialisierung statt findet.

Nein, denn der PCF8574 ist ja nur ein Port-Extender, der aber nur 4-Bit 
am Display angeschlossen ist?!

> Was ist die I2c-Adresse vom PCF8574 und vom LCD2004 und sind sie in
i2c_master.c richtig eingetragen?

Ist dementsprechend die selbe (0x3F,63), und wurde per make menuconfig 
konfiguriert. Ich werde aber die i2c_master.c prüfen.

von Ellen Moore (Gast)


Lesenswert?

>> Mach 4K7 Pullups an SCL und SDA
>Wird geprüft

Keine Änderung am Ergebnis

> Was ist die I2c-Adresse vom PCF8574 und vom LCD2004 und sind sie in
>i2c_master.c richtig eingetragen?

Wenn ich das richtig sehe gibt es in der Aktuellen Version nur noch die 
Möglichkeit über make menuconfig

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.