Forum: Compiler & IDEs I2C-LCD-Lib Probleme


von Hubert G. (hubertg)


Lesenswert?

Hallo
Kennt jemand diese I2C-LCD-Lib von http://computerheld.de/i2clcd/
i2clcd-v01.
In dieser Lib kannn man die Zuordnung der Daten und Steuerpin von LCD zu 
PCF8574 frei wählen. Legt man die Pin so auf
PCF P0 -- LCD D4
    P1 --     D5
    P2 --     D6
    P3 --     D7
dann funktioniert es, legt man sie jedoch so auf
    P0 --    D7
    P1 --    D6
    P2 --    D5
    P3 --    D4
dann sieht es so aus als würde das Display initialisiert(es wird 
gleichmässig grau) aber es kommen keine Zeichen. Die Hardwarezuordung 
ist natürlich jeweils ident mit dem Eintrag in der *.h Datei.
Wie man die Steuerpin den restlichen PCF-Pin zuordnet ist ohne 
Bedeutung.
Kennt jemand diesen Fehler oder habe ich etwas übersehen oder überlesen.
Wenn man die Suche bemüht muss man feststellen das ein LCD über I2C 
ansteuern nicht sehr gängig ist.
Hubert

von Hubert G. (hubertg)


Lesenswert?

Nachtrag:
Ausprobiert mit AVR-Studio und Mega32

von Rick (Gast)


Lesenswert?

Hi!

Na da kommt mir ja was bekannt vor :-)

Gugst Du hier:

http://www.roboternetz.de/phpBB2/viewtopic.php?t=35991

Gruß Rick

von Hubert G. (hubertg)


Lesenswert?

Es hätte ja sein können das hier jemand die Lösung des Problems kennt.
I2C-LCD sind ja wirklich nicht sehr aktuell, mein Junior meinte, auf 
dieses Problem angesprochen, ohje, nimm einen größeren Kontroller.
Hubert

von Manuel (Gast)


Lesenswert?

Nachtrag:

Es liegt wirklich an der Verdrahtung! Geht nur so, wie im header steht!
Ich vermute mal, dass es aus der Shift-Register-Natur des PCF8574 
kommt... Die Pins sind halt nicht auf einen Schlag gültig, deswegen ist 
die Reihenfolge wichtig!

Gruß,
Manuel

von Peter D. (peda)


Lesenswert?

Manuel schrieb:
> Ich vermute mal, dass es aus der Shift-Register-Natur des PCF8574
> kommt... Die Pins sind halt nicht auf einen Schlag gültig, deswegen ist
> die Reihenfolge wichtig!

Das ist Quatsch.
Der PCF8574 kann nicht um ein Bit schieben, wie ein 74HC164.
Alle 8 Bits werden mit dem ACK gleichzeitig gesetzt.


Peter

von Peter D. (peda)


Lesenswert?

Hubert G. schrieb:
> mein Junior meinte, auf
> dieses Problem angesprochen, ohje, nimm einen größeren Kontroller.

Was denn, noch größer?

Der Mega32 hat doch Pins bis zum Abwinken, da kanns doch an 6 Pins für 
das LCD nicht scheitern.


Prinzipiell muß es aber auch über I2C gehen.
Warum es bei Dir nicht geht, kann ich Dir nicht sagen. Dazu müßte ich 
Deinen Code sehen, der die LCD-Pins definiert und wie er sie verwendet.


Man kann beim AVR-GCC sehr schön einzelnen Bitvariablen auf IO-Pins 
legen. Leider wird das nur sehr wenig genutzt und dafür sehr 
umständlicher und damit fehlerträchtiger Code verwendet.
Hier mal ein einfaches Beispiel für beliebige Pinzuordnung:
http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip

Man ist natürlich nicht auf echte IO-Pins beschränkt, sondern kann auch 
virtuelle IO-Pins im SRAM definieren, die dann per I2C oder SPI gesendet 
werden.

Ob die gesparten 4 Pins beim Mega32 (32 IO-Pins) aber soviel ausmachen, 
bezweifle ich.
Bei nem Tiny25 kann I2C (2 Pins) oder SPI (3 Pins) durchaus helfen.


Peter

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.