Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Init LCD in lcdext vs. pcflcd Kategorie: Sonstige Hardware (von Rolf - 17.08.2003 1:19)
Als Antwort auf Re: Init LCD in lcdext vs. pcflcd von Rolf - 16.08.2003 21:57

Hallo André

ich fĂĽrchte, da ist in pcflcd.c2 doch was nicht ganz ok.
Und zwar in der Initialisierung fĂĽr das Display fast am Ende der Funktion.

Wenn Du die Website http://www.sprut.de/electronic/lcd/  (hatte Link gepostet)
anschaust, gibt es dort unten die Tabelle zum initialisieren eines 4-Bit-Displays.
Schon dort in dieser Tabelle hat sich ein Fehler eingeschlichen, der anscheinend nie
gefixt und von vielen Leuten ohne Prüfung einfach kopiert wurde. Ich hab erst geglaubt, ich könne
selbst nicht mehr zählen aber ich komme immer auf den Fehler....

Vergleichst Du Deine Befehlssequenz nicht mit der fehlerhaften Tabelle sondern mit den richtigen
Befehlen aus der Tabelle weiter oben oder den Datenblättern, merkst Du, das sich da jemand beim
Zählen von Bits bei der Nibleaufteilung für den Entry-Mode verzählt hat.

Einfach und nachvollziehbar, weiter oben gehst Du das Register zum Einschalten vom Display
und Cursor mit:  00 C0 an.

 i2c.write(0x04 or light); // Display Control
 i2c.write(0x00 or light); // Set highnibble
 i2c.write(0xC4 or light); // Cursor Off, display On
 i2c.write(0xC0 or light); // Set lownibble

an, dann kann aber folgendes nicht stimmen. 00 60

 i2c.write(0x04 or light); // Entry-Mode
 i2c.write(0x00 or light);
 i2c.write(0x64 or light); // inkrement, Cursor-shift
 i2c.write(0x60 or light);

So ist's richtig: 10 C0

 i2c.write(0x14 or light); // Entry-Mode
 i2c.write(0x10 or light);
 i2c.write(0xC4 or light); // inkrement, Cursor-shift
 i2c.write(0xC0 or light);

Ein wirklich interssanter Fehler da er nicht nur bei Dir auftaucht.... :-) :-) :-)

Dann wollte ich noch wissen, warum Du am Anfang mehrmals die gleichen Bytefolgen in das
PCF schreibst... das mit dem Low-Nibble 4 hab ich verstanden, DatenĂĽbergabe bei fallendem E...

 i2c.write(0x30 or light);  //???
 i2c.write(0x30 or light);  //???
 i2c.write(0x34 or light); // Function Set 8 Bit
 i2c.write(0x30 or light);
 sleep 2;

 i2c.write(0x30 or light);  //???
 i2c.write(0x34 or light); // Function Set 8 Bit
 i2c.write(0x30 or light);  //???
 i2c.write(0x30 or light);

Mein Display macht immer noch nicht was es soll, ich bin mir aber jetzt sicher, das ich es nicht falsch rum
(also SEIKO-Zählweise) angeschlossen hab.... wenn dem so wäre, lägen auf D6 und D7 Masse und + 5V an...
ich glaube nicht, das sich das Display dann ausser mit einer Qualmwolke gemeldet hätte ;-)
Anscheinend ist der Controller aber doch etwas anders / empfindlicher als der ĂĽbliche 44780

Dann möchte ich noch eine �nderung des Funktionskopes von init anregen.
Man muĂ? vor jedem init ein setpcf machen da byte PCF; nicht initialisiert ist.
Bei mehreren Displays entsprechend jedesmal vor dem init und dann pro LCD ein init...
mit:

function init (byte pcfnr) //!!!
{
 if pcfnr > 7 PCF=((pcfnr+16) shl 1)or 64; else PCF=(pcfnr shl 1) or 64; //!!!
 light=light and 8;
 i2c.start(PCF);

könnte man sich das sparen und es kommt keiner auf die Idee, das setpcf vor dem init zu vergessen...
denn dann muĂ? ja pcflcd.init(displaynr); aufgerufen werden und byte PCF; bekommt damit zwangsweise
ein Wert. Die Funktion setpcf mu� aber bleiben damit im Betrieb die Displays umgeschaltet werden können.
Das sehe ich nicht als Fehler sondern eher als "Verbesserungsvorschlag".

GruĂ? Rolf




    Antwort schreiben


Antworten:

Re: Init LCD in lcdext vs. pcflcd (von André H. - 17.08.2003 9:31)
    Re: Init LCD in lcdext vs. pcflcd (von Rolf - 19.08.2003 16:21)
        Re: Init LCD in lcdext vs. pcflcd (von Rolf - 19.08.2003 16:59)
            Re: Init LCD in lcdext vs. pcflcd (von André H. - 19.08.2003 17:04)
                Re: Init LCD in lcdext vs. pcflcd (von Rolf - 22.08.2003 14:50)
                    Re: Init LCD in lcdext vs. pcflcd (von André H. - 22.08.2003 16:54)
                       Re: Init LCD in lcdext vs. pcflcd (von Rolf - 23.08.2003 17:16)
                       Re: Init LCD in lcdext vs. pcflcd (von Rolf - 22.08.2003 23:02)
                          Re: Init LCD in lcdext vs. pcflcd (von André H. - 23.08.2003 0:50)
                             Re: Init LCD in lcdext vs. pcflcd (von Rolf - 23.08.2003 2:14)
                                Re: Init LCD in lcdext vs. pcflcd (von Rolf - 23.08.2003 13:27)
                          Re: Init LCD in lcdext vs. pcflcd (von Rolf - 23.08.2003 0:43)